dx-server 0.9.0 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +246 -252
- package/cjs/body.d.ts +1 -1
- package/cjs/bodyHelpers.js +2 -2
- package/cjs/connect.d.ts +1 -1
- package/cjs/connect.js +1 -1
- package/cjs/dx.d.ts +1 -1
- package/cjs/dx.js +20 -11
- package/cjs/dxHelpers.d.ts +1 -1
- package/cjs/dxHelpers.js +8 -3
- package/cjs/express.js +14 -12
- package/cjs/polyfillWithResolvers.js +2 -3
- package/cjs/router.js +4 -3
- package/cjs/static.d.ts +5 -0
- package/cjs/static.js +8 -8
- package/cjs/staticHelpers.d.ts +15 -3
- package/cjs/staticHelpers.js +190 -8
- package/cjs/stream.js +2 -2
- package/{esm → cjs/vendors}/contentType.js +7 -3
- package/{esm → cjs/vendors}/etag.d.ts +3 -1
- package/cjs/{etag.js → vendors/etag.js} +1 -1
- package/cjs/vendors/fresh.d.ts +23 -0
- package/cjs/vendors/fresh.js +102 -0
- package/cjs/vendors/mime.d.ts +1 -0
- package/cjs/vendors/mime.js +42 -0
- package/cjs/vendors/mimeDb.d.ts +9413 -0
- package/cjs/vendors/mimeDb.js +9417 -0
- package/cjs/vendors/mimeScore.d.ts +5 -0
- package/cjs/vendors/mimeScore.js +50 -0
- package/cjs/vendors/onFinished.d.ts +14 -0
- package/cjs/vendors/onFinished.js +245 -0
- package/cjs/vendors/rangeParser.d.ts +10 -0
- package/cjs/vendors/rangeParser.js +125 -0
- package/esm/body.d.ts +1 -1
- package/esm/bodyHelpers.js +2 -2
- package/esm/connect.d.ts +1 -1
- package/esm/connect.js +1 -1
- package/esm/dx.d.ts +1 -1
- package/esm/dx.js +20 -11
- package/esm/dxHelpers.d.ts +1 -1
- package/esm/dxHelpers.js +8 -3
- package/esm/express.js +14 -12
- package/esm/polyfillWithResolvers.js +2 -3
- package/esm/router.js +4 -3
- package/esm/static.d.ts +5 -0
- package/esm/static.js +8 -8
- package/esm/staticHelpers.d.ts +15 -3
- package/esm/staticHelpers.js +190 -8
- package/esm/stream.js +2 -2
- package/{cjs → esm/vendors}/contentType.js +3 -7
- package/{cjs → esm/vendors}/etag.d.ts +3 -1
- package/esm/vendors/etag.js +90 -0
- package/esm/vendors/fresh.d.ts +23 -0
- package/esm/vendors/fresh.js +96 -0
- package/esm/vendors/mime.d.ts +1 -0
- package/esm/vendors/mime.js +35 -0
- package/esm/vendors/mimeDb.d.ts +9413 -0
- package/esm/vendors/mimeDb.js +9415 -0
- package/esm/vendors/mimeScore.d.ts +5 -0
- package/esm/vendors/mimeScore.js +46 -0
- package/esm/vendors/onFinished.d.ts +14 -0
- package/esm/vendors/onFinished.js +241 -0
- package/esm/vendors/rangeParser.d.ts +10 -0
- package/esm/vendors/rangeParser.js +121 -0
- package/package.json +1 -5
- package/cjs/file.d.ts +0 -3
- package/cjs/file.js +0 -12
- package/esm/etag.js +0 -90
- package/esm/file.d.ts +0 -3
- package/esm/file.js +0 -8
- /package/cjs/{contentType.d.ts → vendors/contentType.d.ts} +0 -0
- /package/esm/{contentType.d.ts → vendors/contentType.d.ts} +0 -0
package/cjs/stream.js
CHANGED
|
@@ -88,10 +88,10 @@ async function readStream(stream, { length, limit }) {
|
|
|
88
88
|
stream.off('aborted', onAborted);
|
|
89
89
|
stream.off('data', onData);
|
|
90
90
|
stream.off('end', onEnd);
|
|
91
|
-
stream.off('error',
|
|
91
|
+
stream.off('error', onError);
|
|
92
92
|
stream.off('close', onClose);
|
|
93
93
|
}
|
|
94
94
|
return await defer.promise;
|
|
95
95
|
}
|
|
96
96
|
exports.readStream = readStream;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0cmVhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFHQSx5Q0FBNkU7QUFDN0Usc0NBQW1DO0FBRW5DLGdFQUFnRTtBQUNoRSwrQkFBK0I7QUFDL0IsU0FBZ0IsZ0JBQWdCLENBQUMsR0FBb0IsRUFBRSxRQUFnQixFQUFFLGNBQXdCO0lBQ2hHLElBQUksY0FBYyxJQUFJLFFBQVEsS0FBSyxVQUFVO1FBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsUUFBUSxtQkFBbUIsQ0FBQyxDQUFBO0lBRS9HLFFBQVEsUUFBUSxFQUFFLENBQUM7UUFDbEIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUEseUJBQWEsR0FBRSxDQUFBO1lBQzlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDaEIsT0FBTyxNQUFNLENBQUE7UUFDZCxDQUFDO1FBQ0QsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBQSx3QkFBWSxHQUFFLENBQUE7WUFDN0IsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNoQixPQUFPLE1BQU0sQ0FBQTtRQUNkLENBQUM7UUFDRCxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDWCxNQUFNLE1BQU0sR0FBRyxJQUFBLGtDQUFzQixHQUFFLENBQUE7WUFDdkMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNoQixPQUFPLE1BQU0sQ0FBQTtRQUNkLENBQUM7UUFDRCxLQUFLLFVBQVU7WUFDZCxPQUFPLEdBQUcsQ0FBQTtRQUNYO1lBQ0MsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0FBQ0YsQ0FBQztBQXhCRCw0Q0F3QkM7QUFFRCx1R0FBdUc7QUFDaEcs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
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseContentType = void 0;
|
|
1
4
|
// https://github.com/jshttp/content-type/blob/d02574e9640bd4370f148c767b1b877b5a300070/index.js#L106
|
|
2
5
|
/**
|
|
3
6
|
* RegExp to match type in RFC 7231 sec 3.1.1.1
|
|
@@ -31,14 +34,14 @@ const TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;
|
|
|
31
34
|
* obs-text = %x80-FF
|
|
32
35
|
*/
|
|
33
36
|
const QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g; // eslint-disable-line no-control-regex
|
|
34
|
-
|
|
37
|
+
function parseContentType(header) {
|
|
35
38
|
let index = header.indexOf(';');
|
|
36
39
|
const mediaType = index !== -1
|
|
37
40
|
? header.slice(0, index).trim()
|
|
38
41
|
: header.trim();
|
|
39
42
|
if (!TYPE_REGEXP.test(mediaType))
|
|
40
43
|
throw new TypeError(`invalid media type: ${mediaType}`);
|
|
41
|
-
const parameters =
|
|
44
|
+
const parameters = Object.create(null);
|
|
42
45
|
// parse parameters
|
|
43
46
|
if (index !== -1) {
|
|
44
47
|
let key;
|
|
@@ -66,6 +69,7 @@ export function parseContentType(header) {
|
|
|
66
69
|
}
|
|
67
70
|
return { mediaType, parameters };
|
|
68
71
|
}
|
|
72
|
+
exports.parseContentType = parseContentType;
|
|
69
73
|
/**
|
|
70
74
|
* RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6
|
|
71
75
|
*/
|
|
@@ -85,4 +89,4 @@ function formatContentType({ mediaType, parameters }) {
|
|
|
85
89
|
? Object.keys(parameters).sort().map(key => `; ${key}=${qstring(parameters[key])}`).join('')
|
|
86
90
|
: ''}`;
|
|
87
91
|
}
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudFR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVuZG9ycy9jb250ZW50VHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxR0FBcUc7QUFDckc7Ozs7OztHQU1HO0FBQ0gsTUFBTSxXQUFXLEdBQUcsNERBQTRELENBQUE7QUFDaEY7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sWUFBWSxHQUFHLGtLQUFrSyxDQUFBLENBQUMsdUNBQXVDO0FBQy9OLE1BQU0sV0FBVyxHQUFHLHVDQUF1QyxDQUFBLENBQUMsdUNBQXVDO0FBQ25HLE1BQU0sWUFBWSxHQUFHLCtCQUErQixDQUFBO0FBQ3BEOzs7OztHQUtHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsNEJBQTRCLENBQUEsQ0FBQyx1Q0FBdUM7QUFFeEYsU0FBZ0IsZ0JBQWdCLENBQUUsTUFBYztJQUMvQyxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9CLE1BQU0sU0FBUyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRTtRQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO0lBRWhCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsdUJBQXVCLFNBQVMsRUFBRSxDQUFDLENBQUE7SUFDekYsTUFBTSxVQUFVLEdBQTJCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7SUFFOUQsbUJBQW1CO0lBQ25CLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbEIsSUFBSSxHQUFHLENBQUE7UUFDUCxJQUFJLEtBQUssQ0FBQTtRQUNULElBQUksS0FBSyxDQUFBO1FB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
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/// <reference types="node" resolution-mode="require"/>
|
|
2
2
|
/// <reference types="node" resolution-mode="require"/>
|
|
3
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
3
4
|
import type { IncomingMessage } from 'node:http';
|
|
5
|
+
import type { Stats } from 'node:fs';
|
|
4
6
|
export declare function entityTag(buf: Buffer, weak?: boolean): string;
|
|
5
|
-
export declare function statTag(stat:
|
|
7
|
+
export declare function statTag(stat: Stats): string;
|
|
6
8
|
export declare function isFreshETag(req: IncomingMessage, etag: string): true | undefined;
|
|
7
9
|
export declare function isFreshModifiedSince(req: IncomingMessage, lastModified: string): boolean | undefined;
|
|
@@ -97,4 +97,4 @@ function parseTokenList(str) {
|
|
|
97
97
|
list.push(str.substring(start, end));
|
|
98
98
|
return list;
|
|
99
99
|
}
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXRhZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZW5kb3JzL2V0YWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0dBQWtHO0FBQ2xHLDhEQUFnQztBQUloQyxTQUFnQixTQUFTLENBQUMsR0FBVyxFQUFFLElBQWM7SUFDcEQscUJBQXFCO0lBQ3JCLE9BQU8sR0FBRyxDQUFDLE1BQU07UUFDaEIsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUkscUJBQU07YUFDcEMsVUFBVSxDQUFDLE1BQU0sQ0FBQzthQUNsQixNQUFNLENBQUMsR0FBRyxDQUFDO2FBQ1gsTUFBTSxDQUFDLFFBQVEsQ0FBQzthQUNoQixTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHO1FBQ3JCLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGlDQUFpQyxDQUFBO0lBQ3ZELDRFQUE0RTtJQUM1RSx5QkFBeUI7SUFDekIsZ0dBQWdHO0FBQ2pHLENBQUM7QUFaRCw4QkFZQztBQUVELE1BQU0sNkJBQTZCLEdBQUcsZ0NBQWdDLENBQUE7QUFDdEUsU0FBZ0IsT0FBTyxDQUFDLElBQVc7SUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDL0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFbkMsT0FBTyxJQUFJLElBQUksSUFBSSxLQUFLLEdBQUcsQ0FBQTtBQUM1QixDQUFDO0FBTEQsMEJBS0M7QUFDRCw2RkFBNkY7QUFDN0YsU0FBZ0IsV0FBVyxDQUFDLEdBQW9CLEVBQUUsSUFBWTtJQUM3RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsT0FB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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check freshness of the response using request and response headers.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} reqHeaders
|
|
5
|
+
* @param {Object} resHeaders
|
|
6
|
+
* @return {Boolean}
|
|
7
|
+
* @public
|
|
8
|
+
*/
|
|
9
|
+
export declare function fresh(reqHeaders: any, resHeaders: any): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Parse an HTTP Date into a number.
|
|
12
|
+
*
|
|
13
|
+
* @param {string} date
|
|
14
|
+
* @private
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseHttpDate(date: any): number;
|
|
17
|
+
/**
|
|
18
|
+
* Parse a HTTP token list.
|
|
19
|
+
*
|
|
20
|
+
* @param {string} str
|
|
21
|
+
* @private
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseTokenList(str: any): any[];
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseTokenList = exports.parseHttpDate = exports.fresh = void 0;
|
|
4
|
+
const CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/;
|
|
5
|
+
/**
|
|
6
|
+
* Check freshness of the response using request and response headers.
|
|
7
|
+
*
|
|
8
|
+
* @param {Object} reqHeaders
|
|
9
|
+
* @param {Object} resHeaders
|
|
10
|
+
* @return {Boolean}
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
function fresh(reqHeaders, resHeaders) {
|
|
14
|
+
// fields
|
|
15
|
+
const modifiedSince = reqHeaders['if-modified-since'];
|
|
16
|
+
const noneMatch = reqHeaders['if-none-match'];
|
|
17
|
+
// unconditional request
|
|
18
|
+
if (!modifiedSince && !noneMatch) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
// Always return stale when Cache-Control: no-cache
|
|
22
|
+
// to support end-to-end reload requests
|
|
23
|
+
// https://tools.ietf.org/html/rfc2616#section-14.9.4
|
|
24
|
+
const cacheControl = reqHeaders['cache-control'];
|
|
25
|
+
if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
// if-none-match takes precedent over if-modified-since
|
|
29
|
+
if (noneMatch) {
|
|
30
|
+
if (noneMatch === '*') {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
const etag = resHeaders.etag;
|
|
34
|
+
if (!etag) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
const matches = parseTokenList(noneMatch);
|
|
38
|
+
for (let i = 0; i < matches.length; i++) {
|
|
39
|
+
const match = matches[i];
|
|
40
|
+
if (match === etag || match === 'W/' + etag || 'W/' + match === etag) {
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
// if-modified-since
|
|
47
|
+
if (modifiedSince) {
|
|
48
|
+
const lastModified = resHeaders['last-modified'];
|
|
49
|
+
const modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince));
|
|
50
|
+
if (modifiedStale) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
exports.fresh = fresh;
|
|
57
|
+
/**
|
|
58
|
+
* Parse an HTTP Date into a number.
|
|
59
|
+
*
|
|
60
|
+
* @param {string} date
|
|
61
|
+
* @private
|
|
62
|
+
*/
|
|
63
|
+
function parseHttpDate(date) {
|
|
64
|
+
const timestamp = date && Date.parse(date);
|
|
65
|
+
// istanbul ignore next: guard against date.js Date.parse patching
|
|
66
|
+
return typeof timestamp === 'number' ? timestamp : NaN;
|
|
67
|
+
}
|
|
68
|
+
exports.parseHttpDate = parseHttpDate;
|
|
69
|
+
/**
|
|
70
|
+
* Parse a HTTP token list.
|
|
71
|
+
*
|
|
72
|
+
* @param {string} str
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
function parseTokenList(str) {
|
|
76
|
+
let end = 0;
|
|
77
|
+
const list = [];
|
|
78
|
+
let start = 0;
|
|
79
|
+
// gather tokens
|
|
80
|
+
let i = 0, len = str.length;
|
|
81
|
+
for (; i < len; i++) {
|
|
82
|
+
switch (str.charCodeAt(i)) {
|
|
83
|
+
case 0x20: /* */
|
|
84
|
+
if (start === end) {
|
|
85
|
+
start = end = i + 1;
|
|
86
|
+
}
|
|
87
|
+
break;
|
|
88
|
+
case 0x2c: /* , */
|
|
89
|
+
list.push(str.substring(start, end));
|
|
90
|
+
start = end = i + 1;
|
|
91
|
+
break;
|
|
92
|
+
default:
|
|
93
|
+
end = i + 1;
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// final token
|
|
98
|
+
list.push(str.substring(start, end));
|
|
99
|
+
return list;
|
|
100
|
+
}
|
|
101
|
+
exports.parseTokenList = parseTokenList;
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJlc2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmVuZG9ycy9mcmVzaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLDZCQUE2QixHQUFHLGdDQUFnQyxDQUFBO0FBRXRFOzs7Ozs7O0dBT0c7QUFFSCxTQUFnQixLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVU7SUFDM0MsU0FBUztJQUNULE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFBO0lBQ3JELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUU3Qyx3QkFBd0I7SUFDeEIsSUFBSSxDQUFDLGFBQWEsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFBO0lBQ2IsQ0FBQztJQUVELG1EQUFtRDtJQUNuRCx3Q0FBd0M7SUFDeEMscURBQXFEO0lBQ3JELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQTtJQUNoRCxJQUFJLFlBQVksSUFBSSw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztRQUN0RSxPQUFPLEtBQUssQ0FBQTtJQUNiLENBQUM7SUFFRCx1REFBdUQ7SUFDdkQsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNmLElBQUksU0FBUyxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFBO1FBQ1osQ0FBQztRQUNELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUE7UUFFNUIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1gsT0FBTyxLQUFLLENBQUE7UUFDYixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQ3pDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxF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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function contentTypeForExtension(extension: any): any;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.contentTypeForExtension = void 0;
|
|
7
|
+
const mimeDb_js_1 = __importDefault(require("./mimeDb.js"));
|
|
8
|
+
const mimeScore_js_1 = require("./mimeScore.js");
|
|
9
|
+
const extensionToMime = Object.create(null);
|
|
10
|
+
for (const [type, { extensions = [] }] of Object.entries(mimeDb_js_1.default))
|
|
11
|
+
for (const extension of extensions)
|
|
12
|
+
extensionToMime[extension] = preferredType(extension, type, extensionToMime[extension]);
|
|
13
|
+
function preferredType(ext, type0, type1) {
|
|
14
|
+
const score0 = type0 ? (0, mimeScore_js_1.mimeScore)(type0, mimeDb_js_1.default[type0].source) : 0;
|
|
15
|
+
const score1 = type1 ? (0, mimeScore_js_1.mimeScore)(type1, mimeDb_js_1.default[type1].source) : 0;
|
|
16
|
+
return score0 > score1 ? type0 : type1;
|
|
17
|
+
}
|
|
18
|
+
function contentTypeForExtension(extension) {
|
|
19
|
+
const mimeType = extensionToMime[extension.toLowerCase()];
|
|
20
|
+
if (!mimeType)
|
|
21
|
+
return;
|
|
22
|
+
if (!mimeType.includes('charset')) {
|
|
23
|
+
const charset = determineCharset(mimeType);
|
|
24
|
+
if (charset)
|
|
25
|
+
return mimeType + '; charset=' + charset.toLowerCase();
|
|
26
|
+
}
|
|
27
|
+
return mimeType;
|
|
28
|
+
}
|
|
29
|
+
exports.contentTypeForExtension = contentTypeForExtension;
|
|
30
|
+
const EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/;
|
|
31
|
+
const TEXT_TYPE_REGEXP = /^text\//i;
|
|
32
|
+
function determineCharset(type) {
|
|
33
|
+
// _TODO: use media-typer
|
|
34
|
+
const match = EXTRACT_TYPE_REGEXP.exec(type);
|
|
35
|
+
const mime = match && mimeDb_js_1.default[match[1].toLowerCase()];
|
|
36
|
+
if (mime?.charset)
|
|
37
|
+
return mime.charset;
|
|
38
|
+
// default text/* to utf-8
|
|
39
|
+
if (match && TEXT_TYPE_REGEXP.test(match[1]))
|
|
40
|
+
return 'UTF-8';
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWltZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZW5kb3JzL21pbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNERBQWdDO0FBQ2hDLGlEQUF3QztBQUV4QyxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0FBRTNDLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxFQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQU0sQ0FBQztJQUM3RCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVU7UUFDakMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0FBRXpGLFNBQVMsYUFBYSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSztJQUN2QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUEsd0JBQVMsRUFBQyxLQUFLLEVBQUUsbUJBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBQSx3QkFBUyxFQUFDLEtBQUssRUFBRSxtQkFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFakUsT0FBTyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtBQUN2QyxDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsU0FBUztJQUNoRCxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUE7SUFDekQsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFNO0lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDMUMsSUFBSSxPQUFPO1lBQUUsT0FBTyxRQUFRLEdBQUcsWUFBWSxHQUFHLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNwRSxDQUFDO0lBQ0QsT0FBTyxRQUFRLENBQUE7QUFDaEIsQ0FBQztBQVJELDBEQVFDO0FBRUQsTUFBTSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQTtBQUNyRCxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQTtBQUVuQyxTQUFTLGdCQUFnQixDQUFFLElBQUk7SUFDOUIseUJBQXlCO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLElBQUksR0FBRyxLQUFLLElBQUksbUJBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUVwRCxJQUFJLElBQUksRUFBRSxPQUFPO1FBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBO0lBRXRDLDBCQUEwQjtJQUMxQixJQUFJLEtBQUssSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQUUsT0FBTyxPQUFPLENBQUE7QUFDN0QsQ0FBQyJ9
|