@loaders.gl/xml 3.4.0-alpha.1 → 3.4.0-alpha.3
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.
- package/dist/dist.min.js +419 -196
- package/dist/es5/html-loader.js +57 -0
- package/dist/es5/html-loader.js.map +1 -0
- package/dist/es5/index.js +33 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/lib/{parse-xml.js → parsers/parse-xml.js} +7 -7
- package/dist/es5/lib/parsers/parse-xml.js.map +1 -0
- package/dist/es5/lib/{parser/xml-parser.js → parsers/streaming-xml-parser.js} +10 -15
- package/dist/es5/lib/parsers/streaming-xml-parser.js.map +1 -0
- package/dist/es5/lib/xml-utils/uncapitalize.js +32 -0
- package/dist/es5/lib/xml-utils/uncapitalize.js.map +1 -0
- package/dist/es5/lib/xml-utils/xml-utils.js +23 -0
- package/dist/es5/lib/xml-utils/xml-utils.js.map +1 -0
- package/dist/es5/sax-ts/sax.js +1 -18
- package/dist/es5/sax-ts/sax.js.map +1 -1
- package/dist/es5/xml-loader.js +44 -12
- package/dist/es5/xml-loader.js.map +1 -1
- package/dist/esm/bundle.js +0 -1
- package/dist/esm/bundle.js.map +1 -1
- package/dist/esm/html-loader.js +27 -0
- package/dist/esm/html-loader.js.map +1 -0
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/parsers/parse-xml.js +22 -0
- package/dist/esm/lib/parsers/parse-xml.js.map +1 -0
- package/dist/esm/lib/{parser/xml-parser.js → parsers/streaming-xml-parser.js} +3 -8
- package/dist/esm/lib/parsers/streaming-xml-parser.js.map +1 -0
- package/dist/esm/lib/xml-utils/uncapitalize.js +17 -0
- package/dist/esm/lib/xml-utils/uncapitalize.js.map +1 -0
- package/dist/esm/lib/xml-utils/xml-utils.js +14 -0
- package/dist/esm/lib/xml-utils/xml-utils.js.map +1 -0
- package/dist/esm/sax-ts/sax.js +1 -19
- package/dist/esm/sax-ts/sax.js.map +1 -1
- package/dist/esm/xml-loader.js +38 -6
- package/dist/esm/xml-loader.js.map +1 -1
- package/dist/html-loader.d.ts +11 -0
- package/dist/html-loader.d.ts.map +1 -0
- package/dist/html-loader.js +40 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -1
- package/dist/lib/parsers/parse-xml.d.ts +12 -0
- package/dist/lib/parsers/parse-xml.d.ts.map +1 -0
- package/dist/lib/{parse-xml.js → parsers/parse-xml.js} +7 -8
- package/dist/lib/{parser/xml-parser.d.ts → parsers/streaming-xml-parser.d.ts} +6 -2
- package/dist/lib/parsers/streaming-xml-parser.d.ts.map +1 -0
- package/dist/lib/{parser/xml-parser.js → parsers/streaming-xml-parser.js} +6 -6
- package/dist/lib/xml-utils/uncapitalize.d.ts +13 -0
- package/dist/lib/xml-utils/uncapitalize.d.ts.map +1 -0
- package/dist/lib/xml-utils/uncapitalize.js +32 -0
- package/dist/lib/xml-utils/xml-utils.d.ts +11 -0
- package/dist/lib/xml-utils/xml-utils.d.ts.map +1 -0
- package/dist/lib/xml-utils/xml-utils.js +30 -0
- package/dist/sax-ts/sax.js +1 -1
- package/dist/xml-loader.d.ts +21 -3
- package/dist/xml-loader.d.ts.map +1 -1
- package/dist/xml-loader.js +41 -5
- package/package.json +5 -5
- package/src/html-loader.ts +46 -0
- package/src/index.ts +16 -0
- package/src/lib/{parse-xml.ts → parsers/parse-xml.ts} +9 -6
- package/src/lib/{parser/xml-parser.ts → parsers/streaming-xml-parser.ts} +5 -3
- package/src/lib/xml-utils/uncapitalize.ts +31 -0
- package/src/lib/xml-utils/xml-utils.ts +27 -0
- package/src/xml-loader.ts +63 -6
- package/dist/es5/lib/parse-xml.js.map +0 -1
- package/dist/es5/lib/parser/xml-parser.js.map +0 -1
- package/dist/esm/lib/parse-xml.js +0 -24
- package/dist/esm/lib/parse-xml.js.map +0 -1
- package/dist/esm/lib/parser/xml-parser.js.map +0 -1
- package/dist/lib/parse-xml.d.ts +0 -9
- package/dist/lib/parse-xml.d.ts.map +0 -1
- package/dist/lib/parser/xml-parser.d.ts.map +0 -1
package/src/xml-loader.ts
CHANGED
|
@@ -1,17 +1,30 @@
|
|
|
1
1
|
import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
|
|
2
2
|
import type {SAXParserOptions} from './sax-ts/sax';
|
|
3
|
-
import {
|
|
3
|
+
import {fastParseXML, FastXMLParserOptions} from './lib/parsers/parse-xml';
|
|
4
|
+
import {uncapitalizeKeys} from './lib/xml-utils/uncapitalize';
|
|
4
5
|
|
|
5
6
|
// __VERSION__ is injected by babel-plugin-version-inline
|
|
6
7
|
// @ts-ignore TS2304: Cannot find name '__VERSION__'.
|
|
7
8
|
const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
|
|
8
9
|
|
|
9
10
|
export type XMLLoaderOptions = LoaderOptions & {
|
|
10
|
-
xml?:
|
|
11
|
+
xml?: {
|
|
12
|
+
// TODO - type this harder
|
|
13
|
+
parser?: 'fast-xml-parser' | string;
|
|
14
|
+
/** XML is typically PascalCase, JavaScript prefects camelCase */
|
|
15
|
+
uncapitalizeKeys?: boolean;
|
|
16
|
+
removeNSPrefix?: boolean;
|
|
17
|
+
textNodeName?: string;
|
|
18
|
+
arrayPaths?: string[];
|
|
19
|
+
};
|
|
20
|
+
/** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */
|
|
21
|
+
_fastXML?: FastXMLParserOptions;
|
|
22
|
+
/** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */
|
|
23
|
+
_sax?: SAXParserOptions;
|
|
11
24
|
};
|
|
12
25
|
|
|
13
26
|
/**
|
|
14
|
-
*
|
|
27
|
+
* Loader for XML files
|
|
15
28
|
*/
|
|
16
29
|
export const XMLLoader = {
|
|
17
30
|
name: 'XML',
|
|
@@ -23,11 +36,17 @@ export const XMLLoader = {
|
|
|
23
36
|
mimeTypes: ['application/xml', 'text/xml'],
|
|
24
37
|
testText: testXMLFile,
|
|
25
38
|
options: {
|
|
26
|
-
xml: {
|
|
39
|
+
xml: {
|
|
40
|
+
parser: 'fast-xml-parser',
|
|
41
|
+
uncapitalizeKeys: false,
|
|
42
|
+
removeNSPrefix: false,
|
|
43
|
+
textNodeName: 'value',
|
|
44
|
+
arrayPaths: []
|
|
45
|
+
}
|
|
27
46
|
},
|
|
28
47
|
parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>
|
|
29
|
-
|
|
30
|
-
parseTextSync: (text: string, options?: XMLLoaderOptions) =>
|
|
48
|
+
parseTextSync(new TextDecoder().decode(arrayBuffer), options),
|
|
49
|
+
parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)
|
|
31
50
|
};
|
|
32
51
|
|
|
33
52
|
function testXMLFile(text: string): boolean {
|
|
@@ -35,4 +54,42 @@ function testXMLFile(text: string): boolean {
|
|
|
35
54
|
return text.startsWith('<?xml');
|
|
36
55
|
}
|
|
37
56
|
|
|
57
|
+
function parseTextSync(text: string, options?: XMLLoaderOptions): any {
|
|
58
|
+
const xmlOptions: Required<XMLLoaderOptions['xml']> = {...XMLLoader.options.xml, ...options?.xml};
|
|
59
|
+
switch (xmlOptions.parser) {
|
|
60
|
+
case 'fast-xml-parser':
|
|
61
|
+
const fastXMLOptions: FastXMLParserOptions = {
|
|
62
|
+
// Default FastXML options
|
|
63
|
+
// https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes
|
|
64
|
+
allowBooleanAttributes: true,
|
|
65
|
+
// https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration
|
|
66
|
+
ignoreDeclaration: true,
|
|
67
|
+
|
|
68
|
+
// XMLLoader Options: Map to FastXMLOptions
|
|
69
|
+
|
|
70
|
+
// https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix
|
|
71
|
+
removeNSPrefix: xmlOptions.removeNSPrefix,
|
|
72
|
+
|
|
73
|
+
// https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename
|
|
74
|
+
textNodeName: xmlOptions.textNodeName,
|
|
75
|
+
|
|
76
|
+
isArray: (name: string, jpath: string, isLeafNode: boolean, isAttribute: boolean) => {
|
|
77
|
+
const array = Boolean(xmlOptions?.arrayPaths?.some((path) => jpath === path));
|
|
78
|
+
return array;
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
// Application overrides
|
|
82
|
+
...options?._fastXML
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const xml = fastParseXML(text, fastXMLOptions);
|
|
86
|
+
|
|
87
|
+
// Note - could be done with FastXML tag processing
|
|
88
|
+
return xmlOptions.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;
|
|
89
|
+
|
|
90
|
+
default:
|
|
91
|
+
throw new Error(options?.xml?.parser);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
38
95
|
export const _typecheckXMLLoader: LoaderWithParser = XMLLoader;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-xml.js","names":["parseXML","text","options","parser","FastXMLParser","ignoreAttributes","attributeNamePrefix","xml","parsedXML","parse","parseXMLInBatches","XMLParser","strict","write","close","result"],"sources":["../../../src/lib/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLParser} from '../lib/parser/xml-parser';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\n\nexport function parseXML(text: string, options): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n // parseAttributeValue: true,\n ...options?.xml\n });\n\n const parsedXML = parser.parse(text);\n\n return parsedXML;\n}\n\n/**\n * @todo Build a streaming XML parser based on sax-js\n * @param text\n * @param options\n * @returns\n */\nexport function parseXMLInBatches(text: string, options): any {\n const parser = new XMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":";;;;;;;;;AAEA;AACA;AAA2D;AAAA;AAEpD,SAASA,QAAQ,CAACC,IAAY,EAAEC,OAAO,EAAO;EACnD,IAAMC,MAAM,GAAG,IAAIC,wBAAa;IAC9BC,gBAAgB,EAAE,KAAK;IACvBC,mBAAmB,EAAE;EAAE,GAEpBJ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEK,GAAG,EACf;EAEF,IAAMC,SAAS,GAAGL,MAAM,CAACM,KAAK,CAACR,IAAI,CAAC;EAEpC,OAAOO,SAAS;AAClB;;AAQO,SAASE,iBAAiB,CAACT,IAAY,EAAEC,OAAO,EAAO;EAC5D,IAAMC,MAAM,GAAG,IAAIQ,oBAAS,iCACvBT,OAAO;IACVU,MAAM,EAAE;EAAI,GACZ;EAEFT,MAAM,CAACU,KAAK,CAACZ,IAAI,CAAC;EAClBE,MAAM,CAACW,KAAK,EAAE;EAEd,OAAOX,MAAM,CAACY,MAAM;AACtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-parser.js","names":["XMLParser","options","undefined","Object","freeze","container","key","reset","parser","SAXParser","onready","previousStates","length","currentState","onopentag","name","attributes","isSelfClosing","_openObject","emit","onkey","onclosetag","_closeObject","onopenarray","_openArray","onclosearray","_closeArray","ontext","value","_pushOrSet","onerror","error","onend","result","pop","chunk","write","close","Array","isArray","push","newContainer"],"sources":["../../../../src/lib/parser/xml-parser.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// import ClarinetParser, {ClarinetParserOptions} from '../clarinet/clarinet';\nimport {SAXParser, SAXParserOptions} from '../../sax-ts/sax';\n// import JSONPath from '../jsonpath/jsonpath';\n\n// XMLParser builds a JSON object using the events emitted by the Clarinet parser\n\nexport class XMLParser {\n readonly parser: SAXParser;\n result = undefined;\n previousStates = [];\n currentState = Object.freeze({container: [], key: null});\n // jsonpath: JSONPath = new JSONPath();\n\n constructor(options: SAXParserOptions) {\n this.reset();\n this.parser = new SAXParser({\n onready: () => {\n this.previousStates.length = 0;\n this.currentState.container.length = 0;\n },\n\n onopentag: ({name, attributes, isSelfClosing}) => {\n this._openObject({});\n if (typeof name !== 'undefined') {\n this.parser.emit('onkey', name);\n }\n },\n\n onkey: (name) => {\n this.currentState.key = name;\n },\n\n onclosetag: () => {\n this._closeObject();\n },\n\n onopenarray: () => {\n this._openArray();\n },\n\n onclosearray: () => {\n this._closeArray();\n },\n\n ontext: (value) => {\n this._pushOrSet(value);\n },\n\n onerror: (error) => {\n throw error;\n },\n\n onend: () => {\n this.result = this.currentState.container.pop();\n },\n\n ...options\n });\n }\n\n reset(): void {\n this.result = undefined;\n this.previousStates = [];\n this.currentState = Object.freeze({container: [], key: null});\n }\n\n write(chunk): void {\n this.parser.write(chunk);\n }\n\n close(): void {\n this.parser.close();\n }\n\n // PRIVATE METHODS\n\n _pushOrSet(value): void {\n const {container, key} = this.currentState;\n if (key !== null) {\n container[key] = value;\n this.currentState.key = null;\n } else if (Array.isArray(container)) {\n container.push(value);\n } else if (container) {\n // debugger\n }\n }\n\n _openArray(newContainer = []): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: true, key: null};\n }\n\n _closeArray(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n\n _openObject(newContainer = {}): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: false, key: null};\n }\n\n _closeObject(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import { XMLParser } from '../lib/parser/xml-parser';
|
|
4
|
-
import { XMLParser as FastXMLParser } from 'fast-xml-parser';
|
|
5
|
-
export function parseXML(text, options) {
|
|
6
|
-
const parser = new FastXMLParser({
|
|
7
|
-
ignoreAttributes: false,
|
|
8
|
-
attributeNamePrefix: '',
|
|
9
|
-
...(options === null || options === void 0 ? void 0 : options.xml)
|
|
10
|
-
});
|
|
11
|
-
const parsedXML = parser.parse(text);
|
|
12
|
-
return parsedXML;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export function parseXMLInBatches(text, options) {
|
|
16
|
-
const parser = new XMLParser({
|
|
17
|
-
...options,
|
|
18
|
-
strict: true
|
|
19
|
-
});
|
|
20
|
-
parser.write(text);
|
|
21
|
-
parser.close();
|
|
22
|
-
return parser.result;
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=parse-xml.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-xml.js","names":["XMLParser","FastXMLParser","parseXML","text","options","parser","ignoreAttributes","attributeNamePrefix","xml","parsedXML","parse","parseXMLInBatches","strict","write","close","result"],"sources":["../../../src/lib/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {XMLParser} from '../lib/parser/xml-parser';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\n\nexport function parseXML(text: string, options): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n // parseAttributeValue: true,\n ...options?.xml\n });\n\n const parsedXML = parser.parse(text);\n\n return parsedXML;\n}\n\n/**\n * @todo Build a streaming XML parser based on sax-js\n * @param text\n * @param options\n * @returns\n */\nexport function parseXMLInBatches(text: string, options): any {\n const parser = new XMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":";;AAEA,SAAQA,SAAS,QAAO,0BAA0B;AAClD,SAAQA,SAAS,IAAIC,aAAa,QAAO,iBAAiB;AAE1D,OAAO,SAASC,QAAQ,CAACC,IAAY,EAAEC,OAAO,EAAO;EACnD,MAAMC,MAAM,GAAG,IAAIJ,aAAa,CAAC;IAC/BK,gBAAgB,EAAE,KAAK;IACvBC,mBAAmB,EAAE,EAAE;IAEvB,IAAGH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEI,GAAG;EACjB,CAAC,CAAC;EAEF,MAAMC,SAAS,GAAGJ,MAAM,CAACK,KAAK,CAACP,IAAI,CAAC;EAEpC,OAAOM,SAAS;AAClB;;AAQA,OAAO,SAASE,iBAAiB,CAACR,IAAY,EAAEC,OAAO,EAAO;EAC5D,MAAMC,MAAM,GAAG,IAAIL,SAAS,CAAC;IAC3B,GAAGI,OAAO;IACVQ,MAAM,EAAE;EACV,CAAC,CAAC;EAEFP,MAAM,CAACQ,KAAK,CAACV,IAAI,CAAC;EAClBE,MAAM,CAACS,KAAK,EAAE;EAEd,OAAOT,MAAM,CAACU,MAAM;AACtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-parser.js","names":["SAXParser","XMLParser","constructor","options","undefined","Object","freeze","container","key","reset","parser","onready","previousStates","length","currentState","onopentag","name","attributes","isSelfClosing","_openObject","emit","onkey","onclosetag","_closeObject","onopenarray","_openArray","onclosearray","_closeArray","ontext","value","_pushOrSet","onerror","error","onend","result","pop","write","chunk","close","Array","isArray","push","newContainer"],"sources":["../../../../src/lib/parser/xml-parser.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// import ClarinetParser, {ClarinetParserOptions} from '../clarinet/clarinet';\nimport {SAXParser, SAXParserOptions} from '../../sax-ts/sax';\n// import JSONPath from '../jsonpath/jsonpath';\n\n// XMLParser builds a JSON object using the events emitted by the Clarinet parser\n\nexport class XMLParser {\n readonly parser: SAXParser;\n result = undefined;\n previousStates = [];\n currentState = Object.freeze({container: [], key: null});\n // jsonpath: JSONPath = new JSONPath();\n\n constructor(options: SAXParserOptions) {\n this.reset();\n this.parser = new SAXParser({\n onready: () => {\n this.previousStates.length = 0;\n this.currentState.container.length = 0;\n },\n\n onopentag: ({name, attributes, isSelfClosing}) => {\n this._openObject({});\n if (typeof name !== 'undefined') {\n this.parser.emit('onkey', name);\n }\n },\n\n onkey: (name) => {\n this.currentState.key = name;\n },\n\n onclosetag: () => {\n this._closeObject();\n },\n\n onopenarray: () => {\n this._openArray();\n },\n\n onclosearray: () => {\n this._closeArray();\n },\n\n ontext: (value) => {\n this._pushOrSet(value);\n },\n\n onerror: (error) => {\n throw error;\n },\n\n onend: () => {\n this.result = this.currentState.container.pop();\n },\n\n ...options\n });\n }\n\n reset(): void {\n this.result = undefined;\n this.previousStates = [];\n this.currentState = Object.freeze({container: [], key: null});\n }\n\n write(chunk): void {\n this.parser.write(chunk);\n }\n\n close(): void {\n this.parser.close();\n }\n\n // PRIVATE METHODS\n\n _pushOrSet(value): void {\n const {container, key} = this.currentState;\n if (key !== null) {\n container[key] = value;\n this.currentState.key = null;\n } else if (Array.isArray(container)) {\n container.push(value);\n } else if (container) {\n // debugger\n }\n }\n\n _openArray(newContainer = []): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: true, key: null};\n }\n\n _closeArray(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n\n _openObject(newContainer = {}): void {\n // this.jsonpath.push(null);\n this._pushOrSet(newContainer);\n this.previousStates.push(this.currentState);\n this.currentState = {container: newContainer, isArray: false, key: null};\n }\n\n _closeObject(): void {\n // this.jsonpath.pop();\n this.currentState = this.previousStates.pop();\n }\n}\n"],"mappings":"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"}
|
package/dist/lib/parse-xml.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export declare function parseXML(text: string, options: any): any;
|
|
2
|
-
/**
|
|
3
|
-
* @todo Build a streaming XML parser based on sax-js
|
|
4
|
-
* @param text
|
|
5
|
-
* @param options
|
|
6
|
-
* @returns
|
|
7
|
-
*/
|
|
8
|
-
export declare function parseXMLInBatches(text: string, options: any): any;
|
|
9
|
-
//# sourceMappingURL=parse-xml.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-xml.d.ts","sourceRoot":"","sources":["../../src/lib/parse-xml.ts"],"names":[],"mappings":"AAKA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAA,GAAG,GAAG,CAWnD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAA,GAAG,GAAG,CAU5D"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"xml-parser.d.ts","sourceRoot":"","sources":["../../../src/lib/parser/xml-parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAK7D,qBAAa,SAAS;IACpB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,MAAM,YAAa;IACnB,cAAc,UAAM;IACpB,YAAY;;;OAA6C;gBAG7C,OAAO,EAAE,gBAAgB;IA+CrC,KAAK,IAAI,IAAI;IAMb,KAAK,CAAC,KAAK,KAAA,GAAG,IAAI;IAIlB,KAAK,IAAI,IAAI;IAMb,UAAU,CAAC,KAAK,KAAA,GAAG,IAAI;IAYvB,UAAU,CAAC,YAAY,UAAK,GAAG,IAAI;IAOnC,WAAW,IAAI,IAAI;IAKnB,WAAW,CAAC,YAAY,KAAK,GAAG,IAAI;IAOpC,YAAY,IAAI,IAAI;CAIrB"}
|