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,657 +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 chai_as_promised_1 = __importDefault(require("chai-as-promised"));
8
- const mocha_1 = require("mocha");
9
- const sinon_1 = __importDefault(require("sinon"));
10
- const errors_1 = require("../http/errors");
11
- const doover_data_provider_1 = require("../viewer/doover-data-provider");
12
- const snowflake_1 = require("../utils/snowflake");
13
- const helpers_1 = require("./helpers");
14
- (0, chai_1.use)(chai_as_promised_1.default);
15
- (0, mocha_1.describe)("DooverDataProvider", () => {
16
- (0, mocha_1.beforeEach)(() => {
17
- (0, helpers_1.installSessionStorageMock)();
18
- helpers_1.MockWebSocket.reset();
19
- Object.defineProperty(globalThis, "WebSocket", {
20
- value: helpers_1.MockWebSocket,
21
- configurable: true,
22
- writable: true,
23
- });
24
- });
25
- (0, mocha_1.it)("calls control endpoints for getMe and getAgents", async () => {
26
- const fetchMock = (0, helpers_1.createFetchMock)((url) => {
27
- if (url.endsWith("/users/me")) {
28
- return (0, helpers_1.createJsonResponse)({ id: "u1" });
29
- }
30
- return (0, helpers_1.createJsonResponse)({ agents: [] });
31
- });
32
- const provider = new doover_data_provider_1.DooverDataProvider({
33
- dataRestUrl: "https://api.example.com",
34
- controlApiUrl: "https://control.example.com",
35
- dataWssUrl: "wss://ws.example.com",
36
- fetchImpl: fetchMock,
37
- webSocketImpl: helpers_1.MockWebSocket,
38
- });
39
- await (0, chai_1.expect)(provider.getMe()).to.eventually.deep.equal({ id: "u1" });
40
- await (0, chai_1.expect)(provider.getAgents()).to.eventually.deep.equal({ agents: [] });
41
- (0, chai_1.expect)(fetchMock.getCall(0).args[0]).to.equal("https://control.example.com/users/me");
42
- (0, chai_1.expect)(fetchMock.getCall(1).args[0]).to.equal("https://control.example.com/agents/");
43
- (0, chai_1.expect)((fetchMock.getCall(0).args[1]?.headers).get("X-Doover-Sharing")).to.equal("internal");
44
- (0, chai_1.expect)((fetchMock.getCall(1).args[1]?.headers).get("X-Doover-Sharing")).to.equal(null);
45
- });
46
- (0, mocha_1.it)("getAgents forwards include-archived/include-organisations/include-users query keys", async () => {
47
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)({ agents: [], organisations: [], users: [] }));
48
- const provider = new doover_data_provider_1.DooverDataProvider({
49
- dataRestUrl: "https://api.example.com",
50
- controlApiUrl: "https://control.example.com",
51
- dataWssUrl: "wss://ws.example.com",
52
- fetchImpl: fetchMock,
53
- webSocketImpl: helpers_1.MockWebSocket,
54
- });
55
- await provider.getAgents({
56
- includeArchived: true,
57
- includeOrganisations: true,
58
- includeUsers: true,
59
- });
60
- const url = fetchMock.getCall(0).args[0];
61
- (0, chai_1.expect)(url.startsWith("https://control.example.com/agents/?")).to.equal(true);
62
- (0, chai_1.expect)(url).to.include("include-archived=true");
63
- (0, chai_1.expect)(url).to.include("include-organisations=true");
64
- (0, chai_1.expect)(url).to.include("include-users=true");
65
- });
66
- (0, mocha_1.it)("getAgents preserves raw organisations/users without merging by default", async () => {
67
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)({
68
- agents: [
69
- {
70
- id: "a1",
71
- name: "agent-1",
72
- display_name: "Agent 1",
73
- type: "device",
74
- organisation: "Org 1",
75
- group: "g",
76
- archived: false,
77
- fa_icon: "fa-solid fa-robot",
78
- fixed_location: { latitude: 1, longitude: 2 },
79
- extra_config: {},
80
- },
81
- ],
82
- organisations: [{ id: "o1", name: "Org 1" }],
83
- users: [{ id: "u1", username: "alice" }],
84
- }));
85
- const provider = new doover_data_provider_1.DooverDataProvider({
86
- dataRestUrl: "https://api.example.com",
87
- controlApiUrl: "https://control.example.com",
88
- dataWssUrl: "wss://ws.example.com",
89
- fetchImpl: fetchMock,
90
- webSocketImpl: helpers_1.MockWebSocket,
91
- });
92
- const result = await provider.getAgents({
93
- includeOrganisations: true,
94
- includeUsers: true,
95
- });
96
- (0, chai_1.expect)(result.agents).to.have.lengthOf(1);
97
- (0, chai_1.expect)(result.agents?.[0].id).to.equal("a1");
98
- (0, chai_1.expect)(result.organisations).to.deep.equal([{ id: "o1", name: "Org 1" }]);
99
- (0, chai_1.expect)(result.users).to.deep.equal([{ id: "u1", username: "alice" }]);
100
- (0, chai_1.expect)(result.results).to.equal(undefined);
101
- (0, chai_1.expect)(result.count).to.equal(undefined);
102
- });
103
- (0, mocha_1.it)("getAgents merges normalized organisations and users when mergeIncludedAsAgents is true", async () => {
104
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)({
105
- agents: [
106
- {
107
- id: "a1",
108
- name: "agent-1",
109
- display_name: "Agent 1",
110
- type: "device",
111
- organisation: "Org 1",
112
- group: "g",
113
- archived: false,
114
- fa_icon: "fa-solid fa-robot",
115
- fixed_location: { latitude: 1, longitude: 2 },
116
- extra_config: { foo: "bar" },
117
- },
118
- ],
119
- organisations: [
120
- {
121
- id: "o1",
122
- name: "Org One",
123
- archived: false,
124
- root_group: { name: "root" },
125
- extra_config: { level: "premium" },
126
- },
127
- ],
128
- users: [
129
- {
130
- id: "u1",
131
- username: "alice",
132
- email: "alice@example.com",
133
- first_name: "Alice",
134
- last_name: "Anderson",
135
- custom_data: { theme: "dark" },
136
- },
137
- ],
138
- }));
139
- const provider = new doover_data_provider_1.DooverDataProvider({
140
- dataRestUrl: "https://api.example.com",
141
- controlApiUrl: "https://control.example.com",
142
- dataWssUrl: "wss://ws.example.com",
143
- fetchImpl: fetchMock,
144
- webSocketImpl: helpers_1.MockWebSocket,
145
- });
146
- const result = await provider.getAgents({
147
- includeOrganisations: true,
148
- includeUsers: true,
149
- mergeIncludedAsAgents: true,
150
- });
151
- (0, chai_1.expect)(result.agents).to.have.lengthOf(3);
152
- (0, chai_1.expect)(result.results).to.equal(result.agents);
153
- (0, chai_1.expect)(result.count).to.equal(3);
154
- const [agent, organisation, user] = result.agents;
155
- (0, chai_1.expect)(agent.id).to.equal("a1");
156
- (0, chai_1.expect)(agent.type).to.equal("device");
157
- (0, chai_1.expect)(organisation).to.deep.equal({
158
- id: "o1",
159
- organisation: "Org One",
160
- name: "Org One",
161
- display_name: "Org One",
162
- archived: false,
163
- group: "root",
164
- fa_icon: "fa-solid fa-building",
165
- type: "organisation",
166
- fixed_location: { latitude: 0, longitude: 0 },
167
- extra_config: { level: "premium" },
168
- });
169
- (0, chai_1.expect)(user).to.deep.equal({
170
- id: "u1",
171
- organisation: "",
172
- name: "alice",
173
- display_name: "Alice Anderson",
174
- archived: false,
175
- group: "",
176
- fa_icon: "fa-solid fa-user",
177
- type: "user",
178
- fixed_location: { latitude: 0, longitude: 0 },
179
- extra_config: { theme: "dark" },
180
- });
181
- });
182
- (0, mocha_1.it)("getAgents merge respects includeOrganisations/includeUsers flags", async () => {
183
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)({
184
- agents: [
185
- {
186
- id: "a1",
187
- name: "a1",
188
- display_name: "a1",
189
- type: "device",
190
- organisation: "o",
191
- group: "g",
192
- archived: false,
193
- fa_icon: "fa-solid fa-robot",
194
- fixed_location: { latitude: 0, longitude: 0 },
195
- extra_config: {},
196
- },
197
- ],
198
- organisations: [{ id: "o1", name: "Org 1" }],
199
- users: [{ id: "u1", username: "alice" }],
200
- }));
201
- const provider = new doover_data_provider_1.DooverDataProvider({
202
- dataRestUrl: "https://api.example.com",
203
- controlApiUrl: "https://control.example.com",
204
- dataWssUrl: "wss://ws.example.com",
205
- fetchImpl: fetchMock,
206
- webSocketImpl: helpers_1.MockWebSocket,
207
- });
208
- const result = await provider.getAgents({
209
- includeOrganisations: false,
210
- includeUsers: true,
211
- mergeIncludedAsAgents: true,
212
- });
213
- (0, chai_1.expect)(result.agents).to.have.lengthOf(2);
214
- (0, chai_1.expect)(result.agents?.map((entry) => entry.type)).to.deep.equal([
215
- "device",
216
- "user",
217
- ]);
218
- (0, chai_1.expect)(result.count).to.equal(2);
219
- });
220
- (0, mocha_1.it)("getAgents user display_name falls back through full name, username, email, id", async () => {
221
- let payload = {};
222
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)(payload));
223
- const provider = new doover_data_provider_1.DooverDataProvider({
224
- dataRestUrl: "https://api.example.com",
225
- controlApiUrl: "https://control.example.com",
226
- dataWssUrl: "wss://ws.example.com",
227
- fetchImpl: fetchMock,
228
- webSocketImpl: helpers_1.MockWebSocket,
229
- });
230
- payload = {
231
- agents: [],
232
- users: [
233
- {
234
- id: "u-full",
235
- username: "alice",
236
- email: "alice@example.com",
237
- first_name: "Alice",
238
- last_name: "Anderson",
239
- },
240
- { id: "u-username", username: "bob", email: "bob@example.com" },
241
- { id: "u-email", email: "carol@example.com" },
242
- { id: "u-id-only" },
243
- ],
244
- };
245
- const result = await provider.getAgents({
246
- includeUsers: true,
247
- mergeIncludedAsAgents: true,
248
- });
249
- const merged = result.agents ?? [];
250
- (0, chai_1.expect)(merged.map((entry) => entry.display_name)).to.deep.equal([
251
- "Alice Anderson",
252
- "bob",
253
- "carol@example.com",
254
- "u-id-only",
255
- ]);
256
- (0, chai_1.expect)(merged.map((entry) => entry.name)).to.deep.equal([
257
- "alice",
258
- "bob",
259
- "carol@example.com",
260
- "u-id-only",
261
- ]);
262
- });
263
- (0, mocha_1.it)("getAgents fills agent defaults when fa_icon, fixed_location, or extra_config are missing/null", async () => {
264
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)({
265
- agents: [
266
- {
267
- id: "a1",
268
- name: "a1",
269
- display_name: "a1",
270
- type: "device",
271
- organisation: "o",
272
- group: "g",
273
- archived: false,
274
- fa_icon: null,
275
- fixed_location: null,
276
- extra_config: null,
277
- },
278
- {
279
- id: "a2",
280
- name: "a2",
281
- display_name: "a2",
282
- type: "device",
283
- organisation: "o",
284
- group: "g",
285
- archived: false,
286
- // fa_icon, fixed_location, extra_config all missing
287
- },
288
- ],
289
- }));
290
- const provider = new doover_data_provider_1.DooverDataProvider({
291
- dataRestUrl: "https://api.example.com",
292
- controlApiUrl: "https://control.example.com",
293
- dataWssUrl: "wss://ws.example.com",
294
- fetchImpl: fetchMock,
295
- webSocketImpl: helpers_1.MockWebSocket,
296
- });
297
- const result = await provider.getAgents();
298
- const [withNulls, withMissing] = result.agents ?? [];
299
- (0, chai_1.expect)(withNulls.fa_icon).to.equal("fa-solid fa-robot");
300
- (0, chai_1.expect)(withNulls.fixed_location).to.deep.equal({ latitude: 0, longitude: 0 });
301
- (0, chai_1.expect)(withNulls.extra_config).to.deep.equal({});
302
- (0, chai_1.expect)(withMissing.fa_icon).to.equal("fa-solid fa-robot");
303
- (0, chai_1.expect)(withMissing.fixed_location).to.deep.equal({ latitude: 0, longitude: 0 });
304
- (0, chai_1.expect)(withMissing.extra_config).to.deep.equal({});
305
- });
306
- (0, mocha_1.it)("returns undefined for missing identifiers where expected", async () => {
307
- const fetchMock = (0, helpers_1.createFetchMock)();
308
- const provider = new doover_data_provider_1.DooverDataProvider({
309
- dataRestUrl: "https://api.example.com",
310
- controlApiUrl: "https://control.example.com",
311
- dataWssUrl: "wss://ws.example.com",
312
- fetchImpl: fetchMock,
313
- webSocketImpl: helpers_1.MockWebSocket,
314
- });
315
- await (0, chai_1.expect)(provider.getChannels({})).to.eventually.equal(undefined);
316
- await (0, chai_1.expect)(provider.getChannel({ agentId: "a1" })).to.eventually.equal(undefined);
317
- await (0, chai_1.expect)(provider.getAggregate({ channelName: "c1" })).to.eventually.equal(undefined);
318
- await (0, chai_1.expect)(provider.getMessages({})).to.eventually.equal(undefined);
319
- (0, chai_1.expect)(fetchMock.callCount).to.equal(0);
320
- });
321
- (0, mocha_1.it)("creates channels with public and private options", async () => {
322
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)({ name: "c1", owner_id: "a1", is_private: false }));
323
- const provider = new doover_data_provider_1.DooverDataProvider({
324
- dataRestUrl: "https://api.example.com",
325
- controlApiUrl: "https://control.example.com",
326
- dataWssUrl: "wss://ws.example.com",
327
- fetchImpl: fetchMock,
328
- webSocketImpl: helpers_1.MockWebSocket,
329
- });
330
- await provider.createChannel({ agentId: "a1", channelName: "ignored" }, "c1");
331
- await provider.createChannel({ agentId: "a1" }, "c2", { is_private: true });
332
- const firstBody = JSON.parse(fetchMock.getCall(0).args[1]?.body);
333
- const secondBody = JSON.parse(fetchMock.getCall(1).args[1]?.body);
334
- (0, chai_1.expect)(firstBody).to.deep.equal({ is_private: false });
335
- (0, chai_1.expect)(secondBody).to.deep.equal({ is_private: true });
336
- });
337
- (0, mocha_1.it)("fetches messages with the compatibility limit and reverses them", async () => {
338
- const oldId = (0, snowflake_1.generateSnowflakeIdAtTime)(new Date("2026-01-01T00:00:00.000Z"));
339
- const newId = (0, snowflake_1.generateSnowflakeIdAtTime)(new Date("2026-01-01T00:00:10.000Z"));
340
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)([
341
- {
342
- id: newId,
343
- author_id: "u1",
344
- channel: { agent_id: "a1", name: "c1" },
345
- data: { v: 2 },
346
- attachments: [],
347
- },
348
- {
349
- id: oldId,
350
- author_id: "u1",
351
- channel: { agent_id: "a1", name: "c1" },
352
- data: { v: 1 },
353
- attachments: [],
354
- },
355
- ]));
356
- const provider = new doover_data_provider_1.DooverDataProvider({
357
- dataRestUrl: "https://api.example.com",
358
- controlApiUrl: "https://control.example.com",
359
- dataWssUrl: "wss://ws.example.com",
360
- fetchImpl: fetchMock,
361
- webSocketImpl: helpers_1.MockWebSocket,
362
- });
363
- const messages = await provider.getMessages({ agentId: "a1", channelName: "c1" }, "cursor");
364
- (0, chai_1.expect)(messages?.map((message) => message.id)).to.deep.equal([oldId, newId]);
365
- (0, chai_1.expect)(fetchMock.getCall(0).args[0]).to.equal("https://api.example.com/agents/a1/channels/c1/messages?before=cursor&limit=10");
366
- });
367
- (0, mocha_1.it)("forwards listMessages options (limit, after, field_name)", async () => {
368
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)([]));
369
- const provider = new doover_data_provider_1.DooverDataProvider({
370
- dataRestUrl: "https://api.example.com",
371
- controlApiUrl: "https://control.example.com",
372
- dataWssUrl: "wss://ws.example.com",
373
- fetchImpl: fetchMock,
374
- webSocketImpl: helpers_1.MockWebSocket,
375
- });
376
- await provider.getMessages({ agentId: "a1", channelName: "c1" }, { before: "b1", after: "a1", limit: 50, field_name: ["x", "y"] });
377
- const url = fetchMock.getCall(0).args[0];
378
- (0, chai_1.expect)(url).to.include("before=b1");
379
- (0, chai_1.expect)(url).to.include("after=a1");
380
- (0, chai_1.expect)(url).to.include("limit=50");
381
- (0, chai_1.expect)(url).to.include("field_name=x");
382
- (0, chai_1.expect)(url).to.include("field_name=y");
383
- });
384
- (0, mocha_1.it)("prefers channel aggregate data and falls back to the aggregate endpoint", async () => {
385
- const fetchMock = (0, helpers_1.createFetchMock)((url) => {
386
- if (url.endsWith("/channels/c1")) {
387
- return (0, helpers_1.createJsonResponse)({ name: "c1", owner_id: "a1", is_private: false, aggregate: { data: { x: 1 }, attachments: [] } });
388
- }
389
- return (0, helpers_1.createJsonResponse)({ data: { y: 2 }, attachments: [] });
390
- });
391
- const provider = new doover_data_provider_1.DooverDataProvider({
392
- dataRestUrl: "https://api.example.com",
393
- controlApiUrl: "https://control.example.com",
394
- dataWssUrl: "wss://ws.example.com",
395
- fetchImpl: fetchMock,
396
- webSocketImpl: helpers_1.MockWebSocket,
397
- });
398
- await (0, chai_1.expect)(provider.getAggregate({ agentId: "a1", channelName: "c1" })).to.eventually.deep.equal({ data: { x: 1 }, attachments: [] });
399
- const fallbackFetch = (0, helpers_1.createFetchMock)((url) => {
400
- if (url.endsWith("/channels/c1")) {
401
- return (0, helpers_1.createJsonResponse)({ name: "c1", owner_id: "a1", is_private: false });
402
- }
403
- return (0, helpers_1.createJsonResponse)({ data: { y: 2 }, attachments: [] });
404
- });
405
- const fallbackProvider = new doover_data_provider_1.DooverDataProvider({
406
- dataRestUrl: "https://api.example.com",
407
- controlApiUrl: "https://control.example.com",
408
- dataWssUrl: "wss://ws.example.com",
409
- fetchImpl: fallbackFetch,
410
- webSocketImpl: helpers_1.MockWebSocket,
411
- });
412
- await (0, chai_1.expect)(fallbackProvider.getAggregate({ agentId: "a1", channelName: "c1" })).to.eventually.deep.equal({ data: { y: 2 }, attachments: [] });
413
- });
414
- (0, mocha_1.it)("maps websocket events to subscription callbacks and unsubscribes when the last listener is removed", async () => {
415
- const fetchMock = (0, helpers_1.createFetchMock)(() => (0, helpers_1.createJsonResponse)({}));
416
- const provider = new doover_data_provider_1.DooverDataProvider({
417
- dataRestUrl: "https://api.example.com",
418
- controlApiUrl: "https://control.example.com",
419
- dataWssUrl: "wss://ws.example.com",
420
- fetchImpl: fetchMock,
421
- webSocketImpl: helpers_1.MockWebSocket,
422
- });
423
- const onMessage = sinon_1.default.spy();
424
- const onAggregate = sinon_1.default.spy();
425
- await provider.subscribeToChannel({ agentId: "a1", channelName: "c1" }, onMessage, onAggregate);
426
- const ws = helpers_1.MockWebSocket.instances[0];
427
- ws.open();
428
- ws.receive({ op: 0, t: "Hello", d: {} });
429
- ws.receive({
430
- op: 0,
431
- t: "Ready",
432
- d: { session_id: "s1", session_token: "t1", subscriptions: [] },
433
- });
434
- const id = (0, snowflake_1.generateSnowflakeIdAtTime)(new Date("2026-01-01T00:00:00.000Z"));
435
- ws.receive({
436
- op: 0,
437
- t: "MessageCreate",
438
- d: {
439
- id,
440
- author_id: "u1",
441
- channel: { agent_id: "a1", name: "c1" },
442
- data: {},
443
- attachments: [],
444
- },
445
- });
446
- ws.receive({
447
- op: 0,
448
- t: "ChannelSync",
449
- d: {
450
- channel: { agent_id: "a1", name: "c1" },
451
- aggregate: { data: { x: 1 }, attachments: [] },
452
- },
453
- });
454
- ws.receive({
455
- op: 0,
456
- t: "AggregateUpdate",
457
- d: {
458
- author_id: "u1",
459
- channel: { agent_id: "a1", name: "c1" },
460
- aggregate: { data: { x: 2 }, attachments: [] },
461
- request_data: { data: {}, attachments: [] },
462
- organisation_id: "org-1",
463
- },
464
- });
465
- (0, chai_1.expect)(onMessage.calledWithMatch({ agentId: "a1", channelName: "c1" }, sinon_1.default.match({ id }))).to.equal(true);
466
- (0, chai_1.expect)(onAggregate.callCount).to.equal(2);
467
- await provider.unsubscribeFromChannel({ agentId: "a1", channelName: "c1" }, onMessage);
468
- (0, chai_1.expect)(JSON.parse(ws.sent[ws.sent.length - 1])).to.deep.include({ op: 13 });
469
- });
470
- (0, mocha_1.it)("throws validation errors for required channel operations", async () => {
471
- const provider = new doover_data_provider_1.DooverDataProvider({
472
- dataRestUrl: "https://api.example.com",
473
- controlApiUrl: "https://control.example.com",
474
- dataWssUrl: "wss://ws.example.com",
475
- fetchImpl: (0, helpers_1.createFetchMock)(),
476
- webSocketImpl: helpers_1.MockWebSocket,
477
- });
478
- (0, chai_1.expect)(() => provider.createChannel({}, "c1")).to.throw(errors_1.DooverValidationError);
479
- (0, chai_1.expect)(() => provider.archiveChannel({ agentId: "a1" })).to.throw(errors_1.DooverValidationError);
480
- await (0, chai_1.expect)(provider.unsubscribeFromChannel({ agentId: "a1", channelName: "c1" }, sinon_1.default.spy())).to.be.rejectedWith(errors_1.DooverValidationError);
481
- });
482
- (0, mocha_1.it)("returns the compatibility agent info shim and path parsing result", async () => {
483
- const provider = new doover_data_provider_1.DooverDataProvider({
484
- dataRestUrl: "https://api.example.com",
485
- controlApiUrl: "https://control.example.com",
486
- dataWssUrl: "wss://ws.example.com",
487
- fetchImpl: (0, helpers_1.createFetchMock)(),
488
- webSocketImpl: helpers_1.MockWebSocket,
489
- });
490
- await (0, chai_1.expect)(provider.getAgentInfo("a1")).to.eventually.deep.equal({
491
- id: "a1",
492
- name: "a1",
493
- display_name: "a1",
494
- type: "device",
495
- fa_icon: "fa-solid fa-robot",
496
- organisation: "Organisation",
497
- group: "group",
498
- archived: false,
499
- fixed_location: { latitude: 0, longitude: 0 },
500
- extra_config: {},
501
- });
502
- (0, chai_1.expect)(provider.getIdentifierFromPath("/a1/c1/path/to/value", new URLSearchParams())).to.deep.equal({
503
- identifier: { agentId: "a1", channelName: "c1" },
504
- aggregatePath: "path/to/value",
505
- });
506
- });
507
- (0, mocha_1.it)("sendRPC posts an rpc message, correlates the response by id, and resolves on success", async () => {
508
- const rpcId = (0, snowflake_1.generateSnowflakeIdAtTime)(new Date("2026-01-01T00:00:00.000Z"));
509
- const fetchMock = (0, helpers_1.createFetchMock)((url) => {
510
- if (url.endsWith("/messages")) {
511
- return (0, helpers_1.createJsonResponse)({
512
- id: rpcId,
513
- author_id: "u1",
514
- channel: { agent_id: "a1", name: "c1" },
515
- data: {
516
- type: "rpc",
517
- method: "ping",
518
- request: {},
519
- status: { code: "sent" },
520
- response: {},
521
- },
522
- attachments: [],
523
- });
524
- }
525
- return (0, helpers_1.createJsonResponse)({});
526
- });
527
- const provider = new doover_data_provider_1.DooverDataProvider({
528
- dataRestUrl: "https://api.example.com",
529
- controlApiUrl: "https://control.example.com",
530
- dataWssUrl: "wss://ws.example.com",
531
- fetchImpl: fetchMock,
532
- webSocketImpl: helpers_1.MockWebSocket,
533
- });
534
- const statuses = [];
535
- const promise = provider.sendRPC({ agentId: "a1", channelName: "c1" }, { method: "ping", request: {} }, { onStatus: (status) => statuses.push(status.code) });
536
- // Let subscribe + POST resolve.
537
- await new Promise((resolve) => setTimeout(resolve, 0));
538
- const ws = helpers_1.MockWebSocket.instances[0];
539
- ws.open();
540
- ws.receive({ op: 0, t: "Hello", d: {} });
541
- ws.receive({
542
- op: 0,
543
- t: "Ready",
544
- d: { session_id: "s1", session_token: "t1", subscriptions: [] },
545
- });
546
- await new Promise((resolve) => setTimeout(resolve, 0));
547
- // Progress updates.
548
- ws.receive({
549
- op: 0,
550
- t: "MessageUpdate",
551
- d: {
552
- channel: { agent_id: "a1", name: "c1" },
553
- author_id: "u1",
554
- message: {
555
- id: rpcId,
556
- author_id: "u1",
557
- channel: { agent_id: "a1", name: "c1" },
558
- data: {
559
- type: "rpc",
560
- method: "ping",
561
- request: {},
562
- status: { code: "acknowledged", message: { timestamp: 1 } },
563
- response: {},
564
- },
565
- attachments: [],
566
- },
567
- request_data: { status: { code: "acknowledged", message: { timestamp: 1 } } },
568
- },
569
- });
570
- ws.receive({
571
- op: 0,
572
- t: "MessageUpdate",
573
- d: {
574
- channel: { agent_id: "a1", name: "c1" },
575
- author_id: "u1",
576
- message: {
577
- id: rpcId,
578
- author_id: "u1",
579
- channel: { agent_id: "a1", name: "c1" },
580
- data: {
581
- type: "rpc",
582
- method: "ping",
583
- request: {},
584
- status: { code: "success" },
585
- response: { pong: true },
586
- },
587
- attachments: [],
588
- },
589
- request_data: { status: { code: "success" }, response: { pong: true } },
590
- },
591
- });
592
- await (0, chai_1.expect)(promise).to.eventually.deep.equal({ pong: true });
593
- (0, chai_1.expect)(statuses).to.deep.equal(["acknowledged", "success"]);
594
- });
595
- (0, mocha_1.it)("sendRPC rejects with the status message on error", async () => {
596
- const rpcId = (0, snowflake_1.generateSnowflakeIdAtTime)(new Date("2026-01-01T00:00:00.000Z"));
597
- const fetchMock = (0, helpers_1.createFetchMock)((url) => {
598
- if (url.endsWith("/messages")) {
599
- return (0, helpers_1.createJsonResponse)({
600
- id: rpcId,
601
- author_id: "u1",
602
- channel: { agent_id: "a1", name: "c1" },
603
- data: {
604
- type: "rpc",
605
- method: "ping",
606
- request: {},
607
- status: { code: "sent" },
608
- response: {},
609
- },
610
- attachments: [],
611
- });
612
- }
613
- return (0, helpers_1.createJsonResponse)({});
614
- });
615
- const provider = new doover_data_provider_1.DooverDataProvider({
616
- dataRestUrl: "https://api.example.com",
617
- controlApiUrl: "https://control.example.com",
618
- dataWssUrl: "wss://ws.example.com",
619
- fetchImpl: fetchMock,
620
- webSocketImpl: helpers_1.MockWebSocket,
621
- });
622
- const promise = provider.sendRPC({ agentId: "a1", channelName: "c1" }, { method: "ping", request: {} });
623
- await new Promise((resolve) => setTimeout(resolve, 0));
624
- const ws = helpers_1.MockWebSocket.instances[0];
625
- ws.open();
626
- ws.receive({ op: 0, t: "Hello", d: {} });
627
- ws.receive({
628
- op: 0,
629
- t: "Ready",
630
- d: { session_id: "s1", session_token: "t1", subscriptions: [] },
631
- });
632
- await new Promise((resolve) => setTimeout(resolve, 0));
633
- ws.receive({
634
- op: 0,
635
- t: "MessageUpdate",
636
- d: {
637
- channel: { agent_id: "a1", name: "c1" },
638
- author_id: "u1",
639
- message: {
640
- id: rpcId,
641
- author_id: "u1",
642
- channel: { agent_id: "a1", name: "c1" },
643
- data: {
644
- type: "rpc",
645
- method: "ping",
646
- request: {},
647
- status: { code: "error", message: "boom" },
648
- response: {},
649
- },
650
- attachments: [],
651
- },
652
- request_data: { status: { code: "error", message: "boom" } },
653
- },
654
- });
655
- await (0, chai_1.expect)(promise).to.eventually.be.rejectedWith("boom");
656
- });
657
- });
@@ -1 +0,0 @@
1
- export {};