JSPM

content-type-parser

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 549930
  • Score
    100M100P100Q22530F
  • License MIT

Parse the value of the Content-Type header

Package Exports

  • content-type-parser

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (content-type-parser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Parse Content-Type Header Strings

This package will parse the Content-Type header field into an introspectable data structure, whose parameters can be manipulated:

const contentTypeParser = require("content-type-parser");

const contentType = contentTypeParser(`Text/HTML;Charset="utf-8"`);

console.assert(contentType.toString() === "text/html;charset=utf-8");

console.assert(contentType.type === "text");
console.assert(contentType.subtype === "html");
console.assert(contentType.get("charset") === "utf-8");

contentType.set("charset", "windows-1252");
console.assert(contentType.get("charset") === "windows-1252");
console.assert(contentType.toString() === "text/html;charset=windows-1252");

console.assert(contentType.isHTML() === true);
console.assert(contentType.isXML() === false);
console.assert(contentType.isText() === true);

Note how parsing will lowercase the type, subtype, and parameter name tokens (but not parameter values).

If the passed string cannot be parsed as a content-type, contentTypeParser will return null.

ContentType instance API

This package's main module's default export will return an instance of the ContentType class, which has the following public APIs:

Properties

  • type: the top-level media type, e.g. "text"
  • subtype: the subtype, e.g. "html"
  • parameterList: an array of { separator, key, value } pairs representing the parameters. The separator field contains any whitespace, not just the ; character.

Parameter manipulation

In general you should not directly manipulate parameterList. Instead, use the following APIs:

  • get("key"): returns the value of the parameter with the given key, or undefined if no such parameter is present
  • set("key", "value"): adds the given key/value pair to the parameter list, or overwrites the existing value if an entry already existed

Both of these will lowercase the keys.

MIME type tests

  • isHTML(): returns true if this instance's MIME type is the HTML MIME type, "text/html"
  • isXML(): returns true if this instance's MIME type is an XML MIME type
  • isText(): returns true if this instance's top-level media type is "text"

Serialization

  • toString() will return a canonicalized representation of the content-type, re-built from the parsed components

Credits

This package was originally based on the excellent work of @nicolashenry, in jsdom. It has since been pulled out into this separate package.