es-mime-types
Version:
mime-types rewrite in TypeScript with ESM and CommonJS targets
97 lines (66 loc) • 2.97 kB
Markdown
# es-mime-types
[](https://twitter.com/v1rtl)


[](https://www.npmjs.com/package/es-mime-types)

> [`mime-types`](https://github.com/jshttp/mime-types) rewrite in TypeScript with ESM and CommonJS targets
The ultimate javascript content-type utility.
Similar to [the `mime@1.x` module](https://www.npmjs.com/package/mime), except:
- **No fallbacks.** Instead of naively returning the first available type,
`mime-types` simply returns `false`, so do
`const type = mime.lookup('unrecognized') || 'application/octet-stream'`.
- No `new Mime()` business, so you could do `var lookup = require('mime-types').lookup`.
- No `.define()` functionality
- Bug fixes for `.lookup(path)`
Otherwise, the API is compatible with `mime` 1.x.
## Install
```sh
pnpm i es-mime-types
```
## Adding Types
All mime types are based on [mime-db](https://www.npmjs.com/package/mime-db),
so open a PR there if you'd like to add mime types.
## API
```ts
import { lookup, contentType, extension, charset, types } from 'es-mime-types'
```
All functions return `false` if input is invalid or not found.
### `lookup(path)`
Lookup the content-type associated with a file.
```ts
lookup('json') // 'application/json'
lookup('.md') // 'text/markdown'
lookup('file.html') // 'text/html'
lookup('folder/file.js') // 'application/javascript'
lookup('folder/.htaccess') // false
lookup('cats') // false
```
### `contentType(type)`
Create a full content-type header given a content-type or extension.
When given an extension, `lookup` is used to get the matching
content-type, otherwise the given content-type is used. Then if the
content-type does not already have a `charset` parameter, `charset`
is used to get the default charset and add to the returned content-type.
```ts
contentType('markdown') // 'text/x-markdown; charset=utf-8'
contentType('file.json') // 'application/json; charset=utf-8'
contentType('text/html') // 'text/html; charset=utf-8'
contentType('text/html; charset=iso-8859-1') // 'text/html; charset=iso-8859-1'
// from a full path
contentType(path.extname('/path/to/file.json')) // 'application/json; charset=utf-8'
```
### `extension(type)`
Get the default extension for a content-type.
```ts
extension('application/octet-stream') // 'bin'
```
### `charset(type)`
Lookup the implied default charset of a content-type.
```ts
charset('text/markdown') // 'UTF-8'
```
### `types[extension]`
A map of extensions by content-type.
## License
MIT © [v1rtl](https://v1rtl.site)