@dxos/react-client 0.8.4-main.f9ba587 → 0.8.4-main.fcfe5033a5

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 (394) hide show
  1. package/.storybook/main.mts +9 -0
  2. package/.storybook/preview.mts +8 -0
  3. package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
  4. package/dist/lib/browser/chunk-BVDNYEYI.mjs +179 -0
  5. package/dist/lib/browser/chunk-BVDNYEYI.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-O5SEVDJG.mjs → chunk-LO3TU5CK.mjs} +5 -5
  7. package/dist/lib/browser/chunk-LO3TU5CK.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-PFF63FPR.mjs +16 -0
  9. package/dist/lib/browser/chunk-PFF63FPR.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-TSF6Y5VB.mjs +8 -0
  11. package/dist/lib/browser/chunk-TSF6Y5VB.mjs.map +7 -0
  12. package/dist/lib/browser/devtools/index.mjs +3 -2
  13. package/dist/lib/browser/devtools/index.mjs.map +3 -3
  14. package/dist/lib/browser/echo/index.mjs +58 -121
  15. package/dist/lib/browser/echo/index.mjs.map +4 -4
  16. package/dist/lib/browser/halo/index.mjs +5 -3
  17. package/dist/lib/browser/halo/index.mjs.map +3 -3
  18. package/dist/lib/browser/index.mjs +114 -12
  19. package/dist/lib/browser/index.mjs.map +4 -4
  20. package/dist/lib/browser/invitations/index.mjs +1 -1
  21. package/dist/lib/browser/mesh/index.mjs +2 -1
  22. package/dist/lib/browser/mesh/index.mjs.map +1 -1
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/testing/index.mjs +122 -150
  25. package/dist/lib/browser/testing/index.mjs.map +3 -3
  26. package/dist/lib/node-esm/chunk-373DPHEQ.mjs +10 -0
  27. package/dist/lib/node-esm/chunk-373DPHEQ.mjs.map +7 -0
  28. package/dist/lib/node-esm/{chunk-TU2JJLZK.mjs → chunk-AQJH2UNZ.mjs} +5 -5
  29. package/dist/lib/node-esm/chunk-AQJH2UNZ.mjs.map +7 -0
  30. package/dist/lib/node-esm/chunk-NETTSER2.mjs +17 -0
  31. package/dist/lib/node-esm/chunk-NETTSER2.mjs.map +7 -0
  32. package/dist/lib/node-esm/chunk-VSA674XR.mjs +180 -0
  33. package/dist/lib/node-esm/chunk-VSA674XR.mjs.map +7 -0
  34. package/dist/lib/node-esm/devtools/index.mjs +3 -2
  35. package/dist/lib/node-esm/devtools/index.mjs.map +3 -3
  36. package/dist/lib/node-esm/echo/index.mjs +58 -121
  37. package/dist/lib/node-esm/echo/index.mjs.map +4 -4
  38. package/dist/lib/node-esm/halo/index.mjs +5 -3
  39. package/dist/lib/node-esm/halo/index.mjs.map +3 -3
  40. package/dist/lib/node-esm/index.mjs +114 -12
  41. package/dist/lib/node-esm/index.mjs.map +4 -4
  42. package/dist/lib/node-esm/invitations/index.mjs +1 -1
  43. package/dist/lib/node-esm/mesh/index.mjs +2 -1
  44. package/dist/lib/node-esm/mesh/index.mjs.map +1 -1
  45. package/dist/lib/node-esm/meta.json +1 -1
  46. package/dist/lib/node-esm/testing/index.mjs +122 -150
  47. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  48. package/dist/types/src/client/AgentHostingProvider.d.ts.map +1 -1
  49. package/dist/types/src/client/ClientProvider.d.ts +0 -10
  50. package/dist/types/src/client/ClientProvider.d.ts.map +1 -1
  51. package/dist/types/src/echo/index.d.ts +2 -2
  52. package/dist/types/src/echo/index.d.ts.map +1 -1
  53. package/dist/types/src/echo/useMembers.d.ts +2 -2
  54. package/dist/types/src/echo/useMembers.d.ts.map +1 -1
  55. package/dist/types/src/echo/useQueue.d.ts +3 -2
  56. package/dist/types/src/echo/useQueue.d.ts.map +1 -1
  57. package/dist/types/src/echo/useSpaceInvitations.d.ts +3 -2
  58. package/dist/types/src/echo/useSpaceInvitations.d.ts.map +1 -1
  59. package/dist/types/src/echo/useSpaceProperties.d.ts +13 -0
  60. package/dist/types/src/echo/useSpaceProperties.d.ts.map +1 -0
  61. package/dist/types/src/echo/useSpaces.d.ts +18 -9
  62. package/dist/types/src/echo/useSpaces.d.ts.map +1 -1
  63. package/dist/types/src/echo/useSubscription.d.ts +1 -1
  64. package/dist/types/src/echo/useSubscription.d.ts.map +1 -1
  65. package/dist/types/src/echo/useSyncState.d.ts +1 -1
  66. package/dist/types/src/echo/useSyncState.d.ts.map +1 -1
  67. package/dist/types/src/halo/Passkey.stories.d.ts +5 -5
  68. package/dist/types/src/halo/Passkey.stories.d.ts.map +1 -1
  69. package/dist/types/src/halo/useHaloInvitations.d.ts.map +1 -1
  70. package/dist/types/src/invitations/useInvitationStatus.d.ts +1 -1
  71. package/dist/types/src/invitations/useInvitationStatus.d.ts.map +1 -1
  72. package/dist/types/src/testing/ClientRepeater.d.ts +6 -5
  73. package/dist/types/src/testing/ClientRepeater.d.ts.map +1 -1
  74. package/dist/types/src/testing/ClientRepeater.stories.d.ts +6 -10
  75. package/dist/types/src/testing/ClientRepeater.stories.d.ts.map +1 -1
  76. package/dist/types/src/testing/context.d.ts +4 -2
  77. package/dist/types/src/testing/context.d.ts.map +1 -1
  78. package/dist/types/src/testing/util.d.ts.map +1 -1
  79. package/dist/types/src/testing/withClientProvider.d.ts +6 -10
  80. package/dist/types/src/testing/withClientProvider.d.ts.map +1 -1
  81. package/dist/types/src/testing/withClientProvider.stories.d.ts +8 -9
  82. package/dist/types/src/testing/withClientProvider.stories.d.ts.map +1 -1
  83. package/dist/types/tsconfig.tsbuildinfo +1 -1
  84. package/docs/README.md +38 -38
  85. package/moon.yml +3 -2
  86. package/package.json +43 -33
  87. package/src/client/AgentHostingProvider.tsx +1 -1
  88. package/src/client/ClientProvider.test.tsx +2 -2
  89. package/src/client/ClientProvider.tsx +32 -50
  90. package/src/client/useConfig.test.tsx +1 -1
  91. package/src/devtools/useStream.ts +1 -1
  92. package/src/echo/index.ts +2 -2
  93. package/src/echo/useMembers.ts +5 -3
  94. package/src/echo/useQueue.ts +3 -4
  95. package/src/echo/useSpaceInvitations.ts +10 -5
  96. package/src/echo/useSpaceProperties.ts +28 -0
  97. package/src/echo/useSpaces.test.tsx +8 -14
  98. package/src/echo/useSpaces.ts +31 -30
  99. package/src/echo/useSubscription.ts +1 -1
  100. package/src/echo/useSyncState.ts +5 -4
  101. package/src/halo/Passkey.stories.tsx +18 -16
  102. package/src/halo/useDevices.test.tsx +1 -1
  103. package/src/halo/useHaloInvitations.ts +1 -1
  104. package/src/invitations/useInvitationStatus.ts +9 -8
  105. package/src/testing/ClientRepeater.stories.tsx +20 -12
  106. package/src/testing/ClientRepeater.tsx +29 -37
  107. package/src/testing/context.tsx +4 -3
  108. package/src/testing/util.tsx +0 -1
  109. package/src/testing/withClientProvider.stories.tsx +31 -17
  110. package/src/testing/withClientProvider.tsx +77 -94
  111. package/tsconfig.json +3 -6
  112. package/typedoc.json +1 -1
  113. package/vitest.config.ts +10 -16
  114. package/.eslintrc.cjs +0 -12
  115. package/.swc/plugins/v7_linux_x86_64_13.0.0/f45bdff002284d9e8f9ef3f0be909de12da36c049cbcf261ac78fc00abb09a2d +0 -0
  116. package/dist/lib/browser/chunk-AAR7V3KL.mjs +0 -312
  117. package/dist/lib/browser/chunk-AAR7V3KL.mjs.map +0 -7
  118. package/dist/lib/browser/chunk-O5SEVDJG.mjs.map +0 -7
  119. package/dist/lib/node-esm/chunk-TU2JJLZK.mjs.map +0 -7
  120. package/dist/lib/node-esm/chunk-ZTD6HPV2.mjs +0 -314
  121. package/dist/lib/node-esm/chunk-ZTD6HPV2.mjs.map +0 -7
  122. package/dist/types/src/echo/useQuery.d.ts +0 -11
  123. package/dist/types/src/echo/useQuery.d.ts.map +0 -1
  124. package/dist/types/src/echo/useQuery.test.d.ts +0 -2
  125. package/dist/types/src/echo/useQuery.test.d.ts.map +0 -1
  126. package/dist/types/src/echo/useSchema.d.ts +0 -8
  127. package/dist/types/src/echo/useSchema.d.ts.map +0 -1
  128. package/dist/types/src/playwright/playwright.config.d.ts +0 -3
  129. package/dist/types/src/playwright/playwright.config.d.ts.map +0 -1
  130. package/dist/types/src/playwright/smoke.spec.d.ts +0 -2
  131. package/dist/types/src/playwright/smoke.spec.d.ts.map +0 -1
  132. package/src/echo/useQuery.test.tsx +0 -128
  133. package/src/echo/useQuery.ts +0 -56
  134. package/src/echo/useSchema.ts +0 -54
  135. package/src/playwright/playwright.config.ts +0 -17
  136. package/src/playwright/smoke.spec.ts +0 -24
  137. package/typedoc/.nojekyll +0 -1
  138. package/typedoc/assets/hierarchy.js +0 -1
  139. package/typedoc/assets/highlight.css +0 -99
  140. package/typedoc/assets/icons.js +0 -18
  141. package/typedoc/assets/icons.svg +0 -1
  142. package/typedoc/assets/main.js +0 -60
  143. package/typedoc/assets/navigation.js +0 -1
  144. package/typedoc/assets/search.js +0 -1
  145. package/typedoc/assets/style.css +0 -1640
  146. package/typedoc/classes/echo.Hypergraph.html +0 -17
  147. package/typedoc/classes/echo.PropertiesType.html +0 -19
  148. package/typedoc/classes/echo.QueryResult.html +0 -18
  149. package/typedoc/classes/halo.KeyStore.html +0 -6
  150. package/typedoc/classes/index.AgentClientServiceProvider.html +0 -10
  151. package/typedoc/classes/index.AgentManagerClient.html +0 -22
  152. package/typedoc/classes/index.AlreadyJoinedError.html +0 -15
  153. package/typedoc/classes/index.ApiError.html +0 -16
  154. package/typedoc/classes/index.CancelledError.html +0 -16
  155. package/typedoc/classes/index.Client.html +0 -51
  156. package/typedoc/classes/index.ClientServicesProxy.html +0 -12
  157. package/typedoc/classes/index.Config.html +0 -17
  158. package/typedoc/classes/index.DataCorruptionError.html +0 -16
  159. package/typedoc/classes/index.DatabaseError.html +0 -15
  160. package/typedoc/classes/index.EntityNotFoundError.html +0 -15
  161. package/typedoc/classes/index.FakeAgentHostingProvider.html +0 -7
  162. package/typedoc/classes/index.IFrameManager.html +0 -6
  163. package/typedoc/classes/index.IdentityNotInitializedError.html +0 -15
  164. package/typedoc/classes/index.InvalidConfigError.html +0 -16
  165. package/typedoc/classes/index.InvalidInvitationError.html +0 -15
  166. package/typedoc/classes/index.InvalidInvitationExtensionRoleError.html +0 -16
  167. package/typedoc/classes/index.InvalidStorageVersionError.html +0 -15
  168. package/typedoc/classes/index.LocalClientServices.html +0 -12
  169. package/typedoc/classes/index.PublicKey.html +0 -55
  170. package/typedoc/classes/index.RemoteServiceConnectionError.html +0 -15
  171. package/typedoc/classes/index.RemoteServiceConnectionTimeout.html +0 -15
  172. package/typedoc/classes/index.RpcClosedError.html +0 -15
  173. package/typedoc/classes/index.RpcNotOpenError.html +0 -15
  174. package/typedoc/classes/index.SharedWorkerConnection.html +0 -5
  175. package/typedoc/classes/index.Shell.html +0 -35
  176. package/typedoc/classes/index.ShellManager.html +0 -9
  177. package/typedoc/classes/index.SystemError.html +0 -16
  178. package/typedoc/classes/index.UnknownModelError.html +0 -15
  179. package/typedoc/classes/index.WorkerClientServices.html +0 -12
  180. package/typedoc/classes/invitations.AuthenticatingInvitationObservable.html +0 -30
  181. package/typedoc/classes/invitations.CancellableInvitationObservable.html +0 -29
  182. package/typedoc/classes/invitations.InvitationEncoder.html +0 -5
  183. package/typedoc/classes/invitations.InvitationsProxy.html +0 -12
  184. package/typedoc/enums/devtools.KeyType.html +0 -9
  185. package/typedoc/enums/echo.HaloSpaceMember.Role.html +0 -9
  186. package/typedoc/enums/echo.IndexKind.Kind.html +0 -8
  187. package/typedoc/enums/echo.QueryOptions.DataLocation.html +0 -6
  188. package/typedoc/enums/echo.QueryOptions.ShowDeletedOption.html +0 -6
  189. package/typedoc/enums/echo.SpaceMember.PresenceState.html +0 -5
  190. package/typedoc/enums/echo.SpaceState.html +0 -13
  191. package/typedoc/enums/echo.TextKind.html +0 -5
  192. package/typedoc/enums/halo.Device.PresenceState.html +0 -6
  193. package/typedoc/enums/halo.DeviceKind.html +0 -5
  194. package/typedoc/enums/halo.DeviceType.html +0 -9
  195. package/typedoc/enums/index.ShellDisplay.html +0 -5
  196. package/typedoc/enums/index.ShellLayout.html +0 -13
  197. package/typedoc/enums/index.SystemStatus.html +0 -5
  198. package/typedoc/enums/invitations.Invitation.AuthMethod.html +0 -6
  199. package/typedoc/enums/invitations.Invitation.Kind.html +0 -5
  200. package/typedoc/enums/invitations.Invitation.State.html +0 -13
  201. package/typedoc/enums/invitations.Invitation.Type.html +0 -6
  202. package/typedoc/enums/mesh.ConnectionState.html +0 -5
  203. package/typedoc/functions/devtools.useDevtools.html +0 -1
  204. package/typedoc/functions/devtools.useStream.html +0 -2
  205. package/typedoc/functions/echo.useMembers.html +0 -1
  206. package/typedoc/functions/echo.useQueue.html +0 -2
  207. package/typedoc/functions/echo.useSchema.html +0 -2
  208. package/typedoc/functions/echo.useSpace.html +0 -6
  209. package/typedoc/functions/echo.useSpaceInvitation.html +0 -1
  210. package/typedoc/functions/echo.useSpaceInvitations.html +0 -1
  211. package/typedoc/functions/echo.useSpaceSyncState.html +0 -2
  212. package/typedoc/functions/echo.useSpaces.html +0 -5
  213. package/typedoc/functions/echo.useSubscription.html +0 -3
  214. package/typedoc/functions/echo.useSyncState.html +0 -2
  215. package/typedoc/functions/halo.useContacts.html +0 -4
  216. package/typedoc/functions/halo.useCredentials.html +0 -1
  217. package/typedoc/functions/halo.useDevices.html +0 -1
  218. package/typedoc/functions/halo.useHaloInvitation.html +0 -1
  219. package/typedoc/functions/halo.useHaloInvitations.html +0 -1
  220. package/typedoc/functions/halo.useIdentity.html +0 -3
  221. package/typedoc/functions/halo.useKeyStore.html +0 -3
  222. package/typedoc/functions/index.AgentHostingProvider.html +0 -2
  223. package/typedoc/functions/index.useAgentHostingClient.html +0 -1
  224. package/typedoc/functions/index.useClient.html +0 -3
  225. package/typedoc/functions/index.useClientStatus.html +0 -1
  226. package/typedoc/functions/index.useConfig.html +0 -3
  227. package/typedoc/functions/index.useShell.html +0 -2
  228. package/typedoc/functions/index.useShellDisplay.html +0 -2
  229. package/typedoc/functions/index.useStatus.html +0 -1
  230. package/typedoc/functions/invitations.useInvitationStatus.html +0 -1
  231. package/typedoc/functions/mesh.useNetworkStatus.html +0 -2
  232. package/typedoc/hierarchy.html +0 -1
  233. package/typedoc/index.html +0 -23
  234. package/typedoc/interfaces/devtools.DevtoolsHook.html +0 -22
  235. package/typedoc/interfaces/devtools.DevtoolsHost.html +0 -26
  236. package/typedoc/interfaces/echo.DocAccessor.html +0 -3
  237. package/typedoc/interfaces/echo.Echo.html +0 -39
  238. package/typedoc/interfaces/echo.EchoDatabase.html +0 -30
  239. package/typedoc/interfaces/echo.Expando.html +0 -3
  240. package/typedoc/interfaces/echo.Filter.html +0 -3
  241. package/typedoc/interfaces/echo.HaloSpaceMember.html +0 -18
  242. package/typedoc/interfaces/echo.IDocHandle.html +0 -6
  243. package/typedoc/interfaces/echo.IndexKind.html +0 -9
  244. package/typedoc/interfaces/echo.Query.html +0 -34
  245. package/typedoc/interfaces/echo.QueryOptions.html +0 -39
  246. package/typedoc/interfaces/echo.Queue.html +0 -17
  247. package/typedoc/interfaces/echo.Ref.html +0 -32
  248. package/typedoc/interfaces/echo.Space.html +0 -36
  249. package/typedoc/interfaces/echo.SpaceMember.html +0 -7
  250. package/typedoc/interfaces/echo.SpaceSyncState.PeerState.html +0 -14
  251. package/typedoc/interfaces/echo.SpaceSyncState.html +0 -4
  252. package/typedoc/interfaces/echo.SubscriptionHandle.html +0 -5
  253. package/typedoc/interfaces/echo.TypedObject.html +0 -16
  254. package/typedoc/interfaces/halo.Contact.html +0 -10
  255. package/typedoc/interfaces/halo.Credential.html +0 -27
  256. package/typedoc/interfaces/halo.Device.html +0 -11
  257. package/typedoc/interfaces/halo.Halo.html +0 -16
  258. package/typedoc/interfaces/halo.Identity.html +0 -15
  259. package/typedoc/interfaces/index.AgentHostingProviderClient.html +0 -6
  260. package/typedoc/interfaces/index.AppContextRequest.html +0 -33
  261. package/typedoc/interfaces/index.ClientServicesProvider.html +0 -9
  262. package/typedoc/interfaces/index.InvitationUrlRequest.html +0 -9
  263. package/typedoc/interfaces/index.LayoutRequest.html +0 -29
  264. package/typedoc/interfaces/index.ShellRuntime.html +0 -15
  265. package/typedoc/interfaces/invitations.Invitation.html +0 -92
  266. package/typedoc/interfaces/invitations.Invitations.html +0 -5
  267. package/typedoc/interfaces/mesh.GossipMessage.html +0 -10
  268. package/typedoc/interfaces/mesh.NetworkStatus.Signal.html +0 -5
  269. package/typedoc/interfaces/mesh.NetworkStatus.html +0 -6
  270. package/typedoc/media/LICENSE +0 -8
  271. package/typedoc/modules/devtools.html +0 -1
  272. package/typedoc/modules/echo.Filter.html +0 -1
  273. package/typedoc/modules/echo.HaloSpaceMember.html +0 -1
  274. package/typedoc/modules/echo.IndexKind.html +0 -1
  275. package/typedoc/modules/echo.Query.html +0 -1
  276. package/typedoc/modules/echo.QueryOptions.html +0 -1
  277. package/typedoc/modules/echo.Ref.html +0 -2
  278. package/typedoc/modules/echo.SpaceMember.html +0 -1
  279. package/typedoc/modules/echo.SpaceSyncState.html +0 -1
  280. package/typedoc/modules/echo.html +0 -1
  281. package/typedoc/modules/halo.Device.html +0 -1
  282. package/typedoc/modules/halo.html +0 -1
  283. package/typedoc/modules/index.html +0 -1
  284. package/typedoc/modules/invitations.Invitation.html +0 -1
  285. package/typedoc/modules/invitations.html +0 -1
  286. package/typedoc/modules/mesh.NetworkStatus.html +0 -1
  287. package/typedoc/modules/mesh.html +0 -1
  288. package/typedoc/modules/worker.html +0 -1
  289. package/typedoc/modules.html +0 -1
  290. package/typedoc/types/devtools.MountOptions.html +0 -3
  291. package/typedoc/types/echo.AnyLiveObject.html +0 -2
  292. package/typedoc/types/echo.Filter.And.html +0 -1
  293. package/typedoc/types/echo.Filter.Any.html +0 -1
  294. package/typedoc/types/echo.Filter.Or.html +0 -1
  295. package/typedoc/types/echo.Filter.Props.html +0 -1
  296. package/typedoc/types/echo.Filter.Type.html +0 -1
  297. package/typedoc/types/echo.Live.html +0 -5
  298. package/typedoc/types/echo.ObjectMeta.html +0 -1
  299. package/typedoc/types/echo.ObjectMigration.html +0 -7
  300. package/typedoc/types/echo.ObjectVersion.html +0 -2
  301. package/typedoc/types/echo.PeerSyncState.html +0 -1
  302. package/typedoc/types/echo.Progress.html +0 -3
  303. package/typedoc/types/echo.PropertiesTypeProps.html +0 -1
  304. package/typedoc/types/echo.Query.Any.html +0 -1
  305. package/typedoc/types/echo.Query.TextSearchOptions.html +0 -2
  306. package/typedoc/types/echo.Query.Type.html +0 -1
  307. package/typedoc/types/echo.Ref.Target.html +0 -2
  308. package/typedoc/types/echo.Selection.html +0 -1
  309. package/typedoc/types/echo.SpaceId.html +0 -6
  310. package/typedoc/types/echo.SpaceSyncStateMap.html +0 -1
  311. package/typedoc/types/echo.UseQueueOptions.html +0 -2
  312. package/typedoc/types/echo.UseSpacesParams.html +0 -3
  313. package/typedoc/types/index.AgentHostingProviderProps.html +0 -3
  314. package/typedoc/types/index.ClientContextProps.html +0 -3
  315. package/typedoc/types/index.ClientOptions.html +0 -12
  316. package/typedoc/types/index.ClientProviderProps.html +0 -2
  317. package/typedoc/types/index.ClientServices.html +0 -15
  318. package/typedoc/types/index.FromAgentOptions.html +0 -2
  319. package/typedoc/types/index.PublicKeyLike.html +0 -2
  320. package/typedoc/types/invitations.InvitationAction.html +0 -1
  321. package/typedoc/types/invitations.InvitationResult.html +0 -5
  322. package/typedoc/types/invitations.InvitationStatus.html +0 -15
  323. package/typedoc/variables/devtools.mountDevtoolsHooks.html +0 -1
  324. package/typedoc/variables/devtools.unmountDevtoolsHooks.html +0 -1
  325. package/typedoc/variables/echo.DocAccessor.html +0 -1
  326. package/typedoc/variables/echo.EchoObjectSchema.html +0 -1
  327. package/typedoc/variables/echo.Expando.html +0 -1
  328. package/typedoc/variables/echo.FQ_ID_LENGTH.html +0 -1
  329. package/typedoc/variables/echo.Filter.html +0 -1
  330. package/typedoc/variables/echo.OBJECT_ID_LENGTH.html +0 -1
  331. package/typedoc/variables/echo.ObjectVersion.html +0 -1
  332. package/typedoc/variables/echo.Query.html +0 -1
  333. package/typedoc/variables/echo.Queue.html +0 -1
  334. package/typedoc/variables/echo.ReactiveObjectSchema.html +0 -1
  335. package/typedoc/variables/echo.Ref.html +0 -2
  336. package/typedoc/variables/echo.RefArray.html +0 -2
  337. package/typedoc/variables/echo.SPACE_ID_LENGTH.html +0 -1
  338. package/typedoc/variables/echo.SpaceId.html +0 -1
  339. package/typedoc/variables/echo.SpaceSchema.html +0 -1
  340. package/typedoc/variables/echo.TypedObject.html +0 -3
  341. package/typedoc/variables/echo.compareForeignKeys.html +0 -1
  342. package/typedoc/variables/echo.createDocAccessor.html +0 -1
  343. package/typedoc/variables/echo.createEmptyEdgeSyncState.html +0 -1
  344. package/typedoc/variables/echo.createObject.html +0 -1
  345. package/typedoc/variables/echo.createQueueDXN.html +0 -2
  346. package/typedoc/variables/echo.createSubscription.html +0 -5
  347. package/typedoc/variables/echo.defineObjectMigration.html +0 -1
  348. package/typedoc/variables/echo.fromCursor.html +0 -1
  349. package/typedoc/variables/echo.fullyQualifiedId.html +0 -4
  350. package/typedoc/variables/echo.getMeta.html +0 -1
  351. package/typedoc/variables/echo.getObjectCore.html +0 -1
  352. package/typedoc/variables/echo.getRangeFromCursor.html +0 -1
  353. package/typedoc/variables/echo.getSchema.html +0 -2
  354. package/typedoc/variables/echo.getSource.html +0 -4
  355. package/typedoc/variables/echo.getSpace.html +0 -1
  356. package/typedoc/variables/echo.getSyncSummary.html +0 -1
  357. package/typedoc/variables/echo.getTarget.html +0 -4
  358. package/typedoc/variables/echo.getTextInRange.html +0 -2
  359. package/typedoc/variables/echo.getType.html +0 -5
  360. package/typedoc/variables/echo.getTypename.html +0 -6
  361. package/typedoc/variables/echo.getVersion.html +0 -3
  362. package/typedoc/variables/echo.importSpace.html +0 -1
  363. package/typedoc/variables/echo.internalDecodeReference.html +0 -2
  364. package/typedoc/variables/echo.isEchoObject.html +0 -2
  365. package/typedoc/variables/echo.isLiveObject.html +0 -3
  366. package/typedoc/variables/echo.isRelation.html +0 -2
  367. package/typedoc/variables/echo.isSpace.html +0 -1
  368. package/typedoc/variables/echo.live.html +0 -3
  369. package/typedoc/variables/echo.loadObjectReferences.html +0 -7
  370. package/typedoc/variables/echo.parseFullyQualifiedId.html +0 -2
  371. package/typedoc/variables/echo.parseId.html +0 -1
  372. package/typedoc/variables/echo.toCursor.html +0 -1
  373. package/typedoc/variables/echo.toCursorRange.html +0 -1
  374. package/typedoc/variables/echo.updateText.html +0 -6
  375. package/typedoc/variables/echo.useQuery.html +0 -2
  376. package/typedoc/variables/index.AgentHostingContext.html +0 -1
  377. package/typedoc/variables/index.ClientProvider.html +0 -3
  378. package/typedoc/variables/index.DXOS_VERSION.html +0 -1
  379. package/typedoc/variables/index.Defaults.html +0 -2
  380. package/typedoc/variables/index.Dynamics.html +0 -2
  381. package/typedoc/variables/index.Envs.html +0 -2
  382. package/typedoc/variables/index.Local.html +0 -2
  383. package/typedoc/variables/index.Remote.html +0 -1
  384. package/typedoc/variables/index.Storage.html +0 -2
  385. package/typedoc/variables/index.createClientServices.html +0 -4
  386. package/typedoc/variables/index.fromAgent.html +0 -2
  387. package/typedoc/variables/index.fromHost.html +0 -2
  388. package/typedoc/variables/index.fromSocket.html +0 -2
  389. package/typedoc/variables/index.fromWorker.html +0 -2
  390. package/typedoc/variables/index.getUnixSocket.html +0 -1
  391. package/typedoc/variables/index.resolveRef.html +0 -1
  392. package/typedoc/variables/index.useMulticastObservable.html +0 -3
  393. package/typedoc/variables/worker.getWorkerServiceHost.html +0 -1
  394. package/typedoc/variables/worker.onconnect.html +0 -1
package/docs/README.md CHANGED
@@ -168,41 +168,41 @@ dxos/react-client --> dxos/react-async
168
168
 
169
169
  ## Dependencies
170
170
 
171
- | Module | Direct |
172
- |---|---|
173
- | [`@dxos/async`](../../../common/async/docs/README.md) | ✓ |
174
- | [`@dxos/broadcast`](../../../core/mesh/broadcast/docs/README.md) | |
175
- | [`@dxos/client`](../../client/docs/README.md) | ✓ |
176
- | [`@dxos/client-services`](../../client-services/docs/README.md) | ✓ |
177
- | [`@dxos/codec-protobuf`](../../../common/codec-protobuf/docs/README.md) | ✓ |
178
- | [`@dxos/config`](../../config/docs/README.md) | ✓ |
179
- | [`@dxos/context`](../../../common/context/docs/README.md) | |
180
- | [`@dxos/credentials`](../../../core/halo/credentials/docs/README.md) | |
181
- | [`@dxos/crypto`](../../../common/crypto/docs/README.md) | |
182
- | [`@dxos/debug`](../../../common/debug/docs/README.md) | ✓ |
183
- | [`@dxos/echo-db`](../../../core/echo/echo-db/docs/README.md) | |
184
- | [`@dxos/errors`](../../errors/docs/README.md) | |
185
- | [`@dxos/feed-store`](../../../common/feed-store/docs/README.md) | |
186
- | [`@dxos/hypercore`](../../../common/hypercore/docs/README.md) | |
187
- | [`@dxos/keyring`](../../../core/halo/keyring/docs/README.md) | |
188
- | [`@dxos/keys`](../../../common/keys/docs/README.md) | ✓ |
189
- | [`@dxos/log`](../../../common/log/docs/README.md) | ✓ |
190
- | [`@dxos/mesh-protocol`](../../../core/mesh/mesh-protocol/docs/README.md) | |
191
- | [`@dxos/messaging`](../../../core/mesh/messaging/docs/README.md) | ✓ |
192
- | [`@dxos/model-factory`](../../../core/echo/model-factory/docs/README.md) | |
193
- | [`@dxos/network-generator`](../../../core/mesh/network-generator/docs/README.md) | |
194
- | [`@dxos/network-manager`](../../../core/mesh/network-manager/docs/README.md) | |
195
- | [`@dxos/document-model`](../../../core/echo/document-model/docs/README.md) | |
196
- | [`@dxos/protocol-plugin-presence`](../../../core/mesh/protocol-plugin-presence/docs/README.md) | |
197
- | [`@dxos/protocol-plugin-replicator`](../../../core/mesh/protocol-plugin-replicator/docs/README.md) | |
198
- | [`@dxos/protocol-plugin-rpc`](../../../core/mesh/protocol-plugin-rpc/docs/README.md) | |
199
- | [`@dxos/protocols`](../../../core/protocols/docs/README.md) | ✓ |
200
- | [`@dxos/random-access-storage`](../../../common/random-access-storage/docs/README.md) | |
201
- | [`@dxos/react-async`](../../../common/react-async/docs/README.md) | ✓ |
202
- | [`@dxos/rpc`](../../../core/mesh/rpc/docs/README.md) | ✓ |
203
- | [`@dxos/rpc-tunnel`](../../../core/mesh/rpc-tunnel/docs/README.md) | ✓ |
204
- | [`@dxos/teleport`](../../../core/mesh/teleport/docs/README.md) | |
205
- | [`@dxos/teleport-plugin-replicator`](../../../core/mesh/teleport-plugin-replicator/docs/README.md) | |
206
- | [`@dxos/text-model`](../../../core/echo/text-model/docs/README.md) | |
207
- | [`@dxos/timeframe`](../../../common/timeframe/docs/README.md) | |
208
- | [`@dxos/util`](../../../common/util/docs/README.md) | ✓ |
171
+ | Module | Direct |
172
+ | -------------------------------------------------------------------------------------------------- | ------- |
173
+ | [`@dxos/async`](../../../common/async/docs/README.md) | ✓ |
174
+ | [`@dxos/broadcast`](../../../core/mesh/broadcast/docs/README.md) | |
175
+ | [`@dxos/client`](../../client/docs/README.md) | ✓ |
176
+ | [`@dxos/client-services`](../../client-services/docs/README.md) | ✓ |
177
+ | [`@dxos/codec-protobuf`](../../../common/codec-protobuf/docs/README.md) | ✓ |
178
+ | [`@dxos/config`](../../config/docs/README.md) | ✓ |
179
+ | [`@dxos/context`](../../../common/context/docs/README.md) | |
180
+ | [`@dxos/credentials`](../../../core/halo/credentials/docs/README.md) | |
181
+ | [`@dxos/crypto`](../../../common/crypto/docs/README.md) | |
182
+ | [`@dxos/debug`](../../../common/debug/docs/README.md) | ✓ |
183
+ | [`@dxos/echo-db`](../../../core/echo/echo-db/docs/README.md) | |
184
+ | [`@dxos/errors`](../../errors/docs/README.md) | |
185
+ | [`@dxos/feed-store`](../../../common/feed-store/docs/README.md) | |
186
+ | [`@dxos/hypercore`](../../../common/hypercore/docs/README.md) | |
187
+ | [`@dxos/keyring`](../../../core/halo/keyring/docs/README.md) | |
188
+ | [`@dxos/keys`](../../../common/keys/docs/README.md) | ✓ |
189
+ | [`@dxos/log`](../../../common/log/docs/README.md) | ✓ |
190
+ | [`@dxos/mesh-protocol`](../../../core/mesh/mesh-protocol/docs/README.md) | |
191
+ | [`@dxos/messaging`](../../../core/mesh/messaging/docs/README.md) | ✓ |
192
+ | [`@dxos/model-factory`](../../../core/echo/model-factory/docs/README.md) | |
193
+ | [`@dxos/network-generator`](../../../core/mesh/network-generator/docs/README.md) | |
194
+ | [`@dxos/network-manager`](../../../core/mesh/network-manager/docs/README.md) | |
195
+ | [`@dxos/document-model`](../../../core/echo/document-model/docs/README.md) | |
196
+ | [`@dxos/protocol-plugin-presence`](../../../core/mesh/protocol-plugin-presence/docs/README.md) | |
197
+ | [`@dxos/protocol-plugin-replicator`](../../../core/mesh/protocol-plugin-replicator/docs/README.md) | |
198
+ | [`@dxos/protocol-plugin-rpc`](../../../core/mesh/protocol-plugin-rpc/docs/README.md) | |
199
+ | [`@dxos/protocols`](../../../core/protocols/docs/README.md) | ✓ |
200
+ | [`@dxos/random-access-storage`](../../../common/random-access-storage/docs/README.md) | |
201
+ | [`@dxos/react-async`](../../../common/react-async/docs/README.md) | ✓ |
202
+ | [`@dxos/rpc`](../../../core/mesh/rpc/docs/README.md) | ✓ |
203
+ | [`@dxos/rpc-tunnel`](../../../core/mesh/rpc-tunnel/docs/README.md) | ✓ |
204
+ | [`@dxos/teleport`](../../../core/mesh/teleport/docs/README.md) | |
205
+ | [`@dxos/teleport-plugin-replicator`](../../../core/mesh/teleport-plugin-replicator/docs/README.md) | |
206
+ | [`@dxos/text-model`](../../../core/echo/text-model/docs/README.md) | |
207
+ | [`@dxos/timeframe`](../../../common/timeframe/docs/README.md) | |
208
+ | [`@dxos/util`](../../../common/util/docs/README.md) | ✓ |
package/moon.yml CHANGED
@@ -1,11 +1,12 @@
1
- type: library
1
+ layer: library
2
2
  language: typescript
3
3
  tags:
4
- - e2e
5
4
  - ts-build
6
5
  - ts-test
6
+ - ts-test-storybook
7
7
  - typedoc
8
8
  - pack
9
+ - storybook
9
10
  tasks:
10
11
  compile:
11
12
  args:
package/package.json CHANGED
@@ -1,50 +1,62 @@
1
1
  {
2
2
  "name": "@dxos/react-client",
3
- "version": "0.8.4-main.f9ba587",
3
+ "version": "0.8.4-main.fcfe5033a5",
4
4
  "description": "React client API",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "https://github.com/dxos/dxos"
10
+ },
7
11
  "license": "MIT",
8
12
  "author": "DXOS.org",
9
- "sideEffects": true,
13
+ "sideEffects": false,
10
14
  "type": "module",
11
15
  "exports": {
12
16
  "./devtools": {
17
+ "source": "./src/devtools/index.ts",
13
18
  "types": "./dist/types/src/devtools/index.d.ts",
14
19
  "browser": "./dist/lib/browser/devtools/index.mjs",
15
20
  "node": "./dist/lib/node-esm/devtools/index.mjs"
16
21
  },
17
22
  "./echo": {
23
+ "source": "./src/echo/index.ts",
18
24
  "types": "./dist/types/src/echo/index.d.ts",
19
25
  "browser": "./dist/lib/browser/echo/index.mjs",
20
26
  "node": "./dist/lib/node-esm/echo/index.mjs"
21
27
  },
22
28
  "./halo": {
29
+ "source": "./src/halo/index.ts",
23
30
  "types": "./dist/types/src/halo/index.d.ts",
24
31
  "browser": "./dist/lib/browser/halo/index.mjs",
25
32
  "node": "./dist/lib/node-esm/halo/index.mjs"
26
33
  },
27
34
  ".": {
35
+ "source": "./src/index.ts",
28
36
  "types": "./dist/types/src/index.d.ts",
29
37
  "browser": "./dist/lib/browser/index.mjs",
30
38
  "node": "./dist/lib/node-esm/index.mjs"
31
39
  },
32
40
  "./invitations": {
41
+ "source": "./src/invitations/index.ts",
33
42
  "types": "./dist/types/src/invitations/index.d.ts",
34
43
  "browser": "./dist/lib/browser/invitations/index.mjs",
35
44
  "node": "./dist/lib/node-esm/invitations/index.mjs"
36
45
  },
37
46
  "./mesh": {
47
+ "source": "./src/mesh/index.ts",
38
48
  "types": "./dist/types/src/mesh/index.d.ts",
39
49
  "browser": "./dist/lib/browser/mesh/index.mjs",
40
50
  "node": "./dist/lib/node-esm/mesh/index.mjs"
41
51
  },
42
52
  "./testing": {
53
+ "source": "./src/testing/index.ts",
43
54
  "types": "./dist/types/src/testing/index.d.ts",
44
55
  "browser": "./dist/lib/browser/testing/index.mjs",
45
56
  "node": "./dist/lib/node-esm/testing/index.mjs"
46
57
  },
47
58
  "./worker": {
59
+ "source": "./src/worker.ts",
48
60
  "types": "./dist/types/src/worker.d.ts",
49
61
  "browser": "./dist/lib/browser/worker.mjs",
50
62
  "node": "./dist/lib/node-esm/worker.mjs"
@@ -77,44 +89,42 @@
77
89
  }
78
90
  },
79
91
  "dependencies": {
80
- "react-error-boundary": "^4.0.13",
81
- "@dxos/async": "0.8.4-main.f9ba587",
82
- "@dxos/client": "0.8.4-main.f9ba587",
83
- "@dxos/codec-protobuf": "0.8.4-main.f9ba587",
84
- "@dxos/config": "0.8.4-main.f9ba587",
85
- "@dxos/context": "0.8.4-main.f9ba587",
86
- "@dxos/debug": "0.8.4-main.f9ba587",
87
- "@dxos/echo": "0.8.4-main.f9ba587",
88
- "@dxos/echo-signals": "0.8.4-main.f9ba587",
89
- "@dxos/echo-schema": "0.8.4-main.f9ba587",
90
- "@dxos/invariant": "0.8.4-main.f9ba587",
91
- "@dxos/log": "0.8.4-main.f9ba587",
92
- "@dxos/node-std": "0.8.4-main.f9ba587",
93
- "@dxos/protocols": "0.8.4-main.f9ba587",
94
- "@dxos/react-hooks": "0.8.4-main.f9ba587",
95
- "@dxos/util": "0.8.4-main.f9ba587"
92
+ "@dxos/client": "0.8.4-main.fcfe5033a5",
93
+ "@dxos/codec-protobuf": "0.8.4-main.fcfe5033a5",
94
+ "@dxos/async": "0.8.4-main.fcfe5033a5",
95
+ "@dxos/context": "0.8.4-main.fcfe5033a5",
96
+ "@dxos/config": "0.8.4-main.fcfe5033a5",
97
+ "@dxos/debug": "0.8.4-main.fcfe5033a5",
98
+ "@dxos/echo": "0.8.4-main.fcfe5033a5",
99
+ "@dxos/echo-react": "0.8.4-main.fcfe5033a5",
100
+ "@dxos/invariant": "0.8.4-main.fcfe5033a5",
101
+ "@dxos/node-std": "0.8.4-main.fcfe5033a5",
102
+ "@dxos/protocols": "0.8.4-main.fcfe5033a5",
103
+ "@dxos/log": "0.8.4-main.fcfe5033a5",
104
+ "@dxos/react-hooks": "0.8.4-main.fcfe5033a5",
105
+ "@dxos/util": "0.8.4-main.fcfe5033a5"
96
106
  },
97
107
  "devDependencies": {
98
- "@types/react": "~18.2.0",
99
- "@types/react-dom": "~18.2.0",
100
- "react": "~18.2.0",
101
- "react-dom": "~18.2.0",
108
+ "@types/react": "~19.2.7",
109
+ "@types/react-dom": "~19.2.3",
110
+ "react": "~19.2.3",
111
+ "react-dom": "~19.2.3",
102
112
  "typedoc": "0.28.1",
103
- "@dxos/random": "0.8.4-main.f9ba587",
104
- "@dxos/react-ui": "0.8.4-main.f9ba587",
105
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.f9ba587",
106
- "@dxos/react-ui-theme": "0.8.4-main.f9ba587",
107
- "@dxos/storybook-utils": "0.8.4-main.f9ba587",
108
- "@dxos/test-utils": "0.8.4-main.f9ba587"
113
+ "@dxos/react-ui": "0.8.4-main.fcfe5033a5",
114
+ "@dxos/random": "0.8.4-main.fcfe5033a5",
115
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.fcfe5033a5",
116
+ "@dxos/storybook-utils": "0.8.4-main.fcfe5033a5",
117
+ "@dxos/test-utils": "0.8.4-main.fcfe5033a5",
118
+ "@dxos/ui-theme": "0.8.4-main.fcfe5033a5"
109
119
  },
110
120
  "peerDependencies": {
111
- "react": "~18.2.0",
112
- "react-dom": "~18.2.0"
121
+ "react": "~19.2.3",
122
+ "react-dom": "~19.2.3"
113
123
  },
114
124
  "optionalDependencies": {
115
- "@dxos/random": "0.8.4-main.f9ba587",
116
- "@dxos/react-ui": "0.8.4-main.f9ba587",
117
- "@dxos/react-ui-theme": "0.8.4-main.f9ba587"
125
+ "@dxos/random": "0.8.4-main.fcfe5033a5",
126
+ "@dxos/react-ui": "0.8.4-main.fcfe5033a5",
127
+ "@dxos/ui-theme": "0.8.4-main.fcfe5033a5"
118
128
  },
119
129
  "publishConfig": {
120
130
  "access": "public"
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React, { createContext, type PropsWithChildren, useContext, useState } from 'react';
5
+ import React, { type PropsWithChildren, createContext, useContext, useState } from 'react';
6
6
 
7
7
  import { type AgentHostingProviderClient, AgentManagerClient, FakeAgentHostingProvider } from '@dxos/client';
8
8
  import { type Halo } from '@dxos/client/halo';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import { renderHook, screen, render, act, cleanup } from '@testing-library/react';
5
+ import { act, cleanup, render, renderHook, screen } from '@testing-library/react';
6
6
  import React, { Component, type PropsWithChildren } from 'react';
7
7
  import { afterEach, beforeEach, describe, expect, test } from 'vitest';
8
8
 
@@ -10,9 +10,9 @@ import { waitForCondition } from '@dxos/async';
10
10
  import { Client, Config, SystemStatus, fromHost } from '@dxos/client';
11
11
  import { log } from '@dxos/log';
12
12
 
13
+ import { useIdentity } from '../halo';
13
14
  import { ClientProvider } from './ClientProvider';
14
15
  import { useClient } from './useClient';
15
- import { useIdentity } from '../halo';
16
16
 
17
17
  log.config({ filter: 'ClientContext:debug,warn' });
18
18
 
@@ -3,9 +3,9 @@
3
3
  //
4
4
 
5
5
  import React, {
6
- forwardRef,
7
6
  type FunctionComponent,
8
7
  type PropsWithChildren,
8
+ forwardRef,
9
9
  useEffect,
10
10
  useImperativeHandle,
11
11
  useState,
@@ -13,13 +13,12 @@ import React, {
13
13
 
14
14
  import { Client, type ClientOptions, type ClientServicesProvider, SystemStatus } from '@dxos/client';
15
15
  import { type Config } from '@dxos/config';
16
- import { registerSignalsRuntime } from '@dxos/echo-signals/react';
17
16
  import { log } from '@dxos/log';
18
- import { useControlledState } from '@dxos/react-hooks';
19
- import { getAsyncProviderValue, type MaybePromise, type Provider } from '@dxos/util';
17
+ import { useAsyncEffect, useControlledState } from '@dxos/react-hooks';
18
+ import { type MaybePromise, type Provider, getAsyncProviderValue } from '@dxos/util';
20
19
 
21
- import { ClientContext, type ClientContextProps } from './context';
22
20
  import { printBanner } from '../banner';
21
+ import { ClientContext, type ClientContextProps } from './context';
23
22
 
24
23
  /**
25
24
  * Properties for the ClientProvider.
@@ -55,12 +54,6 @@ export type ClientProviderProps = Omit<ClientOptions, 'config' | 'services'> &
55
54
  */
56
55
  fallback?: FunctionComponent<Partial<ClientContextProps>>;
57
56
 
58
- /**
59
- * Enable (by default) registration of Preact signals runtime for reactive ECHO objects.
60
- * @see https://www.npmjs.com/package/@preact/signals-react
61
- */
62
- signalsRuntime?: boolean;
63
-
64
57
  /**
65
58
  * Skip the DXOS banner.
66
59
  */
@@ -80,24 +73,17 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
80
73
  (
81
74
  {
82
75
  children,
83
- config: configProvider,
84
- client: clientProvider,
85
- services: servicesProvider,
86
- status: controlledStatus,
76
+ config: configProp,
77
+ client: clientProp,
78
+ services: servicesProp,
79
+ status: statusProp,
87
80
  fallback: Fallback = () => null,
88
- signalsRuntime = true,
89
81
  noBanner,
90
82
  onInitialized,
91
83
  ...options
92
84
  },
93
85
  forwardedRef,
94
86
  ) => {
95
- useEffect(() => {
96
- // TODO(wittjosiah): Ideally this should be imported asynchronously because it is optional.
97
- // Unfortunately, async import seemed to break signals React instrumentation.
98
- signalsRuntime && registerSignalsRuntime();
99
- }, []);
100
-
101
87
  // The client is initialized asynchronously.
102
88
  // If an error occurs during initialization, it is caught and the state is set.
103
89
  // This allows the error to be thrown in the render method.
@@ -108,13 +94,13 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
108
94
  throw error;
109
95
  }
110
96
 
111
- const [client, setClient] = useState(clientProvider instanceof Client ? clientProvider : undefined);
97
+ const [client, setClient] = useState(clientProp instanceof Client ? clientProp : undefined);
112
98
 
113
99
  // Provide external access.
114
100
  useImperativeHandle(forwardedRef, () => client, [client]);
115
101
 
116
102
  // Client status subscription.
117
- const [status, setStatus] = useControlledState(controlledStatus);
103
+ const [status, setStatus] = useControlledState(statusProp);
118
104
  useEffect(() => {
119
105
  if (!client) {
120
106
  return;
@@ -125,7 +111,7 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
125
111
  }, [client]);
126
112
 
127
113
  // Create and/or initialize client.
128
- useEffect(() => {
114
+ useAsyncEffect(async () => {
129
115
  let disposed = false;
130
116
  const initialize = async (client: Client) => {
131
117
  if (!client.initialized) {
@@ -140,42 +126,38 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
140
126
  }
141
127
 
142
128
  setClient(client);
143
-
144
129
  if (!noBanner) {
145
130
  printBanner(client);
146
131
  }
147
132
  };
148
133
 
149
134
  let client: Client;
150
- const t = setTimeout(async () => {
151
- try {
152
- if (clientProvider) {
153
- // Asynchronously request client.
154
- client = await getAsyncProviderValue(clientProvider);
155
- await initialize(client);
156
- } else {
157
- // Asynchronously construct client (config may be undefined).
158
- const config = await getAsyncProviderValue(configProvider);
159
- log('resolved config', { config });
160
- const services = await getAsyncProviderValue(servicesProvider, config);
161
- log('created services', { services });
162
- client = new Client({ config, services, ...options });
163
- log('created client');
164
- await initialize(client);
165
- }
166
- } catch (err) {
167
- if (!disposed) {
168
- log.catch(err);
169
- }
135
+ try {
136
+ if (clientProp) {
137
+ // Asynchronously request client.
138
+ client = await getAsyncProviderValue(clientProp);
139
+ await initialize(client);
140
+ } else {
141
+ // Asynchronously construct client (config may be undefined).
142
+ const config = await getAsyncProviderValue(configProp);
143
+ log('resolved config', { config });
144
+ const services = await getAsyncProviderValue(servicesProp, config);
145
+ log('created services', { services });
146
+ client = new Client({ config, services, ...options });
147
+ log('created client');
148
+ await initialize(client);
149
+ }
150
+ } catch (err) {
151
+ if (!disposed) {
152
+ log.catch(err);
170
153
  }
171
- });
154
+ }
172
155
 
173
156
  return () => {
174
157
  log('clean up');
175
158
  disposed = true;
176
- clearTimeout(t);
177
159
  // Only destroy if the client is not provided by the parent.
178
- if (!clientProvider) {
160
+ if (!clientProp) {
179
161
  void client
180
162
  ?.destroy()
181
163
  .then(() => {
@@ -184,7 +166,7 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
184
166
  .catch((err) => log.catch(err));
185
167
  }
186
168
  };
187
- }, [configProvider, clientProvider, servicesProvider, noBanner]);
169
+ }, [configProp, clientProp, servicesProp, noBanner]);
188
170
 
189
171
  if (!client?.initialized || status !== SystemStatus.ACTIVE) {
190
172
  return <Fallback client={client} status={status} />;
@@ -8,8 +8,8 @@ import { describe, expect, test } from 'vitest';
8
8
  import { waitForCondition } from '@dxos/async';
9
9
  import { Config, SystemStatus } from '@dxos/client';
10
10
 
11
- import { useConfig } from './useConfig';
12
11
  import { createClient, createClientContextProvider } from '../testing/util';
12
+ import { useConfig } from './useConfig';
13
13
 
14
14
  // TODO(burdon): Disabled in CI since flaky.
15
15
  describe.runIf(!process.env.CI)('Config hook', () => {
@@ -2,7 +2,7 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import { type DependencyList, useState, useEffect } from 'react';
5
+ import { type DependencyList, useEffect, useState } from 'react';
6
6
 
7
7
  import { type Stream } from '@dxos/codec-protobuf/stream';
8
8
  import { log } from '@dxos/log';
package/src/echo/index.ts CHANGED
@@ -3,12 +3,12 @@
3
3
  //
4
4
 
5
5
  export * from '@dxos/client/echo';
6
+ export * from '@dxos/echo-react';
6
7
 
7
8
  export * from './useMembers';
8
- export * from './useQuery';
9
9
  export * from './useQueue';
10
- export * from './useSchema';
11
10
  export * from './useSpaces';
12
11
  export * from './useSpaceInvitations';
12
+ export * from './useSpaceProperties';
13
13
  export * from './useSubscription';
14
14
  export * from './useSyncState';
@@ -3,16 +3,18 @@
3
3
  //
4
4
 
5
5
  import { MulticastObservable } from '@dxos/async';
6
- import { type PublicKey } from '@dxos/client';
6
+ import { PublicKey, type PublicKeyLike } from '@dxos/client';
7
7
  import { HaloSpaceMember, type SpaceMember } from '@dxos/client/echo';
8
8
  import { useMulticastObservable } from '@dxos/react-hooks';
9
9
 
10
10
  import { useSpaces } from './useSpaces';
11
11
 
12
- export const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {
12
+ export const useMembers = (spaceKey: PublicKeyLike | undefined): SpaceMember[] => {
13
13
  // TODO(dmaretskyi): useSpace hook for spaces that are not ready.
14
14
  const spaces = useSpaces({ all: true });
15
- const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;
15
+ const space = spaceKey
16
+ ? spaces.find((space) => (spaceKey instanceof PublicKey ? space.key.equals(spaceKey) : space.id === spaceKey))
17
+ : undefined;
16
18
 
17
19
  // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.
18
20
  const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];
@@ -6,7 +6,7 @@ import { useEffect, useMemo, useRef } from 'react';
6
6
 
7
7
  import { type Queue } from '@dxos/client/echo';
8
8
  import { raise } from '@dxos/debug';
9
- import { type Obj, type Relation } from '@dxos/echo';
9
+ import { type Entity } from '@dxos/echo';
10
10
  import { type DXN } from '@dxos/keys';
11
11
 
12
12
  import { useClient } from '../client';
@@ -19,12 +19,11 @@ export type UseQueueOptions = {
19
19
 
20
20
  /**
21
21
  * Polls the given Edge queue.
22
+ * @deprecated Use `useQuery` instead.
22
23
  */
23
- // TODO(burdon): Replace polling with socket?
24
24
  // TODO(dmaretskyi): Move into client package.
25
25
  // TODO(dmaretskyi): Consider passing the space into the hook to support queue DXNs without space id.
26
- // TODO(ZaymonFC): If queue is unchanged returned object should be refferentially stable on poll.
27
- export const useQueue = <T extends Obj.Any | Relation.Any>(
26
+ export const useQueue = <T extends Entity.Unknown>(
28
27
  queueDxn?: DXN,
29
28
  options: UseQueueOptions = {},
30
29
  ): Queue<T> | undefined => {
@@ -6,18 +6,23 @@ import { useMemo } from 'react';
6
6
 
7
7
  import { MulticastObservable } from '@dxos/async';
8
8
  import { type PublicKey } from '@dxos/client';
9
+ import { type SpaceId } from '@dxos/client/echo';
9
10
  import { useMulticastObservable } from '@dxos/react-hooks';
10
11
 
11
- import { useSpace } from './useSpaces';
12
12
  import { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';
13
+ import { useSpace } from './useSpaces';
13
14
 
14
- export const useSpaceInvitations = (spaceKey?: PublicKey): CancellableInvitationObservable[] => {
15
- const space = useSpace(spaceKey);
15
+ // TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.
16
+ // When initially joining a space that is all that is returned.
17
+ export const useSpaceInvitations = (spaceId?: SpaceId | PublicKey): CancellableInvitationObservable[] => {
18
+ const space = useSpace(spaceId);
16
19
  return useMulticastObservable(space?.invitations ?? MulticastObservable.empty()) ?? [];
17
20
  };
18
21
 
19
- export const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {
20
- const invitations = useSpaceInvitations(spaceKey);
22
+ // TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.
23
+ // When initially joining a space that is all that is returned.
24
+ export const useSpaceInvitation = (spaceId?: SpaceId | PublicKey, invitationId?: string) => {
25
+ const invitations = useSpaceInvitations(spaceId);
21
26
  const invitation = useMemo(
22
27
  () => invitations.find((invitation) => invitation.get().invitationId === invitationId),
23
28
  [invitations],
@@ -0,0 +1,28 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { MulticastObservable } from '@dxos/async';
6
+ import { type SpaceProperties, SpaceState } from '@dxos/client/echo';
7
+ import { type Key, type Obj } from '@dxos/echo';
8
+ import { type ObjectUpdateCallback, useObject } from '@dxos/echo-react';
9
+ import { useMulticastObservable } from '@dxos/react-hooks';
10
+
11
+ import { useSpace } from './useSpaces';
12
+
13
+ /**
14
+ * Subscribe to a space's properties with reactive updates.
15
+ * Returns undefined if the space is undefined or not ready yet.
16
+ * Automatically waits for the space to be ready before returning properties.
17
+ *
18
+ * @param spaceId - The space ID to get properties from (can be undefined).
19
+ * @returns A tuple of [snapshot, updateCallback] or [undefined, no-op] if not ready.
20
+ */
21
+ export const useSpaceProperties = (
22
+ spaceId: Key.SpaceId | undefined,
23
+ ): [Obj.Snapshot<SpaceProperties> | undefined, ObjectUpdateCallback<SpaceProperties>] => {
24
+ const space = useSpace(spaceId);
25
+ const spaceState = useMulticastObservable(space?.state ?? MulticastObservable.empty());
26
+ const properties = spaceState === SpaceState.SPACE_READY ? space?.properties : undefined;
27
+ return useObject(properties);
28
+ };
@@ -5,19 +5,19 @@
5
5
  import { act, renderHook } from '@testing-library/react';
6
6
  import { describe, expect, test } from 'vitest';
7
7
 
8
- import { useSpace, useSpaces } from './useSpaces';
9
8
  import { createClient, createClientContextProvider } from '../testing/util';
9
+ import { useSpace, useSpaces } from './useSpaces';
10
10
 
11
11
  describe('useSpaces', () => {
12
12
  test('lists existing spaces', async () => {
13
- const { client } = await createClient({ createIdentity: true });
13
+ const { client } = await createClient({ createIdentity: true, createSpace: true });
14
14
  const wrapper = await createClientContextProvider(client);
15
15
  const { result } = renderHook(() => useSpaces(), { wrapper });
16
16
  expect(result.current.length).to.eq(1);
17
17
  });
18
18
 
19
19
  test('updates when new spaces are created', async () => {
20
- const { client } = await createClient({ createIdentity: true });
20
+ const { client } = await createClient({ createIdentity: true, createSpace: true });
21
21
  const wrapper = await createClientContextProvider(client);
22
22
  const { result, rerender } = renderHook(() => useSpaces(), { wrapper });
23
23
  expect(result.current.length).to.eq(1);
@@ -30,23 +30,17 @@ describe('useSpaces', () => {
30
30
  });
31
31
 
32
32
  describe('useSpace', () => {
33
- test('gets default space', async () => {
34
- const { client } = await createClient();
33
+ test('returns undefined when no id provided', async () => {
34
+ const { client } = await createClient({ createIdentity: true });
35
35
  const wrapper = await createClientContextProvider(client);
36
- const { result, rerender } = renderHook(() => useSpace(), { wrapper });
36
+ const { result } = renderHook(() => useSpace(undefined), { wrapper });
37
37
  expect(result.current).to.be.undefined;
38
- await act(async () => {
39
- await client.halo.createIdentity();
40
- await client.spaces.waitUntilReady();
41
- });
42
- rerender();
43
- expect(result.current).to.not.be.undefined;
44
38
  });
45
39
 
46
- test('gets space by key', async () => {
40
+ test('gets space by id', async () => {
47
41
  const { client, space } = await createClient({ createIdentity: true, createSpace: true });
48
42
  const wrapper = await createClientContextProvider(client);
49
- const { result } = renderHook(() => useSpace(space!.key), { wrapper });
43
+ const { result } = renderHook(() => useSpace(space!.id), { wrapper });
50
44
  expect(result.current).to.not.be.undefined;
51
45
  });
52
46
  });