@cdk8s/awscdk-resolver 0.0.608 → 0.0.610

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 (145) hide show
  1. package/.jsii +3 -3
  2. package/lib/resolve.js +1 -1
  3. package/node_modules/@aws-sdk/client-cloudformation/package.json +3 -3
  4. package/node_modules/@aws-sdk/core/package.json +2 -2
  5. package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
  6. package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
  7. package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
  8. package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
  9. package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
  10. package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
  11. package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
  12. package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
  13. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
  14. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
  15. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
  16. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
  17. package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
  18. package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
  19. package/node_modules/@aws-sdk/token-providers/package.json +3 -3
  20. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.browser.js +1 -1
  21. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-parser.js +233 -43
  22. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.browser.js +1 -1
  23. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-parser.js +233 -43
  24. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-parser.d.ts +1 -1
  25. package/node_modules/@aws-sdk/xml-builder/dist-types/xml-parser.d.ts +2 -1
  26. package/node_modules/@aws-sdk/xml-builder/package.json +4 -4
  27. package/node_modules/@smithy/core/dist-cjs/submodules/cbor/index.js +518 -371
  28. package/node_modules/@smithy/core/dist-cjs/submodules/client/index.js +1 -1
  29. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-decode.js +326 -269
  30. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor-encode.js +192 -103
  31. package/node_modules/@smithy/core/dist-es/submodules/cbor/cbor.js +4 -2
  32. package/node_modules/@smithy/core/dist-es/submodules/client/smithy-client/get-value-from-text-node.js +1 -1
  33. package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-decode.d.ts +4 -0
  34. package/node_modules/@smithy/core/dist-types/submodules/cbor/cbor-encode.d.ts +8 -4
  35. package/node_modules/@smithy/core/package.json +1 -1
  36. package/node_modules/@smithy/credential-provider-imds/package.json +2 -2
  37. package/node_modules/@smithy/fetch-http-handler/package.json +2 -2
  38. package/node_modules/@smithy/node-http-handler/package.json +2 -2
  39. package/node_modules/@smithy/signature-v4/package.json +2 -2
  40. package/package.json +6 -6
  41. package/node_modules/@aws-sdk/xml-builder/dist-cjs/xml-external/nodable_entities.js +0 -333
  42. package/node_modules/@aws-sdk/xml-builder/dist-es/xml-external/nodable_entities.js +0 -332
  43. package/node_modules/@aws-sdk/xml-builder/dist-types/ts3.4/xml-external/nodable_entities.d.ts +0 -66
  44. package/node_modules/@aws-sdk/xml-builder/dist-types/xml-external/nodable_entities.d.ts +0 -65
  45. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/CHANGELOG.md +0 -827
  46. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/LICENSE +0 -21
  47. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/README.md +0 -202
  48. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js +0 -2
  49. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxbuilder.min.js.map +0 -1
  50. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.cjs +0 -1
  51. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.d.cts +0 -770
  52. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js +0 -2
  53. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxp.min.js.map +0 -1
  54. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js +0 -2
  55. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxparser.min.js.map +0 -1
  56. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js +0 -2
  57. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/lib/fxvalidator.min.js.map +0 -1
  58. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/package.json +0 -93
  59. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/cli.js +0 -97
  60. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/man.js +0 -17
  61. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/cli/read.js +0 -43
  62. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.d.ts +0 -739
  63. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/fxp.js +0 -14
  64. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/ignoreAttributes.js +0 -18
  65. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/util.js +0 -61
  66. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/CharsSymbol.js +0 -16
  67. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/EntitiesParser.js +0 -106
  68. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OptionsBuilder.js +0 -61
  69. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/BaseOutputBuilder.js +0 -69
  70. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsArrBuilder.js +0 -103
  71. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsMinArrBuilder.js +0 -100
  72. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/JsObjBuilder.js +0 -154
  73. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/OutputBuilders/ParserOptionsBuilder.js +0 -94
  74. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Report.js +0 -0
  75. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPath.js +0 -81
  76. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/TagPathMatcher.js +0 -13
  77. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XMLParser.js +0 -83
  78. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/Xml2JsParser.js +0 -235
  79. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlPartReader.js +0 -210
  80. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/XmlSpecialTagsReader.js +0 -111
  81. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/BufferSource.js +0 -116
  82. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/inputSource/StringSource.js +0 -121
  83. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/EntitiesParser.js +0 -105
  84. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParser.js +0 -22
  85. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/booleanParserExt.js +0 -19
  86. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/currency.js +0 -38
  87. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/join.js +0 -13
  88. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/number.js +0 -14
  89. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/v6/valueParsers/trim.js +0 -6
  90. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/validator.js +0 -425
  91. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js +0 -6
  92. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js +0 -407
  93. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js +0 -163
  94. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js +0 -840
  95. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/XMLParser.js +0 -71
  96. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/node2json.js +0 -177
  97. package/node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser/src/xmlparser/xmlNode.js +0 -40
  98. package/node_modules/@nodable/entities/README.md +0 -41
  99. package/node_modules/@nodable/entities/package.json +0 -57
  100. package/node_modules/@nodable/entities/src/EntityDecoder.js +0 -644
  101. package/node_modules/@nodable/entities/src/EntityEncoder.js +0 -194
  102. package/node_modules/@nodable/entities/src/entities.js +0 -1159
  103. package/node_modules/@nodable/entities/src/entityTries.js +0 -49
  104. package/node_modules/@nodable/entities/src/index.d.ts +0 -341
  105. package/node_modules/@nodable/entities/src/index.js +0 -29
  106. package/node_modules/anynum/LICENSE +0 -21
  107. package/node_modules/anynum/README.md +0 -142
  108. package/node_modules/anynum/anynum.js +0 -135
  109. package/node_modules/anynum/digitTable.js +0 -116
  110. package/node_modules/anynum/package.json +0 -42
  111. package/node_modules/fast-xml-builder/CHANGELOG.md +0 -40
  112. package/node_modules/fast-xml-builder/LICENSE +0 -21
  113. package/node_modules/fast-xml-builder/README.md +0 -74
  114. package/node_modules/fast-xml-builder/lib/fxb.cjs +0 -1
  115. package/node_modules/fast-xml-builder/lib/fxb.d.cts +0 -270
  116. package/node_modules/fast-xml-builder/lib/fxb.min.js +0 -2
  117. package/node_modules/fast-xml-builder/lib/fxb.min.js.map +0 -1
  118. package/node_modules/fast-xml-builder/package.json +0 -81
  119. package/node_modules/fast-xml-builder/src/fxb.d.ts +0 -270
  120. package/node_modules/fast-xml-builder/src/fxb.js +0 -599
  121. package/node_modules/fast-xml-builder/src/ignoreAttributes.js +0 -18
  122. package/node_modules/fast-xml-builder/src/orderedJs2Xml.js +0 -359
  123. package/node_modules/fast-xml-builder/src/prettifyJs2Xml.js +0 -0
  124. package/node_modules/fast-xml-builder/src/util.js +0 -16
  125. package/node_modules/path-expression-matcher/LICENSE +0 -21
  126. package/node_modules/path-expression-matcher/README.md +0 -947
  127. package/node_modules/path-expression-matcher/lib/pem.cjs +0 -1
  128. package/node_modules/path-expression-matcher/lib/pem.d.cts +0 -715
  129. package/node_modules/path-expression-matcher/lib/pem.min.js +0 -2
  130. package/node_modules/path-expression-matcher/lib/pem.min.js.map +0 -1
  131. package/node_modules/path-expression-matcher/package.json +0 -79
  132. package/node_modules/path-expression-matcher/src/Expression.js +0 -232
  133. package/node_modules/path-expression-matcher/src/ExpressionSet.js +0 -225
  134. package/node_modules/path-expression-matcher/src/Matcher.js +0 -660
  135. package/node_modules/path-expression-matcher/src/index.d.ts +0 -589
  136. package/node_modules/path-expression-matcher/src/index.js +0 -29
  137. package/node_modules/strnum/CHANGELOG.md +0 -51
  138. package/node_modules/strnum/LICENSE +0 -21
  139. package/node_modules/strnum/README.md +0 -113
  140. package/node_modules/strnum/package.json +0 -36
  141. package/node_modules/strnum/strnum.js +0 -171
  142. package/node_modules/xml-naming/README.md +0 -189
  143. package/node_modules/xml-naming/package.json +0 -54
  144. package/node_modules/xml-naming/src/index.d.ts +0 -74
  145. package/node_modules/xml-naming/src/index.js +0 -270
@@ -1,333 +0,0 @@
1
- const XML = {
2
- amp: "&",
3
- apos: "'",
4
- gt: ">",
5
- lt: "<",
6
- quot: '"',
7
- };
8
- exports.XML = XML;
9
- exports.COMMON_HTML = {
10
- nbsp: "\u00a0",
11
- copy: "\u00a9",
12
- reg: "\u00ae",
13
- trade: "\u2122",
14
- mdash: "\u2014",
15
- ndash: "\u2013",
16
- hellip: "\u2026",
17
- laquo: "\u00ab",
18
- raquo: "\u00bb",
19
- lsquo: "\u2018",
20
- rsquo: "\u2019",
21
- ldquo: "\u201c",
22
- rdquo: "\u201d",
23
- bull: "\u2022",
24
- para: "\u00b6",
25
- sect: "\u00a7",
26
- deg: "\u00b0",
27
- frac12: "\u00bd",
28
- frac14: "\u00bc",
29
- frac34: "\u00be",
30
- };
31
- exports.CURRENCY = {
32
- cent: "\u00a2",
33
- pound: "\u00a3",
34
- curren: "\u00a4",
35
- yen: "\u00a5",
36
- euro: "\u20ac",
37
- dollar: "$",
38
- fnof: "\u0192",
39
- inr: "\u20b9",
40
- af: "\u060b",
41
- birr: "\u1265\u122d",
42
- peso: "\u20b1",
43
- rub: "\u20bd",
44
- won: "\u20a9",
45
- yuan: "\u00a5",
46
- cedil: "\u00b8",
47
- };
48
- const SPECIAL_CHARS = new Set("!?\\/[]$%{}^&*()<>|+");
49
- function validateEntityName(name) {
50
- if (name[0] === "#") {
51
- throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${name}"`);
52
- }
53
- for (const ch of name) {
54
- if (SPECIAL_CHARS.has(ch)) {
55
- throw new Error(`[EntityReplacer] Invalid character '${ch}' in entity name: "${name}"`);
56
- }
57
- }
58
- return name;
59
- }
60
- function mergeEntityMaps(...maps) {
61
- const out = Object.create(null);
62
- for (const map of maps) {
63
- if (!map) {
64
- continue;
65
- }
66
- for (const key of Object.keys(map)) {
67
- const raw = map[key];
68
- if (typeof raw === "string") {
69
- out[key] = raw;
70
- }
71
- else if (raw && typeof raw === "object" && raw.val !== undefined) {
72
- const val = raw.val;
73
- if (typeof val === "string") {
74
- out[key] = val;
75
- }
76
- }
77
- }
78
- }
79
- return out;
80
- }
81
- const LIMIT_TIER_EXTERNAL = "external";
82
- const LIMIT_TIER_BASE = "base";
83
- const LIMIT_TIER_ALL = "all";
84
- function parseLimitTiers(raw) {
85
- if (!raw || raw === LIMIT_TIER_EXTERNAL) {
86
- return new Set([LIMIT_TIER_EXTERNAL]);
87
- }
88
- if (raw === LIMIT_TIER_ALL) {
89
- return new Set([LIMIT_TIER_ALL]);
90
- }
91
- if (raw === LIMIT_TIER_BASE) {
92
- return new Set([LIMIT_TIER_BASE]);
93
- }
94
- if (Array.isArray(raw)) {
95
- return new Set(raw);
96
- }
97
- return new Set([LIMIT_TIER_EXTERNAL]);
98
- }
99
- const NCR_LEVEL = Object.freeze({ allow: 0, leave: 1, remove: 2, throw: 3 });
100
- const XML10_ALLOWED_C0 = new Set([0x09, 0x0a, 0x0d]);
101
- function parseNCRConfig(ncr) {
102
- if (!ncr) {
103
- return { xmlVersion: 1.0, onLevel: NCR_LEVEL.allow, nullLevel: NCR_LEVEL.remove };
104
- }
105
- const xmlVersion = ncr.xmlVersion === 1.1 ? 1.1 : 1.0;
106
- const onLevel = NCR_LEVEL[ncr.onNCR ?? "allow"] ?? NCR_LEVEL.allow;
107
- const nullLevel = NCR_LEVEL[ncr.nullNCR ?? "remove"] ?? NCR_LEVEL.remove;
108
- const clampedNull = Math.max(nullLevel, NCR_LEVEL.remove);
109
- return { xmlVersion, onLevel, nullLevel: clampedNull };
110
- }
111
- exports.EntityDecoderImpl = class EntityDecoderImpl {
112
- _limit;
113
- _maxTotalExpansions;
114
- _maxExpandedLength;
115
- _postCheck;
116
- _limitTiers;
117
- _numericAllowed;
118
- _baseMap;
119
- _externalMap;
120
- _inputMap;
121
- _totalExpansions;
122
- _expandedLength;
123
- _removeSet;
124
- _leaveSet;
125
- _ncrXmlVersion;
126
- _ncrOnLevel;
127
- _ncrNullLevel;
128
- constructor(options = {}) {
129
- this._limit = options.limit || {};
130
- this._maxTotalExpansions = this._limit.maxTotalExpansions || 0;
131
- this._maxExpandedLength = this._limit.maxExpandedLength || 0;
132
- this._postCheck = typeof options.postCheck === "function" ? options.postCheck : (r) => r;
133
- this._limitTiers = parseLimitTiers(this._limit.applyLimitsTo ?? LIMIT_TIER_EXTERNAL);
134
- this._numericAllowed = options.numericAllowed ?? true;
135
- this._baseMap = mergeEntityMaps(XML, options.namedEntities || null);
136
- this._externalMap = Object.create(null);
137
- this._inputMap = Object.create(null);
138
- this._totalExpansions = 0;
139
- this._expandedLength = 0;
140
- this._removeSet = new Set(options.remove && Array.isArray(options.remove) ? options.remove : []);
141
- this._leaveSet = new Set(options.leave && Array.isArray(options.leave) ? options.leave : []);
142
- const ncrCfg = parseNCRConfig(options.ncr);
143
- this._ncrXmlVersion = ncrCfg.xmlVersion;
144
- this._ncrOnLevel = ncrCfg.onLevel;
145
- this._ncrNullLevel = ncrCfg.nullLevel;
146
- }
147
- setExternalEntities(map) {
148
- if (map) {
149
- for (const key of Object.keys(map)) {
150
- validateEntityName(key);
151
- }
152
- }
153
- this._externalMap = mergeEntityMaps(map);
154
- }
155
- addExternalEntity(key, value) {
156
- validateEntityName(key);
157
- if (typeof value === "string" && value.indexOf("&") === -1) {
158
- this._externalMap[key] = value;
159
- }
160
- }
161
- addInputEntities(map) {
162
- this._totalExpansions = 0;
163
- this._expandedLength = 0;
164
- this._inputMap = mergeEntityMaps(map);
165
- }
166
- reset() {
167
- this._inputMap = Object.create(null);
168
- this._totalExpansions = 0;
169
- this._expandedLength = 0;
170
- return this;
171
- }
172
- setXmlVersion(version) {
173
- this._ncrXmlVersion = version === "1.1" || version === 1.1 ? 1.1 : 1.0;
174
- }
175
- decode(str) {
176
- if (typeof str !== "string" || str.length === 0) {
177
- return str;
178
- }
179
- const original = str;
180
- const chunks = [];
181
- const len = str.length;
182
- let last = 0;
183
- let i = 0;
184
- const limitExpansions = this._maxTotalExpansions > 0;
185
- const limitLength = this._maxExpandedLength > 0;
186
- const checkLimits = limitExpansions || limitLength;
187
- while (i < len) {
188
- if (str.charCodeAt(i) !== 38) {
189
- i++;
190
- continue;
191
- }
192
- let j = i + 1;
193
- while (j < len && str.charCodeAt(j) !== 59 && j - i <= 32) {
194
- j++;
195
- }
196
- if (j >= len || str.charCodeAt(j) !== 59) {
197
- i++;
198
- continue;
199
- }
200
- const token = str.slice(i + 1, j);
201
- if (token.length === 0) {
202
- i++;
203
- continue;
204
- }
205
- let replacement;
206
- let tier;
207
- if (this._removeSet.has(token)) {
208
- replacement = "";
209
- if (tier === undefined) {
210
- tier = LIMIT_TIER_EXTERNAL;
211
- }
212
- }
213
- else if (this._leaveSet.has(token)) {
214
- i++;
215
- continue;
216
- }
217
- else if (token.charCodeAt(0) === 35) {
218
- const ncrResult = this._resolveNCR(token);
219
- if (ncrResult === undefined) {
220
- i++;
221
- continue;
222
- }
223
- replacement = ncrResult;
224
- tier = LIMIT_TIER_BASE;
225
- }
226
- else {
227
- const resolved = this._resolveName(token);
228
- replacement = resolved?.value;
229
- tier = resolved?.tier;
230
- }
231
- if (replacement === undefined) {
232
- i++;
233
- continue;
234
- }
235
- if (i > last) {
236
- chunks.push(str.slice(last, i));
237
- }
238
- chunks.push(replacement);
239
- last = j + 1;
240
- i = last;
241
- if (checkLimits && this._tierCounts(tier)) {
242
- if (limitExpansions) {
243
- this._totalExpansions++;
244
- if (this._totalExpansions > this._maxTotalExpansions) {
245
- throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ` +
246
- `${this._totalExpansions} > ${this._maxTotalExpansions}`);
247
- }
248
- }
249
- if (limitLength) {
250
- const delta = replacement.length - (token.length + 2);
251
- if (delta > 0) {
252
- this._expandedLength += delta;
253
- if (this._expandedLength > this._maxExpandedLength) {
254
- throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ` +
255
- `${this._expandedLength} > ${this._maxExpandedLength}`);
256
- }
257
- }
258
- }
259
- }
260
- }
261
- if (last < len) {
262
- chunks.push(str.slice(last));
263
- }
264
- const result = chunks.length === 0 ? str : chunks.join("");
265
- return this._postCheck(result, original);
266
- }
267
- _tierCounts(tier) {
268
- if (this._limitTiers.has(LIMIT_TIER_ALL)) {
269
- return true;
270
- }
271
- return this._limitTiers.has(tier);
272
- }
273
- _resolveName(name) {
274
- if (name in this._inputMap) {
275
- return { value: this._inputMap[name], tier: LIMIT_TIER_EXTERNAL };
276
- }
277
- if (name in this._externalMap) {
278
- return { value: this._externalMap[name], tier: LIMIT_TIER_EXTERNAL };
279
- }
280
- if (name in this._baseMap) {
281
- return { value: this._baseMap[name], tier: LIMIT_TIER_BASE };
282
- }
283
- return undefined;
284
- }
285
- _classifyNCR(cp) {
286
- if (cp === 0) {
287
- return this._ncrNullLevel;
288
- }
289
- if (cp >= 0xd800 && cp <= 0xdfff) {
290
- return NCR_LEVEL.remove;
291
- }
292
- if (this._ncrXmlVersion === 1.0) {
293
- if (cp >= 0x01 && cp <= 0x1f && !XML10_ALLOWED_C0.has(cp)) {
294
- return NCR_LEVEL.remove;
295
- }
296
- }
297
- return -1;
298
- }
299
- _applyNCRAction(action, token, cp) {
300
- switch (action) {
301
- case NCR_LEVEL.allow:
302
- return String.fromCodePoint(cp);
303
- case NCR_LEVEL.remove:
304
- return "";
305
- case NCR_LEVEL.leave:
306
- return undefined;
307
- case NCR_LEVEL.throw:
308
- throw new Error(`[EntityDecoder] Prohibited numeric character reference ` +
309
- `&${token}; (U+${cp.toString(16).toUpperCase().padStart(4, "0")})`);
310
- default:
311
- return String.fromCodePoint(cp);
312
- }
313
- }
314
- _resolveNCR(token) {
315
- const second = token.charCodeAt(1);
316
- let cp;
317
- if (second === 120 || second === 88) {
318
- cp = parseInt(token.slice(2), 16);
319
- }
320
- else {
321
- cp = parseInt(token.slice(1), 10);
322
- }
323
- if (Number.isNaN(cp) || cp < 0 || cp > 0x10ffff) {
324
- return undefined;
325
- }
326
- const minimum = this._classifyNCR(cp);
327
- if (!this._numericAllowed && minimum < NCR_LEVEL.remove) {
328
- return undefined;
329
- }
330
- const effective = minimum === -1 ? this._ncrOnLevel : Math.max(this._ncrOnLevel, minimum);
331
- return this._applyNCRAction(effective, token, cp);
332
- }
333
- };
@@ -1,332 +0,0 @@
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
- };