@loadmill/executer 0.1.142 → 0.1.144

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 (139) hide show
  1. package/dist/request-stats.d.ts +2 -1
  2. package/dist/request-stats.js +4 -4
  3. package/dist/request-stats.js.map +1 -1
  4. package/dist/sampler.js +2 -1
  5. package/dist/sampler.js.map +1 -1
  6. package/dist/sequence-executor-like.d.ts +1 -0
  7. package/dist/sequence.js +40 -16
  8. package/dist/sequence.js.map +1 -1
  9. package/{package/dist/step-handlers/code-step-handler.d.ts → dist/step-handlers/wait-step-handler.d.ts} +3 -3
  10. package/{package/dist/step-handlers/extract-step-handler.js → dist/step-handlers/wait-step-handler.js} +16 -19
  11. package/dist/step-handlers/wait-step-handler.js.map +1 -0
  12. package/package.json +3 -3
  13. package/package/dist/asserter.d.ts +0 -9
  14. package/package/dist/asserter.js +0 -158
  15. package/package/dist/asserter.js.map +0 -1
  16. package/package/dist/constants.d.ts +0 -7
  17. package/package/dist/constants.js +0 -13
  18. package/package/dist/constants.js.map +0 -1
  19. package/package/dist/cookies.d.ts +0 -4
  20. package/package/dist/cookies.js +0 -79
  21. package/package/dist/cookies.js.map +0 -1
  22. package/package/dist/errors.d.ts +0 -5
  23. package/package/dist/errors.js +0 -38
  24. package/package/dist/errors.js.map +0 -1
  25. package/package/dist/extraction-combiner.d.ts +0 -17
  26. package/package/dist/extraction-combiner.js +0 -182
  27. package/package/dist/extraction-combiner.js.map +0 -1
  28. package/package/dist/failures.d.ts +0 -24
  29. package/package/dist/failures.js +0 -67
  30. package/package/dist/failures.js.map +0 -1
  31. package/package/dist/grpc.d.ts +0 -34
  32. package/package/dist/grpc.js +0 -269
  33. package/package/dist/grpc.js.map +0 -1
  34. package/package/dist/iteration-stats.d.ts +0 -2
  35. package/package/dist/iteration-stats.js +0 -38
  36. package/package/dist/iteration-stats.js.map +0 -1
  37. package/package/dist/message-creators.d.ts +0 -31
  38. package/package/dist/message-creators.js +0 -90
  39. package/package/dist/message-creators.js.map +0 -1
  40. package/package/dist/mill-info.d.ts +0 -70
  41. package/package/dist/mill-info.js +0 -3
  42. package/package/dist/mill-info.js.map +0 -1
  43. package/package/dist/mill-version.d.ts +0 -6
  44. package/package/dist/mill-version.js +0 -10
  45. package/package/dist/mill-version.js.map +0 -1
  46. package/package/dist/parameter-pools.d.ts +0 -3
  47. package/package/dist/parameter-pools.js +0 -69
  48. package/package/dist/parameter-pools.js.map +0 -1
  49. package/package/dist/performance.d.ts +0 -1
  50. package/package/dist/performance.js +0 -10
  51. package/package/dist/performance.js.map +0 -1
  52. package/package/dist/post-script/ast-walker/index.d.ts +0 -18
  53. package/package/dist/post-script/ast-walker/index.js +0 -215
  54. package/package/dist/post-script/ast-walker/index.js.map +0 -1
  55. package/package/dist/post-script/ast-walker/type-guard.d.ts +0 -11
  56. package/package/dist/post-script/ast-walker/type-guard.js +0 -56
  57. package/package/dist/post-script/ast-walker/type-guard.js.map +0 -1
  58. package/package/dist/post-script/ast-walker/types.d.ts +0 -24
  59. package/package/dist/post-script/ast-walker/types.js +0 -25
  60. package/package/dist/post-script/ast-walker/types.js.map +0 -1
  61. package/package/dist/post-script/console-log.d.ts +0 -7
  62. package/package/dist/post-script/console-log.js +0 -31
  63. package/package/dist/post-script/console-log.js.map +0 -1
  64. package/package/dist/post-script/constants.d.ts +0 -4
  65. package/package/dist/post-script/constants.js +0 -9
  66. package/package/dist/post-script/constants.js.map +0 -1
  67. package/package/dist/post-script/parser/acorn-js-parser.d.ts +0 -5
  68. package/package/dist/post-script/parser/acorn-js-parser.js +0 -20
  69. package/package/dist/post-script/parser/acorn-js-parser.js.map +0 -1
  70. package/package/dist/post-script/parser/js-parser.d.ts +0 -16
  71. package/package/dist/post-script/parser/js-parser.js +0 -3
  72. package/package/dist/post-script/parser/js-parser.js.map +0 -1
  73. package/package/dist/post-script/parser/parser.d.ts +0 -6
  74. package/package/dist/post-script/parser/parser.js +0 -3
  75. package/package/dist/post-script/parser/parser.js.map +0 -1
  76. package/package/dist/post-script/post-script-executor.d.ts +0 -24
  77. package/package/dist/post-script/post-script-executor.js +0 -125
  78. package/package/dist/post-script/post-script-executor.js.map +0 -1
  79. package/package/dist/post-script/virtual-machine/virtual-machine.d.ts +0 -13
  80. package/package/dist/post-script/virtual-machine/virtual-machine.js +0 -3
  81. package/package/dist/post-script/virtual-machine/virtual-machine.js.map +0 -1
  82. package/package/dist/post-script/virtual-machine/vm2-virtual-machine.d.ts +0 -12
  83. package/package/dist/post-script/virtual-machine/vm2-virtual-machine.js +0 -81
  84. package/package/dist/post-script/virtual-machine/vm2-virtual-machine.js.map +0 -1
  85. package/package/dist/post-sequence.d.ts +0 -2
  86. package/package/dist/post-sequence.js +0 -192
  87. package/package/dist/post-sequence.js.map +0 -1
  88. package/package/dist/redact-data.d.ts +0 -2
  89. package/package/dist/redact-data.js +0 -60
  90. package/package/dist/redact-data.js.map +0 -1
  91. package/package/dist/report-types.d.ts +0 -102
  92. package/package/dist/report-types.js +0 -11
  93. package/package/dist/report-types.js.map +0 -1
  94. package/package/dist/request-sequence-result.d.ts +0 -37
  95. package/package/dist/request-sequence-result.js +0 -19
  96. package/package/dist/request-sequence-result.js.map +0 -1
  97. package/package/dist/request-stats.d.ts +0 -13
  98. package/package/dist/request-stats.js +0 -14
  99. package/package/dist/request-stats.js.map +0 -1
  100. package/package/dist/res-keeper.d.ts +0 -16
  101. package/package/dist/res-keeper.js +0 -104
  102. package/package/dist/res-keeper.js.map +0 -1
  103. package/package/dist/sampler.d.ts +0 -29
  104. package/package/dist/sampler.js +0 -276
  105. package/package/dist/sampler.js.map +0 -1
  106. package/package/dist/sequence-executor-like.d.ts +0 -23
  107. package/package/dist/sequence-executor-like.js +0 -3
  108. package/package/dist/sequence-executor-like.js.map +0 -1
  109. package/package/dist/sequence.d.ts +0 -16
  110. package/package/dist/sequence.js +0 -1738
  111. package/package/dist/sequence.js.map +0 -1
  112. package/package/dist/single-runner.d.ts +0 -29
  113. package/package/dist/single-runner.js +0 -147
  114. package/package/dist/single-runner.js.map +0 -1
  115. package/package/dist/step-handlers/code-step-handler.js +0 -93
  116. package/package/dist/step-handlers/code-step-handler.js.map +0 -1
  117. package/package/dist/step-handlers/extract-step-handler.d.ts +0 -12
  118. package/package/dist/step-handlers/extract-step-handler.js.map +0 -1
  119. package/package/dist/step-handlers/request-step-handler.d.ts +0 -13
  120. package/package/dist/step-handlers/request-step-handler.js +0 -94
  121. package/package/dist/step-handlers/request-step-handler.js.map +0 -1
  122. package/package/dist/step-handlers/step-handler.d.ts +0 -11
  123. package/package/dist/step-handlers/step-handler.js +0 -3
  124. package/package/dist/step-handlers/step-handler.js.map +0 -1
  125. package/package/dist/test-run-event-emitter.d.ts +0 -15
  126. package/package/dist/test-run-event-emitter.js +0 -36
  127. package/package/dist/test-run-event-emitter.js.map +0 -1
  128. package/package/dist/types/grpc.d.ts +0 -14
  129. package/package/dist/types/grpc.js +0 -3
  130. package/package/dist/types/grpc.js.map +0 -1
  131. package/package/dist/utils.d.ts +0 -3
  132. package/package/dist/utils.js +0 -32
  133. package/package/dist/utils.js.map +0 -1
  134. package/package/dist/work.d.ts +0 -15
  135. package/package/dist/work.js +0 -3
  136. package/package/dist/work.js.map +0 -1
  137. package/package/dist/ws.d.ts +0 -71
  138. package/package/dist/ws.js +0 -474
  139. package/package/dist/ws.js.map +0 -1
@@ -1,32 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.hasBeenTrimmed = exports.TRIMMED_TEXT = exports.getMaxRequestBodySize = void 0;
23
- var extrema_1 = require("@loadmill/core/dist/conf/extrema");
24
- var envUtils = __importStar(require("@loadmill/universal/dist/env-utils"));
25
- var getMaxRequestBodySize = function () {
26
- return envUtils.isBrowser() ? extrema_1.MAX_LOAD_REQUEST_BODY_LENGTH : extrema_1.MAX_API_REQUEST_BODY_LENGTH;
27
- };
28
- exports.getMaxRequestBodySize = getMaxRequestBodySize;
29
- exports.TRIMMED_TEXT = '\n...';
30
- var hasBeenTrimmed = function (text) { return text === null || text === void 0 ? void 0 : text.endsWith(exports.TRIMMED_TEXT); };
31
- exports.hasBeenTrimmed = hasBeenTrimmed;
32
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,4DAG0C;AAC1C,2EAA+D;AAExD,IAAM,qBAAqB,GAAG;IACnC,OAAA,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,sCAA4B,CAAC,CAAC,CAAC,qCAA2B;AAAjF,CAAiF,CAAC;AADvE,QAAA,qBAAqB,yBACkD;AAEvE,QAAA,YAAY,GAAG,OAAO,CAAC;AAC7B,IAAM,cAAc,GAAG,UAAC,IAAY,IAAK,OAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAC,oBAAY,CAAC,EAA5B,CAA4B,CAAC;AAAhE,QAAA,cAAc,kBAAkD"}
@@ -1,15 +0,0 @@
1
- import { AuthConf, LoadmillRequest, CachePenetration } from '@loadmill/core/dist/request';
2
- import { Parameters } from '@loadmill/core/dist/parameters';
3
- import { ExecutableConf } from './single-runner';
4
- export interface Work extends ExecutableConf {
5
- loadId: string;
6
- duration: number;
7
- iterations: number;
8
- iterationDelay: number;
9
- parameters: Parameters[];
10
- domainsWhiteList: string[];
11
- requests: LoadmillRequest[];
12
- cachePenetration: CachePenetration;
13
- auth?: AuthConf;
14
- useCookies?: boolean;
15
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=work.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"work.js","sourceRoot":"","sources":["../src/work.ts"],"names":[],"mappings":""}
@@ -1,71 +0,0 @@
1
- /// <reference types="node" />
2
- import WebSocket from 'ws';
3
- import { HttpResponseStatus, LoadmillHeaders } from '@loadmill/core/dist/request';
4
- import { IncomingHttpHeaders } from 'http';
5
- declare enum WSState {
6
- CONNECTING = 0,
7
- OPEN = 1,
8
- CLOSING = 2,
9
- CLOSED = 3
10
- }
11
- export declare class WSRequest {
12
- private readonly wsRequestArgs;
13
- private readonly wsHandler;
14
- private readonly onError;
15
- private hasErrorOccured?;
16
- private ws;
17
- url: string;
18
- expectedStatus: HttpResponseStatus;
19
- constructor(wsRequestArgs: WSRequestArguments, wsHandler: WSSequenceHandler, onError: (e: Error) => void);
20
- /**
21
- * This function is executed when we are ready to send the ws request
22
- * @param cb This callback is being executed after we successfully connected to ws and sent a ws message if there was any
23
- */
24
- ok(cb: (response: WSResponse) => boolean): Promise<{}>;
25
- private addConnection;
26
- private addEventListeners;
27
- private addOnErrorListener;
28
- private updateResponseOnError;
29
- private addOnUpgradeListener;
30
- private addOnOpenListener;
31
- private addOnMessageListener;
32
- verifyOpen(): Promise<void>;
33
- /**
34
- * Waiting for WS connection to go out of CONNECTING state
35
- * @param socket The ws connection object
36
- * @param timeout The timeout in milliseconds for the waiting procedure
37
- * @returns WSState
38
- */
39
- waitForConnectedState: (timeout?: number) => Promise<WSState>;
40
- private sendMessage;
41
- on(_eventName: string, _cb: Function): void;
42
- }
43
- export declare class WSSequenceHandler {
44
- private _connections;
45
- messages: string[];
46
- constructor();
47
- getConnection(url: string): WebSocket | undefined;
48
- storeConnection(url: string, wsConnection: WebSocket): void;
49
- closeAllConnections(): Promise<void>;
50
- getMessages(): string[];
51
- addMessage(message: string): void;
52
- clearMessages(): void;
53
- }
54
- export declare type WSMimeType = 'binary' | 'text';
55
- export declare type WSRequestArguments = {
56
- expectedStatus: HttpResponseStatus;
57
- headers: LoadmillHeaders;
58
- message: string;
59
- mimeType: WSMimeType;
60
- timeout: number;
61
- url: string;
62
- };
63
- export declare type WSResponse = {
64
- status?: number;
65
- res: {
66
- statusMessage?: string;
67
- };
68
- header: LoadmillHeaders | IncomingHttpHeaders;
69
- req: {};
70
- };
71
- export {};
@@ -1,474 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws.js","sourceRoot":"","sources":["../src/ws.ts"],"names":[],"mappings":"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"}