@cdklabs/cdk-ecs-codedeploy 0.0.437 → 0.0.439

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 (399) hide show
  1. package/.jsii +3 -3
  2. package/lib/api-canary/index.js +1 -1
  3. package/lib/ecs-appspec/index.js +1 -1
  4. package/lib/ecs-deployment/index.js +1 -1
  5. package/lib/ecs-patterns/application-load-balanced-codedeployed-fargate-service.js +1 -1
  6. package/node_modules/@aws-sdk/client-codedeploy/dist-cjs/endpoint/bdd.js +49 -0
  7. package/node_modules/@aws-sdk/client-codedeploy/dist-cjs/endpoint/endpointResolver.js +2 -2
  8. package/node_modules/@aws-sdk/client-codedeploy/dist-es/endpoint/bdd.js +46 -0
  9. package/node_modules/@aws-sdk/client-codedeploy/dist-es/endpoint/endpointResolver.js +3 -3
  10. package/node_modules/@aws-sdk/client-codedeploy/dist-types/endpoint/bdd.d.ts +2 -0
  11. package/node_modules/@aws-sdk/client-codedeploy/dist-types/ts3.4/endpoint/bdd.d.ts +2 -0
  12. package/node_modules/@aws-sdk/client-codedeploy/package.json +34 -34
  13. package/node_modules/@aws-sdk/core/dist-cjs/index.js +72 -61
  14. package/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js +3 -0
  15. package/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js +70 -61
  16. package/node_modules/@aws-sdk/core/dist-es/submodules/client/setFeature.js +2 -0
  17. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/ProtocolLib.js +11 -10
  18. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/UnionSerde.js +4 -1
  19. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsJsonRpcProtocol.js +4 -5
  20. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/AwsRestJsonProtocol.js +2 -1
  21. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeDeserializer.js +6 -4
  22. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/JsonShapeSerializer.js +15 -10
  23. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/experimental/SinglePassJsonShapeSerializer.js +2 -1
  24. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/json/parseJsonBody.js +17 -17
  25. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/AwsQueryProtocol.js +3 -8
  26. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/query/QueryShapeSerializer.js +2 -1
  27. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/AwsRestXmlProtocol.js +2 -2
  28. package/node_modules/@aws-sdk/core/dist-es/submodules/protocols/xml/XmlShapeSerializer.js +4 -2
  29. package/node_modules/@aws-sdk/core/dist-types/submodules/client/setFeature.d.ts +1 -1
  30. package/node_modules/@aws-sdk/core/dist-types/submodules/protocols/json/JsonShapeSerializer.d.ts +2 -2
  31. package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/protocols/json/JsonShapeSerializer.d.ts +1 -1
  32. package/node_modules/@aws-sdk/core/package.json +14 -12
  33. package/node_modules/@aws-sdk/credential-provider-env/package.json +5 -5
  34. package/node_modules/@aws-sdk/credential-provider-http/package.json +10 -10
  35. package/node_modules/@aws-sdk/credential-provider-ini/package.json +14 -14
  36. package/node_modules/@aws-sdk/credential-provider-login/package.json +8 -8
  37. package/node_modules/@aws-sdk/credential-provider-node/package.json +12 -12
  38. package/node_modules/@aws-sdk/credential-provider-process/package.json +6 -6
  39. package/node_modules/@aws-sdk/credential-provider-sso/package.json +8 -8
  40. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +7 -7
  41. package/node_modules/@aws-sdk/middleware-host-header/package.json +4 -4
  42. package/node_modules/@aws-sdk/middleware-logger/package.json +3 -3
  43. package/node_modules/@aws-sdk/middleware-recursion-detection/package.json +4 -4
  44. package/node_modules/@aws-sdk/middleware-sdk-s3/LICENSE +201 -0
  45. package/node_modules/@aws-sdk/middleware-sdk-s3/README.md +4 -0
  46. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js +581 -0
  47. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/toStream.browser.js +11 -0
  48. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/toStream.js +7 -0
  49. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/bucket-endpoint-middleware.js +36 -0
  50. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/check-content-length-header.js +32 -0
  51. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/index.js +9 -0
  52. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/protocol/S3RestXmlProtocol.js +25 -0
  53. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-endpoint-middleware.js +41 -0
  54. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/region-redirect-middleware.js +42 -0
  55. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-expires-middleware.js +33 -0
  56. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCache.js +39 -0
  57. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityCacheEntry.js +14 -0
  58. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/S3ExpressIdentityProviderImpl.js +49 -0
  59. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/classes/SignatureV4S3Express.js +41 -0
  60. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/constants.js +13 -0
  61. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressHttpSigningMiddleware.js +38 -0
  62. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressMiddleware.js +41 -0
  63. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/signS3Express.js +7 -0
  64. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/index.js +7 -0
  65. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentity.js +1 -0
  66. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/interfaces/S3ExpressIdentityProvider.js +1 -0
  67. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3Configuration.js +17 -0
  68. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/throw-200-exceptions.js +51 -0
  69. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/toStream.browser.js +8 -0
  70. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/toStream.js +4 -0
  71. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-es/validate-bucket-name.js +25 -0
  72. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/bucket-endpoint-middleware.d.ts +13 -0
  73. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/check-content-length-header.d.ts +16 -0
  74. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/index.d.ts +9 -0
  75. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/protocol/S3RestXmlProtocol.d.ts +20 -0
  76. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-endpoint-middleware.d.ts +10 -0
  77. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/region-redirect-middleware.d.ts +20 -0
  78. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-expires-middleware.d.ts +26 -0
  79. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCache.d.ts +16 -0
  80. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts +16 -0
  81. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts +32 -0
  82. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/classes/SignatureV4S3Express.d.ts +17 -0
  83. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/constants.d.ts +37 -0
  84. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts +27 -0
  85. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/s3ExpressMiddleware.d.ts +32 -0
  86. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/functions/signS3Express.d.ts +9 -0
  87. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/index.d.ts +9 -0
  88. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentity.d.ts +6 -0
  89. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3-express/interfaces/S3ExpressIdentityProvider.d.ts +12 -0
  90. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/s3Configuration.d.ts +79 -0
  91. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/throw-200-exceptions.d.ts +21 -0
  92. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/toStream.browser.d.ts +4 -0
  93. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/toStream.d.ts +5 -0
  94. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/bucket-endpoint-middleware.d.ts +9 -0
  95. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/check-content-length-header.d.ts +13 -0
  96. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/index.d.ts +9 -0
  97. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/protocol/S3RestXmlProtocol.d.ts +15 -0
  98. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-endpoint-middleware.d.ts +6 -0
  99. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/region-redirect-middleware.d.ts +17 -0
  100. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-expires-middleware.d.ts +14 -0
  101. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCache.d.ts +14 -0
  102. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityCacheEntry.d.ts +12 -0
  103. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/S3ExpressIdentityProviderImpl.d.ts +31 -0
  104. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/classes/SignatureV4S3Express.d.ts +19 -0
  105. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/constants.d.ts +11 -0
  106. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressHttpSigningMiddleware.d.ts +40 -0
  107. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/s3ExpressMiddleware.d.ts +27 -0
  108. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/functions/signS3Express.d.ts +21 -0
  109. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/index.d.ts +17 -0
  110. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentity.d.ts +2 -0
  111. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3-express/interfaces/S3ExpressIdentityProvider.d.ts +8 -0
  112. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/s3Configuration.d.ts +33 -0
  113. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/throw-200-exceptions.d.ts +19 -0
  114. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/toStream.browser.d.ts +1 -0
  115. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/toStream.d.ts +2 -0
  116. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/ts3.4/validate-bucket-name.d.ts +13 -0
  117. package/node_modules/@aws-sdk/middleware-sdk-s3/dist-types/validate-bucket-name.d.ts +14 -0
  118. package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +79 -0
  119. package/node_modules/@aws-sdk/middleware-user-agent/package.json +8 -8
  120. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/bdd.js +100 -0
  121. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/endpointResolver.js +2 -2
  122. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/bdd.js +90 -0
  123. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/endpointResolver.js +2 -2
  124. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/bdd.js +80 -0
  125. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/endpointResolver.js +2 -2
  126. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/bdd.js +80 -0
  127. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/endpointResolver.js +2 -2
  128. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/STSClient.js +1 -0
  129. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/auth/httpAuthSchemeProvider.js +87 -5
  130. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/bdd.js +150 -0
  131. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/endpointResolver.js +2 -2
  132. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/models/errors.js +1 -0
  133. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.js +6 -0
  134. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/runtimeConfig.shared.js +7 -0
  135. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/bdd.js +97 -0
  136. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/endpointResolver.js +3 -3
  137. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/bdd.js +87 -0
  138. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/endpointResolver.js +3 -3
  139. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/bdd.js +77 -0
  140. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/endpointResolver.js +3 -3
  141. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/bdd.js +77 -0
  142. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/endpointResolver.js +3 -3
  143. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/STSClient.js +1 -0
  144. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/auth/httpAuthSchemeProvider.js +88 -4
  145. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/bdd.js +147 -0
  146. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/endpointResolver.js +3 -3
  147. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/models/errors.js +1 -0
  148. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.js +7 -1
  149. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/runtimeConfig.shared.js +8 -1
  150. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/bdd.d.ts +2 -0
  151. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/bdd.d.ts +2 -0
  152. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/bdd.d.ts +2 -0
  153. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/bdd.d.ts +2 -0
  154. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/auth/httpAuthSchemeProvider.d.ts +15 -7
  155. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/bdd.d.ts +2 -0
  156. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/models/errors.d.ts +1 -0
  157. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.browser.d.ts +3 -2
  158. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.d.ts +10 -4
  159. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.native.d.ts +3 -2
  160. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/runtimeConfig.shared.d.ts +3 -1
  161. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/bdd.d.ts +2 -0
  162. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/bdd.d.ts +2 -0
  163. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/bdd.d.ts +2 -0
  164. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/bdd.d.ts +2 -0
  165. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/auth/httpAuthSchemeProvider.d.ts +20 -9
  166. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/bdd.d.ts +2 -0
  167. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/models/errors.d.ts +1 -0
  168. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.browser.d.ts +11 -5
  169. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.d.ts +35 -16
  170. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.native.d.ts +11 -5
  171. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/runtimeConfig.shared.d.ts +8 -1
  172. package/node_modules/@aws-sdk/nested-clients/package.json +33 -32
  173. package/node_modules/@aws-sdk/region-config-resolver/package.json +5 -5
  174. package/node_modules/@aws-sdk/signature-v4-multi-region/LICENSE +201 -0
  175. package/node_modules/@aws-sdk/signature-v4-multi-region/README.md +32 -0
  176. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-cjs/index.js +121 -0
  177. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/SignatureV4MultiRegion.js +112 -0
  178. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/index.js +2 -0
  179. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-es/signature-v4-crt-container.js +3 -0
  180. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/SignatureV4MultiRegion.d.ts +35 -0
  181. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/index.d.ts +5 -0
  182. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/signature-v4-crt-container.d.ts +28 -0
  183. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/SignatureV4MultiRegion.d.ts +41 -0
  184. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/index.d.ts +2 -0
  185. package/node_modules/@aws-sdk/signature-v4-multi-region/dist-types/ts3.4/signature-v4-crt-container.d.ts +20 -0
  186. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +61 -0
  187. package/node_modules/@aws-sdk/token-providers/package.json +7 -7
  188. package/node_modules/@aws-sdk/types/package.json +2 -2
  189. package/node_modules/@aws-sdk/util-arn-parser/LICENSE +201 -0
  190. package/node_modules/@aws-sdk/util-arn-parser/README.md +4 -0
  191. package/node_modules/@aws-sdk/util-arn-parser/dist-cjs/index.js +27 -0
  192. package/node_modules/@aws-sdk/util-arn-parser/dist-es/index.js +21 -0
  193. package/node_modules/@aws-sdk/util-arn-parser/dist-types/index.d.ts +32 -0
  194. package/node_modules/@aws-sdk/util-arn-parser/dist-types/ts3.4/index.d.ts +14 -0
  195. package/node_modules/@aws-sdk/util-arn-parser/package.json +55 -0
  196. package/node_modules/@aws-sdk/util-endpoints/package.json +5 -5
  197. package/node_modules/@aws-sdk/util-user-agent-browser/package.json +3 -3
  198. package/node_modules/@aws-sdk/util-user-agent-node/package.json +5 -5
  199. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +0 -2
  200. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +0 -2
  201. package/node_modules/@aws-sdk/xml-builder/package.json +3 -3
  202. package/node_modules/@nodable/entities/README.md +41 -0
  203. package/node_modules/@nodable/entities/package.json +54 -0
  204. package/node_modules/@nodable/entities/src/EntityDecoder.js +543 -0
  205. package/node_modules/@nodable/entities/src/EntityEncoder.js +194 -0
  206. package/node_modules/@nodable/entities/src/entities.js +1177 -0
  207. package/node_modules/@nodable/entities/src/entityTries.js +49 -0
  208. package/node_modules/@nodable/entities/src/index.d.ts +264 -0
  209. package/node_modules/@nodable/entities/src/index.js +29 -0
  210. package/node_modules/@smithy/config-resolver/package.json +5 -5
  211. package/node_modules/@smithy/core/dist-cjs/index.js +2 -1
  212. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +32 -14
  213. package/node_modules/@smithy/core/dist-cjs/submodules/endpoints/index.js +2 -2
  214. package/node_modules/@smithy/core/dist-cjs/submodules/event-streams/index.js +16 -8
  215. package/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js +17 -10
  216. package/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js +6 -1
  217. package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +6 -3
  218. package/node_modules/@smithy/core/dist-cjs/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
  219. package/node_modules/@smithy/core/dist-es/submodules/cbor/CborCodec.js +23 -11
  220. package/node_modules/@smithy/core/dist-es/submodules/cbor/parseCborBody.js +9 -3
  221. package/node_modules/@smithy/core/dist-es/submodules/endpoints/toEndpointV1.js +2 -2
  222. package/node_modules/@smithy/core/dist-es/submodules/event-streams/EventStreamSerde.js +16 -8
  223. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpBindingProtocol.js +9 -4
  224. package/node_modules/@smithy/core/dist-es/submodules/protocols/HttpProtocol.js +8 -6
  225. package/node_modules/@smithy/core/dist-es/submodules/schema/TypeRegistry.js +6 -1
  226. package/node_modules/@smithy/core/dist-es/submodules/serde/parse-utils.js +6 -3
  227. package/node_modules/@smithy/core/dist-es/util-identity-and-auth/DefaultIdentityProviderConfig.js +2 -1
  228. package/node_modules/@smithy/core/dist-types/submodules/schema/TypeRegistry.d.ts +1 -1
  229. package/node_modules/@smithy/core/package.json +7 -7
  230. package/node_modules/@smithy/credential-provider-imds/package.json +5 -5
  231. package/node_modules/@smithy/fetch-http-handler/package.json +5 -5
  232. package/node_modules/@smithy/hash-node/package.json +2 -2
  233. package/node_modules/@smithy/invalid-dependency/package.json +2 -2
  234. package/node_modules/@smithy/middleware-content-length/package.json +3 -3
  235. package/node_modules/@smithy/middleware-endpoint/package.json +8 -8
  236. package/node_modules/@smithy/middleware-retry/package.json +9 -9
  237. package/node_modules/@smithy/middleware-serde/package.json +4 -4
  238. package/node_modules/@smithy/middleware-stack/package.json +2 -2
  239. package/node_modules/@smithy/node-config-provider/package.json +4 -4
  240. package/node_modules/@smithy/node-http-handler/dist-cjs/index.js +208 -102
  241. package/node_modules/@smithy/node-http-handler/dist-es/http2/ClientHttp2SessionRef.js +50 -0
  242. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-manager.js +83 -41
  243. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-connection-pool.js +32 -18
  244. package/node_modules/@smithy/node-http-handler/dist-es/node-http2-handler.js +44 -43
  245. package/node_modules/@smithy/node-http-handler/dist-types/http2/ClientHttp2SessionRef.d.ts +46 -0
  246. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-manager.d.ts +32 -14
  247. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-connection-pool.d.ts +32 -8
  248. package/node_modules/@smithy/node-http-handler/dist-types/node-http2-handler.d.ts +14 -6
  249. package/node_modules/@smithy/node-http-handler/package.json +5 -5
  250. package/node_modules/@smithy/property-provider/package.json +2 -2
  251. package/node_modules/@smithy/protocol-http/package.json +2 -2
  252. package/node_modules/@smithy/querystring-builder/package.json +2 -2
  253. package/node_modules/@smithy/querystring-parser/package.json +2 -2
  254. package/node_modules/@smithy/service-error-classification/dist-cjs/index.js +6 -0
  255. package/node_modules/@smithy/service-error-classification/dist-es/index.js +5 -0
  256. package/node_modules/@smithy/service-error-classification/dist-types/index.d.ts +6 -0
  257. package/node_modules/@smithy/service-error-classification/package.json +2 -2
  258. package/node_modules/@smithy/shared-ini-file-loader/package.json +2 -2
  259. package/node_modules/@smithy/signature-v4/dist-cjs/index.js +11 -5
  260. package/node_modules/@smithy/signature-v4/dist-es/SignatureV4.js +11 -5
  261. package/node_modules/@smithy/signature-v4/dist-types/SignatureV4.d.ts +3 -3
  262. package/node_modules/@smithy/signature-v4/package.json +4 -4
  263. package/node_modules/@smithy/smithy-client/dist-cjs/index.js +8 -1
  264. package/node_modules/@smithy/smithy-client/dist-es/command.js +8 -1
  265. package/node_modules/@smithy/smithy-client/package.json +7 -7
  266. package/node_modules/@smithy/types/dist-types/connection/config.d.ts +5 -0
  267. package/node_modules/@smithy/types/dist-types/signature.d.ts +20 -3
  268. package/node_modules/@smithy/types/package.json +1 -1
  269. package/node_modules/@smithy/url-parser/package.json +3 -3
  270. package/node_modules/@smithy/util-defaults-mode-browser/package.json +4 -4
  271. package/node_modules/@smithy/util-defaults-mode-node/package.json +7 -7
  272. package/node_modules/@smithy/util-endpoints/dist-cjs/index.js +79 -71
  273. package/node_modules/@smithy/util-endpoints/dist-es/decideEndpoint.js +4 -3
  274. package/node_modules/@smithy/util-endpoints/dist-es/lib/getAttr.js +2 -1
  275. package/node_modules/@smithy/util-endpoints/dist-es/resolveEndpoint.js +8 -13
  276. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateCondition.js +9 -7
  277. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateConditions.js +12 -8
  278. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateEndpointRule.js +14 -13
  279. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateErrorRule.js +7 -4
  280. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateExpression.js +10 -8
  281. package/node_modules/@smithy/util-endpoints/dist-es/utils/evaluateRules.js +4 -4
  282. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointHeaders.js +5 -5
  283. package/node_modules/@smithy/util-endpoints/dist-es/utils/getEndpointProperties.js +4 -4
  284. package/node_modules/@smithy/util-endpoints/dist-types/bdd/BinaryDecisionDiagram.d.ts +2 -2
  285. package/node_modules/@smithy/util-endpoints/dist-types/types/shared.d.ts +3 -3
  286. package/node_modules/@smithy/util-endpoints/dist-types/utils/endpointFunctions.d.ts +2 -15
  287. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateCondition.d.ts +6 -3
  288. package/node_modules/@smithy/util-endpoints/dist-types/utils/evaluateConditions.d.ts +3 -3
  289. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointHeaders.d.ts +1 -1
  290. package/node_modules/@smithy/util-endpoints/dist-types/utils/getEndpointProperties.d.ts +2 -2
  291. package/node_modules/@smithy/util-endpoints/dist-types/utils/getReferenceValue.d.ts +2 -2
  292. package/node_modules/@smithy/util-endpoints/package.json +3 -3
  293. package/node_modules/@smithy/util-middleware/package.json +2 -2
  294. package/node_modules/@smithy/util-retry/dist-cjs/index.js +20 -10
  295. package/node_modules/@smithy/util-retry/dist-es/StandardRetryStrategy.js +20 -10
  296. package/node_modules/@smithy/util-retry/dist-types/StandardRetryStrategy.d.ts +12 -4
  297. package/node_modules/@smithy/util-retry/package.json +3 -3
  298. package/node_modules/@smithy/util-stream/package.json +4 -4
  299. package/node_modules/@smithy/util-waiter/dist-cjs/index.js +59 -34
  300. package/node_modules/@smithy/util-waiter/dist-es/poller.js +61 -34
  301. package/node_modules/@smithy/util-waiter/dist-types/createWaiter.d.ts +1 -1
  302. package/node_modules/@smithy/util-waiter/dist-types/poller.d.ts +2 -1
  303. package/node_modules/@smithy/util-waiter/dist-types/waiter.d.ts +13 -13
  304. package/node_modules/@smithy/util-waiter/package.json +3 -3
  305. package/node_modules/fast-xml-builder/package.json +1 -1
  306. package/node_modules/fast-xml-builder/src/fxb.js +6 -2
  307. package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +16 -2
  308. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/CHANGELOG.md +53 -0
  309. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/README.md +8 -28
  310. package/node_modules/fast-xml-parser/lib/fxbuilder.min.js +2 -0
  311. package/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +1 -0
  312. package/node_modules/fast-xml-parser/lib/fxp.cjs +1 -0
  313. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.d.cts +172 -6
  314. package/node_modules/fast-xml-parser/lib/fxp.min.js +2 -0
  315. package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -0
  316. package/node_modules/fast-xml-parser/lib/fxparser.min.js +2 -0
  317. package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -0
  318. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/package.json +5 -4
  319. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.d.ts +162 -3
  320. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/DocTypeReader.js +2 -5
  321. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/OptionsBuilder.js +15 -11
  322. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/OrderedObjParser.js +168 -244
  323. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/XMLParser.js +1 -1
  324. package/package.json +5 -5
  325. package/node_modules/@aws-sdk/client-codedeploy/dist-cjs/endpoint/ruleset.js +0 -7
  326. package/node_modules/@aws-sdk/client-codedeploy/dist-es/endpoint/ruleset.js +0 -4
  327. package/node_modules/@aws-sdk/client-codedeploy/dist-types/endpoint/ruleset.d.ts +0 -2
  328. package/node_modules/@aws-sdk/client-codedeploy/dist-types/ts3.4/endpoint/ruleset.d.ts +0 -2
  329. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/endpoint/ruleset.js +0 -146
  330. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/endpoint/ruleset.js +0 -133
  331. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/endpoint/ruleset.js +0 -106
  332. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/endpoint/ruleset.js +0 -106
  333. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/endpoint/ruleset.js +0 -145
  334. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/cognito-identity/endpoint/ruleset.js +0 -143
  335. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/signin/endpoint/ruleset.js +0 -130
  336. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso/endpoint/ruleset.js +0 -103
  337. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sso-oidc/endpoint/ruleset.js +0 -103
  338. package/node_modules/@aws-sdk/nested-clients/dist-es/submodules/sts/endpoint/ruleset.js +0 -142
  339. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/cognito-identity/endpoint/ruleset.d.ts +0 -2
  340. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/signin/endpoint/ruleset.d.ts +0 -2
  341. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso/endpoint/ruleset.d.ts +0 -2
  342. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sso-oidc/endpoint/ruleset.d.ts +0 -2
  343. package/node_modules/@aws-sdk/nested-clients/dist-types/submodules/sts/endpoint/ruleset.d.ts +0 -2
  344. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/cognito-identity/endpoint/ruleset.d.ts +0 -2
  345. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/signin/endpoint/ruleset.d.ts +0 -2
  346. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso/endpoint/ruleset.d.ts +0 -2
  347. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sso-oidc/endpoint/ruleset.d.ts +0 -2
  348. package/node_modules/@aws-sdk/nested-clients/dist-types/ts3.4/submodules/sts/endpoint/ruleset.d.ts +0 -2
  349. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js +0 -2
  350. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +0 -1
  351. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +0 -1
  352. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +0 -2
  353. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
  354. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +0 -2
  355. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
  356. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/pem.d.cts +0 -148
  357. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/pem.d.ts +0 -135
  358. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/LICENSE +0 -0
  359. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js +0 -0
  360. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js.map +0 -0
  361. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/cli.js +0 -0
  362. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/man.js +0 -0
  363. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/read.js +0 -0
  364. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.js +0 -0
  365. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/ignoreAttributes.js +0 -0
  366. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/util.js +0 -0
  367. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/CharsSymbol.js +0 -0
  368. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/EntitiesParser.js +0 -0
  369. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OptionsBuilder.js +0 -0
  370. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -0
  371. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsArrBuilder.js +0 -0
  372. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -0
  373. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsObjBuilder.js +0 -0
  374. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -0
  375. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Report.js +0 -0
  376. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPath.js +0 -0
  377. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPathMatcher.js +0 -0
  378. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XMLParser.js +0 -0
  379. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Xml2JsParser.js +0 -0
  380. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlPartReader.js +0 -0
  381. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlSpecialTagsReader.js +0 -0
  382. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/BufferSource.js +0 -0
  383. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/StringSource.js +0 -0
  384. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/EntitiesParser.js +0 -0
  385. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParser.js +0 -0
  386. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParserExt.js +0 -0
  387. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/currency.js +0 -0
  388. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/join.js +0 -0
  389. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/number.js +0 -0
  390. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/trim.js +0 -0
  391. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/validator.js +0 -0
  392. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlbuilder/json2xml.js +0 -0
  393. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/node2json.js +0 -0
  394. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/xmlNode.js +0 -0
  395. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/CHANGELOG.md +0 -0
  396. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/LICENSE +0 -0
  397. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/README.md +0 -0
  398. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/package.json +0 -0
  399. /package/node_modules/{@aws-sdk/xml-builder/node_modules/strnum → strnum}/strnum.js +0 -0
@@ -7,6 +7,8 @@ import DocTypeReader from './DocTypeReader.js';
7
7
  import toNumber from "strnum";
8
8
  import getIgnoreAttributesFn from "../ignoreAttributes.js";
9
9
  import { Expression, Matcher } from 'path-expression-matcher';
10
+ import { ExpressionSet } from 'path-expression-matcher';
11
+ import { EntityDecoder, XML, CURRENCY, COMMON_HTML } from '@nodable/entities';
10
12
 
11
13
  // const regx =
12
14
  // '<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)'
@@ -71,32 +73,6 @@ export default class OrderedObjParser {
71
73
  this.options = options;
72
74
  this.currentNode = null;
73
75
  this.tagsNodeStack = [];
74
- this.docTypeEntities = {};
75
- this.lastEntities = {
76
- "apos": { regex: /&(apos|#39|#x27);/g, val: "'" },
77
- "gt": { regex: /&(gt|#62|#x3E);/g, val: ">" },
78
- "lt": { regex: /&(lt|#60|#x3C);/g, val: "<" },
79
- "quot": { regex: /&(quot|#34|#x22);/g, val: "\"" },
80
- };
81
- this.ampEntity = { regex: /&(amp|#38|#x26);/g, val: "&" };
82
- this.htmlEntities = {
83
- "space": { regex: /&(nbsp|#160);/g, val: " " },
84
- // "lt" : { regex: /&(lt|#60);/g, val: "<" },
85
- // "gt" : { regex: /&(gt|#62);/g, val: ">" },
86
- // "amp" : { regex: /&(amp|#38);/g, val: "&" },
87
- // "quot" : { regex: /&(quot|#34);/g, val: "\"" },
88
- // "apos" : { regex: /&(apos|#39);/g, val: "'" },
89
- "cent": { regex: /&(cent|#162);/g, val: "¢" },
90
- "pound": { regex: /&(pound|#163);/g, val: "£" },
91
- "yen": { regex: /&(yen|#165);/g, val: "¥" },
92
- "euro": { regex: /&(euro|#8364);/g, val: "€" },
93
- "copyright": { regex: /&(copy|#169);/g, val: "©" },
94
- "reg": { regex: /&(reg|#174);/g, val: "®" },
95
- "inr": { regex: /&(inr|#8377);/g, val: "₹" },
96
- "num_dec": { regex: /&#([0-9]{1,7});/g, val: (_, str) => fromCodePoint(str, 10, "&#") },
97
- "num_hex": { regex: /&#x([0-9a-fA-F]{1,6});/g, val: (_, str) => fromCodePoint(str, 16, "&#x") },
98
- };
99
- this.addExternalEntities = addExternalEntities;
100
76
  this.parseXml = parseXml;
101
77
  this.parseTextData = parseTextData;
102
78
  this.resolveNameSpace = resolveNameSpace;
@@ -109,6 +85,23 @@ export default class OrderedObjParser {
109
85
  this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes)
110
86
  this.entityExpansionCount = 0;
111
87
  this.currentExpandedLength = 0;
88
+ let namedEntities = { ...XML };
89
+ if (this.options.entityDecoder) {
90
+ this.entityDecoder = this.options.entityDecoder
91
+ } else {
92
+ if (typeof this.options.htmlEntities === "object") namedEntities = this.options.htmlEntities;
93
+ else if (this.options.htmlEntities === true) namedEntities = { ...COMMON_HTML, ...CURRENCY };
94
+ this.entityDecoder = new EntityDecoder({
95
+ namedEntities: namedEntities,
96
+ numericAllowed: this.options.htmlEntities,
97
+ limit: {
98
+ maxTotalExpansions: this.options.processEntities.maxTotalExpansions,
99
+ maxExpandedLength: this.options.processEntities.maxExpandedLength,
100
+ applyLimitsTo: this.options.processEntities.appliesTo,
101
+ }
102
+ //postCheck: resolved => resolved
103
+ });
104
+ }
112
105
 
113
106
  // Initialize path matcher for path-expression-matcher
114
107
  this.matcher = new Matcher();
@@ -121,34 +114,25 @@ export default class OrderedObjParser {
121
114
  this.isCurrentNodeStopNode = false;
122
115
 
123
116
  // Pre-compile stopNodes expressions
124
- if (this.options.stopNodes && this.options.stopNodes.length > 0) {
125
- this.stopNodeExpressions = [];
126
- for (let i = 0; i < this.options.stopNodes.length; i++) {
127
- const stopNodeExp = this.options.stopNodes[i];
117
+ this.stopNodeExpressionsSet = new ExpressionSet();
118
+ const stopNodesOpts = this.options.stopNodes;
119
+ if (stopNodesOpts && stopNodesOpts.length > 0) {
120
+ for (let i = 0; i < stopNodesOpts.length; i++) {
121
+ const stopNodeExp = stopNodesOpts[i];
128
122
  if (typeof stopNodeExp === 'string') {
129
123
  // Convert string to Expression object
130
- this.stopNodeExpressions.push(new Expression(stopNodeExp));
124
+ this.stopNodeExpressionsSet.add(new Expression(stopNodeExp));
131
125
  } else if (stopNodeExp instanceof Expression) {
132
126
  // Already an Expression object
133
- this.stopNodeExpressions.push(stopNodeExp);
127
+ this.stopNodeExpressionsSet.add(stopNodeExp);
134
128
  }
135
129
  }
130
+ this.stopNodeExpressionsSet.seal();
136
131
  }
137
132
  }
138
133
 
139
134
  }
140
135
 
141
- function addExternalEntities(externalEntities) {
142
- const entKeys = Object.keys(externalEntities);
143
- for (let i = 0; i < entKeys.length; i++) {
144
- const ent = entKeys[i];
145
- const escaped = ent.replace(/[.\-+*:]/g, '\\.');
146
- this.lastEntities[ent] = {
147
- regex: new RegExp("&" + escaped + ";", "g"),
148
- val: externalEntities[ent]
149
- }
150
- }
151
- }
152
136
 
153
137
  /**
154
138
  * @param {string} val
@@ -160,28 +144,29 @@ function addExternalEntities(externalEntities) {
160
144
  * @param {boolean} escapeEntities
161
145
  */
162
146
  function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {
147
+ const options = this.options;
163
148
  if (val !== undefined) {
164
- if (this.options.trimValues && !dontTrim) {
149
+ if (options.trimValues && !dontTrim) {
165
150
  val = val.trim();
166
151
  }
167
152
  if (val.length > 0) {
168
153
  if (!escapeEntities) val = this.replaceEntitiesValue(val, tagName, jPath);
169
154
 
170
155
  // Pass jPath string or matcher based on options.jPath setting
171
- const jPathOrMatcher = this.options.jPath ? jPath.toString() : jPath;
172
- const newval = this.options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);
156
+ const jPathOrMatcher = options.jPath ? jPath.toString() : jPath;
157
+ const newval = options.tagValueProcessor(tagName, val, jPathOrMatcher, hasAttributes, isLeafNode);
173
158
  if (newval === null || newval === undefined) {
174
159
  //don't parse
175
160
  return val;
176
161
  } else if (typeof newval !== typeof val || newval !== val) {
177
162
  //overwrite
178
163
  return newval;
179
- } else if (this.options.trimValues) {
180
- return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);
164
+ } else if (options.trimValues) {
165
+ return parseValue(val, options.parseTagValue, options.numberParseOptions);
181
166
  } else {
182
167
  const trimmedVal = val.trim();
183
168
  if (trimmedVal === val) {
184
- return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);
169
+ return parseValue(val, options.parseTagValue, options.numberParseOptions);
185
170
  } else {
186
171
  return val;
187
172
  }
@@ -208,8 +193,9 @@ function resolveNameSpace(tagname) {
208
193
  //const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm");
209
194
  const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm');
210
195
 
211
- function buildAttributesMap(attrStr, jPath, tagName) {
212
- if (this.options.ignoreAttributes !== true && typeof attrStr === 'string') {
196
+ function buildAttributesMap(attrStr, jPath, tagName, force = false) {
197
+ const options = this.options;
198
+ if (force === true || (options.ignoreAttributes !== true && typeof attrStr === 'string')) {
213
199
  // attrStr = attrStr.replace(/\r?\n/g, ' ');
214
200
  //attrStr = attrStr || attrStr.trim();
215
201
 
@@ -217,89 +203,80 @@ function buildAttributesMap(attrStr, jPath, tagName) {
217
203
  const len = matches.length; //don't make it inline
218
204
  const attrs = {};
219
205
 
220
- // First pass: parse all attributes and update matcher with raw values
221
- // This ensures the matcher has all attribute values when processors run
206
+ // Pre-process values once: trim + entity replacement
207
+ // Reused in both matcher update and second pass
208
+ const processedVals = new Array(len);
209
+ let hasRawAttrs = false;
222
210
  const rawAttrsForMatcher = {};
211
+
223
212
  for (let i = 0; i < len; i++) {
224
213
  const attrName = this.resolveNameSpace(matches[i][1]);
225
214
  const oldVal = matches[i][4];
226
215
 
227
216
  if (attrName.length && oldVal !== undefined) {
228
- let parsedVal = oldVal;
229
- if (this.options.trimValues) {
230
- parsedVal = parsedVal.trim();
231
- }
232
- parsedVal = this.replaceEntitiesValue(parsedVal, tagName, this.readonlyMatcher);
233
- rawAttrsForMatcher[attrName] = parsedVal;
217
+ let val = oldVal;
218
+ if (options.trimValues) val = val.trim();
219
+ val = this.replaceEntitiesValue(val, tagName, this.readonlyMatcher);
220
+ processedVals[i] = val;
221
+
222
+ rawAttrsForMatcher[attrName] = val;
223
+ hasRawAttrs = true;
234
224
  }
235
225
  }
236
226
 
237
- // Update matcher with raw attribute values BEFORE running processors
238
- if (Object.keys(rawAttrsForMatcher).length > 0 && typeof jPath === 'object' && jPath.updateCurrent) {
227
+ // Update matcher ONCE before second pass, if applicable
228
+ if (hasRawAttrs && typeof jPath === 'object' && jPath.updateCurrent) {
239
229
  jPath.updateCurrent(rawAttrsForMatcher);
240
230
  }
241
231
 
242
- // Second pass: now process attributes with matcher having full attribute context
232
+ // Hoist toString() once path doesn't change during attribute processing
233
+ const jPathStr = options.jPath ? jPath.toString() : this.readonlyMatcher;
234
+
235
+ // Second pass: apply processors, build final attrs
236
+ let hasAttrs = false;
243
237
  for (let i = 0; i < len; i++) {
244
238
  const attrName = this.resolveNameSpace(matches[i][1]);
245
239
 
246
- // Convert jPath to string if needed for ignoreAttributesFn
247
- const jPathStr = this.options.jPath ? jPath.toString() : this.readonlyMatcher;
248
- if (this.ignoreAttributesFn(attrName, jPathStr)) {
249
- continue
250
- }
240
+ if (this.ignoreAttributesFn(attrName, jPathStr)) continue;
251
241
 
252
- let oldVal = matches[i][4];
253
- let aName = this.options.attributeNamePrefix + attrName;
242
+ let aName = options.attributeNamePrefix + attrName;
254
243
 
255
244
  if (attrName.length) {
256
- if (this.options.transformAttributeName) {
257
- aName = this.options.transformAttributeName(aName);
245
+ if (options.transformAttributeName) {
246
+ aName = options.transformAttributeName(aName);
258
247
  }
259
- //if (aName === "__proto__") aName = "#__proto__";
260
- aName = sanitizeName(aName, this.options);
248
+ aName = sanitizeName(aName, options);
261
249
 
262
- if (oldVal !== undefined) {
263
- if (this.options.trimValues) {
264
- oldVal = oldVal.trim();
265
- }
266
- oldVal = this.replaceEntitiesValue(oldVal, tagName, this.readonlyMatcher);
250
+ if (matches[i][4] !== undefined) {
251
+ // Reuse already-processed value — no double entity replacement
252
+ const oldVal = processedVals[i];
267
253
 
268
- // Pass jPath string or readonlyMatcher based on options.jPath setting
269
- const jPathOrMatcher = this.options.jPath ? jPath.toString() : this.readonlyMatcher;
270
- const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPathOrMatcher);
254
+ const newVal = options.attributeValueProcessor(attrName, oldVal, jPathStr);
271
255
  if (newVal === null || newVal === undefined) {
272
- //don't parse
273
256
  attrs[aName] = oldVal;
274
257
  } else if (typeof newVal !== typeof oldVal || newVal !== oldVal) {
275
- //overwrite
276
258
  attrs[aName] = newVal;
277
259
  } else {
278
- //parse
279
- attrs[aName] = parseValue(
280
- oldVal,
281
- this.options.parseAttributeValue,
282
- this.options.numberParseOptions
283
- );
260
+ attrs[aName] = parseValue(oldVal, options.parseAttributeValue, options.numberParseOptions);
284
261
  }
285
- } else if (this.options.allowBooleanAttributes) {
262
+ hasAttrs = true;
263
+ } else if (options.allowBooleanAttributes) {
286
264
  attrs[aName] = true;
265
+ hasAttrs = true;
287
266
  }
288
267
  }
289
268
  }
290
269
 
291
- if (!Object.keys(attrs).length) {
292
- return;
293
- }
294
- if (this.options.attributesGroupName) {
270
+ if (!hasAttrs) return;
271
+
272
+ if (options.attributesGroupName) {
295
273
  const attrCollection = {};
296
- attrCollection[this.options.attributesGroupName] = attrs;
274
+ attrCollection[options.attributesGroupName] = attrs;
297
275
  return attrCollection;
298
276
  }
299
- return attrs
277
+ return attrs;
300
278
  }
301
279
  }
302
-
303
280
  const parseXml = function (xmlData) {
304
281
  xmlData = xmlData.replace(/\r\n?/g, "\n"); //TODO: remove this line
305
282
  const xmlObj = new xmlNode('!xml');
@@ -308,29 +285,32 @@ const parseXml = function (xmlData) {
308
285
 
309
286
  // Reset matcher for new document
310
287
  this.matcher.reset();
288
+ this.entityDecoder.reset();
311
289
 
312
290
  // Reset entity expansion counters for this document
313
291
  this.entityExpansionCount = 0;
314
292
  this.currentExpandedLength = 0;
315
-
316
- const docTypeReader = new DocTypeReader(this.options.processEntities);
317
- for (let i = 0; i < xmlData.length; i++) {//for each char in XML data
293
+ const options = this.options;
294
+ const docTypeReader = new DocTypeReader(options.processEntities);
295
+ const xmlLen = xmlData.length;
296
+ for (let i = 0; i < xmlLen; i++) {//for each char in XML data
318
297
  const ch = xmlData[i];
319
298
  if (ch === '<') {
320
299
  // const nextIndex = i+1;
321
300
  // const _2ndChar = xmlData[nextIndex];
322
- if (xmlData[i + 1] === '/') {//Closing Tag
301
+ const c1 = xmlData.charCodeAt(i + 1);
302
+ if (c1 === 47) {//Closing Tag '/'
323
303
  const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed.")
324
304
  let tagName = xmlData.substring(i + 2, closeIndex).trim();
325
305
 
326
- if (this.options.removeNSPrefix) {
306
+ if (options.removeNSPrefix) {
327
307
  const colonIndex = tagName.indexOf(":");
328
308
  if (colonIndex !== -1) {
329
309
  tagName = tagName.substr(colonIndex + 1);
330
310
  }
331
311
  }
332
312
 
333
- tagName = transformTagName(this.options.transformTagName, tagName, "", this.options).tagName;
313
+ tagName = transformTagName(options.transformTagName, tagName, "", options).tagName;
334
314
 
335
315
  if (currentNode) {
336
316
  textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);
@@ -338,10 +318,10 @@ const parseXml = function (xmlData) {
338
318
 
339
319
  //check if last tag of nested tag was unpaired tag
340
320
  const lastTagName = this.matcher.getCurrentTag();
341
- if (tagName && this.options.unpairedTags.indexOf(tagName) !== -1) {
321
+ if (tagName && options.unpairedTagsSet.has(tagName)) {
342
322
  throw new Error(`Unpaired tag can not be used as closing tag: </${tagName}>`);
343
323
  }
344
- if (lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1) {
324
+ if (lastTagName && options.unpairedTagsSet.has(lastTagName)) {
345
325
  // Pop the unpaired tag
346
326
  this.matcher.pop();
347
327
  this.tagsNodeStack.pop();
@@ -353,42 +333,51 @@ const parseXml = function (xmlData) {
353
333
  currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope
354
334
  textData = "";
355
335
  i = closeIndex;
356
- } else if (xmlData[i + 1] === '?') {
336
+ } else if (c1 === 63) { //'?'
357
337
 
358
338
  let tagData = readTagExp(xmlData, i, false, "?>");
359
339
  if (!tagData) throw new Error("Pi Tag is not closed.");
360
340
 
361
341
  textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);
362
- if ((this.options.ignoreDeclaration && tagData.tagName === "?xml") || this.options.ignorePiTags) {
342
+ const attsMap = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName, true);
343
+ if (attsMap) {
344
+ const ver = attsMap[this.options.attributeNamePrefix + "version"];
345
+ this.entityDecoder.setXmlVersion(Number(ver) || 1.0);
346
+ }
347
+ if ((options.ignoreDeclaration && tagData.tagName === "?xml") || options.ignorePiTags) {
363
348
  //do nothing
364
349
  } else {
365
350
 
366
351
  const childNode = new xmlNode(tagData.tagName);
367
- childNode.add(this.options.textNodeName, "");
352
+ childNode.add(options.textNodeName, "");
368
353
 
369
- if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent) {
370
- childNode[":@"] = this.buildAttributesMap(tagData.tagExp, this.matcher, tagData.tagName);
354
+ if (tagData.tagName !== tagData.tagExp && tagData.attrExpPresent && options.ignoreAttributes !== true) {
355
+ childNode[":@"] = attsMap
371
356
  }
372
357
  this.addChild(currentNode, childNode, this.readonlyMatcher, i);
373
358
  }
374
359
 
375
360
 
376
361
  i = tagData.closeIndex + 1;
377
- } else if (xmlData.substr(i + 1, 3) === '!--') {
362
+ } else if (c1 === 33
363
+ && xmlData.charCodeAt(i + 2) === 45
364
+ && xmlData.charCodeAt(i + 3) === 45) { //'!--'
378
365
  const endIndex = findClosingIndex(xmlData, "-->", i + 4, "Comment is not closed.")
379
- if (this.options.commentPropName) {
366
+ if (options.commentPropName) {
380
367
  const comment = xmlData.substring(i + 4, endIndex - 2);
381
368
 
382
369
  textData = this.saveTextToParentTag(textData, currentNode, this.readonlyMatcher);
383
370
 
384
- currentNode.add(this.options.commentPropName, [{ [this.options.textNodeName]: comment }]);
371
+ currentNode.add(options.commentPropName, [{ [options.textNodeName]: comment }]);
385
372
  }
386
373
  i = endIndex;
387
- } else if (xmlData.substr(i + 1, 2) === '!D') {
374
+ } else if (c1 === 33
375
+ && xmlData.charCodeAt(i + 2) === 68) { //'!D'
388
376
  const result = docTypeReader.readDocType(xmlData, i);
389
- this.docTypeEntities = result.entities;
377
+ this.entityDecoder.addInputEntities(result.entities);
390
378
  i = result.i;
391
- } else if (xmlData.substr(i + 1, 2) === '![') {
379
+ } else if (c1 === 33
380
+ && xmlData.charCodeAt(i + 2) === 91) { // '!['
392
381
  const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2;
393
382
  const tagExp = xmlData.substring(i + 9, closeIndex);
394
383
 
@@ -398,20 +387,20 @@ const parseXml = function (xmlData) {
398
387
  if (val == undefined) val = "";
399
388
 
400
389
  //cdata should be set even if it is 0 length string
401
- if (this.options.cdataPropName) {
402
- currentNode.add(this.options.cdataPropName, [{ [this.options.textNodeName]: tagExp }]);
390
+ if (options.cdataPropName) {
391
+ currentNode.add(options.cdataPropName, [{ [options.textNodeName]: tagExp }]);
403
392
  } else {
404
- currentNode.add(this.options.textNodeName, val);
393
+ currentNode.add(options.textNodeName, val);
405
394
  }
406
395
 
407
396
  i = closeIndex + 2;
408
397
  } else {//Opening tag
409
- let result = readTagExp(xmlData, i, this.options.removeNSPrefix);
398
+ let result = readTagExp(xmlData, i, options.removeNSPrefix);
410
399
 
411
400
  // Safety check: readTagExp can return undefined
412
401
  if (!result) {
413
402
  // Log context for debugging
414
- const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlData.length, i + 50));
403
+ const context = xmlData.substring(Math.max(0, i - 50), Math.min(xmlLen, i + 50));
415
404
  throw new Error(`readTagExp returned undefined at position ${i}. Context: "${context}"`);
416
405
  }
417
406
 
@@ -421,13 +410,13 @@ const parseXml = function (xmlData) {
421
410
  let attrExpPresent = result.attrExpPresent;
422
411
  let closeIndex = result.closeIndex;
423
412
 
424
- ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));
413
+ ({ tagName, tagExp } = transformTagName(options.transformTagName, tagName, tagExp, options));
425
414
 
426
- if (this.options.strictReservedNames &&
427
- (tagName === this.options.commentPropName
428
- || tagName === this.options.cdataPropName
429
- || tagName === this.options.textNodeName
430
- || tagName === this.options.attributesGroupName
415
+ if (options.strictReservedNames &&
416
+ (tagName === options.commentPropName
417
+ || tagName === options.cdataPropName
418
+ || tagName === options.textNodeName
419
+ || tagName === options.attributesGroupName
431
420
  )) {
432
421
  throw new Error(`Invalid tag name: ${tagName}`);
433
422
  }
@@ -442,7 +431,7 @@ const parseXml = function (xmlData) {
442
431
 
443
432
  //check if last tag was unpaired tag
444
433
  const lastTag = currentNode;
445
- if (lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1) {
434
+ if (lastTag && options.unpairedTagsSet.has(lastTag.tagname)) {
446
435
  currentNode = this.tagsNodeStack.pop();
447
436
  this.matcher.pop();
448
437
  }
@@ -484,13 +473,14 @@ const parseXml = function (xmlData) {
484
473
 
485
474
  if (prefixedAttrs) {
486
475
  // Extract raw attributes (without prefix) for our use
487
- rawAttrs = extractRawAttributes(prefixedAttrs, this.options);
476
+ //TODO: seems a performance overhead
477
+ rawAttrs = extractRawAttributes(prefixedAttrs, options);
488
478
  }
489
479
  }
490
480
 
491
481
  // Now check if this is a stop node (after attributes are set)
492
482
  if (tagName !== xmlObj.tagname) {
493
- this.isCurrentNodeStopNode = this.isItStopNode(this.stopNodeExpressions, this.matcher);
483
+ this.isCurrentNodeStopNode = this.isItStopNode();
494
484
  }
495
485
 
496
486
  const startIndex = i;
@@ -502,7 +492,7 @@ const parseXml = function (xmlData) {
502
492
  i = result.closeIndex;
503
493
  }
504
494
  //unpaired tag
505
- else if (this.options.unpairedTags.indexOf(tagName) !== -1) {
495
+ else if (options.unpairedTagsSet.has(tagName)) {
506
496
  i = result.closeIndex;
507
497
  }
508
498
  //normal tag
@@ -521,7 +511,7 @@ const parseXml = function (xmlData) {
521
511
  }
522
512
 
523
513
  // For stop nodes, store raw content as-is without any processing
524
- childNode.add(this.options.textNodeName, tagContent);
514
+ childNode.add(options.textNodeName, tagContent);
525
515
 
526
516
  this.matcher.pop(); // Pop the stop node tag
527
517
  this.isCurrentNodeStopNode = false; // Reset flag
@@ -530,7 +520,7 @@ const parseXml = function (xmlData) {
530
520
  } else {
531
521
  //selfClosing tag
532
522
  if (isSelfClosing) {
533
- ({ tagName, tagExp } = transformTagName(this.options.transformTagName, tagName, tagExp, this.options));
523
+ ({ tagName, tagExp } = transformTagName(options.transformTagName, tagName, tagExp, options));
534
524
 
535
525
  const childNode = new xmlNode(tagName);
536
526
  if (prefixedAttrs) {
@@ -540,7 +530,7 @@ const parseXml = function (xmlData) {
540
530
  this.matcher.pop(); // Pop self-closing tag
541
531
  this.isCurrentNodeStopNode = false; // Reset flag
542
532
  }
543
- else if (this.options.unpairedTags.indexOf(tagName) !== -1) {//unpaired tag
533
+ else if (options.unpairedTagsSet.has(tagName)) {//unpaired tag
544
534
  const childNode = new xmlNode(tagName);
545
535
  if (prefixedAttrs) {
546
536
  childNode[":@"] = prefixedAttrs;
@@ -555,7 +545,7 @@ const parseXml = function (xmlData) {
555
545
  //opening tag
556
546
  else {
557
547
  const childNode = new xmlNode(tagName);
558
- if (this.tagsNodeStack.length > this.options.maxNestedTags) {
548
+ if (this.tagsNodeStack.length > options.maxNestedTags) {
559
549
  throw new Error("Maximum nested tags exceeded");
560
550
  }
561
551
  this.tagsNodeStack.push(currentNode);
@@ -626,79 +616,7 @@ function replaceEntitiesValue(val, tagName, jPath) {
626
616
  }
627
617
  }
628
618
 
629
- // Replace DOCTYPE entities
630
- for (const entityName of Object.keys(this.docTypeEntities)) {
631
- const entity = this.docTypeEntities[entityName];
632
- const matches = val.match(entity.regx);
633
-
634
- if (matches) {
635
- // Track expansions
636
- this.entityExpansionCount += matches.length;
637
-
638
- // Check expansion limit
639
- if (entityConfig.maxTotalExpansions &&
640
- this.entityExpansionCount > entityConfig.maxTotalExpansions) {
641
- throw new Error(
642
- `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`
643
- );
644
- }
645
-
646
- // Store length before replacement
647
- const lengthBefore = val.length;
648
- val = val.replace(entity.regx, entity.val);
649
-
650
- // Check expanded length immediately after replacement
651
- if (entityConfig.maxExpandedLength) {
652
- this.currentExpandedLength += (val.length - lengthBefore);
653
-
654
- if (this.currentExpandedLength > entityConfig.maxExpandedLength) {
655
- throw new Error(
656
- `Total expanded content size exceeded: ${this.currentExpandedLength} > ${entityConfig.maxExpandedLength}`
657
- );
658
- }
659
- }
660
- }
661
- }
662
- // Replace standard entities
663
- for (const entityName of Object.keys(this.lastEntities)) {
664
- const entity = this.lastEntities[entityName];
665
- const matches = val.match(entity.regex);
666
- if (matches) {
667
- this.entityExpansionCount += matches.length;
668
- if (entityConfig.maxTotalExpansions &&
669
- this.entityExpansionCount > entityConfig.maxTotalExpansions) {
670
- throw new Error(
671
- `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`
672
- );
673
- }
674
- }
675
- val = val.replace(entity.regex, entity.val);
676
- }
677
- if (val.indexOf('&') === -1) return val;
678
-
679
- // Replace HTML entities if enabled
680
- if (this.options.htmlEntities) {
681
- for (const entityName of Object.keys(this.htmlEntities)) {
682
- const entity = this.htmlEntities[entityName];
683
- const matches = val.match(entity.regex);
684
- if (matches) {
685
- //console.log(matches);
686
- this.entityExpansionCount += matches.length;
687
- if (entityConfig.maxTotalExpansions &&
688
- this.entityExpansionCount > entityConfig.maxTotalExpansions) {
689
- throw new Error(
690
- `Entity expansion limit exceeded: ${this.entityExpansionCount} > ${entityConfig.maxTotalExpansions}`
691
- );
692
- }
693
- }
694
- val = val.replace(entity.regex, entity.val);
695
- }
696
- }
697
-
698
- // Replace ampersand entity last
699
- val = val.replace(this.ampEntity.regex, this.ampEntity.val);
700
-
701
- return val;
619
+ return this.entityDecoder.decode(val);
702
620
  }
703
621
 
704
622
 
@@ -720,20 +638,14 @@ function saveTextToParentTag(textData, parentNode, matcher, isLeafNode) {
720
638
  return textData;
721
639
  }
722
640
 
723
- //TODO: use jPath to simplify the logic
724
641
  /**
725
642
  * @param {Array<Expression>} stopNodeExpressions - Array of compiled Expression objects
726
643
  * @param {Matcher} matcher - Current path matcher
727
644
  */
728
- function isItStopNode(stopNodeExpressions, matcher) {
729
- if (!stopNodeExpressions || stopNodeExpressions.length === 0) return false;
645
+ function isItStopNode() {
646
+ if (this.stopNodeExpressionsSet.size === 0) return false;
730
647
 
731
- for (let i = 0; i < stopNodeExpressions.length; i++) {
732
- if (matcher.matches(stopNodeExpressions[i])) {
733
- return true;
734
- }
735
- }
736
- return false;
648
+ return this.matcher.matchesAny(this.stopNodeExpressionsSet);
737
649
  }
738
650
 
739
651
  /**
@@ -743,32 +655,33 @@ function isItStopNode(stopNodeExpressions, matcher) {
743
655
  * @returns
744
656
  */
745
657
  function tagExpWithClosingIndex(xmlData, i, closingChar = ">") {
746
- let attrBoundary;
747
- let tagExp = "";
748
- for (let index = i; index < xmlData.length; index++) {
749
- let ch = xmlData[index];
658
+ let attrBoundary = 0;
659
+ const chars = [];
660
+ const len = xmlData.length;
661
+ const closeCode0 = closingChar.charCodeAt(0);
662
+ const closeCode1 = closingChar.length > 1 ? closingChar.charCodeAt(1) : -1;
663
+
664
+ for (let index = i; index < len; index++) {
665
+ const code = xmlData.charCodeAt(index);
666
+
750
667
  if (attrBoundary) {
751
- if (ch === attrBoundary) attrBoundary = "";//reset
752
- } else if (ch === '"' || ch === "'") {
753
- attrBoundary = ch;
754
- } else if (ch === closingChar[0]) {
755
- if (closingChar[1]) {
756
- if (xmlData[index + 1] === closingChar[1]) {
757
- return {
758
- data: tagExp,
759
- index: index
760
- }
668
+ if (code === attrBoundary) attrBoundary = 0;
669
+ } else if (code === 34 || code === 39) { // " or '
670
+ attrBoundary = code;
671
+ } else if (code === closeCode0) {
672
+ if (closeCode1 !== -1) {
673
+ if (xmlData.charCodeAt(index + 1) === closeCode1) {
674
+ return { data: String.fromCharCode(...chars), index };
761
675
  }
762
676
  } else {
763
- return {
764
- data: tagExp,
765
- index: index
766
- }
677
+ return { data: String.fromCharCode(...chars), index };
767
678
  }
768
- } else if (ch === '\t') {
769
- ch = " "
679
+ } else if (code === 9) { // \t
680
+ chars.push(32); // space
681
+ continue;
770
682
  }
771
- tagExp += ch;
683
+
684
+ chars.push(code);
772
685
  }
773
686
  }
774
687
 
@@ -781,6 +694,12 @@ function findClosingIndex(xmlData, str, i, errMsg) {
781
694
  }
782
695
  }
783
696
 
697
+ function findClosingChar(xmlData, char, i, errMsg) {
698
+ const closingIndex = xmlData.indexOf(char, i);
699
+ if (closingIndex === -1) throw new Error(errMsg);
700
+ return closingIndex; // no offset needed
701
+ }
702
+
784
703
  function readTagExp(xmlData, i, removeNSPrefix, closingChar = ">") {
785
704
  const result = tagExpWithClosingIndex(xmlData, i + 1, closingChar);
786
705
  if (!result) return;
@@ -822,10 +741,12 @@ function readStopNodeData(xmlData, tagName, i) {
822
741
  // Starting at 1 since we already have an open tag
823
742
  let openTagCount = 1;
824
743
 
825
- for (; i < xmlData.length; i++) {
744
+ const xmllen = xmlData.length;
745
+ for (; i < xmllen; i++) {
826
746
  if (xmlData[i] === "<") {
827
- if (xmlData[i + 1] === "/") {//close tag
828
- const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`);
747
+ const c1 = xmlData.charCodeAt(i + 1);
748
+ if (c1 === 47) {//close tag '/'
749
+ const closeIndex = findClosingChar(xmlData, ">", i, `${tagName} is not closed`);
829
750
  let closeTagName = xmlData.substring(i + 2, closeIndex).trim();
830
751
  if (closeTagName === tagName) {
831
752
  openTagCount--;
@@ -837,13 +758,16 @@ function readStopNodeData(xmlData, tagName, i) {
837
758
  }
838
759
  }
839
760
  i = closeIndex;
840
- } else if (xmlData[i + 1] === '?') {
761
+ } else if (c1 === 63) { //?
841
762
  const closeIndex = findClosingIndex(xmlData, "?>", i + 1, "StopNode is not closed.")
842
763
  i = closeIndex;
843
- } else if (xmlData.substr(i + 1, 3) === '!--') {
764
+ } else if (c1 === 33
765
+ && xmlData.charCodeAt(i + 2) === 45
766
+ && xmlData.charCodeAt(i + 3) === 45) { // '!--'
844
767
  const closeIndex = findClosingIndex(xmlData, "-->", i + 3, "StopNode is not closed.")
845
768
  i = closeIndex;
846
- } else if (xmlData.substr(i + 1, 2) === '![') {
769
+ } else if (c1 === 33
770
+ && xmlData.charCodeAt(i + 2) === 91) { // '!['
847
771
  const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2;
848
772
  i = closeIndex;
849
773
  } else {