@cdklabs/cdk-ssm-documents 0.0.65 → 0.0.66

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 (436) hide show
  1. package/.jsii +11 -11
  2. package/lib/construct/synth-utils.js +1 -1
  3. package/lib/document/automation-document.js +1 -1
  4. package/lib/document/command-document.js +1 -1
  5. package/lib/document/document-builder.js +2 -2
  6. package/lib/document/ssm-document.js +1 -1
  7. package/lib/domain/aws-service.js +1 -1
  8. package/lib/domain/choice.js +1 -1
  9. package/lib/domain/data-type.js +1 -1
  10. package/lib/domain/enum/install-action.js +2 -2
  11. package/lib/domain/enum/install-uninstall-repair.js +2 -2
  12. package/lib/domain/enum/installation-type.js +2 -2
  13. package/lib/domain/enum/package-name.js +2 -2
  14. package/lib/domain/input.js +1 -1
  15. package/lib/domain/operation.js +1 -1
  16. package/lib/domain/platform.js +1 -1
  17. package/lib/domain/precondition.js +1 -1
  18. package/lib/incident-response/incident-response.js +3 -3
  19. package/lib/interface/approve-hook.js +2 -2
  20. package/lib/interface/auth-method.js +3 -3
  21. package/lib/interface/aws-invoker.js +2 -2
  22. package/lib/interface/downloadable-content.js +8 -8
  23. package/lib/interface/environment.js +3 -3
  24. package/lib/interface/execute-automation-hook/api-execute-automation-hook.js +1 -1
  25. package/lib/interface/observer.js +1 -1
  26. package/lib/interface/on-failure.js +6 -6
  27. package/lib/interface/pause-hook.js +2 -2
  28. package/lib/interface/run-command-hook/api-run-command-hook.js +1 -1
  29. package/lib/interface/run-document-location.js +2 -2
  30. package/lib/interface/sleep-hook.js +2 -2
  31. package/lib/interface/step-ref.js +1 -1
  32. package/lib/interface/variables/boolean-variable.js +2 -2
  33. package/lib/interface/variables/map-list-variable.js +2 -2
  34. package/lib/interface/variables/number-variable.js +2 -2
  35. package/lib/interface/variables/secure-string-variable.js +4 -4
  36. package/lib/interface/variables/string-list-variable.js +2 -2
  37. package/lib/interface/variables/string-map-variable.js +2 -2
  38. package/lib/interface/variables/string-variable.js +4 -4
  39. package/lib/interface/variables/variable.js +2 -2
  40. package/lib/interface/webhook.js +1 -1
  41. package/lib/parent-steps/automation/approve-step.js +1 -1
  42. package/lib/parent-steps/automation/assert-aws-resource-step.js +1 -1
  43. package/lib/parent-steps/automation/aws-api-step.js +1 -1
  44. package/lib/parent-steps/automation/branch-step.js +1 -1
  45. package/lib/parent-steps/automation/change-instance-state-step.js +3 -3
  46. package/lib/parent-steps/automation/copy-image-step.js +1 -1
  47. package/lib/parent-steps/automation/create-image-step.js +1 -1
  48. package/lib/parent-steps/automation/create-stack-step.js +3 -3
  49. package/lib/parent-steps/automation/create-tags-step.js +3 -3
  50. package/lib/parent-steps/automation/delete-image-step.js +1 -1
  51. package/lib/parent-steps/automation/delete-stack-step.js +1 -1
  52. package/lib/parent-steps/automation/execute-automation-step.js +1 -1
  53. package/lib/parent-steps/automation/execute-script-step.js +5 -5
  54. package/lib/parent-steps/automation/execute-state-machine-step.js +1 -1
  55. package/lib/parent-steps/automation/invoke-lambda-function-step.js +1 -1
  56. package/lib/parent-steps/automation/invoke-webhook-step.js +1 -1
  57. package/lib/parent-steps/automation/pause-step.js +1 -1
  58. package/lib/parent-steps/automation/run-command-step.js +3 -3
  59. package/lib/parent-steps/automation/run-instance-step.js +1 -1
  60. package/lib/parent-steps/automation/sleep-step.js +1 -1
  61. package/lib/parent-steps/automation/update-variable.js +1 -1
  62. package/lib/parent-steps/automation/wait-for-resource-step.js +1 -1
  63. package/lib/parent-steps/automation-step.js +1 -1
  64. package/lib/parent-steps/command/applications-step.js +1 -1
  65. package/lib/parent-steps/command/configure-docker-step.js +1 -1
  66. package/lib/parent-steps/command/configure-package-step.js +1 -1
  67. package/lib/parent-steps/command/domain-join-step.js +1 -1
  68. package/lib/parent-steps/command/download-content-step.js +1 -1
  69. package/lib/parent-steps/command/ps-module-step.js +1 -1
  70. package/lib/parent-steps/command/run-docker-action-step.js +1 -1
  71. package/lib/parent-steps/command/run-document-step.js +1 -1
  72. package/lib/parent-steps/command/run-powershell-script-step.js +1 -1
  73. package/lib/parent-steps/command/run-shell-script-step.js +1 -1
  74. package/lib/parent-steps/command/software-inventory-step.js +1 -1
  75. package/lib/parent-steps/command/update-agent-step.js +1 -1
  76. package/lib/parent-steps/command/update-ssm-agent-step.js +1 -1
  77. package/lib/parent-steps/command-step.js +1 -1
  78. package/lib/parent-steps/step.js +1 -1
  79. package/lib/patterns/automation/composite-step.js +2 -2
  80. package/lib/patterns/automation/reboot-instance-and-wait.js +1 -1
  81. package/lib/patterns/automation/string-step.js +1 -1
  82. package/lib/patterns/document/string-document.js +1 -1
  83. package/lib/patterns/document/timed-document.js +1 -1
  84. package/lib/samples/hello-world.js +1 -1
  85. package/lib/simulation/automation/approve-simulation.js +1 -1
  86. package/lib/simulation/automation/assert-aws-resource-simulation.js +1 -1
  87. package/lib/simulation/automation/automation-simulation-base.js +1 -1
  88. package/lib/simulation/automation/aws-api-simulation.js +1 -1
  89. package/lib/simulation/automation/branch-simulation.js +1 -1
  90. package/lib/simulation/automation/change-instance-state-simulation.js +1 -1
  91. package/lib/simulation/automation/copy-image-simulation.js +1 -1
  92. package/lib/simulation/automation/create-image-simulation.js +1 -1
  93. package/lib/simulation/automation/create-stack-simulation.js +1 -1
  94. package/lib/simulation/automation/create-tags-simulation.js +1 -1
  95. package/lib/simulation/automation/delete-image-simulation.js +1 -1
  96. package/lib/simulation/automation/delete-stack-simulation.js +1 -1
  97. package/lib/simulation/automation/execute-script-simulation.js +1 -1
  98. package/lib/simulation/automation/execute-state-machine-simulation.js +1 -1
  99. package/lib/simulation/automation/invoke-lambda-function-simulation.js +1 -1
  100. package/lib/simulation/automation/invoke-webhook-simulation.js +1 -1
  101. package/lib/simulation/automation/pause-simulation.js +1 -1
  102. package/lib/simulation/automation/run-command-simulation.js +1 -1
  103. package/lib/simulation/automation/run-instance-simulation.js +1 -1
  104. package/lib/simulation/automation/sleep-simulation.js +1 -1
  105. package/lib/simulation/automation/update-variable-simulation.js +1 -1
  106. package/lib/simulation/automation/wait-for-resource-simulation.js +1 -1
  107. package/lib/simulation/automation-step-simulation.js +1 -1
  108. package/lib/simulation/command/command-simulation-base.js +1 -1
  109. package/lib/simulation/command/ps-module-simulation.js +1 -1
  110. package/lib/simulation/command/run-powershell-script-simulation.js +1 -1
  111. package/lib/simulation/command/run-shell-script-simulation.js +1 -1
  112. package/lib/simulation/command-step-simulation.js +1 -1
  113. package/lib/simulation/document/automation-simulation.js +1 -1
  114. package/lib/simulation/document/command-simulation.js +1 -1
  115. package/lib/simulation/simulation.js +1 -1
  116. package/node_modules/@aws-sdk/checksums/dist-cjs/flexible-checksums/getCrc32ChecksumAlgorithmFunction.browser.js +2 -6
  117. package/node_modules/@aws-sdk/checksums/dist-cjs/flexible-checksums/getCrc32ChecksumAlgorithmFunction.js +6 -11
  118. package/node_modules/@aws-sdk/checksums/dist-cjs/index.js +56 -56
  119. package/node_modules/@aws-sdk/checksums/package.json +6 -6
  120. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  121. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/bdd.js +2 -5
  122. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/endpointResolver.js +7 -11
  123. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/index.js +449 -469
  124. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/models/CloudFormationServiceException.js +4 -8
  125. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/models/errors.js +59 -91
  126. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.browser.js +22 -26
  127. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.js +30 -34
  128. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.native.js +4 -7
  129. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.shared.js +20 -24
  130. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/schemas/schemas_0.js +814 -533
  131. package/node_modules/@aws-sdk/client-cloudformation/package.json +8 -8
  132. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  133. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/endpoint/bdd.js +2 -5
  134. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/endpoint/endpointResolver.js +7 -11
  135. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/index.js +222 -242
  136. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/models/CloudWatchServiceException.js +4 -8
  137. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/models/errors.js +35 -55
  138. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/runtimeConfig.browser.js +25 -29
  139. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/runtimeConfig.js +33 -37
  140. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/runtimeConfig.native.js +4 -7
  141. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/runtimeConfig.shared.js +20 -24
  142. package/node_modules/@aws-sdk/client-cloudwatch/dist-cjs/schemas/schemas_0.js +419 -275
  143. package/node_modules/@aws-sdk/client-cloudwatch/package.json +9 -9
  144. package/node_modules/@aws-sdk/client-ec2/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  145. package/node_modules/@aws-sdk/client-ec2/dist-cjs/endpoint/bdd.js +2 -5
  146. package/node_modules/@aws-sdk/client-ec2/dist-cjs/endpoint/endpointResolver.js +7 -11
  147. package/node_modules/@aws-sdk/client-ec2/dist-cjs/index.js +2875 -2885
  148. package/node_modules/@aws-sdk/client-ec2/dist-cjs/models/EC2ServiceException.js +4 -8
  149. package/node_modules/@aws-sdk/client-ec2/dist-cjs/runtimeConfig.browser.js +22 -26
  150. package/node_modules/@aws-sdk/client-ec2/dist-cjs/runtimeConfig.js +30 -34
  151. package/node_modules/@aws-sdk/client-ec2/dist-cjs/runtimeConfig.native.js +4 -7
  152. package/node_modules/@aws-sdk/client-ec2/dist-cjs/runtimeConfig.shared.js +20 -24
  153. package/node_modules/@aws-sdk/client-ec2/dist-cjs/schemas/schemas_0.js +6885 -4554
  154. package/node_modules/@aws-sdk/client-ec2/dist-types/commands/CancelCapacityReservationCommand.d.ts +16 -10
  155. package/node_modules/@aws-sdk/client-ec2/package.json +11 -11
  156. package/node_modules/@aws-sdk/client-iam/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  157. package/node_modules/@aws-sdk/client-iam/dist-cjs/endpoint/bdd.js +2 -5
  158. package/node_modules/@aws-sdk/client-iam/dist-cjs/endpoint/endpointResolver.js +7 -11
  159. package/node_modules/@aws-sdk/client-iam/dist-cjs/index.js +634 -654
  160. package/node_modules/@aws-sdk/client-iam/dist-cjs/models/IAMServiceException.js +4 -8
  161. package/node_modules/@aws-sdk/client-iam/dist-cjs/models/errors.js +71 -109
  162. package/node_modules/@aws-sdk/client-iam/dist-cjs/runtimeConfig.browser.js +22 -26
  163. package/node_modules/@aws-sdk/client-iam/dist-cjs/runtimeConfig.js +30 -34
  164. package/node_modules/@aws-sdk/client-iam/dist-cjs/runtimeConfig.native.js +4 -7
  165. package/node_modules/@aws-sdk/client-iam/dist-cjs/runtimeConfig.shared.js +20 -24
  166. package/node_modules/@aws-sdk/client-iam/dist-cjs/schemas/schemas_0.js +1006 -665
  167. package/node_modules/@aws-sdk/client-iam/package.json +10 -10
  168. package/node_modules/@aws-sdk/client-lambda/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  169. package/node_modules/@aws-sdk/client-lambda/dist-cjs/endpoint/bdd.js +2 -5
  170. package/node_modules/@aws-sdk/client-lambda/dist-cjs/endpoint/endpointResolver.js +7 -11
  171. package/node_modules/@aws-sdk/client-lambda/dist-cjs/index.js +368 -386
  172. package/node_modules/@aws-sdk/client-lambda/dist-cjs/models/LambdaServiceException.js +4 -8
  173. package/node_modules/@aws-sdk/client-lambda/dist-cjs/models/errors.js +229 -145
  174. package/node_modules/@aws-sdk/client-lambda/dist-cjs/runtimeConfig.browser.js +24 -28
  175. package/node_modules/@aws-sdk/client-lambda/dist-cjs/runtimeConfig.js +32 -36
  176. package/node_modules/@aws-sdk/client-lambda/dist-cjs/runtimeConfig.native.js +4 -7
  177. package/node_modules/@aws-sdk/client-lambda/dist-cjs/runtimeConfig.shared.js +20 -24
  178. package/node_modules/@aws-sdk/client-lambda/dist-cjs/schemas/schemas_0.js +959 -581
  179. package/node_modules/@aws-sdk/client-lambda/dist-es/models/enums.js +2 -0
  180. package/node_modules/@aws-sdk/client-lambda/dist-es/models/errors.js +134 -0
  181. package/node_modules/@aws-sdk/client-lambda/dist-es/schemas/schemas_0.js +100 -31
  182. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/AddPermissionCommand.d.ts +5 -2
  183. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/CreateAliasCommand.d.ts +3 -0
  184. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/CreateEventSourceMappingCommand.d.ts +28 -28
  185. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/CreateFunctionCommand.d.ts +14 -14
  186. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/DeleteAliasCommand.d.ts +3 -0
  187. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/DeleteEventSourceMappingCommand.d.ts +16 -16
  188. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/DeleteFunctionUrlConfigCommand.d.ts +3 -0
  189. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/DeleteLayerVersionCommand.d.ts +6 -0
  190. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/GetEventSourceMappingCommand.d.ts +16 -16
  191. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/GetFunctionCodeSigningConfigCommand.d.ts +3 -0
  192. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/GetFunctionCommand.d.ts +8 -8
  193. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/GetFunctionConfigurationCommand.d.ts +8 -8
  194. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/GetLayerVersionByArnCommand.d.ts +4 -4
  195. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/GetLayerVersionCommand.d.ts +4 -4
  196. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/GetRuntimeManagementConfigCommand.d.ts +1 -1
  197. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/InvokeAsyncCommand.d.ts +72 -0
  198. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/InvokeCommand.d.ts +21 -0
  199. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/InvokeWithResponseStreamCommand.d.ts +6 -0
  200. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/ListEventSourceMappingsCommand.d.ts +16 -16
  201. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/ListFunctionsCommand.d.ts +8 -8
  202. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/ListLayerVersionsCommand.d.ts +6 -6
  203. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/ListLayersCommand.d.ts +6 -6
  204. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/ListVersionsByFunctionCommand.d.ts +8 -8
  205. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/PublishLayerVersionCommand.d.ts +8 -8
  206. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/PublishVersionCommand.d.ts +8 -8
  207. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/PutProvisionedConcurrencyConfigCommand.d.ts +1 -1
  208. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/RemovePermissionCommand.d.ts +3 -0
  209. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/SendDurableExecutionCallbackFailureCommand.d.ts +3 -0
  210. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/SendDurableExecutionCallbackHeartbeatCommand.d.ts +3 -0
  211. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/SendDurableExecutionCallbackSuccessCommand.d.ts +3 -0
  212. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/UpdateEventSourceMappingCommand.d.ts +32 -32
  213. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/UpdateFunctionCodeCommand.d.ts +12 -12
  214. package/node_modules/@aws-sdk/client-lambda/dist-types/commands/UpdateFunctionConfigurationCommand.d.ts +9 -9
  215. package/node_modules/@aws-sdk/client-lambda/dist-types/models/enums.d.ts +2 -0
  216. package/node_modules/@aws-sdk/client-lambda/dist-types/models/errors.d.ts +173 -0
  217. package/node_modules/@aws-sdk/client-lambda/dist-types/models/models_0.d.ts +158 -158
  218. package/node_modules/@aws-sdk/client-lambda/dist-types/schemas/schemas_0.d.ts +9 -0
  219. package/node_modules/@aws-sdk/client-lambda/dist-types/ts3.4/models/enums.d.ts +2 -0
  220. package/node_modules/@aws-sdk/client-lambda/dist-types/ts3.4/models/errors.d.ts +88 -0
  221. package/node_modules/@aws-sdk/client-lambda/dist-types/ts3.4/models/models_0.d.ts +33 -33
  222. package/node_modules/@aws-sdk/client-lambda/dist-types/ts3.4/schemas/schemas_0.d.ts +9 -0
  223. package/node_modules/@aws-sdk/client-lambda/package.json +12 -12
  224. package/node_modules/@aws-sdk/client-s3/README.md +35 -0
  225. package/node_modules/@aws-sdk/client-s3/dist-cjs/auth/httpAuthSchemeProvider.js +15 -19
  226. package/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/bdd.js +2 -5
  227. package/node_modules/@aws-sdk/client-s3/dist-cjs/endpoint/endpointResolver.js +7 -11
  228. package/node_modules/@aws-sdk/client-s3/dist-cjs/index.js +646 -535
  229. package/node_modules/@aws-sdk/client-s3/dist-cjs/models/S3ServiceException.js +4 -8
  230. package/node_modules/@aws-sdk/client-s3/dist-cjs/models/errors.js +106 -52
  231. package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.browser.js +29 -33
  232. package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.js +43 -47
  233. package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.native.js +4 -7
  234. package/node_modules/@aws-sdk/client-s3/dist-cjs/runtimeConfig.shared.js +25 -29
  235. package/node_modules/@aws-sdk/client-s3/dist-cjs/schemas/schemas_0.js +1256 -740
  236. package/node_modules/@aws-sdk/client-s3/dist-es/S3.js +12 -0
  237. package/node_modules/@aws-sdk/client-s3/dist-es/commands/DeleteObjectAnnotationCommand.js +23 -0
  238. package/node_modules/@aws-sdk/client-s3/dist-es/commands/GetObjectAnnotationCommand.js +28 -0
  239. package/node_modules/@aws-sdk/client-s3/dist-es/commands/ListObjectAnnotationsCommand.js +23 -0
  240. package/node_modules/@aws-sdk/client-s3/dist-es/commands/PutObjectAnnotationCommand.js +29 -0
  241. package/node_modules/@aws-sdk/client-s3/dist-es/commands/UpdateBucketMetadataAnnotationTableConfigurationCommand.js +27 -0
  242. package/node_modules/@aws-sdk/client-s3/dist-es/commands/index.js +5 -0
  243. package/node_modules/@aws-sdk/client-s3/dist-es/models/enums.js +12 -1
  244. package/node_modules/@aws-sdk/client-s3/dist-es/models/errors.js +76 -4
  245. package/node_modules/@aws-sdk/client-s3/dist-es/pagination/ListObjectAnnotationsPaginator.js +4 -0
  246. package/node_modules/@aws-sdk/client-s3/dist-es/pagination/index.js +1 -0
  247. package/node_modules/@aws-sdk/client-s3/dist-es/schemas/schemas_0.js +260 -100
  248. package/node_modules/@aws-sdk/client-s3/dist-types/S3.d.ts +42 -0
  249. package/node_modules/@aws-sdk/client-s3/dist-types/S3Client.d.ts +7 -2
  250. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CopyObjectCommand.d.ts +1 -0
  251. package/node_modules/@aws-sdk/client-s3/dist-types/commands/CreateBucketMetadataConfigurationCommand.d.ts +27 -0
  252. package/node_modules/@aws-sdk/client-s3/dist-types/commands/DeleteObjectAnnotationCommand.d.ts +119 -0
  253. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketMetadataConfigurationCommand.d.ts +11 -0
  254. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetBucketNotificationConfigurationCommand.d.ts +3 -3
  255. package/node_modules/@aws-sdk/client-s3/dist-types/commands/GetObjectAnnotationCommand.d.ts +141 -0
  256. package/node_modules/@aws-sdk/client-s3/dist-types/commands/ListObjectAnnotationsCommand.d.ts +138 -0
  257. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutBucketNotificationConfigurationCommand.d.ts +3 -3
  258. package/node_modules/@aws-sdk/client-s3/dist-types/commands/PutObjectAnnotationCommand.d.ts +166 -0
  259. package/node_modules/@aws-sdk/client-s3/dist-types/commands/RenameObjectCommand.d.ts +1 -1
  260. package/node_modules/@aws-sdk/client-s3/dist-types/commands/RestoreObjectCommand.d.ts +1 -2
  261. package/node_modules/@aws-sdk/client-s3/dist-types/commands/UpdateBucketMetadataAnnotationTableConfigurationCommand.d.ts +110 -0
  262. package/node_modules/@aws-sdk/client-s3/dist-types/commands/index.d.ts +5 -0
  263. package/node_modules/@aws-sdk/client-s3/dist-types/models/enums.d.ts +29 -2
  264. package/node_modules/@aws-sdk/client-s3/dist-types/models/errors.d.ts +76 -4
  265. package/node_modules/@aws-sdk/client-s3/dist-types/models/models_0.d.ts +925 -549
  266. package/node_modules/@aws-sdk/client-s3/dist-types/models/models_1.d.ts +380 -2
  267. package/node_modules/@aws-sdk/client-s3/dist-types/pagination/ListObjectAnnotationsPaginator.d.ts +7 -0
  268. package/node_modules/@aws-sdk/client-s3/dist-types/pagination/index.d.ts +1 -0
  269. package/node_modules/@aws-sdk/client-s3/dist-types/schemas/schemas_0.d.ts +24 -0
  270. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3.d.ts +98 -0
  271. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/S3Client.d.ts +30 -0
  272. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/DeleteObjectAnnotationCommand.d.ts +53 -0
  273. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/GetObjectAnnotationCommand.d.ts +61 -0
  274. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/ListObjectAnnotationsCommand.d.ts +53 -0
  275. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/PutObjectAnnotationCommand.d.ts +61 -0
  276. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RenameObjectCommand.d.ts +1 -1
  277. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/RestoreObjectCommand.d.ts +1 -2
  278. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/UpdateBucketMetadataAnnotationTableConfigurationCommand.d.ts +49 -0
  279. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/commands/index.d.ts +5 -0
  280. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/enums.d.ts +18 -3
  281. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/errors.d.ts +41 -3
  282. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_0.d.ts +138 -64
  283. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/models/models_1.d.ts +75 -5
  284. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/ListObjectAnnotationsPaginator.d.ts +11 -0
  285. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/pagination/index.d.ts +1 -0
  286. package/node_modules/@aws-sdk/client-s3/dist-types/ts3.4/schemas/schemas_0.d.ts +24 -0
  287. package/node_modules/@aws-sdk/client-s3/package.json +20 -20
  288. package/node_modules/@aws-sdk/client-sns/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  289. package/node_modules/@aws-sdk/client-sns/dist-cjs/endpoint/bdd.js +2 -5
  290. package/node_modules/@aws-sdk/client-sns/dist-cjs/endpoint/endpointResolver.js +7 -11
  291. package/node_modules/@aws-sdk/client-sns/dist-cjs/index.js +174 -194
  292. package/node_modules/@aws-sdk/client-sns/dist-cjs/models/SNSServiceException.js +4 -8
  293. package/node_modules/@aws-sdk/client-sns/dist-cjs/models/errors.js +69 -106
  294. package/node_modules/@aws-sdk/client-sns/dist-cjs/runtimeConfig.browser.js +22 -26
  295. package/node_modules/@aws-sdk/client-sns/dist-cjs/runtimeConfig.js +30 -34
  296. package/node_modules/@aws-sdk/client-sns/dist-cjs/runtimeConfig.native.js +4 -7
  297. package/node_modules/@aws-sdk/client-sns/dist-cjs/runtimeConfig.shared.js +20 -24
  298. package/node_modules/@aws-sdk/client-sns/dist-cjs/schemas/schemas_0.js +331 -218
  299. package/node_modules/@aws-sdk/client-sns/package.json +9 -9
  300. package/node_modules/@aws-sdk/client-sqs/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  301. package/node_modules/@aws-sdk/client-sqs/dist-cjs/endpoint/bdd.js +2 -5
  302. package/node_modules/@aws-sdk/client-sqs/dist-cjs/endpoint/endpointResolver.js +7 -11
  303. package/node_modules/@aws-sdk/client-sqs/dist-cjs/index.js +118 -138
  304. package/node_modules/@aws-sdk/client-sqs/dist-cjs/models/SQSServiceException.js +4 -8
  305. package/node_modules/@aws-sdk/client-sqs/dist-cjs/models/errors.js +57 -88
  306. package/node_modules/@aws-sdk/client-sqs/dist-cjs/runtimeConfig.browser.js +24 -28
  307. package/node_modules/@aws-sdk/client-sqs/dist-cjs/runtimeConfig.js +31 -35
  308. package/node_modules/@aws-sdk/client-sqs/dist-cjs/runtimeConfig.native.js +4 -7
  309. package/node_modules/@aws-sdk/client-sqs/dist-cjs/runtimeConfig.shared.js +20 -24
  310. package/node_modules/@aws-sdk/client-sqs/dist-cjs/schemas/schemas_0.js +222 -150
  311. package/node_modules/@aws-sdk/client-sqs/package.json +15 -15
  312. package/node_modules/@aws-sdk/client-ssm/dist-cjs/auth/httpAuthSchemeProvider.js +9 -15
  313. package/node_modules/@aws-sdk/client-ssm/dist-cjs/endpoint/bdd.js +2 -5
  314. package/node_modules/@aws-sdk/client-ssm/dist-cjs/endpoint/endpointResolver.js +7 -11
  315. package/node_modules/@aws-sdk/client-ssm/dist-cjs/index.js +543 -563
  316. package/node_modules/@aws-sdk/client-ssm/dist-cjs/models/SSMServiceException.js +4 -8
  317. package/node_modules/@aws-sdk/client-ssm/dist-cjs/models/errors.js +279 -423
  318. package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.browser.js +22 -26
  319. package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.js +30 -34
  320. package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.native.js +4 -7
  321. package/node_modules/@aws-sdk/client-ssm/dist-cjs/runtimeConfig.shared.js +20 -24
  322. package/node_modules/@aws-sdk/client-ssm/dist-cjs/schemas/schemas_0.js +1693 -1109
  323. package/node_modules/@aws-sdk/client-ssm/package.json +9 -9
  324. package/node_modules/@aws-sdk/core/dist-cjs/index.js +45 -50
  325. package/node_modules/@aws-sdk/core/dist-cjs/submodules/account-id-endpoint/index.js +2 -4
  326. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.browser.js +297 -23
  327. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +327 -52
  328. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.native.js +297 -23
  329. package/node_modules/@aws-sdk/core/dist-cjs/submodules/httpAuthSchemes/index.js +19 -21
  330. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +107 -109
  331. package/node_modules/@aws-sdk/core/dist-cjs/submodules/util/index.js +2 -4
  332. package/node_modules/@aws-sdk/core/dist-es/submodules/client/util-endpoints/lib/aws/partitions.js +276 -1
  333. package/node_modules/@aws-sdk/core/package.json +8 -8
  334. package/node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js +4 -6
  335. package/node_modules/@aws-sdk/credential-provider-env/package.json +6 -6
  336. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js +3 -7
  337. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.browser.js +12 -16
  338. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js +16 -21
  339. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js +14 -18
  340. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js +1 -5
  341. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.browser.js +2 -5
  342. package/node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js +2 -7
  343. package/node_modules/@aws-sdk/credential-provider-http/package.json +6 -6
  344. package/node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js +47 -41
  345. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveProcessCredentials.js +8 -4
  346. package/node_modules/@aws-sdk/credential-provider-ini/dist-es/resolveWebIdentityCredentials.js +14 -10
  347. package/node_modules/@aws-sdk/credential-provider-ini/package.json +13 -13
  348. package/node_modules/@aws-sdk/credential-provider-login/dist-cjs/index.js +31 -33
  349. package/node_modules/@aws-sdk/credential-provider-login/package.json +7 -7
  350. package/node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js +16 -18
  351. package/node_modules/@aws-sdk/credential-provider-node/package.json +11 -11
  352. package/node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js +11 -13
  353. package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
  354. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js +22 -24
  355. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BGYXHf8s.js +3 -0
  356. package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
  357. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js +10 -14
  358. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js +2 -6
  359. package/node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js +3 -27
  360. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -7
  361. package/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js +18 -23
  362. package/node_modules/@aws-sdk/middleware-flexible-checksums/package.json +5 -5
  363. package/node_modules/@aws-sdk/middleware-sdk-ec2/dist-cjs/index.js +11 -13
  364. package/node_modules/@aws-sdk/middleware-sdk-ec2/package.json +6 -6
  365. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js +1 -518
  366. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/submodules/s3/index.browser.js +31 -33
  367. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/submodules/s3/index.js +37 -39
  368. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/submodules/s3-control/index.js +14 -16
  369. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/index.js +1 -1
  370. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/index.d.ts +2 -2
  371. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/index.d.ts +2 -2
  372. package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +9 -11
  373. package/node_modules/@aws-sdk/middleware-sdk-sqs/dist-cjs/index.js +9 -11
  374. package/node_modules/@aws-sdk/middleware-sdk-sqs/package.json +5 -5
  375. package/node_modules/@aws-sdk/nested-clients/dist-cjs/index.js +0 -1
  376. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +82 -84
  377. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +158 -119
  378. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +80 -82
  379. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +80 -82
  380. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +99 -101
  381. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/commands/CreateOAuth2TokenCommand.js +4 -1
  382. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/bdd.js +70 -35
  383. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js +1 -1
  384. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/models/enums.js +3 -0
  385. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/EndpointParameters.d.ts +1 -0
  386. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/models/enums.d.ts +12 -0
  387. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/EndpointParameters.d.ts +1 -0
  388. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/models/enums.d.ts +3 -0
  389. package/node_modules/@aws-sdk/nested-clients/package.json +9 -8
  390. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js +4 -6
  391. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +5 -5
  392. package/node_modules/@aws-sdk/token-providers/dist-cjs/index.js +26 -28
  393. package/node_modules/@aws-sdk/token-providers/package.json +7 -7
  394. package/node_modules/@aws-sdk/types/dist-cjs/index.js +7 -8
  395. package/node_modules/@aws-sdk/types/package.json +4 -4
  396. package/node_modules/@aws-sdk/util-locate-window/dist-cjs/index.js +0 -2
  397. package/node_modules/@aws-sdk/util-locate-window/package.json +4 -4
  398. package/node_modules/@aws-sdk/xml-builder/dist-cjs/index.js +2 -4
  399. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +4 -7
  400. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +2 -5
  401. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +7 -10
  402. package/node_modules/@aws-sdk/xml-builder/node_modules/strnum/package.json +5 -4
  403. package/node_modules/@aws-sdk/xml-builder/package.json +4 -4
  404. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +518 -371
  405. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +1 -1
  406. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +10 -2
  407. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js +326 -269
  408. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js +192 -103
  409. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js +4 -2
  410. package/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-value-from-text-node.js +1 -1
  411. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +10 -2
  412. package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts +4 -0
  413. package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts +8 -4
  414. package/node_modules/@smithy/core/dist-types/submodules/protocols/HttpProtocol.d.ts +6 -0
  415. package/node_modules/@smithy/core/package.json +1 -1
  416. package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
  417. package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
  418. package/node_modules/@smithy/middleware-compression/package.json +2 -2
  419. package/node_modules/@smithy/node-http-handler/package.json +2 -2
  420. package/node_modules/@smithy/signature-v4/package.json +2 -2
  421. package/node_modules/anynum/package.json +2 -2
  422. package/node_modules/path-expression-matcher/README.md +82 -7
  423. package/node_modules/path-expression-matcher/lib/pem.cjs +1 -1
  424. package/node_modules/path-expression-matcher/lib/pem.d.cts +83 -2
  425. package/node_modules/path-expression-matcher/lib/pem.min.js +1 -1
  426. package/node_modules/path-expression-matcher/lib/pem.min.js.map +1 -1
  427. package/node_modules/path-expression-matcher/package.json +3 -2
  428. package/node_modules/path-expression-matcher/src/ExpressionSet.js +18 -2
  429. package/node_modules/path-expression-matcher/src/Matcher.js +93 -3
  430. package/node_modules/path-expression-matcher/src/index.d.ts +67 -1
  431. package/package.json +10 -10
  432. package/node_modules/@aws-sdk/credential-provider-sso/dist-cjs/loadSso-BKDNrsal.js +0 -8
  433. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.browser.js +0 -34
  434. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/index.browser.js +0 -1
  435. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/index.browser.d.ts +0 -2
  436. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/index.browser.d.ts +0 -39
@@ -1 +1 @@
1
- {"version":3,"file":"./lib/pem.min.js","mappings":"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","sources":["webpack://pem/webpack/universalModuleDefinition","webpack://pem/webpack/bootstrap","webpack://pem/webpack/runtime/define property getters","webpack://pem/webpack/runtime/hasOwnProperty shorthand","webpack://pem/webpack/runtime/make namespace object","webpack://pem/./src/Expression.js","webpack://pem/./src/Matcher.js","webpack://pem/./src/ExpressionSet.js","webpack://pem/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pem\"] = factory();\n\telse\n\t\troot[\"pem\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}, data) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n this.data = data;\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","import ExpressionSet from \"./ExpressionSet.js\";\n\n/**\n * MatcherView - A lightweight read-only view over a Matcher's internal state.\n *\n * Created once by Matcher and reused across all callbacks. Holds a direct\n * reference to the parent Matcher so it always reflects current parser state\n * with zero copying or freezing overhead.\n *\n * Users receive this via {@link Matcher#readOnly} or directly from parser\n * callbacks. It exposes all query and matching methods but has no mutation\n * methods — misuse is caught at the TypeScript level rather than at runtime.\n *\n * @example\n * const matcher = new Matcher();\n * const view = matcher.readOnly();\n *\n * matcher.push(\"root\", {});\n * view.getCurrentTag(); // \"root\"\n * view.getDepth(); // 1\n */\nexport class MatcherView {\n /**\n * @param {Matcher} matcher - The parent Matcher instance to read from.\n */\n constructor(matcher) {\n this._matcher = matcher;\n }\n\n /**\n * Get the path separator used by the parent matcher.\n * @returns {string}\n */\n get separator() {\n return this._matcher.separator;\n }\n\n /**\n * Get current tag name.\n * @returns {string|undefined}\n */\n getCurrentTag() {\n const path = this._matcher.path;\n return path.length > 0 ? path[path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace.\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n const path = this._matcher.path;\n return path.length > 0 ? path[path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value.\n * @param {string} attrName\n * @returns {*}\n */\n getAttrValue(attrName) {\n const path = this._matcher.path;\n if (path.length === 0) return undefined;\n return path[path.length - 1].values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute.\n * @param {string} attrName\n * @returns {boolean}\n */\n hasAttr(attrName) {\n const path = this._matcher.path;\n if (path.length === 0) return false;\n const current = path[path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent).\n * @returns {number}\n */\n getPosition() {\n const path = this._matcher.path;\n if (path.length === 0) return -1;\n return path[path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name).\n * @returns {number}\n */\n getCounter() {\n const path = this._matcher.path;\n if (path.length === 0) return -1;\n return path[path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition).\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth.\n * @returns {number}\n */\n getDepth() {\n return this._matcher.path.length;\n }\n\n /**\n * Get path as string.\n * @param {string} [separator] - Optional separator (uses default if not provided)\n * @param {boolean} [includeNamespace=true]\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n return this._matcher.toString(separator, includeNamespace);\n }\n\n /**\n * Get path as array of tag names.\n * @returns {string[]}\n */\n toArray() {\n return this._matcher.path.map(n => n.tag);\n }\n\n /**\n * Match current path against an Expression.\n * @param {Expression} expression\n * @returns {boolean}\n */\n matches(expression) {\n return this._matcher.matches(expression);\n }\n\n /**\n * Match any expression in the given set against the current path.\n * @param {ExpressionSet} exprSet\n * @returns {boolean}\n */\n matchesAny(exprSet) {\n return exprSet.matchesAny(this._matcher);\n }\n}\n\n/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions.\n *\n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n *\n * Use {@link Matcher#readOnly} to obtain a {@link MatcherView} safe to pass to\n * user callbacks — it always reflects current state with no Proxy overhead.\n *\n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n *\n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n /**\n * Create a new Matcher.\n * @param {Object} [options={}]\n * @param {string} [options.separator='.'] - Default path separator\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag, values, position, counter, namespace? }\n // values only present for current (last) node\n // Each siblingStacks entry: Map<tagName, count> tracking occurrences at each level\n this._pathStringCache = null;\n this._view = new MatcherView(this);\n }\n\n /**\n * Push a new tag onto the path.\n * @param {string} tagName\n * @param {Object|null} [attrValues=null]\n * @param {string|null} [namespace=null]\n */\n push(tagName, attrValues = null, namespace = null) {\n this._pathStringCache = null;\n\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n this.path[this.path.length - 1].values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n }\n\n /**\n * Pop the last tag from the path.\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) return undefined;\n this._pathStringCache = null;\n\n const node = this.path.pop();\n\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values.\n * Useful when attributes are parsed after push.\n * @param {Object} attrValues\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name.\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace.\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value.\n * @param {string} attrName\n * @returns {*}\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n return this.path[this.path.length - 1].values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute.\n * @param {string} attrName\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get current node's sibling position (child index in parent).\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name).\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition).\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth.\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string.\n * @param {string} [separator] - Optional separator (uses default if not provided)\n * @param {boolean} [includeNamespace=true]\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n const isDefault = (sep === this.separator && includeNamespace === true);\n\n if (isDefault) {\n if (this._pathStringCache !== null) {\n return this._pathStringCache;\n }\n const result = this.path.map(n =>\n (n.namespace) ? `${n.namespace}:${n.tag}` : n.tag\n ).join(sep);\n this._pathStringCache = result;\n return result;\n }\n\n return this.path.map(n =>\n (includeNamespace && n.namespace) ? `${n.namespace}:${n.tag}` : n.tag\n ).join(sep);\n }\n\n /**\n * Get path as array of tag names.\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty.\n */\n reset() {\n this._pathStringCache = null;\n this.path = [];\n this.siblingStacks = [];\n }\n\n /**\n * Match current path against an Expression.\n * @param {Expression} expression\n * @returns {boolean}\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n return this._matchSimple(segments);\n }\n\n /**\n * @private\n */\n _matchSimple(segments) {\n if (this.path.length !== segments.length) {\n return false;\n }\n\n for (let i = 0; i < segments.length; i++) {\n if (!this._matchSegment(segments[i], this.path[i], i === this.path.length - 1)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1;\n let segIdx = segments.length - 1;\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n segIdx--;\n\n if (segIdx < 0) {\n return true;\n }\n\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n if (this._matchSegment(nextSeg, this.path[i], i === this.path.length - 1)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n if (!this._matchSegment(segment, this.path[pathIdx], pathIdx === this.path.length - 1)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n return segIdx < 0;\n }\n\n /**\n * @private\n */\n _matchSegment(segment, node, isCurrentNode) {\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n if (segment.namespace !== undefined) {\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n if (segment.attrValue !== undefined) {\n if (String(node.values[segment.attrName]) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth' && counter !== segment.positionValue) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match any expression in the given set against the current path.\n * @param {ExpressionSet} exprSet\n * @returns {boolean}\n */\n matchesAny(exprSet) {\n return exprSet.matchesAny(this);\n }\n\n /**\n * Create a snapshot of current state.\n * @returns {Object}\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map))\n };\n }\n\n /**\n * Restore state from snapshot.\n * @param {Object} snapshot\n */\n restore(snapshot) {\n this._pathStringCache = null;\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n }\n\n /**\n * Return the read-only {@link MatcherView} for this matcher.\n *\n * The same instance is returned on every call — no allocation occurs.\n * It always reflects the current parser state and is safe to pass to\n * user callbacks without risk of accidental mutation.\n *\n * @returns {MatcherView}\n *\n * @example\n * const view = matcher.readOnly();\n * // pass view to callbacks — it stays in sync automatically\n * view.matches(expr); // ✓\n * view.getCurrentTag(); // ✓\n * // view.push(...) // ✗ method does not exist — caught by TypeScript\n */\n readOnly() {\n return this._view;\n }\n}","/**\n * ExpressionSet - An indexed collection of Expressions for efficient bulk matching\n *\n * Instead of iterating all expressions on every tag, ExpressionSet pre-indexes\n * them at insertion time by depth and terminal tag name. At match time, only\n * the relevant bucket is evaluated — typically reducing checks from O(E) to O(1)\n * lookup plus O(small bucket) matches.\n *\n * Three buckets are maintained:\n * - `_byDepthAndTag` — exact depth + exact tag name (tightest, used first)\n * - `_wildcardByDepth` — exact depth + wildcard tag `*` (depth-matched only)\n * - `_deepWildcards` — expressions containing `..` (cannot be depth-indexed)\n *\n * @example\n * import { Expression, ExpressionSet } from 'fast-xml-tagger';\n *\n * // Build once at config time\n * const stopNodes = new ExpressionSet();\n * stopNodes.add(new Expression('root.users.user'));\n * stopNodes.add(new Expression('root.config.setting'));\n * stopNodes.add(new Expression('..script'));\n *\n * // Query on every tag — hot path\n * if (stopNodes.matchesAny(matcher)) { ... }\n */\nexport default class ExpressionSet {\n constructor() {\n /** @type {Map<string, import('./Expression.js').default[]>} depth:tag → expressions */\n this._byDepthAndTag = new Map();\n\n /** @type {Map<number, import('./Expression.js').default[]>} depth → wildcard-tag expressions */\n this._wildcardByDepth = new Map();\n\n /** @type {import('./Expression.js').default[]} expressions containing deep wildcard (..) */\n this._deepWildcards = [];\n\n /** @type {Set<string>} pattern strings already added — used for deduplication */\n this._patterns = new Set();\n\n /** @type {boolean} whether the set is sealed against further additions */\n this._sealed = false;\n }\n\n /**\n * Add an Expression to the set.\n * Duplicate patterns (same pattern string) are silently ignored.\n *\n * @param {import('./Expression.js').default} expression - A pre-constructed Expression instance\n * @returns {this} for chaining\n * @throws {TypeError} if called after seal()\n *\n * @example\n * set.add(new Expression('root.users.user'));\n * set.add(new Expression('..script'));\n */\n add(expression) {\n if (this._sealed) {\n throw new TypeError(\n 'ExpressionSet is sealed. Create a new ExpressionSet to add more expressions.'\n );\n }\n\n // Deduplicate by pattern string\n if (this._patterns.has(expression.pattern)) return this;\n this._patterns.add(expression.pattern);\n\n if (expression.hasDeepWildcard()) {\n this._deepWildcards.push(expression);\n return this;\n }\n\n const depth = expression.length;\n const lastSeg = expression.segments[expression.segments.length - 1];\n const tag = lastSeg?.tag;\n\n if (!tag || tag === '*') {\n // Can index by depth but not by tag\n if (!this._wildcardByDepth.has(depth)) this._wildcardByDepth.set(depth, []);\n this._wildcardByDepth.get(depth).push(expression);\n } else {\n // Tightest bucket: depth + tag\n const key = `${depth}:${tag}`;\n if (!this._byDepthAndTag.has(key)) this._byDepthAndTag.set(key, []);\n this._byDepthAndTag.get(key).push(expression);\n }\n\n return this;\n }\n\n /**\n * Add multiple expressions at once.\n *\n * @param {import('./Expression.js').default[]} expressions - Array of Expression instances\n * @returns {this} for chaining\n *\n * @example\n * set.addAll([\n * new Expression('root.users.user'),\n * new Expression('root.config.setting'),\n * ]);\n */\n addAll(expressions) {\n for (const expr of expressions) this.add(expr);\n return this;\n }\n\n /**\n * Check whether a pattern string is already present in the set.\n *\n * @param {import('./Expression.js').default} expression\n * @returns {boolean}\n */\n has(expression) {\n return this._patterns.has(expression.pattern);\n }\n\n /**\n * Number of expressions in the set.\n * @type {number}\n */\n get size() {\n return this._patterns.size;\n }\n\n /**\n * Seal the set against further modifications.\n * Useful to prevent accidental mutations after config is built.\n * Calling add() or addAll() on a sealed set throws a TypeError.\n *\n * @returns {this}\n */\n seal() {\n this._sealed = true;\n return this;\n }\n\n /**\n * Whether the set has been sealed.\n * @type {boolean}\n */\n get isSealed() {\n return this._sealed;\n }\n\n /**\n * Test whether the matcher's current path matches any expression in the set.\n *\n * Evaluation order (cheapest → most expensive):\n * 1. Exact depth + tag bucket — O(1) lookup, typically 0–2 expressions\n * 2. Depth-only wildcard bucket — O(1) lookup, rare\n * 3. Deep-wildcard list — always checked, but usually small\n *\n * @param {import('./Matcher.js').default} matcher - Matcher instance (or readOnly view)\n * @returns {boolean} true if any expression matches the current path\n *\n * @example\n * if (stopNodes.matchesAny(matcher)) {\n * // handle stop node\n * }\n */\n matchesAny(matcher) {\n return this.findMatch(matcher) !== null;\n }\n /**\n * Find and return the first Expression that matches the matcher's current path.\n *\n * Uses the same evaluation order as matchesAny (cheapest → most expensive):\n * 1. Exact depth + tag bucket\n * 2. Depth-only wildcard bucket\n * 3. Deep-wildcard list\n *\n * @param {import('./Matcher.js').default} matcher - Matcher instance (or readOnly view)\n * @returns {import('./Expression.js').default | null} the first matching Expression, or null\n *\n * @example\n * const expr = stopNodes.findMatch(matcher);\n * if (expr) {\n * // access expr.config, expr.pattern, etc.\n * }\n */\n findMatch(matcher) {\n const depth = matcher.getDepth();\n const tag = matcher.getCurrentTag();\n\n // 1. Tightest bucket — most expressions live here\n const exactKey = `${depth}:${tag}`;\n const exactBucket = this._byDepthAndTag.get(exactKey);\n if (exactBucket) {\n for (let i = 0; i < exactBucket.length; i++) {\n if (matcher.matches(exactBucket[i])) return exactBucket[i];\n }\n }\n\n // 2. Depth-matched wildcard-tag expressions\n const wildcardBucket = this._wildcardByDepth.get(depth);\n if (wildcardBucket) {\n for (let i = 0; i < wildcardBucket.length; i++) {\n if (matcher.matches(wildcardBucket[i])) return wildcardBucket[i];\n }\n }\n\n // 3. Deep wildcards — cannot be pre-filtered by depth or tag\n for (let i = 0; i < this._deepWildcards.length; i++) {\n if (matcher.matches(this._deepWildcards[i])) return this._deepWildcards[i];\n }\n\n return null;\n }\n}\n","/**\n * fast-xml-tagger - XML/JSON path matching library\n * \n * Provides efficient path tracking and pattern matching for XML/JSON parsers.\n * \n * @example\n * import { Expression, Matcher } from 'fast-xml-tagger';\n * \n * // Create expression (parse once)\n * const expr = new Expression(\"root.users.user[id]\");\n * \n * // Create matcher (track path)\n * const matcher = new Matcher();\n * matcher.push(\"root\", [], {}, 0);\n * matcher.push(\"users\", [], {}, 0);\n * matcher.push(\"user\", [\"id\", \"type\"], { id: \"123\", type: \"admin\" }, 0);\n * \n * // Match\n * if (matcher.matches(expr)) {\n * console.log(\"Match found!\");\n * }\n */\n\nimport Expression from './Expression.js';\nimport Matcher from './Matcher.js';\nimport ExpressionSet from './ExpressionSet.js';\n\nexport { Expression, Matcher, ExpressionSet };\nexport default { Expression, Matcher, ExpressionSet };\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Expression","constructor","pattern","options","data","separator","segments","_parse","_hasDeepWildcard","some","seg","type","_hasAttributeCondition","undefined","attrName","_hasPositionSelector","position","i","currentPart","length","trim","push","_parseSegment","part","segment","bracketContent","withoutBrackets","bracketMatch","match","content","slice","namespace","tag","tagAndPosition","includes","nsIndex","indexOf","substring","Error","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","test","eqIndex","attrValue","nthMatch","positionValue","parseInt","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","toString","MatcherView","matcher","_matcher","getCurrentTag","path","getCurrentNamespace","getAttrValue","values","hasAttr","current","getPosition","getCounter","counter","getIndex","getDepth","includeNamespace","toArray","map","n","matches","expression","matchesAny","exprSet","Matcher","siblingStacks","_pathStringCache","_view","tagName","attrValues","currentLevel","Map","siblings","siblingKey","count","set","node","pop","updateCurrent","sep","result","join","reset","_matchWithDeepWildcard","_matchSimple","_matchSegment","pathIdx","segIdx","nextSeg","found","isCurrentNode","String","snapshot","restore","readOnly","ExpressionSet","_byDepthAndTag","_wildcardByDepth","_deepWildcards","_patterns","Set","_sealed","add","TypeError","has","depth","lastSeg","addAll","expressions","expr","size","seal","isSealed","findMatch","exactKey","exactBucket","wildcardBucket"],"sourceRoot":""}
1
+ {"version":3,"file":"./lib/pem.min.js","mappings":"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","sources":["webpack://pem/webpack/universalModuleDefinition","webpack://pem/webpack/bootstrap","webpack://pem/webpack/runtime/define property getters","webpack://pem/webpack/runtime/hasOwnProperty shorthand","webpack://pem/webpack/runtime/make namespace object","webpack://pem/./src/Expression.js","webpack://pem/./src/Matcher.js","webpack://pem/./src/ExpressionSet.js","webpack://pem/./src/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pem\"] = factory();\n\telse\n\t\troot[\"pem\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/**\n * Expression - Parses and stores a tag pattern expression\n * \n * Patterns are parsed once and stored in an optimized structure for fast matching.\n * \n * @example\n * const expr = new Expression(\"root.users.user\");\n * const expr2 = new Expression(\"..user[id]:first\");\n * const expr3 = new Expression(\"root/users/user\", { separator: '/' });\n */\nexport default class Expression {\n /**\n * Create a new Expression\n * @param {string} pattern - Pattern string (e.g., \"root.users.user\", \"..user[id]\")\n * @param {Object} options - Configuration options\n * @param {string} options.separator - Path separator (default: '.')\n */\n constructor(pattern, options = {}, data) {\n this.pattern = pattern;\n this.separator = options.separator || '.';\n this.segments = this._parse(pattern);\n this.data = data;\n // Cache expensive checks for performance (O(1) instead of O(n))\n this._hasDeepWildcard = this.segments.some(seg => seg.type === 'deep-wildcard');\n this._hasAttributeCondition = this.segments.some(seg => seg.attrName !== undefined);\n this._hasPositionSelector = this.segments.some(seg => seg.position !== undefined);\n }\n\n /**\n * Parse pattern string into segments\n * @private\n * @param {string} pattern - Pattern to parse\n * @returns {Array} Array of segment objects\n */\n _parse(pattern) {\n const segments = [];\n\n // Split by separator but handle \"..\" specially\n let i = 0;\n let currentPart = '';\n\n while (i < pattern.length) {\n if (pattern[i] === this.separator) {\n // Check if next char is also separator (deep wildcard)\n if (i + 1 < pattern.length && pattern[i + 1] === this.separator) {\n // Flush current part if any\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n currentPart = '';\n }\n // Add deep wildcard\n segments.push({ type: 'deep-wildcard' });\n i += 2; // Skip both separators\n } else {\n // Regular separator\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n currentPart = '';\n i++;\n }\n } else {\n currentPart += pattern[i];\n i++;\n }\n }\n\n // Flush remaining part\n if (currentPart.trim()) {\n segments.push(this._parseSegment(currentPart.trim()));\n }\n\n return segments;\n }\n\n /**\n * Parse a single segment\n * @private\n * @param {string} part - Segment string (e.g., \"user\", \"ns::user\", \"user[id]\", \"ns::user:first\")\n * @returns {Object} Segment object\n */\n _parseSegment(part) {\n const segment = { type: 'tag' };\n\n // NEW NAMESPACE SYNTAX (v2.0):\n // ============================\n // Namespace uses DOUBLE colon (::)\n // Position uses SINGLE colon (:)\n // \n // Examples:\n // \"user\" → tag\n // \"user:first\" → tag + position\n // \"user[id]\" → tag + attribute\n // \"user[id]:first\" → tag + attribute + position\n // \"ns::user\" → namespace + tag\n // \"ns::user:first\" → namespace + tag + position\n // \"ns::user[id]\" → namespace + tag + attribute\n // \"ns::user[id]:first\" → namespace + tag + attribute + position\n // \"ns::first\" → namespace + tag named \"first\" (NO ambiguity!)\n //\n // This eliminates all ambiguity:\n // :: = namespace separator\n // : = position selector\n // [] = attributes\n\n // Step 1: Extract brackets [attr] or [attr=value]\n let bracketContent = null;\n let withoutBrackets = part;\n\n const bracketMatch = part.match(/^([^\\[]+)(\\[[^\\]]*\\])(.*)$/);\n if (bracketMatch) {\n withoutBrackets = bracketMatch[1] + bracketMatch[3];\n if (bracketMatch[2]) {\n const content = bracketMatch[2].slice(1, -1);\n if (content) {\n bracketContent = content;\n }\n }\n }\n\n // Step 2: Check for namespace (double colon ::)\n let namespace = undefined;\n let tagAndPosition = withoutBrackets;\n\n if (withoutBrackets.includes('::')) {\n const nsIndex = withoutBrackets.indexOf('::');\n namespace = withoutBrackets.substring(0, nsIndex).trim();\n tagAndPosition = withoutBrackets.substring(nsIndex + 2).trim(); // Skip ::\n\n if (!namespace) {\n throw new Error(`Invalid namespace in pattern: ${part}`);\n }\n }\n\n // Step 3: Parse tag and position (single colon :)\n let tag = undefined;\n let positionMatch = null;\n\n if (tagAndPosition.includes(':')) {\n const colonIndex = tagAndPosition.lastIndexOf(':'); // Use last colon for position\n const tagPart = tagAndPosition.substring(0, colonIndex).trim();\n const posPart = tagAndPosition.substring(colonIndex + 1).trim();\n\n // Verify position is a valid keyword\n const isPositionKeyword = ['first', 'last', 'odd', 'even'].includes(posPart) ||\n /^nth\\(\\d+\\)$/.test(posPart);\n\n if (isPositionKeyword) {\n tag = tagPart;\n positionMatch = posPart;\n } else {\n // Not a valid position keyword, treat whole thing as tag\n tag = tagAndPosition;\n }\n } else {\n tag = tagAndPosition;\n }\n\n if (!tag) {\n throw new Error(`Invalid segment pattern: ${part}`);\n }\n\n segment.tag = tag;\n if (namespace) {\n segment.namespace = namespace;\n }\n\n // Step 4: Parse attributes\n if (bracketContent) {\n if (bracketContent.includes('=')) {\n const eqIndex = bracketContent.indexOf('=');\n segment.attrName = bracketContent.substring(0, eqIndex).trim();\n segment.attrValue = bracketContent.substring(eqIndex + 1).trim();\n } else {\n segment.attrName = bracketContent.trim();\n }\n }\n\n // Step 5: Parse position selector\n if (positionMatch) {\n const nthMatch = positionMatch.match(/^nth\\((\\d+)\\)$/);\n if (nthMatch) {\n segment.position = 'nth';\n segment.positionValue = parseInt(nthMatch[1], 10);\n } else {\n segment.position = positionMatch;\n }\n }\n\n return segment;\n }\n\n /**\n * Get the number of segments\n * @returns {number}\n */\n get length() {\n return this.segments.length;\n }\n\n /**\n * Check if expression contains deep wildcard\n * @returns {boolean}\n */\n hasDeepWildcard() {\n return this._hasDeepWildcard;\n }\n\n /**\n * Check if expression has attribute conditions\n * @returns {boolean}\n */\n hasAttributeCondition() {\n return this._hasAttributeCondition;\n }\n\n /**\n * Check if expression has position selectors\n * @returns {boolean}\n */\n hasPositionSelector() {\n return this._hasPositionSelector;\n }\n\n /**\n * Get string representation\n * @returns {string}\n */\n toString() {\n return this.pattern;\n }\n}","import ExpressionSet from \"./ExpressionSet.js\";\n\n/**\n * MatcherView - A lightweight read-only view over a Matcher's internal state.\n *\n * Created once by Matcher and reused across all callbacks. Holds a direct\n * reference to the parent Matcher so it always reflects current parser state\n * with zero copying or freezing overhead.\n *\n * Users receive this via {@link Matcher#readOnly} or directly from parser\n * callbacks. It exposes all query and matching methods but has no mutation\n * methods — misuse is caught at the TypeScript level rather than at runtime.\n *\n * @example\n * const matcher = new Matcher();\n * const view = matcher.readOnly();\n *\n * matcher.push(\"root\", {});\n * view.getCurrentTag(); // \"root\"\n * view.getDepth(); // 1\n */\nexport class MatcherView {\n /**\n * @param {Matcher} matcher - The parent Matcher instance to read from.\n */\n constructor(matcher) {\n this._matcher = matcher;\n }\n\n /**\n * Get the path separator used by the parent matcher.\n * @returns {string}\n */\n get separator() {\n return this._matcher.separator;\n }\n\n /**\n * Get current tag name.\n * @returns {string|undefined}\n */\n getCurrentTag() {\n const path = this._matcher.path;\n return path.length > 0 ? path[path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace.\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n const path = this._matcher.path;\n return path.length > 0 ? path[path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value.\n * @param {string} attrName\n * @returns {*}\n */\n getAttrValue(attrName) {\n const path = this._matcher.path;\n if (path.length === 0) return undefined;\n return path[path.length - 1].values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute.\n * @param {string} attrName\n * @returns {boolean}\n */\n hasAttr(attrName) {\n const path = this._matcher.path;\n if (path.length === 0) return false;\n const current = path[path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get the value of a \"kept\" attribute from the nearest ancestor (or\n * current node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.\n * @param {string} attrName\n * @returns {*}\n */\n getAnyParentAttr(attrName) {\n return this._matcher.getAnyParentAttr(attrName);\n }\n\n /**\n * Check whether any ancestor (or the current node) kept the given\n * attribute via `push(tag, attrs, ns, { keep: [...] })`.\n * @param {string} attrName\n * @returns {boolean}\n */\n hasAnyParentAttr(attrName) {\n return this._matcher.hasAnyParentAttr(attrName);\n }\n\n /**\n * Get current node's sibling position (child index in parent).\n * @returns {number}\n */\n getPosition() {\n const path = this._matcher.path;\n if (path.length === 0) return -1;\n return path[path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name).\n * @returns {number}\n */\n getCounter() {\n const path = this._matcher.path;\n if (path.length === 0) return -1;\n return path[path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition).\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth.\n * @returns {number}\n */\n getDepth() {\n return this._matcher.path.length;\n }\n\n /**\n * Get path as string.\n * @param {string} [separator] - Optional separator (uses default if not provided)\n * @param {boolean} [includeNamespace=true]\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n return this._matcher.toString(separator, includeNamespace);\n }\n\n /**\n * Get path as array of tag names.\n * @returns {string[]}\n */\n toArray() {\n return this._matcher.path.map(n => n.tag);\n }\n\n /**\n * Match current path against an Expression.\n * @param {Expression} expression\n * @returns {boolean}\n */\n matches(expression) {\n return this._matcher.matches(expression);\n }\n\n /**\n * Match any expression in the given set against the current path.\n * @param {ExpressionSet} exprSet\n * @returns {boolean}\n */\n matchesAny(exprSet) {\n return exprSet.matchesAny(this._matcher);\n }\n}\n\n/**\n * Matcher - Tracks current path in XML/JSON tree and matches against Expressions.\n *\n * The matcher maintains a stack of nodes representing the current path from root to\n * current tag. It only stores attribute values for the current (top) node to minimize\n * memory usage. Sibling tracking is used to auto-calculate position and counter.\n *\n * Use {@link Matcher#readOnly} to obtain a {@link MatcherView} safe to pass to\n * user callbacks — it always reflects current state with no Proxy overhead.\n *\n * @example\n * const matcher = new Matcher();\n * matcher.push(\"root\", {});\n * matcher.push(\"users\", {});\n * matcher.push(\"user\", { id: \"123\", type: \"admin\" });\n *\n * const expr = new Expression(\"root.users.user\");\n * matcher.matches(expr); // true\n */\nexport default class Matcher {\n /**\n * Create a new Matcher.\n * @param {Object} [options={}]\n * @param {string} [options.separator='.'] - Default path separator\n */\n constructor(options = {}) {\n this.separator = options.separator || '.';\n this.path = [];\n this.siblingStacks = [];\n // Each path node: { tag, values, position, counter, namespace? }\n // values only present for current (last) node\n // Each siblingStacks entry: Map<tagName, count> tracking occurrences at each level\n this._pathStringCache = null;\n this._view = new MatcherView(this);\n\n // Kept-attribute stack: only populated when push() is called with options.keep.\n this._keptAttrs = [];\n }\n\n /**\n * Push a new tag onto the path.\n * @param {string} tagName\n * @param {Object|null} [attrValues=null]\n * @param {string|null} [namespace=null]\n * @param {Object|null} [options=null]\n * @param {string[]} [options.keep] - Names of attributes (from attrValues)\n */\n push(tagName, attrValues = null, namespace = null, options = null) {\n this._pathStringCache = null;\n\n // Remove values from previous current node (now becoming ancestor)\n if (this.path.length > 0) {\n this.path[this.path.length - 1].values = undefined;\n }\n\n // Get or create sibling tracking for current level\n const currentLevel = this.path.length;\n if (!this.siblingStacks[currentLevel]) {\n this.siblingStacks[currentLevel] = new Map();\n }\n\n const siblings = this.siblingStacks[currentLevel];\n\n // Create a unique key for sibling tracking that includes namespace\n const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;\n\n // Calculate counter (how many times this tag appeared at this level)\n const counter = siblings.get(siblingKey) || 0;\n\n // Calculate position (total children at this level so far)\n let position = 0;\n for (const count of siblings.values()) {\n position += count;\n }\n\n // Update sibling count for this tag\n siblings.set(siblingKey, counter + 1);\n\n // Create new node\n const node = {\n tag: tagName,\n position: position,\n counter: counter\n };\n\n if (namespace !== null && namespace !== undefined) {\n node.namespace = namespace;\n }\n\n if (attrValues !== null && attrValues !== undefined) {\n node.values = attrValues;\n }\n\n this.path.push(node);\n\n // Depth of the node we just pushed (1-based, matches this.path.length)\n const depth = this.path.length;\n\n // Copy only the requested attributes into the kept-attrs stack. This is\n // the one part of push() whose cost scales with input (O(keep.length))\n // rather than being O(1) — by design, since the caller is explicitly\n // opting in for specific attribute names. No options/keep => zero added\n // cost beyond the two property reads below.\n const keep = options !== null ? options.keep : null;\n if (keep !== null && keep !== undefined && keep.length > 0 && attrValues) {\n for (let i = 0; i < keep.length; i++) {\n const name = keep[i];\n if (attrValues[name] !== undefined) {\n this._keptAttrs.push({ depth, name, value: attrValues[name] });\n }\n }\n }\n }\n\n /**\n * Pop the last tag from the path.\n * @returns {Object|undefined} The popped node\n */\n pop() {\n if (this.path.length === 0) return undefined;\n this._pathStringCache = null;\n\n const node = this.path.pop();\n\n if (this.siblingStacks.length > this.path.length + 1) {\n this.siblingStacks.length = this.path.length + 1;\n }\n\n // Drop any kept attributes that belonged to the popped node (or deeper).\n // _keptAttrs is depth-ordered (push only ever appends increasing depths),\n // so this is a backward scan that stops at the first surviving entry —\n // typically O(1) since kept attrs are rare by design.\n const poppedDepth = this.path.length + 1;\n while (\n this._keptAttrs.length > 0 &&\n this._keptAttrs[this._keptAttrs.length - 1].depth >= poppedDepth\n ) {\n this._keptAttrs.pop();\n }\n\n return node;\n }\n\n /**\n * Update current node's attribute values.\n * Useful when attributes are parsed after push.\n * @param {Object} attrValues\n */\n updateCurrent(attrValues) {\n if (this.path.length > 0) {\n const current = this.path[this.path.length - 1];\n if (attrValues !== null && attrValues !== undefined) {\n current.values = attrValues;\n }\n }\n }\n\n /**\n * Get current tag name.\n * @returns {string|undefined}\n */\n getCurrentTag() {\n return this.path.length > 0 ? this.path[this.path.length - 1].tag : undefined;\n }\n\n /**\n * Get current namespace.\n * @returns {string|undefined}\n */\n getCurrentNamespace() {\n return this.path.length > 0 ? this.path[this.path.length - 1].namespace : undefined;\n }\n\n /**\n * Get current node's attribute value.\n * @param {string} attrName\n * @returns {*}\n */\n getAttrValue(attrName) {\n if (this.path.length === 0) return undefined;\n return this.path[this.path.length - 1].values?.[attrName];\n }\n\n /**\n * Check if current node has an attribute.\n * @param {string} attrName\n * @returns {boolean}\n */\n hasAttr(attrName) {\n if (this.path.length === 0) return false;\n const current = this.path[this.path.length - 1];\n return current.values !== undefined && attrName in current.values;\n }\n\n /**\n * Get the value of a \"kept\" attribute from the nearest ancestor (or\n * current node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.\n * Unlike getAttrValue(), this works regardless of how deep the path has\n * gone since the attribute was pushed — but only for attribute names that\n * were explicitly marked with `keep` at push time. Cost is proportional to\n * the number of currently-kept attributes (typically 0-3), not path depth.\n * @param {string} attrName\n * @returns {*} the value, or undefined if no ancestor kept this attribute\n */\n getAnyParentAttr(attrName) {\n const kept = this._keptAttrs;\n for (let i = kept.length - 1; i >= 0; i--) {\n if (kept[i].name === attrName) return kept[i].value;\n }\n return undefined;\n }\n\n /**\n * Check whether any ancestor (or the current node) kept the given\n * attribute via `push(tag, attrs, ns, { keep: [...] })`.\n * @param {string} attrName\n * @returns {boolean}\n */\n hasAnyParentAttr(attrName) {\n const kept = this._keptAttrs;\n for (let i = kept.length - 1; i >= 0; i--) {\n if (kept[i].name === attrName) return true;\n }\n return false;\n }\n\n /**\n * Get current node's sibling position (child index in parent).\n * @returns {number}\n */\n getPosition() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].position ?? 0;\n }\n\n /**\n * Get current node's repeat counter (occurrence count of this tag name).\n * @returns {number}\n */\n getCounter() {\n if (this.path.length === 0) return -1;\n return this.path[this.path.length - 1].counter ?? 0;\n }\n\n /**\n * Get current node's sibling index (alias for getPosition).\n * @returns {number}\n * @deprecated Use getPosition() or getCounter() instead\n */\n getIndex() {\n return this.getPosition();\n }\n\n /**\n * Get current path depth.\n * @returns {number}\n */\n getDepth() {\n return this.path.length;\n }\n\n /**\n * Get path as string.\n * @param {string} [separator] - Optional separator (uses default if not provided)\n * @param {boolean} [includeNamespace=true]\n * @returns {string}\n */\n toString(separator, includeNamespace = true) {\n const sep = separator || this.separator;\n const isDefault = (sep === this.separator && includeNamespace === true);\n\n if (isDefault) {\n if (this._pathStringCache !== null) {\n return this._pathStringCache;\n }\n const result = this.path.map(n =>\n (n.namespace) ? `${n.namespace}:${n.tag}` : n.tag\n ).join(sep);\n this._pathStringCache = result;\n return result;\n }\n\n return this.path.map(n =>\n (includeNamespace && n.namespace) ? `${n.namespace}:${n.tag}` : n.tag\n ).join(sep);\n }\n\n /**\n * Get path as array of tag names.\n * @returns {string[]}\n */\n toArray() {\n return this.path.map(n => n.tag);\n }\n\n /**\n * Reset the path to empty.\n */\n reset() {\n this._pathStringCache = null;\n this.path = [];\n this.siblingStacks = [];\n this._keptAttrs = [];\n }\n\n /**\n * Match current path against an Expression.\n * @param {Expression} expression\n * @returns {boolean}\n */\n matches(expression) {\n const segments = expression.segments;\n\n if (segments.length === 0) {\n return false;\n }\n\n if (expression.hasDeepWildcard()) {\n return this._matchWithDeepWildcard(segments);\n }\n\n return this._matchSimple(segments);\n }\n\n /**\n * @private\n */\n _matchSimple(segments) {\n if (this.path.length !== segments.length) {\n return false;\n }\n\n for (let i = 0; i < segments.length; i++) {\n if (!this._matchSegment(segments[i], this.path[i], i === this.path.length - 1)) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * @private\n */\n _matchWithDeepWildcard(segments) {\n let pathIdx = this.path.length - 1;\n let segIdx = segments.length - 1;\n\n while (segIdx >= 0 && pathIdx >= 0) {\n const segment = segments[segIdx];\n\n if (segment.type === 'deep-wildcard') {\n segIdx--;\n\n if (segIdx < 0) {\n return true;\n }\n\n const nextSeg = segments[segIdx];\n let found = false;\n\n for (let i = pathIdx; i >= 0; i--) {\n if (this._matchSegment(nextSeg, this.path[i], i === this.path.length - 1)) {\n pathIdx = i - 1;\n segIdx--;\n found = true;\n break;\n }\n }\n\n if (!found) {\n return false;\n }\n } else {\n if (!this._matchSegment(segment, this.path[pathIdx], pathIdx === this.path.length - 1)) {\n return false;\n }\n pathIdx--;\n segIdx--;\n }\n }\n\n return segIdx < 0;\n }\n\n /**\n * @private\n */\n _matchSegment(segment, node, isCurrentNode) {\n if (segment.tag !== '*' && segment.tag !== node.tag) {\n return false;\n }\n\n if (segment.namespace !== undefined) {\n if (segment.namespace !== '*' && segment.namespace !== node.namespace) {\n return false;\n }\n }\n\n if (segment.attrName !== undefined) {\n if (!isCurrentNode) {\n return false;\n }\n\n if (!node.values || !(segment.attrName in node.values)) {\n return false;\n }\n\n if (segment.attrValue !== undefined) {\n if (String(node.values[segment.attrName]) !== String(segment.attrValue)) {\n return false;\n }\n }\n }\n\n if (segment.position !== undefined) {\n if (!isCurrentNode) {\n return false;\n }\n\n const counter = node.counter ?? 0;\n\n if (segment.position === 'first' && counter !== 0) {\n return false;\n } else if (segment.position === 'odd' && counter % 2 !== 1) {\n return false;\n } else if (segment.position === 'even' && counter % 2 !== 0) {\n return false;\n } else if (segment.position === 'nth' && counter !== segment.positionValue) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Match any expression in the given set against the current path.\n * @param {ExpressionSet} exprSet\n * @returns {boolean}\n */\n matchesAny(exprSet) {\n return exprSet.matchesAny(this);\n }\n\n /**\n * Create a snapshot of current state.\n * @returns {Object}\n */\n snapshot() {\n return {\n path: this.path.map(node => ({ ...node })),\n siblingStacks: this.siblingStacks.map(map => new Map(map)),\n keptAttrs: this._keptAttrs.map(entry => ({ ...entry }))\n };\n }\n\n /**\n * Restore state from snapshot.\n * @param {Object} snapshot\n */\n restore(snapshot) {\n this._pathStringCache = null;\n this.path = snapshot.path.map(node => ({ ...node }));\n this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));\n this._keptAttrs = (snapshot.keptAttrs || []).map(entry => ({ ...entry }));\n }\n\n /**\n * Return the read-only {@link MatcherView} for this matcher.\n *\n * The same instance is returned on every call — no allocation occurs.\n * It always reflects the current parser state and is safe to pass to\n * user callbacks without risk of accidental mutation.\n *\n * @returns {MatcherView}\n *\n * @example\n * const view = matcher.readOnly();\n * // pass view to callbacks — it stays in sync automatically\n * view.matches(expr); // ✓\n * view.getCurrentTag(); // ✓\n * // view.push(...) // ✗ method does not exist — caught by TypeScript\n */\n readOnly() {\n return this._view;\n }\n}\n","/**\n * ExpressionSet - An indexed collection of Expressions for efficient bulk matching\n *\n * Instead of iterating all expressions on every tag, ExpressionSet pre-indexes\n * them at insertion time by depth and terminal tag name. At match time, only\n * the relevant bucket is evaluated — typically reducing checks from O(E) to O(1)\n * lookup plus O(small bucket) matches.\n *\n * Three buckets are maintained:\n * - `_byDepthAndTag` — exact depth + exact tag name (tightest, used first)\n * - `_wildcardByDepth` — exact depth + wildcard tag `*` (depth-matched only)\n * - `_deepWildcards` — expressions containing `..` (cannot be depth-indexed)\n *\n * @example\n * import { Expression, ExpressionSet } from 'fast-xml-tagger';\n *\n * // Build once at config time\n * const stopNodes = new ExpressionSet();\n * stopNodes.add(new Expression('root.users.user'));\n * stopNodes.add(new Expression('root.config.setting'));\n * stopNodes.add(new Expression('..script'));\n *\n * // Query on every tag — hot path\n * if (stopNodes.matchesAny(matcher)) { ... }\n */\nexport default class ExpressionSet {\n constructor() {\n /** @type {Map<string, import('./Expression.js').default[]>} depth:tag → expressions */\n this._byDepthAndTag = new Map();\n\n /** @type {Map<number, import('./Expression.js').default[]>} depth → wildcard-tag expressions */\n this._wildcardByDepth = new Map();\n\n /** @type {import('./Expression.js').default[]} expressions containing deep wildcard (..) */\n this._deepWildcards = [];\n\n /** @type {Map<string, import('./Expression.js').default[]>} terminalTag → deep wildcard expressions */\n this._deepByTerminalTag = new Map();\n\n /** @type {Set<string>} pattern strings already added — used for deduplication */\n this._patterns = new Set();\n\n /** @type {boolean} whether the set is sealed against further additions */\n this._sealed = false;\n }\n\n /**\n * Add an Expression to the set.\n * Duplicate patterns (same pattern string) are silently ignored.\n *\n * @param {import('./Expression.js').default} expression - A pre-constructed Expression instance\n * @returns {this} for chaining\n * @throws {TypeError} if called after seal()\n *\n * @example\n * set.add(new Expression('root.users.user'));\n * set.add(new Expression('..script'));\n */\n add(expression) {\n if (this._sealed) {\n throw new TypeError(\n 'ExpressionSet is sealed. Create a new ExpressionSet to add more expressions.'\n );\n }\n\n // Deduplicate by pattern string\n if (this._patterns.has(expression.pattern)) return this;\n this._patterns.add(expression.pattern);\n\n if (expression.hasDeepWildcard()) {\n const lastSeg = expression.segments[expression.segments.length - 1];\n if (lastSeg && lastSeg.type !== 'deep-wildcard' && lastSeg.tag !== '*') {\n const tag = lastSeg.tag;\n if (!this._deepByTerminalTag.has(tag)) this._deepByTerminalTag.set(tag, []);\n this._deepByTerminalTag.get(tag).push(expression);\n } else {\n this._deepWildcards.push(expression);\n }\n return this;\n }\n\n const depth = expression.length;\n const lastSeg = expression.segments[expression.segments.length - 1];\n const tag = lastSeg?.tag;\n\n if (!tag || tag === '*') {\n // Can index by depth but not by tag\n if (!this._wildcardByDepth.has(depth)) this._wildcardByDepth.set(depth, []);\n this._wildcardByDepth.get(depth).push(expression);\n } else {\n // Tightest bucket: depth + tag\n const key = `${depth}:${tag}`;\n if (!this._byDepthAndTag.has(key)) this._byDepthAndTag.set(key, []);\n this._byDepthAndTag.get(key).push(expression);\n }\n\n return this;\n }\n\n /**\n * Add multiple expressions at once.\n *\n * @param {import('./Expression.js').default[]} expressions - Array of Expression instances\n * @returns {this} for chaining\n *\n * @example\n * set.addAll([\n * new Expression('root.users.user'),\n * new Expression('root.config.setting'),\n * ]);\n */\n addAll(expressions) {\n for (const expr of expressions) this.add(expr);\n return this;\n }\n\n /**\n * Check whether a pattern string is already present in the set.\n *\n * @param {import('./Expression.js').default} expression\n * @returns {boolean}\n */\n has(expression) {\n return this._patterns.has(expression.pattern);\n }\n\n /**\n * Number of expressions in the set.\n * @type {number}\n */\n get size() {\n return this._patterns.size;\n }\n\n /**\n * Seal the set against further modifications.\n * Useful to prevent accidental mutations after config is built.\n * Calling add() or addAll() on a sealed set throws a TypeError.\n *\n * @returns {this}\n */\n seal() {\n this._sealed = true;\n return this;\n }\n\n /**\n * Whether the set has been sealed.\n * @type {boolean}\n */\n get isSealed() {\n return this._sealed;\n }\n\n /**\n * Test whether the matcher's current path matches any expression in the set.\n *\n * Evaluation order (cheapest → most expensive):\n * 1. Exact depth + tag bucket — O(1) lookup, typically 0–2 expressions\n * 2. Depth-only wildcard bucket — O(1) lookup, rare\n * 3. Deep-wildcard list — always checked, but usually small\n *\n * @param {import('./Matcher.js').default} matcher - Matcher instance (or readOnly view)\n * @returns {boolean} true if any expression matches the current path\n *\n * @example\n * if (stopNodes.matchesAny(matcher)) {\n * // handle stop node\n * }\n */\n matchesAny(matcher) {\n return this.findMatch(matcher) !== null;\n }\n /**\n * Find and return the first Expression that matches the matcher's current path.\n *\n * Uses the same evaluation order as matchesAny (cheapest → most expensive):\n * 1. Exact depth + tag bucket\n * 2. Depth-only wildcard bucket\n * 3. Deep-wildcard list\n *\n * @param {import('./Matcher.js').default} matcher - Matcher instance (or readOnly view)\n * @returns {import('./Expression.js').default | null} the first matching Expression, or null\n *\n * @example\n * const expr = stopNodes.findMatch(matcher);\n * if (expr) {\n * // access expr.config, expr.pattern, etc.\n * }\n */\n findMatch(matcher) {\n const depth = matcher.getDepth();\n const tag = matcher.getCurrentTag();\n\n // 1. Tightest bucket — most expressions live here\n const exactKey = `${depth}:${tag}`;\n const exactBucket = this._byDepthAndTag.get(exactKey);\n if (exactBucket) {\n for (let i = 0; i < exactBucket.length; i++) {\n if (matcher.matches(exactBucket[i])) return exactBucket[i];\n }\n }\n\n // 2. Depth-matched wildcard-tag expressions\n const wildcardBucket = this._wildcardByDepth.get(depth);\n if (wildcardBucket) {\n for (let i = 0; i < wildcardBucket.length; i++) {\n if (matcher.matches(wildcardBucket[i])) return wildcardBucket[i];\n }\n }\n\n // 3. Deep wildcards — indexed by terminal tag, then unindexed fallback\n const deepBucket = this._deepByTerminalTag.get(tag);\n if (deepBucket) {\n for (let i = 0; i < deepBucket.length; i++) {\n if (matcher.matches(deepBucket[i])) return deepBucket[i];\n }\n }\n for (let i = 0; i < this._deepWildcards.length; i++) {\n if (matcher.matches(this._deepWildcards[i])) return this._deepWildcards[i];\n }\n\n return null;\n }\n}\n","/**\n * fast-xml-tagger - XML/JSON path matching library\n * \n * Provides efficient path tracking and pattern matching for XML/JSON parsers.\n * \n * @example\n * import { Expression, Matcher } from 'fast-xml-tagger';\n * \n * // Create expression (parse once)\n * const expr = new Expression(\"root.users.user[id]\");\n * \n * // Create matcher (track path)\n * const matcher = new Matcher();\n * matcher.push(\"root\", [], {}, 0);\n * matcher.push(\"users\", [], {}, 0);\n * matcher.push(\"user\", [\"id\", \"type\"], { id: \"123\", type: \"admin\" }, 0);\n * \n * // Match\n * if (matcher.matches(expr)) {\n * console.log(\"Match found!\");\n * }\n */\n\nimport Expression from './Expression.js';\nimport Matcher from './Matcher.js';\nimport ExpressionSet from './ExpressionSet.js';\n\nexport { Expression, Matcher, ExpressionSet };\nexport default { Expression, Matcher, ExpressionSet };\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","Expression","constructor","pattern","options","data","separator","segments","_parse","_hasDeepWildcard","some","seg","type","_hasAttributeCondition","undefined","attrName","_hasPositionSelector","position","i","currentPart","length","trim","push","_parseSegment","part","segment","bracketContent","withoutBrackets","bracketMatch","match","content","slice","namespace","tag","tagAndPosition","includes","nsIndex","indexOf","substring","Error","positionMatch","colonIndex","lastIndexOf","tagPart","posPart","test","eqIndex","attrValue","nthMatch","positionValue","parseInt","hasDeepWildcard","hasAttributeCondition","hasPositionSelector","toString","MatcherView","matcher","_matcher","getCurrentTag","path","getCurrentNamespace","getAttrValue","values","hasAttr","current","getAnyParentAttr","hasAnyParentAttr","getPosition","getCounter","counter","getIndex","getDepth","includeNamespace","toArray","map","n","matches","expression","matchesAny","exprSet","Matcher","siblingStacks","_pathStringCache","_view","_keptAttrs","tagName","attrValues","currentLevel","Map","siblings","siblingKey","count","set","node","depth","keep","name","pop","poppedDepth","updateCurrent","kept","sep","result","join","reset","_matchWithDeepWildcard","_matchSimple","_matchSegment","pathIdx","segIdx","nextSeg","found","isCurrentNode","String","snapshot","keptAttrs","entry","restore","readOnly","ExpressionSet","_byDepthAndTag","_wildcardByDepth","_deepWildcards","_deepByTerminalTag","_patterns","Set","_sealed","add","TypeError","has","lastSeg","addAll","expressions","expr","size","seal","isSealed","findMatch","exactKey","exactBucket","wildcardBucket","deepBucket"],"sourceRoot":""}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "path-expression-matcher",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Efficient path tracking and pattern matching for XML/JSON parsers",
5
5
  "main": "./lib/pem.cjs",
6
6
  "type": "module",
@@ -25,6 +25,7 @@
25
25
  },
26
26
  "keywords": [
27
27
  "xml",
28
+ "html",
28
29
  "json",
29
30
  "yaml",
30
31
  "path",
@@ -75,4 +76,4 @@
75
76
  "url": "https://github.com/sponsors/NaturalIntelligence"
76
77
  }
77
78
  ]
78
- }
79
+ }
@@ -34,6 +34,9 @@ export default class ExpressionSet {
34
34
  /** @type {import('./Expression.js').default[]} expressions containing deep wildcard (..) */
35
35
  this._deepWildcards = [];
36
36
 
37
+ /** @type {Map<string, import('./Expression.js').default[]>} terminalTag → deep wildcard expressions */
38
+ this._deepByTerminalTag = new Map();
39
+
37
40
  /** @type {Set<string>} pattern strings already added — used for deduplication */
38
41
  this._patterns = new Set();
39
42
 
@@ -65,7 +68,14 @@ export default class ExpressionSet {
65
68
  this._patterns.add(expression.pattern);
66
69
 
67
70
  if (expression.hasDeepWildcard()) {
68
- this._deepWildcards.push(expression);
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
+ }
69
79
  return this;
70
80
  }
71
81
 
@@ -199,7 +209,13 @@ export default class ExpressionSet {
199
209
  }
200
210
  }
201
211
 
202
- // 3. Deep wildcards — cannot be pre-filtered by depth or tag
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
+ }
203
219
  for (let i = 0; i < this._deepWildcards.length; i++) {
204
220
  if (matcher.matches(this._deepWildcards[i])) return this._deepWildcards[i];
205
221
  }
@@ -76,6 +76,26 @@ export class MatcherView {
76
76
  return current.values !== undefined && attrName in current.values;
77
77
  }
78
78
 
79
+ /**
80
+ * Get the value of a "kept" attribute from the nearest ancestor (or
81
+ * current node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.
82
+ * @param {string} attrName
83
+ * @returns {*}
84
+ */
85
+ getAnyParentAttr(attrName) {
86
+ return this._matcher.getAnyParentAttr(attrName);
87
+ }
88
+
89
+ /**
90
+ * Check whether any ancestor (or the current node) kept the given
91
+ * attribute via `push(tag, attrs, ns, { keep: [...] })`.
92
+ * @param {string} attrName
93
+ * @returns {boolean}
94
+ */
95
+ hasAnyParentAttr(attrName) {
96
+ return this._matcher.hasAnyParentAttr(attrName);
97
+ }
98
+
79
99
  /**
80
100
  * Get current node's sibling position (child index in parent).
81
101
  * @returns {number}
@@ -184,6 +204,9 @@ export default class Matcher {
184
204
  // Each siblingStacks entry: Map<tagName, count> tracking occurrences at each level
185
205
  this._pathStringCache = null;
186
206
  this._view = new MatcherView(this);
207
+
208
+ // Kept-attribute stack: only populated when push() is called with options.keep.
209
+ this._keptAttrs = [];
187
210
  }
188
211
 
189
212
  /**
@@ -191,8 +214,10 @@ export default class Matcher {
191
214
  * @param {string} tagName
192
215
  * @param {Object|null} [attrValues=null]
193
216
  * @param {string|null} [namespace=null]
217
+ * @param {Object|null} [options=null]
218
+ * @param {string[]} [options.keep] - Names of attributes (from attrValues)
194
219
  */
195
- push(tagName, attrValues = null, namespace = null) {
220
+ push(tagName, attrValues = null, namespace = null, options = null) {
196
221
  this._pathStringCache = null;
197
222
 
198
223
  // Remove values from previous current node (now becoming ancestor)
@@ -239,6 +264,24 @@ export default class Matcher {
239
264
  }
240
265
 
241
266
  this.path.push(node);
267
+
268
+ // Depth of the node we just pushed (1-based, matches this.path.length)
269
+ const depth = this.path.length;
270
+
271
+ // Copy only the requested attributes into the kept-attrs stack. This is
272
+ // the one part of push() whose cost scales with input (O(keep.length))
273
+ // rather than being O(1) — by design, since the caller is explicitly
274
+ // opting in for specific attribute names. No options/keep => zero added
275
+ // cost beyond the two property reads below.
276
+ const keep = options !== null ? options.keep : null;
277
+ if (keep !== null && keep !== undefined && keep.length > 0 && attrValues) {
278
+ for (let i = 0; i < keep.length; i++) {
279
+ const name = keep[i];
280
+ if (attrValues[name] !== undefined) {
281
+ this._keptAttrs.push({ depth, name, value: attrValues[name] });
282
+ }
283
+ }
284
+ }
242
285
  }
243
286
 
244
287
  /**
@@ -255,6 +298,18 @@ export default class Matcher {
255
298
  this.siblingStacks.length = this.path.length + 1;
256
299
  }
257
300
 
301
+ // Drop any kept attributes that belonged to the popped node (or deeper).
302
+ // _keptAttrs is depth-ordered (push only ever appends increasing depths),
303
+ // so this is a backward scan that stops at the first surviving entry —
304
+ // typically O(1) since kept attrs are rare by design.
305
+ const poppedDepth = this.path.length + 1;
306
+ while (
307
+ this._keptAttrs.length > 0 &&
308
+ this._keptAttrs[this._keptAttrs.length - 1].depth >= poppedDepth
309
+ ) {
310
+ this._keptAttrs.pop();
311
+ }
312
+
258
313
  return node;
259
314
  }
260
315
 
@@ -309,6 +364,38 @@ export default class Matcher {
309
364
  return current.values !== undefined && attrName in current.values;
310
365
  }
311
366
 
367
+ /**
368
+ * Get the value of a "kept" attribute from the nearest ancestor (or
369
+ * current node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.
370
+ * Unlike getAttrValue(), this works regardless of how deep the path has
371
+ * gone since the attribute was pushed — but only for attribute names that
372
+ * were explicitly marked with `keep` at push time. Cost is proportional to
373
+ * the number of currently-kept attributes (typically 0-3), not path depth.
374
+ * @param {string} attrName
375
+ * @returns {*} the value, or undefined if no ancestor kept this attribute
376
+ */
377
+ getAnyParentAttr(attrName) {
378
+ const kept = this._keptAttrs;
379
+ for (let i = kept.length - 1; i >= 0; i--) {
380
+ if (kept[i].name === attrName) return kept[i].value;
381
+ }
382
+ return undefined;
383
+ }
384
+
385
+ /**
386
+ * Check whether any ancestor (or the current node) kept the given
387
+ * attribute via `push(tag, attrs, ns, { keep: [...] })`.
388
+ * @param {string} attrName
389
+ * @returns {boolean}
390
+ */
391
+ hasAnyParentAttr(attrName) {
392
+ const kept = this._keptAttrs;
393
+ for (let i = kept.length - 1; i >= 0; i--) {
394
+ if (kept[i].name === attrName) return true;
395
+ }
396
+ return false;
397
+ }
398
+
312
399
  /**
313
400
  * Get current node's sibling position (child index in parent).
314
401
  * @returns {number}
@@ -385,6 +472,7 @@ export default class Matcher {
385
472
  this._pathStringCache = null;
386
473
  this.path = [];
387
474
  this.siblingStacks = [];
475
+ this._keptAttrs = [];
388
476
  }
389
477
 
390
478
  /**
@@ -534,7 +622,8 @@ export default class Matcher {
534
622
  snapshot() {
535
623
  return {
536
624
  path: this.path.map(node => ({ ...node })),
537
- siblingStacks: this.siblingStacks.map(map => new Map(map))
625
+ siblingStacks: this.siblingStacks.map(map => new Map(map)),
626
+ keptAttrs: this._keptAttrs.map(entry => ({ ...entry }))
538
627
  };
539
628
  }
540
629
 
@@ -546,6 +635,7 @@ export default class Matcher {
546
635
  this._pathStringCache = null;
547
636
  this.path = snapshot.path.map(node => ({ ...node }));
548
637
  this.siblingStacks = snapshot.siblingStacks.map(map => new Map(map));
638
+ this._keptAttrs = (snapshot.keptAttrs || []).map(entry => ({ ...entry }));
549
639
  }
550
640
 
551
641
  /**
@@ -567,4 +657,4 @@ export default class Matcher {
567
657
  readOnly() {
568
658
  return this._view;
569
659
  }
570
- }
660
+ }
@@ -186,6 +186,42 @@ export interface MatcherSnapshot {
186
186
  * Copy of sibling tracking maps
187
187
  */
188
188
  siblingStacks: Map<string, number>[];
189
+
190
+ /**
191
+ * Copy of the kept-attrs stack (see {@link PushOptions.keep})
192
+ */
193
+ keptAttrs: KeptAttrEntry[];
194
+ }
195
+
196
+ /**
197
+ * A single entry in the matcher's kept-attrs stack — an attribute value
198
+ * explicitly retained at push time via `{ keep: [...] }` so it remains
199
+ * reachable from descendants after the owning node is no longer current.
200
+ */
201
+ export interface KeptAttrEntry {
202
+ /** Path depth (1-based) of the node that declared this kept attribute */
203
+ depth: number;
204
+ /** Attribute name */
205
+ name: string;
206
+ /** Attribute value at push time */
207
+ value: any;
208
+ }
209
+
210
+ /**
211
+ * Options for {@link Matcher#push}
212
+ */
213
+ export interface PushOptions {
214
+ /**
215
+ * Names of attributes (from `attrValues`) to retain for ancestor lookup
216
+ * (`getAnyParentAttr` / `hasAnyParentAttr`) even after this node is no
217
+ * longer the current node.
218
+ *
219
+ * Use sparingly — this is for attributes you know you'll need much deeper
220
+ * in the tree (e.g. `xml:space`, a SOAP envelope's `version`), not a
221
+ * general substitute for `getAttrValue()`. Cost is proportional to
222
+ * `keep.length`, independent of path depth.
223
+ */
224
+ keep?: string[];
189
225
  }
190
226
 
191
227
  /**
@@ -227,6 +263,16 @@ export class MatcherView {
227
263
  getCurrentNamespace(): string | undefined;
228
264
  getAttrValue(attrName: string): any;
229
265
  hasAttr(attrName: string): boolean;
266
+ /**
267
+ * Get the value of a "kept" attribute from the nearest ancestor (or current
268
+ * node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.
269
+ */
270
+ getAnyParentAttr(attrName: string): any;
271
+ /**
272
+ * Check whether any ancestor (or the current node) kept the given
273
+ * attribute via `push(tag, attrs, ns, { keep: [...] })`.
274
+ */
275
+ hasAnyParentAttr(attrName: string): boolean;
230
276
  getPosition(): number;
231
277
  getCounter(): number;
232
278
  /** @deprecated Use getPosition() or getCounter() instead */
@@ -285,15 +331,23 @@ export class Matcher {
285
331
  * @param tagName - Name of the tag
286
332
  * @param attrValues - Attribute key-value pairs for current node (optional)
287
333
  * @param namespace - Namespace for the tag (optional)
334
+ * @param options - Push options, e.g. `{ keep: ['version'] }` to retain
335
+ * specific attributes for ancestor lookup after this node stops being current
288
336
  *
289
337
  * @example
290
338
  * ```typescript
291
339
  * matcher.push("user", { id: "123", type: "admin" });
292
340
  * matcher.push("user", { id: "456" }, "ns");
293
341
  * matcher.push("container", null);
342
+ * matcher.push("Body", { version: "1.1" }, "soap", { keep: ["version"] });
294
343
  * ```
295
344
  */
296
- push(tagName: string, attrValues?: Record<string, any> | null, namespace?: string | null): void;
345
+ push(
346
+ tagName: string,
347
+ attrValues?: Record<string, any> | null,
348
+ namespace?: string | null,
349
+ options?: PushOptions | null
350
+ ): void;
297
351
 
298
352
  /**
299
353
  * Pop the last tag from the path.
@@ -329,6 +383,18 @@ export class Matcher {
329
383
  getCurrentNamespace(): string | undefined;
330
384
  getAttrValue(attrName: string): any;
331
385
  hasAttr(attrName: string): boolean;
386
+ /**
387
+ * Get the value of a "kept" attribute from the nearest ancestor (or current
388
+ * node) that declared it via `push(tag, attrs, ns, { keep: [...] })`.
389
+ * Cost is proportional to the number of currently-kept attributes, not
390
+ * path depth.
391
+ */
392
+ getAnyParentAttr(attrName: string): any;
393
+ /**
394
+ * Check whether any ancestor (or the current node) kept the given
395
+ * attribute via `push(tag, attrs, ns, { keep: [...] })`.
396
+ */
397
+ hasAnyParentAttr(attrName: string): boolean;
332
398
  getPosition(): number;
333
399
  getCounter(): number;
334
400
  /** @deprecated Use getPosition() or getCounter() instead */
package/package.json CHANGED
@@ -74,15 +74,15 @@
74
74
  "constructs": "^10.5.1"
75
75
  },
76
76
  "dependencies": {
77
- "@aws-sdk/client-cloudformation": "^3.1068.0",
78
- "@aws-sdk/client-cloudwatch": "^3.1068.0",
79
- "@aws-sdk/client-ec2": "^3.1068.0",
80
- "@aws-sdk/client-iam": "^3.1068.0",
81
- "@aws-sdk/client-lambda": "^3.1068.0",
82
- "@aws-sdk/client-s3": "^3.1068.0",
83
- "@aws-sdk/client-sns": "^3.1068.0",
84
- "@aws-sdk/client-sqs": "^3.1068.0",
85
- "@aws-sdk/client-ssm": "^3.1068.0",
77
+ "@aws-sdk/client-cloudformation": "^3.1073.0",
78
+ "@aws-sdk/client-cloudwatch": "^3.1073.0",
79
+ "@aws-sdk/client-ec2": "^3.1073.0",
80
+ "@aws-sdk/client-iam": "^3.1073.0",
81
+ "@aws-sdk/client-lambda": "^3.1073.0",
82
+ "@aws-sdk/client-s3": "^3.1073.0",
83
+ "@aws-sdk/client-sns": "^3.1073.0",
84
+ "@aws-sdk/client-sqs": "^3.1073.0",
85
+ "@aws-sdk/client-ssm": "^3.1073.0",
86
86
  "immutable": "^4.3.8",
87
87
  "js-yaml": "^4.2.0",
88
88
  "jsonpath": "^1.3.0",
@@ -116,7 +116,7 @@
116
116
  "publishConfig": {
117
117
  "access": "public"
118
118
  },
119
- "version": "0.0.65",
119
+ "version": "0.0.66",
120
120
  "jest": {
121
121
  "coverageProvider": "v8",
122
122
  "maxWorkers": 4,
@@ -1,8 +0,0 @@
1
- 'use strict';
2
-
3
- var sso = require('@aws-sdk/nested-clients/sso');
4
-
5
-
6
-
7
- exports.GetRoleCredentialsCommand = sso.GetRoleCredentialsCommand;
8
- exports.SSOClient = sso.SSOClient;