@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 @@
|
|
|
1
|
+
{"version":3,"file":"duplexer.bundle.js","mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;;;;;;;;;;ACTA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;ACnFA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,MAAM;AACN;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sCAAsC;;AAEtC;AACA;AACA;;AAEA,4BAA4B;AAC5B;AACA;AACA;AACA,6BAA6B;;;;;;;;;;;;;ACvLhB;AACb,6BAA6C,EAAE,aAAa,CAAC;AAC7D,UAA0C,GAAG,UAA0B,GAAG,UAAqC;AAC/G,sCAAsC,mBAAO,CAAC,sDAA6C;AAC3F,UAAqC;AACrC,2BAA2B,mBAAO,CAAC,mCAA0B;AAC7D,UAA0B;AAC1B,2CAA2C,mBAAO,CAAC,mDAA0C;AAC7F,UAA0C;AAC1C;;;;;;;;;;;ACTa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;AACf;;;;;;;;;;;AC3Ba;AACb;AACA;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA,8FAA8F,gEAAgE;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,sBAAsB,2CAA2C;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;ACtDa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,wBAAwB,mBAAO,CAAC,2BAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;AACf;;;;;;;;;;;ACZa;AACb;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gCAAgC;AAChC,wBAAwB,mBAAO,CAAC,2BAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gCAAgC;AAChC;;;;;;;;;;;AC1Ca;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;AACf;;;;;;;;;;;ACTa;AACb,8CAA6C,EAAE,aAAa,EAAC;AAC7D,kCAAkC,mBAAO,CAAC,sCAA6B;AACvE,wCAAwC,mBAAO,CAAC,4CAAmC;AACnF,wCAAwC,mBAAO,CAAC,4CAAmC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;AACf;;;;;;;;;;;ACpBa;AACb;AACA;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,8CAA6C,EAAE,aAAa,EAAC;AAC7D,gCAAgC;AAChC,wBAAwB,mBAAO,CAAC,2BAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,kBAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,gCAAgC;AAChC;;;;;;;;;;AC1CA,oBAAoB,mBAAO,CAAC,6BAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,kCAAkC,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACT7F,cAAc,wDAAiC;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB,SAAS,yBAAyB;;;;;;;;;;ACXzF,cAAc,wDAAiC;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","sources":["webpack://_wix_duplexer_js/webpack/universalModuleDefinition","webpack://_wix_duplexer_js/../../../node_modules/backo2/index.js","webpack://_wix_duplexer_js/../../../node_modules/process/browser.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/index.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/lib/PollOverrideRestoreStrategyBuilder.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/lib/PollPayloadBuilder.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/lib/restore/AllRestoreStrategyBuilder.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/lib/restore/MessageIdRestoreStrategyBuilder.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/lib/restore/RestoreStrategy.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/lib/restore/RestoreStrategyBuilderFactory.js","webpack://_wix_duplexer_js/../../../utils/wix-duplexer-protocol/dist/lib/restore/TimestampRestoreStrategyBuilder.js","webpack://_wix_duplexer_js/../../../node_modules/@babel/runtime/helpers/defineProperty.js","webpack://_wix_duplexer_js/../../../node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://_wix_duplexer_js/../../../node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://_wix_duplexer_js/../../../node_modules/@babel/runtime/helpers/typeof.js","webpack://_wix_duplexer_js/webpack/bootstrap","webpack://_wix_duplexer_js/webpack/runtime/compat get default export","webpack://_wix_duplexer_js/webpack/runtime/define property getters","webpack://_wix_duplexer_js/webpack/runtime/hasOwnProperty shorthand","webpack://_wix_duplexer_js/webpack/runtime/make namespace object","webpack://_wix_duplexer_js/./utils/event-emitter.ts","webpack://_wix_duplexer_js/./utils/deferred.ts","webpack://_wix_duplexer_js/./ready-state.ts","webpack://_wix_duplexer_js/./channels/channel.ts","webpack://_wix_duplexer_js/./channels/channels.ts","webpack://_wix_duplexer_js/./utils/on.ts","webpack://_wix_duplexer_js/./constants.ts","webpack://_wix_duplexer_js/./virtual-socket.ts","webpack://_wix_duplexer_js/./environments/core/environment.ts","webpack://_wix_duplexer_js/./environments/core/network.ts","webpack://_wix_duplexer_js/./environments/web/network.ts","webpack://_wix_duplexer_js/./transport/transport.ts","webpack://_wix_duplexer_js/./transport/params.ts","webpack://_wix_duplexer_js/./utils/request.ts","webpack://_wix_duplexer_js/./transport/http.ts","webpack://_wix_duplexer_js/./transport/websocket.ts","webpack://_wix_duplexer_js/./utils/cancel-token.ts","webpack://_wix_duplexer_js/./utils/utils.ts","webpack://_wix_duplexer_js/./transport/unrecoverable.ts","webpack://_wix_duplexer_js/./transport/http-polling.ts","webpack://_wix_duplexer_js/./transport/transports-manager.ts","webpack://_wix_duplexer_js/./strategies/strategy.ts","webpack://_wix_duplexer_js/./strategies/strategy-builder.ts","webpack://_wix_duplexer_js/./strategies/strategy-presets.ts","webpack://_wix_duplexer_js/./environments/web/transports.ts","webpack://_wix_duplexer_js/./environments/web/environment.ts","webpack://_wix_duplexer_js/./utils/timer.ts","webpack://_wix_duplexer_js/./keep-alive.ts","webpack://_wix_duplexer_js/./utils/assert.ts","webpack://_wix_duplexer_js/./errors/is-transport-error.ts","webpack://_wix_duplexer_js/./connection-manager.ts","webpack://_wix_duplexer_js/./timeline/noop-timeline.ts","webpack://_wix_duplexer_js/./duplexer.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"Duplexer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Duplexer\"] = factory();\n\telse\n\t\troot[\"Duplexer\"] = factory();\n})((typeof self !== 'undefined' ? self : this), () => {\nreturn ","\n/**\n * Expose `Backoff`.\n */\n\nmodule.exports = Backoff;\n\n/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\n\nfunction Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\n\nBackoff.prototype.duration = function(){\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\n\nBackoff.prototype.reset = function(){\n this.attempts = 0;\n};\n\n/**\n * Set the minimum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMin = function(min){\n this.ms = min;\n};\n\n/**\n * Set the maximum duration\n *\n * @api public\n */\n\nBackoff.prototype.setMax = function(max){\n this.max = max;\n};\n\n/**\n * Set the jitter\n *\n * @api public\n */\n\nBackoff.prototype.setJitter = function(jitter){\n this.jitter = jitter;\n};\n\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PollOverrideRestoreStrategyBuilder = exports.PollPayloadBuilder = exports.RestoreStrategyBuilderFactory = void 0;\nvar RestoreStrategyBuilderFactory_1 = require(\"./lib/restore/RestoreStrategyBuilderFactory\");\nexports.RestoreStrategyBuilderFactory = RestoreStrategyBuilderFactory_1.default;\nvar PollPayloadBuilder_1 = require(\"./lib/PollPayloadBuilder\");\nexports.PollPayloadBuilder = PollPayloadBuilder_1.default;\nvar PollOverrideRestoreStrategyBuilder_1 = require(\"./lib/PollOverrideRestoreStrategyBuilder\");\nexports.PollOverrideRestoreStrategyBuilder = PollOverrideRestoreStrategyBuilder_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PollOverrideRestoreStrategyBuilder = /** @class */ (function () {\n function PollOverrideRestoreStrategyBuilder() {\n }\n PollOverrideRestoreStrategyBuilder.prototype.withNs = function (ns) {\n this.ns = ns;\n return this;\n };\n PollOverrideRestoreStrategyBuilder.prototype.withChannelName = function (channelName) {\n this.channelName = channelName;\n return this;\n };\n PollOverrideRestoreStrategyBuilder.prototype.withRestoreStrategy = function (strategy) {\n this.restore = strategy;\n return this;\n };\n PollOverrideRestoreStrategyBuilder.prototype.build = function () {\n return {\n ns: this.ns,\n channel: this.channelName,\n override: this.restore,\n };\n };\n return PollOverrideRestoreStrategyBuilder;\n}());\nexports.default = PollOverrideRestoreStrategyBuilder;\n//# sourceMappingURL=PollOverrideRestoreStrategyBuilder.js.map","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PollPayloadBuilder = /** @class */ (function () {\n function PollPayloadBuilder() {\n this.overrideRestoreStrategies = [];\n }\n PollPayloadBuilder.prototype.withOverrideRestoreStrategy = function (override) {\n this.overrideRestoreStrategies = this.overrideRestoreStrategies.filter(function (o) { return o.channel !== override.channel || o.ns !== override.ns; });\n this.overrideRestoreStrategies.push(override);\n return this;\n };\n PollPayloadBuilder.prototype.withDefaultRestoreStrategy = function (restoreStrategy) {\n this.defaultRestoreStrategy = restoreStrategy;\n return this;\n };\n PollPayloadBuilder.prototype.build = function () {\n return new PollPayload(this.defaultRestoreStrategy, this.overrideRestoreStrategies).toProtocolFormat();\n };\n return PollPayloadBuilder;\n}());\nexports.default = PollPayloadBuilder;\nvar PollPayload = /** @class */ (function () {\n function PollPayload(defaultRestoreStrategy, overrideRestoreStrategies) {\n this.defaultRestoreStrategy = defaultRestoreStrategy;\n this.overrideRestoreStrategies = overrideRestoreStrategies;\n }\n PollPayload.prototype.toProtocolFormat = function () {\n var payload = {};\n if (this.defaultRestoreStrategy !== undefined) {\n payload.restore = {\n default: this.defaultRestoreStrategy,\n };\n }\n if (this.hasOverrides()) {\n payload.restore = __assign(__assign({}, payload.restore), { overrides: this.overrideRestoreStrategies });\n }\n return payload;\n };\n PollPayload.prototype.hasOverrides = function () {\n return this.overrideRestoreStrategies.length > 0;\n };\n return PollPayload;\n}());\n//# sourceMappingURL=PollPayloadBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RestoreStrategy_1 = require(\"./RestoreStrategy\");\nvar AllRestoreStrategyBuilder = /** @class */ (function () {\n function AllRestoreStrategyBuilder() {\n }\n AllRestoreStrategyBuilder.prototype.build = function () {\n return new RestoreStrategy_1.default('All');\n };\n return AllRestoreStrategyBuilder;\n}());\nexports.default = AllRestoreStrategyBuilder;\n//# sourceMappingURL=AllRestoreStrategyBuilder.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MessageIdRestoreStrategy = void 0;\nvar RestoreStrategy_1 = require(\"./RestoreStrategy\");\nvar MessageIdRestoreStrategyBuilder = /** @class */ (function () {\n function MessageIdRestoreStrategyBuilder() {\n }\n MessageIdRestoreStrategyBuilder.prototype.withId = function (id) {\n this.id = id;\n return this;\n };\n MessageIdRestoreStrategyBuilder.prototype.build = function () {\n return new MessageIdRestoreStrategy(this.id);\n };\n return MessageIdRestoreStrategyBuilder;\n}());\nexports.default = MessageIdRestoreStrategyBuilder;\nvar MessageIdRestoreStrategy = /** @class */ (function (_super) {\n __extends(MessageIdRestoreStrategy, _super);\n function MessageIdRestoreStrategy(id) {\n var _this = _super.call(this, 'message_id') || this;\n _this.id = id;\n return _this;\n }\n return MessageIdRestoreStrategy;\n}(RestoreStrategy_1.default));\nexports.MessageIdRestoreStrategy = MessageIdRestoreStrategy;\n//# sourceMappingURL=MessageIdRestoreStrategyBuilder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar RestoreStrategy = /** @class */ (function () {\n function RestoreStrategy(strategy) {\n this.strategy = strategy;\n }\n return RestoreStrategy;\n}());\nexports.default = RestoreStrategy;\n//# sourceMappingURL=RestoreStrategy.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar AllRestoreStrategyBuilder_1 = require(\"./AllRestoreStrategyBuilder\");\nvar MessageIdRestoreStrategyBuilder_1 = require(\"./MessageIdRestoreStrategyBuilder\");\nvar TimestampRestoreStrategyBuilder_1 = require(\"./TimestampRestoreStrategyBuilder\");\nvar RestoreStrategyBuilderFactory = /** @class */ (function () {\n function RestoreStrategyBuilderFactory() {\n }\n RestoreStrategyBuilderFactory.all = function () {\n return new AllRestoreStrategyBuilder_1.default();\n };\n RestoreStrategyBuilderFactory.messageId = function () {\n return new MessageIdRestoreStrategyBuilder_1.default();\n };\n RestoreStrategyBuilderFactory.timestamp = function () {\n return new TimestampRestoreStrategyBuilder_1.default();\n };\n return RestoreStrategyBuilderFactory;\n}());\nexports.default = RestoreStrategyBuilderFactory;\n//# sourceMappingURL=RestoreStrategyBuilderFactory.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimestampRestoreStrategy = void 0;\nvar RestoreStrategy_1 = require(\"./RestoreStrategy\");\nvar MessageIdRestoreStrategyBuilder = /** @class */ (function () {\n function MessageIdRestoreStrategyBuilder() {\n }\n MessageIdRestoreStrategyBuilder.prototype.withT = function (t) {\n this.t = t;\n return this;\n };\n MessageIdRestoreStrategyBuilder.prototype.build = function () {\n return new TimestampRestoreStrategy(this.t);\n };\n return MessageIdRestoreStrategyBuilder;\n}());\nexports.default = MessageIdRestoreStrategyBuilder;\nvar TimestampRestoreStrategy = /** @class */ (function (_super) {\n __extends(TimestampRestoreStrategy, _super);\n function TimestampRestoreStrategy(t) {\n var _this = _super.call(this, 'Timestamp') || this;\n _this.t = t;\n return _this;\n }\n return TimestampRestoreStrategy;\n}(RestoreStrategy_1.default));\nexports.TimestampRestoreStrategy = TimestampRestoreStrategy;\n//# sourceMappingURL=TimestampRestoreStrategyBuilder.js.map","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nmodule.exports = toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nmodule.exports = toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports, _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\nBase on: https://github.com/component/emitter/blob/master/index.js\n*/\nexport class Emitter {\n private _callbacks: any;\n\n on(event: string, fn: Function) {\n return this._on(event, fn);\n }\n\n addEventListener(event: string, fn: Function) {\n return this._on(event, fn);\n }\n\n once(event: string, fn: Function) {\n function on(...args: any[]) {\n this.off(event, on);\n fn.apply(this, args);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n }\n\n off(event?: string, fn?: Function) {\n return this._off(event, fn);\n }\n\n removeEventListener(event?: string, fn?: Function) {\n return this._off(event, fn);\n }\n\n removeListener(event?: string) {\n return this._off(event);\n }\n\n removeAllListeners() {\n return this._off();\n }\n\n emit(event: string, ...args: any[]) {\n this._callbacks = this._callbacks || {};\n\n let callbacks = this._callbacks['$' + event];\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (let i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n }\n\n listeners(event: string) {\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n }\n\n hasListeners(event: string) {\n return !!this.listeners(event).length;\n }\n\n private _on(event: string, fn: Function) {\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || []).push(\n fn,\n );\n return this;\n }\n\n private _off(event?: string, fn?: Function) {\n this._callbacks = this._callbacks || {};\n\n // all\n if (!event && !fn) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n const callbacks = this._callbacks['$' + event];\n if (!callbacks) {\n return this;\n }\n\n // remove all handlers\n if (!fn) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n let cb;\n for (let i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._callbacks['$' + event];\n }\n\n return this;\n }\n}\n","export default class Deferred<T> {\n private readonly _promise: Promise<T>;\n private _resolve: (value: T) => void;\n private _reject: (error: any) => void;\n\n constructor() {\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n resolve(value?: T) {\n this._resolve(value);\n }\n\n reject(error?: any) {\n this._reject(error);\n }\n\n get promise(): Promise<T> {\n return this._promise;\n }\n}\n","enum ReadyState {\n CLOSED,\n OPENING,\n OPEN,\n}\n\nexport default ReadyState;\n","import { Emitter } from '../utils/event-emitter';\nimport { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport { RestoreStrategyBuilderFactory } from '@wix/wix-duplexer-protocol';\nimport RestoreStrategy from '@wix/wix-duplexer-protocol/dist/lib/restore/RestoreStrategy';\nimport { MessageIdRestoreStrategy } from '@wix/wix-duplexer-protocol/dist/lib/restore/MessageIdRestoreStrategyBuilder';\nimport VirtualSocket from '../virtual-socket';\n\nconst enum SubscribingState {\n SUBSCRIBED,\n UNSUBSCRIBED,\n SUBSCRIBING,\n}\n\nexport interface SubscribeOptions {\n restoreStrategy?: RestoreStrategy;\n}\n\nexport interface ChannelOptions<T> {\n forceTokenRequest?: boolean;\n resourceId?: string;\n info?: T;\n}\n\nexport default class Channel<T = any> extends Emitter {\n public readonly name: string;\n public readonly resourceId: string;\n\n private readonly virtualSocket: VirtualSocket;\n private readonly info: T;\n private restore: MessageIdRestoreStrategy;\n private subscribingState = SubscribingState.UNSUBSCRIBED;\n\n constructor(\n virtualSocket: VirtualSocket,\n name: string,\n resourceId?: string,\n info?: T,\n ) {\n super();\n\n this.name = name;\n this.virtualSocket = virtualSocket;\n this.resourceId = resourceId;\n this.info = info;\n }\n\n public setMessageIdRestore(messageId: string) {\n this.restore = RestoreStrategyBuilderFactory.messageId()\n .withId(messageId)\n .build();\n\n return this.restore;\n }\n\n public async subscribe(opts: SubscribeOptions = {}) {\n if (this.subscribingState === SubscribingState.SUBSCRIBED) {\n setTimeout(() => this.emitSubscriptionSucceeded(true), 0);\n return;\n }\n\n if (this.subscribingState === SubscribingState.SUBSCRIBING) {\n return;\n }\n\n this.subscribingState = SubscribingState.SUBSCRIBING;\n\n await this.sendSubscribe(opts);\n }\n\n public setUnsubscribe() {\n this.subscribingState = SubscribingState.UNSUBSCRIBED;\n }\n\n private async sendSubscribe(opts: SubscribeOptions) {\n const res = await this.virtualSocket.send<\n Protocol.SubscribeAck,\n Protocol.SubscribePacket\n >({\n type: 'subscribe',\n channel: this.name,\n resourceId: this.resourceId,\n auth: '',\n restore: opts.restoreStrategy || this.restore,\n info: this.info,\n });\n\n if (res.type === 'error') {\n this.emit('@duplexer:subscription_failed', res);\n } else {\n this.subscribingState = SubscribingState.SUBSCRIBED;\n this.emitSubscriptionSucceeded(res.isSynced);\n }\n }\n\n public async unsubscribe() {\n await this.virtualSocket.send({\n type: 'unsubscribe',\n channel: this.name,\n resourceId: this.resourceId,\n });\n\n this.subscribingState = SubscribingState.UNSUBSCRIBED;\n\n this.emit('@duplexer:unsubscribe_succeeded');\n }\n\n public send(event: string, payload?: string) {\n return this.virtualSocket.send<Protocol.Ack, Protocol.ClientEventPacket>(\n {\n type: 'client_message',\n channel: this.name,\n resourceId: this.resourceId,\n event,\n payload,\n },\n { affectState: false },\n );\n }\n\n private emitSubscriptionSucceeded(isSynced: boolean) {\n this.emit('@duplexer:subscription_succeeded', { isSynced });\n }\n}\n","import Channel from './channel';\nimport VirtualSocket from '../virtual-socket';\n\nexport default class Channels {\n private channelsList: Channel[] = [];\n\n constructor(private readonly virtualSocket: VirtualSocket) {}\n\n add<T>(name: string, resourceId?: string, info?: T) {\n const maybeChannel = this.find(name, resourceId);\n\n if (maybeChannel) {\n return maybeChannel;\n }\n\n const channel = new Channel<T>(this.virtualSocket, name, resourceId, info);\n\n this.channelsList.push(channel);\n\n return channel;\n }\n\n remove(name: string, resourceId?: string) {\n const channel = this.find(name, resourceId);\n this.channelsList = this.channelsList.filter(\n (c) => c.name !== name || c.resourceId !== resourceId,\n );\n return channel;\n }\n\n find(name: string, resourceId?: string) {\n return this.channelsList.find(\n (c) => c.name === name && c.resourceId === resourceId,\n );\n }\n\n all() {\n return this.channelsList;\n }\n\n subscribeAll() {\n this.all().forEach((c) => c.subscribe());\n }\n\n setUnsubscribeAll() {\n this.all().forEach((c) => c.setUnsubscribe());\n }\n}\n","export default function on(\n emitter: any,\n event: string,\n fn: Function,\n): OnRecord {\n emitter.on(event, fn);\n\n return {\n destroy: () => emitter.off(event, fn),\n };\n}\n\nexport interface OnRecord {\n destroy(): void;\n}\n","export const WixArtifactIdHeader = 'x-wix-artifact-id';\nexport const wsClient = 'ws.manager';\nexport const userChannel = '@user-inbox';\nexport const wsVs = 'ws.vs';\nexport const DuplexerSocketArtifactId =\n 'com.wixpress.infra.wix-duplexer-sockets-server';\n","import { Emitter } from './utils/event-emitter';\nimport { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport { PollOverrideRestoreStrategyBuilder } from '@wix/wix-duplexer-protocol';\nimport ReadyState from './ready-state';\nimport Channels from './channels/channels';\nimport { WriteOptions } from './transport/transport';\nimport { SubscribeOptions, ChannelOptions } from './channels/channel';\nimport on, { OnRecord } from './utils/on';\nimport { Duplexer } from './duplexer';\nimport { userChannel } from './constants';\nimport { TransportError } from './transport/transport-error';\n\nexport interface VirtualSocketOptions {\n appDefId?: string;\n apiKey?: string;\n}\n\nexport default class VirtualSocket extends Emitter {\n private readonly channels: Channels;\n private readonly appDefId: string;\n private acks: { [key: string]: Function } = {};\n private ids = 1;\n private connected = false;\n private sendBuffer: SendBufferRecord[] = [];\n private socketListeners: OnRecord[] = [];\n\n constructor(\n private readonly duplexer: Duplexer,\n { appDefId, apiKey }: VirtualSocketOptions,\n ) {\n super();\n\n this.channels = new Channels(this);\n this.appDefId = appDefId || apiKey;\n this.restoreState();\n\n this.listen();\n this.open();\n }\n\n subscribe<T = any>(\n channelName: string,\n opts: SubscribeOptions & ChannelOptions<T> = {},\n ) {\n const channel = this.channels.add(channelName, opts.resourceId, opts.info);\n channel.subscribe(opts);\n return channel;\n }\n\n subscribeToUserChannel() {\n return this.subscribe(userChannel);\n }\n\n unsubscribe(channelName: string, resourceId?: string) {\n const channel = this.channels.remove(channelName, resourceId);\n channel.unsubscribe();\n }\n\n unsubscribeFromUserChannel() {\n this.unsubscribe(userChannel);\n }\n\n /** @internal */\n open() {\n const readyState = this.duplexer.connection.readyState;\n\n if (readyState === ReadyState.CLOSED) {\n // this.onConnect will be called after connection established,\n this.duplexer.connection.connect();\n } else if (readyState === ReadyState.OPEN) {\n setTimeout(() => this.onConnect(), 0);\n }\n }\n\n disconnect() {\n this.send({ type: 'disconnect' });\n this.socketListeners.forEach((l) => l.destroy());\n this.socketListeners = [];\n this.onClose();\n this.duplexer.closeVirtualSocket(this);\n }\n\n /** @internal */\n send<\n TResult extends Protocol.Ack = Protocol.Ack,\n TMessage extends Protocol.Packet = Protocol.Packet,\n >(message: TMessage, opts?: WriteOptions) {\n return new Promise<TResult | Protocol.ErrorPacket>((resolve) => {\n if (this.connected) {\n const id = this.issueAckId();\n this.acks[id] = resolve;\n message.id = id;\n this.packet(message, opts);\n } else {\n this.sendBuffer.push({ message, resolve });\n }\n });\n }\n\n /** @internal */\n whenConnected() {\n return new Promise<void>((resolve) => {\n this.duplexer.connection.readyState === ReadyState.OPEN\n ? resolve()\n : this.once('@duplexer:connected', resolve);\n });\n }\n\n private onClose(error?: TransportError) {\n this.restoreState();\n this.emit('@duplexer:disconnected', error);\n }\n\n private listen() {\n this.socketListeners = [\n on(this.duplexer, 'open', this.onConnect.bind(this)),\n on(this.duplexer, 'packet', this.onPacket.bind(this)),\n on(this.duplexer, 'close', this.onClose.bind(this)),\n on(\n this.duplexer.connection,\n 'connect_error',\n this.onConnectError.bind(this),\n ),\n ];\n }\n\n private onConnectError(error: TransportError) {\n this.emit('@duplexer:connect_error', error);\n }\n\n private onPacket(packet: Protocol.Packet) {\n if (packet.ns !== this.appDefId) {\n return;\n }\n\n switch (packet.type) {\n case 'ack':\n case 'error':\n this.onAck(packet as Protocol.Ack);\n break;\n\n case 'message':\n this.onMessage(packet as Protocol.MessagePacket);\n break;\n\n default:\n break;\n }\n }\n\n private onConnect() {\n this.channels.subscribeAll();\n this.connected = true;\n this.emit('@duplexer:connected');\n this.emitBuffered();\n }\n\n private onMessage(message: Protocol.MessagePacket) {\n const channel = this.channels.find(message.channel, message.resourceId);\n\n if (channel !== undefined) {\n const restore = channel.setMessageIdRestore(message.id);\n const override = new PollOverrideRestoreStrategyBuilder()\n .withNs(this.appDefId)\n .withChannelName(channel.name)\n .withRestoreStrategy(restore)\n .build();\n\n this.duplexer.addRestoreOverride(override);\n\n try {\n channel.emit(\n message.event,\n message.payload,\n createAttachments(message),\n );\n } catch {\n // not duplexer's responsibility to handle app-level errors\n }\n }\n }\n\n private onAck(packet: Protocol.Ack) {\n const ack = this.acks[packet.id];\n\n if (typeof ack === 'function') {\n ack(packet);\n // eslint-disable-next-line\n delete this.acks[packet.id];\n }\n }\n\n private packet(packet: Protocol.Packet, opts?: WriteOptions) {\n packet.ns = this.appDefId;\n this.duplexer.packet(packet, opts);\n }\n\n private emitBuffered() {\n this.sendBuffer.forEach((msg) => {\n const { message, resolve } = msg;\n this.send(message).then(resolve);\n });\n\n this.sendBuffer = [];\n }\n\n private issueAckId() {\n const id = this.ids++;\n return id.toString();\n }\n\n private restoreState() {\n this.connected = false;\n this.channels.setUnsubscribeAll();\n this.sendBuffer = [];\n this.acks = {};\n }\n}\n\nfunction createAttachments({ user, publisher }: Protocol.MessagePacket) {\n return {\n user,\n publisher,\n };\n}\n\ninterface SendBufferRecord {\n message: Protocol.Packet;\n resolve(ackOrError: any): void;\n}\n","import Network from './network';\nimport TransportsManager from '../../transport/transports-manager';\n\nexport default class Environment {\n private readonly _transportsManager: TransportsManager;\n private readonly _network: Network;\n\n constructor(opts: EnvironmentOpts) {\n this._transportsManager = opts.transportsManager;\n this._network = opts.network;\n }\n\n get network(): Network {\n return this._network;\n }\n\n get transportsManager() {\n return this._transportsManager;\n }\n}\n\nexport interface EnvironmentOpts {\n network: Network;\n transportsManager: TransportsManager;\n}\n","import { Emitter } from '../../utils/event-emitter';\n\nexport default abstract class Network extends Emitter {\n constructor() {\n super();\n this.listenConnectionStateChanges();\n }\n\n protected abstract listenConnectionStateChanges(): void;\n\n protected connectionIsOnline() {\n this.emit('online');\n }\n}\n","import Network from '../core/network';\n\nexport default class WebNetwork extends Network {\n public listenConnectionStateChanges(): void {\n // bad. should create node environment.\n if (typeof window === 'undefined') {\n return;\n }\n\n window.addEventListener('online', () => this.connectionIsOnline());\n }\n}\n","/* eslint-disable no-shadow */\nimport { Emitter } from '../utils/event-emitter';\nimport { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport { PollPayloadProtocol } from '@wix/wix-duplexer-protocol/dist/lib/PollPayloadBuilder';\nimport ReadyState from '../ready-state';\nimport {\n TransportError,\n InternalTransportError,\n TransportType,\n} from './transport-error';\n\nexport interface WriteOptions {\n affectState: boolean;\n}\n\nexport interface TransportOpts {\n keepAlive: boolean;\n}\n\n/**\n * Transport responsibilities:\n *\n * - Open/close connection\n * - Encode/decode packets and pass through\n * - Mark connection as open by waiting for connection_established packet, dealing with session id\n * - Todo: handling packets queue (move from virtual socket)\n *\n * Events:\n *\n * - \"open\" - on \"connection_established\" packet from connectioon.\n * - \"close\" - on close either from transport side or client one, error might be attached.\n * - \"packet\" - pass through packets coming from connection.\n */\nexport default abstract class Transport extends Emitter {\n private readonly keepAlive: boolean;\n protected payload: PollPayloadProtocol;\n\n public readyState = ReadyState.CLOSED;\n public sessionId: string;\n\n constructor(opts: TransportOpts) {\n super();\n\n this.restoreState();\n this.keepAlive = opts.keepAlive;\n }\n\n get keepAliveEnabled() {\n return this.keepAlive;\n }\n\n send(packet: Protocol.Packet, opts?: WriteOptions) {\n this.write(packet, opts);\n }\n\n updatePayload(params: PollPayloadProtocol) {\n this.payload = params;\n }\n\n close(error?: InternalTransportError) {\n const transportError = error ? this.transportError(error) : undefined;\n\n this.closeClient();\n this.onTransportClose(transportError);\n }\n\n abstract get name(): TransportType;\n\n abstract open(): Promise<void>;\n\n protected abstract closeClient(): void;\n\n protected transportError(error: InternalTransportError): TransportError {\n return { ...error, transport: this.name };\n }\n\n protected abstract write(packet: Protocol.Packet, opts?: WriteOptions): void;\n\n protected onData(packet: Protocol.Packet | Protocol.Packet[]) {\n if (!Array.isArray(packet)) {\n this.handlePacket(packet);\n } else {\n packet.forEach((packet) => this.handlePacket(packet));\n }\n }\n\n /**\n * this function should be called by transport when it decides to close - for whatever\n * reason (usually unexpected on such as network error or invalid request). then it\n * propagaes to the client until it reaches virtual socket.\n */\n protected onTransportClose(error: TransportError) {\n if (this.readyState !== ReadyState.CLOSED) {\n this.restoreState();\n this.emit('close', error);\n } else {\n this.emit('connect_error', error);\n }\n }\n\n protected restoreState() {\n this.readyState = ReadyState.CLOSED;\n this.sessionId = '';\n }\n\n private handlePacket(packet: Protocol.Packet) {\n switch (packet.type) {\n case 'connection_established':\n this.sessionId = (\n packet as Protocol.ConnectionEstablishedPacket\n ).sessionId;\n this.readyState = ReadyState.OPEN;\n this.emit('open', packet);\n break;\n\n default:\n this.emit('packet', packet);\n }\n }\n}\n","import { InstanceUpdater } from '../instance-updater';\n\nexport async function createParams(\n instanceUpdater: InstanceUpdater,\n siteRevision: string,\n) {\n const params = new URLSearchParams();\n\n if (instanceUpdater) {\n const instance = await instanceUpdater.getInstance();\n\n params.append('v', '2');\n params.append('instance', instance);\n }\n\n if (siteRevision) {\n params.append('siteRevision', siteRevision);\n }\n\n return params;\n}\n\nexport function withParams(url: string, params: URLSearchParams) {\n const rawParams = params.toString();\n const qs = rawParams === '' ? '' : `?${rawParams}`;\n return `${url}${qs}`;\n}\n","import { CancelToken } from './cancel-token';\n\ninterface RequestConfig {\n headers?: any;\n withCredentials?: true;\n cancelToken?: CancelToken;\n}\n\ntype ResponseErrorReason = 'canceled' | 'server error' | 'network error';\n\nexport interface Response<T = any> {\n data: T;\n status: number;\n}\n\nexport class ResponseError extends Error {\n constructor(\n public readonly reason: ResponseErrorReason,\n public readonly response?: Response,\n ) {\n super(reason);\n\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, ResponseError.prototype);\n }\n\n public getStatus() {\n return (this.response && this.response.status) || -1;\n }\n}\n\nexport function isCancel(error: ResponseError) {\n return error.reason === 'canceled';\n}\n\nexport async function post<T = any>(\n url: string,\n payload: any,\n config: RequestConfig = {},\n): Promise<Response<T>> {\n const headers: Record<string, string> = { ...config.headers };\n\n if (payload !== undefined) {\n headers['Content-Type'] = 'application/json;charset=utf-8';\n }\n\n const xsrf = readCookie('XSRF-TOKEN');\n if (xsrf !== undefined) {\n headers['X-XSRF-TOKEN'] = xsrf;\n }\n\n const body = payload === undefined ? null : JSON.stringify(payload);\n\n const fetchOptions: RequestInit = {\n method: 'POST',\n headers,\n body,\n signal: config.cancelToken?.signal,\n credentials: config.withCredentials ? 'include' : 'same-origin',\n };\n\n let fetchResponse: globalThis.Response;\n try {\n fetchResponse = await fetch(url, fetchOptions);\n } catch (e: any) {\n if (e.name === 'AbortError') {\n throw new ResponseError('canceled');\n }\n throw new ResponseError('network error');\n }\n\n const status = fetchResponse.status;\n\n let text: string;\n try {\n text = await fetchResponse.text();\n } catch (e: any) {\n throw new ResponseError('network error', { data: undefined as T, status });\n }\n\n const data = maybeJSON(text);\n const response: Response<T> = { data, status };\n\n if (!verifyStatus(status)) {\n throw new ResponseError('server error', response);\n }\n\n return response;\n}\n\nfunction readCookie(name: string) {\n const match =\n typeof window !== 'undefined' &&\n window.document &&\n window.document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : undefined;\n}\n\nfunction verifyStatus(status: number) {\n return status >= 200 && status < 300;\n}\n\nfunction maybeJSON(data: string) {\n try {\n return JSON.parse(data);\n } catch {\n return data;\n }\n}\n","import { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport { ResponseError, Response, isCancel } from '../utils/request';\nimport { InstanceUpdater } from '../instance-updater';\nimport { DuplexerSocketArtifactId, WixArtifactIdHeader } from '../constants';\n\nexport interface Continuable {\n continuable: boolean;\n}\n\nexport interface HttpResult extends Continuable {\n data?: Protocol.Packet;\n}\n\nexport async function longHttp(\n req: Promise<Response<Protocol.Packet>>,\n): Promise<HttpResult> {\n try {\n const { data } = await req;\n return { continuable: true, data };\n } catch (e) {\n /**\n * requests are canceled in the following cases:\n *\n * - before we start a new poll, we clean the current one by cancelling it.\n * - when we close the connection (so we can then reconnect).\n */\n if (isCancel(e)) {\n return { continuable: false };\n }\n\n if (isGatewayTimeout(e)) {\n // This way we support gateways/proxies with a lower timeout than our sockets server.\n // If we don't do this, we'll create a different session on every poll.\n // In the future we can detect such cases and fallback to polling transport.\n return { continuable: true };\n }\n\n // in any other case, we throw a response error that should trigger close & reconnect.\n throw e;\n }\n}\n\nexport function resolveHeaders(instanceUpdater: InstanceUpdater) {\n const xWixArtifactHeaders = {\n [WixArtifactIdHeader]: DuplexerSocketArtifactId,\n };\n const maybeInstanceHeaders = maybeHeaders(instanceUpdater);\n return {\n ...xWixArtifactHeaders,\n ...maybeInstanceHeaders,\n };\n}\n\nexport function maybeHeaders(instanceUpdater: InstanceUpdater) {\n return instanceUpdater?.getHeaders?.() ?? {};\n}\n\nfunction isGatewayTimeout(e: ResponseError) {\n return e.getStatus() === 504;\n}\n","import { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport Transport from './transport';\nimport { TransportType } from './transport-error';\nimport { InstanceUpdater } from '../instance-updater';\nimport { createParams, withParams } from './params';\nimport { resolveHeaders } from './http';\n\nexport default class WS extends Transport {\n private ws: WebSocket;\n\n constructor(\n private readonly url: string,\n private readonly instanceUpdater: InstanceUpdater = null,\n private readonly siteRevision?: string,\n ) {\n super({ keepAlive: true });\n }\n\n static isSupported() {\n return typeof WebSocket !== 'undefined';\n }\n\n get name(): TransportType {\n return 'websocket';\n }\n\n async open() {\n const params = await createParams(this.instanceUpdater, this.siteRevision);\n const url = withParams(this.url, params);\n\n const opts =\n typeof process !== 'undefined' && process.env.DUPLEXER_NODE_ENV === 'true'\n ? ({ headers: resolveHeaders(this.instanceUpdater) } as any)\n : undefined;\n\n this.closeClient();\n\n this.ws = new WebSocket(url, opts);\n\n this.listen();\n }\n\n protected closeClient() {\n if (this.ws) {\n this.cleanWebSocketHooks();\n\n /**\n * normal closure, the connection successfully completed whatever purpose\n * for which it was created.\n * more info here: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent\n */\n this.ws.close(1000);\n }\n }\n\n protected write(packet: Protocol.Packet) {\n const normalized = JSON.stringify(packet);\n this.ws.send(normalized);\n }\n\n private listen() {\n this.ws.onclose = (event) => {\n /**\n * event is not clean when it's closed unexpectedly, usually during a network\n * error that the client experiences (but not only - it happens on service GA for\n * instace).\n *\n * error will be clean, but unrecoverable, when sockets service initiates it:\n *\n * - in case connection is idle (no subscribes).\n * - in case signed instance is invalid.\n *\n * note: when client decides to close the connection proactivly, this handler will\n * not be invoked, this.we.onclose becomes noop before we call this.ws.close.\n */\n const isRecoverable = !event.wasClean;\n\n const error = this.transportError({\n status: event.code,\n message: event.reason,\n recoverable: isRecoverable,\n });\n\n this.cleanWebSocketHooks();\n this.onTransportClose(error);\n };\n\n this.ws.onmessage = (ev) => {\n const normalized = JSON.parse(ev.data);\n this.onData(normalized);\n };\n\n this.ws.onerror = () => {};\n }\n\n private cleanWebSocketHooks() {\n if (this.ws) {\n this.ws.onmessage = () => {};\n this.ws.onclose = () => {};\n }\n }\n}\n","import Deferred from './deferred';\n\nconst CANCEL_OP = {};\n\nexport interface CancelToken {\n promise: Promise<any>;\n signal: AbortSignal;\n}\n\nexport interface CancelTokenSource {\n cancel(): void;\n token: CancelToken;\n}\n\nexport function isCancel(maybeCancelOp: any) {\n return maybeCancelOp === CANCEL_OP;\n}\n\nexport function createCancelTokenSource(): CancelTokenSource {\n const deferred = new Deferred();\n const abortController = new AbortController();\n\n return {\n cancel: () => {\n abortController.abort();\n deferred.resolve(CANCEL_OP);\n },\n token: {\n promise: deferred.promise,\n signal: abortController.signal,\n },\n };\n}\n","export function omitEndingSlashIfExists(str: string) {\n return str.replace(/\\/+$/, '');\n}\n","export function isRecoverableCode(code: number) {\n return [401].every((unrecoverableStatus) => unrecoverableStatus !== code);\n}\n","import { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport { post, ResponseError, isCancel } from '../utils/request';\nimport {\n createCancelTokenSource,\n CancelTokenSource,\n} from '../utils/cancel-token';\nimport { omitEndingSlashIfExists } from '../utils/utils';\nimport Transport from './transport';\nimport ReadyState from '../ready-state';\nimport { isRecoverableCode } from './unrecoverable';\nimport { InstanceUpdater } from '../instance-updater';\nimport { createParams, withParams } from './params';\nimport { Continuable, longHttp, maybeHeaders } from './http';\nimport { TransportType } from './transport-error';\n\nexport default class HttpPolling extends Transport {\n private readonly commandsCancelTokens: CancelTokenSource[] = [];\n protected pollCancelToken: CancelTokenSource;\n\n constructor(\n private readonly baseUrl: string,\n protected readonly instanceUpdater: InstanceUpdater = null,\n private readonly siteRevision?: string,\n ) {\n super({ keepAlive: false });\n\n this.baseUrl = omitEndingSlashIfExists(this.baseUrl);\n }\n\n get name(): TransportType {\n return 'http_long_polling';\n }\n\n async open(): Promise<void> {\n /**\n * first poll has no session id, it should retrieve \"connection_established\" packet.\n * then, when someone tries to subscribe, he sends a subscribe command and only then\n * the whole long polling interval starts.\n */\n await this.poll();\n }\n\n protected closeClient() {\n this.commandsCancelTokens.forEach((c) => c.cancel());\n this.abortOngoingPollInterval();\n }\n\n protected async write(packet: Protocol.Packet, { affectState = true } = {}) {\n try {\n const cancelToken = createCancelTokenSource();\n\n this.commandsCancelTokens.push(cancelToken);\n\n const url = await this.buildUrl('http-command');\n\n const { data } = await post(url, packet, {\n cancelToken: cancelToken.token,\n headers: maybeHeaders(this.instanceUpdater),\n });\n\n this.removeCancelToken(cancelToken);\n this.onData(data);\n\n if (affectState) {\n this.startPollInterval();\n }\n } catch (e) {\n /**\n * we close the connection in case of:\n *\n * - generic network issues.\n * - validation issues (session expired, invalid signed instance, ...)\n *\n * note: in case command failed we still return 200 but error is attached\n * to request payload.\n */\n\n if (!isCancel(e)) {\n this.closeOnTransportFailure(e);\n }\n }\n }\n\n private abortOngoingPollInterval() {\n this.pollCancelToken && this.pollCancelToken.cancel();\n this.pollCancelToken = null;\n }\n\n private async startPollInterval() {\n this.abortOngoingPollInterval();\n\n if (this.readyState === ReadyState.OPEN) {\n const { continuable } = await this.poll();\n\n if (continuable) {\n this.startPollInterval();\n }\n }\n }\n\n protected async poll(): Promise<Continuable> {\n const url = await this.buildUrl('http');\n\n this.pollCancelToken = createCancelTokenSource();\n\n const pollReq = post<Protocol.Packet>(url, this.payload, {\n cancelToken: this.pollCancelToken.token,\n headers: maybeHeaders(this.instanceUpdater),\n });\n\n try {\n const res = await longHttp(pollReq);\n\n if (res.data) {\n this.onData(res.data);\n }\n\n return res;\n } catch (e) {\n this.closeOnTransportFailure(e);\n return { continuable: false };\n }\n }\n\n protected async buildUrl(url: string) {\n const params = await createParams(this.instanceUpdater, this.siteRevision);\n\n if (this.sessionId) {\n params.append('sessionId', this.sessionId);\n }\n\n const urlWithParams = withParams(url, params);\n\n return `${this.baseUrl}/${urlWithParams}`;\n }\n\n protected closeOnTransportFailure(e: ResponseError) {\n const status = e.getStatus();\n\n const err = this.transportError({\n status,\n message: e.message,\n recoverable: isRecoverableCode(status),\n });\n\n this.onTransportClose(err);\n }\n\n private removeCancelToken(cancelToken: CancelTokenSource) {\n const idx = this.commandsCancelTokens.indexOf(cancelToken);\n this.commandsCancelTokens.splice(idx, 1);\n }\n}\n","import { Emitter } from '../utils/event-emitter';\nimport { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport Strategy, { StrategyConnect } from '../strategies/strategy';\nimport Transport from './transport';\nimport { TransportError } from './transport-error';\nimport ReadyState from '../ready-state';\nimport on, { OnRecord } from '../utils/on';\nimport Deferred from '../utils/deferred';\n\nexport interface ConnectState {\n success: boolean;\n connectionEstablishedPacket?: Protocol.ConnectionEstablishedPacket;\n}\n\n/**\n * TransportsManager responsibilities:\n *\n * - Initizlize \"first to connect\" (according given strategies)\n * - Close active connection or connection process\n *\n * Events:\n * - \"close\" - in case (1) connected trasnport closed or (2) connect canceled\n * - \"connect_error\" - passes through \"close\" events coming from trasnports during connection\n * phase, may occurs several times during the connect tries.\n * - \"message\" - pass through packets coming from open transport.\n */\nexport default class TransportsManager extends Emitter {\n private _transport: Transport;\n private disposables: OnRecord[] = [];\n private cancelToken: Deferred<StrategyConnect>;\n\n public readyState = ReadyState.CLOSED;\n\n constructor(private readonly strategies: Strategy[]) {\n super();\n }\n\n get transport() {\n return this._transport;\n }\n\n async connect(): Promise<ConnectState> {\n let connectionEstablishedPacket: Protocol.ConnectionEstablishedPacket;\n\n if (this.readyState !== ReadyState.CLOSED) {\n return connectCanceled();\n }\n\n this.cancelToken = new Deferred();\n this.readyState = ReadyState.OPENING;\n this.listenAndEmitConnectErrorsInAllTransportsOnConnecting();\n\n try {\n connectionEstablishedPacket =\n await this.connectToFirstToRespondStrategy();\n } catch (e) {\n return connectCanceled();\n }\n\n this.cancelToken = null;\n this.removeListeners();\n this.abortStrategiesWithNoOpenTransport();\n this.listenEventsOfActiveTransport();\n\n return connectSuccess(connectionEstablishedPacket);\n }\n\n close() {\n if (this.isOpen()) {\n // transport emits 'close' event, so this.onClose() will be called later on\n this.transport.close();\n } else if (this.isOpening()) {\n this.cancelToken && this.cancelToken.reject();\n this.onClose();\n this.strategies.forEach((s) => s.abort());\n }\n }\n\n isOpen() {\n return this.readyState === ReadyState.OPEN;\n }\n\n isClosed() {\n return this.readyState === ReadyState.CLOSED;\n }\n\n private isOpening() {\n return this.readyState === ReadyState.OPENING;\n }\n\n private async connectToFirstToRespondStrategy() {\n const { transport, connectionEstablishedPacket } = await Promise.race([\n ...this.strategies.map((s) => s.connect()),\n this.cancelToken.promise,\n ]);\n\n this._transport = transport;\n this.readyState = ReadyState.OPEN;\n\n return connectionEstablishedPacket;\n }\n\n private onClose(error?: TransportError) {\n this.readyState = ReadyState.CLOSED;\n this._transport = null;\n this.cancelToken = null;\n this.removeListeners();\n\n /**\n * the reason we always propagaes 'close' event is that some entities in the system\n * have to make a clean up or just react, for instance:\n *\n * - connection manager MAY reconnect.\n * - vritual socket must notify to its user (disconnected event).\n *\n * so it doesn't matter WHY close happened - everyone should always get notified.\n */\n this.emit('close', error);\n }\n\n private abortStrategiesWithNoOpenTransport() {\n this.strategies\n .filter((s) => s.transport.readyState !== ReadyState.OPEN)\n .forEach((s) => s.abort());\n }\n\n private listenAndEmitConnectErrorsInAllTransportsOnConnecting() {\n this.disposables = this.strategies.map((s) =>\n on(s, 'connect_error', (error: TransportError) => {\n if (error.recoverable) {\n this.emit('connect_error', error);\n } else {\n this.close();\n }\n }),\n );\n }\n\n private listenEventsOfActiveTransport() {\n this.disposables = [\n /**\n * might be called either because transport got error or due to a side-effect\n * when someone calls TransportsManager.close().\n */\n on(this.transport, 'close', (error?: TransportError) => {\n this.onClose(error);\n }),\n\n on(this.transport, 'packet', (packet: Protocol.Packet) => {\n this.onData(packet);\n }),\n ];\n }\n\n private removeListeners() {\n this.disposables.forEach((l) => l.destroy());\n this.disposables = [];\n }\n\n // todo: rewrite this method, it looks ugly\n private onData(packet: Protocol.Packet) {\n switch (packet.type) {\n case 'message':\n case 'ack':\n case 'error':\n case 'UpdateRestoreStrategyOverrides':\n this.emit('message', packet);\n break;\n\n default:\n break;\n }\n }\n}\n\nfunction connectSuccess(\n connectionEstablishedPacket: Protocol.ConnectionEstablishedPacket,\n) {\n return {\n success: true,\n connectionEstablishedPacket,\n };\n}\n\nfunction connectCanceled() {\n return {\n success: false,\n };\n}\n","import Backoff from 'backo2';\nimport { Emitter } from '../utils/event-emitter';\nimport { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport On, { OnRecord } from '../utils/on';\nimport Transport from '../transport/transport';\nimport { TransportError } from '../transport/transport-error';\nimport Deferred from '../utils/deferred';\n\nconst ONE_MINUTE_IN_MILLIS = 1000 * 60;\n\nexport default class Strategy extends Emitter {\n private connectDelayTimeoutId: NodeJS.Timer;\n private disposables: OnRecord[] = [];\n private readonly backoff = new Backoff({\n max: ONE_MINUTE_IN_MILLIS,\n });\n private cancelToken: Deferred<Protocol.ConnectionEstablishedPacket>;\n\n constructor(\n private readonly _transport: Transport,\n private readonly opts: StrategyOpts,\n ) {\n super();\n }\n\n get transport(): Transport {\n return this._transport;\n }\n\n async connect(): Promise<StrategyConnect> {\n this.cancelToken = new Deferred();\n\n if (this.opts.delay > 0) {\n await Promise.race([delay(this.opts.delay), this.cancelToken.promise]);\n }\n\n const connectionEstablishedPacket = await Promise.race([\n this.connectWithBackoff(),\n this.cancelToken.promise,\n ]);\n\n return { transport: this.transport, connectionEstablishedPacket };\n }\n\n abort() {\n clearTimeout(this.connectDelayTimeoutId);\n this.cancelToken && this.cancelToken.reject();\n this.cancelToken = null;\n this.removeListeners();\n this.backoff.reset();\n this.transport.close();\n }\n\n private async connectWithBackoff() {\n this.backoff.reset();\n\n return new Promise<Protocol.ConnectionEstablishedPacket>((resolve) => {\n this.disposables = [\n On(\n this.transport,\n 'open',\n (packet: Protocol.ConnectionEstablishedPacket) => {\n this.removeListeners();\n resolve(packet);\n },\n ),\n\n /**\n * this handler will be CLEANED when one of the following happens:\n *\n * - transport connected ('open' handler).\n * - another transport connected, so this one will be cleaned when\n * the strategy aborts.\n */\n On(this.transport, 'connect_error', (error: TransportError) => {\n clearTimeout(this.connectDelayTimeoutId);\n\n if (error.recoverable) {\n this.connectDelayTimeoutId = setTimeout(\n () => this.transport.open(),\n this.backoff.duration(),\n );\n }\n\n this.emit('connect_error', error);\n }),\n ];\n\n this.transport.open();\n });\n }\n\n private removeListeners() {\n this.disposables.forEach((d) => d.destroy());\n this.disposables = [];\n }\n}\n\nfunction delay(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport interface StrategyOpts {\n delay: number;\n backoff: number;\n}\n\nexport interface StrategyConnect {\n transport: Transport;\n connectionEstablishedPacket: Protocol.ConnectionEstablishedPacket;\n}\n","import Transport from '../transport/transport';\nimport Strategy, { StrategyOpts } from './strategy';\n\nexport class StrategyBuilder {\n private readonly opts: StrategyOpts = {\n delay: 0,\n backoff: 0,\n };\n\n constructor(private readonly transport: Transport) {}\n\n withDelay(delay: number) {\n this.opts.delay = delay;\n return this;\n }\n\n withBackoff(backoff: number) {\n this.opts.backoff = backoff;\n return this;\n }\n\n build() {\n return new Strategy(this.transport, this.opts);\n }\n}\n\nexport default function aStrategyBuilder(transport: Transport) {\n return new StrategyBuilder(transport);\n}\n","import Transport from '../transport/transport';\nimport aStrategyBuilder from './strategy-builder';\nimport Strategy from './strategy';\n\nconst BACKOFF_INITIAL = 150;\n\nexport function primaryPreset(transport: Transport): Strategy {\n return aStrategyBuilder(transport).withBackoff(BACKOFF_INITIAL).build();\n}\n\nexport function secondaryPreset(transport: Transport): Strategy {\n return aStrategyBuilder(transport)\n .withDelay(4000)\n .withBackoff(BACKOFF_INITIAL)\n .build();\n}\n\n","import WebSocket from '../../transport/websocket';\nimport HttpPolling from '../../transport/http-polling';\nimport Strategy from '../../strategies/strategy';\nimport TransportsManager from '../../transport/transports-manager';\nimport { InstanceUpdater } from '../../instance-updater';\nimport {\n primaryPreset,\n secondaryPreset,\n} from '../../strategies/strategy-presets';\n\nexport default function transports(opts: TransportsOpts) {\n let strategies: Strategy[] = [];\n const ws = createWebSocket(opts);\n const httpLongPolling = createHttpLongPolling(opts);\n\n // tests purposes only\n const forcedTransport =\n typeof process !== 'undefined' &&\n typeof process.env?.DUPLEXER_FORCED_TRANSPORT === 'string'\n ? process.env.DUPLEXER_FORCED_TRANSPORT\n : undefined;\n\n if (forcedTransport === 'websocket') {\n strategies = [primaryPreset(ws)];\n } else if (forcedTransport === 'http') {\n strategies = [primaryPreset(httpLongPolling)];\n } else if (WebSocket.isSupported()) {\n strategies = [primaryPreset(ws), secondaryPreset(httpLongPolling)];\n } else {\n strategies = [primaryPreset(httpLongPolling)];\n }\n\n return new TransportsManager(strategies);\n}\n\nfunction createWebSocket(opts: TransportsOpts) {\n const protocol = isSSL() ? 'wss://' : 'ws://';\n const url = `${protocol}${opts.baseUrl}`;\n return new WebSocket(url, opts.instanceUpdater, opts.siteRevision);\n}\n\nfunction createHttpLongPolling(opts: TransportsOpts) {\n const url = httpUrl(opts.baseUrl);\n return new HttpPolling(url, opts.instanceUpdater, opts.siteRevision);\n}\n\nfunction httpUrl(baseUrl: string) {\n const protocol = isSSL() ? 'https://' : 'http://';\n return `${protocol}${baseUrl}`;\n}\n\nfunction isSSL() {\n return typeof self !== 'undefined' && self.location.protocol !== 'http:';\n}\n\nexport interface TransportsOpts {\n baseUrl: string;\n instanceUpdater: InstanceUpdater;\n siteRevision: string;\n}\n","import Environment from '../core/environment';\nimport WebNetwork from './network';\nimport transports from './transports';\nimport { InstanceUpdater } from '../../instance-updater';\n\nexport default function aWebEnvironment(opts: WebEnvironmentOpts) {\n const network = new WebNetwork();\n const transportsManager = transports({\n baseUrl: opts.url,\n instanceUpdater: opts.instanceUpdater,\n siteRevision: opts.siteRevision,\n });\n return new Environment({ transportsManager, network });\n}\n\nexport interface WebEnvironmentOpts {\n url: string;\n instanceUpdater?: InstanceUpdater;\n siteRevision?: string;\n}\n","export default class Timer {\n private timer: NodeJS.Timer;\n\n constructor(\n private readonly timeout: number,\n private readonly handler: () => void,\n ) {}\n\n schedule() {\n this.timer = setTimeout(this.handler, this.timeout);\n }\n\n cancel() {\n clearTimeout(this.timer);\n }\n}\n","import Transport from './transport/transport';\nimport { Emitter } from './utils/event-emitter';\nimport Timer from './utils/timer';\nimport On from './utils/on';\n\nexport interface KeepAliveOpts {\n pingTimeout: number;\n pingInterval: number;\n}\n\nexport default class KeepAlive extends Emitter {\n private timeoutTimer: Timer;\n private intervalTimer: Timer;\n private started = false;\n\n constructor(\n private readonly transport: Transport,\n private readonly opts: KeepAliveOpts,\n ) {\n super();\n\n On(this.transport, 'packet', () => this.started && this.schedule());\n }\n\n public schedule() {\n this.dispose();\n this.started = true;\n this.intervalTimer = new Timer(this.opts.pingInterval, () =>\n this.sendHeartbeat(),\n );\n this.intervalTimer.schedule();\n }\n\n public dispose() {\n this.started = false;\n this.intervalTimer && this.intervalTimer.cancel();\n this.timeoutTimer && this.timeoutTimer.cancel();\n }\n\n private sendHeartbeat() {\n this.ping();\n\n this.timeoutTimer = new Timer(this.opts.pingTimeout, () => {\n this.transport.close({\n status: 0,\n message: 'keep alive has not recieved pong in defined timeframe',\n recoverable: true,\n });\n });\n\n this.timeoutTimer.schedule();\n }\n\n private ping() {\n this.transport.send({ type: 'ping' }, { affectState: false });\n }\n}\n","class AssertionError extends Error {\n constructor(message: string) {\n super(message);\n this.name = this.constructor.name;\n }\n}\n\nexport function defined(target: any, message: string) {\n if (target === undefined) {\n throw new AssertionError(message);\n }\n}\n","export default function isTransportError(error: any) {\n return error !== undefined && error.transport !== undefined;\n}\n","import { Emitter } from './utils/event-emitter';\nimport { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport { PollPayloadProtocol } from '@wix/wix-duplexer-protocol/dist/lib/PollPayloadBuilder';\nimport Environment from './environments/core/environment';\nimport On from './utils/on';\nimport KeepAlive, { KeepAliveOpts } from './keep-alive';\nimport { WriteOptions } from './transport/transport';\nimport { defined } from './utils/assert';\nimport isTransportError from './errors/is-transport-error';\nimport { TransportError } from './transport/transport-error';\nimport Timeline from './timeline/timeline';\nimport { InstanceUpdater } from './instance-updater';\n\nexport interface ConnectionManagerOpts extends KeepAliveOpts {\n environment: Environment;\n timeline: Timeline;\n instanceUpdater?: InstanceUpdater;\n autoConnectEnabed?: boolean;\n}\n\n/**\n * ConnectionManager responsibilities:\n * - Auto reconnections on abrupt disconnections and environment state changes\n * - Keep alive (in relevant transports only)\n * - Network state changes (on online hints)\n * - Dealing with TransportsManager\n *\n * Events:\n * - \"open\" - on connection open, depends on result from TransportsManager#connect\n * - \"close\" - passed through from TransportsManager\n * - \"connect_error\" - passed through from TransportsManager\n * - \"message\" - passed through from TransportsManager\n */\nexport default class ConnectionManager extends Emitter {\n private keepAlive: KeepAlive;\n private autoConnect: boolean;\n private readonly environment: Environment;\n private readonly timeline: Timeline;\n private readonly autoConnectEnabled: boolean;\n\n constructor(private readonly opts: ConnectionManagerOpts) {\n super();\n this.environment = opts.environment;\n this.timeline = opts.timeline;\n this.autoConnectEnabled = opts.autoConnectEnabed;\n\n this.listenNeworkStateChanges();\n this.listenTransportEvents();\n }\n\n get sessionId() {\n return this.transport.sessionId;\n }\n\n updatePayload(payload: PollPayloadProtocol) {\n this.transport.updatePayload(payload);\n }\n\n send(packet: Protocol.Packet, opts?: WriteOptions) {\n this.transport.send(packet, opts);\n }\n\n close() {\n this.autoConnect = false;\n this.environment.transportsManager.close();\n this.dispose();\n }\n\n get readyState() {\n return this.environment.transportsManager.readyState;\n }\n\n async connect() {\n this.autoConnect = this.autoConnectEnabled;\n\n const result = await this.environment.transportsManager.connect();\n\n if (result.success) {\n this.keepAlive = new KeepAlive(this.transport, this.opts);\n this.transport.keepAliveEnabled && this.keepAlive.schedule();\n this.timeline.log({\n type: 'connect_succeeded',\n data: {\n transport: this.transport.name,\n },\n });\n this.emit('open', result.connectionEstablishedPacket);\n }\n }\n\n isClosed() {\n return this.environment.transportsManager.isClosed();\n }\n\n private isOpen() {\n return this.environment.transportsManager.isOpen();\n }\n\n private get transport() {\n defined(\n this.environment.transportsManager.transport,\n 'transport was not initialized yet',\n );\n\n return this.environment.transportsManager.transport;\n }\n\n /**\n * we reconnect in the following scenarios only:\n *\n * - unexpected close, due to command that errored out or any other unexpected\n * network error.\n * - keep alive failed to return a pong during the defined timeout/timeframe.\n * - sessions expired.\n *\n * note: invalid signed instance is currently an error we do not recover, it's a todo.\n * basically we can recover it, because instance updater provided by the user should\n * always return a valid signed instance, so we can retry multiple times.\n */\n private shouldReconnect(error?: TransportError) {\n return this.autoConnect && error?.recoverable;\n }\n\n private listenNeworkStateChanges() {\n this.environment.network.on('online', () => {\n /**\n * the ONLY responsibility of \"online\" hook is to speed up reconnections\n * in case our backoff reached top intervals (10s between reconnections),\n * it should restart it. hence, we MUST NOT close connection in case it\n * is considered ESTABLISHED one (yes - although it MAY be an half-open one).\n * in case of half-open connection, it's keep alive responsibility to\n * disconnect us (and reconnect will happen automatically).\n */\n if (this.autoConnect && !this.isOpen()) {\n this.timeline.log({\n type: 'network_state_changed',\n data: 'online',\n });\n\n // cleanup strategies and reconnect faster\n this.close();\n this.connect();\n }\n });\n }\n\n private listenTransportEvents() {\n On(this.environment.transportsManager, 'connect_error', (error: any) => {\n this.timeline.log({\n type: 'connect_error',\n data: error,\n });\n\n // eventually, it is propagaed to client as \"@duplexer:connect_error\" event,\n // by VirtualSocket, error is attached.\n this.emit('connect_error', error);\n });\n\n On(\n this.environment.transportsManager,\n 'close',\n (error?: TransportError) => {\n this.dispose();\n\n this.maybeLogDisconnectionError(error);\n\n if (this.shouldReconnect(error)) {\n this.connect();\n }\n\n // eventually, it is propagaed to client as \"@duplexer:disconnected\" event,\n // by VirtualSocket, error is attached in case it exists.\n this.emit('close', error);\n },\n );\n\n On(\n this.environment.transportsManager,\n 'message',\n (message: Protocol.Packet) => {\n this.emit('message', message);\n },\n );\n }\n\n private dispose() {\n this.keepAlive && this.keepAlive.dispose();\n }\n\n private maybeLogDisconnectionError(error: any) {\n if (isTransportError(error)) {\n this.timeline.log({\n type: 'disconnect_error',\n data: error,\n });\n }\n }\n}\n","import Timeline from './timeline';\n\nexport class NoopTimeline implements Timeline {\n log() {}\n}\n\nexport default function aNoopTimeline() {\n return new NoopTimeline();\n}\n","import { Emitter } from './utils/event-emitter';\nimport { Protocol } from '@wix/wix-duplexer-typescript-definitions';\nimport {\n PollPayloadBuilder,\n RestoreStrategyBuilderFactory,\n} from '@wix/wix-duplexer-protocol';\nimport { PollOverrideRestoreStrategy } from '@wix/wix-duplexer-protocol/dist/lib/PollOverrideRestoreStrategyBuilder';\nimport Deferred from './utils/deferred';\nimport VirtualSocket, { VirtualSocketOptions } from './virtual-socket';\nimport Environment from './environments/core/environment';\nimport aWebEnvironment from './environments/web/environment';\nimport ConnectionManager from './connection-manager';\nimport Timeline from './timeline/timeline';\nimport { WriteOptions } from './transport/transport';\nimport aNoopTimeline from './timeline/noop-timeline';\nimport { InstanceUpdater } from './instance-updater';\nimport { TransportError } from './transport/transport-error';\n\nexport type TransportType = 'WebSocket' | 'InMemory';\n\nexport interface DuplexerOptions {\n pingInterval?: number;\n pingTimeout?: number;\n secured?: boolean;\n timeline?: Timeline;\n instanceUpdater?: InstanceUpdater;\n siteRevision?: string;\n autoConnect?: boolean;\n}\n\nexport class Duplexer extends Emitter {\n private virtualSockets: VirtualSocket[] = [];\n private readonly environment: Environment;\n private payloadBuilder = new PollPayloadBuilder();\n private connectionServerTimeDeferred: Deferred<number> = new Deferred();\n\n /** @internal */\n public connection: ConnectionManager;\n\n constructor(\n urlOrEnvironment: string | Environment,\n {\n pingInterval = 30000,\n pingTimeout = 5000,\n timeline = aNoopTimeline(),\n autoConnect = true,\n instanceUpdater,\n siteRevision,\n }: DuplexerOptions = {},\n ) {\n super();\n\n this.environment =\n typeof urlOrEnvironment === 'string'\n ? aWebEnvironment({\n url: urlOrEnvironment,\n instanceUpdater,\n siteRevision,\n })\n : urlOrEnvironment;\n\n this.connection = new ConnectionManager({\n pingTimeout,\n pingInterval,\n environment: this.environment,\n timeline,\n autoConnectEnabed: autoConnect,\n });\n\n this.listen();\n }\n\n triggerInstanceChanged() {\n this.close();\n this.connection.connect();\n }\n\n connect(opts: VirtualSocketOptions) {\n const vSocket = new VirtualSocket(this, opts);\n this.virtualSockets.push(vSocket);\n return vSocket;\n }\n\n getConnectionServerTime() {\n return this.connectionServerTimeDeferred.promise;\n }\n\n close() {\n this.connection.close();\n }\n\n /** @internal */\n addRestoreOverride(override: PollOverrideRestoreStrategy) {\n const payload = this.payloadBuilder\n .withOverrideRestoreStrategy(override)\n .build();\n\n this.connection.updatePayload(payload);\n }\n\n /** @internal */\n closeVirtualSocket(virtualSocket: VirtualSocket) {\n this.virtualSockets = this.virtualSockets.filter(\n (vs) => vs !== virtualSocket,\n );\n\n if (this.virtualSockets.length === 0) {\n this.close();\n }\n }\n\n /** @internal */\n packet(packet: Protocol.Packet, opts?: WriteOptions) {\n this.connection.send(packet, opts);\n }\n\n private listen() {\n this.connection.on(\n 'open',\n (packet: Protocol.ConnectionEstablishedPacket) => {\n const timestampRestoreStrategy =\n RestoreStrategyBuilderFactory.timestamp().withT(packet.t).build();\n this.payloadBuilder.withDefaultRestoreStrategy(\n timestampRestoreStrategy,\n );\n this.connection.updatePayload(this.payloadBuilder.build());\n this.emit('open');\n this.connectionServerTimeDeferred.resolve(packet.t);\n },\n );\n\n this.connection.on('message', (message: Protocol.Packet) => {\n switch (message.type) {\n case 'UpdateRestoreStrategyOverrides':\n this.overwriteRestoreOverrides(\n (message as Protocol.UpdateRestoreStrategyOverridesPacket)\n .overrides,\n );\n break;\n default:\n this.emit('packet', message);\n }\n });\n\n this.connection.on('close', this.onClose.bind(this));\n }\n\n private onClose(error?: TransportError) {\n this.emit('close', error);\n this.connectionServerTimeDeferred = new Deferred();\n }\n\n private overwriteRestoreOverrides(overrides: PollOverrideRestoreStrategy[]) {\n this.payloadBuilder = new PollPayloadBuilder();\n\n overrides.forEach((override) =>\n this.payloadBuilder.withOverrideRestoreStrategy(override),\n );\n\n const payload = this.payloadBuilder.build();\n\n this.connection.updatePayload(payload);\n }\n}\n"],"names":["Emitter","constructor","_defineProperty","on","event","fn","_on","addEventListener","once","off","_len","arguments","length","args","Array","_key","apply","_off","removeEventListener","removeListener","removeAllListeners","emit","_callbacks","callbacks","slice","_len2","_key2","i","len","listeners","hasListeners","push","cb","splice","Deferred","_promise","Promise","resolve","reject","_resolve","_reject","value","error","promise","ReadyState","RestoreStrategyBuilderFactory","SubscribingState","Channel","virtualSocket","name","resourceId","info","UNSUBSCRIBED","setMessageIdRestore","messageId","restore","withId","build","subscribe","opts","subscribingState","SUBSCRIBED","setTimeout","emitSubscriptionSucceeded","SUBSCRIBING","sendSubscribe","setUnsubscribe","res","send","type","channel","auth","restoreStrategy","isSynced","unsubscribe","payload","affectState","Channels","add","maybeChannel","find","channelsList","remove","filter","c","all","subscribeAll","forEach","setUnsubscribeAll","emitter","destroy","WixArtifactIdHeader","wsClient","userChannel","wsVs","DuplexerSocketArtifactId","PollOverrideRestoreStrategyBuilder","VirtualSocket","duplexer","_ref","appDefId","apiKey","channels","restoreState","listen","open","channelName","subscribeToUserChannel","unsubscribeFromUserChannel","readyState","connection","CLOSED","connect","OPEN","onConnect","disconnect","socketListeners","l","onClose","closeVirtualSocket","message","connected","id","issueAckId","acks","packet","sendBuffer","whenConnected","bind","onPacket","onConnectError","ns","onAck","onMessage","emitBuffered","undefined","override","withNs","withChannelName","withRestoreStrategy","addRestoreOverride","createAttachments","ack","msg","then","ids","toString","_ref2","user","publisher","Environment","_transportsManager","transportsManager","_network","network","Network","listenConnectionStateChanges","connectionIsOnline","WebNetwork","window","Transport","keepAlive","keepAliveEnabled","write","updatePayload","params","close","transportError","closeClient","onTransportClose","transport","onData","isArray","handlePacket","sessionId","createParams","instanceUpdater","siteRevision","URLSearchParams","instance","getInstance","append","withParams","url","rawParams","qs","ResponseError","Error","reason","response","Object","setPrototypeOf","prototype","getStatus","status","isCancel","post","config","_config$cancelToken","headers","xsrf","readCookie","body","JSON","stringify","fetchOptions","method","signal","cancelToken","credentials","withCredentials","fetchResponse","fetch","e","text","data","maybeJSON","verifyStatus","match","document","cookie","RegExp","decodeURIComponent","parse","longHttp","req","continuable","isGatewayTimeout","resolveHeaders","xWixArtifactHeaders","maybeInstanceHeaders","maybeHeaders","getHeaders","WS","isSupported","WebSocket","process","env","DUPLEXER_NODE_ENV","ws","cleanWebSocketHooks","normalized","onclose","isRecoverable","wasClean","code","recoverable","onmessage","ev","onerror","CANCEL_OP","maybeCancelOp","createCancelTokenSource","deferred","abortController","AbortController","cancel","abort","token","omitEndingSlashIfExists","str","replace","isRecoverableCode","every","unrecoverableStatus","HttpPolling","baseUrl","poll","commandsCancelTokens","abortOngoingPollInterval","_temp","buildUrl","removeCancelToken","startPollInterval","closeOnTransportFailure","pollCancelToken","pollReq","urlWithParams","err","idx","indexOf","TransportsManager","strategies","_transport","connectionEstablishedPacket","connectCanceled","OPENING","listenAndEmitConnectErrorsInAllTransportsOnConnecting","connectToFirstToRespondStrategy","removeListeners","abortStrategiesWithNoOpenTransport","listenEventsOfActiveTransport","connectSuccess","isOpen","isOpening","s","isClosed","race","map","disposables","success","Backoff","On","ONE_MINUTE_IN_MILLIS","Strategy","max","delay","connectWithBackoff","clearTimeout","connectDelayTimeoutId","backoff","reset","duration","d","ms","StrategyBuilder","withDelay","withBackoff","aStrategyBuilder","BACKOFF_INITIAL","primaryPreset","secondaryPreset","transports","_process$env","createWebSocket","httpLongPolling","createHttpLongPolling","forcedTransport","DUPLEXER_FORCED_TRANSPORT","protocol","isSSL","httpUrl","self","location","aWebEnvironment","Timer","timeout","handler","schedule","timer","KeepAlive","started","dispose","intervalTimer","pingInterval","sendHeartbeat","timeoutTimer","ping","pingTimeout","AssertionError","defined","target","isTransportError","ConnectionManager","environment","timeline","autoConnectEnabled","autoConnectEnabed","listenNeworkStateChanges","listenTransportEvents","autoConnect","result","log","shouldReconnect","maybeLogDisconnectionError","NoopTimeline","aNoopTimeline","PollPayloadBuilder","Duplexer","urlOrEnvironment","triggerInstanceChanged","vSocket","virtualSockets","getConnectionServerTime","connectionServerTimeDeferred","payloadBuilder","withOverrideRestoreStrategy","vs","timestampRestoreStrategy","timestamp","withT","t","withDefaultRestoreStrategy","overwriteRestoreOverrides","overrides"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("Duplexer",[],e):"object"==typeof exports?exports.Duplexer=e():t.Duplexer=e()}("undefined"!=typeof self?self:this,(()=>(()=>{var t={830:t=>{function e(t){t=t||{},this.ms=t.min||100,this.max=t.max||1e4,this.factor=t.factor||2,this.jitter=t.jitter>0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=e,e.prototype.duration=function(){var t=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),s=Math.floor(e*this.jitter*t);t=0==(1&Math.floor(10*e))?t-s:t+s}return 0|Math.min(t,this.max)},e.prototype.reset=function(){this.attempts=0},e.prototype.setMin=function(t){this.ms=t},e.prototype.setMax=function(t){this.max=t},e.prototype.setJitter=function(t){this.jitter=t}},158:t=>{var e,s,n=t.exports={};function r(){throw new Error("setTimeout has not been defined")}function i(){throw new Error("clearTimeout has not been defined")}function o(t){if(e===setTimeout)return setTimeout(t,0);if((e===r||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(s){try{return e.call(null,t,0)}catch(s){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:r}catch(t){e=r}try{s="function"==typeof clearTimeout?clearTimeout:i}catch(t){s=i}}();var a,c=[],h=!1,l=-1;function u(){h&&a&&(h=!1,a.length?c=a.concat(c):l=-1,c.length&&d())}function d(){if(!h){var t=o(u);h=!0;for(var e=c.length;e;){for(a=c,c=[];++l<e;)a&&a[l].run();l=-1,e=c.length}a=null,h=!1,function(t){if(s===clearTimeout)return clearTimeout(t);if((s===i||!s)&&clearTimeout)return s=clearTimeout,clearTimeout(t);try{return s(t)}catch(e){try{return s.call(null,t)}catch(e){return s.call(this,t)}}}(t)}}function p(t,e){this.fun=t,this.array=e}function f(){}n.nextTick=function(t){var e=new Array(arguments.length-1);if(arguments.length>1)for(var s=1;s<arguments.length;s++)e[s-1]=arguments[s];c.push(new p(t,e)),1!==c.length||h||o(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},n.title="browser",n.browser=!0,n.env={},n.argv=[],n.version="",n.versions={},n.on=f,n.addListener=f,n.once=f,n.off=f,n.removeListener=f,n.removeAllListeners=f,n.emit=f,n.prependListener=f,n.prependOnceListener=f,n.listeners=function(t){return[]},n.binding=function(t){throw new Error("process.binding is not supported")},n.cwd=function(){return"/"},n.chdir=function(t){throw new Error("process.chdir is not supported")},n.umask=function(){return 0}},102:(t,e,s)=>{"use strict";e.AN=e.Du=e.v8=void 0;var n=s(120);e.v8=n.default;var r=s(880);e.Du=r.default;var i=s(131);e.AN=i.default},131:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s=function(){function t(){}return t.prototype.withNs=function(t){return this.ns=t,this},t.prototype.withChannelName=function(t){return this.channelName=t,this},t.prototype.withRestoreStrategy=function(t){return this.restore=t,this},t.prototype.build=function(){return{ns:this.ns,channel:this.channelName,override:this.restore}},t}();e.default=s},880:function(t,e){"use strict";var s=this&&this.__assign||function(){return s=Object.assign||function(t){for(var e,s=1,n=arguments.length;s<n;s++)for(var r in e=arguments[s])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},s.apply(this,arguments)};Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(){this.overrideRestoreStrategies=[]}return t.prototype.withOverrideRestoreStrategy=function(t){return this.overrideRestoreStrategies=this.overrideRestoreStrategies.filter((function(e){return e.channel!==t.channel||e.ns!==t.ns})),this.overrideRestoreStrategies.push(t),this},t.prototype.withDefaultRestoreStrategy=function(t){return this.defaultRestoreStrategy=t,this},t.prototype.build=function(){return new r(this.defaultRestoreStrategy,this.overrideRestoreStrategies).toProtocolFormat()},t}();e.default=n;var r=function(){function t(t,e){this.defaultRestoreStrategy=t,this.overrideRestoreStrategies=e}return t.prototype.toProtocolFormat=function(){var t={};return void 0!==this.defaultRestoreStrategy&&(t.restore={default:this.defaultRestoreStrategy}),this.hasOverrides()&&(t.restore=s(s({},t.restore),{overrides:this.overrideRestoreStrategies})),t},t.prototype.hasOverrides=function(){return this.overrideRestoreStrategies.length>0},t}()},277:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=s(89),r=function(){function t(){}return t.prototype.build=function(){return new n.default("All")},t}();e.default=r},200:function(t,e,s){"use strict";var n,r=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s])},n(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function s(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(s.prototype=e.prototype,new s)});Object.defineProperty(e,"__esModule",{value:!0}),e.MessageIdRestoreStrategy=void 0;var i=s(89),o=function(){function t(){}return t.prototype.withId=function(t){return this.id=t,this},t.prototype.build=function(){return new a(this.id)},t}();e.default=o;var a=function(t){function e(e){var s=t.call(this,"message_id")||this;return s.id=e,s}return r(e,t),e}(i.default);e.MessageIdRestoreStrategy=a},89:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s=function(t){this.strategy=t};e.default=s},120:(t,e,s)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=s(277),r=s(200),i=s(678),o=function(){function t(){}return t.all=function(){return new n.default},t.messageId=function(){return new r.default},t.timestamp=function(){return new i.default},t}();e.default=o},678:function(t,e,s){"use strict";var n,r=this&&this.__extends||(n=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s])},n(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function s(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(s.prototype=e.prototype,new s)});Object.defineProperty(e,"__esModule",{value:!0}),e.TimestampRestoreStrategy=void 0;var i=s(89),o=function(){function t(){}return t.prototype.withT=function(t){return this.t=t,this},t.prototype.build=function(){return new a(this.t)},t}();e.default=o;var a=function(t){function e(e){var s=t.call(this,"Timestamp")||this;return s.t=e,s}return r(e,t),e}(i.default);e.TimestampRestoreStrategy=a},213:(t,e,s)=>{var n=s(174);t.exports=function(t,e,s){return(e=n(e))in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t},t.exports.__esModule=!0,t.exports.default=t.exports},662:(t,e,s)=>{var n=s(114).default;t.exports=function(t,e){if("object"!=n(t)||!t)return t;var s=t[Symbol.toPrimitive];if(void 0!==s){var r=s.call(t,e||"default");if("object"!=n(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)},t.exports.__esModule=!0,t.exports.default=t.exports},174:(t,e,s)=>{var n=s(114).default,r=s(662);t.exports=function(t){var e=r(t,"string");return"symbol"==n(e)?e:e+""},t.exports.__esModule=!0,t.exports.default=t.exports},114:t=>{function e(s){return t.exports=e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},t.exports.__esModule=!0,t.exports.default=t.exports,e(s)}t.exports=e,t.exports.__esModule=!0,t.exports.default=t.exports}},e={};function s(n){var r=e[n];if(void 0!==r)return r.exports;var i=e[n]={exports:{}};return t[n].call(i.exports,i,i.exports,s),i.exports}s.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return s.d(e,{a:e}),e},s.d=(t,e)=>{for(var n in e)s.o(e,n)&&!s.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),s.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n={};return(()=>{"use strict";s.r(n),s.d(n,{Duplexer:()=>K});var t=s(213),e=s.n(t);class r{constructor(){e()(this,"_callbacks",void 0)}on(t,e){return this._on(t,e)}addEventListener(t,e){return this._on(t,e)}once(t,e){function s(){this.off(t,s);for(var n=arguments.length,r=new Array(n),i=0;i<n;i++)r[i]=arguments[i];e.apply(this,r)}return s.fn=e,this.on(t,s),this}off(t,e){return this._off(t,e)}removeEventListener(t,e){return this._off(t,e)}removeListener(t){return this._off(t)}removeAllListeners(){return this._off()}emit(t){this._callbacks=this._callbacks||{};let e=this._callbacks["$"+t];if(e){e=e.slice(0);for(var s=arguments.length,n=new Array(s>1?s-1:0),r=1;r<s;r++)n[r-1]=arguments[r];for(let t=0,s=e.length;t<s;++t)e[t].apply(this,n)}return this}listeners(t){return this._callbacks=this._callbacks||{},this._callbacks["$"+t]||[]}hasListeners(t){return!!this.listeners(t).length}_on(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this}_off(t,e){if(this._callbacks=this._callbacks||{},!t&&!e)return this._callbacks={},this;const s=this._callbacks["$"+t];if(!s)return this;if(!e)return delete this._callbacks["$"+t],this;let n;for(let t=0;t<s.length;t++)if(n=s[t],n===e||n.fn===e){s.splice(t,1);break}return 0===s.length&&delete this._callbacks["$"+t],this}}var i=s(102);class o{constructor(){e()(this,"_promise",void 0),e()(this,"_resolve",void 0),e()(this,"_reject",void 0),this._promise=new Promise(((t,e)=>{this._resolve=t,this._reject=e}))}resolve(t){this._resolve(t)}reject(t){this._reject(t)}get promise(){return this._promise}}var a=function(t){return t[t.CLOSED=0]="CLOSED",t[t.OPENING=1]="OPENING",t[t.OPEN=2]="OPEN",t}(a||{});const c=a;var h=function(t){return t[t.SUBSCRIBED=0]="SUBSCRIBED",t[t.UNSUBSCRIBED=1]="UNSUBSCRIBED",t[t.SUBSCRIBING=2]="SUBSCRIBING",t}(h||{});class l extends r{constructor(t,s,n,r){super(),e()(this,"name",void 0),e()(this,"resourceId",void 0),e()(this,"virtualSocket",void 0),e()(this,"info",void 0),e()(this,"restore",void 0),e()(this,"subscribingState",h.UNSUBSCRIBED),this.name=s,this.virtualSocket=t,this.resourceId=n,this.info=r}setMessageIdRestore(t){return this.restore=i.v8.messageId().withId(t).build(),this.restore}async subscribe(t){void 0===t&&(t={}),this.subscribingState!==h.SUBSCRIBED?this.subscribingState!==h.SUBSCRIBING&&(this.subscribingState=h.SUBSCRIBING,await this.sendSubscribe(t)):setTimeout((()=>this.emitSubscriptionSucceeded(!0)),0)}setUnsubscribe(){this.subscribingState=h.UNSUBSCRIBED}async sendSubscribe(t){const e=await this.virtualSocket.send({type:"subscribe",channel:this.name,resourceId:this.resourceId,auth:"",restore:t.restoreStrategy||this.restore,info:this.info});"error"===e.type?this.emit("@duplexer:subscription_failed",e):(this.subscribingState=h.SUBSCRIBED,this.emitSubscriptionSucceeded(e.isSynced))}async unsubscribe(){await this.virtualSocket.send({type:"unsubscribe",channel:this.name,resourceId:this.resourceId}),this.subscribingState=h.UNSUBSCRIBED,this.emit("@duplexer:unsubscribe_succeeded")}send(t,e){return this.virtualSocket.send({type:"client_message",channel:this.name,resourceId:this.resourceId,event:t,payload:e},{affectState:!1})}emitSubscriptionSucceeded(t){this.emit("@duplexer:subscription_succeeded",{isSynced:t})}}class u{constructor(t){this.virtualSocket=t,e()(this,"channelsList",[])}add(t,e,s){const n=this.find(t,e);if(n)return n;const r=new l(this.virtualSocket,t,e,s);return this.channelsList.push(r),r}remove(t,e){const s=this.find(t,e);return this.channelsList=this.channelsList.filter((s=>s.name!==t||s.resourceId!==e)),s}find(t,e){return this.channelsList.find((s=>s.name===t&&s.resourceId===e))}all(){return this.channelsList}subscribeAll(){this.all().forEach((t=>t.subscribe()))}setUnsubscribeAll(){this.all().forEach((t=>t.setUnsubscribe()))}}function d(t,e,s){return t.on(e,s),{destroy:()=>t.off(e,s)}}const p="@user-inbox";class f extends r{constructor(t,s){let{appDefId:n,apiKey:r}=s;super(),this.duplexer=t,e()(this,"channels",void 0),e()(this,"appDefId",void 0),e()(this,"acks",{}),e()(this,"ids",1),e()(this,"connected",!1),e()(this,"sendBuffer",[]),e()(this,"socketListeners",[]),this.channels=new u(this),this.appDefId=n||r,this.restoreState(),this.listen(),this.open()}subscribe(t,e){void 0===e&&(e={});const s=this.channels.add(t,e.resourceId,e.info);return s.subscribe(e),s}subscribeToUserChannel(){return this.subscribe(p)}unsubscribe(t,e){this.channels.remove(t,e).unsubscribe()}unsubscribeFromUserChannel(){this.unsubscribe(p)}open(){const t=this.duplexer.connection.readyState;t===c.CLOSED?this.duplexer.connection.connect():t===c.OPEN&&setTimeout((()=>this.onConnect()),0)}disconnect(){this.send({type:"disconnect"}),this.socketListeners.forEach((t=>t.destroy())),this.socketListeners=[],this.onClose(),this.duplexer.closeVirtualSocket(this)}send(t,e){return new Promise((s=>{if(this.connected){const n=this.issueAckId();this.acks[n]=s,t.id=n,this.packet(t,e)}else this.sendBuffer.push({message:t,resolve:s})}))}whenConnected(){return new Promise((t=>{this.duplexer.connection.readyState===c.OPEN?t():this.once("@duplexer:connected",t)}))}onClose(t){this.restoreState(),this.emit("@duplexer:disconnected",t)}listen(){this.socketListeners=[d(this.duplexer,"open",this.onConnect.bind(this)),d(this.duplexer,"packet",this.onPacket.bind(this)),d(this.duplexer,"close",this.onClose.bind(this)),d(this.duplexer.connection,"connect_error",this.onConnectError.bind(this))]}onConnectError(t){this.emit("@duplexer:connect_error",t)}onPacket(t){if(t.ns===this.appDefId)switch(t.type){case"ack":case"error":this.onAck(t);break;case"message":this.onMessage(t)}}onConnect(){this.channels.subscribeAll(),this.connected=!0,this.emit("@duplexer:connected"),this.emitBuffered()}onMessage(t){const e=this.channels.find(t.channel,t.resourceId);if(void 0!==e){const s=e.setMessageIdRestore(t.id),n=(new i.AN).withNs(this.appDefId).withChannelName(e.name).withRestoreStrategy(s).build();this.duplexer.addRestoreOverride(n);try{e.emit(t.event,t.payload,function(t){let{user:e,publisher:s}=t;return{user:e,publisher:s}}(t))}catch{}}}onAck(t){const e=this.acks[t.id];"function"==typeof e&&(e(t),delete this.acks[t.id])}packet(t,e){t.ns=this.appDefId,this.duplexer.packet(t,e)}emitBuffered(){this.sendBuffer.forEach((t=>{const{message:e,resolve:s}=t;this.send(e).then(s)})),this.sendBuffer=[]}issueAckId(){return(this.ids++).toString()}restoreState(){this.connected=!1,this.channels.setUnsubscribeAll(),this.sendBuffer=[],this.acks={}}}class v{constructor(t){e()(this,"_transportsManager",void 0),e()(this,"_network",void 0),this._transportsManager=t.transportsManager,this._network=t.network}get network(){return this._network}get transportsManager(){return this._transportsManager}}class m extends r{constructor(){super(),this.listenConnectionStateChanges()}connectionIsOnline(){this.emit("online")}}class y extends m{listenConnectionStateChanges(){"undefined"!=typeof window&&window.addEventListener("online",(()=>this.connectionIsOnline()))}}class b extends r{constructor(t){super(),e()(this,"keepAlive",void 0),e()(this,"payload",void 0),e()(this,"readyState",c.CLOSED),e()(this,"sessionId",void 0),this.restoreState(),this.keepAlive=t.keepAlive}get keepAliveEnabled(){return this.keepAlive}send(t,e){this.write(t,e)}updatePayload(t){this.payload=t}close(t){const e=t?this.transportError(t):void 0;this.closeClient(),this.onTransportClose(e)}transportError(t){return{...t,transport:this.name}}onData(t){Array.isArray(t)?t.forEach((t=>this.handlePacket(t))):this.handlePacket(t)}onTransportClose(t){this.readyState!==c.CLOSED?(this.restoreState(),this.emit("close",t)):this.emit("connect_error",t)}restoreState(){this.readyState=c.CLOSED,this.sessionId=""}handlePacket(t){if("connection_established"===t.type)this.sessionId=t.sessionId,this.readyState=c.OPEN,this.emit("open",t);else this.emit("packet",t)}}async function g(t,e){const s=new URLSearchParams;if(t){const e=await t.getInstance();s.append("v","2"),s.append("instance",e)}return e&&s.append("siteRevision",e),s}function w(t,e){const s=e.toString();return`${t}${""===s?"":`?${s}`}`}class S extends Error{constructor(t,e){super(t),this.reason=t,this.response=e,Object.setPrototypeOf(this,S.prototype)}getStatus(){return this.response&&this.response.status||-1}}function k(t){return"canceled"===t.reason}async function _(t,e,s){var n;void 0===s&&(s={});const r={...s.headers};void 0!==e&&(r["Content-Type"]="application/json;charset=utf-8");const i=function(t){const e="undefined"!=typeof window&&window.document&&window.document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):void 0}("XSRF-TOKEN");void 0!==i&&(r["X-XSRF-TOKEN"]=i);const o={method:"POST",headers:r,body:void 0===e?null:JSON.stringify(e),signal:null==(n=s.cancelToken)?void 0:n.signal,credentials:s.withCredentials?"include":"same-origin"};let a;try{a=await fetch(t,o)}catch(t){if("AbortError"===t.name)throw new S("canceled");throw new S("network error")}const c=a.status;let h;try{h=await a.text()}catch(t){throw new S("network error",{data:void 0,status:c})}const l={data:function(t){try{return JSON.parse(t)}catch{return t}}(h),status:c};if(!function(t){return t>=200&&t<300}(c))throw new S("server error",l);return l}function T(t){return(null==t||null==t.getHeaders?void 0:t.getHeaders())??{}}var C=s(158);class O extends b{constructor(t,s,n){void 0===s&&(s=null),super({keepAlive:!0}),this.url=t,this.instanceUpdater=s,this.siteRevision=n,e()(this,"ws",void 0)}static isSupported(){return"undefined"!=typeof WebSocket}get name(){return"websocket"}async open(){const t=await g(this.instanceUpdater,this.siteRevision),e=w(this.url,t),s=void 0!==C&&"true"===C.env.DUPLEXER_NODE_ENV?{headers:(n=this.instanceUpdater,{"x-wix-artifact-id":"com.wixpress.infra.wix-duplexer-sockets-server",...T(n)})}:void 0;var n;this.closeClient(),this.ws=new WebSocket(e,s),this.listen()}closeClient(){this.ws&&(this.cleanWebSocketHooks(),this.ws.close(1e3))}write(t){const e=JSON.stringify(t);this.ws.send(e)}listen(){this.ws.onclose=t=>{const e=!t.wasClean,s=this.transportError({status:t.code,message:t.reason,recoverable:e});this.cleanWebSocketHooks(),this.onTransportClose(s)},this.ws.onmessage=t=>{const e=JSON.parse(t.data);this.onData(e)},this.ws.onerror=()=>{}}cleanWebSocketHooks(){this.ws&&(this.ws.onmessage=()=>{},this.ws.onclose=()=>{})}}const E={};function x(){const t=new o,e=new AbortController;return{cancel:()=>{e.abort(),t.resolve(E)},token:{promise:t.promise,signal:e.signal}}}class I extends b{constructor(t,s,n){void 0===s&&(s=null),super({keepAlive:!1}),this.baseUrl=t,this.instanceUpdater=s,this.siteRevision=n,e()(this,"commandsCancelTokens",[]),e()(this,"pollCancelToken",void 0),this.baseUrl=this.baseUrl.replace(/\/+$/,"")}get name(){return"http_long_polling"}async open(){await this.poll()}closeClient(){this.commandsCancelTokens.forEach((t=>t.cancel())),this.abortOngoingPollInterval()}async write(t,e){let{affectState:s=!0}=void 0===e?{}:e;try{const e=x();this.commandsCancelTokens.push(e);const n=await this.buildUrl("http-command"),{data:r}=await _(n,t,{cancelToken:e.token,headers:T(this.instanceUpdater)});this.removeCancelToken(e),this.onData(r),s&&this.startPollInterval()}catch(t){k(t)||this.closeOnTransportFailure(t)}}abortOngoingPollInterval(){this.pollCancelToken&&this.pollCancelToken.cancel(),this.pollCancelToken=null}async startPollInterval(){if(this.abortOngoingPollInterval(),this.readyState===c.OPEN){const{continuable:t}=await this.poll();t&&this.startPollInterval()}}async poll(){const t=await this.buildUrl("http");this.pollCancelToken=x();const e=_(t,this.payload,{cancelToken:this.pollCancelToken.token,headers:T(this.instanceUpdater)});try{const t=await async function(t){try{const{data:e}=await t;return{continuable:!0,data:e}}catch(t){if(k(t))return{continuable:!1};if(function(t){return 504===t.getStatus()}(t))return{continuable:!0};throw t}}(e);return t.data&&this.onData(t.data),t}catch(t){return this.closeOnTransportFailure(t),{continuable:!1}}}async buildUrl(t){const e=await g(this.instanceUpdater,this.siteRevision);this.sessionId&&e.append("sessionId",this.sessionId);const s=w(t,e);return`${this.baseUrl}/${s}`}closeOnTransportFailure(t){const e=t.getStatus(),s=this.transportError({status:e,message:t.message,recoverable:(n=e,[401].every((t=>t!==n)))});var n;this.onTransportClose(s)}removeCancelToken(t){const e=this.commandsCancelTokens.indexOf(t);this.commandsCancelTokens.splice(e,1)}}class R extends r{constructor(t){super(),this.strategies=t,e()(this,"_transport",void 0),e()(this,"disposables",[]),e()(this,"cancelToken",void 0),e()(this,"readyState",c.CLOSED)}get transport(){return this._transport}async connect(){let t;if(this.readyState!==c.CLOSED)return{success:!1};this.cancelToken=new o,this.readyState=c.OPENING,this.listenAndEmitConnectErrorsInAllTransportsOnConnecting();try{t=await this.connectToFirstToRespondStrategy()}catch(t){return{success:!1}}return this.cancelToken=null,this.removeListeners(),this.abortStrategiesWithNoOpenTransport(),this.listenEventsOfActiveTransport(),function(t){return{success:!0,connectionEstablishedPacket:t}}(t)}close(){this.isOpen()?this.transport.close():this.isOpening()&&(this.cancelToken&&this.cancelToken.reject(),this.onClose(),this.strategies.forEach((t=>t.abort())))}isOpen(){return this.readyState===c.OPEN}isClosed(){return this.readyState===c.CLOSED}isOpening(){return this.readyState===c.OPENING}async connectToFirstToRespondStrategy(){const{transport:t,connectionEstablishedPacket:e}=await Promise.race([...this.strategies.map((t=>t.connect())),this.cancelToken.promise]);return this._transport=t,this.readyState=c.OPEN,e}onClose(t){this.readyState=c.CLOSED,this._transport=null,this.cancelToken=null,this.removeListeners(),this.emit("close",t)}abortStrategiesWithNoOpenTransport(){this.strategies.filter((t=>t.transport.readyState!==c.OPEN)).forEach((t=>t.abort()))}listenAndEmitConnectErrorsInAllTransportsOnConnecting(){this.disposables=this.strategies.map((t=>d(t,"connect_error",(t=>{t.recoverable?this.emit("connect_error",t):this.close()}))))}listenEventsOfActiveTransport(){this.disposables=[d(this.transport,"close",(t=>{this.onClose(t)})),d(this.transport,"packet",(t=>{this.onData(t)}))]}removeListeners(){this.disposables.forEach((t=>t.destroy())),this.disposables=[]}onData(t){switch(t.type){case"message":case"ack":case"error":case"UpdateRestoreStrategyOverrides":this.emit("message",t)}}}var P=s(830),D=s.n(P);class U extends r{constructor(t,s){super(),this._transport=t,this.opts=s,e()(this,"connectDelayTimeoutId",void 0),e()(this,"disposables",[]),e()(this,"backoff",new(D())({max:6e4})),e()(this,"cancelToken",void 0)}get transport(){return this._transport}async connect(){var t;this.cancelToken=new o,this.opts.delay>0&&await Promise.race([(t=this.opts.delay,new Promise((e=>setTimeout(e,t)))),this.cancelToken.promise]);const e=await Promise.race([this.connectWithBackoff(),this.cancelToken.promise]);return{transport:this.transport,connectionEstablishedPacket:e}}abort(){clearTimeout(this.connectDelayTimeoutId),this.cancelToken&&this.cancelToken.reject(),this.cancelToken=null,this.removeListeners(),this.backoff.reset(),this.transport.close()}async connectWithBackoff(){return this.backoff.reset(),new Promise((t=>{this.disposables=[d(this.transport,"open",(e=>{this.removeListeners(),t(e)})),d(this.transport,"connect_error",(t=>{clearTimeout(this.connectDelayTimeoutId),t.recoverable&&(this.connectDelayTimeoutId=setTimeout((()=>this.transport.open()),this.backoff.duration())),this.emit("connect_error",t)}))],this.transport.open()}))}removeListeners(){this.disposables.forEach((t=>t.destroy())),this.disposables=[]}}class N{constructor(t){this.transport=t,e()(this,"opts",{delay:0,backoff:0})}withDelay(t){return this.opts.delay=t,this}withBackoff(t){return this.opts.backoff=t,this}build(){return new U(this.transport,this.opts)}}function B(t){return new N(t)}const A=150;function M(t){return B(t).withBackoff(A).build()}var L=s(158);function j(t){var e;let s=[];const n=function(t){const e=`${$()?"wss://":"ws://"}${t.baseUrl}`;return new O(e,t.instanceUpdater,t.siteRevision)}(t),r=function(t){const e=(s=t.baseUrl,`${$()?"https://":"http://"}${s}`);var s;return new I(e,t.instanceUpdater,t.siteRevision)}(t),i=void 0!==L&&"string"==typeof(null==(e=L.env)?void 0:e.DUPLEXER_FORCED_TRANSPORT)?L.env.DUPLEXER_FORCED_TRANSPORT:void 0;var o;return s="websocket"===i?[M(n)]:"http"===i?[M(r)]:O.isSupported()?[M(n),(o=r,B(o).withDelay(4e3).withBackoff(A).build())]:[M(r)],new R(s)}function $(){return"undefined"!=typeof self&&"http:"!==self.location.protocol}class F{constructor(t,s){this.timeout=t,this.handler=s,e()(this,"timer",void 0)}schedule(){this.timer=setTimeout(this.handler,this.timeout)}cancel(){clearTimeout(this.timer)}}class W extends r{constructor(t,s){super(),this.transport=t,this.opts=s,e()(this,"timeoutTimer",void 0),e()(this,"intervalTimer",void 0),e()(this,"started",!1),d(this.transport,"packet",(()=>this.started&&this.schedule()))}schedule(){this.dispose(),this.started=!0,this.intervalTimer=new F(this.opts.pingInterval,(()=>this.sendHeartbeat())),this.intervalTimer.schedule()}dispose(){this.started=!1,this.intervalTimer&&this.intervalTimer.cancel(),this.timeoutTimer&&this.timeoutTimer.cancel()}sendHeartbeat(){this.ping(),this.timeoutTimer=new F(this.opts.pingTimeout,(()=>{this.transport.close({status:0,message:"keep alive has not recieved pong in defined timeframe",recoverable:!0})})),this.timeoutTimer.schedule()}ping(){this.transport.send({type:"ping"},{affectState:!1})}}class G extends Error{constructor(t){super(t),this.name=this.constructor.name}}class H extends r{constructor(t){super(),this.opts=t,e()(this,"keepAlive",void 0),e()(this,"autoConnect",void 0),e()(this,"environment",void 0),e()(this,"timeline",void 0),e()(this,"autoConnectEnabled",void 0),this.environment=t.environment,this.timeline=t.timeline,this.autoConnectEnabled=t.autoConnectEnabed,this.listenNeworkStateChanges(),this.listenTransportEvents()}get sessionId(){return this.transport.sessionId}updatePayload(t){this.transport.updatePayload(t)}send(t,e){this.transport.send(t,e)}close(){this.autoConnect=!1,this.environment.transportsManager.close(),this.dispose()}get readyState(){return this.environment.transportsManager.readyState}async connect(){this.autoConnect=this.autoConnectEnabled;const t=await this.environment.transportsManager.connect();t.success&&(this.keepAlive=new W(this.transport,this.opts),this.transport.keepAliveEnabled&&this.keepAlive.schedule(),this.timeline.log({type:"connect_succeeded",data:{transport:this.transport.name}}),this.emit("open",t.connectionEstablishedPacket))}isClosed(){return this.environment.transportsManager.isClosed()}isOpen(){return this.environment.transportsManager.isOpen()}get transport(){return function(t,e){if(void 0===t)throw new G(e)}(this.environment.transportsManager.transport,"transport was not initialized yet"),this.environment.transportsManager.transport}shouldReconnect(t){return this.autoConnect&&(null==t?void 0:t.recoverable)}listenNeworkStateChanges(){this.environment.network.on("online",(()=>{this.autoConnect&&!this.isOpen()&&(this.timeline.log({type:"network_state_changed",data:"online"}),this.close(),this.connect())}))}listenTransportEvents(){d(this.environment.transportsManager,"connect_error",(t=>{this.timeline.log({type:"connect_error",data:t}),this.emit("connect_error",t)})),d(this.environment.transportsManager,"close",(t=>{this.dispose(),this.maybeLogDisconnectionError(t),this.shouldReconnect(t)&&this.connect(),this.emit("close",t)})),d(this.environment.transportsManager,"message",(t=>{this.emit("message",t)}))}dispose(){this.keepAlive&&this.keepAlive.dispose()}maybeLogDisconnectionError(t){(function(t){return void 0!==t&&void 0!==t.transport})(t)&&this.timeline.log({type:"disconnect_error",data:t})}}class X{log(){}}function J(){return new X}class K extends r{constructor(t,s){let{pingInterval:n=3e4,pingTimeout:r=5e3,timeline:a=J(),autoConnect:c=!0,instanceUpdater:h,siteRevision:l}=void 0===s?{}:s;super(),e()(this,"virtualSockets",[]),e()(this,"environment",void 0),e()(this,"payloadBuilder",new i.Du),e()(this,"connectionServerTimeDeferred",new o),e()(this,"connection",void 0),this.environment="string"==typeof t?function(t){const e=new y,s=j({baseUrl:t.url,instanceUpdater:t.instanceUpdater,siteRevision:t.siteRevision});return new v({transportsManager:s,network:e})}({url:t,instanceUpdater:h,siteRevision:l}):t,this.connection=new H({pingTimeout:r,pingInterval:n,environment:this.environment,timeline:a,autoConnectEnabed:c}),this.listen()}triggerInstanceChanged(){this.close(),this.connection.connect()}connect(t){const e=new f(this,t);return this.virtualSockets.push(e),e}getConnectionServerTime(){return this.connectionServerTimeDeferred.promise}close(){this.connection.close()}addRestoreOverride(t){const e=this.payloadBuilder.withOverrideRestoreStrategy(t).build();this.connection.updatePayload(e)}closeVirtualSocket(t){this.virtualSockets=this.virtualSockets.filter((e=>e!==t)),0===this.virtualSockets.length&&this.close()}packet(t,e){this.connection.send(t,e)}listen(){this.connection.on("open",(t=>{const e=i.v8.timestamp().withT(t.t).build();this.payloadBuilder.withDefaultRestoreStrategy(e),this.connection.updatePayload(this.payloadBuilder.build()),this.emit("open"),this.connectionServerTimeDeferred.resolve(t.t)})),this.connection.on("message",(t=>{if("UpdateRestoreStrategyOverrides"===t.type)this.overwriteRestoreOverrides(t.overrides);else this.emit("packet",t)})),this.connection.on("close",this.onClose.bind(this))}onClose(t){this.emit("close",t),this.connectionServerTimeDeferred=new o}overwriteRestoreOverrides(t){this.payloadBuilder=new i.Du,t.forEach((t=>this.payloadBuilder.withOverrideRestoreStrategy(t)));const e=this.payloadBuilder.build();this.connection.updatePayload(e)}}})(),n})()));
|
|
2
|
+
//# sourceMappingURL=duplexer.bundle.min.js.map
|