@xyo-network/react-node 2.41.30 → 2.41.32

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/cjs/contexts/useArchiveArchivists.d.ts +4 -3
  2. package/dist/cjs/contexts/useArchiveArchivists.d.ts.map +1 -1
  3. package/dist/cjs/contexts/useArchiveArchivists.js +26 -5
  4. package/dist/cjs/contexts/useArchiveArchivists.js.map +1 -1
  5. package/dist/cjs/contexts/useMemoryNodeUpdates.d.ts +7 -0
  6. package/dist/cjs/contexts/useMemoryNodeUpdates.d.ts.map +1 -0
  7. package/dist/cjs/contexts/useMemoryNodeUpdates.js +19 -0
  8. package/dist/cjs/contexts/useMemoryNodeUpdates.js.map +1 -0
  9. package/dist/cjs/contexts/useNodeQueryDiviner.d.ts +6 -1
  10. package/dist/cjs/contexts/useNodeQueryDiviner.d.ts.map +1 -1
  11. package/dist/cjs/contexts/useNodeQueryDiviner.js +10 -3
  12. package/dist/cjs/contexts/useNodeQueryDiviner.js.map +1 -1
  13. package/dist/docs.json +385 -100
  14. package/dist/esm/contexts/useArchiveArchivists.d.ts +4 -3
  15. package/dist/esm/contexts/useArchiveArchivists.d.ts.map +1 -1
  16. package/dist/esm/contexts/useArchiveArchivists.js +25 -5
  17. package/dist/esm/contexts/useArchiveArchivists.js.map +1 -1
  18. package/dist/esm/contexts/useMemoryNodeUpdates.d.ts +7 -0
  19. package/dist/esm/contexts/useMemoryNodeUpdates.d.ts.map +1 -0
  20. package/dist/esm/contexts/useMemoryNodeUpdates.js +15 -0
  21. package/dist/esm/contexts/useMemoryNodeUpdates.js.map +1 -0
  22. package/dist/esm/contexts/useNodeQueryDiviner.d.ts +6 -1
  23. package/dist/esm/contexts/useNodeQueryDiviner.d.ts.map +1 -1
  24. package/dist/esm/contexts/useNodeQueryDiviner.js +8 -2
  25. package/dist/esm/contexts/useNodeQueryDiviner.js.map +1 -1
  26. package/package.json +3 -3
  27. package/src/contexts/useArchiveArchivists.tsx +35 -13
  28. package/src/contexts/useMemoryNodeUpdates.tsx +20 -0
  29. package/src/contexts/useNodeQueryDiviner.tsx +16 -2
@@ -1,8 +1,9 @@
1
1
  import { ArchivistWrapper } from '@xyo-network/archivist';
2
2
  interface UseArchiveArchivists {
3
- archivePayloadWrapper?: ArchivistWrapper;
4
- archiveBoundWitnessWrapper?: ArchivistWrapper;
3
+ archivePayloadWrapper: ArchivistWrapper;
4
+ archiveBoundWitnessWrapper: ArchivistWrapper;
5
5
  }
6
- export declare const useArchiveArchivists: (archiveName?: string, required?: boolean) => UseArchiveArchivists;
6
+ export declare const useArchiveArchivistsRaw: (archiveName?: string, required?: boolean, refresher?: unknown) => UseArchiveArchivists | undefined;
7
+ export declare const useArchiveArchivists: (archiveName?: string | undefined, required?: boolean | undefined, refresher?: unknown) => UseArchiveArchivists | undefined;
7
8
  export {};
8
9
  //# sourceMappingURL=useArchiveArchivists.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useArchiveArchivists.d.ts","sourceRoot":"","sources":["../../../src/contexts/useArchiveArchivists.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAOzD,UAAU,oBAAoB;IAC5B,qBAAqB,CAAC,EAAE,gBAAgB,CAAA;IACxC,0BAA0B,CAAC,EAAE,gBAAgB,CAAA;CAC9C;AAED,eAAO,MAAM,oBAAoB,iBAAkB,MAAM,aAAa,OAAO,KAAG,oBAiB/E,CAAA"}
1
+ {"version":3,"file":"useArchiveArchivists.d.ts","sourceRoot":"","sources":["../../../src/contexts/useArchiveArchivists.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAQzD,UAAU,oBAAoB;IAC5B,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,0BAA0B,EAAE,gBAAgB,CAAA;CAC7C;AAID,eAAO,MAAM,uBAAuB,iBAAkB,MAAM,aAAa,OAAO,cAAc,OAAO,KAAG,oBAAoB,GAAG,SA6B9H,CAAA;AAED,eAAO,MAAM,oBAAoB,6HAKhC,CAAA"}
@@ -1,13 +1,33 @@
1
1
  import { ArchivistWrapper } from '@xyo-network/archivist';
2
2
  import { usePromise } from '@xyo-network/react-shared';
3
- import { useMemo } from 'react';
3
+ import { useCallback, useMemo } from 'react';
4
+ import { useMemoryNodeUpdates } from './useMemoryNodeUpdates';
4
5
  import { useNode } from './useNode';
5
- export const useArchiveArchivists = (archiveName, required) => {
6
+ export const useArchiveArchivistsRaw = (archiveName, required, refresher) => {
6
7
  const [node] = useNode(required);
7
- const payloadArchivistReq = useMemo(() => (archiveName && node ? node?.tryResolveWrapped(ArchivistWrapper, { name: [encodeURIComponent(`${archiveName}[payload]`)] }) : undefined), [archiveName, node]);
8
- const boundWitnessArchivistReq = useMemo(() => archiveName && node ? node?.tryResolveWrapped(ArchivistWrapper, { name: [encodeURIComponent(`${archiveName}[boundwitness]`)] }) : undefined, [archiveName, node]);
8
+ const buildReq = useCallback((type) => (archiveName && node) || refresher
9
+ ? node?.tryResolveWrapped(ArchivistWrapper, { name: [encodeURIComponent(`${archiveName}[${type}]`)] })
10
+ : undefined, [archiveName, node, refresher]);
11
+ const payloadArchivistReq = useMemo(() => buildReq('payload'), [buildReq]);
12
+ const boundWitnessArchivistReq = useMemo(() => buildReq('boundwitness'), [buildReq]);
9
13
  const [archivePayloadWrapper] = usePromise(payloadArchivistReq, [payloadArchivistReq]);
10
14
  const [archiveBoundWitnessWrapper] = usePromise(boundWitnessArchivistReq, [boundWitnessArchivistReq]);
11
- return { archiveBoundWitnessWrapper: archiveBoundWitnessWrapper?.shift(), archivePayloadWrapper: archivePayloadWrapper?.shift() };
15
+ const archivists = useMemo(() => {
16
+ if (archiveBoundWitnessWrapper?.[0] && archivePayloadWrapper?.[0]) {
17
+ return {
18
+ archiveBoundWitnessWrapper: archiveBoundWitnessWrapper[0],
19
+ archivePayloadWrapper: archivePayloadWrapper[0],
20
+ };
21
+ }
22
+ else {
23
+ return;
24
+ }
25
+ }, [archiveBoundWitnessWrapper, archivePayloadWrapper]);
26
+ return archivists;
27
+ };
28
+ export const useArchiveArchivists = (...[archive, required, refresher]) => {
29
+ const { resolver } = useMemoryNodeUpdates();
30
+ const archivists = useArchiveArchivistsRaw(archive, required, refresher ?? resolver);
31
+ return archivists;
12
32
  };
13
33
  //# sourceMappingURL=useArchiveArchivists.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useArchiveArchivists.js","sourceRoot":"","sources":["../../../src/contexts/useArchiveArchivists.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,WAAoB,EAAE,QAAkB,EAAwB,EAAE;IACrG,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAa,QAAQ,CAAC,CAAA;IAE5C,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,GAAG,WAAW,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAC9I,CAAC,WAAW,EAAE,IAAI,CAAC,CACpB,CAAA;IACD,MAAM,wBAAwB,GAAG,OAAO,CACtC,GAAG,EAAE,CACH,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,GAAG,WAAW,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAC7I,CAAC,WAAW,EAAE,IAAI,CAAC,CACpB,CAAA;IAED,MAAM,CAAC,qBAAqB,CAAC,GAAG,UAAU,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACtF,MAAM,CAAC,0BAA0B,CAAC,GAAG,UAAU,CAAC,wBAAwB,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAA;IAErG,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,KAAK,EAAE,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,CAAA;AACnI,CAAC,CAAA"}
1
+ {"version":3,"file":"useArchiveArchivists.js","sourceRoot":"","sources":["../../../src/contexts/useArchiveArchivists.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AASnC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,WAAoB,EAAE,QAAkB,EAAE,SAAmB,EAAoC,EAAE;IACzI,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAa,QAAQ,CAAC,CAAA;IAE5C,MAAM,QAAQ,GAAG,WAAW,CAC1B,CAAC,IAAgC,EAAE,EAAE,CACnC,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,SAAS;QAChC,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,EAAE,IAAI,EAAE,CAAC,kBAAkB,CAAC,GAAG,WAAW,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;QACtG,CAAC,CAAC,SAAS,EACf,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC,CAC/B,CAAA;IAED,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC1E,MAAM,wBAAwB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEpF,MAAM,CAAC,qBAAqB,CAAC,GAAG,UAAU,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACtF,MAAM,CAAC,0BAA0B,CAAC,GAAG,UAAU,CAAC,wBAAwB,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAA;IAErG,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,IAAI,0BAA0B,EAAE,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE;YACjE,OAAO;gBACL,0BAA0B,EAAE,0BAA0B,CAAC,CAAC,CAAqB;gBAC7E,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,CAAqB;aACpE,CAAA;SACF;aAAM;YACL,OAAM;SACP;IACH,CAAC,EAAE,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,CAAC,CAAA;IAEvD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAa,EAAE,EAAE;IACpF,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,IAAI,QAAQ,CAAC,CAAA;IAEpF,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { ModuleResolver } from '@xyo-network/module-model';
2
+ export declare const useMemoryNodeUpdates: () => {
3
+ resolver: ModuleResolver<import("@xyo-network/module-model").Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
4
+ schema: string;
5
+ }>> | undefined;
6
+ };
7
+ //# sourceMappingURL=useMemoryNodeUpdates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMemoryNodeUpdates.d.ts","sourceRoot":"","sources":["../../../src/contexts/useMemoryNodeUpdates.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM1D,eAAO,MAAM,oBAAoB;;;;CAahC,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { useNode } from './useNode';
3
+ export const useMemoryNodeUpdates = () => {
4
+ const [node] = useNode();
5
+ const [resolver, seResolver] = useState();
6
+ useEffect(() => {
7
+ if (node) {
8
+ node.on('moduleResolverChanged', ({ resolver }) => {
9
+ seResolver(resolver);
10
+ });
11
+ }
12
+ }, [node]);
13
+ return { resolver };
14
+ };
15
+ //# sourceMappingURL=useMemoryNodeUpdates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMemoryNodeUpdates.js","sourceRoot":"","sources":["../../../src/contexts/useMemoryNodeUpdates.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAc,CAAA;IACpC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,QAAQ,EAAkB,CAAA;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAChD,UAAU,CAAC,QAAQ,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;SACH;IACH,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEV,OAAO,EAAE,QAAQ,EAAE,CAAA;AACrB,CAAC,CAAA"}
@@ -1,3 +1,8 @@
1
1
  import { XyoPayload, XyoPayloads } from '@xyo-network/payload-model';
2
- export declare const useNodeQueryDiviner: (moduleIdentifier?: string, query?: XyoPayload) => [XyoPayloads | undefined, Error | undefined];
2
+ export declare const useNodeQueryDivinerRaw: (moduleIdentifier?: string, query?: XyoPayload, refresher?: unknown) => [XyoPayloads | undefined, Error | undefined];
3
+ export declare const useNodeQueryDiviner: (moduleIdentifier?: string | undefined, query?: (import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
4
+ schema: string;
5
+ }) | undefined, refresher?: unknown) => [XyoPayloads<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
6
+ schema: string;
7
+ }> | undefined, Error | undefined];
3
8
  //# sourceMappingURL=useNodeQueryDiviner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNodeQueryDiviner.d.ts","sourceRoot":"","sources":["../../../src/contexts/useNodeQueryDiviner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAMpE,eAAO,MAAM,mBAAmB,sBAAuB,MAAM,UAAU,UAAU,KAAG,CAAC,WAAW,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA2B9H,CAAA"}
1
+ {"version":3,"file":"useNodeQueryDiviner.d.ts","sourceRoot":"","sources":["../../../src/contexts/useNodeQueryDiviner.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AASpE,eAAO,MAAM,sBAAsB,sBACd,MAAM,UACjB,UAAU,cACN,OAAO,KAClB,CAAC,WAAW,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA2B7C,CAAA;AAED,eAAO,MAAM,mBAAmB;;;;kCAK/B,CAAA"}
@@ -2,8 +2,9 @@ import { useAsyncEffect } from '@xylabs/react-shared';
2
2
  import { DivinerWrapper } from '@xyo-network/diviner-wrapper';
3
3
  import { assertDefinedEx } from '@xyo-network/react-shared';
4
4
  import { useState } from 'react';
5
+ import { useMemoryNodeUpdates } from './useMemoryNodeUpdates';
5
6
  import { useNode } from './useNode';
6
- export const useNodeQueryDiviner = (moduleIdentifier, query) => {
7
+ export const useNodeQueryDivinerRaw = (moduleIdentifier, query, refresher) => {
7
8
  const [result, setResult] = useState();
8
9
  const [error, setError] = useState();
9
10
  const [node] = useNode();
@@ -24,7 +25,12 @@ export const useNodeQueryDiviner = (moduleIdentifier, query) => {
24
25
  setError(e);
25
26
  }
26
27
  }
27
- }, [moduleIdentifier, node, query]);
28
+ }, [moduleIdentifier, node, query, refresher]);
29
+ return [result, error];
30
+ };
31
+ export const useNodeQueryDiviner = (...[moduleIdentifier, query, refresher]) => {
32
+ const { resolver } = useMemoryNodeUpdates();
33
+ const [result, error] = useNodeQueryDivinerRaw(moduleIdentifier, query, refresher ?? resolver);
28
34
  return [result, error];
29
35
  };
30
36
  //# sourceMappingURL=useNodeQueryDiviner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNodeQueryDiviner.js","sourceRoot":"","sources":["../../../src/contexts/useNodeQueryDiviner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,gBAAyB,EAAE,KAAkB,EAAgD,EAAE;IACjI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAe,CAAA;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAA;IAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAc,CAAA;IAEpC,cAAc;IACZ,uDAAuD;IACvD,KAAK,IAAI,EAAE;QACT,IAAI,gBAAgB,IAAI,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE;YAC/C,IAAI;gBACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;gBAC1F,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,oCAAoC,gBAAgB,EAAE,CAAC,CAAA;gBAErF,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;gBAClD,SAAS,CAAC,MAAM,CAAC,CAAA;gBACjB,QAAQ,CAAC,SAAS,CAAC,CAAA;aACpB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAChB,SAAS,CAAC,SAAS,CAAC,CAAA;gBACpB,QAAQ,CAAC,CAAU,CAAC,CAAA;aACrB;SACF;IACH,CAAC,EACD,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,CAAC,CAChC,CAAA;IAED,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACxB,CAAC,CAAA"}
1
+ {"version":3,"file":"useNodeQueryDiviner.js","sourceRoot":"","sources":["../../../src/contexts/useNodeQueryDiviner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAInC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,gBAAyB,EACzB,KAAkB,EAClB,SAAmB,EAC2B,EAAE;IAChD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAe,CAAA;IACnD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAS,CAAA;IAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAc,CAAA;IAEpC,cAAc;IACZ,uDAAuD;IACvD,KAAK,IAAI,EAAE;QACT,IAAI,gBAAgB,IAAI,KAAK,IAAI,IAAI,EAAE,QAAQ,EAAE;YAC/C,IAAI;gBACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;gBAC1F,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,oCAAoC,gBAAgB,EAAE,CAAC,CAAA;gBAErF,MAAM,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;gBAClD,SAAS,CAAC,MAAM,CAAC,CAAA;gBACjB,QAAQ,CAAC,SAAS,CAAC,CAAA;aACpB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAChB,SAAS,CAAC,SAAS,CAAC,CAAA;gBACpB,QAAQ,CAAC,CAAU,CAAC,CAAA;aACrB;SACF;IACH,CAAC,EACD,CAAC,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAC3C,CAAA;IAED,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,SAAS,CAAa,EAA6C,EAAE;IACpI,MAAM,EAAE,QAAQ,EAAE,GAAG,oBAAoB,EAAE,CAAA;IAC3C,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,sBAAsB,CAAC,gBAAgB,EAAE,KAAK,EAAE,SAAS,IAAI,QAAQ,CAAC,CAAA;IAE9F,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACxB,CAAC,CAAA"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@mui/lab": "latest",
13
+ "@mui/lab": "^5.0.0-alpha.115",
14
14
  "@xylabs/react-flexbox": "^2.15.8",
15
15
  "@xylabs/react-shared": "^2.15.8",
16
16
  "@xyo-network/archivist": "^2.43.7",
@@ -20,7 +20,7 @@
20
20
  "@xyo-network/module-model": "^2.43.7",
21
21
  "@xyo-network/node": "^2.43.7",
22
22
  "@xyo-network/payload-model": "^2.43.7",
23
- "@xyo-network/react-shared": "^2.41.30",
23
+ "@xyo-network/react-shared": "^2.41.32",
24
24
  "@xyo-network/witness": "^2.43.7",
25
25
  "lodash": "^4.17.21"
26
26
  },
@@ -78,5 +78,5 @@
78
78
  },
79
79
  "sideEffects": false,
80
80
  "types": "dist/esm/index.d.ts",
81
- "version": "2.41.30"
81
+ "version": "2.41.32"
82
82
  }
@@ -1,30 +1,52 @@
1
1
  import { ArchivistWrapper } from '@xyo-network/archivist'
2
2
  import { MemoryNode } from '@xyo-network/node'
3
3
  import { usePromise } from '@xyo-network/react-shared'
4
- import { useMemo } from 'react'
4
+ import { useCallback, useMemo } from 'react'
5
5
 
6
+ import { useMemoryNodeUpdates } from './useMemoryNodeUpdates'
6
7
  import { useNode } from './useNode'
7
8
 
8
9
  interface UseArchiveArchivists {
9
- archivePayloadWrapper?: ArchivistWrapper
10
- archiveBoundWitnessWrapper?: ArchivistWrapper
10
+ archivePayloadWrapper: ArchivistWrapper
11
+ archiveBoundWitnessWrapper: ArchivistWrapper
11
12
  }
12
13
 
13
- export const useArchiveArchivists = (archiveName?: string, required?: boolean): UseArchiveArchivists => {
14
+ type HookParams = Parameters<typeof useArchiveArchivistsRaw>
15
+
16
+ export const useArchiveArchivistsRaw = (archiveName?: string, required?: boolean, refresher?: unknown): UseArchiveArchivists | undefined => {
14
17
  const [node] = useNode<MemoryNode>(required)
15
18
 
16
- const payloadArchivistReq = useMemo(
17
- () => (archiveName && node ? node?.tryResolveWrapped(ArchivistWrapper, { name: [encodeURIComponent(`${archiveName}[payload]`)] }) : undefined),
18
- [archiveName, node],
19
- )
20
- const boundWitnessArchivistReq = useMemo(
21
- () =>
22
- archiveName && node ? node?.tryResolveWrapped(ArchivistWrapper, { name: [encodeURIComponent(`${archiveName}[boundwitness]`)] }) : undefined,
23
- [archiveName, node],
19
+ const buildReq = useCallback(
20
+ (type: 'payload' | 'boundwitness') =>
21
+ (archiveName && node) || refresher
22
+ ? node?.tryResolveWrapped(ArchivistWrapper, { name: [encodeURIComponent(`${archiveName}[${type}]`)] })
23
+ : undefined,
24
+ [archiveName, node, refresher],
24
25
  )
25
26
 
27
+ const payloadArchivistReq = useMemo(() => buildReq('payload'), [buildReq])
28
+ const boundWitnessArchivistReq = useMemo(() => buildReq('boundwitness'), [buildReq])
29
+
26
30
  const [archivePayloadWrapper] = usePromise(payloadArchivistReq, [payloadArchivistReq])
27
31
  const [archiveBoundWitnessWrapper] = usePromise(boundWitnessArchivistReq, [boundWitnessArchivistReq])
28
32
 
29
- return { archiveBoundWitnessWrapper: archiveBoundWitnessWrapper?.shift(), archivePayloadWrapper: archivePayloadWrapper?.shift() }
33
+ const archivists = useMemo(() => {
34
+ if (archiveBoundWitnessWrapper?.[0] && archivePayloadWrapper?.[0]) {
35
+ return {
36
+ archiveBoundWitnessWrapper: archiveBoundWitnessWrapper[0] as ArchivistWrapper,
37
+ archivePayloadWrapper: archivePayloadWrapper[0] as ArchivistWrapper,
38
+ }
39
+ } else {
40
+ return
41
+ }
42
+ }, [archiveBoundWitnessWrapper, archivePayloadWrapper])
43
+
44
+ return archivists
45
+ }
46
+
47
+ export const useArchiveArchivists = (...[archive, required, refresher]: HookParams) => {
48
+ const { resolver } = useMemoryNodeUpdates()
49
+ const archivists = useArchiveArchivistsRaw(archive, required, refresher ?? resolver)
50
+
51
+ return archivists
30
52
  }
@@ -0,0 +1,20 @@
1
+ import { ModuleResolver } from '@xyo-network/module-model'
2
+ import { MemoryNode } from '@xyo-network/node'
3
+ import { useEffect, useState } from 'react'
4
+
5
+ import { useNode } from './useNode'
6
+
7
+ export const useMemoryNodeUpdates = () => {
8
+ const [node] = useNode<MemoryNode>()
9
+ const [resolver, seResolver] = useState<ModuleResolver>()
10
+
11
+ useEffect(() => {
12
+ if (node) {
13
+ node.on('moduleResolverChanged', ({ resolver }) => {
14
+ seResolver(resolver)
15
+ })
16
+ }
17
+ }, [node])
18
+
19
+ return { resolver }
20
+ }
@@ -5,9 +5,16 @@ import { XyoPayload, XyoPayloads } from '@xyo-network/payload-model'
5
5
  import { assertDefinedEx } from '@xyo-network/react-shared'
6
6
  import { useState } from 'react'
7
7
 
8
+ import { useMemoryNodeUpdates } from './useMemoryNodeUpdates'
8
9
  import { useNode } from './useNode'
9
10
 
10
- export const useNodeQueryDiviner = (moduleIdentifier?: string, query?: XyoPayload): [XyoPayloads | undefined, Error | undefined] => {
11
+ type HookParams = Parameters<typeof useNodeQueryDivinerRaw>
12
+
13
+ export const useNodeQueryDivinerRaw = (
14
+ moduleIdentifier?: string,
15
+ query?: XyoPayload,
16
+ refresher?: unknown,
17
+ ): [XyoPayloads | undefined, Error | undefined] => {
11
18
  const [result, setResult] = useState<XyoPayloads>()
12
19
  const [error, setError] = useState<Error>()
13
20
  const [node] = useNode<MemoryNode>()
@@ -30,8 +37,15 @@ export const useNodeQueryDiviner = (moduleIdentifier?: string, query?: XyoPayloa
30
37
  }
31
38
  }
32
39
  },
33
- [moduleIdentifier, node, query],
40
+ [moduleIdentifier, node, query, refresher],
34
41
  )
35
42
 
36
43
  return [result, error]
37
44
  }
45
+
46
+ export const useNodeQueryDiviner = (...[moduleIdentifier, query, refresher]: HookParams): ReturnType<typeof useNodeQueryDivinerRaw> => {
47
+ const { resolver } = useMemoryNodeUpdates()
48
+ const [result, error] = useNodeQueryDivinerRaw(moduleIdentifier, query, refresher ?? resolver)
49
+
50
+ return [result, error]
51
+ }