@rgrove/parse-xml 4.0.0 → 4.1.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 (51) hide show
  1. package/README.md +40 -25
  2. package/dist/browser.js +642 -223
  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 +4 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +7 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/Parser.d.ts +49 -6
  11. package/dist/lib/Parser.d.ts.map +1 -1
  12. package/dist/lib/Parser.js +133 -102
  13. package/dist/lib/Parser.js.map +1 -1
  14. package/dist/lib/StringScanner.d.ts +5 -5
  15. package/dist/lib/StringScanner.d.ts.map +1 -1
  16. package/dist/lib/StringScanner.js +9 -9
  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/XmlError.d.ts +24 -0
  30. package/dist/lib/XmlError.d.ts.map +1 -0
  31. package/dist/lib/XmlError.js +52 -0
  32. package/dist/lib/XmlError.js.map +1 -0
  33. package/dist/lib/XmlNode.d.ts +20 -1
  34. package/dist/lib/XmlNode.d.ts.map +1 -1
  35. package/dist/lib/XmlNode.js +28 -3
  36. package/dist/lib/XmlNode.js.map +1 -1
  37. package/dist/lib/syntax.d.ts.map +1 -1
  38. package/dist/lib/syntax.js +1 -1
  39. package/dist/lib/syntax.js.map +1 -1
  40. package/dist/lib/types.d.ts +2 -2
  41. package/dist/lib/types.d.ts.map +1 -1
  42. package/package.json +28 -27
  43. package/src/index.ts +4 -1
  44. package/src/lib/Parser.ts +195 -118
  45. package/src/lib/StringScanner.ts +10 -10
  46. package/src/lib/XmlDeclaration.ts +58 -0
  47. package/src/lib/XmlDocument.ts +4 -2
  48. package/src/lib/XmlDocumentType.ts +67 -0
  49. package/src/lib/XmlError.ts +80 -0
  50. package/src/lib/XmlNode.ts +33 -3
  51. package/src/lib/syntax.ts +1 -1
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XmlDeclaration = void 0;
4
+ const XmlNode_js_1 = require("./XmlNode.js");
5
+ /**
6
+ * An XML declaration within an XML document.
7
+ *
8
+ * @example
9
+ *
10
+ * ```xml
11
+ * <?xml version="1.0" encoding="UTF-8"?>
12
+ * ```
13
+ */
14
+ class XmlDeclaration extends XmlNode_js_1.XmlNode {
15
+ constructor(version, encoding, standalone) {
16
+ super();
17
+ this.version = version;
18
+ this.encoding = encoding ?? null;
19
+ this.standalone = standalone ?? null;
20
+ }
21
+ get type() {
22
+ return XmlNode_js_1.XmlNode.TYPE_XML_DECLARATION;
23
+ }
24
+ toJSON() {
25
+ let json = XmlNode_js_1.XmlNode.prototype.toJSON.call(this);
26
+ json.version = this.version;
27
+ for (let key of ['encoding', 'standalone']) {
28
+ if (this[key] !== null) {
29
+ json[key] = this[key];
30
+ }
31
+ }
32
+ return json;
33
+ }
34
+ }
35
+ exports.XmlDeclaration = XmlDeclaration;
36
+ //# sourceMappingURL=XmlDeclaration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XmlDeclaration.js","sourceRoot":"","sources":["../../src/lib/XmlDeclaration.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC;;;;;;;;GAQG;AACH,MAAa,cAAe,SAAQ,oBAAO;IAkBzC,YACE,OAAe,EACf,QAAiB,EACjB,UAAuD;QAEvD,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,UAAU,IAAI,IAAI,CAAC;IACvC,CAAC;IAED,IAAa,IAAI;QACf,OAAO,oBAAO,CAAC,oBAAoB,CAAC;IACtC,CAAC;IAEQ,MAAM;QACb,IAAI,IAAI,GAAG,oBAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE5B,KAAK,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,YAAY,CAAU,EAAE;YACnD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aACvB;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA9CD,wCA8CC"}
@@ -1,6 +1,8 @@
1
1
  import { XmlElement } from './XmlElement.js';
2
2
  import { XmlNode } from './XmlNode.js';
3
3
  import type { XmlComment } from './XmlComment.js';
4
+ import type { XmlDeclaration } from './XmlDeclaration.js';
5
+ import type { XmlDocumentType } from './XmlDocumentType.js';
4
6
  import type { XmlProcessingInstruction } from './XmlProcessingInstruction.js';
5
7
  /**
6
8
  * Represents an XML document. All elements within the document are descendants
@@ -10,8 +12,8 @@ export declare class XmlDocument extends XmlNode {
10
12
  /**
11
13
  * Child nodes of this document.
12
14
  */
13
- readonly children: Array<XmlComment | XmlProcessingInstruction | XmlElement>;
14
- constructor(children?: Array<XmlComment | XmlElement | XmlProcessingInstruction>);
15
+ readonly children: Array<XmlComment | XmlDeclaration | XmlDocumentType | XmlProcessingInstruction | XmlElement>;
16
+ constructor(children?: Array<XmlComment | XmlDeclaration | XmlDocumentType | XmlElement | XmlProcessingInstruction>);
15
17
  get document(): this;
16
18
  /**
17
19
  * Root element of this document, or `null` if this document is empty.
@@ -1 +1 @@
1
- {"version":3,"file":"XmlDocument.d.ts","sourceRoot":"","sources":["../../src/lib/XmlDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E;;;GAGG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACtC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,GAAG,wBAAwB,GAAG,UAAU,CAAC,CAAC;gBAEjE,QAAQ,GAAE,KAAK,CAAC,UAAU,GAAG,UAAU,GAAG,wBAAwB,CAAM;IAKpF,IAAa,QAAQ,SAEpB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,GAAG,IAAI,CAQ5B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED,IAAa,IAAI,WAEhB;IAEQ,MAAM;;;CAKhB"}
1
+ {"version":3,"file":"XmlDocument.d.ts","sourceRoot":"","sources":["../../src/lib/XmlDocument.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAE9E;;;GAGG;AACH,qBAAa,WAAY,SAAQ,OAAO;IACtC;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,wBAAwB,GAAG,UAAU,CAAC,CAAC;gBAEpG,QAAQ,GAAE,KAAK,CAAC,UAAU,GAAG,cAAc,GAAG,eAAe,GAAG,UAAU,GAAG,wBAAwB,CAAM;IAKvH,IAAa,QAAQ,SAEpB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,UAAU,GAAG,IAAI,CAQ5B;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED,IAAa,IAAI,WAEhB;IAEQ,MAAM;;;CAKhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"XmlDocument.js","sourceRoot":"","sources":["../../src/lib/XmlDocument.ts"],"names":[],"mappings":";;;AAAA,mDAA6C;AAC7C,6CAAuC;AAKvC;;;GAGG;AACH,MAAa,WAAY,SAAQ,oBAAO;IAMtC,YAAY,WAAsE,EAAE;QAClF,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAa,QAAQ;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,KAAK,YAAY,0BAAU,EAAE;gBAC/B,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ;aACjB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/C,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAED,IAAa,IAAI;QACf,OAAO,oBAAO,CAAC,aAAa,CAAC;IAC/B,CAAC;IAEQ,MAAM;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,oBAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;CACF;AA9CD,kCA8CC"}
1
+ {"version":3,"file":"XmlDocument.js","sourceRoot":"","sources":["../../src/lib/XmlDocument.ts"],"names":[],"mappings":";;;AAAA,mDAA6C;AAC7C,6CAAuC;AAOvC;;;GAGG;AACH,MAAa,WAAY,SAAQ,oBAAO;IAMtC,YAAY,WAAyG,EAAE;QACrH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAa,QAAQ;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC/B,IAAI,KAAK,YAAY,0BAAU,EAAE;gBAC/B,OAAO,KAAK,CAAC;aACd;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ;aACjB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/C,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IAED,IAAa,IAAI;QACf,OAAO,oBAAO,CAAC,aAAa,CAAC;IAC/B,CAAC;IAEQ,MAAM;QACb,OAAO,MAAM,CAAC,MAAM,CAAC,oBAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACxD,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;SACrD,CAAC,CAAC;IACL,CAAC;CACF;AA9CD,kCA8CC"}
@@ -0,0 +1,37 @@
1
+ import { XmlNode } from './XmlNode.js';
2
+ /**
3
+ * A document type declaration within an XML document.
4
+ *
5
+ * @example
6
+ *
7
+ * ```xml
8
+ * <!DOCTYPE kittens [
9
+ * <!ELEMENT kittens (#PCDATA)>
10
+ * ]>
11
+ * ```
12
+ */
13
+ export declare class XmlDocumentType extends XmlNode {
14
+ /**
15
+ * Name of the root element described by this document type declaration.
16
+ */
17
+ name: string;
18
+ /**
19
+ * Public identifier of the external subset of this document type declaration,
20
+ * or `null` if no public identifier was present.
21
+ */
22
+ publicId: string | null;
23
+ /**
24
+ * System identifier of the external subset of this document type declaration,
25
+ * or `null` if no system identifier was present.
26
+ */
27
+ systemId: string | null;
28
+ /**
29
+ * Internal subset of this document type declaration, or `null` if no internal
30
+ * subset was present.
31
+ */
32
+ internalSubset: string | null;
33
+ constructor(name: string, publicId?: string, systemId?: string, internalSubset?: string);
34
+ get type(): string;
35
+ toJSON(): import("./types.js").JsonObject;
36
+ }
37
+ //# sourceMappingURL=XmlDocumentType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XmlDocumentType.d.ts","sourceRoot":"","sources":["../../src/lib/XmlDocumentType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,SAAQ,OAAO;IAC1C;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;gBAG5B,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM;IASzB,IAAa,IAAI,WAEhB;IAEQ,MAAM;CAYhB"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XmlDocumentType = void 0;
4
+ const XmlNode_js_1 = require("./XmlNode.js");
5
+ /**
6
+ * A document type declaration within an XML document.
7
+ *
8
+ * @example
9
+ *
10
+ * ```xml
11
+ * <!DOCTYPE kittens [
12
+ * <!ELEMENT kittens (#PCDATA)>
13
+ * ]>
14
+ * ```
15
+ */
16
+ class XmlDocumentType extends XmlNode_js_1.XmlNode {
17
+ constructor(name, publicId, systemId, internalSubset) {
18
+ super();
19
+ this.name = name;
20
+ this.publicId = publicId ?? null;
21
+ this.systemId = systemId ?? null;
22
+ this.internalSubset = internalSubset ?? null;
23
+ }
24
+ get type() {
25
+ return XmlNode_js_1.XmlNode.TYPE_DOCUMENT_TYPE;
26
+ }
27
+ toJSON() {
28
+ let json = XmlNode_js_1.XmlNode.prototype.toJSON.call(this);
29
+ json.name = this.name;
30
+ for (let key of ['publicId', 'systemId', 'internalSubset']) {
31
+ if (this[key] !== null) {
32
+ json[key] = this[key];
33
+ }
34
+ }
35
+ return json;
36
+ }
37
+ }
38
+ exports.XmlDocumentType = XmlDocumentType;
39
+ //# sourceMappingURL=XmlDocumentType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XmlDocumentType.js","sourceRoot":"","sources":["../../src/lib/XmlDocumentType.ts"],"names":[],"mappings":";;;AAAA,6CAAuC;AAEvC;;;;;;;;;;GAUG;AACH,MAAa,eAAgB,SAAQ,oBAAO;IAwB1C,YACE,IAAY,EACZ,QAAiB,EACjB,QAAiB,EACjB,cAAuB;QAEvB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,cAAc,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,IAAa,IAAI;QACf,OAAO,oBAAO,CAAC,kBAAkB,CAAC;IACpC,CAAC;IAEQ,MAAM;QACb,IAAI,IAAI,GAAG,oBAAO,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEtB,KAAK,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,gBAAgB,CAAU,EAAE;YACnE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aACvB;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AArDD,0CAqDC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * An error that occurred while parsing XML.
3
+ */
4
+ export declare class XmlError extends Error {
5
+ /**
6
+ * Character column at which this error occurred (1-based).
7
+ */
8
+ readonly column: number;
9
+ /**
10
+ * Short excerpt from the input string that contains the problem.
11
+ */
12
+ readonly excerpt: string;
13
+ /**
14
+ * Line number at which this error occurred (1-based).
15
+ */
16
+ readonly line: number;
17
+ /**
18
+ * Character position at which this error occurred relative to the beginning
19
+ * of the input (0-based).
20
+ */
21
+ readonly pos: number;
22
+ constructor(message: string, charIndex: number, xml: string);
23
+ }
24
+ //# sourceMappingURL=XmlError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XmlError.d.ts","sourceRoot":"","sources":["../../src/lib/XmlError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBAGnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM;CAmDd"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XmlError = void 0;
4
+ /**
5
+ * An error that occurred while parsing XML.
6
+ */
7
+ class XmlError extends Error {
8
+ constructor(message, charIndex, xml) {
9
+ let column = 1;
10
+ let excerpt = '';
11
+ let line = 1;
12
+ // Find the line and column where the error occurred.
13
+ for (let i = 0; i < charIndex; ++i) {
14
+ let char = xml[i];
15
+ if (char === '\n') {
16
+ column = 1;
17
+ excerpt = '';
18
+ line += 1;
19
+ }
20
+ else {
21
+ column += 1;
22
+ excerpt += char;
23
+ }
24
+ }
25
+ let eol = xml.indexOf('\n', charIndex);
26
+ excerpt += eol === -1
27
+ ? xml.slice(charIndex)
28
+ : xml.slice(charIndex, eol);
29
+ let excerptStart = 0;
30
+ // Keep the excerpt below 50 chars, but always keep the error position in
31
+ // view.
32
+ if (excerpt.length > 50) {
33
+ if (column < 40) {
34
+ excerpt = excerpt.slice(0, 50);
35
+ }
36
+ else {
37
+ excerptStart = column - 20;
38
+ excerpt = excerpt.slice(excerptStart, column + 30);
39
+ }
40
+ }
41
+ super(`${message} (line ${line}, column ${column})\n`
42
+ + ` ${excerpt}\n`
43
+ + ' '.repeat(column - excerptStart + 1) + '^\n');
44
+ this.column = column;
45
+ this.excerpt = excerpt;
46
+ this.line = line;
47
+ this.name = 'XmlError';
48
+ this.pos = charIndex;
49
+ }
50
+ }
51
+ exports.XmlError = XmlError;
52
+ //# sourceMappingURL=XmlError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XmlError.js","sourceRoot":"","sources":["../../src/lib/XmlError.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAsBjC,YACE,OAAe,EACf,SAAiB,EACjB,GAAW;QAEX,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,CAAC,CAAC;QAEb,qDAAqD;QACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;YAClC,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAElB,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,MAAM,GAAG,CAAC,CAAC;gBACX,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,IAAI,CAAC,CAAC;aACX;iBAAM;gBACL,MAAM,IAAI,CAAC,CAAC;gBACZ,OAAO,IAAI,IAAI,CAAC;aACjB;SACF;QAED,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAEvC,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;YACtB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAE9B,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,yEAAyE;QACzE,QAAQ;QACR,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE;YACvB,IAAI,MAAM,GAAG,EAAE,EAAE;gBACf,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aAChC;iBAAM;gBACL,YAAY,GAAG,MAAM,GAAG,EAAE,CAAC;gBAC3B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;aACpD;SACF;QAED,KAAK,CACH,GAAG,OAAO,UAAU,IAAI,YAAY,MAAM,KAAK;cAC3C,KAAK,OAAO,IAAI;cAChB,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAClD,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;IACvB,CAAC;CACF;AA5ED,4BA4EC"}
@@ -17,6 +17,10 @@ export declare class XmlNode {
17
17
  * Type value for an `XmlDocument` node.
18
18
  */
19
19
  static readonly TYPE_DOCUMENT = "document";
20
+ /**
21
+ * Type value for an `XmlDocumentType` node.
22
+ */
23
+ static readonly TYPE_DOCUMENT_TYPE = "doctype";
20
24
  /**
21
25
  * Type value for an `XmlElement` node.
22
26
  */
@@ -29,17 +33,32 @@ export declare class XmlNode {
29
33
  * Type value for an `XmlText` node.
30
34
  */
31
35
  static readonly TYPE_TEXT = "text";
36
+ /**
37
+ * Type value for an `XmlDeclaration` node.
38
+ */
39
+ static readonly TYPE_XML_DECLARATION = "xmldecl";
32
40
  /**
33
41
  * Parent node of this node, or `null` if this node has no parent.
34
42
  */
35
43
  parent: XmlDocument | XmlElement | null;
44
+ /**
45
+ * Starting byte offset of this node in the original XML string, or `-1` if
46
+ * the offset is unknown.
47
+ */
48
+ start: number;
49
+ /**
50
+ * Ending byte offset of this node in the original XML string, or `-1` if the
51
+ * offset is unknown.
52
+ */
53
+ end: number;
36
54
  /**
37
55
  * Document that contains this node, or `null` if this node is not associated
38
56
  * with a document.
39
57
  */
40
58
  get document(): XmlDocument | null;
41
59
  /**
42
- * Whether this node is the root node of the document.
60
+ * Whether this node is the root node of the document (also known as the
61
+ * document element).
43
62
  */
44
63
  get isRootNode(): boolean;
45
64
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"XmlNode.d.ts","sourceRoot":"","sources":["../../src/lib/XmlNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,qBAAa,OAAO;IAClB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,WAAW;IAErC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,aAAa;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,cAAc;IAE3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,aAAa;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,2BAA2B,QAAQ;IAEnD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,UAAU;IAEnC;;OAEG;IACH,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CAAQ;IAE/C;;;OAGG;IACH,IAAI,QAAQ,IAAI,WAAW,GAAG,IAAI,CAEjC;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED;;;;;;;;;;OAUG;IACH,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED;;;;;;;;;OASG;IACH,IAAI,IAAI,WAEP;IAED;;;OAGG;IACH,MAAM,IAAI,UAAU;CAerB"}
1
+ {"version":3,"file":"XmlNode.d.ts","sourceRoot":"","sources":["../../src/lib/XmlNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,qBAAa,OAAO;IAClB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,UAAU,WAAW;IAErC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,aAAa;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,cAAc;IAE3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,kBAAkB,aAAa;IAE/C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,aAAa;IAEzC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,2BAA2B,QAAQ;IAEnD;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,SAAS,UAAU;IAEnC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,oBAAoB,aAAa;IAEjD;;OAEG;IACH,MAAM,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CAAQ;IAE/C;;;OAGG;IACH,KAAK,SAAM;IAEX;;;OAGG;IACH,GAAG,SAAM;IAET;;;OAGG;IACH,IAAI,QAAQ,IAAI,WAAW,GAAG,IAAI,CAEjC;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,OAAO,CAIxB;IAED;;;;;;;;;;OAUG;IACH,IAAI,kBAAkB,IAAI,OAAO,CAEhC;IAED;;;;;;;;;OASG;IACH,IAAI,IAAI,WAEP;IAED;;;OAGG;IACH,MAAM,IAAI,UAAU;CAoBrB"}
@@ -10,6 +10,16 @@ class XmlNode {
10
10
  * Parent node of this node, or `null` if this node has no parent.
11
11
  */
12
12
  this.parent = null;
13
+ /**
14
+ * Starting byte offset of this node in the original XML string, or `-1` if
15
+ * the offset is unknown.
16
+ */
17
+ this.start = -1;
18
+ /**
19
+ * Ending byte offset of this node in the original XML string, or `-1` if the
20
+ * offset is unknown.
21
+ */
22
+ this.end = -1;
13
23
  }
14
24
  /**
15
25
  * Document that contains this node, or `null` if this node is not associated
@@ -19,10 +29,13 @@ class XmlNode {
19
29
  return this.parent?.document ?? null;
20
30
  }
21
31
  /**
22
- * Whether this node is the root node of the document.
32
+ * Whether this node is the root node of the document (also known as the
33
+ * document element).
23
34
  */
24
35
  get isRootNode() {
25
- return this.parent !== null && this.parent === this.document;
36
+ return this.parent !== null
37
+ && this.parent === this.document
38
+ && this.type === XmlNode.TYPE_ELEMENT;
26
39
  }
27
40
  /**
28
41
  * Whether whitespace should be preserved in the content of this element and
@@ -36,7 +49,7 @@ class XmlNode {
36
49
  * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-white-space
37
50
  */
38
51
  get preserveWhitespace() {
39
- return Boolean(this.parent?.preserveWhitespace);
52
+ return !!this.parent?.preserveWhitespace;
40
53
  }
41
54
  /**
42
55
  * Type of this node.
@@ -65,6 +78,10 @@ class XmlNode {
65
78
  if (this.preserveWhitespace) {
66
79
  json.preserveWhitespace = true;
67
80
  }
81
+ if (this.start !== -1) {
82
+ json.start = this.start;
83
+ json.end = this.end;
84
+ }
68
85
  return json;
69
86
  }
70
87
  }
@@ -81,6 +98,10 @@ XmlNode.TYPE_COMMENT = 'comment';
81
98
  * Type value for an `XmlDocument` node.
82
99
  */
83
100
  XmlNode.TYPE_DOCUMENT = 'document';
101
+ /**
102
+ * Type value for an `XmlDocumentType` node.
103
+ */
104
+ XmlNode.TYPE_DOCUMENT_TYPE = 'doctype';
84
105
  /**
85
106
  * Type value for an `XmlElement` node.
86
107
  */
@@ -93,4 +114,8 @@ XmlNode.TYPE_PROCESSING_INSTRUCTION = 'pi';
93
114
  * Type value for an `XmlText` node.
94
115
  */
95
116
  XmlNode.TYPE_TEXT = 'text';
117
+ /**
118
+ * Type value for an `XmlDeclaration` node.
119
+ */
120
+ XmlNode.TYPE_XML_DECLARATION = 'xmldecl';
96
121
  //# sourceMappingURL=XmlNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"XmlNode.js","sourceRoot":"","sources":["../../src/lib/XmlNode.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,MAAa,OAAO;IAApB;QA+BE;;WAEG;QACH,WAAM,GAAoC,IAAI,CAAC;IAiEjD,CAAC;IA/DC;;;OAGG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ,CAAC;IAC/D,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI,kBAAkB;QACpB,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI,IAAI;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,IAAI,GAAe;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAChC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;AAlGH,0BAmGC;AAlGC;;GAEG;AACa,kBAAU,GAAG,OAAO,CAAC;AAErC;;GAEG;AACa,oBAAY,GAAG,SAAS,CAAC;AAEzC;;GAEG;AACa,qBAAa,GAAG,UAAU,CAAC;AAE3C;;GAEG;AACa,oBAAY,GAAG,SAAS,CAAC;AAEzC;;GAEG;AACa,mCAA2B,GAAG,IAAI,CAAC;AAEnD;;GAEG;AACa,iBAAS,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"XmlNode.js","sourceRoot":"","sources":["../../src/lib/XmlNode.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,MAAa,OAAO;IAApB;QAyCE;;WAEG;QACH,WAAM,GAAoC,IAAI,CAAC;QAE/C;;;WAGG;QACH,UAAK,GAAG,CAAC,CAAC,CAAC;QAEX;;;WAGG;QACH,QAAG,GAAG,CAAC,CAAC,CAAC;IAyEX,CAAC;IAvEC;;;OAGG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,KAAK,IAAI;eACtB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,QAAQ;eAC7B,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;OAUG;IACH,IAAI,kBAAkB;QACpB,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAC3C,CAAC;IAED;;;;;;;;;OASG;IACH,IAAI,IAAI;QACN,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,IAAI,GAAe;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;SAChC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC,EAAE;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;SACrB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;;AAhIH,0BAiIC;AAhIC;;GAEG;AACa,kBAAU,GAAG,OAAO,CAAC;AAErC;;GAEG;AACa,oBAAY,GAAG,SAAS,CAAC;AAEzC;;GAEG;AACa,qBAAa,GAAG,UAAU,CAAC;AAE3C;;GAEG;AACa,0BAAkB,GAAG,SAAS,CAAC;AAE/C;;GAEG;AACa,oBAAY,GAAG,SAAS,CAAC;AAEzC;;GAEG;AACa,mCAA2B,GAAG,IAAI,CAAC;AAEnD;;GAEG;AACa,iBAAS,GAAG,MAAM,CAAC;AAEnC;;GAEG;AACa,4BAAoB,GAAG,SAAS,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../src/lib/syntax.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAY,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAY,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC;IAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAAC,CAMhE,CAAC;AAEJ;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAchD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAqB,GAAG,OAAO,CAiB9E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOlD"}
1
+ {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../src/lib/syntax.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,QAAmB,CAAC;AAE7D;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAY,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC;IAAC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAAC,CAMhE,CAAC;AAEJ;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAchD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,SAAqB,GAAG,OAAO,CAiB9E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAOlD"}
@@ -21,7 +21,7 @@ exports.attValueCharSingleQuote = /[^'&<]+/y;
21
21
  *
22
22
  * @see https://www.w3.org/TR/2008/REC-xml-20081126/#AVNormalize
23
23
  */
24
- exports.attValueNormalizedWhitespace = /[\t\n]/g;
24
+ exports.attValueNormalizedWhitespace = /\r\n|[\n\r\t]/g;
25
25
  /**
26
26
  * Regular expression that matches one or more characters that signal the end of
27
27
  * XML `CharData` content.
@@ -1 +1 @@
1
- {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/lib/syntax.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../src/lib/syntax.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export declare type JsonObject = {
1
+ export type JsonObject = {
2
2
  [key in string]?: JsonValue;
3
3
  };
4
- export declare type JsonValue = string | number | boolean | JsonObject | JsonValue[] | null;
4
+ export type JsonValue = string | number | boolean | JsonObject | JsonValue[] | null;
5
5
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,oBAAY,UAAU,GAAG;KAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,SAAS;CAAC,CAAC;AACvD,oBAAY,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;KAAE,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,SAAS;CAAC,CAAC;AACvD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,EAAE,GAAG,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rgrove/parse-xml",
3
- "version": "4.0.0",
3
+ "version": "4.1.0",
4
4
  "description": "A fast, safe, compliant XML parser for Node.js and browsers.",
5
5
  "keywords": [
6
6
  "xml",
@@ -21,6 +21,7 @@
21
21
  "engines": {
22
22
  "node": ">=14.0.0"
23
23
  },
24
+ "packageManager": "pnpm@7.26.1",
24
25
  "files": [
25
26
  "dist",
26
27
  "!dist/tsconfig.tsbuildinfo",
@@ -30,37 +31,37 @@
30
31
  "types": "./dist/index.d.ts",
31
32
  "main": "./dist/index.js",
32
33
  "browser": "./dist/browser.js",
33
- "scripts": {
34
- "build": "npm run build:js && npm run build:bundle && npm run build:docs",
35
- "build:bundle": "./scripts/esbuild.js",
36
- "build:docs": "typedoc src/index.ts",
37
- "build:js": "tsc",
38
- "clean": "rm -rf .nyc_output coverage dist",
39
- "coverage": "nyc --reporter html --report-dir coverage npm test && open coverage/index.html",
40
- "lint": "npm run lint:js && npm run lint:ts",
41
- "lint:js": "eslint .",
42
- "lint:ts": "tsc --noEmit",
43
- "prepublishOnly": "npm run clean && npm run build",
44
- "test": "npm run build:js && nyc --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 mocha",
45
- "test:watch": "npm run build:js && concurrently --kill-others-on-fail --names build,mocha 'npm run build:js -- --watch' 'mocha --watch'",
46
- "test:browser": "npm run build:js && npm run build:bundle && concurrently --kill-others-on-fail --names build:bundle,build:js,webpack 'npm run build:bundle -- --watch' 'npm run build:js -- --watch' 'webpack serve --config tests/webpack.config.js'"
47
- },
48
34
  "devDependencies": {
49
35
  "@rgrove/eslint-config": "^5.0.0",
50
- "@types/node": "^18.7.21",
36
+ "@types/node": "^18.11.18",
51
37
  "assert": "^2.0.0",
52
- "async": "^3.2.2",
53
- "concurrently": "^7.4.0",
54
- "esbuild": "^0.15.9",
55
- "eslint": "^8.24.0",
56
- "mocha": "^10.0.0",
38
+ "async": "^3.2.4",
39
+ "concurrently": "^7.6.0",
40
+ "esbuild": "^0.17.3",
41
+ "eslint": "^8.32.0",
42
+ "expect-type": "^0.15.0",
43
+ "mocha": "^10.2.0",
57
44
  "nyc": "^15.1.0",
58
45
  "path-browserify": "^1.0.1",
59
46
  "process": "^0.11.10",
60
- "typedoc": "^0.23.15",
61
- "typescript": "4.8.3",
62
- "webpack": "^5.65.0",
63
- "webpack-cli": "^4.9.1",
47
+ "typedoc": "^0.23.24",
48
+ "typescript": "4.9.4",
49
+ "webpack": "^5.75.0",
50
+ "webpack-cli": "^4.10.0",
64
51
  "webpack-dev-server": "^4.11.1"
52
+ },
53
+ "scripts": {
54
+ "build": "pnpm run build:js && pnpm run build:bundle && pnpm run build:docs",
55
+ "build:bundle": "./scripts/esbuild.js",
56
+ "build:docs": "typedoc src/index.ts",
57
+ "build:js": "tsc",
58
+ "clean": "rm -rf .nyc_output coverage dist",
59
+ "coverage": "nyc --reporter html --report-dir coverage pnpm test && open coverage/index.html",
60
+ "lint": "pnpm run build:js && pnpm run lint:js",
61
+ "lint:js": "eslint .",
62
+ "test": "pnpm run build:js && nyc --check-coverage --branches 100 --functions 100 --lines 100 --statements 100 mocha && pnpm run test:types",
63
+ "test:browser": "pnpm run build:js && pnpm run build:bundle && concurrently --kill-others-on-fail --names build:bundle,build:js,webpack 'pnpm run build:bundle --watch' 'pnpm run build:js --watch' 'webpack serve --config tests/webpack.config.js'",
64
+ "test:types": "pnpm run build:js && tsc --noEmit tests/types.expect.ts",
65
+ "test:watch": "pnpm run build:js && concurrently --kill-others-on-fail --names build,mocha 'pnpm run build:js --watch' 'mocha --watch'"
65
66
  }
66
- }
67
+ }
package/src/index.ts CHANGED
@@ -5,8 +5,11 @@ import type { ParserOptions } from './lib/Parser.js';
5
5
  export * from './lib/types.js';
6
6
  export { XmlCdata } from './lib/XmlCdata.js';
7
7
  export { XmlComment } from './lib/XmlComment.js';
8
+ export { XmlDeclaration } from './lib/XmlDeclaration.js';
8
9
  export { XmlDocument } from './lib/XmlDocument.js';
10
+ export { XmlDocumentType } from './lib/XmlDocumentType.js';
9
11
  export { XmlElement } from './lib/XmlElement.js';
12
+ export { XmlError } from './lib/XmlError.js';
10
13
  export { XmlNode } from './lib/XmlNode.js';
11
14
  export { XmlProcessingInstruction } from './lib/XmlProcessingInstruction.js';
12
15
  export { XmlText } from './lib/XmlText.js';
@@ -25,6 +28,6 @@ export type { ParserOptions } from './lib/Parser.js';
25
28
  * @param xml XML string to parse.
26
29
  * @param options Parser options.
27
30
  */
28
- export function parseXml(xml: string, options: ParserOptions) {
31
+ export function parseXml(xml: string, options?: ParserOptions) {
29
32
  return (new Parser(xml, options)).document;
30
33
  }