xml-tokenizer 0.0.32 → 0.0.34

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 (123) hide show
  1. package/dist/cjs/config.js +1 -43
  2. package/dist/cjs/get-q-name.js +1 -8
  3. package/dist/cjs/index.js +1 -80
  4. package/dist/cjs/processor/process.js +1 -0
  5. package/dist/cjs/processor/processors/path-tracker.js +1 -0
  6. package/dist/cjs/processor/validate-processor-order.js +5 -0
  7. package/dist/cjs/selector/TokenSelectState.js +1 -107
  8. package/dist/cjs/selector/TokenSelectStateMachine.js +1 -151
  9. package/dist/cjs/selector/TokenSelector.js +1 -140
  10. package/dist/cjs/selector/match-string.js +1 -22
  11. package/dist/cjs/selector/select.js +1 -20
  12. package/dist/cjs/token-to-xml.js +1 -45
  13. package/dist/cjs/tokenizer/XmlError.js +1 -97
  14. package/dist/cjs/tokenizer/XmlStream.js +1 -479
  15. package/dist/cjs/tokenizer/ascii-constants.js +1 -70
  16. package/dist/cjs/tokenizer/tokenize.js +2 -420
  17. package/dist/cjs/tokenizer/utils.js +1 -48
  18. package/dist/cjs/tokens-to-xml.js +1 -14
  19. package/dist/cjs/xml-to-object.js +1 -70
  20. package/dist/cjs/xml-to-simplified-object.js +1 -87
  21. package/dist/esm/config.js +1 -39
  22. package/dist/esm/get-q-name.js +1 -6
  23. package/dist/esm/index.js +1 -16
  24. package/dist/esm/processor/process.js +1 -0
  25. package/dist/esm/processor/processors/path-tracker.js +1 -0
  26. package/dist/esm/processor/validate-processor-order.js +5 -0
  27. package/dist/esm/selector/TokenSelectState.js +1 -103
  28. package/dist/esm/selector/TokenSelectStateMachine.js +1 -149
  29. package/dist/esm/selector/TokenSelector.js +1 -138
  30. package/dist/esm/selector/match-string.js +1 -20
  31. package/dist/esm/selector/select.js +1 -18
  32. package/dist/esm/token-to-xml.js +1 -43
  33. package/dist/esm/tokenizer/XmlError.js +1 -95
  34. package/dist/esm/tokenizer/XmlStream.js +1 -477
  35. package/dist/esm/tokenizer/ascii-constants.js +1 -36
  36. package/dist/esm/tokenizer/tokenize.js +2 -417
  37. package/dist/esm/tokenizer/utils.js +1 -41
  38. package/dist/esm/tokens-to-xml.js +1 -12
  39. package/dist/esm/xml-to-object.js +1 -67
  40. package/dist/esm/xml-to-simplified-object.js +1 -84
  41. package/dist/types/config.d.ts +0 -1
  42. package/dist/types/get-q-name.d.ts +0 -1
  43. package/dist/types/index.d.ts +1 -1
  44. package/dist/types/processor/index.d.ts +4 -0
  45. package/dist/types/processor/process.d.ts +3 -0
  46. package/dist/types/processor/processors/index.d.ts +1 -0
  47. package/dist/types/processor/processors/path-tracker.d.ts +5 -0
  48. package/dist/types/processor/types.d.ts +10 -0
  49. package/dist/types/processor/validate-processor-order.d.ts +2 -0
  50. package/dist/types/selector/TokenSelectState.d.ts +0 -1
  51. package/dist/types/selector/TokenSelectStateMachine.d.ts +0 -1
  52. package/dist/types/selector/TokenSelector.d.ts +0 -1
  53. package/dist/types/selector/index.d.ts +0 -1
  54. package/dist/types/selector/match-string.d.ts +0 -1
  55. package/dist/types/selector/select.d.ts +0 -1
  56. package/dist/types/selector/types.d.ts +0 -1
  57. package/dist/types/token-to-xml.d.ts +0 -1
  58. package/dist/types/tokenizer/XmlError.d.ts +0 -1
  59. package/dist/types/tokenizer/XmlStream.d.ts +20 -1
  60. package/dist/types/tokenizer/ascii-constants.d.ts +0 -1
  61. package/dist/types/tokenizer/index.d.ts +0 -1
  62. package/dist/types/tokenizer/tokenize.d.ts +0 -1
  63. package/dist/types/tokenizer/types.d.ts +0 -1
  64. package/dist/types/tokenizer/utils.d.ts +0 -1
  65. package/dist/types/tokens-to-xml.d.ts +0 -1
  66. package/dist/types/xml-to-object.d.ts +0 -1
  67. package/dist/types/xml-to-simplified-object.d.ts +0 -1
  68. package/package.json +6 -6
  69. package/dist/cjs/config.js.map +0 -1
  70. package/dist/cjs/get-q-name.js.map +0 -1
  71. package/dist/cjs/index.js.map +0 -1
  72. package/dist/cjs/selector/TokenSelectState.js.map +0 -1
  73. package/dist/cjs/selector/TokenSelectStateMachine.js.map +0 -1
  74. package/dist/cjs/selector/TokenSelector.js.map +0 -1
  75. package/dist/cjs/selector/match-string.js.map +0 -1
  76. package/dist/cjs/selector/select.js.map +0 -1
  77. package/dist/cjs/token-to-xml.js.map +0 -1
  78. package/dist/cjs/tokenizer/XmlError.js.map +0 -1
  79. package/dist/cjs/tokenizer/XmlStream.js.map +0 -1
  80. package/dist/cjs/tokenizer/ascii-constants.js.map +0 -1
  81. package/dist/cjs/tokenizer/tokenize.js.map +0 -1
  82. package/dist/cjs/tokenizer/utils.js.map +0 -1
  83. package/dist/cjs/tokens-to-xml.js.map +0 -1
  84. package/dist/cjs/xml-to-object.js.map +0 -1
  85. package/dist/cjs/xml-to-simplified-object.js.map +0 -1
  86. package/dist/esm/config.js.map +0 -1
  87. package/dist/esm/get-q-name.js.map +0 -1
  88. package/dist/esm/index.js.map +0 -1
  89. package/dist/esm/selector/TokenSelectState.js.map +0 -1
  90. package/dist/esm/selector/TokenSelectStateMachine.js.map +0 -1
  91. package/dist/esm/selector/TokenSelector.js.map +0 -1
  92. package/dist/esm/selector/match-string.js.map +0 -1
  93. package/dist/esm/selector/select.js.map +0 -1
  94. package/dist/esm/token-to-xml.js.map +0 -1
  95. package/dist/esm/tokenizer/XmlError.js.map +0 -1
  96. package/dist/esm/tokenizer/XmlStream.js.map +0 -1
  97. package/dist/esm/tokenizer/ascii-constants.js.map +0 -1
  98. package/dist/esm/tokenizer/tokenize.js.map +0 -1
  99. package/dist/esm/tokenizer/utils.js.map +0 -1
  100. package/dist/esm/tokens-to-xml.js.map +0 -1
  101. package/dist/esm/xml-to-object.js.map +0 -1
  102. package/dist/esm/xml-to-simplified-object.js.map +0 -1
  103. package/dist/types/config.d.ts.map +0 -1
  104. package/dist/types/get-q-name.d.ts.map +0 -1
  105. package/dist/types/index.d.ts.map +0 -1
  106. package/dist/types/selector/TokenSelectState.d.ts.map +0 -1
  107. package/dist/types/selector/TokenSelectStateMachine.d.ts.map +0 -1
  108. package/dist/types/selector/TokenSelector.d.ts.map +0 -1
  109. package/dist/types/selector/index.d.ts.map +0 -1
  110. package/dist/types/selector/match-string.d.ts.map +0 -1
  111. package/dist/types/selector/select.d.ts.map +0 -1
  112. package/dist/types/selector/types.d.ts.map +0 -1
  113. package/dist/types/token-to-xml.d.ts.map +0 -1
  114. package/dist/types/tokenizer/XmlError.d.ts.map +0 -1
  115. package/dist/types/tokenizer/XmlStream.d.ts.map +0 -1
  116. package/dist/types/tokenizer/ascii-constants.d.ts.map +0 -1
  117. package/dist/types/tokenizer/index.d.ts.map +0 -1
  118. package/dist/types/tokenizer/tokenize.d.ts.map +0 -1
  119. package/dist/types/tokenizer/types.d.ts.map +0 -1
  120. package/dist/types/tokenizer/utils.d.ts.map +0 -1
  121. package/dist/types/tokens-to-xml.d.ts.map +0 -1
  122. package/dist/types/xml-to-object.d.ts.map +0 -1
  123. package/dist/types/xml-to-simplified-object.d.ts.map +0 -1
@@ -1,417 +1,2 @@
1
- import { getQName } from '../get-q-name.js';
2
- import { LESS_THAN, GREATER_THAN, SLASH, EQUALS, SINGLE_QUOTE, DOUBLE_QUOTE, HYPHEN, QUESTION_MARK, OPEN_SQUARE_BRACKET, PERCENT, EXCLAMATION_MARK, UPPERCASE_S, UPPERCASE_P, CLOSE_SQUARE_BRACKET } from './ascii-constants.js';
3
- import { isXmlSpaceByte } from './utils.js';
4
- import { XmlError } from './XmlError.js';
5
- import { XmlStream } from './XmlStream.js';
6
-
7
- const BOM = "\uFEFF";
8
- const XML_DECLARATION_START = "<?xml ";
9
- const XML_DECLARATION_END = "?>";
10
- const ENTITY_DECLARATION_START = "<!ENTITY";
11
- const ELEMENT_DECLARATION_START = "<!ELEMENT";
12
- const ATTLIST_DECLARATION_START = "<!ATTLIST";
13
- const NOTATION_DECLARATION_START = "<!NOTATION";
14
- const DOCTYPE_START = "<!DOCTYPE";
15
- const PI_START = "<?";
16
- const PI_END = "?>";
17
- const COMMENT_START = "<!--";
18
- const COMMENT_END = "-->";
19
- const CDATA_START = "<![CDATA[";
20
- const CDATA_END = "]]>";
21
- const NDATA = "NDATA";
22
- const PUBLIC = "PUBLIC";
23
- const SYSTEM = "SYSTEM";
24
- const VERSION = "version";
25
- const ENCODING = "encoding";
26
- const STANDALONE = "standalone";
27
- function tokenize(xmlString, tokenCallback, options = {}) {
28
- tokenizeXmlStream(new XmlStream(xmlString, options), tokenCallback);
29
- }
30
- function tokenizeXmlStream(s, tokenCallback) {
31
- if (s.startsWith(BOM)) {
32
- s.advance(1);
33
- }
34
- if (s.startsWith(XML_DECLARATION_START)) {
35
- parseDeclaration(s);
36
- }
37
- parseMisc(s, tokenCallback);
38
- s.skipSpaces();
39
- if (s.startsWith(DOCTYPE_START) || s.startsWith(DOCTYPE_START.toLowerCase())) {
40
- if (!s.config.allowDtd) {
41
- throw new XmlError({ type: "DtdDetected" });
42
- }
43
- parseDoctype(s, tokenCallback);
44
- parseMisc(s, tokenCallback);
45
- }
46
- s.skipSpaces();
47
- if (s.config.strictDocument) {
48
- if (!s.atEnd() && s.currCodeUnit() === LESS_THAN) {
49
- parseElement(s, tokenCallback);
50
- }
51
- parseMisc(s, tokenCallback);
52
- if (!s.atEnd()) {
53
- throw new XmlError({ type: "UnknownToken", message: "Not at end" }, s.genTextPos());
54
- }
55
- } else {
56
- while (!s.atEnd()) {
57
- if (s.currCodeUnit() === LESS_THAN) {
58
- parseElement(s, tokenCallback);
59
- } else {
60
- parseText(s, tokenCallback);
61
- }
62
- parseMisc(s, tokenCallback);
63
- }
64
- }
65
- }
66
- function parseMisc(s, tokenCallback) {
67
- while (!s.atEnd()) {
68
- s.skipSpaces();
69
- if (s.startsWith(COMMENT_START)) {
70
- parseComment(s, tokenCallback);
71
- } else if (s.startsWith(PI_START)) {
72
- parsePi(s, tokenCallback);
73
- } else {
74
- break;
75
- }
76
- }
77
- }
78
- function parseDeclaration(s) {
79
- function consumeSpaces(_s) {
80
- if (_s.startsWithSpace()) {
81
- _s.skipSpaces();
82
- } else if (!_s.startsWith(XML_DECLARATION_END) && !_s.atEnd()) {
83
- throw new XmlError(
84
- { type: "InvalidChar", expected: "a whitespace", actual: _s.currCodeUnitUnchecked() },
85
- _s.genTextPos()
86
- );
87
- }
88
- }
89
- s.advance(5);
90
- consumeSpaces(s);
91
- if (!s.startsWith(VERSION)) {
92
- throw new XmlError({ type: "InvalidString", expected: "version" }, s.genTextPos());
93
- }
94
- parseAttribute(s);
95
- consumeSpaces(s);
96
- if (s.startsWith(ENCODING)) {
97
- parseAttribute(s);
98
- consumeSpaces(s);
99
- }
100
- if (s.startsWith(STANDALONE)) {
101
- parseAttribute(s);
102
- }
103
- s.skipSpaces();
104
- s.skipString(XML_DECLARATION_END);
105
- }
106
- function parseComment(s, tokenCallback) {
107
- const start = s.getPos();
108
- s.advance(4);
109
- const text = s.consumeCodeUnitsWhile((c, _s) => !(c === HYPHEN && _s.startsWith(COMMENT_END)));
110
- s.skipString(COMMENT_END);
111
- if (text.includes("--") || text.endsWith("-")) {
112
- throw new XmlError({ type: "InvalidComment" }, s.genTextPosFrom(start));
113
- }
114
- tokenCallback({ type: "Comment", text, range: s.rangeFrom(start) }, s);
115
- }
116
- function parsePi(s, tokenCallback) {
117
- if (s.startsWith(XML_DECLARATION_START)) {
118
- throw new XmlError({ type: "UnexpectedDeclaration" }, s.genTextPos());
119
- }
120
- const start = s.getPos();
121
- s.advance(2);
122
- const target = s.consumeName();
123
- s.skipSpaces();
124
- const content = s.consumeCodeUnitsWhile(
125
- (c, _s) => !(c === QUESTION_MARK && _s.startsWith(PI_END))
126
- );
127
- s.skipString(PI_END);
128
- tokenCallback(
129
- {
130
- type: "ProcessingInstruction",
131
- target,
132
- content: content.length === 0 ? void 0 : content,
133
- range: s.rangeFrom(start)
134
- },
135
- s
136
- );
137
- }
138
- function parseDoctype(s, tokenCallback) {
139
- const start = s.getPos();
140
- parseDoctypeStart(s);
141
- s.skipSpaces();
142
- if (s.currCodeUnit() === GREATER_THAN) {
143
- s.advance(1);
144
- return;
145
- }
146
- s.advance(1);
147
- while (!s.atEnd()) {
148
- s.skipSpaces();
149
- if (s.startsWith(ENTITY_DECLARATION_START)) {
150
- parseEntityDecl(s, tokenCallback);
151
- } else if (s.startsWith(COMMENT_START)) {
152
- parseComment(s, tokenCallback);
153
- } else if (s.startsWith(PI_START)) {
154
- parsePi(s, tokenCallback);
155
- } else if (s.startsWith("]")) {
156
- s.advance(1);
157
- s.skipSpaces();
158
- if (s.currCodeUnit() === GREATER_THAN) {
159
- s.advance(1);
160
- break;
161
- } else {
162
- throw new XmlError(
163
- { type: "InvalidChar", expected: "'>'", actual: s.currCodeUnitUnchecked() },
164
- s.genTextPos()
165
- );
166
- }
167
- } else if (s.startsWith(ELEMENT_DECLARATION_START) || s.startsWith(ATTLIST_DECLARATION_START) || s.startsWith(NOTATION_DECLARATION_START)) {
168
- try {
169
- consumeDecl(s);
170
- } catch (e) {
171
- throw new XmlError(
172
- { type: "UnknownToken", message: "Failed to consume declaration" },
173
- s.genTextPosFrom(start)
174
- );
175
- }
176
- } else {
177
- throw new XmlError(
178
- { type: "UnknownToken", message: "Failed to parse doctype" },
179
- s.genTextPos()
180
- );
181
- }
182
- }
183
- }
184
- function parseDoctypeStart(s) {
185
- s.advance(9);
186
- s.consumeSpaces();
187
- s.skipName();
188
- s.skipSpaces();
189
- parseExternalId(s);
190
- s.skipSpaces();
191
- const currCodeUnit = s.currCodeUnit();
192
- if (currCodeUnit !== OPEN_SQUARE_BRACKET && currCodeUnit !== GREATER_THAN) {
193
- throw new XmlError(
194
- { type: "InvalidChar", expected: "'[' or '>'", actual: currCodeUnit },
195
- s.genTextPos()
196
- );
197
- }
198
- }
199
- function parseExternalId(s) {
200
- if (s.startsWith(SYSTEM) || s.startsWith(PUBLIC)) {
201
- const start = s.getPos();
202
- s.advance(6);
203
- const id = s.sliceBack(start);
204
- s.consumeSpaces();
205
- const quote = s.consumeQuote();
206
- s.consumeCodeUnitsWhile((c) => c !== quote);
207
- s.consumeCodeUnit(quote);
208
- if (id === PUBLIC) {
209
- s.consumeSpaces();
210
- const _quote = s.consumeQuote();
211
- s.consumeCodeUnitsWhile((c) => c !== _quote);
212
- s.consumeCodeUnit(_quote);
213
- }
214
- return true;
215
- }
216
- return false;
217
- }
218
- function parseEntityDecl(s, tokenCallback) {
219
- s.advance(8);
220
- s.consumeSpaces();
221
- const isGe = !s.tryConsumeCodeUnit(PERCENT);
222
- if (!isGe) {
223
- s.consumeSpaces();
224
- }
225
- const name = s.consumeName();
226
- s.consumeSpaces();
227
- const definition = parseEntityDef(s, isGe);
228
- if (definition !== null) {
229
- tokenCallback({ type: "EntityDeclaration", name, definition }, s);
230
- }
231
- s.skipSpaces();
232
- s.consumeCodeUnit(GREATER_THAN);
233
- }
234
- function parseEntityDef(s, isGe) {
235
- const currCodeUnit = s.currCodeUnit();
236
- if (currCodeUnit === DOUBLE_QUOTE || currCodeUnit === SINGLE_QUOTE) {
237
- const quote = s.consumeQuote();
238
- const start = s.getPos();
239
- s.skipCodeUnitsWhile((c) => c !== quote);
240
- const value = s.sliceBack(start);
241
- s.consumeCodeUnit(quote);
242
- return value;
243
- } else if (currCodeUnit === UPPERCASE_S || currCodeUnit === UPPERCASE_P) {
244
- if (parseExternalId(s)) {
245
- if (isGe) {
246
- s.skipSpaces();
247
- if (s.startsWith(NDATA)) {
248
- s.advance(5);
249
- s.consumeSpaces();
250
- s.skipName();
251
- }
252
- }
253
- return null;
254
- }
255
- throw new XmlError({ type: "InvalidExternalID" }, s.genTextPos());
256
- } else {
257
- throw new XmlError(
258
- { type: "InvalidChar", expected: "a quote, SYSTEM or PUBLIC", actual: currCodeUnit },
259
- s.genTextPos()
260
- );
261
- }
262
- }
263
- function consumeDecl(s) {
264
- s.skipCodeUnitsWhile((c) => c !== GREATER_THAN);
265
- s.consumeCodeUnit(GREATER_THAN);
266
- }
267
- function parseElement(s, tokenCallback) {
268
- const start = s.getPos();
269
- s.advance(1);
270
- const [prefix, local] = s.consumeQName();
271
- tokenCallback({ type: "ElementStart", prefix, local, start }, s);
272
- let open = false;
273
- while (!s.atEnd()) {
274
- const hasSpace = s.startsWithSpace();
275
- s.skipSpaces();
276
- const _start = s.getPos();
277
- const currCodeUnit = s.currCodeUnit();
278
- if (currCodeUnit === SLASH) {
279
- s.advance(1);
280
- s.consumeCodeUnit(GREATER_THAN);
281
- const range = s.rangeFrom(_start);
282
- tokenCallback({ type: "ElementEnd", end: { type: "Empty" }, range }, s);
283
- break;
284
- } else if (currCodeUnit === GREATER_THAN) {
285
- s.advance(1);
286
- const range = s.rangeFrom(_start);
287
- if (s.config.implicitSelfClosingElements != null && s.config.implicitSelfClosingElements.includes(getQName(local, prefix))) {
288
- tokenCallback({ type: "ElementEnd", end: { type: "Empty" }, range }, s);
289
- break;
290
- } else {
291
- tokenCallback({ type: "ElementEnd", end: { type: "Open" }, range }, s);
292
- open = true;
293
- break;
294
- }
295
- } else {
296
- if (!hasSpace) {
297
- throw new XmlError(
298
- { type: "InvalidChar", expected: "a whitespace", actual: s.currCodeUnitUnchecked() },
299
- s.genTextPos()
300
- );
301
- }
302
- const [_prefix, _local, value] = parseAttribute(s);
303
- const end = s.getPos();
304
- tokenCallback(
305
- {
306
- type: "Attribute",
307
- range: { start: _start, end },
308
- prefix: _prefix,
309
- local: _local,
310
- value
311
- },
312
- s
313
- );
314
- }
315
- }
316
- if (open) {
317
- if (s.config.rawTextElements != null) {
318
- const qName = getQName(local, prefix);
319
- if (s.config.rawTextElements.includes(qName)) {
320
- parseContent(s, tokenCallback, `</${qName}>`);
321
- return;
322
- }
323
- }
324
- parseContent(s, tokenCallback);
325
- }
326
- }
327
- function parseAttribute(s) {
328
- const [prefix, local] = s.consumeQName();
329
- let value;
330
- const start = s.getPos();
331
- s.skipSpaces();
332
- if (s.tryConsumeCodeUnit(EQUALS)) {
333
- s.skipSpaces();
334
- const currCodeUnit = s.currCodeUnit();
335
- if (currCodeUnit === SINGLE_QUOTE || currCodeUnit === DOUBLE_QUOTE) {
336
- const quote = s.consumeQuote();
337
- value = s.consumeCodeUnitsWhile((c) => c !== quote && c !== LESS_THAN);
338
- s.consumeCodeUnit(quote);
339
- } else if (!s.config.strictDocument) {
340
- value = s.consumeCodeUnitsWhile(
341
- (c) => !isXmlSpaceByte(c) && c !== GREATER_THAN && c !== SLASH && c !== LESS_THAN
342
- );
343
- } else {
344
- throw new XmlError(
345
- { type: "InvalidChar", expected: "a quote", actual: currCodeUnit },
346
- s.genTextPos()
347
- );
348
- }
349
- } else if (!s.config.strictDocument) {
350
- s.goTo(start);
351
- value = "true";
352
- } else {
353
- throw new XmlError(
354
- { type: "InvalidChar", expected: EQUALS, actual: s.currCodeUnit() },
355
- s.genTextPos()
356
- );
357
- }
358
- return [prefix, local, value];
359
- }
360
- function parseContent(s, tokenCallback, parseContentUntil = LESS_THAN) {
361
- while (!s.atEnd()) {
362
- if (typeof parseContentUntil === "number" ? s.currCodeUnit() === parseContentUntil : s.startsWith(parseContentUntil)) {
363
- const nextCodeUnit = s.nextCodeUnit();
364
- if (nextCodeUnit === EXCLAMATION_MARK) {
365
- if (s.startsWith(COMMENT_START)) {
366
- parseComment(s, tokenCallback);
367
- } else if (s.startsWith(CDATA_START)) {
368
- parseCdata(s, tokenCallback);
369
- } else {
370
- throw new XmlError(
371
- { type: "UnknownToken", message: "Failed to parse content" },
372
- s.genTextPos()
373
- );
374
- }
375
- } else if (nextCodeUnit === QUESTION_MARK) {
376
- parsePi(s, tokenCallback);
377
- } else if (nextCodeUnit === SLASH) {
378
- parseCloseElement(s, tokenCallback);
379
- break;
380
- } else {
381
- parseElement(s, tokenCallback);
382
- }
383
- } else {
384
- parseText(s, tokenCallback, parseContentUntil);
385
- }
386
- }
387
- }
388
- function parseCdata(s, tokenCallback) {
389
- const start = s.getPos();
390
- s.advance(9);
391
- const text = s.consumeCodeUnitsWhile(
392
- (c, _s) => !(c === CLOSE_SQUARE_BRACKET && _s.startsWith(CDATA_END))
393
- );
394
- s.skipString(CDATA_END);
395
- const range = s.rangeFrom(start);
396
- tokenCallback({ type: "Cdata", text, range }, s);
397
- }
398
- function parseCloseElement(s, tokenCallback) {
399
- const start = s.getPos();
400
- s.advance(2);
401
- const [prefix, local] = s.consumeQName();
402
- s.skipSpaces();
403
- s.consumeCodeUnit(GREATER_THAN);
404
- const range = s.rangeFrom(start);
405
- tokenCallback({ type: "ElementEnd", end: { type: "Close", prefix, local }, range }, s);
406
- }
407
- function parseText(s, tokenCallback, parseTextUntil = LESS_THAN) {
408
- const start = s.getPos();
409
- const text = typeof parseTextUntil === "number" ? s.consumeCodeUnitsWhile((c) => c !== parseTextUntil) : s.consumeCodeUnitsWhile((_, _s) => !_s.startsWith(parseTextUntil));
410
- if (text.includes(CDATA_END)) {
411
- throw new XmlError({ type: "InvalidCharacterData" }, s.genTextPos());
412
- }
413
- tokenCallback({ type: "Text", text, range: s.rangeFrom(start) }, s);
414
- }
415
-
416
- export { tokenize, tokenizeXmlStream };
417
- //# sourceMappingURL=tokenize.js.map
1
+ import{getQName as U}from"../get-q-name.js";import{LESS_THAN as l,GREATER_THAN as a,SLASH as f,EQUALS as w,SINGLE_QUOTE as x,DOUBLE_QUOTE as P,HYPHEN as B,QUESTION_MARK as W,OPEN_SQUARE_BRACKET as M,PERCENT as H,EXCLAMATION_MARK as z,UPPERCASE_S as K,UPPERCASE_P as Y,CLOSE_SQUARE_BRACKET as J}from"./ascii-constants.js";import{isXmlSpaceByte as q}from"./utils.js";import{XmlError as c}from"./XmlError.js";import{XmlStream as G}from"./XmlStream.js";const V="\uFEFF",v="<?xml ",N="?>",$="<!ENTITY",j="<!ELEMENT",Z="<!ATTLIST",tt="<!NOTATION",g="<!DOCTYPE",A="<?",I="?>",h="<!--",D="-->",nt="<![CDATA[",C="]]>",et="NDATA",L="PUBLIC",ot="SYSTEM",st="version",it="encoding",rt="standalone";function ct(t,n,e={}){F(new G(t,e),n)}function F(t,n){var e;t.debugLog("tokenizeXmlStream started",JSON.stringify({strictDocument:t.config.strictDocument,textLength:t.getPos()===0?"full":"partial",platform:typeof process!="undefined"?process.arch:"unknown",nodeVersion:typeof process!="undefined"?process.version:"unknown"},null,2));try{if(t.startsWith(V)&&t.advance(1),t.startsWith(v)&&at(t),d(t,n),t.config.strictDocument){if(t.skipSpaces(),t.startsWithIgnoreCase(g)&&(k(t,n),d(t,n)),t.skipSpaces(),!t.atEnd()&&t.currCodeUnit()===l&&y(t,n),d(t,n),!t.atEnd())throw new c({type:"UnknownToken",message:"Not at end"},t.genTextPos())}else for(;!t.atEnd();)t.currCodeUnit()===l?y(t,n):Q(t,n),d(t,n);t.debugLog("tokenizeXmlStream completed successfully")}catch(o){throw t.debugLog("tokenizeXmlStream FAILED",{error:o instanceof Error?o.message:String(o),errorType:o instanceof c?o.variant.type:"unknown",position:t.getPos(),context:t.getTextAround(t.getPos(),50),textPos:t.genTextPosFrom(t.getPos()),platform:typeof process!="undefined"?process.arch:"unknown",stackTrace:o instanceof Error?(e=o.stack)==null?void 0:e.split(`
2
+ `).slice(0,10):void 0}),o}}function d(t,n){for(;!t.atEnd();)if(t.skipSpaces(),t.startsWith(h))E(t,n);else if(!t.config.strictDocument&&t.startsWithIgnoreCase(g))k(t,n);else if(t.startsWith(A))S(t,n);else break}function at(t){function n(e){if(e.startsWithSpace())e.skipSpaces();else if(!e.startsWith(N)&&!e.atEnd())throw new c({type:"InvalidChar",expected:"a whitespace",actual:e.currCodeUnitUnchecked()},e.genTextPos())}if(t.advance(5),n(t),!t.startsWith(st))throw new c({type:"InvalidString",expected:"version"},t.genTextPos());m(t),n(t),t.startsWith(it)&&(m(t),n(t)),t.startsWith(rt)&&m(t),t.skipSpaces(),t.skipString(N)}function E(t,n){const e=t.getPos();t.advance(4);const o=t.consumeCodeUnitsWhile((i,r)=>!(i===B&&r.startsWith(D)));if(t.skipString(D),o.includes("--")||o.endsWith("-"))throw new c({type:"InvalidComment"},t.genTextPosFrom(e));n({type:"Comment",text:o,range:t.rangeFrom(e)},t)}function S(t,n){if(t.startsWith(v))throw new c({type:"UnexpectedDeclaration"},t.genTextPos());const e=t.getPos();t.advance(2);const o=t.consumeName();t.skipSpaces();const i=t.consumeCodeUnitsWhile((r,s)=>!(r===W&&s.startsWith(I)));t.skipString(I),n({type:"ProcessingInstruction",target:o,content:i.length===0?void 0:i,range:t.rangeFrom(e)},t)}function k(t,n){if(!t.config.allowDtd)throw new c({type:"DtdDetected"});const e=t.getPos();if(pt(t),t.skipSpaces(),t.currCodeUnit()===a){t.advance(1);return}for(t.advance(1);!t.atEnd();)if(t.skipSpaces(),t.startsWith($))ut(t,n);else if(t.startsWith(h))E(t,n);else if(t.startsWith(A))S(t,n);else if(t.startsWith("]"))if(t.advance(1),t.skipSpaces(),t.currCodeUnit()===a){t.advance(1);break}else throw new c({type:"InvalidChar",expected:"'>'",actual:t.currCodeUnitUnchecked()},t.genTextPos());else if(t.startsWith(j)||t.startsWith(Z)||t.startsWith(tt))try{dt(t)}catch(o){throw new c({type:"UnknownToken",message:"Failed to consume declaration"},t.genTextPosFrom(e))}else throw new c({type:"UnknownToken",message:"Failed to parse doctype"},t.genTextPos())}function pt(t){t.advance(9),t.consumeSpaces(),t.skipName(),t.skipSpaces(),b(t),t.skipSpaces();const n=t.currCodeUnit();if(n!==M&&n!==a)throw new c({type:"InvalidChar",expected:"'[' or '>'",actual:n},t.genTextPos())}function b(t){if(t.startsWith(ot)||t.startsWith(L)){const n=t.getPos();t.advance(6);const e=t.sliceBack(n);t.consumeSpaces();const o=t.consumeQuote();if(t.consumeCodeUnitsWhile(i=>i!==o),t.consumeCodeUnit(o),e===L){t.consumeSpaces();const i=t.consumeQuote();t.consumeCodeUnitsWhile(r=>r!==i),t.consumeCodeUnit(i)}return!0}return!1}function ut(t,n){t.advance(8),t.consumeSpaces();const e=!t.tryConsumeCodeUnit(H);e||t.consumeSpaces();const o=t.consumeName();t.consumeSpaces();const i=lt(t,e);i!==null&&n({type:"EntityDeclaration",name:o,definition:i},t),t.skipSpaces(),t.consumeCodeUnit(a)}function lt(t,n){const e=t.currCodeUnit();if(e===P||e===x){const o=t.consumeQuote(),i=t.getPos();t.skipCodeUnitsWhile(s=>s!==o);const r=t.sliceBack(i);return t.consumeCodeUnit(o),r}else if(e===K||e===Y){if(b(t))return n&&(t.skipSpaces(),t.startsWith(et)&&(t.advance(5),t.consumeSpaces(),t.skipName())),null;throw new c({type:"InvalidExternalID"},t.genTextPos())}else throw new c({type:"InvalidChar",expected:"a quote, SYSTEM or PUBLIC",actual:e},t.genTextPos())}function dt(t){t.skipCodeUnitsWhile(n=>n!==a),t.consumeCodeUnit(a)}function y(t,n){const e=t.getPos();if(t.config.debug){const s=t.currCodeUnit();t.debugLog("parseElement started",JSON.stringify({position:e,character:String.fromCharCode(s),charCode:s,charHex:"0x"+s.toString(16),context:t.getTextAround(e,30),textPos:t.genTextPosFrom(e),platform:typeof process!="undefined"?process.arch:"unknown"},null,2))}t.advance(1);let o,i;try{[o,i]=t.consumeQName(),t.debugLog("parseElement consumeQName succeeded",JSON.stringify({prefix:o,local:i,position:t.getPos()},null,2)),n({type:"ElementStart",prefix:o,local:i,start:e},t)}catch(s){throw t.debugLog("parseElement consumeQName FAILED",JSON.stringify({error:s instanceof Error?s.message:String(s),errorType:s instanceof c?s.variant.type:"unknown",position:t.getPos(),startPosition:e,context:t.getTextAround(t.getPos(),50),platform:typeof process!="undefined"?process.arch:"unknown",stackTrace:s instanceof Error?s.stack:void 0},null,2)),s}let r=!1;for(;!t.atEnd();){const s=t.startsWithSpace();t.skipSpaces();const p=t.getPos(),T=t.currCodeUnit();if(T===f){t.advance(1),t.consumeCodeUnit(a);const u=t.rangeFrom(p);n({type:"ElementEnd",end:{type:"Empty"},range:u},t);break}else if(T===a){t.advance(1);const u=t.rangeFrom(p);if(t.config.implicitSelfClosingElements!=null&&t.config.implicitSelfClosingElements.includes(U(i,o))){n({type:"ElementEnd",end:{type:"Empty"},range:u},t);break}else{n({type:"ElementEnd",end:{type:"Open"},range:u},t),r=!0;break}}else{if(!s)throw new c({type:"InvalidChar",expected:"a whitespace",actual:t.currCodeUnitUnchecked()},t.genTextPos());const[u,_,R]=m(t),X=t.getPos();n({type:"Attribute",range:{start:p,end:X},prefix:u,local:_,value:R},t)}}if(r){if(t.config.rawTextElements!=null){const s=U(i,o);if(t.config.rawTextElements.includes(s)){O(t,n,`</${s}>`);return}}O(t,n)}}function m(t){const[n,e]=t.consumeQName();let o;const i=t.getPos();if(t.skipSpaces(),t.tryConsumeCodeUnit(w)){t.skipSpaces();const r=t.currCodeUnit();if(r===x||r===P){const s=t.consumeQuote();o=t.consumeCodeUnitsWhile(p=>p!==s&&p!==l),t.consumeCodeUnit(s)}else if(!t.config.strictDocument)o=t.consumeCodeUnitsWhile(s=>!q(s)&&s!==a&&s!==f&&s!==l);else throw new c({type:"InvalidChar",expected:"a quote",actual:r},t.genTextPos())}else if(!t.config.strictDocument)t.goTo(i),o="true";else throw new c({type:"InvalidChar",expected:w,actual:t.currCodeUnit()},t.genTextPos());return[n,e,o]}function O(t,n,e=l){for(;!t.atEnd();)if(typeof e=="number"?t.currCodeUnit()===e:t.startsWith(e)){const o=t.nextCodeUnit();if(o===z)if(t.startsWith(h))E(t,n);else if(t.startsWith(nt))mt(t,n);else if(!t.config.strictDocument&&t.startsWithIgnoreCase(g))k(t,n);else throw new c({type:"UnknownToken",message:"Failed to parse content"},t.genTextPos());else if(o===W)S(t,n);else if(o===f){ft(t,n);break}else y(t,n)}else Q(t,n,e)}function mt(t,n){const e=t.getPos();t.advance(9);const o=t.consumeCodeUnitsWhile((r,s)=>!(r===J&&s.startsWith(C)));t.skipString(C);const i=t.rangeFrom(e);n({type:"Cdata",text:o,range:i},t)}function ft(t,n){const e=t.getPos();t.advance(2);const[o,i]=t.consumeQName();t.skipSpaces(),t.consumeCodeUnit(a);const r=t.rangeFrom(e);n({type:"ElementEnd",end:{type:"Close",prefix:o,local:i},range:r},t)}function Q(t,n,e=l){const o=t.getPos(),i=typeof e=="number"?t.consumeCodeUnitsWhile(r=>r!==e):t.consumeCodeUnitsWhile((r,s)=>!s.startsWith(e));if(t.config.strictDocument&&i.includes(C))throw new c({type:"InvalidCharacterData"},t.genTextPos());n({type:"Text",text:i,range:t.rangeFrom(o)},t)}export{ct as tokenize,F as tokenizeXmlStream};
@@ -1,41 +1 @@
1
- import { ZERO, NINE, UPPERCASE_A, UPPERCASE_Z, LOWERCASE_A, LOWERCASE_Z, COLON, UNDERSCORE, SPACE, HORIZONTAL_TAB, LINE_FEED, CARRIAGE_RETURN, HYPHEN, PERIOD } from './ascii-constants.js';
2
-
3
- function isAsciiDigit(byte) {
4
- return byte >= ZERO && byte <= NINE;
5
- }
6
- function isXmlNameStart(codePoint) {
7
- if (codePoint == null) {
8
- return false;
9
- }
10
- if (codePoint <= 128) {
11
- return codePoint >= UPPERCASE_A && codePoint <= UPPERCASE_Z || codePoint >= LOWERCASE_A && codePoint <= LOWERCASE_Z || codePoint === COLON || codePoint === UNDERSCORE;
12
- }
13
- return codePoint >= 192 && codePoint <= 214 || codePoint >= 216 && codePoint <= 246 || codePoint >= 248 && codePoint <= 767 || codePoint >= 880 && codePoint <= 893 || codePoint >= 895 && codePoint <= 8191 || codePoint >= 8204 && codePoint <= 8205 || codePoint >= 8304 && codePoint <= 8591 || codePoint >= 11264 && codePoint <= 12271 || codePoint >= 12289 && codePoint <= 55295 || codePoint >= 63744 && codePoint <= 64975 || codePoint >= 65008 && codePoint <= 65533 || codePoint >= 65536 && codePoint <= 983039;
14
- }
15
- function isXmlName(codePoint) {
16
- if (codePoint == null) {
17
- return false;
18
- }
19
- if (codePoint <= 128) {
20
- return isXmlNameByte(codePoint);
21
- }
22
- return codePoint === 183 || codePoint >= 192 && codePoint <= 214 || codePoint >= 216 && codePoint <= 246 || codePoint >= 248 && codePoint <= 767 || codePoint >= 768 && codePoint <= 879 || codePoint >= 880 && codePoint <= 893 || codePoint >= 895 && codePoint <= 8191 || codePoint >= 8204 && codePoint <= 8205 || codePoint >= 8255 && codePoint <= 8256 || codePoint >= 8304 && codePoint <= 8591 || codePoint >= 11264 && codePoint <= 12271 || codePoint >= 12289 && codePoint <= 55295 || codePoint >= 63744 && codePoint <= 64975 || codePoint >= 65008 && codePoint <= 65533 || codePoint >= 65536 && codePoint <= 983039;
23
- }
24
- function isXmlChar(codePoint) {
25
- if (codePoint == null) {
26
- return false;
27
- }
28
- if (codePoint < 32) {
29
- return isXmlSpaceByte(codePoint);
30
- }
31
- return codePoint !== 65535 && codePoint !== 65534;
32
- }
33
- function isXmlSpaceByte(byte) {
34
- return byte === SPACE || byte === HORIZONTAL_TAB || byte === LINE_FEED || byte === CARRIAGE_RETURN;
35
- }
36
- function isXmlNameByte(byte) {
37
- return byte >= ZERO && byte <= NINE || byte >= UPPERCASE_A && byte <= UPPERCASE_Z || byte >= LOWERCASE_A && byte <= LOWERCASE_Z || byte === COLON || byte === UNDERSCORE || byte === HYPHEN || byte === PERIOD;
38
- }
39
-
40
- export { isAsciiDigit, isXmlChar, isXmlName, isXmlNameByte, isXmlNameStart, isXmlSpaceByte };
41
- //# sourceMappingURL=utils.js.map
1
+ import{ZERO as E,NINE as t,UPPERCASE_A as i,UPPERCASE_Z as r,LOWERCASE_A as e,LOWERCASE_Z as u,COLON as l,UNDERSCORE as R,SPACE as m,HORIZONTAL_TAB as s,LINE_FEED as a,CARRIAGE_RETURN as o,HYPHEN as C,PERIOD as O}from"./ascii-constants.js";function c(n){return n>=E&&n<=t}function S(n){return n==null?!1:n<=128?n>=i&&n<=r||n>=e&&n<=u||n===l||n===R:n>=192&&n<=214||n>=216&&n<=246||n>=248&&n<=767||n>=880&&n<=893||n>=895&&n<=8191||n>=8204&&n<=8205||n>=8304&&n<=8591||n>=11264&&n<=12271||n>=12289&&n<=55295||n>=63744&&n<=64975||n>=65008&&n<=65533||n>=65536&&n<=983039}function P(n){return n==null?!1:n<=128?N(n):n===183||n>=192&&n<=214||n>=216&&n<=246||n>=248&&n<=767||n>=768&&n<=879||n>=880&&n<=893||n>=895&&n<=8191||n>=8204&&n<=8205||n>=8255&&n<=8256||n>=8304&&n<=8591||n>=11264&&n<=12271||n>=12289&&n<=55295||n>=63744&&n<=64975||n>=65008&&n<=65533||n>=65536&&n<=983039}function _(n){return n==null?!1:n<32?A(n):n!==65535&&n!==65534}function A(n){return n===m||n===s||n===a||n===o}function N(n){return n>=E&&n<=t||n>=i&&n<=r||n>=e&&n<=u||n===l||n===R||n===C||n===O}export{c as isAsciiDigit,_ as isXmlChar,P as isXmlName,N as isXmlNameByte,S as isXmlNameStart,A as isXmlSpaceByte};
@@ -1,12 +1 @@
1
- import { tokenToXml } from './token-to-xml.js';
2
-
3
- function tokensToXml(tokens) {
4
- let xmlString = "";
5
- tokens.forEach((token) => {
6
- xmlString += tokenToXml(token);
7
- });
8
- return xmlString;
9
- }
10
-
11
- export { tokensToXml };
12
- //# sourceMappingURL=tokens-to-xml.js.map
1
+ import{tokenToXml as e}from"./token-to-xml.js";function n(t){let o="";return t.forEach(r=>{o+=e(r)}),o}export{n as tokensToXml};
@@ -1,67 +1 @@
1
- import { tokenize } from './tokenizer/tokenize.js';
2
-
3
- function xmlToObject(xmlString, options = {}) {
4
- const root = {
5
- local: "root",
6
- attributes: [],
7
- content: []
8
- };
9
- const stack = [root];
10
- tokenize(
11
- xmlString,
12
- (token) => {
13
- processTokenForObject(token, stack);
14
- },
15
- options
16
- );
17
- return root.content[0];
18
- }
19
- function processTokenForObject(token, stack) {
20
- switch (token.type) {
21
- case "ElementStart": {
22
- const newNode = {
23
- local: token.local,
24
- prefix: token.prefix.length > 0 ? token.prefix : void 0,
25
- attributes: [],
26
- content: []
27
- };
28
- const currentNode = stack[stack.length - 1];
29
- if (currentNode != null) {
30
- currentNode.content.push(newNode);
31
- }
32
- stack.push(newNode);
33
- break;
34
- }
35
- case "ElementEnd": {
36
- if (token.end.type === "Close" || token.end.type === "Empty") {
37
- stack.pop();
38
- }
39
- break;
40
- }
41
- case "Attribute": {
42
- const currentNode = stack[stack.length - 1];
43
- if (currentNode != null) {
44
- currentNode.attributes.push({
45
- local: token.local,
46
- prefix: token.prefix.length > 0 ? token.prefix : void 0,
47
- value: token.value
48
- });
49
- }
50
- break;
51
- }
52
- case "Text":
53
- case "Cdata": {
54
- const currentNode = stack[stack.length - 1];
55
- if (currentNode != null) {
56
- const trimmedText = token.text.trim();
57
- if (trimmedText.length > 0) {
58
- currentNode.content.push(token.text);
59
- }
60
- }
61
- break;
62
- }
63
- }
64
- }
65
-
66
- export { processTokenForObject, xmlToObject };
67
- //# sourceMappingURL=xml-to-object.js.map
1
+ import{tokenize as c}from"./tokenizer/tokenize.js";function a(t,o={}){const e={local:"root",attributes:[],content:[]},l=[e];return c(t,r=>{n(r,l)},o),e.content[0]}function n(t,o){switch(t.type){case"ElementStart":{const e={local:t.local,prefix:t.prefix.length>0?t.prefix:void 0,attributes:[],content:[]},l=o[o.length-1];l!=null&&l.content.push(e),o.push(e);break}case"ElementEnd":{(t.end.type==="Close"||t.end.type==="Empty")&&o.pop();break}case"Attribute":{const e=o[o.length-1];e!=null&&e.attributes.push({local:t.local,prefix:t.prefix.length>0?t.prefix:void 0,value:t.value});break}case"Text":case"Cdata":{const e=o[o.length-1];e!=null&&t.text.trim().length>0&&e.content.push(t.text);break}}}export{n as processTokenForObject,a as xmlToObject};
@@ -1,84 +1 @@
1
- import { getQName } from './get-q-name.js';
2
- import { tokenize } from './tokenizer/tokenize.js';
3
-
4
- function xmlToSimplifiedObject(xmlString, options = {}) {
5
- const result = {};
6
- const stack = [result];
7
- tokenize(
8
- xmlString,
9
- (token) => {
10
- processTokenForSimplifiedObject(token, stack);
11
- },
12
- options
13
- );
14
- return result;
15
- }
16
- function processTokenForSimplifiedObject(token, stack) {
17
- switch (token.type) {
18
- case "ElementStart": {
19
- const tagName = getQName(token.local, token.prefix);
20
- const tagNameWithPrefix = `_${tagName}`;
21
- const newNode = {};
22
- const currentNode = stack[stack.length - 1];
23
- if (currentNode != null) {
24
- if (currentNode.content != null) {
25
- newNode.tag = tagName;
26
- currentNode.content.push(newNode);
27
- } else if (currentNode.text != null) {
28
- newNode.tag = tagName;
29
- currentNode.content = [currentNode.text, newNode];
30
- delete currentNode.text;
31
- } else if (currentNode[tagNameWithPrefix] == null) {
32
- currentNode[tagNameWithPrefix] = [newNode];
33
- } else if (Array.isArray(currentNode[tagNameWithPrefix])) {
34
- currentNode[tagNameWithPrefix].push(newNode);
35
- } else {
36
- currentNode[tagNameWithPrefix] = [currentNode[tagNameWithPrefix], newNode];
37
- }
38
- }
39
- stack.push(newNode);
40
- break;
41
- }
42
- case "ElementEnd": {
43
- if (token.end.type === "Close" || token.end.type === "Empty") {
44
- stack.pop();
45
- }
46
- break;
47
- }
48
- case "Attribute": {
49
- const currentNode = stack[stack.length - 1];
50
- if (currentNode != null) {
51
- const attrName = getQName(token.local, token.prefix);
52
- if (currentNode.attributes != null) {
53
- currentNode.attributes[attrName] = token.value;
54
- } else {
55
- currentNode.attributes = {
56
- [attrName]: token.value
57
- };
58
- }
59
- }
60
- break;
61
- }
62
- case "Text":
63
- case "Cdata": {
64
- const currentNode = stack[stack.length - 1];
65
- if (currentNode != null) {
66
- const trimmedText = token.text.trim();
67
- if (trimmedText.length > 0) {
68
- if (currentNode.content != null) {
69
- currentNode.content.push(trimmedText);
70
- } else if (currentNode.text != null) {
71
- currentNode.content = [currentNode.text, trimmedText];
72
- delete currentNode.text;
73
- } else {
74
- currentNode.text = trimmedText;
75
- }
76
- }
77
- }
78
- break;
79
- }
80
- }
81
- }
82
-
83
- export { processTokenForSimplifiedObject, xmlToSimplifiedObject };
84
- //# sourceMappingURL=xml-to-simplified-object.js.map
1
+ import{getQName as c}from"./get-q-name.js";import{tokenize as i}from"./tokenizer/tokenize.js";function s(o,l={}){const t={},e=[t];return i(o,r=>{a(r,e)},l),t}function a(o,l){switch(o.type){case"ElementStart":{const t=c(o.local,o.prefix),e=`_${t}`,r={},n=l[l.length-1];n!=null&&(n.content!=null?(r.tag=t,n.content.push(r)):n.text!=null?(r.tag=t,n.content=[n.text,r],delete n.text):n[e]==null?n[e]=[r]:Array.isArray(n[e])?n[e].push(r):n[e]=[n[e],r]),l.push(r);break}case"ElementEnd":{(o.end.type==="Close"||o.end.type==="Empty")&&l.pop();break}case"Attribute":{const t=l[l.length-1];if(t!=null){const e=c(o.local,o.prefix);t.attributes!=null?t.attributes[e]=o.value:t.attributes={[e]:o.value}}break}case"Text":case"Cdata":{const t=l[l.length-1];if(t!=null){const e=o.text.trim();e.length>0&&(t.content!=null?t.content.push(e):t.text!=null?(t.content=[t.text,e],delete t.text):t.text=e)}break}}}export{a as processTokenForSimplifiedObject,s as xmlToSimplifiedObject};
@@ -14,4 +14,3 @@ export declare const htmlConfig: TXmlStreamOptions;
14
14
  * SVG configuration with SVG-specific settings.
15
15
  */
16
16
  export declare const svgConfig: TXmlStreamOptions;
17
- //# sourceMappingURL=config.d.ts.map
@@ -4,4 +4,3 @@
4
4
  * https://www.w3.org/2001/tag/doc/qnameids.html
5
5
  */
6
6
  export declare function getQName(local: string, prefix?: string | null): string;
7
- //# sourceMappingURL=get-q-name.d.ts.map
@@ -1,9 +1,9 @@
1
1
  export * from './config';
2
2
  export * from './get-q-name';
3
+ export * from './processor';
3
4
  export * from './selector';
4
5
  export * from './token-to-xml';
5
6
  export * from './tokenizer';
6
7
  export * from './tokens-to-xml';
7
8
  export * from './xml-to-object';
8
9
  export * from './xml-to-simplified-object';
9
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ export * from './process';
2
+ export * from './processors';
3
+ export * from './types';
4
+ export * from './validate-processor-order';