@rgrove/parse-xml 4.0.1 → 4.2.0

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 (52) hide show
  1. package/README.md +46 -31
  2. package/dist/browser.js +692 -300
  3. package/dist/browser.js.map +4 -4
  4. package/dist/global.min.js +9 -8
  5. package/dist/global.min.js.map +4 -4
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +8 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/Parser.d.ts +53 -6
  11. package/dist/lib/Parser.d.ts.map +1 -1
  12. package/dist/lib/Parser.js +166 -126
  13. package/dist/lib/Parser.js.map +1 -1
  14. package/dist/lib/StringScanner.d.ts +15 -21
  15. package/dist/lib/StringScanner.d.ts.map +1 -1
  16. package/dist/lib/StringScanner.js +63 -86
  17. package/dist/lib/StringScanner.js.map +1 -1
  18. package/dist/lib/XmlDeclaration.d.ts +30 -0
  19. package/dist/lib/XmlDeclaration.d.ts.map +1 -0
  20. package/dist/lib/XmlDeclaration.js +36 -0
  21. package/dist/lib/XmlDeclaration.js.map +1 -0
  22. package/dist/lib/XmlDocument.d.ts +4 -2
  23. package/dist/lib/XmlDocument.d.ts.map +1 -1
  24. package/dist/lib/XmlDocument.js.map +1 -1
  25. package/dist/lib/XmlDocumentType.d.ts +37 -0
  26. package/dist/lib/XmlDocumentType.d.ts.map +1 -0
  27. package/dist/lib/XmlDocumentType.js +39 -0
  28. package/dist/lib/XmlDocumentType.js.map +1 -0
  29. package/dist/lib/XmlElement.js.map +1 -1
  30. package/dist/lib/XmlError.d.ts +24 -0
  31. package/dist/lib/XmlError.d.ts.map +1 -0
  32. package/dist/lib/XmlError.js +52 -0
  33. package/dist/lib/XmlError.js.map +1 -0
  34. package/dist/lib/XmlNode.d.ts +20 -1
  35. package/dist/lib/XmlNode.d.ts.map +1 -1
  36. package/dist/lib/XmlNode.js +28 -3
  37. package/dist/lib/XmlNode.js.map +1 -1
  38. package/dist/lib/syntax.d.ts.map +1 -1
  39. package/dist/lib/syntax.js +18 -23
  40. package/dist/lib/syntax.js.map +1 -1
  41. package/dist/lib/types.d.ts +2 -2
  42. package/dist/lib/types.d.ts.map +1 -1
  43. package/package.json +20 -23
  44. package/src/index.ts +3 -0
  45. package/src/lib/Parser.ts +228 -141
  46. package/src/lib/StringScanner.ts +66 -103
  47. package/src/lib/XmlDeclaration.ts +58 -0
  48. package/src/lib/XmlDocument.ts +4 -2
  49. package/src/lib/XmlDocumentType.ts +67 -0
  50. package/src/lib/XmlError.ts +80 -0
  51. package/src/lib/XmlNode.ts +33 -3
  52. package/src/lib/syntax.ts +12 -18
@@ -28,8 +28,12 @@ const StringScanner_js_1 = require("./StringScanner.js");
28
28
  const syntax = __importStar(require("./syntax.js"));
29
29
  const XmlCdata_js_1 = require("./XmlCdata.js");
30
30
  const XmlComment_js_1 = require("./XmlComment.js");
31
+ const XmlDeclaration_js_1 = require("./XmlDeclaration.js");
31
32
  const XmlDocument_js_1 = require("./XmlDocument.js");
33
+ const XmlDocumentType_js_1 = require("./XmlDocumentType.js");
32
34
  const XmlElement_js_1 = require("./XmlElement.js");
35
+ const XmlError_js_1 = require("./XmlError.js");
36
+ const XmlNode_js_1 = require("./XmlNode.js");
33
37
  const XmlProcessingInstruction_js_1 = require("./XmlProcessingInstruction.js");
34
38
  const XmlText_js_1 = require("./XmlText.js");
35
39
  const emptyString = '';
@@ -44,46 +48,53 @@ class Parser {
44
48
  * @param options Parser options.
45
49
  */
46
50
  constructor(xml, options = {}) {
47
- this.document = new XmlDocument_js_1.XmlDocument();
48
- this.currentNode = this.document;
51
+ let doc = this.document = new XmlDocument_js_1.XmlDocument();
52
+ this.currentNode = doc;
49
53
  this.options = options;
50
- this.scanner = new StringScanner_js_1.StringScanner(normalizeXmlString(xml));
51
- this.consumeProlog();
52
- if (!this.consumeElement()) {
53
- throw this.error('Root element is missing or invalid');
54
- }
55
- while (this.consumeMisc()) { } // eslint-disable-line no-empty
56
- if (!this.scanner.isEnd) {
57
- throw this.error('Extra content at the end of the document');
54
+ this.scanner = new StringScanner_js_1.StringScanner(xml);
55
+ if (this.options.includeOffsets) {
56
+ doc.start = 0;
57
+ doc.end = xml.length;
58
58
  }
59
+ this.parse();
59
60
  }
60
61
  /**
61
62
  * Adds the given `XmlNode` as a child of `this.currentNode`.
62
63
  */
63
- addNode(node) {
64
+ addNode(node, charIndex) {
64
65
  node.parent = this.currentNode;
66
+ if (this.options.includeOffsets) {
67
+ node.start = this.scanner.charIndexToByteIndex(charIndex);
68
+ node.end = this.scanner.charIndexToByteIndex();
69
+ }
65
70
  // @ts-expect-error: XmlDocument has a more limited set of possible children
66
71
  // than XmlElement so TypeScript is unhappy, but we always do the right
67
72
  // thing.
68
73
  this.currentNode.children.push(node);
74
+ return true;
69
75
  }
70
76
  /**
71
77
  * Adds the given _text_ to the document, either by appending it to a
72
78
  * preceding `XmlText` node (if possible) or by creating a new `XmlText` node.
73
79
  */
74
- addText(text) {
80
+ addText(text, charIndex) {
75
81
  let { children } = this.currentNode;
76
82
  let { length } = children;
83
+ text = normalizeLineBreaks(text);
77
84
  if (length > 0) {
78
85
  let prevNode = children[length - 1];
79
- if (prevNode instanceof XmlText_js_1.XmlText) {
86
+ if (prevNode?.type === XmlNode_js_1.XmlNode.TYPE_TEXT) {
87
+ let textNode = prevNode;
80
88
  // The previous node is a text node, so we can append to it and avoid
81
89
  // creating another node.
82
- prevNode.text += text;
83
- return;
90
+ textNode.text += text;
91
+ if (this.options.includeOffsets) {
92
+ textNode.end = this.scanner.charIndexToByteIndex();
93
+ }
94
+ return true;
84
95
  }
85
96
  }
86
- this.addNode(new XmlText_js_1.XmlText(text));
97
+ return this.addNode(new XmlText_js_1.XmlText(text), charIndex);
87
98
  }
88
99
  /**
89
100
  * Consumes element attributes.
@@ -146,7 +157,7 @@ class Parser {
146
157
  ? syntax.attValueCharDoubleQuote
147
158
  : syntax.attValueCharSingleQuote;
148
159
  matchLoop: while (!scanner.isEnd) {
149
- chars = scanner.consumeMatch(regex);
160
+ chars = scanner.consumeUntilMatch(regex);
150
161
  if (chars) {
151
162
  this.validateChars(chars);
152
163
  value += chars.replace(syntax.attValueNormalizedWhitespace, ' ');
@@ -160,7 +171,7 @@ class Parser {
160
171
  continue;
161
172
  case '<':
162
173
  throw this.error('Unescaped `<` is not allowed in an attribute value');
163
- case emptyString:
174
+ default:
164
175
  break matchLoop;
165
176
  }
166
177
  }
@@ -178,21 +189,18 @@ class Parser {
178
189
  */
179
190
  consumeCdataSection() {
180
191
  let { scanner } = this;
181
- if (!scanner.consumeStringFast('<![CDATA[')) {
192
+ let startIndex = scanner.charIndex;
193
+ if (!scanner.consumeString('<![CDATA[')) {
182
194
  return false;
183
195
  }
184
196
  let text = scanner.consumeUntilString(']]>');
185
197
  this.validateChars(text);
186
- if (!scanner.consumeStringFast(']]>')) {
198
+ if (!scanner.consumeString(']]>')) {
187
199
  throw this.error('Unclosed CDATA section');
188
200
  }
189
- if (this.options.preserveCdata) {
190
- this.addNode(new XmlCdata_js_1.XmlCdata(text));
191
- }
192
- else {
193
- this.addText(text);
194
- }
195
- return true;
201
+ return this.options.preserveCdata
202
+ ? this.addNode(new XmlCdata_js_1.XmlCdata(normalizeLineBreaks(text)), startIndex)
203
+ : this.addText(text, startIndex);
196
204
  }
197
205
  /**
198
206
  * Consumes character data if possible.
@@ -202,6 +210,7 @@ class Parser {
202
210
  */
203
211
  consumeCharData() {
204
212
  let { scanner } = this;
213
+ let startIndex = scanner.charIndex;
205
214
  let charData = scanner.consumeUntilMatch(syntax.endCharData);
206
215
  if (!charData) {
207
216
  return false;
@@ -210,8 +219,7 @@ class Parser {
210
219
  if (scanner.peek(3) === ']]>') {
211
220
  throw this.error('Element content may not contain the CDATA section close delimiter `]]>`');
212
221
  }
213
- this.addText(charData);
214
- return true;
222
+ return this.addText(charData, startIndex);
215
223
  }
216
224
  /**
217
225
  * Consumes a comment if possible.
@@ -221,21 +229,21 @@ class Parser {
221
229
  */
222
230
  consumeComment() {
223
231
  let { scanner } = this;
224
- if (!scanner.consumeStringFast('<!--')) {
232
+ let startIndex = scanner.charIndex;
233
+ if (!scanner.consumeString('<!--')) {
225
234
  return false;
226
235
  }
227
236
  let content = scanner.consumeUntilString('--');
228
237
  this.validateChars(content);
229
- if (!scanner.consumeStringFast('-->')) {
238
+ if (!scanner.consumeString('-->')) {
230
239
  if (scanner.peek(2) === '--') {
231
240
  throw this.error("The string `--` isn't allowed inside a comment");
232
241
  }
233
242
  throw this.error('Unclosed comment');
234
243
  }
235
- if (this.options.preserveComments) {
236
- this.addNode(new XmlComment_js_1.XmlComment(content.trim()));
237
- }
238
- return true;
244
+ return this.options.preserveComments
245
+ ? this.addNode(new XmlComment_js_1.XmlComment(normalizeLineBreaks(content)), startIndex)
246
+ : true;
239
247
  }
240
248
  /**
241
249
  * Consumes a reference in a content context if possible.
@@ -247,12 +255,11 @@ class Parser {
247
255
  * @see https://www.w3.org/TR/2008/REC-xml-20081126/#entproc
248
256
  */
249
257
  consumeContentReference() {
258
+ let startIndex = this.scanner.charIndex;
250
259
  let ref = this.consumeReference();
251
- if (ref) {
252
- this.addText(ref);
253
- return true;
254
- }
255
- return false;
260
+ return ref
261
+ ? this.addText(ref, startIndex)
262
+ : false;
256
263
  }
257
264
  /**
258
265
  * Consumes a doctype declaration if possible.
@@ -265,18 +272,51 @@ class Parser {
265
272
  */
266
273
  consumeDoctypeDeclaration() {
267
274
  let { scanner } = this;
268
- if (!scanner.consumeStringFast('<!DOCTYPE')
269
- || !this.consumeWhitespace()) {
275
+ let startIndex = scanner.charIndex;
276
+ if (!scanner.consumeString('<!DOCTYPE')) {
270
277
  return false;
271
278
  }
272
- scanner.consumeMatch(/[^[>]+/y);
273
- if (scanner.consumeMatch(/\[[\s\S]+?\][\x20\t\r\n]*>/y)) {
274
- return true;
279
+ let name = this.consumeWhitespace()
280
+ && this.consumeName();
281
+ if (!name) {
282
+ throw this.error('Expected a name');
283
+ }
284
+ let publicId;
285
+ let systemId;
286
+ if (this.consumeWhitespace()) {
287
+ if (scanner.consumeString('PUBLIC')) {
288
+ publicId = this.consumeWhitespace()
289
+ && this.consumePubidLiteral();
290
+ if (publicId === false) {
291
+ throw this.error('Expected a public identifier');
292
+ }
293
+ this.consumeWhitespace();
294
+ }
295
+ if (publicId !== undefined || scanner.consumeString('SYSTEM')) {
296
+ this.consumeWhitespace();
297
+ systemId = this.consumeSystemLiteral();
298
+ if (systemId === false) {
299
+ throw this.error('Expected a system identifier');
300
+ }
301
+ this.consumeWhitespace();
302
+ }
275
303
  }
276
- if (!scanner.consumeStringFast('>')) {
304
+ let internalSubset;
305
+ if (scanner.consumeString('[')) {
306
+ // The internal subset may contain comments that contain `]` characters,
307
+ // so we can't use `consumeUntilString()` here.
308
+ internalSubset = scanner.consumeUntilMatch(/\][\x20\t\r\n]*>/);
309
+ if (!scanner.consumeString(']')) {
310
+ throw this.error('Unclosed internal subset');
311
+ }
312
+ this.consumeWhitespace();
313
+ }
314
+ if (!scanner.consumeString('>')) {
277
315
  throw this.error('Unclosed doctype declaration');
278
316
  }
279
- return true;
317
+ return this.options.preserveDocumentType
318
+ ? this.addNode(new XmlDocumentType_js_1.XmlDocumentType(name, publicId, systemId, internalSubset), startIndex)
319
+ : true;
280
320
  }
281
321
  /**
282
322
  * Consumes an element if possible.
@@ -286,21 +326,21 @@ class Parser {
286
326
  */
287
327
  consumeElement() {
288
328
  let { scanner } = this;
289
- let mark = scanner.charIndex;
290
- if (!scanner.consumeStringFast('<')) {
329
+ let startIndex = scanner.charIndex;
330
+ if (!scanner.consumeString('<')) {
291
331
  return false;
292
332
  }
293
333
  let name = this.consumeName();
294
334
  if (!name) {
295
- scanner.reset(mark);
335
+ scanner.reset(startIndex);
296
336
  return false;
297
337
  }
298
338
  let attributes = this.consumeAttributes();
299
- let isEmpty = Boolean(scanner.consumeStringFast('/>'));
339
+ let isEmpty = !!scanner.consumeString('/>');
300
340
  let element = new XmlElement_js_1.XmlElement(name, attributes);
301
341
  element.parent = this.currentNode;
302
342
  if (!isEmpty) {
303
- if (!scanner.consumeStringFast('>')) {
343
+ if (!scanner.consumeString('>')) {
304
344
  throw this.error(`Unclosed start tag for element \`${name}\``);
305
345
  }
306
346
  this.currentNode = element;
@@ -313,20 +353,19 @@ class Parser {
313
353
  || this.consumeComment());
314
354
  let endTagMark = scanner.charIndex;
315
355
  let endTagName;
316
- if (!scanner.consumeStringFast('</')
356
+ if (!scanner.consumeString('</')
317
357
  || !(endTagName = this.consumeName())
318
358
  || endTagName !== name) {
319
359
  scanner.reset(endTagMark);
320
360
  throw this.error(`Missing end tag for element ${name}`);
321
361
  }
322
362
  this.consumeWhitespace();
323
- if (!scanner.consumeStringFast('>')) {
363
+ if (!scanner.consumeString('>')) {
324
364
  throw this.error(`Unclosed end tag for element ${name}`);
325
365
  }
326
366
  this.currentNode = element.parent;
327
367
  }
328
- this.addNode(element);
329
- return true;
368
+ return this.addNode(element, startIndex);
330
369
  }
331
370
  /**
332
371
  * Consumes an `Eq` production if possible.
@@ -336,7 +375,7 @@ class Parser {
336
375
  */
337
376
  consumeEqual() {
338
377
  this.consumeWhitespace();
339
- if (this.scanner.consumeStringFast('=')) {
378
+ if (this.scanner.consumeString('=')) {
340
379
  this.consumeWhitespace();
341
380
  return true;
342
381
  }
@@ -372,14 +411,14 @@ class Parser {
372
411
  */
373
412
  consumeProcessingInstruction() {
374
413
  let { scanner } = this;
375
- let mark = scanner.charIndex;
376
- if (!scanner.consumeStringFast('<?')) {
414
+ let startIndex = scanner.charIndex;
415
+ if (!scanner.consumeString('<?')) {
377
416
  return false;
378
417
  }
379
418
  let name = this.consumeName();
380
419
  if (name) {
381
420
  if (name.toLowerCase() === 'xml') {
382
- scanner.reset(mark);
421
+ scanner.reset(startIndex);
383
422
  throw this.error("XML declaration isn't allowed here");
384
423
  }
385
424
  }
@@ -387,19 +426,17 @@ class Parser {
387
426
  throw this.error('Invalid processing instruction');
388
427
  }
389
428
  if (!this.consumeWhitespace()) {
390
- if (scanner.consumeStringFast('?>')) {
391
- this.addNode(new XmlProcessingInstruction_js_1.XmlProcessingInstruction(name));
392
- return true;
429
+ if (scanner.consumeString('?>')) {
430
+ return this.addNode(new XmlProcessingInstruction_js_1.XmlProcessingInstruction(name), startIndex);
393
431
  }
394
432
  throw this.error('Whitespace is required after a processing instruction name');
395
433
  }
396
434
  let content = scanner.consumeUntilString('?>');
397
435
  this.validateChars(content);
398
- if (!scanner.consumeStringFast('?>')) {
436
+ if (!scanner.consumeString('?>')) {
399
437
  throw this.error('Unterminated processing instruction');
400
438
  }
401
- this.addNode(new XmlProcessingInstruction_js_1.XmlProcessingInstruction(name, content));
402
- return true;
439
+ return this.addNode(new XmlProcessingInstruction_js_1.XmlProcessingInstruction(name, normalizeLineBreaks(content)), startIndex);
403
440
  }
404
441
  /**
405
442
  * Consumes a prolog if possible.
@@ -409,13 +446,32 @@ class Parser {
409
446
  */
410
447
  consumeProlog() {
411
448
  let { scanner } = this;
412
- let mark = scanner.charIndex;
449
+ let startIndex = scanner.charIndex;
413
450
  this.consumeXmlDeclaration();
414
451
  while (this.consumeMisc()) { } // eslint-disable-line no-empty
415
452
  if (this.consumeDoctypeDeclaration()) {
416
453
  while (this.consumeMisc()) { } // eslint-disable-line no-empty
417
454
  }
418
- return mark < scanner.charIndex;
455
+ return startIndex < scanner.charIndex;
456
+ }
457
+ /**
458
+ * Consumes a public identifier literal if possible.
459
+ *
460
+ * @returns
461
+ * Value of the public identifier literal minus quotes, or `false` if
462
+ * nothing was consumed. An empty string indicates that a public id literal
463
+ * was consumed but was empty.
464
+ *
465
+ * @see https://www.w3.org/TR/2008/REC-xml-20081126/#NT-PubidLiteral
466
+ */
467
+ consumePubidLiteral() {
468
+ let startIndex = this.scanner.charIndex;
469
+ let value = this.consumeSystemLiteral();
470
+ if (value !== false && !/^[-\x20\r\na-zA-Z0-9'()+,./:=?;!*#@$_%]*$/.test(value)) {
471
+ this.scanner.reset(startIndex);
472
+ throw this.error('Invalid character in public identifier');
473
+ }
474
+ return value;
419
475
  }
420
476
  /**
421
477
  * Consumes a reference if possible.
@@ -431,7 +487,7 @@ class Parser {
431
487
  */
432
488
  consumeReference() {
433
489
  let { scanner } = this;
434
- if (!scanner.consumeStringFast('&')) {
490
+ if (!scanner.consumeString('&')) {
435
491
  return false;
436
492
  }
437
493
  let ref = scanner.consumeMatchFn(syntax.isReferenceChar);
@@ -492,13 +548,13 @@ class Parser {
492
548
  */
493
549
  consumeSystemLiteral() {
494
550
  let { scanner } = this;
495
- let quote = scanner.consumeStringFast('"') || scanner.consumeStringFast("'");
551
+ let quote = scanner.consumeString('"') || scanner.consumeString("'");
496
552
  if (!quote) {
497
553
  return false;
498
554
  }
499
555
  let value = scanner.consumeUntilString(quote);
500
556
  this.validateChars(value);
501
- if (!scanner.consumeStringFast(quote)) {
557
+ if (!scanner.consumeString(quote)) {
502
558
  throw this.error('Missing end quote');
503
559
  }
504
560
  return value;
@@ -510,7 +566,7 @@ class Parser {
510
566
  * @see https://www.w3.org/TR/2008/REC-xml-20081126/#white
511
567
  */
512
568
  consumeWhitespace() {
513
- return Boolean(this.scanner.consumeMatchFn(syntax.isWhitespace));
569
+ return !!this.scanner.consumeMatchFn(syntax.isWhitespace);
514
570
  }
515
571
  /**
516
572
  * Consumes an XML declaration if possible.
@@ -520,13 +576,14 @@ class Parser {
520
576
  */
521
577
  consumeXmlDeclaration() {
522
578
  let { scanner } = this;
523
- if (!scanner.consumeStringFast('<?xml')) {
579
+ let startIndex = scanner.charIndex;
580
+ if (!scanner.consumeString('<?xml')) {
524
581
  return false;
525
582
  }
526
583
  if (!this.consumeWhitespace()) {
527
584
  throw this.error('Invalid XML declaration');
528
585
  }
529
- let version = Boolean(scanner.consumeStringFast('version'))
586
+ let version = !!scanner.consumeString('version')
530
587
  && this.consumeEqual()
531
588
  && this.consumeSystemLiteral();
532
589
  if (version === false) {
@@ -535,14 +592,19 @@ class Parser {
535
592
  else if (!/^1\.[0-9]+$/.test(version)) {
536
593
  throw this.error('Invalid character in version number');
537
594
  }
595
+ let encoding;
596
+ let standalone;
538
597
  if (this.consumeWhitespace()) {
539
- let encoding = Boolean(scanner.consumeStringFast('encoding'))
598
+ encoding = !!scanner.consumeString('encoding')
540
599
  && this.consumeEqual()
541
600
  && this.consumeSystemLiteral();
542
601
  if (encoding) {
602
+ if (!/^[A-Za-z][\w.-]*$/.test(encoding)) {
603
+ throw this.error('Invalid character in encoding name');
604
+ }
543
605
  this.consumeWhitespace();
544
606
  }
545
- let standalone = Boolean(scanner.consumeStringFast('standalone'))
607
+ standalone = !!scanner.consumeString('standalone')
546
608
  && this.consumeEqual()
547
609
  && this.consumeSystemLiteral();
548
610
  if (standalone) {
@@ -552,58 +614,33 @@ class Parser {
552
614
  this.consumeWhitespace();
553
615
  }
554
616
  }
555
- if (!scanner.consumeStringFast('?>')) {
617
+ if (!scanner.consumeString('?>')) {
556
618
  throw this.error('Invalid or unclosed XML declaration');
557
619
  }
558
- return true;
620
+ return this.options.preserveXmlDeclaration
621
+ ? this.addNode(new XmlDeclaration_js_1.XmlDeclaration(version, encoding || undefined, standalone || undefined), startIndex)
622
+ : true;
559
623
  }
560
624
  /**
561
- * Throws an error at the current scanner position.
625
+ * Returns an `XmlError` for the current scanner position.
562
626
  */
563
627
  error(message) {
564
- let { charIndex, string: xml } = this.scanner;
565
- let column = 1;
566
- let excerpt = '';
567
- let line = 1;
568
- // Find the line and column where the error occurred.
569
- for (let i = 0; i < charIndex; ++i) {
570
- let char = xml[i];
571
- if (char === '\n') {
572
- column = 1;
573
- excerpt = '';
574
- line += 1;
575
- }
576
- else {
577
- column += 1;
578
- excerpt += char;
579
- }
628
+ let { scanner } = this;
629
+ return new XmlError_js_1.XmlError(message, scanner.charIndex, scanner.string);
630
+ }
631
+ /**
632
+ * Parses the XML input.
633
+ */
634
+ parse() {
635
+ this.scanner.consumeString('\uFEFF'); // byte order mark
636
+ this.consumeProlog();
637
+ if (!this.consumeElement()) {
638
+ throw this.error('Root element is missing or invalid');
580
639
  }
581
- let eol = xml.indexOf('\n', charIndex);
582
- excerpt += eol === -1
583
- ? xml.slice(charIndex)
584
- : xml.slice(charIndex, eol);
585
- let excerptStart = 0;
586
- // Keep the excerpt below 50 chars, but always keep the error position in
587
- // view.
588
- if (excerpt.length > 50) {
589
- if (column < 40) {
590
- excerpt = excerpt.slice(0, 50);
591
- }
592
- else {
593
- excerptStart = column - 20;
594
- excerpt = excerpt.slice(excerptStart, column + 30);
595
- }
640
+ while (this.consumeMisc()) { } // eslint-disable-line no-empty
641
+ if (!this.scanner.isEnd) {
642
+ throw this.error('Extra content at the end of the document');
596
643
  }
597
- let err = new Error(`${message} (line ${line}, column ${column})\n`
598
- + ` ${excerpt}\n`
599
- + ' '.repeat(column - excerptStart + 1) + '^\n');
600
- Object.assign(err, {
601
- column,
602
- excerpt,
603
- line,
604
- pos: charIndex,
605
- });
606
- return err;
607
644
  }
608
645
  /**
609
646
  * Throws an invalid character error if any character in the given _string_
@@ -626,13 +663,16 @@ class Parser {
626
663
  exports.Parser = Parser;
627
664
  // -- Private Functions --------------------------------------------------------
628
665
  /**
629
- * Normalizes the given XML string by stripping a byte order mark (if present)
630
- * and replacing CRLF sequences and lone CR characters with LF characters.
666
+ * Normalizes line breaks in the given text by replacing CRLF sequences and lone
667
+ * CR characters with LF characters.
631
668
  */
632
- function normalizeXmlString(xml) {
633
- if (xml[0] === '\uFEFF') {
634
- xml = xml.slice(1);
669
+ function normalizeLineBreaks(text) {
670
+ let i = 0;
671
+ while ((i = text.indexOf('\r', i)) !== -1) {
672
+ text = text[i + 1] === '\n'
673
+ ? text.slice(0, i) + text.slice(i + 1)
674
+ : text.slice(0, i) + '\n' + text.slice(i + 1);
635
675
  }
636
- return xml.replace(/\r\n?/g, '\n');
676
+ return text;
637
677
  }
638
678
  //# sourceMappingURL=Parser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/lib/Parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Parser.js","sourceRoot":"","sources":["../../src/lib/Parser.ts"],"names":[],"mappings":"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"}