step-node-agent 3.26.4 → 3.26.5-CustomizedJv2
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/node_modules/{has-property-descriptors → call-bind-apply-helpers}/.github/FUNDING.yml +1 -1
- package/node_modules/call-bind-apply-helpers/CHANGELOG.md +23 -0
- package/node_modules/{call-bind → call-bind-apply-helpers}/LICENSE +1 -1
- package/node_modules/call-bind-apply-helpers/README.md +62 -0
- package/node_modules/call-bind-apply-helpers/actualApply.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/actualApply.js +10 -0
- package/node_modules/call-bind-apply-helpers/applyBind.d.ts +19 -0
- package/node_modules/call-bind-apply-helpers/applyBind.js +10 -0
- package/node_modules/call-bind-apply-helpers/functionApply.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/functionApply.js +4 -0
- package/node_modules/call-bind-apply-helpers/functionCall.d.ts +1 -0
- package/node_modules/call-bind-apply-helpers/functionCall.js +4 -0
- package/node_modules/call-bind-apply-helpers/index.d.ts +46 -0
- package/node_modules/call-bind-apply-helpers/index.js +15 -0
- package/node_modules/call-bind-apply-helpers/package.json +85 -0
- package/node_modules/call-bind-apply-helpers/reflectApply.d.ts +3 -0
- package/node_modules/call-bind-apply-helpers/reflectApply.js +4 -0
- package/node_modules/call-bind-apply-helpers/test/index.js +63 -0
- package/node_modules/call-bind-apply-helpers/tsconfig.json +9 -0
- package/node_modules/call-bound/.eslintrc +13 -0
- package/node_modules/{call-bind → call-bound}/.github/FUNDING.yml +1 -1
- package/node_modules/call-bound/CHANGELOG.md +34 -0
- package/node_modules/{has-property-descriptors → call-bound}/LICENSE +1 -1
- package/node_modules/call-bound/README.md +53 -0
- package/node_modules/call-bound/index.d.ts +13 -0
- package/node_modules/call-bound/index.js +18 -0
- package/node_modules/{call-bind → call-bound}/package.json +27 -23
- package/node_modules/{call-bind/test/callBound.js → call-bound/test/index.js} +1 -1
- package/node_modules/{define-data-property → dunder-proto}/.github/FUNDING.yml +1 -1
- package/node_modules/dunder-proto/CHANGELOG.md +24 -0
- package/node_modules/dunder-proto/LICENSE +21 -0
- package/node_modules/dunder-proto/README.md +54 -0
- package/node_modules/dunder-proto/get.d.ts +5 -0
- package/node_modules/dunder-proto/get.js +30 -0
- package/node_modules/{has-proto → dunder-proto}/package.json +34 -36
- package/node_modules/dunder-proto/set.d.ts +5 -0
- package/node_modules/dunder-proto/set.js +35 -0
- package/node_modules/dunder-proto/test/get.js +34 -0
- package/node_modules/dunder-proto/test/index.js +4 -0
- package/node_modules/dunder-proto/test/set.js +50 -0
- package/node_modules/dunder-proto/tsconfig.json +9 -0
- package/node_modules/es-define-property/CHANGELOG.md +14 -0
- package/node_modules/es-define-property/index.js +1 -3
- package/node_modules/es-define-property/package.json +12 -12
- package/node_modules/es-define-property/test/index.js +1 -0
- package/node_modules/es-define-property/tsconfig.json +2 -42
- package/node_modules/es-object-atoms/.eslintrc +16 -0
- package/node_modules/{set-function-length → es-object-atoms}/.github/FUNDING.yml +1 -1
- package/node_modules/es-object-atoms/CHANGELOG.md +37 -0
- package/node_modules/{define-data-property → es-object-atoms}/LICENSE +1 -1
- package/node_modules/es-object-atoms/README.md +63 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.d.ts +3 -0
- package/node_modules/es-object-atoms/RequireObjectCoercible.js +11 -0
- package/node_modules/es-object-atoms/ToObject.d.ts +7 -0
- package/node_modules/es-object-atoms/ToObject.js +10 -0
- package/node_modules/es-object-atoms/index.d.ts +3 -0
- package/node_modules/es-object-atoms/index.js +4 -0
- package/node_modules/es-object-atoms/isObject.d.ts +3 -0
- package/node_modules/es-object-atoms/isObject.js +6 -0
- package/node_modules/es-object-atoms/package.json +80 -0
- package/node_modules/es-object-atoms/test/index.js +38 -0
- package/node_modules/es-object-atoms/tsconfig.json +6 -0
- package/node_modules/express/History.md +10 -1
- package/node_modules/express/package.json +6 -2
- package/node_modules/get-intrinsic/CHANGELOG.md +35 -0
- package/node_modules/get-intrinsic/index.js +39 -21
- package/node_modules/get-intrinsic/package.json +23 -19
- package/node_modules/get-intrinsic/test/GetIntrinsic.js +2 -2
- package/node_modules/get-proto/.eslintrc +10 -0
- package/node_modules/{has-proto → get-proto}/.github/FUNDING.yml +1 -1
- package/node_modules/get-proto/.nycrc +9 -0
- package/node_modules/get-proto/CHANGELOG.md +21 -0
- package/node_modules/{has-proto → get-proto}/LICENSE +1 -1
- package/node_modules/get-proto/Object.getPrototypeOf.d.ts +5 -0
- package/node_modules/get-proto/Object.getPrototypeOf.js +6 -0
- package/node_modules/get-proto/README.md +50 -0
- package/node_modules/get-proto/Reflect.getPrototypeOf.d.ts +3 -0
- package/node_modules/get-proto/Reflect.getPrototypeOf.js +4 -0
- package/node_modules/get-proto/index.d.ts +5 -0
- package/node_modules/get-proto/index.js +27 -0
- package/node_modules/{has-property-descriptors → get-proto}/package.json +35 -31
- package/node_modules/get-proto/test/index.js +68 -0
- package/node_modules/get-proto/tsconfig.json +9 -0
- package/node_modules/gopd/CHANGELOG.md +20 -0
- package/node_modules/gopd/gOPD.d.ts +1 -0
- package/node_modules/gopd/gOPD.js +4 -0
- package/node_modules/gopd/index.d.ts +5 -0
- package/node_modules/gopd/index.js +2 -3
- package/node_modules/gopd/package.json +16 -10
- package/node_modules/gopd/test/index.js +2 -1
- package/node_modules/gopd/tsconfig.json +9 -0
- package/node_modules/has-symbols/CHANGELOG.md +16 -0
- package/node_modules/has-symbols/index.d.ts +3 -0
- package/node_modules/has-symbols/index.js +1 -0
- package/node_modules/has-symbols/package.json +19 -9
- package/node_modules/has-symbols/shams.d.ts +3 -0
- package/node_modules/has-symbols/shams.js +5 -2
- package/node_modules/has-symbols/test/shams/core-js.js +1 -0
- package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +1 -0
- package/node_modules/has-symbols/test/tests.js +4 -2
- package/node_modules/has-symbols/tsconfig.json +10 -0
- package/node_modules/is-core-module/CHANGELOG.md +13 -0
- package/node_modules/is-core-module/core.json +1 -0
- package/node_modules/is-core-module/package.json +3 -3
- package/node_modules/is-core-module/test/index.js +3 -0
- package/node_modules/math-intrinsics/.eslintrc +16 -0
- package/node_modules/math-intrinsics/.github/FUNDING.yml +12 -0
- package/node_modules/math-intrinsics/CHANGELOG.md +24 -0
- package/node_modules/math-intrinsics/LICENSE +21 -0
- package/node_modules/math-intrinsics/README.md +50 -0
- package/node_modules/math-intrinsics/abs.d.ts +1 -0
- package/node_modules/math-intrinsics/abs.js +4 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxArrayLength.js +4 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxSafeInteger.js +5 -0
- package/node_modules/math-intrinsics/constants/maxValue.d.ts +3 -0
- package/node_modules/math-intrinsics/constants/maxValue.js +5 -0
- package/node_modules/math-intrinsics/floor.d.ts +1 -0
- package/node_modules/math-intrinsics/floor.js +4 -0
- package/node_modules/math-intrinsics/isFinite.d.ts +3 -0
- package/node_modules/math-intrinsics/isFinite.js +12 -0
- package/node_modules/math-intrinsics/isInteger.d.ts +3 -0
- package/node_modules/math-intrinsics/isInteger.js +16 -0
- package/node_modules/math-intrinsics/isNaN.d.ts +1 -0
- package/node_modules/math-intrinsics/isNaN.js +6 -0
- package/node_modules/math-intrinsics/isNegativeZero.d.ts +3 -0
- package/node_modules/math-intrinsics/isNegativeZero.js +6 -0
- package/node_modules/math-intrinsics/max.d.ts +1 -0
- package/node_modules/math-intrinsics/max.js +4 -0
- package/node_modules/math-intrinsics/min.d.ts +1 -0
- package/node_modules/math-intrinsics/min.js +4 -0
- package/node_modules/math-intrinsics/mod.d.ts +3 -0
- package/node_modules/math-intrinsics/mod.js +9 -0
- package/node_modules/math-intrinsics/package.json +86 -0
- package/node_modules/math-intrinsics/pow.d.ts +1 -0
- package/node_modules/math-intrinsics/pow.js +4 -0
- package/node_modules/math-intrinsics/round.d.ts +1 -0
- package/node_modules/math-intrinsics/round.js +4 -0
- package/node_modules/math-intrinsics/sign.d.ts +3 -0
- package/node_modules/math-intrinsics/sign.js +11 -0
- package/node_modules/math-intrinsics/test/index.js +192 -0
- package/node_modules/math-intrinsics/tsconfig.json +3 -0
- package/node_modules/object-inspect/CHANGELOG.md +8 -0
- package/node_modules/object-inspect/index.js +10 -7
- package/node_modules/object-inspect/package.json +5 -4
- package/node_modules/object-inspect/test/values.js +50 -0
- package/node_modules/path-to-regexp/index.js +13 -3
- package/node_modules/path-to-regexp/package.json +1 -1
- package/node_modules/psl/README.md +7 -14
- package/node_modules/psl/SECURITY.md +13 -0
- package/node_modules/psl/data/rules.js +536 -529
- package/node_modules/psl/dist/psl.cjs +1 -1
- package/node_modules/psl/dist/psl.mjs +726 -715
- package/node_modules/psl/dist/psl.umd.cjs +1 -1
- package/node_modules/psl/index.js +52 -74
- package/node_modules/psl/package.json +10 -7
- package/node_modules/resolve/lib/core.json +4 -0
- package/node_modules/resolve/package.json +12 -9
- package/node_modules/side-channel/.eslintrc +1 -0
- package/node_modules/side-channel/CHANGELOG.md +15 -0
- package/node_modules/side-channel/README.md +60 -1
- package/node_modules/side-channel/index.d.ts +9 -22
- package/node_modules/side-channel/index.js +20 -106
- package/node_modules/side-channel/package.json +20 -19
- package/node_modules/side-channel/test/index.js +76 -55
- package/node_modules/side-channel/tsconfig.json +2 -43
- package/node_modules/side-channel-list/.editorconfig +9 -0
- package/node_modules/side-channel-list/.eslintrc +11 -0
- package/node_modules/side-channel-list/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-list/CHANGELOG.md +15 -0
- package/node_modules/side-channel-list/LICENSE +21 -0
- package/node_modules/side-channel-list/README.md +62 -0
- package/node_modules/side-channel-list/index.d.ts +13 -0
- package/node_modules/side-channel-list/index.js +113 -0
- package/node_modules/side-channel-list/list.d.ts +14 -0
- package/node_modules/side-channel-list/package.json +77 -0
- package/node_modules/side-channel-list/test/index.js +104 -0
- package/node_modules/side-channel-list/tsconfig.json +9 -0
- package/node_modules/side-channel-map/.editorconfig +9 -0
- package/node_modules/side-channel-map/.eslintrc +11 -0
- package/node_modules/side-channel-map/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-map/.nycrc +13 -0
- package/node_modules/side-channel-map/CHANGELOG.md +22 -0
- package/node_modules/side-channel-map/LICENSE +21 -0
- package/node_modules/side-channel-map/README.md +62 -0
- package/node_modules/side-channel-map/index.d.ts +15 -0
- package/node_modules/side-channel-map/index.js +68 -0
- package/node_modules/side-channel-map/package.json +80 -0
- package/node_modules/side-channel-map/test/index.js +114 -0
- package/node_modules/side-channel-map/tsconfig.json +9 -0
- package/node_modules/side-channel-weakmap/.editorconfig +9 -0
- package/node_modules/side-channel-weakmap/.eslintrc +12 -0
- package/node_modules/side-channel-weakmap/.github/FUNDING.yml +12 -0
- package/node_modules/side-channel-weakmap/.nycrc +13 -0
- package/node_modules/side-channel-weakmap/CHANGELOG.md +28 -0
- package/node_modules/side-channel-weakmap/LICENSE +21 -0
- package/node_modules/side-channel-weakmap/README.md +62 -0
- package/node_modules/side-channel-weakmap/index.d.ts +15 -0
- package/node_modules/side-channel-weakmap/index.js +84 -0
- package/node_modules/side-channel-weakmap/package.json +87 -0
- package/node_modules/side-channel-weakmap/test/index.js +114 -0
- package/node_modules/side-channel-weakmap/tsconfig.json +9 -0
- package/node_modules/yaml/README.md +27 -8
- package/node_modules/yaml/browser/dist/compose/resolve-props.js +1 -1
- package/node_modules/yaml/browser/dist/log.js +1 -4
- package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +2 -11
- package/node_modules/yaml/browser/dist/util.js +1 -1
- package/node_modules/yaml/dist/compose/compose-collection.d.ts +4 -4
- package/node_modules/yaml/dist/compose/compose-doc.d.ts +6 -6
- package/node_modules/yaml/dist/compose/compose-node.d.ts +7 -7
- package/node_modules/yaml/dist/compose/compose-scalar.d.ts +4 -4
- package/node_modules/yaml/dist/compose/composer.d.ts +7 -6
- package/node_modules/yaml/dist/compose/composer.js +2 -1
- package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +5 -5
- package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +5 -5
- package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +5 -5
- package/node_modules/yaml/dist/compose/resolve-end.d.ts +2 -2
- package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -7
- package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +4 -4
- package/node_modules/yaml/dist/compose/resolve-props.d.ts +2 -2
- package/node_modules/yaml/dist/compose/resolve-props.js +1 -1
- package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +1 -1
- package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +1 -1
- package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +2 -2
- package/node_modules/yaml/dist/compose/util-map-includes.d.ts +3 -3
- package/node_modules/yaml/dist/doc/Document.d.ts +11 -11
- package/node_modules/yaml/dist/doc/anchors.d.ts +2 -2
- package/node_modules/yaml/dist/doc/createNode.d.ts +4 -4
- package/node_modules/yaml/dist/doc/directives.d.ts +1 -1
- package/node_modules/yaml/dist/index.d.ts +21 -18
- package/node_modules/yaml/dist/log.js +4 -2
- package/node_modules/yaml/dist/nodes/Alias.d.ts +9 -8
- package/node_modules/yaml/dist/nodes/Collection.d.ts +4 -4
- package/node_modules/yaml/dist/nodes/Node.d.ts +10 -10
- package/node_modules/yaml/dist/nodes/Pair.d.ts +9 -8
- package/node_modules/yaml/dist/nodes/Scalar.d.ts +4 -3
- package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +10 -10
- package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +10 -10
- package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +3 -3
- package/node_modules/yaml/dist/nodes/identity.d.ts +7 -7
- package/node_modules/yaml/dist/nodes/toJS.d.ts +2 -2
- package/node_modules/yaml/dist/options.d.ts +10 -10
- package/node_modules/yaml/dist/parse/cst-scalar.d.ts +4 -4
- package/node_modules/yaml/dist/parse/cst-stringify.d.ts +1 -1
- package/node_modules/yaml/dist/parse/cst-visit.d.ts +2 -2
- package/node_modules/yaml/dist/parse/cst.d.ts +4 -3
- package/node_modules/yaml/dist/parse/lexer.d.ts +1 -1
- package/node_modules/yaml/dist/parse/parser.d.ts +4 -4
- package/node_modules/yaml/dist/parse/parser.js +2 -1
- package/node_modules/yaml/dist/public-api.d.ts +6 -5
- package/node_modules/yaml/dist/schema/Schema.d.ts +4 -4
- package/node_modules/yaml/dist/schema/common/map.d.ts +1 -1
- package/node_modules/yaml/dist/schema/common/null.d.ts +1 -1
- package/node_modules/yaml/dist/schema/common/seq.d.ts +1 -1
- package/node_modules/yaml/dist/schema/common/string.d.ts +1 -1
- package/node_modules/yaml/dist/schema/core/bool.d.ts +1 -1
- package/node_modules/yaml/dist/schema/core/float.d.ts +1 -1
- package/node_modules/yaml/dist/schema/core/int.d.ts +1 -1
- package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -1
- package/node_modules/yaml/dist/schema/json/schema.d.ts +1 -1
- package/node_modules/yaml/dist/schema/tags.d.ts +2 -2
- package/node_modules/yaml/dist/schema/types.d.ts +8 -8
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +1 -1
- package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +6 -5
- package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +1 -1
- package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +1 -1
- package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +1 -1
- package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +3 -3
- package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +11 -17
- package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +7 -7
- package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -1
- package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +9 -9
- package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +1 -1
- package/node_modules/yaml/dist/stringify/stringify.d.ts +3 -3
- package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +2 -2
- package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +3 -3
- package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +1 -1
- package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +2 -2
- package/node_modules/yaml/dist/stringify/stringifyString.d.ts +2 -2
- package/node_modules/yaml/dist/util.d.ts +16 -12
- package/node_modules/yaml/dist/util.js +2 -2
- package/node_modules/yaml/dist/visit.d.ts +7 -7
- package/node_modules/yaml/package.json +4 -4
- package/package.json +1 -1
- package/node_modules/call-bind/.eslintignore +0 -1
- package/node_modules/call-bind/CHANGELOG.md +0 -93
- package/node_modules/call-bind/README.md +0 -64
- package/node_modules/call-bind/callBound.js +0 -15
- package/node_modules/call-bind/index.js +0 -35
- package/node_modules/call-bind/test/index.js +0 -80
- package/node_modules/define-data-property/.eslintrc +0 -24
- package/node_modules/define-data-property/CHANGELOG.md +0 -70
- package/node_modules/define-data-property/README.md +0 -67
- package/node_modules/define-data-property/index.d.ts +0 -12
- package/node_modules/define-data-property/index.js +0 -56
- package/node_modules/define-data-property/package.json +0 -106
- package/node_modules/define-data-property/test/index.js +0 -392
- package/node_modules/define-data-property/tsconfig.json +0 -59
- package/node_modules/has-property-descriptors/.eslintrc +0 -13
- package/node_modules/has-property-descriptors/CHANGELOG.md +0 -35
- package/node_modules/has-property-descriptors/README.md +0 -43
- package/node_modules/has-property-descriptors/index.js +0 -22
- package/node_modules/has-property-descriptors/test/index.js +0 -57
- package/node_modules/has-proto/CHANGELOG.md +0 -38
- package/node_modules/has-proto/README.md +0 -38
- package/node_modules/has-proto/index.d.ts +0 -3
- package/node_modules/has-proto/index.js +0 -15
- package/node_modules/has-proto/test/index.js +0 -19
- package/node_modules/has-proto/tsconfig.json +0 -49
- package/node_modules/set-function-length/.eslintrc +0 -27
- package/node_modules/set-function-length/CHANGELOG.md +0 -70
- package/node_modules/set-function-length/LICENSE +0 -21
- package/node_modules/set-function-length/README.md +0 -56
- package/node_modules/set-function-length/env.d.ts +0 -9
- package/node_modules/set-function-length/env.js +0 -25
- package/node_modules/set-function-length/index.d.ts +0 -7
- package/node_modules/set-function-length/index.js +0 -42
- package/node_modules/set-function-length/package.json +0 -102
- /package/node_modules/{call-bind → call-bind-apply-helpers}/.eslintrc +0 -0
- /package/node_modules/{call-bind → call-bind-apply-helpers}/.nycrc +0 -0
- /package/node_modules/{has-property-descriptors → call-bound}/.nycrc +0 -0
- /package/node_modules/{set-function-length → call-bound}/tsconfig.json +0 -0
- /package/node_modules/{has-proto → dunder-proto}/.eslintrc +0 -0
- /package/node_modules/{define-data-property → dunder-proto}/.nycrc +0 -0
- /package/node_modules/{set-function-length → side-channel-list}/.nycrc +0 -0
|
@@ -1,62 +1,49 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import punycode from 'punycode/punycode.js';
|
|
3
2
|
import rules from './data/rules.js';
|
|
4
3
|
|
|
5
|
-
|
|
6
|
-
var internals = {};
|
|
7
|
-
|
|
8
|
-
|
|
9
4
|
//
|
|
10
5
|
// Parse rules from file.
|
|
11
6
|
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
punySuffix: -1,
|
|
18
|
-
wildcard: rule.charAt(0) === '*',
|
|
19
|
-
exception: rule.charAt(0) === '!'
|
|
20
|
-
};
|
|
21
|
-
});
|
|
22
|
-
|
|
7
|
+
const rulesByPunySuffix = rules.reduce(
|
|
8
|
+
(map, rule) => {
|
|
9
|
+
const suffix = rule.replace(/^(\*\.|\!)/, '');
|
|
10
|
+
const punySuffix = punycode.toASCII(suffix);
|
|
11
|
+
const firstChar = rule.charAt(0);
|
|
23
12
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
internals.endsWith = function (str, suffix) {
|
|
13
|
+
if (map.has(punySuffix)) {
|
|
14
|
+
throw new Error(`Multiple rules found for ${rule} (${punySuffix})`);
|
|
15
|
+
}
|
|
28
16
|
|
|
29
|
-
|
|
30
|
-
|
|
17
|
+
map.set(punySuffix, {
|
|
18
|
+
rule,
|
|
19
|
+
suffix,
|
|
20
|
+
punySuffix,
|
|
21
|
+
wildcard: firstChar === '*',
|
|
22
|
+
exception: firstChar === '!'
|
|
23
|
+
});
|
|
31
24
|
|
|
25
|
+
return map;
|
|
26
|
+
},
|
|
27
|
+
new Map(),
|
|
28
|
+
);
|
|
32
29
|
|
|
33
30
|
//
|
|
34
31
|
// Find rule for a given domain.
|
|
35
32
|
//
|
|
36
|
-
|
|
33
|
+
const findRule = (domain) => {
|
|
34
|
+
const punyDomain = punycode.toASCII(domain);
|
|
35
|
+
const punyDomainChunks = punyDomain.split('.');
|
|
37
36
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if (
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
if (!internals.endsWith(punyDomain, '.' + rule.punySuffix) && punyDomain !== rule.punySuffix) {
|
|
45
|
-
return memo;
|
|
37
|
+
for (let i = 0; i < punyDomainChunks.length; i++) {
|
|
38
|
+
const suffix = punyDomainChunks.slice(i).join('.');
|
|
39
|
+
const matchingRules = rulesByPunySuffix.get(suffix);
|
|
40
|
+
if (matchingRules) {
|
|
41
|
+
return matchingRules;
|
|
46
42
|
}
|
|
47
|
-
|
|
48
|
-
// sub tlds always appear after their parents and we never find a shorter
|
|
49
|
-
// match.
|
|
50
|
-
//if (memo) {
|
|
51
|
-
// var memoSuffix = Punycode.toASCII(memo.suffix);
|
|
52
|
-
// if (memoSuffix.length >= punySuffix.length) {
|
|
53
|
-
// return memo;
|
|
54
|
-
// }
|
|
55
|
-
//}
|
|
56
|
-
return rule;
|
|
57
|
-
}, null);
|
|
58
|
-
};
|
|
43
|
+
}
|
|
59
44
|
|
|
45
|
+
return null;
|
|
46
|
+
};
|
|
60
47
|
|
|
61
48
|
//
|
|
62
49
|
// Error codes and messages.
|
|
@@ -71,7 +58,6 @@ export const errorCodes = {
|
|
|
71
58
|
LABEL_INVALID_CHARS: 'Domain name label can only contain alphanumeric characters or dashes.'
|
|
72
59
|
};
|
|
73
60
|
|
|
74
|
-
|
|
75
61
|
//
|
|
76
62
|
// Validate domain name and throw if not valid.
|
|
77
63
|
//
|
|
@@ -91,10 +77,9 @@ export const errorCodes = {
|
|
|
91
77
|
// * http://en.wikipedia.org/wiki/Domain_name
|
|
92
78
|
// * http://en.wikipedia.org/wiki/Hostname
|
|
93
79
|
//
|
|
94
|
-
|
|
95
|
-
|
|
80
|
+
const validate = (input) => {
|
|
96
81
|
// Before we can validate we need to take care of IDNs with unicode chars.
|
|
97
|
-
|
|
82
|
+
const ascii = punycode.toASCII(input);
|
|
98
83
|
|
|
99
84
|
if (ascii.length < 1) {
|
|
100
85
|
return 'DOMAIN_TOO_SHORT';
|
|
@@ -104,10 +89,10 @@ internals.validate = function (input) {
|
|
|
104
89
|
}
|
|
105
90
|
|
|
106
91
|
// Check each part's length and allowed chars.
|
|
107
|
-
|
|
108
|
-
|
|
92
|
+
const labels = ascii.split('.');
|
|
93
|
+
let label;
|
|
109
94
|
|
|
110
|
-
for (
|
|
95
|
+
for (let i = 0; i < labels.length; ++i) {
|
|
111
96
|
label = labels[i];
|
|
112
97
|
if (!label.length) {
|
|
113
98
|
return 'LABEL_TOO_SHORT';
|
|
@@ -121,29 +106,26 @@ internals.validate = function (input) {
|
|
|
121
106
|
if (label.charAt(label.length - 1) === '-') {
|
|
122
107
|
return 'LABEL_ENDS_WITH_DASH';
|
|
123
108
|
}
|
|
124
|
-
if (!/^[a-z0-9\-]+$/.test(label)) {
|
|
109
|
+
if (!/^[a-z0-9\-_]+$/.test(label)) {
|
|
125
110
|
return 'LABEL_INVALID_CHARS';
|
|
126
111
|
}
|
|
127
112
|
}
|
|
128
113
|
};
|
|
129
114
|
|
|
130
|
-
|
|
131
115
|
//
|
|
132
116
|
// Public API
|
|
133
117
|
//
|
|
134
118
|
|
|
135
|
-
|
|
136
119
|
//
|
|
137
120
|
// Parse domain.
|
|
138
121
|
//
|
|
139
|
-
export const parse =
|
|
140
|
-
|
|
122
|
+
export const parse = (input) => {
|
|
141
123
|
if (typeof input !== 'string') {
|
|
142
124
|
throw new TypeError('Domain name must be a string.');
|
|
143
125
|
}
|
|
144
126
|
|
|
145
127
|
// Force domain to lowercase.
|
|
146
|
-
|
|
128
|
+
let domain = input.slice(0).toLowerCase();
|
|
147
129
|
|
|
148
130
|
// Handle FQDN.
|
|
149
131
|
// TODO: Simply remove trailing dot?
|
|
@@ -152,7 +134,7 @@ export const parse = function (input) {
|
|
|
152
134
|
}
|
|
153
135
|
|
|
154
136
|
// Validate and sanitise input.
|
|
155
|
-
|
|
137
|
+
const error = validate(domain);
|
|
156
138
|
if (error) {
|
|
157
139
|
return {
|
|
158
140
|
input: input,
|
|
@@ -163,7 +145,7 @@ export const parse = function (input) {
|
|
|
163
145
|
};
|
|
164
146
|
}
|
|
165
147
|
|
|
166
|
-
|
|
148
|
+
const parsed = {
|
|
167
149
|
input: input,
|
|
168
150
|
tld: null,
|
|
169
151
|
sld: null,
|
|
@@ -172,28 +154,27 @@ export const parse = function (input) {
|
|
|
172
154
|
listed: false
|
|
173
155
|
};
|
|
174
156
|
|
|
175
|
-
|
|
157
|
+
const domainParts = domain.split('.');
|
|
176
158
|
|
|
177
159
|
// Non-Internet TLD
|
|
178
160
|
if (domainParts[domainParts.length - 1] === 'local') {
|
|
179
161
|
return parsed;
|
|
180
162
|
}
|
|
181
163
|
|
|
182
|
-
|
|
183
|
-
|
|
164
|
+
const handlePunycode = () => {
|
|
184
165
|
if (!/xn--/.test(domain)) {
|
|
185
166
|
return parsed;
|
|
186
167
|
}
|
|
187
168
|
if (parsed.domain) {
|
|
188
|
-
parsed.domain =
|
|
169
|
+
parsed.domain = punycode.toASCII(parsed.domain);
|
|
189
170
|
}
|
|
190
171
|
if (parsed.subdomain) {
|
|
191
|
-
parsed.subdomain =
|
|
172
|
+
parsed.subdomain = punycode.toASCII(parsed.subdomain);
|
|
192
173
|
}
|
|
193
174
|
return parsed;
|
|
194
175
|
};
|
|
195
176
|
|
|
196
|
-
|
|
177
|
+
const rule = findRule(domain);
|
|
197
178
|
|
|
198
179
|
// Unlisted tld.
|
|
199
180
|
if (!rule) {
|
|
@@ -206,14 +187,15 @@ export const parse = function (input) {
|
|
|
206
187
|
if (domainParts.length) {
|
|
207
188
|
parsed.subdomain = domainParts.pop();
|
|
208
189
|
}
|
|
190
|
+
|
|
209
191
|
return handlePunycode();
|
|
210
192
|
}
|
|
211
193
|
|
|
212
194
|
// At this point we know the public suffix is listed.
|
|
213
195
|
parsed.listed = true;
|
|
214
196
|
|
|
215
|
-
|
|
216
|
-
|
|
197
|
+
const tldParts = rule.suffix.split('.');
|
|
198
|
+
const privateParts = domainParts.slice(0, domainParts.length - tldParts.length);
|
|
217
199
|
|
|
218
200
|
if (rule.exception) {
|
|
219
201
|
privateParts.push(tldParts.shift());
|
|
@@ -244,25 +226,21 @@ export const parse = function (input) {
|
|
|
244
226
|
return handlePunycode();
|
|
245
227
|
};
|
|
246
228
|
|
|
247
|
-
|
|
248
229
|
//
|
|
249
230
|
// Get domain.
|
|
250
231
|
//
|
|
251
|
-
export const get =
|
|
252
|
-
|
|
232
|
+
export const get = (domain) => {
|
|
253
233
|
if (!domain) {
|
|
254
234
|
return null;
|
|
255
235
|
}
|
|
256
236
|
return parse(domain).domain || null;
|
|
257
237
|
};
|
|
258
238
|
|
|
259
|
-
|
|
260
239
|
//
|
|
261
240
|
// Check whether domain belongs to a known public suffix.
|
|
262
241
|
//
|
|
263
|
-
export const isValid =
|
|
264
|
-
|
|
265
|
-
var parsed = parse(domain);
|
|
242
|
+
export const isValid = (domain) => {
|
|
243
|
+
const parsed = parse(domain);
|
|
266
244
|
return Boolean(parsed.domain && parsed.listed);
|
|
267
245
|
};
|
|
268
246
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "psl",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.15.0",
|
|
4
4
|
"description": "Domain name parser based on the Public Suffix List",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"update-rules": "./scripts/update-rules.js",
|
|
24
24
|
"build": "vite build",
|
|
25
25
|
"postbuild": "ln -s ./psl.umd.cjs dist/psl.js && ln -s ./psl.umd.cjs dist/psl.min.js",
|
|
26
|
+
"benchmark": "node --experimental-vm-modules --no-warnings benchmark/suite.js",
|
|
26
27
|
"changelog": "git log $(git describe --tags --abbrev=0)..HEAD --oneline --format=\"%h %s (%an <%ae>)\""
|
|
27
28
|
},
|
|
28
29
|
"keywords": [
|
|
@@ -30,19 +31,21 @@
|
|
|
30
31
|
"publicsuffixlist"
|
|
31
32
|
],
|
|
32
33
|
"author": "Lupo Montero <lupomontero@gmail.com> (https://lupomontero.com/)",
|
|
34
|
+
"funding": "https://github.com/sponsors/lupomontero",
|
|
33
35
|
"license": "MIT",
|
|
34
36
|
"dependencies": {
|
|
35
37
|
"punycode": "^2.3.1"
|
|
36
38
|
},
|
|
37
39
|
"devDependencies": {
|
|
38
|
-
"@eslint/js": "^9.
|
|
40
|
+
"@eslint/js": "^9.16.0",
|
|
39
41
|
"@playwright/test": "^1.49.0",
|
|
40
42
|
"@types/eslint__js": "^8.42.3",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
+
"benchmark": "^2.1.4",
|
|
44
|
+
"browserstack-node-sdk": "^1.34.27",
|
|
45
|
+
"eslint": "^9.16.0",
|
|
43
46
|
"mocha": "^10.8.2",
|
|
44
|
-
"typescript": "^5.
|
|
45
|
-
"typescript-eslint": "^8.
|
|
46
|
-
"vite": "^
|
|
47
|
+
"typescript": "^5.7.2",
|
|
48
|
+
"typescript-eslint": "^8.16.0",
|
|
49
|
+
"vite": "^6.0.2"
|
|
47
50
|
}
|
|
48
51
|
}
|
|
@@ -89,7 +89,9 @@
|
|
|
89
89
|
"node:readline/promises": ">= 17",
|
|
90
90
|
"repl": true,
|
|
91
91
|
"node:repl": [">= 14.18 && < 15", ">= 16"],
|
|
92
|
+
"node:sea": [">= 20.12 && < 21", ">= 21.7"],
|
|
92
93
|
"smalloc": ">= 0.11.5 && < 3",
|
|
94
|
+
"node:sqlite": ">= 23.4",
|
|
93
95
|
"_stream_duplex": ">= 0.9.4",
|
|
94
96
|
"node:_stream_duplex": [">= 14.18 && < 15", ">= 16"],
|
|
95
97
|
"_stream_transform": ">= 0.9.4",
|
|
@@ -116,6 +118,8 @@
|
|
|
116
118
|
"node:sys": [">= 14.18 && < 15", ">= 16"],
|
|
117
119
|
"test/reporters": ">= 19.9 && < 20.2",
|
|
118
120
|
"node:test/reporters": [">= 18.17 && < 19", ">= 19.9", ">= 20"],
|
|
121
|
+
"test/mock_loader": ">= 22.3 && < 22.7",
|
|
122
|
+
"node:test/mock_loader": ">= 22.3 && < 22.7",
|
|
119
123
|
"node:test": [">= 16.17 && < 17", ">= 18"],
|
|
120
124
|
"timers": true,
|
|
121
125
|
"node:timers": [">= 14.18 && < 15", ">= 16"],
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "resolve",
|
|
3
3
|
"description": "resolve like require.resolve() on behalf of files asynchronously and synchronously",
|
|
4
|
-
"version": "1.22.
|
|
4
|
+
"version": "1.22.10",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git://github.com/browserify/resolve.git"
|
|
@@ -26,26 +26,25 @@
|
|
|
26
26
|
"tests-only": "tape test/*.js",
|
|
27
27
|
"pretest": "npm run lint",
|
|
28
28
|
"test": "npm run --silent tests-only",
|
|
29
|
-
"posttest": "npm run test:multirepo &&
|
|
29
|
+
"posttest": "npm run test:multirepo && npx npm@'>= 10.2' audit --production",
|
|
30
30
|
"test:multirepo": "cd ./test/resolver/multirepo && npm install && npm test"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@ljharb/eslint-config": "^21.1.
|
|
34
|
-
"array.prototype.map": "^1.0.
|
|
35
|
-
"aud": "^2.0.3",
|
|
33
|
+
"@ljharb/eslint-config": "^21.1.1",
|
|
34
|
+
"array.prototype.map": "^1.0.7",
|
|
36
35
|
"copy-dir": "^1.3.0",
|
|
37
36
|
"eclint": "^2.8.1",
|
|
38
37
|
"eslint": "=8.8.0",
|
|
39
38
|
"in-publish": "^2.0.1",
|
|
40
39
|
"mkdirp": "^0.5.5",
|
|
41
40
|
"mv": "^2.1.1",
|
|
42
|
-
"npmignore": "^0.3.
|
|
41
|
+
"npmignore": "^0.3.1",
|
|
43
42
|
"object-keys": "^1.1.1",
|
|
44
43
|
"rimraf": "^2.7.1",
|
|
45
44
|
"safe-publish-latest": "^2.0.0",
|
|
46
45
|
"semver": "^6.3.1",
|
|
47
46
|
"tap": "0.4.13",
|
|
48
|
-
"tape": "^5.
|
|
47
|
+
"tape": "^5.9.0",
|
|
49
48
|
"tmp": "^0.0.31"
|
|
50
49
|
},
|
|
51
50
|
"license": "MIT",
|
|
@@ -58,7 +57,7 @@
|
|
|
58
57
|
"url": "https://github.com/sponsors/ljharb"
|
|
59
58
|
},
|
|
60
59
|
"dependencies": {
|
|
61
|
-
"is-core-module": "^2.
|
|
60
|
+
"is-core-module": "^2.16.0",
|
|
62
61
|
"path-parse": "^1.0.7",
|
|
63
62
|
"supports-preserve-symlinks-flag": "^1.0.0"
|
|
64
63
|
},
|
|
@@ -66,7 +65,11 @@
|
|
|
66
65
|
"ignore": [
|
|
67
66
|
".github/workflows",
|
|
68
67
|
"appveyor.yml",
|
|
69
|
-
"test/resolver/malformed_package_json"
|
|
68
|
+
"test/resolver/malformed_package_json",
|
|
69
|
+
"test/list-exports"
|
|
70
70
|
]
|
|
71
|
+
},
|
|
72
|
+
"engines": {
|
|
73
|
+
"node": ">= 0.4"
|
|
71
74
|
}
|
|
72
75
|
}
|
|
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [v1.1.0](https://github.com/ljharb/side-channel/compare/v1.0.6...v1.1.0) - 2024-12-11
|
|
9
|
+
|
|
10
|
+
### Commits
|
|
11
|
+
|
|
12
|
+
- [Refactor] extract implementations to `side-channel-weakmap`, `side-channel-map`, `side-channel-list` [`ada5955`](https://github.com/ljharb/side-channel/commit/ada595549a5c4c6c853756d598846b180941c6da)
|
|
13
|
+
- [New] add `channel.delete` [`c01d2d3`](https://github.com/ljharb/side-channel/commit/c01d2d3fd51dbb1ce6da72ad7916e61bd6172aad)
|
|
14
|
+
- [types] improve types [`0c54356`](https://github.com/ljharb/side-channel/commit/0c5435651417df41b8cc1a5f7cdce8bffae68cde)
|
|
15
|
+
- [readme] add content [`be24868`](https://github.com/ljharb/side-channel/commit/be248682ac294b0e22c883092c45985aa91c490a)
|
|
16
|
+
- [actions] split out node 10-20, and 20+ [`c4488e2`](https://github.com/ljharb/side-channel/commit/c4488e241ef3d49a19fe266ac830a2e644305911)
|
|
17
|
+
- [types] use shared tsconfig [`0e0d57c`](https://github.com/ljharb/side-channel/commit/0e0d57c2ff17c7b45c6cbd43ebcf553edc9e3adc)
|
|
18
|
+
- [Dev Deps] update `@ljharb/eslint-config`, `@ljharb/tsconfig`, `@types/get-intrinsic`, `@types/object-inspect`, `@types/tape`, `auto-changelog`, `tape` [`fb4f622`](https://github.com/ljharb/side-channel/commit/fb4f622e64a99a1e40b6e5cd7691674a9dc429e4)
|
|
19
|
+
- [Deps] update `call-bind`, `get-intrinsic`, `object-inspect` [`b78336b`](https://github.com/ljharb/side-channel/commit/b78336b886172d1b457d414ac9e28de8c5fecc78)
|
|
20
|
+
- [Tests] replace `aud` with `npm audit` [`ee3ab46`](https://github.com/ljharb/side-channel/commit/ee3ab4690d954311c35115651bcfd45edd205aa1)
|
|
21
|
+
- [Dev Deps] add missing peer dep [`c03e21a`](https://github.com/ljharb/side-channel/commit/c03e21a7def3b67cdc15ae22316884fefcb2f6a8)
|
|
22
|
+
|
|
8
23
|
## [v1.0.6](https://github.com/ljharb/side-channel/compare/v1.0.5...v1.0.6) - 2024-02-29
|
|
9
24
|
|
|
10
25
|
### Commits
|
|
@@ -1,2 +1,61 @@
|
|
|
1
|
-
# side-channel
|
|
1
|
+
# side-channel <sup>[![Version Badge][npm-version-svg]][package-url]</sup>
|
|
2
|
+
|
|
3
|
+
[![github actions][actions-image]][actions-url]
|
|
4
|
+
[![coverage][codecov-image]][codecov-url]
|
|
5
|
+
[![License][license-image]][license-url]
|
|
6
|
+
[![Downloads][downloads-image]][downloads-url]
|
|
7
|
+
|
|
8
|
+
[![npm badge][npm-badge-png]][package-url]
|
|
9
|
+
|
|
2
10
|
Store information about any JS value in a side channel. Uses WeakMap if available.
|
|
11
|
+
|
|
12
|
+
Warning: in an environment that lacks `WeakMap`, this implementation will leak memory until you `delete` the `key`.
|
|
13
|
+
|
|
14
|
+
## Getting started
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
npm install --save side-channel
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Usage/Examples
|
|
21
|
+
|
|
22
|
+
```js
|
|
23
|
+
const assert = require('assert');
|
|
24
|
+
const getSideChannel = require('side-channel');
|
|
25
|
+
|
|
26
|
+
const channel = getSideChannel();
|
|
27
|
+
|
|
28
|
+
const key = {};
|
|
29
|
+
assert.equal(channel.has(key), false);
|
|
30
|
+
assert.throws(() => channel.assert(key), TypeError);
|
|
31
|
+
|
|
32
|
+
channel.set(key, 42);
|
|
33
|
+
|
|
34
|
+
channel.assert(key); // does not throw
|
|
35
|
+
assert.equal(channel.has(key), true);
|
|
36
|
+
assert.equal(channel.get(key), 42);
|
|
37
|
+
|
|
38
|
+
channel.delete(key);
|
|
39
|
+
assert.equal(channel.has(key), false);
|
|
40
|
+
assert.throws(() => channel.assert(key), TypeError);
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Tests
|
|
44
|
+
|
|
45
|
+
Clone the repo, `npm install`, and run `npm test`
|
|
46
|
+
|
|
47
|
+
[package-url]: https://npmjs.org/package/side-channel
|
|
48
|
+
[npm-version-svg]: https://versionbadg.es/ljharb/side-channel.svg
|
|
49
|
+
[deps-svg]: https://david-dm.org/ljharb/side-channel.svg
|
|
50
|
+
[deps-url]: https://david-dm.org/ljharb/side-channel
|
|
51
|
+
[dev-deps-svg]: https://david-dm.org/ljharb/side-channel/dev-status.svg
|
|
52
|
+
[dev-deps-url]: https://david-dm.org/ljharb/side-channel#info=devDependencies
|
|
53
|
+
[npm-badge-png]: https://nodei.co/npm/side-channel.png?downloads=true&stars=true
|
|
54
|
+
[license-image]: https://img.shields.io/npm/l/side-channel.svg
|
|
55
|
+
[license-url]: LICENSE
|
|
56
|
+
[downloads-image]: https://img.shields.io/npm/dm/side-channel.svg
|
|
57
|
+
[downloads-url]: https://npm-stat.com/charts.html?package=side-channel
|
|
58
|
+
[codecov-image]: https://codecov.io/gh/ljharb/side-channel/branch/main/graphs/badge.svg
|
|
59
|
+
[codecov-url]: https://app.codecov.io/gh/ljharb/side-channel/
|
|
60
|
+
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/ljharb/side-channel
|
|
61
|
+
[actions-url]: https://github.com/ljharb/side-channel/actions
|
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
key: Key;
|
|
5
|
-
next: ListNode<T>;
|
|
6
|
-
value: T;
|
|
7
|
-
};
|
|
8
|
-
type RootNode<T> = {
|
|
9
|
-
key: object;
|
|
10
|
-
next: null | ListNode<T>;
|
|
11
|
-
};
|
|
12
|
-
function listGetNode<T>(list: RootNode<T>, key: ListNode<T>['key']): ListNode<T> | void;
|
|
13
|
-
function listGet<T>(objects: RootNode<T>, key: ListNode<T>['key']): T | void;
|
|
14
|
-
function listSet<T>(objects: RootNode<T>, key: ListNode<T>['key'], value: T): void;
|
|
15
|
-
function listHas<T>(objects: RootNode<T>, key: ListNode<T>['key']): boolean;
|
|
1
|
+
import getSideChannelList from 'side-channel-list';
|
|
2
|
+
import getSideChannelMap from 'side-channel-map';
|
|
3
|
+
import getSideChannelWeakMap from 'side-channel-weakmap';
|
|
16
4
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
5
|
+
declare namespace getSideChannel {
|
|
6
|
+
type Channel<K, V> =
|
|
7
|
+
| getSideChannelList.Channel<K, V>
|
|
8
|
+
| ReturnType<Exclude<typeof getSideChannelMap<K, V>, false>>
|
|
9
|
+
| ReturnType<Exclude<typeof getSideChannelWeakMap<K, V>, false>>;
|
|
23
10
|
}
|
|
24
11
|
|
|
25
|
-
declare function getSideChannel(): getSideChannel.Channel
|
|
12
|
+
declare function getSideChannel<K, V>(): getSideChannel.Channel<K, V>;
|
|
26
13
|
|
|
27
14
|
export = getSideChannel;
|
|
@@ -1,129 +1,43 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var GetIntrinsic = require('get-intrinsic');
|
|
4
|
-
var callBound = require('call-bind/callBound');
|
|
5
|
-
var inspect = require('object-inspect');
|
|
6
|
-
|
|
7
3
|
var $TypeError = require('es-errors/type');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
var $weakMapSet = callBound('WeakMap.prototype.set', true);
|
|
13
|
-
var $weakMapHas = callBound('WeakMap.prototype.has', true);
|
|
14
|
-
var $mapGet = callBound('Map.prototype.get', true);
|
|
15
|
-
var $mapSet = callBound('Map.prototype.set', true);
|
|
16
|
-
var $mapHas = callBound('Map.prototype.has', true);
|
|
4
|
+
var inspect = require('object-inspect');
|
|
5
|
+
var getSideChannelList = require('side-channel-list');
|
|
6
|
+
var getSideChannelMap = require('side-channel-map');
|
|
7
|
+
var getSideChannelWeakMap = require('side-channel-weakmap');
|
|
17
8
|
|
|
18
|
-
|
|
19
|
-
* This function traverses the list returning the node corresponding to the given key.
|
|
20
|
-
*
|
|
21
|
-
* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.
|
|
22
|
-
*/
|
|
23
|
-
/** @type {import('.').listGetNode} */
|
|
24
|
-
var listGetNode = function (list, key) { // eslint-disable-line consistent-return
|
|
25
|
-
/** @type {typeof list | NonNullable<(typeof list)['next']>} */
|
|
26
|
-
var prev = list;
|
|
27
|
-
/** @type {(typeof list)['next']} */
|
|
28
|
-
var curr;
|
|
29
|
-
for (; (curr = prev.next) !== null; prev = curr) {
|
|
30
|
-
if (curr.key === key) {
|
|
31
|
-
prev.next = curr.next;
|
|
32
|
-
// eslint-disable-next-line no-extra-parens
|
|
33
|
-
curr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);
|
|
34
|
-
list.next = curr; // eslint-disable-line no-param-reassign
|
|
35
|
-
return curr;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/** @type {import('.').listGet} */
|
|
41
|
-
var listGet = function (objects, key) {
|
|
42
|
-
var node = listGetNode(objects, key);
|
|
43
|
-
return node && node.value;
|
|
44
|
-
};
|
|
45
|
-
/** @type {import('.').listSet} */
|
|
46
|
-
var listSet = function (objects, key, value) {
|
|
47
|
-
var node = listGetNode(objects, key);
|
|
48
|
-
if (node) {
|
|
49
|
-
node.value = value;
|
|
50
|
-
} else {
|
|
51
|
-
// Prepend the new node to the beginning of the list
|
|
52
|
-
objects.next = /** @type {import('.').ListNode<typeof value>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens
|
|
53
|
-
key: key,
|
|
54
|
-
next: objects.next,
|
|
55
|
-
value: value
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
/** @type {import('.').listHas} */
|
|
60
|
-
var listHas = function (objects, key) {
|
|
61
|
-
return !!listGetNode(objects, key);
|
|
62
|
-
};
|
|
9
|
+
var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;
|
|
63
10
|
|
|
64
11
|
/** @type {import('.')} */
|
|
65
12
|
module.exports = function getSideChannel() {
|
|
66
|
-
/** @
|
|
67
|
-
/** @type {Map<object, unknown>} */ var $m;
|
|
68
|
-
/** @type {import('.').RootNode<unknown>} */ var $o;
|
|
13
|
+
/** @typedef {ReturnType<typeof getSideChannel>} Channel */
|
|
69
14
|
|
|
70
|
-
/** @type {
|
|
15
|
+
/** @type {Channel | undefined} */ var $channelData;
|
|
16
|
+
|
|
17
|
+
/** @type {Channel} */
|
|
71
18
|
var channel = {
|
|
72
19
|
assert: function (key) {
|
|
73
20
|
if (!channel.has(key)) {
|
|
74
21
|
throw new $TypeError('Side channel does not contain ' + inspect(key));
|
|
75
22
|
}
|
|
76
23
|
},
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
} else if ($Map) {
|
|
83
|
-
if ($m) {
|
|
84
|
-
return $mapGet($m, key);
|
|
85
|
-
}
|
|
86
|
-
} else {
|
|
87
|
-
if ($o) { // eslint-disable-line no-lonely-if
|
|
88
|
-
return listGet($o, key);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
24
|
+
'delete': function (key) {
|
|
25
|
+
return !!$channelData && $channelData['delete'](key);
|
|
26
|
+
},
|
|
27
|
+
get: function (key) {
|
|
28
|
+
return $channelData && $channelData.get(key);
|
|
91
29
|
},
|
|
92
30
|
has: function (key) {
|
|
93
|
-
|
|
94
|
-
if ($wm) {
|
|
95
|
-
return $weakMapHas($wm, key);
|
|
96
|
-
}
|
|
97
|
-
} else if ($Map) {
|
|
98
|
-
if ($m) {
|
|
99
|
-
return $mapHas($m, key);
|
|
100
|
-
}
|
|
101
|
-
} else {
|
|
102
|
-
if ($o) { // eslint-disable-line no-lonely-if
|
|
103
|
-
return listHas($o, key);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
return false;
|
|
31
|
+
return !!$channelData && $channelData.has(key);
|
|
107
32
|
},
|
|
108
33
|
set: function (key, value) {
|
|
109
|
-
if (
|
|
110
|
-
|
|
111
|
-
$wm = new $WeakMap();
|
|
112
|
-
}
|
|
113
|
-
$weakMapSet($wm, key, value);
|
|
114
|
-
} else if ($Map) {
|
|
115
|
-
if (!$m) {
|
|
116
|
-
$m = new $Map();
|
|
117
|
-
}
|
|
118
|
-
$mapSet($m, key, value);
|
|
119
|
-
} else {
|
|
120
|
-
if (!$o) {
|
|
121
|
-
// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head
|
|
122
|
-
$o = { key: {}, next: null };
|
|
123
|
-
}
|
|
124
|
-
listSet($o, key, value);
|
|
34
|
+
if (!$channelData) {
|
|
35
|
+
$channelData = makeChannel();
|
|
125
36
|
}
|
|
37
|
+
|
|
38
|
+
$channelData.set(key, value);
|
|
126
39
|
}
|
|
127
40
|
};
|
|
41
|
+
// @ts-expect-error TODO: figure out why this is erroring
|
|
128
42
|
return channel;
|
|
129
43
|
};
|