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
@@ -0,0 +1,122 @@
1
+ import type { SourceProvenance } from "./provenance.js";
2
+ import type { Aggregate, Channel, ConnectionDetails, MessageStructure } from "./common.js";
3
+ export interface ChannelIdentifier {
4
+ agentId?: string;
5
+ channelName?: string;
6
+ error?: string;
7
+ }
8
+ export interface Agent {
9
+ id: string;
10
+ organisation: string;
11
+ name: string;
12
+ display_name: string;
13
+ archived: boolean;
14
+ group: string;
15
+ fa_icon: string;
16
+ type: "device" | "dashboard" | "organisation" | "user";
17
+ fixed_location: {
18
+ latitude: number;
19
+ longitude: number;
20
+ };
21
+ extra_config: Record<string, unknown>;
22
+ connection_determination?: "Online" | "Offline";
23
+ __source?: SourceProvenance;
24
+ }
25
+ export interface User {
26
+ id: string;
27
+ email?: string;
28
+ name?: string;
29
+ __source?: SourceProvenance;
30
+ [key: string]: unknown;
31
+ }
32
+ export interface Theme {
33
+ [key: string]: unknown;
34
+ }
35
+ export interface OrganisationDomain {
36
+ id: string;
37
+ hostname: string;
38
+ default: boolean;
39
+ }
40
+ export interface Organisation {
41
+ id: string;
42
+ name: string;
43
+ archived: boolean;
44
+ application_id: string;
45
+ domains: OrganisationDomain[];
46
+ root_group?: unknown;
47
+ retention_period?: number;
48
+ legacy_doover_api_key?: string | null;
49
+ llm_api_key?: string | null;
50
+ extra_config?: Record<string, unknown>;
51
+ theme?: Theme;
52
+ __source?: SourceProvenance;
53
+ [key: string]: unknown;
54
+ }
55
+ export interface CustomerSite {
56
+ id: string;
57
+ name: string;
58
+ application_id: string;
59
+ archived: boolean;
60
+ theme: Theme;
61
+ }
62
+ export interface PaginatedResponse<T> {
63
+ count: number;
64
+ results: T[];
65
+ next?: string | null;
66
+ previous?: string | null;
67
+ [key: string]: unknown;
68
+ }
69
+ export interface GetAgentsOptions {
70
+ includeArchived?: boolean;
71
+ includeOrganisations?: boolean;
72
+ includeUsers?: boolean;
73
+ /**
74
+ * When `true`, normalized organisations and users are appended into the
75
+ * canonical `agents` list (and mirrored to `results` / `count`). Defaults
76
+ * to `false`, which preserves the legacy behaviour of returning only the
77
+ * raw `agents` array.
78
+ */
79
+ mergeIncludedAsAgents?: boolean;
80
+ }
81
+ export interface AgentsResponse {
82
+ agents?: Agent[];
83
+ results?: Agent[];
84
+ count?: number;
85
+ [key: string]: unknown;
86
+ }
87
+ export interface SubscriptionDetails {
88
+ channel: {
89
+ agent_id: string;
90
+ name: string;
91
+ };
92
+ connection_id: string;
93
+ subscribed_at: number;
94
+ }
95
+ export interface ChannelsDataProvider<TIdentifier extends ChannelIdentifier = ChannelIdentifier> {
96
+ getMe: () => Promise<User>;
97
+ getAgents: (options?: GetAgentsOptions) => Promise<AgentsResponse>;
98
+ getChannels: (identifier: TIdentifier, options?: {
99
+ includeArchived?: boolean;
100
+ }) => Promise<Channel[] | undefined>;
101
+ createChannel: (identifier: TIdentifier, channelName: string, options?: {
102
+ is_private?: boolean;
103
+ }) => Promise<unknown>;
104
+ archiveChannel: (identifier: TIdentifier) => Promise<unknown>;
105
+ unarchiveChannel: (identifier: TIdentifier) => Promise<unknown>;
106
+ getChannel: (identifier: TIdentifier) => Promise<Channel | undefined>;
107
+ subscribeToChannel: (identifier: TIdentifier, callback: (identifier: ChannelIdentifier, message: MessageStructure) => void, aggregateCallback: (identifier: ChannelIdentifier, aggregate: Aggregate) => void) => Promise<void | undefined>;
108
+ unsubscribeFromChannel: (identifier: TIdentifier, callback: (identifier: ChannelIdentifier, message: MessageStructure) => void) => Promise<void | undefined>;
109
+ getAggregate: (identifier: TIdentifier) => Promise<Aggregate | undefined>;
110
+ getMessages: (identifier: TIdentifier, beforeId?: string) => Promise<MessageStructure[] | undefined>;
111
+ deleteMessage: (identifier: TIdentifier, messageId: string) => Promise<unknown>;
112
+ sendMessage: (identifier: TIdentifier, message: object) => Promise<MessageStructure>;
113
+ updateAggregate: (identifier: TIdentifier, message: object) => Promise<Aggregate>;
114
+ putAggregate: (identifier: TIdentifier, message: object) => Promise<Aggregate>;
115
+ getChannelSubscriptions: (identifier: TIdentifier) => Promise<SubscriptionDetails[]>;
116
+ getAgentConnections: (identifier: TIdentifier) => Promise<ConnectionDetails[]>;
117
+ getIdentifierFromPath: (path: string, searchParams: URLSearchParams) => {
118
+ identifier: TIdentifier;
119
+ aggregatePath?: string;
120
+ };
121
+ getAgentInfo: (agentId: string) => Promise<Agent | undefined>;
122
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Snowflake id for a point in time, floored at the epoch.
3
+ *
4
+ * Ids are unsigned, so a pre-epoch time has no id to generate. Returning the
5
+ * negative arithmetic result produced a value the API rejects outright
6
+ * ("expected a snowflake id value"), failing the whole request; `0` is the
7
+ * oldest addressable id, which is what a caller reaching further back wants.
8
+ */
9
+ export declare function generateSnowflakeIdAtTime(time: {
10
+ valueOf(): number;
11
+ }): string;
12
+ export declare function extractSnowflakeId(id: string): {
13
+ timestamp: number;
14
+ machineId: number;
15
+ sequence: number;
16
+ };
17
+ export declare function addTimestampToMessage<T extends {
18
+ id: string;
19
+ }>(message: T): T & {
20
+ timestamp: number;
21
+ };
@@ -0,0 +1,33 @@
1
+ /** Doover's snowflake epoch: 2025-01-01T00:00:00Z. Nothing predates it. */
2
+ const SNOWFLAKE_EPOCH_MS = 1735689600000;
3
+ /**
4
+ * Snowflake id for a point in time, floored at the epoch.
5
+ *
6
+ * Ids are unsigned, so a pre-epoch time has no id to generate. Returning the
7
+ * negative arithmetic result produced a value the API rejects outright
8
+ * ("expected a snowflake id value"), failing the whole request; `0` is the
9
+ * oldest addressable id, which is what a caller reaching further back wants.
10
+ */
11
+ export function generateSnowflakeIdAtTime(time) {
12
+ const offsetMs = time.valueOf() - SNOWFLAKE_EPOCH_MS;
13
+ if (Number.isNaN(offsetMs)) {
14
+ throw new TypeError("generateSnowflakeIdAtTime received an invalid time");
15
+ }
16
+ const bigId = BigInt(Math.max(0, offsetMs)) << 22n;
17
+ return bigId.toString();
18
+ }
19
+ export function extractSnowflakeId(id) {
20
+ const offset = 1735689600000n;
21
+ return {
22
+ timestamp: Number((BigInt(id) >> 22n) + offset),
23
+ machineId: Number((BigInt(id) >> 12n) & 1023n),
24
+ sequence: Number(BigInt(id) & 4095n),
25
+ };
26
+ }
27
+ export function addTimestampToMessage(message) {
28
+ const extracted = extractSnowflakeId(message.id);
29
+ return {
30
+ ...message,
31
+ timestamp: extracted.timestamp,
32
+ };
33
+ }
@@ -0,0 +1,90 @@
1
+ import { AgentsApi } from "../apis/agents-api.js";
2
+ import { AggregatesApi, type AggregateMutationParams } from "../apis/aggregates-api.js";
3
+ import { ChannelsApi } from "../apis/channels-api.js";
4
+ import { ConnectionsApi } from "../apis/connections-api.js";
5
+ import { MessagesApi, type ListMessagesParams } from "../apis/messages-api.js";
6
+ import type { DooverAuth } from "../auth/doover-auth.js";
7
+ import { GatewayClient } from "../gateway/gateway-client.js";
8
+ import { RestClient, type DooverClientConfig } from "../http/rest-client.js";
9
+ import type { Aggregate, Channel, ConnectionDetails, JSONValue, MessageStructure, RpcRequest, RpcStatus } from "../types/common.js";
10
+ import type { Agent, AgentsResponse, ChannelIdentifier, ChannelsDataProvider, GetAgentsOptions, SubscriptionDetails, User } from "../types/viewer.js";
11
+ interface SubscriptionEntry {
12
+ messageCallback: (identifier: ChannelIdentifier, message: MessageStructure) => void;
13
+ aggregateCallback: (identifier: ChannelIdentifier, aggregate: Aggregate) => void;
14
+ /**
15
+ * `message` is the full post-update MessageStructure (server-side `.message`
16
+ * field). `request_data` is the diff of just-changed fields, or undefined
17
+ * if the server didn't provide one. Most consumers only need `message`.
18
+ */
19
+ messageUpdateCallback?: (identifier: ChannelIdentifier, message: MessageStructure, request_data?: JSONValue) => void;
20
+ }
21
+ /** @deprecated Use DooverClient subclients directly. Removed in 0.6.0. */
22
+ export declare class DooverDataProvider implements ChannelsDataProvider<ChannelIdentifier> {
23
+ readonly rest: RestClient;
24
+ readonly gateway: GatewayClient;
25
+ readonly agentsApi: AgentsApi;
26
+ readonly channelsApi: ChannelsApi;
27
+ readonly messagesApi: MessagesApi;
28
+ readonly aggregatesApi: AggregatesApi;
29
+ readonly connectionsApi: ConnectionsApi;
30
+ private readonly controlApiUrl?;
31
+ private bridges;
32
+ private dispatcher?;
33
+ constructor(config: DooverClientConfig, auth?: DooverAuth);
34
+ constructor(injected: {
35
+ rest: RestClient;
36
+ gateway: GatewayClient;
37
+ controlApiUrl?: string;
38
+ });
39
+ /** @deprecated Use `client.users.getMe()` instead. Removed in 0.6.0. */
40
+ getMe(): Promise<User>;
41
+ /** @deprecated Use `client.agents.listAgents(opts)` instead. Removed in 0.6.0. */
42
+ getAgents(options?: GetAgentsOptions): Promise<AgentsResponse>;
43
+ /** @deprecated Use `client.channels.listChannels(id, opts)` instead. Removed in 0.6.0. */
44
+ getChannels(identifier: ChannelIdentifier, options?: {
45
+ includeArchived?: boolean;
46
+ }): Promise<Channel[] | undefined>;
47
+ /** @deprecated Use `client.channels.putChannel(id, name, body)` instead. Removed in 0.6.0. */
48
+ createChannel(identifier: ChannelIdentifier, channelName: string, options?: {
49
+ is_private?: boolean;
50
+ }): Promise<unknown>;
51
+ /** @deprecated Use `client.channels.archiveChannel(id)` instead. Removed in 0.6.0. */
52
+ archiveChannel(identifier: ChannelIdentifier): Promise<unknown>;
53
+ /** @deprecated Use `client.channels.unarchiveChannel(id)` instead. Removed in 0.6.0. */
54
+ unarchiveChannel(identifier: ChannelIdentifier): Promise<unknown>;
55
+ /** @deprecated Use `client.channels.getChannel(id)` instead. Removed in 0.6.0. */
56
+ getChannel(identifier: ChannelIdentifier): Promise<Channel | undefined>;
57
+ /** @deprecated Use `client.gateway.subscribeToChannel(channel, handlers)` instead. Removed in 0.6.0. */
58
+ subscribeToChannel(identifier: ChannelIdentifier, callback: SubscriptionEntry["messageCallback"], aggregateCallback: SubscriptionEntry["aggregateCallback"], messageUpdateCallback?: SubscriptionEntry["messageUpdateCallback"]): Promise<void>;
59
+ /** @deprecated Call the unsubscribe fn returned by `client.gateway.subscribeToChannel`. Removed in 0.6.0. */
60
+ unsubscribeFromChannel(_identifier: ChannelIdentifier, callback: SubscriptionEntry["messageCallback"]): Promise<void>;
61
+ /** @deprecated Compose `client.channels.getChannel(id).then(c => c.aggregate ?? client.aggregates.getAggregate(id))` instead. Removed in 0.6.0. */
62
+ getAggregate(identifier: ChannelIdentifier): Promise<Aggregate | undefined>;
63
+ /** @deprecated Use `client.messages.listMessages(id, { ...opts, order: "asc" })` instead. Removed in 0.6.0. */
64
+ getMessages(identifier: ChannelIdentifier, optionsOrBefore?: string | ListMessagesParams): Promise<MessageStructure[] | undefined>;
65
+ /** @deprecated Use `client.messages.deleteMessage(id, msgId)` instead. Removed in 0.6.0. */
66
+ deleteMessage(identifier: ChannelIdentifier, messageId: string): Promise<unknown>;
67
+ /** @deprecated Use `client.messages.postMessage(id, { data })` instead. Removed in 0.6.0. */
68
+ sendMessage(identifier: ChannelIdentifier, message: object): Promise<MessageStructure>;
69
+ /** @deprecated Use `client.rpc.send(id, req, opts)` instead. Removed in 0.6.0. */
70
+ sendRPC<TRequest = object, TResponse = object, TPending = undefined>(identifier: ChannelIdentifier, rpcRequest: RpcRequest<TRequest>, options?: {
71
+ onStatus?: (status: RpcStatus<TPending>) => void;
72
+ }): Promise<TResponse>;
73
+ /** @deprecated Use `client.aggregates.patchAggregate(id, data, params)` instead. Removed in 0.6.0. */
74
+ updateAggregate(identifier: ChannelIdentifier, message: object, params?: AggregateMutationParams): Promise<Aggregate>;
75
+ /** @deprecated Use `client.aggregates.putAggregate(id, data, params)` instead. Removed in 0.6.0. */
76
+ putAggregate(identifier: ChannelIdentifier, message: object, params?: AggregateMutationParams): Promise<Aggregate>;
77
+ /** @deprecated Use `client.connections.getChannelSubscriptions(id)` instead. Removed in 0.6.0. */
78
+ getChannelSubscriptions(identifier: ChannelIdentifier): Promise<SubscriptionDetails[]>;
79
+ /** @deprecated Use `client.connections.getAgentConnections(id)` instead. Removed in 0.6.0. */
80
+ getAgentConnections(identifier: ChannelIdentifier): Promise<ConnectionDetails[]>;
81
+ /** @deprecated Use the free function `getIdentifierFromPath(path, search)` instead. Removed in 0.6.0. */
82
+ getIdentifierFromPath(path: string, searchParams: URLSearchParams): {
83
+ identifier: ChannelIdentifier;
84
+ aggregatePath?: string;
85
+ };
86
+ /** @deprecated No replacement — this was a synthesized stub. Removed in 0.6.0. */
87
+ getAgentInfo(agentId: string): Promise<Agent | undefined>;
88
+ private requireChannel;
89
+ }
90
+ export {};
@@ -0,0 +1,189 @@
1
+ import { AgentsApi } from "../apis/agents-api.js";
2
+ import { AggregatesApi } from "../apis/aggregates-api.js";
3
+ import { ChannelsApi } from "../apis/channels-api.js";
4
+ import { ConnectionsApi } from "../apis/connections-api.js";
5
+ import { MessagesApi } from "../apis/messages-api.js";
6
+ import { UsersApi } from "../apis/users-api.js";
7
+ import { GatewayClient } from "../gateway/gateway-client.js";
8
+ import { DooverValidationError } from "../http/errors.js";
9
+ import { RestClient } from "../http/rest-client.js";
10
+ import { RpcDispatcher } from "../rpc/rpc-dispatcher.js";
11
+ import { getIdentifierFromPath as parseIdentifierFromPath } from "./path-parsing.js";
12
+ /** @deprecated Use DooverClient subclients directly. Removed in 0.6.0. */
13
+ export class DooverDataProvider {
14
+ // implementation
15
+ constructor(configOrInjected, auth) {
16
+ this.bridges = new Map();
17
+ if ("rest" in configOrInjected && "gateway" in configOrInjected) {
18
+ this.rest = configOrInjected.rest;
19
+ this.gateway = configOrInjected.gateway;
20
+ this.controlApiUrl = configOrInjected.controlApiUrl;
21
+ }
22
+ else {
23
+ this.rest = new RestClient(configOrInjected, auth);
24
+ this.gateway = new GatewayClient(configOrInjected, auth);
25
+ this.controlApiUrl = configOrInjected.controlApiUrl;
26
+ }
27
+ this.agentsApi = new AgentsApi(this.rest, this.controlApiUrl);
28
+ this.channelsApi = new ChannelsApi(this.rest);
29
+ this.messagesApi = new MessagesApi(this.rest);
30
+ this.aggregatesApi = new AggregatesApi(this.rest);
31
+ this.connectionsApi = new ConnectionsApi(this.rest);
32
+ }
33
+ /** @deprecated Use `client.users.getMe()` instead. Removed in 0.6.0. */
34
+ getMe() {
35
+ return new UsersApi(this.rest, this.controlApiUrl).getMe();
36
+ }
37
+ /** @deprecated Use `client.agents.listAgents(opts)` instead. Removed in 0.6.0. */
38
+ async getAgents(options) {
39
+ return this.agentsApi.listAgents(options);
40
+ }
41
+ /** @deprecated Use `client.channels.listChannels(id, opts)` instead. Removed in 0.6.0. */
42
+ async getChannels(identifier, options) {
43
+ if (!identifier.agentId)
44
+ return undefined;
45
+ return this.channelsApi.listChannels(identifier.agentId, {
46
+ include_archived: options?.includeArchived,
47
+ });
48
+ }
49
+ /** @deprecated Use `client.channels.putChannel(id, name, body)` instead. Removed in 0.6.0. */
50
+ createChannel(identifier, channelName, options) {
51
+ if (!identifier.agentId) {
52
+ throw new DooverValidationError("Identifier must contain agentId");
53
+ }
54
+ return this.channelsApi.putChannel(identifier.agentId, channelName, {
55
+ is_private: options?.is_private ?? false,
56
+ });
57
+ }
58
+ /** @deprecated Use `client.channels.archiveChannel(id)` instead. Removed in 0.6.0. */
59
+ archiveChannel(identifier) {
60
+ const v = this.requireChannel(identifier);
61
+ return this.channelsApi.archiveChannel(v.agentId, v.channelName);
62
+ }
63
+ /** @deprecated Use `client.channels.unarchiveChannel(id)` instead. Removed in 0.6.0. */
64
+ unarchiveChannel(identifier) {
65
+ const v = this.requireChannel(identifier);
66
+ return this.channelsApi.unarchiveChannel(v.agentId, v.channelName);
67
+ }
68
+ /** @deprecated Use `client.channels.getChannel(id)` instead. Removed in 0.6.0. */
69
+ getChannel(identifier) {
70
+ if (!identifier.agentId || !identifier.channelName) {
71
+ return Promise.resolve(undefined);
72
+ }
73
+ return this.channelsApi.getChannel(identifier.agentId, identifier.channelName);
74
+ }
75
+ /** @deprecated Use `client.gateway.subscribeToChannel(channel, handlers)` instead. Removed in 0.6.0. */
76
+ async subscribeToChannel(identifier, callback, aggregateCallback, messageUpdateCallback) {
77
+ const validated = this.requireChannel(identifier);
78
+ const channel = { agent_id: validated.agentId, name: validated.channelName };
79
+ const off = this.gateway.subscribeToChannel(channel, {
80
+ onMessage: (msg) => callback(identifier, msg),
81
+ onAggregate: (agg) => aggregateCallback(identifier, agg),
82
+ onMessageUpdate: messageUpdateCallback
83
+ ? (msg, rd) => messageUpdateCallback(identifier, msg, rd)
84
+ : undefined,
85
+ });
86
+ this.bridges.set(callback, off);
87
+ await this.gateway.connect();
88
+ }
89
+ /** @deprecated Call the unsubscribe fn returned by `client.gateway.subscribeToChannel`. Removed in 0.6.0. */
90
+ async unsubscribeFromChannel(_identifier, callback) {
91
+ const off = this.bridges.get(callback);
92
+ if (!off) {
93
+ throw new DooverValidationError("Not Currently Subscribed to Channel");
94
+ }
95
+ off();
96
+ this.bridges.delete(callback);
97
+ }
98
+ /** @deprecated Compose `client.channels.getChannel(id).then(c => c.aggregate ?? client.aggregates.getAggregate(id))` instead. Removed in 0.6.0. */
99
+ async getAggregate(identifier) {
100
+ if (!identifier.agentId || !identifier.channelName)
101
+ return undefined;
102
+ const ch = await this.channelsApi.getChannel(identifier.agentId, identifier.channelName);
103
+ if (ch.aggregate)
104
+ return ch.aggregate;
105
+ return this.aggregatesApi.getAggregate(identifier.agentId, identifier.channelName);
106
+ }
107
+ /** @deprecated Use `client.messages.listMessages(id, { ...opts, order: "asc" })` instead. Removed in 0.6.0. */
108
+ async getMessages(identifier, optionsOrBefore) {
109
+ if (!identifier.agentId || !identifier.channelName)
110
+ return undefined;
111
+ const params = typeof optionsOrBefore === "string"
112
+ ? { before: optionsOrBefore }
113
+ : (optionsOrBefore ?? {});
114
+ return this.messagesApi.listMessages(identifier.agentId, identifier.channelName, {
115
+ ...params,
116
+ order: "asc",
117
+ });
118
+ }
119
+ /** @deprecated Use `client.messages.deleteMessage(id, msgId)` instead. Removed in 0.6.0. */
120
+ deleteMessage(identifier, messageId) {
121
+ const v = this.requireChannel(identifier);
122
+ return this.messagesApi.deleteMessage(v.agentId, v.channelName, messageId);
123
+ }
124
+ /** @deprecated Use `client.messages.postMessage(id, { data })` instead. Removed in 0.6.0. */
125
+ sendMessage(identifier, message) {
126
+ const v = this.requireChannel(identifier);
127
+ return this.messagesApi.postMessage(v.agentId, v.channelName, {
128
+ data: message,
129
+ });
130
+ }
131
+ /** @deprecated Use `client.rpc.send(id, req, opts)` instead. Removed in 0.6.0. */
132
+ sendRPC(identifier, rpcRequest, options) {
133
+ const v = this.requireChannel(identifier);
134
+ if (!this.dispatcher) {
135
+ this.dispatcher = new RpcDispatcher(this.gateway, this.messagesApi);
136
+ }
137
+ return this.dispatcher.send({ agentId: v.agentId, channelName: v.channelName }, rpcRequest, options);
138
+ }
139
+ /** @deprecated Use `client.aggregates.patchAggregate(id, data, params)` instead. Removed in 0.6.0. */
140
+ updateAggregate(identifier, message, params) {
141
+ const v = this.requireChannel(identifier);
142
+ return this.aggregatesApi.patchAggregate(v.agentId, v.channelName, message, params);
143
+ }
144
+ /** @deprecated Use `client.aggregates.putAggregate(id, data, params)` instead. Removed in 0.6.0. */
145
+ putAggregate(identifier, message, params) {
146
+ const v = this.requireChannel(identifier);
147
+ return this.aggregatesApi.putAggregate(v.agentId, v.channelName, message, params);
148
+ }
149
+ /** @deprecated Use `client.connections.getChannelSubscriptions(id)` instead. Removed in 0.6.0. */
150
+ getChannelSubscriptions(identifier) {
151
+ const v = this.requireChannel(identifier);
152
+ return this.connectionsApi.getChannelSubscriptions(v.agentId, v.channelName);
153
+ }
154
+ /** @deprecated Use `client.connections.getAgentConnections(id)` instead. Removed in 0.6.0. */
155
+ getAgentConnections(identifier) {
156
+ if (!identifier.agentId) {
157
+ return Promise.reject(new DooverValidationError("Invalid Identifier"));
158
+ }
159
+ return this.connectionsApi.getAgentConnections(identifier.agentId);
160
+ }
161
+ /** @deprecated Use the free function `getIdentifierFromPath(path, search)` instead. Removed in 0.6.0. */
162
+ getIdentifierFromPath(path, searchParams) {
163
+ return parseIdentifierFromPath(path, searchParams);
164
+ }
165
+ /** @deprecated No replacement — this was a synthesized stub. Removed in 0.6.0. */
166
+ getAgentInfo(agentId) {
167
+ return Promise.resolve({
168
+ id: agentId,
169
+ name: agentId,
170
+ display_name: agentId,
171
+ type: "device",
172
+ fa_icon: "fa-solid fa-robot",
173
+ organisation: "Organisation",
174
+ group: "group",
175
+ archived: false,
176
+ fixed_location: { latitude: 0, longitude: 0 },
177
+ extra_config: {},
178
+ });
179
+ }
180
+ requireChannel(identifier) {
181
+ if (!identifier.agentId || !identifier.channelName) {
182
+ throw new DooverValidationError("Identifier must contain agentId and channelName");
183
+ }
184
+ return {
185
+ agentId: identifier.agentId,
186
+ channelName: identifier.channelName,
187
+ };
188
+ }
189
+ }
@@ -0,0 +1,5 @@
1
+ import type { ChannelIdentifier } from "../types/viewer.js";
2
+ export declare function getIdentifierFromPath<TIdentifier extends ChannelIdentifier>(path: string, _searchParams: URLSearchParams): {
3
+ identifier: TIdentifier;
4
+ aggregatePath?: string;
5
+ };
@@ -0,0 +1,35 @@
1
+ export function getIdentifierFromPath(path, _searchParams) {
2
+ const cleaned = path.replace(/^\/+|\/+$/g, "");
3
+ const parts = cleaned ? cleaned.split("/") : [];
4
+ if (parts.length === 1) {
5
+ return {
6
+ identifier: {
7
+ agentId: parts[0],
8
+ channelName: undefined,
9
+ },
10
+ };
11
+ }
12
+ if (parts.length === 2) {
13
+ return {
14
+ identifier: {
15
+ agentId: parts[0],
16
+ channelName: parts[1],
17
+ },
18
+ };
19
+ }
20
+ if (parts.length > 2) {
21
+ return {
22
+ identifier: {
23
+ agentId: parts[0],
24
+ channelName: parts[1],
25
+ },
26
+ aggregatePath: parts.slice(2).join("/"),
27
+ };
28
+ }
29
+ return {
30
+ identifier: {
31
+ agentId: undefined,
32
+ channelName: undefined,
33
+ },
34
+ };
35
+ }
@@ -1,8 +1,8 @@
1
- import type { DooverAuth } from "../auth/doover-auth";
2
- import type { DooverStatsCollector } from "../client/stats";
3
- import type { DooverClientConfig } from "../http/rest-client";
4
- import type { GatewayListenerMap, WebSocketSession } from "./types";
5
- import type { Aggregate, ChannelRef, JSONValue, MessageStructure } from "../types/common";
1
+ import type { DooverAuth } from "../auth/doover-auth.js";
2
+ import type { DooverStatsCollector } from "../client/stats.js";
3
+ import type { DooverClientConfig } from "../http/rest-client.js";
4
+ import type { GatewayListenerMap, WebSocketSession } from "./types.js";
5
+ import type { Aggregate, ChannelRef, JSONValue, MessageStructure } from "../types/common.js";
6
6
  export type GatewayProvenanceHook = <T>(value: T, ctx: {
7
7
  event: string;
8
8
  sessionId?: string;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GatewayClient = void 0;
4
- const errors_1 = require("../http/errors");
5
- const snowflake_1 = require("../utils/snowflake");
4
+ const errors_js_1 = require("../http/errors.js");
5
+ const snowflake_js_1 = require("../utils/snowflake.js");
6
6
  const RECONNECT_BASE_MS = 1000;
7
7
  const RECONNECT_CAP_MS = 30000;
8
8
  /** Schemes a WebSocket can be opened on — it maps http(s) to ws(s) itself. */
@@ -347,10 +347,10 @@ class GatewayClient {
347
347
  this.emit("channelSync", this.stamp(message.d, "channelSync"));
348
348
  break;
349
349
  case "MessageCreate":
350
- this.emit("messageCreate", this.stamp((0, snowflake_1.addTimestampToMessage)(message.d), "messageCreate"));
350
+ this.emit("messageCreate", this.stamp((0, snowflake_js_1.addTimestampToMessage)(message.d), "messageCreate"));
351
351
  break;
352
352
  case "MessageUpdate":
353
- this.emit("messageUpdate", this.stamp((0, snowflake_1.addTimestampToMessage)(message.d.message), "messageUpdate"), message.d.request_data);
353
+ this.emit("messageUpdate", this.stamp((0, snowflake_js_1.addTimestampToMessage)(message.d.message), "messageUpdate"), message.d.request_data);
354
354
  break;
355
355
  case "AggregateUpdate":
356
356
  this.emit("aggregateUpdate", this.stamp(message.d, "aggregateUpdate"));
@@ -402,7 +402,7 @@ class GatewayClient {
402
402
  }
403
403
  send(payload) {
404
404
  if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {
405
- throw new errors_1.DooverGatewayError("WebSocket is not connected");
405
+ throw new errors_js_1.DooverGatewayError("WebSocket is not connected");
406
406
  }
407
407
  this.socket.send(JSON.stringify(payload));
408
408
  this.stats?.recordGatewaySent();
@@ -0,0 +1,3 @@
1
+ export { GatewayClient } from "./gateway-client.js";
2
+ export type { ChannelHandlers } from "./gateway-client.js";
3
+ export type * from "./types.js";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GatewayClient = void 0;
4
+ var gateway_client_js_1 = require("./gateway-client.js");
5
+ Object.defineProperty(exports, "GatewayClient", { enumerable: true, get: function () { return gateway_client_js_1.GatewayClient; } });
@@ -1,4 +1,4 @@
1
- import type { Aggregate, Alarm, ChannelRef, JSONValue, MessageStructure } from "../types/common";
1
+ import type { Aggregate, Alarm, ChannelRef, JSONValue, MessageStructure } from "../types/common.js";
2
2
  export interface WebSocketSubscription {
3
3
  channel: ChannelRef;
4
4
  organisation_id?: string | null;
@@ -0,0 +1,3 @@
1
+ export { RestClient } from "./rest-client.js";
2
+ export type { DooverClientConfig, RequestOptions } from "./rest-client.js";
3
+ export { DooverApiError, DooverGatewayError, DooverValidationError } from "./errors.js";
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DooverValidationError = exports.DooverGatewayError = exports.DooverApiError = exports.RestClient = void 0;
4
+ var rest_client_js_1 = require("./rest-client.js");
5
+ Object.defineProperty(exports, "RestClient", { enumerable: true, get: function () { return rest_client_js_1.RestClient; } });
6
+ var errors_js_1 = require("./errors.js");
7
+ Object.defineProperty(exports, "DooverApiError", { enumerable: true, get: function () { return errors_js_1.DooverApiError; } });
8
+ Object.defineProperty(exports, "DooverGatewayError", { enumerable: true, get: function () { return errors_js_1.DooverGatewayError; } });
9
+ Object.defineProperty(exports, "DooverValidationError", { enumerable: true, get: function () { return errors_js_1.DooverValidationError; } });
@@ -1,7 +1,9 @@
1
- import type { AuthConfig } from "../auth/build-auth";
2
- import type { DooverAuth } from "../auth/doover-auth";
3
- import type { DooverStatsCollector } from "../client/stats";
1
+ import type { NetworkStatusSource } from "../client/network-status.js";
2
+ import type { AuthConfig } from "../auth/build-auth.js";
3
+ import type { DooverAuth } from "../auth/doover-auth.js";
4
+ import type { DooverStatsCollector } from "../client/stats.js";
4
5
  export interface DooverClientConfig extends AuthConfig {
6
+ networkStatus?: NetworkStatusSource;
5
7
  dataRestUrl: string;
6
8
  controlApiUrl: string;
7
9
  dataWssUrl: string;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RestClient = void 0;
4
- const errors_1 = require("./errors");
4
+ const errors_js_1 = require("./errors.js");
5
5
  class RestClient {
6
6
  constructor(config, auth) {
7
7
  this.stats = null;
@@ -44,7 +44,7 @@ class RestClient {
44
44
  }
45
45
  }
46
46
  if (!response.ok) {
47
- throw new errors_1.DooverApiError({
47
+ throw new errors_js_1.DooverApiError({
48
48
  status: response.status,
49
49
  body: payload,
50
50
  url: request.url,