@cdk8s/awscdk-resolver 0.0.609 → 0.0.611
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/.jsii +3 -3
- package/lib/resolve.js +1 -1
- package/node_modules/@aws-sdk/client-cloudformation/package.json +3 -3
- package/node_modules/@aws-sdk/core/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
- package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
- package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
- package/node_modules/@aws-sdk/token-providers/package.json +3 -3
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +1 -1
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +233 -43
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js +1 -1
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +233 -43
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts +1 -1
- package/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts +2 -1
- package/node_modules/@aws-sdk/xml-builder/package.json +4 -4
- package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +518 -371
- package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +1 -1
- package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js +326 -269
- package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js +192 -103
- package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js +4 -2
- package/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-value-from-text-node.js +1 -1
- package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts +4 -0
- package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts +8 -4
- package/node_modules/@smithy/core/package.json +1 -1
- package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
- package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
- package/node_modules/@smithy/node-http-handler/package.json +2 -2
- package/node_modules/@smithy/signature-v4/package.json +2 -2
- package/package.json +9 -9
- package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +0 -333
- package/node_modules/@aws-sdk/xml-builder/dist-es/xml-external/nodable_entities.js +0 -332
- package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-external/nodable_entities.d.ts +0 -66
- package/node_modules/@aws-sdk/xml-builder/dist-types/xml-external/nodable_entities.d.ts +0 -65
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/CHANGELOG.md +0 -827
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/LICENSE +0 -21
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/README.md +0 -202
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.d.cts +0 -770
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js +0 -2
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js.map +0 -1
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/package.json +0 -93
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/cli.js +0 -97
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/man.js +0 -17
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/read.js +0 -43
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.d.ts +0 -739
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.js +0 -14
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/ignoreAttributes.js +0 -18
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/util.js +0 -61
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/CharsSymbol.js +0 -16
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/EntitiesParser.js +0 -106
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js +0 -61
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -69
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js +0 -103
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -100
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js +0 -154
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -94
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Report.js +0 -0
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPath.js +0 -81
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js +0 -13
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XMLParser.js +0 -83
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js +0 -235
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlPartReader.js +0 -210
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js +0 -111
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js +0 -116
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js +0 -121
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js +0 -105
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js +0 -22
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js +0 -19
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js +0 -38
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/join.js +0 -13
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/number.js +0 -14
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js +0 -6
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/validator.js +0 -425
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +0 -6
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +0 -407
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +0 -163
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +0 -840
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +0 -71
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/node2json.js +0 -177
- package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +0 -40
- package/node_modules/@nodable/entities/README.md +0 -41
- package/node_modules/@nodable/entities/package.json +0 -57
- package/node_modules/@nodable/entities/src/EntityDecoder.js +0 -644
- package/node_modules/@nodable/entities/src/EntityEncoder.js +0 -194
- package/node_modules/@nodable/entities/src/entities.js +0 -1159
- package/node_modules/@nodable/entities/src/entityTries.js +0 -49
- package/node_modules/@nodable/entities/src/index.d.ts +0 -341
- package/node_modules/@nodable/entities/src/index.js +0 -29
- package/node_modules/anynum/LICENSE +0 -21
- package/node_modules/anynum/README.md +0 -142
- package/node_modules/anynum/anynum.js +0 -135
- package/node_modules/anynum/digitTable.js +0 -116
- package/node_modules/anynum/package.json +0 -42
- package/node_modules/fast-xml-builder/CHANGELOG.md +0 -40
- package/node_modules/fast-xml-builder/LICENSE +0 -21
- package/node_modules/fast-xml-builder/README.md +0 -74
- package/node_modules/fast-xml-builder/lib/fxb.cjs +0 -1
- package/node_modules/fast-xml-builder/lib/fxb.d.cts +0 -270
- package/node_modules/fast-xml-builder/lib/fxb.min.js +0 -2
- package/node_modules/fast-xml-builder/lib/fxb.min.js.map +0 -1
- package/node_modules/fast-xml-builder/package.json +0 -81
- package/node_modules/fast-xml-builder/src/fxb.d.ts +0 -270
- package/node_modules/fast-xml-builder/src/fxb.js +0 -599
- package/node_modules/fast-xml-builder/src/ignoreAttributes.js +0 -18
- package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +0 -359
- package/node_modules/fast-xml-builder/src/prettifyJs2Xml.js +0 -0
- package/node_modules/fast-xml-builder/src/util.js +0 -16
- package/node_modules/path-expression-matcher/LICENSE +0 -21
- package/node_modules/path-expression-matcher/README.md +0 -947
- package/node_modules/path-expression-matcher/lib/pem.cjs +0 -1
- package/node_modules/path-expression-matcher/lib/pem.d.cts +0 -715
- package/node_modules/path-expression-matcher/lib/pem.min.js +0 -2
- package/node_modules/path-expression-matcher/lib/pem.min.js.map +0 -1
- package/node_modules/path-expression-matcher/package.json +0 -79
- package/node_modules/path-expression-matcher/src/Expression.js +0 -232
- package/node_modules/path-expression-matcher/src/ExpressionSet.js +0 -225
- package/node_modules/path-expression-matcher/src/Matcher.js +0 -660
- package/node_modules/path-expression-matcher/src/index.d.ts +0 -589
- package/node_modules/path-expression-matcher/src/index.js +0 -29
- package/node_modules/strnum/CHANGELOG.md +0 -51
- package/node_modules/strnum/LICENSE +0 -21
- package/node_modules/strnum/README.md +0 -113
- package/node_modules/strnum/package.json +0 -36
- package/node_modules/strnum/strnum.js +0 -171
- package/node_modules/xml-naming/README.md +0 -189
- package/node_modules/xml-naming/package.json +0 -54
- package/node_modules/xml-naming/src/index.d.ts +0 -74
- package/node_modules/xml-naming/src/index.js +0 -270
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ExpressionSet - An indexed collection of Expressions for efficient bulk matching
|
|
3
|
-
*
|
|
4
|
-
* Instead of iterating all expressions on every tag, ExpressionSet pre-indexes
|
|
5
|
-
* them at insertion time by depth and terminal tag name. At match time, only
|
|
6
|
-
* the relevant bucket is evaluated — typically reducing checks from O(E) to O(1)
|
|
7
|
-
* lookup plus O(small bucket) matches.
|
|
8
|
-
*
|
|
9
|
-
* Three buckets are maintained:
|
|
10
|
-
* - `_byDepthAndTag` — exact depth + exact tag name (tightest, used first)
|
|
11
|
-
* - `_wildcardByDepth` — exact depth + wildcard tag `*` (depth-matched only)
|
|
12
|
-
* - `_deepWildcards` — expressions containing `..` (cannot be depth-indexed)
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* import { Expression, ExpressionSet } from 'fast-xml-tagger';
|
|
16
|
-
*
|
|
17
|
-
* // Build once at config time
|
|
18
|
-
* const stopNodes = new ExpressionSet();
|
|
19
|
-
* stopNodes.add(new Expression('root.users.user'));
|
|
20
|
-
* stopNodes.add(new Expression('root.config.setting'));
|
|
21
|
-
* stopNodes.add(new Expression('..script'));
|
|
22
|
-
*
|
|
23
|
-
* // Query on every tag — hot path
|
|
24
|
-
* if (stopNodes.matchesAny(matcher)) { ... }
|
|
25
|
-
*/
|
|
26
|
-
export default class ExpressionSet {
|
|
27
|
-
constructor() {
|
|
28
|
-
/** @type {Map<string, import('./Expression.js').default[]>} depth:tag → expressions */
|
|
29
|
-
this._byDepthAndTag = new Map();
|
|
30
|
-
|
|
31
|
-
/** @type {Map<number, import('./Expression.js').default[]>} depth → wildcard-tag expressions */
|
|
32
|
-
this._wildcardByDepth = new Map();
|
|
33
|
-
|
|
34
|
-
/** @type {import('./Expression.js').default[]} expressions containing deep wildcard (..) */
|
|
35
|
-
this._deepWildcards = [];
|
|
36
|
-
|
|
37
|
-
/** @type {Map<string, import('./Expression.js').default[]>} terminalTag → deep wildcard expressions */
|
|
38
|
-
this._deepByTerminalTag = new Map();
|
|
39
|
-
|
|
40
|
-
/** @type {Set<string>} pattern strings already added — used for deduplication */
|
|
41
|
-
this._patterns = new Set();
|
|
42
|
-
|
|
43
|
-
/** @type {boolean} whether the set is sealed against further additions */
|
|
44
|
-
this._sealed = false;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Add an Expression to the set.
|
|
49
|
-
* Duplicate patterns (same pattern string) are silently ignored.
|
|
50
|
-
*
|
|
51
|
-
* @param {import('./Expression.js').default} expression - A pre-constructed Expression instance
|
|
52
|
-
* @returns {this} for chaining
|
|
53
|
-
* @throws {TypeError} if called after seal()
|
|
54
|
-
*
|
|
55
|
-
* @example
|
|
56
|
-
* set.add(new Expression('root.users.user'));
|
|
57
|
-
* set.add(new Expression('..script'));
|
|
58
|
-
*/
|
|
59
|
-
add(expression) {
|
|
60
|
-
if (this._sealed) {
|
|
61
|
-
throw new TypeError(
|
|
62
|
-
'ExpressionSet is sealed. Create a new ExpressionSet to add more expressions.'
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// Deduplicate by pattern string
|
|
67
|
-
if (this._patterns.has(expression.pattern)) return this;
|
|
68
|
-
this._patterns.add(expression.pattern);
|
|
69
|
-
|
|
70
|
-
if (expression.hasDeepWildcard()) {
|
|
71
|
-
const lastSeg = expression.segments[expression.segments.length - 1];
|
|
72
|
-
if (lastSeg && lastSeg.type !== 'deep-wildcard' && lastSeg.tag !== '*') {
|
|
73
|
-
const tag = lastSeg.tag;
|
|
74
|
-
if (!this._deepByTerminalTag.has(tag)) this._deepByTerminalTag.set(tag, []);
|
|
75
|
-
this._deepByTerminalTag.get(tag).push(expression);
|
|
76
|
-
} else {
|
|
77
|
-
this._deepWildcards.push(expression);
|
|
78
|
-
}
|
|
79
|
-
return this;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const depth = expression.length;
|
|
83
|
-
const lastSeg = expression.segments[expression.segments.length - 1];
|
|
84
|
-
const tag = lastSeg?.tag;
|
|
85
|
-
|
|
86
|
-
if (!tag || tag === '*') {
|
|
87
|
-
// Can index by depth but not by tag
|
|
88
|
-
if (!this._wildcardByDepth.has(depth)) this._wildcardByDepth.set(depth, []);
|
|
89
|
-
this._wildcardByDepth.get(depth).push(expression);
|
|
90
|
-
} else {
|
|
91
|
-
// Tightest bucket: depth + tag
|
|
92
|
-
const key = `${depth}:${tag}`;
|
|
93
|
-
if (!this._byDepthAndTag.has(key)) this._byDepthAndTag.set(key, []);
|
|
94
|
-
this._byDepthAndTag.get(key).push(expression);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Add multiple expressions at once.
|
|
102
|
-
*
|
|
103
|
-
* @param {import('./Expression.js').default[]} expressions - Array of Expression instances
|
|
104
|
-
* @returns {this} for chaining
|
|
105
|
-
*
|
|
106
|
-
* @example
|
|
107
|
-
* set.addAll([
|
|
108
|
-
* new Expression('root.users.user'),
|
|
109
|
-
* new Expression('root.config.setting'),
|
|
110
|
-
* ]);
|
|
111
|
-
*/
|
|
112
|
-
addAll(expressions) {
|
|
113
|
-
for (const expr of expressions) this.add(expr);
|
|
114
|
-
return this;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* Check whether a pattern string is already present in the set.
|
|
119
|
-
*
|
|
120
|
-
* @param {import('./Expression.js').default} expression
|
|
121
|
-
* @returns {boolean}
|
|
122
|
-
*/
|
|
123
|
-
has(expression) {
|
|
124
|
-
return this._patterns.has(expression.pattern);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Number of expressions in the set.
|
|
129
|
-
* @type {number}
|
|
130
|
-
*/
|
|
131
|
-
get size() {
|
|
132
|
-
return this._patterns.size;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Seal the set against further modifications.
|
|
137
|
-
* Useful to prevent accidental mutations after config is built.
|
|
138
|
-
* Calling add() or addAll() on a sealed set throws a TypeError.
|
|
139
|
-
*
|
|
140
|
-
* @returns {this}
|
|
141
|
-
*/
|
|
142
|
-
seal() {
|
|
143
|
-
this._sealed = true;
|
|
144
|
-
return this;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* Whether the set has been sealed.
|
|
149
|
-
* @type {boolean}
|
|
150
|
-
*/
|
|
151
|
-
get isSealed() {
|
|
152
|
-
return this._sealed;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
/**
|
|
156
|
-
* Test whether the matcher's current path matches any expression in the set.
|
|
157
|
-
*
|
|
158
|
-
* Evaluation order (cheapest → most expensive):
|
|
159
|
-
* 1. Exact depth + tag bucket — O(1) lookup, typically 0–2 expressions
|
|
160
|
-
* 2. Depth-only wildcard bucket — O(1) lookup, rare
|
|
161
|
-
* 3. Deep-wildcard list — always checked, but usually small
|
|
162
|
-
*
|
|
163
|
-
* @param {import('./Matcher.js').default} matcher - Matcher instance (or readOnly view)
|
|
164
|
-
* @returns {boolean} true if any expression matches the current path
|
|
165
|
-
*
|
|
166
|
-
* @example
|
|
167
|
-
* if (stopNodes.matchesAny(matcher)) {
|
|
168
|
-
* // handle stop node
|
|
169
|
-
* }
|
|
170
|
-
*/
|
|
171
|
-
matchesAny(matcher) {
|
|
172
|
-
return this.findMatch(matcher) !== null;
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Find and return the first Expression that matches the matcher's current path.
|
|
176
|
-
*
|
|
177
|
-
* Uses the same evaluation order as matchesAny (cheapest → most expensive):
|
|
178
|
-
* 1. Exact depth + tag bucket
|
|
179
|
-
* 2. Depth-only wildcard bucket
|
|
180
|
-
* 3. Deep-wildcard list
|
|
181
|
-
*
|
|
182
|
-
* @param {import('./Matcher.js').default} matcher - Matcher instance (or readOnly view)
|
|
183
|
-
* @returns {import('./Expression.js').default | null} the first matching Expression, or null
|
|
184
|
-
*
|
|
185
|
-
* @example
|
|
186
|
-
* const expr = stopNodes.findMatch(matcher);
|
|
187
|
-
* if (expr) {
|
|
188
|
-
* // access expr.config, expr.pattern, etc.
|
|
189
|
-
* }
|
|
190
|
-
*/
|
|
191
|
-
findMatch(matcher) {
|
|
192
|
-
const depth = matcher.getDepth();
|
|
193
|
-
const tag = matcher.getCurrentTag();
|
|
194
|
-
|
|
195
|
-
// 1. Tightest bucket — most expressions live here
|
|
196
|
-
const exactKey = `${depth}:${tag}`;
|
|
197
|
-
const exactBucket = this._byDepthAndTag.get(exactKey);
|
|
198
|
-
if (exactBucket) {
|
|
199
|
-
for (let i = 0; i < exactBucket.length; i++) {
|
|
200
|
-
if (matcher.matches(exactBucket[i])) return exactBucket[i];
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// 2. Depth-matched wildcard-tag expressions
|
|
205
|
-
const wildcardBucket = this._wildcardByDepth.get(depth);
|
|
206
|
-
if (wildcardBucket) {
|
|
207
|
-
for (let i = 0; i < wildcardBucket.length; i++) {
|
|
208
|
-
if (matcher.matches(wildcardBucket[i])) return wildcardBucket[i];
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
// 3. Deep wildcards — indexed by terminal tag, then unindexed fallback
|
|
213
|
-
const deepBucket = this._deepByTerminalTag.get(tag);
|
|
214
|
-
if (deepBucket) {
|
|
215
|
-
for (let i = 0; i < deepBucket.length; i++) {
|
|
216
|
-
if (matcher.matches(deepBucket[i])) return deepBucket[i];
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
for (let i = 0; i < this._deepWildcards.length; i++) {
|
|
220
|
-
if (matcher.matches(this._deepWildcards[i])) return this._deepWildcards[i];
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
return null;
|
|
224
|
-
}
|
|
225
|
-
}
|