@cendarsoss/pusher-js 8.4.13 → 8.4.14

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 (397) hide show
  1. package/CHANGELOG.md +928 -928
  2. package/DELTA_USAGE.md +0 -0
  3. package/IMPORT_GUIDE.md +0 -0
  4. package/bun.lock +1819 -171
  5. package/dist/node/filter.js +2 -120
  6. package/dist/node/filter.js.map +1 -1
  7. package/dist/node/pusher.js +273 -917
  8. package/dist/node/pusher.js.map +1 -1
  9. package/dist/web/filter.mjs +2 -120
  10. package/dist/web/filter.mjs.map +1 -1
  11. package/dist/web/pusher.mjs +442 -1040
  12. package/dist/web/pusher.mjs.map +1 -1
  13. package/examples/delta-seamless-example.html +0 -0
  14. package/index.d.ts +12 -12
  15. package/interactive/package.json +2 -2
  16. package/interactive/public/bundle-entry.js +2 -6
  17. package/interactive/public/conflation-test.html +1 -3
  18. package/interactive/public/conflation-test.js +25 -26
  19. package/interactive/public/dist/bundle.js +21 -5845
  20. package/interactive/tsconfig.json +19 -0
  21. package/package.json +3 -3
  22. package/src/core/auth/auth_transports.js +2 -0
  23. package/src/core/auth/auth_transports.js.map +1 -0
  24. package/src/core/auth/channel_authorizer.js +35 -0
  25. package/src/core/auth/channel_authorizer.js.map +1 -0
  26. package/src/core/auth/deprecated_channel_authorizer.js +16 -0
  27. package/src/core/auth/deprecated_channel_authorizer.js.map +1 -0
  28. package/src/core/auth/options.js +6 -0
  29. package/src/core/auth/options.js.map +1 -0
  30. package/src/core/auth/user_authenticator.js +34 -0
  31. package/src/core/auth/user_authenticator.js.map +1 -0
  32. package/src/core/base64.js +40 -0
  33. package/src/core/base64.js.map +1 -0
  34. package/src/core/channels/channel.js +106 -0
  35. package/src/core/channels/channel.js.map +1 -0
  36. package/src/core/channels/channel_table.js +2 -0
  37. package/src/core/channels/channel_table.js.map +1 -0
  38. package/src/core/channels/channels.js +54 -0
  39. package/src/core/channels/channels.js.map +1 -0
  40. package/src/core/channels/encrypted_channel.js +91 -0
  41. package/src/core/channels/encrypted_channel.js.map +1 -0
  42. package/src/core/channels/filter.js +132 -0
  43. package/src/core/channels/filter.js.map +1 -0
  44. package/src/core/channels/members.js +52 -0
  45. package/src/core/channels/members.js.map +1 -0
  46. package/src/core/channels/metadata.js +2 -0
  47. package/src/core/channels/metadata.js.map +1 -0
  48. package/src/core/channels/presence_channel.js +97 -0
  49. package/src/core/channels/presence_channel.js.map +1 -0
  50. package/src/core/channels/private_channel.js +10 -0
  51. package/src/core/channels/private_channel.js.map +1 -0
  52. package/src/core/config.js +112 -0
  53. package/src/core/config.js.map +1 -0
  54. package/src/core/connection/callbacks.js +2 -0
  55. package/src/core/connection/callbacks.js.map +1 -0
  56. package/src/core/connection/connection.js +106 -0
  57. package/src/core/connection/connection.js.map +1 -0
  58. package/src/core/connection/connection_manager.js +255 -0
  59. package/src/core/connection/connection_manager.js.map +1 -0
  60. package/src/core/connection/connection_manager_options.js +2 -0
  61. package/src/core/connection/connection_manager_options.js.map +1 -0
  62. package/src/core/connection/handshake/handshake_payload.js +2 -0
  63. package/src/core/connection/handshake/handshake_payload.js.map +1 -0
  64. package/src/core/connection/handshake/index.js +54 -0
  65. package/src/core/connection/handshake/index.js.map +1 -0
  66. package/src/core/connection/protocol/action.js +2 -0
  67. package/src/core/connection/protocol/action.js.map +1 -0
  68. package/src/core/connection/protocol/message-types.js +2 -0
  69. package/src/core/connection/protocol/message-types.js.map +1 -0
  70. package/src/core/connection/protocol/protocol.js +102 -0
  71. package/src/core/connection/protocol/protocol.js.map +1 -0
  72. package/src/core/defaults.js +30 -0
  73. package/src/core/defaults.js.map +1 -0
  74. package/src/core/delta/channel_state.js +103 -0
  75. package/src/core/delta/channel_state.js.map +1 -0
  76. package/src/core/delta/channel_state.ts +3 -2
  77. package/src/core/delta/decoders.js +81 -0
  78. package/src/core/delta/decoders.js.map +1 -0
  79. package/{types/src/core/delta/index.d.ts → src/core/delta/index.js} +1 -0
  80. package/src/core/delta/index.js.map +1 -0
  81. package/src/core/delta/manager.js +327 -0
  82. package/src/core/delta/manager.js.map +1 -0
  83. package/src/core/delta/manager.ts +21 -40
  84. package/src/core/delta/types.js +2 -0
  85. package/src/core/delta/types.js.map +1 -0
  86. package/src/core/errors.js +56 -0
  87. package/src/core/errors.js.map +1 -0
  88. package/src/core/events/callback.js +2 -0
  89. package/src/core/events/callback.js.map +1 -0
  90. package/src/core/events/callback_registry.js +51 -0
  91. package/src/core/events/callback_registry.js.map +1 -0
  92. package/src/core/events/callback_table.js +2 -0
  93. package/src/core/events/callback_table.js.map +1 -0
  94. package/src/core/events/dispatcher.js +57 -0
  95. package/src/core/events/dispatcher.js.map +1 -0
  96. package/src/core/http/ajax.js +2 -0
  97. package/src/core/http/ajax.js.map +1 -0
  98. package/src/core/http/http_factory.js +2 -0
  99. package/src/core/http/http_factory.js.map +1 -0
  100. package/src/core/http/http_polling_socket.js +20 -0
  101. package/src/core/http/http_polling_socket.js.map +1 -0
  102. package/src/core/http/http_request.js +63 -0
  103. package/src/core/http/http_request.js.map +1 -0
  104. package/src/core/http/http_socket.js +171 -0
  105. package/src/core/http/http_socket.js.map +1 -0
  106. package/src/core/http/http_streaming_socket.js +16 -0
  107. package/src/core/http/http_streaming_socket.js.map +1 -0
  108. package/src/core/http/request_hooks.js +2 -0
  109. package/src/core/http/request_hooks.js.map +1 -0
  110. package/src/core/http/socket_hooks.js +2 -0
  111. package/src/core/http/socket_hooks.js.map +1 -0
  112. package/src/core/http/state.js +8 -0
  113. package/src/core/http/state.js.map +1 -0
  114. package/src/core/http/url_location.js +2 -0
  115. package/src/core/http/url_location.js.map +1 -0
  116. package/src/core/logger.js +53 -0
  117. package/src/core/logger.js.map +1 -0
  118. package/src/core/options.js +13 -0
  119. package/src/core/options.js.map +1 -0
  120. package/src/core/pusher-with-encryption.js +13 -1
  121. package/src/core/pusher-with-encryption.js.map +1 -0
  122. package/src/core/pusher.js +279 -10
  123. package/src/core/pusher.js.map +1 -0
  124. package/src/core/reachability.js +2 -0
  125. package/src/core/reachability.js.map +1 -0
  126. package/src/core/socket.js +2 -0
  127. package/src/core/socket.js.map +1 -0
  128. package/src/core/strategies/best_connected_ever_strategy.js +54 -0
  129. package/src/core/strategies/best_connected_ever_strategy.js.map +1 -0
  130. package/src/core/strategies/delayed_strategy.js +32 -0
  131. package/src/core/strategies/delayed_strategy.js.map +1 -0
  132. package/src/core/strategies/first_connected_strategy.js +18 -0
  133. package/src/core/strategies/first_connected_strategy.js.map +1 -0
  134. package/src/core/strategies/if_strategy.js +16 -0
  135. package/src/core/strategies/if_strategy.js.map +1 -0
  136. package/src/core/strategies/sequential_strategy.js +87 -0
  137. package/src/core/strategies/sequential_strategy.js.map +1 -0
  138. package/src/core/strategies/strategy.js +2 -0
  139. package/src/core/strategies/strategy.js.map +1 -0
  140. package/src/core/strategies/strategy_builder.js +42 -0
  141. package/src/core/strategies/strategy_builder.js.map +1 -0
  142. package/src/core/strategies/strategy_options.js +2 -0
  143. package/src/core/strategies/strategy_options.js.map +1 -0
  144. package/src/core/strategies/strategy_runner.js +2 -0
  145. package/src/core/strategies/strategy_runner.js.map +1 -0
  146. package/src/core/strategies/transport_strategy.js +97 -0
  147. package/src/core/strategies/transport_strategy.js.map +1 -0
  148. package/src/core/strategies/websocket_prioritized_cached_strategy.js +115 -0
  149. package/src/core/strategies/websocket_prioritized_cached_strategy.js.map +1 -0
  150. package/src/core/timeline/level.js +8 -0
  151. package/src/core/timeline/level.js.map +1 -0
  152. package/src/core/timeline/timeline.js +60 -0
  153. package/src/core/timeline/timeline.js.map +1 -0
  154. package/src/core/timeline/timeline_sender.js +14 -0
  155. package/src/core/timeline/timeline_sender.js.map +1 -0
  156. package/src/core/timeline/timeline_transport.js +2 -0
  157. package/src/core/timeline/timeline_transport.js.map +1 -0
  158. package/src/core/transports/assistant_to_the_transport_manager.js +42 -0
  159. package/src/core/transports/assistant_to_the_transport_manager.js.map +1 -0
  160. package/src/core/transports/ping_delay_options.js +2 -0
  161. package/src/core/transports/ping_delay_options.js.map +1 -0
  162. package/src/core/transports/transport.js +13 -0
  163. package/src/core/transports/transport.js.map +1 -0
  164. package/src/core/transports/transport_connection.js +146 -0
  165. package/src/core/transports/transport_connection.js.map +1 -0
  166. package/src/core/transports/transport_connection_options.js +2 -0
  167. package/src/core/transports/transport_connection_options.js.map +1 -0
  168. package/src/core/transports/transport_hooks.js +2 -0
  169. package/src/core/transports/transport_hooks.js.map +1 -0
  170. package/src/core/transports/transport_manager.js +20 -0
  171. package/src/core/transports/transport_manager.js.map +1 -0
  172. package/src/core/transports/transports_table.js +2 -0
  173. package/src/core/transports/transports_table.js.map +1 -0
  174. package/src/core/transports/url_scheme.js +2 -0
  175. package/src/core/transports/url_scheme.js.map +1 -0
  176. package/src/core/transports/url_schemes.js +37 -0
  177. package/src/core/transports/url_schemes.js.map +1 -0
  178. package/src/core/user.js +133 -0
  179. package/src/core/user.js.map +1 -0
  180. package/src/core/util.js +22 -0
  181. package/src/core/util.js.map +1 -0
  182. package/src/core/utils/collections.js +193 -0
  183. package/src/core/utils/collections.js.map +1 -0
  184. package/src/core/utils/factory.js +40 -0
  185. package/src/core/utils/factory.js.map +1 -0
  186. package/src/core/utils/flat_promise.js +10 -0
  187. package/src/core/utils/flat_promise.js.map +1 -0
  188. package/src/core/utils/timers/abstract_timer.js +21 -0
  189. package/src/core/utils/timers/abstract_timer.js.map +1 -0
  190. package/src/core/utils/timers/index.js +24 -0
  191. package/src/core/utils/timers/index.js.map +1 -0
  192. package/src/core/utils/timers/scheduling.js +2 -0
  193. package/src/core/utils/timers/scheduling.js.map +1 -0
  194. package/src/core/utils/timers/timed_callback.js +2 -0
  195. package/src/core/utils/timers/timed_callback.js.map +1 -0
  196. package/src/core/utils/url_store.js +38 -0
  197. package/src/core/utils/url_store.js.map +1 -0
  198. package/src/core/watchlist.js +25 -0
  199. package/src/core/watchlist.js.map +1 -0
  200. package/src/filter.js +2 -0
  201. package/src/filter.js.map +1 -0
  202. package/src/filter.ts +0 -0
  203. package/src/index.js +3 -0
  204. package/src/index.js.map +1 -0
  205. package/src/index.ts +1 -1
  206. package/src/runtimes/interface.js +2 -0
  207. package/src/runtimes/interface.js.map +1 -0
  208. package/src/runtimes/isomorphic/auth/xhr_auth.js +53 -0
  209. package/src/runtimes/isomorphic/auth/xhr_auth.js.map +1 -0
  210. package/src/runtimes/isomorphic/default_strategy.js +83 -0
  211. package/src/runtimes/isomorphic/default_strategy.js.map +1 -0
  212. package/src/runtimes/isomorphic/http/http.js +24 -0
  213. package/src/runtimes/isomorphic/http/http.js.map +1 -0
  214. package/src/runtimes/isomorphic/http/http_xhr_request.js +30 -0
  215. package/src/runtimes/isomorphic/http/http_xhr_request.js.map +1 -0
  216. package/src/runtimes/isomorphic/runtime.js +48 -0
  217. package/src/runtimes/isomorphic/runtime.js.map +1 -0
  218. package/src/runtimes/isomorphic/timeline/xhr_timeline.js +38 -0
  219. package/src/runtimes/isomorphic/timeline/xhr_timeline.js.map +1 -0
  220. package/src/runtimes/isomorphic/transports/transport_connection_initializer.js +13 -0
  221. package/src/runtimes/isomorphic/transports/transport_connection_initializer.js.map +1 -0
  222. package/src/runtimes/isomorphic/transports/transports.js +50 -0
  223. package/src/runtimes/isomorphic/transports/transports.js.map +1 -0
  224. package/src/runtimes/node/net_info.js +8 -0
  225. package/src/runtimes/node/net_info.js.map +1 -0
  226. package/src/runtimes/node/runtime.js +41 -0
  227. package/src/runtimes/node/runtime.js.map +1 -0
  228. package/src/runtimes/react-native/net_info.js +31 -0
  229. package/src/runtimes/react-native/net_info.js.map +1 -0
  230. package/src/runtimes/react-native/runtime.js +38 -0
  231. package/src/runtimes/react-native/runtime.js.map +1 -0
  232. package/src/runtimes/web/auth/jsonp_auth.js +25 -0
  233. package/src/runtimes/web/auth/jsonp_auth.js.map +1 -0
  234. package/src/runtimes/web/browser.js +2 -0
  235. package/src/runtimes/web/browser.js.map +1 -0
  236. package/src/runtimes/web/default_strategy.js +91 -0
  237. package/src/runtimes/web/default_strategy.js.map +1 -0
  238. package/src/runtimes/web/dom/dependencies.js +12 -0
  239. package/src/runtimes/web/dom/dependencies.js.map +1 -0
  240. package/src/runtimes/web/dom/dependency_loader.js +50 -0
  241. package/src/runtimes/web/dom/dependency_loader.js.map +1 -0
  242. package/src/runtimes/web/dom/jsonp_request.js +23 -0
  243. package/src/runtimes/web/dom/jsonp_request.js.map +1 -0
  244. package/src/runtimes/web/dom/script_receiver.js +2 -0
  245. package/src/runtimes/web/dom/script_receiver.js.map +1 -0
  246. package/src/runtimes/web/dom/script_receiver_factory.js +27 -0
  247. package/src/runtimes/web/dom/script_receiver_factory.js.map +1 -0
  248. package/src/runtimes/web/dom/script_request.js +61 -0
  249. package/src/runtimes/web/dom/script_request.js.map +1 -0
  250. package/src/runtimes/web/http/http.js +7 -0
  251. package/src/runtimes/web/http/http.js.map +1 -0
  252. package/src/runtimes/web/http/http_xdomain_request.js +33 -0
  253. package/src/runtimes/web/http/http_xdomain_request.js.map +1 -0
  254. package/src/runtimes/web/net_info.js +25 -0
  255. package/src/runtimes/web/net_info.js.map +1 -0
  256. package/src/runtimes/web/runtime.js +142 -0
  257. package/src/runtimes/web/runtime.js.map +1 -0
  258. package/src/runtimes/web/timeline/jsonp_timeline.js +26 -0
  259. package/src/runtimes/web/timeline/jsonp_timeline.js.map +1 -0
  260. package/src/runtimes/web/transports/transport_connection_initializer.js +30 -0
  261. package/src/runtimes/web/transports/transport_connection_initializer.js.map +1 -0
  262. package/src/runtimes/web/transports/transports.js +44 -0
  263. package/src/runtimes/web/transports/transports.js.map +1 -0
  264. package/src/runtimes/worker/auth/fetch_auth.js +44 -0
  265. package/src/runtimes/worker/auth/fetch_auth.js.map +1 -0
  266. package/src/runtimes/worker/net_info.js +8 -0
  267. package/src/runtimes/worker/net_info.js.map +1 -0
  268. package/src/runtimes/worker/runtime.js +43 -0
  269. package/src/runtimes/worker/runtime.js.map +1 -0
  270. package/src/runtimes/worker/timeline/fetch_timeline.js +31 -0
  271. package/src/runtimes/worker/timeline/fetch_timeline.js.map +1 -0
  272. package/tsconfig.json +24 -5
  273. package/vite.config.js +0 -0
  274. package/vite.config.node.js +0 -0
  275. package/interactive/public/delta-compression.js +0 -1090
  276. package/types/spec/javascripts/helpers/node/mock-dom-dependencies.d.ts +0 -1
  277. package/types/spec/javascripts/helpers/pusher_integration_class.d.ts +0 -4
  278. package/types/src/core/auth/auth_transports.d.ts +0 -9
  279. package/types/src/core/auth/channel_authorizer.d.ts +0 -3
  280. package/types/src/core/auth/deprecated_channel_authorizer.d.ts +0 -18
  281. package/types/src/core/auth/options.d.ts +0 -48
  282. package/types/src/core/auth/user_authenticator.d.ts +0 -3
  283. package/types/src/core/base64.d.ts +0 -1
  284. package/types/src/core/channels/channel.d.ts +0 -25
  285. package/types/src/core/channels/channel_table.d.ts +0 -5
  286. package/types/src/core/channels/channels.d.ts +0 -12
  287. package/types/src/core/channels/encrypted_channel.d.ts +0 -15
  288. package/types/src/core/channels/filter.d.ts +0 -33
  289. package/types/src/core/channels/members.d.ts +0 -14
  290. package/types/src/core/channels/metadata.d.ts +0 -4
  291. package/types/src/core/channels/presence_channel.d.ts +0 -13
  292. package/types/src/core/channels/private_channel.d.ts +0 -5
  293. package/types/src/core/config.d.ts +0 -31
  294. package/types/src/core/connection/callbacks.d.ts +0 -18
  295. package/types/src/core/connection/connection.d.ts +0 -16
  296. package/types/src/core/connection/connection_manager.d.ts +0 -50
  297. package/types/src/core/connection/connection_manager_options.d.ts +0 -11
  298. package/types/src/core/connection/handshake/handshake_payload.d.ts +0 -8
  299. package/types/src/core/connection/handshake/index.d.ts +0 -12
  300. package/types/src/core/connection/protocol/action.d.ts +0 -7
  301. package/types/src/core/connection/protocol/message-types.d.ts +0 -10
  302. package/types/src/core/connection/protocol/protocol.d.ts +0 -10
  303. package/types/src/core/defaults.d.ts +0 -26
  304. package/types/src/core/delta/channel_state.d.ts +0 -23
  305. package/types/src/core/delta/decoders.d.ts +0 -12
  306. package/types/src/core/delta/manager.d.ts +0 -27
  307. package/types/src/core/delta/types.d.ts +0 -50
  308. package/types/src/core/errors.d.ts +0 -28
  309. package/types/src/core/events/callback.d.ts +0 -5
  310. package/types/src/core/events/callback_registry.d.ts +0 -11
  311. package/types/src/core/events/callback_table.d.ts +0 -5
  312. package/types/src/core/events/dispatcher.d.ts +0 -14
  313. package/types/src/core/http/ajax.d.ts +0 -16
  314. package/types/src/core/http/http_factory.d.ts +0 -13
  315. package/types/src/core/http/http_polling_socket.d.ts +0 -3
  316. package/types/src/core/http/http_request.d.ts +0 -17
  317. package/types/src/core/http/http_socket.d.ts +0 -32
  318. package/types/src/core/http/http_streaming_socket.d.ts +0 -3
  319. package/types/src/core/http/request_hooks.d.ts +0 -6
  320. package/types/src/core/http/socket_hooks.d.ts +0 -8
  321. package/types/src/core/http/state.d.ts +0 -6
  322. package/types/src/core/http/url_location.d.ts +0 -5
  323. package/types/src/core/logger.d.ts +0 -11
  324. package/types/src/core/options.d.ts +0 -36
  325. package/types/src/core/pusher-with-encryption.d.ts +0 -5
  326. package/types/src/core/pusher.d.ts +0 -56
  327. package/types/src/core/reachability.d.ts +0 -5
  328. package/types/src/core/socket.d.ts +0 -12
  329. package/types/src/core/strategies/best_connected_ever_strategy.d.ts +0 -10
  330. package/types/src/core/strategies/delayed_strategy.d.ts +0 -15
  331. package/types/src/core/strategies/first_connected_strategy.d.ts +0 -8
  332. package/types/src/core/strategies/if_strategy.d.ts +0 -10
  333. package/types/src/core/strategies/sequential_strategy.d.ts +0 -16
  334. package/types/src/core/strategies/strategy.d.ts +0 -6
  335. package/types/src/core/strategies/strategy_builder.d.ts +0 -5
  336. package/types/src/core/strategies/strategy_options.d.ts +0 -16
  337. package/types/src/core/strategies/strategy_runner.d.ts +0 -5
  338. package/types/src/core/strategies/transport_strategy.d.ts +0 -15
  339. package/types/src/core/strategies/websocket_prioritized_cached_strategy.d.ts +0 -20
  340. package/types/src/core/timeline/level.d.ts +0 -6
  341. package/types/src/core/timeline/timeline.d.ts +0 -25
  342. package/types/src/core/timeline/timeline_sender.d.ts +0 -13
  343. package/types/src/core/timeline/timeline_transport.d.ts +0 -6
  344. package/types/src/core/transports/assistant_to_the_transport_manager.d.ts +0 -14
  345. package/types/src/core/transports/ping_delay_options.d.ts +0 -6
  346. package/types/src/core/transports/transport.d.ts +0 -8
  347. package/types/src/core/transports/transport_connection.d.ts +0 -35
  348. package/types/src/core/transports/transport_connection_options.d.ts +0 -6
  349. package/types/src/core/transports/transport_hooks.d.ts +0 -13
  350. package/types/src/core/transports/transport_manager.d.ts +0 -14
  351. package/types/src/core/transports/transports_table.d.ts +0 -10
  352. package/types/src/core/transports/url_scheme.d.ts +0 -11
  353. package/types/src/core/transports/url_schemes.d.ts +0 -4
  354. package/types/src/core/user.d.ts +0 -21
  355. package/types/src/core/util.d.ts +0 -8
  356. package/types/src/core/utils/collections.d.ts +0 -18
  357. package/types/src/core/utils/factory.d.ts +0 -29
  358. package/types/src/core/utils/flat_promise.d.ts +0 -6
  359. package/types/src/core/utils/timers/abstract_timer.d.ts +0 -10
  360. package/types/src/core/utils/timers/index.d.ts +0 -9
  361. package/types/src/core/utils/timers/scheduling.d.ts +0 -8
  362. package/types/src/core/utils/timers/timed_callback.d.ts +0 -4
  363. package/types/src/core/utils/url_store.d.ts +0 -4
  364. package/types/src/core/watchlist.d.ts +0 -8
  365. package/types/src/runtimes/interface.d.ts +0 -43
  366. package/types/src/runtimes/isomorphic/auth/xhr_auth.d.ts +0 -3
  367. package/types/src/runtimes/isomorphic/default_strategy.d.ts +0 -5
  368. package/types/src/runtimes/isomorphic/http/http.d.ts +0 -3
  369. package/types/src/runtimes/isomorphic/http/http_xhr_request.d.ts +0 -3
  370. package/types/src/runtimes/isomorphic/runtime.d.ts +0 -2
  371. package/types/src/runtimes/isomorphic/timeline/xhr_timeline.d.ts +0 -6
  372. package/types/src/runtimes/isomorphic/transports/transport_connection_initializer.d.ts +0 -1
  373. package/types/src/runtimes/isomorphic/transports/transports.d.ts +0 -5
  374. package/types/src/runtimes/node/net_info.d.ts +0 -6
  375. package/types/src/runtimes/node/runtime.d.ts +0 -3
  376. package/types/src/runtimes/react-native/net_info.d.ts +0 -8
  377. package/types/src/runtimes/react-native/runtime.d.ts +0 -3
  378. package/types/src/runtimes/web/auth/jsonp_auth.d.ts +0 -3
  379. package/types/src/runtimes/web/browser.d.ts +0 -19
  380. package/types/src/runtimes/web/default_strategy.d.ts +0 -5
  381. package/types/src/runtimes/web/dom/dependencies.d.ts +0 -4
  382. package/types/src/runtimes/web/dom/dependency_loader.d.ts +0 -10
  383. package/types/src/runtimes/web/dom/jsonp_request.d.ts +0 -10
  384. package/types/src/runtimes/web/dom/script_receiver.d.ts +0 -7
  385. package/types/src/runtimes/web/dom/script_receiver_factory.d.ts +0 -10
  386. package/types/src/runtimes/web/dom/script_request.d.ts +0 -9
  387. package/types/src/runtimes/web/http/http.d.ts +0 -2
  388. package/types/src/runtimes/web/http/http_xdomain_request.d.ts +0 -3
  389. package/types/src/runtimes/web/net_info.d.ts +0 -7
  390. package/types/src/runtimes/web/runtime.d.ts +0 -3
  391. package/types/src/runtimes/web/timeline/jsonp_timeline.d.ts +0 -6
  392. package/types/src/runtimes/web/transports/transport_connection_initializer.d.ts +0 -1
  393. package/types/src/runtimes/web/transports/transports.d.ts +0 -2
  394. package/types/src/runtimes/worker/auth/fetch_auth.d.ts +0 -3
  395. package/types/src/runtimes/worker/net_info.d.ts +0 -6
  396. package/types/src/runtimes/worker/runtime.d.ts +0 -3
  397. package/types/src/runtimes/worker/timeline/fetch_timeline.d.ts +0 -6
@@ -1,168 +1,75 @@
1
1
  const Filter = {
2
- // Comparison operators
3
- /**
4
- * Creates an equality comparison: key == val
5
- * @param key The tag key to compare
6
- * @param val The value to compare against
7
- * @returns FilterNode for equality comparison
8
- */
9
2
  eq: (key, val) => ({
10
3
  key,
11
4
  cmp: "eq",
12
5
  val
13
6
  }),
14
- /**
15
- * Creates an inequality comparison: key != val
16
- * @param key The tag key to compare
17
- * @param val The value to compare against
18
- * @returns FilterNode for inequality comparison
19
- */
20
7
  neq: (key, val) => ({
21
8
  key,
22
9
  cmp: "neq",
23
10
  val
24
11
  }),
25
- /**
26
- * Creates a set membership comparison: key in [vals...]
27
- * @param key The tag key to compare
28
- * @param vals Array of values for set membership
29
- * @returns FilterNode for set membership comparison
30
- */
31
12
  in: (key, vals) => ({
32
13
  key,
33
14
  cmp: "in",
34
15
  vals
35
16
  }),
36
- /**
37
- * Creates a set non-membership comparison: key not in [vals...]
38
- * @param key The tag key to compare
39
- * @param vals Array of values for set non-membership
40
- * @returns FilterNode for set non-membership comparison
41
- */
42
17
  nin: (key, vals) => ({
43
18
  key,
44
19
  cmp: "nin",
45
20
  vals
46
21
  }),
47
- /**
48
- * Creates an existence check: key exists
49
- * @param key The tag key to check for existence
50
- * @returns FilterNode for existence check
51
- */
52
22
  exists: (key) => ({
53
23
  key,
54
24
  cmp: "ex"
55
25
  }),
56
- /**
57
- * Creates a non-existence check: key does not exist
58
- * @param key The tag key to check for non-existence
59
- * @returns FilterNode for non-existence check
60
- */
61
26
  notExists: (key) => ({
62
27
  key,
63
28
  cmp: "nex"
64
29
  }),
65
- /**
66
- * Creates a starts-with comparison: key starts with val
67
- * @param key The tag key to compare
68
- * @param val The prefix to match
69
- * @returns FilterNode for starts-with comparison
70
- */
71
30
  startsWith: (key, val) => ({
72
31
  key,
73
32
  cmp: "sw",
74
33
  val
75
34
  }),
76
- /**
77
- * Creates an ends-with comparison: key ends with val
78
- * @param key The tag key to compare
79
- * @param val The suffix to match
80
- * @returns FilterNode for ends-with comparison
81
- */
82
35
  endsWith: (key, val) => ({
83
36
  key,
84
37
  cmp: "ew",
85
38
  val
86
39
  }),
87
- /**
88
- * Creates a contains comparison: key contains val
89
- * @param key The tag key to compare
90
- * @param val The substring to match
91
- * @returns FilterNode for contains comparison
92
- */
93
40
  contains: (key, val) => ({
94
41
  key,
95
42
  cmp: "ct",
96
43
  val
97
44
  }),
98
- /**
99
- * Creates a greater-than comparison: key > val (numeric)
100
- * @param key The tag key to compare
101
- * @param val The numeric value to compare against (as string)
102
- * @returns FilterNode for greater-than comparison
103
- */
104
45
  gt: (key, val) => ({
105
46
  key,
106
47
  cmp: "gt",
107
48
  val
108
49
  }),
109
- /**
110
- * Creates a greater-than-or-equal comparison: key >= val (numeric)
111
- * @param key The tag key to compare
112
- * @param val The numeric value to compare against (as string)
113
- * @returns FilterNode for greater-than-or-equal comparison
114
- */
115
50
  gte: (key, val) => ({
116
51
  key,
117
52
  cmp: "gte",
118
53
  val
119
54
  }),
120
- /**
121
- * Creates a less-than comparison: key < val (numeric)
122
- * @param key The tag key to compare
123
- * @param val The numeric value to compare against (as string)
124
- * @returns FilterNode for less-than comparison
125
- */
126
55
  lt: (key, val) => ({
127
56
  key,
128
57
  cmp: "lt",
129
58
  val
130
59
  }),
131
- /**
132
- * Creates a less-than-or-equal comparison: key <= val (numeric)
133
- * @param key The tag key to compare
134
- * @param val The numeric value to compare against (as string)
135
- * @returns FilterNode for less-than-or-equal comparison
136
- */
137
60
  lte: (key, val) => ({
138
61
  key,
139
62
  cmp: "lte",
140
63
  val
141
64
  }),
142
- // Logical operators
143
- /**
144
- * Creates an AND logical operation: all children must match
145
- * @param nodes Child filter nodes to combine with AND
146
- * @returns FilterNode for AND operation
147
- */
148
65
  and: (...nodes) => ({
149
66
  op: "and",
150
67
  nodes
151
68
  }),
152
- /**
153
- * Creates an OR logical operation: at least one child must match
154
- * @param nodes Child filter nodes to combine with OR
155
- * @returns FilterNode for OR operation
156
- */
157
69
  or: (...nodes) => ({
158
70
  op: "or",
159
71
  nodes
160
72
  }),
161
- /**
162
- * Creates a NOT logical operation: negates the child
163
- * @param node Child filter node to negate
164
- * @returns FilterNode for NOT operation
165
- */
166
73
  not: (node) => ({
167
74
  op: "not",
168
75
  nodes: [node]
@@ -214,35 +121,10 @@ function validateFilter(filter) {
214
121
  return null;
215
122
  }
216
123
  const FilterExamples = {
217
- /**
218
- * Filter for a specific event type
219
- * @example Filter.eq("event_type", "goal")
220
- */
221
124
  eventType: (type) => Filter.eq("event_type", type),
222
- /**
223
- * Filter for events in a set of types
224
- * @example FilterExamples.eventTypes(["goal", "shot"])
225
- */
226
125
  eventTypes: (types) => Filter.in("event_type", types),
227
- /**
228
- * Filter for numeric range
229
- * @example FilterExamples.range("xG", "0.5", "0.9")
230
- */
231
- range: (key, min, max) => Filter.and(
232
- Filter.gte(key, min),
233
- Filter.lte(key, max)
234
- ),
235
- /**
236
- * Filter for goals OR high-probability shots
237
- * @example FilterExamples.importantEvents("0.8")
238
- */
239
- importantEvents: (xGThreshold) => Filter.or(
240
- Filter.eq("event_type", "goal"),
241
- Filter.and(
242
- Filter.eq("event_type", "shot"),
243
- Filter.gte("xG", xGThreshold)
244
- )
245
- )
126
+ range: (key, min, max) => Filter.and(Filter.gte(key, min), Filter.lte(key, max)),
127
+ importantEvents: (xGThreshold) => Filter.or(Filter.eq("event_type", "goal"), Filter.and(Filter.eq("event_type", "shot"), Filter.gte("xG", xGThreshold)))
246
128
  };
247
129
  export {
248
130
  Filter,
@@ -1 +1 @@
1
- {"version":3,"file":"filter.mjs","sources":["../../src/core/channels/filter.ts"],"sourcesContent":["// sockudo-js/src/core/channels/filter.ts\n\n/**\n * Filter node structure for publication filtering by tags.\n *\n * This structure matches the server-side FilterNode format for zero-allocation\n * evaluation during message broadcast.\n */\nexport interface FilterNode {\n /** Logical operator: \"and\", \"or\", \"not\" (if present, this is a branch node) */\n op?: string;\n\n /** Key for comparison (leaf nodes only) */\n key?: string;\n\n /** Comparison operator: \"eq\", \"neq\", \"in\", \"nin\", \"ex\", \"nex\", \"sw\", \"ew\", \"ct\", \"gt\", \"gte\", \"lt\", \"lte\" */\n cmp?: string;\n\n /** Single value for most comparisons */\n val?: string;\n\n /** Multiple values for set operations (in, nin) */\n vals?: string[];\n\n /** Child nodes for logical operations */\n nodes?: FilterNode[];\n}\n\n/**\n * Builder for constructing filter nodes programmatically.\n *\n * Provides a clean API for creating complex filters without dealing with\n * the internal FilterNode structure directly.\n *\n * @example\n * ```typescript\n * // Simple equality filter\n * const filter = Filter.eq(\"event_type\", \"goal\");\n *\n * // Complex nested filter\n * const filter = Filter.or(\n * Filter.eq(\"event_type\", \"goal\"),\n * Filter.and(\n * Filter.eq(\"event_type\", \"shot\"),\n * Filter.gte(\"xG\", \"0.8\")\n * )\n * );\n * ```\n */\nexport const Filter = {\n // Comparison operators\n\n /**\n * Creates an equality comparison: key == val\n * @param key The tag key to compare\n * @param val The value to compare against\n * @returns FilterNode for equality comparison\n */\n eq: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"eq\",\n val\n }),\n\n /**\n * Creates an inequality comparison: key != val\n * @param key The tag key to compare\n * @param val The value to compare against\n * @returns FilterNode for inequality comparison\n */\n neq: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"neq\",\n val\n }),\n\n /**\n * Creates a set membership comparison: key in [vals...]\n * @param key The tag key to compare\n * @param vals Array of values for set membership\n * @returns FilterNode for set membership comparison\n */\n in: (key: string, vals: string[]): FilterNode => ({\n key,\n cmp: \"in\",\n vals\n }),\n\n /**\n * Creates a set non-membership comparison: key not in [vals...]\n * @param key The tag key to compare\n * @param vals Array of values for set non-membership\n * @returns FilterNode for set non-membership comparison\n */\n nin: (key: string, vals: string[]): FilterNode => ({\n key,\n cmp: \"nin\",\n vals\n }),\n\n /**\n * Creates an existence check: key exists\n * @param key The tag key to check for existence\n * @returns FilterNode for existence check\n */\n exists: (key: string): FilterNode => ({\n key,\n cmp: \"ex\"\n }),\n\n /**\n * Creates a non-existence check: key does not exist\n * @param key The tag key to check for non-existence\n * @returns FilterNode for non-existence check\n */\n notExists: (key: string): FilterNode => ({\n key,\n cmp: \"nex\"\n }),\n\n /**\n * Creates a starts-with comparison: key starts with val\n * @param key The tag key to compare\n * @param val The prefix to match\n * @returns FilterNode for starts-with comparison\n */\n startsWith: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"sw\",\n val\n }),\n\n /**\n * Creates an ends-with comparison: key ends with val\n * @param key The tag key to compare\n * @param val The suffix to match\n * @returns FilterNode for ends-with comparison\n */\n endsWith: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"ew\",\n val\n }),\n\n /**\n * Creates a contains comparison: key contains val\n * @param key The tag key to compare\n * @param val The substring to match\n * @returns FilterNode for contains comparison\n */\n contains: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"ct\",\n val\n }),\n\n /**\n * Creates a greater-than comparison: key > val (numeric)\n * @param key The tag key to compare\n * @param val The numeric value to compare against (as string)\n * @returns FilterNode for greater-than comparison\n */\n gt: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"gt\",\n val\n }),\n\n /**\n * Creates a greater-than-or-equal comparison: key >= val (numeric)\n * @param key The tag key to compare\n * @param val The numeric value to compare against (as string)\n * @returns FilterNode for greater-than-or-equal comparison\n */\n gte: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"gte\",\n val\n }),\n\n /**\n * Creates a less-than comparison: key < val (numeric)\n * @param key The tag key to compare\n * @param val The numeric value to compare against (as string)\n * @returns FilterNode for less-than comparison\n */\n lt: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"lt\",\n val\n }),\n\n /**\n * Creates a less-than-or-equal comparison: key <= val (numeric)\n * @param key The tag key to compare\n * @param val The numeric value to compare against (as string)\n * @returns FilterNode for less-than-or-equal comparison\n */\n lte: (key: string, val: string): FilterNode => ({\n key,\n cmp: \"lte\",\n val\n }),\n\n // Logical operators\n\n /**\n * Creates an AND logical operation: all children must match\n * @param nodes Child filter nodes to combine with AND\n * @returns FilterNode for AND operation\n */\n and: (...nodes: FilterNode[]): FilterNode => ({\n op: \"and\",\n nodes\n }),\n\n /**\n * Creates an OR logical operation: at least one child must match\n * @param nodes Child filter nodes to combine with OR\n * @returns FilterNode for OR operation\n */\n or: (...nodes: FilterNode[]): FilterNode => ({\n op: \"or\",\n nodes\n }),\n\n /**\n * Creates a NOT logical operation: negates the child\n * @param node Child filter node to negate\n * @returns FilterNode for NOT operation\n */\n not: (node: FilterNode): FilterNode => ({\n op: \"not\",\n nodes: [node]\n })\n};\n\n/**\n * Validates a filter node structure.\n *\n * @param filter The filter node to validate\n * @returns Error message if invalid, null if valid\n */\nexport function validateFilter(filter: FilterNode): string | null {\n if (filter.op) {\n // Branch node - logical operation\n const op = filter.op;\n\n if (![\"and\", \"or\", \"not\"].includes(op)) {\n return `Invalid logical operator: ${op}`;\n }\n\n if (!filter.nodes || !Array.isArray(filter.nodes)) {\n return `Logical operation '${op}' requires nodes array`;\n }\n\n if (op === \"not\" && filter.nodes.length !== 1) {\n return `NOT operation requires exactly one child node, got ${filter.nodes.length}`;\n }\n\n if ((op === \"and\" || op === \"or\") && filter.nodes.length === 0) {\n return `${op.toUpperCase()} operation requires at least one child node`;\n }\n\n // Validate all children recursively\n for (let i = 0; i < filter.nodes.length; i++) {\n const childError = validateFilter(filter.nodes[i]);\n if (childError) {\n return `Child node ${i}: ${childError}`;\n }\n }\n } else {\n // Leaf node - comparison\n if (!filter.key) {\n return \"Leaf node requires a key\";\n }\n\n if (!filter.cmp) {\n return \"Leaf node requires a comparison operator\";\n }\n\n const validOps = [\"eq\", \"neq\", \"in\", \"nin\", \"ex\", \"nex\", \"sw\", \"ew\", \"ct\", \"gt\", \"gte\", \"lt\", \"lte\"];\n if (!validOps.includes(filter.cmp)) {\n return `Invalid comparison operator: ${filter.cmp}`;\n }\n\n // Check value requirements based on operator\n if (filter.cmp === \"in\" || filter.cmp === \"nin\") {\n if (!filter.vals || !Array.isArray(filter.vals) || filter.vals.length === 0) {\n return `${filter.cmp} operation requires non-empty vals array`;\n }\n } else if (filter.cmp === \"ex\" || filter.cmp === \"nex\") {\n // Existence checks don't need values\n } else {\n if (!filter.val) {\n return `${filter.cmp} operation requires a val`;\n }\n }\n }\n\n return null;\n}\n\n/**\n * Example filter patterns for common use cases\n */\nexport const FilterExamples = {\n /**\n * Filter for a specific event type\n * @example Filter.eq(\"event_type\", \"goal\")\n */\n eventType: (type: string) => Filter.eq(\"event_type\", type),\n\n /**\n * Filter for events in a set of types\n * @example FilterExamples.eventTypes([\"goal\", \"shot\"])\n */\n eventTypes: (types: string[]) => Filter.in(\"event_type\", types),\n\n /**\n * Filter for numeric range\n * @example FilterExamples.range(\"xG\", \"0.5\", \"0.9\")\n */\n range: (key: string, min: string, max: string) =>\n Filter.and(\n Filter.gte(key, min),\n Filter.lte(key, max)\n ),\n\n /**\n * Filter for goals OR high-probability shots\n * @example FilterExamples.importantEvents(\"0.8\")\n */\n importantEvents: (xGThreshold: string) =>\n Filter.or(\n Filter.eq(\"event_type\", \"goal\"),\n Filter.and(\n Filter.eq(\"event_type\", \"shot\"),\n Filter.gte(\"xG\", xGThreshold)\n )\n )\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.mjs","sources":["../../src/core/channels/filter.js"],"sourcesContent":["export const Filter = {\n eq: (key, val) => ({\n key,\n cmp: \"eq\",\n val\n }),\n neq: (key, val) => ({\n key,\n cmp: \"neq\",\n val\n }),\n in: (key, vals) => ({\n key,\n cmp: \"in\",\n vals\n }),\n nin: (key, vals) => ({\n key,\n cmp: \"nin\",\n vals\n }),\n exists: (key) => ({\n key,\n cmp: \"ex\"\n }),\n notExists: (key) => ({\n key,\n cmp: \"nex\"\n }),\n startsWith: (key, val) => ({\n key,\n cmp: \"sw\",\n val\n }),\n endsWith: (key, val) => ({\n key,\n cmp: \"ew\",\n val\n }),\n contains: (key, val) => ({\n key,\n cmp: \"ct\",\n val\n }),\n gt: (key, val) => ({\n key,\n cmp: \"gt\",\n val\n }),\n gte: (key, val) => ({\n key,\n cmp: \"gte\",\n val\n }),\n lt: (key, val) => ({\n key,\n cmp: \"lt\",\n val\n }),\n lte: (key, val) => ({\n key,\n cmp: \"lte\",\n val\n }),\n and: (...nodes) => ({\n op: \"and\",\n nodes\n }),\n or: (...nodes) => ({\n op: \"or\",\n nodes\n }),\n not: (node) => ({\n op: \"not\",\n nodes: [node]\n })\n};\nexport function validateFilter(filter) {\n if (filter.op) {\n const op = filter.op;\n if (![\"and\", \"or\", \"not\"].includes(op)) {\n return `Invalid logical operator: ${op}`;\n }\n if (!filter.nodes || !Array.isArray(filter.nodes)) {\n return `Logical operation '${op}' requires nodes array`;\n }\n if (op === \"not\" && filter.nodes.length !== 1) {\n return `NOT operation requires exactly one child node, got ${filter.nodes.length}`;\n }\n if ((op === \"and\" || op === \"or\") && filter.nodes.length === 0) {\n return `${op.toUpperCase()} operation requires at least one child node`;\n }\n for (let i = 0; i < filter.nodes.length; i++) {\n const childError = validateFilter(filter.nodes[i]);\n if (childError) {\n return `Child node ${i}: ${childError}`;\n }\n }\n }\n else {\n if (!filter.key) {\n return \"Leaf node requires a key\";\n }\n if (!filter.cmp) {\n return \"Leaf node requires a comparison operator\";\n }\n const validOps = [\"eq\", \"neq\", \"in\", \"nin\", \"ex\", \"nex\", \"sw\", \"ew\", \"ct\", \"gt\", \"gte\", \"lt\", \"lte\"];\n if (!validOps.includes(filter.cmp)) {\n return `Invalid comparison operator: ${filter.cmp}`;\n }\n if (filter.cmp === \"in\" || filter.cmp === \"nin\") {\n if (!filter.vals || !Array.isArray(filter.vals) || filter.vals.length === 0) {\n return `${filter.cmp} operation requires non-empty vals array`;\n }\n }\n else if (filter.cmp === \"ex\" || filter.cmp === \"nex\") {\n }\n else {\n if (!filter.val) {\n return `${filter.cmp} operation requires a val`;\n }\n }\n }\n return null;\n}\nexport const FilterExamples = {\n eventType: (type) => Filter.eq(\"event_type\", type),\n eventTypes: (types) => Filter.in(\"event_type\", types),\n range: (key, min, max) => Filter.and(Filter.gte(key, min), Filter.lte(key, max)),\n importantEvents: (xGThreshold) => Filter.or(Filter.eq(\"event_type\", \"goal\"), Filter.and(Filter.eq(\"event_type\", \"shot\"), Filter.gte(\"xG\", xGThreshold)))\n};\n//# sourceMappingURL=filter.js.map"],"names":[],"mappings":"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"}