@wix/duplexer-js 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +239 -0
- package/dist/src/_external-types.d.ts +1 -0
- package/dist/src/authenticator.d.ts +22 -0
- package/dist/src/authenticator.js +42 -0
- package/dist/src/authenticator.js.map +1 -0
- package/dist/src/channels/channel.d.ts +29 -0
- package/dist/src/channels/channel.js +159 -0
- package/dist/src/channels/channel.js.map +1 -0
- package/dist/src/channels/channels.d.ts +13 -0
- package/dist/src/channels/channels.js +41 -0
- package/dist/src/channels/channels.js.map +1 -0
- package/dist/src/channels/subscription-error.d.ts +6 -0
- package/dist/src/channels/subscription-error.js +3 -0
- package/dist/src/channels/subscription-error.js.map +1 -0
- package/dist/src/connection-manager.d.ts +62 -0
- package/dist/src/connection-manager.js +228 -0
- package/dist/src/connection-manager.js.map +1 -0
- package/dist/src/constants.d.ts +5 -0
- package/dist/src/constants.js +9 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/domain.d.ts +3 -0
- package/dist/src/domain.js +3 -0
- package/dist/src/domain.js.map +1 -0
- package/dist/src/duplexer.d.ts +41 -0
- package/dist/src/duplexer.js +125 -0
- package/dist/src/duplexer.js.map +1 -0
- package/dist/src/environments/core/environment.d.ts +13 -0
- package/dist/src/environments/core/environment.js +25 -0
- package/dist/src/environments/core/environment.js.map +1 -0
- package/dist/src/environments/core/network.d.ts +6 -0
- package/dist/src/environments/core/network.js +32 -0
- package/dist/src/environments/core/network.js.map +1 -0
- package/dist/src/environments/react-native/environment.d.ts +7 -0
- package/dist/src/environments/react-native/environment.js +27 -0
- package/dist/src/environments/react-native/environment.js.map +1 -0
- package/dist/src/environments/react-native/network.d.ts +6 -0
- package/dist/src/environments/react-native/network.js +54 -0
- package/dist/src/environments/react-native/network.js.map +1 -0
- package/dist/src/environments/react-native/transports.d.ts +8 -0
- package/dist/src/environments/react-native/transports.js +31 -0
- package/dist/src/environments/react-native/transports.js.map +1 -0
- package/dist/src/environments/web/environment.d.ts +8 -0
- package/dist/src/environments/web/environment.js +19 -0
- package/dist/src/environments/web/environment.js.map +1 -0
- package/dist/src/environments/web/network.d.ts +4 -0
- package/dist/src/environments/web/network.js +38 -0
- package/dist/src/environments/web/network.js.map +1 -0
- package/dist/src/environments/web/transports.d.ts +8 -0
- package/dist/src/environments/web/transports.js +51 -0
- package/dist/src/environments/web/transports.js.map +1 -0
- package/dist/src/errors/is-transport-error.d.ts +1 -0
- package/dist/src/errors/is-transport-error.js +7 -0
- package/dist/src/errors/is-transport-error.js.map +1 -0
- package/dist/src/index.d.ts +11 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/instance-updater.d.ts +5 -0
- package/dist/src/instance-updater.js +3 -0
- package/dist/src/instance-updater.js.map +1 -0
- package/dist/src/keep-alive.d.ts +18 -0
- package/dist/src/keep-alive.js +66 -0
- package/dist/src/keep-alive.js.map +1 -0
- package/dist/src/ready-state.d.ts +6 -0
- package/dist/src/ready-state.js +10 -0
- package/dist/src/ready-state.js.map +1 -0
- package/dist/src/strategies/strategy-builder.d.ts +11 -0
- package/dist/src/strategies/strategy-builder.js +34 -0
- package/dist/src/strategies/strategy-builder.js.map +1 -0
- package/dist/src/strategies/strategy-presets.d.ts +4 -0
- package/dist/src/strategies/strategy-presets.js +20 -0
- package/dist/src/strategies/strategy-presets.js.map +1 -0
- package/dist/src/strategies/strategy.d.ts +25 -0
- package/dist/src/strategies/strategy.js +153 -0
- package/dist/src/strategies/strategy.js.map +1 -0
- package/dist/src/timeline/noop-timeline.d.ts +5 -0
- package/dist/src/timeline/noop-timeline.js +15 -0
- package/dist/src/timeline/noop-timeline.js.map +1 -0
- package/dist/src/timeline/timeline.d.ts +7 -0
- package/dist/src/timeline/timeline.js +3 -0
- package/dist/src/timeline/timeline.js.map +1 -0
- package/dist/src/transport/http-polling.d.ts +27 -0
- package/dist/src/transport/http-polling.js +245 -0
- package/dist/src/transport/http-polling.js.map +1 -0
- package/dist/src/transport/http.d.ts +14 -0
- package/dist/src/transport/http.js +106 -0
- package/dist/src/transport/http.js.map +1 -0
- package/dist/src/transport/params.d.ts +3 -0
- package/dist/src/transport/params.js +70 -0
- package/dist/src/transport/params.js.map +1 -0
- package/dist/src/transport/transport-error.d.ts +8 -0
- package/dist/src/transport/transport-error.js +3 -0
- package/dist/src/transport/transport-error.js.map +1 -0
- package/dist/src/transport/transport-params.d.ts +3 -0
- package/dist/src/transport/transport-params.js +3 -0
- package/dist/src/transport/transport-params.js.map +1 -0
- package/dist/src/transport/transport.d.ts +50 -0
- package/dist/src/transport/transport.js +120 -0
- package/dist/src/transport/transport.js.map +1 -0
- package/dist/src/transport/transports-manager.d.ts +42 -0
- package/dist/src/transport/transports-manager.js +248 -0
- package/dist/src/transport/transports-manager.js.map +1 -0
- package/dist/src/transport/unrecoverable.d.ts +1 -0
- package/dist/src/transport/unrecoverable.js +8 -0
- package/dist/src/transport/unrecoverable.js.map +1 -0
- package/dist/src/transport/websocket.d.ts +18 -0
- package/dist/src/transport/websocket.js +155 -0
- package/dist/src/transport/websocket.js.map +1 -0
- package/dist/src/utils/assert.d.ts +1 -0
- package/dist/src/utils/assert.js +34 -0
- package/dist/src/utils/assert.js.map +1 -0
- package/dist/src/utils/cancel-token.d.ts +10 -0
- package/dist/src/utils/cancel-token.js +28 -0
- package/dist/src/utils/cancel-token.js.map +1 -0
- package/dist/src/utils/deferred.d.ts +9 -0
- package/dist/src/utils/deferred.js +27 -0
- package/dist/src/utils/deferred.js.map +1 -0
- package/dist/src/utils/event-emitter.d.ts +15 -0
- package/dist/src/utils/event-emitter.js +106 -0
- package/dist/src/utils/event-emitter.js.map +1 -0
- package/dist/src/utils/on.d.ts +4 -0
- package/dist/src/utils/on.js +10 -0
- package/dist/src/utils/on.js.map +1 -0
- package/dist/src/utils/request.d.ts +20 -0
- package/dist/src/utils/request.js +164 -0
- package/dist/src/utils/request.js.map +1 -0
- package/dist/src/utils/timer.d.ts +8 -0
- package/dist/src/utils/timer.js +17 -0
- package/dist/src/utils/timer.js.map +1 -0
- package/dist/src/utils/utils.d.ts +1 -0
- package/dist/src/utils/utils.js +8 -0
- package/dist/src/utils/utils.js.map +1 -0
- package/dist/src/virtual-socket.d.ts +42 -0
- package/dist/src/virtual-socket.js +199 -0
- package/dist/src/virtual-socket.js.map +1 -0
- package/dist/statics/duplexer.bundle.js +982 -0
- package/dist/statics/duplexer.bundle.js.map +1 -0
- package/dist/statics/duplexer.bundle.min.js +2 -0
- package/dist/statics/duplexer.bundle.min.js.map +1 -0
- package/dist/statics/manifest.json +3 -0
- package/dist/statics/manifest.min.json +3 -0
- package/dist/test/_external-types.d.ts +2 -0
- package/dist/test/_global-types.d.ts +10 -0
- package/dist/test/_setup-global-hooks.spec.d.ts +1 -0
- package/dist/test/_setup-global-hooks.spec.js +13 -0
- package/dist/test/_setup-global-hooks.spec.js.map +1 -0
- package/dist/test/client-events.it.d.ts +1 -0
- package/dist/test/client-events.it.js +33 -0
- package/dist/test/client-events.it.js.map +1 -0
- package/dist/test/connect.spec.d.ts +1 -0
- package/dist/test/connect.spec.js +71 -0
- package/dist/test/connect.spec.js.map +1 -0
- package/dist/test/connection-manager.spec.d.ts +1 -0
- package/dist/test/connection-manager.spec.js +523 -0
- package/dist/test/connection-manager.spec.js.map +1 -0
- package/dist/test/duplexer.it.d.ts +1 -0
- package/dist/test/duplexer.it.js +243 -0
- package/dist/test/duplexer.it.js.map +1 -0
- package/dist/test/duplexer.spec.d.ts +1 -0
- package/dist/test/duplexer.spec.js +337 -0
- package/dist/test/duplexer.spec.js.map +1 -0
- package/dist/test/environments/web.it.d.ts +1 -0
- package/dist/test/environments/web.it.js +30 -0
- package/dist/test/environments/web.it.js.map +1 -0
- package/dist/test/environments/web.spec.d.ts +1 -0
- package/dist/test/environments/web.spec.js +92 -0
- package/dist/test/environments/web.spec.js.map +1 -0
- package/dist/test/event-emitter.spec.d.ts +1 -0
- package/dist/test/event-emitter.spec.js +182 -0
- package/dist/test/event-emitter.spec.js.map +1 -0
- package/dist/test/helpers/as-promised.d.ts +7 -0
- package/dist/test/helpers/as-promised.js +38 -0
- package/dist/test/helpers/as-promised.js.map +1 -0
- package/dist/test/helpers/assertions.d.ts +8 -0
- package/dist/test/helpers/assertions.js +43 -0
- package/dist/test/helpers/assertions.js.map +1 -0
- package/dist/test/helpers/auth-server.d.ts +10 -0
- package/dist/test/helpers/auth-server.js +61 -0
- package/dist/test/helpers/auth-server.js.map +1 -0
- package/dist/test/helpers/http-polling-environment.d.ts +2 -0
- package/dist/test/helpers/http-polling-environment.js +20 -0
- package/dist/test/helpers/http-polling-environment.js.map +1 -0
- package/dist/test/helpers/in-memory-environemnt.d.ts +15 -0
- package/dist/test/helpers/in-memory-environemnt.js +39 -0
- package/dist/test/helpers/in-memory-environemnt.js.map +1 -0
- package/dist/test/helpers/in-memory-network.d.ts +5 -0
- package/dist/test/helpers/in-memory-network.js +37 -0
- package/dist/test/helpers/in-memory-network.js.map +1 -0
- package/dist/test/helpers/in-memory-timeline.d.ts +8 -0
- package/dist/test/helpers/in-memory-timeline.js +24 -0
- package/dist/test/helpers/in-memory-timeline.js.map +1 -0
- package/dist/test/helpers/in-memory-transport.d.ts +68 -0
- package/dist/test/helpers/in-memory-transport.js +271 -0
- package/dist/test/helpers/in-memory-transport.js.map +1 -0
- package/dist/test/helpers/server-interceptor.d.ts +10 -0
- package/dist/test/helpers/server-interceptor.js +138 -0
- package/dist/test/helpers/server-interceptor.js.map +1 -0
- package/dist/test/helpers/setup-global-mock-navigator.d.ts +4 -0
- package/dist/test/helpers/setup-global-mock-navigator.js +22 -0
- package/dist/test/helpers/setup-global-mock-navigator.js.map +1 -0
- package/dist/test/helpers/window.d.ts +1 -0
- package/dist/test/helpers/window.js +17 -0
- package/dist/test/helpers/window.js.map +1 -0
- package/dist/test/keep-alive.it.spec.d.ts +1 -0
- package/dist/test/keep-alive.it.spec.js +42 -0
- package/dist/test/keep-alive.it.spec.js.map +1 -0
- package/dist/test/keep-alive.spec.d.ts +1 -0
- package/dist/test/keep-alive.spec.js +140 -0
- package/dist/test/keep-alive.spec.js.map +1 -0
- package/dist/test/ng/channel-support.d.ts +39 -0
- package/dist/test/ng/channel-support.js +178 -0
- package/dist/test/ng/channel-support.js.map +1 -0
- package/dist/test/ng/channels.spec.d.ts +1 -0
- package/dist/test/ng/channels.spec.js +79 -0
- package/dist/test/ng/channels.spec.js.map +1 -0
- package/dist/test/ng/client-events.it.d.ts +1 -0
- package/dist/test/ng/client-events.it.js +75 -0
- package/dist/test/ng/client-events.it.js.map +1 -0
- package/dist/test/ng/connect.it.d.ts +1 -0
- package/dist/test/ng/connect.it.js +128 -0
- package/dist/test/ng/connect.it.js.map +1 -0
- package/dist/test/ng/corvid-environment.d.ts +22 -0
- package/dist/test/ng/corvid-environment.js +44 -0
- package/dist/test/ng/corvid-environment.js.map +1 -0
- package/dist/test/ng/environment.d.ts +49 -0
- package/dist/test/ng/environment.js +250 -0
- package/dist/test/ng/environment.js.map +1 -0
- package/dist/test/ng/setup.d.ts +54 -0
- package/dist/test/ng/setup.js +256 -0
- package/dist/test/ng/setup.js.map +1 -0
- package/dist/test/ng/subscribe.it.d.ts +1 -0
- package/dist/test/ng/subscribe.it.js +354 -0
- package/dist/test/ng/subscribe.it.js.map +1 -0
- package/dist/test/ng/unsubscribe.it.d.ts +1 -0
- package/dist/test/ng/unsubscribe.it.js +73 -0
- package/dist/test/ng/unsubscribe.it.js.map +1 -0
- package/dist/test/ng/util-functions.d.ts +7 -0
- package/dist/test/ng/util-functions.js +73 -0
- package/dist/test/ng/util-functions.js.map +1 -0
- package/dist/test/proto/client/index.d.ts +2852 -0
- package/dist/test/proto/index.d.ts +1421 -0
- package/dist/test/proto/server/index.d.ts +2832 -0
- package/dist/test/restore-overrides.it.d.ts +1 -0
- package/dist/test/restore-overrides.it.js +38 -0
- package/dist/test/restore-overrides.it.js.map +1 -0
- package/dist/test/setup.d.ts +1 -0
- package/dist/test/setup.js +5 -0
- package/dist/test/setup.js.map +1 -0
- package/dist/test/strategy.spec.d.ts +1 -0
- package/dist/test/strategy.spec.js +209 -0
- package/dist/test/strategy.spec.js.map +1 -0
- package/dist/test/subscribe.it.d.ts +1 -0
- package/dist/test/subscribe.it.js +216 -0
- package/dist/test/subscribe.it.js.map +1 -0
- package/dist/test/subscribe.spec.d.ts +1 -0
- package/dist/test/subscribe.spec.js +86 -0
- package/dist/test/subscribe.spec.js.map +1 -0
- package/dist/test/transporters/http-polling.it.d.ts +1 -0
- package/dist/test/transporters/http-polling.it.js +118 -0
- package/dist/test/transporters/http-polling.it.js.map +1 -0
- package/dist/test/transporters/http-polling.spec.d.ts +1 -0
- package/dist/test/transporters/http-polling.spec.js +354 -0
- package/dist/test/transporters/http-polling.spec.js.map +1 -0
- package/dist/test/transporters/transporter.spec.d.ts +1 -0
- package/dist/test/transporters/transporter.spec.js +46 -0
- package/dist/test/transporters/transporter.spec.js.map +1 -0
- package/dist/test/transporters/websocket.spec.d.ts +1 -0
- package/dist/test/transporters/websocket.spec.js +26 -0
- package/dist/test/transporters/websocket.spec.js.map +1 -0
- package/dist/test/transports-manager.spec.d.ts +1 -0
- package/dist/test/transports-manager.spec.js +346 -0
- package/dist/test/transports-manager.spec.js.map +1 -0
- package/dist/test/utils/request.spec.d.ts +1 -0
- package/dist/test/utils/request.spec.js +274 -0
- package/dist/test/utils/request.spec.js.map +1 -0
- package/dist/test/virtual-socket.it.d.ts +1 -0
- package/dist/test/virtual-socket.it.js +153 -0
- package/dist/test/virtual-socket.it.js.map +1 -0
- package/package.json +131 -0
- package/react-native.d.ts +1 -0
- package/react-native.js +1 -0
|
@@ -0,0 +1,70 @@
|
|
|
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 (g && (g = 0, op[0] && (_ = 0)), _) 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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.withParams = exports.createParams = void 0;
|
|
40
|
+
function createParams(instanceUpdater, siteRevision) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
42
|
+
var params, instance;
|
|
43
|
+
return __generator(this, function (_a) {
|
|
44
|
+
switch (_a.label) {
|
|
45
|
+
case 0:
|
|
46
|
+
params = new URLSearchParams();
|
|
47
|
+
if (!instanceUpdater) return [3 /*break*/, 2];
|
|
48
|
+
return [4 /*yield*/, instanceUpdater.getInstance()];
|
|
49
|
+
case 1:
|
|
50
|
+
instance = _a.sent();
|
|
51
|
+
params.append('v', '2');
|
|
52
|
+
params.append('instance', instance);
|
|
53
|
+
_a.label = 2;
|
|
54
|
+
case 2:
|
|
55
|
+
if (siteRevision) {
|
|
56
|
+
params.append('siteRevision', siteRevision);
|
|
57
|
+
}
|
|
58
|
+
return [2 /*return*/, params];
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
exports.createParams = createParams;
|
|
64
|
+
function withParams(url, params) {
|
|
65
|
+
var rawParams = params.toString();
|
|
66
|
+
var qs = rawParams === '' ? '' : "?".concat(rawParams);
|
|
67
|
+
return "".concat(url).concat(qs);
|
|
68
|
+
}
|
|
69
|
+
exports.withParams = withParams;
|
|
70
|
+
//# sourceMappingURL=params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"params.js","sourceRoot":"","sources":["../../../src/transport/params.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAsB,YAAY,CAChC,eAAgC,EAChC,YAAoB;;;;;;oBAEd,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;yBAEjC,eAAe,EAAf,wBAAe;oBACA,qBAAM,eAAe,CAAC,WAAW,EAAE,EAAA;;oBAA9C,QAAQ,GAAG,SAAmC;oBAEpD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBACxB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;;;oBAGtC,IAAI,YAAY,EAAE,CAAC;wBACjB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;oBAC9C,CAAC;oBAED,sBAAO,MAAM,EAAC;;;;CACf;AAlBD,oCAkBC;AAED,SAAgB,UAAU,CAAC,GAAW,EAAE,MAAuB;IAC7D,IAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IACpC,IAAM,EAAE,GAAG,SAAS,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAI,SAAS,CAAE,CAAC;IACnD,OAAO,UAAG,GAAG,SAAG,EAAE,CAAE,CAAC;AACvB,CAAC;AAJD,gCAIC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-error.js","sourceRoot":"","sources":["../../../src/transport/transport-error.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport-params.js","sourceRoot":"","sources":["../../../src/transport/transport-params.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Emitter } from '../utils/event-emitter';
|
|
2
|
+
import { Protocol } from '@wix/wix-duplexer-typescript-definitions';
|
|
3
|
+
import { PollPayloadProtocol } from '@wix/wix-duplexer-protocol/dist/lib/PollPayloadBuilder';
|
|
4
|
+
import ReadyState from '../ready-state';
|
|
5
|
+
import { TransportError, InternalTransportError, TransportType } from './transport-error';
|
|
6
|
+
export interface WriteOptions {
|
|
7
|
+
affectState: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface TransportOpts {
|
|
10
|
+
keepAlive: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Transport responsibilities:
|
|
14
|
+
*
|
|
15
|
+
* - Open/close connection
|
|
16
|
+
* - Encode/decode packets and pass through
|
|
17
|
+
* - Mark connection as open by waiting for connection_established packet, dealing with session id
|
|
18
|
+
* - Todo: handling packets queue (move from virtual socket)
|
|
19
|
+
*
|
|
20
|
+
* Events:
|
|
21
|
+
*
|
|
22
|
+
* - "open" - on "connection_established" packet from connectioon.
|
|
23
|
+
* - "close" - on close either from transport side or client one, error might be attached.
|
|
24
|
+
* - "packet" - pass through packets coming from connection.
|
|
25
|
+
*/
|
|
26
|
+
export default abstract class Transport extends Emitter {
|
|
27
|
+
private readonly keepAlive;
|
|
28
|
+
protected payload: PollPayloadProtocol;
|
|
29
|
+
readyState: ReadyState;
|
|
30
|
+
sessionId: string;
|
|
31
|
+
constructor(opts: TransportOpts);
|
|
32
|
+
get keepAliveEnabled(): boolean;
|
|
33
|
+
send(packet: Protocol.Packet, opts?: WriteOptions): void;
|
|
34
|
+
updatePayload(params: PollPayloadProtocol): void;
|
|
35
|
+
close(error?: InternalTransportError): void;
|
|
36
|
+
abstract get name(): TransportType;
|
|
37
|
+
abstract open(): Promise<void>;
|
|
38
|
+
protected abstract closeClient(): void;
|
|
39
|
+
protected transportError(error: InternalTransportError): TransportError;
|
|
40
|
+
protected abstract write(packet: Protocol.Packet, opts?: WriteOptions): void;
|
|
41
|
+
protected onData(packet: Protocol.Packet | Protocol.Packet[]): void;
|
|
42
|
+
/**
|
|
43
|
+
* this function should be called by transport when it decides to close - for whatever
|
|
44
|
+
* reason (usually unexpected on such as network error or invalid request). then it
|
|
45
|
+
* propagaes to the client until it reaches virtual socket.
|
|
46
|
+
*/
|
|
47
|
+
protected onTransportClose(error: TransportError): void;
|
|
48
|
+
protected restoreState(): void;
|
|
49
|
+
private handlePacket;
|
|
50
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
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 __assign = (this && this.__assign) || function () {
|
|
18
|
+
__assign = Object.assign || function(t) {
|
|
19
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
20
|
+
s = arguments[i];
|
|
21
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
22
|
+
t[p] = s[p];
|
|
23
|
+
}
|
|
24
|
+
return t;
|
|
25
|
+
};
|
|
26
|
+
return __assign.apply(this, arguments);
|
|
27
|
+
};
|
|
28
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
/* eslint-disable no-shadow */
|
|
33
|
+
var event_emitter_1 = require("../utils/event-emitter");
|
|
34
|
+
var ready_state_1 = __importDefault(require("../ready-state"));
|
|
35
|
+
/**
|
|
36
|
+
* Transport responsibilities:
|
|
37
|
+
*
|
|
38
|
+
* - Open/close connection
|
|
39
|
+
* - Encode/decode packets and pass through
|
|
40
|
+
* - Mark connection as open by waiting for connection_established packet, dealing with session id
|
|
41
|
+
* - Todo: handling packets queue (move from virtual socket)
|
|
42
|
+
*
|
|
43
|
+
* Events:
|
|
44
|
+
*
|
|
45
|
+
* - "open" - on "connection_established" packet from connectioon.
|
|
46
|
+
* - "close" - on close either from transport side or client one, error might be attached.
|
|
47
|
+
* - "packet" - pass through packets coming from connection.
|
|
48
|
+
*/
|
|
49
|
+
var Transport = /** @class */ (function (_super) {
|
|
50
|
+
__extends(Transport, _super);
|
|
51
|
+
function Transport(opts) {
|
|
52
|
+
var _this = _super.call(this) || this;
|
|
53
|
+
_this.readyState = ready_state_1.default.CLOSED;
|
|
54
|
+
_this.restoreState();
|
|
55
|
+
_this.keepAlive = opts.keepAlive;
|
|
56
|
+
return _this;
|
|
57
|
+
}
|
|
58
|
+
Object.defineProperty(Transport.prototype, "keepAliveEnabled", {
|
|
59
|
+
get: function () {
|
|
60
|
+
return this.keepAlive;
|
|
61
|
+
},
|
|
62
|
+
enumerable: false,
|
|
63
|
+
configurable: true
|
|
64
|
+
});
|
|
65
|
+
Transport.prototype.send = function (packet, opts) {
|
|
66
|
+
this.write(packet, opts);
|
|
67
|
+
};
|
|
68
|
+
Transport.prototype.updatePayload = function (params) {
|
|
69
|
+
this.payload = params;
|
|
70
|
+
};
|
|
71
|
+
Transport.prototype.close = function (error) {
|
|
72
|
+
var transportError = error ? this.transportError(error) : undefined;
|
|
73
|
+
this.closeClient();
|
|
74
|
+
this.onTransportClose(transportError);
|
|
75
|
+
};
|
|
76
|
+
Transport.prototype.transportError = function (error) {
|
|
77
|
+
return __assign(__assign({}, error), { transport: this.name });
|
|
78
|
+
};
|
|
79
|
+
Transport.prototype.onData = function (packet) {
|
|
80
|
+
var _this = this;
|
|
81
|
+
if (!Array.isArray(packet)) {
|
|
82
|
+
this.handlePacket(packet);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
packet.forEach(function (packet) { return _this.handlePacket(packet); });
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* this function should be called by transport when it decides to close - for whatever
|
|
90
|
+
* reason (usually unexpected on such as network error or invalid request). then it
|
|
91
|
+
* propagaes to the client until it reaches virtual socket.
|
|
92
|
+
*/
|
|
93
|
+
Transport.prototype.onTransportClose = function (error) {
|
|
94
|
+
if (this.readyState !== ready_state_1.default.CLOSED) {
|
|
95
|
+
this.restoreState();
|
|
96
|
+
this.emit('close', error);
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.emit('connect_error', error);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
Transport.prototype.restoreState = function () {
|
|
103
|
+
this.readyState = ready_state_1.default.CLOSED;
|
|
104
|
+
this.sessionId = '';
|
|
105
|
+
};
|
|
106
|
+
Transport.prototype.handlePacket = function (packet) {
|
|
107
|
+
switch (packet.type) {
|
|
108
|
+
case 'connection_established':
|
|
109
|
+
this.sessionId = packet.sessionId;
|
|
110
|
+
this.readyState = ready_state_1.default.OPEN;
|
|
111
|
+
this.emit('open', packet);
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
this.emit('packet', packet);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
return Transport;
|
|
118
|
+
}(event_emitter_1.Emitter));
|
|
119
|
+
exports.default = Transport;
|
|
120
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/transport/transport.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8BAA8B;AAC9B,wDAAiD;AAGjD,+DAAwC;AAexC;;;;;;;;;;;;;GAaG;AACH;IAAgD,6BAAO;IAOrD,mBAAY,IAAmB;QAC7B,YAAA,MAAK,WAAE,SAAC;QAJH,gBAAU,GAAG,qBAAU,CAAC,MAAM,CAAC;QAMpC,KAAI,CAAC,YAAY,EAAE,CAAC;QACpB,KAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;IAClC,CAAC;IAED,sBAAI,uCAAgB;aAApB;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;;;OAAA;IAED,wBAAI,GAAJ,UAAK,MAAuB,EAAE,IAAmB;QAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,iCAAa,GAAb,UAAc,MAA2B;QACvC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAED,yBAAK,GAAL,UAAM,KAA8B;QAClC,IAAM,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC;IAQS,kCAAc,GAAxB,UAAyB,KAA6B;QACpD,6BAAY,KAAK,KAAE,SAAS,EAAE,IAAI,CAAC,IAAI,IAAG;IAC5C,CAAC;IAIS,0BAAM,GAAhB,UAAiB,MAA2C;QAA5D,iBAMC;QALC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,CAAC,UAAC,MAAM,IAAK,OAAA,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAzB,CAAyB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED;;;;OAIG;IACO,oCAAgB,GAA1B,UAA2B,KAAqB;QAC9C,IAAI,IAAI,CAAC,UAAU,KAAK,qBAAU,CAAC,MAAM,EAAE,CAAC;YAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAES,gCAAY,GAAtB;QACE,IAAI,CAAC,UAAU,GAAG,qBAAU,CAAC,MAAM,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAEO,gCAAY,GAApB,UAAqB,MAAuB;QAC1C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,KAAK,wBAAwB;gBAC3B,IAAI,CAAC,SAAS,GACZ,MACD,CAAC,SAAS,CAAC;gBACZ,IAAI,CAAC,UAAU,GAAG,qBAAU,CAAC,IAAI,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC1B,MAAM;YAER;gBACE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACH,gBAAC;AAAD,CAAC,AAtFD,CAAgD,uBAAO,GAsFtD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Emitter } from '../utils/event-emitter';
|
|
2
|
+
import { Protocol } from '@wix/wix-duplexer-typescript-definitions';
|
|
3
|
+
import Strategy from '../strategies/strategy';
|
|
4
|
+
import Transport from './transport';
|
|
5
|
+
import ReadyState from '../ready-state';
|
|
6
|
+
export interface ConnectState {
|
|
7
|
+
success: boolean;
|
|
8
|
+
connectionEstablishedPacket?: Protocol.ConnectionEstablishedPacket;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* TransportsManager responsibilities:
|
|
12
|
+
*
|
|
13
|
+
* - Initizlize "first to connect" (according given strategies)
|
|
14
|
+
* - Close active connection or connection process
|
|
15
|
+
*
|
|
16
|
+
* Events:
|
|
17
|
+
* - "close" - in case (1) connected trasnport closed or (2) connect canceled
|
|
18
|
+
* - "connect_error" - passes through "close" events coming from trasnports during connection
|
|
19
|
+
* phase, may occurs several times during the connect tries.
|
|
20
|
+
* - "message" - pass through packets coming from open transport.
|
|
21
|
+
*/
|
|
22
|
+
export default class TransportsManager extends Emitter {
|
|
23
|
+
private readonly strategies;
|
|
24
|
+
private _transport;
|
|
25
|
+
private disposables;
|
|
26
|
+
private cancelToken;
|
|
27
|
+
readyState: ReadyState;
|
|
28
|
+
constructor(strategies: Strategy[]);
|
|
29
|
+
get transport(): Transport;
|
|
30
|
+
connect(): Promise<ConnectState>;
|
|
31
|
+
close(): void;
|
|
32
|
+
isOpen(): boolean;
|
|
33
|
+
isClosed(): boolean;
|
|
34
|
+
private isOpening;
|
|
35
|
+
private connectToFirstToRespondStrategy;
|
|
36
|
+
private onClose;
|
|
37
|
+
private abortStrategiesWithNoOpenTransport;
|
|
38
|
+
private listenAndEmitConnectErrorsInAllTransportsOnConnecting;
|
|
39
|
+
private listenEventsOfActiveTransport;
|
|
40
|
+
private removeListeners;
|
|
41
|
+
private onData;
|
|
42
|
+
}
|
|
@@ -0,0 +1,248 @@
|
|
|
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 (g && (g = 0, op[0] && (_ = 0)), _) 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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
54
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
55
|
+
if (ar || !(i in from)) {
|
|
56
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
57
|
+
ar[i] = from[i];
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
61
|
+
};
|
|
62
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
63
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
64
|
+
};
|
|
65
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
66
|
+
var event_emitter_1 = require("../utils/event-emitter");
|
|
67
|
+
var ready_state_1 = __importDefault(require("../ready-state"));
|
|
68
|
+
var on_1 = __importDefault(require("../utils/on"));
|
|
69
|
+
var deferred_1 = __importDefault(require("../utils/deferred"));
|
|
70
|
+
/**
|
|
71
|
+
* TransportsManager responsibilities:
|
|
72
|
+
*
|
|
73
|
+
* - Initizlize "first to connect" (according given strategies)
|
|
74
|
+
* - Close active connection or connection process
|
|
75
|
+
*
|
|
76
|
+
* Events:
|
|
77
|
+
* - "close" - in case (1) connected trasnport closed or (2) connect canceled
|
|
78
|
+
* - "connect_error" - passes through "close" events coming from trasnports during connection
|
|
79
|
+
* phase, may occurs several times during the connect tries.
|
|
80
|
+
* - "message" - pass through packets coming from open transport.
|
|
81
|
+
*/
|
|
82
|
+
var TransportsManager = /** @class */ (function (_super) {
|
|
83
|
+
__extends(TransportsManager, _super);
|
|
84
|
+
function TransportsManager(strategies) {
|
|
85
|
+
var _this = _super.call(this) || this;
|
|
86
|
+
_this.strategies = strategies;
|
|
87
|
+
_this.disposables = [];
|
|
88
|
+
_this.readyState = ready_state_1.default.CLOSED;
|
|
89
|
+
return _this;
|
|
90
|
+
}
|
|
91
|
+
Object.defineProperty(TransportsManager.prototype, "transport", {
|
|
92
|
+
get: function () {
|
|
93
|
+
return this._transport;
|
|
94
|
+
},
|
|
95
|
+
enumerable: false,
|
|
96
|
+
configurable: true
|
|
97
|
+
});
|
|
98
|
+
TransportsManager.prototype.connect = function () {
|
|
99
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
100
|
+
var connectionEstablishedPacket, e_1;
|
|
101
|
+
return __generator(this, function (_a) {
|
|
102
|
+
switch (_a.label) {
|
|
103
|
+
case 0:
|
|
104
|
+
if (this.readyState !== ready_state_1.default.CLOSED) {
|
|
105
|
+
return [2 /*return*/, connectCanceled()];
|
|
106
|
+
}
|
|
107
|
+
this.cancelToken = new deferred_1.default();
|
|
108
|
+
this.readyState = ready_state_1.default.OPENING;
|
|
109
|
+
this.listenAndEmitConnectErrorsInAllTransportsOnConnecting();
|
|
110
|
+
_a.label = 1;
|
|
111
|
+
case 1:
|
|
112
|
+
_a.trys.push([1, 3, , 4]);
|
|
113
|
+
return [4 /*yield*/, this.connectToFirstToRespondStrategy()];
|
|
114
|
+
case 2:
|
|
115
|
+
connectionEstablishedPacket =
|
|
116
|
+
_a.sent();
|
|
117
|
+
return [3 /*break*/, 4];
|
|
118
|
+
case 3:
|
|
119
|
+
e_1 = _a.sent();
|
|
120
|
+
return [2 /*return*/, connectCanceled()];
|
|
121
|
+
case 4:
|
|
122
|
+
this.cancelToken = null;
|
|
123
|
+
this.removeListeners();
|
|
124
|
+
this.abortStrategiesWithNoOpenTransport();
|
|
125
|
+
this.listenEventsOfActiveTransport();
|
|
126
|
+
return [2 /*return*/, connectSuccess(connectionEstablishedPacket)];
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
TransportsManager.prototype.close = function () {
|
|
132
|
+
if (this.isOpen()) {
|
|
133
|
+
// transport emits 'close' event, so this.onClose() will be called later on
|
|
134
|
+
this.transport.close();
|
|
135
|
+
}
|
|
136
|
+
else if (this.isOpening()) {
|
|
137
|
+
this.cancelToken && this.cancelToken.reject();
|
|
138
|
+
this.onClose();
|
|
139
|
+
this.strategies.forEach(function (s) { return s.abort(); });
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
TransportsManager.prototype.isOpen = function () {
|
|
143
|
+
return this.readyState === ready_state_1.default.OPEN;
|
|
144
|
+
};
|
|
145
|
+
TransportsManager.prototype.isClosed = function () {
|
|
146
|
+
return this.readyState === ready_state_1.default.CLOSED;
|
|
147
|
+
};
|
|
148
|
+
TransportsManager.prototype.isOpening = function () {
|
|
149
|
+
return this.readyState === ready_state_1.default.OPENING;
|
|
150
|
+
};
|
|
151
|
+
TransportsManager.prototype.connectToFirstToRespondStrategy = function () {
|
|
152
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
153
|
+
var _a, transport, connectionEstablishedPacket;
|
|
154
|
+
return __generator(this, function (_b) {
|
|
155
|
+
switch (_b.label) {
|
|
156
|
+
case 0: return [4 /*yield*/, Promise.race(__spreadArray(__spreadArray([], this.strategies.map(function (s) { return s.connect(); }), true), [
|
|
157
|
+
this.cancelToken.promise,
|
|
158
|
+
], false))];
|
|
159
|
+
case 1:
|
|
160
|
+
_a = _b.sent(), transport = _a.transport, connectionEstablishedPacket = _a.connectionEstablishedPacket;
|
|
161
|
+
this._transport = transport;
|
|
162
|
+
this.readyState = ready_state_1.default.OPEN;
|
|
163
|
+
return [2 /*return*/, connectionEstablishedPacket];
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
};
|
|
168
|
+
TransportsManager.prototype.onClose = function (error) {
|
|
169
|
+
this.readyState = ready_state_1.default.CLOSED;
|
|
170
|
+
this._transport = null;
|
|
171
|
+
this.cancelToken = null;
|
|
172
|
+
this.removeListeners();
|
|
173
|
+
/**
|
|
174
|
+
* the reason we always propagaes 'close' event is that some entities in the system
|
|
175
|
+
* have to make a clean up or just react, for instance:
|
|
176
|
+
*
|
|
177
|
+
* - connection manager MAY reconnect.
|
|
178
|
+
* - vritual socket must notify to its user (disconnected event).
|
|
179
|
+
*
|
|
180
|
+
* so it doesn't matter WHY close happened - everyone should always get notified.
|
|
181
|
+
*/
|
|
182
|
+
this.emit('close', error);
|
|
183
|
+
};
|
|
184
|
+
TransportsManager.prototype.abortStrategiesWithNoOpenTransport = function () {
|
|
185
|
+
this.strategies
|
|
186
|
+
.filter(function (s) { return s.transport.readyState !== ready_state_1.default.OPEN; })
|
|
187
|
+
.forEach(function (s) { return s.abort(); });
|
|
188
|
+
};
|
|
189
|
+
TransportsManager.prototype.listenAndEmitConnectErrorsInAllTransportsOnConnecting = function () {
|
|
190
|
+
var _this = this;
|
|
191
|
+
this.disposables = this.strategies.map(function (s) {
|
|
192
|
+
return (0, on_1.default)(s, 'connect_error', function (error) {
|
|
193
|
+
if (error.recoverable) {
|
|
194
|
+
_this.emit('connect_error', error);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
_this.close();
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
TransportsManager.prototype.listenEventsOfActiveTransport = function () {
|
|
203
|
+
var _this = this;
|
|
204
|
+
this.disposables = [
|
|
205
|
+
/**
|
|
206
|
+
* might be called either because transport got error or due to a side-effect
|
|
207
|
+
* when someone calls TransportsManager.close().
|
|
208
|
+
*/
|
|
209
|
+
(0, on_1.default)(this.transport, 'close', function (error) {
|
|
210
|
+
_this.onClose(error);
|
|
211
|
+
}),
|
|
212
|
+
(0, on_1.default)(this.transport, 'packet', function (packet) {
|
|
213
|
+
_this.onData(packet);
|
|
214
|
+
}),
|
|
215
|
+
];
|
|
216
|
+
};
|
|
217
|
+
TransportsManager.prototype.removeListeners = function () {
|
|
218
|
+
this.disposables.forEach(function (l) { return l.destroy(); });
|
|
219
|
+
this.disposables = [];
|
|
220
|
+
};
|
|
221
|
+
// todo: rewrite this method, it looks ugly
|
|
222
|
+
TransportsManager.prototype.onData = function (packet) {
|
|
223
|
+
switch (packet.type) {
|
|
224
|
+
case 'message':
|
|
225
|
+
case 'ack':
|
|
226
|
+
case 'error':
|
|
227
|
+
case 'UpdateRestoreStrategyOverrides':
|
|
228
|
+
this.emit('message', packet);
|
|
229
|
+
break;
|
|
230
|
+
default:
|
|
231
|
+
break;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
return TransportsManager;
|
|
235
|
+
}(event_emitter_1.Emitter));
|
|
236
|
+
exports.default = TransportsManager;
|
|
237
|
+
function connectSuccess(connectionEstablishedPacket) {
|
|
238
|
+
return {
|
|
239
|
+
success: true,
|
|
240
|
+
connectionEstablishedPacket: connectionEstablishedPacket,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
function connectCanceled() {
|
|
244
|
+
return {
|
|
245
|
+
success: false,
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=transports-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transports-manager.js","sourceRoot":"","sources":["../../../src/transport/transports-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isRecoverableCode(code: number): boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isRecoverableCode = void 0;
|
|
4
|
+
function isRecoverableCode(code) {
|
|
5
|
+
return [401].every(function (unrecoverableStatus) { return unrecoverableStatus !== code; });
|
|
6
|
+
}
|
|
7
|
+
exports.isRecoverableCode = isRecoverableCode;
|
|
8
|
+
//# sourceMappingURL=unrecoverable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unrecoverable.js","sourceRoot":"","sources":["../../../src/transport/unrecoverable.ts"],"names":[],"mappings":";;;AAAA,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,UAAC,mBAAmB,IAAK,OAAA,mBAAmB,KAAK,IAAI,EAA5B,CAA4B,CAAC,CAAC;AAC5E,CAAC;AAFD,8CAEC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Protocol } from '@wix/wix-duplexer-typescript-definitions';
|
|
2
|
+
import Transport from './transport';
|
|
3
|
+
import { TransportType } from './transport-error';
|
|
4
|
+
import { InstanceUpdater } from '../instance-updater';
|
|
5
|
+
export default class WS extends Transport {
|
|
6
|
+
private readonly url;
|
|
7
|
+
private readonly instanceUpdater;
|
|
8
|
+
private readonly siteRevision?;
|
|
9
|
+
private ws;
|
|
10
|
+
constructor(url: string, instanceUpdater?: InstanceUpdater, siteRevision?: string);
|
|
11
|
+
static isSupported(): boolean;
|
|
12
|
+
get name(): TransportType;
|
|
13
|
+
open(): Promise<void>;
|
|
14
|
+
protected closeClient(): void;
|
|
15
|
+
protected write(packet: Protocol.Packet): void;
|
|
16
|
+
private listen;
|
|
17
|
+
private cleanWebSocketHooks;
|
|
18
|
+
}
|