content-type
Advanced tools
Comparing version 1.0.4 to 1.0.5
@@ -0,1 +1,6 @@ | ||
1.0.5 / 2023-01-29 | ||
================== | ||
* perf: skip value escaping when unnecessary | ||
1.0.4 / 2017-09-11 | ||
@@ -2,0 +7,0 @@ ================== |
21
index.js
@@ -23,4 +23,4 @@ /*! | ||
*/ | ||
var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g | ||
var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ | ||
var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex | ||
var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/ // eslint-disable-line no-control-regex | ||
var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/ | ||
@@ -34,3 +34,3 @@ | ||
*/ | ||
var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g | ||
var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g // eslint-disable-line no-control-regex | ||
@@ -124,3 +124,3 @@ /** | ||
var type = index !== -1 | ||
? header.substr(0, index).trim() | ||
? header.slice(0, index).trim() | ||
: header.trim() | ||
@@ -151,7 +151,10 @@ | ||
if (value[0] === '"') { | ||
// remove quotes and escapes | ||
value = value | ||
.substr(1, value.length - 2) | ||
.replace(QESC_REGEXP, '$1') | ||
if (value.charCodeAt(0) === 0x22 /* " */) { | ||
// remove quotes | ||
value = value.slice(1, -1) | ||
// remove escapes | ||
if (value.indexOf('\\') !== -1) { | ||
value = value.replace(QESC_REGEXP, '$1') | ||
} | ||
} | ||
@@ -158,0 +161,0 @@ |
{ | ||
"name": "content-type", | ||
"description": "Create and parse HTTP Content-Type header", | ||
"version": "1.0.4", | ||
"version": "1.0.5", | ||
"author": "Douglas Christopher Wilson <doug@somethingdoug.com>", | ||
@@ -16,10 +16,11 @@ "license": "MIT", | ||
"devDependencies": { | ||
"eslint": "3.19.0", | ||
"eslint-config-standard": "10.2.1", | ||
"eslint-plugin-import": "2.7.0", | ||
"eslint-plugin-node": "5.1.1", | ||
"eslint-plugin-promise": "3.5.0", | ||
"eslint-plugin-standard": "3.0.1", | ||
"istanbul": "0.4.5", | ||
"mocha": "~1.21.5" | ||
"deep-equal": "1.0.1", | ||
"eslint": "8.32.0", | ||
"eslint-config-standard": "15.0.1", | ||
"eslint-plugin-import": "2.27.5", | ||
"eslint-plugin-node": "11.1.0", | ||
"eslint-plugin-promise": "6.1.1", | ||
"eslint-plugin-standard": "4.1.0", | ||
"mocha": "10.2.0", | ||
"nyc": "15.1.0" | ||
}, | ||
@@ -38,5 +39,6 @@ "files": [ | ||
"test": "mocha --reporter spec --check-leaks --bail test/", | ||
"test-ci": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec --check-leaks test/", | ||
"test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --reporter dot --check-leaks test/" | ||
"test-ci": "nyc --reporter=lcovonly --reporter=text npm test", | ||
"test-cov": "nyc --reporter=html --reporter=text npm test", | ||
"version": "node scripts/version-history.js && git add HISTORY.md" | ||
} | ||
} |
# content-type | ||
[![NPM Version][npm-image]][npm-url] | ||
[![NPM Downloads][downloads-image]][downloads-url] | ||
[![Node.js Version][node-version-image]][node-version-url] | ||
[![Build Status][travis-image]][travis-url] | ||
[![Test Coverage][coveralls-image]][coveralls-url] | ||
[![NPM Version][npm-version-image]][npm-url] | ||
[![NPM Downloads][npm-downloads-image]][npm-url] | ||
[![Node.js Version][node-image]][node-url] | ||
[![Build Status][ci-image]][ci-url] | ||
[![Coverage Status][coveralls-image]][coveralls-url] | ||
@@ -29,3 +29,3 @@ Create and parse HTTP Content-Type header according to RFC 7231 | ||
Parse a content type string. This will return an object with the following | ||
Parse a `Content-Type` header. This will return an object with the following | ||
properties (examples are shown for the string `'image/svg+xml; charset=utf-8'`): | ||
@@ -47,3 +47,3 @@ | ||
Parse the `content-type` header from the given `req`. Short-cut for | ||
Parse the `Content-Type` header from the given `req`. Short-cut for | ||
`contentType.parse(req.headers['content-type'])`. | ||
@@ -59,3 +59,3 @@ | ||
Parse the `content-type` header set on the given `res`. Short-cut for | ||
Parse the `Content-Type` header set on the given `res`. Short-cut for | ||
`contentType.parse(res.getHeader('content-type'))`. | ||
@@ -68,6 +68,9 @@ | ||
```js | ||
var str = contentType.format({type: 'image/svg+xml'}) | ||
var str = contentType.format({ | ||
type: 'image/svg+xml', | ||
parameters: { charset: 'utf-8' } | ||
}) | ||
``` | ||
Format an object into a content type string. This will return a string of the | ||
Format an object into a `Content-Type` header. This will return a string of the | ||
content type for the given object with the following properties (examples are | ||
@@ -87,11 +90,10 @@ shown that produce the string `'image/svg+xml; charset=utf-8'`): | ||
[npm-image]: https://img.shields.io/npm/v/content-type.svg | ||
[ci-image]: https://badgen.net/github/checks/jshttp/content-type/master?label=ci | ||
[ci-url]: https://github.com/jshttp/content-type/actions/workflows/ci.yml | ||
[coveralls-image]: https://badgen.net/coveralls/c/github/jshttp/content-type/master | ||
[coveralls-url]: https://coveralls.io/r/jshttp/content-type?branch=master | ||
[node-image]: https://badgen.net/npm/node/content-type | ||
[node-url]: https://nodejs.org/en/download | ||
[npm-downloads-image]: https://badgen.net/npm/dm/content-type | ||
[npm-url]: https://npmjs.org/package/content-type | ||
[node-version-image]: https://img.shields.io/node/v/content-type.svg | ||
[node-version-url]: http://nodejs.org/download/ | ||
[travis-image]: https://img.shields.io/travis/jshttp/content-type/master.svg | ||
[travis-url]: https://travis-ci.org/jshttp/content-type | ||
[coveralls-image]: https://img.shields.io/coveralls/jshttp/content-type/master.svg | ||
[coveralls-url]: https://coveralls.io/r/jshttp/content-type | ||
[downloads-image]: https://img.shields.io/npm/dm/content-type.svg | ||
[downloads-url]: https://npmjs.org/package/content-type | ||
[npm-version-image]: https://badgen.net/npm/v/content-type |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
10471
181
95
9