pingerchips-js 1.0.0-a
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/.editorconfig +14 -0
- package/.github/ISSUE_TEMPLATE.md +11 -0
- package/.github/PULL_REQUEST_TEMPLATE.md +14 -0
- package/.github/dependabot.yml +14 -0
- package/.github/stale.yml +26 -0
- package/.github/workflows/release.yml +112 -0
- package/.github/workflows/release_pr.yml +43 -0
- package/.github/workflows/run-tests.yml +62 -0
- package/.gitmodules +3 -0
- package/.prettierrc +2 -0
- package/CHANGELOG.md +924 -0
- package/LICENCE +19 -0
- package/Makefile +78 -0
- package/README.md +707 -0
- package/bower.json +28 -0
- package/dist/node/pusher.js +10870 -0
- package/dist/node/pusher.js.map +1 -0
- package/dist/react-native/pusher.js +9 -0
- package/dist/react-native/pusher.js.map +1 -0
- package/dist/web/json2.js +486 -0
- package/dist/web/json2.min.js +1 -0
- package/dist/web/pusher-with-encryption.js +7009 -0
- package/dist/web/pusher-with-encryption.js.map +1 -0
- package/dist/web/pusher-with-encryption.min.js +9 -0
- package/dist/web/pusher-with-encryption.min.js.map +1 -0
- package/dist/web/pusher.js +4587 -0
- package/dist/web/pusher.js.map +1 -0
- package/dist/web/pusher.min.js +9 -0
- package/dist/web/pusher.min.js.map +1 -0
- package/dist/web/sockjs.js +2435 -0
- package/dist/web/sockjs.min.js +89 -0
- package/dist/worker/pusher-with-encryption.worker.js +6622 -0
- package/dist/worker/pusher-with-encryption.worker.js.map +1 -0
- package/dist/worker/pusher-with-encryption.worker.min.js +9 -0
- package/dist/worker/pusher-with-encryption.worker.min.js.map +1 -0
- package/dist/worker/pusher.worker.js +4200 -0
- package/dist/worker/pusher.worker.js.map +1 -0
- package/dist/worker/pusher.worker.min.js +9 -0
- package/dist/worker/pusher.worker.min.js.map +1 -0
- package/index.d.ts +29 -0
- package/integration_tests_server/index.js +176 -0
- package/integration_tests_server/package-lock.json +1177 -0
- package/integration_tests_server/package.json +15 -0
- package/node.js +1 -0
- package/package.json +70 -0
- package/pusher-with-encryption/index.js +1 -0
- package/react-native/index.d.ts +29 -0
- package/react-native/index.js +1 -0
- package/spec/config/jasmine/helpers/reporter.js +14 -0
- package/spec/config/jasmine/integration.json +13 -0
- package/spec/config/jasmine/unit.json +13 -0
- package/spec/config/jasmine/webpack.integration.js +33 -0
- package/spec/config/jasmine/webpack.unit.js +30 -0
- package/spec/config/karma/available_browsers.json +4957 -0
- package/spec/config/karma/config.ci.js +25 -0
- package/spec/config/karma/config.common.js +50 -0
- package/spec/config/karma/config.integration.js +26 -0
- package/spec/config/karma/config.unit.js +10 -0
- package/spec/config/karma/config.worker.js +34 -0
- package/spec/config/karma/integration.js +24 -0
- package/spec/config/karma/unit.js +20 -0
- package/spec/javascripts/helpers/mocks.js +274 -0
- package/spec/javascripts/helpers/node/integration.js +33 -0
- package/spec/javascripts/helpers/node/mock-dom-dependencies.ts +1 -0
- package/spec/javascripts/helpers/pusher_integration.js +1 -0
- package/spec/javascripts/helpers/pusher_integration_class.ts +12 -0
- package/spec/javascripts/helpers/timers/promises.js +9 -0
- package/spec/javascripts/helpers/waitsFor.js +37 -0
- package/spec/javascripts/helpers/web/integration.js +44 -0
- package/spec/javascripts/helpers/worker/mock-dom-dependencies.js +1 -0
- package/spec/javascripts/integration/core/cluster_config_spec.js +153 -0
- package/spec/javascripts/integration/core/falling_back_spec.js +195 -0
- package/spec/javascripts/integration/core/pusher_spec/index.js +68 -0
- package/spec/javascripts/integration/core/pusher_spec/test_builder.js +715 -0
- package/spec/javascripts/integration/core/timeout_configuration_spec.js +200 -0
- package/spec/javascripts/integration/core/transport_lists_spec.js +103 -0
- package/spec/javascripts/integration/index.node.js +12 -0
- package/spec/javascripts/integration/index.web.js +63 -0
- package/spec/javascripts/integration/index.worker.js +13 -0
- package/spec/javascripts/integration/web/dom/jsonp_spec.js +97 -0
- package/spec/javascripts/integration/web/dom/script_request_spec.js +90 -0
- package/spec/javascripts/polyfills/index.js +105 -0
- package/spec/javascripts/unit/core/channels/channel_spec.js +355 -0
- package/spec/javascripts/unit/core/channels/channels_spec.js +94 -0
- package/spec/javascripts/unit/core/channels/encrypted_channel_spec.js +343 -0
- package/spec/javascripts/unit/core/channels/presence_channel_spec.js +553 -0
- package/spec/javascripts/unit/core/channels/private_channel_spec.js +182 -0
- package/spec/javascripts/unit/core/config_spec.js +507 -0
- package/spec/javascripts/unit/core/connection/connection_manager_spec.js +656 -0
- package/spec/javascripts/unit/core/connection/connection_spec.js +286 -0
- package/spec/javascripts/unit/core/connection/handshake_spec.js +160 -0
- package/spec/javascripts/unit/core/connection/protocol_spec.js +420 -0
- package/spec/javascripts/unit/core/defaults_spec.js +26 -0
- package/spec/javascripts/unit/core/events_dispatcher_spec.js +385 -0
- package/spec/javascripts/unit/core/http/http_polling_socket_spec.js +60 -0
- package/spec/javascripts/unit/core/http/http_request_spec.js +185 -0
- package/spec/javascripts/unit/core/http/http_socket_spec.js +370 -0
- package/spec/javascripts/unit/core/http/http_streaming_socket_spec.js +56 -0
- package/spec/javascripts/unit/core/http/http_xhr_request_spec.js +164 -0
- package/spec/javascripts/unit/core/logger_spec.js +133 -0
- package/spec/javascripts/unit/core/pusher_spec.js +613 -0
- package/spec/javascripts/unit/core/pusher_with_encryption_spec.js +18 -0
- package/spec/javascripts/unit/core/strategies/best_connected_ever_strategy_spec.js +104 -0
- package/spec/javascripts/unit/core/strategies/delayed_strategy_spec.js +95 -0
- package/spec/javascripts/unit/core/strategies/first_connected_strategy_spec.js +68 -0
- package/spec/javascripts/unit/core/strategies/if_strategy_spec.js +165 -0
- package/spec/javascripts/unit/core/strategies/sequential_strategy_spec.js +213 -0
- package/spec/javascripts/unit/core/strategies/transport_strategy_spec.js +250 -0
- package/spec/javascripts/unit/core/strategies/websocket_prioritized_cached_strategy_spec.js +400 -0
- package/spec/javascripts/unit/core/timeline/timeline_spec.js +153 -0
- package/spec/javascripts/unit/core/transports/assistant_to_the_transport_manager_spec.js +223 -0
- package/spec/javascripts/unit/core/transports/hosts_and_ports_spec.js +85 -0
- package/spec/javascripts/unit/core/transports/transport_connection_spec.js +585 -0
- package/spec/javascripts/unit/core/transports/transport_manager_spec.js +64 -0
- package/spec/javascripts/unit/core/user_spec.js +303 -0
- package/spec/javascripts/unit/core/utils/periodic_timer_spec.js +74 -0
- package/spec/javascripts/unit/core/utils/timers_spec.js +157 -0
- package/spec/javascripts/unit/core/utils/url_store_spec.js +14 -0
- package/spec/javascripts/unit/core/watchlist_spec.js +48 -0
- package/spec/javascripts/unit/core_with_runtime/auth/channel_authorizer_spec.js +137 -0
- package/spec/javascripts/unit/core_with_runtime/auth/deprecated_channel_authorizer_spec.js +48 -0
- package/spec/javascripts/unit/core_with_runtime/auth/user_authorizer_spec.js +128 -0
- package/spec/javascripts/unit/core_with_runtime/readme.md +5 -0
- package/spec/javascripts/unit/index.node.js +11 -0
- package/spec/javascripts/unit/index.web.js +12 -0
- package/spec/javascripts/unit/index.worker.js +11 -0
- package/spec/javascripts/unit/isomorphic/transports/hosts_and_ports_spec.js +82 -0
- package/spec/javascripts/unit/isomorphic/transports/transports_spec.js +202 -0
- package/spec/javascripts/unit/node/timeline_sender_spec.js +83 -0
- package/spec/javascripts/unit/web/dom/dependency_loader_spec.js +249 -0
- package/spec/javascripts/unit/web/dom/jsonp_request_spec.js +130 -0
- package/spec/javascripts/unit/web/dom/script_receiver_factory_spec.js +68 -0
- package/spec/javascripts/unit/web/http/http_xdomain_request_spec.js +222 -0
- package/spec/javascripts/unit/web/pusher_authorizer_spec.js +64 -0
- package/spec/javascripts/unit/web/timeline/timeline_sender_spec.js +131 -0
- package/spec/javascripts/unit/web/transports/hosts_and_ports_spec.js +127 -0
- package/spec/javascripts/unit/web/transports/transports_spec.js +444 -0
- package/spec/javascripts/unit/worker/channel_authorizer_spec.js +156 -0
- package/spec/javascripts/unit/worker/timeline_sender_spec.js +76 -0
- package/src/core/auth/auth_transports.ts +18 -0
- package/src/core/auth/channel_authorizer.ts +64 -0
- package/src/core/auth/deprecated_channel_authorizer.ts +58 -0
- package/src/core/auth/options.ts +78 -0
- package/src/core/auth/user_authenticator.ts +62 -0
- package/src/core/base64.ts +49 -0
- package/src/core/channels/channel.ts +163 -0
- package/src/core/channels/channel_table.ts +7 -0
- package/src/core/channels/channels.ts +85 -0
- package/src/core/channels/encrypted_channel.ts +149 -0
- package/src/core/channels/members.ts +80 -0
- package/src/core/channels/metadata.ts +5 -0
- package/src/core/channels/presence_channel.ts +113 -0
- package/src/core/channels/private_channel.ts +25 -0
- package/src/core/config.ts +189 -0
- package/src/core/connection/callbacks.ts +21 -0
- package/src/core/connection/connection.ts +160 -0
- package/src/core/connection/connection_manager.ts +371 -0
- package/src/core/connection/connection_manager_options.ts +14 -0
- package/src/core/connection/handshake/handshake_payload.ts +10 -0
- package/src/core/connection/handshake/index.ts +90 -0
- package/src/core/connection/protocol/action.ts +8 -0
- package/src/core/connection/protocol/message-types.ts +8 -0
- package/src/core/connection/protocol/protocol.ts +154 -0
- package/src/core/defaults.ts +66 -0
- package/src/core/errors.ts +69 -0
- package/src/core/events/callback.ts +6 -0
- package/src/core/events/callback_registry.ts +75 -0
- package/src/core/events/callback_table.ts +7 -0
- package/src/core/events/dispatcher.ts +84 -0
- package/src/core/http/ajax.ts +24 -0
- package/src/core/http/http_factory.ts +16 -0
- package/src/core/http/http_polling_socket.ts +24 -0
- package/src/core/http/http_request.ts +81 -0
- package/src/core/http/http_socket.ts +220 -0
- package/src/core/http/http_streaming_socket.ts +19 -0
- package/src/core/http/request_hooks.ts +9 -0
- package/src/core/http/socket_hooks.ts +11 -0
- package/src/core/http/state.ts +7 -0
- package/src/core/http/url_location.ts +6 -0
- package/src/core/logger.ts +53 -0
- package/src/core/options.ts +59 -0
- package/src/core/pusher-licence.js +7 -0
- package/src/core/pusher-with-encryption.js +1 -0
- package/src/core/pusher-with-encryption.ts +14 -0
- package/src/core/pusher.js +2 -0
- package/src/core/pusher.ts +249 -0
- package/src/core/reachability.ts +7 -0
- package/src/core/socket.ts +14 -0
- package/src/core/strategies/best_connected_ever_strategy.ts +81 -0
- package/src/core/strategies/delayed_strategy.ts +48 -0
- package/src/core/strategies/first_connected_strategy.ts +28 -0
- package/src/core/strategies/if_strategy.ts +34 -0
- package/src/core/strategies/sequential_strategy.ts +129 -0
- package/src/core/strategies/strategy.ts +8 -0
- package/src/core/strategies/strategy_builder.ts +67 -0
- package/src/core/strategies/strategy_options.ts +18 -0
- package/src/core/strategies/strategy_runner.ts +6 -0
- package/src/core/strategies/transport_strategy.ts +144 -0
- package/src/core/strategies/websocket_prioritized_cached_strategy.ts +157 -0
- package/src/core/timeline/level.ts +7 -0
- package/src/core/timeline/timeline.ts +90 -0
- package/src/core/timeline/timeline_sender.ts +33 -0
- package/src/core/timeline/timeline_transport.ts +11 -0
- package/src/core/transports/assistant_to_the_transport_manager.ts +104 -0
- package/src/core/transports/ping_delay_options.ts +7 -0
- package/src/core/transports/transport.ts +54 -0
- package/src/core/transports/transport_connection.ts +241 -0
- package/src/core/transports/transport_connection_options.ts +8 -0
- package/src/core/transports/transport_hooks.ts +16 -0
- package/src/core/transports/transport_manager.ts +52 -0
- package/src/core/transports/transports_table.ts +12 -0
- package/src/core/transports/url_scheme.ts +13 -0
- package/src/core/transports/url_schemes.ts +47 -0
- package/src/core/user.ts +186 -0
- package/src/core/util.ts +34 -0
- package/src/core/utils/collections.ts +353 -0
- package/src/core/utils/factory.ts +75 -0
- package/src/core/utils/flat_promise.ts +10 -0
- package/src/core/utils/timers/abstract_timer.ts +39 -0
- package/src/core/utils/timers/index.ts +39 -0
- package/src/core/utils/timers/scheduling.ts +11 -0
- package/src/core/utils/timers/timed_callback.ts +5 -0
- package/src/core/utils/url_store.ts +48 -0
- package/src/core/watchlist.ts +31 -0
- package/src/d.ts/constants/index.d.ts +5 -0
- package/src/d.ts/faye-websocket/faye-websocket.d.ts +21 -0
- package/src/d.ts/global/global.d.ts +1 -0
- package/src/d.ts/module/module.d.ts +12 -0
- package/src/d.ts/tweetnacl-util/index.d.ts +6 -0
- package/src/d.ts/window/events.d.ts +4 -0
- package/src/d.ts/window/sockjs.d.ts +3 -0
- package/src/d.ts/window/websocket.d.ts +4 -0
- package/src/d.ts/window/xmlhttprequest.d.ts +3 -0
- package/src/runtimes/interface.ts +59 -0
- package/src/runtimes/isomorphic/auth/xhr_auth.ts +90 -0
- package/src/runtimes/isomorphic/default_strategy.ts +155 -0
- package/src/runtimes/isomorphic/http/http.ts +32 -0
- package/src/runtimes/isomorphic/http/http_xhr_request.ts +35 -0
- package/src/runtimes/isomorphic/runtime.ts +62 -0
- package/src/runtimes/isomorphic/timeline/xhr_timeline.ts +50 -0
- package/src/runtimes/isomorphic/transports/transport_connection_initializer.ts +19 -0
- package/src/runtimes/isomorphic/transports/transports.ts +81 -0
- package/src/runtimes/node/net_info.ts +10 -0
- package/src/runtimes/node/runtime.ts +68 -0
- package/src/runtimes/react-native/net_info.ts +42 -0
- package/src/runtimes/react-native/runtime.ts +65 -0
- package/src/runtimes/web/auth/jsonp_auth.ts +51 -0
- package/src/runtimes/web/browser.ts +24 -0
- package/src/runtimes/web/default_strategy.ts +201 -0
- package/src/runtimes/web/dom/dependencies.ts +16 -0
- package/src/runtimes/web/dom/dependency_loader.ts +93 -0
- package/src/runtimes/web/dom/json2.js +486 -0
- package/src/runtimes/web/dom/jsonp_request.ts +52 -0
- package/src/runtimes/web/dom/script_receiver.ts +8 -0
- package/src/runtimes/web/dom/script_receiver_factory.ts +57 -0
- package/src/runtimes/web/dom/script_request.ts +85 -0
- package/src/runtimes/web/dom/sockjs/COPYING +11 -0
- package/src/runtimes/web/dom/sockjs/Changelog +147 -0
- package/src/runtimes/web/dom/sockjs/LICENSE-MIT-SockJS +19 -0
- package/src/runtimes/web/dom/sockjs/Makefile +109 -0
- package/src/runtimes/web/dom/sockjs/README.md +388 -0
- package/src/runtimes/web/dom/sockjs/VERSION-GEN +17 -0
- package/src/runtimes/web/dom/sockjs/bin/render.coffee +111 -0
- package/src/runtimes/web/dom/sockjs/bin/run_testling.sh +135 -0
- package/src/runtimes/web/dom/sockjs/lib/all.js +9 -0
- package/src/runtimes/web/dom/sockjs/lib/dom.js +185 -0
- package/src/runtimes/web/dom/sockjs/lib/dom2.js +280 -0
- package/src/runtimes/web/dom/sockjs/lib/eventemitter.js +57 -0
- package/src/runtimes/web/dom/sockjs/lib/heartbeater.js +70 -0
- package/src/runtimes/web/dom/sockjs/lib/index.js +41 -0
- package/src/runtimes/web/dom/sockjs/lib/info.js +117 -0
- package/src/runtimes/web/dom/sockjs/lib/json2.min.js +1 -0
- package/src/runtimes/web/dom/sockjs/lib/reventtarget.js +55 -0
- package/src/runtimes/web/dom/sockjs/lib/simpleevent.js +28 -0
- package/src/runtimes/web/dom/sockjs/lib/sockjs.js +288 -0
- package/src/runtimes/web/dom/sockjs/lib/test-hooks.js +16 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-iframe-eventsource.js +29 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-iframe-htmlfile.js +35 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-iframe-within.js +100 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-iframe-xhr-polling.js +30 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-iframe.js +103 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-jsonp-polling.js +106 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-jsonp-receiver.js +116 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-polling.js +44 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-receiver-eventsource.js +41 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-receiver-htmlfile.js +65 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-receiver-xhr.js +42 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-sender.js +138 -0
- package/src/runtimes/web/dom/sockjs/lib/trans-xhr.js +29 -0
- package/src/runtimes/web/dom/sockjs/lib/utils.js +297 -0
- package/src/runtimes/web/dom/sockjs/package.json +18 -0
- package/src/runtimes/web/dom/sockjs/version +1 -0
- package/src/runtimes/web/http/http.ts +8 -0
- package/src/runtimes/web/http/http_xdomain_request.ts +37 -0
- package/src/runtimes/web/net_info.ts +50 -0
- package/src/runtimes/web/runtime.ts +174 -0
- package/src/runtimes/web/timeline/jsonp_timeline.ts +34 -0
- package/src/runtimes/web/transports/transport_connection_initializer.ts +39 -0
- package/src/runtimes/web/transports/transports.ts +65 -0
- package/src/runtimes/worker/auth/fetch_auth.ts +69 -0
- package/src/runtimes/worker/net_info.ts +10 -0
- package/src/runtimes/worker/runtime.ts +75 -0
- package/src/runtimes/worker/timeline/fetch_timeline.ts +39 -0
- package/tsconfig.json +26 -0
- package/types/spec/javascripts/helpers/node/mock-dom-dependencies.d.ts +1 -0
- package/types/spec/javascripts/helpers/pusher_integration_class.d.ts +4 -0
- package/types/src/core/auth/auth_transports.d.ts +9 -0
- package/types/src/core/auth/channel_authorizer.d.ts +3 -0
- package/types/src/core/auth/deprecated_channel_authorizer.d.ts +18 -0
- package/types/src/core/auth/options.d.ts +48 -0
- package/types/src/core/auth/user_authenticator.d.ts +3 -0
- package/types/src/core/base64.d.ts +1 -0
- package/types/src/core/channels/channel.d.ts +23 -0
- package/types/src/core/channels/channel_table.d.ts +5 -0
- package/types/src/core/channels/channels.d.ts +12 -0
- package/types/src/core/channels/encrypted_channel.d.ts +15 -0
- package/types/src/core/channels/members.d.ts +14 -0
- package/types/src/core/channels/metadata.d.ts +4 -0
- package/types/src/core/channels/presence_channel.d.ts +13 -0
- package/types/src/core/channels/private_channel.d.ts +5 -0
- package/types/src/core/config.d.ts +31 -0
- package/types/src/core/connection/callbacks.d.ts +18 -0
- package/types/src/core/connection/connection.d.ts +16 -0
- package/types/src/core/connection/connection_manager.d.ts +50 -0
- package/types/src/core/connection/connection_manager_options.d.ts +11 -0
- package/types/src/core/connection/handshake/handshake_payload.d.ts +8 -0
- package/types/src/core/connection/handshake/index.d.ts +12 -0
- package/types/src/core/connection/protocol/action.d.ts +7 -0
- package/types/src/core/connection/protocol/message-types.d.ts +7 -0
- package/types/src/core/connection/protocol/protocol.d.ts +10 -0
- package/types/src/core/defaults.d.ts +26 -0
- package/types/src/core/errors.d.ts +28 -0
- package/types/src/core/events/callback.d.ts +5 -0
- package/types/src/core/events/callback_registry.d.ts +11 -0
- package/types/src/core/events/callback_table.d.ts +5 -0
- package/types/src/core/events/dispatcher.d.ts +14 -0
- package/types/src/core/http/ajax.d.ts +16 -0
- package/types/src/core/http/http_factory.d.ts +13 -0
- package/types/src/core/http/http_polling_socket.d.ts +3 -0
- package/types/src/core/http/http_request.d.ts +17 -0
- package/types/src/core/http/http_socket.d.ts +32 -0
- package/types/src/core/http/http_streaming_socket.d.ts +3 -0
- package/types/src/core/http/request_hooks.d.ts +6 -0
- package/types/src/core/http/socket_hooks.d.ts +8 -0
- package/types/src/core/http/state.d.ts +6 -0
- package/types/src/core/http/url_location.d.ts +5 -0
- package/types/src/core/logger.d.ts +11 -0
- package/types/src/core/options.d.ts +34 -0
- package/types/src/core/pusher-with-encryption.d.ts +5 -0
- package/types/src/core/pusher.d.ts +49 -0
- package/types/src/core/reachability.d.ts +5 -0
- package/types/src/core/socket.d.ts +12 -0
- package/types/src/core/strategies/best_connected_ever_strategy.d.ts +10 -0
- package/types/src/core/strategies/delayed_strategy.d.ts +15 -0
- package/types/src/core/strategies/first_connected_strategy.d.ts +8 -0
- package/types/src/core/strategies/if_strategy.d.ts +10 -0
- package/types/src/core/strategies/sequential_strategy.d.ts +16 -0
- package/types/src/core/strategies/strategy.d.ts +6 -0
- package/types/src/core/strategies/strategy_builder.d.ts +5 -0
- package/types/src/core/strategies/strategy_options.d.ts +16 -0
- package/types/src/core/strategies/strategy_runner.d.ts +5 -0
- package/types/src/core/strategies/transport_strategy.d.ts +15 -0
- package/types/src/core/strategies/websocket_prioritized_cached_strategy.d.ts +20 -0
- package/types/src/core/timeline/level.d.ts +6 -0
- package/types/src/core/timeline/timeline.d.ts +25 -0
- package/types/src/core/timeline/timeline_sender.d.ts +13 -0
- package/types/src/core/timeline/timeline_transport.d.ts +6 -0
- package/types/src/core/transports/assistant_to_the_transport_manager.d.ts +14 -0
- package/types/src/core/transports/ping_delay_options.d.ts +6 -0
- package/types/src/core/transports/transport.d.ts +8 -0
- package/types/src/core/transports/transport_connection.d.ts +35 -0
- package/types/src/core/transports/transport_connection_options.d.ts +6 -0
- package/types/src/core/transports/transport_hooks.d.ts +13 -0
- package/types/src/core/transports/transport_manager.d.ts +14 -0
- package/types/src/core/transports/transports_table.d.ts +10 -0
- package/types/src/core/transports/url_scheme.d.ts +11 -0
- package/types/src/core/transports/url_schemes.d.ts +4 -0
- package/types/src/core/user.d.ts +21 -0
- package/types/src/core/util.d.ts +8 -0
- package/types/src/core/utils/collections.d.ts +18 -0
- package/types/src/core/utils/factory.d.ts +29 -0
- package/types/src/core/utils/flat_promise.d.ts +6 -0
- package/types/src/core/utils/timers/abstract_timer.d.ts +10 -0
- package/types/src/core/utils/timers/index.d.ts +9 -0
- package/types/src/core/utils/timers/scheduling.d.ts +8 -0
- package/types/src/core/utils/timers/timed_callback.d.ts +4 -0
- package/types/src/core/utils/url_store.d.ts +4 -0
- package/types/src/core/watchlist.d.ts +8 -0
- package/types/src/runtimes/interface.d.ts +43 -0
- package/types/src/runtimes/isomorphic/auth/xhr_auth.d.ts +3 -0
- package/types/src/runtimes/isomorphic/default_strategy.d.ts +5 -0
- package/types/src/runtimes/isomorphic/http/http.d.ts +3 -0
- package/types/src/runtimes/isomorphic/http/http_xhr_request.d.ts +3 -0
- package/types/src/runtimes/isomorphic/runtime.d.ts +2 -0
- package/types/src/runtimes/isomorphic/timeline/xhr_timeline.d.ts +6 -0
- package/types/src/runtimes/isomorphic/transports/transport_connection_initializer.d.ts +1 -0
- package/types/src/runtimes/isomorphic/transports/transports.d.ts +5 -0
- package/types/src/runtimes/node/net_info.d.ts +6 -0
- package/types/src/runtimes/node/runtime.d.ts +3 -0
- package/types/src/runtimes/react-native/net_info.d.ts +8 -0
- package/types/src/runtimes/react-native/runtime.d.ts +3 -0
- package/types/src/runtimes/web/auth/jsonp_auth.d.ts +3 -0
- package/types/src/runtimes/web/browser.d.ts +19 -0
- package/types/src/runtimes/web/default_strategy.d.ts +5 -0
- package/types/src/runtimes/web/dom/dependencies.d.ts +4 -0
- package/types/src/runtimes/web/dom/dependency_loader.d.ts +10 -0
- package/types/src/runtimes/web/dom/jsonp_request.d.ts +10 -0
- package/types/src/runtimes/web/dom/script_receiver.d.ts +7 -0
- package/types/src/runtimes/web/dom/script_receiver_factory.d.ts +10 -0
- package/types/src/runtimes/web/dom/script_request.d.ts +9 -0
- package/types/src/runtimes/web/http/http.d.ts +2 -0
- package/types/src/runtimes/web/http/http_xdomain_request.d.ts +3 -0
- package/types/src/runtimes/web/net_info.d.ts +7 -0
- package/types/src/runtimes/web/runtime.d.ts +3 -0
- package/types/src/runtimes/web/timeline/jsonp_timeline.d.ts +6 -0
- package/types/src/runtimes/web/transports/transport_connection_initializer.d.ts +1 -0
- package/types/src/runtimes/web/transports/transports.d.ts +2 -0
- package/types/src/runtimes/worker/auth/fetch_auth.d.ts +3 -0
- package/types/src/runtimes/worker/net_info.d.ts +6 -0
- package/types/src/runtimes/worker/runtime.d.ts +3 -0
- package/types/src/runtimes/worker/timeline/fetch_timeline.d.ts +6 -0
- package/webpack/config.node.js +26 -0
- package/webpack/config.react-native.js +35 -0
- package/webpack/config.shared.js +50 -0
- package/webpack/config.web.js +36 -0
- package/webpack/config.worker.js +42 -0
- package/webpack/dev.server.js +17 -0
- package/webpack/hosting_config.js +6 -0
- package/with-encryption/index.d.ts +29 -0
- package/with-encryption/index.js +4 -0
- package/worker/index.d.ts +29 -0
- package/worker/index.js +1 -0
- package/worker/with-encryption/index.d.ts +29 -0
- package/worker/with-encryption/index.js +1 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import base64encode from '../base64';
|
|
2
|
+
import Util from '../util';
|
|
3
|
+
|
|
4
|
+
/** Merges multiple objects into the target argument.
|
|
5
|
+
*
|
|
6
|
+
* For properties that are plain Objects, performs a deep-merge. For the
|
|
7
|
+
* rest it just copies the value of the property.
|
|
8
|
+
*
|
|
9
|
+
* To extend prototypes use it as following:
|
|
10
|
+
* Pusher.Util.extend(Target.prototype, Base.prototype)
|
|
11
|
+
*
|
|
12
|
+
* You can also use it to merge objects without altering them:
|
|
13
|
+
* Pusher.Util.extend({}, object1, object2)
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} target
|
|
16
|
+
* @return {Object} the target argument
|
|
17
|
+
*/
|
|
18
|
+
export function extend<T>(target: any, ...sources: any[]): T {
|
|
19
|
+
for (var i = 0; i < sources.length; i++) {
|
|
20
|
+
var extensions = sources[i];
|
|
21
|
+
for (var property in extensions) {
|
|
22
|
+
if (
|
|
23
|
+
extensions[property] &&
|
|
24
|
+
extensions[property].constructor &&
|
|
25
|
+
extensions[property].constructor === Object
|
|
26
|
+
) {
|
|
27
|
+
target[property] = extend(target[property] || {}, extensions[property]);
|
|
28
|
+
} else {
|
|
29
|
+
target[property] = extensions[property];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return target;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export function stringify(): string {
|
|
37
|
+
var m = ['Pusher'];
|
|
38
|
+
for (var i = 0; i < arguments.length; i++) {
|
|
39
|
+
if (typeof arguments[i] === 'string') {
|
|
40
|
+
m.push(arguments[i]);
|
|
41
|
+
} else {
|
|
42
|
+
m.push(safeJSONStringify(arguments[i]));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return m.join(' : ');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export function arrayIndexOf(array: any[], item: any): number {
|
|
49
|
+
// MSIE doesn't have array.indexOf
|
|
50
|
+
var nativeIndexOf = Array.prototype.indexOf;
|
|
51
|
+
if (array === null) {
|
|
52
|
+
return -1;
|
|
53
|
+
}
|
|
54
|
+
if (nativeIndexOf && array.indexOf === nativeIndexOf) {
|
|
55
|
+
return array.indexOf(item);
|
|
56
|
+
}
|
|
57
|
+
for (var i = 0, l = array.length; i < l; i++) {
|
|
58
|
+
if (array[i] === item) {
|
|
59
|
+
return i;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return -1;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Applies a function f to all properties of an object.
|
|
66
|
+
*
|
|
67
|
+
* Function f gets 3 arguments passed:
|
|
68
|
+
* - element from the object
|
|
69
|
+
* - key of the element
|
|
70
|
+
* - reference to the object
|
|
71
|
+
*
|
|
72
|
+
* @param {Object} object
|
|
73
|
+
* @param {Function} f
|
|
74
|
+
*/
|
|
75
|
+
export function objectApply(object: any, f: Function) {
|
|
76
|
+
for (var key in object) {
|
|
77
|
+
if (Object.prototype.hasOwnProperty.call(object, key)) {
|
|
78
|
+
f(object[key], key, object);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Return a list of objects own proerty keys
|
|
84
|
+
*
|
|
85
|
+
* @param {Object} object
|
|
86
|
+
* @returns {Array}
|
|
87
|
+
*/
|
|
88
|
+
export function keys(object: any): string[] {
|
|
89
|
+
var keys = [];
|
|
90
|
+
objectApply(object, function(_, key) {
|
|
91
|
+
keys.push(key);
|
|
92
|
+
});
|
|
93
|
+
return keys;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/** Return a list of object's own property values
|
|
97
|
+
*
|
|
98
|
+
* @param {Object} object
|
|
99
|
+
* @returns {Array}
|
|
100
|
+
*/
|
|
101
|
+
export function values(object: any): any[] {
|
|
102
|
+
var values = [];
|
|
103
|
+
objectApply(object, function(value) {
|
|
104
|
+
values.push(value);
|
|
105
|
+
});
|
|
106
|
+
return values;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Applies a function f to all elements of an array.
|
|
110
|
+
*
|
|
111
|
+
* Function f gets 3 arguments passed:
|
|
112
|
+
* - element from the array
|
|
113
|
+
* - index of the element
|
|
114
|
+
* - reference to the array
|
|
115
|
+
*
|
|
116
|
+
* @param {Array} array
|
|
117
|
+
* @param {Function} f
|
|
118
|
+
*/
|
|
119
|
+
export function apply(array: any[], f: Function, context?: any) {
|
|
120
|
+
for (var i = 0; i < array.length; i++) {
|
|
121
|
+
f.call(context || global, array[i], i, array);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/** Maps all elements of the array and returns the result.
|
|
126
|
+
*
|
|
127
|
+
* Function f gets 4 arguments passed:
|
|
128
|
+
* - element from the array
|
|
129
|
+
* - index of the element
|
|
130
|
+
* - reference to the source array
|
|
131
|
+
* - reference to the destination array
|
|
132
|
+
*
|
|
133
|
+
* @param {Array} array
|
|
134
|
+
* @param {Function} f
|
|
135
|
+
*/
|
|
136
|
+
export function map(array: any[], f: Function): any[] {
|
|
137
|
+
var result = [];
|
|
138
|
+
for (var i = 0; i < array.length; i++) {
|
|
139
|
+
result.push(f(array[i], i, array, result));
|
|
140
|
+
}
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/** Maps all elements of the object and returns the result.
|
|
145
|
+
*
|
|
146
|
+
* Function f gets 4 arguments passed:
|
|
147
|
+
* - element from the object
|
|
148
|
+
* - key of the element
|
|
149
|
+
* - reference to the source object
|
|
150
|
+
* - reference to the destination object
|
|
151
|
+
*
|
|
152
|
+
* @param {Object} object
|
|
153
|
+
* @param {Function} f
|
|
154
|
+
*/
|
|
155
|
+
export function mapObject(object: any, f: Function): any {
|
|
156
|
+
var result = {};
|
|
157
|
+
objectApply(object, function(value, key) {
|
|
158
|
+
result[key] = f(value);
|
|
159
|
+
});
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/** Filters elements of the array using a test function.
|
|
164
|
+
*
|
|
165
|
+
* Function test gets 4 arguments passed:
|
|
166
|
+
* - element from the array
|
|
167
|
+
* - index of the element
|
|
168
|
+
* - reference to the source array
|
|
169
|
+
* - reference to the destination array
|
|
170
|
+
*
|
|
171
|
+
* @param {Array} array
|
|
172
|
+
* @param {Function} f
|
|
173
|
+
*/
|
|
174
|
+
export function filter(array: any[], test: Function): any[] {
|
|
175
|
+
test =
|
|
176
|
+
test ||
|
|
177
|
+
function(value) {
|
|
178
|
+
return !!value;
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
var result = [];
|
|
182
|
+
for (var i = 0; i < array.length; i++) {
|
|
183
|
+
if (test(array[i], i, array, result)) {
|
|
184
|
+
result.push(array[i]);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return result;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/** Filters properties of the object using a test function.
|
|
191
|
+
*
|
|
192
|
+
* Function test gets 4 arguments passed:
|
|
193
|
+
* - element from the object
|
|
194
|
+
* - key of the element
|
|
195
|
+
* - reference to the source object
|
|
196
|
+
* - reference to the destination object
|
|
197
|
+
*
|
|
198
|
+
* @param {Object} object
|
|
199
|
+
* @param {Function} f
|
|
200
|
+
*/
|
|
201
|
+
export function filterObject(object: Object, test: Function) {
|
|
202
|
+
var result = {};
|
|
203
|
+
objectApply(object, function(value, key) {
|
|
204
|
+
if ((test && test(value, key, object, result)) || Boolean(value)) {
|
|
205
|
+
result[key] = value;
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/** Flattens an object into a two-dimensional array.
|
|
212
|
+
*
|
|
213
|
+
* @param {Object} object
|
|
214
|
+
* @return {Array} resulting array of [key, value] pairs
|
|
215
|
+
*/
|
|
216
|
+
export function flatten(object: Object): any[] {
|
|
217
|
+
var result = [];
|
|
218
|
+
objectApply(object, function(value, key) {
|
|
219
|
+
result.push([key, value]);
|
|
220
|
+
});
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/** Checks whether any element of the array passes the test.
|
|
225
|
+
*
|
|
226
|
+
* Function test gets 3 arguments passed:
|
|
227
|
+
* - element from the array
|
|
228
|
+
* - index of the element
|
|
229
|
+
* - reference to the source array
|
|
230
|
+
*
|
|
231
|
+
* @param {Array} array
|
|
232
|
+
* @param {Function} f
|
|
233
|
+
*/
|
|
234
|
+
export function any(array: any[], test: Function): boolean {
|
|
235
|
+
for (var i = 0; i < array.length; i++) {
|
|
236
|
+
if (test(array[i], i, array)) {
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/** Checks whether all elements of the array pass the test.
|
|
244
|
+
*
|
|
245
|
+
* Function test gets 3 arguments passed:
|
|
246
|
+
* - element from the array
|
|
247
|
+
* - index of the element
|
|
248
|
+
* - reference to the source array
|
|
249
|
+
*
|
|
250
|
+
* @param {Array} array
|
|
251
|
+
* @param {Function} f
|
|
252
|
+
*/
|
|
253
|
+
export function all(array: any[], test: Function): boolean {
|
|
254
|
+
for (var i = 0; i < array.length; i++) {
|
|
255
|
+
if (!test(array[i], i, array)) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
export function encodeParamsObject(data): string {
|
|
263
|
+
return mapObject(data, function(value) {
|
|
264
|
+
if (typeof value === 'object') {
|
|
265
|
+
value = safeJSONStringify(value);
|
|
266
|
+
}
|
|
267
|
+
return encodeURIComponent(base64encode(value.toString()));
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export function buildQueryString(data: any): string {
|
|
272
|
+
var params = filterObject(data, function(value) {
|
|
273
|
+
return value !== undefined;
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
var query = map(
|
|
277
|
+
flatten(encodeParamsObject(params)),
|
|
278
|
+
Util.method('join', '=')
|
|
279
|
+
).join('&');
|
|
280
|
+
|
|
281
|
+
return query;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/**
|
|
285
|
+
* See https://github.com/douglascrockford/JSON-js/blob/master/cycle.js
|
|
286
|
+
*
|
|
287
|
+
* Remove circular references from an object. Required for JSON.stringify in
|
|
288
|
+
* React Native, which tends to blow up a lot.
|
|
289
|
+
*
|
|
290
|
+
* @param {any} object
|
|
291
|
+
* @return {any} Decycled object
|
|
292
|
+
*/
|
|
293
|
+
export function decycleObject(object: any): any {
|
|
294
|
+
var objects = [],
|
|
295
|
+
paths = [];
|
|
296
|
+
|
|
297
|
+
return (function derez(value, path) {
|
|
298
|
+
var i, name, nu;
|
|
299
|
+
|
|
300
|
+
switch (typeof value) {
|
|
301
|
+
case 'object':
|
|
302
|
+
if (!value) {
|
|
303
|
+
return null;
|
|
304
|
+
}
|
|
305
|
+
for (i = 0; i < objects.length; i += 1) {
|
|
306
|
+
if (objects[i] === value) {
|
|
307
|
+
return { $ref: paths[i] };
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
objects.push(value);
|
|
312
|
+
paths.push(path);
|
|
313
|
+
|
|
314
|
+
if (Object.prototype.toString.apply(value) === '[object Array]') {
|
|
315
|
+
nu = [];
|
|
316
|
+
for (i = 0; i < value.length; i += 1) {
|
|
317
|
+
nu[i] = derez(value[i], path + '[' + i + ']');
|
|
318
|
+
}
|
|
319
|
+
} else {
|
|
320
|
+
nu = {};
|
|
321
|
+
for (name in value) {
|
|
322
|
+
if (Object.prototype.hasOwnProperty.call(value, name)) {
|
|
323
|
+
nu[name] = derez(
|
|
324
|
+
value[name],
|
|
325
|
+
path + '[' + JSON.stringify(name) + ']'
|
|
326
|
+
);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return nu;
|
|
331
|
+
case 'number':
|
|
332
|
+
case 'string':
|
|
333
|
+
case 'boolean':
|
|
334
|
+
return value;
|
|
335
|
+
}
|
|
336
|
+
})(object, '$');
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Provides a cross-browser and cross-platform way to safely stringify objects
|
|
341
|
+
* into JSON. This is particularly necessary for ReactNative, where circular JSON
|
|
342
|
+
* structures throw an exception.
|
|
343
|
+
*
|
|
344
|
+
* @param {any} source The object to stringify
|
|
345
|
+
* @return {string} The serialized output.
|
|
346
|
+
*/
|
|
347
|
+
export function safeJSONStringify(source: any): string {
|
|
348
|
+
try {
|
|
349
|
+
return JSON.stringify(source);
|
|
350
|
+
} catch (e) {
|
|
351
|
+
return JSON.stringify(decycleObject(source));
|
|
352
|
+
}
|
|
353
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import Handshake from '../connection/handshake';
|
|
2
|
+
import AssistantToTheTransportManager from '../transports/assistant_to_the_transport_manager';
|
|
3
|
+
import PingDelayOptions from '../transports/ping_delay_options';
|
|
4
|
+
import Transport from '../transports/transport';
|
|
5
|
+
import TransportConnection from '../transports/transport_connection';
|
|
6
|
+
import TransportManager from '../transports/transport_manager';
|
|
7
|
+
|
|
8
|
+
import * as nacl from 'tweetnacl';
|
|
9
|
+
import Channel from '../channels/channel';
|
|
10
|
+
import Channels from '../channels/channels';
|
|
11
|
+
import EncryptedChannel from '../channels/encrypted_channel';
|
|
12
|
+
import PresenceChannel from '../channels/presence_channel';
|
|
13
|
+
import PrivateChannel from '../channels/private_channel';
|
|
14
|
+
import ConnectionManager from '../connection/connection_manager';
|
|
15
|
+
import ConnectionManagerOptions from '../connection/connection_manager_options';
|
|
16
|
+
import Pingerchips from '../pusher';
|
|
17
|
+
import Timeline from '../timeline/timeline';
|
|
18
|
+
import {
|
|
19
|
+
default as TimelineSender,
|
|
20
|
+
TimelineSenderOptions
|
|
21
|
+
} from '../timeline/timeline_sender';
|
|
22
|
+
|
|
23
|
+
var Factory = {
|
|
24
|
+
createChannels(): Channels {
|
|
25
|
+
return new Channels();
|
|
26
|
+
},
|
|
27
|
+
|
|
28
|
+
createConnectionManager(
|
|
29
|
+
key: string,
|
|
30
|
+
options: ConnectionManagerOptions
|
|
31
|
+
): ConnectionManager {
|
|
32
|
+
return new ConnectionManager(key, options);
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
createChannel(name: string, pusher: Pingerchips): Channel {
|
|
36
|
+
return new Channel(name, pusher);
|
|
37
|
+
},
|
|
38
|
+
|
|
39
|
+
createPrivateChannel(name: string, pusher: Pingerchips): PrivateChannel {
|
|
40
|
+
return new PrivateChannel(name, pusher);
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
createPresenceChannel(name: string, pusher: Pingerchips): PresenceChannel {
|
|
44
|
+
return new PresenceChannel(name, pusher);
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
createEncryptedChannel(
|
|
48
|
+
name: string,
|
|
49
|
+
pusher: Pingerchips,
|
|
50
|
+
nacl: nacl
|
|
51
|
+
): EncryptedChannel {
|
|
52
|
+
return new EncryptedChannel(name, pusher, nacl);
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
createTimelineSender(timeline: Timeline, options: TimelineSenderOptions) {
|
|
56
|
+
return new TimelineSender(timeline, options);
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
createHandshake(
|
|
60
|
+
transport: TransportConnection,
|
|
61
|
+
callback: (HandshakePayload) => void
|
|
62
|
+
): Handshake {
|
|
63
|
+
return new Handshake(transport, callback);
|
|
64
|
+
},
|
|
65
|
+
|
|
66
|
+
createAssistantToTheTransportManager(
|
|
67
|
+
manager: TransportManager,
|
|
68
|
+
transport: Transport,
|
|
69
|
+
options: PingDelayOptions
|
|
70
|
+
): AssistantToTheTransportManager {
|
|
71
|
+
return new AssistantToTheTransportManager(manager, transport, options);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export default Factory;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import TimedCallback from './timed_callback';
|
|
2
|
+
import { Delay, Scheduler, Canceller } from './scheduling';
|
|
3
|
+
|
|
4
|
+
abstract class Timer {
|
|
5
|
+
protected clear: Canceller;
|
|
6
|
+
protected timer: number | void;
|
|
7
|
+
|
|
8
|
+
constructor(
|
|
9
|
+
set: Scheduler,
|
|
10
|
+
clear: Canceller,
|
|
11
|
+
delay: Delay,
|
|
12
|
+
callback: TimedCallback
|
|
13
|
+
) {
|
|
14
|
+
this.clear = clear;
|
|
15
|
+
this.timer = set(() => {
|
|
16
|
+
if (this.timer) {
|
|
17
|
+
this.timer = callback(this.timer);
|
|
18
|
+
}
|
|
19
|
+
}, delay);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Returns whether the timer is still running.
|
|
23
|
+
*
|
|
24
|
+
* @return {Boolean}
|
|
25
|
+
*/
|
|
26
|
+
isRunning(): boolean {
|
|
27
|
+
return this.timer !== null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Aborts a timer when it's running. */
|
|
31
|
+
ensureAborted() {
|
|
32
|
+
if (this.timer) {
|
|
33
|
+
this.clear(this.timer);
|
|
34
|
+
this.timer = null;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default Timer;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import Timer from './abstract_timer';
|
|
2
|
+
import TimedCallback from './timed_callback';
|
|
3
|
+
import { Delay } from './scheduling';
|
|
4
|
+
|
|
5
|
+
// We need to bind clear functions this way to avoid exceptions on IE8
|
|
6
|
+
function clearTimeout(timer) {
|
|
7
|
+
global.clearTimeout(timer);
|
|
8
|
+
}
|
|
9
|
+
function clearInterval(timer) {
|
|
10
|
+
global.clearInterval(timer);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/** Cross-browser compatible one-off timer abstraction.
|
|
14
|
+
*
|
|
15
|
+
* @param {Number} delay
|
|
16
|
+
* @param {Function} callback
|
|
17
|
+
*/
|
|
18
|
+
export class OneOffTimer extends Timer {
|
|
19
|
+
constructor(delay: Delay, callback: TimedCallback) {
|
|
20
|
+
super(setTimeout, clearTimeout, delay, function(timer) {
|
|
21
|
+
callback();
|
|
22
|
+
return null;
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** Cross-browser compatible periodic timer abstraction.
|
|
28
|
+
*
|
|
29
|
+
* @param {Number} delay
|
|
30
|
+
* @param {Function} callback
|
|
31
|
+
*/
|
|
32
|
+
export class PeriodicTimer extends Timer {
|
|
33
|
+
constructor(delay: Delay, callback: TimedCallback) {
|
|
34
|
+
super(setInterval, clearInterval, delay, function(timer) {
|
|
35
|
+
callback();
|
|
36
|
+
return timer;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A place to store help URLs for error messages etc
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
const urlStore = {
|
|
6
|
+
baseUrl: 'https://pusher.com',
|
|
7
|
+
urls: {
|
|
8
|
+
authenticationEndpoint: {
|
|
9
|
+
path: '/docs/channels/server_api/authenticating_users'
|
|
10
|
+
},
|
|
11
|
+
authorizationEndpoint: {
|
|
12
|
+
path: '/docs/channels/server_api/authorizing-users/'
|
|
13
|
+
},
|
|
14
|
+
javascriptQuickStart: {
|
|
15
|
+
path: '/docs/javascript_quick_start'
|
|
16
|
+
},
|
|
17
|
+
triggeringClientEvents: {
|
|
18
|
+
path: '/docs/client_api_guide/client_events#trigger-events'
|
|
19
|
+
},
|
|
20
|
+
encryptedChannelSupport: {
|
|
21
|
+
fullUrl:
|
|
22
|
+
'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
/** Builds a consistent string with links to pusher documentation
|
|
28
|
+
*
|
|
29
|
+
* @param {string} key - relevant key in the url_store.urls object
|
|
30
|
+
* @return {string} suffix string to append to log message
|
|
31
|
+
*/
|
|
32
|
+
const buildLogSuffix = function(key: string): string {
|
|
33
|
+
const urlPrefix = 'See:';
|
|
34
|
+
const urlObj = urlStore.urls[key];
|
|
35
|
+
if (!urlObj) return '';
|
|
36
|
+
|
|
37
|
+
let url;
|
|
38
|
+
if (urlObj.fullUrl) {
|
|
39
|
+
url = urlObj.fullUrl;
|
|
40
|
+
} else if (urlObj.path) {
|
|
41
|
+
url = urlStore.baseUrl + urlObj.path;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
if (!url) return '';
|
|
45
|
+
return `${urlPrefix} ${url}`;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
export default { buildLogSuffix };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import EventsDispatcher from './events/dispatcher';
|
|
2
|
+
import Logger from './logger';
|
|
3
|
+
import Pingerchips from './pusher';
|
|
4
|
+
|
|
5
|
+
export default class WatchlistFacade extends EventsDispatcher {
|
|
6
|
+
private pusher: Pingerchips;
|
|
7
|
+
|
|
8
|
+
public constructor(pusher: Pingerchips) {
|
|
9
|
+
super(function(eventName, data) {
|
|
10
|
+
Logger.debug(`No callbacks on watchlist events for ${eventName}`);
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
this.pusher = pusher;
|
|
14
|
+
this.bindWatchlistInternalEvent();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
handleEvent(pusherEvent) {
|
|
18
|
+
pusherEvent.data.events.forEach(watchlistEvent => {
|
|
19
|
+
this.emit(watchlistEvent.name, watchlistEvent);
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
private bindWatchlistInternalEvent() {
|
|
24
|
+
this.pusher.connection.bind('message', pusherEvent => {
|
|
25
|
+
var eventName = pusherEvent.event;
|
|
26
|
+
if (eventName === 'pusher_internal:watchlist_events') {
|
|
27
|
+
this.handleEvent(pusherEvent);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
declare module 'faye-websocket' {
|
|
2
|
+
interface MessageEvent {
|
|
3
|
+
data: any;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
interface CloseEvent {
|
|
7
|
+
code: number;
|
|
8
|
+
reason: string;
|
|
9
|
+
wasClean: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class Client {
|
|
13
|
+
public onopen: () => void;
|
|
14
|
+
public onmessage: (event: MessageEvent) => void;
|
|
15
|
+
public onclose: (event: CloseEvent) => void;
|
|
16
|
+
|
|
17
|
+
constructor(url: string);
|
|
18
|
+
send(data: string): void;
|
|
19
|
+
close(code?: number, reason?: string): void;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
declare const global: any;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare var module: {
|
|
2
|
+
exports: any;
|
|
3
|
+
};
|
|
4
|
+
|
|
5
|
+
declare var require: {
|
|
6
|
+
<T>(path: string): T;
|
|
7
|
+
(paths: string[], callback: (...modules: any[]) => void): void;
|
|
8
|
+
ensure: (
|
|
9
|
+
paths: string[],
|
|
10
|
+
callback: (require: <T>(path: string) => T) => void
|
|
11
|
+
) => void;
|
|
12
|
+
};
|