@cratis/arc 19.11.1 → 20.0.0

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 (505) hide show
  1. package/Globals.ts +20 -1
  2. package/dist/cjs/Globals.d.ts +4 -0
  3. package/dist/cjs/Globals.d.ts.map +1 -1
  4. package/dist/cjs/Globals.js +6 -1
  5. package/dist/cjs/Globals.js.map +1 -1
  6. package/dist/cjs/queries/HubConnectionKeepAlive.d.ts +11 -0
  7. package/dist/cjs/queries/HubConnectionKeepAlive.d.ts.map +1 -0
  8. package/dist/cjs/queries/HubConnectionKeepAlive.js +33 -0
  9. package/dist/cjs/queries/HubConnectionKeepAlive.js.map +1 -0
  10. package/dist/cjs/queries/IObservableQueryHubConnection.d.ts +11 -0
  11. package/dist/cjs/queries/IObservableQueryHubConnection.d.ts.map +1 -0
  12. package/dist/cjs/queries/IReconnectPolicy.d.ts +8 -0
  13. package/dist/cjs/queries/IReconnectPolicy.d.ts.map +1 -0
  14. package/dist/cjs/queries/ObservableQueryConnection.d.ts +3 -1
  15. package/dist/cjs/queries/ObservableQueryConnection.d.ts.map +1 -1
  16. package/dist/cjs/queries/ObservableQueryConnection.js +8 -21
  17. package/dist/cjs/queries/ObservableQueryConnection.js.map +1 -1
  18. package/dist/cjs/queries/ObservableQueryConnectionFactory.d.ts +13 -0
  19. package/dist/cjs/queries/ObservableQueryConnectionFactory.d.ts.map +1 -0
  20. package/dist/cjs/queries/ObservableQueryConnectionFactory.js +62 -0
  21. package/dist/cjs/queries/ObservableQueryConnectionFactory.js.map +1 -0
  22. package/dist/cjs/queries/ObservableQueryConnectionPool.d.ts +9 -0
  23. package/dist/cjs/queries/ObservableQueryConnectionPool.d.ts.map +1 -0
  24. package/dist/cjs/queries/ObservableQueryConnectionPool.js +23 -0
  25. package/dist/cjs/queries/ObservableQueryConnectionPool.js.map +1 -0
  26. package/dist/cjs/queries/ObservableQueryFor.d.ts +1 -0
  27. package/dist/cjs/queries/ObservableQueryFor.d.ts.map +1 -1
  28. package/dist/cjs/queries/ObservableQueryFor.js +10 -5
  29. package/dist/cjs/queries/ObservableQueryFor.js.map +1 -1
  30. package/dist/cjs/queries/ObservableQueryMultiplexer.d.ts +30 -0
  31. package/dist/cjs/queries/ObservableQueryMultiplexer.d.ts.map +1 -0
  32. package/dist/cjs/queries/ObservableQueryMultiplexer.js +120 -0
  33. package/dist/cjs/queries/ObservableQueryMultiplexer.js.map +1 -0
  34. package/dist/cjs/queries/QueryInstanceCache.d.ts +29 -0
  35. package/dist/cjs/queries/QueryInstanceCache.d.ts.map +1 -0
  36. package/dist/cjs/queries/QueryInstanceCache.js +95 -0
  37. package/dist/cjs/queries/QueryInstanceCache.js.map +1 -0
  38. package/dist/cjs/queries/QueryTransportMethod.d.ts +5 -0
  39. package/dist/cjs/queries/QueryTransportMethod.d.ts.map +1 -0
  40. package/dist/cjs/queries/QueryTransportMethod.js +8 -0
  41. package/dist/cjs/queries/QueryTransportMethod.js.map +1 -0
  42. package/dist/cjs/queries/ReconnectPolicy.d.ts +15 -0
  43. package/dist/cjs/queries/ReconnectPolicy.d.ts.map +1 -0
  44. package/dist/cjs/queries/ReconnectPolicy.js +43 -0
  45. package/dist/cjs/queries/ReconnectPolicy.js.map +1 -0
  46. package/dist/cjs/queries/ServerSentEventHubConnection.d.ts +39 -0
  47. package/dist/cjs/queries/ServerSentEventHubConnection.d.ts.map +1 -0
  48. package/dist/cjs/queries/ServerSentEventHubConnection.js +233 -0
  49. package/dist/cjs/queries/ServerSentEventHubConnection.js.map +1 -0
  50. package/dist/cjs/queries/ServerSentEventQueryConnection.d.ts +14 -0
  51. package/dist/cjs/queries/ServerSentEventQueryConnection.d.ts.map +1 -0
  52. package/dist/cjs/queries/ServerSentEventQueryConnection.js +59 -0
  53. package/dist/cjs/queries/ServerSentEventQueryConnection.js.map +1 -0
  54. package/dist/cjs/queries/WebSocketHubConnection.d.ts +55 -0
  55. package/dist/cjs/queries/WebSocketHubConnection.d.ts.map +1 -0
  56. package/dist/cjs/queries/WebSocketHubConnection.js +193 -0
  57. package/dist/cjs/queries/WebSocketHubConnection.js.map +1 -0
  58. package/dist/cjs/queries/for_HubConnectionKeepAlive/behavior.d.ts +2 -0
  59. package/dist/cjs/queries/for_HubConnectionKeepAlive/behavior.d.ts.map +1 -0
  60. package/dist/cjs/queries/for_ObservableQueryConnection/given/an_observable_query_connection.d.ts +1 -2
  61. package/dist/cjs/queries/for_ObservableQueryConnection/given/an_observable_query_connection.d.ts.map +1 -1
  62. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/given/a_descriptor.d.ts +9 -0
  63. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/given/a_descriptor.d.ts.map +1 -0
  64. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_sse_transport.d.ts +2 -0
  65. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_sse_transport.d.ts.map +1 -0
  66. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_websocket_transport.d.ts +2 -0
  67. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_websocket_transport.d.ts.map +1 -0
  68. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_sse_transport.d.ts +2 -0
  69. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_sse_transport.d.ts.map +1 -0
  70. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_websocket_transport.d.ts +2 -0
  71. package/dist/cjs/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_websocket_transport.d.ts.map +1 -0
  72. package/dist/cjs/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_least_loaded_slot_is_chosen.d.ts +2 -0
  73. package/dist/cjs/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_least_loaded_slot_is_chosen.d.ts.map +1 -0
  74. package/dist/cjs/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_size_is_zero.d.ts +2 -0
  75. package/dist/cjs/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_size_is_zero.d.ts.map +1 -0
  76. package/dist/cjs/queries/for_ObservableQueryConnectionPool/when_acquiring/with_single_slot/and_one_subscriber.d.ts +2 -0
  77. package/dist/cjs/queries/for_ObservableQueryConnectionPool/when_acquiring/with_single_slot/and_one_subscriber.d.ts.map +1 -0
  78. package/dist/cjs/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_and_sse_transport.d.ts +2 -0
  79. package/dist/cjs/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_and_sse_transport.d.ts.map +1 -0
  80. package/dist/cjs/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_disabled_and_sse_transport.d.ts +2 -0
  81. package/dist/cjs/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_disabled_and_sse_transport.d.ts.map +1 -0
  82. package/dist/cjs/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_enabled.d.ts +2 -0
  83. package/dist/cjs/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_enabled.d.ts.map +1 -0
  84. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/with_arguments.d.ts +2 -0
  85. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/with_arguments.d.ts.map +1 -0
  86. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/with_empty_arguments_object.d.ts +2 -0
  87. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/with_empty_arguments_object.d.ts.map +1 -0
  88. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/with_same_arguments_different_order.d.ts +2 -0
  89. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/with_same_arguments_different_order.d.ts.map +1 -0
  90. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/without_arguments.d.ts +2 -0
  91. package/dist/cjs/queries/for_QueryInstanceCache/when_building_key/without_arguments.d.ts.map +1 -0
  92. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_last_result/with_no_result_stored.d.ts +2 -0
  93. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_last_result/with_no_result_stored.d.ts.map +1 -0
  94. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_last_result/with_stored_result.d.ts +2 -0
  95. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_last_result/with_stored_result.d.ts.map +1 -0
  96. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_or_creating/with_existing_entry.d.ts +2 -0
  97. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_or_creating/with_existing_entry.d.ts.map +1 -0
  98. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_or_creating/with_new_entry.d.ts +2 -0
  99. package/dist/cjs/queries/for_QueryInstanceCache/when_getting_or_creating/with_new_entry.d.ts.map +1 -0
  100. package/dist/cjs/queries/for_QueryInstanceCache/when_releasing/a_key_that_does_not_exist.d.ts +2 -0
  101. package/dist/cjs/queries/for_QueryInstanceCache/when_releasing/a_key_that_does_not_exist.d.ts.map +1 -0
  102. package/dist/cjs/queries/for_QueryInstanceCache/when_releasing/one_of_two_subscribers.d.ts +2 -0
  103. package/dist/cjs/queries/for_QueryInstanceCache/when_releasing/one_of_two_subscribers.d.ts.map +1 -0
  104. package/dist/cjs/queries/for_QueryInstanceCache/when_releasing/the_only_subscriber.d.ts +2 -0
  105. package/dist/cjs/queries/for_QueryInstanceCache/when_releasing/the_only_subscriber.d.ts.map +1 -0
  106. package/dist/cjs/queries/for_QueryInstanceCache/when_setting_last_result/with_a_result.d.ts +2 -0
  107. package/dist/cjs/queries/for_QueryInstanceCache/when_setting_last_result/with_a_result.d.ts.map +1 -0
  108. package/dist/cjs/queries/for_ReconnectPolicy/when_canceling/with_pending_timer.d.ts +2 -0
  109. package/dist/cjs/queries/for_ReconnectPolicy/when_canceling/with_pending_timer.d.ts.map +1 -0
  110. package/dist/cjs/queries/for_ReconnectPolicy/when_cancelling/with_pending_timer.d.ts +2 -0
  111. package/dist/cjs/queries/for_ReconnectPolicy/when_cancelling/with_pending_timer.d.ts.map +1 -0
  112. package/dist/cjs/queries/for_ReconnectPolicy/when_resetting/after_scheduling.d.ts +2 -0
  113. package/dist/cjs/queries/for_ReconnectPolicy/when_resetting/after_scheduling.d.ts.map +1 -0
  114. package/dist/cjs/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/delay_is_capped_at_max.d.ts +2 -0
  115. package/dist/cjs/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/delay_is_capped_at_max.d.ts.map +1 -0
  116. package/dist/cjs/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/first_attempt.d.ts +2 -0
  117. package/dist/cjs/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/first_attempt.d.ts.map +1 -0
  118. package/dist/cjs/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_reached/abandons_reconnect.d.ts +2 -0
  119. package/dist/cjs/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_reached/abandons_reconnect.d.ts.map +1 -0
  120. package/dist/cjs/queries/for_ServerSentEventHubConnection/given/a_server_sent_event_hub_connection.d.ts +21 -0
  121. package/dist/cjs/queries/for_ServerSentEventHubConnection/given/a_server_sent_event_hub_connection.d.ts.map +1 -0
  122. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_connect_timeout_fires/triggers_reconnect.d.ts +2 -0
  123. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_connect_timeout_fires/triggers_reconnect.d.ts.map +1 -0
  124. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_disposing/cleans_up_resources.d.ts +2 -0
  125. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_disposing/cleans_up_resources.d.ts.map +1 -0
  126. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_keep_alive_is_idle/triggers_reconnect.d.ts +2 -0
  127. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_keep_alive_is_idle/triggers_reconnect.d.ts.map +1 -0
  128. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_reconnecting/after_error.d.ts +2 -0
  129. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_reconnecting/after_error.d.ts.map +1 -0
  130. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_subscribing/queues_until_connected.d.ts +2 -0
  131. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_subscribing/queues_until_connected.d.ts.map +1 -0
  132. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_subscribing/sends_subscribe_post.d.ts +2 -0
  133. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_subscribing/sends_subscribe_post.d.ts.map +1 -0
  134. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_unsubscribing/the_only_query.d.ts +2 -0
  135. package/dist/cjs/queries/for_ServerSentEventHubConnection/when_unsubscribing/the_only_query.d.ts.map +1 -0
  136. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_connecting/with_query_arguments.d.ts +2 -0
  137. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_connecting/with_query_arguments.d.ts.map +1 -0
  138. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_connecting/without_event_source_available.d.ts +2 -0
  139. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_connecting/without_event_source_available.d.ts.map +1 -0
  140. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_disconnecting/after_connecting.d.ts +2 -0
  141. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_disconnecting/after_connecting.d.ts.map +1 -0
  142. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_disconnecting/before_message_arrives.d.ts +2 -0
  143. package/dist/cjs/queries/for_ServerSentEventQueryConnection/when_disconnecting/before_message_arrives.d.ts.map +1 -0
  144. package/dist/cjs/queries/for_WebSocketHubConnection/given/a_web_socket_hub_connection.d.ts +23 -0
  145. package/dist/cjs/queries/for_WebSocketHubConnection/given/a_web_socket_hub_connection.d.ts.map +1 -0
  146. package/dist/cjs/queries/for_WebSocketHubConnection/when_disposing/cleans_up_resources.d.ts +2 -0
  147. package/dist/cjs/queries/for_WebSocketHubConnection/when_disposing/cleans_up_resources.d.ts.map +1 -0
  148. package/dist/cjs/queries/for_WebSocketHubConnection/when_keep_alive_is_idle/sends_a_ping.d.ts +2 -0
  149. package/dist/cjs/queries/for_WebSocketHubConnection/when_keep_alive_is_idle/sends_a_ping.d.ts.map +1 -0
  150. package/dist/cjs/queries/for_WebSocketHubConnection/when_receiving_a_message/resets_keep_alive_timer.d.ts +2 -0
  151. package/dist/cjs/queries/for_WebSocketHubConnection/when_receiving_a_message/resets_keep_alive_timer.d.ts.map +1 -0
  152. package/dist/cjs/queries/for_WebSocketHubConnection/when_reconnecting/after_unexpected_close.d.ts +2 -0
  153. package/dist/cjs/queries/for_WebSocketHubConnection/when_reconnecting/after_unexpected_close.d.ts.map +1 -0
  154. package/dist/cjs/queries/for_WebSocketHubConnection/when_reconnecting/resubscribes_all_queries.d.ts +2 -0
  155. package/dist/cjs/queries/for_WebSocketHubConnection/when_reconnecting/resubscribes_all_queries.d.ts.map +1 -0
  156. package/dist/cjs/queries/for_WebSocketHubConnection/when_subscribing/to_a_query.d.ts +2 -0
  157. package/dist/cjs/queries/for_WebSocketHubConnection/when_subscribing/to_a_query.d.ts.map +1 -0
  158. package/dist/cjs/queries/for_WebSocketHubConnection/when_unsubscribing/the_only_query.d.ts +2 -0
  159. package/dist/cjs/queries/for_WebSocketHubConnection/when_unsubscribing/the_only_query.d.ts.map +1 -0
  160. package/dist/cjs/queries/index.d.ts +12 -0
  161. package/dist/cjs/queries/index.d.ts.map +1 -1
  162. package/dist/cjs/queries/index.js +34 -0
  163. package/dist/cjs/queries/index.js.map +1 -1
  164. package/dist/esm/Globals.d.ts +4 -0
  165. package/dist/esm/Globals.d.ts.map +1 -1
  166. package/dist/esm/Globals.js +6 -1
  167. package/dist/esm/Globals.js.map +1 -1
  168. package/dist/esm/queries/HubConnectionKeepAlive.d.ts +11 -0
  169. package/dist/esm/queries/HubConnectionKeepAlive.d.ts.map +1 -0
  170. package/dist/esm/queries/HubConnectionKeepAlive.js +31 -0
  171. package/dist/esm/queries/HubConnectionKeepAlive.js.map +1 -0
  172. package/dist/esm/queries/IObservableQueryHubConnection.d.ts +11 -0
  173. package/dist/esm/queries/IObservableQueryHubConnection.d.ts.map +1 -0
  174. package/dist/esm/queries/IObservableQueryHubConnection.js +2 -0
  175. package/dist/esm/queries/IObservableQueryHubConnection.js.map +1 -0
  176. package/dist/esm/queries/IReconnectPolicy.d.ts +8 -0
  177. package/dist/esm/queries/IReconnectPolicy.d.ts.map +1 -0
  178. package/dist/esm/queries/IReconnectPolicy.js +2 -0
  179. package/dist/esm/queries/IReconnectPolicy.js.map +1 -0
  180. package/dist/esm/queries/ObservableQueryConnection.d.ts +3 -1
  181. package/dist/esm/queries/ObservableQueryConnection.d.ts.map +1 -1
  182. package/dist/esm/queries/ObservableQueryConnection.js +8 -21
  183. package/dist/esm/queries/ObservableQueryConnection.js.map +1 -1
  184. package/dist/esm/queries/ObservableQueryConnectionFactory.d.ts +13 -0
  185. package/dist/esm/queries/ObservableQueryConnectionFactory.d.ts.map +1 -0
  186. package/dist/esm/queries/ObservableQueryConnectionFactory.js +58 -0
  187. package/dist/esm/queries/ObservableQueryConnectionFactory.js.map +1 -0
  188. package/dist/esm/queries/ObservableQueryConnectionPool.d.ts +9 -0
  189. package/dist/esm/queries/ObservableQueryConnectionPool.d.ts.map +1 -0
  190. package/dist/esm/queries/ObservableQueryConnectionPool.js +21 -0
  191. package/dist/esm/queries/ObservableQueryConnectionPool.js.map +1 -0
  192. package/dist/esm/queries/ObservableQueryFor.d.ts +1 -0
  193. package/dist/esm/queries/ObservableQueryFor.d.ts.map +1 -1
  194. package/dist/esm/queries/ObservableQueryFor.js +10 -5
  195. package/dist/esm/queries/ObservableQueryFor.js.map +1 -1
  196. package/dist/esm/queries/ObservableQueryMultiplexer.d.ts +30 -0
  197. package/dist/esm/queries/ObservableQueryMultiplexer.d.ts.map +1 -0
  198. package/dist/esm/queries/ObservableQueryMultiplexer.js +114 -0
  199. package/dist/esm/queries/ObservableQueryMultiplexer.js.map +1 -0
  200. package/dist/esm/queries/QueryInstanceCache.d.ts +29 -0
  201. package/dist/esm/queries/QueryInstanceCache.d.ts.map +1 -0
  202. package/dist/esm/queries/QueryInstanceCache.js +93 -0
  203. package/dist/esm/queries/QueryInstanceCache.js.map +1 -0
  204. package/dist/esm/queries/QueryTransportMethod.d.ts +5 -0
  205. package/dist/esm/queries/QueryTransportMethod.d.ts.map +1 -0
  206. package/dist/esm/queries/QueryTransportMethod.js +8 -0
  207. package/dist/esm/queries/QueryTransportMethod.js.map +1 -0
  208. package/dist/esm/queries/ReconnectPolicy.d.ts +15 -0
  209. package/dist/esm/queries/ReconnectPolicy.d.ts.map +1 -0
  210. package/dist/esm/queries/ReconnectPolicy.js +41 -0
  211. package/dist/esm/queries/ReconnectPolicy.js.map +1 -0
  212. package/dist/esm/queries/ServerSentEventHubConnection.d.ts +39 -0
  213. package/dist/esm/queries/ServerSentEventHubConnection.d.ts.map +1 -0
  214. package/dist/esm/queries/ServerSentEventHubConnection.js +231 -0
  215. package/dist/esm/queries/ServerSentEventHubConnection.js.map +1 -0
  216. package/dist/esm/queries/ServerSentEventQueryConnection.d.ts +14 -0
  217. package/dist/esm/queries/ServerSentEventQueryConnection.d.ts.map +1 -0
  218. package/dist/esm/queries/ServerSentEventQueryConnection.js +56 -0
  219. package/dist/esm/queries/ServerSentEventQueryConnection.js.map +1 -0
  220. package/dist/esm/queries/WebSocketHubConnection.d.ts +55 -0
  221. package/dist/esm/queries/WebSocketHubConnection.d.ts.map +1 -0
  222. package/dist/esm/queries/WebSocketHubConnection.js +191 -0
  223. package/dist/esm/queries/WebSocketHubConnection.js.map +1 -0
  224. package/dist/esm/queries/for_HubConnectionKeepAlive/behavior.d.ts +2 -0
  225. package/dist/esm/queries/for_HubConnectionKeepAlive/behavior.d.ts.map +1 -0
  226. package/dist/esm/queries/for_HubConnectionKeepAlive/behavior.js +57 -0
  227. package/dist/esm/queries/for_HubConnectionKeepAlive/behavior.js.map +1 -0
  228. package/dist/esm/queries/for_ObservableQueryConnection/given/an_observable_query_connection.d.ts +1 -2
  229. package/dist/esm/queries/for_ObservableQueryConnection/given/an_observable_query_connection.d.ts.map +1 -1
  230. package/dist/esm/queries/for_ObservableQueryConnection/given/an_observable_query_connection.js +9 -5
  231. package/dist/esm/queries/for_ObservableQueryConnection/given/an_observable_query_connection.js.map +1 -1
  232. package/dist/esm/queries/for_ObservableQueryConnectionFactory/given/a_descriptor.d.ts +9 -0
  233. package/dist/esm/queries/for_ObservableQueryConnectionFactory/given/a_descriptor.d.ts.map +1 -0
  234. package/dist/esm/queries/for_ObservableQueryConnectionFactory/given/a_descriptor.js +19 -0
  235. package/dist/esm/queries/for_ObservableQueryConnectionFactory/given/a_descriptor.js.map +1 -0
  236. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_sse_transport.d.ts +2 -0
  237. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_sse_transport.d.ts.map +1 -0
  238. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_sse_transport.js +49 -0
  239. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_sse_transport.js.map +1 -0
  240. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_websocket_transport.d.ts +2 -0
  241. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_websocket_transport.d.ts.map +1 -0
  242. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_websocket_transport.js +47 -0
  243. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_websocket_transport.js.map +1 -0
  244. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_sse_transport.d.ts +2 -0
  245. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_sse_transport.d.ts.map +1 -0
  246. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_sse_transport.js +54 -0
  247. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_sse_transport.js.map +1 -0
  248. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_websocket_transport.d.ts +2 -0
  249. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_websocket_transport.d.ts.map +1 -0
  250. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_websocket_transport.js +49 -0
  251. package/dist/esm/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_websocket_transport.js.map +1 -0
  252. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_least_loaded_slot_is_chosen.d.ts +2 -0
  253. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_least_loaded_slot_is_chosen.d.ts.map +1 -0
  254. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_least_loaded_slot_is_chosen.js +34 -0
  255. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_least_loaded_slot_is_chosen.js.map +1 -0
  256. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_size_is_zero.d.ts +2 -0
  257. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_size_is_zero.d.ts.map +1 -0
  258. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_size_is_zero.js +18 -0
  259. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_size_is_zero.js.map +1 -0
  260. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_single_slot/and_one_subscriber.d.ts +2 -0
  261. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_single_slot/and_one_subscriber.d.ts.map +1 -0
  262. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_single_slot/and_one_subscriber.js +32 -0
  263. package/dist/esm/queries/for_ObservableQueryConnectionPool/when_acquiring/with_single_slot/and_one_subscriber.js.map +1 -0
  264. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_and_sse_transport.d.ts +2 -0
  265. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_and_sse_transport.d.ts.map +1 -0
  266. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_and_sse_transport.js +54 -0
  267. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_and_sse_transport.js.map +1 -0
  268. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_disabled_and_sse_transport.d.ts +2 -0
  269. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_disabled_and_sse_transport.d.ts.map +1 -0
  270. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_disabled_and_sse_transport.js +55 -0
  271. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_disabled_and_sse_transport.js.map +1 -0
  272. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_enabled.d.ts +2 -0
  273. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_enabled.d.ts.map +1 -0
  274. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_enabled.js +45 -0
  275. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_enabled.js.map +1 -0
  276. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_partially_missing_required_arguments.js +18 -11
  277. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_partially_missing_required_arguments.js.map +1 -1
  278. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_route_and_query_args.js +12 -5
  279. package/dist/esm/queries/for_ObservableQueryFor/when_subscribing/with_route_and_query_args.js.map +1 -1
  280. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_arguments.d.ts +2 -0
  281. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_arguments.d.ts.map +1 -0
  282. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_arguments.js +12 -0
  283. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_arguments.js.map +1 -0
  284. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_empty_arguments_object.d.ts +2 -0
  285. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_empty_arguments_object.d.ts.map +1 -0
  286. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_empty_arguments_object.js +11 -0
  287. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_empty_arguments_object.js.map +1 -0
  288. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_same_arguments_different_order.d.ts +2 -0
  289. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_same_arguments_different_order.d.ts.map +1 -0
  290. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_same_arguments_different_order.js +13 -0
  291. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/with_same_arguments_different_order.js.map +1 -0
  292. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/without_arguments.d.ts +2 -0
  293. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/without_arguments.d.ts.map +1 -0
  294. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/without_arguments.js +11 -0
  295. package/dist/esm/queries/for_QueryInstanceCache/when_building_key/without_arguments.js.map +1 -0
  296. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_no_result_stored.d.ts +2 -0
  297. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_no_result_stored.d.ts.map +1 -0
  298. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_no_result_stored.js +12 -0
  299. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_no_result_stored.js.map +1 -0
  300. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_stored_result.d.ts +2 -0
  301. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_stored_result.d.ts.map +1 -0
  302. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_stored_result.js +16 -0
  303. package/dist/esm/queries/for_QueryInstanceCache/when_getting_last_result/with_stored_result.js.map +1 -0
  304. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_existing_entry.d.ts +2 -0
  305. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_existing_entry.d.ts.map +1 -0
  306. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_existing_entry.js +23 -0
  307. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_existing_entry.js.map +1 -0
  308. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_new_entry.d.ts +2 -0
  309. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_new_entry.d.ts.map +1 -0
  310. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_new_entry.js +16 -0
  311. package/dist/esm/queries/for_QueryInstanceCache/when_getting_or_creating/with_new_entry.js.map +1 -0
  312. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/a_key_that_does_not_exist.d.ts +2 -0
  313. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/a_key_that_does_not_exist.d.ts.map +1 -0
  314. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/a_key_that_does_not_exist.js +17 -0
  315. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/a_key_that_does_not_exist.js.map +1 -0
  316. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/one_of_two_subscribers.d.ts +2 -0
  317. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/one_of_two_subscribers.d.ts.map +1 -0
  318. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/one_of_two_subscribers.js +13 -0
  319. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/one_of_two_subscribers.js.map +1 -0
  320. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/the_only_subscriber.d.ts +2 -0
  321. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/the_only_subscriber.d.ts.map +1 -0
  322. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/the_only_subscriber.js +17 -0
  323. package/dist/esm/queries/for_QueryInstanceCache/when_releasing/the_only_subscriber.js.map +1 -0
  324. package/dist/esm/queries/for_QueryInstanceCache/when_setting_last_result/with_a_result.d.ts +2 -0
  325. package/dist/esm/queries/for_QueryInstanceCache/when_setting_last_result/with_a_result.d.ts.map +1 -0
  326. package/dist/esm/queries/for_QueryInstanceCache/when_setting_last_result/with_a_result.js +15 -0
  327. package/dist/esm/queries/for_QueryInstanceCache/when_setting_last_result/with_a_result.js.map +1 -0
  328. package/dist/esm/queries/for_ReconnectPolicy/when_canceling/with_pending_timer.d.ts +2 -0
  329. package/dist/esm/queries/for_ReconnectPolicy/when_canceling/with_pending_timer.d.ts.map +1 -0
  330. package/dist/esm/queries/for_ReconnectPolicy/when_canceling/with_pending_timer.js +24 -0
  331. package/dist/esm/queries/for_ReconnectPolicy/when_canceling/with_pending_timer.js.map +1 -0
  332. package/dist/esm/queries/for_ReconnectPolicy/when_cancelling/with_pending_timer.d.ts +2 -0
  333. package/dist/esm/queries/for_ReconnectPolicy/when_cancelling/with_pending_timer.d.ts.map +1 -0
  334. package/dist/esm/queries/for_ReconnectPolicy/when_cancelling/with_pending_timer.js +24 -0
  335. package/dist/esm/queries/for_ReconnectPolicy/when_cancelling/with_pending_timer.js.map +1 -0
  336. package/dist/esm/queries/for_ReconnectPolicy/when_resetting/after_scheduling.d.ts +2 -0
  337. package/dist/esm/queries/for_ReconnectPolicy/when_resetting/after_scheduling.d.ts.map +1 -0
  338. package/dist/esm/queries/for_ReconnectPolicy/when_resetting/after_scheduling.js +29 -0
  339. package/dist/esm/queries/for_ReconnectPolicy/when_resetting/after_scheduling.js.map +1 -0
  340. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/delay_is_capped_at_max.d.ts +2 -0
  341. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/delay_is_capped_at_max.d.ts.map +1 -0
  342. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/delay_is_capped_at_max.js +33 -0
  343. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/delay_is_capped_at_max.js.map +1 -0
  344. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/first_attempt.d.ts +2 -0
  345. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/first_attempt.d.ts.map +1 -0
  346. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/first_attempt.js +28 -0
  347. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/first_attempt.js.map +1 -0
  348. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_reached/abandons_reconnect.d.ts +2 -0
  349. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_reached/abandons_reconnect.d.ts.map +1 -0
  350. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_reached/abandons_reconnect.js +29 -0
  351. package/dist/esm/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_reached/abandons_reconnect.js.map +1 -0
  352. package/dist/esm/queries/for_ServerSentEventHubConnection/given/a_server_sent_event_hub_connection.d.ts +21 -0
  353. package/dist/esm/queries/for_ServerSentEventHubConnection/given/a_server_sent_event_hub_connection.d.ts.map +1 -0
  354. package/dist/esm/queries/for_ServerSentEventHubConnection/given/a_server_sent_event_hub_connection.js +50 -0
  355. package/dist/esm/queries/for_ServerSentEventHubConnection/given/a_server_sent_event_hub_connection.js.map +1 -0
  356. package/dist/esm/queries/for_ServerSentEventHubConnection/when_connect_timeout_fires/triggers_reconnect.d.ts +2 -0
  357. package/dist/esm/queries/for_ServerSentEventHubConnection/when_connect_timeout_fires/triggers_reconnect.d.ts.map +1 -0
  358. package/dist/esm/queries/for_ServerSentEventHubConnection/when_connect_timeout_fires/triggers_reconnect.js +24 -0
  359. package/dist/esm/queries/for_ServerSentEventHubConnection/when_connect_timeout_fires/triggers_reconnect.js.map +1 -0
  360. package/dist/esm/queries/for_ServerSentEventHubConnection/when_disposing/cleans_up_resources.d.ts +2 -0
  361. package/dist/esm/queries/for_ServerSentEventHubConnection/when_disposing/cleans_up_resources.d.ts.map +1 -0
  362. package/dist/esm/queries/for_ServerSentEventHubConnection/when_disposing/cleans_up_resources.js +27 -0
  363. package/dist/esm/queries/for_ServerSentEventHubConnection/when_disposing/cleans_up_resources.js.map +1 -0
  364. package/dist/esm/queries/for_ServerSentEventHubConnection/when_keep_alive_is_idle/triggers_reconnect.d.ts +2 -0
  365. package/dist/esm/queries/for_ServerSentEventHubConnection/when_keep_alive_is_idle/triggers_reconnect.d.ts.map +1 -0
  366. package/dist/esm/queries/for_ServerSentEventHubConnection/when_keep_alive_is_idle/triggers_reconnect.js +26 -0
  367. package/dist/esm/queries/for_ServerSentEventHubConnection/when_keep_alive_is_idle/triggers_reconnect.js.map +1 -0
  368. package/dist/esm/queries/for_ServerSentEventHubConnection/when_reconnecting/after_error.d.ts +2 -0
  369. package/dist/esm/queries/for_ServerSentEventHubConnection/when_reconnecting/after_error.d.ts.map +1 -0
  370. package/dist/esm/queries/for_ServerSentEventHubConnection/when_reconnecting/after_error.js +46 -0
  371. package/dist/esm/queries/for_ServerSentEventHubConnection/when_reconnecting/after_error.js.map +1 -0
  372. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/queues_until_connected.d.ts +2 -0
  373. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/queues_until_connected.d.ts.map +1 -0
  374. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/queues_until_connected.js +21 -0
  375. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/queues_until_connected.js.map +1 -0
  376. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/sends_subscribe_post.d.ts +2 -0
  377. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/sends_subscribe_post.d.ts.map +1 -0
  378. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/sends_subscribe_post.js +32 -0
  379. package/dist/esm/queries/for_ServerSentEventHubConnection/when_subscribing/sends_subscribe_post.js.map +1 -0
  380. package/dist/esm/queries/for_ServerSentEventHubConnection/when_unsubscribing/the_only_query.d.ts +2 -0
  381. package/dist/esm/queries/for_ServerSentEventHubConnection/when_unsubscribing/the_only_query.d.ts.map +1 -0
  382. package/dist/esm/queries/for_ServerSentEventHubConnection/when_unsubscribing/the_only_query.js +21 -0
  383. package/dist/esm/queries/for_ServerSentEventHubConnection/when_unsubscribing/the_only_query.js.map +1 -0
  384. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/with_query_arguments.d.ts +2 -0
  385. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/with_query_arguments.d.ts.map +1 -0
  386. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/with_query_arguments.js +38 -0
  387. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/with_query_arguments.js.map +1 -0
  388. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/without_event_source_available.d.ts +2 -0
  389. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/without_event_source_available.d.ts.map +1 -0
  390. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/without_event_source_available.js +23 -0
  391. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_connecting/without_event_source_available.js.map +1 -0
  392. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/after_connecting.d.ts +2 -0
  393. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/after_connecting.d.ts.map +1 -0
  394. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/after_connecting.js +24 -0
  395. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/after_connecting.js.map +1 -0
  396. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/before_message_arrives.d.ts +2 -0
  397. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/before_message_arrives.d.ts.map +1 -0
  398. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/before_message_arrives.js +24 -0
  399. package/dist/esm/queries/for_ServerSentEventQueryConnection/when_disconnecting/before_message_arrives.js.map +1 -0
  400. package/dist/esm/queries/for_WebSocketHubConnection/given/a_web_socket_hub_connection.d.ts +23 -0
  401. package/dist/esm/queries/for_WebSocketHubConnection/given/a_web_socket_hub_connection.d.ts.map +1 -0
  402. package/dist/esm/queries/for_WebSocketHubConnection/given/a_web_socket_hub_connection.js +47 -0
  403. package/dist/esm/queries/for_WebSocketHubConnection/given/a_web_socket_hub_connection.js.map +1 -0
  404. package/dist/esm/queries/for_WebSocketHubConnection/when_disposing/cleans_up_resources.d.ts +2 -0
  405. package/dist/esm/queries/for_WebSocketHubConnection/when_disposing/cleans_up_resources.d.ts.map +1 -0
  406. package/dist/esm/queries/for_WebSocketHubConnection/when_disposing/cleans_up_resources.js +24 -0
  407. package/dist/esm/queries/for_WebSocketHubConnection/when_disposing/cleans_up_resources.js.map +1 -0
  408. package/dist/esm/queries/for_WebSocketHubConnection/when_keep_alive_is_idle/sends_a_ping.d.ts +2 -0
  409. package/dist/esm/queries/for_WebSocketHubConnection/when_keep_alive_is_idle/sends_a_ping.d.ts.map +1 -0
  410. package/dist/esm/queries/for_WebSocketHubConnection/when_keep_alive_is_idle/sends_a_ping.js +29 -0
  411. package/dist/esm/queries/for_WebSocketHubConnection/when_keep_alive_is_idle/sends_a_ping.js.map +1 -0
  412. package/dist/esm/queries/for_WebSocketHubConnection/when_receiving_a_message/resets_keep_alive_timer.d.ts +2 -0
  413. package/dist/esm/queries/for_WebSocketHubConnection/when_receiving_a_message/resets_keep_alive_timer.d.ts.map +1 -0
  414. package/dist/esm/queries/for_WebSocketHubConnection/when_receiving_a_message/resets_keep_alive_timer.js +31 -0
  415. package/dist/esm/queries/for_WebSocketHubConnection/when_receiving_a_message/resets_keep_alive_timer.js.map +1 -0
  416. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/after_unexpected_close.d.ts +2 -0
  417. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/after_unexpected_close.d.ts.map +1 -0
  418. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/after_unexpected_close.js +30 -0
  419. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/after_unexpected_close.js.map +1 -0
  420. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/resubscribes_all_queries.d.ts +2 -0
  421. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/resubscribes_all_queries.d.ts.map +1 -0
  422. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/resubscribes_all_queries.js +31 -0
  423. package/dist/esm/queries/for_WebSocketHubConnection/when_reconnecting/resubscribes_all_queries.js.map +1 -0
  424. package/dist/esm/queries/for_WebSocketHubConnection/when_subscribing/to_a_query.d.ts +2 -0
  425. package/dist/esm/queries/for_WebSocketHubConnection/when_subscribing/to_a_query.d.ts.map +1 -0
  426. package/dist/esm/queries/for_WebSocketHubConnection/when_subscribing/to_a_query.js +32 -0
  427. package/dist/esm/queries/for_WebSocketHubConnection/when_subscribing/to_a_query.js.map +1 -0
  428. package/dist/esm/queries/for_WebSocketHubConnection/when_unsubscribing/the_only_query.d.ts +2 -0
  429. package/dist/esm/queries/for_WebSocketHubConnection/when_unsubscribing/the_only_query.d.ts.map +1 -0
  430. package/dist/esm/queries/for_WebSocketHubConnection/when_unsubscribing/the_only_query.js +23 -0
  431. package/dist/esm/queries/for_WebSocketHubConnection/when_unsubscribing/the_only_query.js.map +1 -0
  432. package/dist/esm/queries/index.d.ts +12 -0
  433. package/dist/esm/queries/index.d.ts.map +1 -1
  434. package/dist/esm/queries/index.js +10 -0
  435. package/dist/esm/queries/index.js.map +1 -1
  436. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  437. package/package.json +1 -1
  438. package/queries/HubConnectionKeepAlive.ts +61 -0
  439. package/queries/IObservableQueryHubConnection.ts +50 -0
  440. package/queries/IReconnectPolicy.ts +39 -0
  441. package/queries/ObservableQueryConnection.ts +8 -24
  442. package/queries/ObservableQueryConnectionFactory.ts +118 -0
  443. package/queries/ObservableQueryConnectionPool.ts +64 -0
  444. package/queries/ObservableQueryFor.ts +11 -5
  445. package/queries/ObservableQueryMultiplexer.ts +214 -0
  446. package/queries/QueryInstanceCache.ts +243 -0
  447. package/queries/QueryTransportMethod.ts +17 -0
  448. package/queries/ReconnectPolicy.ts +68 -0
  449. package/queries/ServerSentEventHubConnection.ts +309 -0
  450. package/queries/ServerSentEventQueryConnection.ts +84 -0
  451. package/queries/WebSocketHubConnection.ts +291 -0
  452. package/queries/for_HubConnectionKeepAlive/behavior.ts +73 -0
  453. package/queries/for_ObservableQueryConnection/given/an_observable_query_connection.ts +13 -9
  454. package/queries/for_ObservableQueryConnectionFactory/given/a_descriptor.ts +26 -0
  455. package/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_sse_transport.ts +62 -0
  456. package/queries/for_ObservableQueryConnectionFactory/when_creating/with_direct_mode_and_websocket_transport.ts +59 -0
  457. package/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_sse_transport.ts +69 -0
  458. package/queries/for_ObservableQueryConnectionFactory/when_creating/with_hub_mode_and_websocket_transport.ts +61 -0
  459. package/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_least_loaded_slot_is_chosen.ts +47 -0
  460. package/queries/for_ObservableQueryConnectionPool/when_acquiring/with_multiple_slots/and_size_is_zero.ts +26 -0
  461. package/queries/for_ObservableQueryConnectionPool/when_acquiring/with_single_slot/and_one_subscriber.ts +44 -0
  462. package/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_and_sse_transport.ts +69 -0
  463. package/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_disabled_and_sse_transport.ts +70 -0
  464. package/queries/for_ObservableQueryFor/when_subscribing/with_direct_mode_enabled.ts +57 -0
  465. package/queries/for_ObservableQueryFor/when_subscribing/with_partially_missing_required_arguments.ts +19 -11
  466. package/queries/for_ObservableQueryFor/when_subscribing/with_route_and_query_args.ts +14 -7
  467. package/queries/for_QueryInstanceCache/when_building_key/with_arguments.ts +17 -0
  468. package/queries/for_QueryInstanceCache/when_building_key/with_empty_arguments_object.ts +16 -0
  469. package/queries/for_QueryInstanceCache/when_building_key/with_same_arguments_different_order.ts +18 -0
  470. package/queries/for_QueryInstanceCache/when_building_key/without_arguments.ts +16 -0
  471. package/queries/for_QueryInstanceCache/when_getting_last_result/with_no_result_stored.ts +17 -0
  472. package/queries/for_QueryInstanceCache/when_getting_last_result/with_stored_result.ts +23 -0
  473. package/queries/for_QueryInstanceCache/when_getting_or_creating/with_existing_entry.ts +29 -0
  474. package/queries/for_QueryInstanceCache/when_getting_or_creating/with_new_entry.ts +21 -0
  475. package/queries/for_QueryInstanceCache/when_releasing/a_key_that_does_not_exist.ts +21 -0
  476. package/queries/for_QueryInstanceCache/when_releasing/one_of_two_subscribers.ts +18 -0
  477. package/queries/for_QueryInstanceCache/when_releasing/the_only_subscriber.ts +23 -0
  478. package/queries/for_QueryInstanceCache/when_setting_last_result/with_a_result.ts +20 -0
  479. package/queries/for_ReconnectPolicy/when_canceling/with_pending_timer.ts +33 -0
  480. package/queries/for_ReconnectPolicy/when_cancelling/with_pending_timer.ts +33 -0
  481. package/queries/for_ReconnectPolicy/when_resetting/after_scheduling.ts +39 -0
  482. package/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/delay_is_capped_at_max.ts +44 -0
  483. package/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_not_reached/first_attempt.ts +38 -0
  484. package/queries/for_ReconnectPolicy/when_scheduling/and_max_attempts_reached/abandons_reconnect.ts +39 -0
  485. package/queries/for_ServerSentEventHubConnection/given/a_server_sent_event_hub_connection.ts +85 -0
  486. package/queries/for_ServerSentEventHubConnection/when_connect_timeout_fires/triggers_reconnect.ts +46 -0
  487. package/queries/for_ServerSentEventHubConnection/when_disposing/cleans_up_resources.ts +34 -0
  488. package/queries/for_ServerSentEventHubConnection/when_keep_alive_is_idle/triggers_reconnect.ts +48 -0
  489. package/queries/for_ServerSentEventHubConnection/when_reconnecting/after_error.ts +62 -0
  490. package/queries/for_ServerSentEventHubConnection/when_subscribing/queues_until_connected.ts +31 -0
  491. package/queries/for_ServerSentEventHubConnection/when_subscribing/sends_subscribe_post.ts +42 -0
  492. package/queries/for_ServerSentEventHubConnection/when_unsubscribing/the_only_query.ts +32 -0
  493. package/queries/for_ServerSentEventQueryConnection/when_connecting/with_query_arguments.ts +63 -0
  494. package/queries/for_ServerSentEventQueryConnection/when_connecting/without_event_source_available.ts +31 -0
  495. package/queries/for_ServerSentEventQueryConnection/when_disconnecting/after_connecting.ts +36 -0
  496. package/queries/for_ServerSentEventQueryConnection/when_disconnecting/before_message_arrives.ts +38 -0
  497. package/queries/for_WebSocketHubConnection/given/a_web_socket_hub_connection.ts +81 -0
  498. package/queries/for_WebSocketHubConnection/when_disposing/cleans_up_resources.ts +31 -0
  499. package/queries/for_WebSocketHubConnection/when_keep_alive_is_idle/sends_a_ping.ts +47 -0
  500. package/queries/for_WebSocketHubConnection/when_receiving_a_message/resets_keep_alive_timer.ts +53 -0
  501. package/queries/for_WebSocketHubConnection/when_reconnecting/after_unexpected_close.ts +41 -0
  502. package/queries/for_WebSocketHubConnection/when_reconnecting/resubscribes_all_queries.ts +43 -0
  503. package/queries/for_WebSocketHubConnection/when_subscribing/to_a_query.ts +42 -0
  504. package/queries/for_WebSocketHubConnection/when_unsubscribing/the_only_query.ts +30 -0
  505. package/queries/index.ts +12 -0
@@ -0,0 +1,84 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { IObservableQueryConnection } from './IObservableQueryConnection';
5
+ import { DataReceived } from './ObservableQueryConnection';
6
+ import { QueryResult } from './QueryResult';
7
+
8
+ /**
9
+ * The SSE demultiplexer route used when connecting through the multiplexed observable query endpoint.
10
+ */
11
+ export const SSE_HUB_ROUTE = '/.cratis/queries/sse';
12
+
13
+ /**
14
+ * Represents a direct Server-Sent Events (SSE) connection for a single observable query.
15
+ *
16
+ * In direct mode the URL points to the per-query endpoint (e.g. `/api/queries/latest`).
17
+ * The backend detects the `Accept: text/event-stream` header and streams results directly.
18
+ *
19
+ * The caller (typically {@link createObservableQueryConnection}) decides which URL to use;
20
+ * this class is transport-agnostic beyond being SSE.
21
+ */
22
+ export class ServerSentEventQueryConnection<TDataType> implements IObservableQueryConnection<TDataType> {
23
+ private _eventSource?: EventSource;
24
+ private _disconnected = false;
25
+
26
+ /** @inheritdoc */
27
+ readonly lastPingLatency: number = 0;
28
+
29
+ /** @inheritdoc */
30
+ readonly averageLatency: number = 0;
31
+
32
+ /**
33
+ * Initializes a new instance of {@link ServerSentEventQueryConnection}.
34
+ * @param {URL} url The fully qualified URL of the SSE endpoint (including query parameters).
35
+ */
36
+ constructor(private readonly _url: URL) {}
37
+
38
+ /** @inheritdoc */
39
+ connect(dataReceived: DataReceived<TDataType>, queryArguments?: object): void {
40
+ if (this._disconnected) return;
41
+
42
+ // Guard against environments where EventSource is not available (e.g. Node.js, SSR).
43
+ if (typeof EventSource === 'undefined') {
44
+ return;
45
+ }
46
+
47
+ let url = this._url.toString();
48
+ if (queryArguments) {
49
+ const separator = url.includes('?') ? '&' : '?';
50
+ const query = Object.entries(queryArguments)
51
+ .filter(([, value]) => value !== undefined && value !== null)
52
+ .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
53
+ .join('&');
54
+ if (query) {
55
+ url = `${url}${separator}${query}`;
56
+ }
57
+ }
58
+
59
+ this._eventSource = new EventSource(url);
60
+
61
+ this._eventSource.onmessage = (event: MessageEvent) => {
62
+ if (this._disconnected) return;
63
+ try {
64
+ const result = JSON.parse(event.data as string) as QueryResult<TDataType>;
65
+ dataReceived(result);
66
+ } catch (error) {
67
+ console.error('SSE: error parsing message', error);
68
+ }
69
+ };
70
+
71
+ this._eventSource.onerror = () => {
72
+ if (this._disconnected) return;
73
+ console.warn(`SSE: connection error for '${url}', EventSource will retry automatically.`);
74
+ };
75
+ }
76
+
77
+ /** @inheritdoc */
78
+ disconnect(): void {
79
+ if (this._disconnected) return;
80
+ this._disconnected = true;
81
+ this._eventSource?.close();
82
+ this._eventSource = undefined;
83
+ }
84
+ }
@@ -0,0 +1,291 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { Globals } from '../Globals';
5
+ import { DataReceived } from './ObservableQueryConnection';
6
+ import { HubConnectionKeepAlive } from './HubConnectionKeepAlive';
7
+ import { IReconnectPolicy } from './IReconnectPolicy';
8
+ import { ReconnectPolicy } from './ReconnectPolicy';
9
+ import { QueryResult } from './QueryResult';
10
+
11
+ /* eslint-disable @typescript-eslint/no-explicit-any */
12
+
13
+ /**
14
+ * Message types matching the backend {@link ObservableQueryHubMessageType} enum.
15
+ * Serialized as integers by the Cratis JSON configuration.
16
+ */
17
+ export enum HubMessageType {
18
+ Subscribe = 0,
19
+ Unsubscribe = 1,
20
+ QueryResult = 2,
21
+ Unauthorized = 3,
22
+ Error = 4,
23
+ Ping = 5,
24
+ Pong = 6,
25
+ Connected = 7,
26
+ }
27
+
28
+ /**
29
+ * Wire format for messages exchanged over the {@link WebSocketHubConnection}.
30
+ */
31
+ export interface HubMessage {
32
+ type: HubMessageType;
33
+ queryId?: string;
34
+ payload?: any;
35
+ timestamp?: number;
36
+ }
37
+
38
+ /**
39
+ * Matches the backend {@link ObservableQuerySubscriptionRequest} record.
40
+ */
41
+ export interface SubscriptionRequest {
42
+ queryName: string;
43
+ arguments?: Record<string, string | null>;
44
+ page?: number;
45
+ pageSize?: number;
46
+ sortBy?: string;
47
+ sortDirection?: string;
48
+ }
49
+
50
+ interface ActiveSubscription {
51
+ request: SubscriptionRequest;
52
+ callback: DataReceived<any>;
53
+ }
54
+
55
+ /**
56
+ * Represents a single multiplexed WebSocket connection to the observable query hub
57
+ * at {@code /.cratis/queries/ws}.
58
+ *
59
+ * Multiple query subscriptions are carried over the same physical WebSocket. Each subscription
60
+ * is identified by a client-generated {@code queryId}; the server tags every result message with
61
+ * the same id so responses can be routed to the correct callback.
62
+ */
63
+ export class WebSocketHubConnection {
64
+ private _socket?: WebSocket;
65
+ private _disconnected = false;
66
+ private _subscriptions: Map<string, ActiveSubscription> = new Map();
67
+ private readonly _keepAlive: HubConnectionKeepAlive;
68
+ private _lastPingSentTime?: number;
69
+ private _lastPongLatency: number = 0;
70
+ private _latencySamples: number[] = [];
71
+
72
+ /**
73
+ * Initializes a new instance of {@link WebSocketHubConnection}.
74
+ * @param {string} url The WebSocket URL of the hub endpoint (e.g. {@code ws://localhost:5000/.cratis/queries/ws}).
75
+ * @param {string} microservice The microservice name to pass as a query argument.
76
+ * @param {number} pingIntervalMs How often to send keep-alive pings when the connection is idle (default: 10 000 ms).
77
+ * @param {IReconnectPolicy} reconnectPolicy The reconnect policy to use (default: {@link ReconnectPolicy}).
78
+ */
79
+ constructor(
80
+ private readonly _url: string,
81
+ private readonly _microservice: string,
82
+ pingIntervalMs: number = 10000,
83
+ private readonly _policy: IReconnectPolicy = new ReconnectPolicy()
84
+ ) {
85
+ this._keepAlive = new HubConnectionKeepAlive(pingIntervalMs, () => {
86
+ if (this._socket?.readyState === WebSocket.OPEN) {
87
+ this._lastPingSentTime = Date.now();
88
+ this.sendMessage({ type: HubMessageType.Ping, timestamp: this._lastPingSentTime });
89
+ }
90
+ });
91
+ }
92
+
93
+ /**
94
+ * Gets the number of active query subscriptions on this connection.
95
+ */
96
+ get queryCount(): number {
97
+ return this._subscriptions.size;
98
+ }
99
+
100
+ /**
101
+ * Gets the latency of the last ping/pong sequence in milliseconds.
102
+ */
103
+ get lastPingLatency(): number {
104
+ return this._lastPongLatency;
105
+ }
106
+
107
+ /**
108
+ * Gets the rolling average latency in milliseconds.
109
+ */
110
+ get averageLatency(): number {
111
+ if (this._latencySamples.length === 0) return 0;
112
+ return this._latencySamples.reduce((a, b) => a + b, 0) / this._latencySamples.length;
113
+ }
114
+
115
+ /**
116
+ * Subscribe to a query on this hub connection.
117
+ * If the WebSocket is not yet open, the subscribe message will be sent once the connection is established.
118
+ * @param {string} queryId Client-generated unique identifier for this subscription.
119
+ * @param {SubscriptionRequest} request The subscription request payload.
120
+ * @param {DataReceived<any>} callback Callback invoked whenever the server pushes a result for this query.
121
+ */
122
+ subscribe(queryId: string, request: SubscriptionRequest, callback: DataReceived<any>): void {
123
+ this._subscriptions.set(queryId, { request, callback });
124
+ this.ensureConnected();
125
+
126
+ if (this._socket?.readyState === WebSocket.OPEN) {
127
+ this.sendSubscribeMessage(queryId, request);
128
+ }
129
+ // If not yet open, sendAllSubscriptions will fire in onopen.
130
+ }
131
+
132
+ /**
133
+ * Unsubscribe from a query on this hub connection.
134
+ * @param {string} queryId The identifier of the subscription to cancel.
135
+ */
136
+ unsubscribe(queryId: string): void {
137
+ this._subscriptions.delete(queryId);
138
+
139
+ if (this._socket?.readyState === WebSocket.OPEN) {
140
+ this.sendMessage({ type: HubMessageType.Unsubscribe, queryId });
141
+ }
142
+
143
+ // If no subscriptions remain, close the connection to free resources.
144
+ if (this._subscriptions.size === 0) {
145
+ this.close();
146
+ }
147
+ }
148
+
149
+ /**
150
+ * Permanently close this hub connection and clean up all subscriptions.
151
+ */
152
+ dispose(): void {
153
+ this._disconnected = true;
154
+ this._subscriptions.clear();
155
+ this._keepAlive.stop();
156
+ this._policy.cancel();
157
+ this._socket?.close();
158
+ this._socket = undefined;
159
+ }
160
+
161
+ private ensureConnected(): void {
162
+ if (this._disconnected) {
163
+ // Reset disconnected flag when a new subscription comes in
164
+ this._disconnected = false;
165
+ }
166
+
167
+ if (this._socket && (this._socket.readyState === WebSocket.OPEN || this._socket.readyState === WebSocket.CONNECTING)) {
168
+ return;
169
+ }
170
+
171
+ this.openSocket();
172
+ }
173
+
174
+ private close(): void {
175
+ this._disconnected = true;
176
+ this._keepAlive.stop();
177
+ this._policy.cancel();
178
+ this._socket?.close();
179
+ this._socket = undefined;
180
+ }
181
+
182
+ private openSocket(): void {
183
+ let url = this._url;
184
+ if (this._microservice?.length > 0) {
185
+ const param = `${Globals.microserviceWSQueryArgument}=${encodeURIComponent(this._microservice)}`;
186
+ url += (url.includes('?') ? '&' : '?') + param;
187
+ }
188
+
189
+ this._socket = new WebSocket(url);
190
+
191
+ this._socket.onopen = () => {
192
+ if (this._disconnected) return;
193
+ console.log(`Hub connection established: '${url}'`);
194
+ this._policy.reset();
195
+ this._keepAlive.start();
196
+ this.sendAllSubscriptions();
197
+ };
198
+
199
+ this._socket.onclose = () => {
200
+ if (this._disconnected) return;
201
+ console.log(`Hub connection closed: '${url}'`);
202
+ this._keepAlive.stop();
203
+ if (this._subscriptions.size === 0) return;
204
+ this._policy.schedule(() => {
205
+ if (!this._disconnected && this._subscriptions.size > 0) {
206
+ this.openSocket();
207
+ }
208
+ }, this._url);
209
+ };
210
+
211
+ this._socket.onerror = (error) => {
212
+ if (this._disconnected) return;
213
+ console.error(`Hub connection error: '${url}'`, error);
214
+ this._keepAlive.stop();
215
+ // onclose will fire after onerror, triggering reconnect
216
+ };
217
+
218
+ this._socket.onmessage = (ev) => {
219
+ if (this._disconnected) return;
220
+ this.handleMessage(ev.data as string);
221
+ };
222
+ }
223
+
224
+ private sendAllSubscriptions(): void {
225
+ for (const [queryId, sub] of this._subscriptions) {
226
+ this.sendSubscribeMessage(queryId, sub.request);
227
+ }
228
+ }
229
+
230
+ private sendSubscribeMessage(queryId: string, request: SubscriptionRequest): void {
231
+ this.sendMessage({
232
+ type: HubMessageType.Subscribe,
233
+ queryId,
234
+ payload: request,
235
+ });
236
+ }
237
+
238
+ private sendMessage(message: HubMessage): void {
239
+ if (this._socket?.readyState === WebSocket.OPEN) {
240
+ this._socket.send(JSON.stringify(message));
241
+ }
242
+ }
243
+
244
+ private handleMessage(rawData: string): void {
245
+ try {
246
+ const message = JSON.parse(rawData) as HubMessage;
247
+
248
+ // Every received message is activity — skip keep-alive ping if data is flowing.
249
+ this._keepAlive.recordActivity();
250
+
251
+ switch (message.type) {
252
+ case HubMessageType.QueryResult:
253
+ this.handleQueryResult(message);
254
+ break;
255
+ case HubMessageType.Pong:
256
+ this.handlePong(message);
257
+ break;
258
+ case HubMessageType.Unauthorized:
259
+ console.warn(`Hub: query '${message.queryId}' unauthorized`);
260
+ break;
261
+ case HubMessageType.Error:
262
+ console.error(`Hub: query '${message.queryId}' error:`, message.payload);
263
+ break;
264
+ }
265
+ } catch (error) {
266
+ console.error('Hub: error parsing message', error);
267
+ }
268
+ }
269
+
270
+ private handleQueryResult(message: HubMessage): void {
271
+ if (!message.queryId) return;
272
+
273
+ const sub = this._subscriptions.get(message.queryId);
274
+ if (!sub) return;
275
+
276
+ const result = message.payload as QueryResult<any>;
277
+ sub.callback(result);
278
+ }
279
+
280
+ private handlePong(message: HubMessage): void {
281
+ if (message.timestamp && this._lastPingSentTime) {
282
+ const latency = Date.now() - message.timestamp;
283
+ this._lastPongLatency = latency;
284
+ this._latencySamples.push(latency);
285
+
286
+ if (this._latencySamples.length > 100) {
287
+ this._latencySamples.shift();
288
+ }
289
+ }
290
+ }
291
+ }
@@ -0,0 +1,73 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import sinon from 'sinon';
5
+ import { HubConnectionKeepAlive } from '../HubConnectionKeepAlive';
6
+
7
+ describe('for HubConnectionKeepAlive', () => {
8
+ let clock: sinon.SinonFakeTimers;
9
+
10
+ beforeEach(() => { clock = sinon.useFakeTimers(); });
11
+ afterEach(() => { clock.restore(); sinon.restore(); });
12
+
13
+ describe('when started and the interval elapses without any activity', () => {
14
+ let onIdle: sinon.SinonStub;
15
+ let keepAlive: HubConnectionKeepAlive;
16
+
17
+ beforeEach(() => {
18
+ onIdle = sinon.stub();
19
+ keepAlive = new HubConnectionKeepAlive(1000, onIdle);
20
+ keepAlive.start();
21
+ clock.tick(1001);
22
+ });
23
+
24
+ it('should invoke the onIdle callback', () => onIdle.calledOnce.should.be.true);
25
+ });
26
+
27
+ describe('when activity is recorded before the interval elapses', () => {
28
+ let onIdle: sinon.SinonStub;
29
+ let keepAlive: HubConnectionKeepAlive;
30
+
31
+ beforeEach(() => {
32
+ onIdle = sinon.stub();
33
+ keepAlive = new HubConnectionKeepAlive(1000, onIdle);
34
+ keepAlive.start();
35
+ clock.tick(500);
36
+ keepAlive.recordActivity();
37
+ clock.tick(600);
38
+ });
39
+
40
+ it('should not invoke the onIdle callback', () => onIdle.called.should.be.false);
41
+ });
42
+
43
+ describe('when stopped before the interval elapses', () => {
44
+ let onIdle: sinon.SinonStub;
45
+ let keepAlive: HubConnectionKeepAlive;
46
+
47
+ beforeEach(() => {
48
+ onIdle = sinon.stub();
49
+ keepAlive = new HubConnectionKeepAlive(1000, onIdle);
50
+ keepAlive.start();
51
+ clock.tick(500);
52
+ keepAlive.stop();
53
+ clock.tick(600);
54
+ });
55
+
56
+ it('should not invoke the onIdle callback', () => onIdle.called.should.be.false);
57
+ });
58
+
59
+ describe('when started twice', () => {
60
+ let onIdle: sinon.SinonStub;
61
+ let keepAlive: HubConnectionKeepAlive;
62
+
63
+ beforeEach(() => {
64
+ onIdle = sinon.stub();
65
+ keepAlive = new HubConnectionKeepAlive(1000, onIdle);
66
+ keepAlive.start();
67
+ keepAlive.start();
68
+ clock.tick(1001);
69
+ });
70
+
71
+ it('should invoke the onIdle callback exactly once', () => onIdle.calledOnce.should.be.true);
72
+ });
73
+ });
@@ -8,19 +8,23 @@ export class an_observable_query_connection {
8
8
  connection: ObservableQueryConnection<string>;
9
9
  url: URL;
10
10
  microservice: string;
11
- mockWebSocket: sinon.SinonStubbedInstance<WebSocket>;
11
+ mockWebSocket: Record<string, unknown>;
12
12
 
13
13
  constructor() {
14
14
  this.url = new URL('https://example.com/api/test');
15
15
  this.microservice = 'test-microservice';
16
-
17
- // Stub the WebSocket constructor
18
- this.mockWebSocket = sinon.createStubInstance(WebSocket);
19
- Object.defineProperty(this.mockWebSocket, 'readyState', {
20
- value: WebSocket.OPEN,
21
- writable: false
22
- });
23
-
16
+
17
+ // Create a plain mock WebSocket object
18
+ this.mockWebSocket = {
19
+ onopen: null,
20
+ onclose: null,
21
+ onerror: null,
22
+ onmessage: null,
23
+ close: sinon.stub(),
24
+ send: sinon.stub(),
25
+ readyState: WebSocket.OPEN,
26
+ };
27
+
24
28
  // Create connection with a short ping interval for testing (100ms)
25
29
  this.connection = new ObservableQueryConnection<string>(this.url, this.microservice, 100);
26
30
  }
@@ -0,0 +1,26 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { QueryConnectionDescriptor } from '../../ObservableQueryConnectionFactory';
5
+ import { Globals } from '../../../Globals';
6
+ import { QueryTransportMethod } from '../../QueryTransportMethod';
7
+
8
+ export class a_descriptor {
9
+ descriptor: QueryConnectionDescriptor;
10
+ originalDirectMode: boolean;
11
+ originalTransportMethod: QueryTransportMethod;
12
+
13
+ constructor() {
14
+ this.originalDirectMode = Globals.queryDirectMode;
15
+ this.originalTransportMethod = Globals.queryTransportMethod;
16
+
17
+ this.descriptor = {
18
+ route: '/api/test/{id}',
19
+ queryName: 'TestApp.Features.Queries.AllItems',
20
+ origin: 'https://example.com',
21
+ apiBasePath: '',
22
+ microservice: '',
23
+ args: { id: 'item-42' },
24
+ };
25
+ }
26
+ }
@@ -0,0 +1,62 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { a_descriptor } from '../given/a_descriptor';
5
+ import { given } from '../../../given';
6
+ import { Globals } from '../../../Globals';
7
+ import { QueryTransportMethod } from '../../QueryTransportMethod';
8
+ import { createObservableQueryConnection } from '../../ObservableQueryConnectionFactory';
9
+ import { ServerSentEventQueryConnection } from '../../ServerSentEventQueryConnection';
10
+ import { IObservableQueryConnection } from '../../IObservableQueryConnection';
11
+
12
+ import * as sinon from 'sinon';
13
+
14
+ describe('when creating with direct mode and SSE transport', given(a_descriptor, context => {
15
+ let connection: IObservableQueryConnection<unknown>;
16
+ let capturedUrl: string;
17
+
18
+ beforeEach(() => {
19
+ Globals.queryDirectMode = true;
20
+ Globals.queryTransportMethod = QueryTransportMethod.ServerSentEvents;
21
+
22
+ const FakeEventSourceConstructor = function (this: EventSource, url: string) {
23
+ capturedUrl = url;
24
+ Object.assign(this, {
25
+ onopen: null,
26
+ onerror: null,
27
+ onmessage: null,
28
+ close: sinon.stub(),
29
+ addEventListener: sinon.stub(),
30
+ removeEventListener: sinon.stub(),
31
+ });
32
+ };
33
+ (globalThis as Record<string, unknown>)['EventSource'] = FakeEventSourceConstructor;
34
+
35
+ connection = createObservableQueryConnection(context.descriptor);
36
+ });
37
+
38
+ afterEach(() => {
39
+ Globals.queryDirectMode = context.originalDirectMode;
40
+ Globals.queryTransportMethod = context.originalTransportMethod;
41
+ delete (globalThis as Record<string, unknown>)['EventSource'];
42
+ });
43
+
44
+ it('should return a ServerSentEventQueryConnection', () => {
45
+ connection.should.be.instanceOf(ServerSentEventQueryConnection);
46
+ });
47
+
48
+ it('should target the per-query URL with route parameters replaced', () => {
49
+ (connection as ServerSentEventQueryConnection<unknown>).connect(sinon.stub());
50
+ capturedUrl.should.include('/api/test/item-42');
51
+ });
52
+
53
+ it('should not target the hub SSE endpoint', () => {
54
+ (connection as ServerSentEventQueryConnection<unknown>).connect(sinon.stub());
55
+ capturedUrl.should.not.include('/.cratis/queries/sse');
56
+ });
57
+
58
+ it('should not include a query name parameter', () => {
59
+ (connection as ServerSentEventQueryConnection<unknown>).connect(sinon.stub());
60
+ capturedUrl.should.not.include('query=');
61
+ });
62
+ }));
@@ -0,0 +1,59 @@
1
+ // Copyright (c) Cratis. All rights reserved.
2
+ // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3
+
4
+ import { a_descriptor } from '../given/a_descriptor';
5
+ import { given } from '../../../given';
6
+ import { Globals } from '../../../Globals';
7
+ import { QueryTransportMethod } from '../../QueryTransportMethod';
8
+ import { createObservableQueryConnection } from '../../ObservableQueryConnectionFactory';
9
+ import { ObservableQueryConnection } from '../../ObservableQueryConnection';
10
+ import { IObservableQueryConnection } from '../../IObservableQueryConnection';
11
+
12
+ import * as sinon from 'sinon';
13
+
14
+ describe('when creating with direct mode and WebSocket transport', given(a_descriptor, context => {
15
+ let connection: IObservableQueryConnection<unknown>;
16
+ let originalWebSocket: typeof WebSocket;
17
+ let capturedUrl: string;
18
+
19
+ beforeEach(() => {
20
+ Globals.queryDirectMode = true;
21
+ Globals.queryTransportMethod = QueryTransportMethod.WebSocket;
22
+
23
+ originalWebSocket = global.WebSocket;
24
+ (global as Record<string, unknown>).WebSocket = function (url: string) {
25
+ capturedUrl = url;
26
+ return {
27
+ onopen: null,
28
+ onclose: null,
29
+ onerror: null,
30
+ onmessage: null,
31
+ close: sinon.stub(),
32
+ send: sinon.stub(),
33
+ };
34
+ };
35
+
36
+ connection = createObservableQueryConnection(context.descriptor);
37
+ });
38
+
39
+ afterEach(() => {
40
+ Globals.queryDirectMode = context.originalDirectMode;
41
+ Globals.queryTransportMethod = context.originalTransportMethod;
42
+ global.WebSocket = originalWebSocket;
43
+ sinon.restore();
44
+ });
45
+
46
+ it('should return an ObservableQueryConnection', () => {
47
+ connection.should.be.instanceOf(ObservableQueryConnection);
48
+ });
49
+
50
+ it('should target the per-query URL with route parameters replaced', () => {
51
+ (connection as ObservableQueryConnection<unknown>).connect(sinon.stub());
52
+ capturedUrl.should.include('/api/test/item-42');
53
+ });
54
+
55
+ it('should not target the hub endpoint', () => {
56
+ (connection as ObservableQueryConnection<unknown>).connect(sinon.stub());
57
+ capturedUrl.should.not.include('/.cratis/queries');
58
+ });
59
+ }));