@loadmill/core 0.3.139 → 0.3.141

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 (232) hide show
  1. package/dist/assertions/index.d.ts +32 -0
  2. package/dist/assertions/index.js +52 -0
  3. package/dist/assertions/index.js.map +1 -0
  4. package/dist/code-step/index.d.ts +23 -0
  5. package/dist/code-step/index.js +97 -0
  6. package/dist/code-step/index.js.map +1 -0
  7. package/dist/conf/defaults.d.ts +1 -0
  8. package/dist/conf/defaults.js +11 -0
  9. package/dist/conf/defaults.js.map +1 -0
  10. package/dist/conf/extrema.d.ts +7 -0
  11. package/dist/conf/extrema.js +12 -0
  12. package/dist/conf/extrema.js.map +1 -0
  13. package/dist/conf/index.d.ts +15 -0
  14. package/dist/conf/index.js +80 -0
  15. package/dist/conf/index.js.map +1 -0
  16. package/dist/conf/notifications.d.ts +2 -0
  17. package/dist/conf/notifications.js +19 -0
  18. package/dist/conf/notifications.js.map +1 -0
  19. package/dist/conf/types.d.ts +122 -0
  20. package/dist/conf/types.js +38 -0
  21. package/dist/conf/types.js.map +1 -0
  22. package/dist/conf/validate.d.ts +69 -0
  23. package/dist/conf/validate.js +509 -0
  24. package/dist/conf/validate.js.map +1 -0
  25. package/dist/distributed-logger-reporter.d.ts +3 -0
  26. package/dist/distributed-logger-reporter.js +74 -0
  27. package/dist/distributed-logger-reporter.js.map +1 -0
  28. package/dist/echo/firehose.d.ts +7 -0
  29. package/dist/echo/firehose.js +130 -0
  30. package/dist/echo/firehose.js.map +1 -0
  31. package/dist/echo/index.d.ts +3 -0
  32. package/dist/echo/index.js +8 -0
  33. package/dist/echo/index.js.map +1 -0
  34. package/dist/echo/stats.d.ts +8 -0
  35. package/dist/echo/stats.js +152 -0
  36. package/dist/echo/stats.js.map +1 -0
  37. package/dist/extract-and-assert-step/index.d.ts +29 -0
  38. package/dist/extract-and-assert-step/index.js +108 -0
  39. package/dist/extract-and-assert-step/index.js.map +1 -0
  40. package/dist/extractions/index.d.ts +36 -0
  41. package/dist/extractions/index.js +49 -0
  42. package/dist/extractions/index.js.map +1 -0
  43. package/dist/har/index.d.ts +71 -0
  44. package/dist/har/index.js +61 -0
  45. package/dist/har/index.js.map +1 -0
  46. package/dist/labels/constants.d.ts +1 -0
  47. package/dist/labels/constants.js +5 -0
  48. package/dist/labels/constants.js.map +1 -0
  49. package/dist/multipart-form-data/files.d.ts +2 -0
  50. package/dist/multipart-form-data/files.js +63 -0
  51. package/dist/multipart-form-data/files.js.map +1 -0
  52. package/dist/multipart-form-data/form-data-utils.d.ts +19 -0
  53. package/dist/multipart-form-data/form-data-utils.js +118 -0
  54. package/dist/multipart-form-data/form-data-utils.js.map +1 -0
  55. package/dist/multipart-form-data/is-binary-file.d.ts +2 -0
  56. package/dist/multipart-form-data/is-binary-file.js +215 -0
  57. package/dist/multipart-form-data/is-binary-file.js.map +1 -0
  58. package/dist/multipart-form-data/multipart-text-to-post-form-data.d.ts +3 -0
  59. package/dist/multipart-form-data/multipart-text-to-post-form-data.js +93 -0
  60. package/dist/multipart-form-data/multipart-text-to-post-form-data.js.map +1 -0
  61. package/dist/parameters/extractions.d.ts +27 -0
  62. package/dist/parameters/extractions.js +51 -0
  63. package/dist/parameters/extractions.js.map +1 -0
  64. package/dist/parameters/extractors/cheerio-extractor.d.ts +11 -0
  65. package/dist/parameters/extractors/cheerio-extractor.js +84 -0
  66. package/dist/parameters/extractors/cheerio-extractor.js.map +1 -0
  67. package/dist/parameters/extractors/expression-extractor.d.ts +6 -0
  68. package/dist/parameters/extractors/expression-extractor.js +38 -0
  69. package/dist/parameters/extractors/expression-extractor.js.map +1 -0
  70. package/dist/parameters/extractors/extractor.d.ts +3 -0
  71. package/dist/parameters/extractors/extractor.js +3 -0
  72. package/dist/parameters/extractors/extractor.js.map +1 -0
  73. package/dist/parameters/extractors/header-extractor.d.ts +7 -0
  74. package/dist/parameters/extractors/header-extractor.js +51 -0
  75. package/dist/parameters/extractors/header-extractor.js.map +1 -0
  76. package/dist/parameters/extractors/index.d.ts +10 -0
  77. package/dist/parameters/extractors/index.js +20 -0
  78. package/dist/parameters/extractors/index.js.map +1 -0
  79. package/dist/parameters/extractors/json-path-extractor.d.ts +11 -0
  80. package/dist/parameters/extractors/json-path-extractor.js +127 -0
  81. package/dist/parameters/extractors/json-path-extractor.js.map +1 -0
  82. package/dist/parameters/extractors/parametrized-extractor.d.ts +10 -0
  83. package/dist/parameters/extractors/parametrized-extractor.js +34 -0
  84. package/dist/parameters/extractors/parametrized-extractor.js.map +1 -0
  85. package/dist/parameters/extractors/regex-extractor.d.ts +7 -0
  86. package/dist/parameters/extractors/regex-extractor.js +46 -0
  87. package/dist/parameters/extractors/regex-extractor.js.map +1 -0
  88. package/dist/parameters/extractors/regex-matcher.d.ts +1 -0
  89. package/dist/parameters/extractors/regex-matcher.js +22 -0
  90. package/dist/parameters/extractors/regex-matcher.js.map +1 -0
  91. package/dist/parameters/extractors/ws-extractor.d.ts +33 -0
  92. package/dist/parameters/extractors/ws-extractor.js +215 -0
  93. package/dist/parameters/extractors/ws-extractor.js.map +1 -0
  94. package/dist/parameters/extractors/x-path-extractor.d.ts +9 -0
  95. package/dist/parameters/extractors/x-path-extractor.js +77 -0
  96. package/dist/parameters/extractors/x-path-extractor.js.map +1 -0
  97. package/dist/parameters/generate-random.d.ts +13 -0
  98. package/dist/parameters/generate-random.js +108 -0
  99. package/dist/parameters/generate-random.js.map +1 -0
  100. package/dist/parameters/html-utils.d.ts +1 -0
  101. package/dist/parameters/html-utils.js +18 -0
  102. package/dist/parameters/html-utils.js.map +1 -0
  103. package/dist/parameters/index.d.ts +94 -0
  104. package/dist/parameters/index.js +619 -0
  105. package/dist/parameters/index.js.map +1 -0
  106. package/dist/parameters/json-path-utils.d.ts +1 -0
  107. package/dist/parameters/json-path-utils.js +16 -0
  108. package/dist/parameters/json-path-utils.js.map +1 -0
  109. package/dist/parameters/operators/binary-operator.d.ts +13 -0
  110. package/dist/parameters/operators/binary-operator.js +39 -0
  111. package/dist/parameters/operators/binary-operator.js.map +1 -0
  112. package/dist/parameters/operators/index.d.ts +5 -0
  113. package/dist/parameters/operators/index.js +21 -0
  114. package/dist/parameters/operators/index.js.map +1 -0
  115. package/dist/parameters/parameter-functions/aws-cognito.d.ts +3 -0
  116. package/dist/parameters/parameter-functions/aws-cognito.js +119 -0
  117. package/dist/parameters/parameter-functions/aws-cognito.js.map +1 -0
  118. package/dist/parameters/parameter-functions/boolean-parameter-functions.d.ts +12 -0
  119. package/dist/parameters/parameter-functions/boolean-parameter-functions.js +47 -0
  120. package/dist/parameters/parameter-functions/boolean-parameter-functions.js.map +1 -0
  121. package/dist/parameters/parameter-functions/crypto.d.ts +11 -0
  122. package/dist/parameters/parameter-functions/crypto.js +71 -0
  123. package/dist/parameters/parameter-functions/crypto.js.map +1 -0
  124. package/dist/parameters/parameter-functions/json-schema.d.ts +1 -0
  125. package/dist/parameters/parameter-functions/json-schema.js +33 -0
  126. package/dist/parameters/parameter-functions/json-schema.js.map +1 -0
  127. package/dist/parameters/parameter-functions/numeric-input-parameter-functions.d.ts +11 -0
  128. package/dist/parameters/parameter-functions/numeric-input-parameter-functions.js +34 -0
  129. package/dist/parameters/parameter-functions/numeric-input-parameter-functions.js.map +1 -0
  130. package/dist/parameters/parameter-functions/numeric-parameter-functions.d.ts +15 -0
  131. package/dist/parameters/parameter-functions/numeric-parameter-functions.js +56 -0
  132. package/dist/parameters/parameter-functions/numeric-parameter-functions.js.map +1 -0
  133. package/dist/parameters/parameter-functions/parameter-function-utils.d.ts +5 -0
  134. package/dist/parameters/parameter-functions/parameter-function-utils.js +82 -0
  135. package/dist/parameters/parameter-functions/parameter-function-utils.js.map +1 -0
  136. package/dist/parameters/parameter-functions/parameter-function.d.ts +6 -0
  137. package/dist/parameters/parameter-functions/parameter-function.js +28 -0
  138. package/dist/parameters/parameter-functions/parameter-function.js.map +1 -0
  139. package/dist/parameters/parameter-functions/parameter-functions.d.ts +7 -0
  140. package/dist/parameters/parameter-functions/parameter-functions.js +53 -0
  141. package/dist/parameters/parameter-functions/parameter-functions.js.map +1 -0
  142. package/dist/parameters/parameter-functions/random-parameter-functions.d.ts +1 -0
  143. package/dist/parameters/parameter-functions/random-parameter-functions.js +43 -0
  144. package/dist/parameters/parameter-functions/random-parameter-functions.js.map +1 -0
  145. package/dist/parameters/parameter-functions/textual-parameter-functions.d.ts +72 -0
  146. package/dist/parameters/parameter-functions/textual-parameter-functions.js +389 -0
  147. package/dist/parameters/parameter-functions/textual-parameter-functions.js.map +1 -0
  148. package/dist/parameters/parameter-name-utils.d.ts +6 -0
  149. package/dist/parameters/parameter-name-utils.js +124 -0
  150. package/dist/parameters/parameter-name-utils.js.map +1 -0
  151. package/dist/parameters/parameter-regex-providers.d.ts +24 -0
  152. package/dist/parameters/parameter-regex-providers.js +70 -0
  153. package/dist/parameters/parameter-regex-providers.js.map +1 -0
  154. package/dist/parameters/resolvers/random-parameters-resolver.d.ts +1 -0
  155. package/dist/parameters/resolvers/random-parameters-resolver.js +12 -0
  156. package/dist/parameters/resolvers/random-parameters-resolver.js.map +1 -0
  157. package/dist/parameters/type.d.ts +10 -0
  158. package/dist/parameters/type.js +9 -0
  159. package/dist/parameters/type.js.map +1 -0
  160. package/dist/parameters/value-utils.d.ts +5 -0
  161. package/dist/parameters/value-utils.js +44 -0
  162. package/dist/parameters/value-utils.js.map +1 -0
  163. package/dist/request/index.d.ts +174 -0
  164. package/dist/request/index.js +356 -0
  165. package/dist/request/index.js.map +1 -0
  166. package/dist/schema/json-schema-generator.d.ts +20 -0
  167. package/dist/schema/json-schema-generator.js +135 -0
  168. package/dist/schema/json-schema-generator.js.map +1 -0
  169. package/dist/signals.d.ts +4 -0
  170. package/dist/signals.js +9 -0
  171. package/dist/signals.js.map +1 -0
  172. package/dist/socket-events/index.d.ts +13 -0
  173. package/dist/socket-events/index.js +17 -0
  174. package/dist/socket-events/index.js.map +1 -0
  175. package/dist/step/assertable.d.ts +4 -0
  176. package/dist/step/assertable.js +3 -0
  177. package/dist/step/assertable.js.map +1 -0
  178. package/dist/step/codeable.d.ts +3 -0
  179. package/dist/step/codeable.js +3 -0
  180. package/dist/step/codeable.js.map +1 -0
  181. package/dist/step/extractable.d.ts +4 -0
  182. package/dist/step/extractable.js +3 -0
  183. package/dist/step/extractable.js.map +1 -0
  184. package/dist/step/index.d.ts +72 -0
  185. package/dist/step/index.js +71 -0
  186. package/dist/step/index.js.map +1 -0
  187. package/dist/step/step-type.d.ts +4 -0
  188. package/dist/step/step-type.js +3 -0
  189. package/dist/step/step-type.js.map +1 -0
  190. package/dist/step/type-guards.d.ts +7 -0
  191. package/dist/step/type-guards.js +18 -0
  192. package/dist/step/type-guards.js.map +1 -0
  193. package/dist/subset/index.d.ts +3 -0
  194. package/dist/subset/index.js +8 -0
  195. package/dist/subset/index.js.map +1 -0
  196. package/dist/subset/is-subset.d.ts +2 -0
  197. package/dist/subset/is-subset.js +29 -0
  198. package/dist/subset/is-subset.js.map +1 -0
  199. package/dist/subset/json-contains.d.ts +1 -0
  200. package/dist/subset/json-contains.js +24 -0
  201. package/dist/subset/json-contains.js.map +1 -0
  202. package/dist/team-options/constants.d.ts +3 -0
  203. package/dist/team-options/constants.js +7 -0
  204. package/dist/team-options/constants.js.map +1 -0
  205. package/dist/xml/decode.d.ts +2 -0
  206. package/dist/xml/decode.js +91 -0
  207. package/dist/xml/decode.js.map +1 -0
  208. package/dist/xml/encode.d.ts +1 -0
  209. package/dist/xml/encode.js +14 -0
  210. package/dist/xml/encode.js.map +1 -0
  211. package/dist/xml/escape-reserved-chars.d.ts +6 -0
  212. package/dist/xml/escape-reserved-chars.js +57 -0
  213. package/dist/xml/escape-reserved-chars.js.map +1 -0
  214. package/dist/xml/is-xml.d.ts +1 -0
  215. package/dist/xml/is-xml.js +9 -0
  216. package/dist/xml/is-xml.js.map +1 -0
  217. package/dist/xml/json-to-xml.d.ts +2 -0
  218. package/dist/xml/json-to-xml.js +11 -0
  219. package/dist/xml/json-to-xml.js.map +1 -0
  220. package/dist/xml/namespaces.d.ts +7 -0
  221. package/dist/xml/namespaces.js +16 -0
  222. package/dist/xml/namespaces.js.map +1 -0
  223. package/dist/xml/remove-invisible-chars.d.ts +2 -0
  224. package/dist/xml/remove-invisible-chars.js +13 -0
  225. package/dist/xml/remove-invisible-chars.js.map +1 -0
  226. package/dist/xml/replace-s-tags.d.ts +4 -0
  227. package/dist/xml/replace-s-tags.js +21 -0
  228. package/dist/xml/replace-s-tags.js.map +1 -0
  229. package/dist/xml/xml-to-json.d.ts +7 -0
  230. package/dist/xml/xml-to-json.js +21 -0
  231. package/dist/xml/xml-to-json.js.map +1 -0
  232. package/package.json +3 -2
@@ -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 === null || wsMessage === void 0 ? void 0 : wsMessage.toString());
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,aAAT,SAAS,uBAAT,SAAS,CAAE,QAAQ,EAAE,CAAC,CAAC;4BAElE,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,77 @@
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 errors_1 = require("@loadmill/universal/dist/errors");
26
+ var XPathExtractor = /** @class */ (function (_super) {
27
+ __extends(XPathExtractor, _super);
28
+ function XPathExtractor(target, parameters) {
29
+ var _this = _super.call(this, parameters) || this;
30
+ Object.defineProperty(_this, "$", {
31
+ enumerable: true,
32
+ configurable: true,
33
+ writable: true,
34
+ value: void 0
35
+ });
36
+ Object.defineProperty(_this, "select", {
37
+ enumerable: true,
38
+ configurable: true,
39
+ writable: true,
40
+ value: void 0
41
+ });
42
+ Object.defineProperty(_this, "extractResolved", {
43
+ enumerable: true,
44
+ configurable: true,
45
+ writable: true,
46
+ value: function (resolvedXPath) {
47
+ var res = _this.select(resolvedXPath, _this.$).toString();
48
+ return res;
49
+ }
50
+ });
51
+ try {
52
+ _this.$ = new xmldom_1.DOMParser().parseFromString(target, 'text/xml');
53
+ }
54
+ catch (e) {
55
+ throw new errors_1.PresentableError("Failed to parse XML: " + e.message);
56
+ }
57
+ _this.select = _this.getSelectUsingNameSpaces();
58
+ return _this;
59
+ }
60
+ Object.defineProperty(XPathExtractor.prototype, "getSelectUsingNameSpaces", {
61
+ enumerable: false,
62
+ configurable: true,
63
+ writable: true,
64
+ value: function () {
65
+ var namespaces = {};
66
+ var namespaceAttributes = xpath_1.default.select('//@*[starts-with(name(), \'xmlns\')]', this.$);
67
+ namespaceAttributes.forEach(function (attr) {
68
+ var prefix = attr.nodeName.startsWith('xmlns:') ? attr.nodeName.split(':')[1] : 'default';
69
+ namespaces[prefix] = attr.nodeValue;
70
+ });
71
+ return xpath_1.default.useNamespaces(namespaces);
72
+ }
73
+ });
74
+ return XPathExtractor;
75
+ }(parametrized_extractor_1.ParametrizedExtractor));
76
+ exports.XPathExtractor = XPathExtractor;
77
+ //# 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;AACjE,0DAAmE;AAEnE;IAAoC,kCAAqB;IAIvD,wBAAY,MAAc,EAAE,UAAsB;QAAlD,YACE,kBAAM,UAAU,CAAC,SAOlB;QAXD;;;;;WAAoB;QACpB;;;;;WAAkC;QAYlC;;;;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;QAbA,IAAI;YACF,KAAI,CAAC,CAAC,GAAG,IAAI,kBAAS,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;SAC9D;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,IAAI,yBAAgB,CAAC,0BAAwB,CAAC,CAAC,OAAS,CAAC,CAAC;SACjE;QACD,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,AAhCD,CAAoC,8CAAqB,GAgCxD;AAhCY,wCAAc"}
@@ -0,0 +1,13 @@
1
+ export declare enum RandomTypes {
2
+ hex = "hex",
3
+ uuid = "uuid",
4
+ from = "from",
5
+ chars = "chars",
6
+ number = "number",
7
+ digits = "digits",
8
+ uppers = "uppers",
9
+ lowers = "lowers",
10
+ letters = "letters",
11
+ boolean = "boolean"
12
+ }
13
+ export declare function generateRandom(kind: string, arg1?: string, arg2?: string): any;
@@ -0,0 +1,108 @@
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.generateRandom = exports.RandomTypes = void 0;
7
+ var uuid_1 = __importDefault(require("uuid"));
8
+ var randomstring_1 = __importDefault(require("randomstring"));
9
+ var clamp = require("lodash/clamp");
10
+ var random = require("lodash/random");
11
+ var value_utils_1 = require("./value-utils");
12
+ var errors_1 = require("@loadmill/universal/dist/errors");
13
+ var MAX_RANDOM_LEN = 100;
14
+ var DEFAULT_RANDOM_LEN = 10;
15
+ // 2^32
16
+ var DEFAULT_MAX_RANDOM_INT = 4294967296;
17
+ var RandomTypes;
18
+ (function (RandomTypes) {
19
+ RandomTypes["hex"] = "hex";
20
+ RandomTypes["uuid"] = "uuid";
21
+ RandomTypes["from"] = "from";
22
+ RandomTypes["chars"] = "chars";
23
+ RandomTypes["number"] = "number";
24
+ RandomTypes["digits"] = "digits";
25
+ RandomTypes["uppers"] = "uppers";
26
+ RandomTypes["lowers"] = "lowers";
27
+ RandomTypes["letters"] = "letters";
28
+ RandomTypes["boolean"] = "boolean";
29
+ })(RandomTypes = exports.RandomTypes || (exports.RandomTypes = {}));
30
+ function generateRandom(kind, arg1, arg2) {
31
+ if (!kind) {
32
+ return null;
33
+ }
34
+ if (kind === RandomTypes.uuid) {
35
+ return uuid_1.default.v4();
36
+ }
37
+ else if (kind === RandomTypes.number) {
38
+ var min = 0, max = DEFAULT_MAX_RANDOM_INT;
39
+ if (arg2) {
40
+ min = nonNegativeInt(arg1);
41
+ max = nonNegativeInt(arg2);
42
+ if (min > max) {
43
+ var temp = min;
44
+ min = max;
45
+ max = temp;
46
+ }
47
+ }
48
+ else if (arg1) {
49
+ max = nonNegativeInt(arg1);
50
+ }
51
+ // Assumes both are integers!
52
+ return random(min, max);
53
+ }
54
+ else if (kind === RandomTypes.boolean) {
55
+ var probability = nonNegativeInt(arg1, 50) / 100;
56
+ return (probability >= 1 ||
57
+ (probability !== 0 && Math.random() <= probability)).toString();
58
+ }
59
+ else {
60
+ var length_1 = nonNegativeInt(kind === RandomTypes.from ? arg2 : arg1, DEFAULT_RANDOM_LEN);
61
+ var options = {
62
+ length: clamp(length_1, 0, MAX_RANDOM_LEN),
63
+ };
64
+ if (kind === RandomTypes.chars) {
65
+ options.charset = 'alphanumeric';
66
+ }
67
+ else if (kind === RandomTypes.digits) {
68
+ options.charset = 'numeric';
69
+ }
70
+ else if (kind === RandomTypes.hex) {
71
+ options.charset = 'hex';
72
+ }
73
+ else if (kind === RandomTypes.letters ||
74
+ kind === RandomTypes.lowers ||
75
+ kind === RandomTypes.uppers) {
76
+ options.charset = 'alphabetic';
77
+ if (kind !== RandomTypes.letters) {
78
+ options.capitalization =
79
+ kind === RandomTypes.lowers ? 'lowercase' : 'uppercase';
80
+ }
81
+ }
82
+ else if (kind === RandomTypes.from) {
83
+ if (!arg1) {
84
+ return null;
85
+ }
86
+ options.charset = arg1;
87
+ }
88
+ else {
89
+ options.charset = kind;
90
+ }
91
+ return randomstring_1.default.generate(options);
92
+ }
93
+ }
94
+ exports.generateRandom = generateRandom;
95
+ function nonNegativeInt(arg, def) {
96
+ var value;
97
+ if (!arg) {
98
+ value = def;
99
+ }
100
+ else {
101
+ value = value_utils_1.parameterValueToNumber(arg, { integer: true, nonNegative: true });
102
+ }
103
+ if (value == null) {
104
+ throw new errors_1.PresentableError('Argument must be a non-negative integer, instead found: ' + arg);
105
+ }
106
+ return value;
107
+ }
108
+ //# sourceMappingURL=generate-random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-random.js","sourceRoot":"","sources":["../../src/parameters/generate-random.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const getCsrfTokensByRegexp: (data: string) => RegExpExecArray[];
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCsrfTokensByRegexp = void 0;
4
+ var parameter_regex_providers_1 = require("./parameter-regex-providers");
5
+ var MAX_CSRF_REGEX_ITERATIONS = 1000;
6
+ var getCsrfTokensByRegexp = function (data) {
7
+ var regex = new RegExp(parameter_regex_providers_1.CSRF_REGEXP, 'gm');
8
+ var matches = [];
9
+ var match = regex.exec(data);
10
+ var iterations = 0;
11
+ while (match && iterations++ < MAX_CSRF_REGEX_ITERATIONS) {
12
+ matches.push(match);
13
+ match = regex.exec(data);
14
+ }
15
+ return matches;
16
+ };
17
+ exports.getCsrfTokensByRegexp = getCsrfTokensByRegexp;
18
+ //# sourceMappingURL=html-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"html-utils.js","sourceRoot":"","sources":["../../src/parameters/html-utils.ts"],"names":[],"mappings":";;;AAAA,yEAA0D;AAE1D,IAAM,yBAAyB,GAAG,IAAI,CAAC;AAChC,IAAM,qBAAqB,GAAG,UAAC,IAAY;IAChD,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,uCAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,OAAO,KAAK,IAAI,UAAU,EAAE,GAAG,yBAAyB,EAAE;QACxD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC1B;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAVW,QAAA,qBAAqB,yBAUhC"}
@@ -0,0 +1,94 @@
1
+ import { Parameters, ParametersScope, SequenceExecutorParameters } from './type';
2
+ import * as valueUtils from './value-utils';
3
+ import { parameterFunctionOperations } from './parameter-functions/parameter-functions';
4
+ import { usageRegExpProvider, LEGAL_PARAM_CHARS, CAPTURE_REGEX, CSRF_REGEXP, CSRF_REGEXP_SUFFIX } from './parameter-regex-providers';
5
+ import { PresentableError } from '@loadmill/universal/dist/errors';
6
+ import { Assertions } from '../assertions';
7
+ import { Extractions } from '../extractions';
8
+ import { TestConfLike } from '../conf';
9
+ import { getLongestJsonPathToken } from './json-path-utils';
10
+ import { replaceInvalidCharactersParamName, humanizeJSONPath, ordinal, pathToArray } from './parameter-name-utils';
11
+ import { getCsrfTokensByRegexp } from './html-utils';
12
+ import { Step } from '../step/step-type';
13
+ export declare const BUILT_IN_VOLATILE_PARAMS: {
14
+ requestBody: string;
15
+ requestURL: string;
16
+ requestMethod: string;
17
+ responseBody: string;
18
+ };
19
+ export declare const BUILT_IN_PARAMS: {
20
+ requestBody: string;
21
+ requestURL: string;
22
+ requestMethod: string;
23
+ responseBody: string;
24
+ testDraftId: string;
25
+ launchedBy: string;
26
+ launchedByUserId: string;
27
+ launchedByTeamId: string;
28
+ requestStartTime: string;
29
+ responseEndTime: string;
30
+ responseTime: string;
31
+ status: string;
32
+ statusText: string;
33
+ testRunId: string;
34
+ testStartTime: string;
35
+ };
36
+ export declare const MAX_PARAM_ARRAY_SIZE = 100;
37
+ export { CAPTURE_REGEX, getLongestJsonPathToken, LEGAL_PARAM_CHARS, parameterFunctionOperations, Parameters, ParametersScope, PresentableError, SequenceExecutorParameters, usageRegExpProvider, valueUtils, CSRF_REGEXP, CSRF_REGEXP_SUFFIX, getCsrfTokensByRegexp, replaceInvalidCharactersParamName, humanizeJSONPath, ordinal, pathToArray };
38
+ export declare class ParameterError extends PresentableError {
39
+ readonly prettyError: string;
40
+ readonly parameter: Parameters;
41
+ constructor(prettyError: string, parameter: Parameters);
42
+ }
43
+ export declare const parameterUtils: {
44
+ isParametrized(expression: string): any;
45
+ resolveAllExpressions(parameters: Parameters[]): Parameters;
46
+ resolveParameter(parameterName: string, parameters: Parameters, onError?: any): any;
47
+ resolveExpression(parametrized: string, parameters: Parameters | Parameters[], onError?: any): string;
48
+ addParamToArray(key: any, value: any, arr: any): void;
49
+ findIndex(key: any, arr: any): any;
50
+ getParametersRegexGroups(src: string): {
51
+ functionGroupingRegexp: RegExp;
52
+ operatorsGroupingRegexp: RegExp;
53
+ };
54
+ suggestNewParamName(paramKey: any, flowConfParameters: any): any;
55
+ /** Search any parameters with the following patterns:
56
+ * ${param1}
57
+ * ${__encode_url(param1)}
58
+ * ${__if_then_else(param12,'good','bad')}
59
+ */
60
+ searchParameterizedExpressionOccurrences(parameterName: string, data: string): Array<string>;
61
+ getUsedConfParams(conf: TestConfLike, parameters: Parameters[]): Parameters[];
62
+ getUsedStepParams(step: Step, parameters: Parameters[]): Parameters[];
63
+ getValueByKeyFromArr(key: string, parameters?: Parameters[] | undefined, returnArray?: boolean): any;
64
+ pickFirstValue(p: Parameters): Parameters;
65
+ getParameterValue(parameter: Parameters): string | string[];
66
+ getParameterName(parameter: Parameters | Extractions): string;
67
+ getParametersNames(parameters: Parameters[]): string[];
68
+ setParameterValue(name: string, value: string | string[], parameters: Parameters[]): void;
69
+ getUsedRequestParamNames(stringifiedRequest: string): string[];
70
+ deleteAllSrcElementsFromParamArr(paramArr: any, src: any): void;
71
+ removeParameterFromArrayByKey(src: any, paramArr: any): void;
72
+ isParamKeyInArr(key: any, arr: any): boolean;
73
+ /**
74
+ * Returns a Parameter ({name:value}) obj with the given value to search for.
75
+ * if non found, returns undefined
76
+ * @param value string | string[]
77
+ * @param arr Parameters[]
78
+ */
79
+ findParamValueInArr(value: any, arr: any): any;
80
+ findParametersSimilarityByRegex(value: any, arr: Parameters[] | undefined, regex: any): Parameters | undefined;
81
+ findUsedParameters(suiteParameters: Parameters[], param: Parameters, usedParameters: Parameters[]): Parameters[];
82
+ applyJSONSchema(instance: any, schema: any): boolean;
83
+ isUsingParameterizedValue(value: string): boolean;
84
+ getRunPostParameters(redactableResult: any): any;
85
+ };
86
+ export declare const stripToFunctionAndArgs: (s: string) => string[];
87
+ export declare const stripParam: (s: string) => string;
88
+ export declare const searchExpressionOccurrences: (s: string) => string[];
89
+ export declare const getTokensWithoutOperators: (paramOccurrence: string) => string[];
90
+ export declare function isParamUsedInConf(paramName: string, conf: TestConfLike, stringifyConf: string): boolean;
91
+ export declare function isParamNameUsedInAssertionValue(paramName: string, assertions?: Assertions): boolean;
92
+ export declare function removeNonStringParameters(conf: any): void;
93
+ export declare const DATA_REDACTED = "Redacted";
94
+ export declare function redactPostParameters(postParameters?: Parameters[], sensitiveKeys?: string[]): void;