https://github.com/idiocc/type-is
[fork] Infer the content-type of a request Written In ES6 And Optimised With JavaScript Compiler.
https://github.com/idiocc/type-is
Last synced: about 1 year ago
JSON representation
[fork] Infer the content-type of a request Written In ES6 And Optimised With JavaScript Compiler.
- Host: GitHub
- URL: https://github.com/idiocc/type-is
- Owner: idiocc
- License: other
- Created: 2019-07-02T12:26:57.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-07-03T14:08:01.000Z (almost 7 years ago)
- Last Synced: 2025-03-15T08:48:18.867Z (over 1 year ago)
- Language: JavaScript
- Homepage: https://idio.cc
- Size: 48.8 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# @goa/type-is
[](https://npmjs.org/package/@goa/type-is)
`@goa/type-is` is a fork of [Infer the content-type of a request](https://github.com/jshttp/type-is) Written In ES6 And Optimised With [JavaScript Compiler](https://compiler.page).
```sh
yarn add @goa/type-is
```
## Table Of Contents
- [Table Of Contents](#table-of-contents)
- [API](#api)
- [`typeis(request: http.IncomingMessage, types: string|Array, ...types: string): ?string|boolean`](#typeisrequest-httpincomingmessagetypes-stringarraystringtypes-string-stringboolean)
- [`hasBody(request: http.IncomingMessage): boolean`](#hasbodyrequest-httpincomingmessage-boolean)
- [`is(mediaType: string, types: string|Array, ...types: string): ?string|boolean`](#ismediatype-stringtypes-stringarraystringtypes-string-stringboolean)
- [Copyright](#copyright)
## API
The package is available by importing its default and named functions:
```js
import typeis, { hasBody } from '@goa/type-is'
```
## `typeis(`
`request: http.IncomingMessage,`
`types: string|Array,`
`...types: string,`
`): ?string|boolean`
Checks if the `request` is one of the types. If the request has no body, even if there is a _Content-Type_ header, then `null` is returned. If the _Content-Type_ header is invalid or does not matches any of the `types`, then `false` is returned. Otherwise, a string of the type that matched is returned.
The `request` argument is expected to be a Node.js HTTP request. The `types` argument is an array of type strings.
Each `type` in the types array can be one of the following:
- A file extension name such as `json`. This name will be returned if matched.
- A mime type such as `application/json`.
- A mime type with a wildcard such as `*/*` or `*/json` or `application/*`. The full mime type will be returned if matched.
- A suffix such as `+json`. This can be combined with a wildcard such as `*/vnd+json` or `application/*+json`. The full mime type will be returned if matched.
SourceOutput
```js
import typeis from '@goa/type-is'
const req = {
headers: {
'content-length': 10,
'content-type': 'application/json',
},
}
log(typeis(req, ['json']))
log(typeis(req, ['html', 'json']))
log(typeis(req, ['application/*']))
log(typeis(req, ['application/json']))
// pass types as variable arguments
log(typeis(req, 'text/html', 'application/json'))
log(typeis(req, ['html']))
```
```js
json
json
application/json
application/json
application/json
false
```
## `hasBody(`
`request: http.IncomingMessage,`
`): boolean`
Returns a _Boolean_ if the given `request` has a body, regardless of the _Content-Type_ header.
Having a body has no relation to how large the body is (it may be 0 bytes). This is similar to how file existence works. If a body does exist, then this indicates that there is data to read from the Node.js request stream.
SourceOutput
```js
import { hasBody } from '@goa/type-is'
log(hasBody({ headers: {
'content-length': 10,
'content-type': 'application/json' },
}))
log(hasBody({ headers: {
'transfer-encoding': 'utf-8' },
}))
log(hasBody({ headers: {
'content-type': 'application/json' },
}))
```
```js
true
true
false
```
## `is(`
`mediaType: string,`
`types: string|Array,`
`...types: string,`
`): ?string|boolean`
Checks if the `mediaType` is one of the types. If the `mediaType` is invalid or does not matches any of the types, then false is returned. Otherwise, a string of the type that matched is returned.
The mediaType argument is expected to be a [media type](https://tools.ietf.org/html/rfc6838) string. The types argument is an array of type strings.
Each `type` in the types array follows the same rules as described in the `typeis` section.
SourceOutput
```js
import { is } from '@goa/type-is'
const mediaType = 'application/json'
log(is(mediaType, ['json']))
log(is(mediaType, ['html', 'json']))
log(is(mediaType, ['application/*']))
log(is(mediaType, ['application/json']))
// pass types as variable arguments
log(is(mediaType, 'text/html', 'application/json'))
log(is(mediaType, ['html']))
```
```js
json
json
application/json
application/json
application/json
false
```
## Copyright
Original Work by [Jonathan Ong, Douglas Christopher Wilson and contributors](https://github.com/jshttp/type-is).
---
© Art Deco for Idio 2019
Tech Nation Visa Sucks