@loadmill/core 0.3.109 → 0.3.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/conf/defaults.d.ts +1 -0
  2. package/dist/conf/defaults.js +11 -0
  3. package/dist/conf/defaults.js.map +1 -0
  4. package/dist/conf/extrema.d.ts +7 -0
  5. package/dist/conf/extrema.js +12 -0
  6. package/dist/conf/extrema.js.map +1 -0
  7. package/dist/conf/index.d.ts +15 -0
  8. package/dist/conf/index.js +80 -0
  9. package/dist/conf/index.js.map +1 -0
  10. package/dist/conf/notifications.d.ts +2 -0
  11. package/dist/conf/notifications.js +19 -0
  12. package/dist/conf/notifications.js.map +1 -0
  13. package/dist/conf/types.d.ts +110 -0
  14. package/dist/conf/types.js +38 -0
  15. package/dist/conf/types.js.map +1 -0
  16. package/dist/conf/validate.d.ts +69 -0
  17. package/dist/conf/validate.js +495 -0
  18. package/dist/conf/validate.js.map +1 -0
  19. package/dist/distributed-logger-reporter.d.ts +3 -0
  20. package/dist/distributed-logger-reporter.js +74 -0
  21. package/dist/distributed-logger-reporter.js.map +1 -0
  22. package/dist/echo/firehose.d.ts +7 -0
  23. package/dist/echo/firehose.js +130 -0
  24. package/dist/echo/firehose.js.map +1 -0
  25. package/dist/echo/index.d.ts +3 -0
  26. package/dist/echo/index.js +8 -0
  27. package/dist/echo/index.js.map +1 -0
  28. package/dist/echo/stats.d.ts +8 -0
  29. package/dist/echo/stats.js +152 -0
  30. package/dist/echo/stats.js.map +1 -0
  31. package/dist/har/index.d.ts +68 -0
  32. package/dist/har/index.js +14 -0
  33. package/dist/har/index.js.map +1 -0
  34. package/dist/labels/constants.d.ts +1 -0
  35. package/dist/labels/constants.js +5 -0
  36. package/dist/labels/constants.js.map +1 -0
  37. package/dist/multipart-form-data/files.d.ts +2 -0
  38. package/dist/multipart-form-data/files.js +63 -0
  39. package/dist/multipart-form-data/files.js.map +1 -0
  40. package/dist/multipart-form-data/form-data-utils.d.ts +19 -0
  41. package/dist/multipart-form-data/form-data-utils.js +117 -0
  42. package/dist/multipart-form-data/form-data-utils.js.map +1 -0
  43. package/dist/multipart-form-data/is-binary-file.d.ts +2 -0
  44. package/dist/multipart-form-data/is-binary-file.js +215 -0
  45. package/dist/multipart-form-data/is-binary-file.js.map +1 -0
  46. package/dist/multipart-form-data/multipart-text-to-post-form-data.d.ts +2 -0
  47. package/dist/multipart-form-data/multipart-text-to-post-form-data.js +86 -0
  48. package/dist/multipart-form-data/multipart-text-to-post-form-data.js.map +1 -0
  49. package/dist/parameters/extractions.d.ts +26 -0
  50. package/dist/parameters/extractions.js +49 -0
  51. package/dist/parameters/extractions.js.map +1 -0
  52. package/dist/parameters/extractors/cheerio-extractor.d.ts +11 -0
  53. package/dist/parameters/extractors/cheerio-extractor.js +84 -0
  54. package/dist/parameters/extractors/cheerio-extractor.js.map +1 -0
  55. package/dist/parameters/extractors/expression-extractor.d.ts +6 -0
  56. package/dist/parameters/extractors/expression-extractor.js +38 -0
  57. package/dist/parameters/extractors/expression-extractor.js.map +1 -0
  58. package/dist/parameters/extractors/extractor.d.ts +3 -0
  59. package/dist/parameters/extractors/extractor.js +3 -0
  60. package/dist/parameters/extractors/extractor.js.map +1 -0
  61. package/dist/parameters/extractors/header-extractor.d.ts +7 -0
  62. package/dist/parameters/extractors/header-extractor.js +51 -0
  63. package/dist/parameters/extractors/header-extractor.js.map +1 -0
  64. package/dist/parameters/extractors/index.d.ts +10 -0
  65. package/dist/parameters/extractors/index.js +20 -0
  66. package/dist/parameters/extractors/index.js.map +1 -0
  67. package/dist/parameters/extractors/json-path-extractor.d.ts +11 -0
  68. package/dist/parameters/extractors/json-path-extractor.js +117 -0
  69. package/dist/parameters/extractors/json-path-extractor.js.map +1 -0
  70. package/dist/parameters/extractors/parametrized-extractor.d.ts +10 -0
  71. package/dist/parameters/extractors/parametrized-extractor.js +34 -0
  72. package/dist/parameters/extractors/parametrized-extractor.js.map +1 -0
  73. package/dist/parameters/extractors/regex-extractor.d.ts +7 -0
  74. package/dist/parameters/extractors/regex-extractor.js +46 -0
  75. package/dist/parameters/extractors/regex-extractor.js.map +1 -0
  76. package/dist/parameters/extractors/regex-matcher.d.ts +1 -0
  77. package/dist/parameters/extractors/regex-matcher.js +21 -0
  78. package/dist/parameters/extractors/regex-matcher.js.map +1 -0
  79. package/dist/parameters/extractors/ws-extractor.d.ts +33 -0
  80. package/dist/parameters/extractors/ws-extractor.js +215 -0
  81. package/dist/parameters/extractors/ws-extractor.js.map +1 -0
  82. package/dist/parameters/extractors/x-path-extractor.d.ts +9 -0
  83. package/dist/parameters/extractors/x-path-extractor.js +71 -0
  84. package/dist/parameters/extractors/x-path-extractor.js.map +1 -0
  85. package/dist/parameters/generate-random.d.ts +13 -0
  86. package/dist/parameters/generate-random.js +108 -0
  87. package/dist/parameters/generate-random.js.map +1 -0
  88. package/dist/parameters/html-utils.d.ts +1 -0
  89. package/dist/parameters/html-utils.js +18 -0
  90. package/dist/parameters/html-utils.js.map +1 -0
  91. package/dist/parameters/index.d.ts +89 -0
  92. package/dist/parameters/index.js +602 -0
  93. package/dist/parameters/index.js.map +1 -0
  94. package/dist/parameters/json-path-utils.d.ts +1 -0
  95. package/dist/parameters/json-path-utils.js +16 -0
  96. package/dist/parameters/json-path-utils.js.map +1 -0
  97. package/dist/parameters/operators/binary-operator.d.ts +13 -0
  98. package/dist/parameters/operators/binary-operator.js +39 -0
  99. package/dist/parameters/operators/binary-operator.js.map +1 -0
  100. package/dist/parameters/operators/index.d.ts +5 -0
  101. package/dist/parameters/operators/index.js +21 -0
  102. package/dist/parameters/operators/index.js.map +1 -0
  103. package/dist/parameters/parameter-functions/boolean-parameter-functions.d.ts +12 -0
  104. package/dist/parameters/parameter-functions/boolean-parameter-functions.js +47 -0
  105. package/dist/parameters/parameter-functions/boolean-parameter-functions.js.map +1 -0
  106. package/dist/parameters/parameter-functions/crypto.d.ts +11 -0
  107. package/dist/parameters/parameter-functions/crypto.js +71 -0
  108. package/dist/parameters/parameter-functions/crypto.js.map +1 -0
  109. package/dist/parameters/parameter-functions/json-schema.d.ts +1 -0
  110. package/dist/parameters/parameter-functions/json-schema.js +33 -0
  111. package/dist/parameters/parameter-functions/json-schema.js.map +1 -0
  112. package/dist/parameters/parameter-functions/numeric-input-parameter-functions.d.ts +11 -0
  113. package/dist/parameters/parameter-functions/numeric-input-parameter-functions.js +34 -0
  114. package/dist/parameters/parameter-functions/numeric-input-parameter-functions.js.map +1 -0
  115. package/dist/parameters/parameter-functions/numeric-parameter-functions.d.ts +15 -0
  116. package/dist/parameters/parameter-functions/numeric-parameter-functions.js +56 -0
  117. package/dist/parameters/parameter-functions/numeric-parameter-functions.js.map +1 -0
  118. package/dist/parameters/parameter-functions/parameter-function-utils.d.ts +5 -0
  119. package/dist/parameters/parameter-functions/parameter-function-utils.js +82 -0
  120. package/dist/parameters/parameter-functions/parameter-function-utils.js.map +1 -0
  121. package/dist/parameters/parameter-functions/parameter-function.d.ts +6 -0
  122. package/dist/parameters/parameter-functions/parameter-function.js +28 -0
  123. package/dist/parameters/parameter-functions/parameter-function.js.map +1 -0
  124. package/dist/parameters/parameter-functions/parameter-functions.d.ts +7 -0
  125. package/dist/parameters/parameter-functions/parameter-functions.js +53 -0
  126. package/dist/parameters/parameter-functions/parameter-functions.js.map +1 -0
  127. package/dist/parameters/parameter-functions/random-parameter-functions.d.ts +1 -0
  128. package/dist/parameters/parameter-functions/random-parameter-functions.js +43 -0
  129. package/dist/parameters/parameter-functions/random-parameter-functions.js.map +1 -0
  130. package/dist/parameters/parameter-functions/textual-parameter-functions.d.ts +67 -0
  131. package/dist/parameters/parameter-functions/textual-parameter-functions.js +374 -0
  132. package/dist/parameters/parameter-functions/textual-parameter-functions.js.map +1 -0
  133. package/dist/parameters/parameter-name-utils.d.ts +5 -0
  134. package/dist/parameters/parameter-name-utils.js +136 -0
  135. package/dist/parameters/parameter-name-utils.js.map +1 -0
  136. package/dist/parameters/parameter-regex-providers.d.ts +24 -0
  137. package/dist/parameters/parameter-regex-providers.js +70 -0
  138. package/dist/parameters/parameter-regex-providers.js.map +1 -0
  139. package/dist/parameters/resolvers/random-parameters-resolver.d.ts +1 -0
  140. package/dist/parameters/resolvers/random-parameters-resolver.js +12 -0
  141. package/dist/parameters/resolvers/random-parameters-resolver.js.map +1 -0
  142. package/dist/parameters/type.d.ts +10 -0
  143. package/dist/parameters/type.js +9 -0
  144. package/dist/parameters/type.js.map +1 -0
  145. package/dist/parameters/value-utils.d.ts +5 -0
  146. package/dist/parameters/value-utils.js +44 -0
  147. package/dist/parameters/value-utils.js.map +1 -0
  148. package/dist/request/index.d.ts +265 -0
  149. package/dist/request/index.js +541 -0
  150. package/dist/request/index.js.map +1 -0
  151. package/dist/schema/json-schema-generator.d.ts +20 -0
  152. package/dist/schema/json-schema-generator.js +135 -0
  153. package/dist/schema/json-schema-generator.js.map +1 -0
  154. package/dist/signals.d.ts +4 -0
  155. package/dist/signals.js +9 -0
  156. package/dist/signals.js.map +1 -0
  157. package/dist/subset/index.d.ts +3 -0
  158. package/dist/subset/index.js +8 -0
  159. package/dist/subset/index.js.map +1 -0
  160. package/dist/subset/is-subset.d.ts +2 -0
  161. package/dist/subset/is-subset.js +29 -0
  162. package/dist/subset/is-subset.js.map +1 -0
  163. package/dist/subset/json-contains.d.ts +1 -0
  164. package/dist/subset/json-contains.js +24 -0
  165. package/dist/subset/json-contains.js.map +1 -0
  166. package/dist/team-options/constants.d.ts +3 -0
  167. package/dist/team-options/constants.js +7 -0
  168. package/dist/team-options/constants.js.map +1 -0
  169. package/dist/xml/decode.d.ts +2 -0
  170. package/dist/xml/decode.js +87 -0
  171. package/dist/xml/decode.js.map +1 -0
  172. package/dist/xml/encode.d.ts +1 -0
  173. package/dist/xml/encode.js +14 -0
  174. package/dist/xml/encode.js.map +1 -0
  175. package/dist/xml/escape-reserved-chars.d.ts +6 -0
  176. package/dist/xml/escape-reserved-chars.js +57 -0
  177. package/dist/xml/escape-reserved-chars.js.map +1 -0
  178. package/dist/xml/is-xml.d.ts +1 -0
  179. package/dist/xml/is-xml.js +9 -0
  180. package/dist/xml/is-xml.js.map +1 -0
  181. package/dist/xml/json-to-xml.d.ts +2 -0
  182. package/dist/xml/json-to-xml.js +11 -0
  183. package/dist/xml/json-to-xml.js.map +1 -0
  184. package/dist/xml/namespaces.d.ts +7 -0
  185. package/dist/xml/namespaces.js +16 -0
  186. package/dist/xml/namespaces.js.map +1 -0
  187. package/dist/xml/remove-invisible-chars.d.ts +2 -0
  188. package/dist/xml/remove-invisible-chars.js +13 -0
  189. package/dist/xml/remove-invisible-chars.js.map +1 -0
  190. package/dist/xml/replace-s-tags.d.ts +4 -0
  191. package/dist/xml/replace-s-tags.js +21 -0
  192. package/dist/xml/replace-s-tags.js.map +1 -0
  193. package/dist/xml/xml-to-json.d.ts +7 -0
  194. package/dist/xml/xml-to-json.js +21 -0
  195. package/dist/xml/xml-to-json.js.map +1 -0
  196. package/package.json +2 -2
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XPathExtractor = exports.WsExtractor = exports.RegexExtractor = exports.ParametrizedExtractor = exports.JsonPathExtractor = exports.HeaderExtractor = exports.ExpressionExtractor = exports.CheerioExtractor = void 0;
4
+ var cheerio_extractor_1 = require("./cheerio-extractor");
5
+ Object.defineProperty(exports, "CheerioExtractor", { enumerable: true, get: function () { return cheerio_extractor_1.CheerioExtractor; } });
6
+ var expression_extractor_1 = require("./expression-extractor");
7
+ Object.defineProperty(exports, "ExpressionExtractor", { enumerable: true, get: function () { return expression_extractor_1.ExpressionExtractor; } });
8
+ var header_extractor_1 = require("./header-extractor");
9
+ Object.defineProperty(exports, "HeaderExtractor", { enumerable: true, get: function () { return header_extractor_1.HeaderExtractor; } });
10
+ var json_path_extractor_1 = require("./json-path-extractor");
11
+ Object.defineProperty(exports, "JsonPathExtractor", { enumerable: true, get: function () { return json_path_extractor_1.JsonPathExtractor; } });
12
+ var parametrized_extractor_1 = require("./parametrized-extractor");
13
+ Object.defineProperty(exports, "ParametrizedExtractor", { enumerable: true, get: function () { return parametrized_extractor_1.ParametrizedExtractor; } });
14
+ var regex_extractor_1 = require("./regex-extractor");
15
+ Object.defineProperty(exports, "RegexExtractor", { enumerable: true, get: function () { return regex_extractor_1.RegexExtractor; } });
16
+ var ws_extractor_1 = require("./ws-extractor");
17
+ Object.defineProperty(exports, "WsExtractor", { enumerable: true, get: function () { return ws_extractor_1.WsExtractor; } });
18
+ var x_path_extractor_1 = require("./x-path-extractor");
19
+ Object.defineProperty(exports, "XPathExtractor", { enumerable: true, get: function () { return x_path_extractor_1.XPathExtractor; } });
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parameters/extractors/index.ts"],"names":[],"mappings":";;;AAAA,yDAAuD;AAU9C,iGAVA,oCAAgB,OAUA;AATzB,+DAA6D;AASlC,oGATlB,0CAAmB,OASkB;AAP9C,uDAAqD;AAOM,gGAPlD,kCAAe,OAOkD;AAN1E,6DAA0D;AAMkB,kGANnE,uCAAiB,OAMmE;AAL7F,mEAAiE;AAK8B,sGALtF,8CAAqB,OAKsF;AAJpH,qDAAmD;AAImE,+FAJ7G,gCAAc,OAI6G;AAHpI,+CAA6C;AAGyF,4FAH7H,0BAAW,OAG6H;AAFjJ,uDAAoD;AAE+F,+FAF1I,iCAAc,OAE0I"}
@@ -0,0 +1,11 @@
1
+ import { Parameters } from '../type';
2
+ import { ParametrizedExtractor } from './parametrized-extractor';
3
+ export declare class JsonPathExtractor extends ParametrizedExtractor {
4
+ private obj;
5
+ private parseError?;
6
+ _validateObj: () => void;
7
+ _isHTML: (str: any) => boolean;
8
+ constructor(target: any, parameters: Parameters);
9
+ extractResolved: (jsonPath: string, full?: any) => any;
10
+ apply: (jsonPath: string, value: any) => string;
11
+ }
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.JsonPathExtractor = void 0;
22
+ var jsonpath_1 = __importDefault(require("jsonpath"));
23
+ var parametrized_extractor_1 = require("./parametrized-extractor");
24
+ var errors_1 = require("@loadmill/universal/dist/errors");
25
+ var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
26
+ var JsonPathExtractor = /** @class */ (function (_super) {
27
+ __extends(JsonPathExtractor, _super);
28
+ function JsonPathExtractor(target, parameters) {
29
+ var _this = _super.call(this, parameters) || this;
30
+ Object.defineProperty(_this, "obj", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: void 0
35
+ });
36
+ Object.defineProperty(_this, "parseError", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: void 0
41
+ });
42
+ Object.defineProperty(_this, "_validateObj", {
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true,
46
+ value: function () {
47
+ var parseError = _this.parseError;
48
+ if (parseError) {
49
+ throw new errors_1.PresentableError(parseError);
50
+ }
51
+ }
52
+ });
53
+ Object.defineProperty(_this, "_isHTML", {
54
+ enumerable: true,
55
+ configurable: true,
56
+ writable: true,
57
+ value: function (str) {
58
+ var pattern = /<[^>]+>/;
59
+ return pattern.test(str);
60
+ }
61
+ });
62
+ Object.defineProperty(_this, "extractResolved", {
63
+ enumerable: true,
64
+ configurable: true,
65
+ writable: true,
66
+ value: function (jsonPath, full) {
67
+ _this._validateObj();
68
+ var jsonPathResult;
69
+ if (jsonPath === '$') {
70
+ jsonPathResult = _this.obj;
71
+ }
72
+ else {
73
+ jsonPathResult = full ? jsonpath_1.default.query(_this.obj, jsonPath) : jsonpath_1.default.value(_this.obj, jsonPath);
74
+ }
75
+ if (jsonPathResult != null) {
76
+ return typeof jsonPathResult === 'object'
77
+ ? JSON.stringify(jsonPathResult)
78
+ : jsonPathResult.toString();
79
+ }
80
+ }
81
+ });
82
+ Object.defineProperty(_this, "apply", {
83
+ enumerable: true,
84
+ configurable: true,
85
+ writable: true,
86
+ value: function (jsonPath, value) {
87
+ _this._validateObj();
88
+ log_1.default.debug('JSONPath parameter apply:', { jsonPath: jsonPath, value: value });
89
+ jsonpath_1.default.apply(_this.obj, jsonPath, function () {
90
+ try {
91
+ return JSON.parse(value);
92
+ }
93
+ catch (error) {
94
+ return value;
95
+ }
96
+ });
97
+ log_1.default.debug('JSONPath parameter apply result:', { obj: _this.obj });
98
+ return JSON.stringify(_this.obj);
99
+ }
100
+ });
101
+ try {
102
+ _this.obj = JSON.parse(target);
103
+ }
104
+ catch (e) {
105
+ if (_this._isHTML(target)) {
106
+ _this.parseError = 'The response body looks like HTML and not JSON. Check if your authentication is configured correctly.';
107
+ }
108
+ else {
109
+ _this.parseError = 'Response body is not a valid JSON: ' + e.message;
110
+ }
111
+ }
112
+ return _this;
113
+ }
114
+ return JsonPathExtractor;
115
+ }(parametrized_extractor_1.ParametrizedExtractor));
116
+ exports.JsonPathExtractor = JsonPathExtractor;
117
+ //# sourceMappingURL=json-path-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-path-extractor.js","sourceRoot":"","sources":["../../../src/parameters/extractors/json-path-extractor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,sDAAgC;AAEhC,mEAAiE;AACjE,0DAAmE;AACnE,qEAA+C;AAE/C;IAAuC,qCAAqB;IAgB1D,2BAAY,MAAM,EAAE,UAAsB;QAA1C,YACE,kBAAM,UAAU,CAAC,SAUlB;QA1BD;;;;;WAAY;QACZ;;;;;WAAoB;QAEpB;;;;mBAAe;gBACL,IAAA,UAAU,GAAK,KAAI,WAAT,CAAU;gBAC5B,IAAI,UAAU,EAAE;oBACd,MAAM,IAAI,yBAAgB,CAAC,UAAU,CAAC,CAAC;iBACxC;YACH,CAAC;WAAC;QAEF;;;;mBAAU,UAAC,GAAG;gBACZ,IAAM,OAAO,GAAG,SAAS,CAAC;gBAC1B,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;WAAC;QAeF;;;;mBAAkB,UAAC,QAAgB,EAAE,IAAK;gBAExC,KAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,IAAI,cAAc,CAAC;gBACnB,IAAI,QAAQ,KAAK,GAAG,EAAE;oBACpB,cAAc,GAAG,KAAI,CAAC,GAAG,CAAC;iBAC3B;qBACI;oBACH,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAQ,CAAC,KAAK,CAAC,KAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAQ,CAAC,KAAK,CAAC,KAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;iBACjG;gBAED,IAAI,cAAc,IAAI,IAAI,EAAE;oBAC1B,OAAO,OAAO,cAAc,KAAK,QAAQ;wBACvC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;wBAChC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;iBAC/B;YACH,CAAC;WAAC;QAEF;;;;mBAAQ,UAAC,QAAgB,EAAE,KAAK;gBAC9B,KAAI,CAAC,YAAY,EAAE,CAAC;gBAEpB,aAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,QAAQ,UAAA,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;gBAE5D,kBAAQ,CAAC,KAAK,CAAC,KAAI,CAAC,GAAG,EAAE,QAAQ,EAAE;oBACjC,IAAI;wBACF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC1B;oBAAC,OAAO,KAAK,EAAE;wBACd,OAAO,KAAK,CAAC;qBACd;gBACH,CAAC,CAAC,CAAC;gBAEH,aAAG,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,GAAG,EAAE,KAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAEjE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAI,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;WAAC;QA9CA,IAAI;YACF,KAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;SAC/B;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACxB,KAAI,CAAC,UAAU,GAAG,uGAAuG,CAAC;aAC3H;iBAAM;gBACL,KAAI,CAAC,UAAU,GAAG,qCAAqC,GAAG,CAAC,CAAC,OAAO,CAAC;aACrE;SACF;;IACH,CAAC;IAsCH,wBAAC;AAAD,CAAC,AAjED,CAAuC,8CAAqB,GAiE3D;AAjEY,8CAAiB"}
@@ -0,0 +1,10 @@
1
+ import { Extractor } from './extractor';
2
+ import { Parameters } from '../type';
3
+ export declare abstract class ParametrizedExtractor implements Extractor {
4
+ private parameters;
5
+ abstract extractResolved: ResolvedExtracter;
6
+ constructor(parameters: Parameters);
7
+ extract: (parametrizedQuery: string | string[]) => string | Promise<string | undefined> | undefined;
8
+ }
9
+ declare type ResolvedExtracter = ((...resolvedQuery: string[]) => string | undefined | Promise<string | undefined>);
10
+ export {};
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ParametrizedExtractor = void 0;
4
+ var __1 = require("../");
5
+ var ParametrizedExtractor = /** @class */ (function () {
6
+ function ParametrizedExtractor(parameters) {
7
+ var _this = this;
8
+ Object.defineProperty(this, "parameters", {
9
+ enumerable: true,
10
+ configurable: true,
11
+ writable: true,
12
+ value: parameters
13
+ });
14
+ Object.defineProperty(this, "extract", {
15
+ enumerable: true,
16
+ configurable: true,
17
+ writable: true,
18
+ value: function (parametrizedQuery) {
19
+ if (!Array.isArray(parametrizedQuery)) {
20
+ parametrizedQuery = [parametrizedQuery];
21
+ }
22
+ var resolvedQuery = parametrizedQuery.map(function (q) { return q && __1.parameterUtils.resolveExpression(q, _this.parameters); });
23
+ /* log.debug('Parametrized query resolution:', {
24
+ parametrizedQuery,
25
+ resolvedQuery,
26
+ }); */
27
+ return _this.extractResolved.apply(_this, resolvedQuery);
28
+ }
29
+ });
30
+ }
31
+ return ParametrizedExtractor;
32
+ }());
33
+ exports.ParametrizedExtractor = ParametrizedExtractor;
34
+ //# sourceMappingURL=parametrized-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parametrized-extractor.js","sourceRoot":"","sources":["../../../src/parameters/extractors/parametrized-extractor.ts"],"names":[],"mappings":";;;AACA,yBAAqC;AAGrC;IAGE,+BAAoB,UAAsB;QAA1C,iBAA8C;;;;;mBAA1B;;QAEpB;;;;mBAAU,UAAC,iBAAoC;gBAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;oBACrC,iBAAiB,GAAG,CAAC,iBAAiB,CAAC,CAAC;iBACzC;gBAED,IAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CACzC,UAAC,CAAC,IAAK,OAAA,CAAC,IAAI,kBAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE,KAAI,CAAC,UAAU,CAAC,EAAzD,CAAyD,CACjE,CAAC;gBACF;;;sBAGM;gBAEN,OAAO,KAAI,CAAC,eAAe,OAApB,KAAI,EAAoB,aAAa,EAAE;YAChD,CAAC;WAAC;IAhB2C,CAAC;IAiBhD,4BAAC;AAAD,CAAC,AApBD,IAoBC;AApBqB,sDAAqB"}
@@ -0,0 +1,7 @@
1
+ import { ParametrizedExtractor } from './parametrized-extractor';
2
+ import { Parameters } from '../type';
3
+ export declare class RegexExtractor extends ParametrizedExtractor {
4
+ private targetProvider;
5
+ constructor(targetProvider: () => string | undefined, parameters: Parameters);
6
+ extractResolved: (regex: string) => string | undefined;
7
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.RegexExtractor = void 0;
19
+ var parametrized_extractor_1 = require("./parametrized-extractor");
20
+ var regex_matcher_1 = require("./regex-matcher");
21
+ var RegexExtractor = /** @class */ (function (_super) {
22
+ __extends(RegexExtractor, _super);
23
+ function RegexExtractor(targetProvider, parameters) {
24
+ var _this = _super.call(this, parameters) || this;
25
+ Object.defineProperty(_this, "targetProvider", {
26
+ enumerable: true,
27
+ configurable: true,
28
+ writable: true,
29
+ value: targetProvider
30
+ });
31
+ Object.defineProperty(_this, "extractResolved", {
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true,
35
+ value: function (regex) {
36
+ var target = _this.targetProvider() || '';
37
+ var regExp = new RegExp(regex);
38
+ return regex_matcher_1.matchRegex(regExp, target);
39
+ }
40
+ });
41
+ return _this;
42
+ }
43
+ return RegexExtractor;
44
+ }(parametrized_extractor_1.ParametrizedExtractor));
45
+ exports.RegexExtractor = RegexExtractor;
46
+ //# sourceMappingURL=regex-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-extractor.js","sourceRoot":"","sources":["../../../src/parameters/extractors/regex-extractor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,mEAAiE;AAEjE,iDAA6C;AAE7C;IAAoC,kCAAqB;IACvD,wBACU,cAAwC,EAChD,UAAsB;QAFxB,YAIE,kBAAM,UAAU,CAAC,SAClB;;;;;mBAJS;;QAMV;;;;mBAAkB,UAAC,KAAa;gBAC9B,IAAM,MAAM,GAAG,KAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;gBAC3C,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,0BAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC;WAAC;;IANF,CAAC;IAOH,qBAAC;AAAD,CAAC,AAbD,CAAoC,8CAAqB,GAaxD;AAbY,wCAAc"}
@@ -0,0 +1 @@
1
+ export declare const matchRegex: (regExp: RegExp, target: string) => string | undefined;
@@ -0,0 +1,21 @@
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.matchRegex = void 0;
7
+ var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
8
+ var MAX_STR_LENGTH = 500;
9
+ var matchRegex = function (regExp, target) {
10
+ var matchArray = regExp.exec(target);
11
+ log_1.default.debug('Regex parameter extraction:', {
12
+ regExp: regExp,
13
+ type: typeof target,
14
+ target: typeof target === 'string' && target.substring(0, MAX_STR_LENGTH),
15
+ });
16
+ if (matchArray && matchArray[1]) {
17
+ return matchArray[1];
18
+ }
19
+ };
20
+ exports.matchRegex = matchRegex;
21
+ //# sourceMappingURL=regex-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regex-matcher.js","sourceRoot":"","sources":["../../../src/parameters/extractors/regex-matcher.ts"],"names":[],"mappings":";;;;;;AAAA,qEAA+C;AAE/C,IAAM,cAAc,GAAG,GAAG,CAAC;AAEpB,IAAM,UAAU,GAAG,UAAC,MAAc,EAAE,MAAc;IACvD,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvC,aAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE;QACvC,MAAM,QAAA;QACN,IAAI,EAAE,OAAO,MAAM;QACnB,MAAM,EAAE,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC;KAC1E,CAAC,CAAC;IAEH,IAAI,UAAU,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;QAC/B,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;KACtB;AACH,CAAC,CAAC;AAZW,QAAA,UAAU,cAYrB"}
@@ -0,0 +1,33 @@
1
+ import { Parameters } from '../type';
2
+ import { ParametrizedExtractor } from './parametrized-extractor';
3
+ export declare class WsExtractor extends ParametrizedExtractor {
4
+ private readonly _messages;
5
+ private readonly _timeLimit;
6
+ private _regexp;
7
+ constructor(extractionData: WSExtractionData | undefined, parameters: Parameters);
8
+ extractResolved: (resolvedRegex: string) => Promise<string | undefined>;
9
+ /**
10
+ * Querying all received incoming WS messages by regexp.
11
+ * @returns A WS message that satisfies the given regexp. If none found, returns an empty string.
12
+ * @throws RequestFailuresError if the procedure timeouts before any relevant message found.
13
+ */
14
+ private queryMessage;
15
+ private readonly GIVE_WS_MSG_TIME_MS;
16
+ /**
17
+ * Get an incoming ws message that satisfies the given regex, out of all already received incoming ws messages.
18
+ *
19
+ * If can't find that message, then actively waiting, until procedure timeouts.
20
+ * @param regex To test the messages with
21
+ * @param timeout Milliseconds for the procedure to find a message
22
+ * @returns ws message as string or undefined if timed out
23
+ */
24
+ private getWSMessageOrTimeout;
25
+ private findMessageByRegex;
26
+ private getLastMessage;
27
+ private findLastMatchingMessage;
28
+ }
29
+ export declare const WS_TIMEOUT_MESSAGE = "Websocket waiting timeout expired";
30
+ export declare type WSExtractionData = {
31
+ messages: string[];
32
+ timeLimit: number;
33
+ };
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
+ return new (P || (P = Promise))(function (resolve, reject) {
20
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
22
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
23
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
24
+ });
25
+ };
26
+ var __generator = (this && this.__generator) || function (thisArg, body) {
27
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
28
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
29
+ function verb(n) { return function (v) { return step([n, v]); }; }
30
+ function step(op) {
31
+ if (f) throw new TypeError("Generator is already executing.");
32
+ while (_) try {
33
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
34
+ if (y = 0, t) op = [op[0] & 2, t.value];
35
+ switch (op[0]) {
36
+ case 0: case 1: t = op; break;
37
+ case 4: _.label++; return { value: op[1], done: false };
38
+ case 5: _.label++; y = op[1]; op = [0]; continue;
39
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
40
+ default:
41
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
42
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
43
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
44
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
45
+ if (t[2]) _.ops.pop();
46
+ _.trys.pop(); continue;
47
+ }
48
+ op = body.call(thisArg, _);
49
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
50
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
51
+ }
52
+ };
53
+ var __importDefault = (this && this.__importDefault) || function (mod) {
54
+ return (mod && mod.__esModule) ? mod : { "default": mod };
55
+ };
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.WS_TIMEOUT_MESSAGE = exports.WsExtractor = void 0;
58
+ var findLast_1 = __importDefault(require("lodash/findLast"));
59
+ var errors_1 = require("@loadmill/universal/dist/errors");
60
+ var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
61
+ var promise_utils_1 = require("@loadmill/universal/dist/promise-utils");
62
+ var parameter_regex_providers_1 = require("../parameter-regex-providers");
63
+ var parametrized_extractor_1 = require("./parametrized-extractor");
64
+ var regex_matcher_1 = require("./regex-matcher");
65
+ var WsExtractor = /** @class */ (function (_super) {
66
+ __extends(WsExtractor, _super);
67
+ function WsExtractor(extractionData, parameters) {
68
+ if (extractionData === void 0) { extractionData = { messages: [], timeLimit: 0 }; }
69
+ var _this = _super.call(this, parameters) || this;
70
+ Object.defineProperty(_this, "_messages", {
71
+ enumerable: true,
72
+ configurable: true,
73
+ writable: true,
74
+ value: void 0
75
+ });
76
+ Object.defineProperty(_this, "_timeLimit", {
77
+ enumerable: true,
78
+ configurable: true,
79
+ writable: true,
80
+ value: void 0
81
+ });
82
+ Object.defineProperty(_this, "_regexp", {
83
+ enumerable: true,
84
+ configurable: true,
85
+ writable: true,
86
+ value: void 0
87
+ });
88
+ Object.defineProperty(_this, "extractResolved", {
89
+ enumerable: true,
90
+ configurable: true,
91
+ writable: true,
92
+ value: function (resolvedRegex) { return __awaiter(_this, void 0, void 0, function () {
93
+ var wsMessage;
94
+ return __generator(this, function (_a) {
95
+ switch (_a.label) {
96
+ case 0:
97
+ log_1.default.debug('Resolved WS extraction regex:', resolvedRegex);
98
+ this._regexp = new RegExp(resolvedRegex || parameter_regex_providers_1.CAPTURE_ALL_REGEX);
99
+ return [4 /*yield*/, this.queryMessage()];
100
+ case 1:
101
+ wsMessage = _a.sent();
102
+ log_1.default.debug('WS message queried and found:', wsMessage);
103
+ return [2 /*return*/, regex_matcher_1.matchRegex(this._regexp, wsMessage)];
104
+ }
105
+ });
106
+ }); }
107
+ });
108
+ Object.defineProperty(_this, "GIVE_WS_MSG_TIME_MS", {
109
+ enumerable: true,
110
+ configurable: true,
111
+ writable: true,
112
+ value: 250
113
+ });
114
+ _this._messages = extractionData.messages;
115
+ _this._timeLimit = extractionData.timeLimit;
116
+ return _this;
117
+ }
118
+ /**
119
+ * Querying all received incoming WS messages by regexp.
120
+ * @returns A WS message that satisfies the given regexp. If none found, returns an empty string.
121
+ * @throws RequestFailuresError if the procedure timeouts before any relevant message found.
122
+ */
123
+ Object.defineProperty(WsExtractor.prototype, "queryMessage", {
124
+ enumerable: false,
125
+ configurable: true,
126
+ writable: true,
127
+ value: function () {
128
+ return __awaiter(this, void 0, void 0, function () {
129
+ var res;
130
+ return __generator(this, function (_a) {
131
+ switch (_a.label) {
132
+ case 0: return [4 /*yield*/, this.getWSMessageOrTimeout()];
133
+ case 1:
134
+ res = _a.sent();
135
+ if (!res) {
136
+ throw new errors_1.WebsocketError(exports.WS_TIMEOUT_MESSAGE);
137
+ }
138
+ return [2 /*return*/, res];
139
+ }
140
+ });
141
+ });
142
+ }
143
+ });
144
+ /**
145
+ * Get an incoming ws message that satisfies the given regex, out of all already received incoming ws messages.
146
+ *
147
+ * If can't find that message, then actively waiting, until procedure timeouts.
148
+ * @param regex To test the messages with
149
+ * @param timeout Milliseconds for the procedure to find a message
150
+ * @returns ws message as string or undefined if timed out
151
+ */
152
+ Object.defineProperty(WsExtractor.prototype, "getWSMessageOrTimeout", {
153
+ enumerable: false,
154
+ configurable: true,
155
+ writable: true,
156
+ value: function () {
157
+ return __awaiter(this, void 0, void 0, function () {
158
+ var startTime, message, elapsedTime;
159
+ return __generator(this, function (_a) {
160
+ switch (_a.label) {
161
+ case 0:
162
+ startTime = Date.now();
163
+ message = '';
164
+ elapsedTime = 0;
165
+ _a.label = 1;
166
+ case 1:
167
+ if (!(!message && elapsedTime < this._timeLimit)) return [3 /*break*/, 3];
168
+ message = this.findMessageByRegex() || '';
169
+ if (message) {
170
+ return [3 /*break*/, 3];
171
+ }
172
+ return [4 /*yield*/, promise_utils_1.delay(this.GIVE_WS_MSG_TIME_MS)];
173
+ case 2:
174
+ _a.sent();
175
+ elapsedTime = Date.now() - startTime;
176
+ return [3 /*break*/, 1];
177
+ case 3: return [2 /*return*/, message];
178
+ }
179
+ });
180
+ });
181
+ }
182
+ });
183
+ Object.defineProperty(WsExtractor.prototype, "findMessageByRegex", {
184
+ enumerable: false,
185
+ configurable: true,
186
+ writable: true,
187
+ value: function () {
188
+ if (parameter_regex_providers_1.isCaptureAllRegExp(this._regexp)) {
189
+ return this.getLastMessage();
190
+ }
191
+ return this.findLastMatchingMessage();
192
+ }
193
+ });
194
+ Object.defineProperty(WsExtractor.prototype, "getLastMessage", {
195
+ enumerable: false,
196
+ configurable: true,
197
+ writable: true,
198
+ value: function () {
199
+ return this._messages[this._messages.length - 1];
200
+ }
201
+ });
202
+ Object.defineProperty(WsExtractor.prototype, "findLastMatchingMessage", {
203
+ enumerable: false,
204
+ configurable: true,
205
+ writable: true,
206
+ value: function () {
207
+ var _this = this;
208
+ return findLast_1.default(this._messages, function (msg) { return _this._regexp.test(msg); });
209
+ }
210
+ });
211
+ return WsExtractor;
212
+ }(parametrized_extractor_1.ParametrizedExtractor));
213
+ exports.WsExtractor = WsExtractor;
214
+ exports.WS_TIMEOUT_MESSAGE = 'Websocket waiting timeout expired';
215
+ //# sourceMappingURL=ws-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-extractor.js","sourceRoot":"","sources":["../../../src/parameters/extractors/ws-extractor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6DAAuC;AACvC,0DAAiE;AACjE,qEAA+C;AAC/C,wEAA+D;AAC/D,0EAAqF;AAErF,mEAAiE;AACjE,iDAA6C;AAE7C;IAAiC,+BAAqB;IAIpD,qBACE,cAAiE,EACjE,UAAsB;QADtB,+BAAA,EAAA,mBAAqC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;QADnE,YAIE,kBAAM,UAAU,CAAC,SAGlB;QAVD;;;;;WAAqC;QACrC;;;;;WAAoC;QACpC;;;;;WAAwB;QAUxB;;;;mBAAkB,UAAO,aAAqB;;;;;4BAC5C,aAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,aAAa,CAAC,CAAC;4BAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,aAAa,IAAI,6CAAiB,CAAC,CAAC;4BAC5C,qBAAM,IAAI,CAAC,YAAY,EAAE,EAAA;;4BAArC,SAAS,GAAG,SAAyB;4BAC3C,aAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,SAAS,CAAC,CAAC;4BAEtD,sBAAO,0BAAU,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAC;;;iBAC5C;WAAC;QAeF;;;;mBAAuC,GAAG;WAAC;QA1BzC,KAAI,CAAC,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC;QACzC,KAAI,CAAC,UAAU,GAAG,cAAc,CAAC,SAAS,CAAC;;IAC7C,CAAC;IAWD;;;;OAIG;;;;;eACH;;;;;gCACc,qBAAM,IAAI,CAAC,qBAAqB,EAAE,EAAA;;4BAAxC,GAAG,GAAG,SAAkC;4BAC9C,IAAI,CAAC,GAAG,EAAE;gCACR,MAAM,IAAI,uBAAc,CAAC,0BAAkB,CAAC,CAAC;6BAC9C;4BACD,sBAAO,GAAG,EAAC;;;;SACZ;;IAID;;;;;;;OAOG;;;;;eACH;;;;;;4BACQ,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BACzB,OAAO,GAAG,EAAE,CAAC;4BACb,WAAW,GAAG,CAAC,CAAC;;;iCAEb,CAAA,CAAC,OAAO,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,CAAA;4BAC9C,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;4BAC1C,IAAI,OAAO,EAAE;gCACX,wBAAM;6BACP;4BAED,qBAAM,qBAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAA;;4BAArC,SAAqC,CAAC;4BACtC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;;gCAEvC,sBAAO,OAAO,EAAC;;;;SAChB;;;;;;eAED;YACE,IAAI,8CAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;aAC9B;YACD,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACxC,CAAC;;;;;;eAED;YACE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnD,CAAC;;;;;;eAED;YAAA,iBAEC;YADC,OAAO,kBAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAtB,CAAsB,CAAC,CAAC;QACjE,CAAC;;IACH,kBAAC;AAAD,CAAC,AA5ED,CAAiC,8CAAqB,GA4ErD;AA5EY,kCAAW;AA8EX,QAAA,kBAAkB,GAAG,mCAAmC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Parameters } from '../type';
2
+ import { ParametrizedExtractor } from './parametrized-extractor';
3
+ export declare class XPathExtractor extends ParametrizedExtractor {
4
+ private $;
5
+ private select;
6
+ constructor(target: string, parameters: Parameters);
7
+ extractResolved: (resolvedXPath: string) => string;
8
+ private getSelectUsingNameSpaces;
9
+ }
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ if (typeof b !== "function" && b !== null)
11
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
+ extendStatics(d, b);
13
+ function __() { this.constructor = d; }
14
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
+ };
16
+ })();
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.XPathExtractor = void 0;
22
+ var xpath_1 = __importDefault(require("xpath"));
23
+ var xmldom_1 = require("@xmldom/xmldom");
24
+ var parametrized_extractor_1 = require("./parametrized-extractor");
25
+ var XPathExtractor = /** @class */ (function (_super) {
26
+ __extends(XPathExtractor, _super);
27
+ function XPathExtractor(target, parameters) {
28
+ var _this = _super.call(this, parameters) || this;
29
+ Object.defineProperty(_this, "$", {
30
+ enumerable: true,
31
+ configurable: true,
32
+ writable: true,
33
+ value: void 0
34
+ });
35
+ Object.defineProperty(_this, "select", {
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true,
39
+ value: void 0
40
+ });
41
+ Object.defineProperty(_this, "extractResolved", {
42
+ enumerable: true,
43
+ configurable: true,
44
+ writable: true,
45
+ value: function (resolvedXPath) {
46
+ var res = _this.select(resolvedXPath, _this.$).toString();
47
+ return res;
48
+ }
49
+ });
50
+ _this.$ = new xmldom_1.DOMParser().parseFromString(target, 'text/xml');
51
+ _this.select = _this.getSelectUsingNameSpaces();
52
+ return _this;
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
+ });
68
+ return XPathExtractor;
69
+ }(parametrized_extractor_1.ParametrizedExtractor));
70
+ exports.XPathExtractor = XPathExtractor;
71
+ //# sourceMappingURL=x-path-extractor.js.map
@@ -0,0 +1 @@
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"}