@dxos/react-client 0.5.3-main.f752aaa → 0.5.3-next.57eca40

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 (45) hide show
  1. package/dist/lib/browser/{chunk-BQ4BAP42.mjs → chunk-26VFTP7R.mjs} +38 -30
  2. package/dist/lib/browser/chunk-26VFTP7R.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-KR6MTIAK.mjs → chunk-RXX5XM6Z.mjs} +8 -8
  4. package/dist/lib/browser/chunk-RXX5XM6Z.mjs.map +7 -0
  5. package/dist/lib/browser/devtools/index.mjs +1 -1
  6. package/dist/lib/browser/echo/index.mjs +4 -4
  7. package/dist/lib/browser/echo/index.mjs.map +3 -3
  8. package/dist/lib/browser/halo/index.mjs +2 -2
  9. package/dist/lib/browser/index.mjs +1 -1
  10. package/dist/lib/browser/invitations/index.mjs +1 -1
  11. package/dist/lib/browser/mesh/index.mjs +1 -1
  12. package/dist/lib/browser/meta.json +1 -1
  13. package/dist/lib/browser/testing/index.mjs +2 -2
  14. package/dist/lib/browser/testing/index.mjs.map +3 -3
  15. package/dist/lib/node/{chunk-HVU2FX77.cjs → chunk-BZPBZFOR.cjs} +11 -11
  16. package/dist/lib/node/chunk-BZPBZFOR.cjs.map +7 -0
  17. package/dist/lib/node/{chunk-X5URYLUS.cjs → chunk-TQWLADVH.cjs} +41 -33
  18. package/dist/lib/node/chunk-TQWLADVH.cjs.map +7 -0
  19. package/dist/lib/node/devtools/index.cjs +2 -2
  20. package/dist/lib/node/echo/index.cjs +6 -6
  21. package/dist/lib/node/echo/index.cjs.map +3 -3
  22. package/dist/lib/node/halo/index.cjs +7 -7
  23. package/dist/lib/node/index.cjs +11 -11
  24. package/dist/lib/node/invitations/index.cjs +7 -7
  25. package/dist/lib/node/invitations/index.cjs.map +1 -1
  26. package/dist/lib/node/mesh/index.cjs +2 -2
  27. package/dist/lib/node/meta.json +1 -1
  28. package/dist/lib/node/testing/index.cjs +3 -3
  29. package/dist/lib/node/testing/index.cjs.map +3 -3
  30. package/dist/types/src/client/ClientContext.d.ts +3 -0
  31. package/dist/types/src/client/ClientContext.d.ts.map +1 -1
  32. package/dist/types/src/echo/useMembers.d.ts +1 -1
  33. package/dist/types/src/echo/useMembers.d.ts.map +1 -1
  34. package/dist/types/src/invitations/useInvitationStatus.d.ts +10 -6
  35. package/dist/types/src/invitations/useInvitationStatus.d.ts.map +1 -1
  36. package/package.json +17 -17
  37. package/src/client/ClientContext.tsx +3 -0
  38. package/src/echo/useMembers.ts +2 -2
  39. package/src/invitations/useInvitationStatus.ts +46 -36
  40. package/src/testing/ClientRepeater.tsx +1 -1
  41. package/typedoc.json +1 -1
  42. package/dist/lib/browser/chunk-BQ4BAP42.mjs.map +0 -7
  43. package/dist/lib/browser/chunk-KR6MTIAK.mjs.map +0 -7
  44. package/dist/lib/node/chunk-HVU2FX77.cjs.map +0 -7
  45. package/dist/lib/node/chunk-X5URYLUS.cjs.map +0 -7
@@ -6,18 +6,27 @@ import { useReducer, useMemo, useCallback, useEffect } from "react";
6
6
  import { Invitation, InvitationEncoder } from "@dxos/client/invitations";
7
7
  import { log } from "@dxos/log";
8
8
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/sdk/react-client/src/invitations/useInvitationStatus.ts";
9
- var useInvitationStatus = (initialObservable) => {
9
+ var useInvitationStatus = (observable) => {
10
10
  const [state, dispatch] = useReducer((prev, action) => {
11
11
  log("useInvitationStatus", {
12
12
  action
13
13
  }, {
14
14
  F: __dxlog_file,
15
- L: 81,
15
+ L: 84,
16
16
  S: void 0,
17
17
  C: (f, a) => f(...a)
18
18
  });
19
+ const invitationProps = "invitation" in action ? {
20
+ id: action.invitation.invitationId,
21
+ multiUse: action.invitation.multiUse,
22
+ invitationCode: InvitationEncoder.encode(action.invitation),
23
+ authCode: action.invitation.authCode,
24
+ authMethod: action.invitation.authMethod,
25
+ type: action.invitation.type
26
+ } : {};
19
27
  return {
20
28
  ...prev,
29
+ ...invitationProps,
21
30
  // TODO(burdon): State.
22
31
  status: action.status,
23
32
  // `invitationObservable`, `secret`, and `result` is persisted between the status-actions that set them.
@@ -29,10 +38,10 @@ var useInvitationStatus = (initialObservable) => {
29
38
  // `haltedAt` gets set on only the first error/cancelled/timeout action and reset on any others.
30
39
  ...(action.status === Invitation.State.ERROR || action.status === Invitation.State.CANCELLED || action.status === Invitation.State.TIMEOUT) && {
31
40
  haltedAt: typeof prev.haltedAt === "undefined" ? action.haltedAt : prev.haltedAt
32
- },
33
- observable: action.status === Invitation.State.CONNECTING ? action.observable ?? prev.observable : prev.observable
41
+ }
34
42
  };
35
43
  }, null, (_arg) => {
44
+ const invitation = observable?.get();
36
45
  return {
37
46
  status: Invitation.State.INIT,
38
47
  result: {
@@ -41,22 +50,30 @@ var useInvitationStatus = (initialObservable) => {
41
50
  swarmKey: null,
42
51
  target: null
43
52
  },
44
- observable: initialObservable
53
+ id: invitation?.invitationId,
54
+ multiUse: invitation?.multiUse,
55
+ invitationCode: invitation ? InvitationEncoder.encode(invitation) : void 0,
56
+ authCode: invitation?.authCode,
57
+ authMethod: invitation?.authMethod,
58
+ type: invitation?.type
45
59
  };
46
60
  });
47
61
  useEffect(() => {
48
62
  const update = (invitation) => {
49
63
  switch (invitation.state) {
64
+ case Invitation.State.INIT:
50
65
  case Invitation.State.CONNECTED:
51
66
  case Invitation.State.READY_FOR_AUTHENTICATION:
52
67
  case Invitation.State.AUTHENTICATING: {
53
68
  dispatch({
69
+ invitation,
54
70
  status: invitation.state
55
71
  });
56
72
  break;
57
73
  }
58
74
  case Invitation.State.SUCCESS: {
59
75
  dispatch({
76
+ invitation,
60
77
  status: invitation.state,
61
78
  result: {
62
79
  spaceKey: invitation.spaceKey || null,
@@ -70,6 +87,7 @@ var useInvitationStatus = (initialObservable) => {
70
87
  case Invitation.State.CANCELLED:
71
88
  case Invitation.State.TIMEOUT: {
72
89
  dispatch({
90
+ invitation,
73
91
  status: invitation.state,
74
92
  haltedAt: state.status
75
93
  });
@@ -77,26 +95,27 @@ var useInvitationStatus = (initialObservable) => {
77
95
  }
78
96
  }
79
97
  };
80
- const subscription = state.observable?.subscribe(update, (err) => {
98
+ const subscription = observable?.subscribe(update, (err) => {
81
99
  dispatch({
82
100
  status: Invitation.State.ERROR,
83
101
  error: err,
84
102
  haltedAt: state.status
85
103
  });
86
104
  });
87
- const currentState = state.observable?.get();
105
+ const currentState = observable?.get();
88
106
  if (currentState) {
89
107
  update(currentState);
90
108
  }
91
109
  return () => subscription?.unsubscribe();
92
110
  }, [
93
- state.observable,
111
+ observable,
94
112
  state.status
95
113
  ]);
96
- const connect = useCallback((observable) => {
114
+ const connect = useCallback((observable2) => {
97
115
  dispatch({
116
+ invitation: observable2.get(),
98
117
  status: Invitation.State.CONNECTING,
99
- observable
118
+ observable: observable2
100
119
  });
101
120
  }, []);
102
121
  const authenticate = useCallback((authCode) => {
@@ -104,35 +123,24 @@ var useInvitationStatus = (initialObservable) => {
104
123
  authCode
105
124
  }, {
106
125
  F: __dxlog_file,
107
- L: 165,
126
+ L: 187,
108
127
  S: void 0,
109
128
  C: (f, a) => f(...a)
110
129
  });
111
- return state.observable.authenticate(authCode);
130
+ return observable.authenticate(authCode);
112
131
  }, [
113
- state.observable
132
+ observable
114
133
  ]);
115
- const cancel = useCallback(async () => state.observable?.cancel(), [
116
- state.observable
134
+ const cancel = useCallback(async () => observable?.cancel(), [
135
+ observable
117
136
  ]);
118
137
  return useMemo(() => {
119
- const invitation = state.observable?.get();
120
- const result = {
121
- status: state.status,
122
- haltedAt: state.haltedAt,
123
- result: state.result,
124
- error: state.error,
138
+ return {
139
+ ...state,
125
140
  cancel,
126
141
  connect,
127
- authenticate,
128
- id: invitation?.invitationId,
129
- multiUse: invitation?.multiUse,
130
- invitationCode: invitation ? InvitationEncoder.encode(invitation) : void 0,
131
- authCode: invitation?.authCode,
132
- authMethod: invitation?.authMethod,
133
- type: invitation?.type
142
+ authenticate
134
143
  };
135
- return result;
136
144
  }, [
137
145
  state,
138
146
  cancel,
@@ -149,4 +157,4 @@ export {
149
157
  Invitation2 as Invitation,
150
158
  InvitationsProxy
151
159
  };
152
- //# sourceMappingURL=chunk-BQ4BAP42.mjs.map
160
+ //# sourceMappingURL=chunk-26VFTP7R.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/invitations/index.ts", "../../../src/invitations/useInvitationStatus.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n InvitationEncoder,\n Invitation,\n type Invitations,\n InvitationsProxy,\n} from '@dxos/client/invitations';\n\nexport * from './useInvitationStatus';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useReducer, type Reducer, useMemo, useCallback, useEffect } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport {\n type AuthenticatingInvitationObservable,\n type CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n} from '@dxos/client/invitations';\nimport { log } from '@dxos/log';\n\nexport type InvitationResult = {\n spaceKey: PublicKey | null;\n identityKey: PublicKey | null;\n swarmKey: PublicKey | null;\n target: string | null;\n};\n\ninterface InvitationReducerState {\n status: Invitation.State; // TODO(burdon): Rename state.\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n id?: string;\n multiUse?: boolean;\n invitationCode?: string;\n authCode?: string;\n authMethod?: Invitation.AuthMethod;\n type?: Invitation.Type;\n}\n\ntype InvitationPayload = { invitation: Invitation };\n\nexport type InvitationAction =\n | ({\n status:\n | Invitation.State.INIT\n | Invitation.State.CONNECTED\n | Invitation.State.READY_FOR_AUTHENTICATION\n | Invitation.State.AUTHENTICATING;\n } & InvitationPayload)\n | ({\n status: Invitation.State.CONNECTING;\n observable: CancellableInvitationObservable;\n } & InvitationPayload)\n | ({\n status: Invitation.State.SUCCESS;\n result: InvitationResult;\n } & InvitationPayload)\n | ({\n status: Invitation.State.CANCELLED | Invitation.State.TIMEOUT;\n haltedAt: Invitation.State;\n } & InvitationPayload)\n | {\n status: Invitation.State.ERROR;\n error?: Error;\n haltedAt: Invitation.State;\n };\n\nexport type InvitationStatus = {\n id?: string;\n invitationCode?: string;\n authCode?: string;\n authMethod?: Invitation.AuthMethod;\n type?: Invitation.Type;\n status: Invitation.State;\n haltedAt?: Invitation.State;\n multiUse?: boolean;\n result: InvitationResult;\n error?: number;\n cancel(): void;\n // TODO(wittjosiah): Remove?\n connect(observable: CancellableInvitationObservable): void;\n authenticate(authCode: string): Promise<void>;\n};\n\nexport const useInvitationStatus = (observable?: CancellableInvitationObservable): InvitationStatus => {\n const [state, dispatch] = useReducer<Reducer<InvitationReducerState, InvitationAction>, null>(\n (prev, action) => {\n log('useInvitationStatus', { action });\n const invitationProps =\n 'invitation' in action\n ? {\n id: action.invitation.invitationId,\n multiUse: action.invitation.multiUse,\n invitationCode: InvitationEncoder.encode(action.invitation),\n authCode: action.invitation.authCode,\n authMethod: action.invitation.authMethod,\n type: action.invitation.type,\n }\n : {};\n return {\n ...prev,\n ...invitationProps,\n // TODO(burdon): State.\n status: action.status,\n // `invitationObservable`, `secret`, and `result` is persisted between the status-actions that set them.\n result: action.status === Invitation.State.SUCCESS ? action.result : prev.result,\n // `error` gets set each time we enter the error state\n ...(action.status === Invitation.State.ERROR && { error: action.error }),\n // `haltedAt` gets set on only the first error/cancelled/timeout action and reset on any others.\n ...((action.status === Invitation.State.ERROR ||\n action.status === Invitation.State.CANCELLED ||\n action.status === Invitation.State.TIMEOUT) && {\n haltedAt: typeof prev.haltedAt === 'undefined' ? action.haltedAt : prev.haltedAt,\n }),\n } as InvitationReducerState;\n },\n null,\n (_arg: null) => {\n const invitation = observable?.get();\n return {\n status: Invitation.State.INIT,\n result: { spaceKey: null, identityKey: null, swarmKey: null, target: null },\n id: invitation?.invitationId,\n multiUse: invitation?.multiUse,\n invitationCode: invitation ? InvitationEncoder.encode(invitation) : undefined,\n authCode: invitation?.authCode,\n authMethod: invitation?.authMethod,\n type: invitation?.type,\n };\n },\n );\n\n // Handle unmount.\n\n useEffect(() => {\n const update = (invitation: Invitation) => {\n switch (invitation.state) {\n case Invitation.State.INIT:\n case Invitation.State.CONNECTED:\n case Invitation.State.READY_FOR_AUTHENTICATION:\n case Invitation.State.AUTHENTICATING: {\n dispatch({\n invitation,\n status: invitation.state,\n });\n break;\n }\n\n case Invitation.State.SUCCESS: {\n dispatch({\n invitation,\n status: invitation.state,\n result: {\n spaceKey: invitation.spaceKey || null,\n identityKey: invitation.identityKey || null,\n swarmKey: invitation.swarmKey || null,\n target: invitation.target || null,\n },\n });\n break;\n }\n\n case Invitation.State.CANCELLED:\n case Invitation.State.TIMEOUT: {\n dispatch({ invitation, status: invitation.state, haltedAt: state.status });\n break;\n }\n }\n };\n\n const subscription = observable?.subscribe(update, (err: Error) => {\n dispatch({ status: Invitation.State.ERROR, error: err, haltedAt: state.status });\n });\n\n const currentState = observable?.get();\n if (currentState) {\n update(currentState);\n }\n\n return () => subscription?.unsubscribe();\n }, [observable, state.status]);\n\n // Return memoized callbacks & values.\n\n const connect = useCallback((observable: CancellableInvitationObservable) => {\n dispatch({ invitation: observable.get(), status: Invitation.State.CONNECTING, observable });\n }, []);\n\n const authenticate = useCallback(\n (authCode: string) => {\n log('authenticating...', { authCode });\n return (observable as AuthenticatingInvitationObservable).authenticate(authCode);\n },\n [observable],\n );\n\n const cancel = useCallback(async () => observable?.cancel(), [observable]);\n\n return useMemo(() => {\n return {\n ...state,\n cancel,\n connect,\n authenticate,\n };\n }, [state, cancel, connect, authenticate]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["AuthenticatingInvitationObservable", "CancellableInvitationObservable", "InvitationEncoder", "Invitation", "InvitationsProxy", "useReducer", "useMemo", "useCallback", "useEffect", "Invitation", "InvitationEncoder", "log", "useInvitationStatus", "observable", "state", "dispatch", "prev", "action", "invitationProps", "id", "invitation", "invitationId", "multiUse", "invitationCode", "encode", "authCode", "authMethod", "type", "status", "result", "State", "SUCCESS", "ERROR", "error", "CANCELLED", "TIMEOUT", "haltedAt", "_arg", "get", "INIT", "spaceKey", "identityKey", "swarmKey", "target", "undefined", "update", "CONNECTED", "READY_FOR_AUTHENTICATION", "AUTHENTICATING", "subscription", "subscribe", "err", "currentState", "unsubscribe", "connect", "CONNECTING", "authenticate", "cancel"]
7
+ }
@@ -63,14 +63,14 @@ var ClientProvider = ({ children, config: configProvider, services: createServic
63
63
  await client2.initialize().catch(setError);
64
64
  log("client ready", void 0, {
65
65
  F: __dxlog_file,
66
- L: 132,
66
+ L: 135,
67
67
  S: void 0,
68
68
  C: (f, a) => f(...a)
69
69
  });
70
70
  await onInitialized?.(client2);
71
71
  log("initialization complete", void 0, {
72
72
  F: __dxlog_file,
73
- L: 134,
73
+ L: 137,
74
74
  S: void 0,
75
75
  C: (f, a) => f(...a)
76
76
  });
@@ -88,7 +88,7 @@ var ClientProvider = ({ children, config: configProvider, services: createServic
88
88
  config
89
89
  }, {
90
90
  F: __dxlog_file,
91
- L: 148,
91
+ L: 151,
92
92
  S: void 0,
93
93
  C: (f, a) => f(...a)
94
94
  });
@@ -97,7 +97,7 @@ var ClientProvider = ({ children, config: configProvider, services: createServic
97
97
  services
98
98
  }, {
99
99
  F: __dxlog_file,
100
- L: 150,
100
+ L: 153,
101
101
  S: void 0,
102
102
  C: (f, a) => f(...a)
103
103
  });
@@ -108,7 +108,7 @@ var ClientProvider = ({ children, config: configProvider, services: createServic
108
108
  });
109
109
  log("created client", void 0, {
110
110
  F: __dxlog_file,
111
- L: 152,
111
+ L: 155,
112
112
  S: void 0,
113
113
  C: (f, a) => f(...a)
114
114
  });
@@ -118,14 +118,14 @@ var ClientProvider = ({ children, config: configProvider, services: createServic
118
118
  return () => {
119
119
  log("clean up", void 0, {
120
120
  F: __dxlog_file,
121
- L: 158,
121
+ L: 161,
122
122
  S: void 0,
123
123
  C: (f, a) => f(...a)
124
124
  });
125
125
  clearTimeout(timeout);
126
126
  void client?.destroy().catch((err) => log.catch(err, void 0, {
127
127
  F: __dxlog_file,
128
- L: 160,
128
+ L: 163,
129
129
  S: void 0,
130
130
  C: (f, a) => f(...a)
131
131
  }));
@@ -249,4 +249,4 @@ export {
249
249
  AgentHostingProvider,
250
250
  useAgentHostingClient
251
251
  };
252
- //# sourceMappingURL=chunk-KR6MTIAK.mjs.map
252
+ //# sourceMappingURL=chunk-RXX5XM6Z.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/client/ClientContext.tsx", "../../../src/banner.ts", "../../../src/client/useClientServices.ts", "../../../src/client/useConfig.ts", "../../../src/client/useShell.ts", "../../../src/client/useStatus.ts", "../../../src/client/AgentHostingProvider.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nimport React, {\n type ReactNode,\n useState,\n type Context,\n createContext,\n useContext,\n useEffect,\n type FunctionComponent,\n useMemo,\n} from 'react';\n\nimport { Client, type ClientOptions } from '@dxos/client';\nimport { SystemStatus, type ClientServices, type ClientServicesProvider } from '@dxos/client/services';\nimport { type Config } from '@dxos/config';\nimport { raise } from '@dxos/debug';\nimport { registerSignalFactory } from '@dxos/echo-signals/react';\nimport { log } from '@dxos/log';\nimport { getAsyncValue, type MaybePromise, type Provider } from '@dxos/util'; // TODO(burdon): Deprecate \"util\"?\n\nimport { printBanner } from '../banner';\n\n// TODO(burdon): Reconcile with ClientOptions.\nexport type ClientContextProps = {\n client: Client;\n\n // Optionally expose services (e.g., for devtools).\n // TODO(burdon): Can't this just be accessed via `client.services`?\n services?: ClientServices;\n\n status?: SystemStatus | null;\n};\n\nexport const ClientContext: Context<ClientContextProps | undefined> = createContext<ClientContextProps | undefined>(\n undefined,\n);\n\n/**\n * Hook returning instance of DXOS client.\n * Requires ClientContext to be set via ClientProvider.\n */\nexport const useClient = () => {\n const { client } = useContext(ClientContext) ?? raise(new Error('Missing ClientContext.'));\n return client;\n};\n\n/**\n * Properties for the ClientProvider.\n */\nexport type ClientProviderProps = Omit<ClientOptions, 'config' | 'services'> & {\n children?: ReactNode;\n\n /**\n * Config object or async provider.\n */\n config?: Config | Provider<Promise<Config>>;\n\n /**\n * Callback to enable the caller to create a custom ClientServicesProvider.\n *\n * Most apps won't need this.\n */\n services?: (config?: Config) => MaybePromise<ClientServicesProvider>;\n\n /**\n * Client object or async provider to enable to caller to do custom initialization.\n *\n * Most apps won't need this.\n */\n // TODO(wittjosiah): Remove async and just use to keeping reference to client?\n // (Prefering `onInitialized` for custom initialization.)\n client?: Client | Provider<Promise<Client>>;\n\n /**\n * ReactNode to display until the client is available.\n */\n // TODO(wittjosiah): Rename to `placeholder`.\n fallback?: FunctionComponent<Partial<ClientContextProps>>;\n\n /**\n * Set to false to stop default signal factory from being registered.\n */\n registerSignalFactory?: boolean;\n\n /**\n * Post initialization hook to enable to caller to do custom initialization.\n *\n * @param Client\n */\n onInitialized?: (client: Client) => MaybePromise<void>;\n};\n\n/**\n * Root component that provides the DXOS client instance to child components.\n * To be used with the `useClient` hook.\n */\nexport const ClientProvider = ({\n children,\n config: configProvider,\n services: createServices,\n client: clientProvider,\n fallback: Fallback = () => null,\n registerSignalFactory: register = true,\n onInitialized,\n ...options\n}: ClientProviderProps) => {\n useMemo(() => {\n // TODO(wittjosiah): Ideally this should be imported asynchronosly because it is optional.\n // Unfortunately, async import seemed to break signals React instrumentation.\n register && registerSignalFactory();\n }, []);\n\n const [client, setClient] = useState(clientProvider instanceof Client ? clientProvider : undefined);\n const [status, setStatus] = useState<SystemStatus | null>(null);\n const [error, setError] = useState();\n if (error) {\n throw error;\n }\n\n useEffect(() => {\n if (!client) {\n return;\n }\n\n const subscription = client.status.subscribe((status) => setStatus(status));\n return () => subscription.unsubscribe();\n }, [client, setStatus]);\n\n useEffect(() => {\n const done = async (client: Client) => {\n await client.initialize().catch(setError);\n log('client ready');\n await onInitialized?.(client);\n log('initialization complete');\n setClient(client);\n setStatus(client.status.get() ?? SystemStatus.ACTIVE);\n printBanner(client);\n };\n\n const timeout = setTimeout(async () => {\n if (clientProvider) {\n // Asynchronously request client.\n const client = await getAsyncValue(clientProvider);\n await done(client);\n } else {\n // Asynchronously construct client (config may be undefined).\n const config = await getAsyncValue(configProvider);\n log('resolved config', { config });\n const services = await createServices?.(config);\n log('created services', { services });\n const client = new Client({ config, services, ...options });\n log('created client');\n await done(client);\n }\n });\n\n return () => {\n log('clean up');\n clearTimeout(timeout);\n void client?.destroy().catch((err) => log.catch(err));\n };\n }, [clientProvider, configProvider, createServices]);\n\n if (!client || status !== SystemStatus.ACTIVE) {\n return <Fallback client={client} status={status} />;\n }\n\n // prettier-ignore\n return (\n <ClientContext.Provider value={{ client, status }}>\n {children}\n </ClientContext.Provider>\n );\n};\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport { type Client } from '@dxos/client';\n\n// http://patorjk.com/software/taag/#p=testall&f=Patorjk-HeX&t=DXOS\nconst BANNER = (client: Client) => {\n const commitHash = client.config.get('runtime.app.build.commitHash');\n const hash = commitHash ? ` App Commit ${commitHash} \\n` : '';\n\n return (\n '\\n' +\n '_/\\\\/\\\\/\\\\/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\/\\\\/\\\\______/\\\\/\\\\/\\\\/\\\\/\\\\_\\n' +\n '_/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\__/\\\\/\\\\_________\\n' +\n '_/\\\\/\\\\____/\\\\/\\\\______/\\\\/\\\\______/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\/\\\\/\\\\___\\n' +\n '_/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\__________/\\\\/\\\\_\\n' +\n '_/\\\\/\\\\/\\\\/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\____/\\\\/\\\\/\\\\/\\\\____/\\\\/\\\\/\\\\/\\\\/\\\\___\\n' +\n `\\n DXOS Client ${client.version} \\n${hash}`\n );\n};\n\nlet bannerPrinted = false;\n\nexport const printBanner = (client: Client) => {\n if (bannerPrinted) {\n return;\n }\n\n bannerPrinted = true;\n // eslint-disable-next-line no-console\n console.log(`%c${BANNER(client)}`, 'font-family: monospace;');\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useContext } from 'react';\n\nimport type { ClientServices } from '@dxos/client/services';\nimport { raise } from '@dxos/debug';\n\nimport { ClientContext } from './ClientContext';\n\nexport const useClientServices = (): ClientServices | undefined => {\n const { services } = useContext(ClientContext) ?? raise(new Error('Missing ClientContext.'));\n return services;\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useContext } from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { ClientContext } from './ClientContext';\n\n/**\n * Hook returning config object used to initialize the DXOS client instance.\n * Requires ClientContext to be set via ClientProvider.\n */\nexport const useConfig = () => {\n const { client } = useContext(ClientContext) ?? raise(new Error('Missing ClientContext.'));\n return client.config;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Shell } from '@dxos/client/services';\n\nimport { useClient } from './ClientContext';\n\n/**\n * Helper hook to access the shell.\n */\nexport const useShell = (): Shell => {\n const client = useClient();\n return client.shell;\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useContext } from 'react';\n\nimport type { SystemStatus } from '@dxos/client/services';\nimport { raise } from '@dxos/debug';\n\nimport { ClientContext } from './ClientContext';\n\nexport const useStatus = (): SystemStatus | null | undefined => {\n const { status } = useContext(ClientContext) ?? raise(new Error('Missing ClientContext.'));\n return status;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { createContext, type PropsWithChildren, useContext, useState } from 'react';\n\nimport { type Halo } from '@dxos/client/halo';\nimport { type AgentHostingProviderClient, AgentManagerClient, FakeAgentHostingProvider } from '@dxos/client/services';\nimport { type Config } from '@dxos/config';\nimport { log } from '@dxos/log';\n\nimport { useClient } from './ClientContext';\n\n/*\n * Interface for invoking the agent hosting provider client.\n * @experimental\n */\n\nexport type AgentHostingProviderProps = { config: Config; halo: Halo };\n\nexport const AgentHostingContext = createContext<AgentHostingProviderClient | null>(null);\n\nexport const AgentHostingProvider = (props: PropsWithChildren<{}>) => {\n const client = useClient();\n const [agentHostingProviderClient] = useState(makeClient(client));\n return (\n <AgentHostingContext.Provider value={agentHostingProviderClient}> {props.children}</AgentHostingContext.Provider>\n );\n};\n\nexport const useAgentHostingClient = () => {\n return useContext(AgentHostingContext);\n};\n\nconst makeClient = ({ config, halo }: AgentHostingProviderProps) => {\n const agentHostingConfig = config.get('runtime.services.agentHosting');\n if (!agentHostingConfig) {\n log('no agent hosting configured');\n return null;\n }\n\n // TODO(nf): Dynamically discover based on runtime config.\n let agentHostingProviderClient: AgentHostingProviderClient | null = null;\n switch (agentHostingConfig.type) {\n case 'LOCAL_TESTING': {\n log('using FakeAgentHostingProvider');\n return new FakeAgentHostingProvider(config, halo);\n }\n\n case 'AGENTHOSTING_API': {\n agentHostingProviderClient = new AgentManagerClient(config, halo);\n if (agentHostingProviderClient.init()) {\n return agentHostingProviderClient;\n } else {\n // Not authorized or error initializing\n return null;\n }\n }\n\n default: {\n log.error('Unknown agent hosting provider type: ' + agentHostingConfig.type);\n return null;\n }\n }\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useState", "createContext", "useContext", "useEffect", "useMemo", "Client", "SystemStatus", "raise", "registerSignalFactory", "log", "getAsyncValue", "BANNER", "client", "commitHash", "config", "get", "hash", "version", "bannerPrinted", "printBanner", "console", "log", "ClientContext", "createContext", "undefined", "useClient", "client", "useContext", "raise", "Error", "ClientProvider", "children", "config", "configProvider", "services", "createServices", "clientProvider", "fallback", "Fallback", "registerSignalFactory", "register", "onInitialized", "options", "useMemo", "setClient", "useState", "Client", "status", "setStatus", "error", "setError", "useEffect", "subscription", "subscribe", "unsubscribe", "done", "initialize", "catch", "log", "get", "SystemStatus", "ACTIVE", "printBanner", "timeout", "setTimeout", "getAsyncValue", "clearTimeout", "destroy", "err", "Provider", "value", "useContext", "raise", "useClientServices", "services", "useContext", "ClientContext", "raise", "Error", "useContext", "raise", "useConfig", "client", "useContext", "ClientContext", "raise", "Error", "config", "useShell", "client", "useClient", "shell", "useContext", "raise", "useStatus", "status", "useContext", "ClientContext", "raise", "Error", "React", "createContext", "useContext", "useState", "AgentManagerClient", "FakeAgentHostingProvider", "log", "AgentHostingContext", "createContext", "AgentHostingProvider", "props", "client", "useClient", "agentHostingProviderClient", "useState", "makeClient", "React", "Provider", "value", "children", "useAgentHostingClient", "useContext", "config", "halo", "agentHostingConfig", "get", "log", "type", "FakeAgentHostingProvider", "AgentManagerClient", "init", "error"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ClientContext
3
- } from "../chunk-KR6MTIAK.mjs";
3
+ } from "../chunk-RXX5XM6Z.mjs";
4
4
 
5
5
  // packages/sdk/react-client/src/devtools/index.ts
6
6
  export * from "@dxos/client/devtools";
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  useInvitationStatus
3
- } from "../chunk-BQ4BAP42.mjs";
3
+ } from "../chunk-26VFTP7R.mjs";
4
4
  import {
5
5
  useClient
6
- } from "../chunk-KR6MTIAK.mjs";
6
+ } from "../chunk-RXX5XM6Z.mjs";
7
7
 
8
8
  // packages/sdk/react-client/src/echo/index.ts
9
9
  export * from "@dxos/client/echo";
10
10
 
11
11
  // packages/sdk/react-client/src/echo/useMembers.ts
12
12
  import { MulticastObservable } from "@dxos/async";
13
- import { SpaceMember } from "@dxos/client/echo";
13
+ import { HaloSpaceMember } from "@dxos/client/echo";
14
14
  import { useMulticastObservable as useMulticastObservable2 } from "@dxos/react-async";
15
15
 
16
16
  // packages/sdk/react-client/src/echo/useSpaces.ts
@@ -54,7 +54,7 @@ var useMembers = (spaceKey) => {
54
54
  });
55
55
  const space = spaceKey ? spaces.find((space2) => space2.key.equals(spaceKey)) : void 0;
56
56
  const members = useMulticastObservable2(space?.members ?? MulticastObservable.empty()) ?? [];
57
- return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);
57
+ return members.filter((member) => member.role !== HaloSpaceMember.Role.REMOVED);
58
58
  };
59
59
 
60
60
  // packages/sdk/react-client/src/echo/useQuery.ts
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/echo/index.ts", "../../../../src/echo/useMembers.ts", "../../../../src/echo/useSpaces.ts", "../../../../src/echo/useQuery.ts", "../../../../src/echo/useSpaceInvitations.ts", "../../../../src/echo/useSubscription.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport {\n isSpace,\n type Echo,\n type EchoReactiveObject,\n type FilterSource,\n type Query,\n type QueryOptions,\n type Space,\n} from '@dxos/client/echo';\n\ntype UseQuery = {\n <T extends EchoReactiveObject<any>>(\n spaceOrEcho?: Space | Echo,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n ): T[];\n};\n\n/**\n * Create subscription.\n */\n// TODO(burdon): Support typed operator filters (e.g., Note.filter(note => ...)).\nexport const useQuery: UseQuery = <T extends EchoReactiveObject<any>>(\n spaceOrEcho?: Space | Echo,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n) => {\n const { subscribe, getObjects } = useMemo(() => {\n const query = isSpace(spaceOrEcho)\n ? spaceOrEcho.db.query(filter, options)\n : (spaceOrEcho?.query(filter, options) as Query<T> | undefined);\n let subscribed = false;\n\n return {\n subscribe: (cb: () => void) => {\n subscribed = true;\n const unsubscribe = query?.subscribe(cb) ?? noop;\n return () => {\n unsubscribe?.();\n subscribed = false;\n };\n },\n getObjects: () => (subscribed && query ? query.objects : EMPTY_ARRAY),\n };\n }, [spaceOrEcho, ...(typeof filter === 'function' ? [] : filterToDepsArray(filter)), ...(deps ?? [])]);\n\n // https://beta.reactjs.org/reference/react/useSyncExternalStore\n // NOTE: This hook will resubscribe whenever the callback passed to the first argument changes -- make sure it is stable.\n return useSyncExternalStore<T[] | undefined>(subscribe, getObjects) ?? [];\n};\n\n// TODO(dmaretskyi): Serialize the filter here instead.\nconst filterToDepsArray = (filter?: FilterSource<any>) =>\n Object.entries(filter ?? {})\n .flat(10)\n .map((x) => (typeof x === 'function' || typeof x === 'object' ? null : x));\n\nconst noop = () => {};\n\nconst EMPTY_ARRAY: never[] = [];\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpace } from './useSpaces';\nimport { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';\n\nexport const useSpaceInvitations = (spaceKey?: PublicKey): CancellableInvitationObservable[] => {\n const space = useSpace(spaceKey);\n return useMulticastObservable(space?.invitations ?? MulticastObservable.empty()) ?? [];\n};\n\nexport const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceKey);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useRef } from 'react';\n\nimport { type Selection, type SubscriptionHandle, createSubscription } from '@dxos/client/echo';\n\n/**\n * Create reactive selection.\n * Calls the callback when the selection changes and during the first render.\n */\n// TODO(wittjosiah): Is this still needed with signals reactivity? If not, remove or update jsdoc with usage info.\nexport const useSubscription = (cb: () => void, selection: Selection) => {\n // Make sure that the callback is always the one from the latest render.\n // Without this, we would always call the callback from the initial render,\n // which might contain stale data.\n const callbackRef = useRef(cb);\n callbackRef.current = cb;\n\n const subscriptionRef = useRef<SubscriptionHandle>();\n\n useEffect(() => {\n subscriptionRef.current = createSubscription(() => {\n callbackRef.current();\n });\n\n return () => subscriptionRef.current?.unsubscribe();\n }, []);\n\n subscriptionRef.current?.update(selection);\n return subscriptionRef.current;\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,cAAc;;;ACAd,SAASA,2BAA2B;AAEpC,SAASC,mBAAmB;AAC5B,SAASC,0BAAAA,+BAA8B;;;ACHvC,SAASC,WAAWC,gBAAgB;AAGpC,SAAqBC,kBAAkB;AACvC,SAASC,8BAA8B;AAYhC,IAAMC,WAAW,CAACC,aAAAA;AACvB,QAAMC,SAASC,UAAAA;AACf,QAAMC,SAASC,uBAAgCH,OAAOE,MAAM;AAC5D,QAAM,CAACE,OAAOC,QAAAA,IAAYC,SAAS,KAAA;AAEnCC,YAAU,MAAA;AAER,QAAIR,UAAU;AACZ;IACF;AAEA,UAAMS,UAAUC,WAAW,YAAA;AACzB,YAAMT,OAAOE,OAAOQ,QAAQC,KAAI;AAChCN,eAAS,IAAA;IACX,CAAA;AAEA,WAAO,MAAMO,aAAaJ,OAAAA;EAC5B,GAAG;IAACR;IAAQD;GAAS;AAErB,MAAIA,UAAU;AACZ,WAAOG,OAAOW,KAAK,CAACC,UAAUA,MAAMC,IAAIC,OAAOjB,QAAAA,CAAAA;EACjD;AAEA,MAAIK,SAASJ,OAAOiB,KAAKC,SAASC,IAAG,GAAI;AACvC,WAAOnB,OAAOE,OAAOkB;EACvB;AACF;AAeO,IAAMC,YAAY,CAAC,EAAEC,MAAM,MAAK,IAAsB,CAAC,MAAC;AAC7D,QAAMtB,SAASC,UAAAA;AACf,QAAMC,SAASC,uBAAgCH,OAAOE,MAAM;AAG5D,SAAOA,OAAOqB,OAAO,CAACT,UAAUQ,OAAOR,MAAMU,MAAML,IAAG,MAAOM,WAAWC,KAAK;AAC/E;;;ADxDO,IAAMC,aAAa,CAACC,aAAAA;AAEzB,QAAMC,SAASC,UAAU;IAAEC,KAAK;EAAK,CAAA;AACrC,QAAMC,QAAQJ,WAAWC,OAAOI,KAAK,CAACD,WAAUA,OAAME,IAAIC,OAAOP,QAAAA,CAAAA,IAAaQ;AAG9E,QAAMC,UAAUC,wBAAuBN,OAAOK,WAAWE,oBAAoBC,MAAK,CAAA,KAAO,CAAA;AACzF,SAAOH,QAAQI,OAAO,CAACC,WAAWA,OAAOC,aAAaC,YAAYC,cAAcC,OAAO;AACzF;;;AEfA,SAASC,SAASC,4BAA4B;AAE9C,SACEC,eAOK;AAeA,IAAMC,WAAqB,CAChCC,aACAC,QACAC,SACAC,SAAAA;AAEA,QAAM,EAAEC,WAAWC,WAAU,IAAKC,QAAQ,MAAA;AACxC,UAAMC,QAAQC,QAAQR,WAAAA,IAClBA,YAAYS,GAAGF,MAAMN,QAAQC,OAAAA,IAC5BF,aAAaO,MAAMN,QAAQC,OAAAA;AAChC,QAAIQ,aAAa;AAEjB,WAAO;MACLN,WAAW,CAACO,OAAAA;AACVD,qBAAa;AACb,cAAME,cAAcL,OAAOH,UAAUO,EAAAA,KAAOE;AAC5C,eAAO,MAAA;AACLD,wBAAAA;AACAF,uBAAa;QACf;MACF;MACAL,YAAY,MAAOK,cAAcH,QAAQA,MAAMO,UAAUC;IAC3D;EACF,GAAG;IAACf;OAAiB,OAAOC,WAAW,aAAa,CAAA,IAAKe,kBAAkBf,MAAAA;OAAcE,QAAQ,CAAA;GAAI;AAIrG,SAAOc,qBAAsCb,WAAWC,UAAAA,KAAe,CAAA;AACzE;AAGA,IAAMW,oBAAoB,CAACf,WACzBiB,OAAOC,QAAQlB,UAAU,CAAC,CAAA,EACvBmB,KAAK,EAAA,EACLC,IAAI,CAACC,MAAO,OAAOA,MAAM,cAAc,OAAOA,MAAM,WAAW,OAAOA,CAAAA;AAE3E,IAAMT,OAAO,MAAA;AAAO;AAEpB,IAAME,cAAuB,CAAA;;;AC/D7B,SAASQ,WAAAA,gBAAe;AAExB,SAASC,uBAAAA,4BAA2B;AAEpC,SAASC,0BAAAA,+BAA8B;AAKhC,IAAMC,sBAAsB,CAACC,aAAAA;AAClC,QAAMC,QAAQC,SAASF,QAAAA;AACvB,SAAOG,wBAAuBF,OAAOG,eAAeC,qBAAoBC,MAAK,CAAA,KAAO,CAAA;AACtF;AAEO,IAAMC,qBAAqB,CAACP,UAAsBQ,iBAAAA;AACvD,QAAMJ,cAAcL,oBAAoBC,QAAAA;AACxC,QAAMS,aAAaC,SACjB,MAAMN,YAAYO,KAAK,CAACF,gBAAeA,YAAWG,IAAG,EAAGJ,iBAAiBA,YAAAA,GACzE;IAACJ;GAAY;AAEf,SAAOS,oBAAoBJ,UAAAA;AAC7B;;;ACrBA,SAASK,aAAAA,YAAWC,cAAc;AAElC,SAAkDC,0BAA0B;AAOrE,IAAMC,kBAAkB,CAACC,IAAgBC,cAAAA;AAI9C,QAAMC,cAAcC,OAAOH,EAAAA;AAC3BE,cAAYE,UAAUJ;AAEtB,QAAMK,kBAAkBF,OAAAA;AAExBG,EAAAA,WAAU,MAAA;AACRD,oBAAgBD,UAAUG,mBAAmB,MAAA;AAC3CL,kBAAYE,QAAO;IACrB,CAAA;AAEA,WAAO,MAAMC,gBAAgBD,SAASI,YAAAA;EACxC,GAAG,CAAA,CAAE;AAELH,kBAAgBD,SAASK,OAAOR,SAAAA;AAChC,SAAOI,gBAAgBD;AACzB;",
6
- "names": ["MulticastObservable", "SpaceMember", "useMulticastObservable", "useEffect", "useState", "SpaceState", "useMulticastObservable", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "spaceKey", "spaces", "useSpaces", "all", "space", "find", "key", "equals", "undefined", "members", "useMulticastObservable", "MulticastObservable", "empty", "filter", "member", "presence", "SpaceMember", "PresenceState", "REMOVED", "useMemo", "useSyncExternalStore", "isSpace", "useQuery", "spaceOrEcho", "filter", "options", "deps", "subscribe", "getObjects", "useMemo", "query", "isSpace", "db", "subscribed", "cb", "unsubscribe", "noop", "objects", "EMPTY_ARRAY", "filterToDepsArray", "useSyncExternalStore", "Object", "entries", "flat", "map", "x", "useMemo", "MulticastObservable", "useMulticastObservable", "useSpaceInvitations", "spaceKey", "space", "useSpace", "useMulticastObservable", "invitations", "MulticastObservable", "empty", "useSpaceInvitation", "invitationId", "invitation", "useMemo", "find", "get", "useInvitationStatus", "useEffect", "useRef", "createSubscription", "useSubscription", "cb", "selection", "callbackRef", "useRef", "current", "subscriptionRef", "useEffect", "createSubscription", "unsubscribe", "update"]
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { HaloSpaceMember, type SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.role !== HaloSpaceMember.Role.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport {\n isSpace,\n type Echo,\n type EchoReactiveObject,\n type FilterSource,\n type Query,\n type QueryOptions,\n type Space,\n} from '@dxos/client/echo';\n\ntype UseQuery = {\n <T extends EchoReactiveObject<any>>(\n spaceOrEcho?: Space | Echo,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n ): T[];\n};\n\n/**\n * Create subscription.\n */\n// TODO(burdon): Support typed operator filters (e.g., Note.filter(note => ...)).\nexport const useQuery: UseQuery = <T extends EchoReactiveObject<any>>(\n spaceOrEcho?: Space | Echo,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n) => {\n const { subscribe, getObjects } = useMemo(() => {\n const query = isSpace(spaceOrEcho)\n ? spaceOrEcho.db.query(filter, options)\n : (spaceOrEcho?.query(filter, options) as Query<T> | undefined);\n let subscribed = false;\n\n return {\n subscribe: (cb: () => void) => {\n subscribed = true;\n const unsubscribe = query?.subscribe(cb) ?? noop;\n return () => {\n unsubscribe?.();\n subscribed = false;\n };\n },\n getObjects: () => (subscribed && query ? query.objects : EMPTY_ARRAY),\n };\n }, [spaceOrEcho, ...(typeof filter === 'function' ? [] : filterToDepsArray(filter)), ...(deps ?? [])]);\n\n // https://beta.reactjs.org/reference/react/useSyncExternalStore\n // NOTE: This hook will resubscribe whenever the callback passed to the first argument changes -- make sure it is stable.\n return useSyncExternalStore<T[] | undefined>(subscribe, getObjects) ?? [];\n};\n\n// TODO(dmaretskyi): Serialize the filter here instead.\nconst filterToDepsArray = (filter?: FilterSource<any>) =>\n Object.entries(filter ?? {})\n .flat(10)\n .map((x) => (typeof x === 'function' || typeof x === 'object' ? null : x));\n\nconst noop = () => {};\n\nconst EMPTY_ARRAY: never[] = [];\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpace } from './useSpaces';\nimport { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';\n\nexport const useSpaceInvitations = (spaceKey?: PublicKey): CancellableInvitationObservable[] => {\n const space = useSpace(spaceKey);\n return useMulticastObservable(space?.invitations ?? MulticastObservable.empty()) ?? [];\n};\n\nexport const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceKey);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useRef } from 'react';\n\nimport { type Selection, type SubscriptionHandle, createSubscription } from '@dxos/client/echo';\n\n/**\n * Create reactive selection.\n * Calls the callback when the selection changes and during the first render.\n */\n// TODO(wittjosiah): Is this still needed with signals reactivity? If not, remove or update jsdoc with usage info.\nexport const useSubscription = (cb: () => void, selection: Selection) => {\n // Make sure that the callback is always the one from the latest render.\n // Without this, we would always call the callback from the initial render,\n // which might contain stale data.\n const callbackRef = useRef(cb);\n callbackRef.current = cb;\n\n const subscriptionRef = useRef<SubscriptionHandle>();\n\n useEffect(() => {\n subscriptionRef.current = createSubscription(() => {\n callbackRef.current();\n });\n\n return () => subscriptionRef.current?.unsubscribe();\n }, []);\n\n subscriptionRef.current?.update(selection);\n return subscriptionRef.current;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["MulticastObservable", "HaloSpaceMember", "useMulticastObservable", "useEffect", "useState", "SpaceState", "useMulticastObservable", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "spaceKey", "spaces", "useSpaces", "all", "space", "find", "key", "equals", "undefined", "members", "useMulticastObservable", "MulticastObservable", "empty", "filter", "member", "role", "HaloSpaceMember", "Role", "REMOVED", "useMemo", "useSyncExternalStore", "isSpace", "useQuery", "spaceOrEcho", "filter", "options", "deps", "subscribe", "getObjects", "useMemo", "query", "isSpace", "db", "subscribed", "cb", "unsubscribe", "noop", "objects", "EMPTY_ARRAY", "filterToDepsArray", "useSyncExternalStore", "Object", "entries", "flat", "map", "x", "useMemo", "MulticastObservable", "useMulticastObservable", "useSpaceInvitations", "spaceKey", "space", "useSpace", "useMulticastObservable", "invitations", "MulticastObservable", "empty", "useSpaceInvitation", "invitationId", "invitation", "useMemo", "find", "get", "useInvitationStatus", "useEffect", "useRef", "createSubscription", "useSubscription", "cb", "selection", "callbackRef", "useRef", "current", "subscriptionRef", "useEffect", "createSubscription", "unsubscribe", "update"]
7
7
  }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  useInvitationStatus
3
- } from "../chunk-BQ4BAP42.mjs";
3
+ } from "../chunk-26VFTP7R.mjs";
4
4
  import {
5
5
  useClient
6
- } from "../chunk-KR6MTIAK.mjs";
6
+ } from "../chunk-RXX5XM6Z.mjs";
7
7
 
8
8
  // packages/sdk/react-client/src/halo/index.ts
9
9
  import { Device, DeviceKind, DeviceType } from "@dxos/client/halo";
@@ -9,7 +9,7 @@ import {
9
9
  useConfig,
10
10
  useShell,
11
11
  useStatus
12
- } from "./chunk-KR6MTIAK.mjs";
12
+ } from "./chunk-RXX5XM6Z.mjs";
13
13
 
14
14
  // packages/sdk/react-client/src/index.ts
15
15
  export * from "@dxos/client";
@@ -5,7 +5,7 @@ import {
5
5
  InvitationEncoder,
6
6
  InvitationsProxy,
7
7
  useInvitationStatus
8
- } from "../chunk-BQ4BAP42.mjs";
8
+ } from "../chunk-26VFTP7R.mjs";
9
9
  export {
10
10
  AuthenticatingInvitationObservable,
11
11
  CancellableInvitationObservable,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useClient
3
- } from "../chunk-KR6MTIAK.mjs";
3
+ } from "../chunk-RXX5XM6Z.mjs";
4
4
 
5
5
  // packages/sdk/react-client/src/mesh/index.ts
6
6
  export * from "@dxos/client/mesh";