@cdklabs/cdk-ecs-codedeploy 0.0.445 → 0.0.446

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.
Files changed (201) hide show
  1. package/.jsii +3 -3
  2. package/lib/api-canary/index.js +1 -1
  3. package/lib/ecs-appspec/index.js +1 -1
  4. package/lib/ecs-deployment/index.js +1 -1
  5. package/lib/ecs-patterns/application-load-balanced-codedeployed-fargate-service.js +1 -1
  6. package/node_modules/@aws-sdk/client-codedeploy/package.json +3 -3
  7. package/node_modules/@aws-sdk/core/package.json +2 -2
  8. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  9. package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
  10. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  11. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  12. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  13. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  14. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  15. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  16. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  17. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  18. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  19. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  20. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  21. package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
  22. package/node_modules/@aws-sdk/token-providers/package.json +3 -3
  23. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +1 -1
  24. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +233 -43
  25. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js +1 -1
  26. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +233 -43
  27. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts +1 -1
  28. package/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts +2 -1
  29. package/node_modules/@aws-sdk/xml-builder/package.json +4 -4
  30. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.browser.js +355 -145
  31. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.js +456 -142
  32. package/node_modules/@smithy/core/dist-cjs/submodules/checksum/index.native.js +355 -145
  33. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +5 -2
  34. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.browser.js +30 -36
  35. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +54 -110
  36. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +30 -36
  37. package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Js.js +27 -0
  38. package/node_modules/@smithy/core/dist-es/submodules/checksum/crc32/Crc32Node.js +21 -0
  39. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.browser.js +7 -1
  40. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.js +7 -1
  41. package/node_modules/@smithy/core/dist-es/submodules/checksum/index.native.js +7 -1
  42. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Js.js +92 -0
  43. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5/Md5Node.js +29 -0
  44. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Js.js +179 -0
  45. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256Node.js +59 -0
  46. package/node_modules/@smithy/core/dist-es/submodules/checksum/sha256/Sha256WebCrypto.js +71 -0
  47. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +4 -1
  48. package/node_modules/@smithy/core/dist-es/submodules/serde/concatBytes.js +15 -0
  49. package/node_modules/@smithy/core/dist-es/submodules/serde/index.browser.js +2 -0
  50. package/node_modules/@smithy/core/dist-es/submodules/serde/index.js +2 -0
  51. package/node_modules/@smithy/core/dist-es/submodules/serde/index.native.js +2 -0
  52. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/checksum/ChecksumStream.js +4 -0
  53. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/headStream.js +2 -1
  54. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.browser.js +12 -38
  55. package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/stream-collector.js +18 -33
  56. package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.browser.js +3 -0
  57. package/node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUint8Array.js +3 -0
  58. package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Js.d.ts +13 -0
  59. package/node_modules/@smithy/core/dist-types/submodules/checksum/crc32/Crc32Node.d.ts +13 -0
  60. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.browser.d.ts +7 -1
  61. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.d.ts +7 -1
  62. package/node_modules/@smithy/core/dist-types/submodules/checksum/index.native.d.ts +7 -1
  63. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Js.d.ts +19 -0
  64. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5/Md5Node.d.ts +17 -0
  65. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Js.d.ts +28 -0
  66. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256Node.d.ts +13 -0
  67. package/node_modules/@smithy/core/dist-types/submodules/checksum/sha256/Sha256WebCrypto.d.ts +22 -0
  68. package/node_modules/@smithy/core/dist-types/submodules/serde/concatBytes.d.ts +6 -0
  69. package/node_modules/@smithy/core/dist-types/submodules/serde/index.browser.d.ts +2 -0
  70. package/node_modules/@smithy/core/dist-types/submodules/serde/index.d.ts +2 -0
  71. package/node_modules/@smithy/core/dist-types/submodules/serde/index.native.d.ts +2 -0
  72. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/checksum/ChecksumStream.d.ts +9 -0
  73. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.browser.d.ts +8 -2
  74. package/node_modules/@smithy/core/dist-types/submodules/serde/util-stream/stream-collector.d.ts +4 -1
  75. package/node_modules/@smithy/core/package.json +4 -3
  76. package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
  77. package/node_modules/@smithy/fetch-http-handler/dist-cjs/index.js +2 -55
  78. package/node_modules/@smithy/fetch-http-handler/dist-es/index.js +2 -2
  79. package/node_modules/@smithy/fetch-http-handler/dist-types/index.d.ts +2 -2
  80. package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
  81. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +3 -51
  82. package/node_modules/@smithy/node-http-handler/dist-es/index.js +3 -3
  83. package/node_modules/@smithy/node-http-handler/dist-types/index.d.ts +3 -3
  84. package/node_modules/@smithy/node-http-handler/package.json +2 -2
  85. package/node_modules/@smithy/signature-v4/package.json +2 -2
  86. package/package.json +2 -2
  87. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +0 -333
  88. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-external/nodable_entities.js +0 -332
  89. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-external/nodable_entities.d.ts +0 -66
  90. package/node_modules/@aws-sdk/xml-builder/dist-types/xml-external/nodable_entities.d.ts +0 -65
  91. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/CHANGELOG.md +0 -827
  92. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/LICENSE +0 -21
  93. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/README.md +0 -202
  94. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js +0 -2
  95. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +0 -1
  96. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +0 -1
  97. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.d.cts +0 -770
  98. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +0 -2
  99. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
  100. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +0 -2
  101. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
  102. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js +0 -2
  103. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js.map +0 -1
  104. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/package.json +0 -93
  105. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/cli.js +0 -97
  106. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/man.js +0 -17
  107. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/read.js +0 -43
  108. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.d.ts +0 -739
  109. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.js +0 -14
  110. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/ignoreAttributes.js +0 -18
  111. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/util.js +0 -61
  112. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/CharsSymbol.js +0 -16
  113. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/EntitiesParser.js +0 -106
  114. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js +0 -61
  115. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -69
  116. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js +0 -103
  117. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -100
  118. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js +0 -154
  119. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -94
  120. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Report.js +0 -0
  121. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPath.js +0 -81
  122. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js +0 -13
  123. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XMLParser.js +0 -83
  124. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js +0 -235
  125. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlPartReader.js +0 -210
  126. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js +0 -111
  127. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js +0 -116
  128. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js +0 -121
  129. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js +0 -105
  130. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js +0 -22
  131. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js +0 -19
  132. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js +0 -38
  133. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/join.js +0 -13
  134. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/number.js +0 -14
  135. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js +0 -6
  136. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/validator.js +0 -425
  137. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +0 -6
  138. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +0 -407
  139. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +0 -163
  140. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +0 -840
  141. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +0 -71
  142. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/node2json.js +0 -177
  143. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +0 -40
  144. package/node_modules/@nodable/entities/README.md +0 -41
  145. package/node_modules/@nodable/entities/package.json +0 -57
  146. package/node_modules/@nodable/entities/src/EntityDecoder.js +0 -644
  147. package/node_modules/@nodable/entities/src/EntityEncoder.js +0 -194
  148. package/node_modules/@nodable/entities/src/entities.js +0 -1159
  149. package/node_modules/@nodable/entities/src/entityTries.js +0 -49
  150. package/node_modules/@nodable/entities/src/index.d.ts +0 -341
  151. package/node_modules/@nodable/entities/src/index.js +0 -29
  152. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/constants.js +0 -3
  153. package/node_modules/@smithy/core/dist-es/submodules/checksum/md5-js/md5.js +0 -168
  154. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/constants.d.ts +0 -12
  155. package/node_modules/@smithy/core/dist-types/submodules/checksum/md5-js/md5.d.ts +0 -16
  156. package/node_modules/@smithy/fetch-http-handler/dist-es/stream-collector.js +0 -53
  157. package/node_modules/@smithy/fetch-http-handler/dist-types/stream-collector.d.ts +0 -2
  158. package/node_modules/@smithy/node-http-handler/dist-es/stream-collector/collector.js +0 -8
  159. package/node_modules/@smithy/node-http-handler/dist-es/stream-collector/index.js +0 -41
  160. package/node_modules/@smithy/node-http-handler/dist-types/stream-collector/collector.d.ts +0 -5
  161. package/node_modules/@smithy/node-http-handler/dist-types/stream-collector/index.d.ts +0 -7
  162. package/node_modules/anynum/LICENSE +0 -21
  163. package/node_modules/anynum/README.md +0 -142
  164. package/node_modules/anynum/anynum.js +0 -135
  165. package/node_modules/anynum/digitTable.js +0 -116
  166. package/node_modules/anynum/package.json +0 -42
  167. package/node_modules/fast-xml-builder/CHANGELOG.md +0 -40
  168. package/node_modules/fast-xml-builder/LICENSE +0 -21
  169. package/node_modules/fast-xml-builder/README.md +0 -74
  170. package/node_modules/fast-xml-builder/lib/fxb.cjs +0 -1
  171. package/node_modules/fast-xml-builder/lib/fxb.d.cts +0 -270
  172. package/node_modules/fast-xml-builder/lib/fxb.min.js +0 -2
  173. package/node_modules/fast-xml-builder/lib/fxb.min.js.map +0 -1
  174. package/node_modules/fast-xml-builder/package.json +0 -81
  175. package/node_modules/fast-xml-builder/src/fxb.d.ts +0 -270
  176. package/node_modules/fast-xml-builder/src/fxb.js +0 -599
  177. package/node_modules/fast-xml-builder/src/ignoreAttributes.js +0 -18
  178. package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +0 -359
  179. package/node_modules/fast-xml-builder/src/prettifyJs2Xml.js +0 -0
  180. package/node_modules/fast-xml-builder/src/util.js +0 -16
  181. package/node_modules/path-expression-matcher/LICENSE +0 -21
  182. package/node_modules/path-expression-matcher/README.md +0 -947
  183. package/node_modules/path-expression-matcher/lib/pem.cjs +0 -1
  184. package/node_modules/path-expression-matcher/lib/pem.d.cts +0 -715
  185. package/node_modules/path-expression-matcher/lib/pem.min.js +0 -2
  186. package/node_modules/path-expression-matcher/lib/pem.min.js.map +0 -1
  187. package/node_modules/path-expression-matcher/package.json +0 -79
  188. package/node_modules/path-expression-matcher/src/Expression.js +0 -232
  189. package/node_modules/path-expression-matcher/src/ExpressionSet.js +0 -225
  190. package/node_modules/path-expression-matcher/src/Matcher.js +0 -660
  191. package/node_modules/path-expression-matcher/src/index.d.ts +0 -589
  192. package/node_modules/path-expression-matcher/src/index.js +0 -29
  193. package/node_modules/strnum/CHANGELOG.md +0 -51
  194. package/node_modules/strnum/LICENSE +0 -21
  195. package/node_modules/strnum/README.md +0 -113
  196. package/node_modules/strnum/package.json +0 -36
  197. package/node_modules/strnum/strnum.js +0 -171
  198. package/node_modules/xml-naming/README.md +0 -189
  199. package/node_modules/xml-naming/package.json +0 -54
  200. package/node_modules/xml-naming/src/index.d.ts +0 -74
  201. 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
- }