@dxos/react-client 0.8.3 → 0.8.4-main.1068cf700f
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.
- package/.storybook/main.mts +11 -0
- package/.storybook/preview.mts +8 -0
- package/.swc/plugins/linux_x86_64_19.0.0/727453fb3a62f7f1d952a41e051ca8a6f88cadc45cee43c6a4d1aa45f9b75665.wasmer-v7 +0 -0
- package/dist/lib/browser/chunk-5UKA2BMA.mjs +179 -0
- package/dist/lib/browser/chunk-5UKA2BMA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-AL2CUQ46.mjs → chunk-LO3TU5CK.mjs} +8 -8
- package/dist/lib/browser/chunk-LO3TU5CK.mjs.map +7 -0
- package/dist/lib/browser/chunk-PFF63FPR.mjs +16 -0
- package/dist/lib/browser/chunk-PFF63FPR.mjs.map +7 -0
- package/dist/lib/browser/chunk-TSF6Y5VB.mjs +8 -0
- package/dist/lib/browser/chunk-TSF6Y5VB.mjs.map +7 -0
- package/dist/lib/browser/devtools/index.mjs +7 -6
- package/dist/lib/browser/devtools/index.mjs.map +3 -3
- package/dist/lib/browser/echo/index.mjs +67 -117
- package/dist/lib/browser/echo/index.mjs.map +4 -4
- package/dist/lib/browser/halo/index.mjs +12 -10
- package/dist/lib/browser/halo/index.mjs.map +3 -3
- package/dist/lib/browser/index.mjs +115 -13
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/invitations/index.mjs +1 -1
- package/dist/lib/browser/mesh/index.mjs +4 -3
- package/dist/lib/browser/mesh/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +125 -119
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/browser/worker.mjs +1 -1
- package/dist/lib/node-esm/chunk-373DPHEQ.mjs +10 -0
- package/dist/lib/node-esm/chunk-373DPHEQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-UYJUBYMU.mjs → chunk-AQJH2UNZ.mjs} +8 -8
- package/dist/lib/node-esm/chunk-AQJH2UNZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-NETTSER2.mjs +17 -0
- package/dist/lib/node-esm/chunk-NETTSER2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-T3QTQHBD.mjs +180 -0
- package/dist/lib/node-esm/chunk-T3QTQHBD.mjs.map +7 -0
- package/dist/lib/node-esm/devtools/index.mjs +7 -6
- package/dist/lib/node-esm/devtools/index.mjs.map +3 -3
- package/dist/lib/node-esm/echo/index.mjs +67 -117
- package/dist/lib/node-esm/echo/index.mjs.map +4 -4
- package/dist/lib/node-esm/halo/index.mjs +12 -10
- package/dist/lib/node-esm/halo/index.mjs.map +3 -3
- package/dist/lib/node-esm/index.mjs +115 -13
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/invitations/index.mjs +1 -1
- package/dist/lib/node-esm/mesh/index.mjs +4 -3
- package/dist/lib/node-esm/mesh/index.mjs.map +1 -1
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/testing/index.mjs +125 -119
- package/dist/lib/node-esm/testing/index.mjs.map +3 -3
- package/dist/lib/node-esm/worker.mjs +1 -1
- package/dist/types/src/client/AgentHostingProvider.d.ts.map +1 -1
- package/dist/types/src/client/ClientProvider.d.ts +0 -10
- package/dist/types/src/client/ClientProvider.d.ts.map +1 -1
- package/dist/types/src/echo/index.d.ts +2 -2
- package/dist/types/src/echo/index.d.ts.map +1 -1
- package/dist/types/src/echo/useMembers.d.ts +2 -2
- package/dist/types/src/echo/useMembers.d.ts.map +1 -1
- package/dist/types/src/echo/useQueue.d.ts +2 -2
- package/dist/types/src/echo/useQueue.d.ts.map +1 -1
- package/dist/types/src/echo/useSpaceInvitations.d.ts +3 -2
- package/dist/types/src/echo/useSpaceInvitations.d.ts.map +1 -1
- package/dist/types/src/echo/useSpaceProperties.d.ts +13 -0
- package/dist/types/src/echo/useSpaceProperties.d.ts.map +1 -0
- package/dist/types/src/echo/useSpaces.d.ts +17 -8
- package/dist/types/src/echo/useSpaces.d.ts.map +1 -1
- package/dist/types/src/echo/useSubscription.d.ts +1 -1
- package/dist/types/src/echo/useSubscription.d.ts.map +1 -1
- package/dist/types/src/echo/useSyncState.d.ts +1 -1
- package/dist/types/src/echo/useSyncState.d.ts.map +1 -1
- package/dist/types/src/halo/Passkey.stories.d.ts +5 -5
- package/dist/types/src/halo/Passkey.stories.d.ts.map +1 -1
- package/dist/types/src/halo/useHaloInvitations.d.ts.map +1 -1
- package/dist/types/src/invitations/useInvitationStatus.d.ts +1 -1
- package/dist/types/src/invitations/useInvitationStatus.d.ts.map +1 -1
- package/dist/types/src/testing/ClientRepeater.d.ts +6 -5
- package/dist/types/src/testing/ClientRepeater.d.ts.map +1 -1
- package/dist/types/src/testing/ClientRepeater.stories.d.ts +6 -10
- package/dist/types/src/testing/ClientRepeater.stories.d.ts.map +1 -1
- package/dist/types/src/testing/context.d.ts +4 -2
- package/dist/types/src/testing/context.d.ts.map +1 -1
- package/dist/types/src/testing/withClientProvider.d.ts +6 -10
- package/dist/types/src/testing/withClientProvider.d.ts.map +1 -1
- package/dist/types/src/testing/withClientProvider.stories.d.ts +8 -9
- package/dist/types/src/testing/withClientProvider.stories.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/moon.yml +23 -0
- package/package.json +43 -32
- package/src/client/AgentHostingProvider.tsx +1 -1
- package/src/client/ClientProvider.test.tsx +3 -2
- package/src/client/ClientProvider.tsx +33 -50
- package/src/client/useConfig.test.tsx +2 -1
- package/src/devtools/useStream.ts +1 -1
- package/src/echo/index.ts +2 -2
- package/src/echo/useMembers.ts +5 -3
- package/src/echo/useQueue.ts +2 -2
- package/src/echo/useSpaceInvitations.ts +11 -5
- package/src/echo/useSpaceProperties.ts +28 -0
- package/src/echo/useSpaces.test.tsx +3 -2
- package/src/echo/useSpaces.ts +37 -20
- package/src/echo/useSubscription.ts +1 -1
- package/src/echo/useSyncState.ts +3 -3
- package/src/halo/Passkey.stories.tsx +17 -14
- package/src/halo/useDevices.test.tsx +2 -1
- package/src/halo/useHaloInvitations.ts +1 -1
- package/src/invitations/useInvitationStatus.ts +9 -8
- package/src/testing/ClientRepeater.stories.tsx +21 -12
- package/src/testing/ClientRepeater.tsx +29 -36
- package/src/testing/context.tsx +4 -3
- package/src/testing/withClientProvider.stories.tsx +32 -16
- package/src/testing/withClientProvider.tsx +81 -64
- package/tsconfig.json +3 -6
- package/vitest.config.ts +12 -16
- package/.eslintrc.cjs +0 -12
- package/README.yml +0 -33
- package/dist/lib/browser/chunk-72QD3PXL.mjs +0 -312
- package/dist/lib/browser/chunk-72QD3PXL.mjs.map +0 -7
- package/dist/lib/browser/chunk-AL2CUQ46.mjs.map +0 -7
- package/dist/lib/node/chunk-5RUIFUEC.cjs +0 -334
- package/dist/lib/node/chunk-5RUIFUEC.cjs.map +0 -7
- package/dist/lib/node/chunk-FYOAVV65.cjs +0 -188
- package/dist/lib/node/chunk-FYOAVV65.cjs.map +0 -7
- package/dist/lib/node/devtools/index.cjs +0 -62
- package/dist/lib/node/devtools/index.cjs.map +0 -7
- package/dist/lib/node/echo/index.cjs +0 -302
- package/dist/lib/node/echo/index.cjs.map +0 -7
- package/dist/lib/node/halo/index.cjs +0 -123
- package/dist/lib/node/halo/index.cjs.map +0 -7
- package/dist/lib/node/index.cjs +0 -55
- package/dist/lib/node/index.cjs.map +0 -7
- package/dist/lib/node/invitations/index.cjs +0 -39
- package/dist/lib/node/invitations/index.cjs.map +0 -7
- package/dist/lib/node/mesh/index.cjs +0 -37
- package/dist/lib/node/mesh/index.cjs.map +0 -7
- package/dist/lib/node/meta.json +0 -1
- package/dist/lib/node/testing/index.cjs +0 -278
- package/dist/lib/node/testing/index.cjs.map +0 -7
- package/dist/lib/node/worker.cjs +0 -23
- package/dist/lib/node/worker.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-NBTZZNQ5.mjs +0 -314
- package/dist/lib/node-esm/chunk-NBTZZNQ5.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UYJUBYMU.mjs.map +0 -7
- package/dist/types/src/echo/useQuery.d.ts +0 -11
- package/dist/types/src/echo/useQuery.d.ts.map +0 -1
- package/dist/types/src/echo/useQuery.test.d.ts +0 -2
- package/dist/types/src/echo/useQuery.test.d.ts.map +0 -1
- package/dist/types/src/echo/useSchema.d.ts +0 -8
- package/dist/types/src/echo/useSchema.d.ts.map +0 -1
- package/dist/types/src/playwright/playwright.config.d.cts +0 -3
- package/dist/types/src/playwright/playwright.config.d.cts.map +0 -1
- package/dist/types/src/playwright/smoke.spec.d.ts +0 -2
- package/dist/types/src/playwright/smoke.spec.d.ts.map +0 -1
- package/project.json +0 -40
- package/src/echo/useQuery.test.tsx +0 -128
- package/src/echo/useQuery.ts +0 -56
- package/src/echo/useSchema.ts +0 -54
- package/src/playwright/playwright.config.cts +0 -18
- package/src/playwright/smoke.spec.ts +0 -26
- package/typedoc/.nojekyll +0 -1
- package/typedoc/assets/hierarchy.js +0 -1
- package/typedoc/assets/highlight.css +0 -99
- package/typedoc/assets/icons.js +0 -18
- package/typedoc/assets/icons.svg +0 -1
- package/typedoc/assets/main.js +0 -60
- package/typedoc/assets/navigation.js +0 -1
- package/typedoc/assets/search.js +0 -1
- package/typedoc/assets/style.css +0 -1640
- package/typedoc/classes/echo.Hypergraph.html +0 -17
- package/typedoc/classes/echo.PropertiesType.html +0 -19
- package/typedoc/classes/echo.QueryResult.html +0 -18
- package/typedoc/classes/halo.KeyStore.html +0 -6
- package/typedoc/classes/index.AgentClientServiceProvider.html +0 -10
- package/typedoc/classes/index.AgentManagerClient.html +0 -22
- package/typedoc/classes/index.AlreadyJoinedError.html +0 -15
- package/typedoc/classes/index.ApiError.html +0 -16
- package/typedoc/classes/index.CancelledError.html +0 -16
- package/typedoc/classes/index.Client.html +0 -51
- package/typedoc/classes/index.ClientServicesProxy.html +0 -12
- package/typedoc/classes/index.Config.html +0 -17
- package/typedoc/classes/index.DataCorruptionError.html +0 -16
- package/typedoc/classes/index.DatabaseError.html +0 -15
- package/typedoc/classes/index.EntityNotFoundError.html +0 -15
- package/typedoc/classes/index.FakeAgentHostingProvider.html +0 -7
- package/typedoc/classes/index.IFrameManager.html +0 -6
- package/typedoc/classes/index.IdentityNotInitializedError.html +0 -15
- package/typedoc/classes/index.InvalidConfigError.html +0 -16
- package/typedoc/classes/index.InvalidInvitationError.html +0 -15
- package/typedoc/classes/index.InvalidInvitationExtensionRoleError.html +0 -16
- package/typedoc/classes/index.InvalidStorageVersionError.html +0 -15
- package/typedoc/classes/index.LocalClientServices.html +0 -12
- package/typedoc/classes/index.PublicKey.html +0 -55
- package/typedoc/classes/index.RemoteServiceConnectionError.html +0 -15
- package/typedoc/classes/index.RemoteServiceConnectionTimeout.html +0 -15
- package/typedoc/classes/index.RpcClosedError.html +0 -15
- package/typedoc/classes/index.RpcNotOpenError.html +0 -15
- package/typedoc/classes/index.SharedWorkerConnection.html +0 -5
- package/typedoc/classes/index.Shell.html +0 -35
- package/typedoc/classes/index.ShellManager.html +0 -9
- package/typedoc/classes/index.SystemError.html +0 -16
- package/typedoc/classes/index.UnknownModelError.html +0 -15
- package/typedoc/classes/index.WorkerClientServices.html +0 -12
- package/typedoc/classes/invitations.AuthenticatingInvitationObservable.html +0 -30
- package/typedoc/classes/invitations.CancellableInvitationObservable.html +0 -29
- package/typedoc/classes/invitations.InvitationEncoder.html +0 -5
- package/typedoc/classes/invitations.InvitationsProxy.html +0 -12
- package/typedoc/enums/devtools.KeyType.html +0 -9
- package/typedoc/enums/echo.HaloSpaceMember.Role.html +0 -9
- package/typedoc/enums/echo.IndexKind.Kind.html +0 -8
- package/typedoc/enums/echo.QueryOptions.DataLocation.html +0 -6
- package/typedoc/enums/echo.QueryOptions.ShowDeletedOption.html +0 -6
- package/typedoc/enums/echo.ResultFormat.html +0 -10
- package/typedoc/enums/echo.SpaceMember.PresenceState.html +0 -5
- package/typedoc/enums/echo.SpaceState.html +0 -13
- package/typedoc/enums/echo.TextKind.html +0 -5
- package/typedoc/enums/halo.Device.PresenceState.html +0 -6
- package/typedoc/enums/halo.DeviceKind.html +0 -5
- package/typedoc/enums/halo.DeviceType.html +0 -9
- package/typedoc/enums/index.ShellDisplay.html +0 -5
- package/typedoc/enums/index.ShellLayout.html +0 -13
- package/typedoc/enums/index.SystemStatus.html +0 -5
- package/typedoc/enums/invitations.Invitation.AuthMethod.html +0 -6
- package/typedoc/enums/invitations.Invitation.Kind.html +0 -5
- package/typedoc/enums/invitations.Invitation.State.html +0 -13
- package/typedoc/enums/invitations.Invitation.Type.html +0 -6
- package/typedoc/enums/mesh.ConnectionState.html +0 -5
- package/typedoc/functions/devtools.useDevtools.html +0 -1
- package/typedoc/functions/devtools.useStream.html +0 -2
- package/typedoc/functions/echo.useMembers.html +0 -1
- package/typedoc/functions/echo.useQueue.html +0 -2
- package/typedoc/functions/echo.useSchema.html +0 -2
- package/typedoc/functions/echo.useSpace.html +0 -6
- package/typedoc/functions/echo.useSpaceInvitation.html +0 -1
- package/typedoc/functions/echo.useSpaceInvitations.html +0 -1
- package/typedoc/functions/echo.useSpaceSyncState.html +0 -2
- package/typedoc/functions/echo.useSpaces.html +0 -5
- package/typedoc/functions/echo.useSubscription.html +0 -3
- package/typedoc/functions/echo.useSyncState.html +0 -2
- package/typedoc/functions/halo.useContacts.html +0 -4
- package/typedoc/functions/halo.useCredentials.html +0 -1
- package/typedoc/functions/halo.useDevices.html +0 -1
- package/typedoc/functions/halo.useHaloInvitation.html +0 -1
- package/typedoc/functions/halo.useHaloInvitations.html +0 -1
- package/typedoc/functions/halo.useIdentity.html +0 -3
- package/typedoc/functions/halo.useKeyStore.html +0 -3
- package/typedoc/functions/index.AgentHostingProvider.html +0 -2
- package/typedoc/functions/index.useAgentHostingClient.html +0 -1
- package/typedoc/functions/index.useClient.html +0 -3
- package/typedoc/functions/index.useClientStatus.html +0 -1
- package/typedoc/functions/index.useConfig.html +0 -3
- package/typedoc/functions/index.useShell.html +0 -2
- package/typedoc/functions/index.useShellDisplay.html +0 -2
- package/typedoc/functions/index.useStatus.html +0 -1
- package/typedoc/functions/invitations.useInvitationStatus.html +0 -1
- package/typedoc/functions/mesh.useNetworkStatus.html +0 -2
- package/typedoc/hierarchy.html +0 -1
- package/typedoc/index.html +0 -23
- package/typedoc/interfaces/devtools.DevtoolsHook.html +0 -22
- package/typedoc/interfaces/devtools.DevtoolsHost.html +0 -26
- package/typedoc/interfaces/echo.DocAccessor.html +0 -3
- package/typedoc/interfaces/echo.Echo.html +0 -39
- package/typedoc/interfaces/echo.EchoDatabase.html +0 -25
- package/typedoc/interfaces/echo.Expando.html +0 -3
- package/typedoc/interfaces/echo.Filter.html +0 -3
- package/typedoc/interfaces/echo.HaloSpaceMember.html +0 -18
- package/typedoc/interfaces/echo.IDocHandle.html +0 -6
- package/typedoc/interfaces/echo.IndexKind.html +0 -9
- package/typedoc/interfaces/echo.Query.html +0 -34
- package/typedoc/interfaces/echo.QueryOptions.html +0 -39
- package/typedoc/interfaces/echo.Queue.html +0 -17
- package/typedoc/interfaces/echo.Ref.html +0 -32
- package/typedoc/interfaces/echo.Space.html +0 -39
- package/typedoc/interfaces/echo.SpaceMember.html +0 -7
- package/typedoc/interfaces/echo.SpaceSyncState.PeerState.html +0 -14
- package/typedoc/interfaces/echo.SpaceSyncState.html +0 -4
- package/typedoc/interfaces/echo.SubscriptionHandle.html +0 -5
- package/typedoc/interfaces/echo.TypedObject.html +0 -16
- package/typedoc/interfaces/halo.Contact.html +0 -10
- package/typedoc/interfaces/halo.Credential.html +0 -27
- package/typedoc/interfaces/halo.Device.html +0 -11
- package/typedoc/interfaces/halo.Halo.html +0 -16
- package/typedoc/interfaces/halo.Identity.html +0 -15
- package/typedoc/interfaces/index.AgentHostingProviderClient.html +0 -6
- package/typedoc/interfaces/index.AppContextRequest.html +0 -33
- package/typedoc/interfaces/index.ClientServicesProvider.html +0 -9
- package/typedoc/interfaces/index.InvitationUrlRequest.html +0 -9
- package/typedoc/interfaces/index.LayoutRequest.html +0 -29
- package/typedoc/interfaces/index.ShellRuntime.html +0 -15
- package/typedoc/interfaces/invitations.Invitation.html +0 -92
- package/typedoc/interfaces/invitations.Invitations.html +0 -5
- package/typedoc/interfaces/mesh.GossipMessage.html +0 -10
- package/typedoc/interfaces/mesh.NetworkStatus.Signal.html +0 -5
- package/typedoc/interfaces/mesh.NetworkStatus.html +0 -6
- package/typedoc/media/LICENSE +0 -8
- package/typedoc/modules/devtools.html +0 -1
- package/typedoc/modules/echo.Filter.html +0 -1
- package/typedoc/modules/echo.HaloSpaceMember.html +0 -1
- package/typedoc/modules/echo.IndexKind.html +0 -1
- package/typedoc/modules/echo.Query.html +0 -1
- package/typedoc/modules/echo.QueryOptions.html +0 -1
- package/typedoc/modules/echo.Ref.html +0 -2
- package/typedoc/modules/echo.SpaceMember.html +0 -1
- package/typedoc/modules/echo.SpaceSyncState.html +0 -1
- package/typedoc/modules/echo.html +0 -1
- package/typedoc/modules/halo.Device.html +0 -1
- package/typedoc/modules/halo.html +0 -1
- package/typedoc/modules/index.html +0 -1
- package/typedoc/modules/invitations.Invitation.html +0 -1
- package/typedoc/modules/invitations.html +0 -1
- package/typedoc/modules/mesh.NetworkStatus.html +0 -1
- package/typedoc/modules/mesh.html +0 -1
- package/typedoc/modules/worker.html +0 -1
- package/typedoc/modules.html +0 -1
- package/typedoc/types/devtools.MountOptions.html +0 -3
- package/typedoc/types/echo.AnyLiveObject.html +0 -2
- package/typedoc/types/echo.Filter.And.html +0 -1
- package/typedoc/types/echo.Filter.Any.html +0 -1
- package/typedoc/types/echo.Filter.Or.html +0 -1
- package/typedoc/types/echo.Filter.Props.html +0 -1
- package/typedoc/types/echo.Filter.Type.html +0 -1
- package/typedoc/types/echo.Live.html +0 -5
- package/typedoc/types/echo.ObjectMeta.html +0 -1
- package/typedoc/types/echo.ObjectMigration.html +0 -7
- package/typedoc/types/echo.ObjectVersion.html +0 -2
- package/typedoc/types/echo.PeerSyncState.html +0 -1
- package/typedoc/types/echo.Progress.html +0 -3
- package/typedoc/types/echo.PropertiesTypeProps.html +0 -1
- package/typedoc/types/echo.Query.Any.html +0 -1
- package/typedoc/types/echo.Query.TextSearchOptions.html +0 -2
- package/typedoc/types/echo.Query.Type.html +0 -1
- package/typedoc/types/echo.Ref.Target.html +0 -2
- package/typedoc/types/echo.Selection.html +0 -1
- package/typedoc/types/echo.SpaceId.html +0 -6
- package/typedoc/types/echo.SpaceSyncStateMap.html +0 -1
- package/typedoc/types/echo.UseQueueOptions.html +0 -2
- package/typedoc/types/echo.UseSpacesParams.html +0 -3
- package/typedoc/types/index.AgentHostingProviderProps.html +0 -3
- package/typedoc/types/index.ClientContextProps.html +0 -3
- package/typedoc/types/index.ClientOptions.html +0 -12
- package/typedoc/types/index.ClientProviderProps.html +0 -2
- package/typedoc/types/index.ClientServices.html +0 -15
- package/typedoc/types/index.FromAgentOptions.html +0 -2
- package/typedoc/types/index.PublicKeyLike.html +0 -2
- package/typedoc/types/invitations.InvitationAction.html +0 -1
- package/typedoc/types/invitations.InvitationResult.html +0 -5
- package/typedoc/types/invitations.InvitationStatus.html +0 -15
- package/typedoc/variables/devtools.mountDevtoolsHooks.html +0 -1
- package/typedoc/variables/devtools.unmountDevtoolsHooks.html +0 -1
- package/typedoc/variables/echo.DocAccessor.html +0 -1
- package/typedoc/variables/echo.EchoObjectSchema.html +0 -1
- package/typedoc/variables/echo.Expando.html +0 -1
- package/typedoc/variables/echo.FQ_ID_LENGTH.html +0 -1
- package/typedoc/variables/echo.Filter.html +0 -1
- package/typedoc/variables/echo.OBJECT_ID_LENGTH.html +0 -1
- package/typedoc/variables/echo.ObjectVersion.html +0 -1
- package/typedoc/variables/echo.Query.html +0 -1
- package/typedoc/variables/echo.Queue.html +0 -1
- package/typedoc/variables/echo.ReactiveObjectSchema.html +0 -1
- package/typedoc/variables/echo.Ref.html +0 -2
- package/typedoc/variables/echo.RefArray.html +0 -2
- package/typedoc/variables/echo.SPACE_ID_LENGTH.html +0 -1
- package/typedoc/variables/echo.SpaceId.html +0 -1
- package/typedoc/variables/echo.SpaceSchema.html +0 -1
- package/typedoc/variables/echo.TypedObject.html +0 -3
- package/typedoc/variables/echo.compareForeignKeys.html +0 -1
- package/typedoc/variables/echo.createDocAccessor.html +0 -1
- package/typedoc/variables/echo.createEmptyEdgeSyncState.html +0 -1
- package/typedoc/variables/echo.createObject.html +0 -1
- package/typedoc/variables/echo.createQueueDXN.html +0 -2
- package/typedoc/variables/echo.createSubscription.html +0 -5
- package/typedoc/variables/echo.defineObjectMigration.html +0 -1
- package/typedoc/variables/echo.fromCursor.html +0 -1
- package/typedoc/variables/echo.fullyQualifiedId.html +0 -4
- package/typedoc/variables/echo.getMeta.html +0 -1
- package/typedoc/variables/echo.getObjectCore.html +0 -1
- package/typedoc/variables/echo.getRangeFromCursor.html +0 -1
- package/typedoc/variables/echo.getSchema.html +0 -2
- package/typedoc/variables/echo.getSource.html +0 -4
- package/typedoc/variables/echo.getSpace.html +0 -1
- package/typedoc/variables/echo.getSyncSummary.html +0 -1
- package/typedoc/variables/echo.getTarget.html +0 -4
- package/typedoc/variables/echo.getTextInRange.html +0 -2
- package/typedoc/variables/echo.getType.html +0 -5
- package/typedoc/variables/echo.getTypename.html +0 -6
- package/typedoc/variables/echo.getVersion.html +0 -3
- package/typedoc/variables/echo.importSpace.html +0 -1
- package/typedoc/variables/echo.internalDecodeReference.html +0 -1
- package/typedoc/variables/echo.isEchoObject.html +0 -2
- package/typedoc/variables/echo.isLiveObject.html +0 -2
- package/typedoc/variables/echo.isRelation.html +0 -2
- package/typedoc/variables/echo.isSpace.html +0 -1
- package/typedoc/variables/echo.live.html +0 -3
- package/typedoc/variables/echo.loadObjectReferences.html +0 -7
- package/typedoc/variables/echo.makeRef.html +0 -2
- package/typedoc/variables/echo.parseFullyQualifiedId.html +0 -2
- package/typedoc/variables/echo.parseId.html +0 -1
- package/typedoc/variables/echo.refFromDXN.html +0 -2
- package/typedoc/variables/echo.toCursor.html +0 -1
- package/typedoc/variables/echo.toCursorRange.html +0 -1
- package/typedoc/variables/echo.updateText.html +0 -6
- package/typedoc/variables/echo.useQuery.html +0 -2
- package/typedoc/variables/index.AgentHostingContext.html +0 -1
- package/typedoc/variables/index.ClientProvider.html +0 -3
- package/typedoc/variables/index.DXOS_VERSION.html +0 -1
- package/typedoc/variables/index.Defaults.html +0 -2
- package/typedoc/variables/index.Dynamics.html +0 -2
- package/typedoc/variables/index.Envs.html +0 -2
- package/typedoc/variables/index.Local.html +0 -2
- package/typedoc/variables/index.Remote.html +0 -1
- package/typedoc/variables/index.Storage.html +0 -2
- package/typedoc/variables/index.createClientServices.html +0 -4
- package/typedoc/variables/index.fromAgent.html +0 -2
- package/typedoc/variables/index.fromHost.html +0 -2
- package/typedoc/variables/index.fromSocket.html +0 -2
- package/typedoc/variables/index.fromWorker.html +0 -2
- package/typedoc/variables/index.getUnixSocket.html +0 -1
- package/typedoc/variables/index.resolveRef.html +0 -1
- package/typedoc/variables/index.useMulticastObservable.html +0 -3
- package/typedoc/variables/worker.getWorkerServiceHost.html +0 -1
- package/typedoc/variables/worker.onconnect.html +0 -1
package/moon.yml
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
layer: library
|
|
2
|
+
language: typescript
|
|
3
|
+
tags:
|
|
4
|
+
- ts-build
|
|
5
|
+
- ts-test
|
|
6
|
+
- typedoc
|
|
7
|
+
- pack
|
|
8
|
+
- storybook
|
|
9
|
+
tasks:
|
|
10
|
+
compile:
|
|
11
|
+
args:
|
|
12
|
+
- '--entryPoint=src/devtools/index.ts'
|
|
13
|
+
- '--entryPoint=src/echo/index.ts'
|
|
14
|
+
- '--entryPoint=src/halo/index.ts'
|
|
15
|
+
- '--entryPoint=src/index.ts'
|
|
16
|
+
- '--entryPoint=src/invitations/index.ts'
|
|
17
|
+
- '--entryPoint=src/mesh/index.ts'
|
|
18
|
+
- '--entryPoint=src/testing/index.ts'
|
|
19
|
+
- '--entryPoint=src/worker.ts'
|
|
20
|
+
test:
|
|
21
|
+
inputs:
|
|
22
|
+
- .storybook/*
|
|
23
|
+
- /tools/storybook-react/.storybook/main.ts
|
package/package.json
CHANGED
|
@@ -1,50 +1,62 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/react-client",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.4-main.1068cf700f",
|
|
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":
|
|
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"
|
|
@@ -78,43 +90,42 @@
|
|
|
78
90
|
},
|
|
79
91
|
"dependencies": {
|
|
80
92
|
"react-error-boundary": "^4.0.13",
|
|
81
|
-
"@dxos/async": "0.8.
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/context": "0.8.
|
|
86
|
-
"@dxos/debug": "0.8.
|
|
87
|
-
"@dxos/echo": "0.8.
|
|
88
|
-
"@dxos/echo
|
|
89
|
-
"@dxos/
|
|
90
|
-
"@dxos/invariant": "0.8.
|
|
91
|
-
"@dxos/
|
|
92
|
-
"@dxos/node-std": "0.8.
|
|
93
|
-
"@dxos/
|
|
94
|
-
"@dxos/react-hooks": "0.8.
|
|
95
|
-
"@dxos/util": "0.8.3"
|
|
93
|
+
"@dxos/async": "0.8.4-main.1068cf700f",
|
|
94
|
+
"@dxos/config": "0.8.4-main.1068cf700f",
|
|
95
|
+
"@dxos/client": "0.8.4-main.1068cf700f",
|
|
96
|
+
"@dxos/codec-protobuf": "0.8.4-main.1068cf700f",
|
|
97
|
+
"@dxos/context": "0.8.4-main.1068cf700f",
|
|
98
|
+
"@dxos/debug": "0.8.4-main.1068cf700f",
|
|
99
|
+
"@dxos/echo-react": "0.8.4-main.1068cf700f",
|
|
100
|
+
"@dxos/echo": "0.8.4-main.1068cf700f",
|
|
101
|
+
"@dxos/log": "0.8.4-main.1068cf700f",
|
|
102
|
+
"@dxos/invariant": "0.8.4-main.1068cf700f",
|
|
103
|
+
"@dxos/protocols": "0.8.4-main.1068cf700f",
|
|
104
|
+
"@dxos/node-std": "0.8.4-main.1068cf700f",
|
|
105
|
+
"@dxos/util": "0.8.4-main.1068cf700f",
|
|
106
|
+
"@dxos/react-hooks": "0.8.4-main.1068cf700f"
|
|
96
107
|
},
|
|
97
108
|
"devDependencies": {
|
|
98
|
-
"@types/react": "~
|
|
99
|
-
"@types/react-dom": "~
|
|
100
|
-
"react": "~
|
|
101
|
-
"react-dom": "~
|
|
109
|
+
"@types/react": "~19.2.7",
|
|
110
|
+
"@types/react-dom": "~19.2.3",
|
|
111
|
+
"react": "~19.2.3",
|
|
112
|
+
"react-dom": "~19.2.3",
|
|
102
113
|
"typedoc": "0.28.1",
|
|
103
|
-
"@dxos/random": "0.8.
|
|
104
|
-
"@dxos/react-ui": "0.8.
|
|
105
|
-
"@dxos/
|
|
106
|
-
"@dxos/
|
|
107
|
-
"@dxos/
|
|
108
|
-
"@dxos/
|
|
114
|
+
"@dxos/random": "0.8.4-main.1068cf700f",
|
|
115
|
+
"@dxos/react-ui": "0.8.4-main.1068cf700f",
|
|
116
|
+
"@dxos/storybook-utils": "0.8.4-main.1068cf700f",
|
|
117
|
+
"@dxos/test-utils": "0.8.4-main.1068cf700f",
|
|
118
|
+
"@dxos/ui-theme": "0.8.4-main.1068cf700f",
|
|
119
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.4-main.1068cf700f"
|
|
109
120
|
},
|
|
110
121
|
"peerDependencies": {
|
|
111
|
-
"react": "~
|
|
112
|
-
"react-dom": "~
|
|
122
|
+
"react": "~19.2.3",
|
|
123
|
+
"react-dom": "~19.2.3"
|
|
113
124
|
},
|
|
114
125
|
"optionalDependencies": {
|
|
115
|
-
"@dxos/random": "0.8.
|
|
116
|
-
"@dxos/
|
|
117
|
-
"@dxos/react-ui
|
|
126
|
+
"@dxos/random": "0.8.4-main.1068cf700f",
|
|
127
|
+
"@dxos/ui-theme": "0.8.4-main.1068cf700f",
|
|
128
|
+
"@dxos/react-ui": "0.8.4-main.1068cf700f"
|
|
118
129
|
},
|
|
119
130
|
"publishConfig": {
|
|
120
131
|
"access": "public"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import 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 {
|
|
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,10 @@ 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';
|
|
14
|
+
|
|
13
15
|
import { ClientProvider } from './ClientProvider';
|
|
14
16
|
import { useClient } from './useClient';
|
|
15
|
-
import { useIdentity } from '../halo';
|
|
16
17
|
|
|
17
18
|
log.config({ filter: 'ClientContext:debug,warn' });
|
|
18
19
|
|
|
@@ -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,14 +13,14 @@ 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 {
|
|
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';
|
|
23
21
|
|
|
22
|
+
import { ClientContext, type ClientContextProps } from './context';
|
|
23
|
+
|
|
24
24
|
/**
|
|
25
25
|
* Properties for the ClientProvider.
|
|
26
26
|
*/
|
|
@@ -55,12 +55,6 @@ export type ClientProviderProps = Omit<ClientOptions, 'config' | 'services'> &
|
|
|
55
55
|
*/
|
|
56
56
|
fallback?: FunctionComponent<Partial<ClientContextProps>>;
|
|
57
57
|
|
|
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
58
|
/**
|
|
65
59
|
* Skip the DXOS banner.
|
|
66
60
|
*/
|
|
@@ -80,24 +74,17 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
|
|
|
80
74
|
(
|
|
81
75
|
{
|
|
82
76
|
children,
|
|
83
|
-
config:
|
|
84
|
-
client:
|
|
85
|
-
services:
|
|
86
|
-
status:
|
|
77
|
+
config: configProp,
|
|
78
|
+
client: clientProp,
|
|
79
|
+
services: servicesProp,
|
|
80
|
+
status: statusProp,
|
|
87
81
|
fallback: Fallback = () => null,
|
|
88
|
-
signalsRuntime = true,
|
|
89
82
|
noBanner,
|
|
90
83
|
onInitialized,
|
|
91
84
|
...options
|
|
92
85
|
},
|
|
93
86
|
forwardedRef,
|
|
94
87
|
) => {
|
|
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
88
|
// The client is initialized asynchronously.
|
|
102
89
|
// If an error occurs during initialization, it is caught and the state is set.
|
|
103
90
|
// This allows the error to be thrown in the render method.
|
|
@@ -108,13 +95,13 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
|
|
|
108
95
|
throw error;
|
|
109
96
|
}
|
|
110
97
|
|
|
111
|
-
const [client, setClient] = useState(
|
|
98
|
+
const [client, setClient] = useState(clientProp instanceof Client ? clientProp : undefined);
|
|
112
99
|
|
|
113
100
|
// Provide external access.
|
|
114
101
|
useImperativeHandle(forwardedRef, () => client, [client]);
|
|
115
102
|
|
|
116
103
|
// Client status subscription.
|
|
117
|
-
const [status, setStatus] = useControlledState(
|
|
104
|
+
const [status, setStatus] = useControlledState(statusProp);
|
|
118
105
|
useEffect(() => {
|
|
119
106
|
if (!client) {
|
|
120
107
|
return;
|
|
@@ -125,7 +112,7 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
|
|
|
125
112
|
}, [client]);
|
|
126
113
|
|
|
127
114
|
// Create and/or initialize client.
|
|
128
|
-
|
|
115
|
+
useAsyncEffect(async () => {
|
|
129
116
|
let disposed = false;
|
|
130
117
|
const initialize = async (client: Client) => {
|
|
131
118
|
if (!client.initialized) {
|
|
@@ -140,42 +127,38 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
|
|
|
140
127
|
}
|
|
141
128
|
|
|
142
129
|
setClient(client);
|
|
143
|
-
|
|
144
130
|
if (!noBanner) {
|
|
145
131
|
printBanner(client);
|
|
146
132
|
}
|
|
147
133
|
};
|
|
148
134
|
|
|
149
135
|
let client: Client;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
log.catch(err);
|
|
169
|
-
}
|
|
136
|
+
try {
|
|
137
|
+
if (clientProp) {
|
|
138
|
+
// Asynchronously request client.
|
|
139
|
+
client = await getAsyncProviderValue(clientProp);
|
|
140
|
+
await initialize(client);
|
|
141
|
+
} else {
|
|
142
|
+
// Asynchronously construct client (config may be undefined).
|
|
143
|
+
const config = await getAsyncProviderValue(configProp);
|
|
144
|
+
log('resolved config', { config });
|
|
145
|
+
const services = await getAsyncProviderValue(servicesProp, config);
|
|
146
|
+
log('created services', { services });
|
|
147
|
+
client = new Client({ config, services, ...options });
|
|
148
|
+
log('created client');
|
|
149
|
+
await initialize(client);
|
|
150
|
+
}
|
|
151
|
+
} catch (err) {
|
|
152
|
+
if (!disposed) {
|
|
153
|
+
log.catch(err);
|
|
170
154
|
}
|
|
171
|
-
}
|
|
155
|
+
}
|
|
172
156
|
|
|
173
157
|
return () => {
|
|
174
158
|
log('clean up');
|
|
175
159
|
disposed = true;
|
|
176
|
-
clearTimeout(t);
|
|
177
160
|
// Only destroy if the client is not provided by the parent.
|
|
178
|
-
if (!
|
|
161
|
+
if (!clientProp) {
|
|
179
162
|
void client
|
|
180
163
|
?.destroy()
|
|
181
164
|
.then(() => {
|
|
@@ -184,7 +167,7 @@ export const ClientProvider = forwardRef<Client | undefined, ClientProviderProps
|
|
|
184
167
|
.catch((err) => log.catch(err));
|
|
185
168
|
}
|
|
186
169
|
};
|
|
187
|
-
}, [
|
|
170
|
+
}, [configProp, clientProp, servicesProp, noBanner]);
|
|
188
171
|
|
|
189
172
|
if (!client?.initialized || status !== SystemStatus.ACTIVE) {
|
|
190
173
|
return <Fallback client={client} status={status} />;
|
|
@@ -8,9 +8,10 @@ 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';
|
|
13
12
|
|
|
13
|
+
import { useConfig } from './useConfig';
|
|
14
|
+
|
|
14
15
|
// TODO(burdon): Disabled in CI since flaky.
|
|
15
16
|
describe.runIf(!process.env.CI)('Config hook', () => {
|
|
16
17
|
const render = () => useConfig();
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2021 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type DependencyList,
|
|
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';
|
package/src/echo/useMembers.ts
CHANGED
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { MulticastObservable } from '@dxos/async';
|
|
6
|
-
import { type
|
|
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:
|
|
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
|
|
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()) ?? [];
|
package/src/echo/useQueue.ts
CHANGED
|
@@ -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
|
|
9
|
+
import { type Entity } from '@dxos/echo';
|
|
10
10
|
import { type DXN } from '@dxos/keys';
|
|
11
11
|
|
|
12
12
|
import { useClient } from '../client';
|
|
@@ -24,7 +24,7 @@ export type UseQueueOptions = {
|
|
|
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
26
|
// TODO(ZaymonFC): If queue is unchanged returned object should be refferentially stable on poll.
|
|
27
|
-
export const useQueue = <T extends
|
|
27
|
+
export const useQueue = <T extends Entity.Unknown>(
|
|
28
28
|
queueDxn?: DXN,
|
|
29
29
|
options: UseQueueOptions = {},
|
|
30
30
|
): Queue<T> | undefined => {
|
|
@@ -6,18 +6,24 @@ 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
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
import { useSpace } from './useSpaces';
|
|
15
|
+
|
|
16
|
+
// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.
|
|
17
|
+
// When initially joining a space that is all that is returned.
|
|
18
|
+
export const useSpaceInvitations = (spaceId?: SpaceId | PublicKey): CancellableInvitationObservable[] => {
|
|
19
|
+
const space = useSpace(spaceId);
|
|
16
20
|
return useMulticastObservable(space?.invitations ?? MulticastObservable.empty()) ?? [];
|
|
17
21
|
};
|
|
18
22
|
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.
|
|
24
|
+
// When initially joining a space that is all that is returned.
|
|
25
|
+
export const useSpaceInvitation = (spaceId?: SpaceId | PublicKey, invitationId?: string) => {
|
|
26
|
+
const invitations = useSpaceInvitations(spaceId);
|
|
21
27
|
const invitation = useMemo(
|
|
22
28
|
() => invitations.find((invitation) => invitation.get().invitationId === invitationId),
|
|
23
29
|
[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,9 +5,10 @@
|
|
|
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';
|
|
10
9
|
|
|
10
|
+
import { useSpace, useSpaces } from './useSpaces';
|
|
11
|
+
|
|
11
12
|
describe('useSpaces', () => {
|
|
12
13
|
test('lists existing spaces', async () => {
|
|
13
14
|
const { client } = await createClient({ createIdentity: true });
|
|
@@ -46,7 +47,7 @@ describe('useSpace', () => {
|
|
|
46
47
|
test('gets space by key', async () => {
|
|
47
48
|
const { client, space } = await createClient({ createIdentity: true, createSpace: true });
|
|
48
49
|
const wrapper = await createClientContextProvider(client);
|
|
49
|
-
const { result } = renderHook(() => useSpace(space!.
|
|
50
|
+
const { result } = renderHook(() => useSpace(space!.id), { wrapper });
|
|
50
51
|
expect(result.current).to.not.be.undefined;
|
|
51
52
|
});
|
|
52
53
|
});
|
package/src/echo/useSpaces.ts
CHANGED
|
@@ -2,43 +2,47 @@
|
|
|
2
2
|
// Copyright 2020 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { useState } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import { type Space, SpaceState } from '@dxos/client/echo';
|
|
9
|
-
import { useMulticastObservable } from '@dxos/react-hooks';
|
|
7
|
+
import { PublicKey } from '@dxos/client';
|
|
8
|
+
import { type Space, type SpaceId, SpaceState } from '@dxos/client/echo';
|
|
9
|
+
import { useAsyncEffect, useMulticastObservable } from '@dxos/react-hooks';
|
|
10
10
|
|
|
11
11
|
import { useClient } from '../client';
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
|
-
* Get a specific Space using its
|
|
14
|
+
* Get a specific Space using its id.
|
|
15
15
|
* The space is not guaranteed to be in the ready state.
|
|
16
|
-
* Returns the default space if no
|
|
16
|
+
* Returns the default space if no id is provided.
|
|
17
17
|
* Requires a ClientProvider somewhere in the parent tree.
|
|
18
18
|
*
|
|
19
|
-
* @param
|
|
19
|
+
* @param spaceId the id of the space to look for
|
|
20
20
|
*/
|
|
21
|
-
|
|
21
|
+
// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.
|
|
22
|
+
// When initially joining a space that is all that is returned.
|
|
23
|
+
export const useSpace = (spaceId?: SpaceId | PublicKey): Space | undefined => {
|
|
22
24
|
const client = useClient();
|
|
23
25
|
const spaces = useMulticastObservable<Space[]>(client.spaces);
|
|
24
26
|
const [ready, setReady] = useState(false);
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
useAsyncEffect(async () => {
|
|
27
29
|
// Only wait for ready if looking for the default space.
|
|
28
|
-
if (
|
|
30
|
+
if (spaceId) {
|
|
29
31
|
return;
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
});
|
|
34
|
+
await client.spaces.waitUntilReady();
|
|
35
|
+
setReady(true);
|
|
36
|
+
}, [client, spaceId]);
|
|
36
37
|
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
if (spaceId) {
|
|
39
|
+
return spaces.find((space) => {
|
|
40
|
+
if (spaceId instanceof PublicKey) {
|
|
41
|
+
return space.key.equals(spaceId);
|
|
42
|
+
}
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
|
|
44
|
+
return space.id === spaceId;
|
|
45
|
+
});
|
|
42
46
|
}
|
|
43
47
|
|
|
44
48
|
if (ready && client.halo.identity.get()) {
|
|
@@ -46,7 +50,20 @@ export const useSpace = (spaceKeyLike?: PublicKeyLike): Space | undefined => {
|
|
|
46
50
|
}
|
|
47
51
|
};
|
|
48
52
|
|
|
49
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Get a Space database by the id of the space.
|
|
55
|
+
* The space is not guaranteed to be in the ready state.
|
|
56
|
+
* Returns the default space if no id is provided.
|
|
57
|
+
* Requires a ClientProvider somewhere in the parent tree.
|
|
58
|
+
*
|
|
59
|
+
* @param spaceId the id of the space to look for
|
|
60
|
+
*/
|
|
61
|
+
export const useDatabase = (spaceId?: SpaceId): Space['db'] | undefined => {
|
|
62
|
+
const space = useSpace(spaceId);
|
|
63
|
+
return space?.db;
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export type UseSpacesProps = {
|
|
50
67
|
/**
|
|
51
68
|
* Return uninitialized spaces as well.
|
|
52
69
|
*/
|
|
@@ -59,7 +76,7 @@ export type UseSpacesParams = {
|
|
|
59
76
|
* By default, only ready spaces are returned.
|
|
60
77
|
* @returns an array of Spaces
|
|
61
78
|
*/
|
|
62
|
-
export const useSpaces = ({ all = false }:
|
|
79
|
+
export const useSpaces = ({ all = false }: UseSpacesProps = {}): Space[] => {
|
|
63
80
|
const client = useClient();
|
|
64
81
|
const spaces = useMulticastObservable<Space[]>(client.spaces);
|
|
65
82
|
|
|
@@ -18,7 +18,7 @@ export const useSubscription = (cb: () => void, selection: Selection) => {
|
|
|
18
18
|
const callbackRef = useRef(cb);
|
|
19
19
|
callbackRef.current = cb;
|
|
20
20
|
|
|
21
|
-
const subscriptionRef = useRef<SubscriptionHandle>();
|
|
21
|
+
const subscriptionRef = useRef<SubscriptionHandle>(null);
|
|
22
22
|
|
|
23
23
|
useEffect(() => {
|
|
24
24
|
subscriptionRef.current = createSubscription(() => {
|