Node's Pretty Magical

    mrmime
    TypeScript icon, indicating that this package has built-in type declarations

    1.0.0 • Public • Published
    mrmime
    A tiny (2.8kB) and fast utility for getting a MIME type from an extension or filename

    Features

    • Lightweight – 2.8kB gzip
      Only includes standard mime types; all experimental and vendor-specific mimetypes removed.

    • Performant
      All lookups are O(1) with minimal processing.

    • Comprehensive Dictionary
      Generated from mime-db, which aggregates the IANA, NGINX, and Apache datasets.

    • Customizable
      Exposes the mimes dictionary for easy additions or overrides.

    • Supports Native ESM and Deno
      Ships with CommonJS and ESM support!

    Install

    $ npm install --save mrmime
    

    Usage

    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

    Install

    npm i mrmime

    DownloadsWeekly Downloads

    1,865,491

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    31 kB

    Total Files

    6

    Last publish

    Collaborators

    • lukeed