parse-domain 8.0.0 → 8.0.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/build/config.js.map +1 -1
- package/build/from-url.js.map +1 -1
- package/build/main.js.map +1 -1
- package/build/parse-domain.d.ts +11 -11
- package/build/parse-domain.js.map +1 -1
- package/build/psl/build-tries.js.map +1 -1
- package/build/psl/fetch-psl.js.map +1 -1
- package/build/punycode.js.map +1 -1
- package/build/sanitize.d.ts +5 -5
- package/build/sanitize.js.map +1 -1
- package/build/scripts/update-psl-fixture.js.map +1 -1
- package/build/scripts/update-tries.js.map +1 -1
- package/build/serialized-tries.js.map +1 -1
- package/build/smoke-test.js.map +1 -1
- package/build/trie/characters.js.map +1 -1
- package/build/trie/create-trie.js.map +1 -1
- package/build/trie/look-up.js.map +1 -1
- package/build/trie/nodes.d.ts +3 -3
- package/build/trie/nodes.js.map +1 -1
- package/build/trie/parse-trie.js.map +1 -1
- package/build/trie/serialize-trie.js.map +1 -1
- package/build/type-util.d.ts +1 -1
- package/build/type-util.js.map +1 -1
- package/build/update-tries.js.map +1 -1
- package/package.json +17 -21
- package/serialized-tries/info.json +1 -1
package/build/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAC5B,sDAAsD,CAAC;AACzD,MAAM,CAAC,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAC/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAC3E,MAAM,CAAC,MAAM,kCAAkC,GAC7C,gCAAgC,CAAC;AACnC,MAAM,CAAC,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAC/E,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAC5B,sDAAsD,CAAC;AACzD,MAAM,CAAC,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAC/E,MAAM,CAAC,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAC3E,MAAM,CAAC,MAAM,kCAAkC,GAC7C,gCAAgC,CAAC;AACnC,MAAM,CAAC,MAAM,gCAAgC,GAAG,8BAA8B,CAAC;AAC/E,MAAM,CAAC,MAAM,6BAA6B,GAAG,MAAM,CAAC","sourcesContent":["export const PUBLIC_SUFFIX_URL =\n \"https://publicsuffix.org/list/public_suffix_list.dat\";\nexport const PUBLIC_SUFFIX_MARKER_ICANN_START = \"// ===BEGIN ICANN DOMAINS===\";\nexport const PUBLIC_SUFFIX_MARKER_ICANN_END = \"// ===END ICANN DOMAINS===\";\nexport const PUBLIC_SUFFIX_MARKER_PRIVATE_START =\n \"// ===BEGIN PRIVATE DOMAINS===\";\nexport const PUBLIC_SUFFIX_MARKER_PRIVATE_END = \"// ===END PRIVATE DOMAINS===\";\nexport const FETCH_PSL_EXPECTED_MIN_LENGTH = 214528;\n"]}
|
package/build/from-url.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"from-url.js","sourceRoot":"","sources":["../src/from-url.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAC5C,MAAM,kBAAkB,GACtB,wDAAwD,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,0BAA0B;IAC1B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QAC7B,MAAM,IAAI,KAAK,CACb,yHAAyH,CAC1H,CAAC;KACH;IAED,uCAAuC;IACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,WAAW,CAAC;KACpB;IAED,gDAAgD;IAChD,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,QAAQ,OAAO,EAAE;QACnB,CAAC,CAAC,wDAAwD;YAC1D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBACvB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC1B,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;IAExB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAElD,IAAI;QACF,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;KAC9B;IAAC,WAAM;QACN,OAAO,WAAW,CAAC;KACpB;AACH,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"from-url.js","sourceRoot":"","sources":["../src/from-url.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,wBAAwB,CAAC;AAC5C,MAAM,kBAAkB,GACtB,wDAAwD,CAAC;AAE3D,MAAM,CAAC,MAAM,WAAW,GAAkB,MAAM,CAAC,aAAa,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAE,EAAE;IACzC,0BAA0B;IAC1B,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;QAC7B,MAAM,IAAI,KAAK,CACb,yHAAyH,CAC1H,CAAC;KACH;IAED,uCAAuC;IACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,OAAO,WAAW,CAAC;KACpB;IAED,gDAAgD;IAChD,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAChC,CAAC,CAAC,QAAQ,OAAO,EAAE;QACnB,CAAC,CAAC,wDAAwD;YAC1D,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBACvB,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;oBAC1B,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC;IAExB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAElD,IAAI;QACF,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;KAC9B;IAAC,WAAM;QACN,OAAO,WAAW,CAAC;KACpB;AACH,CAAC,CAAC","sourcesContent":["const urlPattern = /^[a-z][*+.a-z-]+:\\/\\//i;\nconst invalidIpv6Pattern =\n /^([a-z][*+.a-z-]+:\\/\\/)([^[][^/?]*:[^/?]*:[^/?]*)(.*)/i;\n\nexport const NO_HOSTNAME: unique symbol = Symbol(\"NO_HOSTNAME\");\n\nexport const fromUrl = (urlLike: string) => {\n /* istanbul ignore next */\n if (typeof URL !== \"function\") {\n throw new Error(\n \"Looks like the new URL() constructor is not globally available in your environment. Please make sure to use a polyfill.\"\n );\n }\n\n // Extra check for non-TypeScript users\n if (typeof urlLike !== \"string\") {\n return NO_HOSTNAME;\n }\n\n // URLs that start with // are protocol relative\n let url = urlLike.startsWith(\"//\")\n ? `http:${urlLike}`\n : // URLs that start with / do not have a hostname section\n urlLike.startsWith(\"/\")\n ? urlLike\n : urlPattern.test(urlLike)\n ? urlLike\n : `http://${urlLike}`;\n\n url = url.replace(invalidIpv6Pattern, \"$1[$2]$3\");\n\n try {\n return new URL(url).hostname;\n } catch {\n return NO_HOSTNAME;\n }\n};\n"]}
|
package/build/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,2DAA2D;AAC3D,OAAO,EACL,WAAW,EAEX,eAAe,GAKhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,UAAU,EAEV,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAC1B,2DAA2D;AAC3D,OAAO,EACL,WAAW,EAEX,eAAe,GAKhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EACL,UAAU,EAEV,mBAAmB,GACpB,MAAM,eAAe,CAAC","sourcesContent":["/* istanbul ignore file */\n// Jest will report function coverage errors here otherwise\nexport {\n parseDomain,\n ParseResult,\n ParseResultType,\n ParseResultInvalid,\n ParseResultReserved,\n ParseResultNotListed,\n ParseResultListed,\n} from \"./parse-domain.js\";\nexport { fromUrl, NO_HOSTNAME } from \"./from-url.js\";\nexport {\n Validation,\n ValidationError,\n ValidationErrorType,\n} from \"./sanitize.js\";\n"]}
|
package/build/parse-domain.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ValidationError, SanitizationResultValidIp, Validation } from "./sanitize.js";
|
|
2
2
|
import { NO_HOSTNAME } from "./from-url.js";
|
|
3
3
|
export declare const RESERVED_TOP_LEVEL_DOMAINS: string[];
|
|
4
|
-
export
|
|
4
|
+
export type Label = string;
|
|
5
5
|
export declare enum ParseResultType {
|
|
6
6
|
/**
|
|
7
7
|
* This parse result is returned in case the given hostname does not adhere to [RFC 1034](https://tools.ietf.org/html/rfc1034).
|
|
@@ -26,7 +26,7 @@ export declare enum ParseResultType {
|
|
|
26
26
|
*/
|
|
27
27
|
Listed = "LISTED"
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
type ParseResultCommon<Type extends ParseResultType> = {
|
|
30
30
|
/**
|
|
31
31
|
* The type of the parse result. Use switch or if to distinguish between different results.
|
|
32
32
|
*/
|
|
@@ -36,22 +36,22 @@ declare type ParseResultCommon<Type extends ParseResultType> = {
|
|
|
36
36
|
*/
|
|
37
37
|
hostname: Type extends ParseResultType.Invalid ? string | typeof NO_HOSTNAME : string;
|
|
38
38
|
};
|
|
39
|
-
export
|
|
39
|
+
export type ParseResultInvalid = ParseResultCommon<ParseResultType.Invalid> & {
|
|
40
40
|
/**
|
|
41
41
|
* An array of validation errors.
|
|
42
42
|
*/
|
|
43
43
|
errors: Array<ValidationError>;
|
|
44
44
|
};
|
|
45
|
-
|
|
45
|
+
type ParseResultCommonValidDomain = {
|
|
46
46
|
/**
|
|
47
47
|
* An array of labels that were separated by a dot character in the given hostname.
|
|
48
48
|
*/
|
|
49
49
|
labels: Array<Label>;
|
|
50
50
|
};
|
|
51
|
-
export
|
|
52
|
-
export
|
|
53
|
-
export
|
|
54
|
-
|
|
51
|
+
export type ParseResultIp = ParseResultCommon<ParseResultType.Ip> & Pick<SanitizationResultValidIp, "ipVersion">;
|
|
52
|
+
export type ParseResultReserved = ParseResultCommon<ParseResultType.Reserved> & ParseResultCommonValidDomain;
|
|
53
|
+
export type ParseResultNotListed = ParseResultCommon<ParseResultType.NotListed> & ParseResultCommonValidDomain;
|
|
54
|
+
type ParseResultListedDomains = {
|
|
55
55
|
/**
|
|
56
56
|
* An array of labels that belong to the subdomain. Can be empty if there was no subdomain in the given hostname.
|
|
57
57
|
*/
|
|
@@ -65,14 +65,14 @@ declare type ParseResultListedDomains = {
|
|
|
65
65
|
*/
|
|
66
66
|
topLevelDomains: Array<Label>;
|
|
67
67
|
};
|
|
68
|
-
export
|
|
68
|
+
export type ParseResultListed = ParseResultCommon<ParseResultType.Listed> & ParseResultCommonValidDomain & ParseResultListedDomains & {
|
|
69
69
|
/**
|
|
70
70
|
* The parse result according to ICANN only without private top-level domains.
|
|
71
71
|
*/
|
|
72
72
|
icann: ParseResultListedDomains;
|
|
73
73
|
};
|
|
74
|
-
export
|
|
75
|
-
export
|
|
74
|
+
export type ParseResult = ParseResultInvalid | ParseResultIp | ParseResultReserved | ParseResultNotListed | ParseResultListed;
|
|
75
|
+
export type ParseDomainOptions = {
|
|
76
76
|
/**
|
|
77
77
|
* If no validation is specified, Validation.Strict will be used.
|
|
78
78
|
**/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-domain.js","sourceRoot":"","sources":["../src/parse-domain.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parse-domain.js","sourceRoot":"","sources":["../src/parse-domain.ts"],"names":[],"mappings":"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","sourcesContent":["import { icannTrie, privateTrie } from \"./serialized-tries.js\";\nimport { lookUpTldsInTrie } from \"./trie/look-up.js\";\nimport {\n ValidationError,\n sanitize,\n SanitizationResultType,\n SanitizationResultValidIp,\n Validation,\n} from \"./sanitize.js\";\nimport { TrieRootNode } from \"./trie/nodes.js\";\nimport { parseTrie } from \"./trie/parse-trie.js\";\nimport { NO_HOSTNAME } from \"./from-url.js\";\n\nexport const RESERVED_TOP_LEVEL_DOMAINS = [\n \"localhost\",\n \"local\",\n \"example\",\n \"invalid\",\n \"test\",\n];\n\nexport type Label = string;\n\nexport enum ParseResultType {\n /**\n * This parse result is returned in case the given hostname does not adhere to [RFC 1034](https://tools.ietf.org/html/rfc1034).\n */\n Invalid = \"INVALID\",\n /**\n * This parse result is returned if the given hostname was an IPv4 or IPv6.\n */\n Ip = \"IP\",\n /**\n * This parse result is returned when the given hostname\n * - is the root domain (the empty string `\"\"`)\n * - belongs to the top-level domain `localhost`, `local`, `example`, `invalid` or `test`\n */\n Reserved = \"RESERVED\",\n /**\n * This parse result is returned when the given hostname is valid and does not belong to a reserved top-level domain, but is not listed in the public suffix list.\n */\n NotListed = \"NOT_LISTED\",\n /**\n * This parse result is returned when the given hostname belongs to a top-level domain that is listed in the public suffix list.\n */\n Listed = \"LISTED\",\n}\n\n// The following parse result types are organized in this complicated way\n// way because every property should only be described by a single JSDoc comment.\n// If we copy the types (hence duplicating the shared properties),\n// JSDoc comments would show up duplicated in the final return type as well.\ntype ParseResultCommon<Type extends ParseResultType> = {\n /**\n * The type of the parse result. Use switch or if to distinguish between different results.\n */\n type: Type;\n /**\n * The original hostname that was passed to parseDomain().\n */\n hostname: Type extends ParseResultType.Invalid\n ? string | typeof NO_HOSTNAME\n : string;\n};\n\nexport type ParseResultInvalid = ParseResultCommon<ParseResultType.Invalid> & {\n /**\n * An array of validation errors.\n */\n errors: Array<ValidationError>;\n};\n\ntype ParseResultCommonValidDomain = {\n /**\n * An array of labels that were separated by a dot character in the given hostname.\n */\n labels: Array<Label>;\n};\n\nexport type ParseResultIp = ParseResultCommon<ParseResultType.Ip> &\n Pick<SanitizationResultValidIp, \"ipVersion\">;\n\nexport type ParseResultReserved = ParseResultCommon<ParseResultType.Reserved> &\n ParseResultCommonValidDomain;\n\nexport type ParseResultNotListed =\n ParseResultCommon<ParseResultType.NotListed> & ParseResultCommonValidDomain;\n\ntype ParseResultListedDomains = {\n /**\n * An array of labels that belong to the subdomain. Can be empty if there was no subdomain in the given hostname.\n */\n subDomains: Array<Label>;\n /**\n * The first label that belongs to the user-controlled section of the hostname. Can be undefined if just a top-level domain was passed to parseDomain().\n */\n domain: Label | undefined;\n /**\n * An array of labels that are controlled by the domain registrar.\n */\n topLevelDomains: Array<Label>;\n};\n\nexport type ParseResultListed = ParseResultCommon<ParseResultType.Listed> &\n ParseResultCommonValidDomain &\n ParseResultListedDomains & {\n /**\n * The parse result according to ICANN only without private top-level domains.\n */\n icann: ParseResultListedDomains;\n };\n\nexport type ParseResult =\n | ParseResultInvalid\n | ParseResultIp\n | ParseResultReserved\n | ParseResultNotListed\n | ParseResultListed;\n\nconst getAtIndex = <Item>(\n array: Array<Item>,\n index: number\n): Item | undefined => {\n return index >= 0 && index < array.length ? array[index] : undefined;\n};\n\nconst splitLabelsIntoDomains = (\n labels: Array<Label>,\n index: number\n): ParseResultListedDomains => {\n return {\n subDomains: labels.slice(0, Math.max(0, index)),\n domain: getAtIndex(labels, index),\n topLevelDomains: labels.slice(index + 1),\n };\n};\n\nlet parsedIcannTrie: TrieRootNode | undefined;\nlet parsedPrivateTrie: TrieRootNode | undefined;\n\nexport type ParseDomainOptions = {\n /**\n * If no validation is specified, Validation.Strict will be used.\n **/\n validation?: Validation;\n};\n\n/**\n * Splits the given hostname in topLevelDomains, a domain and subDomains.\n */\nexport const parseDomain = (\n hostname: string | typeof NO_HOSTNAME,\n options?: ParseDomainOptions\n): ParseResult => {\n const sanitizationResult = sanitize(hostname, options);\n\n if (sanitizationResult.type === SanitizationResultType.Error) {\n return {\n type: ParseResultType.Invalid,\n hostname,\n errors: sanitizationResult.errors,\n };\n }\n\n if (sanitizationResult.type === SanitizationResultType.ValidIp) {\n return {\n type: ParseResultType.Ip,\n hostname: sanitizationResult.ip,\n ipVersion: sanitizationResult.ipVersion,\n };\n }\n\n const { labels, domain } = sanitizationResult;\n\n if (\n hostname === \"\" ||\n RESERVED_TOP_LEVEL_DOMAINS.includes(labels[labels.length - 1])\n ) {\n return {\n type: ParseResultType.Reserved,\n hostname: domain,\n labels,\n };\n }\n\n // Parse the serialized trie lazily\n parsedIcannTrie = parsedIcannTrie ?? parseTrie(icannTrie);\n parsedPrivateTrie = parsedPrivateTrie ?? parseTrie(privateTrie);\n\n const icannTlds = lookUpTldsInTrie(labels, parsedIcannTrie);\n const privateTlds = lookUpTldsInTrie(labels, parsedPrivateTrie);\n\n if (icannTlds.length === 0 && privateTlds.length === 0) {\n return {\n type: ParseResultType.NotListed,\n hostname: domain,\n labels,\n };\n }\n\n const indexOfPublicSuffixDomain =\n labels.length - Math.max(privateTlds.length, icannTlds.length) - 1;\n\n const indexOfIcannDomain = labels.length - icannTlds.length - 1;\n\n return {\n type: ParseResultType.Listed,\n hostname: domain,\n labels,\n icann: splitLabelsIntoDomains(labels, indexOfIcannDomain),\n ...splitLabelsIntoDomains(labels, indexOfPublicSuffixDomain),\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-tries.js","sourceRoot":"","sources":["../../src/psl/build-tries.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,GACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEjC,MAAM,gBAAgB,GAAG,CACvB,WAAmB,EACnB,WAAmB,EACnB,SAAiB,EACjB,EAAE;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,wBAAwB,WAAW,wBAAwB,CAC5D,CAAC;KACH;IACD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,wBAAwB,CAAC,CAAC;KAC1E;IAED,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AAE5E,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE;IACvC,OAAO;QACL,KAAK,EAAE,gBAAgB,CACrB,WAAW,EACX,gCAAgC,EAChC,8BAA8B,CAC/B;aACE,KAAK,CAAC,YAAY,CAAC;aACnB,MAAM,CAAC,YAAY,CAAC;aACpB,GAAG,CAAC,OAAO,CAAC;QACf,OAAO,EAAE,gBAAgB,CACvB,WAAW,EACX,kCAAkC,EAClC,gCAAgC,CACjC;aACE,KAAK,CAAC,YAAY,CAAC;aACnB,MAAM,CAAC,YAAY,CAAC;aACpB,GAAG,CAAC,OAAO,CAAC;KAChB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE1D,OAAO;QACL,SAAS;QACT,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"build-tries.js","sourceRoot":"","sources":["../../src/psl/build-tries.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,GACjC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,YAAY,GAAG,QAAQ,CAAC;AAC9B,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEjC,MAAM,gBAAgB,GAAG,CACvB,WAAmB,EACnB,WAAmB,EACnB,SAAiB,EACjB,EAAE;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE3C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,MAAM,IAAI,KAAK,CACb,wBAAwB,WAAW,wBAAwB,CAC5D,CAAC;KACH;IACD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,wBAAwB,CAAC,CAAC;KAC1E;IAED,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AAE5E,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,EAAE;IACvC,OAAO;QACL,KAAK,EAAE,gBAAgB,CACrB,WAAW,EACX,gCAAgC,EAChC,8BAA8B,CAC/B;aACE,KAAK,CAAC,YAAY,CAAC;aACnB,MAAM,CAAC,YAAY,CAAC;aACpB,GAAG,CAAC,OAAO,CAAC;QACf,OAAO,EAAE,gBAAgB,CACvB,WAAW,EACX,kCAAkC,EAClC,gCAAgC,CACjC;aACE,KAAK,CAAC,YAAY,CAAC;aACnB,MAAM,CAAC,YAAY,CAAC;aACpB,GAAG,CAAC,OAAO,CAAC;KAChB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACxC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE1D,OAAO;QACL,SAAS;QACT,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import {\n PUBLIC_SUFFIX_MARKER_ICANN_START,\n PUBLIC_SUFFIX_MARKER_ICANN_END,\n PUBLIC_SUFFIX_MARKER_PRIVATE_START,\n PUBLIC_SUFFIX_MARKER_PRIVATE_END,\n} from \"../config.js\";\nimport { toASCII } from \"../punycode.js\";\nimport { createTrieFromList } from \"../trie/create-trie.js\";\n\nconst matchNewLine = /\\r?\\n/u;\nconst matchComment = /^\\s*\\/\\//u;\nconst matchWhitespace = /^\\s*$/u;\n\nconst extractByMarkers = (\n listContent: string,\n startMarker: string,\n endMarker: string\n) => {\n const start = listContent.indexOf(startMarker);\n const end = listContent.indexOf(endMarker);\n\n if (start === -1) {\n throw new Error(\n `Missing start marker ${startMarker} in public suffix list`\n );\n }\n if (end === -1) {\n throw new Error(`Missing end marker ${endMarker} in public suffix list`);\n }\n\n return listContent.slice(start, end);\n};\n\nconst containsRule = (line: string) =>\n matchComment.test(line) === false && matchWhitespace.test(line) === false;\n\nconst parsePsl = (listContent: string) => {\n return {\n icann: extractByMarkers(\n listContent,\n PUBLIC_SUFFIX_MARKER_ICANN_START,\n PUBLIC_SUFFIX_MARKER_ICANN_END\n )\n .split(matchNewLine)\n .filter(containsRule)\n .map(toASCII),\n private: extractByMarkers(\n listContent,\n PUBLIC_SUFFIX_MARKER_PRIVATE_START,\n PUBLIC_SUFFIX_MARKER_PRIVATE_END\n )\n .split(matchNewLine)\n .filter(containsRule)\n .map(toASCII),\n };\n};\n\nexport const buildTries = (psl: string) => {\n const parsedPsl = parsePsl(psl);\n const icannTrie = createTrieFromList(parsedPsl.icann);\n const privateTrie = createTrieFromList(parsedPsl.private);\n\n return {\n icannTrie,\n privateTrie,\n };\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-psl.js","sourceRoot":"","sources":["../../src/psl/fetch-psl.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAS,EAAE;IACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEzC,eAAe;IACf,EAAE,CACA,UAAU,CAAC,MAAM,IAAI,6BAA6B,EAClD,6CAA6C,CAC9C,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAA,CAAC"}
|
|
1
|
+
{"version":3,"file":"fetch-psl.js","sourceRoot":"","sources":["../../src/psl/fetch-psl.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAS,EAAE;IACjC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEzC,eAAe;IACf,EAAE,CACA,UAAU,CAAC,MAAM,IAAI,6BAA6B,EAClD,6CAA6C,CAC9C,CAAC;IAEF,OAAO,UAAU,CAAC;AACpB,CAAC,CAAA,CAAC","sourcesContent":["import { ok } from \"assert\";\nimport fetch from \"node-fetch\";\nimport { FETCH_PSL_EXPECTED_MIN_LENGTH, PUBLIC_SUFFIX_URL } from \"../config.js\";\n\nexport const fetchPsl = async () => {\n const response = await fetch(PUBLIC_SUFFIX_URL);\n const pslContent = await response.text();\n\n // Sanity check\n ok(\n pslContent.length >= FETCH_PSL_EXPECTED_MIN_LENGTH,\n \"Public suffix list is shorter than expected\"\n );\n\n return pslContent;\n};\n"]}
|
package/build/punycode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"punycode.js","sourceRoot":"","sources":["../src/punycode.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC1C,OAAO,IAAI,GAAG,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;AAChD,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"punycode.js","sourceRoot":"","sources":["../src/punycode.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,EAAE;IAC1C,OAAO,IAAI,GAAG,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC;AAChD,CAAC,CAAC","sourcesContent":["export const toASCII = (hostname: string) => {\n return new URL(`http://${hostname}`).hostname;\n};\n"]}
|
package/build/sanitize.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare enum ValidationErrorType {
|
|
|
28
28
|
LabelInvalidCharacter = "LABEL_INVALID_CHARACTER",
|
|
29
29
|
LastLabelInvalid = "LAST_LABEL_INVALID"
|
|
30
30
|
}
|
|
31
|
-
export
|
|
31
|
+
export type ValidationError = {
|
|
32
32
|
type: ValidationErrorType;
|
|
33
33
|
message: string;
|
|
34
34
|
column: number;
|
|
@@ -38,21 +38,21 @@ export declare enum SanitizationResultType {
|
|
|
38
38
|
ValidDomain = "VALID_DOMAIN",
|
|
39
39
|
Error = "ERROR"
|
|
40
40
|
}
|
|
41
|
-
export
|
|
41
|
+
export type SanitizationResultValidIp = {
|
|
42
42
|
type: SanitizationResultType.ValidIp;
|
|
43
43
|
ip: string;
|
|
44
44
|
ipVersion: Exclude<ReturnType<typeof ipVersion>, undefined>;
|
|
45
45
|
};
|
|
46
|
-
export
|
|
46
|
+
export type SanitizationResultValidDomain = {
|
|
47
47
|
type: SanitizationResultType.ValidDomain;
|
|
48
48
|
domain: string;
|
|
49
49
|
labels: Array<Label>;
|
|
50
50
|
};
|
|
51
|
-
export
|
|
51
|
+
export type SanitizationResultError = {
|
|
52
52
|
type: SanitizationResultType.Error;
|
|
53
53
|
errors: Array<ValidationError>;
|
|
54
54
|
};
|
|
55
|
-
export
|
|
55
|
+
export type SanitizationResult = SanitizationResultValidIp | SanitizationResultValidDomain | SanitizationResultError;
|
|
56
56
|
export declare const sanitize: (input: string | typeof NO_HOSTNAME, options?: {
|
|
57
57
|
validation?: Validation;
|
|
58
58
|
}) => SanitizationResult;
|
package/build/sanitize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../src/sanitize.ts"],"names":[],"mappings":"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","sourcesContent":["import { ipVersion } from \"is-ip\";\nimport { Label } from \"./parse-domain.js\";\nimport { NO_HOSTNAME } from \"./from-url.js\";\n\n// See https://en.wikipedia.org/wiki/Domain_name\n// See https://tools.ietf.org/html/rfc1034\nconst LABEL_SEPARATOR = \".\";\nconst LABEL_LENGTH_MIN = 1;\nconst LABEL_LENGTH_MAX = 63;\n/**\n * 255 octets - 2 octets if you remove the last dot\n * @see https://devblogs.microsoft.com/oldnewthing/20120412-00/?p=7873\n */\nconst DOMAIN_LENGTH_MAX = 253;\n\nconst textEncoder = new TextEncoder();\n\nexport enum Validation {\n /**\n * Allows any octets as labels\n * but still restricts the length of labels and the overall domain.\n *\n * @see https://www.rfc-editor.org/rfc/rfc2181#section-11\n **/\n Lax = \"LAX\",\n\n /**\n * Only allows ASCII letters, digits and hyphens (aka LDH),\n * forbids hyphens at the beginning or end of a label\n * and requires top-level domain names not to be all-numeric.\n *\n * This is the default if no validation is configured.\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3696#section-2\n */\n Strict = \"STRICT\",\n}\n\nexport enum ValidationErrorType {\n NoHostname = \"NO_HOSTNAME\",\n DomainMaxLength = \"DOMAIN_MAX_LENGTH\",\n LabelMinLength = \"LABEL_MIN_LENGTH\",\n LabelMaxLength = \"LABEL_MAX_LENGTH\",\n LabelInvalidCharacter = \"LABEL_INVALID_CHARACTER\",\n LastLabelInvalid = \"LAST_LABEL_INVALID\",\n}\n\nexport type ValidationError = {\n type: ValidationErrorType;\n message: string;\n column: number;\n};\n\nexport enum SanitizationResultType {\n ValidIp = \"VALID_IP\",\n ValidDomain = \"VALID_DOMAIN\",\n Error = \"ERROR\",\n}\n\nexport type SanitizationResultValidIp = {\n type: SanitizationResultType.ValidIp;\n ip: string;\n ipVersion: Exclude<ReturnType<typeof ipVersion>, undefined>;\n};\n\nexport type SanitizationResultValidDomain = {\n type: SanitizationResultType.ValidDomain;\n domain: string;\n labels: Array<Label>;\n};\n\nexport type SanitizationResultError = {\n type: SanitizationResultType.Error;\n errors: Array<ValidationError>;\n};\n\nexport type SanitizationResult =\n | SanitizationResultValidIp\n | SanitizationResultValidDomain\n | SanitizationResultError;\n\nconst createNoHostnameError = (input: unknown) => {\n return {\n type: ValidationErrorType.NoHostname,\n message: `The given input ${String(input)} does not look like a hostname.`,\n column: 1,\n };\n};\n\nconst createDomainMaxLengthError = (domain: string, length: number) => {\n return {\n type: ValidationErrorType.DomainMaxLength,\n message: `Domain \"${domain}\" is too long. Domain is ${length} octets long but should not be longer than ${DOMAIN_LENGTH_MAX}.`,\n column: length,\n };\n};\n\nconst createLabelMinLengthError = (label: string, column: number) => {\n const length = label.length;\n\n return {\n type: ValidationErrorType.LabelMinLength,\n message: `Label \"${label}\" is too short. Label is ${length} octets long but should be at least ${LABEL_LENGTH_MIN}.`,\n column,\n };\n};\n\nconst createLabelMaxLengthError = (label: string, column: number) => {\n const length = label.length;\n\n return {\n type: ValidationErrorType.LabelMaxLength,\n message: `Label \"${label}\" is too long. Label is ${length} octets long but should not be longer than ${LABEL_LENGTH_MAX}.`,\n column,\n };\n};\n\nconst createLabelInvalidCharacterError = (\n label: string,\n invalidCharacter: string,\n column: number\n) => {\n return {\n type: ValidationErrorType.LabelInvalidCharacter,\n message: `Label \"${label}\" contains invalid character \"${invalidCharacter}\" at column ${column}.`,\n column,\n };\n};\n\nconst createLastLabelInvalidError = (label: string, column: number) => {\n return {\n type: ValidationErrorType.LabelInvalidCharacter,\n message: `Last label \"${label}\" must not be all-numeric.`,\n column,\n };\n};\n\nexport const sanitize = (\n input: string | typeof NO_HOSTNAME,\n options: { validation?: Validation } = {}\n): SanitizationResult => {\n // Extra check for non-TypeScript users\n if (typeof input !== \"string\") {\n return {\n type: SanitizationResultType.Error,\n errors: [createNoHostnameError(input)],\n };\n }\n\n if (input === \"\") {\n return {\n type: SanitizationResultType.ValidDomain,\n domain: input,\n labels: [],\n };\n }\n\n // IPv6 addresses are surrounded by square brackets in URLs\n // See https://tools.ietf.org/html/rfc3986#section-3.2.2\n const inputTrimmedAsIp = input.replace(/^\\[|]$/g, \"\");\n const ipVersionOfInput = ipVersion(inputTrimmedAsIp);\n\n if (ipVersionOfInput !== undefined) {\n return {\n type: SanitizationResultType.ValidIp,\n ip: inputTrimmedAsIp,\n ipVersion: ipVersionOfInput,\n };\n }\n\n const lastChar = input.charAt(input.length - 1);\n const canonicalInput =\n lastChar === LABEL_SEPARATOR ? input.slice(0, -1) : input;\n const octets = new TextEncoder().encode(canonicalInput);\n\n if (octets.length > DOMAIN_LENGTH_MAX) {\n return {\n type: SanitizationResultType.Error,\n errors: [createDomainMaxLengthError(input, octets.length)],\n };\n }\n\n const labels = canonicalInput.split(LABEL_SEPARATOR);\n\n const { validation = Validation.Strict } = options;\n const labelValidationErrors = validateLabels[validation](labels);\n\n if (labelValidationErrors.length > 0) {\n return {\n type: SanitizationResultType.Error,\n errors: labelValidationErrors,\n };\n }\n\n return {\n type: SanitizationResultType.ValidDomain,\n domain: input,\n labels,\n };\n};\n\nconst validateLabels = {\n [Validation.Lax]: (labels: Array<string>) => {\n const labelValidationErrors = [];\n let column = 1;\n\n for (const label of labels) {\n const octets = textEncoder.encode(label);\n\n if (octets.length < LABEL_LENGTH_MIN) {\n labelValidationErrors.push(createLabelMinLengthError(label, column));\n } else if (octets.length > LABEL_LENGTH_MAX) {\n labelValidationErrors.push(createLabelMaxLengthError(label, column));\n }\n column += label.length + LABEL_SEPARATOR.length;\n }\n\n return labelValidationErrors;\n },\n [Validation.Strict]: (labels: Array<string>) => {\n const labelValidationErrors = [];\n let column = 1;\n let lastLabel;\n\n for (const label of labels) {\n // According to https://tools.ietf.org/html/rfc6761 labels should\n // only contain ASCII letters, digits and hyphens (LDH).\n const invalidCharacter = /[^\\da-z-]/i.exec(label);\n\n if (invalidCharacter) {\n labelValidationErrors.push(\n createLabelInvalidCharacterError(\n label,\n invalidCharacter[0],\n invalidCharacter.index + 1\n )\n );\n }\n if (label.startsWith(\"-\")) {\n labelValidationErrors.push(\n createLabelInvalidCharacterError(label, \"-\", column)\n );\n } else if (label.endsWith(\"-\")) {\n labelValidationErrors.push(\n createLabelInvalidCharacterError(\n label,\n \"-\",\n column + label.length - 1\n )\n );\n }\n if (\n // We can use .length here to check for the octet size because\n // label can only contain ASCII LDH characters at this point.\n label.length < LABEL_LENGTH_MIN\n ) {\n labelValidationErrors.push(createLabelMinLengthError(label, column));\n } else if (label.length > LABEL_LENGTH_MAX) {\n labelValidationErrors.push(createLabelMaxLengthError(label, column));\n }\n\n column += label.length + LABEL_SEPARATOR.length;\n lastLabel = label;\n }\n\n if (lastLabel !== undefined && /[a-z-]/iu.test(lastLabel) === false) {\n labelValidationErrors.push(\n createLastLabelInvalidError(\n lastLabel,\n column - lastLabel.length - LABEL_SEPARATOR.length\n )\n );\n }\n\n return labelValidationErrors;\n },\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-psl-fixture.js","sourceRoot":"","sources":["../../src/scripts/update-psl-fixture.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE;IAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CACnC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,UAAU,EACV,wBAAwB,CACzB,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;IAE7B,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC,CAAA,CAAC,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"update-psl-fixture.js","sourceRoot":"","sources":["../../src/scripts/update-psl-fixture.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE;IAC9B,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CACnC,SAAS,EACT,IAAI,EACJ,OAAO,EACP,UAAU,EACV,wBAAwB,CACzB,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;IAE7B,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC,CAAA,CAAC,EAAE,CAAC","sourcesContent":["import * as path from \"path\";\nimport * as url from \"url\";\nimport * as fs from \"fs\";\nimport { fetchPsl } from \"../psl/fetch-psl.js\";\n\nconst __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n\nexport const done = (async () => {\n const pathToPslFixture = path.resolve(\n __dirname,\n \"..\",\n \"tests\",\n \"fixtures\",\n \"public-suffix-list.txt\"\n );\n\n const psl = await fetchPsl();\n\n await fs.promises.writeFile(pathToPslFixture, psl);\n})();\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-tries.js","sourceRoot":"","sources":["../../src/scripts/update-tries.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,MAAM,iBAAiB,GAAG,CAAO,EAC/B,mBAAmB,EACnB,qBAAqB,GAC8B,EAAE,EAAE;IACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAEnE,MAAM,OAAO,CAAC,GAAG,CACf,iBAAiB,CAAC,GAAG,CAAC,CAAO,eAAe,EAAE,EAAE;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAClC,SAAS,EACT,eAAe,EACf,UAAU,CACX,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CACpC,SAAS,EACT,eAAe,EACf,YAAY,CACb,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CACrC,SAAS,EACT,eAAe,EACf,WAAW,CACZ,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,WAAW,eAAe,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,WAAW,iBAAiB,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,WAAW,kBAAkB,KAAK,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,EAAE,CAAC,QAAQ,CAAC,SAAS,CACnB,eAAe,EACf,kBAAkB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CACzD;YACD,EAAE,CAAC,QAAQ,CAAC,SAAS,CACnB,iBAAiB,EACjB,kBAAkB,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAC3D;YACD,EAAE,CAAC,QAAQ,CAAC,SAAS,CACnB,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CACH;SACF,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CACH,CAAC;AACJ,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE;IAC9B,OAAO,CAAC,IAAI,CAAC,oCAAoC,iBAAiB,KAAK,CAAC,CAAC;IAEzE,MAAM,iBAAiB,CAAC,MAAM,wBAAwB,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAA,CAAC,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"update-tries.js","sourceRoot":"","sources":["../../src/scripts/update-tries.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnE,MAAM,iBAAiB,GAAG,CAAO,EAC/B,mBAAmB,EACnB,qBAAqB,GAC8B,EAAE,EAAE;IACvD,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAEnE,MAAM,OAAO,CAAC,GAAG,CACf,iBAAiB,CAAC,GAAG,CAAC,CAAO,eAAe,EAAE,EAAE;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAClC,SAAS,EACT,eAAe,EACf,UAAU,CACX,CAAC;QACF,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CACpC,SAAS,EACT,eAAe,EACf,YAAY,CACb,CAAC;QACF,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CACrC,SAAS,EACT,eAAe,EACf,WAAW,CACZ,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,WAAW,eAAe,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,WAAW,iBAAiB,KAAK,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,WAAW,kBAAkB,KAAK,CAAC,CAAC;QAEjD,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,EAAE,CAAC,QAAQ,CAAC,SAAS,CACnB,eAAe,EACf,kBAAkB,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CACzD;YACD,EAAE,CAAC,QAAQ,CAAC,SAAS,CACnB,iBAAiB,EACjB,kBAAkB,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,GAAG,CAC3D;YACD,EAAE,CAAC,QAAQ,CAAC,SAAS,CACnB,kBAAkB,EAClB,IAAI,CAAC,SAAS,CAAC;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB,CAAC,CACH;SACF,CAAC,CAAC;IACL,CAAC,CAAA,CAAC,CACH,CAAC;AACJ,CAAC,CAAA,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,GAAS,EAAE;IAC9B,OAAO,CAAC,IAAI,CAAC,oCAAoC,iBAAiB,KAAK,CAAC,CAAC;IAEzE,MAAM,iBAAiB,CAAC,MAAM,wBAAwB,EAAE,CAAC,CAAC;AAC5D,CAAC,CAAA,CAAC,EAAE,CAAC","sourcesContent":["import * as path from \"path\";\nimport * as url from \"url\";\nimport * as fs from \"fs\";\nimport { fetchBuildSerializeTries } from \"../update-tries.js\";\nimport { PUBLIC_SUFFIX_URL } from \"../config.js\";\nimport { Await } from \"../type-util.js\";\n\nconst __dirname = path.dirname(url.fileURLToPath(import.meta.url));\n\nconst writeTriesToFiles = async ({\n serializedIcannTrie,\n serializedPrivateTrie,\n}: Await<ReturnType<typeof fetchBuildSerializeTries>>) => {\n const indexOfScriptArg = process.argv.lastIndexOf(\"--\");\n const targetDirectories = process.argv.slice(indexOfScriptArg + 1);\n\n await Promise.all(\n targetDirectories.map(async (targetDirectory) => {\n const pathToIcannTrie = path.resolve(\n __dirname,\n targetDirectory,\n \"icann.js\"\n );\n const pathToPrivateTrie = path.resolve(\n __dirname,\n targetDirectory,\n \"private.js\"\n );\n const pathToTrieInfoFile = path.resolve(\n __dirname,\n targetDirectory,\n \"info.json\"\n );\n\n console.warn(`Writing ${pathToIcannTrie}...`);\n console.warn(`Writing ${pathToPrivateTrie}...`);\n console.warn(`Writing ${pathToTrieInfoFile}...`);\n\n await Promise.all([\n fs.promises.writeFile(\n pathToIcannTrie,\n `export default ${JSON.stringify(serializedIcannTrie)};`\n ),\n fs.promises.writeFile(\n pathToPrivateTrie,\n `export default ${JSON.stringify(serializedPrivateTrie)};`\n ),\n fs.promises.writeFile(\n pathToTrieInfoFile,\n JSON.stringify({\n updatedAt: new Date(),\n })\n ),\n ]);\n })\n );\n};\n\nexport const done = (async () => {\n console.warn(`Fetching public suffix list from ${PUBLIC_SUFFIX_URL}...`);\n\n await writeTriesToFiles(await fetchBuildSerializeTries());\n})();\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialized-tries.js","sourceRoot":"","sources":["../src/serialized-tries.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"serialized-tries.js","sourceRoot":"","sources":["../src/serialized-tries.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,8BAA8B,CAAC;AACrD,OAAO,WAAW,MAAM,gCAAgC,CAAC;AAEzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC","sourcesContent":["import icannTrie from \"../serialized-tries/icann.js\";\nimport privateTrie from \"../serialized-tries/private.js\";\n\nexport { icannTrie, privateTrie };\n"]}
|
package/build/smoke-test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoke-test.js","sourceRoot":"","sources":["../src/smoke-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAElE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,eAAe,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;QAC9C,QAAQ,EAAE,iBAAiB;QAC3B,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;QACjC,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,CAAC,KAAK,CAAC;QACxB,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,CAAC,KAAK,CAAC;SACzB;KACF,CAAC,CAAC;IACH,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE;QAChD,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;QACtC,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAC7B,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;SAC9B;KACF,CAAC,CAAC;IACH,eAAe,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE;QACzD,QAAQ,EAAE,4BAA4B;QACtC,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;QAC/C,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;QACtC,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;YAC9B,MAAM,EAAE,YAAY;YACpB,eAAe,EAAE,CAAC,KAAK,CAAC;SACzB;KACF,CAAC,CAAC;IACH,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE;QACpD,QAAQ,EAAE,+BAA+B;QACzC,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC;QAClD,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,aAAa;QACrB,eAAe,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;QACrC,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,aAAa;YACrB,eAAe,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;SACtC;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"smoke-test.js","sourceRoot":"","sources":["../src/smoke-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAElE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,eAAe,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE;QAC9C,QAAQ,EAAE,iBAAiB;QAC3B,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;QACjC,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,CAAC,KAAK,CAAC;QACxB,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,CAAC,KAAK,CAAC;SACzB;KACF,CAAC,CAAC;IACH,eAAe,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE;QAChD,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;QACtC,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAC7B,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,SAAS;YACjB,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;SAC9B;KACF,CAAC,CAAC;IACH,eAAe,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE;QACzD,QAAQ,EAAE,4BAA4B;QACtC,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC;QAC/C,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,CAAC,YAAY,EAAE,KAAK,CAAC;QACtC,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;YAC9B,MAAM,EAAE,YAAY;YACpB,eAAe,EAAE,CAAC,KAAK,CAAC;SACzB;KACF,CAAC,CAAC;IACH,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE;QACpD,QAAQ,EAAE,+BAA+B;QACzC,IAAI,EAAE,eAAe,CAAC,MAAM;QAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,CAAC;QAClD,UAAU,EAAE,CAAC,KAAK,CAAC;QACnB,MAAM,EAAE,aAAa;QACrB,eAAe,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;QACrC,KAAK,EAAE;YACL,UAAU,EAAE,CAAC,KAAK,CAAC;YACnB,MAAM,EAAE,aAAa;YACrB,eAAe,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;SACtC;KACF,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { deepStrictEqual } from \"assert\";\nimport { fromUrl, parseDomain, ParseResultType } from \"./main.js\";\n\nexport const runSmokeTest = () => {\n deepStrictEqual(parseDomain(\"www.example.com\"), {\n hostname: \"www.example.com\",\n type: ParseResultType.Listed,\n labels: [\"www\", \"example\", \"com\"],\n subDomains: [\"www\"],\n domain: \"example\",\n topLevelDomains: [\"com\"],\n icann: {\n subDomains: [\"www\"],\n domain: \"example\",\n topLevelDomains: [\"com\"],\n },\n });\n deepStrictEqual(parseDomain(\"www.example.co.uk\"), {\n hostname: \"www.example.co.uk\",\n type: ParseResultType.Listed,\n labels: [\"www\", \"example\", \"co\", \"uk\"],\n subDomains: [\"www\"],\n domain: \"example\",\n topLevelDomains: [\"co\", \"uk\"],\n icann: {\n subDomains: [\"www\"],\n domain: \"example\",\n topLevelDomains: [\"co\", \"uk\"],\n },\n });\n deepStrictEqual(parseDomain(\"www.example.cloudfront.net\"), {\n hostname: \"www.example.cloudfront.net\",\n type: ParseResultType.Listed,\n labels: [\"www\", \"example\", \"cloudfront\", \"net\"],\n subDomains: [\"www\"],\n domain: \"example\",\n topLevelDomains: [\"cloudfront\", \"net\"],\n icann: {\n subDomains: [\"www\", \"example\"],\n domain: \"cloudfront\",\n topLevelDomains: [\"net\"],\n },\n });\n deepStrictEqual(parseDomain(fromUrl(\"www.食狮.公司.cn\")), {\n hostname: \"www.xn--85x722f.xn--55qx5d.cn\",\n type: ParseResultType.Listed,\n labels: [\"www\", \"xn--85x722f\", \"xn--55qx5d\", \"cn\"],\n subDomains: [\"www\"],\n domain: \"xn--85x722f\",\n topLevelDomains: [\"xn--55qx5d\", \"cn\"],\n icann: {\n subDomains: [\"www\"],\n domain: \"xn--85x722f\",\n topLevelDomains: [\"xn--55qx5d\", \"cn\"],\n },\n });\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"characters.js","sourceRoot":"","sources":["../../src/trie/characters.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,eAAe;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,aAAa;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,iBAAiB;AAC1C,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,kCAAkC;AAC5D,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,iCAAiC;AAC9D,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,iCAAiC"}
|
|
1
|
+
{"version":3,"file":"characters.js","sourceRoot":"","sources":["../../src/trie/characters.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,MAAM,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,eAAe;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,aAAa;AACtC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,iBAAiB;AAC1C,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,kCAAkC;AAC5D,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,iCAAiC;AAC9D,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,iCAAiC","sourcesContent":["// UP, SAME, DOWN, RESET should not be special regex characters in a character class.\nexport const UP = \"<\"; // one level up\nexport const SAME = \",\"; // same level\nexport const DOWN = \">\"; // one level down\nexport const RESET = \"|\"; // reset level index and start new\nexport const WILDCARD = \"*\"; // as defined by publicsuffix.org\nexport const EXCEPTION = \"!\"; // as defined by publicsuffix.org\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-trie.js","sourceRoot":"","sources":["../../src/trie/create-trie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAY,MAAM,YAAY,CAAC;AAExE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAmB,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,IAAI,IAAI,GAAa,IAAI,CAAC;QAE1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7C,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACtC;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"create-trie.js","sourceRoot":"","sources":["../../src/trie/create-trie.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAY,MAAM,YAAY,CAAC;AAExE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAmB,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;QACvB,IAAI,IAAI,GAAa,IAAI,CAAC;QAE1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7C,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SACtC;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","sourcesContent":["import { createRootNode, createOrGetChild, TrieNode } from \"./nodes.js\";\n\nexport const createTrieFromList = (list: Array<string>) => {\n const root = createRootNode();\n\n for (const rule of list) {\n let node: TrieNode = root;\n\n for (const label of rule.split(\".\").reverse()) {\n node = createOrGetChild(node, label);\n }\n }\n\n return root;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"look-up.js","sourceRoot":"","sources":["../../src/trie/look-up.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAI9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAoB,EAAE,IAAc,EAAE,EAAE;IACvE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IACrC,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAG,CAAC;QACnC,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE;gBAC5D,MAAM;aACP;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAa,CAAC;SAC3D;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE;gBAC/C,MAAM;aACP;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAa,CAAC;SACtD;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrB;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"look-up.js","sourceRoot":"","sources":["../../src/trie/look-up.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAI9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAoB,EAAE,IAAc,EAAE,EAAE;IACvE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;IACrC,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,OAAO,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;QACjC,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAG,CAAC;QACnC,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QAE3C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,GAAG,cAAc,CAAC,EAAE;gBAC5D,MAAM;aACP;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAa,CAAC;SAC3D;aAAM;YACL,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,KAAK,EAAE;gBAC/C,MAAM;aACP;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAa,CAAC;SACtD;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACrB;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC","sourcesContent":["import * as characters from \"./characters.js\";\nimport { TrieNode } from \"./nodes.js\";\nimport { Label } from \"../parse-domain.js\";\n\nexport const lookUpTldsInTrie = (labels: Array<Label>, trie: TrieNode) => {\n const labelsToCheck = labels.slice();\n const tlds: Array<Label> = [];\n let node = trie;\n\n while (labelsToCheck.length !== 0) {\n const label = labelsToCheck.pop()!;\n const labelLowerCase = label.toLowerCase();\n\n if (node.children.has(characters.WILDCARD)) {\n if (node.children.has(characters.EXCEPTION + labelLowerCase)) {\n break;\n }\n node = node.children.get(characters.WILDCARD) as TrieNode;\n } else {\n if (node.children.has(labelLowerCase) === false) {\n break;\n }\n node = node.children.get(labelLowerCase) as TrieNode;\n }\n\n tlds.unshift(label);\n }\n\n return tlds;\n};\n"]}
|
package/build/trie/nodes.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export declare const NODE_TYPE_ROOT: unique symbol;
|
|
2
2
|
export declare const NODE_TYPE_CHILD: unique symbol;
|
|
3
|
-
export
|
|
3
|
+
export type TrieRootNode = {
|
|
4
4
|
type: typeof NODE_TYPE_ROOT;
|
|
5
5
|
children: Map<string, TrieChildNode>;
|
|
6
6
|
};
|
|
7
|
-
export
|
|
7
|
+
export type TrieChildNode = {
|
|
8
8
|
type: typeof NODE_TYPE_CHILD;
|
|
9
9
|
label: string;
|
|
10
10
|
children: Map<string, TrieChildNode>;
|
|
11
11
|
parent: TrieNode;
|
|
12
12
|
};
|
|
13
|
-
export
|
|
13
|
+
export type TrieNode = TrieRootNode | TrieChildNode;
|
|
14
14
|
export declare const createRootNode: () => TrieRootNode;
|
|
15
15
|
export declare const createOrGetChild: (parent: TrieNode, label: string) => TrieChildNode;
|
package/build/trie/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/trie/nodes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAe/C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAiB,EAAE;IAC/C,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAgB,EAAE,KAAa,EAAE,EAAE;IAClE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,KAAK,GAAG;YACN,IAAI,EAAE,eAAe;YACrB,KAAK;YACL,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,MAAM;SACP,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACnC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/trie/nodes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AAe/C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAiB,EAAE;IAC/C,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,IAAI,GAAG,EAAE;KACpB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAgB,EAAE,KAAa,EAAE,EAAE;IAClE,IAAI,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEvC,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,KAAK,GAAG;YACN,IAAI,EAAE,eAAe;YACrB,KAAK;YACL,QAAQ,EAAE,IAAI,GAAG,EAAE;YACnB,MAAM;SACP,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACnC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC","sourcesContent":["export const NODE_TYPE_ROOT = Symbol(\"ROOT\");\nexport const NODE_TYPE_CHILD = Symbol(\"CHILD\");\n\nexport type TrieRootNode = {\n type: typeof NODE_TYPE_ROOT;\n children: Map<string, TrieChildNode>;\n};\nexport type TrieChildNode = {\n type: typeof NODE_TYPE_CHILD;\n label: string;\n children: Map<string, TrieChildNode>;\n parent: TrieNode;\n};\n\nexport type TrieNode = TrieRootNode | TrieChildNode;\n\nexport const createRootNode = (): TrieRootNode => {\n return {\n type: NODE_TYPE_ROOT,\n children: new Map(),\n };\n};\n\nexport const createOrGetChild = (parent: TrieNode, label: string) => {\n let child = parent.children.get(label);\n\n if (child === undefined) {\n child = {\n type: NODE_TYPE_CHILD,\n label,\n children: new Map(),\n parent,\n };\n parent.children.set(label, child);\n }\n\n return child;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parse-trie.js","sourceRoot":"","sources":["../../src/trie/parse-trie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,gBAAgB,EAEhB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,cAAsB,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,UAAU,GAAa,QAAQ,CAAC;IACpC,gEAAgE;IAChE,6EAA6E;IAC7E,IAAI,IAAI,GAAG,QAAoB,CAAC;IAEhC,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,EAAE,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEtC,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS,EAAE,CAAC;gBACZ,SAAS;aACV;YACD,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS,EAAE,CAAC;gBACZ,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;aACV;YACD,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;gBACrB,SAAS,EAAE,CAAC;gBACZ,UAAU,GAAG,QAAQ,CAAC;gBACtB,SAAS;aACV;YACD,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;gBAClB,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE;oBACtC,MAAM,IAAI,KAAK,CACb,wCAAwC,CAAC,qDAAqD,CAC/F,CAAC;iBACH;gBACD,SAAS,EAAE,CAAC;gBACZ,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC/B,SAAS;aACV;SACF;QACD,MAAM,IAAI,IAAI,CAAC;KAChB;IAED,IAAI,MAAM,KAAK,EAAE,EAAE;QACjB,SAAS,EAAE,CAAC;KACb;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"parse-trie.js","sourceRoot":"","sources":["../../src/trie/parse-trie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACL,cAAc,EACd,gBAAgB,EAEhB,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,cAAsB,EAAE,EAAE;IAClD,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,UAAU,GAAa,QAAQ,CAAC;IACpC,gEAAgE;IAChE,6EAA6E;IAC7E,IAAI,IAAI,GAAG,QAAoB,CAAC;IAEhC,MAAM,SAAS,GAAG,GAAG,EAAE;QACrB,IAAI,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,GAAG,EAAE,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAEtC,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS,EAAE,CAAC;gBACZ,SAAS;aACV;YACD,KAAK,UAAU,CAAC,IAAI,CAAC,CAAC;gBACpB,SAAS,EAAE,CAAC;gBACZ,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;aACV;YACD,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;gBACrB,SAAS,EAAE,CAAC;gBACZ,UAAU,GAAG,QAAQ,CAAC;gBACtB,SAAS;aACV;YACD,KAAK,UAAU,CAAC,EAAE,CAAC,CAAC;gBAClB,IAAI,UAAU,CAAC,IAAI,KAAK,cAAc,EAAE;oBACtC,MAAM,IAAI,KAAK,CACb,wCAAwC,CAAC,qDAAqD,CAC/F,CAAC;iBACH;gBACD,SAAS,EAAE,CAAC;gBACZ,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC/B,SAAS;aACV;SACF;QACD,MAAM,IAAI,IAAI,CAAC;KAChB;IAED,IAAI,MAAM,KAAK,EAAE,EAAE;QACjB,SAAS,EAAE,CAAC;KACb;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC","sourcesContent":["import * as characters from \"./characters.js\";\nimport {\n createRootNode,\n createOrGetChild,\n TrieNode,\n NODE_TYPE_ROOT,\n} from \"./nodes.js\";\n\nexport const parseTrie = (serializedTrie: string) => {\n const rootNode = createRootNode();\n let domain = \"\";\n let parentNode: TrieNode = rootNode;\n // Type assertion necessary here due to a TypeScript unsoundness\n // https://github.com/microsoft/TypeScript/issues/9998#issuecomment-235963457\n let node = rootNode as TrieNode;\n\n const addDomain = () => {\n node = createOrGetChild(parentNode, domain);\n domain = \"\";\n };\n\n for (let i = 0; i < serializedTrie.length; i++) {\n const char = serializedTrie.charAt(i);\n\n switch (char) {\n case characters.SAME: {\n addDomain();\n continue;\n }\n case characters.DOWN: {\n addDomain();\n parentNode = node;\n continue;\n }\n case characters.RESET: {\n addDomain();\n parentNode = rootNode;\n continue;\n }\n case characters.UP: {\n if (parentNode.type === NODE_TYPE_ROOT) {\n throw new Error(\n `Error in serialized trie at position ${i}: Cannot go up, current parent node is already root`\n );\n }\n addDomain();\n parentNode = parentNode.parent;\n continue;\n }\n }\n domain += char;\n }\n\n if (domain !== \"\") {\n addDomain();\n }\n\n return rootNode;\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialize-trie.js","sourceRoot":"","sources":["../../src/trie/serialize-trie.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAkB,EAAU,EAAE;IAkB1D,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,MAAM,KAAK,GAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,IAAI,OAA8B,CAAC;IAEnC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,EAAE;QAC9C,IAAI,OAAO,KAAK,EAAE,EAAE;YAClB,UAAU,IAAI,EAAE,CAAC;YACjB,SAAS;SACV;QACD,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,UAAU,IAAI,IAAI,CAAC;aACpB;YACD,SAAS;SACV;QACD,UAAU,IAAI,IAAI,CAAC;QAEnB,MAAM,QAAQ,GAAqB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnB;QACD,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;KAC5B;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"serialize-trie.js","sourceRoot":"","sources":["../../src/trie/serialize-trie.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAkB,EAAU,EAAE;IAkB1D,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,MAAM,KAAK,GAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACnE,IAAI,OAA8B,CAAC;IAEnC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,SAAS,EAAE;QAC9C,IAAI,OAAO,KAAK,EAAE,EAAE;YAClB,UAAU,IAAI,EAAE,CAAC;YACjB,SAAS;SACV;QACD,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC;QAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE;YAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvC,UAAU,IAAI,IAAI,CAAC;aACpB;YACD,SAAS;SACV;QACD,UAAU,IAAI,IAAI,CAAC;QAEnB,MAAM,QAAQ,GAAqB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnB;QACD,KAAK,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;KAC5B;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC","sourcesContent":["import { TrieRootNode, TrieChildNode } from \"./nodes.js\";\nimport { DOWN, UP, SAME } from \"./characters.js\";\n\nexport const serializeTrie = (root: TrieRootNode): string => {\n /*\n\tA trie might look like this:\n\n\t root\n\t |\n\t +-------+-----+-----+-----------+\n\t | | | |\n\t com uk jp موقع\n\t | |\n\t +--+--+ +--+--+\n\t | | | |\n\t co gov 静岡 岐阜\n\n\tAnd the textual representation of the trie looks like this:\n\tcom|uk>co,gov|jp>静岡,岐阜|موقع\n\t*/\n type QueueItem = TrieChildNode | typeof UP;\n let serialized = \"\";\n const queue: Array<QueueItem> = Array.from(root.children.values());\n let current: QueueItem | undefined;\n\n while ((current = queue.shift()) !== undefined) {\n if (current === UP) {\n serialized += UP;\n continue;\n }\n serialized += current.label;\n if (current.children.size === 0) {\n if (queue.length > 0 && queue[0] !== UP) {\n serialized += SAME;\n }\n continue;\n }\n serialized += DOWN;\n\n const newItems: Array<QueueItem> = Array.from(current.children.values());\n\n if (queue.length > 0) {\n newItems.push(UP);\n }\n queue.unshift(...newItems);\n }\n\n return serialized;\n};\n"]}
|
package/build/type-util.d.ts
CHANGED
package/build/type-util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-util.js","sourceRoot":"","sources":["../src/type-util.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"type-util.js","sourceRoot":"","sources":["../src/type-util.ts"],"names":[],"mappings":"","sourcesContent":["export type Await<T> = T extends {\n then: (onFulfilled?: (value: infer U) => unknown) => unknown;\n}\n ? U\n : T;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-tries.js","sourceRoot":"","sources":["../src/update-tries.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAS,EAAE;IACjD,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,mBAAmB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,qBAAqB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAEzD,OAAO;QACL,mBAAmB;QACnB,qBAAqB;KACtB,CAAC;AACJ,CAAC,CAAA,CAAC"}
|
|
1
|
+
{"version":3,"file":"update-tries.js","sourceRoot":"","sources":["../src/update-tries.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAS,EAAE;IACjD,MAAM,GAAG,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC7B,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,mBAAmB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,qBAAqB,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAEzD,OAAO;QACL,mBAAmB;QACnB,qBAAqB;KACtB,CAAC;AACJ,CAAC,CAAA,CAAC","sourcesContent":["import { fetchPsl } from \"./psl/fetch-psl.js\";\nimport { buildTries } from \"./psl/build-tries.js\";\nimport { serializeTrie } from \"./trie/serialize-trie.js\";\n\nexport const fetchBuildSerializeTries = async () => {\n const psl = await fetchPsl();\n const { icannTrie, privateTrie } = buildTries(psl);\n const serializedIcannTrie = serializeTrie(icannTrie);\n const serializedPrivateTrie = serializeTrie(privateTrie);\n\n return {\n serializedIcannTrie,\n serializedPrivateTrie,\n };\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "parse-domain",
|
|
3
|
-
"version": "8.0.
|
|
3
|
+
"version": "8.0.1",
|
|
4
4
|
"description": "Splits a hostname into subdomains, domain and (effective) top-level domains",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"domain",
|
|
@@ -56,30 +56,26 @@
|
|
|
56
56
|
"*.{json,css,md,yml,yaml}": "prettier --write"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"is-ip": "^
|
|
60
|
-
"node-fetch": "^3.2
|
|
59
|
+
"is-ip": "^5.0.1",
|
|
60
|
+
"node-fetch": "^3.3.2"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
|
-
"@types/jest": "^
|
|
64
|
-
"@types/node": "^
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"@typescript-eslint/parser": "^5.30.0",
|
|
68
|
-
"eslint": "^8.18.0",
|
|
69
|
-
"eslint-config-peerigon": "^33.3.0",
|
|
63
|
+
"@types/jest": "^29.5.6",
|
|
64
|
+
"@types/node": "^20.8.9",
|
|
65
|
+
"eslint": "^8.52.0",
|
|
66
|
+
"eslint-config-peerigon": "^36.0.0",
|
|
70
67
|
"eslint-plugin-no-null": "^1.0.2",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
"nock": "^13.2.7",
|
|
68
|
+
"husky": "^8.0.3",
|
|
69
|
+
"jest": "^29.7.0",
|
|
70
|
+
"lint-staged": "^15.0.2",
|
|
71
|
+
"nock": "^13.3.6",
|
|
76
72
|
"npm-run-all": "^4.1.5",
|
|
77
|
-
"pin-github-action": "^1.
|
|
78
|
-
"prettier": "^
|
|
79
|
-
"rimraf": "^
|
|
80
|
-
"ts-jest": "^
|
|
81
|
-
"ts-node": "^10.
|
|
82
|
-
"typescript": "^
|
|
73
|
+
"pin-github-action": "^1.8.0",
|
|
74
|
+
"prettier": "^3.0.3",
|
|
75
|
+
"rimraf": "^5.0.5",
|
|
76
|
+
"ts-jest": "^29.1.1",
|
|
77
|
+
"ts-node": "^10.9.1",
|
|
78
|
+
"typescript": "^5.2.2",
|
|
83
79
|
"updtr": "^4.0.0"
|
|
84
80
|
}
|
|
85
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"updatedAt":"2023-10-
|
|
1
|
+
{"updatedAt":"2023-10-27T16:22:53.142Z"}
|