@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.
Files changed (280) hide show
  1. package/README.md +239 -0
  2. package/dist/src/_external-types.d.ts +1 -0
  3. package/dist/src/authenticator.d.ts +22 -0
  4. package/dist/src/authenticator.js +42 -0
  5. package/dist/src/authenticator.js.map +1 -0
  6. package/dist/src/channels/channel.d.ts +29 -0
  7. package/dist/src/channels/channel.js +159 -0
  8. package/dist/src/channels/channel.js.map +1 -0
  9. package/dist/src/channels/channels.d.ts +13 -0
  10. package/dist/src/channels/channels.js +41 -0
  11. package/dist/src/channels/channels.js.map +1 -0
  12. package/dist/src/channels/subscription-error.d.ts +6 -0
  13. package/dist/src/channels/subscription-error.js +3 -0
  14. package/dist/src/channels/subscription-error.js.map +1 -0
  15. package/dist/src/connection-manager.d.ts +62 -0
  16. package/dist/src/connection-manager.js +228 -0
  17. package/dist/src/connection-manager.js.map +1 -0
  18. package/dist/src/constants.d.ts +5 -0
  19. package/dist/src/constants.js +9 -0
  20. package/dist/src/constants.js.map +1 -0
  21. package/dist/src/domain.d.ts +3 -0
  22. package/dist/src/domain.js +3 -0
  23. package/dist/src/domain.js.map +1 -0
  24. package/dist/src/duplexer.d.ts +41 -0
  25. package/dist/src/duplexer.js +125 -0
  26. package/dist/src/duplexer.js.map +1 -0
  27. package/dist/src/environments/core/environment.d.ts +13 -0
  28. package/dist/src/environments/core/environment.js +25 -0
  29. package/dist/src/environments/core/environment.js.map +1 -0
  30. package/dist/src/environments/core/network.d.ts +6 -0
  31. package/dist/src/environments/core/network.js +32 -0
  32. package/dist/src/environments/core/network.js.map +1 -0
  33. package/dist/src/environments/react-native/environment.d.ts +7 -0
  34. package/dist/src/environments/react-native/environment.js +27 -0
  35. package/dist/src/environments/react-native/environment.js.map +1 -0
  36. package/dist/src/environments/react-native/network.d.ts +6 -0
  37. package/dist/src/environments/react-native/network.js +54 -0
  38. package/dist/src/environments/react-native/network.js.map +1 -0
  39. package/dist/src/environments/react-native/transports.d.ts +8 -0
  40. package/dist/src/environments/react-native/transports.js +31 -0
  41. package/dist/src/environments/react-native/transports.js.map +1 -0
  42. package/dist/src/environments/web/environment.d.ts +8 -0
  43. package/dist/src/environments/web/environment.js +19 -0
  44. package/dist/src/environments/web/environment.js.map +1 -0
  45. package/dist/src/environments/web/network.d.ts +4 -0
  46. package/dist/src/environments/web/network.js +38 -0
  47. package/dist/src/environments/web/network.js.map +1 -0
  48. package/dist/src/environments/web/transports.d.ts +8 -0
  49. package/dist/src/environments/web/transports.js +51 -0
  50. package/dist/src/environments/web/transports.js.map +1 -0
  51. package/dist/src/errors/is-transport-error.d.ts +1 -0
  52. package/dist/src/errors/is-transport-error.js +7 -0
  53. package/dist/src/errors/is-transport-error.js.map +1 -0
  54. package/dist/src/index.d.ts +11 -0
  55. package/dist/src/index.js +25 -0
  56. package/dist/src/index.js.map +1 -0
  57. package/dist/src/instance-updater.d.ts +5 -0
  58. package/dist/src/instance-updater.js +3 -0
  59. package/dist/src/instance-updater.js.map +1 -0
  60. package/dist/src/keep-alive.d.ts +18 -0
  61. package/dist/src/keep-alive.js +66 -0
  62. package/dist/src/keep-alive.js.map +1 -0
  63. package/dist/src/ready-state.d.ts +6 -0
  64. package/dist/src/ready-state.js +10 -0
  65. package/dist/src/ready-state.js.map +1 -0
  66. package/dist/src/strategies/strategy-builder.d.ts +11 -0
  67. package/dist/src/strategies/strategy-builder.js +34 -0
  68. package/dist/src/strategies/strategy-builder.js.map +1 -0
  69. package/dist/src/strategies/strategy-presets.d.ts +4 -0
  70. package/dist/src/strategies/strategy-presets.js +20 -0
  71. package/dist/src/strategies/strategy-presets.js.map +1 -0
  72. package/dist/src/strategies/strategy.d.ts +25 -0
  73. package/dist/src/strategies/strategy.js +153 -0
  74. package/dist/src/strategies/strategy.js.map +1 -0
  75. package/dist/src/timeline/noop-timeline.d.ts +5 -0
  76. package/dist/src/timeline/noop-timeline.js +15 -0
  77. package/dist/src/timeline/noop-timeline.js.map +1 -0
  78. package/dist/src/timeline/timeline.d.ts +7 -0
  79. package/dist/src/timeline/timeline.js +3 -0
  80. package/dist/src/timeline/timeline.js.map +1 -0
  81. package/dist/src/transport/http-polling.d.ts +27 -0
  82. package/dist/src/transport/http-polling.js +245 -0
  83. package/dist/src/transport/http-polling.js.map +1 -0
  84. package/dist/src/transport/http.d.ts +14 -0
  85. package/dist/src/transport/http.js +106 -0
  86. package/dist/src/transport/http.js.map +1 -0
  87. package/dist/src/transport/params.d.ts +3 -0
  88. package/dist/src/transport/params.js +70 -0
  89. package/dist/src/transport/params.js.map +1 -0
  90. package/dist/src/transport/transport-error.d.ts +8 -0
  91. package/dist/src/transport/transport-error.js +3 -0
  92. package/dist/src/transport/transport-error.js.map +1 -0
  93. package/dist/src/transport/transport-params.d.ts +3 -0
  94. package/dist/src/transport/transport-params.js +3 -0
  95. package/dist/src/transport/transport-params.js.map +1 -0
  96. package/dist/src/transport/transport.d.ts +50 -0
  97. package/dist/src/transport/transport.js +120 -0
  98. package/dist/src/transport/transport.js.map +1 -0
  99. package/dist/src/transport/transports-manager.d.ts +42 -0
  100. package/dist/src/transport/transports-manager.js +248 -0
  101. package/dist/src/transport/transports-manager.js.map +1 -0
  102. package/dist/src/transport/unrecoverable.d.ts +1 -0
  103. package/dist/src/transport/unrecoverable.js +8 -0
  104. package/dist/src/transport/unrecoverable.js.map +1 -0
  105. package/dist/src/transport/websocket.d.ts +18 -0
  106. package/dist/src/transport/websocket.js +155 -0
  107. package/dist/src/transport/websocket.js.map +1 -0
  108. package/dist/src/utils/assert.d.ts +1 -0
  109. package/dist/src/utils/assert.js +34 -0
  110. package/dist/src/utils/assert.js.map +1 -0
  111. package/dist/src/utils/cancel-token.d.ts +10 -0
  112. package/dist/src/utils/cancel-token.js +28 -0
  113. package/dist/src/utils/cancel-token.js.map +1 -0
  114. package/dist/src/utils/deferred.d.ts +9 -0
  115. package/dist/src/utils/deferred.js +27 -0
  116. package/dist/src/utils/deferred.js.map +1 -0
  117. package/dist/src/utils/event-emitter.d.ts +15 -0
  118. package/dist/src/utils/event-emitter.js +106 -0
  119. package/dist/src/utils/event-emitter.js.map +1 -0
  120. package/dist/src/utils/on.d.ts +4 -0
  121. package/dist/src/utils/on.js +10 -0
  122. package/dist/src/utils/on.js.map +1 -0
  123. package/dist/src/utils/request.d.ts +20 -0
  124. package/dist/src/utils/request.js +164 -0
  125. package/dist/src/utils/request.js.map +1 -0
  126. package/dist/src/utils/timer.d.ts +8 -0
  127. package/dist/src/utils/timer.js +17 -0
  128. package/dist/src/utils/timer.js.map +1 -0
  129. package/dist/src/utils/utils.d.ts +1 -0
  130. package/dist/src/utils/utils.js +8 -0
  131. package/dist/src/utils/utils.js.map +1 -0
  132. package/dist/src/virtual-socket.d.ts +42 -0
  133. package/dist/src/virtual-socket.js +199 -0
  134. package/dist/src/virtual-socket.js.map +1 -0
  135. package/dist/statics/duplexer.bundle.js +982 -0
  136. package/dist/statics/duplexer.bundle.js.map +1 -0
  137. package/dist/statics/duplexer.bundle.min.js +2 -0
  138. package/dist/statics/duplexer.bundle.min.js.map +1 -0
  139. package/dist/statics/manifest.json +3 -0
  140. package/dist/statics/manifest.min.json +3 -0
  141. package/dist/test/_external-types.d.ts +2 -0
  142. package/dist/test/_global-types.d.ts +10 -0
  143. package/dist/test/_setup-global-hooks.spec.d.ts +1 -0
  144. package/dist/test/_setup-global-hooks.spec.js +13 -0
  145. package/dist/test/_setup-global-hooks.spec.js.map +1 -0
  146. package/dist/test/client-events.it.d.ts +1 -0
  147. package/dist/test/client-events.it.js +33 -0
  148. package/dist/test/client-events.it.js.map +1 -0
  149. package/dist/test/connect.spec.d.ts +1 -0
  150. package/dist/test/connect.spec.js +71 -0
  151. package/dist/test/connect.spec.js.map +1 -0
  152. package/dist/test/connection-manager.spec.d.ts +1 -0
  153. package/dist/test/connection-manager.spec.js +523 -0
  154. package/dist/test/connection-manager.spec.js.map +1 -0
  155. package/dist/test/duplexer.it.d.ts +1 -0
  156. package/dist/test/duplexer.it.js +243 -0
  157. package/dist/test/duplexer.it.js.map +1 -0
  158. package/dist/test/duplexer.spec.d.ts +1 -0
  159. package/dist/test/duplexer.spec.js +337 -0
  160. package/dist/test/duplexer.spec.js.map +1 -0
  161. package/dist/test/environments/web.it.d.ts +1 -0
  162. package/dist/test/environments/web.it.js +30 -0
  163. package/dist/test/environments/web.it.js.map +1 -0
  164. package/dist/test/environments/web.spec.d.ts +1 -0
  165. package/dist/test/environments/web.spec.js +92 -0
  166. package/dist/test/environments/web.spec.js.map +1 -0
  167. package/dist/test/event-emitter.spec.d.ts +1 -0
  168. package/dist/test/event-emitter.spec.js +182 -0
  169. package/dist/test/event-emitter.spec.js.map +1 -0
  170. package/dist/test/helpers/as-promised.d.ts +7 -0
  171. package/dist/test/helpers/as-promised.js +38 -0
  172. package/dist/test/helpers/as-promised.js.map +1 -0
  173. package/dist/test/helpers/assertions.d.ts +8 -0
  174. package/dist/test/helpers/assertions.js +43 -0
  175. package/dist/test/helpers/assertions.js.map +1 -0
  176. package/dist/test/helpers/auth-server.d.ts +10 -0
  177. package/dist/test/helpers/auth-server.js +61 -0
  178. package/dist/test/helpers/auth-server.js.map +1 -0
  179. package/dist/test/helpers/http-polling-environment.d.ts +2 -0
  180. package/dist/test/helpers/http-polling-environment.js +20 -0
  181. package/dist/test/helpers/http-polling-environment.js.map +1 -0
  182. package/dist/test/helpers/in-memory-environemnt.d.ts +15 -0
  183. package/dist/test/helpers/in-memory-environemnt.js +39 -0
  184. package/dist/test/helpers/in-memory-environemnt.js.map +1 -0
  185. package/dist/test/helpers/in-memory-network.d.ts +5 -0
  186. package/dist/test/helpers/in-memory-network.js +37 -0
  187. package/dist/test/helpers/in-memory-network.js.map +1 -0
  188. package/dist/test/helpers/in-memory-timeline.d.ts +8 -0
  189. package/dist/test/helpers/in-memory-timeline.js +24 -0
  190. package/dist/test/helpers/in-memory-timeline.js.map +1 -0
  191. package/dist/test/helpers/in-memory-transport.d.ts +68 -0
  192. package/dist/test/helpers/in-memory-transport.js +271 -0
  193. package/dist/test/helpers/in-memory-transport.js.map +1 -0
  194. package/dist/test/helpers/server-interceptor.d.ts +10 -0
  195. package/dist/test/helpers/server-interceptor.js +138 -0
  196. package/dist/test/helpers/server-interceptor.js.map +1 -0
  197. package/dist/test/helpers/setup-global-mock-navigator.d.ts +4 -0
  198. package/dist/test/helpers/setup-global-mock-navigator.js +22 -0
  199. package/dist/test/helpers/setup-global-mock-navigator.js.map +1 -0
  200. package/dist/test/helpers/window.d.ts +1 -0
  201. package/dist/test/helpers/window.js +17 -0
  202. package/dist/test/helpers/window.js.map +1 -0
  203. package/dist/test/keep-alive.it.spec.d.ts +1 -0
  204. package/dist/test/keep-alive.it.spec.js +42 -0
  205. package/dist/test/keep-alive.it.spec.js.map +1 -0
  206. package/dist/test/keep-alive.spec.d.ts +1 -0
  207. package/dist/test/keep-alive.spec.js +140 -0
  208. package/dist/test/keep-alive.spec.js.map +1 -0
  209. package/dist/test/ng/channel-support.d.ts +39 -0
  210. package/dist/test/ng/channel-support.js +178 -0
  211. package/dist/test/ng/channel-support.js.map +1 -0
  212. package/dist/test/ng/channels.spec.d.ts +1 -0
  213. package/dist/test/ng/channels.spec.js +79 -0
  214. package/dist/test/ng/channels.spec.js.map +1 -0
  215. package/dist/test/ng/client-events.it.d.ts +1 -0
  216. package/dist/test/ng/client-events.it.js +75 -0
  217. package/dist/test/ng/client-events.it.js.map +1 -0
  218. package/dist/test/ng/connect.it.d.ts +1 -0
  219. package/dist/test/ng/connect.it.js +128 -0
  220. package/dist/test/ng/connect.it.js.map +1 -0
  221. package/dist/test/ng/corvid-environment.d.ts +22 -0
  222. package/dist/test/ng/corvid-environment.js +44 -0
  223. package/dist/test/ng/corvid-environment.js.map +1 -0
  224. package/dist/test/ng/environment.d.ts +49 -0
  225. package/dist/test/ng/environment.js +250 -0
  226. package/dist/test/ng/environment.js.map +1 -0
  227. package/dist/test/ng/setup.d.ts +54 -0
  228. package/dist/test/ng/setup.js +256 -0
  229. package/dist/test/ng/setup.js.map +1 -0
  230. package/dist/test/ng/subscribe.it.d.ts +1 -0
  231. package/dist/test/ng/subscribe.it.js +354 -0
  232. package/dist/test/ng/subscribe.it.js.map +1 -0
  233. package/dist/test/ng/unsubscribe.it.d.ts +1 -0
  234. package/dist/test/ng/unsubscribe.it.js +73 -0
  235. package/dist/test/ng/unsubscribe.it.js.map +1 -0
  236. package/dist/test/ng/util-functions.d.ts +7 -0
  237. package/dist/test/ng/util-functions.js +73 -0
  238. package/dist/test/ng/util-functions.js.map +1 -0
  239. package/dist/test/proto/client/index.d.ts +2852 -0
  240. package/dist/test/proto/index.d.ts +1421 -0
  241. package/dist/test/proto/server/index.d.ts +2832 -0
  242. package/dist/test/restore-overrides.it.d.ts +1 -0
  243. package/dist/test/restore-overrides.it.js +38 -0
  244. package/dist/test/restore-overrides.it.js.map +1 -0
  245. package/dist/test/setup.d.ts +1 -0
  246. package/dist/test/setup.js +5 -0
  247. package/dist/test/setup.js.map +1 -0
  248. package/dist/test/strategy.spec.d.ts +1 -0
  249. package/dist/test/strategy.spec.js +209 -0
  250. package/dist/test/strategy.spec.js.map +1 -0
  251. package/dist/test/subscribe.it.d.ts +1 -0
  252. package/dist/test/subscribe.it.js +216 -0
  253. package/dist/test/subscribe.it.js.map +1 -0
  254. package/dist/test/subscribe.spec.d.ts +1 -0
  255. package/dist/test/subscribe.spec.js +86 -0
  256. package/dist/test/subscribe.spec.js.map +1 -0
  257. package/dist/test/transporters/http-polling.it.d.ts +1 -0
  258. package/dist/test/transporters/http-polling.it.js +118 -0
  259. package/dist/test/transporters/http-polling.it.js.map +1 -0
  260. package/dist/test/transporters/http-polling.spec.d.ts +1 -0
  261. package/dist/test/transporters/http-polling.spec.js +354 -0
  262. package/dist/test/transporters/http-polling.spec.js.map +1 -0
  263. package/dist/test/transporters/transporter.spec.d.ts +1 -0
  264. package/dist/test/transporters/transporter.spec.js +46 -0
  265. package/dist/test/transporters/transporter.spec.js.map +1 -0
  266. package/dist/test/transporters/websocket.spec.d.ts +1 -0
  267. package/dist/test/transporters/websocket.spec.js +26 -0
  268. package/dist/test/transporters/websocket.spec.js.map +1 -0
  269. package/dist/test/transports-manager.spec.d.ts +1 -0
  270. package/dist/test/transports-manager.spec.js +346 -0
  271. package/dist/test/transports-manager.spec.js.map +1 -0
  272. package/dist/test/utils/request.spec.d.ts +1 -0
  273. package/dist/test/utils/request.spec.js +274 -0
  274. package/dist/test/utils/request.spec.js.map +1 -0
  275. package/dist/test/virtual-socket.it.d.ts +1 -0
  276. package/dist/test/virtual-socket.it.js +153 -0
  277. package/dist/test/virtual-socket.it.js.map +1 -0
  278. package/package.json +131 -0
  279. package/react-native.d.ts +1 -0
  280. package/react-native.js +1 -0
@@ -0,0 +1,243 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ /* eslint-disable no-shadow */
43
+ var chai_1 = require("chai");
44
+ var sinon_1 = __importDefault(require("sinon"));
45
+ var chance_1 = require("chance");
46
+ var wix_duplexer_protocol_1 = require("@wix/wix-duplexer-protocol");
47
+ var src_1 = require("../src");
48
+ var in_memory_environemnt_1 = __importDefault(require("./helpers/in-memory-environemnt"));
49
+ var in_memory_timeline_1 = __importDefault(require("./helpers/in-memory-timeline"));
50
+ var as_promised_1 = require("./helpers/as-promised");
51
+ var chance = (0, chance_1.Chance)();
52
+ describe('duplexer', function () {
53
+ var du;
54
+ var environment;
55
+ var primaryTransport;
56
+ var timeline;
57
+ var network;
58
+ beforeEach(function () {
59
+ var inMemoryEnvironment = (0, in_memory_environemnt_1.default)({
60
+ asyncTransporter: true,
61
+ });
62
+ environment = inMemoryEnvironment.environment;
63
+ primaryTransport = inMemoryEnvironment.primaryTransport;
64
+ network = inMemoryEnvironment.network;
65
+ timeline = (0, in_memory_timeline_1.default)();
66
+ });
67
+ afterEach(function () { return du && global.env.closeClient(du); });
68
+ it('uses custom environment if given', function () { return __awaiter(void 0, void 0, void 0, function () {
69
+ var _a, environment, primaryTransport, awaitConnect;
70
+ return __generator(this, function (_b) {
71
+ switch (_b.label) {
72
+ case 0:
73
+ _a = (0, in_memory_environemnt_1.default)(), environment = _a.environment, primaryTransport = _a.primaryTransport;
74
+ sinon_1.default.spy(primaryTransport, 'open');
75
+ du = new src_1.Duplexer(environment);
76
+ awaitConnect = (0, as_promised_1.toConnect)(du);
77
+ du.connect({ apiKey: 'some-api-key' });
78
+ return [4 /*yield*/, awaitConnect];
79
+ case 1:
80
+ _b.sent();
81
+ (0, chai_1.expect)(primaryTransport.open).to.have.been.called;
82
+ du.close();
83
+ return [2 /*return*/];
84
+ }
85
+ });
86
+ }); });
87
+ describe('timeline', function () {
88
+ it('uses custom timeline if one provided', function () { return __awaiter(void 0, void 0, void 0, function () {
89
+ var timelineLog, awaitConnect;
90
+ return __generator(this, function (_a) {
91
+ switch (_a.label) {
92
+ case 0:
93
+ timelineLog = sinon_1.default.spy(timeline, 'log');
94
+ du = new src_1.Duplexer(environment, { timeline: timeline });
95
+ awaitConnect = (0, as_promised_1.toConnect)(du);
96
+ du.connect({ apiKey: 'some-api-key' });
97
+ return [4 /*yield*/, awaitConnect];
98
+ case 1:
99
+ _a.sent();
100
+ network.simulateOnlineConnection();
101
+ (0, chai_1.expect)(timelineLog).to.have.been.called;
102
+ du.close();
103
+ return [2 /*return*/];
104
+ }
105
+ });
106
+ }); });
107
+ it('does not throw in case timeline was not provided (NoopTimeline as a default)', function () { return __awaiter(void 0, void 0, void 0, function () {
108
+ var awaitConnect;
109
+ return __generator(this, function (_a) {
110
+ switch (_a.label) {
111
+ case 0:
112
+ du = new src_1.Duplexer(environment);
113
+ awaitConnect = (0, as_promised_1.toConnect)(du);
114
+ du.connect({ apiKey: 'some-api-key' });
115
+ return [4 /*yield*/, awaitConnect];
116
+ case 1:
117
+ _a.sent();
118
+ network.simulateOnlineConnection();
119
+ du.close();
120
+ return [2 /*return*/];
121
+ }
122
+ });
123
+ }); });
124
+ });
125
+ describe('restore override flow', function () {
126
+ it('updates transport payload overrides on message receive', function (done) {
127
+ du = new src_1.Duplexer(environment);
128
+ var restoreStrategy = wix_duplexer_protocol_1.RestoreStrategyBuilderFactory.messageId()
129
+ .withId('some-id')
130
+ .build();
131
+ var override = new wix_duplexer_protocol_1.PollOverrideRestoreStrategyBuilder()
132
+ .withNs('some-ns')
133
+ .withChannelName('some-channel')
134
+ .withRestoreStrategy(restoreStrategy)
135
+ .build();
136
+ var payload = new wix_duplexer_protocol_1.PollPayloadBuilder()
137
+ .withOverrideRestoreStrategy(override)
138
+ .build();
139
+ var ns = du.connect({ apiKey: 'some-ns' });
140
+ var channel = ns.subscribe('some-channel');
141
+ channel.on('@duplexer:subscription_succeeded', function () {
142
+ primaryTransport.simulatePacketReceived({
143
+ type: 'message',
144
+ ns: 'some-ns',
145
+ channel: 'some-channel',
146
+ event: 'some-event',
147
+ id: 'some-id',
148
+ });
149
+ });
150
+ channel.once('some-event', function () {
151
+ (0, chai_1.expect)(primaryTransport.getPayload().restore.overrides).to.deep.equal(payload.restore.overrides);
152
+ done();
153
+ });
154
+ });
155
+ it('overwrites entire restore overrides in case it gets "UpdateRestoreStrategyOverrides" message', function (done) {
156
+ du = new src_1.Duplexer(environment);
157
+ var restoreStrategy = wix_duplexer_protocol_1.RestoreStrategyBuilderFactory.messageId()
158
+ .withId('some-id')
159
+ .build();
160
+ var override = new wix_duplexer_protocol_1.PollOverrideRestoreStrategyBuilder()
161
+ .withNs('some-ns')
162
+ .withChannelName('some-channel')
163
+ .withRestoreStrategy(restoreStrategy)
164
+ .build();
165
+ var payload = new wix_duplexer_protocol_1.PollPayloadBuilder()
166
+ .withOverrideRestoreStrategy(override)
167
+ .build();
168
+ var ns = du.connect({ apiKey: 'some-ns' });
169
+ var channel = ns.subscribe('some-channel');
170
+ channel.on('@duplexer:subscription_succeeded', function () {
171
+ primaryTransport.sendUpdateRestoreStrategyOverrides([override]);
172
+ (0, chai_1.expect)(primaryTransport.getPayload().restore.overrides).to.deep.equal(payload.restore.overrides);
173
+ done();
174
+ });
175
+ }).timeout(1000);
176
+ });
177
+ describe('getConnectionServerTime()', function () {
178
+ it('retrieves connection server time upon connection establish', function () { return __awaiter(void 0, void 0, void 0, function () {
179
+ var givenTime, _a, environment, primaryTransport, timePromise, time;
180
+ return __generator(this, function (_b) {
181
+ switch (_b.label) {
182
+ case 0:
183
+ givenTime = chance.natural();
184
+ _a = (0, in_memory_environemnt_1.default)(), environment = _a.environment, primaryTransport = _a.primaryTransport;
185
+ du = new src_1.Duplexer(environment);
186
+ primaryTransport.holdOpen();
187
+ du.connect({ apiKey: 'some-api-key' });
188
+ timePromise = du.getConnectionServerTime();
189
+ primaryTransport.emitConnectionEstablished({ t: givenTime });
190
+ return [4 /*yield*/, timePromise];
191
+ case 1:
192
+ time = _b.sent();
193
+ (0, chai_1.expect)(time).to.equal(givenTime);
194
+ return [2 /*return*/];
195
+ }
196
+ });
197
+ }); });
198
+ it('retrieves connection server time although connection already etsablished', function () { return __awaiter(void 0, void 0, void 0, function () {
199
+ var givenTime, _a, environment, primaryTransport, time;
200
+ return __generator(this, function (_b) {
201
+ switch (_b.label) {
202
+ case 0:
203
+ givenTime = chance.natural();
204
+ _a = (0, in_memory_environemnt_1.default)(), environment = _a.environment, primaryTransport = _a.primaryTransport;
205
+ du = new src_1.Duplexer(environment);
206
+ primaryTransport.holdOpen();
207
+ du.connect({ apiKey: 'some-api-key' });
208
+ primaryTransport.emitConnectionEstablished({ t: givenTime });
209
+ return [4 /*yield*/, du.getConnectionServerTime()];
210
+ case 1:
211
+ time = _b.sent();
212
+ (0, chai_1.expect)(time).to.equal(givenTime);
213
+ return [2 /*return*/];
214
+ }
215
+ });
216
+ }); });
217
+ it('deals with multiple connection establish events (open -> close -> open)', function () { return __awaiter(void 0, void 0, void 0, function () {
218
+ var givenTime, _a, environment, primaryTransport, time;
219
+ return __generator(this, function (_b) {
220
+ switch (_b.label) {
221
+ case 0:
222
+ givenTime = chance.natural();
223
+ _a = (0, in_memory_environemnt_1.default)(), environment = _a.environment, primaryTransport = _a.primaryTransport;
224
+ du = new src_1.Duplexer(environment);
225
+ du.connect({ apiKey: 'some-api-key' });
226
+ return [4 /*yield*/, (0, as_promised_1.toConnect)(du)];
227
+ case 1:
228
+ _b.sent();
229
+ du.close();
230
+ primaryTransport.holdOpen();
231
+ du.connect({ apiKey: 'some-api-key' });
232
+ primaryTransport.emitConnectionEstablished({ t: givenTime });
233
+ return [4 /*yield*/, du.getConnectionServerTime()];
234
+ case 2:
235
+ time = _b.sent();
236
+ (0, chai_1.expect)(time).to.equal(givenTime);
237
+ return [2 /*return*/];
238
+ }
239
+ });
240
+ }); });
241
+ });
242
+ });
243
+ //# sourceMappingURL=duplexer.it.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplexer.it.js","sourceRoot":"","sources":["../../test/duplexer.it.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,337 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var chai_1 = require("chai");
43
+ var sinon_1 = __importDefault(require("sinon"));
44
+ var chance_1 = __importDefault(require("chance"));
45
+ var as_promised_1 = require("./helpers/as-promised");
46
+ var environment_1 = require("./ng/environment");
47
+ var chance = new chance_1.default();
48
+ describe('duplexer', function () {
49
+ var duplexer;
50
+ var channelName;
51
+ var env = global.env;
52
+ var duplexerTestkit = env.duplexerTestkit;
53
+ var nodeClient = env.chatApp.client;
54
+ var apiKey = env.forumApp.apiKey;
55
+ beforeEach(function () {
56
+ environment_1.environment.cleanup();
57
+ environment_1.environment.initJsdomWithoutUrl();
58
+ });
59
+ beforeEach(function () {
60
+ duplexer = env.buildClient();
61
+ channelName = chance.word();
62
+ });
63
+ afterEach(function () { return env.closeClient(duplexer); });
64
+ describe('connect', function () {
65
+ it('emits "@duplexer:connected" event on connect', function (done) {
66
+ var vsChat = duplexer.connect({ apiKey: apiKey });
67
+ vsChat.on('@duplexer:connected', done);
68
+ });
69
+ it('emits "@duplexer:connect_error" on connection failure', function (done) {
70
+ env.duplexerTestkit.proxyServer.stop();
71
+ var vs = duplexer.connect({ apiKey: apiKey });
72
+ vs.on('@duplexer:connect_error', function () {
73
+ // prevent auto-connect
74
+ duplexer.close();
75
+ env.duplexerTestkit.proxyServer.start();
76
+ done();
77
+ });
78
+ });
79
+ it('should be able to connect multiple times from different virtual sockets anytime', function (done) {
80
+ var vs1 = duplexer.connect({ apiKey: apiKey });
81
+ vs1.on('@duplexer:connected', function () {
82
+ var vs2 = duplexer.connect({ apiKey: apiKey });
83
+ vs2.on('@duplexer:connected', done);
84
+ });
85
+ });
86
+ });
87
+ describe('reconnect', function () {
88
+ var channel = 'some-channel';
89
+ var event = 'some-event';
90
+ it('should detect disconnection and reconnect automatically', function (done) {
91
+ var vs = duplexer.connect({ apiKey: apiKey });
92
+ vs.once('@duplexer:connected', function () {
93
+ duplexerTestkit.proxyServer.disconnectAllConnections();
94
+ duplexer.once('close', function () {
95
+ vs.once('@duplexer:connected', done);
96
+ });
97
+ });
98
+ });
99
+ it('should try to reconnect until it successes', function (done) {
100
+ var vs = duplexer.connect({ apiKey: apiKey });
101
+ vs.once('@duplexer:connected', function () {
102
+ vs.once('@duplexer:connect_error', function () {
103
+ vs.once('@duplexer:connect_error', function () {
104
+ vs.once('@duplexer:connect_error', function () {
105
+ vs.once('@duplexer:connect_error', function () {
106
+ duplexerTestkit.proxyServer.start();
107
+ vs.once('@duplexer:connected', done);
108
+ });
109
+ });
110
+ });
111
+ });
112
+ duplexerTestkit.proxyServer.stop();
113
+ });
114
+ });
115
+ it('should detect disconnection and reconnect automatically after proactive close', function (done) {
116
+ var vs = duplexer.connect({ apiKey: apiKey });
117
+ duplexer.once('close', function () {
118
+ vs = duplexer.connect({ apiKey: apiKey });
119
+ vs.once('@duplexer:connected', function () {
120
+ duplexerTestkit.proxyServer.disconnectAllConnections();
121
+ // detect _not_ proactive close/disconnect
122
+ duplexer.once('close', function () {
123
+ // reconnect
124
+ vs.once('@duplexer:connected', done);
125
+ });
126
+ });
127
+ });
128
+ // proactive close/disconnect
129
+ vs.once('@duplexer:connected', function () { return vs.disconnect(); });
130
+ });
131
+ // that's not a real scenario test (for now!), "connect" always sent before
132
+ // stored messages, and according tcp, it won't arrive after stored messages.
133
+ // why "for now"? b/c we'll integrate @global ns in the future, and according
134
+ // the plan, this scenario might happen there (in a different way tho).
135
+ // todo: don't skip after messages storage is getting fixed!
136
+ it.skip('should emit recovered messages only after connected message arrives', function (done) {
137
+ var vsChat = duplexer.connect({ apiKey: apiKey });
138
+ vsChat.once('@duplexer:connected', function () {
139
+ var chatChannel = vsChat.subscribe(channel);
140
+ chatChannel.once('subscribe', function () {
141
+ nodeClient.publish(channel, event, 'chat2-payload');
142
+ chatChannel.once(event, function () {
143
+ duplexer.once('close', function () {
144
+ duplexerTestkit.proxyServer.delayConnected();
145
+ nodeClient.publish(channel, event, 'chat2-payload').then(function () {
146
+ vsChat.once('@duplexer:connected', function () {
147
+ chatChannel.once(event, function (msg) {
148
+ (0, chai_1.expect)(msg).to.equal('chat2-payload');
149
+ done();
150
+ });
151
+ });
152
+ });
153
+ // this one _could be_ flaky
154
+ setTimeout(function () { return duplexerTestkit.proxyServer.flush(); }, 5000 + 1000);
155
+ });
156
+ duplexerTestkit.proxyServer.disconnectAllConnections();
157
+ });
158
+ });
159
+ });
160
+ });
161
+ });
162
+ describe('keep alive', function () {
163
+ var virtualSocket;
164
+ var clock;
165
+ beforeEach(function (done) {
166
+ clock = sinon_1.default.useFakeTimers();
167
+ virtualSocket = duplexer.connect({ apiKey: apiKey });
168
+ virtualSocket.once('@duplexer:connected', done);
169
+ });
170
+ afterEach(function () { return clock.restore(); });
171
+ it('schedules keep alive on connect', function (done) {
172
+ duplexer.once('close', function () {
173
+ duplexerTestkit.proxyServer.startResponding();
174
+ done();
175
+ });
176
+ duplexerTestkit.proxyServer.stopResponding();
177
+ sendPing(clock);
178
+ pingTimeout(clock);
179
+ });
180
+ it('cleans keep alive on close', function (done) {
181
+ duplexer.on('close', function () {
182
+ // throws "no open" error if ping is scheduled and connection is closed
183
+ sendPing(clock);
184
+ done();
185
+ });
186
+ virtualSocket.disconnect();
187
+ });
188
+ });
189
+ describe('disconnections', function () {
190
+ it('should emit "disconnect" event on disconnect without error if connection closed cleanly', function (done) {
191
+ var vs = duplexer.connect({ apiKey: apiKey });
192
+ vs.on('@duplexer:disconnected', done);
193
+ vs.on('@duplexer:connected', function () { return vs.disconnect(); });
194
+ });
195
+ it('emits "disconnect" event with error if connection was not closed cleanly', function (done) {
196
+ var vs = duplexer.connect({ apiKey: apiKey });
197
+ vs.once('@duplexer:disconnected', function (error) {
198
+ (0, chai_1.expect)(error.status).to.equal(1006);
199
+ (0, chai_1.expect)(error.message).to.equal('');
200
+ // cleaning up auto-connect
201
+ duplexer.close();
202
+ done();
203
+ });
204
+ vs.on('@duplexer:connected', function () {
205
+ duplexerTestkit.proxyServer.disconnectAllConnections();
206
+ });
207
+ });
208
+ it('should not reconnect a virtual socket that disconnected proactively', function (done) {
209
+ var vs = duplexer.connect({ apiKey: apiKey });
210
+ var sub = vs.subscribe('some_channel_2');
211
+ sub.once('@duplexer:subscription_succeeded', function () {
212
+ vs.once('@duplexer:disconnected', function () {
213
+ vs.once('@duplexer:connected', function () {
214
+ return done(new Error('should not reconnect after proactive disconnect'));
215
+ });
216
+ setTimeout(done, 2000);
217
+ });
218
+ vs.disconnect();
219
+ });
220
+ });
221
+ it('should close physical socket when all virtual sockets closed', function (done) {
222
+ var vs = duplexer.connect({ apiKey: apiKey });
223
+ vs.on('@duplexer:connected', function () {
224
+ duplexer.once('close', function () {
225
+ duplexer.connect({ apiKey: apiKey });
226
+ duplexer.on('open', done);
227
+ });
228
+ vs.disconnect();
229
+ });
230
+ });
231
+ it('should not reconnect after closing physical socket', function (done) {
232
+ var vs = duplexer.connect({ apiKey: apiKey });
233
+ vs.on('@duplexer:connected', function () {
234
+ vs.on('@duplexer:disconnected', function () {
235
+ var waitThenSuccess = setTimeout(done, 1000);
236
+ duplexer.on('open', function () {
237
+ done(new Error('should not reconnect on proactive close!'));
238
+ clearTimeout(waitThenSuccess);
239
+ });
240
+ });
241
+ vs.disconnect();
242
+ });
243
+ });
244
+ it('should not reconnect after time out as the stale connection cleaner should remove it', function (done) {
245
+ var vs = duplexer.connect({ apiKey: apiKey });
246
+ vs.on('@duplexer:connected', function () {
247
+ vs.on('@duplexer:disconnected', function () {
248
+ var waitThenSuccess = setTimeout(done, 1000);
249
+ duplexer.on('open', function () {
250
+ done(new Error('should not reconnect on proactive close!'));
251
+ clearTimeout(waitThenSuccess);
252
+ });
253
+ });
254
+ });
255
+ });
256
+ });
257
+ describe('getConnectionServerTime()', function () {
258
+ it('retrieves connection server time', function () { return __awaiter(void 0, void 0, void 0, function () {
259
+ var time;
260
+ return __generator(this, function (_a) {
261
+ switch (_a.label) {
262
+ case 0:
263
+ duplexer.connect({ apiKey: apiKey });
264
+ return [4 /*yield*/, duplexer.getConnectionServerTime()];
265
+ case 1:
266
+ time = _a.sent();
267
+ (0, chai_1.expect)(time).to.match(/\d+/);
268
+ return [2 /*return*/];
269
+ }
270
+ });
271
+ }); });
272
+ });
273
+ // todo/leftovers
274
+ describe.skip('client events', function () {
275
+ var duplexer2;
276
+ beforeEach(function () {
277
+ duplexer2 = env.buildClient();
278
+ });
279
+ afterEach(function () { return env.closeClient(duplexer2); });
280
+ it('sends client event', function () { return __awaiter(void 0, void 0, void 0, function () {
281
+ var aPayload, eventName, receiver, sender, payload;
282
+ return __generator(this, function (_a) {
283
+ switch (_a.label) {
284
+ case 0:
285
+ aPayload = 'a-payload';
286
+ eventName = 'client-event';
287
+ receiver = duplexer2.connect({ apiKey: apiKey }).subscribe(channelName);
288
+ sender = duplexer
289
+ .connect({ apiKey: apiKey })
290
+ .subscribe(channelName, { forceTokenRequest: true });
291
+ return [4 /*yield*/, Promise.all([
292
+ (0, as_promised_1.awaitSuccessfulSubscribe)(sender),
293
+ (0, as_promised_1.awaitSuccessfulSubscribe)(receiver),
294
+ ])];
295
+ case 1:
296
+ _a.sent();
297
+ sender.send(eventName, aPayload);
298
+ return [4 /*yield*/, (0, as_promised_1.awaitEvent)(receiver, eventName)];
299
+ case 2:
300
+ payload = (_a.sent())[0];
301
+ (0, chai_1.expect)(payload).to.equal(aPayload);
302
+ return [2 /*return*/];
303
+ }
304
+ });
305
+ }); });
306
+ it('emits user info in case it is attached to token', function () { return __awaiter(void 0, void 0, void 0, function () {
307
+ var eventName, userInfo, receiver, sender, _a, user;
308
+ return __generator(this, function (_b) {
309
+ switch (_b.label) {
310
+ case 0:
311
+ eventName = 'client-event';
312
+ userInfo = { name: 'John Doe' };
313
+ receiver = duplexer2.connect({ apiKey: apiKey }).subscribe(channelName);
314
+ sender = duplexer
315
+ .connect({ apiKey: apiKey })
316
+ .subscribe(channelName, { forceTokenRequest: true });
317
+ return [4 /*yield*/, (0, as_promised_1.awaitSuccessfulSubscribe)(sender)];
318
+ case 1:
319
+ _b.sent();
320
+ sender.send(eventName, '¯_(ツ)_/¯');
321
+ return [4 /*yield*/, (0, as_promised_1.awaitEvent)(receiver, eventName)];
322
+ case 2:
323
+ _a = _b.sent(), user = _a[1].user;
324
+ (0, chai_1.expect)(user).to.eql({ info: userInfo });
325
+ return [2 /*return*/];
326
+ }
327
+ });
328
+ }); });
329
+ });
330
+ function sendPing(clock) {
331
+ clock.tick(env.duplexerOpts.pingInterval);
332
+ }
333
+ function pingTimeout(clock) {
334
+ clock.tick(env.duplexerOpts.pingTimeout);
335
+ }
336
+ });
337
+ //# sourceMappingURL=duplexer.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplexer.spec.js","sourceRoot":"","sources":["../../test/duplexer.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var environment_1 = require("../ng/environment");
4
+ describe('Web environment e2e', function () {
5
+ var duplexer;
6
+ var env = global.env;
7
+ beforeEach(function () {
8
+ environment_1.environment.cleanup();
9
+ environment_1.environment.initJsdomWithoutUrl();
10
+ });
11
+ beforeEach(function () {
12
+ duplexer = env.buildClient();
13
+ });
14
+ afterEach(function () { return env.closeClient(duplexer); });
15
+ it('begins with WebSocket and fallbacks to http (with default fallback strategy)', function (done) {
16
+ var app = duplexer.connect({ apiKey: env.forumApp.apiKey });
17
+ app.subscribe('channel');
18
+ app.once('@duplexer:connected', function () {
19
+ app.once('@duplexer:disconnected', function () {
20
+ app.once('@duplexer:connected', function () {
21
+ env.proxy.enableWsTraffic();
22
+ done();
23
+ });
24
+ });
25
+ env.proxy.disableWsTraffic();
26
+ env.proxy.disconnectAllConnections();
27
+ });
28
+ });
29
+ });
30
+ //# sourceMappingURL=web.it.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.it.js","sourceRoot":"","sources":["../../../test/environments/web.it.ts"],"names":[],"mappings":";;AACA,iDAAgD;AAEhD,QAAQ,CAAC,qBAAqB,EAAE;IAC9B,IAAI,QAAkB,CAAC;IACvB,IAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;IAEvB,UAAU,CAAC;QACT,yBAAW,CAAC,OAAO,EAAE,CAAC;QACtB,yBAAW,CAAC,mBAAmB,EAAE,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC;QACT,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,cAAM,OAAA,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAzB,CAAyB,CAAC,CAAC;IAE3C,EAAE,CAAC,8EAA8E,EAAE,UAAC,IAAI;QACtF,IAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAE9D,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAEzB,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC9B,GAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBACjC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE;oBAC9B,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;oBAC5B,IAAI,EAAE,CAAC;gBACT,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}