@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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgEA;;;;;GAKG;AACH,eAAO,MAAM,MAAM,UAAW,MAAM,YAAY,MAAM,EAAE,mBAoBvD,CAAA"}
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 "@tinyhttp/content-type";
2
- import mime from "mime";
1
+ import * as typer from '@tinyhttp/content-type';
2
+ import mime from 'mime';
3
3
  function normalizeType(value) {
4
- const type = typer.parse(value);
5
- type.parameters = {};
6
- return typer.format(type);
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
- if (!value) return null;
10
- try {
11
- return normalizeType(value);
12
- } catch (err) {
13
- return null;
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
- if (expected === false) return false;
18
- const actualParts = actual.split("/");
19
- const expectedParts = expected.split("/");
20
- if (actualParts.length !== 2 || expectedParts.length !== 2) return false;
21
- if (expectedParts[0] !== "*" && expectedParts[0] !== actualParts[0]) return false;
22
- if (expectedParts[1].slice(0, 2) === "*+")
23
- return expectedParts[1].length <= actualParts[1].length + 1 && expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length);
24
- if (expectedParts[1] !== "*" && expectedParts[1] !== actualParts[1]) return false;
25
- return true;
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
- if (typeof type !== "string") return false;
29
- switch (type) {
30
- case "urlencoded":
31
- return "application/x-www-form-urlencoded";
32
- case "multipart":
33
- return "multipart/*";
34
- }
35
- if (type[0] === "+") return `*/*${type}`;
36
- return type.indexOf("/") === -1 ? mime.getType(type) : type;
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
- const typeIs = (value, ...types) => {
39
- let i;
40
- const val = tryNormalizeType(value);
41
- if (!val) return false;
42
- if (!types || !types.length) return val;
43
- let type;
44
- for (i = 0; i < types.length; i++) {
45
- if (mimeMatch(normalize(type = types[i]), val)) {
46
- return type[0] === "+" || type.indexOf("*") !== -1 ? val : type;
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
- return false;
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","sources":["../src/index.ts"],"sourcesContent":["import * as typer from '@tinyhttp/content-type'\nimport mime from 'mime'\n\nfunction normalizeType(value: string) {\n // parse the type\n const type = typer.parse(value)\n type.parameters = {}\n // reformat it\n return typer.format(type)\n}\n\nfunction tryNormalizeType(value: string) {\n if (!value) return null\n\n try {\n return normalizeType(value)\n } catch (err) {\n return null\n }\n}\n\nfunction mimeMatch(expected: string | boolean, actual: string | boolean): boolean {\n // invalid type\n if (expected === false) return false\n\n // split types\n const actualParts = (actual as string).split('/')\n const expectedParts = (expected as string).split('/')\n\n // invalid format\n if (actualParts.length !== 2 || expectedParts.length !== 2) return false\n\n // validate type\n if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) return false\n\n // validate suffix wildcard\n if (expectedParts[1].slice(0, 2) === '*+')\n return (\n expectedParts[1].length <= actualParts[1].length + 1 &&\n expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length)\n )\n\n // validate subtype\n if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) return false\n\n return true\n}\n\nfunction normalize(type: string | unknown) {\n // invalid type\n if (typeof type !== 'string') return false\n\n switch (type) {\n case 'urlencoded':\n return 'application/x-www-form-urlencoded'\n case 'multipart':\n return 'multipart/*'\n }\n // \"+json\" -> \"*/*+json\" expando\n if (type[0] === '+') return `*/*${type}`\n\n return type.indexOf('/') === -1 ? mime.getType(type) : type\n}\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n */\nexport const typeIs = (value: string, ...types: string[]) => {\n let i: number\n // remove parameters and normalize\n const val = tryNormalizeType(value)\n\n // no type or invalid\n if (!val) return false\n\n // no types, return the content type\n if (!types || !types.length) return val\n\n let type: string\n for (i = 0; i < types.length; i++) {\n if (mimeMatch(normalize((type = types[i])), val)) {\n return type[0] === '+' || type.indexOf('*') !== -1 ? val : type\n }\n }\n\n // no matches\n return false\n}\n"],"names":[],"mappings":";;AAGA,SAAS,cAAc,OAAe;AAE9B,QAAA,OAAO,MAAM,MAAM,KAAK;AAC9B,OAAK,aAAa;AAEX,SAAA,MAAM,OAAO,IAAI;AAC1B;AAEA,SAAS,iBAAiB,OAAe;AACnC,MAAA,CAAC,MAAc,QAAA;AAEf,MAAA;AACF,WAAO,cAAc,KAAK;AAAA,WACnB,KAAK;AACL,WAAA;AAAA,EACT;AACF;AAEA,SAAS,UAAU,UAA4B,QAAmC;AAE5E,MAAA,aAAa,MAAc,QAAA;AAGzB,QAAA,cAAe,OAAkB,MAAM,GAAG;AAC1C,QAAA,gBAAiB,SAAoB,MAAM,GAAG;AAGpD,MAAI,YAAY,WAAW,KAAK,cAAc,WAAW,EAAU,QAAA;AAG/D,MAAA,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,MAAM,YAAY,CAAC,EAAU,QAAA;AAG5E,MAAI,cAAc,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM;AAEjC,WAAA,cAAc,CAAC,EAAE,UAAU,YAAY,CAAC,EAAE,SAAS,KACnD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,YAAY,CAAC,EAAE,MAAM,IAAI,cAAc,CAAC,EAAE,MAAM;AAI9E,MAAA,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,MAAM,YAAY,CAAC,EAAU,QAAA;AAErE,SAAA;AACT;AAEA,SAAS,UAAU,MAAwB;AAErC,MAAA,OAAO,SAAS,SAAiB,QAAA;AAErC,UAAQ,MAAM;AAAA,IACZ,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,EACX;AAEA,MAAI,KAAK,CAAC,MAAM,IAAK,QAAO,MAAM,IAAI;AAE/B,SAAA,KAAK,QAAQ,GAAG,MAAM,KAAK,KAAK,QAAQ,IAAI,IAAI;AACzD;AAQa,MAAA,SAAS,CAAC,UAAkB,UAAoB;AACvD,MAAA;AAEE,QAAA,MAAM,iBAAiB,KAAK;AAG9B,MAAA,CAAC,IAAY,QAAA;AAGjB,MAAI,CAAC,SAAS,CAAC,MAAM,OAAe,QAAA;AAEhC,MAAA;AACJ,OAAK,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AAC7B,QAAA,UAAU,UAAW,OAAO,MAAM,CAAC,CAAE,GAAG,GAAG,GAAG;AACzC,aAAA,KAAK,CAAC,MAAM,OAAO,KAAK,QAAQ,GAAG,MAAM,KAAK,MAAM;AAAA,IAC7D;AAAA,EACF;AAGO,SAAA;AACT;"}
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",
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": ">=12.20.0"
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.1"
32
+ "mime": "4.1.0"
33
33
  },
34
+ "files": [
35
+ "dist"
36
+ ],
34
37
  "scripts": {
35
- "dev": "vite",
36
- "build": "vite build"
38
+ "build": "tsc"
37
39
  }
38
40
  }
package/vite.config.ts DELETED
@@ -1,4 +0,0 @@
1
- import { build } from '../../config/build'
2
- import { dependencies } from './package.json'
3
-
4
- export default build(dependencies)