
Security News
Risky Biz Podcast: Making Reachability Analysis Work in Real-World Codebases
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
http-media-type
Advanced tools
A utility library for processing media types of HTTP requests and responses.
A utility library for processing HTTP and MIME media types.
A new media type instance can be created either with separate arguments
const mediaType = new MediaType('text', 'plain')
// text/plain
const mediaType = new MediaType('text')
// text/*
const mediaType = new MediaType()
// */*
const mediaType = new MediaType('text', 'plain', {
charset: 'utf-8'
})
// text/plain; charset=utf-8
... or with a single combined argument.
const mediaType = new MediaType({
type: 'text',
subtype: 'plain'
})
// text/plain
const mediaType = new MediaType({
type: 'application',
subtype: 'vnd.company.media',
suffix: 'format',
parameters: {
version: 1
}
})
// application/vnd.company.media+format; version=1
A new media type instance can be parsed from a string
const mediaType = MediaType.parse('application/vnd.company.media+format; version=1')
... and with additional parameter processing
const mediaType = MediaType.parse('application/vnd.company.media+format; version=1; embedded=other-content; q=0.9',
(parameter, value) => {
switch (parameter) {
case 'version':
// convert 'version' to int
return Number.parseInt(value)
case 'q':
// ignore 'q'
return undefined
default:
// store other parmeter values as strings
return value
}
})
The formatted
property holds the textual representation of a media
type instance
const mediaType = ('application', 'vnd.company.media', {
version: 2,
embedded: 'other-media'
})
console.log(mediaType.formatted)
// application/vnd.company.media; version=2; embedded=other-media
Media type parameters are case-insensitive when individually accessed with property
accessors or with in
operator
const mediaType = new MediaType('application/json; CharSet=utf-8; VARIANT=HAL')
const charset = mediaType.parameters.charset
// utf-8
const hasVariant = 'Variant' in mediaType.parameters
// true
... but preserve letter case when iterated or retrieved altogether
const mediaType = new MediaType('application/json; CharSet=utf-8; VARIANT=HAL')
for (const parameter in mediaType.parameters) {
// CharSet
// VARIANT
}
const prameters = Object.keys(mediaType.parameters)
// ['CharSet', 'VARIANT']
Media type instances can be compared for equality using the equals
method
const mediaType1 = new MediaType('text', 'plain')
const mediaType2 = MediaType.parse('text/plain')
mediaType1.equals(mediaType2)
// true
const mediaType1 = new MediaType('text', 'plain')
const mediaType2 = MediaType.parse('text/plain; charset=utf-8')
mediaType1.equals(mediaType2)
// false
const mediaType1 = new MediaType('text', 'plain')
const mediaType2 = MediaType.parse('text/*')
mediaType1.equals(mediaType2)
// false
...and with custom parameter value comparison
const mediaType1 = MediaType.parse('text/plain; charset=UTF-8; version=2')
const mediaType2 = MediaType.parse('text/plain; charset=utf-8')
mediaType1.equals(mediaType2)
// false
mediaType1.equals(mediaType2, (parameter, value1, value2) => {
// ignore 'version' parameter
// compare other parameters as case-insensitive
return parameter === 'version'
|| value1.toLowerCase() === value2.toLowerCase()
})
// true
Media types can be compared to media types with wildcards (*) using the
matches
method.
const mediaType1 = MediaType.parse('text/plain; encoding=none')
const mediaType2 = MediaType.parse('text/*; charset=utf-8; encoding=zip')
mediaType1.equals(mediaType2)
// false
mediaType1.matches(mediaType2)
// true
An custom parameter value comparison can be applied, just like
in the equals
method.
FAQs
A utility library for processing media types of HTTP requests and responses.
The npm package http-media-type receives a total of 0 weekly downloads. As such, http-media-type popularity was classified as not popular.
We found that http-media-type demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.
Security News
/Research
Malicious Nx npm versions stole secrets and wallet info using AI CLI tools; Socket’s AI scanner detected the supply chain attack and flagged the malware.
Security News
CISA’s 2025 draft SBOM guidance adds new fields like hashes, licenses, and tool metadata to make software inventories more actionable.