@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.
- package/dist/parameters/extractors/x-path-extractor.d.ts +2 -1
- package/dist/parameters/extractors/x-path-extractor.js +17 -10
- package/dist/parameters/extractors/x-path-extractor.js.map +1 -1
- package/dist/xml/decode.js +18 -3
- package/dist/xml/decode.js.map +1 -1
- package/dist/xml/escape-reserved-chars.d.ts +6 -0
- package/dist/xml/escape-reserved-chars.js +57 -0
- package/dist/xml/escape-reserved-chars.js.map +1 -0
- package/dist/xml/json-to-xml.d.ts +2 -0
- package/dist/xml/json-to-xml.js +11 -0
- package/dist/xml/json-to-xml.js.map +1 -0
- package/dist/xml/replace-s-tags.d.ts +4 -0
- package/dist/xml/replace-s-tags.js +21 -0
- package/dist/xml/replace-s-tags.js.map +1 -0
- package/dist/xml/xml-to-json.d.ts +7 -2
- package/dist/xml/xml-to-json.js +5 -8
- package/dist/xml/xml-to-json.js.map +1 -1
- package/package.json +2 -2
|
@@ -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:
|
|
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 =
|
|
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
|
|
52
|
-
|
|
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,
|
|
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"}
|
package/dist/xml/decode.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
package/dist/xml/decode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/xml/decode.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AACrC,mEAA6E;
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../src/xml/decode.ts"],"names":[],"mappings":"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"}
|
|
@@ -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: <, >, &, ', "
|
|
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 '<';
|
|
49
|
+
case '>':
|
|
50
|
+
return '>';
|
|
51
|
+
case '&':
|
|
52
|
+
return '&';
|
|
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,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,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
|
|
2
|
-
export declare const xmlToJson: (xml: string, options?:
|
|
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;
|
package/dist/xml/xml-to-json.js
CHANGED
|
@@ -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 =
|
|
4
|
+
var xml2js_1 = require("xml2js");
|
|
8
5
|
var xmlToJson = function (xml, options, onError) {
|
|
9
6
|
if (options === void 0) { options = {}; }
|
|
10
|
-
var
|
|
11
|
-
var parser = new xml2js_1.
|
|
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
|
-
|
|
16
|
+
parsedXML = result;
|
|
20
17
|
});
|
|
21
|
-
return
|
|
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":"
|
|
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.
|
|
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.
|
|
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",
|