@dxos/react-client 0.4.10-main.697c7a4 → 0.4.10-main.6f3f81d

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 (29) hide show
  1. package/dist/lib/browser/{chunk-Y64VSVTU.mjs → chunk-BQ4BAP42.mjs} +4 -3
  2. package/dist/lib/browser/chunk-BQ4BAP42.mjs.map +7 -0
  3. package/dist/lib/browser/echo/index.mjs +2 -2
  4. package/dist/lib/browser/echo/index.mjs.map +3 -3
  5. package/dist/lib/browser/halo/index.mjs +1 -1
  6. package/dist/lib/browser/invitations/index.mjs +1 -1
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/testing/index.mjs +2 -2
  9. package/dist/lib/browser/testing/index.mjs.map +3 -3
  10. package/dist/lib/node/{chunk-PNDYOCJA.cjs → chunk-X5URYLUS.cjs} +7 -6
  11. package/dist/lib/node/chunk-X5URYLUS.cjs.map +7 -0
  12. package/dist/lib/node/echo/index.cjs +3 -3
  13. package/dist/lib/node/echo/index.cjs.map +3 -3
  14. package/dist/lib/node/halo/index.cjs +2 -2
  15. package/dist/lib/node/invitations/index.cjs +7 -7
  16. package/dist/lib/node/invitations/index.cjs.map +1 -1
  17. package/dist/lib/node/meta.json +1 -1
  18. package/dist/lib/node/testing/index.cjs +2 -2
  19. package/dist/lib/node/testing/index.cjs.map +3 -3
  20. package/dist/types/src/invitations/useInvitationStatus.d.ts +1 -0
  21. package/dist/types/src/invitations/useInvitationStatus.d.ts.map +1 -1
  22. package/dist/types/src/testing/ClientRepeater.d.ts +2 -2
  23. package/dist/types/src/testing/ClientRepeater.d.ts.map +1 -1
  24. package/package.json +17 -17
  25. package/src/echo/useQuery.ts +5 -1
  26. package/src/invitations/useInvitationStatus.ts +3 -0
  27. package/src/testing/ClientRepeater.tsx +4 -4
  28. package/dist/lib/browser/chunk-Y64VSVTU.mjs.map +0 -7
  29. package/dist/lib/node/chunk-PNDYOCJA.cjs.map +0 -7
@@ -12,7 +12,7 @@ var useInvitationStatus = (initialObservable) => {
12
12
  action
13
13
  }, {
14
14
  F: __dxlog_file,
15
- L: 79,
15
+ L: 81,
16
16
  S: void 0,
17
17
  C: (f, a) => f(...a)
18
18
  });
@@ -104,7 +104,7 @@ var useInvitationStatus = (initialObservable) => {
104
104
  authCode
105
105
  }, {
106
106
  F: __dxlog_file,
107
- L: 163,
107
+ L: 165,
108
108
  S: void 0,
109
109
  C: (f, a) => f(...a)
110
110
  });
@@ -126,6 +126,7 @@ var useInvitationStatus = (initialObservable) => {
126
126
  connect,
127
127
  authenticate,
128
128
  id: invitation?.invitationId,
129
+ multiUse: invitation?.multiUse,
129
130
  invitationCode: invitation ? InvitationEncoder.encode(invitation) : void 0,
130
131
  authCode: invitation?.authCode,
131
132
  authMethod: invitation?.authMethod,
@@ -148,4 +149,4 @@ export {
148
149
  Invitation2 as Invitation,
149
150
  InvitationsProxy
150
151
  };
151
- //# sourceMappingURL=chunk-Y64VSVTU.mjs.map
152
+ //# sourceMappingURL=chunk-BQ4BAP42.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/invitations/index.ts", "../../../src/invitations/useInvitationStatus.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n InvitationEncoder,\n Invitation,\n type Invitations,\n InvitationsProxy,\n} from '@dxos/client/invitations';\n\nexport * from './useInvitationStatus';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useReducer, type Reducer, useMemo, useCallback, useEffect } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport {\n type AuthenticatingInvitationObservable,\n type CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n} from '@dxos/client/invitations';\nimport { log } from '@dxos/log';\n\nexport type InvitationResult = {\n spaceKey: PublicKey | null;\n identityKey: PublicKey | null;\n swarmKey: PublicKey | null;\n target: string | null;\n};\n\ninterface InvitationReducerState {\n status: Invitation.State; // TODO(burdon): Rename state.\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n observable?: CancellableInvitationObservable | AuthenticatingInvitationObservable;\n id?: string;\n invitationCode?: string;\n authCode?: string;\n multiUse?: boolean;\n}\n\nexport type InvitationAction =\n | {\n status:\n | Invitation.State.INIT\n | Invitation.State.CONNECTED\n | Invitation.State.READY_FOR_AUTHENTICATION\n | Invitation.State.AUTHENTICATING;\n }\n | {\n status: Invitation.State.CONNECTING;\n observable: CancellableInvitationObservable;\n }\n | {\n status: Invitation.State.SUCCESS;\n result: InvitationResult;\n }\n | {\n status: Invitation.State.CANCELLED | Invitation.State.TIMEOUT;\n haltedAt: Invitation.State;\n }\n | {\n status: Invitation.State.ERROR;\n error?: Error;\n haltedAt: Invitation.State;\n };\n\nexport type InvitationStatus = {\n id?: string;\n invitationCode?: string;\n authCode?: string;\n authMethod?: Invitation.AuthMethod;\n type?: Invitation.Type;\n status: Invitation.State;\n haltedAt?: Invitation.State;\n multiUse?: boolean;\n result: InvitationResult;\n error?: number;\n cancel(): void;\n // TODO(wittjosiah): Remove?\n connect(observable: CancellableInvitationObservable): void;\n authenticate(authCode: string): Promise<void>;\n};\n\nexport const useInvitationStatus = (initialObservable?: CancellableInvitationObservable): InvitationStatus => {\n const [state, dispatch] = useReducer<Reducer<InvitationReducerState, InvitationAction>, null>(\n (prev, action) => {\n log('useInvitationStatus', { action });\n return {\n ...prev,\n // TODO(burdon): State.\n status: action.status,\n // `invitationObservable`, `secret`, and `result` is persisted between the status-actions that set them.\n result: action.status === Invitation.State.SUCCESS ? action.result : prev.result,\n // `error` gets set each time we enter the error state\n ...(action.status === Invitation.State.ERROR && { error: action.error }),\n // `haltedAt` gets set on only the first error/cancelled/timeout action and reset on any others.\n ...((action.status === Invitation.State.ERROR ||\n action.status === Invitation.State.CANCELLED ||\n action.status === Invitation.State.TIMEOUT) && {\n haltedAt: typeof prev.haltedAt === 'undefined' ? action.haltedAt : prev.haltedAt,\n }),\n observable:\n action.status === Invitation.State.CONNECTING ? action.observable ?? prev.observable : prev.observable,\n } as InvitationReducerState;\n },\n null,\n (_arg: null) => {\n return {\n status: Invitation.State.INIT,\n result: { spaceKey: null, identityKey: null, swarmKey: null, target: null },\n observable: initialObservable,\n };\n },\n );\n\n // Handle unmount.\n\n useEffect(() => {\n const update = (invitation: Invitation) => {\n switch (invitation.state) {\n case Invitation.State.CONNECTED:\n case Invitation.State.READY_FOR_AUTHENTICATION:\n case Invitation.State.AUTHENTICATING: {\n dispatch({\n status: invitation.state,\n });\n break;\n }\n\n case Invitation.State.SUCCESS: {\n dispatch({\n status: invitation.state,\n result: {\n spaceKey: invitation.spaceKey || null,\n identityKey: invitation.identityKey || null,\n swarmKey: invitation.swarmKey || null,\n target: invitation.target || null,\n },\n });\n break;\n }\n\n case Invitation.State.CANCELLED:\n case Invitation.State.TIMEOUT: {\n dispatch({ status: invitation.state, haltedAt: state.status });\n break;\n }\n }\n };\n\n const subscription = state.observable?.subscribe(update, (err: Error) => {\n dispatch({ status: Invitation.State.ERROR, error: err, haltedAt: state.status });\n });\n\n const currentState = state.observable?.get();\n if (currentState) {\n update(currentState);\n }\n\n return () => subscription?.unsubscribe();\n }, [state.observable, state.status]);\n\n // Return memoized callbacks & values.\n\n const connect = useCallback((observable: CancellableInvitationObservable) => {\n dispatch({ status: Invitation.State.CONNECTING, observable });\n }, []);\n\n const authenticate = useCallback(\n (authCode: string) => {\n log('authenticating...', { authCode });\n return (state.observable as AuthenticatingInvitationObservable).authenticate(authCode);\n },\n [state.observable],\n );\n\n const cancel = useCallback(async () => state.observable?.cancel(), [state.observable]);\n\n return useMemo(() => {\n const invitation = state.observable?.get();\n const result = {\n status: state.status,\n haltedAt: state.haltedAt,\n result: state.result,\n error: state.error,\n cancel,\n connect,\n authenticate,\n id: invitation?.invitationId,\n multiUse: invitation?.multiUse,\n invitationCode: invitation ? InvitationEncoder.encode(invitation) : undefined,\n authCode: invitation?.authCode,\n authMethod: invitation?.authMethod,\n type: invitation?.type,\n };\n\n return result;\n }, [state, cancel, connect, authenticate]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["AuthenticatingInvitationObservable", "CancellableInvitationObservable", "InvitationEncoder", "Invitation", "InvitationsProxy", "useReducer", "useMemo", "useCallback", "useEffect", "Invitation", "InvitationEncoder", "log", "useInvitationStatus", "initialObservable", "state", "dispatch", "prev", "action", "status", "result", "State", "SUCCESS", "ERROR", "error", "CANCELLED", "TIMEOUT", "haltedAt", "observable", "CONNECTING", "_arg", "INIT", "spaceKey", "identityKey", "swarmKey", "target", "update", "invitation", "CONNECTED", "READY_FOR_AUTHENTICATION", "AUTHENTICATING", "subscription", "subscribe", "err", "currentState", "get", "unsubscribe", "connect", "authenticate", "authCode", "cancel", "id", "invitationId", "multiUse", "invitationCode", "encode", "undefined", "authMethod", "type"]
7
+ }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useInvitationStatus
3
- } from "../chunk-Y64VSVTU.mjs";
3
+ } from "../chunk-BQ4BAP42.mjs";
4
4
  import {
5
5
  useClient
6
6
  } from "../chunk-6SW7V4VI.mjs";
@@ -67,7 +67,7 @@ var useQuery = (space, filter, options, deps) => {
67
67
  ]);
68
68
  return useSyncExternalStore((cb) => query?.subscribe?.(cb) ?? cb, () => query?.objects) ?? [];
69
69
  };
70
- var filterToDepsArray = (filter) => Object.entries(filter ?? {}).flat();
70
+ var filterToDepsArray = (filter) => Object.entries(filter ?? {}).flat(10).map((x) => typeof x === "function" || typeof x === "object" ? null : x);
71
71
 
72
72
  // packages/sdk/react-client/src/echo/useSpaceInvitations.ts
73
73
  import { useMemo as useMemo2, useSyncExternalStore as useSyncExternalStore2 } from "react";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/echo/index.ts", "../../../../src/echo/useMembers.ts", "../../../../src/echo/useSpaces.ts", "../../../../src/echo/useQuery.ts", "../../../../src/echo/useSpaceInvitations.ts", "../../../../src/echo/useSubscription.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport type { QueryOptions, OpaqueEchoObject, Query, FilterSource, Space } from '@dxos/client/echo';\n\ntype UseQuery = {\n <T extends OpaqueEchoObject>(space?: Space, filter?: FilterSource<T>, options?: QueryOptions, deps?: any[]): T[];\n};\n\n/**\n * Create subscription.\n */\n// TODO(burdon): Support typed operator filters (e.g., Note.filter(note => ...)).\nexport const useQuery: UseQuery = <T extends OpaqueEchoObject>(\n space?: Space,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n) => {\n const query = useMemo(\n () => space?.db.query(filter, options) as Query<T> | undefined,\n [space?.db, ...(typeof filter === 'function' ? [] : filterToDepsArray(filter)), ...(deps ?? [])],\n );\n\n // https://beta.reactjs.org/reference/react/useSyncExternalStore\n return (\n useSyncExternalStore<T[] | undefined>(\n (cb) => query?.subscribe?.(cb) ?? cb,\n () => query?.objects,\n ) ?? []\n );\n};\n\nconst filterToDepsArray = (filter?: FilterSource<any>) => Object.entries(filter ?? {}).flat();\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceProxy } from '@dxos/client/echo';\n\nimport { useSpace } from './useSpaces';\nimport { useInvitationStatus } from '../invitations';\n\nexport const useSpaceInvitations = (spaceKey?: PublicKey) => {\n const space = useSpace(spaceKey);\n const invitations =\n useSyncExternalStore(\n (listener) => {\n if (!(space instanceof SpaceProxy)) {\n return () => {};\n }\n\n const subscription = space.invitations.subscribe(() => listener());\n return () => subscription.unsubscribe();\n },\n () => space?.invitations.get(),\n ) ?? [];\n\n return invitations;\n};\n\nexport const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceKey);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useRef } from 'react';\n\nimport { type Selection, type SubscriptionHandle, createSubscription } from '@dxos/client/echo';\n\n/**\n * Create reactive selection.\n * Calls the callback when the selection changes and during the first render.\n */\n// TODO(wittjosiah): Is this still needed with signals reactivity? If not, remove or update jsdoc with usage info.\nexport const useSubscription = (cb: () => void, selection: Selection) => {\n // Make sure that the callback is always the one from the latest render.\n // Without this, we would always call the callback from the initial render,\n // which might contain stale data.\n const callbackRef = useRef(cb);\n callbackRef.current = cb;\n\n const subscriptionRef = useRef<SubscriptionHandle>();\n\n useEffect(() => {\n subscriptionRef.current = createSubscription(() => {\n callbackRef.current();\n });\n\n return () => subscriptionRef.current?.unsubscribe();\n }, []);\n\n subscriptionRef.current?.update(selection);\n return subscriptionRef.current;\n};\n"],
5
- "mappings": ";;;;;;;;AAIA,cAAc;;;ACAd,SAASA,2BAA2B;AAEpC,SAASC,mBAAmB;AAC5B,SAASC,0BAAAA,+BAA8B;;;ACHvC,SAASC,WAAWC,gBAAgB;AAGpC,SAAqBC,kBAAkB;AACvC,SAASC,8BAA8B;AAYhC,IAAMC,WAAW,CAACC,aAAAA;AACvB,QAAMC,SAASC,UAAAA;AACf,QAAMC,SAASC,uBAAgCH,OAAOE,MAAM;AAC5D,QAAM,CAACE,OAAOC,QAAAA,IAAYC,SAAS,KAAA;AAEnCC,YAAU,MAAA;AAER,QAAIR,UAAU;AACZ;IACF;AAEA,UAAMS,UAAUC,WAAW,YAAA;AACzB,YAAMT,OAAOE,OAAOQ,QAAQC,KAAI;AAChCN,eAAS,IAAA;IACX,CAAA;AAEA,WAAO,MAAMO,aAAaJ,OAAAA;EAC5B,GAAG;IAACR;IAAQD;GAAS;AAErB,MAAIA,UAAU;AACZ,WAAOG,OAAOW,KAAK,CAACC,UAAUA,MAAMC,IAAIC,OAAOjB,QAAAA,CAAAA;EACjD;AAEA,MAAIK,SAASJ,OAAOiB,KAAKC,SAASC,IAAG,GAAI;AACvC,WAAOnB,OAAOE,OAAOkB;EACvB;AACF;AAeO,IAAMC,YAAY,CAAC,EAAEC,MAAM,MAAK,IAAsB,CAAC,MAAC;AAC7D,QAAMtB,SAASC,UAAAA;AACf,QAAMC,SAASC,uBAAgCH,OAAOE,MAAM;AAG5D,SAAOA,OAAOqB,OAAO,CAACT,UAAUQ,OAAOR,MAAMU,MAAML,IAAG,MAAOM,WAAWC,KAAK;AAC/E;;;ADxDO,IAAMC,aAAa,CAACC,aAAAA;AAEzB,QAAMC,SAASC,UAAU;IAAEC,KAAK;EAAK,CAAA;AACrC,QAAMC,QAAQJ,WAAWC,OAAOI,KAAK,CAACD,WAAUA,OAAME,IAAIC,OAAOP,QAAAA,CAAAA,IAAaQ;AAG9E,QAAMC,UAAUC,wBAAuBN,OAAOK,WAAWE,oBAAoBC,MAAK,CAAA,KAAO,CAAA;AACzF,SAAOH,QAAQI,OAAO,CAACC,WAAWA,OAAOC,aAAaC,YAAYC,cAAcC,OAAO;AACzF;;;AEfA,SAASC,SAASC,4BAA4B;AAYvC,IAAMC,WAAqB,CAChCC,OACAC,QACAC,SACAC,SAAAA;AAEA,QAAMC,QAAQC,QACZ,MAAML,OAAOM,GAAGF,MAAMH,QAAQC,OAAAA,GAC9B;IAACF,OAAOM;OAAQ,OAAOL,WAAW,aAAa,CAAA,IAAKM,kBAAkBN,MAAAA;OAAcE,QAAQ,CAAA;GAAI;AAIlG,SACEK,qBACE,CAACC,OAAOL,OAAOM,YAAYD,EAAAA,KAAOA,IAClC,MAAML,OAAOO,OAAAA,KACV,CAAA;AAET;AAEA,IAAMJ,oBAAoB,CAACN,WAA+BW,OAAOC,QAAQZ,UAAU,CAAC,CAAA,EAAGa,KAAI;;;AChC3F,SAASC,WAAAA,UAASC,wBAAAA,6BAA4B;AAG9C,SAASC,kBAAkB;AAKpB,IAAMC,sBAAsB,CAACC,aAAAA;AAClC,QAAMC,QAAQC,SAASF,QAAAA;AACvB,QAAMG,cACJC,sBACE,CAACC,aAAAA;AACC,QAAI,EAAEJ,iBAAiBK,aAAa;AAClC,aAAO,MAAA;MAAO;IAChB;AAEA,UAAMC,eAAeN,MAAME,YAAYK,UAAU,MAAMH,SAAAA,CAAAA;AACvD,WAAO,MAAME,aAAaE,YAAW;EACvC,GACA,MAAMR,OAAOE,YAAYO,IAAAA,CAAAA,KACtB,CAAA;AAEP,SAAOP;AACT;AAEO,IAAMQ,qBAAqB,CAACX,UAAsBY,iBAAAA;AACvD,QAAMT,cAAcJ,oBAAoBC,QAAAA;AACxC,QAAMa,aAAaC,SACjB,MAAMX,YAAYY,KAAK,CAACF,gBAAeA,YAAWH,IAAG,EAAGE,iBAAiBA,YAAAA,GACzE;IAACT;GAAY;AAEf,SAAOa,oBAAoBH,UAAAA;AAC7B;;;ACjCA,SAASI,aAAAA,YAAWC,cAAc;AAElC,SAAkDC,0BAA0B;AAOrE,IAAMC,kBAAkB,CAACC,IAAgBC,cAAAA;AAI9C,QAAMC,cAAcC,OAAOH,EAAAA;AAC3BE,cAAYE,UAAUJ;AAEtB,QAAMK,kBAAkBF,OAAAA;AAExBG,EAAAA,WAAU,MAAA;AACRD,oBAAgBD,UAAUG,mBAAmB,MAAA;AAC3CL,kBAAYE,QAAO;IACrB,CAAA;AAEA,WAAO,MAAMC,gBAAgBD,SAASI,YAAAA;EACxC,GAAG,CAAA,CAAE;AAELH,kBAAgBD,SAASK,OAAOR,SAAAA;AAChC,SAAOI,gBAAgBD;AACzB;",
6
- "names": ["MulticastObservable", "SpaceMember", "useMulticastObservable", "useEffect", "useState", "SpaceState", "useMulticastObservable", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "spaceKey", "spaces", "useSpaces", "all", "space", "find", "key", "equals", "undefined", "members", "useMulticastObservable", "MulticastObservable", "empty", "filter", "member", "presence", "SpaceMember", "PresenceState", "REMOVED", "useMemo", "useSyncExternalStore", "useQuery", "space", "filter", "options", "deps", "query", "useMemo", "db", "filterToDepsArray", "useSyncExternalStore", "cb", "subscribe", "objects", "Object", "entries", "flat", "useMemo", "useSyncExternalStore", "SpaceProxy", "useSpaceInvitations", "spaceKey", "space", "useSpace", "invitations", "useSyncExternalStore", "listener", "SpaceProxy", "subscription", "subscribe", "unsubscribe", "get", "useSpaceInvitation", "invitationId", "invitation", "useMemo", "find", "useInvitationStatus", "useEffect", "useRef", "createSubscription", "useSubscription", "cb", "selection", "callbackRef", "useRef", "current", "subscriptionRef", "useEffect", "createSubscription", "unsubscribe", "update"]
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport type { QueryOptions, OpaqueEchoObject, Query, FilterSource, Space } from '@dxos/client/echo';\n\ntype UseQuery = {\n <T extends OpaqueEchoObject>(space?: Space, filter?: FilterSource<T>, options?: QueryOptions, deps?: any[]): T[];\n};\n\n/**\n * Create subscription.\n */\n// TODO(burdon): Support typed operator filters (e.g., Note.filter(note => ...)).\nexport const useQuery: UseQuery = <T extends OpaqueEchoObject>(\n space?: Space,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n) => {\n const query = useMemo(\n () => space?.db.query(filter, options) as Query<T> | undefined,\n [space?.db, ...(typeof filter === 'function' ? [] : filterToDepsArray(filter)), ...(deps ?? [])],\n );\n\n // https://beta.reactjs.org/reference/react/useSyncExternalStore\n return (\n useSyncExternalStore<T[] | undefined>(\n (cb) => query?.subscribe?.(cb) ?? cb,\n () => query?.objects,\n ) ?? []\n );\n};\n\n// TODO(dmaretskyi): Serialize the filter here instead.\nconst filterToDepsArray = (filter?: FilterSource<any>) =>\n Object.entries(filter ?? {})\n .flat(10)\n .map((x) => (typeof x === 'function' || typeof x === 'object' ? null : x));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceProxy } from '@dxos/client/echo';\n\nimport { useSpace } from './useSpaces';\nimport { useInvitationStatus } from '../invitations';\n\nexport const useSpaceInvitations = (spaceKey?: PublicKey) => {\n const space = useSpace(spaceKey);\n const invitations =\n useSyncExternalStore(\n (listener) => {\n if (!(space instanceof SpaceProxy)) {\n return () => {};\n }\n\n const subscription = space.invitations.subscribe(() => listener());\n return () => subscription.unsubscribe();\n },\n () => space?.invitations.get(),\n ) ?? [];\n\n return invitations;\n};\n\nexport const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceKey);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useRef } from 'react';\n\nimport { type Selection, type SubscriptionHandle, createSubscription } from '@dxos/client/echo';\n\n/**\n * Create reactive selection.\n * Calls the callback when the selection changes and during the first render.\n */\n// TODO(wittjosiah): Is this still needed with signals reactivity? If not, remove or update jsdoc with usage info.\nexport const useSubscription = (cb: () => void, selection: Selection) => {\n // Make sure that the callback is always the one from the latest render.\n // Without this, we would always call the callback from the initial render,\n // which might contain stale data.\n const callbackRef = useRef(cb);\n callbackRef.current = cb;\n\n const subscriptionRef = useRef<SubscriptionHandle>();\n\n useEffect(() => {\n subscriptionRef.current = createSubscription(() => {\n callbackRef.current();\n });\n\n return () => subscriptionRef.current?.unsubscribe();\n }, []);\n\n subscriptionRef.current?.update(selection);\n return subscriptionRef.current;\n};\n"],
5
+ "mappings": ";;;;;;;;AAIA,cAAc;;;ACAd,SAASA,2BAA2B;AAEpC,SAASC,mBAAmB;AAC5B,SAASC,0BAAAA,+BAA8B;;;ACHvC,SAASC,WAAWC,gBAAgB;AAGpC,SAAqBC,kBAAkB;AACvC,SAASC,8BAA8B;AAYhC,IAAMC,WAAW,CAACC,aAAAA;AACvB,QAAMC,SAASC,UAAAA;AACf,QAAMC,SAASC,uBAAgCH,OAAOE,MAAM;AAC5D,QAAM,CAACE,OAAOC,QAAAA,IAAYC,SAAS,KAAA;AAEnCC,YAAU,MAAA;AAER,QAAIR,UAAU;AACZ;IACF;AAEA,UAAMS,UAAUC,WAAW,YAAA;AACzB,YAAMT,OAAOE,OAAOQ,QAAQC,KAAI;AAChCN,eAAS,IAAA;IACX,CAAA;AAEA,WAAO,MAAMO,aAAaJ,OAAAA;EAC5B,GAAG;IAACR;IAAQD;GAAS;AAErB,MAAIA,UAAU;AACZ,WAAOG,OAAOW,KAAK,CAACC,UAAUA,MAAMC,IAAIC,OAAOjB,QAAAA,CAAAA;EACjD;AAEA,MAAIK,SAASJ,OAAOiB,KAAKC,SAASC,IAAG,GAAI;AACvC,WAAOnB,OAAOE,OAAOkB;EACvB;AACF;AAeO,IAAMC,YAAY,CAAC,EAAEC,MAAM,MAAK,IAAsB,CAAC,MAAC;AAC7D,QAAMtB,SAASC,UAAAA;AACf,QAAMC,SAASC,uBAAgCH,OAAOE,MAAM;AAG5D,SAAOA,OAAOqB,OAAO,CAACT,UAAUQ,OAAOR,MAAMU,MAAML,IAAG,MAAOM,WAAWC,KAAK;AAC/E;;;ADxDO,IAAMC,aAAa,CAACC,aAAAA;AAEzB,QAAMC,SAASC,UAAU;IAAEC,KAAK;EAAK,CAAA;AACrC,QAAMC,QAAQJ,WAAWC,OAAOI,KAAK,CAACD,WAAUA,OAAME,IAAIC,OAAOP,QAAAA,CAAAA,IAAaQ;AAG9E,QAAMC,UAAUC,wBAAuBN,OAAOK,WAAWE,oBAAoBC,MAAK,CAAA,KAAO,CAAA;AACzF,SAAOH,QAAQI,OAAO,CAACC,WAAWA,OAAOC,aAAaC,YAAYC,cAAcC,OAAO;AACzF;;;AEfA,SAASC,SAASC,4BAA4B;AAYvC,IAAMC,WAAqB,CAChCC,OACAC,QACAC,SACAC,SAAAA;AAEA,QAAMC,QAAQC,QACZ,MAAML,OAAOM,GAAGF,MAAMH,QAAQC,OAAAA,GAC9B;IAACF,OAAOM;OAAQ,OAAOL,WAAW,aAAa,CAAA,IAAKM,kBAAkBN,MAAAA;OAAcE,QAAQ,CAAA;GAAI;AAIlG,SACEK,qBACE,CAACC,OAAOL,OAAOM,YAAYD,EAAAA,KAAOA,IAClC,MAAML,OAAOO,OAAAA,KACV,CAAA;AAET;AAGA,IAAMJ,oBAAoB,CAACN,WACzBW,OAAOC,QAAQZ,UAAU,CAAC,CAAA,EACvBa,KAAK,EAAA,EACLC,IAAI,CAACC,MAAO,OAAOA,MAAM,cAAc,OAAOA,MAAM,WAAW,OAAOA,CAAAA;;;ACpC3E,SAASC,WAAAA,UAASC,wBAAAA,6BAA4B;AAG9C,SAASC,kBAAkB;AAKpB,IAAMC,sBAAsB,CAACC,aAAAA;AAClC,QAAMC,QAAQC,SAASF,QAAAA;AACvB,QAAMG,cACJC,sBACE,CAACC,aAAAA;AACC,QAAI,EAAEJ,iBAAiBK,aAAa;AAClC,aAAO,MAAA;MAAO;IAChB;AAEA,UAAMC,eAAeN,MAAME,YAAYK,UAAU,MAAMH,SAAAA,CAAAA;AACvD,WAAO,MAAME,aAAaE,YAAW;EACvC,GACA,MAAMR,OAAOE,YAAYO,IAAAA,CAAAA,KACtB,CAAA;AAEP,SAAOP;AACT;AAEO,IAAMQ,qBAAqB,CAACX,UAAsBY,iBAAAA;AACvD,QAAMT,cAAcJ,oBAAoBC,QAAAA;AACxC,QAAMa,aAAaC,SACjB,MAAMX,YAAYY,KAAK,CAACF,gBAAeA,YAAWH,IAAG,EAAGE,iBAAiBA,YAAAA,GACzE;IAACT;GAAY;AAEf,SAAOa,oBAAoBH,UAAAA;AAC7B;;;ACjCA,SAASI,aAAAA,YAAWC,cAAc;AAElC,SAAkDC,0BAA0B;AAOrE,IAAMC,kBAAkB,CAACC,IAAgBC,cAAAA;AAI9C,QAAMC,cAAcC,OAAOH,EAAAA;AAC3BE,cAAYE,UAAUJ;AAEtB,QAAMK,kBAAkBF,OAAAA;AAExBG,EAAAA,WAAU,MAAA;AACRD,oBAAgBD,UAAUG,mBAAmB,MAAA;AAC3CL,kBAAYE,QAAO;IACrB,CAAA;AAEA,WAAO,MAAMC,gBAAgBD,SAASI,YAAAA;EACxC,GAAG,CAAA,CAAE;AAELH,kBAAgBD,SAASK,OAAOR,SAAAA;AAChC,SAAOI,gBAAgBD;AACzB;",
6
+ "names": ["MulticastObservable", "SpaceMember", "useMulticastObservable", "useEffect", "useState", "SpaceState", "useMulticastObservable", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "spaceKey", "spaces", "useSpaces", "all", "space", "find", "key", "equals", "undefined", "members", "useMulticastObservable", "MulticastObservable", "empty", "filter", "member", "presence", "SpaceMember", "PresenceState", "REMOVED", "useMemo", "useSyncExternalStore", "useQuery", "space", "filter", "options", "deps", "query", "useMemo", "db", "filterToDepsArray", "useSyncExternalStore", "cb", "subscribe", "objects", "Object", "entries", "flat", "map", "x", "useMemo", "useSyncExternalStore", "SpaceProxy", "useSpaceInvitations", "spaceKey", "space", "useSpace", "invitations", "useSyncExternalStore", "listener", "SpaceProxy", "subscription", "subscribe", "unsubscribe", "get", "useSpaceInvitation", "invitationId", "invitation", "useMemo", "find", "useInvitationStatus", "useEffect", "useRef", "createSubscription", "useSubscription", "cb", "selection", "callbackRef", "useRef", "current", "subscriptionRef", "useEffect", "createSubscription", "unsubscribe", "update"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useInvitationStatus
3
- } from "../chunk-Y64VSVTU.mjs";
3
+ } from "../chunk-BQ4BAP42.mjs";
4
4
  import {
5
5
  useClient
6
6
  } from "../chunk-6SW7V4VI.mjs";
@@ -5,7 +5,7 @@ import {
5
5
  InvitationEncoder,
6
6
  InvitationsProxy,
7
7
  useInvitationStatus
8
- } from "../chunk-Y64VSVTU.mjs";
8
+ } from "../chunk-BQ4BAP42.mjs";
9
9
  export {
10
10
  AuthenticatingInvitationObservable,
11
11
  CancellableInvitationObservable,
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/react-client/src/banner.ts":{"bytes":3658,"imports":[],"format":"esm"},"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytes":15632,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/banner.ts","kind":"import-statement","original":"../banner"}],"format":"esm"},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytes":1563,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useConfig.ts":{"bytes":1775,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useShell.ts":{"bytes":1106,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useStatus.ts":{"bytes":1507,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytes":3547,"imports":[{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/client/index.ts":{"bytes":995,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"},{"path":"packages/sdk/react-client/src/client/useClientServices.ts","kind":"import-statement","original":"./useClientServices"},{"path":"packages/sdk/react-client/src/client/useConfig.ts","kind":"import-statement","original":"./useConfig"},{"path":"packages/sdk/react-client/src/client/useShell.ts","kind":"import-statement","original":"./useShell"},{"path":"packages/sdk/react-client/src/client/useStatus.ts","kind":"import-statement","original":"./useStatus"},{"path":"packages/sdk/react-client/src/client/useAgentHostingProvider.ts","kind":"import-statement","original":"./useAgentHostingProvider"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytes":1938,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytes":2796,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/devtools/index.ts":{"bytes":693,"imports":[{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/devtools/useDevtools.ts","kind":"import-statement","original":"./useDevtools"},{"path":"packages/sdk/react-client/src/devtools/useStream.ts","kind":"import-statement","original":"./useStream"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytes":6145,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytes":3150,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytes":3293,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytes":17876,"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"},"packages/sdk/react-client/src/invitations/index.ts":{"bytes":1299,"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/invitations/useInvitationStatus.ts","kind":"import-statement","original":"./useInvitationStatus"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytes":3915,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytes":3528,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/echo/index.ts":{"bytes":986,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useMembers.ts","kind":"import-statement","original":"./useMembers"},{"path":"packages/sdk/react-client/src/echo/useQuery.ts","kind":"import-statement","original":"./useQuery"},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/echo/useSpaceInvitations.ts","kind":"import-statement","original":"./useSpaceInvitations"},{"path":"packages/sdk/react-client/src/echo/useSubscription.ts","kind":"import-statement","original":"./useSubscription"}],"format":"esm"},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytes":2382,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytes":1962,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytes":3432,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytes":1588,"imports":[{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytes":4572,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/halo/index.ts":{"bytes":1424,"imports":[{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/halo/useContacts.ts","kind":"import-statement","original":"./useContacts"},{"path":"packages/sdk/react-client/src/halo/useDevices.ts","kind":"import-statement","original":"./useDevices"},{"path":"packages/sdk/react-client/src/halo/useHaloInvitations.ts","kind":"import-statement","original":"./useHaloInvitations"},{"path":"packages/sdk/react-client/src/halo/useIdentity.ts","kind":"import-statement","original":"./useIdentity"},{"path":"packages/sdk/react-client/src/halo/useKeyStore.ts","kind":"import-statement","original":"./useKeyStore"}],"format":"esm"},"packages/sdk/react-client/src/index.ts":{"bytes":888,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"./client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytes":2220,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/index.ts":{"bytes":601,"imports":[{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/mesh/useNetworkStatus.ts","kind":"import-statement","original":"./useNetworkStatus"}],"format":"esm"},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytes":11195,"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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytes":1552,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/testing/index.ts":{"bytes":724,"imports":[{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/testing/ClientRepeater.tsx","kind":"import-statement","original":"./ClientRepeater"},{"path":"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx","kind":"import-statement","original":"./FullscreenDecorator"}],"format":"esm"},"packages/sdk/react-client/src/worker.ts":{"bytes":491,"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/sdk/react-client/dist/lib/browser/devtools/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2520},"packages/sdk/react-client/dist/lib/browser/devtools/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["useDevtools","useStream"],"entryPoint":"packages/sdk/react-client/src/devtools/index.ts","inputs":{"packages/sdk/react-client/src/devtools/index.ts":{"bytesInOutput":39},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytesInOutput":506},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytesInOutput":692}},"bytes":1534},"packages/sdk/react-client/dist/lib/browser/echo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10610},"packages/sdk/react-client/dist/lib/browser/echo/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-Y64VSVTU.mjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","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/client/echo","kind":"import-statement","external":true}],"exports":["useMembers","useQuery","useSpace","useSpaceInvitation","useSpaceInvitations","useSpaces","useSubscription"],"entryPoint":"packages/sdk/react-client/src/echo/index.ts","inputs":{"packages/sdk/react-client/src/echo/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytesInOutput":550},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytesInOutput":956},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytesInOutput":454},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytesInOutput":839},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytesInOutput":519}},"bytes":4007},"packages/sdk/react-client/dist/lib/browser/halo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7492},"packages/sdk/react-client/dist/lib/browser/halo/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-Y64VSVTU.mjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["Device","DeviceKind","DeviceType","HaloProxy","KeyStore","useContacts","useDevices","useHaloInvitation","useHaloInvitations","useIdentity","useKeyStore"],"entryPoint":"packages/sdk/react-client/src/halo/index.ts","inputs":{"packages/sdk/react-client/src/halo/index.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytesInOutput":332},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytesInOutput":353},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytesInOutput":702},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytesInOutput":174},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytesInOutput":928}},"bytes":3219},"packages/sdk/react-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":391},"packages/sdk/react-client/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useMulticastObservable","useShell","useStatus"],"entryPoint":"packages/sdk/react-client/src/index.ts","inputs":{"packages/sdk/react-client/src/index.ts":{"bytesInOutput":129}},"bytes":563},"packages/sdk/react-client/dist/lib/browser/invitations/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/react-client/dist/lib/browser/invitations/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-Y64VSVTU.mjs","kind":"import-statement"}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"entryPoint":"packages/sdk/react-client/src/invitations/index.ts","inputs":{},"bytes":388},"packages/sdk/react-client/dist/lib/browser/chunk-Y64VSVTU.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9664},"packages/sdk/react-client/dist/lib/browser/chunk-Y64VSVTU.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":{"packages/sdk/react-client/src/invitations/index.ts":{"bytesInOutput":198},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytesInOutput":4166}},"bytes":4731},"packages/sdk/react-client/dist/lib/browser/mesh/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1330},"packages/sdk/react-client/dist/lib/browser/mesh/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["useNetworkStatus"],"entryPoint":"packages/sdk/react-client/src/mesh/index.ts","inputs":{"packages/sdk/react-client/src/mesh/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytesInOutput":357}},"bytes":618},"packages/sdk/react-client/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6889},"packages/sdk/react-client/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/testing","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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ClientRepeater","FullscreenDecorator"],"entryPoint":"packages/sdk/react-client/src/testing/index.ts","inputs":{"packages/sdk/react-client/src/testing/index.ts":{"bytesInOutput":38},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytesInOutput":2164},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytesInOutput":290}},"bytes":2814},"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14166},"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","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/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useShell","useStatus"],"inputs":{"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytesInOutput":3601},"packages/sdk/react-client/src/banner.ts":{"bytesInOutput":773},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytesInOutput":250},"packages/sdk/react-client/src/client/useConfig.ts":{"bytesInOutput":245},"packages/sdk/react-client/src/client/useShell.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/client/useStatus.ts":{"bytesInOutput":238},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytesInOutput":904},"packages/sdk/react-client/src/client/index.ts":{"bytesInOutput":0}},"bytes":6738},"packages/sdk/react-client/dist/lib/browser/worker.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":206},"packages/sdk/react-client/dist/lib/browser/worker.mjs":{"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"exports":[],"entryPoint":"packages/sdk/react-client/src/worker.ts","inputs":{"packages/sdk/react-client/src/worker.ts":{"bytesInOutput":37}},"bytes":116}}}
1
+ {"inputs":{"packages/sdk/react-client/src/banner.ts":{"bytes":3658,"imports":[],"format":"esm"},"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytes":15632,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/banner.ts","kind":"import-statement","original":"../banner"}],"format":"esm"},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytes":1563,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useConfig.ts":{"bytes":1775,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useShell.ts":{"bytes":1106,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useStatus.ts":{"bytes":1507,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytes":3547,"imports":[{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/client/index.ts":{"bytes":995,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"},{"path":"packages/sdk/react-client/src/client/useClientServices.ts","kind":"import-statement","original":"./useClientServices"},{"path":"packages/sdk/react-client/src/client/useConfig.ts","kind":"import-statement","original":"./useConfig"},{"path":"packages/sdk/react-client/src/client/useShell.ts","kind":"import-statement","original":"./useShell"},{"path":"packages/sdk/react-client/src/client/useStatus.ts","kind":"import-statement","original":"./useStatus"},{"path":"packages/sdk/react-client/src/client/useAgentHostingProvider.ts","kind":"import-statement","original":"./useAgentHostingProvider"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytes":1938,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytes":2796,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/devtools/index.ts":{"bytes":693,"imports":[{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/devtools/useDevtools.ts","kind":"import-statement","original":"./useDevtools"},{"path":"packages/sdk/react-client/src/devtools/useStream.ts","kind":"import-statement","original":"./useStream"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytes":6145,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytes":3150,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytes":3745,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytes":18076,"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"},"packages/sdk/react-client/src/invitations/index.ts":{"bytes":1299,"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/invitations/useInvitationStatus.ts","kind":"import-statement","original":"./useInvitationStatus"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytes":3915,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytes":3528,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/echo/index.ts":{"bytes":986,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useMembers.ts","kind":"import-statement","original":"./useMembers"},{"path":"packages/sdk/react-client/src/echo/useQuery.ts","kind":"import-statement","original":"./useQuery"},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/echo/useSpaceInvitations.ts","kind":"import-statement","original":"./useSpaceInvitations"},{"path":"packages/sdk/react-client/src/echo/useSubscription.ts","kind":"import-statement","original":"./useSubscription"}],"format":"esm"},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytes":2382,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytes":1962,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytes":3432,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytes":1588,"imports":[{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytes":4572,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/halo/index.ts":{"bytes":1424,"imports":[{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/halo/useContacts.ts","kind":"import-statement","original":"./useContacts"},{"path":"packages/sdk/react-client/src/halo/useDevices.ts","kind":"import-statement","original":"./useDevices"},{"path":"packages/sdk/react-client/src/halo/useHaloInvitations.ts","kind":"import-statement","original":"./useHaloInvitations"},{"path":"packages/sdk/react-client/src/halo/useIdentity.ts","kind":"import-statement","original":"./useIdentity"},{"path":"packages/sdk/react-client/src/halo/useKeyStore.ts","kind":"import-statement","original":"./useKeyStore"}],"format":"esm"},"packages/sdk/react-client/src/index.ts":{"bytes":888,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"./client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytes":2220,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/index.ts":{"bytes":601,"imports":[{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/mesh/useNetworkStatus.ts","kind":"import-statement","original":"./useNetworkStatus"}],"format":"esm"},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytes":11206,"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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytes":1552,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/testing/index.ts":{"bytes":724,"imports":[{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/testing/ClientRepeater.tsx","kind":"import-statement","original":"./ClientRepeater"},{"path":"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx","kind":"import-statement","original":"./FullscreenDecorator"}],"format":"esm"},"packages/sdk/react-client/src/worker.ts":{"bytes":491,"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/sdk/react-client/dist/lib/browser/devtools/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2520},"packages/sdk/react-client/dist/lib/browser/devtools/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["useDevtools","useStream"],"entryPoint":"packages/sdk/react-client/src/devtools/index.ts","inputs":{"packages/sdk/react-client/src/devtools/index.ts":{"bytesInOutput":39},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytesInOutput":506},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytesInOutput":692}},"bytes":1534},"packages/sdk/react-client/dist/lib/browser/echo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10842},"packages/sdk/react-client/dist/lib/browser/echo/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-BQ4BAP42.mjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","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/client/echo","kind":"import-statement","external":true}],"exports":["useMembers","useQuery","useSpace","useSpaceInvitation","useSpaceInvitations","useSpaces","useSubscription"],"entryPoint":"packages/sdk/react-client/src/echo/index.ts","inputs":{"packages/sdk/react-client/src/echo/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytesInOutput":550},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytesInOutput":956},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytesInOutput":528},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytesInOutput":839},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytesInOutput":519}},"bytes":4081},"packages/sdk/react-client/dist/lib/browser/halo/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7492},"packages/sdk/react-client/dist/lib/browser/halo/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-BQ4BAP42.mjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["Device","DeviceKind","DeviceType","HaloProxy","KeyStore","useContacts","useDevices","useHaloInvitation","useHaloInvitations","useIdentity","useKeyStore"],"entryPoint":"packages/sdk/react-client/src/halo/index.ts","inputs":{"packages/sdk/react-client/src/halo/index.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytesInOutput":332},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytesInOutput":353},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytesInOutput":702},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytesInOutput":174},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytesInOutput":928}},"bytes":3219},"packages/sdk/react-client/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":391},"packages/sdk/react-client/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useMulticastObservable","useShell","useStatus"],"entryPoint":"packages/sdk/react-client/src/index.ts","inputs":{"packages/sdk/react-client/src/index.ts":{"bytesInOutput":129}},"bytes":563},"packages/sdk/react-client/dist/lib/browser/invitations/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/react-client/dist/lib/browser/invitations/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-BQ4BAP42.mjs","kind":"import-statement"}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"entryPoint":"packages/sdk/react-client/src/invitations/index.ts","inputs":{},"bytes":388},"packages/sdk/react-client/dist/lib/browser/chunk-BQ4BAP42.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9782},"packages/sdk/react-client/dist/lib/browser/chunk-BQ4BAP42.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":{"packages/sdk/react-client/src/invitations/index.ts":{"bytesInOutput":198},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytesInOutput":4204}},"bytes":4769},"packages/sdk/react-client/dist/lib/browser/mesh/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1330},"packages/sdk/react-client/dist/lib/browser/mesh/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["useNetworkStatus"],"entryPoint":"packages/sdk/react-client/src/mesh/index.ts","inputs":{"packages/sdk/react-client/src/mesh/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytesInOutput":357}},"bytes":618},"packages/sdk/react-client/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6895},"packages/sdk/react-client/dist/lib/browser/testing/index.mjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs","kind":"import-statement"},{"path":"@dxos/client/testing","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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ClientRepeater","FullscreenDecorator"],"entryPoint":"packages/sdk/react-client/src/testing/index.ts","inputs":{"packages/sdk/react-client/src/testing/index.ts":{"bytesInOutput":38},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytesInOutput":2167},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytesInOutput":290}},"bytes":2817},"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14166},"packages/sdk/react-client/dist/lib/browser/chunk-6SW7V4VI.mjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","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/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useShell","useStatus"],"inputs":{"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytesInOutput":3601},"packages/sdk/react-client/src/banner.ts":{"bytesInOutput":773},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytesInOutput":250},"packages/sdk/react-client/src/client/useConfig.ts":{"bytesInOutput":245},"packages/sdk/react-client/src/client/useShell.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/client/useStatus.ts":{"bytesInOutput":238},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytesInOutput":904},"packages/sdk/react-client/src/client/index.ts":{"bytesInOutput":0}},"bytes":6738},"packages/sdk/react-client/dist/lib/browser/worker.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":206},"packages/sdk/react-client/dist/lib/browser/worker.mjs":{"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"exports":[],"entryPoint":"packages/sdk/react-client/src/worker.ts","inputs":{"packages/sdk/react-client/src/worker.ts":{"bytesInOutput":37}},"bytes":116}}}
@@ -13,7 +13,7 @@ import { registerSignalFactory } from "@dxos/echo-signals/react";
13
13
  import { faker } from "@dxos/random";
14
14
  var testBuilder = new TestBuilder();
15
15
  var ClientRepeater = (props) => {
16
- const { component: Component, controls: Controls, count = 1, className = "flex w-full place-content-evenly", types, createIdentity, createSpace, onCreateSpace } = props;
16
+ const { component: Component, controls: Controls, count = 1, className = "flex w-full place-content-evenly", schema, createIdentity, createSpace, onCreateSpace } = props;
17
17
  if (props.registerSignalFactory ?? true) {
18
18
  registerSignalFactory();
19
19
  }
@@ -27,7 +27,7 @@ var ClientRepeater = (props) => {
27
27
  services: testBuilder.createLocal()
28
28
  }));
29
29
  await Promise.all(clients2.map((client) => client.initialize()));
30
- types && clients2.map((client) => client.addSchema(...types));
30
+ schema && clients2.map((client) => client.addSchema(...schema));
31
31
  if (createIdentity || createSpace) {
32
32
  await Promise.all(clients2.map((client) => client.halo.createIdentity()));
33
33
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/testing/index.ts", "../../../../src/testing/ClientRepeater.tsx", "../../../../src/testing/FullscreenDecorator.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/testing';\n\nexport * from './ClientRepeater';\nexport * from './FullscreenDecorator';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport React, { useState, type FC, useEffect } from 'react';\n\nimport { Client, type PublicKey } from '@dxos/client';\nimport { type SpaceProxy, type Space } from '@dxos/client/echo';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { registerSignalFactory } from '@dxos/echo-signals/react';\nimport { faker } from '@dxos/random';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { ClientContext } from '../client';\n\nconst testBuilder = new TestBuilder();\n\nexport type RepeatedComponentProps = { id: number; count: number };\n\nexport type ClientRepeaterProps<P extends RepeatedComponentProps> = {\n component: FC<any>;\n controls?: FC<{ clients: Client[] }>;\n clients?: Client[];\n count?: number;\n registerSignalFactory?: boolean;\n className?: string;\n types?: Parameters<Client['addSchema']>;\n createIdentity?: boolean;\n createSpace?: boolean;\n onCreateSpace?: (space: Space) => MaybePromise<void>;\n args?: Omit<P, 'id' | 'count'>;\n};\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 */\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.\n// TODO(wittjosiah): Rename.\nexport const ClientRepeater = <P extends RepeatedComponentProps>(props: ClientRepeaterProps<P>) => {\n const {\n component: Component,\n controls: Controls,\n count = 1,\n className = 'flex w-full place-content-evenly',\n types,\n createIdentity,\n createSpace,\n onCreateSpace,\n } = props;\n if (props.registerSignalFactory ?? true) {\n registerSignalFactory();\n }\n\n const [clients, setClients] = useState(props.clients ?? []);\n const [spaceKey, setSpaceKey] = useState<PublicKey>();\n\n useEffect(() => {\n const timeout = setTimeout(async () => {\n const clients = [...Array(count)].map((_) => new Client({ services: testBuilder.createLocal() }));\n await Promise.all(clients.map((client) => client.initialize()));\n types && clients.map((client) => client.addSchema(...types));\n\n if (createIdentity || createSpace) {\n await Promise.all(clients.map((client) => client.halo.createIdentity()));\n }\n\n if (createSpace) {\n const space = await clients[0].spaces.create({ name: faker.commerce.productName() });\n setSpaceKey(space.key);\n await onCreateSpace?.(space);\n await Promise.all(\n clients.slice(1).map((client) => performInvitation({ host: space as SpaceProxy, guest: client.spaces })),\n );\n }\n\n setClients(clients);\n });\n\n return () => clearTimeout(timeout);\n }, []);\n\n if (clients.length === 0) {\n return null;\n }\n\n return (\n <>\n {Controls && <Controls clients={clients} />}\n <div className={className}>\n {clients.map((client, index) => (\n <ClientContext.Provider key={index} value={{ client }}>\n <Component id={index} count={clients.length} {...{ ...props.args, spaceKey }} />\n </ClientContext.Provider>\n ))}\n </div>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { DecoratorFunction } from '@storybook/csf';\nimport type { ReactRenderer } from '@storybook/react';\nimport React from 'react';\n\nexport const FullscreenDecorator = (className?: string): DecoratorFunction<ReactRenderer> => {\n return (Story) => (\n <div className={['flex fixed inset-0 overflow-hidden', className].join(' ')}>\n <Story />\n </div>\n );\n};\n"],
5
- "mappings": ";;;;;AAIA,cAAc;;;ACAd,OAAOA,SAASC,UAAmBC,iBAAiB;AAEpD,SAASC,cAA8B;AAEvC,SAASC,aAAaC,yBAAyB;AAC/C,SAASC,6BAA6B;AACtC,SAASC,aAAa;AAKtB,IAAMC,cAAc,IAAIC,YAAAA;AA2BjB,IAAMC,iBAAiB,CAAmCC,UAAAA;AAC/D,QAAM,EACJC,WAAWC,WACXC,UAAUC,UACVC,QAAQ,GACRC,YAAY,oCACZC,OACAC,gBACAC,aACAC,cAAa,IACXV;AACJ,MAAIA,MAAMW,yBAAyB,MAAM;AACvCA,0BAAAA;EACF;AAEA,QAAM,CAACC,SAASC,UAAAA,IAAcC,SAASd,MAAMY,WAAW,CAAA,CAAE;AAC1D,QAAM,CAACG,UAAUC,WAAAA,IAAeF,SAAAA;AAEhCG,YAAU,MAAA;AACR,UAAMC,UAAUC,WAAW,YAAA;AACzB,YAAMP,WAAU;WAAIQ,MAAMf,KAAAA;QAAQgB,IAAI,CAACC,MAAM,IAAIC,OAAO;QAAEC,UAAU3B,YAAY4B,YAAW;MAAG,CAAA,CAAA;AAC9F,YAAMC,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOC,WAAU,CAAA,CAAA;AAC3DtB,eAASK,SAAQS,IAAI,CAACO,WAAWA,OAAOE,UAAS,GAAIvB,KAAAA,CAAAA;AAErD,UAAIC,kBAAkBC,aAAa;AACjC,cAAMiB,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOG,KAAKvB,eAAc,CAAA,CAAA;MACtE;AAEA,UAAIC,aAAa;AACf,cAAMuB,QAAQ,MAAMpB,SAAQ,CAAA,EAAGqB,OAAOC,OAAO;UAAEC,MAAMC,MAAMC,SAASC,YAAW;QAAG,CAAA;AAClFtB,oBAAYgB,MAAMO,GAAG;AACrB,cAAM7B,gBAAgBsB,KAAAA;AACtB,cAAMN,QAAQC,IACZf,SAAQ4B,MAAM,CAAA,EAAGnB,IAAI,CAACO,WAAWa,kBAAkB;UAAEC,MAAMV;UAAqBW,OAAOf,OAAOK;QAAO,CAAA,CAAA,CAAA;MAEzG;AAEApB,iBAAWD,QAAAA;IACb,CAAA;AAEA,WAAO,MAAMgC,aAAa1B,OAAAA;EAC5B,GAAG,CAAA,CAAE;AAEL,MAAIN,QAAQiC,WAAW,GAAG;AACxB,WAAO;EACT;AAEA,SACE,sBAAA,cAAA,MAAA,UAAA,MACGzC,YAAY,sBAAA,cAACA,UAAAA;IAASQ;MACvB,sBAAA,cAACkC,OAAAA;IAAIxC;KACFM,QAAQS,IAAI,CAACO,QAAQmB,UACpB,sBAAA,cAACC,cAAcC,UAAQ;IAACV,KAAKQ;IAAOG,OAAO;MAAEtB;IAAO;KAClD,sBAAA,cAAC1B,WAAAA;IAAUiD,IAAIJ;IAAO1C,OAAOO,QAAQiC;IAAc,GAAG7C,MAAMoD;IAAMrC;;AAM9E;;;AC/FA,OAAOsC,YAAW;AAEX,IAAMC,sBAAsB,CAACC,cAAAA;AAClC,SAAO,CAACC,UACN,gBAAAC,OAAA,cAACC,OAAAA;IAAIH,WAAW;MAAC;MAAsCA;MAAWI,KAAK,GAAA;KACrE,gBAAAF,OAAA,cAACD,OAAAA,IAAAA,CAAAA;AAGP;",
6
- "names": ["React", "useState", "useEffect", "Client", "TestBuilder", "performInvitation", "registerSignalFactory", "faker", "testBuilder", "TestBuilder", "ClientRepeater", "props", "component", "Component", "controls", "Controls", "count", "className", "types", "createIdentity", "createSpace", "onCreateSpace", "registerSignalFactory", "clients", "setClients", "useState", "spaceKey", "setSpaceKey", "useEffect", "timeout", "setTimeout", "Array", "map", "_", "Client", "services", "createLocal", "Promise", "all", "client", "initialize", "addSchema", "halo", "space", "spaces", "create", "name", "faker", "commerce", "productName", "key", "slice", "performInvitation", "host", "guest", "clearTimeout", "length", "div", "index", "ClientContext", "Provider", "value", "id", "args", "React", "FullscreenDecorator", "className", "Story", "React", "div", "join"]
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/testing';\n\nexport * from './ClientRepeater';\nexport * from './FullscreenDecorator';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport React, { useState, type FC, useEffect } from 'react';\n\nimport { Client, type PublicKey } from '@dxos/client';\nimport { type SpaceProxy, type Space } from '@dxos/client/echo';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { registerSignalFactory } from '@dxos/echo-signals/react';\nimport { faker } from '@dxos/random';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { ClientContext } from '../client';\n\nconst testBuilder = new TestBuilder();\n\nexport type RepeatedComponentProps = { id: number; count: number };\n\nexport type ClientRepeaterProps<P extends RepeatedComponentProps> = {\n component: FC<any>;\n className?: string;\n controls?: FC<{ clients: Client[] }>;\n clients?: Client[];\n count?: number;\n registerSignalFactory?: boolean;\n schema?: Parameters<Client['addSchema']>;\n createIdentity?: boolean;\n createSpace?: boolean;\n onCreateSpace?: (space: Space) => MaybePromise<void>;\n args?: Omit<P, 'id' | 'count'>;\n};\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 */\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.\n// TODO(wittjosiah): Rename.\nexport const ClientRepeater = <P extends RepeatedComponentProps>(props: ClientRepeaterProps<P>) => {\n const {\n component: Component,\n controls: Controls,\n count = 1,\n className = 'flex w-full place-content-evenly',\n schema,\n createIdentity,\n createSpace,\n onCreateSpace,\n } = props;\n if (props.registerSignalFactory ?? true) {\n registerSignalFactory();\n }\n\n const [clients, setClients] = useState(props.clients ?? []);\n const [spaceKey, setSpaceKey] = useState<PublicKey>();\n\n useEffect(() => {\n const timeout = setTimeout(async () => {\n const clients = [...Array(count)].map((_) => new Client({ services: testBuilder.createLocal() }));\n await Promise.all(clients.map((client) => client.initialize()));\n schema && clients.map((client) => client.addSchema(...schema));\n\n if (createIdentity || createSpace) {\n await Promise.all(clients.map((client) => client.halo.createIdentity()));\n }\n\n if (createSpace) {\n const space = await clients[0].spaces.create({ name: faker.commerce.productName() });\n setSpaceKey(space.key);\n await onCreateSpace?.(space);\n await Promise.all(\n clients.slice(1).map((client) => performInvitation({ host: space as SpaceProxy, guest: client.spaces })),\n );\n }\n\n setClients(clients);\n });\n\n return () => clearTimeout(timeout);\n }, []);\n\n if (clients.length === 0) {\n return null;\n }\n\n return (\n <>\n {Controls && <Controls clients={clients} />}\n <div className={className}>\n {clients.map((client, index) => (\n <ClientContext.Provider key={index} value={{ client }}>\n <Component id={index} count={clients.length} {...{ ...props.args, spaceKey }} />\n </ClientContext.Provider>\n ))}\n </div>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { DecoratorFunction } from '@storybook/csf';\nimport type { ReactRenderer } from '@storybook/react';\nimport React from 'react';\n\nexport const FullscreenDecorator = (className?: string): DecoratorFunction<ReactRenderer> => {\n return (Story) => (\n <div className={['flex fixed inset-0 overflow-hidden', className].join(' ')}>\n <Story />\n </div>\n );\n};\n"],
5
+ "mappings": ";;;;;AAIA,cAAc;;;ACAd,OAAOA,SAASC,UAAmBC,iBAAiB;AAEpD,SAASC,cAA8B;AAEvC,SAASC,aAAaC,yBAAyB;AAC/C,SAASC,6BAA6B;AACtC,SAASC,aAAa;AAKtB,IAAMC,cAAc,IAAIC,YAAAA;AA2BjB,IAAMC,iBAAiB,CAAmCC,UAAAA;AAC/D,QAAM,EACJC,WAAWC,WACXC,UAAUC,UACVC,QAAQ,GACRC,YAAY,oCACZC,QACAC,gBACAC,aACAC,cAAa,IACXV;AACJ,MAAIA,MAAMW,yBAAyB,MAAM;AACvCA,0BAAAA;EACF;AAEA,QAAM,CAACC,SAASC,UAAAA,IAAcC,SAASd,MAAMY,WAAW,CAAA,CAAE;AAC1D,QAAM,CAACG,UAAUC,WAAAA,IAAeF,SAAAA;AAEhCG,YAAU,MAAA;AACR,UAAMC,UAAUC,WAAW,YAAA;AACzB,YAAMP,WAAU;WAAIQ,MAAMf,KAAAA;QAAQgB,IAAI,CAACC,MAAM,IAAIC,OAAO;QAAEC,UAAU3B,YAAY4B,YAAW;MAAG,CAAA,CAAA;AAC9F,YAAMC,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOC,WAAU,CAAA,CAAA;AAC3DtB,gBAAUK,SAAQS,IAAI,CAACO,WAAWA,OAAOE,UAAS,GAAIvB,MAAAA,CAAAA;AAEtD,UAAIC,kBAAkBC,aAAa;AACjC,cAAMiB,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOG,KAAKvB,eAAc,CAAA,CAAA;MACtE;AAEA,UAAIC,aAAa;AACf,cAAMuB,QAAQ,MAAMpB,SAAQ,CAAA,EAAGqB,OAAOC,OAAO;UAAEC,MAAMC,MAAMC,SAASC,YAAW;QAAG,CAAA;AAClFtB,oBAAYgB,MAAMO,GAAG;AACrB,cAAM7B,gBAAgBsB,KAAAA;AACtB,cAAMN,QAAQC,IACZf,SAAQ4B,MAAM,CAAA,EAAGnB,IAAI,CAACO,WAAWa,kBAAkB;UAAEC,MAAMV;UAAqBW,OAAOf,OAAOK;QAAO,CAAA,CAAA,CAAA;MAEzG;AAEApB,iBAAWD,QAAAA;IACb,CAAA;AAEA,WAAO,MAAMgC,aAAa1B,OAAAA;EAC5B,GAAG,CAAA,CAAE;AAEL,MAAIN,QAAQiC,WAAW,GAAG;AACxB,WAAO;EACT;AAEA,SACE,sBAAA,cAAA,MAAA,UAAA,MACGzC,YAAY,sBAAA,cAACA,UAAAA;IAASQ;MACvB,sBAAA,cAACkC,OAAAA;IAAIxC;KACFM,QAAQS,IAAI,CAACO,QAAQmB,UACpB,sBAAA,cAACC,cAAcC,UAAQ;IAACV,KAAKQ;IAAOG,OAAO;MAAEtB;IAAO;KAClD,sBAAA,cAAC1B,WAAAA;IAAUiD,IAAIJ;IAAO1C,OAAOO,QAAQiC;IAAc,GAAG7C,MAAMoD;IAAMrC;;AAM9E;;;AC/FA,OAAOsC,YAAW;AAEX,IAAMC,sBAAsB,CAACC,cAAAA;AAClC,SAAO,CAACC,UACN,gBAAAC,OAAA,cAACC,OAAAA;IAAIH,WAAW;MAAC;MAAsCA;MAAWI,KAAK,GAAA;KACrE,gBAAAF,OAAA,cAACD,OAAAA,IAAAA,CAAAA;AAGP;",
6
+ "names": ["React", "useState", "useEffect", "Client", "TestBuilder", "performInvitation", "registerSignalFactory", "faker", "testBuilder", "TestBuilder", "ClientRepeater", "props", "component", "Component", "controls", "Controls", "count", "className", "schema", "createIdentity", "createSpace", "onCreateSpace", "registerSignalFactory", "clients", "setClients", "useState", "spaceKey", "setSpaceKey", "useEffect", "timeout", "setTimeout", "Array", "map", "_", "Client", "services", "createLocal", "Promise", "all", "client", "initialize", "addSchema", "halo", "space", "spaces", "create", "name", "faker", "commerce", "productName", "key", "slice", "performInvitation", "host", "guest", "clearTimeout", "length", "div", "index", "ClientContext", "Provider", "value", "id", "args", "React", "FullscreenDecorator", "className", "Story", "React", "div", "join"]
7
7
  }
@@ -16,8 +16,8 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_PNDYOCJA_exports = {};
20
- __export(chunk_PNDYOCJA_exports, {
19
+ var chunk_X5URYLUS_exports = {};
20
+ __export(chunk_X5URYLUS_exports, {
21
21
  AuthenticatingInvitationObservable: () => import_invitations.AuthenticatingInvitationObservable,
22
22
  CancellableInvitationObservable: () => import_invitations.CancellableInvitationObservable,
23
23
  Invitation: () => import_invitations.Invitation,
@@ -25,7 +25,7 @@ __export(chunk_PNDYOCJA_exports, {
25
25
  InvitationsProxy: () => import_invitations.InvitationsProxy,
26
26
  useInvitationStatus: () => useInvitationStatus
27
27
  });
28
- module.exports = __toCommonJS(chunk_PNDYOCJA_exports);
28
+ module.exports = __toCommonJS(chunk_X5URYLUS_exports);
29
29
  var import_invitations = require("@dxos/client/invitations");
30
30
  var import_react = require("react");
31
31
  var import_invitations2 = require("@dxos/client/invitations");
@@ -37,7 +37,7 @@ var useInvitationStatus = (initialObservable) => {
37
37
  action
38
38
  }, {
39
39
  F: __dxlog_file,
40
- L: 79,
40
+ L: 81,
41
41
  S: void 0,
42
42
  C: (f, a) => f(...a)
43
43
  });
@@ -129,7 +129,7 @@ var useInvitationStatus = (initialObservable) => {
129
129
  authCode
130
130
  }, {
131
131
  F: __dxlog_file,
132
- L: 163,
132
+ L: 165,
133
133
  S: void 0,
134
134
  C: (f, a) => f(...a)
135
135
  });
@@ -151,6 +151,7 @@ var useInvitationStatus = (initialObservable) => {
151
151
  connect,
152
152
  authenticate,
153
153
  id: invitation?.invitationId,
154
+ multiUse: invitation?.multiUse,
154
155
  invitationCode: invitation ? import_invitations2.InvitationEncoder.encode(invitation) : void 0,
155
156
  authCode: invitation?.authCode,
156
157
  authMethod: invitation?.authMethod,
@@ -173,4 +174,4 @@ var useInvitationStatus = (initialObservable) => {
173
174
  InvitationsProxy,
174
175
  useInvitationStatus
175
176
  });
176
- //# sourceMappingURL=chunk-PNDYOCJA.cjs.map
177
+ //# sourceMappingURL=chunk-X5URYLUS.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/invitations/index.ts", "../../../src/invitations/useInvitationStatus.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n InvitationEncoder,\n Invitation,\n type Invitations,\n InvitationsProxy,\n} from '@dxos/client/invitations';\n\nexport * from './useInvitationStatus';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useReducer, type Reducer, useMemo, useCallback, useEffect } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport {\n type AuthenticatingInvitationObservable,\n type CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n} from '@dxos/client/invitations';\nimport { log } from '@dxos/log';\n\nexport type InvitationResult = {\n spaceKey: PublicKey | null;\n identityKey: PublicKey | null;\n swarmKey: PublicKey | null;\n target: string | null;\n};\n\ninterface InvitationReducerState {\n status: Invitation.State; // TODO(burdon): Rename state.\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n observable?: CancellableInvitationObservable | AuthenticatingInvitationObservable;\n id?: string;\n invitationCode?: string;\n authCode?: string;\n multiUse?: boolean;\n}\n\nexport type InvitationAction =\n | {\n status:\n | Invitation.State.INIT\n | Invitation.State.CONNECTED\n | Invitation.State.READY_FOR_AUTHENTICATION\n | Invitation.State.AUTHENTICATING;\n }\n | {\n status: Invitation.State.CONNECTING;\n observable: CancellableInvitationObservable;\n }\n | {\n status: Invitation.State.SUCCESS;\n result: InvitationResult;\n }\n | {\n status: Invitation.State.CANCELLED | Invitation.State.TIMEOUT;\n haltedAt: Invitation.State;\n }\n | {\n status: Invitation.State.ERROR;\n error?: Error;\n haltedAt: Invitation.State;\n };\n\nexport type InvitationStatus = {\n id?: string;\n invitationCode?: string;\n authCode?: string;\n authMethod?: Invitation.AuthMethod;\n type?: Invitation.Type;\n status: Invitation.State;\n haltedAt?: Invitation.State;\n multiUse?: boolean;\n result: InvitationResult;\n error?: number;\n cancel(): void;\n // TODO(wittjosiah): Remove?\n connect(observable: CancellableInvitationObservable): void;\n authenticate(authCode: string): Promise<void>;\n};\n\nexport const useInvitationStatus = (initialObservable?: CancellableInvitationObservable): InvitationStatus => {\n const [state, dispatch] = useReducer<Reducer<InvitationReducerState, InvitationAction>, null>(\n (prev, action) => {\n log('useInvitationStatus', { action });\n return {\n ...prev,\n // TODO(burdon): State.\n status: action.status,\n // `invitationObservable`, `secret`, and `result` is persisted between the status-actions that set them.\n result: action.status === Invitation.State.SUCCESS ? action.result : prev.result,\n // `error` gets set each time we enter the error state\n ...(action.status === Invitation.State.ERROR && { error: action.error }),\n // `haltedAt` gets set on only the first error/cancelled/timeout action and reset on any others.\n ...((action.status === Invitation.State.ERROR ||\n action.status === Invitation.State.CANCELLED ||\n action.status === Invitation.State.TIMEOUT) && {\n haltedAt: typeof prev.haltedAt === 'undefined' ? action.haltedAt : prev.haltedAt,\n }),\n observable:\n action.status === Invitation.State.CONNECTING ? action.observable ?? prev.observable : prev.observable,\n } as InvitationReducerState;\n },\n null,\n (_arg: null) => {\n return {\n status: Invitation.State.INIT,\n result: { spaceKey: null, identityKey: null, swarmKey: null, target: null },\n observable: initialObservable,\n };\n },\n );\n\n // Handle unmount.\n\n useEffect(() => {\n const update = (invitation: Invitation) => {\n switch (invitation.state) {\n case Invitation.State.CONNECTED:\n case Invitation.State.READY_FOR_AUTHENTICATION:\n case Invitation.State.AUTHENTICATING: {\n dispatch({\n status: invitation.state,\n });\n break;\n }\n\n case Invitation.State.SUCCESS: {\n dispatch({\n status: invitation.state,\n result: {\n spaceKey: invitation.spaceKey || null,\n identityKey: invitation.identityKey || null,\n swarmKey: invitation.swarmKey || null,\n target: invitation.target || null,\n },\n });\n break;\n }\n\n case Invitation.State.CANCELLED:\n case Invitation.State.TIMEOUT: {\n dispatch({ status: invitation.state, haltedAt: state.status });\n break;\n }\n }\n };\n\n const subscription = state.observable?.subscribe(update, (err: Error) => {\n dispatch({ status: Invitation.State.ERROR, error: err, haltedAt: state.status });\n });\n\n const currentState = state.observable?.get();\n if (currentState) {\n update(currentState);\n }\n\n return () => subscription?.unsubscribe();\n }, [state.observable, state.status]);\n\n // Return memoized callbacks & values.\n\n const connect = useCallback((observable: CancellableInvitationObservable) => {\n dispatch({ status: Invitation.State.CONNECTING, observable });\n }, []);\n\n const authenticate = useCallback(\n (authCode: string) => {\n log('authenticating...', { authCode });\n return (state.observable as AuthenticatingInvitationObservable).authenticate(authCode);\n },\n [state.observable],\n );\n\n const cancel = useCallback(async () => state.observable?.cancel(), [state.observable]);\n\n return useMemo(() => {\n const invitation = state.observable?.get();\n const result = {\n status: state.status,\n haltedAt: state.haltedAt,\n result: state.result,\n error: state.error,\n cancel,\n connect,\n authenticate,\n id: invitation?.invitationId,\n multiUse: invitation?.multiUse,\n invitationCode: invitation ? InvitationEncoder.encode(invitation) : undefined,\n authCode: invitation?.authCode,\n authMethod: invitation?.authMethod,\n type: invitation?.type,\n };\n\n return result;\n }, [state, cancel, connect, authenticate]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_invitations", "useInvitationStatus", "initialObservable", "state", "dispatch", "useReducer", "prev", "action", "log", "status", "result", "Invitation", "State", "SUCCESS", "ERROR", "error", "CANCELLED", "TIMEOUT", "haltedAt", "observable", "CONNECTING", "_arg", "INIT", "spaceKey", "identityKey", "swarmKey", "target", "useEffect", "update", "invitation", "CONNECTED", "READY_FOR_AUTHENTICATION", "AUTHENTICATING", "subscription", "subscribe", "err", "currentState", "get", "unsubscribe", "connect", "useCallback", "authenticate", "authCode", "cancel", "useMemo", "id", "invitationId", "multiUse", "invitationCode", "InvitationEncoder", "encode", "undefined", "authMethod", "type"]
7
+ }
@@ -28,7 +28,7 @@ __export(echo_exports, {
28
28
  useSubscription: () => useSubscription
29
29
  });
30
30
  module.exports = __toCommonJS(echo_exports);
31
- var import_chunk_PNDYOCJA = require("../chunk-PNDYOCJA.cjs");
31
+ var import_chunk_X5URYLUS = require("../chunk-X5URYLUS.cjs");
32
32
  var import_chunk_IRRRZ2KE = require("../chunk-IRRRZ2KE.cjs");
33
33
  __reExport(echo_exports, require("@dxos/client/echo"), module.exports);
34
34
  var import_async = require("@dxos/async");
@@ -87,7 +87,7 @@ var useQuery = (space, filter, options, deps) => {
87
87
  ]);
88
88
  return (0, import_react2.useSyncExternalStore)((cb) => query?.subscribe?.(cb) ?? cb, () => query?.objects) ?? [];
89
89
  };
90
- var filterToDepsArray = (filter) => Object.entries(filter ?? {}).flat();
90
+ var filterToDepsArray = (filter) => Object.entries(filter ?? {}).flat(10).map((x) => typeof x === "function" || typeof x === "object" ? null : x);
91
91
  var useSpaceInvitations = (spaceKey) => {
92
92
  const space = useSpace(spaceKey);
93
93
  const invitations = (0, import_react3.useSyncExternalStore)((listener) => {
@@ -105,7 +105,7 @@ var useSpaceInvitation = (spaceKey, invitationId) => {
105
105
  const invitation = (0, import_react3.useMemo)(() => invitations.find((invitation2) => invitation2.get().invitationId === invitationId), [
106
106
  invitations
107
107
  ]);
108
- return (0, import_chunk_PNDYOCJA.useInvitationStatus)(invitation);
108
+ return (0, import_chunk_X5URYLUS.useInvitationStatus)(invitation);
109
109
  };
110
110
  var useSubscription = (cb, selection) => {
111
111
  const callbackRef = (0, import_react4.useRef)(cb);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/echo/index.ts", "../../../../src/echo/useMembers.ts", "../../../../src/echo/useSpaces.ts", "../../../../src/echo/useQuery.ts", "../../../../src/echo/useSpaceInvitations.ts", "../../../../src/echo/useSubscription.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport type { QueryOptions, OpaqueEchoObject, Query, FilterSource, Space } from '@dxos/client/echo';\n\ntype UseQuery = {\n <T extends OpaqueEchoObject>(space?: Space, filter?: FilterSource<T>, options?: QueryOptions, deps?: any[]): T[];\n};\n\n/**\n * Create subscription.\n */\n// TODO(burdon): Support typed operator filters (e.g., Note.filter(note => ...)).\nexport const useQuery: UseQuery = <T extends OpaqueEchoObject>(\n space?: Space,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n) => {\n const query = useMemo(\n () => space?.db.query(filter, options) as Query<T> | undefined,\n [space?.db, ...(typeof filter === 'function' ? [] : filterToDepsArray(filter)), ...(deps ?? [])],\n );\n\n // https://beta.reactjs.org/reference/react/useSyncExternalStore\n return (\n useSyncExternalStore<T[] | undefined>(\n (cb) => query?.subscribe?.(cb) ?? cb,\n () => query?.objects,\n ) ?? []\n );\n};\n\nconst filterToDepsArray = (filter?: FilterSource<any>) => Object.entries(filter ?? {}).flat();\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceProxy } from '@dxos/client/echo';\n\nimport { useSpace } from './useSpaces';\nimport { useInvitationStatus } from '../invitations';\n\nexport const useSpaceInvitations = (spaceKey?: PublicKey) => {\n const space = useSpace(spaceKey);\n const invitations =\n useSyncExternalStore(\n (listener) => {\n if (!(space instanceof SpaceProxy)) {\n return () => {};\n }\n\n const subscription = space.invitations.subscribe(() => listener());\n return () => subscription.unsubscribe();\n },\n () => space?.invitations.get(),\n ) ?? [];\n\n return invitations;\n};\n\nexport const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceKey);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useRef } from 'react';\n\nimport { type Selection, type SubscriptionHandle, createSubscription } from '@dxos/client/echo';\n\n/**\n * Create reactive selection.\n * Calls the callback when the selection changes and during the first render.\n */\n// TODO(wittjosiah): Is this still needed with signals reactivity? If not, remove or update jsdoc with usage info.\nexport const useSubscription = (cb: () => void, selection: Selection) => {\n // Make sure that the callback is always the one from the latest render.\n // Without this, we would always call the callback from the initial render,\n // which might contain stale data.\n const callbackRef = useRef(cb);\n callbackRef.current = cb;\n\n const subscriptionRef = useRef<SubscriptionHandle>();\n\n useEffect(() => {\n subscriptionRef.current = createSubscription(() => {\n callbackRef.current();\n });\n\n return () => subscriptionRef.current?.unsubscribe();\n }, []);\n\n subscriptionRef.current?.update(selection);\n return subscriptionRef.current;\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_echo", "import_react_async", "import_react", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "undefined", "members", "MulticastObservable", "empty", "member", "presence", "SpaceMember", "PresenceState", "REMOVED", "useQuery", "options", "deps", "query", "useMemo", "db", "filterToDepsArray", "useSyncExternalStore", "cb", "subscribe", "objects", "Object", "entries", "flat", "useSpaceInvitations", "invitations", "listener", "SpaceProxy", "subscription", "unsubscribe", "useSpaceInvitation", "invitationId", "invitation", "useInvitationStatus", "useSubscription", "selection", "callbackRef", "useRef", "current", "subscriptionRef", "createSubscription", "update"]
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport type { QueryOptions, OpaqueEchoObject, Query, FilterSource, Space } from '@dxos/client/echo';\n\ntype UseQuery = {\n <T extends OpaqueEchoObject>(space?: Space, filter?: FilterSource<T>, options?: QueryOptions, deps?: any[]): T[];\n};\n\n/**\n * Create subscription.\n */\n// TODO(burdon): Support typed operator filters (e.g., Note.filter(note => ...)).\nexport const useQuery: UseQuery = <T extends OpaqueEchoObject>(\n space?: Space,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n) => {\n const query = useMemo(\n () => space?.db.query(filter, options) as Query<T> | undefined,\n [space?.db, ...(typeof filter === 'function' ? [] : filterToDepsArray(filter)), ...(deps ?? [])],\n );\n\n // https://beta.reactjs.org/reference/react/useSyncExternalStore\n return (\n useSyncExternalStore<T[] | undefined>(\n (cb) => query?.subscribe?.(cb) ?? cb,\n () => query?.objects,\n ) ?? []\n );\n};\n\n// TODO(dmaretskyi): Serialize the filter here instead.\nconst filterToDepsArray = (filter?: FilterSource<any>) =>\n Object.entries(filter ?? {})\n .flat(10)\n .map((x) => (typeof x === 'function' || typeof x === 'object' ? null : x));\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceProxy } from '@dxos/client/echo';\n\nimport { useSpace } from './useSpaces';\nimport { useInvitationStatus } from '../invitations';\n\nexport const useSpaceInvitations = (spaceKey?: PublicKey) => {\n const space = useSpace(spaceKey);\n const invitations =\n useSyncExternalStore(\n (listener) => {\n if (!(space instanceof SpaceProxy)) {\n return () => {};\n }\n\n const subscription = space.invitations.subscribe(() => listener());\n return () => subscription.unsubscribe();\n },\n () => space?.invitations.get(),\n ) ?? [];\n\n return invitations;\n};\n\nexport const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceKey);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useRef } from 'react';\n\nimport { type Selection, type SubscriptionHandle, createSubscription } from '@dxos/client/echo';\n\n/**\n * Create reactive selection.\n * Calls the callback when the selection changes and during the first render.\n */\n// TODO(wittjosiah): Is this still needed with signals reactivity? If not, remove or update jsdoc with usage info.\nexport const useSubscription = (cb: () => void, selection: Selection) => {\n // Make sure that the callback is always the one from the latest render.\n // Without this, we would always call the callback from the initial render,\n // which might contain stale data.\n const callbackRef = useRef(cb);\n callbackRef.current = cb;\n\n const subscriptionRef = useRef<SubscriptionHandle>();\n\n useEffect(() => {\n subscriptionRef.current = createSubscription(() => {\n callbackRef.current();\n });\n\n return () => subscriptionRef.current?.unsubscribe();\n }, []);\n\n subscriptionRef.current?.update(selection);\n return subscriptionRef.current;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_echo", "import_react_async", "import_react", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "undefined", "members", "MulticastObservable", "empty", "member", "presence", "SpaceMember", "PresenceState", "REMOVED", "useQuery", "options", "deps", "query", "useMemo", "db", "filterToDepsArray", "useSyncExternalStore", "cb", "subscribe", "objects", "Object", "entries", "flat", "map", "x", "useSpaceInvitations", "invitations", "listener", "SpaceProxy", "subscription", "unsubscribe", "useSpaceInvitation", "invitationId", "invitation", "useInvitationStatus", "useSubscription", "selection", "callbackRef", "useRef", "current", "subscriptionRef", "createSubscription", "update"]
7
7
  }
@@ -31,7 +31,7 @@ __export(halo_exports, {
31
31
  useKeyStore: () => useKeyStore
32
32
  });
33
33
  module.exports = __toCommonJS(halo_exports);
34
- var import_chunk_PNDYOCJA = require("../chunk-PNDYOCJA.cjs");
34
+ var import_chunk_X5URYLUS = require("../chunk-X5URYLUS.cjs");
35
35
  var import_chunk_IRRRZ2KE = require("../chunk-IRRRZ2KE.cjs");
36
36
  var import_halo = require("@dxos/client/halo");
37
37
  var import_react = require("react");
@@ -68,7 +68,7 @@ var useHaloInvitation = (invitationId) => {
68
68
  const invitation = (0, import_react3.useMemo)(() => invitations.find((invitation2) => invitation2.get().invitationId === invitationId), [
69
69
  invitations
70
70
  ]);
71
- return (0, import_chunk_PNDYOCJA.useInvitationStatus)(invitation);
71
+ return (0, import_chunk_X5URYLUS.useInvitationStatus)(invitation);
72
72
  };
73
73
  var useIdentity = () => {
74
74
  const client = (0, import_chunk_IRRRZ2KE.useClient)();
@@ -18,15 +18,15 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var invitations_exports = {};
20
20
  __export(invitations_exports, {
21
- AuthenticatingInvitationObservable: () => import_chunk_PNDYOCJA.AuthenticatingInvitationObservable,
22
- CancellableInvitationObservable: () => import_chunk_PNDYOCJA.CancellableInvitationObservable,
23
- Invitation: () => import_chunk_PNDYOCJA.Invitation,
24
- InvitationEncoder: () => import_chunk_PNDYOCJA.InvitationEncoder,
25
- InvitationsProxy: () => import_chunk_PNDYOCJA.InvitationsProxy,
26
- useInvitationStatus: () => import_chunk_PNDYOCJA.useInvitationStatus
21
+ AuthenticatingInvitationObservable: () => import_chunk_X5URYLUS.AuthenticatingInvitationObservable,
22
+ CancellableInvitationObservable: () => import_chunk_X5URYLUS.CancellableInvitationObservable,
23
+ Invitation: () => import_chunk_X5URYLUS.Invitation,
24
+ InvitationEncoder: () => import_chunk_X5URYLUS.InvitationEncoder,
25
+ InvitationsProxy: () => import_chunk_X5URYLUS.InvitationsProxy,
26
+ useInvitationStatus: () => import_chunk_X5URYLUS.useInvitationStatus
27
27
  });
28
28
  module.exports = __toCommonJS(invitations_exports);
29
- var import_chunk_PNDYOCJA = require("../chunk-PNDYOCJA.cjs");
29
+ var import_chunk_X5URYLUS = require("../chunk-X5URYLUS.cjs");
30
30
  // Annotate the CommonJS export names for ESM import in node:
31
31
  0 && (module.exports = {
32
32
  AuthenticatingInvitationObservable,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["index.cjs"],
4
- "sourcesContent": ["import {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n InvitationsProxy,\n useInvitationStatus\n} from \"../chunk-PNDYOCJA.cjs\";\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n InvitationsProxy,\n useInvitationStatus\n};\n//# sourceMappingURL=index.cjs.map\n"],
4
+ "sourcesContent": ["import {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n InvitationsProxy,\n useInvitationStatus\n} from \"../chunk-X5URYLUS.cjs\";\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n InvitationsProxy,\n useInvitationStatus\n};\n//# sourceMappingURL=index.cjs.map\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAOO;",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"inputs":{"packages/sdk/react-client/src/banner.ts":{"bytes":3658,"imports":[],"format":"esm"},"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytes":15632,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/banner.ts","kind":"import-statement","original":"../banner"}],"format":"esm"},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytes":1563,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useConfig.ts":{"bytes":1775,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useShell.ts":{"bytes":1106,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useStatus.ts":{"bytes":1507,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytes":3547,"imports":[{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/client/index.ts":{"bytes":995,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"},{"path":"packages/sdk/react-client/src/client/useClientServices.ts","kind":"import-statement","original":"./useClientServices"},{"path":"packages/sdk/react-client/src/client/useConfig.ts","kind":"import-statement","original":"./useConfig"},{"path":"packages/sdk/react-client/src/client/useShell.ts","kind":"import-statement","original":"./useShell"},{"path":"packages/sdk/react-client/src/client/useStatus.ts","kind":"import-statement","original":"./useStatus"},{"path":"packages/sdk/react-client/src/client/useAgentHostingProvider.ts","kind":"import-statement","original":"./useAgentHostingProvider"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytes":1938,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytes":2796,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/devtools/index.ts":{"bytes":693,"imports":[{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/devtools/useDevtools.ts","kind":"import-statement","original":"./useDevtools"},{"path":"packages/sdk/react-client/src/devtools/useStream.ts","kind":"import-statement","original":"./useStream"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytes":6145,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytes":3150,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytes":3293,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytes":17876,"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"},"packages/sdk/react-client/src/invitations/index.ts":{"bytes":1299,"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/invitations/useInvitationStatus.ts","kind":"import-statement","original":"./useInvitationStatus"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytes":3915,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytes":3528,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/echo/index.ts":{"bytes":986,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useMembers.ts","kind":"import-statement","original":"./useMembers"},{"path":"packages/sdk/react-client/src/echo/useQuery.ts","kind":"import-statement","original":"./useQuery"},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/echo/useSpaceInvitations.ts","kind":"import-statement","original":"./useSpaceInvitations"},{"path":"packages/sdk/react-client/src/echo/useSubscription.ts","kind":"import-statement","original":"./useSubscription"}],"format":"esm"},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytes":2382,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytes":1962,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytes":3432,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytes":1588,"imports":[{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytes":4572,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/halo/index.ts":{"bytes":1424,"imports":[{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/halo/useContacts.ts","kind":"import-statement","original":"./useContacts"},{"path":"packages/sdk/react-client/src/halo/useDevices.ts","kind":"import-statement","original":"./useDevices"},{"path":"packages/sdk/react-client/src/halo/useHaloInvitations.ts","kind":"import-statement","original":"./useHaloInvitations"},{"path":"packages/sdk/react-client/src/halo/useIdentity.ts","kind":"import-statement","original":"./useIdentity"},{"path":"packages/sdk/react-client/src/halo/useKeyStore.ts","kind":"import-statement","original":"./useKeyStore"}],"format":"esm"},"packages/sdk/react-client/src/index.ts":{"bytes":888,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"./client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytes":2220,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/index.ts":{"bytes":601,"imports":[{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/mesh/useNetworkStatus.ts","kind":"import-statement","original":"./useNetworkStatus"}],"format":"esm"},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytes":11195,"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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytes":1552,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/testing/index.ts":{"bytes":724,"imports":[{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/testing/ClientRepeater.tsx","kind":"import-statement","original":"./ClientRepeater"},{"path":"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx","kind":"import-statement","original":"./FullscreenDecorator"}],"format":"esm"},"packages/sdk/react-client/src/worker.ts":{"bytes":491,"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/sdk/react-client/dist/lib/node/devtools/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2520},"packages/sdk/react-client/dist/lib/node/devtools/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["useDevtools","useStream"],"entryPoint":"packages/sdk/react-client/src/devtools/index.ts","inputs":{"packages/sdk/react-client/src/devtools/index.ts":{"bytesInOutput":39},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytesInOutput":506},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytesInOutput":692}},"bytes":1534},"packages/sdk/react-client/dist/lib/node/echo/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10610},"packages/sdk/react-client/dist/lib/node/echo/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-PNDYOCJA.cjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","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/client/echo","kind":"import-statement","external":true}],"exports":["useMembers","useQuery","useSpace","useSpaceInvitation","useSpaceInvitations","useSpaces","useSubscription"],"entryPoint":"packages/sdk/react-client/src/echo/index.ts","inputs":{"packages/sdk/react-client/src/echo/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytesInOutput":550},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytesInOutput":956},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytesInOutput":454},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytesInOutput":839},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytesInOutput":519}},"bytes":4007},"packages/sdk/react-client/dist/lib/node/halo/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7492},"packages/sdk/react-client/dist/lib/node/halo/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-PNDYOCJA.cjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["Device","DeviceKind","DeviceType","HaloProxy","KeyStore","useContacts","useDevices","useHaloInvitation","useHaloInvitations","useIdentity","useKeyStore"],"entryPoint":"packages/sdk/react-client/src/halo/index.ts","inputs":{"packages/sdk/react-client/src/halo/index.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytesInOutput":332},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytesInOutput":353},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytesInOutput":702},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytesInOutput":174},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytesInOutput":928}},"bytes":3219},"packages/sdk/react-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":391},"packages/sdk/react-client/dist/lib/node/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useMulticastObservable","useShell","useStatus"],"entryPoint":"packages/sdk/react-client/src/index.ts","inputs":{"packages/sdk/react-client/src/index.ts":{"bytesInOutput":129}},"bytes":563},"packages/sdk/react-client/dist/lib/node/invitations/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/react-client/dist/lib/node/invitations/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-PNDYOCJA.cjs","kind":"import-statement"}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"entryPoint":"packages/sdk/react-client/src/invitations/index.ts","inputs":{},"bytes":388},"packages/sdk/react-client/dist/lib/node/chunk-PNDYOCJA.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9664},"packages/sdk/react-client/dist/lib/node/chunk-PNDYOCJA.cjs":{"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":{"packages/sdk/react-client/src/invitations/index.ts":{"bytesInOutput":198},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytesInOutput":4166}},"bytes":4731},"packages/sdk/react-client/dist/lib/node/mesh/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1330},"packages/sdk/react-client/dist/lib/node/mesh/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["useNetworkStatus"],"entryPoint":"packages/sdk/react-client/src/mesh/index.ts","inputs":{"packages/sdk/react-client/src/mesh/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytesInOutput":357}},"bytes":618},"packages/sdk/react-client/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6889},"packages/sdk/react-client/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/testing","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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ClientRepeater","FullscreenDecorator"],"entryPoint":"packages/sdk/react-client/src/testing/index.ts","inputs":{"packages/sdk/react-client/src/testing/index.ts":{"bytesInOutput":38},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytesInOutput":2164},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytesInOutput":290}},"bytes":2814},"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14166},"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","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/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useShell","useStatus"],"inputs":{"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytesInOutput":3601},"packages/sdk/react-client/src/banner.ts":{"bytesInOutput":773},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytesInOutput":250},"packages/sdk/react-client/src/client/useConfig.ts":{"bytesInOutput":245},"packages/sdk/react-client/src/client/useShell.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/client/useStatus.ts":{"bytesInOutput":238},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytesInOutput":904},"packages/sdk/react-client/src/client/index.ts":{"bytesInOutput":0}},"bytes":6738},"packages/sdk/react-client/dist/lib/node/worker.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":206},"packages/sdk/react-client/dist/lib/node/worker.cjs":{"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"exports":[],"entryPoint":"packages/sdk/react-client/src/worker.ts","inputs":{"packages/sdk/react-client/src/worker.ts":{"bytesInOutput":37}},"bytes":116}}}
1
+ {"inputs":{"packages/sdk/react-client/src/banner.ts":{"bytes":3658,"imports":[],"format":"esm"},"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytes":15632,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/banner.ts","kind":"import-statement","original":"../banner"}],"format":"esm"},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytes":1563,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useConfig.ts":{"bytes":1775,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useShell.ts":{"bytes":1106,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useStatus.ts":{"bytes":1507,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"}],"format":"esm"},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytes":3547,"imports":[{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/client/index.ts":{"bytes":995,"imports":[{"path":"packages/sdk/react-client/src/client/ClientContext.tsx","kind":"import-statement","original":"./ClientContext"},{"path":"packages/sdk/react-client/src/client/useClientServices.ts","kind":"import-statement","original":"./useClientServices"},{"path":"packages/sdk/react-client/src/client/useConfig.ts","kind":"import-statement","original":"./useConfig"},{"path":"packages/sdk/react-client/src/client/useShell.ts","kind":"import-statement","original":"./useShell"},{"path":"packages/sdk/react-client/src/client/useStatus.ts","kind":"import-statement","original":"./useStatus"},{"path":"packages/sdk/react-client/src/client/useAgentHostingProvider.ts","kind":"import-statement","original":"./useAgentHostingProvider"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytes":1938,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytes":2796,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/devtools/index.ts":{"bytes":693,"imports":[{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/devtools/useDevtools.ts","kind":"import-statement","original":"./useDevtools"},{"path":"packages/sdk/react-client/src/devtools/useStream.ts","kind":"import-statement","original":"./useStream"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytes":6145,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytes":3150,"imports":[{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"}],"format":"esm"},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytes":3745,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytes":18076,"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"},"packages/sdk/react-client/src/invitations/index.ts":{"bytes":1299,"imports":[{"path":"@dxos/client/invitations","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/invitations/useInvitationStatus.ts","kind":"import-statement","original":"./useInvitationStatus"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytes":3915,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytes":3528,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/echo/index.ts":{"bytes":986,"imports":[{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/echo/useMembers.ts","kind":"import-statement","original":"./useMembers"},{"path":"packages/sdk/react-client/src/echo/useQuery.ts","kind":"import-statement","original":"./useQuery"},{"path":"packages/sdk/react-client/src/echo/useSpaces.ts","kind":"import-statement","original":"./useSpaces"},{"path":"packages/sdk/react-client/src/echo/useSpaceInvitations.ts","kind":"import-statement","original":"./useSpaceInvitations"},{"path":"packages/sdk/react-client/src/echo/useSubscription.ts","kind":"import-statement","original":"./useSubscription"}],"format":"esm"},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytes":2382,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytes":1962,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytes":3432,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"},{"path":"packages/sdk/react-client/src/invitations/index.ts","kind":"import-statement","original":"../invitations"}],"format":"esm"},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytes":1588,"imports":[{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytes":4572,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/halo/index.ts":{"bytes":1424,"imports":[{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/halo/useContacts.ts","kind":"import-statement","original":"./useContacts"},{"path":"packages/sdk/react-client/src/halo/useDevices.ts","kind":"import-statement","original":"./useDevices"},{"path":"packages/sdk/react-client/src/halo/useHaloInvitations.ts","kind":"import-statement","original":"./useHaloInvitations"},{"path":"packages/sdk/react-client/src/halo/useIdentity.ts","kind":"import-statement","original":"./useIdentity"},{"path":"packages/sdk/react-client/src/halo/useKeyStore.ts","kind":"import-statement","original":"./useKeyStore"}],"format":"esm"},"packages/sdk/react-client/src/index.ts":{"bytes":888,"imports":[{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"./client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytes":2220,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/mesh/index.ts":{"bytes":601,"imports":[{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/mesh/useNetworkStatus.ts","kind":"import-statement","original":"./useNetworkStatus"}],"format":"esm"},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytes":11206,"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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/client/index.ts","kind":"import-statement","original":"../client"}],"format":"esm"},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytes":1552,"imports":[{"path":"react","kind":"import-statement","external":true}],"format":"esm"},"packages/sdk/react-client/src/testing/index.ts":{"bytes":724,"imports":[{"path":"@dxos/client/testing","kind":"import-statement","external":true},{"path":"packages/sdk/react-client/src/testing/ClientRepeater.tsx","kind":"import-statement","original":"./ClientRepeater"},{"path":"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx","kind":"import-statement","original":"./FullscreenDecorator"}],"format":"esm"},"packages/sdk/react-client/src/worker.ts":{"bytes":491,"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"packages/sdk/react-client/dist/lib/node/devtools/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":2520},"packages/sdk/react-client/dist/lib/node/devtools/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/devtools","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["useDevtools","useStream"],"entryPoint":"packages/sdk/react-client/src/devtools/index.ts","inputs":{"packages/sdk/react-client/src/devtools/index.ts":{"bytesInOutput":39},"packages/sdk/react-client/src/devtools/useDevtools.ts":{"bytesInOutput":506},"packages/sdk/react-client/src/devtools/useStream.ts":{"bytesInOutput":692}},"bytes":1534},"packages/sdk/react-client/dist/lib/node/echo/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":10842},"packages/sdk/react-client/dist/lib/node/echo/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-X5URYLUS.cjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","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/client/echo","kind":"import-statement","external":true}],"exports":["useMembers","useQuery","useSpace","useSpaceInvitation","useSpaceInvitations","useSpaces","useSubscription"],"entryPoint":"packages/sdk/react-client/src/echo/index.ts","inputs":{"packages/sdk/react-client/src/echo/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/echo/useMembers.ts":{"bytesInOutput":550},"packages/sdk/react-client/src/echo/useSpaces.ts":{"bytesInOutput":956},"packages/sdk/react-client/src/echo/useQuery.ts":{"bytesInOutput":528},"packages/sdk/react-client/src/echo/useSpaceInvitations.ts":{"bytesInOutput":839},"packages/sdk/react-client/src/echo/useSubscription.ts":{"bytesInOutput":519}},"bytes":4081},"packages/sdk/react-client/dist/lib/node/halo/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7492},"packages/sdk/react-client/dist/lib/node/halo/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-X5URYLUS.cjs","kind":"import-statement"},{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/halo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["Device","DeviceKind","DeviceType","HaloProxy","KeyStore","useContacts","useDevices","useHaloInvitation","useHaloInvitations","useIdentity","useKeyStore"],"entryPoint":"packages/sdk/react-client/src/halo/index.ts","inputs":{"packages/sdk/react-client/src/halo/index.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/halo/useContacts.ts":{"bytesInOutput":332},"packages/sdk/react-client/src/halo/useDevices.ts":{"bytesInOutput":353},"packages/sdk/react-client/src/halo/useHaloInvitations.ts":{"bytesInOutput":702},"packages/sdk/react-client/src/halo/useIdentity.ts":{"bytesInOutput":174},"packages/sdk/react-client/src/halo/useKeyStore.ts":{"bytesInOutput":928}},"bytes":3219},"packages/sdk/react-client/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":391},"packages/sdk/react-client/dist/lib/node/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/react-async","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useMulticastObservable","useShell","useStatus"],"entryPoint":"packages/sdk/react-client/src/index.ts","inputs":{"packages/sdk/react-client/src/index.ts":{"bytesInOutput":129}},"bytes":563},"packages/sdk/react-client/dist/lib/node/invitations/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/sdk/react-client/dist/lib/node/invitations/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-X5URYLUS.cjs","kind":"import-statement"}],"exports":["AuthenticatingInvitationObservable","CancellableInvitationObservable","Invitation","InvitationEncoder","InvitationsProxy","useInvitationStatus"],"entryPoint":"packages/sdk/react-client/src/invitations/index.ts","inputs":{},"bytes":388},"packages/sdk/react-client/dist/lib/node/chunk-X5URYLUS.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9782},"packages/sdk/react-client/dist/lib/node/chunk-X5URYLUS.cjs":{"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":{"packages/sdk/react-client/src/invitations/index.ts":{"bytesInOutput":198},"packages/sdk/react-client/src/invitations/useInvitationStatus.ts":{"bytesInOutput":4204}},"bytes":4769},"packages/sdk/react-client/dist/lib/node/mesh/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1330},"packages/sdk/react-client/dist/lib/node/mesh/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/mesh","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["useNetworkStatus"],"entryPoint":"packages/sdk/react-client/src/mesh/index.ts","inputs":{"packages/sdk/react-client/src/mesh/index.ts":{"bytesInOutput":35},"packages/sdk/react-client/src/mesh/useNetworkStatus.ts":{"bytesInOutput":357}},"bytes":618},"packages/sdk/react-client/dist/lib/node/testing/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6895},"packages/sdk/react-client/dist/lib/node/testing/index.cjs":{"imports":[{"path":"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs","kind":"import-statement"},{"path":"@dxos/client/testing","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/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true}],"exports":["ClientRepeater","FullscreenDecorator"],"entryPoint":"packages/sdk/react-client/src/testing/index.ts","inputs":{"packages/sdk/react-client/src/testing/index.ts":{"bytesInOutput":38},"packages/sdk/react-client/src/testing/ClientRepeater.tsx":{"bytesInOutput":2167},"packages/sdk/react-client/src/testing/FullscreenDecorator.tsx":{"bytesInOutput":290}},"bytes":2817},"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":14166},"packages/sdk/react-client/dist/lib/node/chunk-IRRRZ2KE.cjs":{"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/client","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/echo-signals/react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/util","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/debug","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/debug","kind":"import-statement","external":true},{"path":"@dxos/client/services","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true}],"exports":["ClientContext","ClientProvider","useAgentHostingProviderClient","useClient","useClientServices","useConfig","useShell","useStatus"],"inputs":{"packages/sdk/react-client/src/client/ClientContext.tsx":{"bytesInOutput":3601},"packages/sdk/react-client/src/banner.ts":{"bytesInOutput":773},"packages/sdk/react-client/src/client/useClientServices.ts":{"bytesInOutput":250},"packages/sdk/react-client/src/client/useConfig.ts":{"bytesInOutput":245},"packages/sdk/react-client/src/client/useShell.ts":{"bytesInOutput":79},"packages/sdk/react-client/src/client/useStatus.ts":{"bytesInOutput":238},"packages/sdk/react-client/src/client/useAgentHostingProvider.ts":{"bytesInOutput":904},"packages/sdk/react-client/src/client/index.ts":{"bytesInOutput":0}},"bytes":6738},"packages/sdk/react-client/dist/lib/node/worker.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":206},"packages/sdk/react-client/dist/lib/node/worker.cjs":{"imports":[{"path":"@dxos/client/worker","kind":"import-statement","external":true}],"exports":[],"entryPoint":"packages/sdk/react-client/src/worker.ts","inputs":{"packages/sdk/react-client/src/worker.ts":{"bytesInOutput":37}},"bytes":116}}}
@@ -43,7 +43,7 @@ var import_random = require("@dxos/random");
43
43
  var import_react3 = __toESM(require("react"));
44
44
  var testBuilder = new import_testing.TestBuilder();
45
45
  var ClientRepeater = (props) => {
46
- const { component: Component, controls: Controls, count = 1, className = "flex w-full place-content-evenly", types, createIdentity, createSpace, onCreateSpace } = props;
46
+ const { component: Component, controls: Controls, count = 1, className = "flex w-full place-content-evenly", schema, createIdentity, createSpace, onCreateSpace } = props;
47
47
  if (props.registerSignalFactory ?? true) {
48
48
  (0, import_react2.registerSignalFactory)();
49
49
  }
@@ -57,7 +57,7 @@ var ClientRepeater = (props) => {
57
57
  services: testBuilder.createLocal()
58
58
  }));
59
59
  await Promise.all(clients2.map((client) => client.initialize()));
60
- types && clients2.map((client) => client.addSchema(...types));
60
+ schema && clients2.map((client) => client.addSchema(...schema));
61
61
  if (createIdentity || createSpace) {
62
62
  await Promise.all(clients2.map((client) => client.halo.createIdentity()));
63
63
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/testing/index.ts", "../../../../src/testing/ClientRepeater.tsx", "../../../../src/testing/FullscreenDecorator.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/testing';\n\nexport * from './ClientRepeater';\nexport * from './FullscreenDecorator';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport React, { useState, type FC, useEffect } from 'react';\n\nimport { Client, type PublicKey } from '@dxos/client';\nimport { type SpaceProxy, type Space } from '@dxos/client/echo';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { registerSignalFactory } from '@dxos/echo-signals/react';\nimport { faker } from '@dxos/random';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { ClientContext } from '../client';\n\nconst testBuilder = new TestBuilder();\n\nexport type RepeatedComponentProps = { id: number; count: number };\n\nexport type ClientRepeaterProps<P extends RepeatedComponentProps> = {\n component: FC<any>;\n controls?: FC<{ clients: Client[] }>;\n clients?: Client[];\n count?: number;\n registerSignalFactory?: boolean;\n className?: string;\n types?: Parameters<Client['addSchema']>;\n createIdentity?: boolean;\n createSpace?: boolean;\n onCreateSpace?: (space: Space) => MaybePromise<void>;\n args?: Omit<P, 'id' | 'count'>;\n};\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 */\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.\n// TODO(wittjosiah): Rename.\nexport const ClientRepeater = <P extends RepeatedComponentProps>(props: ClientRepeaterProps<P>) => {\n const {\n component: Component,\n controls: Controls,\n count = 1,\n className = 'flex w-full place-content-evenly',\n types,\n createIdentity,\n createSpace,\n onCreateSpace,\n } = props;\n if (props.registerSignalFactory ?? true) {\n registerSignalFactory();\n }\n\n const [clients, setClients] = useState(props.clients ?? []);\n const [spaceKey, setSpaceKey] = useState<PublicKey>();\n\n useEffect(() => {\n const timeout = setTimeout(async () => {\n const clients = [...Array(count)].map((_) => new Client({ services: testBuilder.createLocal() }));\n await Promise.all(clients.map((client) => client.initialize()));\n types && clients.map((client) => client.addSchema(...types));\n\n if (createIdentity || createSpace) {\n await Promise.all(clients.map((client) => client.halo.createIdentity()));\n }\n\n if (createSpace) {\n const space = await clients[0].spaces.create({ name: faker.commerce.productName() });\n setSpaceKey(space.key);\n await onCreateSpace?.(space);\n await Promise.all(\n clients.slice(1).map((client) => performInvitation({ host: space as SpaceProxy, guest: client.spaces })),\n );\n }\n\n setClients(clients);\n });\n\n return () => clearTimeout(timeout);\n }, []);\n\n if (clients.length === 0) {\n return null;\n }\n\n return (\n <>\n {Controls && <Controls clients={clients} />}\n <div className={className}>\n {clients.map((client, index) => (\n <ClientContext.Provider key={index} value={{ client }}>\n <Component id={index} count={clients.length} {...{ ...props.args, spaceKey }} />\n </ClientContext.Provider>\n ))}\n </div>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { DecoratorFunction } from '@storybook/csf';\nimport type { ReactRenderer } from '@storybook/react';\nimport React from 'react';\n\nexport const FullscreenDecorator = (className?: string): DecoratorFunction<ReactRenderer> => {\n return (Story) => (\n <div className={['flex fixed inset-0 overflow-hidden', className].join(' ')}>\n <Story />\n </div>\n );\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4BAAc;ACAd,mBAAoD;AAEpD,oBAAuC;AAEvC,qBAA+C;AAC/C,IAAAA,gBAAsC;AACtC,oBAAsB;ACJtB,IAAAA,gBAAkB;ADSlB,IAAMC,cAAc,IAAIC,2BAAAA;AA2BjB,IAAMC,iBAAiB,CAAmCC,UAAAA;AAC/D,QAAM,EACJC,WAAWC,WACXC,UAAUC,UACVC,QAAQ,GACRC,YAAY,oCACZC,OACAC,gBACAC,aACAC,cAAa,IACXV;AACJ,MAAIA,MAAMW,yBAAyB,MAAM;AACvCA,6CAAAA;EACF;AAEA,QAAM,CAACC,SAASC,UAAAA,QAAcC,uBAASd,MAAMY,WAAW,CAAA,CAAE;AAC1D,QAAM,CAACG,UAAUC,WAAAA,QAAeF,uBAAAA;AAEhCG,8BAAU,MAAA;AACR,UAAMC,UAAUC,WAAW,YAAA;AACzB,YAAMP,WAAU;WAAIQ,MAAMf,KAAAA;QAAQgB,IAAI,CAACC,MAAM,IAAIC,qBAAO;QAAEC,UAAU3B,YAAY4B,YAAW;MAAG,CAAA,CAAA;AAC9F,YAAMC,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOC,WAAU,CAAA,CAAA;AAC3DtB,eAASK,SAAQS,IAAI,CAACO,WAAWA,OAAOE,UAAS,GAAIvB,KAAAA,CAAAA;AAErD,UAAIC,kBAAkBC,aAAa;AACjC,cAAMiB,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOG,KAAKvB,eAAc,CAAA,CAAA;MACtE;AAEA,UAAIC,aAAa;AACf,cAAMuB,QAAQ,MAAMpB,SAAQ,CAAA,EAAGqB,OAAOC,OAAO;UAAEC,MAAMC,oBAAMC,SAASC,YAAW;QAAG,CAAA;AAClFtB,oBAAYgB,MAAMO,GAAG;AACrB,cAAM7B,gBAAgBsB,KAAAA;AACtB,cAAMN,QAAQC,IACZf,SAAQ4B,MAAM,CAAA,EAAGnB,IAAI,CAACO,eAAWa,kCAAkB;UAAEC,MAAMV;UAAqBW,OAAOf,OAAOK;QAAO,CAAA,CAAA,CAAA;MAEzG;AAEApB,iBAAWD,QAAAA;IACb,CAAA;AAEA,WAAO,MAAMgC,aAAa1B,OAAAA;EAC5B,GAAG,CAAA,CAAE;AAEL,MAAIN,QAAQiC,WAAW,GAAG;AACxB,WAAO;EACT;AAEA,SACE,6BAAAC,QAAA,cAAA,aAAAA,QAAA,UAAA,MACG1C,YAAY,6BAAA0C,QAAA,cAAC1C,UAAAA;IAASQ;MACvB,6BAAAkC,QAAA,cAACC,OAAAA;IAAIzC;KACFM,QAAQS,IAAI,CAACO,QAAQoB,UACpB,6BAAAF,QAAA,cAACG,oCAAcC,UAAQ;IAACX,KAAKS;IAAOG,OAAO;MAAEvB;IAAO;KAClD,6BAAAkB,QAAA,cAAC5C,WAAAA;IAAUkD,IAAIJ;IAAO3C,OAAOO,QAAQiC;IAAc,GAAG7C,MAAMqD;IAAMtC;;AAM9E;AC7FO,IAAMuC,sBAAsB,CAAChD,cAAAA;AAClC,SAAO,CAACiD,UACNT,8BAAAA,QAAA,cAACC,OAAAA;IAAIzC,WAAW;MAAC;MAAsCA;MAAWkD,KAAK,GAAA;KACrEV,8BAAAA,QAAA,cAACS,OAAAA,IAAAA,CAAAA;AAGP;",
6
- "names": ["import_react", "testBuilder", "TestBuilder", "ClientRepeater", "props", "component", "Component", "controls", "Controls", "count", "className", "types", "createIdentity", "createSpace", "onCreateSpace", "registerSignalFactory", "clients", "setClients", "useState", "spaceKey", "setSpaceKey", "useEffect", "timeout", "setTimeout", "Array", "map", "_", "Client", "services", "createLocal", "Promise", "all", "client", "initialize", "addSchema", "halo", "space", "spaces", "create", "name", "faker", "commerce", "productName", "key", "slice", "performInvitation", "host", "guest", "clearTimeout", "length", "React", "div", "index", "ClientContext", "Provider", "value", "id", "args", "FullscreenDecorator", "Story", "join"]
4
+ "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/testing';\n\nexport * from './ClientRepeater';\nexport * from './FullscreenDecorator';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport React, { useState, type FC, useEffect } from 'react';\n\nimport { Client, type PublicKey } from '@dxos/client';\nimport { type SpaceProxy, type Space } from '@dxos/client/echo';\nimport { TestBuilder, performInvitation } from '@dxos/client/testing';\nimport { registerSignalFactory } from '@dxos/echo-signals/react';\nimport { faker } from '@dxos/random';\nimport { type MaybePromise } from '@dxos/util';\n\nimport { ClientContext } from '../client';\n\nconst testBuilder = new TestBuilder();\n\nexport type RepeatedComponentProps = { id: number; count: number };\n\nexport type ClientRepeaterProps<P extends RepeatedComponentProps> = {\n component: FC<any>;\n className?: string;\n controls?: FC<{ clients: Client[] }>;\n clients?: Client[];\n count?: number;\n registerSignalFactory?: boolean;\n schema?: Parameters<Client['addSchema']>;\n createIdentity?: boolean;\n createSpace?: boolean;\n onCreateSpace?: (space: Space) => MaybePromise<void>;\n args?: Omit<P, 'id' | 'count'>;\n};\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 */\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.\n// TODO(wittjosiah): Rename.\nexport const ClientRepeater = <P extends RepeatedComponentProps>(props: ClientRepeaterProps<P>) => {\n const {\n component: Component,\n controls: Controls,\n count = 1,\n className = 'flex w-full place-content-evenly',\n schema,\n createIdentity,\n createSpace,\n onCreateSpace,\n } = props;\n if (props.registerSignalFactory ?? true) {\n registerSignalFactory();\n }\n\n const [clients, setClients] = useState(props.clients ?? []);\n const [spaceKey, setSpaceKey] = useState<PublicKey>();\n\n useEffect(() => {\n const timeout = setTimeout(async () => {\n const clients = [...Array(count)].map((_) => new Client({ services: testBuilder.createLocal() }));\n await Promise.all(clients.map((client) => client.initialize()));\n schema && clients.map((client) => client.addSchema(...schema));\n\n if (createIdentity || createSpace) {\n await Promise.all(clients.map((client) => client.halo.createIdentity()));\n }\n\n if (createSpace) {\n const space = await clients[0].spaces.create({ name: faker.commerce.productName() });\n setSpaceKey(space.key);\n await onCreateSpace?.(space);\n await Promise.all(\n clients.slice(1).map((client) => performInvitation({ host: space as SpaceProxy, guest: client.spaces })),\n );\n }\n\n setClients(clients);\n });\n\n return () => clearTimeout(timeout);\n }, []);\n\n if (clients.length === 0) {\n return null;\n }\n\n return (\n <>\n {Controls && <Controls clients={clients} />}\n <div className={className}>\n {clients.map((client, index) => (\n <ClientContext.Provider key={index} value={{ client }}>\n <Component id={index} count={clients.length} {...{ ...props.args, spaceKey }} />\n </ClientContext.Provider>\n ))}\n </div>\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport type { DecoratorFunction } from '@storybook/csf';\nimport type { ReactRenderer } from '@storybook/react';\nimport React from 'react';\n\nexport const FullscreenDecorator = (className?: string): DecoratorFunction<ReactRenderer> => {\n return (Story) => (\n <div className={['flex fixed inset-0 overflow-hidden', className].join(' ')}>\n <Story />\n </div>\n );\n};\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,4BAAc;ACAd,mBAAoD;AAEpD,oBAAuC;AAEvC,qBAA+C;AAC/C,IAAAA,gBAAsC;AACtC,oBAAsB;ACJtB,IAAAA,gBAAkB;ADSlB,IAAMC,cAAc,IAAIC,2BAAAA;AA2BjB,IAAMC,iBAAiB,CAAmCC,UAAAA;AAC/D,QAAM,EACJC,WAAWC,WACXC,UAAUC,UACVC,QAAQ,GACRC,YAAY,oCACZC,QACAC,gBACAC,aACAC,cAAa,IACXV;AACJ,MAAIA,MAAMW,yBAAyB,MAAM;AACvCA,6CAAAA;EACF;AAEA,QAAM,CAACC,SAASC,UAAAA,QAAcC,uBAASd,MAAMY,WAAW,CAAA,CAAE;AAC1D,QAAM,CAACG,UAAUC,WAAAA,QAAeF,uBAAAA;AAEhCG,8BAAU,MAAA;AACR,UAAMC,UAAUC,WAAW,YAAA;AACzB,YAAMP,WAAU;WAAIQ,MAAMf,KAAAA;QAAQgB,IAAI,CAACC,MAAM,IAAIC,qBAAO;QAAEC,UAAU3B,YAAY4B,YAAW;MAAG,CAAA,CAAA;AAC9F,YAAMC,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOC,WAAU,CAAA,CAAA;AAC3DtB,gBAAUK,SAAQS,IAAI,CAACO,WAAWA,OAAOE,UAAS,GAAIvB,MAAAA,CAAAA;AAEtD,UAAIC,kBAAkBC,aAAa;AACjC,cAAMiB,QAAQC,IAAIf,SAAQS,IAAI,CAACO,WAAWA,OAAOG,KAAKvB,eAAc,CAAA,CAAA;MACtE;AAEA,UAAIC,aAAa;AACf,cAAMuB,QAAQ,MAAMpB,SAAQ,CAAA,EAAGqB,OAAOC,OAAO;UAAEC,MAAMC,oBAAMC,SAASC,YAAW;QAAG,CAAA;AAClFtB,oBAAYgB,MAAMO,GAAG;AACrB,cAAM7B,gBAAgBsB,KAAAA;AACtB,cAAMN,QAAQC,IACZf,SAAQ4B,MAAM,CAAA,EAAGnB,IAAI,CAACO,eAAWa,kCAAkB;UAAEC,MAAMV;UAAqBW,OAAOf,OAAOK;QAAO,CAAA,CAAA,CAAA;MAEzG;AAEApB,iBAAWD,QAAAA;IACb,CAAA;AAEA,WAAO,MAAMgC,aAAa1B,OAAAA;EAC5B,GAAG,CAAA,CAAE;AAEL,MAAIN,QAAQiC,WAAW,GAAG;AACxB,WAAO;EACT;AAEA,SACE,6BAAAC,QAAA,cAAA,aAAAA,QAAA,UAAA,MACG1C,YAAY,6BAAA0C,QAAA,cAAC1C,UAAAA;IAASQ;MACvB,6BAAAkC,QAAA,cAACC,OAAAA;IAAIzC;KACFM,QAAQS,IAAI,CAACO,QAAQoB,UACpB,6BAAAF,QAAA,cAACG,oCAAcC,UAAQ;IAACX,KAAKS;IAAOG,OAAO;MAAEvB;IAAO;KAClD,6BAAAkB,QAAA,cAAC5C,WAAAA;IAAUkD,IAAIJ;IAAO3C,OAAOO,QAAQiC;IAAc,GAAG7C,MAAMqD;IAAMtC;;AAM9E;AC7FO,IAAMuC,sBAAsB,CAAChD,cAAAA;AAClC,SAAO,CAACiD,UACNT,8BAAAA,QAAA,cAACC,OAAAA;IAAIzC,WAAW;MAAC;MAAsCA;MAAWkD,KAAK,GAAA;KACrEV,8BAAAA,QAAA,cAACS,OAAAA,IAAAA,CAAAA;AAGP;",
6
+ "names": ["import_react", "testBuilder", "TestBuilder", "ClientRepeater", "props", "component", "Component", "controls", "Controls", "count", "className", "schema", "createIdentity", "createSpace", "onCreateSpace", "registerSignalFactory", "clients", "setClients", "useState", "spaceKey", "setSpaceKey", "useEffect", "timeout", "setTimeout", "Array", "map", "_", "Client", "services", "createLocal", "Promise", "all", "client", "initialize", "addSchema", "halo", "space", "spaces", "create", "name", "faker", "commerce", "productName", "key", "slice", "performInvitation", "host", "guest", "clearTimeout", "length", "React", "div", "index", "ClientContext", "Provider", "value", "id", "args", "FullscreenDecorator", "Story", "join"]
7
7
  }
@@ -30,6 +30,7 @@ export type InvitationStatus = {
30
30
  type?: Invitation.Type;
31
31
  status: Invitation.State;
32
32
  haltedAt?: Invitation.State;
33
+ multiUse?: boolean;
33
34
  result: InvitationResult;
34
35
  error?: number;
35
36
  cancel(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"useInvitationStatus.d.ts","sourceRoot":"","sources":["../../../../src/invitations/useInvitationStatus.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAEL,KAAK,+BAA+B,EACpC,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAGlC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAaF,MAAM,MAAM,gBAAgB,GACxB;IACE,MAAM,EACF,UAAU,CAAC,KAAK,CAAC,IAAI,GACrB,UAAU,CAAC,KAAK,CAAC,SAAS,GAC1B,UAAU,CAAC,KAAK,CAAC,wBAAwB,GACzC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC;CACrC,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;IACpC,UAAU,EAAE,+BAA+B,CAAC;CAC7C,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IACjC,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IAC9D,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;CAC5B,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;CAC5B,CAAC;AAEN,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,IAAI,IAAI,CAAC;IAEf,OAAO,CAAC,UAAU,EAAE,+BAA+B,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,uBAAwB,+BAA+B,KAAG,gBAkHzF,CAAC"}
1
+ {"version":3,"file":"useInvitationStatus.d.ts","sourceRoot":"","sources":["../../../../src/invitations/useInvitationStatus.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAEL,KAAK,+BAA+B,EACpC,UAAU,EAEX,MAAM,0BAA0B,CAAC;AAGlC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAcF,MAAM,MAAM,gBAAgB,GACxB;IACE,MAAM,EACF,UAAU,CAAC,KAAK,CAAC,IAAI,GACrB,UAAU,CAAC,KAAK,CAAC,SAAS,GAC1B,UAAU,CAAC,KAAK,CAAC,wBAAwB,GACzC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC;CACrC,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;IACpC,UAAU,EAAE,+BAA+B,CAAC;CAC7C,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IACjC,MAAM,EAAE,gBAAgB,CAAC;CAC1B,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC;IAC9D,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;CAC5B,GACD;IACE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC;CAC5B,CAAC;AAEN,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC,UAAU,CAAC;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,IAAI,IAAI,CAAC;IAEf,OAAO,CAAC,UAAU,EAAE,+BAA+B,GAAG,IAAI,CAAC;IAC3D,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,uBAAwB,+BAA+B,KAAG,gBAmHzF,CAAC"}
@@ -8,14 +8,14 @@ export type RepeatedComponentProps = {
8
8
  };
9
9
  export type ClientRepeaterProps<P extends RepeatedComponentProps> = {
10
10
  component: FC<any>;
11
+ className?: string;
11
12
  controls?: FC<{
12
13
  clients: Client[];
13
14
  }>;
14
15
  clients?: Client[];
15
16
  count?: number;
16
17
  registerSignalFactory?: boolean;
17
- className?: string;
18
- types?: Parameters<Client['addSchema']>;
18
+ schema?: Parameters<Client['addSchema']>;
19
19
  createIdentity?: boolean;
20
20
  createSpace?: boolean;
21
21
  onCreateSpace?: (space: Space) => MaybePromise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"ClientRepeater.d.ts","sourceRoot":"","sources":["../../../../src/testing/ClientRepeater.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAY,KAAK,EAAE,EAAa,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAIhE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,MAAM,MAAM,sBAAsB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,sBAAsB,IAAI;IAClE,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF;;;GAGG;AAMH,eAAO,MAAM,cAAc,yFA2D1B,CAAC"}
1
+ {"version":3,"file":"ClientRepeater.d.ts","sourceRoot":"","sources":["../../../../src/testing/ClientRepeater.tsx"],"names":[],"mappings":"AAIA,OAAc,EAAY,KAAK,EAAE,EAAa,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAkB,MAAM,cAAc,CAAC;AACtD,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAIhE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,MAAM,MAAM,sBAAsB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,sBAAsB,IAAI;IAClE,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,EAAE,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,MAAM,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,YAAY,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF;;;GAGG;AAMH,eAAO,MAAM,cAAc,yFA2D1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-client",
3
- "version": "0.4.10-main.697c7a4",
3
+ "version": "0.4.10-main.6f3f81d",
4
4
  "description": "React client API",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -83,17 +83,17 @@
83
83
  }
84
84
  },
85
85
  "dependencies": {
86
- "@dxos/async": "0.4.10-main.697c7a4",
87
- "@dxos/client": "0.4.10-main.697c7a4",
88
- "@dxos/codec-protobuf": "0.4.10-main.697c7a4",
89
- "@dxos/config": "0.4.10-main.697c7a4",
90
- "@dxos/debug": "0.4.10-main.697c7a4",
91
- "@dxos/invariant": "0.4.10-main.697c7a4",
92
- "@dxos/node-std": "0.4.10-main.697c7a4",
93
- "@dxos/log": "0.4.10-main.697c7a4",
94
- "@dxos/react-async": "0.4.10-main.697c7a4",
95
- "@dxos/echo-signals": "0.4.10-main.697c7a4",
96
- "@dxos/util": "0.4.10-main.697c7a4"
86
+ "@dxos/client": "0.4.10-main.6f3f81d",
87
+ "@dxos/async": "0.4.10-main.6f3f81d",
88
+ "@dxos/config": "0.4.10-main.6f3f81d",
89
+ "@dxos/codec-protobuf": "0.4.10-main.6f3f81d",
90
+ "@dxos/debug": "0.4.10-main.6f3f81d",
91
+ "@dxos/echo-signals": "0.4.10-main.6f3f81d",
92
+ "@dxos/node-std": "0.4.10-main.6f3f81d",
93
+ "@dxos/log": "0.4.10-main.6f3f81d",
94
+ "@dxos/react-async": "0.4.10-main.6f3f81d",
95
+ "@dxos/invariant": "0.4.10-main.6f3f81d",
96
+ "@dxos/util": "0.4.10-main.6f3f81d"
97
97
  },
98
98
  "devDependencies": {
99
99
  "@testing-library/dom": "^8.17.1",
@@ -104,10 +104,10 @@
104
104
  "react": "^18.2.0",
105
105
  "react-dom": "^18.2.0",
106
106
  "yjs": "^13.6.10",
107
- "@dxos/random": "0.4.10-main.697c7a4",
108
- "@dxos/react-ui": "0.4.10-main.697c7a4",
109
- "@dxos/storybook-utils": "0.4.10-main.697c7a4",
110
- "@dxos/react-ui-theme": "0.4.10-main.697c7a4"
107
+ "@dxos/random": "0.4.10-main.6f3f81d",
108
+ "@dxos/react-ui": "0.4.10-main.6f3f81d",
109
+ "@dxos/react-ui-theme": "0.4.10-main.6f3f81d",
110
+ "@dxos/storybook-utils": "0.4.10-main.6f3f81d"
111
111
  },
112
112
  "peerDependencies": {
113
113
  "react": "*",
@@ -115,7 +115,7 @@
115
115
  },
116
116
  "optionalDependencies": {
117
117
  "yjs": "^13.6.10",
118
- "@dxos/random": "0.4.10-main.697c7a4"
118
+ "@dxos/random": "0.4.10-main.6f3f81d"
119
119
  },
120
120
  "publishConfig": {
121
121
  "access": "public"
@@ -34,4 +34,8 @@ export const useQuery: UseQuery = <T extends OpaqueEchoObject>(
34
34
  );
35
35
  };
36
36
 
37
- const filterToDepsArray = (filter?: FilterSource<any>) => Object.entries(filter ?? {}).flat();
37
+ // TODO(dmaretskyi): Serialize the filter here instead.
38
+ const filterToDepsArray = (filter?: FilterSource<any>) =>
39
+ Object.entries(filter ?? {})
40
+ .flat(10)
41
+ .map((x) => (typeof x === 'function' || typeof x === 'object' ? null : x));
@@ -29,6 +29,7 @@ interface InvitationReducerState {
29
29
  id?: string;
30
30
  invitationCode?: string;
31
31
  authCode?: string;
32
+ multiUse?: boolean;
32
33
  }
33
34
 
34
35
  export type InvitationAction =
@@ -65,6 +66,7 @@ export type InvitationStatus = {
65
66
  type?: Invitation.Type;
66
67
  status: Invitation.State;
67
68
  haltedAt?: Invitation.State;
69
+ multiUse?: boolean;
68
70
  result: InvitationResult;
69
71
  error?: number;
70
72
  cancel(): void;
@@ -179,6 +181,7 @@ export const useInvitationStatus = (initialObservable?: CancellableInvitationObs
179
181
  connect,
180
182
  authenticate,
181
183
  id: invitation?.invitationId,
184
+ multiUse: invitation?.multiUse,
182
185
  invitationCode: invitation ? InvitationEncoder.encode(invitation) : undefined,
183
186
  authCode: invitation?.authCode,
184
187
  authMethod: invitation?.authMethod,
@@ -19,12 +19,12 @@ export type RepeatedComponentProps = { id: number; count: number };
19
19
 
20
20
  export type ClientRepeaterProps<P extends RepeatedComponentProps> = {
21
21
  component: FC<any>;
22
+ className?: string;
22
23
  controls?: FC<{ clients: Client[] }>;
23
24
  clients?: Client[];
24
25
  count?: number;
25
26
  registerSignalFactory?: boolean;
26
- className?: string;
27
- types?: Parameters<Client['addSchema']>;
27
+ schema?: Parameters<Client['addSchema']>;
28
28
  createIdentity?: boolean;
29
29
  createSpace?: boolean;
30
30
  onCreateSpace?: (space: Space) => MaybePromise<void>;
@@ -46,7 +46,7 @@ export const ClientRepeater = <P extends RepeatedComponentProps>(props: ClientRe
46
46
  controls: Controls,
47
47
  count = 1,
48
48
  className = 'flex w-full place-content-evenly',
49
- types,
49
+ schema,
50
50
  createIdentity,
51
51
  createSpace,
52
52
  onCreateSpace,
@@ -62,7 +62,7 @@ export const ClientRepeater = <P extends RepeatedComponentProps>(props: ClientRe
62
62
  const timeout = setTimeout(async () => {
63
63
  const clients = [...Array(count)].map((_) => new Client({ services: testBuilder.createLocal() }));
64
64
  await Promise.all(clients.map((client) => client.initialize()));
65
- types && clients.map((client) => client.addSchema(...types));
65
+ schema && clients.map((client) => client.addSchema(...schema));
66
66
 
67
67
  if (createIdentity || createSpace) {
68
68
  await Promise.all(clients.map((client) => client.halo.createIdentity()));
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/invitations/index.ts", "../../../src/invitations/useInvitationStatus.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n InvitationEncoder,\n Invitation,\n type Invitations,\n InvitationsProxy,\n} from '@dxos/client/invitations';\n\nexport * from './useInvitationStatus';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useReducer, type Reducer, useMemo, useCallback, useEffect } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport {\n type AuthenticatingInvitationObservable,\n type CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n} from '@dxos/client/invitations';\nimport { log } from '@dxos/log';\n\nexport type InvitationResult = {\n spaceKey: PublicKey | null;\n identityKey: PublicKey | null;\n swarmKey: PublicKey | null;\n target: string | null;\n};\n\ninterface InvitationReducerState {\n status: Invitation.State; // TODO(burdon): Rename state.\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n observable?: CancellableInvitationObservable | AuthenticatingInvitationObservable;\n id?: string;\n invitationCode?: string;\n authCode?: string;\n}\n\nexport type InvitationAction =\n | {\n status:\n | Invitation.State.INIT\n | Invitation.State.CONNECTED\n | Invitation.State.READY_FOR_AUTHENTICATION\n | Invitation.State.AUTHENTICATING;\n }\n | {\n status: Invitation.State.CONNECTING;\n observable: CancellableInvitationObservable;\n }\n | {\n status: Invitation.State.SUCCESS;\n result: InvitationResult;\n }\n | {\n status: Invitation.State.CANCELLED | Invitation.State.TIMEOUT;\n haltedAt: Invitation.State;\n }\n | {\n status: Invitation.State.ERROR;\n error?: Error;\n haltedAt: Invitation.State;\n };\n\nexport type InvitationStatus = {\n id?: string;\n invitationCode?: string;\n authCode?: string;\n authMethod?: Invitation.AuthMethod;\n type?: Invitation.Type;\n status: Invitation.State;\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n cancel(): void;\n // TODO(wittjosiah): Remove?\n connect(observable: CancellableInvitationObservable): void;\n authenticate(authCode: string): Promise<void>;\n};\n\nexport const useInvitationStatus = (initialObservable?: CancellableInvitationObservable): InvitationStatus => {\n const [state, dispatch] = useReducer<Reducer<InvitationReducerState, InvitationAction>, null>(\n (prev, action) => {\n log('useInvitationStatus', { action });\n return {\n ...prev,\n // TODO(burdon): State.\n status: action.status,\n // `invitationObservable`, `secret`, and `result` is persisted between the status-actions that set them.\n result: action.status === Invitation.State.SUCCESS ? action.result : prev.result,\n // `error` gets set each time we enter the error state\n ...(action.status === Invitation.State.ERROR && { error: action.error }),\n // `haltedAt` gets set on only the first error/cancelled/timeout action and reset on any others.\n ...((action.status === Invitation.State.ERROR ||\n action.status === Invitation.State.CANCELLED ||\n action.status === Invitation.State.TIMEOUT) && {\n haltedAt: typeof prev.haltedAt === 'undefined' ? action.haltedAt : prev.haltedAt,\n }),\n observable:\n action.status === Invitation.State.CONNECTING ? action.observable ?? prev.observable : prev.observable,\n } as InvitationReducerState;\n },\n null,\n (_arg: null) => {\n return {\n status: Invitation.State.INIT,\n result: { spaceKey: null, identityKey: null, swarmKey: null, target: null },\n observable: initialObservable,\n };\n },\n );\n\n // Handle unmount.\n\n useEffect(() => {\n const update = (invitation: Invitation) => {\n switch (invitation.state) {\n case Invitation.State.CONNECTED:\n case Invitation.State.READY_FOR_AUTHENTICATION:\n case Invitation.State.AUTHENTICATING: {\n dispatch({\n status: invitation.state,\n });\n break;\n }\n\n case Invitation.State.SUCCESS: {\n dispatch({\n status: invitation.state,\n result: {\n spaceKey: invitation.spaceKey || null,\n identityKey: invitation.identityKey || null,\n swarmKey: invitation.swarmKey || null,\n target: invitation.target || null,\n },\n });\n break;\n }\n\n case Invitation.State.CANCELLED:\n case Invitation.State.TIMEOUT: {\n dispatch({ status: invitation.state, haltedAt: state.status });\n break;\n }\n }\n };\n\n const subscription = state.observable?.subscribe(update, (err: Error) => {\n dispatch({ status: Invitation.State.ERROR, error: err, haltedAt: state.status });\n });\n\n const currentState = state.observable?.get();\n if (currentState) {\n update(currentState);\n }\n\n return () => subscription?.unsubscribe();\n }, [state.observable, state.status]);\n\n // Return memoized callbacks & values.\n\n const connect = useCallback((observable: CancellableInvitationObservable) => {\n dispatch({ status: Invitation.State.CONNECTING, observable });\n }, []);\n\n const authenticate = useCallback(\n (authCode: string) => {\n log('authenticating...', { authCode });\n return (state.observable as AuthenticatingInvitationObservable).authenticate(authCode);\n },\n [state.observable],\n );\n\n const cancel = useCallback(async () => state.observable?.cancel(), [state.observable]);\n\n return useMemo(() => {\n const invitation = state.observable?.get();\n const result = {\n status: state.status,\n haltedAt: state.haltedAt,\n result: state.result,\n error: state.error,\n cancel,\n connect,\n authenticate,\n id: invitation?.invitationId,\n invitationCode: invitation ? InvitationEncoder.encode(invitation) : undefined,\n authCode: invitation?.authCode,\n authMethod: invitation?.authMethod,\n type: invitation?.type,\n };\n\n return result;\n }, [state, cancel, connect, authenticate]);\n};\n"],
5
- "mappings": "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",
6
- "names": ["AuthenticatingInvitationObservable", "CancellableInvitationObservable", "InvitationEncoder", "Invitation", "InvitationsProxy", "useReducer", "useMemo", "useCallback", "useEffect", "Invitation", "InvitationEncoder", "log", "useInvitationStatus", "initialObservable", "state", "dispatch", "prev", "action", "status", "result", "State", "SUCCESS", "ERROR", "error", "CANCELLED", "TIMEOUT", "haltedAt", "observable", "CONNECTING", "_arg", "INIT", "spaceKey", "identityKey", "swarmKey", "target", "update", "invitation", "CONNECTED", "READY_FOR_AUTHENTICATION", "AUTHENTICATING", "subscription", "subscribe", "err", "currentState", "get", "unsubscribe", "connect", "authenticate", "authCode", "cancel", "id", "invitationId", "invitationCode", "encode", "undefined", "authMethod", "type"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/invitations/index.ts", "../../../src/invitations/useInvitationStatus.ts"],
4
- "sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n InvitationEncoder,\n Invitation,\n type Invitations,\n InvitationsProxy,\n} from '@dxos/client/invitations';\n\nexport * from './useInvitationStatus';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useReducer, type Reducer, useMemo, useCallback, useEffect } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport {\n type AuthenticatingInvitationObservable,\n type CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n} from '@dxos/client/invitations';\nimport { log } from '@dxos/log';\n\nexport type InvitationResult = {\n spaceKey: PublicKey | null;\n identityKey: PublicKey | null;\n swarmKey: PublicKey | null;\n target: string | null;\n};\n\ninterface InvitationReducerState {\n status: Invitation.State; // TODO(burdon): Rename state.\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n observable?: CancellableInvitationObservable | AuthenticatingInvitationObservable;\n id?: string;\n invitationCode?: string;\n authCode?: string;\n}\n\nexport type InvitationAction =\n | {\n status:\n | Invitation.State.INIT\n | Invitation.State.CONNECTED\n | Invitation.State.READY_FOR_AUTHENTICATION\n | Invitation.State.AUTHENTICATING;\n }\n | {\n status: Invitation.State.CONNECTING;\n observable: CancellableInvitationObservable;\n }\n | {\n status: Invitation.State.SUCCESS;\n result: InvitationResult;\n }\n | {\n status: Invitation.State.CANCELLED | Invitation.State.TIMEOUT;\n haltedAt: Invitation.State;\n }\n | {\n status: Invitation.State.ERROR;\n error?: Error;\n haltedAt: Invitation.State;\n };\n\nexport type InvitationStatus = {\n id?: string;\n invitationCode?: string;\n authCode?: string;\n authMethod?: Invitation.AuthMethod;\n type?: Invitation.Type;\n status: Invitation.State;\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n cancel(): void;\n // TODO(wittjosiah): Remove?\n connect(observable: CancellableInvitationObservable): void;\n authenticate(authCode: string): Promise<void>;\n};\n\nexport const useInvitationStatus = (initialObservable?: CancellableInvitationObservable): InvitationStatus => {\n const [state, dispatch] = useReducer<Reducer<InvitationReducerState, InvitationAction>, null>(\n (prev, action) => {\n log('useInvitationStatus', { action });\n return {\n ...prev,\n // TODO(burdon): State.\n status: action.status,\n // `invitationObservable`, `secret`, and `result` is persisted between the status-actions that set them.\n result: action.status === Invitation.State.SUCCESS ? action.result : prev.result,\n // `error` gets set each time we enter the error state\n ...(action.status === Invitation.State.ERROR && { error: action.error }),\n // `haltedAt` gets set on only the first error/cancelled/timeout action and reset on any others.\n ...((action.status === Invitation.State.ERROR ||\n action.status === Invitation.State.CANCELLED ||\n action.status === Invitation.State.TIMEOUT) && {\n haltedAt: typeof prev.haltedAt === 'undefined' ? action.haltedAt : prev.haltedAt,\n }),\n observable:\n action.status === Invitation.State.CONNECTING ? action.observable ?? prev.observable : prev.observable,\n } as InvitationReducerState;\n },\n null,\n (_arg: null) => {\n return {\n status: Invitation.State.INIT,\n result: { spaceKey: null, identityKey: null, swarmKey: null, target: null },\n observable: initialObservable,\n };\n },\n );\n\n // Handle unmount.\n\n useEffect(() => {\n const update = (invitation: Invitation) => {\n switch (invitation.state) {\n case Invitation.State.CONNECTED:\n case Invitation.State.READY_FOR_AUTHENTICATION:\n case Invitation.State.AUTHENTICATING: {\n dispatch({\n status: invitation.state,\n });\n break;\n }\n\n case Invitation.State.SUCCESS: {\n dispatch({\n status: invitation.state,\n result: {\n spaceKey: invitation.spaceKey || null,\n identityKey: invitation.identityKey || null,\n swarmKey: invitation.swarmKey || null,\n target: invitation.target || null,\n },\n });\n break;\n }\n\n case Invitation.State.CANCELLED:\n case Invitation.State.TIMEOUT: {\n dispatch({ status: invitation.state, haltedAt: state.status });\n break;\n }\n }\n };\n\n const subscription = state.observable?.subscribe(update, (err: Error) => {\n dispatch({ status: Invitation.State.ERROR, error: err, haltedAt: state.status });\n });\n\n const currentState = state.observable?.get();\n if (currentState) {\n update(currentState);\n }\n\n return () => subscription?.unsubscribe();\n }, [state.observable, state.status]);\n\n // Return memoized callbacks & values.\n\n const connect = useCallback((observable: CancellableInvitationObservable) => {\n dispatch({ status: Invitation.State.CONNECTING, observable });\n }, []);\n\n const authenticate = useCallback(\n (authCode: string) => {\n log('authenticating...', { authCode });\n return (state.observable as AuthenticatingInvitationObservable).authenticate(authCode);\n },\n [state.observable],\n );\n\n const cancel = useCallback(async () => state.observable?.cancel(), [state.observable]);\n\n return useMemo(() => {\n const invitation = state.observable?.get();\n const result = {\n status: state.status,\n haltedAt: state.haltedAt,\n result: state.result,\n error: state.error,\n cancel,\n connect,\n authenticate,\n id: invitation?.invitationId,\n invitationCode: invitation ? InvitationEncoder.encode(invitation) : undefined,\n authCode: invitation?.authCode,\n authMethod: invitation?.authMethod,\n type: invitation?.type,\n };\n\n return result;\n }, [state, cancel, connect, authenticate]);\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_invitations", "useInvitationStatus", "initialObservable", "state", "dispatch", "useReducer", "prev", "action", "log", "status", "result", "Invitation", "State", "SUCCESS", "ERROR", "error", "CANCELLED", "TIMEOUT", "haltedAt", "observable", "CONNECTING", "_arg", "INIT", "spaceKey", "identityKey", "swarmKey", "target", "useEffect", "update", "invitation", "CONNECTED", "READY_FOR_AUTHENTICATION", "AUTHENTICATING", "subscription", "subscribe", "err", "currentState", "get", "unsubscribe", "connect", "useCallback", "authenticate", "authCode", "cancel", "useMemo", "id", "invitationId", "invitationCode", "InvitationEncoder", "encode", "undefined", "authMethod", "type"]
7
- }