@loadmill/core 0.3.101 → 0.3.102

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.
@@ -3,6 +3,7 @@ import { ParametrizedExtractor } from './parametrized-extractor';
3
3
  export declare class XPathExtractor extends ParametrizedExtractor {
4
4
  private $;
5
5
  private select;
6
- constructor(target: any, parameters: Parameters);
6
+ constructor(target: string, parameters: Parameters);
7
7
  extractResolved: (resolvedXPath: string) => string;
8
+ private getSelectUsingNameSpaces;
8
9
  }
@@ -20,8 +20,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
21
  exports.XPathExtractor = void 0;
22
22
  var xpath_1 = __importDefault(require("xpath"));
23
- var xmldom_1 = __importDefault(require("@xmldom/xmldom"));
24
- var dom = xmldom_1.default.DOMParser;
23
+ var xmldom_1 = require("@xmldom/xmldom");
25
24
  var parametrized_extractor_1 = require("./parametrized-extractor");
26
25
  var XPathExtractor = /** @class */ (function (_super) {
27
26
  __extends(XPathExtractor, _super);
@@ -48,16 +47,24 @@ var XPathExtractor = /** @class */ (function (_super) {
48
47
  return res;
49
48
  }
50
49
  });
51
- _this.$ = new dom().parseFromString(target, 'text/xml');
52
- var namespaceAttributes = xpath_1.default.select('//@*[starts-with(name(), \'xmlns\')]', _this.$);
53
- var namespaces = {};
54
- namespaceAttributes.forEach(function (attr) {
55
- var prefix = attr.nodeName.startsWith('xmlns:') ? attr.nodeName.split(':')[1] : 'default';
56
- namespaces[prefix] = attr.nodeValue;
57
- });
58
- _this.select = xpath_1.default.useNamespaces(namespaces);
50
+ _this.$ = new xmldom_1.DOMParser().parseFromString(target, 'text/xml');
51
+ _this.select = _this.getSelectUsingNameSpaces();
59
52
  return _this;
60
53
  }
54
+ Object.defineProperty(XPathExtractor.prototype, "getSelectUsingNameSpaces", {
55
+ enumerable: false,
56
+ configurable: true,
57
+ writable: true,
58
+ value: function () {
59
+ var namespaces = {};
60
+ var namespaceAttributes = xpath_1.default.select('//@*[starts-with(name(), \'xmlns\')]', this.$);
61
+ namespaceAttributes.forEach(function (attr) {
62
+ var prefix = attr.nodeName.startsWith('xmlns:') ? attr.nodeName.split(':')[1] : 'default';
63
+ namespaces[prefix] = attr.nodeValue;
64
+ });
65
+ return xpath_1.default.useNamespaces(namespaces);
66
+ }
67
+ });
61
68
  return XPathExtractor;
62
69
  }(parametrized_extractor_1.ParametrizedExtractor));
63
70
  exports.XPathExtractor = XPathExtractor;
@@ -1 +1 @@
1
- {"version":3,"file":"x-path-extractor.js","sourceRoot":"","sources":["../../../src/parameters/extractors/x-path-extractor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,0DAAoC;AAC5B,IAAW,GAAG,GAAK,gBAAM,UAAX,CAAY;AAGlC,mEAAiE;AAEjE;IAAoC,kCAAqB;IAIvD,wBAAY,MAAM,EAAE,UAAsB;QAA1C,YACE,kBAAM,UAAU,CAAC,SAalB;QAjBD;;;;;WAAoB;QACpB;;;;;WAAkC;QAkBlC;;;;mBAAkB,UAChB,aAAqB;gBAErB,IAAM,GAAG,GAAG,KAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC1D,OAAO,GAAG,CAAC;YACb,CAAC;WAAC;QAnBA,KAAI,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEvD,IAAM,mBAAmB,GAAG,eAAK,CAAC,MAAM,CAAC,sCAAsC,EAAE,KAAI,CAAC,CAAC,CAAW,CAAC;QAEnG,IAAM,UAAU,GAAG,EAAE,CAAC;QAEtB,mBAAmB,CAAC,OAAO,CAAC,UAAA,IAAI;YAC9B,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5F,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,KAAI,CAAC,MAAM,GAAG,eAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;IAChD,CAAC;IAQH,qBAAC;AAAD,CAAC,AA1BD,CAAoC,8CAAqB,GA0BxD;AA1BY,wCAAc"}
1
+ {"version":3,"file":"x-path-extractor.js","sourceRoot":"","sources":["../../../src/parameters/extractors/x-path-extractor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAC1B,yCAA2C;AAG3C,mEAAiE;AAEjE;IAAoC,kCAAqB;IAIvD,wBAAY,MAAc,EAAE,UAAsB;QAAlD,YACE,kBAAM,UAAU,CAAC,SAGlB;QAPD;;;;;WAAoB;QACpB;;;;;WAAkC;QAQlC;;;;mBAAkB,UAChB,aAAqB;gBAErB,IAAM,GAAG,GAAG,KAAI,CAAC,MAAM,CAAC,aAAa,EAAE,KAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC1D,OAAO,GAAG,CAAC;YACb,CAAC;WAAC;QATA,KAAI,CAAC,CAAC,GAAG,IAAI,kBAAS,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7D,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,wBAAwB,EAAE,CAAC;;IAChD,CAAC;;;;;eASD;YACE,IAAM,UAAU,GAAG,EAAE,CAAC;YACtB,IAAM,mBAAmB,GAAG,eAAK,CAAC,MAAM,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC,CAAW,CAAC;YAEnG,mBAAmB,CAAC,OAAO,CAAC,UAAA,IAAI;gBAC9B,IAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5F,UAAU,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,OAAO,eAAK,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;;IACH,qBAAC;AAAD,CAAC,AA5BD,CAAoC,8CAAqB,GA4BxD;AA5BY,wCAAc"}
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.decodeXMLResponseBody = exports.decodeXMLRequestBody = void 0;
4
4
  var validator_1 = require("validator");
5
5
  var remove_invisible_chars_1 = require("./remove-invisible-chars");
6
+ var escape_reserved_chars_1 = require("./escape-reserved-chars");
7
+ var replace_s_tags_1 = require("./replace-s-tags");
8
+ var namespaces_1 = require("./namespaces");
6
9
  /**
7
10
  * matches XML or data tags and their content in a string.
8
11
  * ([\s\S]*?) - matches any character, as few times as possible.
@@ -13,7 +16,9 @@ var decodeXMLRequestBody = function (requestBody) {
13
16
  if (validator_1.isBase64(encodedContent)) {
14
17
  var decodedContent = Buffer.from(encodedContent, 'base64').toString('utf-8');
15
18
  var cleanedDecodedContent = remove_invisible_chars_1.replaceInvisibleCharWithCustomTag(decodedContent);
16
- return wrapXMLTag(tag, cleanedDecodedContent);
19
+ var replacedSTagDecodedContent = replace_s_tags_1.replaceSTag(cleanedDecodedContent);
20
+ var escapedDecodedContent = unwrapTempRootTag(escape_reserved_chars_1.escapeXML(wrapTempRootTag(replacedSTagDecodedContent)));
21
+ return wrapXMLTagAndContent(tag, escapedDecodedContent);
17
22
  }
18
23
  else {
19
24
  return matched;
@@ -21,9 +26,15 @@ var decodeXMLRequestBody = function (requestBody) {
21
26
  });
22
27
  };
23
28
  exports.decodeXMLRequestBody = decodeXMLRequestBody;
24
- var wrapXMLTag = function (tag, content) {
29
+ var wrapXMLTagAndContent = function (tag, content) {
25
30
  return "<LoadmillWrapper><" + tag + ">" + content + "</" + tag + "></LoadmillWrapper>";
26
31
  };
32
+ var wrapTempRootTag = function (content) {
33
+ return "<TempRoot>" + content + "</TempRoot>";
34
+ };
35
+ var unwrapTempRootTag = function (content) {
36
+ return content.replace('<TempRoot>', '').replace('</TempRoot>', '');
37
+ };
27
38
  /**
28
39
  * Weird & secret xml format.
29
40
  * S - start of a tag
@@ -33,7 +44,7 @@ var wrapXMLTag = function (tag, content) {
33
44
  var SPECIFIC_START = 'AlMKCQ0w'; // base64 for \x02S\n\t\r0 which is the start of secret xml format
34
45
  var BASE64_REGEX = new RegExp("(" + SPECIFIC_START + "[A-Za-z0-9+/=]*)", 'g'); // match the start of the secret xml format and the base64 encoded data
35
46
  var decodeXMLResponseBody = function (responseBody) {
36
- return responseBody.replace(BASE64_REGEX, function (_, encodedData) {
47
+ var result = responseBody.replace(BASE64_REGEX, function (_, encodedData) {
37
48
  var decodedData = Buffer.from(encodedData, 'base64').toString('utf8');
38
49
  var lines = decodedData.substring(1) // skip the first weird character (it is for format type)
39
50
  .split('\n')
@@ -67,6 +78,10 @@ var decodeXMLResponseBody = function (responseBody) {
67
78
  }
68
79
  return "<LoadmillWrapper>" + xml + "</LoadmillWrapper>";
69
80
  });
81
+ var replacedSTagResult = replace_s_tags_1.replaceSTag(result);
82
+ var escapedResult = escape_reserved_chars_1.escapeXML(replacedSTagResult);
83
+ var withoutXMLNamespaces = namespaces_1.removeXMLNamespaces(escapedResult);
84
+ return withoutXMLNamespaces;
70
85
  };
71
86
  exports.decodeXMLResponseBody = decodeXMLResponseBody;
72
87
  //# sourceMappingURL=decode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/xml/decode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/xml/decode.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Escape reserved XML characters in a string.
3
+ * Reserved characters are: <, >, &, ', ".
4
+ * Their escaped counterparts are: &lt;, &gt;, &amp;, &apos;, &quot;
5
+ */
6
+ export declare const escapeXML: (xml: string) => string;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.escapeXML = void 0;
7
+ var xmldom_1 = require("@xmldom/xmldom");
8
+ var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
9
+ /**
10
+ * Escape reserved XML characters in a string.
11
+ * Reserved characters are: <, >, &, ', ".
12
+ * Their escaped counterparts are: &lt;, &gt;, &amp;, &apos;, &quot;
13
+ */
14
+ var escapeXML = function (xml) {
15
+ var parser = new xmldom_1.DOMParser({ errorHandler: _errorHandler });
16
+ var xmlDoc = parser.parseFromString(xml, 'text/xml');
17
+ processNode(xmlDoc.documentElement);
18
+ return new xmldom_1.XMLSerializer().serializeToString(xmlDoc);
19
+ };
20
+ exports.escapeXML = escapeXML;
21
+ var _errorHandler = {
22
+ warning: function (msg) { return log_1.default.debug(msg); },
23
+ error: function (msg) { return log_1.default.debug(msg); },
24
+ fatalError: function (msg) { return log_1.default.debug(msg); },
25
+ };
26
+ // Recursively process XML nodes
27
+ var processNode = function (node) {
28
+ if (!node) {
29
+ return;
30
+ }
31
+ if (node.TEXT_NODE) {
32
+ node.nodeValue = escapeXmlContent(node.nodeValue);
33
+ }
34
+ else if (node.ELEMENT_NODE) {
35
+ for (var i = 0; i < node.childNodes.length; i++) {
36
+ processNode(node.childNodes[i]);
37
+ }
38
+ }
39
+ };
40
+ var escapeXmlContent = function (content) {
41
+ if (!content) {
42
+ return content;
43
+ }
44
+ // Replace reserved symbols with their escaped counterparts
45
+ return content.replace(/[<>&'"]/g, function (match) {
46
+ switch (match) {
47
+ case '<':
48
+ return '&lt;';
49
+ case '>':
50
+ return '&gt;';
51
+ case '&':
52
+ return '&amp;';
53
+ default: return match;
54
+ }
55
+ });
56
+ };
57
+ //# sourceMappingURL=escape-reserved-chars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escape-reserved-chars.js","sourceRoot":"","sources":["../../src/xml/escape-reserved-chars.ts"],"names":[],"mappings":";;;;;;AAAA,yCAIwB;AAExB,qEAA+C;AAE/C;;;;GAIG;AACI,IAAM,SAAS,GAAG,UAAC,GAAW;IACnC,IAAM,MAAM,GAAG,IAAI,kBAAS,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;IAC9D,IAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACvD,WAAW,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACpC,OAAO,IAAI,sBAAa,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC,CAAC;AALW,QAAA,SAAS,aAKpB;AAEF,IAAM,aAAa,GAAuB;IACxC,OAAO,EAAE,UAAC,GAAW,IAAK,OAAA,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAd,CAAc;IACxC,KAAK,EAAE,UAAC,GAAW,IAAK,OAAA,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAd,CAAc;IACtC,UAAU,EAAE,UAAC,GAAW,IAAK,OAAA,aAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAd,CAAc;CAC5C,CAAC;AAEF,gCAAgC;AAChC,IAAM,WAAW,GAAG,UAAC,IAAU;IAC7B,IAAI,CAAC,IAAI,EAAE;QACT,OAAO;KACR;IACD,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,IAAI,CAAC,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACnD;SAAM,IAAI,IAAI,CAAC,YAAY,EAAE;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC;KACF;AACH,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG,UAAC,OAAsB;IAC9C,IAAI,CAAC,OAAO,EAAE;QACZ,OAAO,OAAO,CAAC;KAChB;IACD,2DAA2D;IAC3D,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,UAAC,KAAa;QAC/C,QAAQ,KAAK,EAAE;YACf,KAAK,GAAG;gBACN,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,MAAM,CAAC;YAChB,KAAK,GAAG;gBACN,OAAO,OAAO,CAAC;YACjB,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;SACrB;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { BuilderOptions } from 'xml2js';
2
+ export declare const jsonToXML: (json: any, options?: BuilderOptions) => string;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.jsonToXML = void 0;
4
+ var xml2js_1 = require("xml2js");
5
+ var jsonToXML = function (json, options) {
6
+ if (options === void 0) { options = {}; }
7
+ var builder = new xml2js_1.Builder(options);
8
+ return builder.buildObject(json);
9
+ };
10
+ exports.jsonToXML = jsonToXML;
11
+ //# sourceMappingURL=json-to-xml.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-to-xml.js","sourceRoot":"","sources":["../../src/xml/json-to-xml.ts"],"names":[],"mappings":";;;AAAA,iCAAiD;AAE1C,IAAM,SAAS,GAAG,UAAC,IAAS,EAAE,OAA4B;IAA5B,wBAAA,EAAA,YAA4B;IAC/D,IAAM,OAAO,GAAG,IAAI,gBAAO,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC;AAHW,QAAA,SAAS,aAGpB"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Replaces lonely <S> tags with <LoadmillPlaceHolder/> tags
3
+ */
4
+ export declare const replaceSTag: (xml?: string) => string;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replaceSTag = void 0;
4
+ /**
5
+ * Replaces lonely <S> tags with <LoadmillPlaceHolder/> tags
6
+ */
7
+ var replaceSTag = function (xml) {
8
+ if (xml === void 0) { xml = ''; }
9
+ if (countOpeningSTags(xml) > countClosingSTags(xml)) {
10
+ return xml.replace('<S>', '<LoadmillPlaceHolder/>');
11
+ }
12
+ return xml;
13
+ };
14
+ exports.replaceSTag = replaceSTag;
15
+ var countOpeningSTags = function (xml) {
16
+ return (xml.match(/<S>/g) || []).length;
17
+ };
18
+ var countClosingSTags = function (xml) {
19
+ return (xml.match(/<\/S>/g) || []).length;
20
+ };
21
+ //# sourceMappingURL=replace-s-tags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replace-s-tags.js","sourceRoot":"","sources":["../../src/xml/replace-s-tags.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACI,IAAM,WAAW,GAAG,UAAC,GAAgB;IAAhB,oBAAA,EAAA,QAAgB;IAC1C,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,GAAG,CAAC,EAAE;QACnD,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KACrD;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AALW,QAAA,WAAW,eAKtB;AAEF,IAAM,iBAAiB,GAAG,UAAC,GAAW;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;AAC1C,CAAC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UAAC,GAAW;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC,CAAC"}
@@ -1,2 +1,7 @@
1
- import xmlParser from 'xml2js';
2
- export declare const xmlToJson: (xml: string, options?: xmlParser.OptionsV2, onError?: ((err: Error, result: any, xml: string) => void) | undefined) => any;
1
+ import { ParserOptions } from 'xml2js';
2
+ export declare const xmlToJson: (xml: string, options?: ParserOptions, onError?: ((err: Error, result: any, xml: string) => void) | undefined) => ParsedXML | undefined;
3
+ /**
4
+ * Parsed XML can be any shape of object, depending on the XML structure.
5
+ * @example <foo><bar>1</bar><baz>2</baz></foo> -> { foo: { bar: 1, baz: 2 } }
6
+ */
7
+ export declare type ParsedXML = any;
@@ -1,14 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.xmlToJson = void 0;
7
- var xml2js_1 = __importDefault(require("xml2js"));
4
+ var xml2js_1 = require("xml2js");
8
5
  var xmlToJson = function (xml, options, onError) {
9
6
  if (options === void 0) { options = {}; }
10
- var parsedXml;
11
- var parser = new xml2js_1.default.Parser(options);
7
+ var parsedXML;
8
+ var parser = new xml2js_1.Parser(options);
12
9
  parser.parseString(xml, function (err, result) {
13
10
  if (err && !result) {
14
11
  if (onError) {
@@ -16,9 +13,9 @@ var xmlToJson = function (xml, options, onError) {
16
13
  }
17
14
  return;
18
15
  }
19
- parsedXml = result;
16
+ parsedXML = result;
20
17
  });
21
- return parsedXml;
18
+ return parsedXML;
22
19
  };
23
20
  exports.xmlToJson = xmlToJson;
24
21
  //# sourceMappingURL=xml-to-json.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xml-to-json.js","sourceRoot":"","sources":["../../src/xml/xml-to-json.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA+B;AAExB,IAAM,SAAS,GAAG,UACvB,GAAW,EACX,OAAiC,EACjC,OAAwD;IADxD,wBAAA,EAAA,YAAiC;IAGjC,IAAI,SAAS,CAAC;IACd,IAAM,MAAM,GAAG,IAAI,gBAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE7C,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE,MAAM;QAC3C,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;YAClB,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;aAC3B;YACD,OAAO;SACR;QACD,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAnBW,QAAA,SAAS,aAmBpB"}
1
+ {"version":3,"file":"xml-to-json.js","sourceRoot":"","sources":["../../src/xml/xml-to-json.ts"],"names":[],"mappings":";;;AAAA,iCAA+C;AAExC,IAAM,SAAS,GAAG,UACvB,GAAW,EACX,OAA2B,EAC3B,OAAwD;IADxD,wBAAA,EAAA,YAA2B;IAG3B,IAAI,SAAoB,CAAC;IACzB,IAAM,MAAM,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC;IAEnC,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE,MAAM;QAC3C,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE;YAClB,IAAI,OAAO,EAAE;gBACX,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;aAC3B;YACD,OAAO;SACR;QACD,SAAS,GAAG,MAAM,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAnBW,QAAA,SAAS,aAmBpB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loadmill/core",
3
- "version": "0.3.101",
3
+ "version": "0.3.102",
4
4
  "description": "Loadmill core library",
5
5
  "scripts": {
6
6
  "ts-watch": "rimraf dist && tsc -w -p tsconfig.json",
@@ -24,7 +24,7 @@
24
24
  "@aws-sdk/client-cognito-identity": "^3.58.0",
25
25
  "@aws-sdk/client-firehose": "^3.58.0",
26
26
  "@aws-sdk/types": "^3.55.0",
27
- "@loadmill/universal": "0.3.96",
27
+ "@loadmill/universal": "0.3.97",
28
28
  "@xmldom/xmldom": "^0.8.10",
29
29
  "cheerio": "^0.22.0",
30
30
  "crypto-js": "^4.1.1",