@powerhousedao/reactor-browser 5.1.0-dev.4 → 5.1.0-dev.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -3
- package/dist/src/actions/dispatch.d.ts +16 -2
- package/dist/src/actions/dispatch.d.ts.map +1 -1
- package/dist/src/actions/dispatch.js +20 -2
- package/dist/src/actions/dispatch.js.map +1 -1
- package/dist/src/actions/document.d.ts +7 -4
- package/dist/src/actions/document.d.ts.map +1 -1
- package/dist/src/actions/document.js +302 -131
- package/dist/src/actions/document.js.map +1 -1
- package/dist/src/actions/drive.d.ts +2 -2
- package/dist/src/actions/drive.d.ts.map +1 -1
- package/dist/src/actions/drive.js +153 -50
- package/dist/src/actions/drive.js.map +1 -1
- package/dist/src/actions/queue.d.ts.map +1 -1
- package/dist/src/actions/queue.js +48 -24
- package/dist/src/actions/queue.js.map +1 -1
- package/dist/src/actions/sign.js +1 -1
- package/dist/src/actions/sign.js.map +1 -1
- package/dist/src/document-cache.d.ts +17 -0
- package/dist/src/document-cache.d.ts.map +1 -0
- package/dist/src/document-cache.js +143 -0
- package/dist/src/document-cache.js.map +1 -0
- package/dist/src/errors.js +1 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/add-ph-event-handlers.d.ts.map +1 -1
- package/dist/src/hooks/add-ph-event-handlers.js +11 -2
- package/dist/src/hooks/add-ph-event-handlers.js.map +1 -1
- package/dist/src/hooks/config/connect.d.ts +2 -2
- package/dist/src/hooks/connect.d.ts +1 -1
- package/dist/src/hooks/connect.d.ts.map +1 -1
- package/dist/src/hooks/connect.js +1 -1
- package/dist/src/hooks/connect.js.map +1 -1
- package/dist/src/hooks/dispatch.d.ts +7 -2
- package/dist/src/hooks/dispatch.d.ts.map +1 -1
- package/dist/src/hooks/dispatch.js +13 -3
- package/dist/src/hooks/dispatch.js.map +1 -1
- package/dist/src/hooks/document-by-id.d.ts +1 -1
- package/dist/src/hooks/document-by-id.d.ts.map +1 -1
- package/dist/src/hooks/document-by-id.js +3 -3
- package/dist/src/hooks/document-by-id.js.map +1 -1
- package/dist/src/hooks/document-cache.d.ts +19 -3
- package/dist/src/hooks/document-cache.d.ts.map +1 -1
- package/dist/src/hooks/document-cache.js +41 -14
- package/dist/src/hooks/document-cache.js.map +1 -1
- package/dist/src/hooks/features.d.ts +5 -0
- package/dist/src/hooks/features.d.ts.map +1 -0
- package/dist/src/hooks/features.js +6 -0
- package/dist/src/hooks/features.js.map +1 -0
- package/dist/src/hooks/index.d.ts +6 -3
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +6 -3
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/reactor.d.ts +39 -6
- package/dist/src/hooks/reactor.d.ts.map +1 -1
- package/dist/src/hooks/reactor.js +41 -6
- package/dist/src/hooks/reactor.js.map +1 -1
- package/dist/src/hooks/selected-document.d.ts +3 -1
- package/dist/src/hooks/selected-document.d.ts.map +1 -1
- package/dist/src/hooks/selected-document.js +9 -0
- package/dist/src/hooks/selected-document.js.map +1 -1
- package/dist/src/hooks/selected-drive.d.ts.map +1 -1
- package/dist/src/hooks/selected-drive.js +3 -3
- package/dist/src/hooks/selected-drive.js.map +1 -1
- package/dist/src/hooks/selected-node.d.ts.map +1 -1
- package/dist/src/hooks/selected-node.js +3 -3
- package/dist/src/hooks/selected-node.js.map +1 -1
- package/dist/src/hooks/toast.d.ts +7 -0
- package/dist/src/hooks/toast.d.ts.map +1 -0
- package/dist/src/hooks/toast.js +9 -0
- package/dist/src/hooks/toast.js.map +1 -0
- package/dist/src/hooks/use-feature-flags.d.ts +44 -0
- package/dist/src/hooks/use-feature-flags.d.ts.map +1 -0
- package/dist/src/hooks/use-feature-flags.js +65 -0
- package/dist/src/hooks/use-feature-flags.js.map +1 -0
- package/dist/src/hooks/vetra-packages.d.ts.map +1 -1
- package/dist/src/hooks/vetra-packages.js +3 -1
- package/dist/src/hooks/vetra-packages.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/pglite/drop.d.ts +3 -0
- package/dist/src/pglite/drop.d.ts.map +1 -0
- package/dist/src/pglite/drop.js +19 -0
- package/dist/src/pglite/drop.js.map +1 -0
- package/dist/src/pglite/index.d.ts +1 -0
- package/dist/src/pglite/index.d.ts.map +1 -1
- package/dist/src/pglite/index.js +1 -0
- package/dist/src/pglite/index.js.map +1 -1
- package/dist/src/reactor-client-document-cache.d.ts +31 -0
- package/dist/src/reactor-client-document-cache.d.ts.map +1 -0
- package/dist/src/reactor-client-document-cache.js +142 -0
- package/dist/src/reactor-client-document-cache.js.map +1 -0
- package/dist/src/reactor.d.ts +5 -6
- package/dist/src/reactor.d.ts.map +1 -1
- package/dist/src/reactor.js +36 -61
- package/dist/src/reactor.js.map +1 -1
- package/dist/src/renown/utils.d.ts.map +1 -1
- package/dist/src/renown/utils.js +2 -2
- package/dist/src/renown/utils.js.map +1 -1
- package/dist/src/types/documents.d.ts +10 -5
- package/dist/src/types/documents.d.ts.map +1 -1
- package/dist/src/types/global.d.ts +15 -1
- package/dist/src/types/global.d.ts.map +1 -1
- package/dist/src/types/index.d.ts +1 -0
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/modals.d.ts +2 -0
- package/dist/src/types/modals.d.ts.map +1 -1
- package/dist/src/types/toast.d.ts +9 -0
- package/dist/src/types/toast.d.ts.map +1 -0
- package/dist/src/types/toast.js +2 -0
- package/dist/src/types/toast.js.map +1 -0
- package/dist/src/utils/drives.d.ts.map +1 -1
- package/dist/src/utils/drives.js +41 -24
- package/dist/src/utils/drives.js.map +1 -1
- package/dist/src/utils/url.d.ts +4 -0
- package/dist/src/utils/url.d.ts.map +1 -1
- package/dist/src/utils/url.js +7 -0
- package/dist/src/utils/url.js.map +1 -1
- package/dist/test/document-cache.test.d.ts +2 -0
- package/dist/test/document-cache.test.d.ts.map +1 -0
- package/dist/test/document-cache.test.js +457 -0
- package/dist/test/document-cache.test.js.map +1 -0
- package/dist/test/drop.test.d.ts +2 -0
- package/dist/test/drop.test.d.ts.map +1 -0
- package/dist/test/drop.test.js +86 -0
- package/dist/test/drop.test.js.map +1 -0
- package/dist/test/getSwitchboardUrl.test.js +3 -1
- package/dist/test/getSwitchboardUrl.test.js.map +1 -1
- package/dist/test/hooks/document-cache.test.d.ts +2 -0
- package/dist/test/hooks/document-cache.test.d.ts.map +1 -0
- package/dist/test/hooks/document-cache.test.js +642 -0
- package/dist/test/hooks/document-cache.test.js.map +1 -0
- package/dist/test/switchboard.test.js +4 -2
- package/dist/test/switchboard.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +9 -7
|
@@ -1,9 +1,44 @@
|
|
|
1
1
|
import { makePHEventFunctions } from "./make-ph-event-functions.js";
|
|
2
|
-
const
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
const legacyEventFunctions = makePHEventFunctions("legacyReactor");
|
|
3
|
+
const reactorClientModuleEventFunctions = makePHEventFunctions("reactorClientModule");
|
|
4
|
+
const reactorClientEventFunctions = makePHEventFunctions("reactorClient");
|
|
5
|
+
const syncEventFunctions = makePHEventFunctions("sync");
|
|
6
|
+
/** Returns the legacy reactor */
|
|
7
|
+
export const useLegacyReactor = legacyEventFunctions.useValue;
|
|
8
|
+
/** Sets the legacy reactor */
|
|
9
|
+
export const setLegacyReactor = legacyEventFunctions.setValue;
|
|
7
10
|
/** Adds an event handler for the reactor */
|
|
8
|
-
export const
|
|
11
|
+
export const addLegacyReactorEventHandler = legacyEventFunctions.addEventHandler;
|
|
12
|
+
/** Returns the reactor client module */
|
|
13
|
+
export const useReactorClientModule = reactorClientModuleEventFunctions.useValue;
|
|
14
|
+
/** Sets the reactor client module */
|
|
15
|
+
export const setReactorClientModule = reactorClientModuleEventFunctions.setValue;
|
|
16
|
+
/** Adds an event handler for the reactor client module */
|
|
17
|
+
export const addReactorClientModuleEventHandler = reactorClientModuleEventFunctions.addEventHandler;
|
|
18
|
+
/** Returns the reactor client */
|
|
19
|
+
export const useReactorClient = reactorClientEventFunctions.useValue;
|
|
20
|
+
/** Sets the reactor client */
|
|
21
|
+
export const setReactorClient = reactorClientEventFunctions.setValue;
|
|
22
|
+
/** Adds an event handler for the reactor client */
|
|
23
|
+
export const addReactorClientEventHandler = reactorClientEventFunctions.addEventHandler;
|
|
24
|
+
/** Returns the sync manager */
|
|
25
|
+
export const useSync = syncEventFunctions.useValue;
|
|
26
|
+
/** Sets the sync manager */
|
|
27
|
+
export const setSync = syncEventFunctions.setValue;
|
|
28
|
+
/** Adds an event handler for the sync manager */
|
|
29
|
+
export const addSyncEventHandler = syncEventFunctions.addEventHandler;
|
|
30
|
+
const databaseEventFunctions = makePHEventFunctions("database");
|
|
31
|
+
/** Returns the database */
|
|
32
|
+
export const useDatabase = databaseEventFunctions.useValue;
|
|
33
|
+
/** Sets the database */
|
|
34
|
+
export const setDatabase = databaseEventFunctions.setValue;
|
|
35
|
+
/** Adds an event handler for the database */
|
|
36
|
+
export const addDatabaseEventHandler = databaseEventFunctions.addEventHandler;
|
|
37
|
+
const pgliteEventFunctions = makePHEventFunctions("pglite");
|
|
38
|
+
/** Returns the PGlite instance */
|
|
39
|
+
export const usePGlite = pgliteEventFunctions.useValue;
|
|
40
|
+
/** Sets the PGlite instance */
|
|
41
|
+
export const setPGlite = pgliteEventFunctions.setValue;
|
|
42
|
+
/** Adds an event handler for the PGlite instance */
|
|
43
|
+
export const addPGliteEventHandler = pgliteEventFunctions.addEventHandler;
|
|
9
44
|
//# sourceMappingURL=reactor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../src/hooks/reactor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../src/hooks/reactor.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;AACnE,MAAM,iCAAiC,GAAG,oBAAoB,CAC5D,qBAAqB,CACtB,CAAC;AACF,MAAM,2BAA2B,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAC1E,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAExD,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAC3B,oBAAoB,CAAC,QAAQ,CAAC;AAEhC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,gBAAgB,GAC3B,oBAAoB,CAAC,QAAQ,CAAC;AAEhC,4CAA4C;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GACvC,oBAAoB,CAAC,eAAe,CAAC;AAEvC,wCAAwC;AACxC,MAAM,CAAC,MAAM,sBAAsB,GACjC,iCAAiC,CAAC,QAAQ,CAAC;AAE7C,qCAAqC;AACrC,MAAM,CAAC,MAAM,sBAAsB,GACjC,iCAAiC,CAAC,QAAQ,CAAC;AAE7C,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kCAAkC,GAC7C,iCAAiC,CAAC,eAAe,CAAC;AAEpD,iCAAiC;AACjC,MAAM,CAAC,MAAM,gBAAgB,GAC3B,2BAA2B,CAAC,QAAQ,CAAC;AAEvC,8BAA8B;AAC9B,MAAM,CAAC,MAAM,gBAAgB,GAC3B,2BAA2B,CAAC,QAAQ,CAAC;AAEvC,mDAAmD;AACnD,MAAM,CAAC,MAAM,4BAA4B,GACvC,2BAA2B,CAAC,eAAe,CAAC;AAE9C,+BAA+B;AAC/B,MAAM,CAAC,MAAM,OAAO,GAClB,kBAAkB,CAAC,QAAQ,CAAC;AAE9B,4BAA4B;AAC5B,MAAM,CAAC,MAAM,OAAO,GAClB,kBAAkB,CAAC,QAAQ,CAAC;AAE9B,iDAAiD;AACjD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,kBAAkB,CAAC,eAAe,CAAC;AAErC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;AAEhE,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GACtB,sBAAsB,CAAC,QAAQ,CAAC;AAElC,wBAAwB;AACxB,MAAM,CAAC,MAAM,WAAW,GACtB,sBAAsB,CAAC,QAAQ,CAAC;AAElC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,uBAAuB,GAClC,sBAAsB,CAAC,eAAe,CAAC;AAEzC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAE5D,kCAAkC;AAClC,MAAM,CAAC,MAAM,SAAS,GACpB,oBAAoB,CAAC,QAAQ,CAAC;AAEhC,+BAA+B;AAC/B,MAAM,CAAC,MAAM,SAAS,GACpB,oBAAoB,CAAC,QAAQ,CAAC;AAEhC,oDAAoD;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAChC,oBAAoB,CAAC,eAAe,CAAC"}
|
|
@@ -3,7 +3,9 @@ import type { Action, PHDocument } from "document-model";
|
|
|
3
3
|
/** Returns the selected document id */
|
|
4
4
|
export declare function useSelectedDocumentId(): string | undefined;
|
|
5
5
|
/** Returns the selected document. */
|
|
6
|
-
export declare function useSelectedDocument(): readonly [PHDocument
|
|
6
|
+
export declare function useSelectedDocument(): readonly [PHDocument, (actionOrActions: Action | Action[] | undefined, onErrors?: ((errors: Error[]) => void) | undefined, onSuccess?: ((result: PHDocument) => void) | undefined) => void];
|
|
7
|
+
/** Returns the selected document. */
|
|
8
|
+
export declare function useSelectedDocumentSafe(): readonly [PHDocument | undefined, (actionOrActions: Action | Action[] | undefined, onErrors?: ((errors: Error[]) => void) | undefined, onSuccess?: ((result: PHDocument) => void) | undefined) => void];
|
|
7
9
|
/** Returns the selected document of a specific type, throws an error if the found document has a different type */
|
|
8
10
|
export declare function useSelectedDocumentOfType(documentType: null | undefined): never[];
|
|
9
11
|
export declare function useSelectedDocumentOfType<TDocument extends PHDocument, TAction extends Action>(documentType: string): [TDocument, DocumentDispatch<TAction>];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selected-document.d.ts","sourceRoot":"","sources":["../../../src/hooks/selected-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMzD,uCAAuC;AACvC,wBAAgB,qBAAqB,uBAGpC;AAED,qCAAqC;AACrC,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"selected-document.d.ts","sourceRoot":"","sources":["../../../src/hooks/selected-document.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAMzD,uCAAuC;AACvC,wBAAgB,qBAAqB,uBAGpC;AAED,qCAAqC;AACrC,wBAAgB,mBAAmB,gMAOlC;AAED,qCAAqC;AACrC,wBAAgB,uBAAuB,4MAGtC;AAED,mHAAmH;AACnH,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,IAAI,GAAG,SAAS,GAC7B,KAAK,EAAE,CAAC;AACX,wBAAgB,yBAAyB,CACvC,SAAS,SAAS,UAAU,EAC5B,OAAO,SAAS,MAAM,EACtB,YAAY,EAAE,MAAM,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -10,6 +10,15 @@ export function useSelectedDocumentId() {
|
|
|
10
10
|
}
|
|
11
11
|
/** Returns the selected document. */
|
|
12
12
|
export function useSelectedDocument() {
|
|
13
|
+
const selectedDocumentId = useSelectedDocumentId();
|
|
14
|
+
const [document, dispatch] = useDocumentById(selectedDocumentId);
|
|
15
|
+
if (!document) {
|
|
16
|
+
throw new NoSelectedDocumentError();
|
|
17
|
+
}
|
|
18
|
+
return [document, dispatch];
|
|
19
|
+
}
|
|
20
|
+
/** Returns the selected document. */
|
|
21
|
+
export function useSelectedDocumentSafe() {
|
|
13
22
|
const selectedDocumentId = useSelectedDocumentId();
|
|
14
23
|
return useDocumentById(selectedDocumentId);
|
|
15
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selected-document.js","sourceRoot":"","sources":["../../../src/hooks/selected-document.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,uCAAuC;AACvC,MAAM,UAAU,qBAAqB;IACnC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,mBAAmB;IACjC,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD,OAAO,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC7C,CAAC;AAUD,MAAM,UAAU,yBAAyB,CAIvC,YAAuC;IAEvC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAE3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,iBAAiB,CAAqB,UAAU,EAAE,YAAY,CAAC,CAAC;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"selected-document.js","sourceRoot":"","sources":["../../../src/hooks/selected-document.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,uCAAuC;AACvC,MAAM,UAAU,qBAAqB;IACnC,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,OAAO,YAAY,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,mBAAmB;IACjC,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAU,CAAC;AACvC,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,uBAAuB;IACrC,MAAM,kBAAkB,GAAG,qBAAqB,EAAE,CAAC;IACnD,OAAO,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAC7C,CAAC;AAUD,MAAM,UAAU,yBAAyB,CAIvC,YAAuC;IAEvC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC;IAE3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,uBAAuB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,iBAAiB,CAAqB,UAAU,EAAE,YAAY,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selected-drive.d.ts","sourceRoot":"","sources":["../../../src/hooks/selected-drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"selected-drive.d.ts","sourceRoot":"","sources":["../../../src/hooks/selected-drive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,gBAAgB,CAAC;AAYxB,oCAAoC;AACpC,eAAO,MAAM,kBAAkB,0BAAyC,CAAC;AAKzE,sDAAsD;AACtD,eAAO,MAAM,8BAA8B,YACI,CAAC;AAEhD,iCAAiC;AACjC,wBAAgB,gBAAgB,mEAS/B;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,qGAenC;AAED,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,QA0B7D;AAED,wBAAgB,yCAAyC,SASxD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { extractDriveIdFromPath, resolveUrlPathname } from "../utils/url.js";
|
|
1
|
+
import { createUrlWithPreservedParams, extractDriveIdFromPath, resolveUrlPathname, } from "../utils/url.js";
|
|
2
2
|
import { useDispatch } from "./dispatch.js";
|
|
3
3
|
import { useDrives } from "./drives.js";
|
|
4
4
|
import { makePHEventFunctions } from "./make-ph-event-functions.js";
|
|
@@ -41,14 +41,14 @@ export function setSelectedDrive(driveOrDriveSlug) {
|
|
|
41
41
|
if (pathname === window.location.pathname) {
|
|
42
42
|
return;
|
|
43
43
|
}
|
|
44
|
-
window.history.pushState(null, "", pathname);
|
|
44
|
+
window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
47
|
const pathname = resolveUrlPathname(`/d/${driveSlug}`);
|
|
48
48
|
if (pathname === window.location.pathname) {
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
|
-
window.history.pushState(null, "", pathname);
|
|
51
|
+
window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
|
|
52
52
|
}
|
|
53
53
|
export function addSetSelectedDriveOnPopStateEventHandler() {
|
|
54
54
|
window.addEventListener("popstate", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selected-drive.js","sourceRoot":"","sources":["../../../src/hooks/selected-drive.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"selected-drive.js","sourceRoot":"","sources":["../../../src/hooks/selected-drive.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selected-node.d.ts","sourceRoot":"","sources":["../../../src/hooks/selected-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"selected-node.d.ts","sourceRoot":"","sources":["../../../src/hooks/selected-node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAe3C,eAAO,MAAM,6BAA6B,YACI,CAAC;AAE/C,iCAAiC;AACjC,wBAAgB,eAAe,IAAI,IAAI,GAAG,SAAS,CAIlD;AAED,+CAA+C;AAC/C,wBAAgB,eAAe,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,QAwBxE;AAED,wBAAgB,gCAAgC,SAI/C;AAED,wBAAgB,wCAAwC,SASvD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { extractDriveSlugFromPath, extractNodeIdFromSlug, extractNodeSlugFromPath, makeNodeSlug, resolveUrlPathname, } from "../utils/url.js";
|
|
1
|
+
import { createUrlWithPreservedParams, extractDriveSlugFromPath, extractNodeIdFromSlug, extractNodeSlugFromPath, makeNodeSlug, resolveUrlPathname, } from "../utils/url.js";
|
|
2
2
|
import { useNodesInSelectedDrive } from "./items-in-selected-drive.js";
|
|
3
3
|
import { makePHEventFunctions } from "./make-ph-event-functions.js";
|
|
4
4
|
const selectedNodeIdEventFunctions = makePHEventFunctions("selectedNodeId");
|
|
@@ -27,14 +27,14 @@ export function setSelectedNode(nodeOrNodeSlug) {
|
|
|
27
27
|
if (pathname === window.location.pathname) {
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
window.history.pushState(null, "", pathname);
|
|
30
|
+
window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
|
|
31
31
|
return;
|
|
32
32
|
}
|
|
33
33
|
const pathname = resolveUrlPathname(`/d/${driveSlugFromPath}/${nodeSlug}`);
|
|
34
34
|
if (pathname === window.location.pathname) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
|
-
window.history.pushState(null, "", pathname);
|
|
37
|
+
window.history.pushState(null, "", createUrlWithPreservedParams(pathname));
|
|
38
38
|
}
|
|
39
39
|
export function addResetSelectedNodeEventHandler() {
|
|
40
40
|
window.addEventListener("ph:selectedDriveIdUpdated", () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selected-node.js","sourceRoot":"","sources":["../../../src/hooks/selected-node.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,4BAA4B,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC5E,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,QAAQ,CAAC;AAChE,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,QAAQ,CAAC;AAChE,MAAM,CAAC,MAAM,6BAA6B,GACxC,4BAA4B,CAAC,eAAe,CAAC;AAE/C,iCAAiC;AACjC,MAAM,UAAU,eAAe;IAC7B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;AACrD,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,eAAe,CAAC,cAAyC;IACvE,MAAM,QAAQ,GACZ,OAAO,cAAc,KAAK,QAAQ;QAChC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/C,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC;QAC/D,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"selected-node.js","sourceRoot":"","sources":["../../../src/hooks/selected-node.ts"],"names":[],"mappings":"AACA,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,4BAA4B,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAC5E,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,QAAQ,CAAC;AAChE,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,QAAQ,CAAC;AAChE,MAAM,CAAC,MAAM,6BAA6B,GACxC,4BAA4B,CAAC,eAAe,CAAC;AAE/C,iCAAiC;AACjC,MAAM,UAAU,eAAe;IAC7B,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,uBAAuB,EAAE,CAAC;IACxC,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC;AACrD,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,eAAe,CAAC,cAAyC;IACvE,MAAM,QAAQ,GACZ,OAAO,cAAc,KAAK,QAAQ;QAChC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAC/C,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7E,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,iBAAiB,EAAE,CAAC,CAAC;QAC/D,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,iBAAiB,IAAI,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IACD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,gCAAgC;IAC9C,MAAM,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACxD,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wCAAwC;IACtD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC1C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC;QACjD,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;YAChC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Returns the toast function */
|
|
2
|
+
export declare const usePHToast: () => import("../index.js").PHToastFn | undefined;
|
|
3
|
+
/** Sets the toast function */
|
|
4
|
+
export declare const setPHToast: (value: import("../index.js").PHToastFn | undefined) => void;
|
|
5
|
+
/** Adds an event handler for the toast */
|
|
6
|
+
export declare const addToastEventHandler: () => void;
|
|
7
|
+
//# sourceMappingURL=toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.d.ts","sourceRoot":"","sources":["../../../src/hooks/toast.ts"],"names":[],"mappings":"AAIA,iCAAiC;AACjC,eAAO,MAAM,UAAU,mDAA+B,CAAC;AAEvD,8BAA8B;AAC9B,eAAO,MAAM,UAAU,8DAA+B,CAAC;AAEvD,0CAA0C;AAC1C,eAAO,MAAM,oBAAoB,YAAsC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { makePHEventFunctions } from "./make-ph-event-functions.js";
|
|
2
|
+
const toastEventFunctions = makePHEventFunctions("toast");
|
|
3
|
+
/** Returns the toast function */
|
|
4
|
+
export const usePHToast = toastEventFunctions.useValue;
|
|
5
|
+
/** Sets the toast function */
|
|
6
|
+
export const setPHToast = toastEventFunctions.setValue;
|
|
7
|
+
/** Adds an event handler for the toast */
|
|
8
|
+
export const addToastEventHandler = toastEventFunctions.addEventHandler;
|
|
9
|
+
//# sourceMappingURL=toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast.js","sourceRoot":"","sources":["../../../src/hooks/toast.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE1D,iCAAiC;AACjC,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC;AAEvD,8BAA8B;AAC9B,MAAM,CAAC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC;AAEvD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,eAAe,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Synchronous helper to check if legacy read is enabled.
|
|
3
|
+
* For use in action functions that cannot be async.
|
|
4
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
5
|
+
*/
|
|
6
|
+
export declare function isLegacyReadEnabledSync(): boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Synchronous helper to check if legacy write is enabled.
|
|
9
|
+
* For use in action functions that cannot be async.
|
|
10
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
11
|
+
*/
|
|
12
|
+
export declare function isLegacyWriteEnabledSync(): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Synchronous helper to check if channel sync is enabled.
|
|
15
|
+
* For use in action functions that cannot be async.
|
|
16
|
+
* Defaults to false (legacy sync) if features not loaded.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isChannelSyncEnabledSync(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* React hook to check if legacy read is enabled.
|
|
21
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useLegacyReadEnabled(): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* React hook to check if legacy write is enabled.
|
|
26
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
27
|
+
*/
|
|
28
|
+
export declare function useLegacyWriteEnabled(): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* React hook to check if channel sync is enabled.
|
|
31
|
+
* Defaults to false (legacy sync) if features not loaded.
|
|
32
|
+
*/
|
|
33
|
+
export declare function useChannelSyncEnabled(): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Synchronous helper to check if inspector is enabled.
|
|
36
|
+
* Defaults to false if features not loaded.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isInspectorEnabledSync(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* React hook to check if inspector is enabled.
|
|
41
|
+
* Defaults to false if features not loaded.
|
|
42
|
+
*/
|
|
43
|
+
export declare function useInspectorEnabled(): boolean;
|
|
44
|
+
//# sourceMappingURL=use-feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-feature-flags.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-feature-flags.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAG/C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAG/C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAG7C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { useFeatures } from "./features.js";
|
|
2
|
+
/**
|
|
3
|
+
* Synchronous helper to check if legacy read is enabled.
|
|
4
|
+
* For use in action functions that cannot be async.
|
|
5
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
6
|
+
*/
|
|
7
|
+
export function isLegacyReadEnabledSync() {
|
|
8
|
+
return window.ph?.features?.get("FEATURE_LEGACY_READ_ENABLED") ?? true;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Synchronous helper to check if legacy write is enabled.
|
|
12
|
+
* For use in action functions that cannot be async.
|
|
13
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
14
|
+
*/
|
|
15
|
+
export function isLegacyWriteEnabledSync() {
|
|
16
|
+
return window.ph?.features?.get("FEATURE_LEGACY_WRITE_ENABLED") ?? true;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Synchronous helper to check if channel sync is enabled.
|
|
20
|
+
* For use in action functions that cannot be async.
|
|
21
|
+
* Defaults to false (legacy sync) if features not loaded.
|
|
22
|
+
*/
|
|
23
|
+
export function isChannelSyncEnabledSync() {
|
|
24
|
+
return window.ph?.features?.get("FEATURE_CHANNEL_SYNC_ENABLED") ?? false;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* React hook to check if legacy read is enabled.
|
|
28
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
29
|
+
*/
|
|
30
|
+
export function useLegacyReadEnabled() {
|
|
31
|
+
const features = useFeatures();
|
|
32
|
+
return features?.get("FEATURE_LEGACY_READ_ENABLED") ?? true;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* React hook to check if legacy write is enabled.
|
|
36
|
+
* Defaults to true (legacy enabled) if features not loaded.
|
|
37
|
+
*/
|
|
38
|
+
export function useLegacyWriteEnabled() {
|
|
39
|
+
const features = useFeatures();
|
|
40
|
+
return features?.get("FEATURE_LEGACY_WRITE_ENABLED") ?? true;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* React hook to check if channel sync is enabled.
|
|
44
|
+
* Defaults to false (legacy sync) if features not loaded.
|
|
45
|
+
*/
|
|
46
|
+
export function useChannelSyncEnabled() {
|
|
47
|
+
const features = useFeatures();
|
|
48
|
+
return features?.get("FEATURE_CHANNEL_SYNC_ENABLED") ?? false;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Synchronous helper to check if inspector is enabled.
|
|
52
|
+
* Defaults to false if features not loaded.
|
|
53
|
+
*/
|
|
54
|
+
export function isInspectorEnabledSync() {
|
|
55
|
+
return window.ph?.features?.get("FEATURE_INSPECTOR_ENABLED") ?? false;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* React hook to check if inspector is enabled.
|
|
59
|
+
* Defaults to false if features not loaded.
|
|
60
|
+
*/
|
|
61
|
+
export function useInspectorEnabled() {
|
|
62
|
+
const features = useFeatures();
|
|
63
|
+
return features?.get("FEATURE_INSPECTOR_ENABLED") ?? false;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=use-feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-feature-flags.js","sourceRoot":"","sources":["../../../src/hooks/use-feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,6BAA6B,CAAC,IAAI,IAAI,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,8BAA8B,CAAC,IAAI,IAAI,CAAC;AAC1E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,8BAA8B,CAAC,IAAI,KAAK,CAAC;AAC3E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,EAAE,GAAG,CAAC,6BAA6B,CAAC,IAAI,IAAI,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,EAAE,GAAG,CAAC,8BAA8B,CAAC,IAAI,IAAI,CAAC;AAC/D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB;IACnC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,EAAE,GAAG,CAAC,8BAA8B,CAAC,IAAI,KAAK,CAAC;AAChE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,2BAA2B,CAAC,IAAI,KAAK,CAAC;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,OAAO,QAAQ,EAAE,GAAG,CAAC,2BAA2B,CAAC,IAAI,KAAK,CAAC;AAC7D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vetra-packages.d.ts","sourceRoot":"","sources":["../../../src/hooks/vetra-packages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vetra-packages.d.ts","sourceRoot":"","sources":["../../../src/hooks/vetra-packages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,kCAAsC,CAAC;AAEpE,4CAA4C;AAC5C,eAAO,MAAM,4BAA4B,YACG,CAAC;AAE7C,uDAAuD;AACvD,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,YAAY,EAAE,GAAG,SAAS,QAQzE"}
|
|
@@ -10,6 +10,8 @@ export function setVetraPackages(vetraPackages) {
|
|
|
10
10
|
const documentModelModules = vetraPackages
|
|
11
11
|
?.flatMap((pkg) => pkg.modules.documentModelModules)
|
|
12
12
|
.filter((module) => module !== undefined);
|
|
13
|
-
|
|
13
|
+
if (documentModelModules) {
|
|
14
|
+
window.ph?.legacyReactor?.setDocumentModelModules(documentModelModules);
|
|
15
|
+
}
|
|
14
16
|
}
|
|
15
17
|
//# sourceMappingURL=vetra-packages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vetra-packages.js","sourceRoot":"","sources":["../../../src/hooks/vetra-packages.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vetra-packages.js","sourceRoot":"","sources":["../../../src/hooks/vetra-packages.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,0BAA0B,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;AAEzE,uEAAuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,QAAQ,CAAC;AAEpE,4CAA4C;AAC5C,MAAM,CAAC,MAAM,4BAA4B,GACvC,0BAA0B,CAAC,eAAe,CAAC;AAE7C,uDAAuD;AACvD,MAAM,UAAU,gBAAgB,CAAC,aAAyC;IACxE,0BAA0B,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,oBAAoB,GAAG,aAAa;QACxC,EAAE,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC;SACnD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC5C,IAAI,oBAAoB,EAAE,CAAC;QACzB,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./actions/index.js";
|
|
2
2
|
export * from "./constants.js";
|
|
3
3
|
export * from "./context/index.js";
|
|
4
|
+
export * from "./document-cache.js";
|
|
5
|
+
export * from "./reactor-client-document-cache.js";
|
|
4
6
|
export * from "./document-model.js";
|
|
5
7
|
export * from "./global/index.js";
|
|
6
8
|
export * from "./hooks/index.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export * from "./actions/index.js";
|
|
2
2
|
export * from "./constants.js";
|
|
3
3
|
export * from "./context/index.js";
|
|
4
|
+
export * from "./document-cache.js";
|
|
5
|
+
export * from "./reactor-client-document-cache.js";
|
|
4
6
|
export * from "./document-model.js";
|
|
5
7
|
export * from "./global/index.js";
|
|
6
8
|
export * from "./hooks/index.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oCAAoC,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drop.d.ts","sourceRoot":"","sources":["../../../src/pglite/drop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,wBAAsB,aAAa,CACjC,EAAE,EAAE,MAAM,EACV,MAAM,GAAE,MAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { REACTOR_SCHEMA } from "@powerhousedao/reactor";
|
|
2
|
+
export async function dropAllTables(pg, schema = REACTOR_SCHEMA) {
|
|
3
|
+
await pg.exec(`
|
|
4
|
+
DO $$
|
|
5
|
+
DECLARE
|
|
6
|
+
_schemaname text := '${schema}';
|
|
7
|
+
_tablename text;
|
|
8
|
+
BEGIN
|
|
9
|
+
FOR _tablename IN SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = _schemaname LOOP
|
|
10
|
+
RAISE INFO 'Dropping table %.%', _schemaname, _tablename;
|
|
11
|
+
EXECUTE format('DROP TABLE %I.%I CASCADE;', _schemaname, _tablename);
|
|
12
|
+
END LOOP;
|
|
13
|
+
IF NOT FOUND THEN
|
|
14
|
+
RAISE WARNING 'Schema % does not exist', _schemaname;
|
|
15
|
+
END IF;
|
|
16
|
+
END $$;
|
|
17
|
+
`);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=drop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drop.js","sourceRoot":"","sources":["../../../src/pglite/drop.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAU,EACV,SAAiB,cAAc;IAE/B,MAAM,EAAE,CAAC,IAAI,CAAC;;;2BAGW,MAAM;;;;;;;;;;;CAWhC,CAAC,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pglite/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/pglite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/D,cAAc,kBAAkB,CAAC"}
|
package/dist/src/pglite/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pglite/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/pglite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC/D,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type IReactorClient } from "@powerhousedao/reactor";
|
|
2
|
+
import type { PHDocument } from "document-model";
|
|
3
|
+
import type { IDocumentCache } from "./types/documents.js";
|
|
4
|
+
/**
|
|
5
|
+
* Document cache implementation that uses the new ReactorClient API.
|
|
6
|
+
*
|
|
7
|
+
* This cache subscribes to document change events via IReactorClient.subscribe()
|
|
8
|
+
* and automatically updates the cache when documents are created, updated, or deleted.
|
|
9
|
+
*
|
|
10
|
+
* Use this implementation when FEATURE_LEGACY_READ_ENABLED is false.
|
|
11
|
+
*/
|
|
12
|
+
export declare class ReactorClientDocumentCache implements IDocumentCache {
|
|
13
|
+
private client;
|
|
14
|
+
private documents;
|
|
15
|
+
private batchPromises;
|
|
16
|
+
private listeners;
|
|
17
|
+
private unsubscribe;
|
|
18
|
+
constructor(client: IReactorClient);
|
|
19
|
+
private handleDocumentChange;
|
|
20
|
+
private handleDocumentDeleted;
|
|
21
|
+
private handleDocumentUpdated;
|
|
22
|
+
private invalidateBatchesContaining;
|
|
23
|
+
get(id: string, refetch?: boolean): Promise<PHDocument>;
|
|
24
|
+
getBatch(ids: string[]): Promise<PHDocument[]>;
|
|
25
|
+
subscribe(id: string | string[], callback: () => void): () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Disposes of the cache and unsubscribes from document change events.
|
|
28
|
+
*/
|
|
29
|
+
dispose(): void;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=reactor-client-document-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reactor-client-document-cache.d.ts","sourceRoot":"","sources":["../../src/reactor-client-document-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,EAEV,cAAc,EAEf,MAAM,sBAAsB,CAAC;AAE9B;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,cAAc;IASnD,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,SAAS,CAAmD;IACpE,OAAO,CAAC,aAAa,CAGjB;IACJ,OAAO,CAAC,SAAS,CAAqC;IACtD,OAAO,CAAC,WAAW,CAA6B;gBAE5B,MAAM,EAAE,cAAc;IAM1C,OAAO,CAAC,oBAAoB;IAa5B,OAAO,CAAC,qBAAqB;YAUf,qBAAqB;IAUnC,OAAO,CAAC,2BAA2B;IAQnC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBvD,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IA2D9C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAiBlE;;OAEG;IACH,OAAO,IAAI,IAAI;CAMhB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { DocumentChangeType, } from "@powerhousedao/reactor";
|
|
2
|
+
import { addPromiseState, readPromiseState } from "./document-cache.js";
|
|
3
|
+
/**
|
|
4
|
+
* Document cache implementation that uses the new ReactorClient API.
|
|
5
|
+
*
|
|
6
|
+
* This cache subscribes to document change events via IReactorClient.subscribe()
|
|
7
|
+
* and automatically updates the cache when documents are created, updated, or deleted.
|
|
8
|
+
*
|
|
9
|
+
* Use this implementation when FEATURE_LEGACY_READ_ENABLED is false.
|
|
10
|
+
*/
|
|
11
|
+
export class ReactorClientDocumentCache {
|
|
12
|
+
client;
|
|
13
|
+
documents = new Map();
|
|
14
|
+
batchPromises = new Map();
|
|
15
|
+
listeners = new Map();
|
|
16
|
+
unsubscribe = null;
|
|
17
|
+
constructor(client) {
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.unsubscribe = client.subscribe({}, (event) => {
|
|
20
|
+
this.handleDocumentChange(event);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
handleDocumentChange(event) {
|
|
24
|
+
if (event.type === DocumentChangeType.Deleted) {
|
|
25
|
+
const documentId = event.context?.childId;
|
|
26
|
+
if (documentId) {
|
|
27
|
+
this.handleDocumentDeleted(documentId);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else if (event.type === DocumentChangeType.Updated) {
|
|
31
|
+
for (const doc of event.documents) {
|
|
32
|
+
this.handleDocumentUpdated(doc.header.id).catch(console.warn);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
handleDocumentDeleted(documentId) {
|
|
37
|
+
const listeners = this.listeners.get(documentId);
|
|
38
|
+
this.documents.delete(documentId);
|
|
39
|
+
this.invalidateBatchesContaining(documentId);
|
|
40
|
+
if (listeners) {
|
|
41
|
+
listeners.forEach((listener) => listener());
|
|
42
|
+
}
|
|
43
|
+
this.listeners.delete(documentId);
|
|
44
|
+
}
|
|
45
|
+
async handleDocumentUpdated(documentId) {
|
|
46
|
+
if (this.documents.has(documentId)) {
|
|
47
|
+
await this.get(documentId, true);
|
|
48
|
+
const listeners = this.listeners.get(documentId);
|
|
49
|
+
if (listeners) {
|
|
50
|
+
listeners.forEach((listener) => listener());
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
invalidateBatchesContaining(documentId) {
|
|
55
|
+
for (const key of this.batchPromises.keys()) {
|
|
56
|
+
if (key.split(",").includes(documentId)) {
|
|
57
|
+
this.batchPromises.delete(key);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
get(id, refetch) {
|
|
62
|
+
const currentData = this.documents.get(id);
|
|
63
|
+
if (currentData) {
|
|
64
|
+
if (currentData.status === "pending") {
|
|
65
|
+
return currentData;
|
|
66
|
+
}
|
|
67
|
+
if (!refetch) {
|
|
68
|
+
return currentData;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const documentPromise = this.client
|
|
72
|
+
.get(id)
|
|
73
|
+
.then((result) => result.document);
|
|
74
|
+
this.documents.set(id, addPromiseState(documentPromise));
|
|
75
|
+
return documentPromise;
|
|
76
|
+
}
|
|
77
|
+
getBatch(ids) {
|
|
78
|
+
const key = ids.join(",");
|
|
79
|
+
const cached = this.batchPromises.get(key);
|
|
80
|
+
const hasDeletedDocuments = ids.some((id) => !this.documents.has(id));
|
|
81
|
+
const currentPromises = ids.map((id) => this.get(id));
|
|
82
|
+
if (hasDeletedDocuments) {
|
|
83
|
+
const batchPromise = Promise.all(currentPromises);
|
|
84
|
+
this.batchPromises.set(key, {
|
|
85
|
+
promises: currentPromises,
|
|
86
|
+
promise: batchPromise,
|
|
87
|
+
});
|
|
88
|
+
return batchPromise;
|
|
89
|
+
}
|
|
90
|
+
if (cached) {
|
|
91
|
+
const samePromises = currentPromises.every((p, i) => p === cached.promises[i]);
|
|
92
|
+
if (samePromises) {
|
|
93
|
+
return cached.promise;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
const states = currentPromises.map((p) => readPromiseState(p));
|
|
97
|
+
const allFulfilled = states.every((s) => s.status === "fulfilled");
|
|
98
|
+
if (allFulfilled) {
|
|
99
|
+
const values = states.map((s) => s.value);
|
|
100
|
+
const batchPromise = Promise.resolve(values);
|
|
101
|
+
batchPromise.status = "fulfilled";
|
|
102
|
+
batchPromise.value = values;
|
|
103
|
+
this.batchPromises.set(key, {
|
|
104
|
+
promises: currentPromises,
|
|
105
|
+
promise: batchPromise,
|
|
106
|
+
});
|
|
107
|
+
return batchPromise;
|
|
108
|
+
}
|
|
109
|
+
if (cached) {
|
|
110
|
+
return cached.promise;
|
|
111
|
+
}
|
|
112
|
+
const batchPromise = Promise.all(currentPromises);
|
|
113
|
+
this.batchPromises.set(key, {
|
|
114
|
+
promises: currentPromises,
|
|
115
|
+
promise: batchPromise,
|
|
116
|
+
});
|
|
117
|
+
return batchPromise;
|
|
118
|
+
}
|
|
119
|
+
subscribe(id, callback) {
|
|
120
|
+
const ids = Array.isArray(id) ? id : [id];
|
|
121
|
+
for (const docId of ids) {
|
|
122
|
+
const listeners = this.listeners.get(docId) ?? [];
|
|
123
|
+
this.listeners.set(docId, [...listeners, callback]);
|
|
124
|
+
}
|
|
125
|
+
return () => {
|
|
126
|
+
for (const docId of ids) {
|
|
127
|
+
const listeners = this.listeners.get(docId) ?? [];
|
|
128
|
+
this.listeners.set(docId, listeners.filter((listener) => listener !== callback));
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Disposes of the cache and unsubscribes from document change events.
|
|
134
|
+
*/
|
|
135
|
+
dispose() {
|
|
136
|
+
if (this.unsubscribe) {
|
|
137
|
+
this.unsubscribe();
|
|
138
|
+
this.unsubscribe = null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=reactor-client-document-cache.js.map
|