@tinyhttp/type-is 2.2.3 → 2.2.5
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/dist/index.d.ts.map +1 -1
- package/dist/index.js +73 -44
- package/dist/index.js.map +1 -1
- package/package.json +7 -5
- package/vite.config.ts +0 -4
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgEA;;;;;GAKG;AACH,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgEA;;;;;GAKG;AACH,eAAO,MAAM,MAAM,GAAI,OAAO,MAAM,EAAE,GAAG,OAAO,MAAM,EAAE,mBAqBvD,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,54 +1,83 @@
|
|
|
1
|
-
import * as typer from
|
|
2
|
-
import mime from
|
|
1
|
+
import * as typer from '@tinyhttp/content-type';
|
|
2
|
+
import mime from 'mime';
|
|
3
3
|
function normalizeType(value) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
// parse the type
|
|
5
|
+
const type = typer.parse(value);
|
|
6
|
+
type.parameters = {};
|
|
7
|
+
// reformat it
|
|
8
|
+
return typer.format(type);
|
|
7
9
|
}
|
|
8
10
|
function tryNormalizeType(value) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
if (!value)
|
|
12
|
+
return null;
|
|
13
|
+
try {
|
|
14
|
+
return normalizeType(value);
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
15
19
|
}
|
|
16
20
|
function mimeMatch(expected, actual) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
// invalid type
|
|
22
|
+
if (expected === false)
|
|
23
|
+
return false;
|
|
24
|
+
// split types
|
|
25
|
+
const actualParts = actual.split('/');
|
|
26
|
+
const expectedParts = expected.split('/');
|
|
27
|
+
// invalid format
|
|
28
|
+
if (actualParts.length !== 2 || expectedParts.length !== 2)
|
|
29
|
+
return false;
|
|
30
|
+
// validate type
|
|
31
|
+
if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0])
|
|
32
|
+
return false;
|
|
33
|
+
// validate suffix wildcard
|
|
34
|
+
if (expectedParts[1].slice(0, 2) === '*+')
|
|
35
|
+
return (expectedParts[1].length <= actualParts[1].length + 1 &&
|
|
36
|
+
expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length));
|
|
37
|
+
// validate subtype
|
|
38
|
+
if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1])
|
|
39
|
+
return false;
|
|
40
|
+
return true;
|
|
26
41
|
}
|
|
27
42
|
function normalize(type) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
43
|
+
// invalid type
|
|
44
|
+
if (typeof type !== 'string')
|
|
45
|
+
return false;
|
|
46
|
+
switch (type) {
|
|
47
|
+
case 'urlencoded':
|
|
48
|
+
return 'application/x-www-form-urlencoded';
|
|
49
|
+
case 'multipart':
|
|
50
|
+
return 'multipart/*';
|
|
51
|
+
}
|
|
52
|
+
// "+json" -> "*/*+json" expando
|
|
53
|
+
if (type[0] === '+')
|
|
54
|
+
return `*/*${type}`;
|
|
55
|
+
return type.indexOf('/') === -1 ? mime.getType(type) : type;
|
|
37
56
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Compare a `value` content-type with `types`.
|
|
59
|
+
* Each `type` can be an extension like `html`,
|
|
60
|
+
* a special shortcut like `multipart` or `urlencoded`,
|
|
61
|
+
* or a mime type.
|
|
62
|
+
*/
|
|
63
|
+
export const typeIs = (value, ...types) => {
|
|
64
|
+
let i;
|
|
65
|
+
// remove parameters and normalize
|
|
66
|
+
const val = tryNormalizeType(value);
|
|
67
|
+
// no type or invalid
|
|
68
|
+
if (!val)
|
|
69
|
+
return false;
|
|
70
|
+
// no types, return the content type
|
|
71
|
+
if (!types || !types.length)
|
|
72
|
+
return val;
|
|
73
|
+
let type;
|
|
74
|
+
for (i = 0; i < types.length; i++) {
|
|
75
|
+
type = types[i];
|
|
76
|
+
if (mimeMatch(normalize(type), val)) {
|
|
77
|
+
return type[0] === '+' || type.indexOf('*') !== -1 ? val : type;
|
|
78
|
+
}
|
|
47
79
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
};
|
|
51
|
-
export {
|
|
52
|
-
typeIs
|
|
80
|
+
// no matches
|
|
81
|
+
return false;
|
|
53
82
|
};
|
|
54
|
-
//# sourceMappingURL=index.js.map
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tinyhttp/type-is",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "TypeScript rewrite of type-is with CJS and ESM targets",
|
|
6
6
|
"homepage": "https://tinyhttp.v1rtl.site",
|
|
@@ -23,16 +23,18 @@
|
|
|
23
23
|
"javascript"
|
|
24
24
|
],
|
|
25
25
|
"engines": {
|
|
26
|
-
"node": ">=
|
|
26
|
+
"node": ">=14.13.1"
|
|
27
27
|
},
|
|
28
28
|
"author": "v1rtl",
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"@tinyhttp/content-type": "^0.1.4",
|
|
32
|
-
"mime": "4.0
|
|
32
|
+
"mime": "4.1.0"
|
|
33
33
|
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist"
|
|
36
|
+
],
|
|
34
37
|
"scripts": {
|
|
35
|
-
"
|
|
36
|
-
"build": "vite build"
|
|
38
|
+
"build": "tsc"
|
|
37
39
|
}
|
|
38
40
|
}
|
package/vite.config.ts
DELETED