@cdk8s/awscdk-resolver 0.0.547 → 0.0.548

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 (132) hide show
  1. package/.jsii +3 -3
  2. package/lib/resolve.js +1 -1
  3. package/node_modules/@aws-sdk/client-cloudformation/dist-cjs/index.js +9 -9
  4. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForChangeSetCreateComplete.js +2 -2
  5. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackCreateComplete.js +2 -2
  6. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackDeleteComplete.js +2 -2
  7. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackExists.js +2 -2
  8. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackImportComplete.js +2 -2
  9. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackRefactorCreateComplete.js +1 -1
  10. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackRefactorExecuteComplete.js +1 -1
  11. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackRollbackComplete.js +2 -2
  12. package/node_modules/@aws-sdk/client-cloudformation/dist-es/waiters/waitForStackUpdateComplete.js +2 -2
  13. package/node_modules/@aws-sdk/client-cloudformation/dist-types/CloudFormation.d.ts +11 -10
  14. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/CloudFormation.d.ts +13 -10
  15. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForChangeSetCreateComplete.d.ts +9 -3
  16. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackCreateComplete.d.ts +9 -3
  17. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackDeleteComplete.d.ts +11 -3
  18. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackExists.d.ts +9 -3
  19. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackImportComplete.d.ts +9 -3
  20. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackRefactorCreateComplete.d.ts +11 -3
  21. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackRefactorExecuteComplete.d.ts +11 -3
  22. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackRollbackComplete.d.ts +9 -3
  23. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForStackUpdateComplete.d.ts +9 -3
  24. package/node_modules/@aws-sdk/client-cloudformation/dist-types/ts3.4/waiters/waitForTypeRegistrationComplete.d.ts +11 -3
  25. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForChangeSetCreateComplete.d.ts +4 -3
  26. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackCreateComplete.d.ts +4 -3
  27. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackDeleteComplete.d.ts +4 -3
  28. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackExists.d.ts +4 -3
  29. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackImportComplete.d.ts +4 -3
  30. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackRefactorCreateComplete.d.ts +4 -3
  31. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackRefactorExecuteComplete.d.ts +4 -3
  32. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackRollbackComplete.d.ts +4 -3
  33. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForStackUpdateComplete.d.ts +4 -3
  34. package/node_modules/@aws-sdk/client-cloudformation/dist-types/waiters/waitForTypeRegistrationComplete.d.ts +4 -3
  35. package/node_modules/@aws-sdk/client-cloudformation/package.json +8 -8
  36. package/node_modules/@aws-sdk/core/package.json +3 -3
  37. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  38. package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
  39. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  40. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  41. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  42. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  43. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  44. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  45. package/node_modules/@aws-sdk/middleware-sdk-s3/package.json +2 -2
  46. package/node_modules/@aws-sdk/middleware-user-agent/package.json +3 -3
  47. package/node_modules/@aws-sdk/nested-clients/package.json +7 -7
  48. package/node_modules/@aws-sdk/signature-v4-multi-region/package.json +2 -2
  49. package/node_modules/@aws-sdk/token-providers/package.json +3 -3
  50. package/node_modules/@aws-sdk/util-user-agent-node/package.json +2 -2
  51. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +336 -0
  52. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +26 -0
  53. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-external/nodable_entities.js +332 -0
  54. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +26 -0
  55. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlNode.d.ts +49 -29
  56. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/XmlText.d.ts +11 -6
  57. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-attribute.d.ts +6 -1
  58. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/escape-element.d.ts +6 -1
  59. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/index.d.ts +12 -3
  60. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/stringable.d.ts +6 -3
  61. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-external/nodable_entities.d.ts +65 -0
  62. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.browser.d.ts +9 -1
  63. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts +4 -1
  64. package/node_modules/@aws-sdk/xml-builder/dist-types/xml-external/nodable_entities.d.ts +65 -0
  65. package/node_modules/@aws-sdk/xml-builder/package.json +3 -2
  66. package/node_modules/@smithy/middleware-retry/package.json +3 -3
  67. package/node_modules/@smithy/service-error-classification/dist-cjs/index.js +1 -0
  68. package/node_modules/@smithy/service-error-classification/dist-es/index.js +1 -0
  69. package/node_modules/@smithy/service-error-classification/package.json +1 -1
  70. package/node_modules/@smithy/util-retry/package.json +2 -2
  71. package/node_modules/@smithy/util-waiter/dist-cjs/index.js +59 -34
  72. package/node_modules/@smithy/util-waiter/dist-es/poller.js +61 -34
  73. package/node_modules/@smithy/util-waiter/dist-types/createWaiter.d.ts +1 -1
  74. package/node_modules/@smithy/util-waiter/dist-types/poller.d.ts +2 -1
  75. package/node_modules/@smithy/util-waiter/dist-types/waiter.d.ts +13 -13
  76. package/node_modules/@smithy/util-waiter/package.json +1 -1
  77. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/CHANGELOG.md +8 -0
  78. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.cjs +1 -1
  79. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.min.js +1 -1
  80. package/node_modules/fast-xml-parser/lib/fxp.min.js.map +1 -0
  81. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxparser.min.js +1 -1
  82. package/node_modules/fast-xml-parser/lib/fxparser.min.js.map +1 -0
  83. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/package.json +1 -1
  84. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/OrderedObjParser.js +16 -11
  85. package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/XMLParser.js +2 -2
  86. package/package.json +2 -2
  87. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
  88. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
  89. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/LICENSE +0 -0
  90. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/README.md +0 -0
  91. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxbuilder.min.js +0 -0
  92. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxbuilder.min.js.map +0 -0
  93. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxp.d.cts +0 -0
  94. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js +0 -0
  95. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/lib/fxvalidator.min.js.map +0 -0
  96. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/cli.js +0 -0
  97. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/man.js +0 -0
  98. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/cli/read.js +0 -0
  99. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.d.ts +0 -0
  100. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/fxp.js +0 -0
  101. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/ignoreAttributes.js +0 -0
  102. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/util.js +0 -0
  103. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/CharsSymbol.js +0 -0
  104. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/EntitiesParser.js +0 -0
  105. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OptionsBuilder.js +0 -0
  106. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -0
  107. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsArrBuilder.js +0 -0
  108. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -0
  109. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/JsObjBuilder.js +0 -0
  110. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -0
  111. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Report.js +0 -0
  112. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPath.js +0 -0
  113. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/TagPathMatcher.js +0 -0
  114. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XMLParser.js +0 -0
  115. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/Xml2JsParser.js +0 -0
  116. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlPartReader.js +0 -0
  117. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/XmlSpecialTagsReader.js +0 -0
  118. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/BufferSource.js +0 -0
  119. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/inputSource/StringSource.js +0 -0
  120. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/EntitiesParser.js +0 -0
  121. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParser.js +0 -0
  122. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/booleanParserExt.js +0 -0
  123. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/currency.js +0 -0
  124. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/join.js +0 -0
  125. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/number.js +0 -0
  126. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/v6/valueParsers/trim.js +0 -0
  127. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/validator.js +0 -0
  128. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlbuilder/json2xml.js +0 -0
  129. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/DocTypeReader.js +0 -0
  130. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/OptionsBuilder.js +0 -0
  131. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/node2json.js +0 -0
  132. /package/node_modules/{@aws-sdk/xml-builder/node_modules/fast-xml-parser → fast-xml-parser}/src/xmlparser/xmlNode.js +0 -0
@@ -0,0 +1,332 @@
1
+ export const XML = {
2
+ amp: "&",
3
+ apos: "'",
4
+ gt: ">",
5
+ lt: "<",
6
+ quot: '"',
7
+ };
8
+ export const COMMON_HTML = {
9
+ nbsp: "\u00a0",
10
+ copy: "\u00a9",
11
+ reg: "\u00ae",
12
+ trade: "\u2122",
13
+ mdash: "\u2014",
14
+ ndash: "\u2013",
15
+ hellip: "\u2026",
16
+ laquo: "\u00ab",
17
+ raquo: "\u00bb",
18
+ lsquo: "\u2018",
19
+ rsquo: "\u2019",
20
+ ldquo: "\u201c",
21
+ rdquo: "\u201d",
22
+ bull: "\u2022",
23
+ para: "\u00b6",
24
+ sect: "\u00a7",
25
+ deg: "\u00b0",
26
+ frac12: "\u00bd",
27
+ frac14: "\u00bc",
28
+ frac34: "\u00be",
29
+ };
30
+ export const CURRENCY = {
31
+ cent: "\u00a2",
32
+ pound: "\u00a3",
33
+ curren: "\u00a4",
34
+ yen: "\u00a5",
35
+ euro: "\u20ac",
36
+ dollar: "$",
37
+ fnof: "\u0192",
38
+ inr: "\u20b9",
39
+ af: "\u060b",
40
+ birr: "\u1265\u122d",
41
+ peso: "\u20b1",
42
+ rub: "\u20bd",
43
+ won: "\u20a9",
44
+ yuan: "\u00a5",
45
+ cedil: "\u00b8",
46
+ };
47
+ const SPECIAL_CHARS = new Set("!?\\/[]$%{}^&*()<>|+");
48
+ function validateEntityName(name) {
49
+ if (name[0] === "#") {
50
+ throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${name}"`);
51
+ }
52
+ for (const ch of name) {
53
+ if (SPECIAL_CHARS.has(ch)) {
54
+ throw new Error(`[EntityReplacer] Invalid character '${ch}' in entity name: "${name}"`);
55
+ }
56
+ }
57
+ return name;
58
+ }
59
+ function mergeEntityMaps(...maps) {
60
+ const out = Object.create(null);
61
+ for (const map of maps) {
62
+ if (!map) {
63
+ continue;
64
+ }
65
+ for (const key of Object.keys(map)) {
66
+ const raw = map[key];
67
+ if (typeof raw === "string") {
68
+ out[key] = raw;
69
+ }
70
+ else if (raw && typeof raw === "object" && raw.val !== undefined) {
71
+ const val = raw.val;
72
+ if (typeof val === "string") {
73
+ out[key] = val;
74
+ }
75
+ }
76
+ }
77
+ }
78
+ return out;
79
+ }
80
+ const LIMIT_TIER_EXTERNAL = "external";
81
+ const LIMIT_TIER_BASE = "base";
82
+ const LIMIT_TIER_ALL = "all";
83
+ function parseLimitTiers(raw) {
84
+ if (!raw || raw === LIMIT_TIER_EXTERNAL) {
85
+ return new Set([LIMIT_TIER_EXTERNAL]);
86
+ }
87
+ if (raw === LIMIT_TIER_ALL) {
88
+ return new Set([LIMIT_TIER_ALL]);
89
+ }
90
+ if (raw === LIMIT_TIER_BASE) {
91
+ return new Set([LIMIT_TIER_BASE]);
92
+ }
93
+ if (Array.isArray(raw)) {
94
+ return new Set(raw);
95
+ }
96
+ return new Set([LIMIT_TIER_EXTERNAL]);
97
+ }
98
+ const NCR_LEVEL = Object.freeze({ allow: 0, leave: 1, remove: 2, throw: 3 });
99
+ const XML10_ALLOWED_C0 = new Set([0x09, 0x0a, 0x0d]);
100
+ function parseNCRConfig(ncr) {
101
+ if (!ncr) {
102
+ return { xmlVersion: 1.0, onLevel: NCR_LEVEL.allow, nullLevel: NCR_LEVEL.remove };
103
+ }
104
+ const xmlVersion = ncr.xmlVersion === 1.1 ? 1.1 : 1.0;
105
+ const onLevel = NCR_LEVEL[ncr.onNCR ?? "allow"] ?? NCR_LEVEL.allow;
106
+ const nullLevel = NCR_LEVEL[ncr.nullNCR ?? "remove"] ?? NCR_LEVEL.remove;
107
+ const clampedNull = Math.max(nullLevel, NCR_LEVEL.remove);
108
+ return { xmlVersion, onLevel, nullLevel: clampedNull };
109
+ }
110
+ export const EntityDecoderImpl = class EntityDecoderImpl {
111
+ _limit;
112
+ _maxTotalExpansions;
113
+ _maxExpandedLength;
114
+ _postCheck;
115
+ _limitTiers;
116
+ _numericAllowed;
117
+ _baseMap;
118
+ _externalMap;
119
+ _inputMap;
120
+ _totalExpansions;
121
+ _expandedLength;
122
+ _removeSet;
123
+ _leaveSet;
124
+ _ncrXmlVersion;
125
+ _ncrOnLevel;
126
+ _ncrNullLevel;
127
+ constructor(options = {}) {
128
+ this._limit = options.limit || {};
129
+ this._maxTotalExpansions = this._limit.maxTotalExpansions || 0;
130
+ this._maxExpandedLength = this._limit.maxExpandedLength || 0;
131
+ this._postCheck = typeof options.postCheck === "function" ? options.postCheck : (r) => r;
132
+ this._limitTiers = parseLimitTiers(this._limit.applyLimitsTo ?? LIMIT_TIER_EXTERNAL);
133
+ this._numericAllowed = options.numericAllowed ?? true;
134
+ this._baseMap = mergeEntityMaps(XML, options.namedEntities || null);
135
+ this._externalMap = Object.create(null);
136
+ this._inputMap = Object.create(null);
137
+ this._totalExpansions = 0;
138
+ this._expandedLength = 0;
139
+ this._removeSet = new Set(options.remove && Array.isArray(options.remove) ? options.remove : []);
140
+ this._leaveSet = new Set(options.leave && Array.isArray(options.leave) ? options.leave : []);
141
+ const ncrCfg = parseNCRConfig(options.ncr);
142
+ this._ncrXmlVersion = ncrCfg.xmlVersion;
143
+ this._ncrOnLevel = ncrCfg.onLevel;
144
+ this._ncrNullLevel = ncrCfg.nullLevel;
145
+ }
146
+ setExternalEntities(map) {
147
+ if (map) {
148
+ for (const key of Object.keys(map)) {
149
+ validateEntityName(key);
150
+ }
151
+ }
152
+ this._externalMap = mergeEntityMaps(map);
153
+ }
154
+ addExternalEntity(key, value) {
155
+ validateEntityName(key);
156
+ if (typeof value === "string" && value.indexOf("&") === -1) {
157
+ this._externalMap[key] = value;
158
+ }
159
+ }
160
+ addInputEntities(map) {
161
+ this._totalExpansions = 0;
162
+ this._expandedLength = 0;
163
+ this._inputMap = mergeEntityMaps(map);
164
+ }
165
+ reset() {
166
+ this._inputMap = Object.create(null);
167
+ this._totalExpansions = 0;
168
+ this._expandedLength = 0;
169
+ return this;
170
+ }
171
+ setXmlVersion(version) {
172
+ this._ncrXmlVersion = version === "1.1" || version === 1.1 ? 1.1 : 1.0;
173
+ }
174
+ decode(str) {
175
+ if (typeof str !== "string" || str.length === 0) {
176
+ return str;
177
+ }
178
+ const original = str;
179
+ const chunks = [];
180
+ const len = str.length;
181
+ let last = 0;
182
+ let i = 0;
183
+ const limitExpansions = this._maxTotalExpansions > 0;
184
+ const limitLength = this._maxExpandedLength > 0;
185
+ const checkLimits = limitExpansions || limitLength;
186
+ while (i < len) {
187
+ if (str.charCodeAt(i) !== 38) {
188
+ i++;
189
+ continue;
190
+ }
191
+ let j = i + 1;
192
+ while (j < len && str.charCodeAt(j) !== 59 && j - i <= 32) {
193
+ j++;
194
+ }
195
+ if (j >= len || str.charCodeAt(j) !== 59) {
196
+ i++;
197
+ continue;
198
+ }
199
+ const token = str.slice(i + 1, j);
200
+ if (token.length === 0) {
201
+ i++;
202
+ continue;
203
+ }
204
+ let replacement;
205
+ let tier;
206
+ if (this._removeSet.has(token)) {
207
+ replacement = "";
208
+ if (tier === undefined) {
209
+ tier = LIMIT_TIER_EXTERNAL;
210
+ }
211
+ }
212
+ else if (this._leaveSet.has(token)) {
213
+ i++;
214
+ continue;
215
+ }
216
+ else if (token.charCodeAt(0) === 35) {
217
+ const ncrResult = this._resolveNCR(token);
218
+ if (ncrResult === undefined) {
219
+ i++;
220
+ continue;
221
+ }
222
+ replacement = ncrResult;
223
+ tier = LIMIT_TIER_BASE;
224
+ }
225
+ else {
226
+ const resolved = this._resolveName(token);
227
+ replacement = resolved?.value;
228
+ tier = resolved?.tier;
229
+ }
230
+ if (replacement === undefined) {
231
+ i++;
232
+ continue;
233
+ }
234
+ if (i > last) {
235
+ chunks.push(str.slice(last, i));
236
+ }
237
+ chunks.push(replacement);
238
+ last = j + 1;
239
+ i = last;
240
+ if (checkLimits && this._tierCounts(tier)) {
241
+ if (limitExpansions) {
242
+ this._totalExpansions++;
243
+ if (this._totalExpansions > this._maxTotalExpansions) {
244
+ throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ` +
245
+ `${this._totalExpansions} > ${this._maxTotalExpansions}`);
246
+ }
247
+ }
248
+ if (limitLength) {
249
+ const delta = replacement.length - (token.length + 2);
250
+ if (delta > 0) {
251
+ this._expandedLength += delta;
252
+ if (this._expandedLength > this._maxExpandedLength) {
253
+ throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ` +
254
+ `${this._expandedLength} > ${this._maxExpandedLength}`);
255
+ }
256
+ }
257
+ }
258
+ }
259
+ }
260
+ if (last < len) {
261
+ chunks.push(str.slice(last));
262
+ }
263
+ const result = chunks.length === 0 ? str : chunks.join("");
264
+ return this._postCheck(result, original);
265
+ }
266
+ _tierCounts(tier) {
267
+ if (this._limitTiers.has(LIMIT_TIER_ALL)) {
268
+ return true;
269
+ }
270
+ return this._limitTiers.has(tier);
271
+ }
272
+ _resolveName(name) {
273
+ if (name in this._inputMap) {
274
+ return { value: this._inputMap[name], tier: LIMIT_TIER_EXTERNAL };
275
+ }
276
+ if (name in this._externalMap) {
277
+ return { value: this._externalMap[name], tier: LIMIT_TIER_EXTERNAL };
278
+ }
279
+ if (name in this._baseMap) {
280
+ return { value: this._baseMap[name], tier: LIMIT_TIER_BASE };
281
+ }
282
+ return undefined;
283
+ }
284
+ _classifyNCR(cp) {
285
+ if (cp === 0) {
286
+ return this._ncrNullLevel;
287
+ }
288
+ if (cp >= 0xd800 && cp <= 0xdfff) {
289
+ return NCR_LEVEL.remove;
290
+ }
291
+ if (this._ncrXmlVersion === 1.0) {
292
+ if (cp >= 0x01 && cp <= 0x1f && !XML10_ALLOWED_C0.has(cp)) {
293
+ return NCR_LEVEL.remove;
294
+ }
295
+ }
296
+ return -1;
297
+ }
298
+ _applyNCRAction(action, token, cp) {
299
+ switch (action) {
300
+ case NCR_LEVEL.allow:
301
+ return String.fromCodePoint(cp);
302
+ case NCR_LEVEL.remove:
303
+ return "";
304
+ case NCR_LEVEL.leave:
305
+ return undefined;
306
+ case NCR_LEVEL.throw:
307
+ throw new Error(`[EntityDecoder] Prohibited numeric character reference ` +
308
+ `&${token}; (U+${cp.toString(16).toUpperCase().padStart(4, "0")})`);
309
+ default:
310
+ return String.fromCodePoint(cp);
311
+ }
312
+ }
313
+ _resolveNCR(token) {
314
+ const second = token.charCodeAt(1);
315
+ let cp;
316
+ if (second === 120 || second === 88) {
317
+ cp = parseInt(token.slice(2), 16);
318
+ }
319
+ else {
320
+ cp = parseInt(token.slice(1), 10);
321
+ }
322
+ if (Number.isNaN(cp) || cp < 0 || cp > 0x10ffff) {
323
+ return undefined;
324
+ }
325
+ const minimum = this._classifyNCR(cp);
326
+ if (!this._numericAllowed && minimum < NCR_LEVEL.remove) {
327
+ return undefined;
328
+ }
329
+ const effective = minimum === -1 ? this._ncrOnLevel : Math.max(this._ncrOnLevel, minimum);
330
+ return this._applyNCRAction(effective, token, cp);
331
+ }
332
+ };
@@ -1,4 +1,15 @@
1
1
  import { XMLParser } from "fast-xml-parser";
2
+ import { COMMON_HTML, CURRENCY, EntityDecoderImpl, XML } from "./xml-external/nodable_entities";
3
+ const entityDecoder = new EntityDecoderImpl({
4
+ namedEntities: { ...XML, ...COMMON_HTML, ...CURRENCY },
5
+ numericAllowed: true,
6
+ limit: {
7
+ maxTotalExpansions: Infinity,
8
+ },
9
+ ncr: {
10
+ xmlVersion: 1.1,
11
+ },
12
+ });
2
13
  const parser = new XMLParser({
3
14
  attributeNamePrefix: "",
4
15
  processEntities: {
@@ -6,6 +17,21 @@ const parser = new XMLParser({
6
17
  maxTotalExpansions: Infinity,
7
18
  },
8
19
  htmlEntities: true,
20
+ entityDecoder: {
21
+ setExternalEntities: (entities) => {
22
+ entityDecoder.setExternalEntities(entities);
23
+ },
24
+ addInputEntities: (entities) => {
25
+ entityDecoder.addInputEntities(entities);
26
+ },
27
+ reset: () => {
28
+ entityDecoder.reset();
29
+ },
30
+ decode: (text) => {
31
+ return entityDecoder.decode(text);
32
+ },
33
+ setXmlVersion: (version) => void {},
34
+ },
9
35
  ignoreAttributes: false,
10
36
  ignoreDeclaration: true,
11
37
  parseTagValue: false,
@@ -1,29 +1,49 @@
1
- import { Stringable } from "./stringable";
2
- export declare class XmlNode {
3
- private name;
4
- readonly children: Stringable[];
5
- private attributes;
6
- static of(name: string, childText?: string, withName?: string): XmlNode;
7
- constructor(name: string, children?: Stringable[]);
8
- withName(name: string): XmlNode;
9
- addAttribute(name: string, value: any): XmlNode;
10
- addChildNode(child: Stringable): XmlNode;
11
- removeAttribute(name: string): XmlNode;
12
- n(name: string): XmlNode;
13
- c(child: Stringable): XmlNode;
14
- a(name: string, value: any): XmlNode;
15
- cc(input: any, field: string, withName?: string): void;
16
- l(
17
- input: any,
18
- listName: string,
19
- memberName: string,
20
- valueProvider: Function
21
- ): void;
22
- lc(
23
- input: any,
24
- listName: string,
25
- memberName: string,
26
- valueProvider: Function
27
- ): void;
28
- toString(): string;
29
- }
1
+ import { Stringable } from "./stringable";
2
+ /**
3
+ * @internal
4
+ *
5
+ * Represents an XML node.
6
+ */
7
+ export declare class XmlNode {
8
+ private name;
9
+ readonly children: Stringable[];
10
+ private attributes;
11
+ static of(name: string, childText?: string, withName?: string): XmlNode;
12
+ constructor(name: string, children?: Stringable[]);
13
+ withName(name: string): XmlNode;
14
+ addAttribute(name: string, value: any): XmlNode;
15
+ addChildNode(child: Stringable): XmlNode;
16
+ removeAttribute(name: string): XmlNode;
17
+ /**
18
+ * @internal
19
+ * Alias of {@link XmlNode#withName(string)} for codegen brevity.
20
+ */
21
+ n(name: string): XmlNode;
22
+ /**
23
+ * @internal
24
+ * Alias of {@link XmlNode#addChildNode(string)} for codegen brevity.
25
+ */
26
+ c(child: Stringable): XmlNode;
27
+ /**
28
+ * @internal
29
+ * Checked version of {@link XmlNode#addAttribute(string)} for codegen brevity.
30
+ */
31
+ a(name: string, value: any): XmlNode;
32
+ /**
33
+ * Create a child node.
34
+ * Used in serialization of string fields.
35
+ * @internal
36
+ */
37
+ cc(input: any, field: string, withName?: string): void;
38
+ /**
39
+ * Creates list child nodes.
40
+ * @internal
41
+ */
42
+ l(input: any, listName: string, memberName: string, valueProvider: Function): void;
43
+ /**
44
+ * Creates list child nodes with container.
45
+ * @internal
46
+ */
47
+ lc(input: any, listName: string, memberName: string, valueProvider: Function): void;
48
+ toString(): string;
49
+ }
@@ -1,6 +1,11 @@
1
- import { Stringable } from "./stringable";
2
- export declare class XmlText implements Stringable {
3
- private value;
4
- constructor(value: string);
5
- toString(): string;
6
- }
1
+ import { Stringable } from "./stringable";
2
+ /**
3
+ * @internal
4
+ *
5
+ * Represents an XML text value.
6
+ */
7
+ export declare class XmlText implements Stringable {
8
+ private value;
9
+ constructor(value: string);
10
+ toString(): string;
11
+ }
@@ -1 +1,6 @@
1
- export declare function escapeAttribute(value: string): string;
1
+ /**
2
+ * @internal
3
+ *
4
+ * Escapes characters that can not be in an XML attribute.
5
+ */
6
+ export declare function escapeAttribute(value: string): string;
@@ -1 +1,6 @@
1
- export declare function escapeElement(value: string): string;
1
+ /**
2
+ * @internal
3
+ *
4
+ * Escapes characters that can not be in an XML element.
5
+ */
6
+ export declare function escapeElement(value: string): string;
@@ -1,3 +1,12 @@
1
- export * from "./XmlNode";
2
- export * from "./XmlText";
3
- export { parseXML } from "./xml-parser";
1
+ /**
2
+ * @internal
3
+ */
4
+ export * from "./XmlNode";
5
+ /**
6
+ * @internal
7
+ */
8
+ export * from "./XmlText";
9
+ /**
10
+ * @internal
11
+ */
12
+ export { parseXML } from "./xml-parser";
@@ -1,3 +1,6 @@
1
- export interface Stringable {
2
- toString(): string;
3
- }
1
+ /**
2
+ * @internal
3
+ */
4
+ export interface Stringable {
5
+ toString(): string;
6
+ }
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Contains code from \@nodable/entities v2.1.0
3
+ * Copyright (c) Amit Gupta (https://solothought.com)
4
+ * https://github.com/nodable/val-parsers
5
+ *
6
+ * This file bundles the EntityDecoder class and the named-entity maps
7
+ * (XML, COMMON_HTML, CURRENCY).
8
+ *
9
+ * This is a temporary solution while using this particular custom
10
+ * EntityDecoder class. The module-only nature of the original version
11
+ * is incompatible with some of our users' applications.
12
+ *
13
+ * Given that our CJS dist must call `require` to bring in the module, and
14
+ * because the EntityDecoder class and object are inaccessible via the runtime object surface
15
+ * of the XMLParser, we must inline the package.
16
+ *
17
+ * Q: Why is this necessary given that fast-xml-parser itself uses \@nodable/entities?
18
+ * A: FXP only uses \@nodable/entities when imported in ESM mode. When importing FXP
19
+ * via require, a bundled version is used, unaffected by the module-only nature
20
+ * of the entities package.
21
+ */
22
+ export declare const XML: Record<string, string>;
23
+ export declare const COMMON_HTML: Record<string, string>;
24
+ export declare const CURRENCY: Record<string, string>;
25
+ type EntityValFn = (match: string, captured: string, ...rest: unknown[]) => string;
26
+ type ApplyLimitsTo = "external" | "base" | "all" | Array<"external" | "base">;
27
+ interface EntityDecoderLimitOptions {
28
+ maxTotalExpansions?: number;
29
+ maxExpandedLength?: number;
30
+ applyLimitsTo?: ApplyLimitsTo;
31
+ }
32
+ interface EntityDecoderNCROptions {
33
+ xmlVersion?: 1.0 | 1.1;
34
+ onNCR?: "allow" | "leave" | "remove" | "throw";
35
+ nullNCR?: "remove" | "throw";
36
+ }
37
+ interface EntityDecoderOptions {
38
+ namedEntities?: Record<string, string | {
39
+ regex: RegExp;
40
+ val: string | EntityValFn;
41
+ }> | null;
42
+ postCheck?: ((resolved: string, original: string) => string) | null;
43
+ numericAllowed?: boolean;
44
+ leave?: string[];
45
+ remove?: string[];
46
+ limit?: EntityDecoderLimitOptions;
47
+ ncr?: EntityDecoderNCROptions;
48
+ }
49
+ export interface EntityDecoder {
50
+ setExternalEntities(map: Record<string, string | {
51
+ regex: RegExp;
52
+ val: string | EntityValFn;
53
+ }>): void;
54
+ addExternalEntity(key: string, value: string): void;
55
+ addInputEntities(map: Record<string, string | {
56
+ regx?: RegExp;
57
+ regex?: RegExp;
58
+ val: string | EntityValFn;
59
+ }>): void;
60
+ reset(): this;
61
+ decode(str: string): string;
62
+ setXmlVersion(version: string): void;
63
+ }
64
+ export declare const EntityDecoderImpl: new (options?: EntityDecoderOptions) => EntityDecoder;
65
+ export {};
@@ -1 +1,9 @@
1
- export declare function parseXML(xmlString: string): any;
1
+ /**
2
+ * Cases where this differs from fast-xml-parser:
3
+ *
4
+ * 1. Mixing text with nested tags (does not occur in AWS REST XML).
5
+ * <mixed-text> hello, <bold>world</bold>, how are you?</mixed-text>
6
+ *
7
+ * @internal
8
+ */
9
+ export declare function parseXML(xmlString: string): any;
@@ -1 +1,4 @@
1
- export declare function parseXML(xmlString: string): any;
1
+ /**
2
+ * @internal
3
+ */
4
+ export declare function parseXML(xmlString: string): any;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Contains code from \@nodable/entities v2.1.0
3
+ * Copyright (c) Amit Gupta (https://solothought.com)
4
+ * https://github.com/nodable/val-parsers
5
+ *
6
+ * This file bundles the EntityDecoder class and the named-entity maps
7
+ * (XML, COMMON_HTML, CURRENCY).
8
+ *
9
+ * This is a temporary solution while using this particular custom
10
+ * EntityDecoder class. The module-only nature of the original version
11
+ * is incompatible with some of our users' applications.
12
+ *
13
+ * Given that our CJS dist must call `require` to bring in the module, and
14
+ * because the EntityDecoder class and object are inaccessible via the runtime object surface
15
+ * of the XMLParser, we must inline the package.
16
+ *
17
+ * Q: Why is this necessary given that fast-xml-parser itself uses \@nodable/entities?
18
+ * A: FXP only uses \@nodable/entities when imported in ESM mode. When importing FXP
19
+ * via require, a bundled version is used, unaffected by the module-only nature
20
+ * of the entities package.
21
+ */
22
+ export declare const XML: Record<string, string>;
23
+ export declare const COMMON_HTML: Record<string, string>;
24
+ export declare const CURRENCY: Record<string, string>;
25
+ type EntityValFn = (match: string, captured: string, ...rest: unknown[]) => string;
26
+ type ApplyLimitsTo = "external" | "base" | "all" | Array<"external" | "base">;
27
+ interface EntityDecoderLimitOptions {
28
+ maxTotalExpansions?: number;
29
+ maxExpandedLength?: number;
30
+ applyLimitsTo?: ApplyLimitsTo;
31
+ }
32
+ interface EntityDecoderNCROptions {
33
+ xmlVersion?: 1.0 | 1.1;
34
+ onNCR?: "allow" | "leave" | "remove" | "throw";
35
+ nullNCR?: "remove" | "throw";
36
+ }
37
+ interface EntityDecoderOptions {
38
+ namedEntities?: Record<string, string | {
39
+ regex: RegExp;
40
+ val: string | EntityValFn;
41
+ }> | null;
42
+ postCheck?: ((resolved: string, original: string) => string) | null;
43
+ numericAllowed?: boolean;
44
+ leave?: string[];
45
+ remove?: string[];
46
+ limit?: EntityDecoderLimitOptions;
47
+ ncr?: EntityDecoderNCROptions;
48
+ }
49
+ export interface EntityDecoder {
50
+ setExternalEntities(map: Record<string, string | {
51
+ regex: RegExp;
52
+ val: string | EntityValFn;
53
+ }>): void;
54
+ addExternalEntity(key: string, value: string): void;
55
+ addInputEntities(map: Record<string, string | {
56
+ regx?: RegExp;
57
+ regex?: RegExp;
58
+ val: string | EntityValFn;
59
+ }>): void;
60
+ reset(): this;
61
+ decode(str: string): string;
62
+ setXmlVersion(version: string): void;
63
+ }
64
+ export declare const EntityDecoderImpl: new (options?: EntityDecoderOptions) => EntityDecoder;
65
+ export {};
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@aws-sdk/xml-builder",
3
- "version": "3.972.19",
3
+ "version": "3.972.21",
4
4
  "description": "XML utilities for the AWS SDK",
5
5
  "dependencies": {
6
+ "@nodable/entities": "2.1.0",
6
7
  "@smithy/types": "^4.14.1",
7
- "fast-xml-parser": "5.7.1",
8
+ "fast-xml-parser": "5.7.2",
8
9
  "tslib": "^2.6.2"
9
10
  },
10
11
  "scripts": {