@dxos/react-client 0.8.4-main.03d5cd7b56 → 0.8.4-main.05e74ebcff

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 (33) hide show
  1. package/LICENSE +102 -5
  2. package/README.md +1 -1
  3. package/dist/lib/browser/echo/index.mjs +9 -59
  4. package/dist/lib/browser/echo/index.mjs.map +4 -4
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/testing/index.mjs.map +2 -2
  7. package/dist/lib/node-esm/echo/index.mjs +9 -59
  8. package/dist/lib/node-esm/echo/index.mjs.map +4 -4
  9. package/dist/lib/node-esm/meta.json +1 -1
  10. package/dist/lib/node-esm/testing/index.mjs.map +2 -2
  11. package/dist/types/src/echo/index.d.ts +0 -1
  12. package/dist/types/src/echo/index.d.ts.map +1 -1
  13. package/dist/types/src/echo/useSpaceInvitations.d.ts +1 -1
  14. package/dist/types/src/echo/useSpaceInvitations.d.ts.map +1 -1
  15. package/dist/types/src/echo/useSpaces.d.ts +2 -1
  16. package/dist/types/src/echo/useSpaces.d.ts.map +1 -1
  17. package/dist/types/src/testing/ClientRepeater.d.ts +1 -1
  18. package/dist/types/src/testing/ClientRepeater.d.ts.map +1 -1
  19. package/dist/types/src/testing/context.d.ts +2 -1
  20. package/dist/types/src/testing/context.d.ts.map +1 -1
  21. package/dist/types/src/testing/withClientProvider.d.ts.map +1 -1
  22. package/dist/types/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +26 -25
  24. package/src/echo/index.ts +0 -1
  25. package/src/echo/useSpaceInvitations.ts +1 -1
  26. package/src/echo/useSpaces.ts +2 -1
  27. package/src/testing/ClientRepeater.tsx +1 -1
  28. package/src/testing/context.tsx +2 -1
  29. package/src/testing/withClientProvider.tsx +2 -1
  30. package/tsconfig.json +3 -0
  31. package/dist/types/src/echo/useQueue.d.ts +0 -12
  32. package/dist/types/src/echo/useQueue.d.ts.map +0 -1
  33. package/src/echo/useQueue.ts +0 -73
@@ -54,57 +54,8 @@ var useMembers = (spaceKey) => {
54
54
  return members.filter((member) => member.role !== HaloSpaceMember.Role.REMOVED);
55
55
  };
56
56
 
57
- // src/echo/useQueue.ts
58
- import { useEffect, useMemo, useRef } from "react";
59
- import { raise } from "@dxos/debug";
60
- var MIN_POLL_INTERVAL = 1e3;
61
- var useQueue = (queueDxn, options = {}) => {
62
- const client = useClient();
63
- const mountedRef = useRef(true);
64
- const queue = useMemo(() => {
65
- if (!queueDxn) {
66
- return void 0;
67
- }
68
- const { spaceId } = queueDxn.asQueueDXN() ?? raise(new TypeError("Invalid queue DXN"));
69
- return client.spaces.get(spaceId)?.queues.get(queueDxn);
70
- }, [
71
- client,
72
- queueDxn?.toString()
73
- ]);
74
- useEffect(() => {
75
- void queue?.refresh();
76
- }, [
77
- queue
78
- ]);
79
- useEffect(() => {
80
- let timeout;
81
- mountedRef.current = true;
82
- const poll = () => {
83
- if (!mountedRef.current) {
84
- return;
85
- }
86
- void queue?.refresh().finally(() => {
87
- if (mountedRef.current && options.pollInterval) {
88
- timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));
89
- }
90
- });
91
- };
92
- if (options.pollInterval) {
93
- poll();
94
- }
95
- return () => {
96
- mountedRef.current = false;
97
- clearTimeout(timeout);
98
- };
99
- }, [
100
- queue,
101
- options.pollInterval
102
- ]);
103
- return queue;
104
- };
105
-
106
57
  // src/echo/useSpaceInvitations.ts
107
- import { useMemo as useMemo2 } from "react";
58
+ import { useMemo } from "react";
108
59
  import { MulticastObservable as MulticastObservable2 } from "@dxos/async";
109
60
  import { useMulticastObservable as useMulticastObservable3 } from "@dxos/react-hooks";
110
61
  var useSpaceInvitations = (spaceId) => {
@@ -113,7 +64,7 @@ var useSpaceInvitations = (spaceId) => {
113
64
  };
114
65
  var useSpaceInvitation = (spaceId, invitationId) => {
115
66
  const invitations = useSpaceInvitations(spaceId);
116
- const invitation = useMemo2(() => invitations.find((invitation2) => invitation2.get().invitationId === invitationId), [
67
+ const invitation = useMemo(() => invitations.find((invitation2) => invitation2.get().invitationId === invitationId), [
117
68
  invitations
118
69
  ]);
119
70
  return useInvitationStatus(invitation);
@@ -132,13 +83,13 @@ var useSpaceProperties = (spaceId) => {
132
83
  };
133
84
 
134
85
  // src/echo/useSubscription.ts
135
- import { useEffect as useEffect2, useRef as useRef2 } from "react";
86
+ import { useEffect, useRef } from "react";
136
87
  import { createSubscription } from "@dxos/client/echo";
137
88
  var useSubscription = (cb, selection) => {
138
- const callbackRef = useRef2(cb);
89
+ const callbackRef = useRef(cb);
139
90
  callbackRef.current = cb;
140
- const subscriptionRef = useRef2(null);
141
- useEffect2(() => {
91
+ const subscriptionRef = useRef(null);
92
+ useEffect(() => {
142
93
  subscriptionRef.current = createSubscription(() => {
143
94
  callbackRef.current();
144
95
  });
@@ -149,7 +100,7 @@ var useSubscription = (cb, selection) => {
149
100
  };
150
101
 
151
102
  // src/echo/useSyncState.ts
152
- import { useEffect as useEffect3, useState } from "react";
103
+ import { useEffect as useEffect2, useState } from "react";
153
104
  import { Context } from "@dxos/context";
154
105
  import { EdgeService } from "@dxos/protocols";
155
106
  import { compositeKey } from "@dxos/util";
@@ -158,7 +109,7 @@ var isEdgePeerId = (peerId, spaceId) => peerId.startsWith(compositeKey(EdgeServi
158
109
  var useSyncState = () => {
159
110
  const client = useClient();
160
111
  const [spaceState, setSpaceState] = useState({});
161
- useEffect3(() => {
112
+ useEffect2(() => {
162
113
  const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 16 });
163
114
  const createSubscriptions = (spaces) => {
164
115
  for (const space of spaces) {
@@ -190,7 +141,7 @@ var useSyncState = () => {
190
141
  };
191
142
  var useSpaceSyncState = (space) => {
192
143
  const [spaceState, setSpaceState] = useState();
193
- useEffect3(() => {
144
+ useEffect2(() => {
194
145
  const ctx = new Context(void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 51 });
195
146
  space.internal.db.subscribeToSyncState(ctx, ({ peers = [] }) => {
196
147
  const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));
@@ -209,7 +160,6 @@ var useSpaceSyncState = (space) => {
209
160
  export {
210
161
  useDatabase,
211
162
  useMembers,
212
- useQueue,
213
163
  useSpace,
214
164
  useSpaceInvitation,
215
165
  useSpaceInvitations,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/echo/index.ts", "../../../../src/echo/useMembers.ts", "../../../../src/echo/useSpaces.ts", "../../../../src/echo/useQueue.ts", "../../../../src/echo/useSpaceInvitations.ts", "../../../../src/echo/useSpaceProperties.ts", "../../../../src/echo/useSubscription.ts", "../../../../src/echo/useSyncState.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\nexport * from '@dxos/echo-react';\n\nexport * from './useMembers';\nexport * from './useQueue';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSpaceProperties';\nexport * from './useSubscription';\nexport * from './useSyncState';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { PublicKey, type PublicKeyLike } from '@dxos/client';\nimport { HaloSpaceMember, type SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKeyLike | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey\n ? spaces.find((space) => (spaceKey instanceof PublicKey ? space.key.equals(spaceKey) : space.id === spaceKey))\n : 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 { PublicKey } from '@dxos/client';\nimport { type Space, type SpaceId, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its id.\n * The space is not guaranteed to be in the ready state.\n * Returns undefined if no id is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceId the id of the space to look for.\n */\n// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.\n// When initially joining a space that is all that is returned.\nexport const useSpace = (spaceId?: SpaceId | PublicKey): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n if (!spaceId) {\n return undefined;\n }\n\n return spaces.find((space) => {\n if (spaceId instanceof PublicKey) {\n return space.key.equals(spaceId);\n }\n\n return space.id === spaceId;\n });\n};\n\n/**\n * Get a Space database by the id of the space.\n * The space is not guaranteed to be in the ready state.\n * Returns undefined if no id is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceId the id of the space to look for.\n * @deprecated Use useSpace.\n */\nexport const useDatabase = (spaceId?: SpaceId): Space['db'] | undefined => {\n const space = useSpace(spaceId);\n return space?.db;\n};\n\nexport type UseSpacesProps = {\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 }: UseSpacesProps = {}): 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.SPACE_READY);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo, useRef } from 'react';\n\nimport { type Queue } from '@dxos/client/echo';\nimport { raise } from '@dxos/debug';\nimport { type Entity } from '@dxos/echo';\nimport { type DXN } from '@dxos/keys';\n\nimport { useClient } from '../client';\n\nconst MIN_POLL_INTERVAL = 1_000;\n\nexport type UseQueueOptions = {\n pollInterval?: number;\n};\n\n/**\n * Polls the given Edge queue.\n * @deprecated Use `useQuery` instead.\n */\n// TODO(dmaretskyi): Move into client package.\n// TODO(dmaretskyi): Consider passing the space into the hook to support queue DXNs without space id.\nexport const useQueue = <T extends Entity.Unknown>(\n queueDxn?: DXN,\n options: UseQueueOptions = {},\n): Queue<T> | undefined => {\n const client = useClient();\n const mountedRef = useRef(true);\n\n const queue = useMemo<Queue<T> | undefined>(() => {\n if (!queueDxn) {\n return undefined;\n }\n\n const { spaceId } = queueDxn.asQueueDXN() ?? raise(new TypeError('Invalid queue DXN'));\n return client.spaces.get(spaceId)?.queues.get<T>(queueDxn);\n }, [client, queueDxn?.toString()]);\n\n useEffect(() => {\n void queue?.refresh();\n }, [queue]);\n\n useEffect(() => {\n let timeout: NodeJS.Timeout;\n mountedRef.current = true;\n\n const poll = () => {\n if (!mountedRef.current) {\n return;\n }\n\n void queue?.refresh().finally(() => {\n if (mountedRef.current && options.pollInterval) {\n timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));\n }\n });\n };\n\n if (options.pollInterval) {\n poll();\n }\n\n return () => {\n mountedRef.current = false;\n clearTimeout(timeout);\n };\n }, [queue, options.pollInterval]);\n\n return queue;\n};\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 { type SpaceId } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';\nimport { useSpace } from './useSpaces';\n\n// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.\n// When initially joining a space that is all that is returned.\nexport const useSpaceInvitations = (spaceId?: SpaceId | PublicKey): CancellableInvitationObservable[] => {\n const space = useSpace(spaceId);\n return useMulticastObservable(space?.invitations ?? MulticastObservable.empty()) ?? [];\n};\n\n// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.\n// When initially joining a space that is all that is returned.\nexport const useSpaceInvitation = (spaceId?: SpaceId | PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceId);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type SpaceProperties, SpaceState } from '@dxos/client/echo';\nimport { type Key, type Obj } from '@dxos/echo';\nimport { type ObjectUpdateCallback, useObject } from '@dxos/echo-react';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { useSpace } from './useSpaces';\n\n/**\n * Subscribe to a space's properties with reactive updates.\n * Returns undefined if the space is undefined or not ready yet.\n * Automatically waits for the space to be ready before returning properties.\n *\n * @param spaceId - The space ID to get properties from (can be undefined).\n * @returns A tuple of [snapshot, updateCallback] or [undefined, no-op] if not ready.\n */\nexport const useSpaceProperties = (\n spaceId: Key.SpaceId | undefined,\n): [Obj.Snapshot<SpaceProperties> | undefined, ObjectUpdateCallback<SpaceProperties>] => {\n const space = useSpace(spaceId);\n const spaceState = useMulticastObservable(space?.state ?? MulticastObservable.empty());\n const properties = spaceState === SpaceState.SPACE_READY ? space?.properties : undefined;\n return useObject(properties);\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>(null);\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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PeerSyncState, type Space, type SpaceSyncStateMap } from '@dxos/client/echo';\nimport { Context } from '@dxos/context';\nimport { type SpaceId } from '@dxos/keys';\nimport { EdgeService } from '@dxos/protocols';\nimport { compositeKey } from '@dxos/util';\n\nimport { useClient } from '../client';\n\nconst isEdgePeerId = (peerId: string, spaceId: SpaceId) =>\n peerId.startsWith(compositeKey(EdgeService.AUTOMERGE_REPLICATOR, spaceId));\n\n/**\n * Hook Subscribes to sync state for each space.\n */\nexport const useSyncState = (): SpaceSyncStateMap => {\n const client = useClient();\n const [spaceState, setSpaceState] = useState<SpaceSyncStateMap>({});\n\n useEffect(() => {\n const ctx = new Context();\n const createSubscriptions = (spaces: Space[]) => {\n for (const space of spaces) {\n if (spaceState[space.id]) {\n continue;\n }\n\n ctx.onDispose(\n space.internal.db.subscribeToSyncState(ctx, ({ peers = [] }) => {\n const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));\n if (syncState) {\n setSpaceState((spaceState) => ({ ...spaceState, [space.id]: syncState }));\n }\n }),\n );\n }\n };\n\n createSubscriptions(client.spaces.get());\n client.spaces.subscribe((spaces) => {\n createSubscriptions(spaces);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [client]);\n\n return spaceState;\n};\n\n/**\n * Hook Subscribes to sync state for a single space.\n */\n// TODO(wittjosiah): Reconcile w/ useSyncState.\nexport const useSpaceSyncState = (space: Space): PeerSyncState | undefined => {\n const [spaceState, setSpaceState] = useState<PeerSyncState>();\n\n useEffect(() => {\n const ctx = new Context();\n space.internal.db.subscribeToSyncState(ctx, ({ peers = [] }) => {\n const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));\n if (syncState) {\n setSpaceState(syncState);\n }\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [space]);\n\n return spaceState;\n};\n"],
5
- "mappings": "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",
6
- "names": ["MulticastObservable", "PublicKey", "HaloSpaceMember", "useMulticastObservable", "PublicKey", "SpaceState", "useMulticastObservable", "useSpace", "spaceId", "client", "useClient", "spaces", "useMulticastObservable", "undefined", "find", "space", "PublicKey", "key", "equals", "id", "useDatabase", "db", "useSpaces", "all", "filter", "state", "get", "SpaceState", "SPACE_READY", "useMembers", "spaceKey", "spaces", "useSpaces", "all", "space", "find", "PublicKey", "key", "equals", "id", "undefined", "members", "useMulticastObservable", "MulticastObservable", "empty", "filter", "member", "role", "HaloSpaceMember", "Role", "REMOVED", "useEffect", "useMemo", "useRef", "raise", "MIN_POLL_INTERVAL", "useQueue", "queueDxn", "options", "client", "useClient", "mountedRef", "useRef", "queue", "useMemo", "undefined", "spaceId", "asQueueDXN", "raise", "TypeError", "spaces", "get", "queues", "toString", "useEffect", "refresh", "timeout", "current", "poll", "finally", "pollInterval", "setTimeout", "Math", "max", "clearTimeout", "useMemo", "MulticastObservable", "useMulticastObservable", "useSpaceInvitations", "spaceId", "space", "useSpace", "useMulticastObservable", "invitations", "MulticastObservable", "empty", "useSpaceInvitation", "invitationId", "invitation", "useMemo", "find", "get", "useInvitationStatus", "MulticastObservable", "SpaceState", "useObject", "useMulticastObservable", "useSpaceProperties", "spaceId", "space", "useSpace", "spaceState", "useMulticastObservable", "state", "MulticastObservable", "empty", "properties", "SpaceState", "SPACE_READY", "undefined", "useObject", "useEffect", "useRef", "createSubscription", "useSubscription", "cb", "selection", "callbackRef", "current", "subscriptionRef", "unsubscribe", "update", "useEffect", "useState", "Context", "EdgeService", "compositeKey", "isEdgePeerId", "spaceState", "setSpaceState", "useEffect", "Context", "createSubscriptions", "space", "spaces", "id", "onDispose", "syncState", "client", "internal", "peers", "find", "state"]
3
+ "sources": ["../../../../src/echo/index.ts", "../../../../src/echo/useMembers.ts", "../../../../src/echo/useSpaces.ts", "../../../../src/echo/useSpaceInvitations.ts", "../../../../src/echo/useSpaceProperties.ts", "../../../../src/echo/useSubscription.ts", "../../../../src/echo/useSyncState.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\nexport * from '@dxos/echo-react';\n\nexport * from './useMembers';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSpaceProperties';\nexport * from './useSubscription';\nexport * from './useSyncState';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { PublicKey, type PublicKeyLike } from '@dxos/client';\nimport { HaloSpaceMember, type SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKeyLike | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey\n ? spaces.find((space) => (spaceKey instanceof PublicKey ? space.key.equals(spaceKey) : space.id === spaceKey))\n : 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 { PublicKey } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { type SpaceId } from '@dxos/keys';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its id.\n * The space is not guaranteed to be in the ready state.\n * Returns undefined if no id is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceId the id of the space to look for.\n */\n// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.\n// When initially joining a space that is all that is returned.\nexport const useSpace = (spaceId?: SpaceId | PublicKey): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n if (!spaceId) {\n return undefined;\n }\n\n return spaces.find((space) => {\n if (spaceId instanceof PublicKey) {\n return space.key.equals(spaceId);\n }\n\n return space.id === spaceId;\n });\n};\n\n/**\n * Get a Space database by the id of the space.\n * The space is not guaranteed to be in the ready state.\n * Returns undefined if no id is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceId the id of the space to look for.\n * @deprecated Use useSpace.\n */\nexport const useDatabase = (spaceId?: SpaceId): Space['db'] | undefined => {\n const space = useSpace(spaceId);\n return space?.db;\n};\n\nexport type UseSpacesProps = {\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 }: UseSpacesProps = {}): 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.SPACE_READY);\n};\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 { type SpaceId } from '@dxos/keys';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';\nimport { useSpace } from './useSpaces';\n\n// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.\n// When initially joining a space that is all that is returned.\nexport const useSpaceInvitations = (spaceId?: SpaceId | PublicKey): CancellableInvitationObservable[] => {\n const space = useSpace(spaceId);\n return useMulticastObservable(space?.invitations ?? MulticastObservable.empty()) ?? [];\n};\n\n// TODO(wittjosiah): Currently unable to remove `PublicKey` from this api.\n// When initially joining a space that is all that is returned.\nexport const useSpaceInvitation = (spaceId?: SpaceId | PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceId);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type SpaceProperties, SpaceState } from '@dxos/client/echo';\nimport { type Key, type Obj } from '@dxos/echo';\nimport { type ObjectUpdateCallback, useObject } from '@dxos/echo-react';\nimport { useMulticastObservable } from '@dxos/react-hooks';\n\nimport { useSpace } from './useSpaces';\n\n/**\n * Subscribe to a space's properties with reactive updates.\n * Returns undefined if the space is undefined or not ready yet.\n * Automatically waits for the space to be ready before returning properties.\n *\n * @param spaceId - The space ID to get properties from (can be undefined).\n * @returns A tuple of [snapshot, updateCallback] or [undefined, no-op] if not ready.\n */\nexport const useSpaceProperties = (\n spaceId: Key.SpaceId | undefined,\n): [Obj.Snapshot<SpaceProperties> | undefined, ObjectUpdateCallback<SpaceProperties>] => {\n const space = useSpace(spaceId);\n const spaceState = useMulticastObservable(space?.state ?? MulticastObservable.empty());\n const properties = spaceState === SpaceState.SPACE_READY ? space?.properties : undefined;\n return useObject(properties);\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>(null);\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", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PeerSyncState, type Space, type SpaceSyncStateMap } from '@dxos/client/echo';\nimport { Context } from '@dxos/context';\nimport { type SpaceId } from '@dxos/keys';\nimport { EdgeService } from '@dxos/protocols';\nimport { compositeKey } from '@dxos/util';\n\nimport { useClient } from '../client';\n\nconst isEdgePeerId = (peerId: string, spaceId: SpaceId) =>\n peerId.startsWith(compositeKey(EdgeService.AUTOMERGE_REPLICATOR, spaceId));\n\n/**\n * Hook Subscribes to sync state for each space.\n */\nexport const useSyncState = (): SpaceSyncStateMap => {\n const client = useClient();\n const [spaceState, setSpaceState] = useState<SpaceSyncStateMap>({});\n\n useEffect(() => {\n const ctx = new Context();\n const createSubscriptions = (spaces: Space[]) => {\n for (const space of spaces) {\n if (spaceState[space.id]) {\n continue;\n }\n\n ctx.onDispose(\n space.internal.db.subscribeToSyncState(ctx, ({ peers = [] }) => {\n const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));\n if (syncState) {\n setSpaceState((spaceState) => ({ ...spaceState, [space.id]: syncState }));\n }\n }),\n );\n }\n };\n\n createSubscriptions(client.spaces.get());\n client.spaces.subscribe((spaces) => {\n createSubscriptions(spaces);\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [client]);\n\n return spaceState;\n};\n\n/**\n * Hook Subscribes to sync state for a single space.\n */\n// TODO(wittjosiah): Reconcile w/ useSyncState.\nexport const useSpaceSyncState = (space: Space): PeerSyncState | undefined => {\n const [spaceState, setSpaceState] = useState<PeerSyncState>();\n\n useEffect(() => {\n const ctx = new Context();\n space.internal.db.subscribeToSyncState(ctx, ({ peers = [] }) => {\n const syncState = peers.find((state) => isEdgePeerId(state.peerId, space.id));\n if (syncState) {\n setSpaceState(syncState);\n }\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [space]);\n\n return spaceState;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["MulticastObservable", "PublicKey", "HaloSpaceMember", "useMulticastObservable", "PublicKey", "SpaceState", "useMulticastObservable", "useSpace", "spaceId", "client", "useClient", "spaces", "useMulticastObservable", "undefined", "find", "space", "PublicKey", "key", "equals", "id", "useDatabase", "db", "useSpaces", "all", "filter", "state", "get", "SpaceState", "SPACE_READY", "useMembers", "spaceKey", "spaces", "useSpaces", "all", "space", "find", "PublicKey", "key", "equals", "id", "undefined", "members", "useMulticastObservable", "MulticastObservable", "empty", "filter", "member", "role", "HaloSpaceMember", "Role", "REMOVED", "useMemo", "MulticastObservable", "useMulticastObservable", "useSpaceInvitations", "spaceId", "space", "useSpace", "useMulticastObservable", "invitations", "MulticastObservable", "empty", "useSpaceInvitation", "invitationId", "invitation", "useMemo", "find", "get", "useInvitationStatus", "MulticastObservable", "SpaceState", "useObject", "useMulticastObservable", "useSpaceProperties", "spaceId", "space", "useSpace", "spaceState", "useMulticastObservable", "state", "MulticastObservable", "empty", "properties", "SpaceState", "SPACE_READY", "undefined", "useObject", "useEffect", "useRef", "createSubscription", "useSubscription", "cb", "selection", "callbackRef", "current", "subscriptionRef", "unsubscribe", "update", "useEffect", "useState", "Context", "EdgeService", "compositeKey", "isEdgePeerId", "spaceState", "setSpaceState", "useEffect", "Context", "createSubscriptions", "space", "spaces", "id", "onDispose", "syncState", "client", "internal", "peers", "find", "state"]
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"src/client/AgentHostingProvider.tsx":{"bytes":6817,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/banner.ts":{"bytes":3744,"imports":[],"format":"esm"},"src/client/context.ts":{"bytes":1194,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/client/ClientProvider.tsx":{"bytes":15846,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/banner.ts","kind":"import-statement","original":"../banner"},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"}],"format":"esm"},"src/client/useClient.ts":{"bytes":1556,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/context.ts","kind":"import-statement","original":"../client/context"}],"format":"esm"},"src/client/useClientStatus.ts":{"bytes":1872,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/client/useConfig.ts":{"bytes":1657,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"}],"format":"esm"},"src/client/useShell.ts":{"bytes":2242,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/useClient.ts","kind":"import-statement","original":"./useClient"}],"format":"esm"},"src/client/useStatus.ts":{"bytes":1377,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"}],"format":"esm"},"src/client/index.ts":{"bytes":1067,"imports":[{"path":"src/client/AgentHostingProvider.tsx","kind":"import-statement","original":"./AgentHostingProvider"},{"path":"src/client/ClientProvider.tsx","kind":"import-statement","original":"./ClientProvider"},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"},{"path":"src/client/useClient.ts","kind":"import-statement","original":"./useClient"},{"path":"src/client/useClientStatus.ts","kind":"import-statement","original":"./useClientStatus"},{"path":"src/client/useConfig.ts","kind":"import-statement","original":"./useConfig"},{"path":"src/client/useShell.ts","kind":"import-statement","original":"./useShell"},{"path":"src/client/useStatus.ts","kind":"import-statement","original":"./useStatus"}],"format":"esm"},"src/devtools/useDevtools.ts":{"bytes":1305,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/devtools/useStream.ts":{"bytes":2683,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/devtools/index.ts":{"bytes":595,"imports":[{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"src/devtools/useDevtools.ts","kind":"import-statement","original":"./useDevtools"},{"path":"src/devtools/useStream.ts","kind":"import-statement","original":"./useStream"}],"format":"esm"},"src/echo/useSpaces.ts":{"bytes":6243,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/echo/useMembers.ts":{"bytes":3380,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"src/echo/useQueue.ts":{"bytes":5981,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/invitations/useInvitationStatus.ts":{"bytes":20307,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/invitations/index.ts":{"bytes":1198,"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"src/invitations/useInvitationStatus.ts","kind":"import-statement","original":"./useInvitationStatus"}],"format":"esm"},"src/echo/useSpaceInvitations.ts":{"bytes":3953,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/invitations/index.ts","kind":"import-statement","original":"../invitations"},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"src/echo/useSpaceProperties.ts":{"bytes":3500,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"src/echo/useSubscription.ts":{"bytes":3440,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true}],"format":"esm"},"src/echo/useSyncState.ts":{"bytes":7888,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/echo/index.ts":{"bytes":1212,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"src/echo/useMembers.ts","kind":"import-statement","original":"./useMembers"},{"path":"src/echo/useQueue.ts","kind":"import-statement","original":"./useQueue"},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"src/echo/useSpaceInvitations.ts","kind":"import-statement","original":"./useSpaceInvitations"},{"path":"src/echo/useSpaceProperties.ts","kind":"import-statement","original":"./useSpaceProperties"},{"path":"src/echo/useSubscription.ts","kind":"import-statement","original":"./useSubscription"},{"path":"src/echo/useSyncState.ts","kind":"import-statement","original":"./useSyncState"}],"format":"esm"},"src/halo/useContacts.ts":{"bytes":1618,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useCredentials.ts":{"bytes":1250,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useDevices.ts":{"bytes":1202,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useHaloInvitations.ts":{"bytes":2626,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"src/halo/useIdentity.ts":{"bytes":1488,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useKeyStore.ts":{"bytes":4446,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/halo/index.ts":{"bytes":1365,"imports":[{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"src/halo/useContacts.ts","kind":"import-statement","original":"./useContacts"},{"path":"src/halo/useCredentials.ts","kind":"import-statement","original":"./useCredentials"},{"path":"src/halo/useDevices.ts","kind":"import-statement","original":"./useDevices"},{"path":"src/halo/useHaloInvitations.ts","kind":"import-statement","original":"./useHaloInvitations"},{"path":"src/halo/useIdentity.ts","kind":"import-statement","original":"./useIdentity"},{"path":"src/halo/useKeyStore.ts","kind":"import-statement","original":"./useKeyStore"}],"format":"esm"},"src/index.ts":{"bytes":680,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"./client"}],"format":"esm"},"src/mesh/useNetworkStatus.ts":{"bytes":1408,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/mesh/index.ts":{"bytes":507,"imports":[{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"src/mesh/useNetworkStatus.ts","kind":"import-statement","original":"./useNetworkStatus"}],"format":"esm"},"src/testing/context.tsx":{"bytes":1541,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/testing/ClientRepeater.tsx":{"bytes":10388,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/testing/withClientProvider.tsx":{"bytes":17937,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"src/testing/context.tsx","kind":"import-statement","original":"./context"}],"format":"esm"},"src/testing/index.ts":{"bytes":709,"imports":[{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"src/testing/context.tsx","kind":"import-statement","original":"./context"},{"path":"src/testing/ClientRepeater.tsx","kind":"import-statement","original":"./ClientRepeater"},{"path":"src/testing/withClientProvider.tsx","kind":"import-statement","original":"./withClientProvider"}],"format":"esm"},"src/worker.ts":{"bytes":401,"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/lib/node-esm/devtools/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2197},"dist/lib/node-esm/devtools/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["useDevtools","useStream"],"entryPoint":"src/devtools/index.ts","inputs":{"src/devtools/index.ts":{"bytesInOutput":39},"src/devtools/useDevtools.ts":{"bytesInOutput":195},"src/devtools/useStream.ts":{"bytesInOutput":631}},"bytes":1204},"dist/lib/node-esm/echo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17735},"dist/lib/node-esm/echo/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-RQJPEHDY.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["useDatabase","useMembers","useQueue","useSpace","useSpaceInvitation","useSpaceInvitations","useSpaceProperties","useSpaceSyncState","useSpaces","useSubscription","useSyncState"],"entryPoint":"src/echo/index.ts","inputs":{"src/echo/index.ts":{"bytesInOutput":69},"src/echo/useMembers.ts":{"bytesInOutput":659},"src/echo/useSpaces.ts":{"bytesInOutput":781},"src/echo/useQueue.ts":{"bytesInOutput":1163},"src/echo/useSpaceInvitations.ts":{"bytesInOutput":673},"src/echo/useSpaceProperties.ts":{"bytesInOutput":563},"src/echo/useSubscription.ts":{"bytesInOutput":536},"src/echo/useSyncState.ts":{"bytesInOutput":1889}},"bytes":7067},"dist/lib/node-esm/halo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6966},"dist/lib/node-esm/halo/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-RQJPEHDY.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["Device","DeviceKind","DeviceType","KeyStore","useContacts","useCredentials","useDevices","useHaloInvitation","useHaloInvitations","useIdentity","useKeyStore"],"entryPoint":"src/halo/index.ts","inputs":{"src/halo/index.ts":{"bytesInOutput":68},"src/halo/useContacts.ts":{"bytesInOutput":174},"src/halo/useCredentials.ts":{"bytesInOutput":208},"src/halo/useDevices.ts":{"bytesInOutput":200},"src/halo/useHaloInvitations.ts":{"bytesInOutput":521},"src/halo/useIdentity.ts":{"bytesInOutput":202},"src/halo/useKeyStore.ts":{"bytesInOutput":937}},"bytes":2965},"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7139},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WL3Z5HOH.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["AgentHostingContext","AgentHostingProvider","ClientContext","ClientProvider","useAgentHostingClient","useClient","useClientStatus","useConfig","useMulticastObservable","useShell","useShellDisplay","useStatus"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":90},"src/client/AgentHostingProvider.tsx":{"bytesInOutput":1700},"src/client/useClientStatus.ts":{"bytesInOutput":383},"src/client/useConfig.ts":{"bytesInOutput":234},"src/client/useShell.ts":{"bytesInOutput":377},"src/client/useStatus.ts":{"bytesInOutput":238}},"bytes":3721},"dist/lib/node-esm/invitations/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/invitations/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-RQJPEHDY.mjs","kind":"import-statement"}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"entryPoint":"src/invitations/index.ts","inputs":{},"bytes":480},"dist/lib/node-esm/chunk-RQJPEHDY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10412},"dist/lib/node-esm/chunk-RQJPEHDY.mjs":{"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"inputs":{"src/invitations/index.ts":{"bytesInOutput":198},"src/invitations/useInvitationStatus.ts":{"bytesInOutput":4615}},"bytes":5221},"dist/lib/node-esm/mesh/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":937},"dist/lib/node-esm/mesh/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["useNetworkStatus"],"entryPoint":"src/mesh/index.ts","inputs":{"src/mesh/index.ts":{"bytesInOutput":35},"src/mesh/useNetworkStatus.ts":{"bytesInOutput":184}},"bytes":517},"dist/lib/node-esm/chunk-CUDKNAMV.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":808},"dist/lib/node-esm/chunk-CUDKNAMV.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["useClient"],"inputs":{"src/client/useClient.ts":{"bytesInOutput":211}},"bytes":456},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":15545},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-WL3Z5HOH.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["ClientRepeater","ClientStory","useClientStory","withClientProvider","withMultiClientProvider"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/index.ts":{"bytesInOutput":38},"src/testing/context.tsx":{"bytesInOutput":254},"src/testing/ClientRepeater.tsx":{"bytesInOutput":1851},"src/testing/withClientProvider.tsx":{"bytesInOutput":4257}},"bytes":6855},"dist/lib/node-esm/chunk-WL3Z5HOH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9978},"dist/lib/node-esm/chunk-WL3Z5HOH.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ClientProvider"],"inputs":{"src/client/ClientProvider.tsx":{"bytesInOutput":3513},"src/banner.ts":{"bytesInOutput":817}},"bytes":4638},"dist/lib/node-esm/chunk-WUTK2IJF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":696},"dist/lib/node-esm/chunk-WUTK2IJF.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true}],"exports":["ClientContext"],"inputs":{"src/client/context.ts":{"bytesInOutput":82}},"bytes":273},"dist/lib/node-esm/worker.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":208},"dist/lib/node-esm/worker.mjs":{"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/worker.ts","inputs":{"src/worker.ts":{"bytesInOutput":37}},"bytes":183}}}
1
+ {"inputs":{"src/client/AgentHostingProvider.tsx":{"bytes":6817,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/banner.ts":{"bytes":3744,"imports":[],"format":"esm"},"src/client/context.ts":{"bytes":1194,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/client/ClientProvider.tsx":{"bytes":15846,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/banner.ts","kind":"import-statement","original":"../banner"},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"}],"format":"esm"},"src/client/useClient.ts":{"bytes":1556,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/context.ts","kind":"import-statement","original":"../client/context"}],"format":"esm"},"src/client/useClientStatus.ts":{"bytes":1872,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/client/useConfig.ts":{"bytes":1657,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"}],"format":"esm"},"src/client/useShell.ts":{"bytes":2242,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"src/client/useClient.ts","kind":"import-statement","original":"./useClient"}],"format":"esm"},"src/client/useStatus.ts":{"bytes":1377,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"}],"format":"esm"},"src/client/index.ts":{"bytes":1067,"imports":[{"path":"src/client/AgentHostingProvider.tsx","kind":"import-statement","original":"./AgentHostingProvider"},{"path":"src/client/ClientProvider.tsx","kind":"import-statement","original":"./ClientProvider"},{"path":"src/client/context.ts","kind":"import-statement","original":"./context"},{"path":"src/client/useClient.ts","kind":"import-statement","original":"./useClient"},{"path":"src/client/useClientStatus.ts","kind":"import-statement","original":"./useClientStatus"},{"path":"src/client/useConfig.ts","kind":"import-statement","original":"./useConfig"},{"path":"src/client/useShell.ts","kind":"import-statement","original":"./useShell"},{"path":"src/client/useStatus.ts","kind":"import-statement","original":"./useStatus"}],"format":"esm"},"src/devtools/useDevtools.ts":{"bytes":1305,"imports":[{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/devtools/useStream.ts":{"bytes":2683,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/devtools/index.ts":{"bytes":595,"imports":[{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"src/devtools/useDevtools.ts","kind":"import-statement","original":"./useDevtools"},{"path":"src/devtools/useStream.ts","kind":"import-statement","original":"./useStream"}],"format":"esm"},"src/echo/useSpaces.ts":{"bytes":6283,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/echo/useMembers.ts":{"bytes":3380,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"src/invitations/useInvitationStatus.ts":{"bytes":20307,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"src/invitations/index.ts":{"bytes":1198,"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"src/invitations/useInvitationStatus.ts","kind":"import-statement","original":"./useInvitationStatus"}],"format":"esm"},"src/echo/useSpaceInvitations.ts":{"bytes":3945,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/invitations/index.ts","kind":"import-statement","original":"../invitations"},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"src/echo/useSpaceProperties.ts":{"bytes":3500,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"src/echo/useSubscription.ts":{"bytes":3440,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true}],"format":"esm"},"src/echo/useSyncState.ts":{"bytes":7888,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/echo/index.ts":{"bytes":1124,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"src/echo/useMembers.ts","kind":"import-statement","original":"./useMembers"},{"path":"src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"src/echo/useSpaceInvitations.ts","kind":"import-statement","original":"./useSpaceInvitations"},{"path":"src/echo/useSpaceProperties.ts","kind":"import-statement","original":"./useSpaceProperties"},{"path":"src/echo/useSubscription.ts","kind":"import-statement","original":"./useSubscription"},{"path":"src/echo/useSyncState.ts","kind":"import-statement","original":"./useSyncState"}],"format":"esm"},"src/halo/useContacts.ts":{"bytes":1618,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useCredentials.ts":{"bytes":1250,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useDevices.ts":{"bytes":1202,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useHaloInvitations.ts":{"bytes":2626,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"src/halo/useIdentity.ts":{"bytes":1488,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/halo/useKeyStore.ts":{"bytes":4446,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"src/halo/index.ts":{"bytes":1365,"imports":[{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"src/halo/useContacts.ts","kind":"import-statement","original":"./useContacts"},{"path":"src/halo/useCredentials.ts","kind":"import-statement","original":"./useCredentials"},{"path":"src/halo/useDevices.ts","kind":"import-statement","original":"./useDevices"},{"path":"src/halo/useHaloInvitations.ts","kind":"import-statement","original":"./useHaloInvitations"},{"path":"src/halo/useIdentity.ts","kind":"import-statement","original":"./useIdentity"},{"path":"src/halo/useKeyStore.ts","kind":"import-statement","original":"./useKeyStore"}],"format":"esm"},"src/index.ts":{"bytes":680,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"./client"}],"format":"esm"},"src/mesh/useNetworkStatus.ts":{"bytes":1408,"imports":[{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/mesh/index.ts":{"bytes":507,"imports":[{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"src/mesh/useNetworkStatus.ts","kind":"import-statement","original":"./useNetworkStatus"}],"format":"esm"},"src/testing/context.tsx":{"bytes":1581,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"format":"esm"},"src/testing/ClientRepeater.tsx":{"bytes":10392,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"src/testing/withClientProvider.tsx":{"bytes":17977,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"src/testing/context.tsx","kind":"import-statement","original":"./context"}],"format":"esm"},"src/testing/index.ts":{"bytes":709,"imports":[{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"src/testing/context.tsx","kind":"import-statement","original":"./context"},{"path":"src/testing/ClientRepeater.tsx","kind":"import-statement","original":"./ClientRepeater"},{"path":"src/testing/withClientProvider.tsx","kind":"import-statement","original":"./withClientProvider"}],"format":"esm"},"src/worker.ts":{"bytes":401,"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"dist/lib/node-esm/devtools/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2197},"dist/lib/node-esm/devtools/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["useDevtools","useStream"],"entryPoint":"src/devtools/index.ts","inputs":{"src/devtools/index.ts":{"bytesInOutput":39},"src/devtools/useDevtools.ts":{"bytesInOutput":195},"src/devtools/useStream.ts":{"bytesInOutput":631}},"bytes":1204},"dist/lib/node-esm/echo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14534},"dist/lib/node-esm/echo/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-RQJPEHDY.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/protocols","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["useDatabase","useMembers","useSpace","useSpaceInvitation","useSpaceInvitations","useSpaceProperties","useSpaceSyncState","useSpaces","useSubscription","useSyncState"],"entryPoint":"src/echo/index.ts","inputs":{"src/echo/index.ts":{"bytesInOutput":69},"src/echo/useMembers.ts":{"bytesInOutput":659},"src/echo/useSpaces.ts":{"bytesInOutput":781},"src/echo/useSpaceInvitations.ts":{"bytesInOutput":660},"src/echo/useSpaceProperties.ts":{"bytesInOutput":563},"src/echo/useSubscription.ts":{"bytesInOutput":508},"src/echo/useSyncState.ts":{"bytesInOutput":1889}},"bytes":5826},"dist/lib/node-esm/halo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6966},"dist/lib/node-esm/halo/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-RQJPEHDY.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["Device","DeviceKind","DeviceType","KeyStore","useContacts","useCredentials","useDevices","useHaloInvitation","useHaloInvitations","useIdentity","useKeyStore"],"entryPoint":"src/halo/index.ts","inputs":{"src/halo/index.ts":{"bytesInOutput":68},"src/halo/useContacts.ts":{"bytesInOutput":174},"src/halo/useCredentials.ts":{"bytesInOutput":208},"src/halo/useDevices.ts":{"bytesInOutput":200},"src/halo/useHaloInvitations.ts":{"bytesInOutput":521},"src/halo/useIdentity.ts":{"bytesInOutput":202},"src/halo/useKeyStore.ts":{"bytesInOutput":937}},"bytes":2965},"dist/lib/node-esm/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7139},"dist/lib/node-esm/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WL3Z5HOH.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["AgentHostingContext","AgentHostingProvider","ClientContext","ClientProvider","useAgentHostingClient","useClient","useClientStatus","useConfig","useMulticastObservable","useShell","useShellDisplay","useStatus"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":90},"src/client/AgentHostingProvider.tsx":{"bytesInOutput":1700},"src/client/useClientStatus.ts":{"bytesInOutput":383},"src/client/useConfig.ts":{"bytesInOutput":234},"src/client/useShell.ts":{"bytesInOutput":377},"src/client/useStatus.ts":{"bytesInOutput":238}},"bytes":3721},"dist/lib/node-esm/invitations/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/node-esm/invitations/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-RQJPEHDY.mjs","kind":"import-statement"}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"entryPoint":"src/invitations/index.ts","inputs":{},"bytes":480},"dist/lib/node-esm/chunk-RQJPEHDY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10412},"dist/lib/node-esm/chunk-RQJPEHDY.mjs":{"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"inputs":{"src/invitations/index.ts":{"bytesInOutput":198},"src/invitations/useInvitationStatus.ts":{"bytesInOutput":4615}},"bytes":5221},"dist/lib/node-esm/mesh/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":937},"dist/lib/node-esm/mesh/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-CUDKNAMV.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true}],"exports":["useNetworkStatus"],"entryPoint":"src/mesh/index.ts","inputs":{"src/mesh/index.ts":{"bytesInOutput":35},"src/mesh/useNetworkStatus.ts":{"bytesInOutput":184}},"bytes":517},"dist/lib/node-esm/chunk-CUDKNAMV.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":808},"dist/lib/node-esm/chunk-CUDKNAMV.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true}],"exports":["useClient"],"inputs":{"src/client/useClient.ts":{"bytesInOutput":211}},"bytes":456},"dist/lib/node-esm/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":15609},"dist/lib/node-esm/testing/index.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-WL3Z5HOH.mjs","kind":"import-statement"},{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true}],"exports":["ClientRepeater","ClientStory","useClientStory","withClientProvider","withMultiClientProvider"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/index.ts":{"bytesInOutput":38},"src/testing/context.tsx":{"bytesInOutput":254},"src/testing/ClientRepeater.tsx":{"bytesInOutput":1851},"src/testing/withClientProvider.tsx":{"bytesInOutput":4257}},"bytes":6855},"dist/lib/node-esm/chunk-WL3Z5HOH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9978},"dist/lib/node-esm/chunk-WL3Z5HOH.mjs":{"imports":[{"path":"dist/lib/node-esm/chunk-WUTK2IJF.mjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-hooks","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["ClientProvider"],"inputs":{"src/client/ClientProvider.tsx":{"bytesInOutput":3513},"src/banner.ts":{"bytesInOutput":817}},"bytes":4638},"dist/lib/node-esm/chunk-WUTK2IJF.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":696},"dist/lib/node-esm/chunk-WUTK2IJF.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true}],"exports":["ClientContext"],"inputs":{"src/client/context.ts":{"bytesInOutput":82}},"bytes":273},"dist/lib/node-esm/worker.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":208},"dist/lib/node-esm/worker.mjs":{"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"exports":[],"entryPoint":"src/worker.ts","inputs":{"src/worker.ts":{"bytesInOutput":37}},"bytes":183}}}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/testing/index.ts", "../../../../src/testing/context.tsx", "../../../../src/testing/ClientRepeater.tsx", "../../../../src/testing/withClientProvider.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/testing';\n\nexport * from './context';\nexport * from './ClientRepeater';\nexport * from './withClientProvider';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type Space, type SpaceId } from '@dxos/client/echo';\nimport { raise } from '@dxos/debug';\n\nexport type ClientStory = {\n index?: number;\n spaceId?: SpaceId;\n space?: Space;\n};\n\nexport const ClientStory = createContext<ClientStory | undefined>(undefined);\n\nexport const useClientStory = (): ClientStory => {\n return useContext(ClientStory) ?? raise(new Error('Missing ClientStory'));\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport React, { type FC, useRef, useState } from 'react';\n\nimport { Client } from '@dxos/client';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { type Type } from '@dxos/echo';\nimport { random } from '@dxos/random';\nimport { useAsyncEffect } from '@dxos/react-hooks';\n\nimport { ClientProvider } from '../client';\nimport { type SpaceId } from '../echo';\nimport { type WithClientProviderProps } from './withClientProvider';\n\nexport type ClientRepeatedComponentProps = { id: number; count: number; spaceId?: SpaceId };\n\nexport type ClientRepeaterControlsProps = { clients: Client[] };\n\n// TODO(burdon): Reconcile with ClientProviderProps.\nexport type ClientRepeaterProps<P extends ClientRepeatedComponentProps> = {\n className?: string;\n component: FC<ClientRepeatedComponentProps>;\n controls?: FC<ClientRepeaterControlsProps>;\n count?: number;\n clients?: Client[];\n types?: Type.AnyObj[];\n args?: Omit<P, 'id' | 'count'>;\n} & Pick<WithClientProviderProps, 'createIdentity' | 'createSpace' | 'onCreateSpace'>;\n\n/**\n * Utility component for Storybook stories which sets up clients for n peers.\n * The `Component` property is rendered n times, once for each peer.\n * @deprecated use `withClientProvider`.\n */\n// TODO(burdon): To discuss: evolve ClientRepeater with optional decorator that uses it.\n// NOTE: This is specifically not a storybook decorator because it broke stories as a decorator.\n// This seems primarily due to the fact that it required top-level await for the clients to initialize.\n// Storybook seemed to handle it alright, but Chromatic had a lot of trouble with it.\n// There was also a question of whether or not calling the story function multiple times was a good idea.\nexport const ClientRepeater = <P extends ClientRepeatedComponentProps>(props: ClientRepeaterProps<P>) => {\n const {\n component: Component,\n controls: Controls,\n count = 1,\n types,\n createIdentity,\n createSpace,\n onCreateSpace,\n } = props;\n\n const [clients, setClients] = useState(props.clients ?? []);\n const [spaceId, setSpaceId] = useState<SpaceId>();\n\n const testBuilder = useRef(new TestBuilder());\n useAsyncEffect(async () => {\n const clients = [...Array(count)].map(\n (_) => new Client({ services: testBuilder.current.createLocalClientServices(), types }),\n );\n\n await Promise.all(clients.map((client) => client.initialize()));\n if (createIdentity || createSpace) {\n await Promise.all(clients.map((client) => client.halo.createIdentity()));\n }\n\n if (createSpace) {\n const client = clients[0];\n const space = await client.spaces.create({ name: random.commerce.productName() });\n setSpaceId(space.id);\n await onCreateSpace?.({ client, space }, {});\n await Promise.all(clients.slice(1).flatMap((client) => performInvitation({ host: space, guest: client.spaces })));\n }\n\n setClients(clients);\n }, []);\n\n if (clients.length === 0) {\n return null;\n }\n\n return (\n <>\n {Controls && <Controls clients={clients} />}\n {clients.map((client, index) => (\n <ClientProvider key={index} client={client}>\n <Component id={index} count={clients.length} spaceId={spaceId} {...{ ...props.args }} />\n </ClientProvider>\n ))}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Decorator, type StoryContext } from '@storybook/react';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Trigger } from '@dxos/async';\nimport { type Client } from '@dxos/client';\nimport { type Space, type SpaceId } from '@dxos/client/echo';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { log } from '@dxos/log';\nimport { ErrorBoundary } from '@dxos/react-ui';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { ClientProvider, type ClientProviderProps } from '../client';\nimport { ClientStory } from './context';\n\ntype InitializeProps = {\n createIdentity?: boolean;\n createSpace?: boolean;\n onInitialized?: (client: Client) => MaybePromise<void>;\n onCreateIdentity?: (props: { client: Client }, context: StoryContext | any) => MaybePromise<void>;\n // NOTE: context must be untyped until ClientRepeater is removed.\n onCreateSpace?: (props: { client: Client; space: Space }, context: StoryContext | any) => MaybePromise<void>;\n};\n\n/**\n * Initialize client, identity and first space.\n */\nconst initializeClient = async (\n client: Client,\n { createIdentity, createSpace, onCreateIdentity, onCreateSpace, onInitialized }: InitializeProps,\n context: StoryContext,\n): Promise<ClientStory> => {\n await onInitialized?.(client);\n\n if (createIdentity || createSpace) {\n if (!client.halo.identity.get()) {\n await client.halo.createIdentity();\n await onCreateIdentity?.({ client }, context);\n }\n }\n\n let space: Space | undefined;\n if (createSpace) {\n space = await client.spaces.create({ name: 'Test Space' });\n await space.waitUntilReady(); // Is this required?\n await onCreateSpace?.({ client, space }, context);\n }\n\n return { space, spaceId: space?.id };\n};\n\nexport type WithClientProviderProps = InitializeProps & Omit<ClientProviderProps, 'onInitialized'>;\n\n/**\n * Decorator that provides the client context.\n */\nexport const withClientProvider = ({\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n ...props\n}: WithClientProviderProps = {}): Decorator => {\n return (Story, context) => {\n const [data, setData] = useState<ClientStory>({});\n const handleInitialized = async (client: Client) => {\n const data = await initializeClient(\n client,\n {\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n },\n context,\n );\n\n setData(data);\n };\n\n return (\n <ErrorBoundary name='client-provider'>\n <ClientProvider onInitialized={handleInitialized} {...props}>\n <ClientStory.Provider value={data}>\n <Story />\n </ClientStory.Provider>\n </ClientProvider>\n </ErrorBoundary>\n );\n };\n};\n\n// TODO(burdon): Implement context per client for context.\n// TODO(burdon): Callback once all invitations have completed.\n// TODO(burdon): Delay/jitter for creation of other clients.\nexport type WithMultiClientProviderProps = InitializeProps &\n Omit<ClientProviderProps, 'onInitialized'> & { numClients?: number };\n\n/**\n * Decorator that creates a scaffold for multiple clients.\n * Orchestrates invitations between a randomly selected host and the remaining clients.\n */\nexport const withMultiClientProvider = ({\n numClients = 2,\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n ...props\n}: WithMultiClientProviderProps): Decorator => {\n return (Story, context) => {\n const spaceReady = useRef(new Trigger<Space | undefined>());\n const [spaceId, setSpaceId] = useState<SpaceId>();\n\n const clients = useMemo(() => {\n const buidler = new TestBuilder();\n return Array.from({ length: numClients }).map(() => {\n return {\n services: buidler.createLocalClientServices(),\n };\n });\n }, [numClients]);\n\n // Handle invitations.\n // NOTE: The zeroth client isn't necessarily the first to be initialized.\n const handleInitialized = useCallback(async (client: Client, index: number) => {\n if (index === 0) {\n // Initialize host.\n const { space } = await initializeClient(\n client,\n {\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n },\n context,\n );\n\n log.info('inviting', { index, spaceId: space?.id });\n setSpaceId(space?.id);\n spaceReady.current.wake(space);\n } else {\n // Initialize guest.\n await initializeClient(client, { createIdentity, onInitialized }, context);\n\n log.info('waiting', { index });\n const space = await spaceReady.current.wait();\n if (space) {\n log.info('joining', { index, spaceId: space.id });\n await Promise.all(\n performInvitation({\n host: space,\n guest: client.spaces,\n }),\n );\n }\n }\n }, []);\n\n return (\n <div className='absolute inset-0 grid grid-flow-col auto-cols-fr gap-4 overflow-hidden'>\n {clients.map((client, index) => (\n <ClientProvider\n key={index}\n services={client.services}\n onInitialized={(client) => handleInitialized(client, index)}\n {...props}\n >\n <ClientStory.Provider value={{ index, spaceId }}>\n <ErrorBoundary name='client-provider'>\n <Story />\n </ErrorBoundary>\n </ClientStory.Provider>\n </ClientProvider>\n ))}\n </div>\n );\n };\n};\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/testing';\n\nexport * from './context';\nexport * from './ClientRepeater';\nexport * from './withClientProvider';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { createContext, useContext } from 'react';\n\nimport { type Space } from '@dxos/client/echo';\nimport { raise } from '@dxos/debug';\nimport { type SpaceId } from '@dxos/keys';\n\nexport type ClientStory = {\n index?: number;\n spaceId?: SpaceId;\n space?: Space;\n};\n\nexport const ClientStory = createContext<ClientStory | undefined>(undefined);\n\nexport const useClientStory = (): ClientStory => {\n return useContext(ClientStory) ?? raise(new Error('Missing ClientStory'));\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport React, { type FC, useRef, useState } from 'react';\n\nimport { Client } from '@dxos/client';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { type Type } from '@dxos/echo';\nimport { type SpaceId } from '@dxos/keys';\nimport { random } from '@dxos/random';\nimport { useAsyncEffect } from '@dxos/react-hooks';\n\nimport { ClientProvider } from '../client';\nimport { type WithClientProviderProps } from './withClientProvider';\n\nexport type ClientRepeatedComponentProps = { id: number; count: number; spaceId?: SpaceId };\n\nexport type ClientRepeaterControlsProps = { clients: Client[] };\n\n// TODO(burdon): Reconcile with ClientProviderProps.\nexport type ClientRepeaterProps<P extends ClientRepeatedComponentProps> = {\n className?: string;\n component: FC<ClientRepeatedComponentProps>;\n controls?: FC<ClientRepeaterControlsProps>;\n count?: number;\n clients?: Client[];\n types?: Type.AnyObj[];\n args?: Omit<P, 'id' | 'count'>;\n} & Pick<WithClientProviderProps, 'createIdentity' | 'createSpace' | 'onCreateSpace'>;\n\n/**\n * Utility component for Storybook stories which sets up clients for n peers.\n * The `Component` property is rendered n times, once for each peer.\n * @deprecated use `withClientProvider`.\n */\n// TODO(burdon): To discuss: evolve ClientRepeater with optional decorator that uses it.\n// NOTE: This is specifically not a storybook decorator because it broke stories as a decorator.\n// This seems primarily due to the fact that it required top-level await for the clients to initialize.\n// Storybook seemed to handle it alright, but Chromatic had a lot of trouble with it.\n// There was also a question of whether or not calling the story function multiple times was a good idea.\nexport const ClientRepeater = <P extends ClientRepeatedComponentProps>(props: ClientRepeaterProps<P>) => {\n const {\n component: Component,\n controls: Controls,\n count = 1,\n types,\n createIdentity,\n createSpace,\n onCreateSpace,\n } = props;\n\n const [clients, setClients] = useState(props.clients ?? []);\n const [spaceId, setSpaceId] = useState<SpaceId>();\n\n const testBuilder = useRef(new TestBuilder());\n useAsyncEffect(async () => {\n const clients = [...Array(count)].map(\n (_) => new Client({ services: testBuilder.current.createLocalClientServices(), types }),\n );\n\n await Promise.all(clients.map((client) => client.initialize()));\n if (createIdentity || createSpace) {\n await Promise.all(clients.map((client) => client.halo.createIdentity()));\n }\n\n if (createSpace) {\n const client = clients[0];\n const space = await client.spaces.create({ name: random.commerce.productName() });\n setSpaceId(space.id);\n await onCreateSpace?.({ client, space }, {});\n await Promise.all(clients.slice(1).flatMap((client) => performInvitation({ host: space, guest: client.spaces })));\n }\n\n setClients(clients);\n }, []);\n\n if (clients.length === 0) {\n return null;\n }\n\n return (\n <>\n {Controls && <Controls clients={clients} />}\n {clients.map((client, index) => (\n <ClientProvider key={index} client={client}>\n <Component id={index} count={clients.length} spaceId={spaceId} {...{ ...props.args }} />\n </ClientProvider>\n ))}\n </>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Decorator, type StoryContext } from '@storybook/react';\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Trigger } from '@dxos/async';\nimport { type Client } from '@dxos/client';\nimport { type Space } from '@dxos/client/echo';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { type SpaceId } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ErrorBoundary } from '@dxos/react-ui';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { ClientProvider, type ClientProviderProps } from '../client';\nimport { ClientStory } from './context';\n\ntype InitializeProps = {\n createIdentity?: boolean;\n createSpace?: boolean;\n onInitialized?: (client: Client) => MaybePromise<void>;\n onCreateIdentity?: (props: { client: Client }, context: StoryContext | any) => MaybePromise<void>;\n // NOTE: context must be untyped until ClientRepeater is removed.\n onCreateSpace?: (props: { client: Client; space: Space }, context: StoryContext | any) => MaybePromise<void>;\n};\n\n/**\n * Initialize client, identity and first space.\n */\nconst initializeClient = async (\n client: Client,\n { createIdentity, createSpace, onCreateIdentity, onCreateSpace, onInitialized }: InitializeProps,\n context: StoryContext,\n): Promise<ClientStory> => {\n await onInitialized?.(client);\n\n if (createIdentity || createSpace) {\n if (!client.halo.identity.get()) {\n await client.halo.createIdentity();\n await onCreateIdentity?.({ client }, context);\n }\n }\n\n let space: Space | undefined;\n if (createSpace) {\n space = await client.spaces.create({ name: 'Test Space' });\n await space.waitUntilReady(); // Is this required?\n await onCreateSpace?.({ client, space }, context);\n }\n\n return { space, spaceId: space?.id };\n};\n\nexport type WithClientProviderProps = InitializeProps & Omit<ClientProviderProps, 'onInitialized'>;\n\n/**\n * Decorator that provides the client context.\n */\nexport const withClientProvider = ({\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n ...props\n}: WithClientProviderProps = {}): Decorator => {\n return (Story, context) => {\n const [data, setData] = useState<ClientStory>({});\n const handleInitialized = async (client: Client) => {\n const data = await initializeClient(\n client,\n {\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n },\n context,\n );\n\n setData(data);\n };\n\n return (\n <ErrorBoundary name='client-provider'>\n <ClientProvider onInitialized={handleInitialized} {...props}>\n <ClientStory.Provider value={data}>\n <Story />\n </ClientStory.Provider>\n </ClientProvider>\n </ErrorBoundary>\n );\n };\n};\n\n// TODO(burdon): Implement context per client for context.\n// TODO(burdon): Callback once all invitations have completed.\n// TODO(burdon): Delay/jitter for creation of other clients.\nexport type WithMultiClientProviderProps = InitializeProps &\n Omit<ClientProviderProps, 'onInitialized'> & { numClients?: number };\n\n/**\n * Decorator that creates a scaffold for multiple clients.\n * Orchestrates invitations between a randomly selected host and the remaining clients.\n */\nexport const withMultiClientProvider = ({\n numClients = 2,\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n ...props\n}: WithMultiClientProviderProps): Decorator => {\n return (Story, context) => {\n const spaceReady = useRef(new Trigger<Space | undefined>());\n const [spaceId, setSpaceId] = useState<SpaceId>();\n\n const clients = useMemo(() => {\n const buidler = new TestBuilder();\n return Array.from({ length: numClients }).map(() => {\n return {\n services: buidler.createLocalClientServices(),\n };\n });\n }, [numClients]);\n\n // Handle invitations.\n // NOTE: The zeroth client isn't necessarily the first to be initialized.\n const handleInitialized = useCallback(async (client: Client, index: number) => {\n if (index === 0) {\n // Initialize host.\n const { space } = await initializeClient(\n client,\n {\n createIdentity,\n createSpace,\n onCreateSpace,\n onCreateIdentity,\n onInitialized,\n },\n context,\n );\n\n log.info('inviting', { index, spaceId: space?.id });\n setSpaceId(space?.id);\n spaceReady.current.wake(space);\n } else {\n // Initialize guest.\n await initializeClient(client, { createIdentity, onInitialized }, context);\n\n log.info('waiting', { index });\n const space = await spaceReady.current.wait();\n if (space) {\n log.info('joining', { index, spaceId: space.id });\n await Promise.all(\n performInvitation({\n host: space,\n guest: client.spaces,\n }),\n );\n }\n }\n }, []);\n\n return (\n <div className='absolute inset-0 grid grid-flow-col auto-cols-fr gap-4 overflow-hidden'>\n {clients.map((client, index) => (\n <ClientProvider\n key={index}\n services={client.services}\n onInitialized={(client) => handleInitialized(client, index)}\n {...props}\n >\n <ClientStory.Provider value={{ index, spaceId }}>\n <ErrorBoundary name='client-provider'>\n <Story />\n </ErrorBoundary>\n </ClientStory.Provider>\n </ClientProvider>\n ))}\n </div>\n );\n };\n};\n"],
5
+ "mappings": "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",
6
6
  "names": ["createContext", "useContext", "raise", "ClientStory", "undefined", "useClientStory", "Error", "React", "useRef", "useState", "Client", "TestBuilder", "performInvitation", "random", "useAsyncEffect", "ClientRepeater", "props", "component", "Component", "controls", "Controls", "count", "types", "createIdentity", "createSpace", "onCreateSpace", "clients", "setClients", "useState", "spaceId", "setSpaceId", "testBuilder", "useRef", "TestBuilder", "useAsyncEffect", "Array", "map", "_", "Client", "services", "current", "createLocalClientServices", "Promise", "all", "client", "initialize", "halo", "space", "spaces", "create", "name", "random", "commerce", "productName", "id", "slice", "flatMap", "performInvitation", "host", "guest", "length", "index", "ClientProvider", "key", "args", "React", "useCallback", "useMemo", "useRef", "useState", "Trigger", "TestBuilder", "performInvitation", "log", "ErrorBoundary", "createIdentity", "createSpace", "identity", "halo", "onCreateIdentity", "client", "context", "space", "spaceId", "data", "useState", "handleInitialized", "initializeClient", "onCreateSpace", "onInitialized", "setData", "React", "ClientProvider", "value", "Story", "spaceReady", "Trigger", "setSpaceId", "clients", "useMemo", "buidler", "TestBuilder", "Array", "length", "numClients", "services", "info", "index", "id", "current", "log", "Promise", "performInvitation", "guest", "spaces", "className", "ClientStory", "Provider", "name"]
7
7
  }
@@ -1,7 +1,6 @@
1
1
  export * from '@dxos/client/echo';
2
2
  export * from '@dxos/echo-react';
3
3
  export * from './useMembers';
4
- export * from './useQueue';
5
4
  export * from './useSpaces';
6
5
  export * from './useSpaceInvitations';
7
6
  export * from './useSpaceProperties';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/echo/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/echo/index.ts"],"names":[],"mappings":"AAIA,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAEjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type PublicKey } from '@dxos/client';
2
- import { type SpaceId } from '@dxos/client/echo';
2
+ import { type SpaceId } from '@dxos/keys';
3
3
  import { type CancellableInvitationObservable } from '../invitations';
4
4
  export declare const useSpaceInvitations: (spaceId?: SpaceId | PublicKey) => CancellableInvitationObservable[];
5
5
  export declare const useSpaceInvitation: (spaceId?: SpaceId | PublicKey, invitationId?: string) => import("../invitations").InvitationStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"useSpaceInvitations.d.ts","sourceRoot":"","sources":["../../../../src/echo/useSpaceInvitations.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,KAAK,+BAA+B,EAAuB,MAAM,gBAAgB,CAAC;AAK3F,eAAO,MAAM,mBAAmB,aAAc,OAAO,GAAG,SAAS,KAAG,+BAA+B,EAGlG,CAAC;AAIF,eAAO,MAAM,kBAAkB,aAAc,OAAO,GAAG,SAAS,iBAAiB,MAAM,8CAOtF,CAAC"}
1
+ {"version":3,"file":"useSpaceInvitations.d.ts","sourceRoot":"","sources":["../../../../src/echo/useSpaceInvitations.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAE,KAAK,+BAA+B,EAAuB,MAAM,gBAAgB,CAAC;AAK3F,eAAO,MAAM,mBAAmB,aAAc,OAAO,GAAG,SAAS,KAAG,+BAA+B,EAGlG,CAAC;AAIF,eAAO,MAAM,kBAAkB,aAAc,OAAO,GAAG,SAAS,iBAAiB,MAAM,8CAOtF,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { PublicKey } from '@dxos/client';
2
- import { type Space, type SpaceId } from '@dxos/client/echo';
2
+ import { type Space } from '@dxos/client/echo';
3
+ import { type SpaceId } from '@dxos/keys';
3
4
  /**
4
5
  * Get a specific Space using its id.
5
6
  * The space is not guaranteed to be in the ready state.
@@ -1 +1 @@
1
- {"version":3,"file":"useSpaces.d.ts","sourceRoot":"","sources":["../../../../src/echo/useSpaces.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAc,MAAM,mBAAmB,CAAC;AAKzE;;;;;;;GAOG;AAGH,eAAO,MAAM,QAAQ,aAAc,OAAO,GAAG,SAAS,KAAG,KAAK,GAAG,SAchE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,aAAc,OAAO,KAAG,KAAK,CAAC,IAAI,CAAC,GAAG,SAG7D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,aAAqB,cAAc,KAAQ,KAAK,EAMrE,CAAC"}
1
+ {"version":3,"file":"useSpaces.d.ts","sourceRoot":"","sources":["../../../../src/echo/useSpaces.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,KAAK,KAAK,EAAc,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAK1C;;;;;;;GAOG;AAGH,eAAO,MAAM,QAAQ,aAAc,OAAO,GAAG,SAAS,KAAG,KAAK,GAAG,SAchE,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,aAAc,OAAO,KAAG,KAAK,CAAC,IAAI,CAAC,GAAG,SAG7D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,aAAqB,cAAc,KAAQ,KAAK,EAMrE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import React, { type FC } from 'react';
2
2
  import { Client } from '@dxos/client';
3
3
  import { type Type } from '@dxos/echo';
4
- import { type SpaceId } from '../echo';
4
+ import { type SpaceId } from '@dxos/keys';
5
5
  import { type WithClientProviderProps } from './withClientProvider';
6
6
  export type ClientRepeatedComponentProps = {
7
7
  id: number;
@@ -1 +1 @@
1
- {"version":3,"file":"ClientRepeater.d.ts","sourceRoot":"","sources":["../../../../src/testing/ClientRepeater.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAoB,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAKvC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,MAAM,4BAA4B,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5F,MAAM,MAAM,2BAA2B,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAGhE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,4BAA4B,IAAI;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;CAChC,GAAG,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,GAAG,aAAa,GAAG,eAAe,CAAC,CAAC;AAEtF;;;;GAIG;AAMH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,4BAA4B,SAAS,mBAAmB,CAAC,CAAC,CAAC,6BAkDnG,CAAC"}
1
+ {"version":3,"file":"ClientRepeater.d.ts","sourceRoot":"","sources":["../../../../src/testing/ClientRepeater.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,EAAE,KAAK,EAAE,EAAoB,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAK1C,OAAO,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,MAAM,4BAA4B,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE5F,MAAM,MAAM,2BAA2B,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAGhE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,4BAA4B,IAAI;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,EAAE,CAAC,4BAA4B,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,EAAE,CAAC,2BAA2B,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;CAChC,GAAG,IAAI,CAAC,uBAAuB,EAAE,gBAAgB,GAAG,aAAa,GAAG,eAAe,CAAC,CAAC;AAEtF;;;;GAIG;AAMH,eAAO,MAAM,cAAc,GAAI,CAAC,SAAS,4BAA4B,SAAS,mBAAmB,CAAC,CAAC,CAAC,6BAkDnG,CAAC"}
@@ -1,4 +1,5 @@
1
- import { type Space, type SpaceId } from '@dxos/client/echo';
1
+ import { type Space } from '@dxos/client/echo';
2
+ import { type SpaceId } from '@dxos/keys';
2
3
  export type ClientStory = {
3
4
  index?: number;
4
5
  spaceId?: SpaceId;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/testing/context.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG7D,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,WAAW,kDAAoD,CAAC;AAE7E,eAAO,MAAM,cAAc,QAAO,WAEjC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/testing/context.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,WAAW,kDAAoD,CAAC;AAE7E,eAAO,MAAM,cAAc,QAAO,WAEjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"withClientProvider.d.ts","sourceRoot":"","sources":["../../../../src/testing/withClientProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,KAAK,EAAgB,MAAM,mBAAmB,CAAC;AAI7D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrE,KAAK,eAAe,GAAG;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,YAAY,GAAG,GAAG,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAElG,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,OAAO,EAAE,YAAY,GAAG,GAAG,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9G,CAAC;AA6BF,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAEnG;;GAEG;AACH,eAAO,MAAM,kBAAkB,+FAO5B,uBAAuB,KAAQ,SA6BjC,CAAC;AAKF,MAAM,MAAM,4BAA4B,GAAG,eAAe,GACxD,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,0GAQjC,4BAA4B,KAAG,SAuEjC,CAAC"}
1
+ {"version":3,"file":"withClientProvider.d.ts","sourceRoot":"","sources":["../../../../src/testing/withClientProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK/C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,EAAkB,KAAK,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGrE,KAAK,eAAe,GAAG;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACvD,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,EAAE,YAAY,GAAG,GAAG,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IAElG,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,OAAO,EAAE,YAAY,GAAG,GAAG,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;CAC9G,CAAC;AA6BF,MAAM,MAAM,uBAAuB,GAAG,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;AAEnG;;GAEG;AACH,eAAO,MAAM,kBAAkB,+FAO5B,uBAAuB,KAAQ,SA6BjC,CAAC;AAKF,MAAM,MAAM,4BAA4B,GAAG,eAAe,GACxD,IAAI,CAAC,mBAAmB,EAAE,eAAe,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,eAAO,MAAM,uBAAuB,0GAQjC,4BAA4B,KAAG,SAuEjC,CAAC"}