@cendarsoss/pusher-js 8.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (425) hide show
  1. package/.editorconfig +14 -0
  2. package/.github/ISSUE_TEMPLATE.md +11 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +14 -0
  4. package/.github/dependabot.yml +14 -0
  5. package/.github/stale.yml +26 -0
  6. package/.github/workflows/release.yml +112 -0
  7. package/.github/workflows/release_pr.yml +43 -0
  8. package/.github/workflows/run-tests.yml +62 -0
  9. package/.gitmodules +3 -0
  10. package/.prettierrc +2 -0
  11. package/CHANGELOG.md +928 -0
  12. package/DELTA_COMPRESSION.md +365 -0
  13. package/DELTA_USAGE.md +179 -0
  14. package/IMPLEMENTATION_SUMMARY.md +261 -0
  15. package/IMPORT_GUIDE.md +638 -0
  16. package/LIBRARY_STRUCTURE_ANALYSIS.md +940 -0
  17. package/LICENCE +19 -0
  18. package/Makefile +14 -0
  19. package/README.md +709 -0
  20. package/TAG_FILTERING_CLIENT.md +471 -0
  21. package/bower.json +19 -0
  22. package/bun.lock +2695 -0
  23. package/dist/node/filter.js +252 -0
  24. package/dist/node/filter.js.map +1 -0
  25. package/dist/node/pusher.js +4434 -0
  26. package/dist/node/pusher.js.map +1 -0
  27. package/dist/web/filter.mjs +252 -0
  28. package/dist/web/filter.mjs.map +1 -0
  29. package/dist/web/pusher.mjs +5889 -0
  30. package/dist/web/pusher.mjs.map +1 -0
  31. package/examples/delta-compression-example.html +372 -0
  32. package/examples/delta-seamless-example.html +185 -0
  33. package/index.d.ts +36 -0
  34. package/integration_tests_server/index.js +176 -0
  35. package/integration_tests_server/package-lock.json +1177 -0
  36. package/integration_tests_server/package.json +15 -0
  37. package/interactive/.env +16 -0
  38. package/interactive/CONFLATION_TEST.md +73 -0
  39. package/interactive/DELTA_COMPRESSION_TESTING.md +262 -0
  40. package/interactive/bun.lock +208 -0
  41. package/interactive/package-lock.json +1075 -0
  42. package/interactive/package.json +32 -0
  43. package/interactive/public/app.js +1363 -0
  44. package/interactive/public/bundle-entry.js +14 -0
  45. package/interactive/public/conflation-test.html +508 -0
  46. package/interactive/public/conflation-test.js +785 -0
  47. package/interactive/public/delta-compression.js +1090 -0
  48. package/interactive/public/dist/bundle.js +5857 -0
  49. package/interactive/public/index.html +392 -0
  50. package/interactive/public/main.js +20 -0
  51. package/interactive/public/style.css +823 -0
  52. package/interactive/server.js +246 -0
  53. package/interactive/test-bundle.html +89 -0
  54. package/interactive/test-delta.js +146 -0
  55. package/node.js +1 -0
  56. package/package.json +94 -0
  57. package/pusher-with-encryption/index.js +1 -0
  58. package/react-native/index.d.ts +29 -0
  59. package/react-native/index.js +1 -0
  60. package/spec/config/jasmine/helpers/reporter.js +14 -0
  61. package/spec/config/jasmine/integration.json +13 -0
  62. package/spec/config/jasmine/unit.json +13 -0
  63. package/spec/config/jasmine/webpack.integration.js +33 -0
  64. package/spec/config/jasmine/webpack.unit.js +30 -0
  65. package/spec/config/karma/available_browsers.json +4957 -0
  66. package/spec/config/karma/config.ci.js +25 -0
  67. package/spec/config/karma/config.common.js +50 -0
  68. package/spec/config/karma/config.integration.js +26 -0
  69. package/spec/config/karma/config.unit.js +10 -0
  70. package/spec/config/karma/config.worker.js +34 -0
  71. package/spec/config/karma/integration.js +24 -0
  72. package/spec/config/karma/unit.js +20 -0
  73. package/spec/javascripts/helpers/mocks.js +274 -0
  74. package/spec/javascripts/helpers/node/integration.js +33 -0
  75. package/spec/javascripts/helpers/node/mock-dom-dependencies.ts +1 -0
  76. package/spec/javascripts/helpers/pusher_integration.js +1 -0
  77. package/spec/javascripts/helpers/pusher_integration_class.ts +12 -0
  78. package/spec/javascripts/helpers/timers/promises.js +9 -0
  79. package/spec/javascripts/helpers/waitsFor.js +37 -0
  80. package/spec/javascripts/helpers/web/integration.js +44 -0
  81. package/spec/javascripts/helpers/worker/mock-dom-dependencies.js +1 -0
  82. package/spec/javascripts/integration/core/cluster_config_spec.js +153 -0
  83. package/spec/javascripts/integration/core/falling_back_spec.js +195 -0
  84. package/spec/javascripts/integration/core/pusher_spec/index.js +68 -0
  85. package/spec/javascripts/integration/core/pusher_spec/test_builder.js +715 -0
  86. package/spec/javascripts/integration/core/timeout_configuration_spec.js +200 -0
  87. package/spec/javascripts/integration/core/transport_lists_spec.js +103 -0
  88. package/spec/javascripts/integration/index.node.js +12 -0
  89. package/spec/javascripts/integration/index.web.js +63 -0
  90. package/spec/javascripts/integration/index.worker.js +13 -0
  91. package/spec/javascripts/integration/web/dom/jsonp_spec.js +97 -0
  92. package/spec/javascripts/integration/web/dom/script_request_spec.js +90 -0
  93. package/spec/javascripts/polyfills/index.js +105 -0
  94. package/spec/javascripts/unit/core/channels/channel_spec.js +355 -0
  95. package/spec/javascripts/unit/core/channels/channels_spec.js +94 -0
  96. package/spec/javascripts/unit/core/channels/encrypted_channel_spec.js +343 -0
  97. package/spec/javascripts/unit/core/channels/presence_channel_spec.js +553 -0
  98. package/spec/javascripts/unit/core/channels/private_channel_spec.js +182 -0
  99. package/spec/javascripts/unit/core/config_spec.js +507 -0
  100. package/spec/javascripts/unit/core/connection/connection_manager_spec.js +656 -0
  101. package/spec/javascripts/unit/core/connection/connection_spec.js +286 -0
  102. package/spec/javascripts/unit/core/connection/handshake_spec.js +160 -0
  103. package/spec/javascripts/unit/core/connection/protocol_spec.js +420 -0
  104. package/spec/javascripts/unit/core/defaults_spec.js +26 -0
  105. package/spec/javascripts/unit/core/events_dispatcher_spec.js +385 -0
  106. package/spec/javascripts/unit/core/http/http_polling_socket_spec.js +60 -0
  107. package/spec/javascripts/unit/core/http/http_request_spec.js +185 -0
  108. package/spec/javascripts/unit/core/http/http_socket_spec.js +370 -0
  109. package/spec/javascripts/unit/core/http/http_streaming_socket_spec.js +56 -0
  110. package/spec/javascripts/unit/core/http/http_xhr_request_spec.js +164 -0
  111. package/spec/javascripts/unit/core/logger_spec.js +133 -0
  112. package/spec/javascripts/unit/core/pusher_spec.js +613 -0
  113. package/spec/javascripts/unit/core/pusher_with_encryption_spec.js +18 -0
  114. package/spec/javascripts/unit/core/strategies/best_connected_ever_strategy_spec.js +104 -0
  115. package/spec/javascripts/unit/core/strategies/delayed_strategy_spec.js +95 -0
  116. package/spec/javascripts/unit/core/strategies/first_connected_strategy_spec.js +68 -0
  117. package/spec/javascripts/unit/core/strategies/if_strategy_spec.js +165 -0
  118. package/spec/javascripts/unit/core/strategies/sequential_strategy_spec.js +213 -0
  119. package/spec/javascripts/unit/core/strategies/transport_strategy_spec.js +250 -0
  120. package/spec/javascripts/unit/core/strategies/websocket_prioritized_cached_strategy_spec.js +400 -0
  121. package/spec/javascripts/unit/core/timeline/timeline_spec.js +153 -0
  122. package/spec/javascripts/unit/core/transports/assistant_to_the_transport_manager_spec.js +223 -0
  123. package/spec/javascripts/unit/core/transports/hosts_and_ports_spec.js +85 -0
  124. package/spec/javascripts/unit/core/transports/transport_connection_spec.js +585 -0
  125. package/spec/javascripts/unit/core/transports/transport_manager_spec.js +64 -0
  126. package/spec/javascripts/unit/core/user_spec.js +303 -0
  127. package/spec/javascripts/unit/core/utils/periodic_timer_spec.js +74 -0
  128. package/spec/javascripts/unit/core/utils/timers_spec.js +157 -0
  129. package/spec/javascripts/unit/core/utils/url_store_spec.js +14 -0
  130. package/spec/javascripts/unit/core/watchlist_spec.js +48 -0
  131. package/spec/javascripts/unit/core_with_runtime/auth/channel_authorizer_spec.js +137 -0
  132. package/spec/javascripts/unit/core_with_runtime/auth/deprecated_channel_authorizer_spec.js +48 -0
  133. package/spec/javascripts/unit/core_with_runtime/auth/user_authorizer_spec.js +128 -0
  134. package/spec/javascripts/unit/core_with_runtime/readme.md +5 -0
  135. package/spec/javascripts/unit/index.node.js +11 -0
  136. package/spec/javascripts/unit/index.web.js +12 -0
  137. package/spec/javascripts/unit/index.worker.js +11 -0
  138. package/spec/javascripts/unit/isomorphic/transports/hosts_and_ports_spec.js +82 -0
  139. package/spec/javascripts/unit/isomorphic/transports/transports_spec.js +202 -0
  140. package/spec/javascripts/unit/node/timeline_sender_spec.js +83 -0
  141. package/spec/javascripts/unit/web/dom/dependency_loader_spec.js +249 -0
  142. package/spec/javascripts/unit/web/dom/jsonp_request_spec.js +130 -0
  143. package/spec/javascripts/unit/web/dom/script_receiver_factory_spec.js +68 -0
  144. package/spec/javascripts/unit/web/http/http_xdomain_request_spec.js +222 -0
  145. package/spec/javascripts/unit/web/pusher_authorizer_spec.js +64 -0
  146. package/spec/javascripts/unit/web/timeline/timeline_sender_spec.js +131 -0
  147. package/spec/javascripts/unit/web/transports/hosts_and_ports_spec.js +127 -0
  148. package/spec/javascripts/unit/web/transports/transports_spec.js +444 -0
  149. package/spec/javascripts/unit/worker/channel_authorizer_spec.js +156 -0
  150. package/spec/javascripts/unit/worker/timeline_sender_spec.js +76 -0
  151. package/src/core/auth/auth_transports.ts +18 -0
  152. package/src/core/auth/channel_authorizer.ts +64 -0
  153. package/src/core/auth/deprecated_channel_authorizer.ts +56 -0
  154. package/src/core/auth/options.ts +76 -0
  155. package/src/core/auth/user_authenticator.ts +62 -0
  156. package/src/core/base64.ts +49 -0
  157. package/src/core/channels/channel.ts +173 -0
  158. package/src/core/channels/channel_table.ts +7 -0
  159. package/src/core/channels/channels.ts +86 -0
  160. package/src/core/channels/encrypted_channel.ts +150 -0
  161. package/src/core/channels/filter.ts +342 -0
  162. package/src/core/channels/members.ts +80 -0
  163. package/src/core/channels/metadata.ts +5 -0
  164. package/src/core/channels/presence_channel.ts +113 -0
  165. package/src/core/channels/private_channel.ts +25 -0
  166. package/src/core/config.ts +189 -0
  167. package/src/core/connection/callbacks.ts +21 -0
  168. package/src/core/connection/connection.ts +160 -0
  169. package/src/core/connection/connection_manager.ts +371 -0
  170. package/src/core/connection/connection_manager_options.ts +14 -0
  171. package/src/core/connection/handshake/handshake_payload.ts +10 -0
  172. package/src/core/connection/handshake/index.ts +90 -0
  173. package/src/core/connection/protocol/action.ts +8 -0
  174. package/src/core/connection/protocol/message-types.ts +11 -0
  175. package/src/core/connection/protocol/protocol.ts +166 -0
  176. package/src/core/defaults.ts +66 -0
  177. package/src/core/delta/channel_state.ts +194 -0
  178. package/src/core/delta/decoders.ts +129 -0
  179. package/src/core/delta/index.ts +10 -0
  180. package/src/core/delta/manager.ts +504 -0
  181. package/src/core/delta/types.ts +60 -0
  182. package/src/core/errors.ts +69 -0
  183. package/src/core/events/callback.ts +6 -0
  184. package/src/core/events/callback_registry.ts +75 -0
  185. package/src/core/events/callback_table.ts +7 -0
  186. package/src/core/events/dispatcher.ts +84 -0
  187. package/src/core/http/ajax.ts +24 -0
  188. package/src/core/http/http_factory.ts +16 -0
  189. package/src/core/http/http_polling_socket.ts +24 -0
  190. package/src/core/http/http_request.ts +81 -0
  191. package/src/core/http/http_socket.ts +220 -0
  192. package/src/core/http/http_streaming_socket.ts +19 -0
  193. package/src/core/http/request_hooks.ts +9 -0
  194. package/src/core/http/socket_hooks.ts +11 -0
  195. package/src/core/http/state.ts +7 -0
  196. package/src/core/http/url_location.ts +6 -0
  197. package/src/core/logger.ts +66 -0
  198. package/src/core/options.ts +61 -0
  199. package/src/core/pusher-licence.js +7 -0
  200. package/src/core/pusher-with-encryption.js +1 -0
  201. package/src/core/pusher-with-encryption.ts +14 -0
  202. package/src/core/pusher.js +10 -0
  203. package/src/core/pusher.ts +412 -0
  204. package/src/core/reachability.ts +7 -0
  205. package/src/core/socket.ts +14 -0
  206. package/src/core/strategies/best_connected_ever_strategy.ts +81 -0
  207. package/src/core/strategies/delayed_strategy.ts +48 -0
  208. package/src/core/strategies/first_connected_strategy.ts +31 -0
  209. package/src/core/strategies/if_strategy.ts +34 -0
  210. package/src/core/strategies/sequential_strategy.ts +129 -0
  211. package/src/core/strategies/strategy.ts +8 -0
  212. package/src/core/strategies/strategy_builder.ts +67 -0
  213. package/src/core/strategies/strategy_options.ts +18 -0
  214. package/src/core/strategies/strategy_runner.ts +6 -0
  215. package/src/core/strategies/transport_strategy.ts +144 -0
  216. package/src/core/strategies/websocket_prioritized_cached_strategy.ts +157 -0
  217. package/src/core/timeline/level.ts +7 -0
  218. package/src/core/timeline/timeline.ts +90 -0
  219. package/src/core/timeline/timeline_sender.ts +33 -0
  220. package/src/core/timeline/timeline_transport.ts +11 -0
  221. package/src/core/transports/assistant_to_the_transport_manager.ts +104 -0
  222. package/src/core/transports/ping_delay_options.ts +7 -0
  223. package/src/core/transports/transport.ts +54 -0
  224. package/src/core/transports/transport_connection.ts +241 -0
  225. package/src/core/transports/transport_connection_options.ts +8 -0
  226. package/src/core/transports/transport_hooks.ts +16 -0
  227. package/src/core/transports/transport_manager.ts +52 -0
  228. package/src/core/transports/transports_table.ts +12 -0
  229. package/src/core/transports/url_scheme.ts +13 -0
  230. package/src/core/transports/url_schemes.ts +47 -0
  231. package/src/core/user.ts +186 -0
  232. package/src/core/util.ts +34 -0
  233. package/src/core/utils/collections.ts +353 -0
  234. package/src/core/utils/factory.ts +79 -0
  235. package/src/core/utils/flat_promise.ts +10 -0
  236. package/src/core/utils/timers/abstract_timer.ts +39 -0
  237. package/src/core/utils/timers/index.ts +39 -0
  238. package/src/core/utils/timers/scheduling.ts +11 -0
  239. package/src/core/utils/timers/timed_callback.ts +5 -0
  240. package/src/core/utils/url_store.ts +48 -0
  241. package/src/core/watchlist.ts +31 -0
  242. package/src/d.ts/constants/index.d.ts +5 -0
  243. package/src/d.ts/faye-websocket/faye-websocket.d.ts +21 -0
  244. package/src/d.ts/global/global.d.ts +1 -0
  245. package/src/d.ts/module/module.d.ts +12 -0
  246. package/src/d.ts/tweetnacl-util/index.d.ts +6 -0
  247. package/src/d.ts/window/events.d.ts +4 -0
  248. package/src/d.ts/window/sockjs.d.ts +3 -0
  249. package/src/d.ts/window/websocket.d.ts +4 -0
  250. package/src/d.ts/window/xmlhttprequest.d.ts +3 -0
  251. package/src/filter.ts +5 -0
  252. package/src/index.ts +8 -0
  253. package/src/runtimes/interface.ts +60 -0
  254. package/src/runtimes/isomorphic/auth/xhr_auth.ts +90 -0
  255. package/src/runtimes/isomorphic/default_strategy.ts +155 -0
  256. package/src/runtimes/isomorphic/http/http.ts +32 -0
  257. package/src/runtimes/isomorphic/http/http_xhr_request.ts +35 -0
  258. package/src/runtimes/isomorphic/runtime.ts +62 -0
  259. package/src/runtimes/isomorphic/timeline/xhr_timeline.ts +50 -0
  260. package/src/runtimes/isomorphic/transports/transport_connection_initializer.ts +19 -0
  261. package/src/runtimes/isomorphic/transports/transports.ts +83 -0
  262. package/src/runtimes/node/net_info.ts +10 -0
  263. package/src/runtimes/node/runtime.ts +68 -0
  264. package/src/runtimes/react-native/net_info.ts +42 -0
  265. package/src/runtimes/react-native/runtime.ts +65 -0
  266. package/src/runtimes/web/auth/jsonp_auth.ts +51 -0
  267. package/src/runtimes/web/browser.ts +24 -0
  268. package/src/runtimes/web/default_strategy.ts +201 -0
  269. package/src/runtimes/web/dom/dependencies.ts +16 -0
  270. package/src/runtimes/web/dom/dependency_loader.ts +93 -0
  271. package/src/runtimes/web/dom/json2.js +486 -0
  272. package/src/runtimes/web/dom/jsonp_request.ts +52 -0
  273. package/src/runtimes/web/dom/script_receiver.ts +8 -0
  274. package/src/runtimes/web/dom/script_receiver_factory.ts +57 -0
  275. package/src/runtimes/web/dom/script_request.ts +85 -0
  276. package/src/runtimes/web/http/http.ts +8 -0
  277. package/src/runtimes/web/http/http_xdomain_request.ts +37 -0
  278. package/src/runtimes/web/net_info.ts +50 -0
  279. package/src/runtimes/web/runtime.ts +174 -0
  280. package/src/runtimes/web/timeline/jsonp_timeline.ts +34 -0
  281. package/src/runtimes/web/transports/transport_connection_initializer.ts +39 -0
  282. package/src/runtimes/web/transports/transports.ts +67 -0
  283. package/src/runtimes/worker/auth/fetch_auth.ts +69 -0
  284. package/src/runtimes/worker/net_info.ts +10 -0
  285. package/src/runtimes/worker/runtime.ts +75 -0
  286. package/src/runtimes/worker/timeline/fetch_timeline.ts +39 -0
  287. package/tsconfig.json +18 -0
  288. package/types/spec/javascripts/helpers/node/mock-dom-dependencies.d.ts +1 -0
  289. package/types/spec/javascripts/helpers/pusher_integration_class.d.ts +4 -0
  290. package/types/src/core/auth/auth_transports.d.ts +9 -0
  291. package/types/src/core/auth/channel_authorizer.d.ts +3 -0
  292. package/types/src/core/auth/deprecated_channel_authorizer.d.ts +18 -0
  293. package/types/src/core/auth/options.d.ts +48 -0
  294. package/types/src/core/auth/user_authenticator.d.ts +3 -0
  295. package/types/src/core/base64.d.ts +1 -0
  296. package/types/src/core/channels/channel.d.ts +25 -0
  297. package/types/src/core/channels/channel_table.d.ts +5 -0
  298. package/types/src/core/channels/channels.d.ts +12 -0
  299. package/types/src/core/channels/encrypted_channel.d.ts +15 -0
  300. package/types/src/core/channels/filter.d.ts +33 -0
  301. package/types/src/core/channels/members.d.ts +14 -0
  302. package/types/src/core/channels/metadata.d.ts +4 -0
  303. package/types/src/core/channels/presence_channel.d.ts +13 -0
  304. package/types/src/core/channels/private_channel.d.ts +5 -0
  305. package/types/src/core/config.d.ts +31 -0
  306. package/types/src/core/connection/callbacks.d.ts +18 -0
  307. package/types/src/core/connection/connection.d.ts +16 -0
  308. package/types/src/core/connection/connection_manager.d.ts +50 -0
  309. package/types/src/core/connection/connection_manager_options.d.ts +11 -0
  310. package/types/src/core/connection/handshake/handshake_payload.d.ts +8 -0
  311. package/types/src/core/connection/handshake/index.d.ts +12 -0
  312. package/types/src/core/connection/protocol/action.d.ts +7 -0
  313. package/types/src/core/connection/protocol/message-types.d.ts +10 -0
  314. package/types/src/core/connection/protocol/protocol.d.ts +10 -0
  315. package/types/src/core/defaults.d.ts +26 -0
  316. package/types/src/core/delta/channel_state.d.ts +23 -0
  317. package/types/src/core/delta/decoders.d.ts +12 -0
  318. package/types/src/core/delta/index.d.ts +4 -0
  319. package/types/src/core/delta/manager.d.ts +27 -0
  320. package/types/src/core/delta/types.d.ts +50 -0
  321. package/types/src/core/errors.d.ts +28 -0
  322. package/types/src/core/events/callback.d.ts +5 -0
  323. package/types/src/core/events/callback_registry.d.ts +11 -0
  324. package/types/src/core/events/callback_table.d.ts +5 -0
  325. package/types/src/core/events/dispatcher.d.ts +14 -0
  326. package/types/src/core/http/ajax.d.ts +16 -0
  327. package/types/src/core/http/http_factory.d.ts +13 -0
  328. package/types/src/core/http/http_polling_socket.d.ts +3 -0
  329. package/types/src/core/http/http_request.d.ts +17 -0
  330. package/types/src/core/http/http_socket.d.ts +32 -0
  331. package/types/src/core/http/http_streaming_socket.d.ts +3 -0
  332. package/types/src/core/http/request_hooks.d.ts +6 -0
  333. package/types/src/core/http/socket_hooks.d.ts +8 -0
  334. package/types/src/core/http/state.d.ts +6 -0
  335. package/types/src/core/http/url_location.d.ts +5 -0
  336. package/types/src/core/logger.d.ts +11 -0
  337. package/types/src/core/options.d.ts +36 -0
  338. package/types/src/core/pusher-with-encryption.d.ts +5 -0
  339. package/types/src/core/pusher.d.ts +56 -0
  340. package/types/src/core/reachability.d.ts +5 -0
  341. package/types/src/core/socket.d.ts +12 -0
  342. package/types/src/core/strategies/best_connected_ever_strategy.d.ts +10 -0
  343. package/types/src/core/strategies/delayed_strategy.d.ts +15 -0
  344. package/types/src/core/strategies/first_connected_strategy.d.ts +8 -0
  345. package/types/src/core/strategies/if_strategy.d.ts +10 -0
  346. package/types/src/core/strategies/sequential_strategy.d.ts +16 -0
  347. package/types/src/core/strategies/strategy.d.ts +6 -0
  348. package/types/src/core/strategies/strategy_builder.d.ts +5 -0
  349. package/types/src/core/strategies/strategy_options.d.ts +16 -0
  350. package/types/src/core/strategies/strategy_runner.d.ts +5 -0
  351. package/types/src/core/strategies/transport_strategy.d.ts +15 -0
  352. package/types/src/core/strategies/websocket_prioritized_cached_strategy.d.ts +20 -0
  353. package/types/src/core/timeline/level.d.ts +6 -0
  354. package/types/src/core/timeline/timeline.d.ts +25 -0
  355. package/types/src/core/timeline/timeline_sender.d.ts +13 -0
  356. package/types/src/core/timeline/timeline_transport.d.ts +6 -0
  357. package/types/src/core/transports/assistant_to_the_transport_manager.d.ts +14 -0
  358. package/types/src/core/transports/ping_delay_options.d.ts +6 -0
  359. package/types/src/core/transports/transport.d.ts +8 -0
  360. package/types/src/core/transports/transport_connection.d.ts +35 -0
  361. package/types/src/core/transports/transport_connection_options.d.ts +6 -0
  362. package/types/src/core/transports/transport_hooks.d.ts +13 -0
  363. package/types/src/core/transports/transport_manager.d.ts +14 -0
  364. package/types/src/core/transports/transports_table.d.ts +10 -0
  365. package/types/src/core/transports/url_scheme.d.ts +11 -0
  366. package/types/src/core/transports/url_schemes.d.ts +4 -0
  367. package/types/src/core/user.d.ts +21 -0
  368. package/types/src/core/util.d.ts +8 -0
  369. package/types/src/core/utils/collections.d.ts +18 -0
  370. package/types/src/core/utils/factory.d.ts +29 -0
  371. package/types/src/core/utils/flat_promise.d.ts +6 -0
  372. package/types/src/core/utils/timers/abstract_timer.d.ts +10 -0
  373. package/types/src/core/utils/timers/index.d.ts +9 -0
  374. package/types/src/core/utils/timers/scheduling.d.ts +8 -0
  375. package/types/src/core/utils/timers/timed_callback.d.ts +4 -0
  376. package/types/src/core/utils/url_store.d.ts +4 -0
  377. package/types/src/core/watchlist.d.ts +8 -0
  378. package/types/src/runtimes/interface.d.ts +43 -0
  379. package/types/src/runtimes/isomorphic/auth/xhr_auth.d.ts +3 -0
  380. package/types/src/runtimes/isomorphic/default_strategy.d.ts +5 -0
  381. package/types/src/runtimes/isomorphic/http/http.d.ts +3 -0
  382. package/types/src/runtimes/isomorphic/http/http_xhr_request.d.ts +3 -0
  383. package/types/src/runtimes/isomorphic/runtime.d.ts +2 -0
  384. package/types/src/runtimes/isomorphic/timeline/xhr_timeline.d.ts +6 -0
  385. package/types/src/runtimes/isomorphic/transports/transport_connection_initializer.d.ts +1 -0
  386. package/types/src/runtimes/isomorphic/transports/transports.d.ts +5 -0
  387. package/types/src/runtimes/node/net_info.d.ts +6 -0
  388. package/types/src/runtimes/node/runtime.d.ts +3 -0
  389. package/types/src/runtimes/react-native/net_info.d.ts +8 -0
  390. package/types/src/runtimes/react-native/runtime.d.ts +3 -0
  391. package/types/src/runtimes/web/auth/jsonp_auth.d.ts +3 -0
  392. package/types/src/runtimes/web/browser.d.ts +19 -0
  393. package/types/src/runtimes/web/default_strategy.d.ts +5 -0
  394. package/types/src/runtimes/web/dom/dependencies.d.ts +4 -0
  395. package/types/src/runtimes/web/dom/dependency_loader.d.ts +10 -0
  396. package/types/src/runtimes/web/dom/jsonp_request.d.ts +10 -0
  397. package/types/src/runtimes/web/dom/script_receiver.d.ts +7 -0
  398. package/types/src/runtimes/web/dom/script_receiver_factory.d.ts +10 -0
  399. package/types/src/runtimes/web/dom/script_request.d.ts +9 -0
  400. package/types/src/runtimes/web/http/http.d.ts +2 -0
  401. package/types/src/runtimes/web/http/http_xdomain_request.d.ts +3 -0
  402. package/types/src/runtimes/web/net_info.d.ts +7 -0
  403. package/types/src/runtimes/web/runtime.d.ts +3 -0
  404. package/types/src/runtimes/web/timeline/jsonp_timeline.d.ts +6 -0
  405. package/types/src/runtimes/web/transports/transport_connection_initializer.d.ts +1 -0
  406. package/types/src/runtimes/web/transports/transports.d.ts +2 -0
  407. package/types/src/runtimes/worker/auth/fetch_auth.d.ts +3 -0
  408. package/types/src/runtimes/worker/net_info.d.ts +6 -0
  409. package/types/src/runtimes/worker/runtime.d.ts +3 -0
  410. package/types/src/runtimes/worker/timeline/fetch_timeline.d.ts +6 -0
  411. package/vite.config.js +52 -0
  412. package/vite.config.node.js +72 -0
  413. package/webpack/config.node.js +26 -0
  414. package/webpack/config.react-native.js +35 -0
  415. package/webpack/config.shared.js +50 -0
  416. package/webpack/config.web.js +36 -0
  417. package/webpack/config.worker.js +42 -0
  418. package/webpack/dev.server.js +17 -0
  419. package/webpack/hosting_config.js +6 -0
  420. package/with-encryption/index.d.ts +29 -0
  421. package/with-encryption/index.js +4 -0
  422. package/worker/index.d.ts +29 -0
  423. package/worker/index.js +1 -0
  424. package/worker/with-encryption/index.d.ts +29 -0
  425. package/worker/with-encryption/index.js +1 -0
@@ -0,0 +1,50 @@
1
+ import Logger from 'core/logger';
2
+ import TimelineSender from 'core/timeline/timeline_sender';
3
+ import * as Collections from 'core/utils/collections';
4
+ import Util from 'core/util';
5
+ import Runtime from 'runtime';
6
+ import TimelineTransport from 'core/timeline/timeline_transport';
7
+
8
+ var getAgent = function (sender: TimelineSender, useTLS: boolean) {
9
+ return function (data: any, callback: Function) {
10
+ var scheme = 'http' + (useTLS ? 's' : '') + '://';
11
+ var url =
12
+ scheme + (sender.host || sender.options.host) + sender.options.path;
13
+ var query = Collections.buildQueryString(data);
14
+
15
+ url += '/' + 2 + '?' + query;
16
+
17
+ var xhr = Runtime.createXHR();
18
+ xhr.open('GET', url, true);
19
+
20
+ xhr.onreadystatechange = function () {
21
+ if (xhr.readyState === 4) {
22
+ let { status, responseText } = xhr;
23
+ if (status !== 200) {
24
+ Logger.debug(
25
+ `TimelineSender Error: received ${status} from stats.pusher.com`,
26
+ );
27
+ return;
28
+ }
29
+
30
+ try {
31
+ var { host } = JSON.parse(responseText);
32
+ } catch (e) {
33
+ Logger.debug(`TimelineSenderError: invalid response ${responseText}`);
34
+ }
35
+ if (host) {
36
+ sender.host = host;
37
+ }
38
+ }
39
+ };
40
+
41
+ xhr.send();
42
+ };
43
+ };
44
+
45
+ var xhr = {
46
+ name: 'xhr',
47
+ getAgent,
48
+ };
49
+
50
+ export default xhr;
@@ -0,0 +1,19 @@
1
+ /** Initializes the transport.
2
+ *
3
+ * Fetches resources if needed and then transitions to initialized.
4
+ */
5
+ export default function () {
6
+ var self = this;
7
+
8
+ self.timeline.info(
9
+ self.buildTimelineMessage({
10
+ transport: self.name + (self.options.useTLS ? 's' : ''),
11
+ }),
12
+ );
13
+
14
+ if (self.hooks.isInitialized()) {
15
+ self.changeState('initialized');
16
+ } else {
17
+ self.onClose();
18
+ }
19
+ }
@@ -0,0 +1,83 @@
1
+ import * as URLSchemes from 'core/transports/url_schemes';
2
+ import URLScheme from 'core/transports/url_scheme';
3
+ import Transport from 'core/transports/transport';
4
+ import Util from 'core/util';
5
+ import * as Collections from 'core/utils/collections';
6
+ import TransportHooks from 'core/transports/transport_hooks';
7
+ import TransportsTable from 'core/transports/transports_table';
8
+ import Runtime from 'runtime';
9
+
10
+ /** WebSocket transport.
11
+ *
12
+ * Uses native WebSocket implementation, including MozWebSocket supported by
13
+ * earlier Firefox versions.
14
+ */
15
+ var WSTransport = new Transport(<TransportHooks>{
16
+ urls: URLSchemes.ws,
17
+ handlesActivityChecks: false,
18
+ supportsPing: false,
19
+
20
+ isInitialized: function () {
21
+ return Boolean(Runtime.getWebSocketAPI());
22
+ },
23
+ isSupported: function (): boolean {
24
+ return Boolean(Runtime.getWebSocketAPI());
25
+ },
26
+ getSocket: function (url) {
27
+ return Runtime.createWebSocket(url);
28
+ },
29
+ });
30
+
31
+ var httpConfiguration = {
32
+ urls: URLSchemes.http,
33
+ handlesActivityChecks: false,
34
+ supportsPing: true,
35
+ isInitialized: function () {
36
+ return true;
37
+ },
38
+ };
39
+
40
+ export var streamingConfiguration = Collections.extend(
41
+ {
42
+ getSocket: function (url) {
43
+ return Runtime.HTTPFactory.createStreamingSocket(url);
44
+ },
45
+ },
46
+ httpConfiguration,
47
+ );
48
+ export var pollingConfiguration = Collections.extend(
49
+ {
50
+ getSocket: function (url) {
51
+ return Runtime.HTTPFactory.createPollingSocket(url);
52
+ },
53
+ },
54
+ httpConfiguration,
55
+ );
56
+
57
+ var xhrConfiguration = {
58
+ isSupported: function (): boolean {
59
+ return Runtime.isXHRSupported();
60
+ },
61
+ };
62
+
63
+ /** HTTP streaming transport using CORS-enabled XMLHttpRequest. */
64
+ var XHRStreamingTransport = new Transport(
65
+ <TransportHooks>(
66
+ Collections.extend({}, streamingConfiguration, xhrConfiguration)
67
+ ),
68
+ );
69
+
70
+ /** HTTP long-polling transport using CORS-enabled XMLHttpRequest. */
71
+ var XHRPollingTransport = new Transport(
72
+ <TransportHooks>(
73
+ Collections.extend({}, pollingConfiguration, xhrConfiguration)
74
+ ),
75
+ );
76
+
77
+ var Transports: TransportsTable = {
78
+ ws: WSTransport,
79
+ xhr_streaming: XHRStreamingTransport,
80
+ xhr_polling: XHRPollingTransport,
81
+ };
82
+
83
+ export default Transports;
@@ -0,0 +1,10 @@
1
+ import { default as EventsDispatcher } from 'core/events/dispatcher';
2
+ import Reachability from 'core/reachability';
3
+
4
+ export class NetInfo extends EventsDispatcher implements Reachability {
5
+ isOnline(): boolean {
6
+ return true;
7
+ }
8
+ }
9
+
10
+ export var Network = new NetInfo();
@@ -0,0 +1,68 @@
1
+ import Isomorphic from 'isomorphic/runtime';
2
+ import { Client as WebSocket } from 'faye-websocket';
3
+ import { XMLHttpRequest } from 'xmlhttprequest';
4
+ import Runtime from '../interface';
5
+ import { Network } from './net_info';
6
+ import xhrAuth from 'isomorphic/auth/xhr_auth';
7
+ import { AuthTransports } from 'core/auth/auth_transports';
8
+ import xhrTimeline from 'isomorphic/timeline/xhr_timeline';
9
+ import { randomInt } from 'crypto';
10
+
11
+ // Very verbose but until unavoidable until
12
+ // TypeScript 2.1, when spread attributes will be
13
+ // supported
14
+ const {
15
+ getDefaultStrategy,
16
+ Transports,
17
+ setup,
18
+ getProtocol,
19
+ isXHRSupported,
20
+ getLocalStorage,
21
+ createXHR,
22
+ createWebSocket,
23
+ addUnloadListener,
24
+ removeUnloadListener,
25
+ transportConnectionInitializer,
26
+ createSocketRequest,
27
+ HTTPFactory,
28
+ } = Isomorphic;
29
+
30
+ const NodeJS: Runtime = {
31
+ getDefaultStrategy,
32
+ Transports,
33
+ setup,
34
+ getProtocol,
35
+ isXHRSupported,
36
+ createSocketRequest,
37
+ getLocalStorage,
38
+ createXHR,
39
+ createWebSocket,
40
+ addUnloadListener,
41
+ removeUnloadListener,
42
+ transportConnectionInitializer,
43
+ HTTPFactory,
44
+
45
+ TimelineTransport: xhrTimeline,
46
+
47
+ getAuthorizers(): AuthTransports {
48
+ return { ajax: xhrAuth };
49
+ },
50
+
51
+ getWebSocketAPI() {
52
+ return WebSocket;
53
+ },
54
+
55
+ getXHRAPI() {
56
+ return XMLHttpRequest;
57
+ },
58
+
59
+ getNetwork() {
60
+ return Network;
61
+ },
62
+
63
+ randomInt(max: number): number {
64
+ return randomInt(max);
65
+ },
66
+ };
67
+
68
+ export default NodeJS;
@@ -0,0 +1,42 @@
1
+ import { default as NativeNetInfo } from '@react-native-community/netinfo';
2
+ import EventsDispatcher from 'core/events/dispatcher';
3
+ import Util from 'core/util';
4
+ import Reachability from 'core/reachability';
5
+
6
+ function hasOnlineConnectionState(connectionState): boolean {
7
+ return connectionState.type.toLowerCase() !== 'none';
8
+ }
9
+
10
+ export class NetInfo extends EventsDispatcher implements Reachability {
11
+ online: boolean;
12
+
13
+ constructor() {
14
+ super();
15
+ this.online = true;
16
+
17
+ NativeNetInfo.fetch().then((connectionState) => {
18
+ this.online = hasOnlineConnectionState(connectionState);
19
+ });
20
+
21
+ NativeNetInfo.addEventListener((connectionState) => {
22
+ var isNowOnline = hasOnlineConnectionState(connectionState);
23
+
24
+ // React Native counts the switch from Wi-Fi to Cellular
25
+ // as a state change. Return if current and previous states
26
+ // are both online/offline
27
+ if (this.online === isNowOnline) return;
28
+ this.online = isNowOnline;
29
+ if (this.online) {
30
+ this.emit('online');
31
+ } else {
32
+ this.emit('offline');
33
+ }
34
+ });
35
+ }
36
+
37
+ isOnline(): boolean {
38
+ return this.online;
39
+ }
40
+ }
41
+
42
+ export var Network = new NetInfo();
@@ -0,0 +1,65 @@
1
+ import Isomorphic from 'isomorphic/runtime';
2
+ import Runtime from '../interface';
3
+ import { Network } from './net_info';
4
+ import xhrAuth from 'isomorphic/auth/xhr_auth';
5
+ import { AuthTransports } from 'core/auth/auth_transports';
6
+ import xhrTimeline from 'isomorphic/timeline/xhr_timeline';
7
+
8
+ // Very verbose but until unavoidable until
9
+ // TypeScript 2.1, when spread attributes will be
10
+ // supported
11
+ const {
12
+ getDefaultStrategy,
13
+ Transports,
14
+ setup,
15
+ getProtocol,
16
+ isXHRSupported,
17
+ getLocalStorage,
18
+ createXHR,
19
+ createWebSocket,
20
+ addUnloadListener,
21
+ removeUnloadListener,
22
+ transportConnectionInitializer,
23
+ createSocketRequest,
24
+ HTTPFactory,
25
+ } = Isomorphic;
26
+
27
+ const ReactNative: Runtime = {
28
+ getDefaultStrategy,
29
+ Transports,
30
+ setup,
31
+ getProtocol,
32
+ isXHRSupported,
33
+ getLocalStorage,
34
+ createXHR,
35
+ createWebSocket,
36
+ addUnloadListener,
37
+ removeUnloadListener,
38
+ transportConnectionInitializer,
39
+ createSocketRequest,
40
+ HTTPFactory,
41
+
42
+ TimelineTransport: xhrTimeline,
43
+
44
+ getAuthorizers(): AuthTransports {
45
+ return { ajax: xhrAuth };
46
+ },
47
+
48
+ getWebSocketAPI() {
49
+ return WebSocket;
50
+ },
51
+
52
+ getXHRAPI() {
53
+ return XMLHttpRequest;
54
+ },
55
+
56
+ getNetwork() {
57
+ return Network;
58
+ },
59
+
60
+ randomInt(max: number): number {
61
+ return Math.floor(Math.random() * max);
62
+ },
63
+ };
64
+
65
+ export default ReactNative;
@@ -0,0 +1,51 @@
1
+ import Browser from '../browser';
2
+ import Logger from 'core/logger';
3
+ import JSONPRequest from '../dom/jsonp_request';
4
+ import { ScriptReceivers } from '../dom/script_receiver_factory';
5
+ import { AuthTransport } from 'core/auth/auth_transports';
6
+ import {
7
+ AuthRequestType,
8
+ AuthTransportCallback,
9
+ InternalAuthOptions,
10
+ } from 'core/auth/options';
11
+
12
+ var jsonp: AuthTransport = function (
13
+ context: Browser,
14
+ query: string,
15
+ authOptions: InternalAuthOptions,
16
+ authRequestType: AuthRequestType,
17
+ callback: AuthTransportCallback,
18
+ ) {
19
+ if (
20
+ authOptions.headers !== undefined ||
21
+ authOptions.headersProvider != null
22
+ ) {
23
+ Logger.warn(
24
+ `To send headers with the ${authRequestType.toString()} request, you must use AJAX, rather than JSONP.`,
25
+ );
26
+ }
27
+
28
+ var callbackName = context.nextAuthCallbackID.toString();
29
+ context.nextAuthCallbackID++;
30
+
31
+ var document = context.getDocument();
32
+ var script = document.createElement('script');
33
+ // Hacked wrapper.
34
+ context.auth_callbacks[callbackName] = function (data) {
35
+ callback(null, data);
36
+ };
37
+
38
+ var callback_name = "Pusher.auth_callbacks['" + callbackName + "']";
39
+ script.src =
40
+ authOptions.endpoint +
41
+ '?callback=' +
42
+ encodeURIComponent(callback_name) +
43
+ '&' +
44
+ query;
45
+
46
+ var head =
47
+ document.getElementsByTagName('head')[0] || document.documentElement;
48
+ head.insertBefore(script, head.firstChild);
49
+ };
50
+
51
+ export default jsonp;
@@ -0,0 +1,24 @@
1
+ import AbstractRuntime from 'runtimes/interface';
2
+ import { ScriptReceiverFactory } from './dom/script_receiver_factory';
3
+ import ScriptRequest from './dom/script_request';
4
+ import JSONPRequest from './dom/jsonp_request';
5
+ import Ajax from 'core/http/ajax';
6
+
7
+ interface Browser extends AbstractRuntime {
8
+ // for jsonp auth
9
+ nextAuthCallbackID: number;
10
+ auth_callbacks: any;
11
+ ScriptReceivers: ScriptReceiverFactory;
12
+ DependenciesReceivers: ScriptReceiverFactory;
13
+ onDocumentBody(callback: Function);
14
+ getDocument(): any;
15
+
16
+ createJSONPRequest(url: string, data: any): JSONPRequest;
17
+ createScriptRequest(src: string): ScriptRequest;
18
+
19
+ isXDRSupported(useTLS?: boolean): boolean;
20
+ createXMLHttpRequest(): Ajax;
21
+ createMicrosoftXHR(): Ajax;
22
+ }
23
+
24
+ export default Browser;
@@ -0,0 +1,201 @@
1
+ import * as Collections from 'core/utils/collections';
2
+ import TransportManager from 'core/transports/transport_manager';
3
+ import Strategy from 'core/strategies/strategy';
4
+ import StrategyOptions from 'core/strategies/strategy_options';
5
+ import SequentialStrategy from 'core/strategies/sequential_strategy';
6
+ import BestConnectedEverStrategy from 'core/strategies/best_connected_ever_strategy';
7
+ import WebSocketPrioritizedCachedStrategy, {
8
+ TransportStrategyDictionary,
9
+ } from 'core/strategies/websocket_prioritized_cached_strategy';
10
+ import DelayedStrategy from 'core/strategies/delayed_strategy';
11
+ import IfStrategy from 'core/strategies/if_strategy';
12
+ import FirstConnectedStrategy from 'core/strategies/first_connected_strategy';
13
+ import { Config } from 'core/config';
14
+
15
+ function testSupportsStrategy(strategy: Strategy) {
16
+ return function () {
17
+ return strategy.isSupported();
18
+ };
19
+ }
20
+
21
+ var getDefaultStrategy = function (
22
+ config: Config,
23
+ baseOptions: StrategyOptions,
24
+ defineTransport: Function,
25
+ ): Strategy {
26
+ var definedTransports = <TransportStrategyDictionary>{};
27
+
28
+ function defineTransportStrategy(
29
+ name: string,
30
+ type: string,
31
+ priority: number,
32
+ options: StrategyOptions,
33
+ manager?: TransportManager,
34
+ ) {
35
+ var transport = defineTransport(
36
+ config,
37
+ name,
38
+ type,
39
+ priority,
40
+ options,
41
+ manager,
42
+ );
43
+
44
+ definedTransports[name] = transport;
45
+
46
+ return transport;
47
+ }
48
+
49
+ var ws_options: StrategyOptions = Object.assign({}, baseOptions, {
50
+ hostNonTLS: config.wsHost + ':' + config.wsPort,
51
+ hostTLS: config.wsHost + ':' + config.wssPort,
52
+ httpPath: config.wsPath,
53
+ });
54
+ var wss_options: StrategyOptions = Object.assign({}, ws_options, {
55
+ useTLS: true,
56
+ });
57
+ var sockjs_options: StrategyOptions = Object.assign({}, baseOptions, {
58
+ hostNonTLS: config.httpHost + ':' + config.httpPort,
59
+ hostTLS: config.httpHost + ':' + config.httpsPort,
60
+ httpPath: config.httpPath,
61
+ });
62
+
63
+ var timeouts = {
64
+ loop: true,
65
+ timeout: 15000,
66
+ timeoutLimit: 60000,
67
+ };
68
+
69
+ var ws_manager = new TransportManager({
70
+ minPingDelay: 10000,
71
+ maxPingDelay: config.activityTimeout,
72
+ });
73
+ var streaming_manager = new TransportManager({
74
+ lives: 2,
75
+ minPingDelay: 10000,
76
+ maxPingDelay: config.activityTimeout,
77
+ });
78
+
79
+ var ws_transport = defineTransportStrategy(
80
+ 'ws',
81
+ 'ws',
82
+ 3,
83
+ ws_options,
84
+ ws_manager,
85
+ );
86
+ var wss_transport = defineTransportStrategy(
87
+ 'wss',
88
+ 'ws',
89
+ 3,
90
+ wss_options,
91
+ ws_manager,
92
+ );
93
+ var sockjs_transport = defineTransportStrategy(
94
+ 'sockjs',
95
+ 'sockjs',
96
+ 1,
97
+ sockjs_options,
98
+ );
99
+ var xhr_streaming_transport = defineTransportStrategy(
100
+ 'xhr_streaming',
101
+ 'xhr_streaming',
102
+ 1,
103
+ sockjs_options,
104
+ streaming_manager,
105
+ );
106
+ var xdr_streaming_transport = defineTransportStrategy(
107
+ 'xdr_streaming',
108
+ 'xdr_streaming',
109
+ 1,
110
+ sockjs_options,
111
+ streaming_manager,
112
+ );
113
+ var xhr_polling_transport = defineTransportStrategy(
114
+ 'xhr_polling',
115
+ 'xhr_polling',
116
+ 1,
117
+ sockjs_options,
118
+ );
119
+ var xdr_polling_transport = defineTransportStrategy(
120
+ 'xdr_polling',
121
+ 'xdr_polling',
122
+ 1,
123
+ sockjs_options,
124
+ );
125
+
126
+ var ws_loop = new SequentialStrategy([ws_transport], timeouts);
127
+ var wss_loop = new SequentialStrategy([wss_transport], timeouts);
128
+ var sockjs_loop = new SequentialStrategy([sockjs_transport], timeouts);
129
+ var streaming_loop = new SequentialStrategy(
130
+ [
131
+ new IfStrategy(
132
+ testSupportsStrategy(xhr_streaming_transport),
133
+ xhr_streaming_transport,
134
+ xdr_streaming_transport,
135
+ ),
136
+ ],
137
+ timeouts,
138
+ );
139
+ var polling_loop = new SequentialStrategy(
140
+ [
141
+ new IfStrategy(
142
+ testSupportsStrategy(xhr_polling_transport),
143
+ xhr_polling_transport,
144
+ xdr_polling_transport,
145
+ ),
146
+ ],
147
+ timeouts,
148
+ );
149
+
150
+ var http_loop = new SequentialStrategy(
151
+ [
152
+ new IfStrategy(
153
+ testSupportsStrategy(streaming_loop),
154
+ new BestConnectedEverStrategy([
155
+ streaming_loop,
156
+ new DelayedStrategy(polling_loop, { delay: 4000 }),
157
+ ]),
158
+ polling_loop,
159
+ ),
160
+ ],
161
+ timeouts,
162
+ );
163
+
164
+ var http_fallback_loop = new IfStrategy(
165
+ testSupportsStrategy(http_loop),
166
+ http_loop,
167
+ sockjs_loop,
168
+ );
169
+
170
+ var wsStrategy;
171
+ if (baseOptions.useTLS) {
172
+ wsStrategy = new BestConnectedEverStrategy([
173
+ ws_loop,
174
+ new DelayedStrategy(http_fallback_loop, { delay: 2000 }),
175
+ ]);
176
+ } else {
177
+ wsStrategy = new BestConnectedEverStrategy([
178
+ ws_loop,
179
+ new DelayedStrategy(wss_loop, { delay: 2000 }),
180
+ new DelayedStrategy(http_fallback_loop, { delay: 5000 }),
181
+ ]);
182
+ }
183
+
184
+ return new WebSocketPrioritizedCachedStrategy(
185
+ new FirstConnectedStrategy(
186
+ new IfStrategy(
187
+ testSupportsStrategy(ws_transport),
188
+ wsStrategy,
189
+ http_fallback_loop,
190
+ ),
191
+ ),
192
+ definedTransports,
193
+ {
194
+ ttl: 1800000,
195
+ timeline: baseOptions.timeline,
196
+ useTLS: baseOptions.useTLS,
197
+ },
198
+ );
199
+ };
200
+
201
+ export default getDefaultStrategy;
@@ -0,0 +1,16 @@
1
+ import { ScriptReceiverFactory } from './script_receiver_factory';
2
+ import Defaults from 'core/defaults';
3
+ import DependencyLoader from './dependency_loader';
4
+
5
+ export var DependenciesReceivers = new ScriptReceiverFactory(
6
+ '_pusher_dependencies',
7
+ 'Pusher.DependenciesReceivers',
8
+ );
9
+
10
+ export var Dependencies = new DependencyLoader({
11
+ cdn_http: Defaults.cdn_http,
12
+ cdn_https: Defaults.cdn_https,
13
+ version: Defaults.VERSION,
14
+ suffix: Defaults.dependency_suffix,
15
+ receivers: DependenciesReceivers,
16
+ });