@loaders.gl/xml 3.4.3 → 4.0.0-alpha.7

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 CHANGED
@@ -1358,6 +1358,28 @@ Actual: ${this.attribValue}`);
1358
1358
  }
1359
1359
  });
1360
1360
 
1361
+ // src/lib/xml-utils/uncapitalize.ts
1362
+ function uncapitalize(str) {
1363
+ return typeof str === "string" ? str.charAt(0).toLowerCase() + str.slice(1) : str;
1364
+ }
1365
+ function uncapitalizeKeys(object) {
1366
+ if (Array.isArray(object)) {
1367
+ return object.map((element) => uncapitalizeKeys(element));
1368
+ }
1369
+ if (object && typeof object === "object") {
1370
+ const newObject = {};
1371
+ for (const [key, value] of Object.entries(object)) {
1372
+ newObject[uncapitalize(key)] = uncapitalizeKeys(value);
1373
+ }
1374
+ return newObject;
1375
+ }
1376
+ return object;
1377
+ }
1378
+ var init_uncapitalize = __esm({
1379
+ "src/lib/xml-utils/uncapitalize.ts"() {
1380
+ }
1381
+ });
1382
+
1361
1383
  // node_modules/fast-xml-parser/src/util.js
1362
1384
  var require_util = __commonJS({
1363
1385
  "node_modules/fast-xml-parser/src/util.js"(exports) {
@@ -2989,6 +3011,24 @@ Actual: ${this.attribValue}`);
2989
3011
  });
2990
3012
 
2991
3013
  // src/lib/parsers/parse-xml.ts
3014
+ function parseXMLSync(text, options) {
3015
+ if (options?._parser && options._parser !== "fast-xml-parser") {
3016
+ throw new Error(options?._parser);
3017
+ }
3018
+ const fastXMLOptions = {
3019
+ allowBooleanAttributes: true,
3020
+ ignoreDeclaration: true,
3021
+ removeNSPrefix: options?.removeNSPrefix,
3022
+ textNodeName: options?.textNodeName,
3023
+ isArray: (name, jpath, isLeafNode, isAttribute) => {
3024
+ const array = Boolean(options?.arrayPaths?.some((path) => jpath === path));
3025
+ return array;
3026
+ },
3027
+ ...options?._fastXML
3028
+ };
3029
+ const xml = fastParseXML(text, fastXMLOptions);
3030
+ return options?.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;
3031
+ }
2992
3032
  function fastParseXML(text, options) {
2993
3033
  const parser = new import_fast_xml_parser.XMLParser({
2994
3034
  ignoreAttributes: false,
@@ -3001,62 +3041,19 @@ Actual: ${this.attribValue}`);
3001
3041
  var import_fast_xml_parser;
3002
3042
  var init_parse_xml = __esm({
3003
3043
  "src/lib/parsers/parse-xml.ts"() {
3044
+ init_uncapitalize();
3004
3045
  import_fast_xml_parser = __toModule(require_fxp());
3005
3046
  }
3006
3047
  });
3007
3048
 
3008
- // src/lib/xml-utils/uncapitalize.ts
3009
- function uncapitalize(str) {
3010
- return typeof str === "string" ? str.charAt(0).toLowerCase() + str.slice(1) : str;
3011
- }
3012
- function uncapitalizeKeys(object) {
3013
- if (Array.isArray(object)) {
3014
- return object.map((element) => uncapitalizeKeys(element));
3015
- }
3016
- if (object && typeof object === "object") {
3017
- const newObject = {};
3018
- for (const [key, value] of Object.entries(object)) {
3019
- newObject[uncapitalize(key)] = uncapitalizeKeys(value);
3020
- }
3021
- return newObject;
3022
- }
3023
- return object;
3024
- }
3025
- var init_uncapitalize = __esm({
3026
- "src/lib/xml-utils/uncapitalize.ts"() {
3027
- }
3028
- });
3029
-
3030
3049
  // src/xml-loader.ts
3031
3050
  function testXMLFile(text) {
3032
3051
  return text.startsWith("<?xml");
3033
3052
  }
3034
- function parseTextSync(text, options) {
3035
- const xmlOptions = { ...XMLLoader.options.xml, ...options?.xml };
3036
- switch (xmlOptions.parser) {
3037
- case "fast-xml-parser":
3038
- const fastXMLOptions = {
3039
- allowBooleanAttributes: true,
3040
- ignoreDeclaration: true,
3041
- removeNSPrefix: xmlOptions.removeNSPrefix,
3042
- textNodeName: xmlOptions.textNodeName,
3043
- isArray: (name, jpath, isLeafNode, isAttribute) => {
3044
- const array = Boolean(xmlOptions?.arrayPaths?.some((path) => jpath === path));
3045
- return array;
3046
- },
3047
- ...options?._fastXML
3048
- };
3049
- const xml = fastParseXML(text, fastXMLOptions);
3050
- return xmlOptions.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;
3051
- default:
3052
- throw new Error(options?.xml?.parser);
3053
- }
3054
- }
3055
3053
  var VERSION, XMLLoader;
3056
3054
  var init_xml_loader = __esm({
3057
3055
  "src/xml-loader.ts"() {
3058
3056
  init_parse_xml();
3059
- init_uncapitalize();
3060
3057
  VERSION = typeof __VERSION__ !== "undefined" ? __VERSION__ : "latest";
3061
3058
  XMLLoader = {
3062
3059
  name: "XML",
@@ -3069,26 +3066,31 @@ Actual: ${this.attribValue}`);
3069
3066
  testText: testXMLFile,
3070
3067
  options: {
3071
3068
  xml: {
3072
- parser: "fast-xml-parser",
3069
+ _parser: "fast-xml-parser",
3073
3070
  uncapitalizeKeys: false,
3074
3071
  removeNSPrefix: false,
3075
3072
  textNodeName: "value",
3076
3073
  arrayPaths: []
3077
3074
  }
3078
3075
  },
3079
- parse: async (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),
3080
- parseTextSync: (text, options) => parseTextSync(text, options)
3076
+ parse: async (arrayBuffer, options) => parseXMLSync(new TextDecoder().decode(arrayBuffer), {
3077
+ ...XMLLoader.options.xml,
3078
+ ...options?.xml
3079
+ }),
3080
+ parseTextSync: (text, options) => parseXMLSync(text, { ...XMLLoader.options.xml, ...options?.xml })
3081
3081
  };
3082
3082
  }
3083
3083
  });
3084
3084
 
3085
3085
  // ../loader-utils/src/lib/option-utils/merge-loader-options.ts
3086
3086
  function mergeLoaderOptions(baseOptions, newOptions) {
3087
+ return mergeOptionsRecursively(baseOptions || {}, newOptions);
3088
+ }
3089
+ function mergeOptionsRecursively(baseOptions, newOptions) {
3087
3090
  const options = { ...baseOptions };
3088
3091
  for (const [key, newValue] of Object.entries(newOptions)) {
3089
3092
  if (newValue && typeof newValue === "object") {
3090
- options[key] = options[key] || {};
3091
- Object.assign(options[key], newOptions[key]);
3093
+ options[key] = mergeOptionsRecursively(options[key] || {}, newOptions[key]);
3092
3094
  } else {
3093
3095
  options[key] = newOptions[key];
3094
3096
  }
@@ -3111,16 +3113,16 @@ Actual: ${this.attribValue}`);
3111
3113
  function testHTMLFile(text) {
3112
3114
  return text.startsWith("<html");
3113
3115
  }
3114
- function parseTextSync2(text, options) {
3116
+ function parseTextSync(text, options) {
3115
3117
  options = mergeLoaderOptions(options, {
3116
3118
  xml: {
3117
- parser: "fast-xml-parser"
3118
- },
3119
- _fastXML: {
3120
- htmlEntities: true
3119
+ _parser: "fast-xml-parser",
3120
+ _fastXML: {
3121
+ htmlEntities: true
3122
+ }
3121
3123
  }
3122
3124
  });
3123
- return XMLLoader.parseTextSync(text, options);
3125
+ return XMLLoader.parseTextSync?.(text, options);
3124
3126
  }
3125
3127
  var HTMLLoader;
3126
3128
  var init_html_loader = __esm({
@@ -3134,8 +3136,8 @@ Actual: ${this.attribValue}`);
3134
3136
  extensions: ["html", "htm"],
3135
3137
  mimeTypes: ["text/html"],
3136
3138
  testText: testHTMLFile,
3137
- parse: async (arrayBuffer, options) => parseTextSync2(new TextDecoder().decode(arrayBuffer), options),
3138
- parseTextSync: (text, options) => parseTextSync2(text, options)
3139
+ parse: async (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),
3140
+ parseTextSync: (text, options) => parseTextSync(text, options)
3139
3141
  };
3140
3142
  }
3141
3143
  });
@@ -44,14 +44,15 @@ function testHTMLFile(text) {
44
44
  return text.startsWith('<html');
45
45
  }
46
46
  function _parseTextSync(text, options) {
47
+ var _XMLLoader$parseTextS;
47
48
  options = (0, _loaderUtils.mergeLoaderOptions)(options, {
48
49
  xml: {
49
- parser: 'fast-xml-parser'
50
- },
51
- _fastXML: {
52
- htmlEntities: true
50
+ _parser: 'fast-xml-parser',
51
+ _fastXML: {
52
+ htmlEntities: true
53
+ }
53
54
  }
54
55
  });
55
- return _xmlLoader.XMLLoader.parseTextSync(text, options);
56
+ return (_XMLLoader$parseTextS = _xmlLoader.XMLLoader.parseTextSync) === null || _XMLLoader$parseTextS === void 0 ? void 0 : _XMLLoader$parseTextS.call(_xmlLoader.XMLLoader, text, options);
56
57
  }
57
58
  //# sourceMappingURL=html-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"html-loader.js","names":["_loaderUtils","require","_xmlLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","HTMLLoader","XMLLoader","name","id","extensions","mimeTypes","testText","testHTMLFile","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","parseTextSync","TextDecoder","decode","stop","_x","_x2","text","exports","startsWith","mergeLoaderOptions","xml","parser","_fastXML","htmlEntities"],"sources":["../../src/html-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {mergeLoaderOptions} from '@loaders.gl/loader-utils';\nimport {XMLLoader, XMLLoaderOptions} from './xml-loader';\n\nexport type HTMLLoaderOptions = XMLLoaderOptions;\n\n/**\n * Loader for HTML files\n * Essentially a copy of the XMLLoader with different mime types, file extensions and content tests.\n * This split enables applications can control whether they want HTML responses to be parsed by the XML loader or not.\n * This loader does not have any additional understanding of the structure of HTML or the document.\n */\nexport const HTMLLoader: LoaderWithParser = {\n ...XMLLoader,\n name: 'HTML',\n id: 'html',\n extensions: ['html', 'htm'],\n mimeTypes: ['text/html'],\n testText: testHTMLFile,\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)\n};\n\nfunction testHTMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<html');\n}\n\nfunction parseTextSync(text: string, options?: XMLLoaderOptions): any {\n // fast-xml-parser can recognize HTML entities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#htmlentities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/5.Entities.md\n options = mergeLoaderOptions(options, {\n xml: {\n parser: 'fast-xml-parser'\n },\n _fastXML: {\n htmlEntities: true\n }\n });\n\n return XMLLoader.parseTextSync(text, options);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"html-loader.js","names":["_loaderUtils","require","_xmlLoader","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","HTMLLoader","XMLLoader","name","id","extensions","mimeTypes","testText","testHTMLFile","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","options","wrap","_callee$","_context","prev","next","abrupt","parseTextSync","TextDecoder","decode","stop","_x","_x2","text","exports","startsWith","_XMLLoader$parseTextS","mergeLoaderOptions","xml","_parser","_fastXML","htmlEntities","call"],"sources":["../../src/html-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {mergeLoaderOptions} from '@loaders.gl/loader-utils';\nimport {XMLLoader, XMLLoaderOptions} from './xml-loader';\n\nexport type HTMLLoaderOptions = XMLLoaderOptions;\n\n/**\n * Loader for HTML files\n * Essentially a copy of the XMLLoader with different mime types, file extensions and content tests.\n * This split enables applications can control whether they want HTML responses to be parsed by the XML loader or not.\n * This loader does not have any additional understanding of the structure of HTML or the document.\n */\nexport const HTMLLoader: LoaderWithParser = {\n ...XMLLoader,\n name: 'HTML',\n id: 'html',\n extensions: ['html', 'htm'],\n mimeTypes: ['text/html'],\n testText: testHTMLFile,\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)\n};\n\nfunction testHTMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<html');\n}\n\nfunction parseTextSync(text: string, options?: XMLLoaderOptions): any {\n // fast-xml-parser can recognize HTML entities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#htmlentities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/5.Entities.md\n options = mergeLoaderOptions(options, {\n xml: {\n _parser: 'fast-xml-parser',\n _fastXML: {\n htmlEntities: true\n }\n }\n });\n\n return XMLLoader.parseTextSync?.(text, options);\n}\n"],"mappings":"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"}
@@ -6,11 +6,33 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.fastParseXML = fastParseXML;
8
8
  exports.parseXMLInBatches = parseXMLInBatches;
9
+ exports.parseXMLSync = parseXMLSync;
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _streamingXmlParser = require("./streaming-xml-parser");
12
+ var _uncapitalize = require("../xml-utils/uncapitalize");
11
13
  var _fastXmlParser = require("fast-xml-parser");
12
14
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
13
15
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
16
+ function parseXMLSync(text, options) {
17
+ if (options !== null && options !== void 0 && options._parser && options._parser !== 'fast-xml-parser') {
18
+ throw new Error(options === null || options === void 0 ? void 0 : options._parser);
19
+ }
20
+ var fastXMLOptions = _objectSpread({
21
+ allowBooleanAttributes: true,
22
+ ignoreDeclaration: true,
23
+ removeNSPrefix: options === null || options === void 0 ? void 0 : options.removeNSPrefix,
24
+ textNodeName: options === null || options === void 0 ? void 0 : options.textNodeName,
25
+ isArray: function isArray(name, jpath, isLeafNode, isAttribute) {
26
+ var _options$arrayPaths;
27
+ var array = Boolean(options === null || options === void 0 ? void 0 : (_options$arrayPaths = options.arrayPaths) === null || _options$arrayPaths === void 0 ? void 0 : _options$arrayPaths.some(function (path) {
28
+ return jpath === path;
29
+ }));
30
+ return array;
31
+ }
32
+ }, options === null || options === void 0 ? void 0 : options._fastXML);
33
+ var xml = fastParseXML(text, fastXMLOptions);
34
+ return options !== null && options !== void 0 && options.uncapitalizeKeys ? (0, _uncapitalize.uncapitalizeKeys)(xml) : xml;
35
+ }
14
36
  function fastParseXML(text, options) {
15
37
  var parser = new _fastXmlParser.XMLParser(_objectSpread({
16
38
  ignoreAttributes: false,
@@ -1 +1 @@
1
- {"version":3,"file":"parse-xml.js","names":["_streamingXmlParser","require","_fastXmlParser","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","fastParseXML","text","options","parser","FastXMLParser","ignoreAttributes","attributeNamePrefix","parsedXML","parse","parseXMLInBatches","undefined","StreamingXMLParser","strict","write","close","result"],"sources":["../../../../src/lib/parsers/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {StreamingXMLParser} from './streaming-xml-parser';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\nimport type {X2jOptions} from 'fast-xml-parser';\n\n/** Type for passing through fast-xml-parser options */\nexport type FastXMLParserOptions = Partial<X2jOptions>;\n\nexport function fastParseXML(text: string, options: FastXMLParserOptions): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n ...options\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 StreamingXMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":";;;;;;;;;AAEA,IAAAA,mBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AAA2D,SAAAE,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAMpD,SAASY,YAAYA,CAACC,IAAY,EAAEC,OAA6B,EAAO;EAC7E,IAAMC,MAAM,GAAG,IAAIC,wBAAa,CAAAjB,aAAA;IAC9BkB,gBAAgB,EAAE,KAAK;IACvBC,mBAAmB,EAAE;EAAE,GACpBJ,OAAO,CACX,CAAC;EAEF,IAAMK,SAAS,GAAGJ,MAAM,CAACK,KAAK,CAACP,IAAI,CAAC;EAEpC,OAAOM,SAAS;AAClB;AAQO,SAASE,iBAAiBA,CAACR,IAAY,EAAqB;EAAA,IAAnBC,OAAO,GAAAZ,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAoB,SAAA,GAAApB,SAAA,MAAG,CAAC,CAAC;EAC1D,IAAMa,MAAM,GAAG,IAAIQ,sCAAkB,CAAAxB,aAAA,CAAAA,aAAA,KAChCe,OAAO;IACVU,MAAM,EAAE;EAAI,EACb,CAAC;EAEFT,MAAM,CAACU,KAAK,CAACZ,IAAI,CAAC;EAClBE,MAAM,CAACW,KAAK,CAAC,CAAC;EAEd,OAAOX,MAAM,CAACY,MAAM;AACtB"}
1
+ {"version":3,"file":"parse-xml.js","names":["_streamingXmlParser","require","_uncapitalize","_fastXmlParser","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","parseXMLSync","text","options","_parser","Error","fastXMLOptions","allowBooleanAttributes","ignoreDeclaration","removeNSPrefix","textNodeName","isArray","name","jpath","isLeafNode","isAttribute","_options$arrayPaths","array","Boolean","arrayPaths","some","path","_fastXML","xml","fastParseXML","uncapitalizeKeys","parser","FastXMLParser","ignoreAttributes","attributeNamePrefix","parsedXML","parse","parseXMLInBatches","undefined","StreamingXMLParser","strict","write","close","result"],"sources":["../../../../src/lib/parsers/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {SAXParserOptions} from '../../sax-ts/sax';\nimport {StreamingXMLParser} from './streaming-xml-parser';\nimport {uncapitalizeKeys} from '../xml-utils/uncapitalize';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\nimport type {X2jOptions} from 'fast-xml-parser';\n\nexport type ParseXMLOptions = {\n /** XML is typically PascalCase, JavaScript prefects camelCase */\n uncapitalizeKeys?: boolean;\n removeNSPrefix?: boolean;\n textNodeName?: string;\n arrayPaths?: string[];\n\n // NOTE: Only fast-xml-parser is implemented\n _parser?: 'fast-xml-parser' | 'sax';\n /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */\n _fastXML?: _FastParseXMLOptions;\n /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */\n _sax?: SAXParserOptions;\n};\n\n/** Type for passing through fast-xml-parser options */\nexport type _FastParseXMLOptions = Partial<X2jOptions>;\n\nexport function parseXMLSync(text: string, options?: ParseXMLOptions): any {\n if (options?._parser && options._parser !== 'fast-xml-parser') {\n throw new Error(options?._parser);\n }\n\n const fastXMLOptions: _FastParseXMLOptions = {\n // Default FastXML options\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes\n allowBooleanAttributes: true,\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration\n ignoreDeclaration: true,\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix\n removeNSPrefix: options?.removeNSPrefix,\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename\n textNodeName: options?.textNodeName,\n\n // Let's application specify keys that are always arrays\n isArray: (name: string, jpath: string, isLeafNode: boolean, isAttribute: boolean) => {\n const array = Boolean(options?.arrayPaths?.some((path) => jpath === path));\n return array;\n },\n\n // Application overrides\n ...options?._fastXML\n };\n\n const xml = fastParseXML(text, fastXMLOptions);\n\n // Note - could be done with FastXML tag processing\n return options?.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;\n}\n\nexport function fastParseXML(text: string, options: _FastParseXMLOptions): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n ...options\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 StreamingXMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":"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"}
@@ -4,15 +4,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports._typecheckXMLLoader = exports.XMLLoader = void 0;
7
+ exports.XMLLoader = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
11
  var _parseXml = require("./lib/parsers/parse-xml");
12
- var _uncapitalize = require("./lib/xml-utils/uncapitalize");
13
12
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
13
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
15
- var VERSION = typeof "3.4.3" !== 'undefined' ? "3.4.3" : 'latest';
14
+ var VERSION = typeof "4.0.0-alpha.7" !== 'undefined' ? "4.0.0-alpha.7" : 'latest';
16
15
  var XMLLoader = {
17
16
  name: 'XML',
18
17
  id: 'xml',
@@ -24,7 +23,7 @@ var XMLLoader = {
24
23
  testText: testXMLFile,
25
24
  options: {
26
25
  xml: {
27
- parser: 'fast-xml-parser',
26
+ _parser: 'fast-xml-parser',
28
27
  uncapitalizeKeys: false,
29
28
  removeNSPrefix: false,
30
29
  textNodeName: 'value',
@@ -36,7 +35,7 @@ var XMLLoader = {
36
35
  return _regenerator.default.wrap(function _callee$(_context) {
37
36
  while (1) switch (_context.prev = _context.next) {
38
37
  case 0:
39
- return _context.abrupt("return", _parseTextSync(new TextDecoder().decode(arrayBuffer), options));
38
+ return _context.abrupt("return", (0, _parseXml.parseXMLSync)(new TextDecoder().decode(arrayBuffer), _objectSpread(_objectSpread({}, XMLLoader.options.xml), options === null || options === void 0 ? void 0 : options.xml)));
40
39
  case 1:
41
40
  case "end":
42
41
  return _context.stop();
@@ -49,37 +48,11 @@ var XMLLoader = {
49
48
  return parse;
50
49
  }(),
51
50
  parseTextSync: function parseTextSync(text, options) {
52
- return _parseTextSync(text, options);
51
+ return (0, _parseXml.parseXMLSync)(text, _objectSpread(_objectSpread({}, XMLLoader.options.xml), options === null || options === void 0 ? void 0 : options.xml));
53
52
  }
54
53
  };
55
54
  exports.XMLLoader = XMLLoader;
56
55
  function testXMLFile(text) {
57
56
  return text.startsWith('<?xml');
58
57
  }
59
- function _parseTextSync(text, options) {
60
- var _options$xml;
61
- var xmlOptions = _objectSpread(_objectSpread({}, XMLLoader.options.xml), options === null || options === void 0 ? void 0 : options.xml);
62
- switch (xmlOptions.parser) {
63
- case 'fast-xml-parser':
64
- var fastXMLOptions = _objectSpread({
65
- allowBooleanAttributes: true,
66
- ignoreDeclaration: true,
67
- removeNSPrefix: xmlOptions.removeNSPrefix,
68
- textNodeName: xmlOptions.textNodeName,
69
- isArray: function isArray(name, jpath, isLeafNode, isAttribute) {
70
- var _xmlOptions$arrayPath;
71
- var array = Boolean(xmlOptions === null || xmlOptions === void 0 ? void 0 : (_xmlOptions$arrayPath = xmlOptions.arrayPaths) === null || _xmlOptions$arrayPath === void 0 ? void 0 : _xmlOptions$arrayPath.some(function (path) {
72
- return jpath === path;
73
- }));
74
- return array;
75
- }
76
- }, options === null || options === void 0 ? void 0 : options._fastXML);
77
- var xml = (0, _parseXml.fastParseXML)(text, fastXMLOptions);
78
- return xmlOptions.uncapitalizeKeys ? (0, _uncapitalize.uncapitalizeKeys)(xml) : xml;
79
- default:
80
- throw new Error(options === null || options === void 0 ? void 0 : (_options$xml = options.xml) === null || _options$xml === void 0 ? void 0 : _options$xml.parser);
81
- }
82
- }
83
- var _typecheckXMLLoader = XMLLoader;
84
- exports._typecheckXMLLoader = _typecheckXMLLoader;
85
58
  //# sourceMappingURL=xml-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-loader.js","names":["_parseXml","require","_uncapitalize","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","VERSION","XMLLoader","name","id","module","version","worker","extensions","mimeTypes","testText","testXMLFile","options","xml","parser","uncapitalizeKeys","removeNSPrefix","textNodeName","arrayPaths","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseTextSync","TextDecoder","decode","stop","_x","_x2","text","exports","startsWith","_options$xml","xmlOptions","fastXMLOptions","allowBooleanAttributes","ignoreDeclaration","isArray","jpath","isLeafNode","isAttribute","_xmlOptions$arrayPath","array","Boolean","some","path","_fastXML","fastParseXML","Error","_typecheckXMLLoader"],"sources":["../../src/xml-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {SAXParserOptions} from './sax-ts/sax';\nimport {fastParseXML, FastXMLParserOptions} from './lib/parsers/parse-xml';\nimport {uncapitalizeKeys} from './lib/xml-utils/uncapitalize';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type XMLLoaderOptions = LoaderOptions & {\n xml?: {\n // TODO - type this harder\n parser?: 'fast-xml-parser' | string;\n /** XML is typically PascalCase, JavaScript prefects camelCase */\n uncapitalizeKeys?: boolean;\n removeNSPrefix?: boolean;\n textNodeName?: string;\n arrayPaths?: string[];\n };\n /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */\n _fastXML?: FastXMLParserOptions;\n /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */\n _sax?: SAXParserOptions;\n};\n\n/**\n * Loader for XML files\n */\nexport const XMLLoader = {\n name: 'XML',\n id: 'xml',\n module: 'xml',\n version: VERSION,\n worker: false,\n extensions: ['xml'],\n mimeTypes: ['application/xml', 'text/xml'],\n testText: testXMLFile,\n options: {\n xml: {\n parser: 'fast-xml-parser',\n uncapitalizeKeys: false,\n removeNSPrefix: false,\n textNodeName: 'value',\n arrayPaths: []\n }\n },\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)\n};\n\nfunction testXMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<?xml');\n}\n\nfunction parseTextSync(text: string, options?: XMLLoaderOptions): any {\n const xmlOptions: Required<XMLLoaderOptions['xml']> = {...XMLLoader.options.xml, ...options?.xml};\n switch (xmlOptions.parser) {\n case 'fast-xml-parser':\n const fastXMLOptions: FastXMLParserOptions = {\n // Default FastXML options\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes\n allowBooleanAttributes: true,\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration\n ignoreDeclaration: true,\n\n // XMLLoader Options: Map to FastXMLOptions\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix\n removeNSPrefix: xmlOptions.removeNSPrefix,\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename\n textNodeName: xmlOptions.textNodeName,\n\n isArray: (name: string, jpath: string, isLeafNode: boolean, isAttribute: boolean) => {\n const array = Boolean(xmlOptions?.arrayPaths?.some((path) => jpath === path));\n return array;\n },\n\n // Application overrides\n ...options?._fastXML\n };\n\n const xml = fastParseXML(text, fastXMLOptions);\n\n // Note - could be done with FastXML tag processing\n return xmlOptions.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;\n\n default:\n throw new Error(options?.xml?.parser);\n }\n}\n\nexport const _typecheckXMLLoader: LoaderWithParser = XMLLoader;\n"],"mappings":";;;;;;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAA8D,SAAAE,QAAAC,MAAA,EAAAC,cAAA,QAAAC,IAAA,GAAAC,MAAA,CAAAD,IAAA,CAAAF,MAAA,OAAAG,MAAA,CAAAC,qBAAA,QAAAC,OAAA,GAAAF,MAAA,CAAAC,qBAAA,CAAAJ,MAAA,GAAAC,cAAA,KAAAI,OAAA,GAAAA,OAAA,CAAAC,MAAA,WAAAC,GAAA,WAAAJ,MAAA,CAAAK,wBAAA,CAAAR,MAAA,EAAAO,GAAA,EAAAE,UAAA,OAAAP,IAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,IAAA,EAAAG,OAAA,YAAAH,IAAA;AAAA,SAAAU,cAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,WAAAF,SAAA,CAAAD,CAAA,IAAAC,SAAA,CAAAD,CAAA,QAAAA,CAAA,OAAAf,OAAA,CAAAI,MAAA,CAAAc,MAAA,OAAAC,OAAA,WAAAC,GAAA,QAAAC,gBAAA,CAAAC,OAAA,EAAAR,MAAA,EAAAM,GAAA,EAAAF,MAAA,CAAAE,GAAA,SAAAhB,MAAA,CAAAmB,yBAAA,GAAAnB,MAAA,CAAAoB,gBAAA,CAAAV,MAAA,EAAAV,MAAA,CAAAmB,yBAAA,CAAAL,MAAA,KAAAlB,OAAA,CAAAI,MAAA,CAAAc,MAAA,GAAAC,OAAA,WAAAC,GAAA,IAAAhB,MAAA,CAAAqB,cAAA,CAAAX,MAAA,EAAAM,GAAA,EAAAhB,MAAA,CAAAK,wBAAA,CAAAS,MAAA,EAAAE,GAAA,iBAAAN,MAAA;AAI9D,IAAMY,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,QAAQ;AAqBpE,IAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,KAAK;EACbC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;EAC1CC,QAAQ,EAAEC,WAAW;EACrBC,OAAO,EAAE;IACPC,GAAG,EAAE;MACHC,MAAM,EAAE,iBAAiB;MACzBC,gBAAgB,EAAE,KAAK;MACvBC,cAAc,EAAE,KAAK;MACrBC,YAAY,EAAE,OAAO;MACrBC,UAAU,EAAE;IACd;EACF,CAAC;EACDC,KAAK;IAAA,IAAAC,MAAA,OAAAC,kBAAA,CAAAxB,OAAA,EAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAAE,SAAAC,QAAOC,WAAwB,EAAEb,OAA0B;MAAA,OAAAU,YAAA,CAAAzB,OAAA,CAAA6B,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAAA,OAAAF,QAAA,CAAAG,MAAA,WAChEC,cAAa,CAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACT,WAAW,CAAC,EAAEb,OAAO,CAAC;UAAA;UAAA;YAAA,OAAAgB,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAX,OAAA;IAAA;IAAA,SAAAL,MAAAiB,EAAA,EAAAC,GAAA;MAAA,OAAAjB,MAAA,CAAAjC,KAAA,OAAAI,SAAA;IAAA;IAAA,OAAA4B,KAAA;EAAA;EAC/Da,aAAa,EAAE,SAAAA,cAACM,IAAY,EAAE1B,OAA0B;IAAA,OAAKoB,cAAa,CAACM,IAAI,EAAE1B,OAAO,CAAC;EAAA;AAC3F,CAAC;AAAC2B,OAAA,CAAArC,SAAA,GAAAA,SAAA;AAEF,SAASS,WAAWA,CAAC2B,IAAY,EAAW;EAE1C,OAAOA,IAAI,CAACE,UAAU,CAAC,OAAO,CAAC;AACjC;AAEA,SAASR,cAAaA,CAACM,IAAY,EAAE1B,OAA0B,EAAO;EAAA,IAAA6B,YAAA;EACpE,IAAMC,UAA6C,GAAAtD,aAAA,CAAAA,aAAA,KAAOc,SAAS,CAACU,OAAO,CAACC,GAAG,GAAKD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,GAAG,CAAC;EACjG,QAAQ6B,UAAU,CAAC5B,MAAM;IACvB,KAAK,iBAAiB;MACpB,IAAM6B,cAAoC,GAAAvD,aAAA;QAGxCwD,sBAAsB,EAAE,IAAI;QAE5BC,iBAAiB,EAAE,IAAI;QAKvB7B,cAAc,EAAE0B,UAAU,CAAC1B,cAAc;QAGzCC,YAAY,EAAEyB,UAAU,CAACzB,YAAY;QAErC6B,OAAO,EAAE,SAAAA,QAAC3C,IAAY,EAAE4C,KAAa,EAAEC,UAAmB,EAAEC,WAAoB,EAAK;UAAA,IAAAC,qBAAA;UACnF,IAAMC,KAAK,GAAGC,OAAO,CAACV,UAAU,aAAVA,UAAU,wBAAAQ,qBAAA,GAAVR,UAAU,CAAExB,UAAU,cAAAgC,qBAAA,uBAAtBA,qBAAA,CAAwBG,IAAI,CAAC,UAACC,IAAI;YAAA,OAAKP,KAAK,KAAKO,IAAI;UAAA,EAAC,CAAC;UAC7E,OAAOH,KAAK;QACd;MAAC,GAGEvC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2C,QAAQ,CACrB;MAED,IAAM1C,GAAG,GAAG,IAAA2C,sBAAY,EAAClB,IAAI,EAAEK,cAAc,CAAC;MAG9C,OAAOD,UAAU,CAAC3B,gBAAgB,GAAG,IAAAA,8BAAgB,EAACF,GAAG,CAAC,GAAGA,GAAG;IAElE;MACE,MAAM,IAAI4C,KAAK,CAAC7C,OAAO,aAAPA,OAAO,wBAAA6B,YAAA,GAAP7B,OAAO,CAAEC,GAAG,cAAA4B,YAAA,uBAAZA,YAAA,CAAc3B,MAAM,CAAC;EACzC;AACF;AAEO,IAAM4C,mBAAqC,GAAGxD,SAAS;AAACqC,OAAA,CAAAmB,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"file":"xml-loader.js","names":["_parseXml","require","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","VERSION","XMLLoader","name","id","module","version","worker","extensions","mimeTypes","testText","testXMLFile","options","xml","_parser","uncapitalizeKeys","removeNSPrefix","textNodeName","arrayPaths","parse","_parse","_asyncToGenerator2","_regenerator","mark","_callee","arrayBuffer","wrap","_callee$","_context","prev","next","abrupt","parseXMLSync","TextDecoder","decode","stop","_x","_x2","parseTextSync","text","exports","startsWith"],"sources":["../../src/xml-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ParseXMLOptions} from './lib/parsers/parse-xml';\nimport {parseXMLSync} from './lib/parsers/parse-xml';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type XMLLoaderOptions = LoaderOptions & {\n xml?: ParseXMLOptions;\n};\n\n/**\n * Loader for XML files\n */\nexport const XMLLoader: LoaderWithParser<any, never, XMLLoaderOptions> = {\n name: 'XML',\n id: 'xml',\n module: 'xml',\n version: VERSION,\n worker: false,\n extensions: ['xml'],\n mimeTypes: ['application/xml', 'text/xml'],\n testText: testXMLFile,\n options: {\n xml: {\n _parser: 'fast-xml-parser',\n uncapitalizeKeys: false,\n removeNSPrefix: false,\n textNodeName: 'value',\n arrayPaths: []\n }\n },\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseXMLSync(new TextDecoder().decode(arrayBuffer), {\n ...XMLLoader.options.xml,\n ...options?.xml\n }),\n parseTextSync: (text: string, options?: XMLLoaderOptions) =>\n parseXMLSync(text, {...XMLLoader.options.xml, ...options?.xml})\n};\n\nfunction testXMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<?xml');\n}\n"],"mappings":"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"}
@@ -14,14 +14,15 @@ function testHTMLFile(text) {
14
14
  return text.startsWith('<html');
15
15
  }
16
16
  function parseTextSync(text, options) {
17
+ var _XMLLoader$parseTextS;
17
18
  options = mergeLoaderOptions(options, {
18
19
  xml: {
19
- parser: 'fast-xml-parser'
20
- },
21
- _fastXML: {
22
- htmlEntities: true
20
+ _parser: 'fast-xml-parser',
21
+ _fastXML: {
22
+ htmlEntities: true
23
+ }
23
24
  }
24
25
  });
25
- return XMLLoader.parseTextSync(text, options);
26
+ return (_XMLLoader$parseTextS = XMLLoader.parseTextSync) === null || _XMLLoader$parseTextS === void 0 ? void 0 : _XMLLoader$parseTextS.call(XMLLoader, text, options);
26
27
  }
27
28
  //# sourceMappingURL=html-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"html-loader.js","names":["mergeLoaderOptions","XMLLoader","HTMLLoader","name","id","extensions","mimeTypes","testText","testHTMLFile","parse","arrayBuffer","options","parseTextSync","TextDecoder","decode","text","startsWith","xml","parser","_fastXML","htmlEntities"],"sources":["../../src/html-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {mergeLoaderOptions} from '@loaders.gl/loader-utils';\nimport {XMLLoader, XMLLoaderOptions} from './xml-loader';\n\nexport type HTMLLoaderOptions = XMLLoaderOptions;\n\n/**\n * Loader for HTML files\n * Essentially a copy of the XMLLoader with different mime types, file extensions and content tests.\n * This split enables applications can control whether they want HTML responses to be parsed by the XML loader or not.\n * This loader does not have any additional understanding of the structure of HTML or the document.\n */\nexport const HTMLLoader: LoaderWithParser = {\n ...XMLLoader,\n name: 'HTML',\n id: 'html',\n extensions: ['html', 'htm'],\n mimeTypes: ['text/html'],\n testText: testHTMLFile,\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)\n};\n\nfunction testHTMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<html');\n}\n\nfunction parseTextSync(text: string, options?: XMLLoaderOptions): any {\n // fast-xml-parser can recognize HTML entities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#htmlentities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/5.Entities.md\n options = mergeLoaderOptions(options, {\n xml: {\n parser: 'fast-xml-parser'\n },\n _fastXML: {\n htmlEntities: true\n }\n });\n\n return XMLLoader.parseTextSync(text, options);\n}\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,SAAS,QAAyB,cAAc;AAUxD,OAAO,MAAMC,UAA4B,GAAG;EAC1C,GAAGD,SAAS;EACZE,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,MAAM;EACVC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;EAC3BC,SAAS,EAAE,CAAC,WAAW,CAAC;EACxBC,QAAQ,EAAEC,YAAY;EACtBC,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEC,OAA0B,KAChEC,aAAa,CAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACJ,WAAW,CAAC,EAAEC,OAAO,CAAC;EAC/DC,aAAa,EAAEA,CAACG,IAAY,EAAEJ,OAA0B,KAAKC,aAAa,CAACG,IAAI,EAAEJ,OAAO;AAC1F,CAAC;AAED,SAASH,YAAYA,CAACO,IAAY,EAAW;EAE3C,OAAOA,IAAI,CAACC,UAAU,CAAC,OAAO,CAAC;AACjC;AAEA,SAASJ,aAAaA,CAACG,IAAY,EAAEJ,OAA0B,EAAO;EAIpEA,OAAO,GAAGX,kBAAkB,CAACW,OAAO,EAAE;IACpCM,GAAG,EAAE;MACHC,MAAM,EAAE;IACV,CAAC;IACDC,QAAQ,EAAE;MACRC,YAAY,EAAE;IAChB;EACF,CAAC,CAAC;EAEF,OAAOnB,SAAS,CAACW,aAAa,CAACG,IAAI,EAAEJ,OAAO,CAAC;AAC/C"}
1
+ {"version":3,"file":"html-loader.js","names":["mergeLoaderOptions","XMLLoader","HTMLLoader","name","id","extensions","mimeTypes","testText","testHTMLFile","parse","arrayBuffer","options","parseTextSync","TextDecoder","decode","text","startsWith","_XMLLoader$parseTextS","xml","_parser","_fastXML","htmlEntities","call"],"sources":["../../src/html-loader.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {LoaderWithParser} from '@loaders.gl/loader-utils';\nimport {mergeLoaderOptions} from '@loaders.gl/loader-utils';\nimport {XMLLoader, XMLLoaderOptions} from './xml-loader';\n\nexport type HTMLLoaderOptions = XMLLoaderOptions;\n\n/**\n * Loader for HTML files\n * Essentially a copy of the XMLLoader with different mime types, file extensions and content tests.\n * This split enables applications can control whether they want HTML responses to be parsed by the XML loader or not.\n * This loader does not have any additional understanding of the structure of HTML or the document.\n */\nexport const HTMLLoader: LoaderWithParser = {\n ...XMLLoader,\n name: 'HTML',\n id: 'html',\n extensions: ['html', 'htm'],\n mimeTypes: ['text/html'],\n testText: testHTMLFile,\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)\n};\n\nfunction testHTMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<html');\n}\n\nfunction parseTextSync(text: string, options?: XMLLoaderOptions): any {\n // fast-xml-parser can recognize HTML entities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#htmlentities\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/5.Entities.md\n options = mergeLoaderOptions(options, {\n xml: {\n _parser: 'fast-xml-parser',\n _fastXML: {\n htmlEntities: true\n }\n }\n });\n\n return XMLLoader.parseTextSync?.(text, options);\n}\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,0BAA0B;AAC3D,SAAQC,SAAS,QAAyB,cAAc;AAUxD,OAAO,MAAMC,UAA4B,GAAG;EAC1C,GAAGD,SAAS;EACZE,IAAI,EAAE,MAAM;EACZC,EAAE,EAAE,MAAM;EACVC,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;EAC3BC,SAAS,EAAE,CAAC,WAAW,CAAC;EACxBC,QAAQ,EAAEC,YAAY;EACtBC,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEC,OAA0B,KAChEC,aAAa,CAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACJ,WAAW,CAAC,EAAEC,OAAO,CAAC;EAC/DC,aAAa,EAAEA,CAACG,IAAY,EAAEJ,OAA0B,KAAKC,aAAa,CAACG,IAAI,EAAEJ,OAAO;AAC1F,CAAC;AAED,SAASH,YAAYA,CAACO,IAAY,EAAW;EAE3C,OAAOA,IAAI,CAACC,UAAU,CAAC,OAAO,CAAC;AACjC;AAEA,SAASJ,aAAaA,CAACG,IAAY,EAAEJ,OAA0B,EAAO;EAAA,IAAAM,qBAAA;EAIpEN,OAAO,GAAGX,kBAAkB,CAACW,OAAO,EAAE;IACpCO,GAAG,EAAE;MACHC,OAAO,EAAE,iBAAiB;MAC1BC,QAAQ,EAAE;QACRC,YAAY,EAAE;MAChB;IACF;EACF,CAAC,CAAC;EAEF,QAAAJ,qBAAA,GAAOhB,SAAS,CAACW,aAAa,cAAAK,qBAAA,uBAAvBA,qBAAA,CAAAK,IAAA,CAAArB,SAAS,EAAiBc,IAAI,EAAEJ,OAAO,CAAC;AACjD"}
@@ -1,5 +1,25 @@
1
1
  import { StreamingXMLParser } from './streaming-xml-parser';
2
+ import { uncapitalizeKeys } from '../xml-utils/uncapitalize';
2
3
  import { XMLParser as FastXMLParser } from 'fast-xml-parser';
4
+ export function parseXMLSync(text, options) {
5
+ if (options !== null && options !== void 0 && options._parser && options._parser !== 'fast-xml-parser') {
6
+ throw new Error(options === null || options === void 0 ? void 0 : options._parser);
7
+ }
8
+ const fastXMLOptions = {
9
+ allowBooleanAttributes: true,
10
+ ignoreDeclaration: true,
11
+ removeNSPrefix: options === null || options === void 0 ? void 0 : options.removeNSPrefix,
12
+ textNodeName: options === null || options === void 0 ? void 0 : options.textNodeName,
13
+ isArray: (name, jpath, isLeafNode, isAttribute) => {
14
+ var _options$arrayPaths;
15
+ const array = Boolean(options === null || options === void 0 ? void 0 : (_options$arrayPaths = options.arrayPaths) === null || _options$arrayPaths === void 0 ? void 0 : _options$arrayPaths.some(path => jpath === path));
16
+ return array;
17
+ },
18
+ ...(options === null || options === void 0 ? void 0 : options._fastXML)
19
+ };
20
+ const xml = fastParseXML(text, fastXMLOptions);
21
+ return options !== null && options !== void 0 && options.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;
22
+ }
3
23
  export function fastParseXML(text, options) {
4
24
  const parser = new FastXMLParser({
5
25
  ignoreAttributes: false,
@@ -1 +1 @@
1
- {"version":3,"file":"parse-xml.js","names":["StreamingXMLParser","XMLParser","FastXMLParser","fastParseXML","text","options","parser","ignoreAttributes","attributeNamePrefix","parsedXML","parse","parseXMLInBatches","arguments","length","undefined","strict","write","close","result"],"sources":["../../../../src/lib/parsers/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport {StreamingXMLParser} from './streaming-xml-parser';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\nimport type {X2jOptions} from 'fast-xml-parser';\n\n/** Type for passing through fast-xml-parser options */\nexport type FastXMLParserOptions = Partial<X2jOptions>;\n\nexport function fastParseXML(text: string, options: FastXMLParserOptions): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n ...options\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 StreamingXMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":"AAEA,SAAQA,kBAAkB,QAAO,wBAAwB;AACzD,SAAQC,SAAS,IAAIC,aAAa,QAAO,iBAAiB;AAM1D,OAAO,SAASC,YAAYA,CAACC,IAAY,EAAEC,OAA6B,EAAO;EAC7E,MAAMC,MAAM,GAAG,IAAIJ,aAAa,CAAC;IAC/BK,gBAAgB,EAAE,KAAK;IACvBC,mBAAmB,EAAE,EAAE;IACvB,GAAGH;EACL,CAAC,CAAC;EAEF,MAAMI,SAAS,GAAGH,MAAM,CAACI,KAAK,CAACN,IAAI,CAAC;EAEpC,OAAOK,SAAS;AAClB;AAQA,OAAO,SAASE,iBAAiBA,CAACP,IAAY,EAAqB;EAAA,IAAnBC,OAAO,GAAAO,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC1D,MAAMN,MAAM,GAAG,IAAIN,kBAAkB,CAAC;IACpC,GAAGK,OAAO;IACVU,MAAM,EAAE;EACV,CAAC,CAAC;EAEFT,MAAM,CAACU,KAAK,CAACZ,IAAI,CAAC;EAClBE,MAAM,CAACW,KAAK,CAAC,CAAC;EAEd,OAAOX,MAAM,CAACY,MAAM;AACtB"}
1
+ {"version":3,"file":"parse-xml.js","names":["StreamingXMLParser","uncapitalizeKeys","XMLParser","FastXMLParser","parseXMLSync","text","options","_parser","Error","fastXMLOptions","allowBooleanAttributes","ignoreDeclaration","removeNSPrefix","textNodeName","isArray","name","jpath","isLeafNode","isAttribute","_options$arrayPaths","array","Boolean","arrayPaths","some","path","_fastXML","xml","fastParseXML","parser","ignoreAttributes","attributeNamePrefix","parsedXML","parse","parseXMLInBatches","arguments","length","undefined","strict","write","close","result"],"sources":["../../../../src/lib/parsers/parse-xml.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nimport type {SAXParserOptions} from '../../sax-ts/sax';\nimport {StreamingXMLParser} from './streaming-xml-parser';\nimport {uncapitalizeKeys} from '../xml-utils/uncapitalize';\nimport {XMLParser as FastXMLParser} from 'fast-xml-parser';\nimport type {X2jOptions} from 'fast-xml-parser';\n\nexport type ParseXMLOptions = {\n /** XML is typically PascalCase, JavaScript prefects camelCase */\n uncapitalizeKeys?: boolean;\n removeNSPrefix?: boolean;\n textNodeName?: string;\n arrayPaths?: string[];\n\n // NOTE: Only fast-xml-parser is implemented\n _parser?: 'fast-xml-parser' | 'sax';\n /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */\n _fastXML?: _FastParseXMLOptions;\n /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */\n _sax?: SAXParserOptions;\n};\n\n/** Type for passing through fast-xml-parser options */\nexport type _FastParseXMLOptions = Partial<X2jOptions>;\n\nexport function parseXMLSync(text: string, options?: ParseXMLOptions): any {\n if (options?._parser && options._parser !== 'fast-xml-parser') {\n throw new Error(options?._parser);\n }\n\n const fastXMLOptions: _FastParseXMLOptions = {\n // Default FastXML options\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes\n allowBooleanAttributes: true,\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration\n ignoreDeclaration: true,\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix\n removeNSPrefix: options?.removeNSPrefix,\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename\n textNodeName: options?.textNodeName,\n\n // Let's application specify keys that are always arrays\n isArray: (name: string, jpath: string, isLeafNode: boolean, isAttribute: boolean) => {\n const array = Boolean(options?.arrayPaths?.some((path) => jpath === path));\n return array;\n },\n\n // Application overrides\n ...options?._fastXML\n };\n\n const xml = fastParseXML(text, fastXMLOptions);\n\n // Note - could be done with FastXML tag processing\n return options?.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;\n}\n\nexport function fastParseXML(text: string, options: _FastParseXMLOptions): any {\n const parser = new FastXMLParser({\n ignoreAttributes: false,\n attributeNamePrefix: '',\n ...options\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 StreamingXMLParser({\n ...options,\n strict: true\n });\n\n parser.write(text);\n parser.close();\n\n return parser.result;\n}\n"],"mappings":"AAGA,SAAQA,kBAAkB,QAAO,wBAAwB;AACzD,SAAQC,gBAAgB,QAAO,2BAA2B;AAC1D,SAAQC,SAAS,IAAIC,aAAa,QAAO,iBAAiB;AAqB1D,OAAO,SAASC,YAAYA,CAACC,IAAY,EAAEC,OAAyB,EAAO;EACzE,IAAIA,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEC,OAAO,IAAID,OAAO,CAACC,OAAO,KAAK,iBAAiB,EAAE;IAC7D,MAAM,IAAIC,KAAK,CAACF,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,OAAO,CAAC;EACnC;EAEA,MAAME,cAAoC,GAAG;IAG3CC,sBAAsB,EAAE,IAAI;IAE5BC,iBAAiB,EAAE,IAAI;IAGvBC,cAAc,EAAEN,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEM,cAAc;IAGvCC,YAAY,EAAEP,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEO,YAAY;IAGnCC,OAAO,EAAEA,CAACC,IAAY,EAAEC,KAAa,EAAEC,UAAmB,EAAEC,WAAoB,KAAK;MAAA,IAAAC,mBAAA;MACnF,MAAMC,KAAK,GAAGC,OAAO,CAACf,OAAO,aAAPA,OAAO,wBAAAa,mBAAA,GAAPb,OAAO,CAAEgB,UAAU,cAAAH,mBAAA,uBAAnBA,mBAAA,CAAqBI,IAAI,CAAEC,IAAI,IAAKR,KAAK,KAAKQ,IAAI,CAAC,CAAC;MAC1E,OAAOJ,KAAK;IACd,CAAC;IAGD,IAAGd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEmB,QAAQ;EACtB,CAAC;EAED,MAAMC,GAAG,GAAGC,YAAY,CAACtB,IAAI,EAAEI,cAAc,CAAC;EAG9C,OAAOH,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAEL,gBAAgB,GAAGA,gBAAgB,CAACyB,GAAG,CAAC,GAAGA,GAAG;AAChE;AAEA,OAAO,SAASC,YAAYA,CAACtB,IAAY,EAAEC,OAA6B,EAAO;EAC7E,MAAMsB,MAAM,GAAG,IAAIzB,aAAa,CAAC;IAC/B0B,gBAAgB,EAAE,KAAK;IACvBC,mBAAmB,EAAE,EAAE;IACvB,GAAGxB;EACL,CAAC,CAAC;EAEF,MAAMyB,SAAS,GAAGH,MAAM,CAACI,KAAK,CAAC3B,IAAI,CAAC;EAEpC,OAAO0B,SAAS;AAClB;AAQA,OAAO,SAASE,iBAAiBA,CAAC5B,IAAY,EAAqB;EAAA,IAAnBC,OAAO,GAAA4B,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;EAC1D,MAAMN,MAAM,GAAG,IAAI5B,kBAAkB,CAAC;IACpC,GAAGM,OAAO;IACV+B,MAAM,EAAE;EACV,CAAC,CAAC;EAEFT,MAAM,CAACU,KAAK,CAACjC,IAAI,CAAC;EAClBuB,MAAM,CAACW,KAAK,CAAC,CAAC;EAEd,OAAOX,MAAM,CAACY,MAAM;AACtB"}
@@ -1,6 +1,5 @@
1
- import { fastParseXML } from './lib/parsers/parse-xml';
2
- import { uncapitalizeKeys } from './lib/xml-utils/uncapitalize';
3
- const VERSION = typeof "3.4.3" !== 'undefined' ? "3.4.3" : 'latest';
1
+ import { parseXMLSync } from './lib/parsers/parse-xml';
2
+ const VERSION = typeof "4.0.0-alpha.7" !== 'undefined' ? "4.0.0-alpha.7" : 'latest';
4
3
  export const XMLLoader = {
5
4
  name: 'XML',
6
5
  id: 'xml',
@@ -12,44 +11,23 @@ export const XMLLoader = {
12
11
  testText: testXMLFile,
13
12
  options: {
14
13
  xml: {
15
- parser: 'fast-xml-parser',
14
+ _parser: 'fast-xml-parser',
16
15
  uncapitalizeKeys: false,
17
16
  removeNSPrefix: false,
18
17
  textNodeName: 'value',
19
18
  arrayPaths: []
20
19
  }
21
20
  },
22
- parse: async (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),
23
- parseTextSync: (text, options) => parseTextSync(text, options)
21
+ parse: async (arrayBuffer, options) => parseXMLSync(new TextDecoder().decode(arrayBuffer), {
22
+ ...XMLLoader.options.xml,
23
+ ...(options === null || options === void 0 ? void 0 : options.xml)
24
+ }),
25
+ parseTextSync: (text, options) => parseXMLSync(text, {
26
+ ...XMLLoader.options.xml,
27
+ ...(options === null || options === void 0 ? void 0 : options.xml)
28
+ })
24
29
  };
25
30
  function testXMLFile(text) {
26
31
  return text.startsWith('<?xml');
27
32
  }
28
- function parseTextSync(text, options) {
29
- var _options$xml;
30
- const xmlOptions = {
31
- ...XMLLoader.options.xml,
32
- ...(options === null || options === void 0 ? void 0 : options.xml)
33
- };
34
- switch (xmlOptions.parser) {
35
- case 'fast-xml-parser':
36
- const fastXMLOptions = {
37
- allowBooleanAttributes: true,
38
- ignoreDeclaration: true,
39
- removeNSPrefix: xmlOptions.removeNSPrefix,
40
- textNodeName: xmlOptions.textNodeName,
41
- isArray: (name, jpath, isLeafNode, isAttribute) => {
42
- var _xmlOptions$arrayPath;
43
- const array = Boolean(xmlOptions === null || xmlOptions === void 0 ? void 0 : (_xmlOptions$arrayPath = xmlOptions.arrayPaths) === null || _xmlOptions$arrayPath === void 0 ? void 0 : _xmlOptions$arrayPath.some(path => jpath === path));
44
- return array;
45
- },
46
- ...(options === null || options === void 0 ? void 0 : options._fastXML)
47
- };
48
- const xml = fastParseXML(text, fastXMLOptions);
49
- return xmlOptions.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;
50
- default:
51
- throw new Error(options === null || options === void 0 ? void 0 : (_options$xml = options.xml) === null || _options$xml === void 0 ? void 0 : _options$xml.parser);
52
- }
53
- }
54
- export const _typecheckXMLLoader = XMLLoader;
55
33
  //# sourceMappingURL=xml-loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-loader.js","names":["fastParseXML","uncapitalizeKeys","VERSION","XMLLoader","name","id","module","version","worker","extensions","mimeTypes","testText","testXMLFile","options","xml","parser","removeNSPrefix","textNodeName","arrayPaths","parse","arrayBuffer","parseTextSync","TextDecoder","decode","text","startsWith","_options$xml","xmlOptions","fastXMLOptions","allowBooleanAttributes","ignoreDeclaration","isArray","jpath","isLeafNode","isAttribute","_xmlOptions$arrayPath","array","Boolean","some","path","_fastXML","Error","_typecheckXMLLoader"],"sources":["../../src/xml-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {SAXParserOptions} from './sax-ts/sax';\nimport {fastParseXML, FastXMLParserOptions} from './lib/parsers/parse-xml';\nimport {uncapitalizeKeys} from './lib/xml-utils/uncapitalize';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type XMLLoaderOptions = LoaderOptions & {\n xml?: {\n // TODO - type this harder\n parser?: 'fast-xml-parser' | string;\n /** XML is typically PascalCase, JavaScript prefects camelCase */\n uncapitalizeKeys?: boolean;\n removeNSPrefix?: boolean;\n textNodeName?: string;\n arrayPaths?: string[];\n };\n /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */\n _fastXML?: FastXMLParserOptions;\n /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */\n _sax?: SAXParserOptions;\n};\n\n/**\n * Loader for XML files\n */\nexport const XMLLoader = {\n name: 'XML',\n id: 'xml',\n module: 'xml',\n version: VERSION,\n worker: false,\n extensions: ['xml'],\n mimeTypes: ['application/xml', 'text/xml'],\n testText: testXMLFile,\n options: {\n xml: {\n parser: 'fast-xml-parser',\n uncapitalizeKeys: false,\n removeNSPrefix: false,\n textNodeName: 'value',\n arrayPaths: []\n }\n },\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseTextSync(new TextDecoder().decode(arrayBuffer), options),\n parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)\n};\n\nfunction testXMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<?xml');\n}\n\nfunction parseTextSync(text: string, options?: XMLLoaderOptions): any {\n const xmlOptions: Required<XMLLoaderOptions['xml']> = {...XMLLoader.options.xml, ...options?.xml};\n switch (xmlOptions.parser) {\n case 'fast-xml-parser':\n const fastXMLOptions: FastXMLParserOptions = {\n // Default FastXML options\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes\n allowBooleanAttributes: true,\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration\n ignoreDeclaration: true,\n\n // XMLLoader Options: Map to FastXMLOptions\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix\n removeNSPrefix: xmlOptions.removeNSPrefix,\n\n // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename\n textNodeName: xmlOptions.textNodeName,\n\n isArray: (name: string, jpath: string, isLeafNode: boolean, isAttribute: boolean) => {\n const array = Boolean(xmlOptions?.arrayPaths?.some((path) => jpath === path));\n return array;\n },\n\n // Application overrides\n ...options?._fastXML\n };\n\n const xml = fastParseXML(text, fastXMLOptions);\n\n // Note - could be done with FastXML tag processing\n return xmlOptions.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;\n\n default:\n throw new Error(options?.xml?.parser);\n }\n}\n\nexport const _typecheckXMLLoader: LoaderWithParser = XMLLoader;\n"],"mappings":"AAEA,SAAQA,YAAY,QAA6B,yBAAyB;AAC1E,SAAQC,gBAAgB,QAAO,8BAA8B;AAI7D,MAAMC,OAAO,GAAG,cAAkB,KAAK,WAAW,aAAiB,QAAQ;AAqB3E,OAAO,MAAMC,SAAS,GAAG;EACvBC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,KAAK;EACbC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;EAC1CC,QAAQ,EAAEC,WAAW;EACrBC,OAAO,EAAE;IACPC,GAAG,EAAE;MACHC,MAAM,EAAE,iBAAiB;MACzBd,gBAAgB,EAAE,KAAK;MACvBe,cAAc,EAAE,KAAK;MACrBC,YAAY,EAAE,OAAO;MACrBC,UAAU,EAAE;IACd;EACF,CAAC;EACDC,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAEP,OAA0B,KAChEQ,aAAa,CAAC,IAAIC,WAAW,CAAC,CAAC,CAACC,MAAM,CAACH,WAAW,CAAC,EAAEP,OAAO,CAAC;EAC/DQ,aAAa,EAAEA,CAACG,IAAY,EAAEX,OAA0B,KAAKQ,aAAa,CAACG,IAAI,EAAEX,OAAO;AAC1F,CAAC;AAED,SAASD,WAAWA,CAACY,IAAY,EAAW;EAE1C,OAAOA,IAAI,CAACC,UAAU,CAAC,OAAO,CAAC;AACjC;AAEA,SAASJ,aAAaA,CAACG,IAAY,EAAEX,OAA0B,EAAO;EAAA,IAAAa,YAAA;EACpE,MAAMC,UAA6C,GAAG;IAAC,GAAGxB,SAAS,CAACU,OAAO,CAACC,GAAG;IAAE,IAAGD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,GAAG;EAAA,CAAC;EACjG,QAAQa,UAAU,CAACZ,MAAM;IACvB,KAAK,iBAAiB;MACpB,MAAMa,cAAoC,GAAG;QAG3CC,sBAAsB,EAAE,IAAI;QAE5BC,iBAAiB,EAAE,IAAI;QAKvBd,cAAc,EAAEW,UAAU,CAACX,cAAc;QAGzCC,YAAY,EAAEU,UAAU,CAACV,YAAY;QAErCc,OAAO,EAAEA,CAAC3B,IAAY,EAAE4B,KAAa,EAAEC,UAAmB,EAAEC,WAAoB,KAAK;UAAA,IAAAC,qBAAA;UACnF,MAAMC,KAAK,GAAGC,OAAO,CAACV,UAAU,aAAVA,UAAU,wBAAAQ,qBAAA,GAAVR,UAAU,CAAET,UAAU,cAAAiB,qBAAA,uBAAtBA,qBAAA,CAAwBG,IAAI,CAAEC,IAAI,IAAKP,KAAK,KAAKO,IAAI,CAAC,CAAC;UAC7E,OAAOH,KAAK;QACd,CAAC;QAGD,IAAGvB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE2B,QAAQ;MACtB,CAAC;MAED,MAAM1B,GAAG,GAAGd,YAAY,CAACwB,IAAI,EAAEI,cAAc,CAAC;MAG9C,OAAOD,UAAU,CAAC1B,gBAAgB,GAAGA,gBAAgB,CAACa,GAAG,CAAC,GAAGA,GAAG;IAElE;MACE,MAAM,IAAI2B,KAAK,CAAC5B,OAAO,aAAPA,OAAO,wBAAAa,YAAA,GAAPb,OAAO,CAAEC,GAAG,cAAAY,YAAA,uBAAZA,YAAA,CAAcX,MAAM,CAAC;EACzC;AACF;AAEA,OAAO,MAAM2B,mBAAqC,GAAGvC,SAAS"}
1
+ {"version":3,"file":"xml-loader.js","names":["parseXMLSync","VERSION","XMLLoader","name","id","module","version","worker","extensions","mimeTypes","testText","testXMLFile","options","xml","_parser","uncapitalizeKeys","removeNSPrefix","textNodeName","arrayPaths","parse","arrayBuffer","TextDecoder","decode","parseTextSync","text","startsWith"],"sources":["../../src/xml-loader.ts"],"sourcesContent":["import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';\nimport type {ParseXMLOptions} from './lib/parsers/parse-xml';\nimport {parseXMLSync} from './lib/parsers/parse-xml';\n\n// __VERSION__ is injected by babel-plugin-version-inline\n// @ts-ignore TS2304: Cannot find name '__VERSION__'.\nconst VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';\n\nexport type XMLLoaderOptions = LoaderOptions & {\n xml?: ParseXMLOptions;\n};\n\n/**\n * Loader for XML files\n */\nexport const XMLLoader: LoaderWithParser<any, never, XMLLoaderOptions> = {\n name: 'XML',\n id: 'xml',\n module: 'xml',\n version: VERSION,\n worker: false,\n extensions: ['xml'],\n mimeTypes: ['application/xml', 'text/xml'],\n testText: testXMLFile,\n options: {\n xml: {\n _parser: 'fast-xml-parser',\n uncapitalizeKeys: false,\n removeNSPrefix: false,\n textNodeName: 'value',\n arrayPaths: []\n }\n },\n parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>\n parseXMLSync(new TextDecoder().decode(arrayBuffer), {\n ...XMLLoader.options.xml,\n ...options?.xml\n }),\n parseTextSync: (text: string, options?: XMLLoaderOptions) =>\n parseXMLSync(text, {...XMLLoader.options.xml, ...options?.xml})\n};\n\nfunction testXMLFile(text: string): boolean {\n // TODO - There could be space first.\n return text.startsWith('<?xml');\n}\n"],"mappings":"AAEA,SAAQA,YAAY,QAAO,yBAAyB;AAIpD,MAAMC,OAAO,GAAG,sBAAkB,KAAK,WAAW,qBAAiB,QAAQ;AAS3E,OAAO,MAAMC,SAAyD,GAAG;EACvEC,IAAI,EAAE,KAAK;EACXC,EAAE,EAAE,KAAK;EACTC,MAAM,EAAE,KAAK;EACbC,OAAO,EAAEL,OAAO;EAChBM,MAAM,EAAE,KAAK;EACbC,UAAU,EAAE,CAAC,KAAK,CAAC;EACnBC,SAAS,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC;EAC1CC,QAAQ,EAAEC,WAAW;EACrBC,OAAO,EAAE;IACPC,GAAG,EAAE;MACHC,OAAO,EAAE,iBAAiB;MAC1BC,gBAAgB,EAAE,KAAK;MACvBC,cAAc,EAAE,KAAK;MACrBC,YAAY,EAAE,OAAO;MACrBC,UAAU,EAAE;IACd;EACF,CAAC;EACDC,KAAK,EAAE,MAAAA,CAAOC,WAAwB,EAAER,OAA0B,KAChEZ,YAAY,CAAC,IAAIqB,WAAW,CAAC,CAAC,CAACC,MAAM,CAACF,WAAW,CAAC,EAAE;IAClD,GAAGlB,SAAS,CAACU,OAAO,CAACC,GAAG;IACxB,IAAGD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,GAAG;EACjB,CAAC,CAAC;EACJU,aAAa,EAAEA,CAACC,IAAY,EAAEZ,OAA0B,KACtDZ,YAAY,CAACwB,IAAI,EAAE;IAAC,GAAGtB,SAAS,CAACU,OAAO,CAACC,GAAG;IAAE,IAAGD,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEC,GAAG;EAAA,CAAC;AAClE,CAAC;AAED,SAASF,WAAWA,CAACa,IAAY,EAAW;EAE1C,OAAOA,IAAI,CAACC,UAAU,CAAC,OAAO,CAAC;AACjC"}
@@ -30,11 +30,11 @@ function parseTextSync(text, options) {
30
30
  // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/5.Entities.md
31
31
  options = (0, loader_utils_1.mergeLoaderOptions)(options, {
32
32
  xml: {
33
- parser: 'fast-xml-parser'
34
- },
35
- _fastXML: {
36
- htmlEntities: true
33
+ _parser: 'fast-xml-parser',
34
+ _fastXML: {
35
+ htmlEntities: true
36
+ }
37
37
  }
38
38
  });
39
- return xml_loader_1.XMLLoader.parseTextSync(text, options);
39
+ return xml_loader_1.XMLLoader.parseTextSync?.(text, options);
40
40
  }
@@ -1,7 +1,21 @@
1
+ import type { SAXParserOptions } from '../../sax-ts/sax';
1
2
  import type { X2jOptions } from 'fast-xml-parser';
3
+ export type ParseXMLOptions = {
4
+ /** XML is typically PascalCase, JavaScript prefects camelCase */
5
+ uncapitalizeKeys?: boolean;
6
+ removeNSPrefix?: boolean;
7
+ textNodeName?: string;
8
+ arrayPaths?: string[];
9
+ _parser?: 'fast-xml-parser' | 'sax';
10
+ /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */
11
+ _fastXML?: _FastParseXMLOptions;
12
+ /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */
13
+ _sax?: SAXParserOptions;
14
+ };
2
15
  /** Type for passing through fast-xml-parser options */
3
- export type FastXMLParserOptions = Partial<X2jOptions>;
4
- export declare function fastParseXML(text: string, options: FastXMLParserOptions): any;
16
+ export type _FastParseXMLOptions = Partial<X2jOptions>;
17
+ export declare function parseXMLSync(text: string, options?: ParseXMLOptions): any;
18
+ export declare function fastParseXML(text: string, options: _FastParseXMLOptions): any;
5
19
  /**
6
20
  * @todo Build a streaming XML parser based on sax-js
7
21
  * @param text
@@ -1 +1 @@
1
- {"version":3,"file":"parse-xml.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-xml.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEhD,uDAAuD;AACvD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,GAAG,CAU7E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,GAAG,CAUjE"}
1
+ {"version":3,"file":"parse-xml.d.ts","sourceRoot":"","sources":["../../../src/lib/parsers/parse-xml.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAIvD,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAEhD,MAAM,MAAM,eAAe,GAAG;IAC5B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAGtB,OAAO,CAAC,EAAE,iBAAiB,GAAG,KAAK,CAAC;IACpC,uFAAuF;IACvF,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,2FAA2F;IAC3F,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF,uDAAuD;AACvD,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,GAAG,CAgCzE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,GAAG,CAU7E;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,KAAK,GAAG,GAAG,CAUjE"}
@@ -1,9 +1,37 @@
1
1
  "use strict";
2
2
  // loaders.gl, MIT license
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.parseXMLInBatches = exports.fastParseXML = void 0;
4
+ exports.parseXMLInBatches = exports.fastParseXML = exports.parseXMLSync = void 0;
5
5
  const streaming_xml_parser_1 = require("./streaming-xml-parser");
6
+ const uncapitalize_1 = require("../xml-utils/uncapitalize");
6
7
  const fast_xml_parser_1 = require("fast-xml-parser");
8
+ function parseXMLSync(text, options) {
9
+ if (options?._parser && options._parser !== 'fast-xml-parser') {
10
+ throw new Error(options?._parser);
11
+ }
12
+ const fastXMLOptions = {
13
+ // Default FastXML options
14
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes
15
+ allowBooleanAttributes: true,
16
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration
17
+ ignoreDeclaration: true,
18
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix
19
+ removeNSPrefix: options?.removeNSPrefix,
20
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename
21
+ textNodeName: options?.textNodeName,
22
+ // Let's application specify keys that are always arrays
23
+ isArray: (name, jpath, isLeafNode, isAttribute) => {
24
+ const array = Boolean(options?.arrayPaths?.some((path) => jpath === path));
25
+ return array;
26
+ },
27
+ // Application overrides
28
+ ...options?._fastXML
29
+ };
30
+ const xml = fastParseXML(text, fastXMLOptions);
31
+ // Note - could be done with FastXML tag processing
32
+ return options?.uncapitalizeKeys ? (0, uncapitalize_1.uncapitalizeKeys)(xml) : xml;
33
+ }
34
+ exports.parseXMLSync = parseXMLSync;
7
35
  function fastParseXML(text, options) {
8
36
  const parser = new fast_xml_parser_1.XMLParser({
9
37
  ignoreAttributes: false,
@@ -1,45 +1,10 @@
1
1
  import type { LoaderWithParser, LoaderOptions } from '@loaders.gl/loader-utils';
2
- import type { SAXParserOptions } from './sax-ts/sax';
3
- import { FastXMLParserOptions } from './lib/parsers/parse-xml';
2
+ import type { ParseXMLOptions } from './lib/parsers/parse-xml';
4
3
  export type XMLLoaderOptions = LoaderOptions & {
5
- xml?: {
6
- parser?: 'fast-xml-parser' | string;
7
- /** XML is typically PascalCase, JavaScript prefects camelCase */
8
- uncapitalizeKeys?: boolean;
9
- removeNSPrefix?: boolean;
10
- textNodeName?: string;
11
- arrayPaths?: string[];
12
- };
13
- /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */
14
- _fastXML?: FastXMLParserOptions;
15
- /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */
16
- _sax?: SAXParserOptions;
4
+ xml?: ParseXMLOptions;
17
5
  };
18
6
  /**
19
7
  * Loader for XML files
20
8
  */
21
- export declare const XMLLoader: {
22
- name: string;
23
- id: string;
24
- module: string;
25
- version: any;
26
- worker: boolean;
27
- extensions: string[];
28
- mimeTypes: string[];
29
- testText: typeof testXMLFile;
30
- options: {
31
- xml: {
32
- parser: string;
33
- uncapitalizeKeys: boolean;
34
- removeNSPrefix: boolean;
35
- textNodeName: string;
36
- arrayPaths: never[];
37
- };
38
- };
39
- parse: (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) => Promise<any>;
40
- parseTextSync: (text: string, options?: XMLLoaderOptions) => any;
41
- };
42
- declare function testXMLFile(text: string): boolean;
43
- export declare const _typecheckXMLLoader: LoaderWithParser;
44
- export {};
9
+ export declare const XMLLoader: LoaderWithParser<any, never, XMLLoaderOptions>;
45
10
  //# sourceMappingURL=xml-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-loader.d.ts","sourceRoot":"","sources":["../src/xml-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AACnD,OAAO,EAAe,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAO3E,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE;QAEJ,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC;QACpC,iEAAiE;QACjE,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;IACF,uFAAuF;IACvF,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,2FAA2F;IAC3F,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;yBAkBO,WAAW,YAAY,gBAAgB;0BAE5C,MAAM,YAAY,gBAAgB;CACzD,CAAC;AAEF,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG1C;AAwCD,eAAO,MAAM,mBAAmB,EAAE,gBAA4B,CAAC"}
1
+ {"version":3,"file":"xml-loader.d.ts","sourceRoot":"","sources":["../src/xml-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,gBAAgB,EAAE,aAAa,EAAC,MAAM,0BAA0B,CAAC;AAC9E,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAO7D,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAC7C,GAAG,CAAC,EAAE,eAAe,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAyBpE,CAAC"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._typecheckXMLLoader = exports.XMLLoader = void 0;
3
+ exports.XMLLoader = void 0;
4
4
  const parse_xml_1 = require("./lib/parsers/parse-xml");
5
- const uncapitalize_1 = require("./lib/xml-utils/uncapitalize");
6
5
  // __VERSION__ is injected by babel-plugin-version-inline
7
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
7
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
@@ -20,47 +19,20 @@ exports.XMLLoader = {
20
19
  testText: testXMLFile,
21
20
  options: {
22
21
  xml: {
23
- parser: 'fast-xml-parser',
22
+ _parser: 'fast-xml-parser',
24
23
  uncapitalizeKeys: false,
25
24
  removeNSPrefix: false,
26
25
  textNodeName: 'value',
27
26
  arrayPaths: []
28
27
  }
29
28
  },
30
- parse: async (arrayBuffer, options) => parseTextSync(new TextDecoder().decode(arrayBuffer), options),
31
- parseTextSync: (text, options) => parseTextSync(text, options)
29
+ parse: async (arrayBuffer, options) => (0, parse_xml_1.parseXMLSync)(new TextDecoder().decode(arrayBuffer), {
30
+ ...exports.XMLLoader.options.xml,
31
+ ...options?.xml
32
+ }),
33
+ parseTextSync: (text, options) => (0, parse_xml_1.parseXMLSync)(text, { ...exports.XMLLoader.options.xml, ...options?.xml })
32
34
  };
33
35
  function testXMLFile(text) {
34
36
  // TODO - There could be space first.
35
37
  return text.startsWith('<?xml');
36
38
  }
37
- function parseTextSync(text, options) {
38
- const xmlOptions = { ...exports.XMLLoader.options.xml, ...options?.xml };
39
- switch (xmlOptions.parser) {
40
- case 'fast-xml-parser':
41
- const fastXMLOptions = {
42
- // Default FastXML options
43
- // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes
44
- allowBooleanAttributes: true,
45
- // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration
46
- ignoreDeclaration: true,
47
- // XMLLoader Options: Map to FastXMLOptions
48
- // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix
49
- removeNSPrefix: xmlOptions.removeNSPrefix,
50
- // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename
51
- textNodeName: xmlOptions.textNodeName,
52
- isArray: (name, jpath, isLeafNode, isAttribute) => {
53
- const array = Boolean(xmlOptions?.arrayPaths?.some((path) => jpath === path));
54
- return array;
55
- },
56
- // Application overrides
57
- ...options?._fastXML
58
- };
59
- const xml = (0, parse_xml_1.fastParseXML)(text, fastXMLOptions);
60
- // Note - could be done with FastXML tag processing
61
- return xmlOptions.uncapitalizeKeys ? (0, uncapitalize_1.uncapitalizeKeys)(xml) : xml;
62
- default:
63
- throw new Error(options?.xml?.parser);
64
- }
65
- }
66
- exports._typecheckXMLLoader = exports.XMLLoader;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loaders.gl/xml",
3
- "version": "3.4.3",
3
+ "version": "4.0.0-alpha.7",
4
4
  "description": "Framework-independent loaders for the XML (eXtensible Markup Language) format",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -33,12 +33,12 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@babel/runtime": "^7.3.1",
36
- "@loaders.gl/loader-utils": "3.4.3",
37
- "@loaders.gl/schema": "3.4.3",
36
+ "@loaders.gl/loader-utils": "4.0.0-alpha.7",
37
+ "@loaders.gl/schema": "4.0.0-alpha.7",
38
38
  "fast-xml-parser": "^4.1.3"
39
39
  },
40
40
  "devDependencies": {
41
41
  "xmldom": "0.6.0"
42
42
  },
43
- "gitHead": "e60626daeaec1e08eae0009668736f85410f8323"
43
+ "gitHead": "afb59c4d8e5d8ebb9c28f111cb0c96c5527d0ffd"
44
44
  }
@@ -35,12 +35,12 @@ function parseTextSync(text: string, options?: XMLLoaderOptions): any {
35
35
  // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/5.Entities.md
36
36
  options = mergeLoaderOptions(options, {
37
37
  xml: {
38
- parser: 'fast-xml-parser'
39
- },
40
- _fastXML: {
41
- htmlEntities: true
38
+ _parser: 'fast-xml-parser',
39
+ _fastXML: {
40
+ htmlEntities: true
41
+ }
42
42
  }
43
43
  });
44
44
 
45
- return XMLLoader.parseTextSync(text, options);
45
+ return XMLLoader.parseTextSync?.(text, options);
46
46
  }
@@ -1,13 +1,64 @@
1
1
  // loaders.gl, MIT license
2
2
 
3
+ import type {SAXParserOptions} from '../../sax-ts/sax';
3
4
  import {StreamingXMLParser} from './streaming-xml-parser';
5
+ import {uncapitalizeKeys} from '../xml-utils/uncapitalize';
4
6
  import {XMLParser as FastXMLParser} from 'fast-xml-parser';
5
7
  import type {X2jOptions} from 'fast-xml-parser';
6
8
 
9
+ export type ParseXMLOptions = {
10
+ /** XML is typically PascalCase, JavaScript prefects camelCase */
11
+ uncapitalizeKeys?: boolean;
12
+ removeNSPrefix?: boolean;
13
+ textNodeName?: string;
14
+ arrayPaths?: string[];
15
+
16
+ // NOTE: Only fast-xml-parser is implemented
17
+ _parser?: 'fast-xml-parser' | 'sax';
18
+ /** @deprecated Experimental, passes options to fast-xml-parser, IF it is being used */
19
+ _fastXML?: _FastParseXMLOptions;
20
+ /** @deprecated Experimental, passes options to the SAX XML parser, IF it is being used. */
21
+ _sax?: SAXParserOptions;
22
+ };
23
+
7
24
  /** Type for passing through fast-xml-parser options */
8
- export type FastXMLParserOptions = Partial<X2jOptions>;
25
+ export type _FastParseXMLOptions = Partial<X2jOptions>;
26
+
27
+ export function parseXMLSync(text: string, options?: ParseXMLOptions): any {
28
+ if (options?._parser && options._parser !== 'fast-xml-parser') {
29
+ throw new Error(options?._parser);
30
+ }
31
+
32
+ const fastXMLOptions: _FastParseXMLOptions = {
33
+ // Default FastXML options
34
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#allowbooleanattributes
35
+ allowBooleanAttributes: true,
36
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#ignoredeclaration
37
+ ignoreDeclaration: true,
38
+
39
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#removensprefix
40
+ removeNSPrefix: options?.removeNSPrefix,
41
+
42
+ // https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/docs/v4/2.XMLparseOptions.md#textnodename
43
+ textNodeName: options?.textNodeName,
44
+
45
+ // Let's application specify keys that are always arrays
46
+ isArray: (name: string, jpath: string, isLeafNode: boolean, isAttribute: boolean) => {
47
+ const array = Boolean(options?.arrayPaths?.some((path) => jpath === path));
48
+ return array;
49
+ },
50
+
51
+ // Application overrides
52
+ ...options?._fastXML
53
+ };
54
+
55
+ const xml = fastParseXML(text, fastXMLOptions);
56
+
57
+ // Note - could be done with FastXML tag processing
58
+ return options?.uncapitalizeKeys ? uncapitalizeKeys(xml) : xml;
59
+ }
9
60
 
10
- export function fastParseXML(text: string, options: FastXMLParserOptions): any {
61
+ export function fastParseXML(text: string, options: _FastParseXMLOptions): any {
11
62
  const parser = new FastXMLParser({
12
63
  ignoreAttributes: false,
13
64
  attributeNamePrefix: '',
package/src/xml-loader.ts CHANGED
@@ -1,32 +1,19 @@
1
1
  import type {LoaderWithParser, LoaderOptions} from '@loaders.gl/loader-utils';
2
- import type {SAXParserOptions} from './sax-ts/sax';
3
- import {fastParseXML, FastXMLParserOptions} from './lib/parsers/parse-xml';
4
- import {uncapitalizeKeys} from './lib/xml-utils/uncapitalize';
2
+ import type {ParseXMLOptions} from './lib/parsers/parse-xml';
3
+ import {parseXMLSync} from './lib/parsers/parse-xml';
5
4
 
6
5
  // __VERSION__ is injected by babel-plugin-version-inline
7
6
  // @ts-ignore TS2304: Cannot find name '__VERSION__'.
8
7
  const VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : 'latest';
9
8
 
10
9
  export type XMLLoaderOptions = LoaderOptions & {
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;
10
+ xml?: ParseXMLOptions;
24
11
  };
25
12
 
26
13
  /**
27
14
  * Loader for XML files
28
15
  */
29
- export const XMLLoader = {
16
+ export const XMLLoader: LoaderWithParser<any, never, XMLLoaderOptions> = {
30
17
  name: 'XML',
31
18
  id: 'xml',
32
19
  module: 'xml',
@@ -37,7 +24,7 @@ export const XMLLoader = {
37
24
  testText: testXMLFile,
38
25
  options: {
39
26
  xml: {
40
- parser: 'fast-xml-parser',
27
+ _parser: 'fast-xml-parser',
41
28
  uncapitalizeKeys: false,
42
29
  removeNSPrefix: false,
43
30
  textNodeName: 'value',
@@ -45,51 +32,15 @@ export const XMLLoader = {
45
32
  }
46
33
  },
47
34
  parse: async (arrayBuffer: ArrayBuffer, options?: XMLLoaderOptions) =>
48
- parseTextSync(new TextDecoder().decode(arrayBuffer), options),
49
- parseTextSync: (text: string, options?: XMLLoaderOptions) => parseTextSync(text, options)
35
+ parseXMLSync(new TextDecoder().decode(arrayBuffer), {
36
+ ...XMLLoader.options.xml,
37
+ ...options?.xml
38
+ }),
39
+ parseTextSync: (text: string, options?: XMLLoaderOptions) =>
40
+ parseXMLSync(text, {...XMLLoader.options.xml, ...options?.xml})
50
41
  };
51
42
 
52
43
  function testXMLFile(text: string): boolean {
53
44
  // TODO - There could be space first.
54
45
  return text.startsWith('<?xml');
55
46
  }
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
-
95
- export const _typecheckXMLLoader: LoaderWithParser = XMLLoader;