doover-js 0.11.0 → 0.13.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 (389) hide show
  1. package/README.md +106 -0
  2. package/dist/apis/_args.js +5 -5
  3. package/dist/apis/agents-api.d.ts +4 -4
  4. package/dist/apis/agents-api.js +2 -2
  5. package/dist/apis/aggregates-api.d.ts +4 -4
  6. package/dist/apis/aggregates-api.js +5 -5
  7. package/dist/apis/alarms-api.d.ts +2 -2
  8. package/dist/apis/alarms-api.js +3 -3
  9. package/dist/apis/channels-api.d.ts +3 -3
  10. package/dist/apis/channels-api.js +6 -6
  11. package/dist/apis/connections-api.d.ts +2 -2
  12. package/dist/apis/connections-api.js +6 -6
  13. package/dist/apis/messages-api.d.ts +4 -4
  14. package/dist/apis/messages-api.js +11 -11
  15. package/dist/apis/notifications-api.d.ts +2 -2
  16. package/dist/apis/notifications-api.js +4 -4
  17. package/dist/apis/organisations-api.d.ts +2 -2
  18. package/dist/apis/permissions-api.d.ts +2 -2
  19. package/dist/apis/permissions-api.js +3 -3
  20. package/dist/apis/processors-api.d.ts +2 -2
  21. package/dist/apis/turn-api.d.ts +2 -2
  22. package/dist/apis/users-api.d.ts +2 -2
  23. package/dist/auth/auth-store.d.ts +1 -1
  24. package/dist/auth/build-auth.d.ts +3 -3
  25. package/dist/auth/build-auth.js +8 -8
  26. package/dist/auth/cookie-auth.d.ts +1 -1
  27. package/dist/auth/cookie-auth.js +2 -2
  28. package/dist/auth/doover-auth.d.ts +2 -2
  29. package/dist/auth/doover-token-auth.d.ts +3 -3
  30. package/dist/auth/doover-token-auth.js +13 -13
  31. package/dist/auth/index.d.ts +10 -0
  32. package/dist/auth/index.js +15 -0
  33. package/dist/client/data-client.d.ts +17 -14
  34. package/dist/client/doover-client.d.ts +9 -7
  35. package/dist/client/doover-client.js +44 -42
  36. package/dist/client/errors.d.ts +2 -2
  37. package/dist/client/errors.js +4 -4
  38. package/dist/client/index.d.ts +6 -0
  39. package/dist/client/index.js +12 -0
  40. package/dist/client/local-agent-client.d.ts +3 -3
  41. package/dist/client/local-agent-client.js +19 -19
  42. package/dist/client/multiplex-client.d.ts +5 -5
  43. package/dist/client/multiplex-client.js +25 -25
  44. package/dist/client/multiplex-gateway.d.ts +3 -3
  45. package/dist/client/multiplex-merge.d.ts +1 -1
  46. package/dist/client/network-status.d.ts +17 -0
  47. package/dist/client/network-status.js +70 -0
  48. package/dist/client/offline-cache.d.ts +9 -4
  49. package/dist/client/offline-cache.js +34 -22
  50. package/dist/client/provenance.d.ts +1 -1
  51. package/dist/client/request-options.d.ts +1 -1
  52. package/dist/client/singleton.d.ts +2 -2
  53. package/dist/client/singleton.js +2 -2
  54. package/dist/client/status-tracker.d.ts +1 -1
  55. package/dist/esm/apis/_args.d.ts +16 -0
  56. package/dist/esm/apis/_args.js +27 -0
  57. package/dist/esm/apis/agents-api.d.ts +196 -0
  58. package/dist/esm/apis/agents-api.js +327 -0
  59. package/dist/esm/apis/aggregates-api.d.ts +67 -0
  60. package/dist/esm/apis/aggregates-api.js +64 -0
  61. package/dist/esm/apis/alarms-api.d.ts +48 -0
  62. package/dist/esm/apis/alarms-api.js +75 -0
  63. package/dist/esm/apis/channels-api.d.ts +83 -0
  64. package/dist/esm/apis/channels-api.js +65 -0
  65. package/dist/esm/apis/connections-api.d.ts +45 -0
  66. package/dist/esm/apis/connections-api.js +44 -0
  67. package/dist/esm/apis/messages-api.d.ts +128 -0
  68. package/dist/esm/apis/messages-api.js +179 -0
  69. package/dist/esm/apis/notifications-api.d.ts +94 -0
  70. package/dist/esm/apis/notifications-api.js +153 -0
  71. package/dist/esm/apis/organisations-api.d.ts +26 -0
  72. package/dist/esm/apis/organisations-api.js +41 -0
  73. package/dist/esm/apis/permissions-api.d.ts +17 -0
  74. package/dist/esm/apis/permissions-api.js +23 -0
  75. package/dist/esm/apis/processors-api.d.ts +56 -0
  76. package/dist/esm/apis/processors-api.js +97 -0
  77. package/dist/esm/apis/turn-api.d.ts +7 -0
  78. package/dist/esm/apis/turn-api.js +8 -0
  79. package/dist/esm/apis/users-api.d.ts +8 -0
  80. package/dist/esm/apis/users-api.js +9 -0
  81. package/dist/esm/auth/auth-profile.d.ts +45 -0
  82. package/dist/esm/auth/auth-profile.js +68 -0
  83. package/dist/esm/auth/auth-store.d.ts +14 -0
  84. package/dist/esm/auth/build-auth.d.ts +38 -0
  85. package/dist/esm/auth/build-auth.js +92 -0
  86. package/dist/esm/auth/cookie-auth.d.ts +91 -0
  87. package/dist/esm/auth/cookie-auth.js +196 -0
  88. package/dist/esm/auth/doover-auth.d.ts +52 -0
  89. package/dist/esm/auth/doover-auth.js +28 -0
  90. package/dist/esm/auth/doover-token-auth.d.ts +39 -0
  91. package/dist/esm/auth/doover-token-auth.js +217 -0
  92. package/dist/esm/auth/errors.d.ts +3 -0
  93. package/dist/esm/auth/errors.js +6 -0
  94. package/dist/esm/auth/index.d.ts +10 -0
  95. package/dist/esm/auth/index.js +6 -0
  96. package/dist/esm/auth/jwt.d.ts +6 -0
  97. package/dist/esm/auth/jwt.js +26 -0
  98. package/dist/esm/client/capabilities.d.ts +10 -0
  99. package/dist/esm/client/capabilities.js +42 -0
  100. package/dist/esm/client/data-client.d.ts +107 -0
  101. package/dist/esm/client/doover-client.d.ts +48 -0
  102. package/dist/esm/client/doover-client.js +96 -0
  103. package/dist/esm/client/errors.d.ts +32 -0
  104. package/dist/esm/client/errors.js +64 -0
  105. package/dist/esm/client/index.d.ts +6 -0
  106. package/dist/esm/client/index.js +3 -0
  107. package/dist/esm/client/local-agent-client.d.ts +65 -0
  108. package/dist/esm/client/local-agent-client.js +225 -0
  109. package/dist/esm/client/multiplex-client.d.ts +165 -0
  110. package/dist/esm/client/multiplex-client.js +842 -0
  111. package/dist/esm/client/multiplex-gateway.d.ts +49 -0
  112. package/dist/esm/client/multiplex-gateway.js +110 -0
  113. package/dist/esm/client/multiplex-merge.d.ts +12 -0
  114. package/dist/esm/client/multiplex-merge.js +38 -0
  115. package/dist/esm/client/network-status.d.ts +17 -0
  116. package/dist/esm/client/network-status.js +66 -0
  117. package/dist/esm/client/offline-cache.d.ts +167 -0
  118. package/dist/esm/client/offline-cache.js +769 -0
  119. package/dist/esm/client/provenance.d.ts +60 -0
  120. package/dist/esm/client/provenance.js +108 -0
  121. package/dist/esm/client/request-options.d.ts +23 -0
  122. package/dist/esm/client/request-options.js +23 -0
  123. package/dist/esm/client/singleton.d.ts +26 -0
  124. package/dist/esm/client/singleton.js +54 -0
  125. package/dist/esm/client/stats.d.ts +79 -0
  126. package/dist/esm/client/stats.js +155 -0
  127. package/dist/esm/client/status-tracker.d.ts +24 -0
  128. package/dist/esm/client/status-tracker.js +86 -0
  129. package/dist/esm/gateway/gateway-client.d.ts +86 -0
  130. package/dist/esm/gateway/gateway-client.js +463 -0
  131. package/dist/esm/gateway/index.d.ts +3 -0
  132. package/dist/esm/gateway/index.js +1 -0
  133. package/dist/esm/gateway/types.d.ts +142 -0
  134. package/dist/esm/http/errors.d.ts +19 -0
  135. package/dist/esm/http/errors.js +22 -0
  136. package/dist/esm/http/index.d.ts +3 -0
  137. package/dist/esm/http/index.js +2 -0
  138. package/dist/esm/http/rest-client.d.ts +64 -0
  139. package/dist/esm/http/rest-client.js +181 -0
  140. package/dist/esm/index.d.ts +64 -0
  141. package/dist/esm/index.js +38 -0
  142. package/dist/esm/node/config-manager.d.ts +34 -0
  143. package/dist/esm/node/config-manager.js +140 -0
  144. package/dist/esm/node/index.d.ts +1 -0
  145. package/dist/esm/node/index.js +1 -0
  146. package/dist/esm/package.json +1 -0
  147. package/dist/esm/react/context.d.ts +23 -0
  148. package/dist/esm/react/context.js +28 -0
  149. package/dist/esm/react/index.d.ts +38 -0
  150. package/dist/esm/react/index.js +21 -0
  151. package/dist/esm/react/messageRangeStore.d.ts +93 -0
  152. package/dist/esm/react/messageRangeStore.js +140 -0
  153. package/dist/esm/react/sharedQueryClient.d.ts +21 -0
  154. package/dist/esm/react/sharedQueryClient.js +35 -0
  155. package/dist/esm/react/useAgentChannel.d.ts +8 -0
  156. package/dist/esm/react/useAgentChannel.js +9 -0
  157. package/dist/esm/react/useAgentConnections.d.ts +8 -0
  158. package/dist/esm/react/useAgentConnections.js +20 -0
  159. package/dist/esm/react/useAgentTokenState.d.ts +70 -0
  160. package/dist/esm/react/useAgentTokenState.js +127 -0
  161. package/dist/esm/react/useChannelAggregate.d.ts +64 -0
  162. package/dist/esm/react/useChannelAggregate.js +77 -0
  163. package/dist/esm/react/useChannelMessage.d.ts +45 -0
  164. package/dist/esm/react/useChannelMessage.js +79 -0
  165. package/dist/esm/react/useChannelMessages.d.ts +83 -0
  166. package/dist/esm/react/useChannelMessages.js +214 -0
  167. package/dist/esm/react/useChannelSubscription.d.ts +27 -0
  168. package/dist/esm/react/useChannelSubscription.js +30 -0
  169. package/dist/esm/react/useClientStatus.d.ts +10 -0
  170. package/dist/esm/react/useClientStatus.js +19 -0
  171. package/dist/esm/react/useConnectionState.d.ts +26 -0
  172. package/dist/esm/react/useConnectionState.js +45 -0
  173. package/dist/esm/react/useDeviceMap.d.ts +109 -0
  174. package/dist/esm/react/useDeviceMap.js +59 -0
  175. package/dist/esm/react/useInvocationLogs.d.ts +23 -0
  176. package/dist/esm/react/useInvocationLogs.js +37 -0
  177. package/dist/esm/react/useMultiAgentAggregates.d.ts +38 -0
  178. package/dist/esm/react/useMultiAgentAggregates.js +104 -0
  179. package/dist/esm/react/useMultiAgentChannelMessages.d.ts +79 -0
  180. package/dist/esm/react/useMultiAgentChannelMessages.js +169 -0
  181. package/dist/esm/react/useOfflineStatus.d.ts +8 -0
  182. package/dist/esm/react/useOfflineStatus.js +37 -0
  183. package/dist/esm/react/useSendMessage.d.ts +16 -0
  184. package/dist/esm/react/useSendMessage.js +26 -0
  185. package/dist/esm/react/useSendRpc.d.ts +68 -0
  186. package/dist/esm/react/useSendRpc.js +164 -0
  187. package/dist/esm/react/useTurnCredentials.d.ts +12 -0
  188. package/dist/esm/react/useTurnCredentials.js +22 -0
  189. package/dist/esm/react/useUpdateAggregate.d.ts +27 -0
  190. package/dist/esm/react/useUpdateAggregate.js +39 -0
  191. package/dist/esm/react/useUpdateMessage.d.ts +38 -0
  192. package/dist/esm/react/useUpdateMessage.js +36 -0
  193. package/dist/esm/refine/index.d.ts +72 -0
  194. package/dist/esm/refine/index.js +215 -0
  195. package/dist/esm/rpc/errors.d.ts +10 -0
  196. package/dist/esm/rpc/errors.js +19 -0
  197. package/dist/esm/rpc/index.d.ts +3 -0
  198. package/dist/esm/rpc/index.js +2 -0
  199. package/dist/esm/rpc/rpc-dispatcher.d.ts +41 -0
  200. package/dist/esm/rpc/rpc-dispatcher.js +141 -0
  201. package/dist/esm/types/audit.d.ts +53 -0
  202. package/dist/esm/types/audit.js +11 -0
  203. package/dist/esm/types/batch.d.ts +85 -0
  204. package/dist/esm/types/batch.js +42 -0
  205. package/dist/esm/types/common.d.ts +250 -0
  206. package/dist/esm/types/connection.d.ts +72 -0
  207. package/dist/esm/types/connection.js +7 -0
  208. package/dist/esm/types/index.d.ts +9 -0
  209. package/dist/esm/types/openapi.d.ts +195 -0
  210. package/dist/esm/types/provenance.d.ts +45 -0
  211. package/dist/esm/types/viewer.d.ts +122 -0
  212. package/dist/esm/utils/snowflake.d.ts +21 -0
  213. package/dist/esm/utils/snowflake.js +33 -0
  214. package/dist/esm/viewer/doover-data-provider.d.ts +90 -0
  215. package/dist/esm/viewer/doover-data-provider.js +189 -0
  216. package/dist/esm/viewer/path-parsing.d.ts +5 -0
  217. package/dist/esm/viewer/path-parsing.js +35 -0
  218. package/dist/gateway/gateway-client.d.ts +5 -5
  219. package/dist/gateway/gateway-client.js +5 -5
  220. package/dist/gateway/index.d.ts +3 -0
  221. package/dist/gateway/index.js +5 -0
  222. package/dist/gateway/types.d.ts +1 -1
  223. package/dist/http/index.d.ts +3 -0
  224. package/dist/http/index.js +9 -0
  225. package/dist/http/rest-client.d.ts +5 -3
  226. package/dist/http/rest-client.js +2 -2
  227. package/dist/index.d.ts +64 -62
  228. package/dist/index.js +92 -89
  229. package/dist/node/config-manager.d.ts +2 -2
  230. package/dist/node/config-manager.js +5 -5
  231. package/dist/node/index.d.ts +1 -1
  232. package/dist/node/index.js +2 -2
  233. package/dist/react/context.d.ts +1 -1
  234. package/dist/react/index.d.ts +38 -38
  235. package/dist/react/index.js +59 -59
  236. package/dist/react/messageRangeStore.d.ts +1 -1
  237. package/dist/react/useAgentChannel.d.ts +3 -3
  238. package/dist/react/useAgentChannel.js +2 -2
  239. package/dist/react/useAgentConnections.d.ts +1 -1
  240. package/dist/react/useAgentConnections.js +2 -2
  241. package/dist/react/useAgentTokenState.d.ts +3 -3
  242. package/dist/react/useAgentTokenState.js +8 -8
  243. package/dist/react/useChannelAggregate.d.ts +3 -3
  244. package/dist/react/useChannelAggregate.js +8 -8
  245. package/dist/react/useChannelMessage.d.ts +2 -2
  246. package/dist/react/useChannelMessage.js +4 -4
  247. package/dist/react/useChannelMessages.d.ts +3 -3
  248. package/dist/react/useChannelMessages.js +10 -10
  249. package/dist/react/useChannelSubscription.d.ts +2 -2
  250. package/dist/react/useChannelSubscription.js +2 -2
  251. package/dist/react/useClientStatus.d.ts +1 -1
  252. package/dist/react/useClientStatus.js +2 -2
  253. package/dist/react/useConnectionState.js +2 -2
  254. package/dist/react/useDeviceMap.js +2 -2
  255. package/dist/react/useInvocationLogs.d.ts +1 -1
  256. package/dist/react/useInvocationLogs.js +2 -2
  257. package/dist/react/useMultiAgentAggregates.d.ts +1 -1
  258. package/dist/react/useMultiAgentAggregates.js +5 -5
  259. package/dist/react/useMultiAgentChannelMessages.d.ts +1 -1
  260. package/dist/react/useMultiAgentChannelMessages.js +2 -2
  261. package/dist/react/useOfflineStatus.d.ts +2 -2
  262. package/dist/react/useOfflineStatus.js +31 -17
  263. package/dist/react/useSendMessage.d.ts +2 -2
  264. package/dist/react/useSendMessage.js +2 -2
  265. package/dist/react/useSendRpc.d.ts +2 -2
  266. package/dist/react/useSendRpc.js +2 -2
  267. package/dist/react/useTurnCredentials.d.ts +2 -2
  268. package/dist/react/useTurnCredentials.js +2 -2
  269. package/dist/react/useUpdateAggregate.d.ts +3 -3
  270. package/dist/react/useUpdateAggregate.js +4 -4
  271. package/dist/react/useUpdateMessage.d.ts +2 -2
  272. package/dist/react/useUpdateMessage.js +2 -2
  273. package/dist/refine/index.d.ts +1 -1
  274. package/dist/rpc/errors.d.ts +1 -1
  275. package/dist/rpc/index.d.ts +3 -0
  276. package/dist/rpc/index.js +7 -0
  277. package/dist/rpc/rpc-dispatcher.d.ts +4 -4
  278. package/dist/rpc/rpc-dispatcher.js +2 -2
  279. package/dist/types/common.d.ts +1 -1
  280. package/dist/types/index.d.ts +9 -0
  281. package/dist/types/index.js +2 -0
  282. package/dist/types/openapi.d.ts +1 -1
  283. package/dist/types/viewer.d.ts +2 -2
  284. package/dist/viewer/doover-data-provider.d.ts +10 -10
  285. package/dist/viewer/doover-data-provider.js +25 -25
  286. package/dist/viewer/path-parsing.d.ts +1 -1
  287. package/package.json +795 -8
  288. package/dist/test/api-args.test.js +0 -48
  289. package/dist/test/api-overloads.test.d.ts +0 -9
  290. package/dist/test/api-overloads.test.js +0 -330
  291. package/dist/test/apis.test.js +0 -408
  292. package/dist/test/auth.test.js +0 -708
  293. package/dist/test/batch-apis.test.js +0 -183
  294. package/dist/test/capabilities.test.js +0 -27
  295. package/dist/test/config-manager.test.js +0 -160
  296. package/dist/test/data-client-errors.test.js +0 -24
  297. package/dist/test/data-client-shape.test.js +0 -28
  298. package/dist/test/doover-client-dataclient.test.d.ts +0 -1
  299. package/dist/test/doover-client-dataclient.test.js +0 -58
  300. package/dist/test/doover-client-provenance.test.d.ts +0 -1
  301. package/dist/test/doover-client-provenance.test.js +0 -32
  302. package/dist/test/doover-client.test.d.ts +0 -1
  303. package/dist/test/doover-client.test.js +0 -42
  304. package/dist/test/doover-data-provider.test.d.ts +0 -1
  305. package/dist/test/doover-data-provider.test.js +0 -657
  306. package/dist/test/exports.test.d.ts +0 -1
  307. package/dist/test/exports.test.js +0 -80
  308. package/dist/test/gateway-client.test.d.ts +0 -1
  309. package/dist/test/gateway-client.test.js +0 -474
  310. package/dist/test/gateway-provenance.test.d.ts +0 -1
  311. package/dist/test/gateway-provenance.test.js +0 -29
  312. package/dist/test/gateway-subscriptions.test.d.ts +0 -1
  313. package/dist/test/gateway-subscriptions.test.js +0 -95
  314. package/dist/test/helpers.d.ts +0 -32
  315. package/dist/test/helpers.js +0 -115
  316. package/dist/test/local-agent-client.test.d.ts +0 -1
  317. package/dist/test/local-agent-client.test.js +0 -202
  318. package/dist/test/message-range-store.test.d.ts +0 -1
  319. package/dist/test/message-range-store.test.js +0 -183
  320. package/dist/test/multiplex-capabilities.test.d.ts +0 -1
  321. package/dist/test/multiplex-capabilities.test.js +0 -37
  322. package/dist/test/multiplex-conflicts.test.d.ts +0 -1
  323. package/dist/test/multiplex-conflicts.test.js +0 -35
  324. package/dist/test/multiplex-gateway.test.d.ts +0 -1
  325. package/dist/test/multiplex-gateway.test.js +0 -103
  326. package/dist/test/multiplex-merge.test.d.ts +0 -1
  327. package/dist/test/multiplex-merge.test.js +0 -19
  328. package/dist/test/multiplex-noncore.test.d.ts +0 -1
  329. package/dist/test/multiplex-noncore.test.js +0 -82
  330. package/dist/test/multiplex-passthrough.test.d.ts +0 -1
  331. package/dist/test/multiplex-passthrough.test.js +0 -35
  332. package/dist/test/multiplex-reads.test.d.ts +0 -1
  333. package/dist/test/multiplex-reads.test.js +0 -87
  334. package/dist/test/multiplex-registry.test.d.ts +0 -1
  335. package/dist/test/multiplex-registry.test.js +0 -81
  336. package/dist/test/multiplex-routing.test.d.ts +0 -1
  337. package/dist/test/multiplex-routing.test.js +0 -45
  338. package/dist/test/multiplex-status.test.d.ts +0 -1
  339. package/dist/test/multiplex-status.test.js +0 -63
  340. package/dist/test/multiplex-writes.test.d.ts +0 -1
  341. package/dist/test/multiplex-writes.test.js +0 -93
  342. package/dist/test/offline-cache.test.d.ts +0 -1
  343. package/dist/test/offline-cache.test.js +0 -289
  344. package/dist/test/provenance-regression.test.d.ts +0 -1
  345. package/dist/test/provenance-regression.test.js +0 -45
  346. package/dist/test/provenance-stamper.test.d.ts +0 -1
  347. package/dist/test/provenance-stamper.test.js +0 -41
  348. package/dist/test/provenance-type.test.d.ts +0 -1
  349. package/dist/test/provenance-type.test.js +0 -15
  350. package/dist/test/react-channel-messages-forward.test.d.ts +0 -1
  351. package/dist/test/react-channel-messages-forward.test.js +0 -139
  352. package/dist/test/react-channel-messages-range.test.d.ts +0 -1
  353. package/dist/test/react-channel-messages-range.test.js +0 -109
  354. package/dist/test/react-client-status.test.d.ts +0 -1
  355. package/dist/test/react-client-status.test.js +0 -35
  356. package/dist/test/react-dataclient.test.d.ts +0 -1
  357. package/dist/test/react-dataclient.test.js +0 -28
  358. package/dist/test/react-exports.test.d.ts +0 -1
  359. package/dist/test/react-exports.test.js +0 -46
  360. package/dist/test/react-multiagent-messages.test.d.ts +0 -1
  361. package/dist/test/react-multiagent-messages.test.js +0 -113
  362. package/dist/test/react-sources-option.test.d.ts +0 -1
  363. package/dist/test/react-sources-option.test.js +0 -41
  364. package/dist/test/react.test.d.ts +0 -1
  365. package/dist/test/react.test.js +0 -482
  366. package/dist/test/refine.test.d.ts +0 -1
  367. package/dist/test/refine.test.js +0 -71
  368. package/dist/test/rest-client.test.d.ts +0 -1
  369. package/dist/test/rest-client.test.js +0 -197
  370. package/dist/test/rpc-dispatcher.test.d.ts +0 -1
  371. package/dist/test/rpc-dispatcher.test.js +0 -251
  372. package/dist/test/singleton.test.d.ts +0 -1
  373. package/dist/test/singleton.test.js +0 -62
  374. package/dist/test/stats-rpc.test.d.ts +0 -1
  375. package/dist/test/stats-rpc.test.js +0 -69
  376. package/dist/test/status-tracker.test.d.ts +0 -1
  377. package/dist/test/status-tracker.test.js +0 -85
  378. package/dist/test/users-api.test.d.ts +0 -1
  379. package/dist/test/users-api.test.js +0 -19
  380. package/dist/test/utils.test.d.ts +0 -1
  381. package/dist/test/utils.test.js +0 -64
  382. /package/dist/{test/api-args.test.d.ts → esm/auth/auth-store.js} +0 -0
  383. /package/dist/{test/apis.test.d.ts → esm/client/data-client.js} +0 -0
  384. /package/dist/{test/auth.test.d.ts → esm/gateway/types.js} +0 -0
  385. /package/dist/{test/batch-apis.test.d.ts → esm/types/common.js} +0 -0
  386. /package/dist/{test/capabilities.test.d.ts → esm/types/index.js} +0 -0
  387. /package/dist/{test/config-manager.test.d.ts → esm/types/openapi.js} +0 -0
  388. /package/dist/{test/data-client-errors.test.d.ts → esm/types/provenance.js} +0 -0
  389. /package/dist/{test/data-client-shape.test.d.ts → esm/types/viewer.js} +0 -0
@@ -1,80 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- const chai_1 = require("chai");
37
- const mocha_1 = require("mocha");
38
- const doover = __importStar(require("../index"));
39
- (0, mocha_1.describe)("public exports (Phase 1–3)", () => {
40
- (0, mocha_1.it)("exports LocalAgentClient", () => {
41
- (0, chai_1.expect)(doover.LocalAgentClient).to.be.a("function");
42
- });
43
- (0, mocha_1.it)("exports MultiplexClient", () => {
44
- (0, chai_1.expect)(doover.MultiplexClient).to.be.a("function");
45
- });
46
- (0, mocha_1.it)("exports the new capability/contract symbols", () => {
47
- (0, chai_1.expect)(doover.ALL_CAPABILITIES).to.be.an("array");
48
- (0, chai_1.expect)(doover.UnsupportedCapabilityError).to.be.a("function");
49
- (0, chai_1.expect)(doover.AmbiguousWriteError).to.be.a("function");
50
- (0, chai_1.expect)(doover.DooverOfflineError).to.be.a("function");
51
- (0, chai_1.expect)(doover.OfflineDataClient).to.be.a("function");
52
- (0, chai_1.expect)(doover.MemoryOfflineStorageAdapter).to.be.a("function");
53
- (0, chai_1.expect)(doover.requestOptions).to.be.a("function");
54
- });
55
- (0, mocha_1.it)("type-only exports resolve (compile-time)", () => {
56
- // If any of these types are removed from the public index the import above
57
- // will fail at typecheck time (tsc --noEmit), catching broken type exports.
58
- const _prov = {
59
- client: { id: "cloud", kind: "cloud" },
60
- retrievedAt: 0,
61
- via: { transport: "rest", method: "test", request: {}, startedAt: 0, durationMs: 0 },
62
- };
63
- const _scope = { mode: "all" };
64
- const _status = {
65
- clientId: "cloud",
66
- connected: true,
67
- };
68
- // DataClient is an interface — reference it via a typed variable declaration.
69
- // We don't construct one; the assignment below is never reached at runtime.
70
- void _prov;
71
- void _scope;
72
- void _status;
73
- (0, chai_1.expect)(true).to.equal(true); // keep mocha happy
74
- });
75
- (0, mocha_1.it)("exports the full Phase-1..4 surface", () => {
76
- for (const name of ["ALL_CAPABILITIES", "UnsupportedCapabilityError", "AmbiguousWriteError", "DooverOfflineError", "LocalAgentClient", "MultiplexClient", "DooverClient", "OfflineDataClient", "MemoryOfflineStorageAdapter", "requestOptions"]) {
77
- (0, chai_1.expect)(doover[name], name).to.exist;
78
- }
79
- });
80
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,474 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chai_1 = require("chai");
7
- const mocha_1 = require("mocha");
8
- const sinon_1 = __importDefault(require("sinon"));
9
- const doover_auth_1 = require("../auth/doover-auth");
10
- const errors_1 = require("../auth/errors");
11
- const gateway_client_1 = require("../gateway/gateway-client");
12
- const snowflake_1 = require("../utils/snowflake");
13
- const helpers_1 = require("./helpers");
14
- class RejectingAuth extends doover_auth_1.DooverAuth {
15
- async getHttpHeaders() {
16
- return {};
17
- }
18
- getFetchCredentials() {
19
- return "omit";
20
- }
21
- async prepareWebSocket(url) {
22
- return { url };
23
- }
24
- setToken() {
25
- // no-op for test
26
- }
27
- setRefreshToken() {
28
- // no-op for test
29
- }
30
- async ensureReady() {
31
- throw new errors_1.DooverAuthError("Authentication is invalid; sign in again");
32
- }
33
- }
34
- (0, mocha_1.describe)("GatewayClient", () => {
35
- (0, mocha_1.beforeEach)(() => {
36
- helpers_1.MockWebSocket.reset();
37
- sinon_1.default.useFakeTimers(new Date("2026-01-01T00:00:00.000Z"));
38
- Object.defineProperty(globalThis, "WebSocket", {
39
- value: helpers_1.MockWebSocket,
40
- configurable: true,
41
- writable: true,
42
- });
43
- });
44
- (0, mocha_1.afterEach)(() => {
45
- sinon_1.default.restore();
46
- });
47
- (0, mocha_1.it)("identifies on hello and resumes after a stored session", () => {
48
- const client = new gateway_client_1.GatewayClient({
49
- dataRestUrl: "https://api.example.com",
50
- controlApiUrl: "https://control.example.com",
51
- dataWssUrl: "wss://ws.example.com",
52
- webSocketImpl: helpers_1.MockWebSocket,
53
- });
54
- client.connect();
55
- const ws = helpers_1.MockWebSocket.instances[0];
56
- ws.open();
57
- ws.receive({ op: 0, t: "Hello", d: {} });
58
- (0, chai_1.expect)(JSON.parse(ws.sent[0])).to.deep.include({ op: 10 });
59
- ws.receive({
60
- op: 0,
61
- t: "Ready",
62
- d: { session_id: "s1", session_token: "token", subscriptions: [] },
63
- });
64
- client.disconnect();
65
- client.connect();
66
- const ws2 = helpers_1.MockWebSocket.instances[1];
67
- ws2.open();
68
- ws2.receive({ op: 0, t: "Hello", d: {} });
69
- const resumePayload = JSON.parse(ws2.sent[0]);
70
- (0, chai_1.expect)(resumePayload.op).to.equal(11);
71
- (0, chai_1.expect)(resumePayload.d).to.deep.include({
72
- session_id: "s1",
73
- session_token: "token",
74
- });
75
- });
76
- (0, mocha_1.it)("dispatches websocket events and supports channel operations", () => {
77
- const client = new gateway_client_1.GatewayClient({
78
- dataRestUrl: "https://api.example.com",
79
- controlApiUrl: "https://control.example.com",
80
- dataWssUrl: "wss://ws.example.com",
81
- organisationId: "org-1",
82
- webSocketImpl: helpers_1.MockWebSocket,
83
- });
84
- const channelSync = sinon_1.default.spy();
85
- const messageCreate = sinon_1.default.spy();
86
- const messageUpdate = sinon_1.default.spy();
87
- const aggregateUpdate = sinon_1.default.spy();
88
- const alarmTrigger = sinon_1.default.spy();
89
- const oneShot = sinon_1.default.spy();
90
- const subscribed = sinon_1.default.spy();
91
- const unsubscribed = sinon_1.default.spy();
92
- const wssError = sinon_1.default.spy();
93
- client.on("channelSync", channelSync);
94
- client.on("messageCreate", messageCreate);
95
- client.on("messageUpdate", messageUpdate);
96
- client.on("aggregateUpdate", aggregateUpdate);
97
- client.on("alarmTrigger", alarmTrigger);
98
- client.on("oneShotMessage", oneShot);
99
- client.on("channelSubscription", subscribed);
100
- client.on("channelUnsubscription", unsubscribed);
101
- client.on("wssError", wssError);
102
- client.connect();
103
- const ws = helpers_1.MockWebSocket.instances[0];
104
- ws.open();
105
- ws.receive({ op: 0, t: "Hello", d: {} });
106
- ws.receive({
107
- op: 0,
108
- t: "Ready",
109
- d: { session_id: "s1", session_token: "token", subscriptions: [] },
110
- });
111
- client.subscribe({ agent_id: "a1", name: "c1" });
112
- client.syncChannel({ agent_id: "a1", name: "c1" });
113
- client.sendOneShotMessage({ agent_id: "a1", name: "c1" }, { hello: "world" });
114
- client.unsubscribe({ agent_id: "a1", name: "c1" });
115
- (0, chai_1.expect)(ws.sent.map((message) => JSON.parse(message).op)).to.deep.equal([10, 12, 14, 15, 13]);
116
- const id = (0, snowflake_1.generateSnowflakeIdAtTime)(new Date("2026-01-01T00:00:00.000Z"));
117
- ws.receive({
118
- op: 0,
119
- t: "ChannelSync",
120
- d: {
121
- channel: { agent_id: "a1", name: "c1" },
122
- aggregate: { data: {}, attachments: [] },
123
- },
124
- });
125
- ws.receive({
126
- op: 0,
127
- t: "MessageCreate",
128
- d: {
129
- id,
130
- author_id: "u1",
131
- channel: { agent_id: "a1", name: "c1" },
132
- data: {},
133
- attachments: [],
134
- },
135
- });
136
- ws.receive({
137
- op: 0,
138
- t: "MessageUpdate",
139
- d: {
140
- channel: { agent_id: "a1", name: "c1" },
141
- author_id: "u1",
142
- message: {
143
- id,
144
- author_id: "u1",
145
- channel: { agent_id: "a1", name: "c1" },
146
- data: { full: true },
147
- attachments: [],
148
- },
149
- request_data: { diff: true },
150
- },
151
- });
152
- ws.receive({
153
- op: 0,
154
- t: "AggregateUpdate",
155
- d: {
156
- author_id: "u1",
157
- channel: { agent_id: "a1", name: "c1" },
158
- aggregate: { data: {}, attachments: [] },
159
- request_data: { data: {}, attachments: [] },
160
- organisation_id: "org-1",
161
- },
162
- });
163
- ws.receive({
164
- op: 0,
165
- t: "AlarmTrigger",
166
- d: {
167
- channel: { agent_id: "a1", name: "c1" },
168
- alarm: {
169
- id: "al1",
170
- name: "alarm",
171
- description: "",
172
- enabled: true,
173
- key: "temp",
174
- operator: "gt",
175
- value: 1,
176
- state: "Alarm",
177
- expiry_mins: null,
178
- entered_state_ts: 1,
179
- },
180
- old_state: "OK",
181
- new_state: "Alarm",
182
- aggregate: { data: {}, attachments: [] },
183
- request_data: { data: {}, attachments: [] },
184
- organisation_id: "org-1",
185
- },
186
- });
187
- ws.receive({
188
- op: 0,
189
- t: "OneShotMessage",
190
- d: {
191
- id: null,
192
- author_id: "u1",
193
- channel: { agent_id: "a1", name: "c1" },
194
- data: { hello: "world" },
195
- },
196
- });
197
- ws.receive({
198
- op: 0,
199
- t: "ChannelSubscription",
200
- d: {
201
- agent_id: "u1",
202
- channel: { agent_id: "a1", name: "c1" },
203
- session_id: "s2",
204
- default_session: true,
205
- },
206
- });
207
- ws.receive({
208
- op: 0,
209
- t: "ChannelUnsubscription",
210
- d: {
211
- agent_id: "u1",
212
- channel: { agent_id: "a1", name: "c1" },
213
- session_id: "s2",
214
- default_session: true,
215
- },
216
- });
217
- ws.receive({
218
- op: 0,
219
- t: "WSSErrorEvent",
220
- d: { message: "boom" },
221
- });
222
- (0, chai_1.expect)(channelSync.calledOnce).to.equal(true);
223
- (0, chai_1.expect)(messageCreate.calledWithMatch(sinon_1.default.match({ id, timestamp: sinon_1.default.match.number }))).to.equal(true);
224
- (0, chai_1.expect)(messageUpdate.calledWithMatch(sinon_1.default.match({ id, data: { full: true }, timestamp: sinon_1.default.match.number }), sinon_1.default.match({ diff: true }))).to.equal(true);
225
- (0, chai_1.expect)(aggregateUpdate.calledOnce).to.equal(true);
226
- (0, chai_1.expect)(alarmTrigger.calledOnce).to.equal(true);
227
- (0, chai_1.expect)(oneShot.calledOnce).to.equal(true);
228
- (0, chai_1.expect)(subscribed.calledOnce).to.equal(true);
229
- (0, chai_1.expect)(unsubscribed.calledOnce).to.equal(true);
230
- (0, chai_1.expect)(wssError.calledWith({ message: "boom" })).to.equal(true);
231
- });
232
- (0, mocha_1.it)("handles session cancellation (op 3)", () => {
233
- const client = new gateway_client_1.GatewayClient({
234
- dataRestUrl: "https://api.example.com",
235
- controlApiUrl: "https://control.example.com",
236
- dataWssUrl: "wss://ws.example.com",
237
- webSocketImpl: helpers_1.MockWebSocket,
238
- });
239
- const cancelled = sinon_1.default.spy();
240
- client.on("sessionCancelled", cancelled);
241
- client.connect();
242
- const ws = helpers_1.MockWebSocket.instances[0];
243
- ws.open();
244
- ws.receive({ op: 0, t: "Hello", d: {} });
245
- ws.receive({
246
- op: 0,
247
- t: "Ready",
248
- d: { session_id: "s1", session_token: "token", subscriptions: [] },
249
- });
250
- ws.receive({ op: 3, d: {} });
251
- (0, chai_1.expect)(cancelled.calledOnce).to.equal(true);
252
- (0, chai_1.expect)(client.getSession()).to.equal(null);
253
- });
254
- (0, mocha_1.it)("reports background connect auth failures without creating a socket", async () => {
255
- const client = new gateway_client_1.GatewayClient({
256
- dataRestUrl: "https://api.example.com",
257
- controlApiUrl: "https://control.example.com",
258
- dataWssUrl: "wss://ws.example.com",
259
- webSocketImpl: helpers_1.MockWebSocket,
260
- }, new RejectingAuth());
261
- const wssError = sinon_1.default.spy();
262
- client.on("wssError", wssError);
263
- client.subscribe({ agent_id: "a1", name: "c1" });
264
- await Promise.resolve();
265
- await Promise.resolve();
266
- await Promise.resolve();
267
- await Promise.resolve();
268
- await Promise.resolve();
269
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances).to.have.length(0);
270
- (0, chai_1.expect)(wssError.calledOnce).to.equal(true);
271
- (0, chai_1.expect)(wssError.firstCall.args[0]).to.deep.equal({
272
- message: "Authentication is invalid; sign in again",
273
- });
274
- });
275
- (0, mocha_1.it)("reconnects with exponential backoff + jitter on unexpected close", () => {
276
- // Make jitter deterministic: Math.random() → 1 means "wait the full backoff window".
277
- const randomStub = sinon_1.default.stub(Math, "random").returns(1);
278
- const client = new gateway_client_1.GatewayClient({
279
- dataRestUrl: "https://api.example.com",
280
- controlApiUrl: "https://control.example.com",
281
- dataWssUrl: "wss://ws.example.com",
282
- webSocketImpl: helpers_1.MockWebSocket,
283
- });
284
- client.connect();
285
- helpers_1.MockWebSocket.instances[0].open();
286
- helpers_1.MockWebSocket.instances[0].close(1006, "transport closed");
287
- // 1st attempt: ~1s window
288
- sinon_1.default.clock.tick(999);
289
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(1);
290
- sinon_1.default.clock.tick(1);
291
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(2);
292
- helpers_1.MockWebSocket.instances[1].open();
293
- helpers_1.MockWebSocket.instances[1].close(1006, "transport closed");
294
- // 2nd attempt: ~2s window
295
- sinon_1.default.clock.tick(1999);
296
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(2);
297
- sinon_1.default.clock.tick(1);
298
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(3);
299
- // Successful Ready should reset the attempt counter.
300
- helpers_1.MockWebSocket.instances[2].open();
301
- helpers_1.MockWebSocket.instances[2].receive({ op: 0, t: "Hello", d: {} });
302
- helpers_1.MockWebSocket.instances[2].receive({
303
- op: 0,
304
- t: "Ready",
305
- d: { session_id: "s1", session_token: "token", subscriptions: [] },
306
- });
307
- helpers_1.MockWebSocket.instances[2].close(1006, "transport closed");
308
- sinon_1.default.clock.tick(999);
309
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(3);
310
- sinon_1.default.clock.tick(1);
311
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(4);
312
- randomStub.restore();
313
- });
314
- (0, mocha_1.it)("reconnects immediately on visibilitychange → visible", () => {
315
- const listeners = new Map();
316
- const fakeDocument = {
317
- visibilityState: "hidden",
318
- addEventListener: (event, handler) => {
319
- listeners.set(event, handler);
320
- },
321
- removeEventListener: (event) => {
322
- listeners.delete(event);
323
- },
324
- };
325
- Object.defineProperty(globalThis, "document", {
326
- value: fakeDocument,
327
- configurable: true,
328
- writable: true,
329
- });
330
- sinon_1.default.stub(Math, "random").returns(1);
331
- const client = new gateway_client_1.GatewayClient({
332
- dataRestUrl: "https://api.example.com",
333
- controlApiUrl: "https://control.example.com",
334
- dataWssUrl: "wss://ws.example.com",
335
- webSocketImpl: helpers_1.MockWebSocket,
336
- });
337
- client.connect();
338
- helpers_1.MockWebSocket.instances[0].open();
339
- helpers_1.MockWebSocket.instances[0].close(1006, "transport closed");
340
- // Pending backoff would wait up to 1s.
341
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(1);
342
- // Tab returns to visible — bypass backoff, reconnect now.
343
- fakeDocument.visibilityState = "visible";
344
- listeners.get("visibilitychange")?.(new Event("visibilitychange"));
345
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(2);
346
- // @ts-expect-error — cleanup test global
347
- delete globalThis.document;
348
- });
349
- (0, mocha_1.it)("skips lifecycle listeners when disableBrowserLifecycleHooks is true", () => {
350
- const addSpy = sinon_1.default.spy();
351
- const fakeDocument = {
352
- visibilityState: "visible",
353
- addEventListener: addSpy,
354
- removeEventListener: sinon_1.default.spy(),
355
- };
356
- Object.defineProperty(globalThis, "document", {
357
- value: fakeDocument,
358
- configurable: true,
359
- writable: true,
360
- });
361
- new gateway_client_1.GatewayClient({
362
- dataRestUrl: "https://api.example.com",
363
- controlApiUrl: "https://control.example.com",
364
- dataWssUrl: "wss://ws.example.com",
365
- webSocketImpl: helpers_1.MockWebSocket,
366
- disableBrowserLifecycleHooks: true,
367
- });
368
- (0, chai_1.expect)(addSpy.called).to.equal(false);
369
- // @ts-expect-error — cleanup test global
370
- delete globalThis.document;
371
- });
372
- (0, mocha_1.it)("caps backoff at 30s and does not reconnect after explicit disconnect", () => {
373
- const randomStub = sinon_1.default.stub(Math, "random").returns(1);
374
- const client = new gateway_client_1.GatewayClient({
375
- dataRestUrl: "https://api.example.com",
376
- controlApiUrl: "https://control.example.com",
377
- dataWssUrl: "wss://ws.example.com",
378
- webSocketImpl: helpers_1.MockWebSocket,
379
- });
380
- client.connect();
381
- // Force many failed attempts to push backoff past the cap.
382
- for (let i = 0; i < 10; i += 1) {
383
- const ws = helpers_1.MockWebSocket.instances[i];
384
- ws.open();
385
- ws.close(1006, "transport closed");
386
- sinon_1.default.clock.tick(30000);
387
- }
388
- // After 10 attempts we should have 11 sockets, and the delay never exceeds 30s.
389
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(11);
390
- // Explicit disconnect must not schedule a further reconnect.
391
- client.disconnect();
392
- sinon_1.default.clock.tick(60000);
393
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances.length).to.equal(11);
394
- randomStub.restore();
395
- });
396
- (0, mocha_1.describe)("an unusable dataWssUrl", () => {
397
- // A relative or empty value is resolved against the document by the
398
- // WebSocket constructor, so the gateway silently points at whatever page
399
- // is open, gets that page's HTML and a 200 back, and retries against it
400
- // forever. Refusing it names the cause once instead.
401
- (0, mocha_1.it)("refuses an empty one rather than resolving against the page", async () => {
402
- const client = new gateway_client_1.GatewayClient({
403
- dataRestUrl: "https://api.example.com",
404
- controlApiUrl: "https://control.example.com",
405
- dataWssUrl: "",
406
- organisationId: null,
407
- sharing: "none",
408
- impersonateUserStorageKey: "doover:test",
409
- });
410
- await (0, chai_1.expect)(client.connect()).to.be.rejectedWith(/dataWssUrl is empty/);
411
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances).to.have.length(0);
412
- });
413
- (0, mocha_1.it)("refuses a relative one", async () => {
414
- const client = new gateway_client_1.GatewayClient({
415
- dataRestUrl: "https://api.example.com",
416
- controlApiUrl: "https://control.example.com",
417
- dataWssUrl: "/widget/some_widget?app_key=k",
418
- organisationId: null,
419
- sharing: "none",
420
- impersonateUserStorageKey: "doover:test",
421
- });
422
- await (0, chai_1.expect)(client.connect()).to.be.rejectedWith(/not the relative value/);
423
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances).to.have.length(0);
424
- });
425
- (0, mocha_1.it)("refuses a scheme a WebSocket cannot be opened on", async () => {
426
- const client = new gateway_client_1.GatewayClient({
427
- dataRestUrl: "https://api.example.com",
428
- controlApiUrl: "https://control.example.com",
429
- dataWssUrl: "file:///etc/hosts",
430
- organisationId: null,
431
- sharing: "none",
432
- impersonateUserStorageKey: "doover:test",
433
- });
434
- await (0, chai_1.expect)(client.connect()).to.be.rejectedWith(/must be ws\(s\):\/\/ or http\(s\)/);
435
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances).to.have.length(0);
436
- });
437
- (0, mocha_1.it)("reports it through wssError once when a subscribe connects in the background", async () => {
438
- // `subscribe` is fire-and-forget, so the fault has to surface as an event
439
- // rather than a rejected promise nobody holds — and only once, because
440
- // reconnects are scheduled on socket close and no socket was ever opened.
441
- const client = new gateway_client_1.GatewayClient({
442
- dataRestUrl: "https://api.example.com",
443
- controlApiUrl: "https://control.example.com",
444
- dataWssUrl: "",
445
- organisationId: null,
446
- sharing: "none",
447
- impersonateUserStorageKey: "doover:test",
448
- });
449
- const errors = [];
450
- client.on("wssError", (event) => errors.push(String(event.message)));
451
- client.subscribe({ agent_id: "111", name: "tag_values" });
452
- // The rejection travels connect -> openSocket -> catch, which is several
453
- // microtasks; draining them is not the same as advancing fake timers.
454
- for (let tick = 0; tick < 5; tick += 1)
455
- await Promise.resolve();
456
- (0, chai_1.expect)(errors).to.have.length(1);
457
- (0, chai_1.expect)(errors[0]).to.match(/dataWssUrl is empty/);
458
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances).to.have.length(0);
459
- });
460
- (0, mocha_1.it)("still accepts an absolute http(s) URL, which WebSocket maps itself", async () => {
461
- const client = new gateway_client_1.GatewayClient({
462
- dataRestUrl: "https://api.example.com",
463
- controlApiUrl: "https://control.example.com",
464
- dataWssUrl: "https://ws.example.com/gateway",
465
- organisationId: null,
466
- sharing: "none",
467
- impersonateUserStorageKey: "doover:test",
468
- });
469
- await client.connect();
470
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances).to.have.length(1);
471
- (0, chai_1.expect)(helpers_1.MockWebSocket.instances[0].url).to.equal("https://ws.example.com/gateway");
472
- });
473
- });
474
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,29 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const mocha_1 = require("mocha");
5
- const gateway_client_1 = require("../gateway/gateway-client");
6
- function makeConfig() {
7
- return {
8
- dataRestUrl: "https://example.com/api",
9
- controlApiUrl: "https://example.com/control",
10
- dataWssUrl: "wss://example.com/gateway",
11
- disableBrowserLifecycleHooks: true,
12
- };
13
- }
14
- (0, mocha_1.describe)("GatewayClient provenance hook", () => {
15
- (0, mocha_1.it)("stamps emitted payloads when a hook is set; raw when not", () => {
16
- const gw = new gateway_client_1.GatewayClient(makeConfig());
17
- let stamped;
18
- gw.on("messageCreate", (m) => { stamped = m; });
19
- // Use a valid snowflake-format id (epoch-based numeric string)
20
- const snowflake = String(BigInt(Date.now()) << 22n);
21
- // no hook → raw
22
- gw.handleMessage(JSON.stringify({ op: 0, t: "MessageCreate", d: { id: snowflake, data: {}, attachments: [], author_id: "a", channel: { agent_id: "x", name: "c" } } }));
23
- (0, chai_1.expect)(stamped.__source).to.equal(undefined);
24
- // with hook → stamped
25
- gw.setProvenanceHook((value, ctx) => ({ ...value, __source: { client: { id: "cloud", kind: "cloud" }, retrievedAt: Date.now(), via: { transport: "gateway", event: ctx.event, receivedAt: Date.now() } } }));
26
- gw.handleMessage(JSON.stringify({ op: 0, t: "MessageCreate", d: { id: snowflake, data: {}, attachments: [], author_id: "a", channel: { agent_id: "x", name: "c" } } }));
27
- (0, chai_1.expect)(stamped.__source?.via.event).to.equal("messageCreate");
28
- });
29
- });
@@ -1 +0,0 @@
1
- export {};