@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
package/tsconfig.json ADDED
@@ -0,0 +1,18 @@
1
+ {
2
+ "compilerOptions": {
3
+ "sourceMap": true,
4
+ "module": "es6",
5
+ "declaration": true,
6
+ "declarationDir": "types",
7
+ "target": "ES6",
8
+ "removeComments": true,
9
+ "moduleResolution": "node",
10
+ "baseUrl": "src",
11
+ "paths": {
12
+ "runtime": ["runtimes/web/index.ts"],
13
+ "*": ["*", "runtimes/*"]
14
+ },
15
+ "lib": ["ScriptHost", "DOM", "ES5"]
16
+ },
17
+ "exclude": ["node_modules"]
18
+ }
@@ -0,0 +1 @@
1
+ export declare var Dependencies: {};
@@ -0,0 +1,4 @@
1
+ import Pusher from '../../../src/core/pusher';
2
+ export default class PusherIntegration extends Pusher {
3
+ static Integration: any;
4
+ }
@@ -0,0 +1,9 @@
1
+ import AbstractRuntime from '../../runtimes/interface';
2
+ import { AuthRequestType, InternalAuthOptions } from './options';
3
+ interface AuthTransport {
4
+ (context: AbstractRuntime, query: string, authOptions: InternalAuthOptions, authRequestType: AuthRequestType, callback: Function): void;
5
+ }
6
+ interface AuthTransports {
7
+ [index: string]: AuthTransport;
8
+ }
9
+ export { AuthTransport, AuthTransports };
@@ -0,0 +1,3 @@
1
+ import { InternalAuthOptions, ChannelAuthorizationHandler } from './options';
2
+ declare const ChannelAuthorizer: (authOptions: InternalAuthOptions) => ChannelAuthorizationHandler;
3
+ export default ChannelAuthorizer;
@@ -0,0 +1,18 @@
1
+ import Channel from '../channels/channel';
2
+ import { ChannelAuthorizationCallback, ChannelAuthorizationHandler, InternalAuthOptions } from './options';
3
+ export interface DeprecatedChannelAuthorizer {
4
+ authorize(socketId: string, callback: ChannelAuthorizationCallback): void;
5
+ }
6
+ export interface ChannelAuthorizerGenerator {
7
+ (channel: Channel, options: DeprecatedAuthorizerOptions): DeprecatedChannelAuthorizer;
8
+ }
9
+ export interface DeprecatedAuthOptions {
10
+ params?: any;
11
+ headers?: any;
12
+ }
13
+ export interface DeprecatedAuthorizerOptions {
14
+ authTransport: 'ajax' | 'jsonp';
15
+ authEndpoint: string;
16
+ auth?: DeprecatedAuthOptions;
17
+ }
18
+ export declare const ChannelAuthorizerProxy: (pusher: any, authOptions: InternalAuthOptions, channelAuthorizerGenerator: ChannelAuthorizerGenerator) => ChannelAuthorizationHandler;
@@ -0,0 +1,48 @@
1
+ export declare enum AuthRequestType {
2
+ UserAuthentication = "user-authentication",
3
+ ChannelAuthorization = "channel-authorization"
4
+ }
5
+ export interface ChannelAuthorizationData {
6
+ auth: string;
7
+ channel_data?: string;
8
+ shared_secret?: string;
9
+ }
10
+ export type ChannelAuthorizationCallback = (error: Error | null, authData: ChannelAuthorizationData | null) => void;
11
+ export interface ChannelAuthorizationRequestParams {
12
+ socketId: string;
13
+ channelName: string;
14
+ }
15
+ export interface ChannelAuthorizationHandler {
16
+ (params: ChannelAuthorizationRequestParams, callback: ChannelAuthorizationCallback): void;
17
+ }
18
+ export interface UserAuthenticationData {
19
+ auth: string;
20
+ user_data: string;
21
+ }
22
+ export type UserAuthenticationCallback = (error: Error | null, authData: UserAuthenticationData | null) => void;
23
+ export interface UserAuthenticationRequestParams {
24
+ socketId: string;
25
+ }
26
+ export interface UserAuthenticationHandler {
27
+ (params: UserAuthenticationRequestParams, callback: UserAuthenticationCallback): void;
28
+ }
29
+ export type AuthTransportCallback = ChannelAuthorizationCallback | UserAuthenticationCallback;
30
+ export interface AuthOptionsT<AuthHandler> {
31
+ transport: 'ajax' | 'jsonp';
32
+ endpoint: string;
33
+ params?: any;
34
+ headers?: any;
35
+ paramsProvider?: () => any;
36
+ headersProvider?: () => any;
37
+ customHandler?: AuthHandler;
38
+ }
39
+ export declare type UserAuthenticationOptions = AuthOptionsT<UserAuthenticationHandler>;
40
+ export declare type ChannelAuthorizationOptions = AuthOptionsT<ChannelAuthorizationHandler>;
41
+ export interface InternalAuthOptions {
42
+ transport: 'ajax' | 'jsonp';
43
+ endpoint: string;
44
+ params?: any;
45
+ headers?: any;
46
+ paramsProvider?: () => any;
47
+ headersProvider?: () => any;
48
+ }
@@ -0,0 +1,3 @@
1
+ import { InternalAuthOptions, UserAuthenticationHandler } from './options';
2
+ declare const UserAuthenticator: (authOptions: InternalAuthOptions) => UserAuthenticationHandler;
3
+ export default UserAuthenticator;
@@ -0,0 +1 @@
1
+ export default function encode(s: any): string;
@@ -0,0 +1,25 @@
1
+ import { default as EventsDispatcher } from '../events/dispatcher';
2
+ import Pusher from '../pusher';
3
+ import { PusherEvent } from '../connection/protocol/message-types';
4
+ import { ChannelAuthorizationCallback } from '../auth/options';
5
+ import { FilterNode } from './filter';
6
+ export default class Channel extends EventsDispatcher {
7
+ name: string;
8
+ pusher: Pusher;
9
+ subscribed: boolean;
10
+ subscriptionPending: boolean;
11
+ subscriptionCancelled: boolean;
12
+ subscriptionCount: null;
13
+ tagsFilter: FilterNode | null;
14
+ constructor(name: string, pusher: Pusher);
15
+ authorize(socketId: string, callback: ChannelAuthorizationCallback): void;
16
+ trigger(event: string, data: any): boolean;
17
+ disconnect(): void;
18
+ handleEvent(event: PusherEvent): void;
19
+ handleSubscriptionSucceededEvent(event: PusherEvent): void;
20
+ handleSubscriptionCountEvent(event: PusherEvent): void;
21
+ subscribe(): void;
22
+ unsubscribe(): void;
23
+ cancelSubscription(): void;
24
+ reinstateSubscription(): void;
25
+ }
@@ -0,0 +1,5 @@
1
+ import Channel from './channel';
2
+ interface ChannelTable {
3
+ [index: string]: Channel;
4
+ }
5
+ export default ChannelTable;
@@ -0,0 +1,12 @@
1
+ import Channel from './channel';
2
+ import ChannelTable from './channel_table';
3
+ import Pusher from '../pusher';
4
+ export default class Channels {
5
+ channels: ChannelTable;
6
+ constructor();
7
+ add(name: string, pusher: Pusher): Channel;
8
+ all(): Channel[];
9
+ find(name: string): Channel;
10
+ remove(name: string): Channel;
11
+ disconnect(): void;
12
+ }
@@ -0,0 +1,15 @@
1
+ import PrivateChannel from './private_channel';
2
+ import Pusher from '../pusher';
3
+ import { PusherEvent } from '../connection/protocol/message-types';
4
+ import { ChannelAuthorizationCallback } from '../auth/options';
5
+ import * as nacl from 'tweetnacl';
6
+ export default class EncryptedChannel extends PrivateChannel {
7
+ key: Uint8Array;
8
+ nacl: nacl;
9
+ constructor(name: string, pusher: Pusher, nacl: nacl);
10
+ authorize(socketId: string, callback: ChannelAuthorizationCallback): void;
11
+ trigger(event: string, data: any): boolean;
12
+ handleEvent(event: PusherEvent): void;
13
+ private handleEncryptedEvent;
14
+ getDataToEmit(bytes: Uint8Array): string;
15
+ }
@@ -0,0 +1,33 @@
1
+ export interface FilterNode {
2
+ op?: string;
3
+ key?: string;
4
+ cmp?: string;
5
+ val?: string;
6
+ vals?: string[];
7
+ nodes?: FilterNode[];
8
+ }
9
+ export declare const Filter: {
10
+ eq: (key: string, val: string) => FilterNode;
11
+ neq: (key: string, val: string) => FilterNode;
12
+ in: (key: string, vals: string[]) => FilterNode;
13
+ nin: (key: string, vals: string[]) => FilterNode;
14
+ exists: (key: string) => FilterNode;
15
+ notExists: (key: string) => FilterNode;
16
+ startsWith: (key: string, val: string) => FilterNode;
17
+ endsWith: (key: string, val: string) => FilterNode;
18
+ contains: (key: string, val: string) => FilterNode;
19
+ gt: (key: string, val: string) => FilterNode;
20
+ gte: (key: string, val: string) => FilterNode;
21
+ lt: (key: string, val: string) => FilterNode;
22
+ lte: (key: string, val: string) => FilterNode;
23
+ and: (...nodes: FilterNode[]) => FilterNode;
24
+ or: (...nodes: FilterNode[]) => FilterNode;
25
+ not: (node: FilterNode) => FilterNode;
26
+ };
27
+ export declare function validateFilter(filter: FilterNode): string | null;
28
+ export declare const FilterExamples: {
29
+ eventType: (type: string) => FilterNode;
30
+ eventTypes: (types: string[]) => FilterNode;
31
+ range: (key: string, min: string, max: string) => FilterNode;
32
+ importantEvents: (xGThreshold: string) => FilterNode;
33
+ };
@@ -0,0 +1,14 @@
1
+ export default class Members {
2
+ members: any;
3
+ count: number;
4
+ myID: any;
5
+ me: any;
6
+ constructor();
7
+ get(id: string): any;
8
+ each(callback: Function): void;
9
+ setMyID(id: string): void;
10
+ onSubscription(subscriptionData: any): void;
11
+ addMember(memberData: any): any;
12
+ removeMember(memberData: any): any;
13
+ reset(): void;
14
+ }
@@ -0,0 +1,4 @@
1
+ interface Metadata {
2
+ user_id?: string;
3
+ }
4
+ export default Metadata;
@@ -0,0 +1,13 @@
1
+ import PrivateChannel from './private_channel';
2
+ import Members from './members';
3
+ import Pusher from '../pusher';
4
+ import { PusherEvent } from '../connection/protocol/message-types';
5
+ export default class PresenceChannel extends PrivateChannel {
6
+ members: Members;
7
+ constructor(name: string, pusher: Pusher);
8
+ authorize(socketId: string, callback: Function): void;
9
+ handleEvent(event: PusherEvent): void;
10
+ handleInternalEvent(event: PusherEvent): void;
11
+ handleSubscriptionSucceededEvent(event: PusherEvent): void;
12
+ disconnect(): void;
13
+ }
@@ -0,0 +1,5 @@
1
+ import Channel from './channel';
2
+ import { ChannelAuthorizationCallback } from '../auth/options';
3
+ export default class PrivateChannel extends Channel {
4
+ authorize(socketId: string, callback: ChannelAuthorizationCallback): void;
5
+ }
@@ -0,0 +1,31 @@
1
+ import { Options } from './options';
2
+ import { ChannelAuthorizationHandler, UserAuthenticationHandler } from './auth/options';
3
+ import * as nacl from 'tweetnacl';
4
+ export type AuthTransport = 'ajax' | 'jsonp';
5
+ export type Transport = 'ws' | 'wss' | 'xhr_streaming' | 'xhr_polling' | 'sockjs';
6
+ export interface Config {
7
+ activityTimeout: number;
8
+ enableStats: boolean;
9
+ httpHost: string;
10
+ httpPath: string;
11
+ httpPort: number;
12
+ httpsPort: number;
13
+ pongTimeout: number;
14
+ statsHost: string;
15
+ unavailableTimeout: number;
16
+ useTLS: boolean;
17
+ wsHost: string;
18
+ wsPath: string;
19
+ wsPort: number;
20
+ wssPort: number;
21
+ userAuthenticator: UserAuthenticationHandler;
22
+ channelAuthorizer: ChannelAuthorizationHandler;
23
+ forceTLS?: boolean;
24
+ cluster?: string;
25
+ disabledTransports?: Transport[];
26
+ enabledTransports?: Transport[];
27
+ ignoreNullOrigin?: boolean;
28
+ nacl?: nacl;
29
+ timelineParams?: any;
30
+ }
31
+ export declare function getConfig(opts: Options, pusher: any): Config;
@@ -0,0 +1,18 @@
1
+ import HandshakePayload from './handshake/handshake_payload';
2
+ import Action from './protocol/action';
3
+ export interface ErrorCallbacks {
4
+ tls_only: (result: Action | HandshakePayload) => void;
5
+ refused: (result: Action | HandshakePayload) => void;
6
+ backoff: (result: Action | HandshakePayload) => void;
7
+ retry: (result: Action | HandshakePayload) => void;
8
+ }
9
+ export interface HandshakeCallbacks {
10
+ connected: (handshake: HandshakePayload) => void;
11
+ }
12
+ export interface ConnectionCallbacks {
13
+ message: (message: any) => void;
14
+ ping: () => void;
15
+ activity: () => void;
16
+ error: (error: any) => void;
17
+ closed: () => void;
18
+ }
@@ -0,0 +1,16 @@
1
+ import { default as EventsDispatcher } from '../events/dispatcher';
2
+ import TransportConnection from '../transports/transport_connection';
3
+ import Socket from '../socket';
4
+ export default class Connection extends EventsDispatcher implements Socket {
5
+ id: string;
6
+ transport: TransportConnection;
7
+ activityTimeout: number;
8
+ constructor(id: string, transport: TransportConnection);
9
+ handlesActivityChecks(): boolean;
10
+ send(data: any): boolean;
11
+ send_event(name: string, data: any, channel?: string): boolean;
12
+ ping(): void;
13
+ close(): void;
14
+ private bindListeners;
15
+ private handleCloseEvent;
16
+ }
@@ -0,0 +1,50 @@
1
+ import { default as EventsDispatcher } from '../events/dispatcher';
2
+ import { OneOffTimer as Timer } from '../utils/timers';
3
+ import Connection from './connection';
4
+ import Strategy from '../strategies/strategy';
5
+ import StrategyRunner from '../strategies/strategy_runner';
6
+ import Timeline from '../timeline/timeline';
7
+ import ConnectionManagerOptions from './connection_manager_options';
8
+ import { ErrorCallbacks, HandshakeCallbacks, ConnectionCallbacks } from './callbacks';
9
+ export default class ConnectionManager extends EventsDispatcher {
10
+ key: string;
11
+ options: ConnectionManagerOptions;
12
+ state: string;
13
+ connection: Connection;
14
+ usingTLS: boolean;
15
+ timeline: Timeline;
16
+ socket_id: string;
17
+ unavailableTimer: Timer;
18
+ activityTimer: Timer;
19
+ retryTimer: Timer;
20
+ activityTimeout: number;
21
+ strategy: Strategy;
22
+ runner: StrategyRunner;
23
+ errorCallbacks: ErrorCallbacks;
24
+ handshakeCallbacks: HandshakeCallbacks;
25
+ connectionCallbacks: ConnectionCallbacks;
26
+ constructor(key: string, options: ConnectionManagerOptions);
27
+ connect(): void;
28
+ send(data: any): boolean;
29
+ send_event(name: string, data: any, channel?: string): boolean;
30
+ disconnect(): void;
31
+ isUsingTLS(): boolean;
32
+ private startConnecting;
33
+ private abortConnecting;
34
+ private disconnectInternally;
35
+ private updateStrategy;
36
+ private retryIn;
37
+ private clearRetryTimer;
38
+ private setUnavailableTimer;
39
+ private clearUnavailableTimer;
40
+ private sendActivityCheck;
41
+ private resetActivityCheck;
42
+ private stopActivityCheck;
43
+ private buildConnectionCallbacks;
44
+ private buildHandshakeCallbacks;
45
+ private buildErrorCallbacks;
46
+ private setConnection;
47
+ private abandonConnection;
48
+ private updateState;
49
+ private shouldRetry;
50
+ }
@@ -0,0 +1,11 @@
1
+ import Timeline from '../timeline/timeline';
2
+ import Strategy from '../strategies/strategy';
3
+ interface ConnectionManagerOptions {
4
+ timeline: Timeline;
5
+ getStrategy: (StrategyOptions: any) => Strategy;
6
+ unavailableTimeout: number;
7
+ pongTimeout: number;
8
+ activityTimeout: number;
9
+ useTLS: boolean;
10
+ }
11
+ export default ConnectionManagerOptions;
@@ -0,0 +1,8 @@
1
+ import TransportConnection from '../../transports/transport_connection';
2
+ import Action from '../protocol/action';
3
+ import Connection from '../connection';
4
+ interface HandshakePayload extends Action {
5
+ transport: TransportConnection;
6
+ connection?: Connection;
7
+ }
8
+ export default HandshakePayload;
@@ -0,0 +1,12 @@
1
+ import TransportConnection from '../../transports/transport_connection';
2
+ export default class Handshake {
3
+ transport: TransportConnection;
4
+ callback: (HandshakePayload: any) => void;
5
+ onMessage: Function;
6
+ onClosed: Function;
7
+ constructor(transport: TransportConnection, callback: (HandshakePayload: any) => void);
8
+ close(): void;
9
+ private bindListeners;
10
+ private unbindListeners;
11
+ private finish;
12
+ }
@@ -0,0 +1,7 @@
1
+ interface Action {
2
+ action: string;
3
+ id?: string;
4
+ activityTimeout?: number;
5
+ error?: any;
6
+ }
7
+ export default Action;
@@ -0,0 +1,10 @@
1
+ interface PusherEvent {
2
+ event: string;
3
+ channel?: string;
4
+ data?: any;
5
+ user_id?: string;
6
+ rawMessage?: string;
7
+ sequence?: number;
8
+ conflation_key?: string;
9
+ }
10
+ export { PusherEvent };
@@ -0,0 +1,10 @@
1
+ import Action from './action';
2
+ import { PusherEvent } from './message-types';
3
+ declare const Protocol: {
4
+ decodeMessage: (messageEvent: MessageEvent) => PusherEvent;
5
+ encodeMessage: (event: PusherEvent) => string;
6
+ processHandshake: (messageEvent: MessageEvent) => Action;
7
+ getCloseAction: (closeEvent: any) => string;
8
+ getCloseError: (closeEvent: any) => any;
9
+ };
10
+ export default Protocol;
@@ -0,0 +1,26 @@
1
+ import { ChannelAuthorizationOptions, UserAuthenticationOptions } from './auth/options';
2
+ import { AuthTransport } from './config';
3
+ export interface DefaultConfig {
4
+ VERSION: string;
5
+ PROTOCOL: number;
6
+ wsPort: number;
7
+ wssPort: number;
8
+ wsPath: string;
9
+ httpHost: string;
10
+ httpPort: number;
11
+ httpsPort: number;
12
+ httpPath: string;
13
+ stats_host: string;
14
+ authEndpoint: string;
15
+ authTransport: AuthTransport;
16
+ activityTimeout: number;
17
+ pongTimeout: number;
18
+ unavailableTimeout: number;
19
+ userAuthentication: UserAuthenticationOptions;
20
+ channelAuthorization: ChannelAuthorizationOptions;
21
+ cdn_http?: string;
22
+ cdn_https?: string;
23
+ dependency_suffix?: string;
24
+ }
25
+ declare var Defaults: DefaultConfig;
26
+ export default Defaults;
@@ -0,0 +1,23 @@
1
+ import { CachedMessage, CacheSyncData, ChannelDeltaStats } from './types';
2
+ export default class ChannelState {
3
+ channelName: string;
4
+ conflationKey: string | null;
5
+ maxMessagesPerKey: number;
6
+ conflationCaches: Map<string, CachedMessage[]>;
7
+ baseMessage: string | null;
8
+ baseSequence: number | null;
9
+ lastSequence: number | null;
10
+ deltaCount: number;
11
+ fullMessageCount: number;
12
+ constructor(channelName: string);
13
+ initializeFromCacheSync(data: CacheSyncData): void;
14
+ setBase(message: string, sequence: number): void;
15
+ getBaseMessage(conflationKeyValue?: string, baseIndex?: number): string | null;
16
+ updateConflationCache(conflationKeyValue: string | undefined, message: string, sequence: number): void;
17
+ hasBase(): boolean;
18
+ isValidSequence(sequence: number): boolean;
19
+ updateSequence(sequence: number): void;
20
+ recordDelta(): void;
21
+ recordFullMessage(): void;
22
+ getStats(): ChannelDeltaStats;
23
+ }
@@ -0,0 +1,12 @@
1
+ declare function base64ToBytes(base64: string): Uint8Array;
2
+ declare function bytesToString(bytes: Uint8Array | number[]): string;
3
+ declare function stringToBytes(str: string): Uint8Array;
4
+ export declare class FossilDeltaDecoder {
5
+ static isAvailable(): boolean;
6
+ static apply(base: string | Uint8Array, delta: string | Uint8Array): string;
7
+ }
8
+ export declare class Xdelta3Decoder {
9
+ static isAvailable(): boolean;
10
+ static apply(base: string | Uint8Array, delta: string | Uint8Array): string;
11
+ }
12
+ export { base64ToBytes, bytesToString, stringToBytes };
@@ -0,0 +1,4 @@
1
+ export { default as DeltaCompressionManager } from './manager';
2
+ export { default as ChannelState } from './channel_state';
3
+ export { FossilDeltaDecoder, Xdelta3Decoder } from './decoders';
4
+ export * from './types';
@@ -0,0 +1,27 @@
1
+ import { PusherEvent } from '../connection/protocol/message-types';
2
+ import { DeltaOptions, DeltaStats, DeltaMessage, DeltaAlgorithm, CacheSyncData } from './types';
3
+ export default class DeltaCompressionManager {
4
+ private options;
5
+ private enabled;
6
+ private channelStates;
7
+ private stats;
8
+ private availableAlgorithms;
9
+ private sendEventCallback;
10
+ constructor(options: DeltaOptions, sendEventCallback: (event: string, data: any) => boolean);
11
+ private detectAvailableAlgorithms;
12
+ enable(): void;
13
+ disable(): void;
14
+ handleEnabled(data: any): void;
15
+ handleCacheSync(channel: string, data: CacheSyncData): void;
16
+ handleDeltaMessage(channel: string, deltaData: DeltaMessage): PusherEvent | null;
17
+ handleFullMessage(channel: string, rawMessage: string, sequence?: number, conflationKey?: string): void;
18
+ private requestResync;
19
+ private updateStats;
20
+ getStats(): DeltaStats;
21
+ resetStats(): void;
22
+ clearChannelState(channel?: string): void;
23
+ isEnabled(): boolean;
24
+ getAvailableAlgorithms(): DeltaAlgorithm[];
25
+ private log;
26
+ private error;
27
+ }
@@ -0,0 +1,50 @@
1
+ export type DeltaAlgorithm = 'fossil' | 'xdelta3';
2
+ export interface DeltaOptions {
3
+ enabled?: boolean;
4
+ algorithms?: DeltaAlgorithm[];
5
+ debug?: boolean;
6
+ onStats?: (stats: DeltaStats) => void;
7
+ onError?: (error: any) => void;
8
+ }
9
+ export interface DeltaStats {
10
+ totalMessages: number;
11
+ deltaMessages: number;
12
+ fullMessages: number;
13
+ totalBytesWithoutCompression: number;
14
+ totalBytesWithCompression: number;
15
+ bandwidthSaved: number;
16
+ bandwidthSavedPercent: number;
17
+ errors: number;
18
+ channelCount: number;
19
+ channels: ChannelDeltaStats[];
20
+ }
21
+ export interface ChannelDeltaStats {
22
+ channelName: string;
23
+ conflationKey: string | null;
24
+ conflationGroupCount: number;
25
+ deltaCount: number;
26
+ fullMessageCount: number;
27
+ totalMessages: number;
28
+ }
29
+ export interface DeltaMessage {
30
+ event: string;
31
+ delta: string;
32
+ seq: number;
33
+ algorithm?: DeltaAlgorithm;
34
+ conflation_key?: string;
35
+ base_index?: number;
36
+ }
37
+ export interface CacheSyncData {
38
+ conflation_key?: string;
39
+ max_messages_per_key?: number;
40
+ states?: {
41
+ [key: string]: Array<{
42
+ content: string;
43
+ seq: number;
44
+ }>;
45
+ };
46
+ }
47
+ export interface CachedMessage {
48
+ content: string;
49
+ sequence: number;
50
+ }
@@ -0,0 +1,28 @@
1
+ export declare class BadEventName extends Error {
2
+ constructor(msg?: string);
3
+ }
4
+ export declare class BadChannelName extends Error {
5
+ constructor(msg?: string);
6
+ }
7
+ export declare class RequestTimedOut extends Error {
8
+ constructor(msg?: string);
9
+ }
10
+ export declare class TransportPriorityTooLow extends Error {
11
+ constructor(msg?: string);
12
+ }
13
+ export declare class TransportClosed extends Error {
14
+ constructor(msg?: string);
15
+ }
16
+ export declare class UnsupportedFeature extends Error {
17
+ constructor(msg?: string);
18
+ }
19
+ export declare class UnsupportedTransport extends Error {
20
+ constructor(msg?: string);
21
+ }
22
+ export declare class UnsupportedStrategy extends Error {
23
+ constructor(msg?: string);
24
+ }
25
+ export declare class HTTPAuthError extends Error {
26
+ status: number;
27
+ constructor(status: number, msg?: string);
28
+ }
@@ -0,0 +1,5 @@
1
+ interface Callback {
2
+ fn: Function;
3
+ context: any;
4
+ }
5
+ export default Callback;
@@ -0,0 +1,11 @@
1
+ import Callback from './callback';
2
+ import CallbackTable from './callback_table';
3
+ export default class CallbackRegistry {
4
+ _callbacks: CallbackTable;
5
+ constructor();
6
+ get(name: string): Callback[];
7
+ add(name: string, callback: Function, context: any): void;
8
+ remove(name?: string, callback?: Function, context?: any): void;
9
+ private removeCallback;
10
+ private removeAllCallbacks;
11
+ }
@@ -0,0 +1,5 @@
1
+ import Callback from './callback';
2
+ interface CallbackTable {
3
+ [index: string]: Callback[];
4
+ }
5
+ export default CallbackTable;