@loadmill/executer 0.1.140 → 0.1.142

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 (259) hide show
  1. package/dist/asserter.d.ts +9 -0
  2. package/dist/asserter.js +158 -0
  3. package/dist/asserter.js.map +1 -0
  4. package/dist/constants.d.ts +7 -0
  5. package/dist/constants.js +13 -0
  6. package/dist/constants.js.map +1 -0
  7. package/dist/cookies.d.ts +4 -0
  8. package/dist/cookies.js +79 -0
  9. package/dist/cookies.js.map +1 -0
  10. package/dist/errors.d.ts +5 -0
  11. package/dist/errors.js +38 -0
  12. package/dist/errors.js.map +1 -0
  13. package/dist/extraction-combiner.d.ts +17 -0
  14. package/dist/extraction-combiner.js +182 -0
  15. package/dist/extraction-combiner.js.map +1 -0
  16. package/dist/failures.d.ts +24 -0
  17. package/dist/failures.js +67 -0
  18. package/dist/failures.js.map +1 -0
  19. package/dist/grpc.d.ts +34 -0
  20. package/dist/grpc.js +269 -0
  21. package/dist/grpc.js.map +1 -0
  22. package/dist/iteration-stats.d.ts +2 -0
  23. package/dist/iteration-stats.js +38 -0
  24. package/dist/iteration-stats.js.map +1 -0
  25. package/dist/message-creators.d.ts +31 -0
  26. package/dist/message-creators.js +90 -0
  27. package/dist/message-creators.js.map +1 -0
  28. package/dist/mill-info.d.ts +70 -0
  29. package/dist/mill-info.js +3 -0
  30. package/dist/mill-info.js.map +1 -0
  31. package/dist/mill-version.d.ts +6 -0
  32. package/dist/mill-version.js +10 -0
  33. package/dist/mill-version.js.map +1 -0
  34. package/dist/parameter-pools.d.ts +3 -0
  35. package/dist/parameter-pools.js +69 -0
  36. package/dist/parameter-pools.js.map +1 -0
  37. package/dist/performance.d.ts +1 -0
  38. package/dist/performance.js +10 -0
  39. package/dist/performance.js.map +1 -0
  40. package/dist/post-script/ast-walker/index.d.ts +18 -0
  41. package/dist/post-script/ast-walker/index.js +215 -0
  42. package/dist/post-script/ast-walker/index.js.map +1 -0
  43. package/dist/post-script/ast-walker/type-guard.d.ts +11 -0
  44. package/dist/post-script/ast-walker/type-guard.js +56 -0
  45. package/dist/post-script/ast-walker/type-guard.js.map +1 -0
  46. package/dist/post-script/ast-walker/types.d.ts +24 -0
  47. package/dist/post-script/ast-walker/types.js +25 -0
  48. package/dist/post-script/ast-walker/types.js.map +1 -0
  49. package/dist/post-script/console-log.d.ts +7 -0
  50. package/dist/post-script/console-log.js +31 -0
  51. package/dist/post-script/console-log.js.map +1 -0
  52. package/dist/post-script/constants.d.ts +4 -0
  53. package/dist/post-script/constants.js +9 -0
  54. package/dist/post-script/constants.js.map +1 -0
  55. package/dist/post-script/parser/acorn-js-parser.d.ts +5 -0
  56. package/dist/post-script/parser/acorn-js-parser.js +20 -0
  57. package/dist/post-script/parser/acorn-js-parser.js.map +1 -0
  58. package/dist/post-script/parser/js-parser.d.ts +16 -0
  59. package/dist/post-script/parser/js-parser.js +3 -0
  60. package/dist/post-script/parser/js-parser.js.map +1 -0
  61. package/dist/post-script/parser/parser.d.ts +6 -0
  62. package/dist/post-script/parser/parser.js +3 -0
  63. package/dist/post-script/parser/parser.js.map +1 -0
  64. package/dist/post-script/post-script-executor.d.ts +24 -0
  65. package/dist/post-script/post-script-executor.js +125 -0
  66. package/dist/post-script/post-script-executor.js.map +1 -0
  67. package/dist/post-script/virtual-machine/virtual-machine.d.ts +13 -0
  68. package/dist/post-script/virtual-machine/virtual-machine.js +3 -0
  69. package/dist/post-script/virtual-machine/virtual-machine.js.map +1 -0
  70. package/dist/post-script/virtual-machine/vm2-virtual-machine.d.ts +12 -0
  71. package/dist/post-script/virtual-machine/vm2-virtual-machine.js +81 -0
  72. package/dist/post-script/virtual-machine/vm2-virtual-machine.js.map +1 -0
  73. package/dist/post-sequence.d.ts +2 -0
  74. package/dist/post-sequence.js +192 -0
  75. package/dist/post-sequence.js.map +1 -0
  76. package/dist/redact-data.d.ts +2 -0
  77. package/dist/redact-data.js +60 -0
  78. package/dist/redact-data.js.map +1 -0
  79. package/dist/report-types.d.ts +102 -0
  80. package/dist/report-types.js +11 -0
  81. package/dist/report-types.js.map +1 -0
  82. package/dist/request-sequence-result.d.ts +37 -0
  83. package/dist/request-sequence-result.js +19 -0
  84. package/dist/request-sequence-result.js.map +1 -0
  85. package/dist/request-stats.d.ts +13 -0
  86. package/dist/request-stats.js +14 -0
  87. package/dist/request-stats.js.map +1 -0
  88. package/dist/res-keeper.d.ts +16 -0
  89. package/dist/res-keeper.js +104 -0
  90. package/dist/res-keeper.js.map +1 -0
  91. package/dist/sampler.d.ts +29 -0
  92. package/dist/sampler.js +276 -0
  93. package/dist/sampler.js.map +1 -0
  94. package/dist/sequence-executor-like.d.ts +23 -0
  95. package/dist/sequence-executor-like.js +3 -0
  96. package/dist/sequence-executor-like.js.map +1 -0
  97. package/dist/sequence.d.ts +16 -0
  98. package/dist/sequence.js +1738 -0
  99. package/dist/sequence.js.map +1 -0
  100. package/dist/single-runner.d.ts +29 -0
  101. package/dist/single-runner.js +147 -0
  102. package/dist/single-runner.js.map +1 -0
  103. package/dist/step-handlers/code-step-handler.d.ts +12 -0
  104. package/dist/step-handlers/code-step-handler.js +93 -0
  105. package/dist/step-handlers/code-step-handler.js.map +1 -0
  106. package/dist/step-handlers/extract-step-handler.d.ts +12 -0
  107. package/dist/step-handlers/extract-step-handler.js +101 -0
  108. package/dist/step-handlers/extract-step-handler.js.map +1 -0
  109. package/dist/step-handlers/request-step-handler.d.ts +13 -0
  110. package/dist/step-handlers/request-step-handler.js +94 -0
  111. package/dist/step-handlers/request-step-handler.js.map +1 -0
  112. package/dist/step-handlers/step-handler.d.ts +11 -0
  113. package/dist/step-handlers/step-handler.js +3 -0
  114. package/dist/step-handlers/step-handler.js.map +1 -0
  115. package/dist/test-run-event-emitter.d.ts +15 -0
  116. package/dist/test-run-event-emitter.js +36 -0
  117. package/dist/test-run-event-emitter.js.map +1 -0
  118. package/dist/types/grpc.d.ts +14 -0
  119. package/dist/types/grpc.js +3 -0
  120. package/dist/types/grpc.js.map +1 -0
  121. package/dist/utils.d.ts +3 -0
  122. package/dist/utils.js +32 -0
  123. package/dist/utils.js.map +1 -0
  124. package/dist/work.d.ts +15 -0
  125. package/dist/work.js +3 -0
  126. package/dist/work.js.map +1 -0
  127. package/dist/ws.d.ts +71 -0
  128. package/dist/ws.js +474 -0
  129. package/dist/ws.js.map +1 -0
  130. package/package/dist/asserter.d.ts +9 -0
  131. package/package/dist/asserter.js +158 -0
  132. package/package/dist/asserter.js.map +1 -0
  133. package/package/dist/constants.d.ts +7 -0
  134. package/package/dist/constants.js +13 -0
  135. package/package/dist/constants.js.map +1 -0
  136. package/package/dist/cookies.d.ts +4 -0
  137. package/package/dist/cookies.js +79 -0
  138. package/package/dist/cookies.js.map +1 -0
  139. package/package/dist/errors.d.ts +5 -0
  140. package/package/dist/errors.js +38 -0
  141. package/package/dist/errors.js.map +1 -0
  142. package/package/dist/extraction-combiner.d.ts +17 -0
  143. package/package/dist/extraction-combiner.js +182 -0
  144. package/package/dist/extraction-combiner.js.map +1 -0
  145. package/package/dist/failures.d.ts +24 -0
  146. package/package/dist/failures.js +67 -0
  147. package/package/dist/failures.js.map +1 -0
  148. package/package/dist/grpc.d.ts +34 -0
  149. package/package/dist/grpc.js +269 -0
  150. package/package/dist/grpc.js.map +1 -0
  151. package/package/dist/iteration-stats.d.ts +2 -0
  152. package/package/dist/iteration-stats.js +38 -0
  153. package/package/dist/iteration-stats.js.map +1 -0
  154. package/package/dist/message-creators.d.ts +31 -0
  155. package/package/dist/message-creators.js +90 -0
  156. package/package/dist/message-creators.js.map +1 -0
  157. package/package/dist/mill-info.d.ts +70 -0
  158. package/package/dist/mill-info.js +3 -0
  159. package/package/dist/mill-info.js.map +1 -0
  160. package/package/dist/mill-version.d.ts +6 -0
  161. package/package/dist/mill-version.js +10 -0
  162. package/package/dist/mill-version.js.map +1 -0
  163. package/package/dist/parameter-pools.d.ts +3 -0
  164. package/package/dist/parameter-pools.js +69 -0
  165. package/package/dist/parameter-pools.js.map +1 -0
  166. package/package/dist/performance.d.ts +1 -0
  167. package/package/dist/performance.js +10 -0
  168. package/package/dist/performance.js.map +1 -0
  169. package/package/dist/post-script/ast-walker/index.d.ts +18 -0
  170. package/package/dist/post-script/ast-walker/index.js +215 -0
  171. package/package/dist/post-script/ast-walker/index.js.map +1 -0
  172. package/package/dist/post-script/ast-walker/type-guard.d.ts +11 -0
  173. package/package/dist/post-script/ast-walker/type-guard.js +56 -0
  174. package/package/dist/post-script/ast-walker/type-guard.js.map +1 -0
  175. package/package/dist/post-script/ast-walker/types.d.ts +24 -0
  176. package/package/dist/post-script/ast-walker/types.js +25 -0
  177. package/package/dist/post-script/ast-walker/types.js.map +1 -0
  178. package/package/dist/post-script/console-log.d.ts +7 -0
  179. package/package/dist/post-script/console-log.js +31 -0
  180. package/package/dist/post-script/console-log.js.map +1 -0
  181. package/package/dist/post-script/constants.d.ts +4 -0
  182. package/package/dist/post-script/constants.js +9 -0
  183. package/package/dist/post-script/constants.js.map +1 -0
  184. package/package/dist/post-script/parser/acorn-js-parser.d.ts +5 -0
  185. package/package/dist/post-script/parser/acorn-js-parser.js +20 -0
  186. package/package/dist/post-script/parser/acorn-js-parser.js.map +1 -0
  187. package/package/dist/post-script/parser/js-parser.d.ts +16 -0
  188. package/package/dist/post-script/parser/js-parser.js +3 -0
  189. package/package/dist/post-script/parser/js-parser.js.map +1 -0
  190. package/package/dist/post-script/parser/parser.d.ts +6 -0
  191. package/package/dist/post-script/parser/parser.js +3 -0
  192. package/package/dist/post-script/parser/parser.js.map +1 -0
  193. package/package/dist/post-script/post-script-executor.d.ts +24 -0
  194. package/package/dist/post-script/post-script-executor.js +125 -0
  195. package/package/dist/post-script/post-script-executor.js.map +1 -0
  196. package/package/dist/post-script/virtual-machine/virtual-machine.d.ts +13 -0
  197. package/package/dist/post-script/virtual-machine/virtual-machine.js +3 -0
  198. package/package/dist/post-script/virtual-machine/virtual-machine.js.map +1 -0
  199. package/package/dist/post-script/virtual-machine/vm2-virtual-machine.d.ts +12 -0
  200. package/package/dist/post-script/virtual-machine/vm2-virtual-machine.js +81 -0
  201. package/package/dist/post-script/virtual-machine/vm2-virtual-machine.js.map +1 -0
  202. package/package/dist/post-sequence.d.ts +2 -0
  203. package/package/dist/post-sequence.js +192 -0
  204. package/package/dist/post-sequence.js.map +1 -0
  205. package/package/dist/redact-data.d.ts +2 -0
  206. package/package/dist/redact-data.js +60 -0
  207. package/package/dist/redact-data.js.map +1 -0
  208. package/package/dist/report-types.d.ts +102 -0
  209. package/package/dist/report-types.js +11 -0
  210. package/package/dist/report-types.js.map +1 -0
  211. package/package/dist/request-sequence-result.d.ts +37 -0
  212. package/package/dist/request-sequence-result.js +19 -0
  213. package/package/dist/request-sequence-result.js.map +1 -0
  214. package/package/dist/request-stats.d.ts +13 -0
  215. package/package/dist/request-stats.js +14 -0
  216. package/package/dist/request-stats.js.map +1 -0
  217. package/package/dist/res-keeper.d.ts +16 -0
  218. package/package/dist/res-keeper.js +104 -0
  219. package/package/dist/res-keeper.js.map +1 -0
  220. package/package/dist/sampler.d.ts +29 -0
  221. package/package/dist/sampler.js +276 -0
  222. package/package/dist/sampler.js.map +1 -0
  223. package/package/dist/sequence-executor-like.d.ts +23 -0
  224. package/package/dist/sequence-executor-like.js +3 -0
  225. package/package/dist/sequence-executor-like.js.map +1 -0
  226. package/package/dist/sequence.d.ts +16 -0
  227. package/package/dist/sequence.js +1738 -0
  228. package/package/dist/sequence.js.map +1 -0
  229. package/package/dist/single-runner.d.ts +29 -0
  230. package/package/dist/single-runner.js +147 -0
  231. package/package/dist/single-runner.js.map +1 -0
  232. package/package/dist/step-handlers/code-step-handler.d.ts +12 -0
  233. package/package/dist/step-handlers/code-step-handler.js +93 -0
  234. package/package/dist/step-handlers/code-step-handler.js.map +1 -0
  235. package/package/dist/step-handlers/extract-step-handler.d.ts +12 -0
  236. package/package/dist/step-handlers/extract-step-handler.js +101 -0
  237. package/package/dist/step-handlers/extract-step-handler.js.map +1 -0
  238. package/package/dist/step-handlers/request-step-handler.d.ts +13 -0
  239. package/package/dist/step-handlers/request-step-handler.js +94 -0
  240. package/package/dist/step-handlers/request-step-handler.js.map +1 -0
  241. package/package/dist/step-handlers/step-handler.d.ts +11 -0
  242. package/package/dist/step-handlers/step-handler.js +3 -0
  243. package/package/dist/step-handlers/step-handler.js.map +1 -0
  244. package/package/dist/test-run-event-emitter.d.ts +15 -0
  245. package/package/dist/test-run-event-emitter.js +36 -0
  246. package/package/dist/test-run-event-emitter.js.map +1 -0
  247. package/package/dist/types/grpc.d.ts +14 -0
  248. package/package/dist/types/grpc.js +3 -0
  249. package/package/dist/types/grpc.js.map +1 -0
  250. package/package/dist/utils.d.ts +3 -0
  251. package/package/dist/utils.js +32 -0
  252. package/package/dist/utils.js.map +1 -0
  253. package/package/dist/work.d.ts +15 -0
  254. package/package/dist/work.js +3 -0
  255. package/package/dist/work.js.map +1 -0
  256. package/package/dist/ws.d.ts +71 -0
  257. package/package/dist/ws.js +474 -0
  258. package/package/dist/ws.js.map +1 -0
  259. package/package.json +4 -3
package/dist/ws.js ADDED
@@ -0,0 +1,474 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ 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;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.WSSequenceHandler = exports.WSRequest = void 0;
43
+ var ws_1 = __importDefault(require("ws")); // todo should be picked with other option (socketio or non in browser)
44
+ var promise_utils_1 = require("@loadmill/universal/dist/promise-utils");
45
+ var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
46
+ var errors_1 = require("./errors");
47
+ var http_1 = require("http");
48
+ var WSState;
49
+ (function (WSState) {
50
+ WSState[WSState["CONNECTING"] = 0] = "CONNECTING";
51
+ WSState[WSState["OPEN"] = 1] = "OPEN";
52
+ WSState[WSState["CLOSING"] = 2] = "CLOSING";
53
+ WSState[WSState["CLOSED"] = 3] = "CLOSED";
54
+ })(WSState || (WSState = {}));
55
+ var SWITCHING_PROTOCOLS = 'Switching Protocols';
56
+ var WS_CONNECTION_TIMEOUT_MS = 10000;
57
+ var WSRequest = /** @class */ (function () {
58
+ function WSRequest(wsRequestArgs, wsHandler, onError) {
59
+ var _this = this;
60
+ Object.defineProperty(this, "wsRequestArgs", {
61
+ enumerable: true,
62
+ configurable: true,
63
+ writable: true,
64
+ value: wsRequestArgs
65
+ });
66
+ Object.defineProperty(this, "wsHandler", {
67
+ enumerable: true,
68
+ configurable: true,
69
+ writable: true,
70
+ value: wsHandler
71
+ });
72
+ Object.defineProperty(this, "onError", {
73
+ enumerable: true,
74
+ configurable: true,
75
+ writable: true,
76
+ value: onError
77
+ });
78
+ Object.defineProperty(this, "hasErrorOccured", {
79
+ enumerable: true,
80
+ configurable: true,
81
+ writable: true,
82
+ value: void 0
83
+ }); // need this otherwise we have race condition between verifyConnectedAndOpen and onError
84
+ Object.defineProperty(this, "ws", {
85
+ enumerable: true,
86
+ configurable: true,
87
+ writable: true,
88
+ value: void 0
89
+ });
90
+ Object.defineProperty(this, "url", {
91
+ enumerable: true,
92
+ configurable: true,
93
+ writable: true,
94
+ value: void 0
95
+ }); // need this for isExpectedStatus function
96
+ Object.defineProperty(this, "expectedStatus", {
97
+ enumerable: true,
98
+ configurable: true,
99
+ writable: true,
100
+ value: void 0
101
+ }); // need this for isExpectedStatus function
102
+ /**
103
+ * Waiting for WS connection to go out of CONNECTING state
104
+ * @param socket The ws connection object
105
+ * @param timeout The timeout in milliseconds for the waiting procedure
106
+ * @returns WSState
107
+ */
108
+ Object.defineProperty(this, "waitForConnectedState", {
109
+ enumerable: true,
110
+ configurable: true,
111
+ writable: true,
112
+ value: function (timeout) {
113
+ if (timeout === void 0) { timeout = WS_CONNECTION_TIMEOUT_MS; }
114
+ return __awaiter(_this, void 0, void 0, function () {
115
+ var WS_CONNECTION_INTERVAL_MS, maxIterations, i;
116
+ return __generator(this, function (_a) {
117
+ switch (_a.label) {
118
+ case 0:
119
+ WS_CONNECTION_INTERVAL_MS = 100;
120
+ if (!(this.ws.readyState != null && this.ws.readyState !== ws_1.default.CONNECTING)) return [3 /*break*/, 1];
121
+ return [2 /*return*/, this.ws.readyState];
122
+ case 1:
123
+ maxIterations = timeout / WS_CONNECTION_INTERVAL_MS;
124
+ i = 0;
125
+ _a.label = 2;
126
+ case 2:
127
+ if (!(this.ws.readyState === ws_1.default.CONNECTING && i < maxIterations)) return [3 /*break*/, 4];
128
+ return [4 /*yield*/, promise_utils_1.delay(WS_CONNECTION_INTERVAL_MS)];
129
+ case 3:
130
+ _a.sent();
131
+ i++;
132
+ return [3 /*break*/, 2];
133
+ case 4: return [2 /*return*/, this.ws.readyState];
134
+ }
135
+ });
136
+ });
137
+ }
138
+ });
139
+ this.url = wsRequestArgs.url;
140
+ this.expectedStatus = wsRequestArgs.expectedStatus;
141
+ }
142
+ /**
143
+ * This function is executed when we are ready to send the ws request
144
+ * @param cb This callback is being executed after we successfully connected to ws and sent a ws message if there was any
145
+ */
146
+ Object.defineProperty(WSRequest.prototype, "ok", {
147
+ enumerable: false,
148
+ configurable: true,
149
+ writable: true,
150
+ value: function (cb) {
151
+ return __awaiter(this, void 0, void 0, function () {
152
+ var response, existingWS;
153
+ return __generator(this, function (_a) {
154
+ switch (_a.label) {
155
+ case 0:
156
+ response = {
157
+ status: undefined,
158
+ res: {
159
+ statusMessage: undefined,
160
+ },
161
+ header: {},
162
+ req: {},
163
+ };
164
+ existingWS = this.wsHandler.getConnection(this.wsRequestArgs.url);
165
+ existingWS && log_1.default.debug("Existing Connection state " + getConnectionState(existingWS));
166
+ if (!(!existingWS || (existingWS && existingWS.readyState !== WSState.OPEN))) return [3 /*break*/, 2];
167
+ return [4 /*yield*/, this.addConnection(response)];
168
+ case 1:
169
+ _a.sent();
170
+ return [3 /*break*/, 3];
171
+ case 2:
172
+ this.ws = existingWS;
173
+ log_1.default.debug('Reusing existing ws connection', this.ws.url);
174
+ _a.label = 3;
175
+ case 3:
176
+ try {
177
+ this.sendMessage();
178
+ }
179
+ catch (e) {
180
+ log_1.default.error('Failed to send a ws message', e);
181
+ }
182
+ cb(response);
183
+ return [2 /*return*/, {}];
184
+ }
185
+ });
186
+ });
187
+ }
188
+ });
189
+ Object.defineProperty(WSRequest.prototype, "addConnection", {
190
+ enumerable: false,
191
+ configurable: true,
192
+ writable: true,
193
+ value: function (response) {
194
+ return __awaiter(this, void 0, void 0, function () {
195
+ var _a;
196
+ return __generator(this, function (_b) {
197
+ switch (_b.label) {
198
+ case 0:
199
+ this.ws = new ws_1.default(this.wsRequestArgs.url, undefined, { headers: this.wsRequestArgs.headers });
200
+ this.addEventListeners(response);
201
+ _a = !this.hasErrorOccured;
202
+ if (!_a) return [3 /*break*/, 2];
203
+ return [4 /*yield*/, this.verifyOpen()];
204
+ case 1:
205
+ _a = (_b.sent());
206
+ _b.label = 2;
207
+ case 2:
208
+ _a;
209
+ this.wsHandler.storeConnection(this.wsRequestArgs.url, this.ws);
210
+ return [2 /*return*/];
211
+ }
212
+ });
213
+ });
214
+ }
215
+ });
216
+ Object.defineProperty(WSRequest.prototype, "addEventListeners", {
217
+ enumerable: false,
218
+ configurable: true,
219
+ writable: true,
220
+ value: function (response) {
221
+ return __awaiter(this, void 0, void 0, function () {
222
+ return __generator(this, function (_a) {
223
+ this.addOnErrorListener(response);
224
+ this.addOnUpgradeListener(response);
225
+ this.addOnOpenListener();
226
+ this.addOnMessageListener();
227
+ return [2 /*return*/];
228
+ });
229
+ });
230
+ }
231
+ });
232
+ Object.defineProperty(WSRequest.prototype, "addOnErrorListener", {
233
+ enumerable: false,
234
+ configurable: true,
235
+ writable: true,
236
+ value: function (response) {
237
+ var _this = this;
238
+ this.ws.addEventListener('error', function (event) {
239
+ log_1.default.debug('inside addEventListener error');
240
+ try {
241
+ var target = event.target;
242
+ _this.updateResponseOnError(target, response);
243
+ }
244
+ catch (e) {
245
+ log_1.default.error('Got an error inside addEventListener error', e);
246
+ }
247
+ });
248
+ this.ws.on('error', function (e) {
249
+ try {
250
+ log_1.default.debug('inside on error', e);
251
+ _this.onError(e);
252
+ _this.hasErrorOccured = true;
253
+ }
254
+ catch (e) {
255
+ log_1.default.warn('Failed to handle a ws error', e);
256
+ }
257
+ try {
258
+ log_1.default.debug('closing ws');
259
+ _this.ws.close();
260
+ }
261
+ catch (e) {
262
+ log_1.default.warn('Failed to close a ws connection', e);
263
+ }
264
+ });
265
+ }
266
+ });
267
+ Object.defineProperty(WSRequest.prototype, "updateResponseOnError", {
268
+ enumerable: false,
269
+ configurable: true,
270
+ writable: true,
271
+ value: function (ws, response) {
272
+ if (ws._req) {
273
+ var _a = ws._req.socket.parser.incoming, statusCode = _a.statusCode, statusMessage = _a.statusMessage, headers = _a.headers;
274
+ log_1.default.debug('Got incoming incoming request', { statusCode: statusCode, statusMessage: statusMessage, headers: headers });
275
+ response.status = statusCode;
276
+ response.res.statusMessage = statusMessage;
277
+ response.header = headers;
278
+ }
279
+ }
280
+ });
281
+ Object.defineProperty(WSRequest.prototype, "addOnUpgradeListener", {
282
+ enumerable: false,
283
+ configurable: true,
284
+ writable: true,
285
+ value: function (response) {
286
+ this.ws.on('upgrade', function (event) {
287
+ try {
288
+ var statusCode = event.statusCode, statusMessage = event.statusMessage, headers = event.headers;
289
+ log_1.default.debug('inside upgrade event', { statusCode: statusCode, statusMessage: statusMessage, headers: headers });
290
+ response.status = statusCode || 101;
291
+ response.res.statusMessage = statusMessage || SWITCHING_PROTOCOLS;
292
+ response.header = headers;
293
+ }
294
+ catch (e) {
295
+ log_1.default.debug('upgrade event err', e);
296
+ }
297
+ });
298
+ }
299
+ });
300
+ Object.defineProperty(WSRequest.prototype, "addOnOpenListener", {
301
+ enumerable: false,
302
+ configurable: true,
303
+ writable: true,
304
+ value: function () {
305
+ this.ws.on('open', function () {
306
+ log_1.default.debug('inside on open, currently doing nothing here.');
307
+ });
308
+ }
309
+ });
310
+ Object.defineProperty(WSRequest.prototype, "addOnMessageListener", {
311
+ enumerable: false,
312
+ configurable: true,
313
+ writable: true,
314
+ value: function () {
315
+ var _this = this;
316
+ this.ws.on('message', function (message) {
317
+ try {
318
+ var target = Array.isArray(message) ? decode(message) : message;
319
+ log_1.default.debug('got incoming message', target === null || target === void 0 ? void 0 : target.toString());
320
+ _this.wsHandler.addMessage(target);
321
+ }
322
+ catch (e) {
323
+ log_1.default.debug('error getting message', e);
324
+ }
325
+ });
326
+ }
327
+ });
328
+ Object.defineProperty(WSRequest.prototype, "verifyOpen", {
329
+ enumerable: false,
330
+ configurable: true,
331
+ writable: true,
332
+ value: function () {
333
+ return __awaiter(this, void 0, void 0, function () {
334
+ var readyState, connectionDebugMsg, msg;
335
+ return __generator(this, function (_a) {
336
+ switch (_a.label) {
337
+ case 0: return [4 /*yield*/, this.waitForConnectedState(this.wsRequestArgs.timeout)];
338
+ case 1:
339
+ readyState = _a.sent();
340
+ connectionDebugMsg = "Connection " + WSState[readyState];
341
+ log_1.default.debug(connectionDebugMsg);
342
+ if (readyState !== ws_1.default.OPEN && !this.hasErrorOccured) {
343
+ msg = 'Could not connect to WebSocket address: ';
344
+ log_1.default.debug(msg, { connectionState: WSState[readyState], url: this.ws.url });
345
+ if (readyState === WSState.CONNECTING) {
346
+ msg += 'request timeout';
347
+ }
348
+ else { // CLOSING or CLOSED state
349
+ msg += connectionDebugMsg;
350
+ }
351
+ throw new errors_1.RequestFailuresError(msg);
352
+ }
353
+ return [2 /*return*/];
354
+ }
355
+ });
356
+ });
357
+ }
358
+ });
359
+ Object.defineProperty(WSRequest.prototype, "sendMessage", {
360
+ enumerable: false,
361
+ configurable: true,
362
+ writable: true,
363
+ value: function () {
364
+ log_1.default.debug('about to send message', { readyState: WSState[this.ws.readyState] });
365
+ var _a = this.wsRequestArgs, message = _a.message, mimeType = _a.mimeType;
366
+ if (this.ws.readyState === WSState.OPEN && message) {
367
+ this.ws.send(message, { binary: mimeType === 'binary' });
368
+ }
369
+ }
370
+ });
371
+ // need this because the SequenceExecutor expectes a request obj with on func prop
372
+ Object.defineProperty(WSRequest.prototype, "on", {
373
+ enumerable: false,
374
+ configurable: true,
375
+ writable: true,
376
+ value: function (_eventName, _cb) {
377
+ //do nothing
378
+ }
379
+ });
380
+ return WSRequest;
381
+ }());
382
+ exports.WSRequest = WSRequest;
383
+ var WSSequenceHandler = /** @class */ (function () {
384
+ function WSSequenceHandler() {
385
+ Object.defineProperty(this, "_connections", {
386
+ enumerable: true,
387
+ configurable: true,
388
+ writable: true,
389
+ value: void 0
390
+ });
391
+ Object.defineProperty(this, "messages", {
392
+ enumerable: true,
393
+ configurable: true,
394
+ writable: true,
395
+ value: void 0
396
+ });
397
+ this._connections = {};
398
+ this.clearMessages();
399
+ }
400
+ Object.defineProperty(WSSequenceHandler.prototype, "getConnection", {
401
+ enumerable: false,
402
+ configurable: true,
403
+ writable: true,
404
+ value: function (url) {
405
+ return this._connections[url];
406
+ }
407
+ });
408
+ Object.defineProperty(WSSequenceHandler.prototype, "storeConnection", {
409
+ enumerable: false,
410
+ configurable: true,
411
+ writable: true,
412
+ value: function (url, wsConnection) {
413
+ this._connections[url] = wsConnection;
414
+ }
415
+ });
416
+ Object.defineProperty(WSSequenceHandler.prototype, "closeAllConnections", {
417
+ enumerable: false,
418
+ configurable: true,
419
+ writable: true,
420
+ value: function () {
421
+ return __awaiter(this, void 0, void 0, function () {
422
+ var _i, _a, connection;
423
+ return __generator(this, function (_b) {
424
+ try {
425
+ log_1.default.debug('Closing all ws connections');
426
+ for (_i = 0, _a = Object.values(this._connections); _i < _a.length; _i++) {
427
+ connection = _a[_i];
428
+ connection.close();
429
+ }
430
+ }
431
+ catch (e) {
432
+ log_1.default.warn('Failed to close all connections', e, { connections: this._connections });
433
+ }
434
+ return [2 /*return*/];
435
+ });
436
+ });
437
+ }
438
+ });
439
+ Object.defineProperty(WSSequenceHandler.prototype, "getMessages", {
440
+ enumerable: false,
441
+ configurable: true,
442
+ writable: true,
443
+ value: function () {
444
+ return this.messages;
445
+ }
446
+ });
447
+ Object.defineProperty(WSSequenceHandler.prototype, "addMessage", {
448
+ enumerable: false,
449
+ configurable: true,
450
+ writable: true,
451
+ value: function (message) {
452
+ this.messages.push(message);
453
+ }
454
+ });
455
+ Object.defineProperty(WSSequenceHandler.prototype, "clearMessages", {
456
+ enumerable: false,
457
+ configurable: true,
458
+ writable: true,
459
+ value: function () {
460
+ this.messages = [];
461
+ }
462
+ });
463
+ return WSSequenceHandler;
464
+ }());
465
+ exports.WSSequenceHandler = WSSequenceHandler;
466
+ function getConnectionState(existingWS) {
467
+ return existingWS ? WSState[existingWS.readyState] : null;
468
+ }
469
+ function decode(buffer, encoding) {
470
+ if (encoding === void 0) { encoding = 'utf-8'; }
471
+ var enc = new TextDecoder(encoding);
472
+ return enc.decode(new Uint8Array(buffer));
473
+ }
474
+ //# sourceMappingURL=ws.js.map
package/dist/ws.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA2B,CAAC,uEAAuE;AACnG,wEAA+D;AAC/D,qEAA+C;AAE/C,mCAAgD;AAChD,6BAA2E;AAa3E,IAAK,OAKJ;AALD,WAAK,OAAO;IACV,iDAAU,CAAA;IACV,qCAAI,CAAA;IACJ,2CAAO,CAAA;IACP,yCAAM,CAAA;AACR,CAAC,EALI,OAAO,KAAP,OAAO,QAKX;AAED,IAAM,mBAAmB,GAAG,qBAAqB,CAAC;AAClD,IAAM,wBAAwB,GAAG,KAAK,CAAC;AAEvC;IAME,mBACmB,aAAiC,EACjC,SAA4B,EAC5B,OAA2B;QAH9C,iBAOC;;;;;mBANkB;;;;;;mBACA;;;;;;mBACA;;QARnB;;;;;WAAkC,CAAC,wFAAwF;QAC3H;;;;;WAAsB;QACtB;;;;;WAAmB,CAAC,0CAA0C;QAC9D;;;;;WAA0C,CAAC,0CAA0C;QAmJrF;;;;;WAKG;QACH;;;;mBAAwB,UAAO,OAA0C;gBAA1C,wBAAA,EAAA,kCAA0C;;;;;;gCACjE,yBAAyB,GAAG,GAAG,CAAC;qCAClC,CAAA,IAAI,CAAC,EAAE,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,YAAS,CAAC,UAAU,CAAA,EAAzE,wBAAyE;gCAC3E,sBAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAC;;gCAGpB,aAAa,GAAG,OAAO,GAAG,yBAAyB,CAAC;gCACtD,CAAC,GAAG,CAAC,CAAC;;;qCACH,CAAA,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,YAAS,CAAC,UAAU,IAAI,CAAC,GAAG,aAAa,CAAA;gCACrE,qBAAM,qBAAK,CAAC,yBAAyB,CAAC,EAAA;;gCAAtC,SAAsC,CAAC;gCACvC,CAAC,EAAE,CAAC;;oCAEN,sBAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAC;;;;aAE7B;WAAC;QAhKA,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC;QAC7B,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC,cAAc,CAAC;IACrD,CAAC;IAED;;;OAGG;;;;;eACH,UAAS,EAAqC;;;;;;4BACtC,QAAQ,GAAe;gCAC3B,MAAM,EAAE,SAAS;gCACjB,GAAG,EAAE;oCACH,aAAa,EAAE,SAAS;iCACzB;gCACD,MAAM,EAAE,EAAE;gCACV,GAAG,EAAE,EAAE;6BACR,CAAC;4BAEI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;4BAExE,UAAU,IAAI,aAAG,CAAC,KAAK,CAAC,+BAA6B,kBAAkB,CAAC,UAAU,CAAG,CAAC,CAAC;iCACnF,CAAA,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA,EAArE,wBAAqE;4BACvE,qBAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAA;;4BAAlC,SAAkC,CAAC;;;4BAEnC,IAAI,CAAC,EAAE,GAAG,UAAU,CAAC;4BACrB,aAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;;;4BAG3D,IAAI;gCACF,IAAI,CAAC,WAAW,EAAE,CAAC;6BACpB;4BAAC,OAAO,CAAC,EAAE;gCACV,aAAG,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;6BAC7C;4BACD,EAAE,CAAC,QAAQ,CAAC,CAAC;4BACb,sBAAO,EAAG,EAAC;;;;SACZ;;;;;;eAED,UAA4B,QAAoB;;;;;;4BAC9C,IAAI,CAAC,EAAE,GAAG,IAAI,YAAS,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;4BACpG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;4BACjC,KAAA,CAAC,IAAI,CAAC,eAAe,CAAA;qCAArB,wBAAqB;4BAAI,qBAAM,IAAI,CAAC,UAAU,EAAE,EAAA;;kCAAvB,SAAuB;;;4BAAhD,GAAiD;4BACjD,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;;;;;SAEjE;;;;;;eAED,UAAgC,QAAoB;;;oBAClD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;oBAClC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;oBACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;;;;SAC7B;;;;;;eAED,UAA2B,QAAoB;YAA/C,iBA0BC;YAzBC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAA,KAAK;gBACrC,aAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC3C,IAAI;oBACF,IAAM,MAAM,GAAG,KAAK,CAAC,MAAY,CAAC;oBAClC,KAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;iBAC9C;gBAAC,OAAO,CAAC,EAAE;oBACV,aAAG,CAAC,KAAK,CAAC,4CAA4C,EAAE,CAAC,CAAC,CAAC;iBAC5D;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAC;gBACpB,IAAI;oBACF,aAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;oBAChC,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAChB,KAAI,CAAC,eAAe,GAAG,IAAI,CAAC;iBAC7B;gBAAC,OAAO,CAAC,EAAE;oBACV,aAAG,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;iBAC5C;gBACD,IAAI;oBACF,aAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBACxB,KAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;iBACjB;gBAAC,OAAO,CAAC,EAAE;oBACV,aAAG,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,CAAC,CAAC;iBAChD;YACH,CAAC,CAAC,CAAC;QACL,CAAC;;;;;;eAED,UAA8B,EAAM,EAAE,QAAoB;YACxD,IAAI,EAAE,CAAC,IAAI,EAAE;gBACL,IAAA,KAAyC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAArE,UAAU,gBAAA,EAAE,aAAa,mBAAA,EAAE,OAAO,aAAmC,CAAC;gBAC9E,aAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,UAAU,YAAA,EAAE,aAAa,eAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;gBACnF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;gBAC7B,QAAQ,CAAC,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;gBAC3C,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC;aAC3B;QACH,CAAC;;;;;;eAED,UAA6B,QAAoB;YAC/C,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,KAAK;gBAC1B,IAAI;oBACM,IAAA,UAAU,GAA6B,KAAK,WAAlC,EAAE,aAAa,GAAc,KAAK,cAAnB,EAAE,OAAO,GAAK,KAAK,QAAV,CAAW;oBACrD,aAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,UAAU,YAAA,EAAE,aAAa,eAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;oBAC1E,QAAQ,CAAC,MAAM,GAAG,UAAU,IAAI,GAAG,CAAC;oBACpC,QAAQ,CAAC,GAAG,CAAC,aAAa,GAAG,aAAa,IAAI,mBAAmB,CAAC;oBAClE,QAAQ,CAAC,MAAM,GAAG,OAA0B,CAAC;iBAC9C;gBAAC,OAAO,CAAC,EAAE;oBACV,aAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;iBACnC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;;;;;;eAED;YACE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE;gBACjB,aAAG,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;QACL,CAAC;;;;;;eAED;YAAA,iBAYC;YAXC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,OAAY;gBACjC,IAAI;oBAEF,IAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;oBAClE,aAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,EAAE,CAAC,CAAC;oBAEtD,KAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;iBACnC;gBAAC,OAAO,CAAC,EAAE;oBACV,aAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;iBACvC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;;;;;;eAED;;;;;gCACqB,qBAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAA;;4BAAzE,UAAU,GAAG,SAA4D;4BACzE,kBAAkB,GAAG,gBAAc,OAAO,CAAC,UAAU,CAAG,CAAC;4BAC/D,aAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;4BAC9B,IAAI,UAAU,KAAK,YAAS,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gCACtD,GAAG,GAAG,0CAA0C,CAAC;gCACrD,aAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;gCAC3E,IAAI,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE;oCACrC,GAAG,IAAI,iBAAiB,CAAC;iCAC1B;qCAAM,EAAE,0BAA0B;oCACjC,GAAG,IAAI,kBAAkB,CAAC;iCAC3B;gCACD,MAAM,IAAI,6BAAoB,CAAC,GAAG,CAAC,CAAC;6BACrC;;;;;SACF;;;;;;eAwBD;YACE,aAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAE,CAAC;YAE3E,IAAA,KAAwB,IAAI,CAAC,aAAa,EAAxC,OAAO,aAAA,EAAE,QAAQ,cAAuB,CAAC;YAEjD,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE;gBAClD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,KAAK,QAAQ,EAAE,CAAC,CAAC;aAC1D;QAEH,CAAC;;IAED,kFAAkF;;;;;eAClF,UAAG,UAAkB,EAAE,GAAa;YAClC,YAAY;QACd,CAAC;;IACH,gBAAC;AAAD,CAAC,AA5LD,IA4LC;AA5LY,8BAAS;AA8LtB;IAGE;QAFA;;;;;WAAmD;QACnD;;;;;WAAmB;QAEjB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;;;;;eAED,UAAc,GAAW;YACvB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;;;;;;eAED,UAAgB,GAAW,EAAE,YAAuB;YAClD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;QACxC,CAAC;;;;;;eAED;;;;oBACE,IAAI;wBACF,aAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;wBACxC,WAAyD,EAAhC,KAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAhC,cAAgC,EAAhC,IAAgC,EAAE;4BAAhD,UAAU;4BACnB,UAAU,CAAC,KAAK,EAAE,CAAC;yBACpB;qBACF;oBAAC,OAAO,CAAC,EAAE;wBACV,aAAG,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;qBACpF;;;;SACF;;;;;;eAED;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;;;;;;eAED,UAAW,OAAe;YACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;;;;;;eAED;YACE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,CAAC;;IACH,wBAAC;AAAD,CAAC,AAtCD,IAsCC;AAtCY,8CAAiB;AAwC9B,SAAS,kBAAkB,CAAC,UAAsB;IAChD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,MAAM,CAAC,MAAM,EAAE,QAAkB;IAAlB,yBAAA,EAAA,kBAAkB;IACxC,IAAM,GAAG,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { Parameters } from '@loadmill/core/dist/parameters';
2
+ import { Assertion } from '@loadmill/core/dist/assertions';
3
+ export declare class Asserter {
4
+ private parameters;
5
+ constructor(parameters: Parameters);
6
+ assert({ check, equals, notEquals, contains, notContains, matches, falsy, greater, lesser, JSONSchema, JSONContains, XMLContains, }: Assertion): boolean;
7
+ private resolve;
8
+ private check;
9
+ }
@@ -0,0 +1,158 @@
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.Asserter = void 0;
7
+ var parameters_1 = require("@loadmill/core/dist/parameters");
8
+ var subset_1 = require("@loadmill/core/dist/subset");
9
+ var xml_to_json_1 = require("@loadmill/core/dist/xml/xml-to-json");
10
+ var log_1 = __importDefault(require("@loadmill/universal/dist/log"));
11
+ var Asserter = /** @class */ (function () {
12
+ function Asserter(parameters) {
13
+ Object.defineProperty(this, "parameters", {
14
+ enumerable: true,
15
+ configurable: true,
16
+ writable: true,
17
+ value: parameters
18
+ });
19
+ }
20
+ Object.defineProperty(Asserter.prototype, "assert", {
21
+ enumerable: false,
22
+ configurable: true,
23
+ writable: true,
24
+ value: function (_a) {
25
+ var check = _a.check, equals = _a.equals, notEquals = _a.notEquals, contains = _a.contains, notContains = _a.notContains, matches = _a.matches, falsy = _a.falsy, greater = _a.greater, lesser = _a.lesser, JSONSchema = _a.JSONSchema, JSONContains = _a.JSONContains, XMLContains = _a.XMLContains;
26
+ var actual = parameters_1.parameterUtils.resolveParameter(check, this.parameters) || '';
27
+ if (contains == null &&
28
+ notContains == null &&
29
+ equals == null &&
30
+ notEquals == null &&
31
+ matches == null &&
32
+ greater == null &&
33
+ lesser == null &&
34
+ JSONSchema == null &&
35
+ JSONContains == null &&
36
+ XMLContains == null) {
37
+ // only if no other assertions exist, the target expression is to check
38
+ // for "truthfulness" or "falslyness"(in case falsy flag is on).
39
+ // Note that failed/null extractions evaluate to an empty string while
40
+ // other nonexistent parameters are left untouched in the resolved expression
41
+ var result = void 0;
42
+ if (falsy) {
43
+ result = parameters_1.valueUtils.isFalsyParameterValue(actual);
44
+ log_1.default.debug('Assert False:', { actual: actual, result: result });
45
+ }
46
+ else {
47
+ result = parameters_1.valueUtils.isTruthyParameterValue(actual);
48
+ log_1.default.debug('Assert True:', { actual: actual, result: result });
49
+ }
50
+ return result;
51
+ }
52
+ // short circuiting with approximate increasing complexity:
53
+ return (this.check(actual, checkContains, contains) ||
54
+ this.check(actual, checkNotContains, notContains) ||
55
+ this.check(actual, checkEquals, equals) ||
56
+ this.check(actual, checkNotEquals, notEquals) ||
57
+ this.check(actual, checkMatches, matches) ||
58
+ this.check(actual, checkGreater, greater) ||
59
+ this.check(actual, checkLesser, lesser) ||
60
+ this.check(actual, checkJSONSchema, JSONSchema) ||
61
+ this.check(actual, checkJSONContains, JSONContains) ||
62
+ this.check(actual, checkXMLContains, XMLContains));
63
+ }
64
+ });
65
+ Object.defineProperty(Asserter.prototype, "resolve", {
66
+ enumerable: false,
67
+ configurable: true,
68
+ writable: true,
69
+ value: function (parametrized) {
70
+ return parameters_1.parameterUtils.resolveExpression(parametrized, this.parameters);
71
+ }
72
+ });
73
+ Object.defineProperty(Asserter.prototype, "check", {
74
+ enumerable: false,
75
+ configurable: true,
76
+ writable: true,
77
+ value: function (actual, checker, expected) {
78
+ if (expected != null) {
79
+ var resolved = this.resolve(expected);
80
+ return checker(actual, resolved);
81
+ }
82
+ return false;
83
+ }
84
+ });
85
+ return Asserter;
86
+ }());
87
+ exports.Asserter = Asserter;
88
+ function checkMatches(actual, expected) {
89
+ var regExp = new RegExp(expected);
90
+ var result = regExp.test(actual);
91
+ log_1.default.debug('Assert regex:', { actual: actual, expected: expected, regExp: regExp, result: result });
92
+ return result;
93
+ }
94
+ function checkEquals(actual, expected) {
95
+ var result;
96
+ if (expected === 'null' && actual === '') {
97
+ result = true;
98
+ }
99
+ else {
100
+ result = actual == expected;
101
+ }
102
+ log_1.default.debug('Assert equals:', { actual: actual, expected: expected, result: result });
103
+ return result;
104
+ }
105
+ function checkNotEquals(actual, expected) {
106
+ var result = actual !== expected;
107
+ log_1.default.debug('Assert not equal:', { actual: actual, expected: expected, result: result });
108
+ return result;
109
+ }
110
+ function checkContains(actual, expected) {
111
+ var result = actual.includes(expected);
112
+ log_1.default.debug('Assert contains:', { actual: actual, expected: expected, result: result });
113
+ return result;
114
+ }
115
+ function checkNotContains(actual, expected) {
116
+ var result = !actual.includes(expected);
117
+ log_1.default.debug('Assert not contains:', { actual: actual, expected: expected, result: result });
118
+ return result;
119
+ }
120
+ function checkGreater(actual, expected) {
121
+ var numericActual = parseFloat(actual);
122
+ var numericExpected = parseFloat(expected);
123
+ var result = numericActual > numericExpected;
124
+ log_1.default.debug('Assert greater:', { actual: actual, expected: expected, result: result });
125
+ return result;
126
+ }
127
+ function checkLesser(actual, expected) {
128
+ var numericActual = parseFloat(actual);
129
+ var numericExpected = parseFloat(expected);
130
+ var result = numericActual < numericExpected;
131
+ log_1.default.debug('Assert lesser:', { actual: actual, expected: expected, result: result });
132
+ return result;
133
+ }
134
+ function checkJSONSchema(actual, expected) {
135
+ var result = parameters_1.parameterUtils.applyJSONSchema(actual, expected);
136
+ log_1.default.debug('Assert JSONSchema:', { actual: actual, expected: expected, result: result });
137
+ return result;
138
+ }
139
+ function checkJSONContains(actual, expected) {
140
+ var result = subset_1.isJSONContains(actual, expected);
141
+ log_1.default.debug('Assert JSONContains:', { actual: actual, expected: expected, result: result });
142
+ return result;
143
+ }
144
+ function checkXMLContains(actual, expected) {
145
+ var parserOptions = { trim: true, normalize: true };
146
+ var onParseError = function (err, result, xml) {
147
+ log_1.default.debug('Failed to convert XML to JSON while asserting', { result: result, xml: xml }, err);
148
+ };
149
+ var actualAsJson = xml_to_json_1.xmlToJson(actual, parserOptions, onParseError);
150
+ var expectedAsJson = xml_to_json_1.xmlToJson(expected, parserOptions, onParseError);
151
+ if (!actualAsJson || !expectedAsJson) {
152
+ return false;
153
+ }
154
+ var result = subset_1.isJSONContains(JSON.stringify(actualAsJson), JSON.stringify(expectedAsJson));
155
+ log_1.default.debug('Assert XMLContains:', { actual: actual, expected: expected, result: result });
156
+ return result;
157
+ }
158
+ //# sourceMappingURL=asserter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asserter.js","sourceRoot":"","sources":["../src/asserter.ts"],"names":[],"mappings":";;;;;;AAEA,6DAA4E;AAC5E,qDAA4D;AAC5D,mEAAgE;AAChE,qEAA+C;AAE/C;IACE,kBAAoB,UAAsB;;;;;mBAAtB;;IAAyB,CAAC;;;;;eAE9C,UAAO,EAaK;gBAZV,KAAK,WAAA,EACL,MAAM,YAAA,EACN,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,WAAW,iBAAA,EACX,OAAO,aAAA,EACP,KAAK,WAAA,EACL,OAAO,aAAA,EACP,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,WAAW,iBAAA;YAEX,IAAM,MAAM,GACV,2BAAc,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAEhE,IACE,QAAQ,IAAI,IAAI;gBAChB,WAAW,IAAI,IAAI;gBACnB,MAAM,IAAI,IAAI;gBACd,SAAS,IAAI,IAAI;gBACjB,OAAO,IAAI,IAAI;gBACf,OAAO,IAAI,IAAI;gBACf,MAAM,IAAI,IAAI;gBACd,UAAU,IAAI,IAAI;gBAClB,YAAY,IAAI,IAAI;gBACpB,WAAW,IAAI,IAAI,EACnB;gBACA,uEAAuE;gBACvE,gEAAgE;gBAEhE,sEAAsE;gBACtE,6EAA6E;gBAE7E,IAAI,MAAM,SAAA,CAAC;gBACX,IAAI,KAAK,EAAE;oBACT,MAAM,GAAG,uBAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;oBAClD,aAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;iBAChD;qBAAM;oBACL,MAAM,GAAG,uBAAU,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;oBACnD,aAAG,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;iBAC/C;gBAED,OAAO,MAAM,CAAC;aACf;YAED,2DAA2D;YAC3D,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,CAAC;gBAC7C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC;gBACzC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,iBAAiB,EAAE,YAAY,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAClD,CAAC;QACJ,CAAC;;;;;;eAED,UAAgB,YAAoB;YAClC,OAAO,2BAAc,CAAC,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACzE,CAAC;;;;;;eAED,UAAc,MAAc,EAAE,OAAgB,EAAE,QAAiB;YAC/D,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACpB,IAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACxC,OAAO,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;aAClC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;;IACH,eAAC;AAAD,CAAC,AA5ED,IA4EC;AA5EY,4BAAQ;AAgFrB,SAAS,YAAY,CAAC,MAAc,EAAE,QAAgB;IACpD,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,aAAG,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,QAAgB;IACnD,IAAI,MAAM,CAAC;IACX,IAAI,QAAQ,KAAK,MAAM,IAAI,MAAM,KAAK,EAAE,EAAG;QACzC,MAAM,GAAG,IAAI,CAAC;KACf;SACI;QACH,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAC;KAC7B;IACD,aAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,QAAgB;IACtD,IAAM,MAAM,GAAG,MAAM,KAAK,QAAQ,CAAC;IACnC,aAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,QAAgB;IACrD,IAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,aAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IACxD,IAAM,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC1C,aAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,QAAgB;IACpD,IAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,IAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAM,MAAM,GAAG,aAAa,GAAG,eAAe,CAAC;IAC/C,aAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC3D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,QAAgB;IACnD,IAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,IAAM,eAAe,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAM,MAAM,GAAG,aAAa,GAAG,eAAe,CAAC;IAC/C,aAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,QAAgB;IACvD,IAAM,MAAM,GAAG,2BAAc,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChE,aAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IACzD,IAAM,MAAM,GAAG,uBAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,aAAG,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IACxD,IAAM,aAAa,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACtD,IAAM,YAAY,GAAG,UAAC,GAAU,EAAE,MAAW,EAAE,GAAW;QACxD,aAAG,CAAC,KAAK,CAAC,+CAA+C,EAAE,EAAE,MAAM,QAAA,EAAE,GAAG,KAAA,EAAE,EAAE,GAAG,CAAC,CAAC;IACnF,CAAC,CAAC;IACF,IAAM,YAAY,GAAG,uBAAS,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACpE,IAAM,cAAc,GAAG,uBAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;IACxE,IAAI,CAAC,YAAY,IAAI,CAAC,cAAc,EAAE;QACpC,OAAO,KAAK,CAAC;KACd;IAED,IAAM,MAAM,GAAG,uBAAc,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC;IAC5F,aAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAE,MAAM,QAAA,EAAE,QAAQ,UAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC;AAChB,CAAC"}