@thi.ng/mime
    TypeScript icon, indicating that this package has built-in type declarations

    2.2.1 • Public • Published

    mime

    npm version npm downloads Twitter Follow

    This project is part of the @thi.ng/umbrella monorepo.

    About

    650+ file extension to MIME type mappings, based on mime-db.

    All MIME type mappings based on mime-db (2022-04-07). For filesize reasons only a small selected number of vendor MIME types (aka */vnd.*) are included. Most of the omitted ones are fairly obscure anyway, so likely not problematic...

    Additionally, this package defines several MIME types not included in the original DB, as well as some preference overrides.

    Status

    STABLE - used in production

    Search or submit any issues for this package

    Related packages

    • @thi.ng/dl-asset - Canvas, video recording & file asset download helpers for web apps

    Installation

    yarn add @thi.ng/mime

    ES module import:

    <script type="module" src="https://cdn.skypack.dev/@thi.ng/mime"></script>

    Skypack documentation

    For Node.js REPL:

    # with flag only for < v16
    node --experimental-repl-await
    
    > const mime = await import("@thi.ng/mime");
    

    Package sizes (gzipped, pre-treeshake): ESM: 5.08 KB

    Dependencies

    None

    API

    Generated API docs

    This package exposes a MIME_TYPES object which provides mappings from file extensions to MIME types. For each extension one or more MIME types are provided, with the default type always in first position.

    import { MIME_TYPES } from "@thi.ng/mime";
    
    MIME_TYPES.mp3
    // [ 'audio/mpeg', 'audio/mp3' ]
    
    MIME_TYPES.jpg
    // [ 'image/jpeg' ]
    
    MIME_TYPES.jpeg
    // [ 'image/jpeg' ]

    To simplify lookup and support a fallback type, the package also has preferredType() function:

    import { preferredType } from "@thi.ng/mime";
    
    preferredType("mp3")
    // "audio/mpeg"
    
    // unknown file extension w/ default fallback type
    preferredType("foo")
    // "application/octet-stream"
    
    // unknown file extension w/ given fallback type
    preferredType("foo", "text/plain")
    // "text/plain"

    Since v0.3.0 reverse lookups are possible too, using preferredExtension() (also supports fallback):

    preferredExtension("image/svg+xml");
    // "svg"
    
    preferredExtension("image/foo");
    // "bin" (default fallback)
    
    preferredExtension("image/foo", "dat");
    // "dat" (custom fallback)

    Conversion from mime-db

    1. Download the latest version of mime-db's JSON index and save it to [packages/mime/]tools/mime-db.json
    2. Run the following command to build an up-to-date index (assumes the umbrella repo has been pre-built already). Output will always be be written to src/generated.ts.
    # from the thi.ng/umbrella repo root
    cd packages/mime
    yarn tool:convert

    Additional configuration options are available in the tools/convert.ts script.

    Authors

    Karsten Schmidt

    If this project contributes to an academic publication, please cite it as:

    @misc{thing-mime,
      title = "@thi.ng/mime",
      author = "Karsten Schmidt",
      note = "https://thi.ng/mime",
      year = 2020
    }

    License

    © 2020 - 2022 Karsten Schmidt // Apache Software License 2.0

    Install

    npm i @thi.ng/mime

    DownloadsWeekly Downloads

    165

    Version

    2.2.1

    License

    Apache-2.0

    Unpacked Size

    42.5 kB

    Total Files

    8

    Last publish

    Collaborators

    • thi.ng