mrmime
version CI downloads install size
A tiny (2.8kB) and fast utility for getting a MIME type from an extension or filename

Features

Install

$ npm install --save mrmime

Usage

```js import { lookup, mimes } from 'mrmime';

// Get a MIME type // --- lookup('txt'); //=> "text/plain" lookup('.txt'); //=> "text/plain" lookup('a.txt'); //=> "text/plain"

// Unknown extension // --- lookup('.xyz'); //=> undefined

// Add extension to dictionary // --- mimes['xyz'] = 'hello/world'; lookup('xyz'); //=> "hello/world" ```

API

lookup(input)

Returns: string or undefined

input

Type: string

The extension or filename to lookup.

Important: * Any input value is cast to string, lowercased, and trimmed. * If a filename or filepath is provided, only the extension will be used.

Benchmarks

Running on Node v16.8.0

``` Load times: mrmime 0.963ms mime/lite 3.281ms mime 6.751ms

Benchmark :: plain ("ext") mime x 598,849 ops/sec ±0.28% (94 runs sampled) mime/lite x 536,643 ops/sec ±0.11% (97 runs sampled) mrmime x 835,885 ops/sec ±0.20% (97 runs sampled)

Benchmark :: leading (".ext") mime x 368,656 ops/sec ±0.19% (99 runs sampled) mime/lite x 368,318 ops/sec ±0.13% (97 runs sampled) mrmime x 533,643 ops/sec ±0.10% (96 runs sampled)

Benchmark :: filename ("file.ext") mime x 326,907 ops/sec ±0.17% (95 runs sampled) mime/lite x 327,479 ops/sec ±0.12% (98 runs sampled) mrmime x 512,823 ops/sec ±0.12% (99 runs sampled) ```

Credits

Of course, a thank-you to mime serving the community all these years & for being a all-encompassing MIME type library. I've only ever needed lookup/getType functionality – and now ESM support – so mrmime can only ever support 1/3 of what mime offers, at best.

This would not be possible without the team behind mime-db, who have painstakingly maintained an amazing database for 7+ years.

Artwork created by mintinol, which I found here.

Finally, thanks to Tim Branyen for donating the package name :)

License

MIT © Luke Edwards