JSPM

@remix-run/mime

0.2.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 4279
  • Score
    100M100P100Q123043F
  • License MIT

Utilities for working with MIME types

Package Exports

  • @remix-run/mime
  • @remix-run/mime/package.json

Readme

@remix-run/mime

Utilities for working with MIME types.

Data used for these utilities is generated at build time from mime-db, but only includes standard MIME types. Experimental (x-) and vendor-specific (vnd.) MIME types have been excluded.

Installation

npm install @remix-run/mime

Usage

detectMimeType(extension)

Detects the MIME type for a given file extension or filename.

import { detectMimeType } from '@remix-run/mime'

detectMimeType('txt') // 'text/plain'
detectMimeType('.txt') // 'text/plain'
detectMimeType('file.txt') // 'text/plain'
detectMimeType('path/to/file.txt') // 'text/plain'
detectMimeType('unknown') // undefined

detectContentType(extension)

Detects the Content-Type header value for a given file extension or filename, including charset for text-based types. See mimeTypeToContentType for charset logic.

import { detectContentType } from '@remix-run/mime'

detectContentType('css') // 'text/css; charset=utf-8'
detectContentType('.json') // 'application/json; charset=utf-8'
detectContentType('image.png') // 'image/png'
detectContentType('path/to/file.unknown') // undefined

isCompressibleMimeType(mimeType)

Checks if a MIME type is known to be compressible.

import { isCompressibleMimeType } from '@remix-run/mime'

isCompressibleMimeType('text/html') // true
isCompressibleMimeType('application/json') // true
isCompressibleMimeType('image/png') // false
isCompressibleMimeType('video/mp4') // false

For convenience, the function also accepts a full Content-Type header value:

import { isCompressibleMimeType } from '@remix-run/mime'

isCompressibleMimeType('text/html; charset=utf-8') // true
isCompressibleMimeType('application/json; charset=utf-8') // true
isCompressibleMimeType('image/png; charset=utf-8') // false
isCompressibleMimeType('video/mp4; charset=utf-8') // false

mimeTypeToContentType(mimeType)

Converts a MIME type to a Content-Type header value, adding ; charset=utf-8 to text-based MIME types: text/* (except text/xml which has built-in encoding declarations), application/json, application/javascript, and all +json suffixed types. All other types are returned unchanged.

import { mimeTypeToContentType } from '@remix-run/mime'

mimeTypeToContentType('text/css') // 'text/css; charset=utf-8'
mimeTypeToContentType('application/json') // 'application/json; charset=utf-8'
mimeTypeToContentType('application/ld+json') // 'application/ld+json; charset=utf-8'
mimeTypeToContentType('image/png') // 'image/png'

License

MIT