@xyo-network/react-node 2.40.9 → 2.40.11

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 (48) hide show
  1. package/dist/cjs/contexts/MemoryProvider.d.ts +9 -0
  2. package/dist/cjs/contexts/MemoryProvider.d.ts.map +1 -0
  3. package/dist/cjs/contexts/MemoryProvider.js +24 -0
  4. package/dist/cjs/contexts/MemoryProvider.js.map +1 -0
  5. package/dist/cjs/contexts/index.d.ts +1 -0
  6. package/dist/cjs/contexts/index.d.ts.map +1 -1
  7. package/dist/cjs/contexts/index.js +1 -0
  8. package/dist/cjs/contexts/index.js.map +1 -1
  9. package/dist/cjs/contexts/useArchivistModule.js +1 -1
  10. package/dist/cjs/contexts/useArchivistModule.js.map +1 -1
  11. package/dist/cjs/contexts/useDivinerModule.js +1 -1
  12. package/dist/cjs/contexts/useDivinerModule.js.map +1 -1
  13. package/dist/cjs/contexts/useModule.d.ts +5 -6
  14. package/dist/cjs/contexts/useModule.d.ts.map +1 -1
  15. package/dist/cjs/contexts/useModule.js +10 -2
  16. package/dist/cjs/contexts/useModule.js.map +1 -1
  17. package/dist/cjs/contexts/useModules.d.ts +1 -6
  18. package/dist/cjs/contexts/useModules.d.ts.map +1 -1
  19. package/dist/cjs/contexts/useWitnessModule.js +1 -1
  20. package/dist/cjs/contexts/useWitnessModule.js.map +1 -1
  21. package/dist/docs.json +361 -243
  22. package/dist/esm/contexts/MemoryProvider.d.ts +9 -0
  23. package/dist/esm/contexts/MemoryProvider.d.ts.map +1 -0
  24. package/dist/esm/contexts/MemoryProvider.js +18 -0
  25. package/dist/esm/contexts/MemoryProvider.js.map +1 -0
  26. package/dist/esm/contexts/index.d.ts +1 -0
  27. package/dist/esm/contexts/index.d.ts.map +1 -1
  28. package/dist/esm/contexts/index.js +1 -0
  29. package/dist/esm/contexts/index.js.map +1 -1
  30. package/dist/esm/contexts/useArchivistModule.js +1 -1
  31. package/dist/esm/contexts/useArchivistModule.js.map +1 -1
  32. package/dist/esm/contexts/useDivinerModule.js +1 -1
  33. package/dist/esm/contexts/useDivinerModule.js.map +1 -1
  34. package/dist/esm/contexts/useModule.d.ts +5 -6
  35. package/dist/esm/contexts/useModule.d.ts.map +1 -1
  36. package/dist/esm/contexts/useModule.js +10 -2
  37. package/dist/esm/contexts/useModule.js.map +1 -1
  38. package/dist/esm/contexts/useModules.d.ts +1 -6
  39. package/dist/esm/contexts/useModules.d.ts.map +1 -1
  40. package/dist/esm/contexts/useWitnessModule.js +1 -1
  41. package/dist/esm/contexts/useWitnessModule.js.map +1 -1
  42. package/package.json +2 -4
  43. package/src/contexts/MemoryProvider.tsx +32 -0
  44. package/src/contexts/index.ts +1 -0
  45. package/src/contexts/useArchivistModule.ts +1 -1
  46. package/src/contexts/useDivinerModule.ts +1 -1
  47. package/src/contexts/useModule.ts +13 -2
  48. package/src/contexts/useWitnessModule.ts +1 -1
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { WithChildren } from '@xylabs/react-shared';
3
+ import { XyoModuleParams } from '@xyo-network/module';
4
+ import { NodeConfig } from '@xyo-network/node';
5
+ export declare type MemoryNodeProviderProps = WithChildren<{
6
+ required?: boolean;
7
+ }> & XyoModuleParams<NodeConfig>;
8
+ export declare const MemoryNodeProvider: React.FC<MemoryNodeProviderProps>;
9
+ //# sourceMappingURL=MemoryProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryProvider.d.ts","sourceRoot":"","sources":["../../../src/contexts/MemoryProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAc,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAK1D,oBAAY,uBAAuB,GAAG,YAAY,CAAC;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAC,GACA,eAAe,CAAC,UAAU,CAAC,CAAA;AAE7B,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAmBhE,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useAsyncEffect } from '@xylabs/react-shared';
3
+ import { MemoryNode } from '@xyo-network/node';
4
+ import { useState } from 'react';
5
+ import { NodeProvider } from './Provider';
6
+ export const MemoryNodeProvider = ({ children, required = false, ...params }) => {
7
+ const [node, setNode] = useState();
8
+ useAsyncEffect(
9
+ // eslint-disable-next-line react-hooks/exhaustive-deps
10
+ async (mounted) => {
11
+ const node = await MemoryNode.create(params);
12
+ if (mounted()) {
13
+ setNode(node);
14
+ }
15
+ }, [params]);
16
+ return (_jsx(NodeProvider, { node: node, required: required, children: children }));
17
+ };
18
+ //# sourceMappingURL=MemoryProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryProvider.js","sourceRoot":"","sources":["../../../src/contexts/MemoryProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,sBAAsB,CAAA;AAEnE,OAAO,EAAE,UAAU,EAAc,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAOzC,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE;IACjH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,EAAc,CAAA;IAE9C,cAAc;IACZ,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC5C,IAAI,OAAO,EAAE,EAAE;YACb,OAAO,CAAC,IAAI,CAAC,CAAA;SACd;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAA;IAED,OAAO,CACL,KAAC,YAAY,IAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,YACzC,QAAQ,GACI,CAChB,CAAA;AACH,CAAC,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './Context';
2
+ export * from './MemoryProvider';
2
3
  export * from './Provider';
3
4
  export * from './State';
4
5
  export * from './useArchivistModule';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  export * from './Context';
2
+ export * from './MemoryProvider';
2
3
  export * from './Provider';
3
4
  export * from './State';
4
5
  export * from './useArchivistModule';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAC3B,cAAc,sBAAsB,CAAA;AACpC,cAAc,cAAc,CAAA;AAC5B,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { XyoArchivistWrapper } from '@xyo-network/archivist';
2
2
  import { useModule } from './useModule';
3
3
  export const useArchivistModule = (address) => {
4
- const module = useModule(address);
4
+ const module = useModule({ address });
5
5
  return module ? new XyoArchivistWrapper(module) : undefined;
6
6
  };
7
7
  //# sourceMappingURL=useArchivistModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useArchivistModule.js","sourceRoot":"","sources":["../../../src/contexts/useArchivistModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC,CAAA"}
1
+ {"version":3,"file":"useArchivistModule.js","sourceRoot":"","sources":["../../../src/contexts/useArchivistModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACrD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { XyoDivinerWrapper } from '@xyo-network/diviner';
2
2
  import { useModule } from './useModule';
3
3
  export const useDivinerModule = (address) => {
4
- const module = useModule(address);
4
+ const module = useModule({ address });
5
5
  return module ? new XyoDivinerWrapper(module) : undefined;
6
6
  };
7
7
  //# sourceMappingURL=useDivinerModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDivinerModule.js","sourceRoot":"","sources":["../../../src/contexts/useDivinerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC,CAAA"}
1
+ {"version":3,"file":"useDivinerModule.js","sourceRoot":"","sources":["../../../src/contexts/useDivinerModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC,CAAA"}
@@ -1,9 +1,8 @@
1
- export declare const useModule: (address?: string) => import("@xyo-network/module").XyoModule<import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & {
2
- security?: {
3
- allowed?: Record<string, string[][]> | undefined;
4
- disallowed?: Record<string, string[]> | undefined;
5
- } | undefined;
6
- } & {
1
+ export interface ModuleIdentifier {
2
+ address?: string;
3
+ schema?: string;
4
+ }
5
+ export declare const useModule: ({ address, schema }: ModuleIdentifier) => import("@xyo-network/module").Module<import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & {
7
6
  schema: string;
8
7
  }> | null | undefined;
9
8
  //# sourceMappingURL=useModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModule.d.ts","sourceRoot":"","sources":["../../../src/contexts/useModule.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,aAAc,MAAM;;;;;;;qBAGzC,CAAA"}
1
+ {"version":3,"file":"useModule.d.ts","sourceRoot":"","sources":["../../../src/contexts/useModule.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,eAAO,MAAM,SAAS,wBAAyB,gBAAgB;;qBAS9D,CAAA"}
@@ -1,6 +1,14 @@
1
1
  import { useNode } from './useNode';
2
- export const useModule = (address) => {
2
+ export const useModule = ({ address, schema }) => {
3
3
  const [node] = useNode();
4
- return address ? node?.resolve([address]).shift() : undefined;
4
+ if (address) {
5
+ return node?.resolve([address]).shift();
6
+ }
7
+ else if (schema) {
8
+ return node?.find([schema]).shift();
9
+ }
10
+ else {
11
+ return undefined;
12
+ }
5
13
  };
6
14
  //# sourceMappingURL=useModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModule.js","sourceRoot":"","sources":["../../../src/contexts/useModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE;IAC5C,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;IACxB,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AAC/D,CAAC,CAAA"}
1
+ {"version":3,"file":"useModule.js","sourceRoot":"","sources":["../../../src/contexts/useModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAE,OAAO,EAAE,MAAM,EAAoB,EAAE,EAAE;IACjE,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;IACxB,IAAI,OAAO,EAAE;QACX,OAAO,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;KACxC;SAAM,IAAI,MAAM,EAAE;QACjB,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;KACpC;SAAM;QACL,OAAO,SAAS,CAAA;KACjB;AACH,CAAC,CAAA"}
@@ -1,9 +1,4 @@
1
- export declare const useModules: () => (import("@xyo-network/module").XyoModule<import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & {
2
- security?: {
3
- allowed?: Record<string, string[][]> | undefined;
4
- disallowed?: Record<string, string[]> | undefined;
5
- } | undefined;
6
- } & {
1
+ export declare const useModules: () => (import("@xyo-network/module").Module<import("@xyo-network/payload").SchemaFields & import("@xyo-network/payload").PayloadFields & {
7
2
  schema: string;
8
3
  }> | null)[] | undefined;
9
4
  //# sourceMappingURL=useModules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModules.d.ts","sourceRoot":"","sources":["../../../src/contexts/useModules.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;;;;;;;wBAItB,CAAA"}
1
+ {"version":3,"file":"useModules.d.ts","sourceRoot":"","sources":["../../../src/contexts/useModules.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,UAAU;;wBAItB,CAAA"}
@@ -1,7 +1,7 @@
1
1
  import { XyoWitnessWrapper } from '@xyo-network/witness';
2
2
  import { useModule } from './useModule';
3
3
  export const useWitnessModule = (address) => {
4
- const module = useModule(address);
4
+ const module = useModule({ address });
5
5
  return module ? new XyoWitnessWrapper(module) : undefined;
6
6
  };
7
7
  //# sourceMappingURL=useWitnessModule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useWitnessModule.js","sourceRoot":"","sources":["../../../src/contexts/useWitnessModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC,CAAA"}
1
+ {"version":3,"file":"useWitnessModule.js","sourceRoot":"","sources":["../../../src/contexts/useWitnessModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAgB,EAAE,EAAE;IACnD,MAAM,MAAM,GAAG,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAA;IACrC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAC3D,CAAC,CAAA"}
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "dependencies": {
13
13
  "@xylabs/react-flexbox": "^2.15.1",
14
14
  "@xylabs/react-shared": "^2.15.1",
15
- "@xyo-network/react-shared": "^2.40.9",
15
+ "@xyo-network/react-shared": "^2.40.11",
16
16
  "lodash": "^4.17.21",
17
17
  "tslib": "^2.4.1"
18
18
  },
@@ -26,8 +26,6 @@
26
26
  "@xyo-network/module": "*",
27
27
  "@xyo-network/node": "*",
28
28
  "@xyo-network/witness": "*",
29
- "axios": "^1.1.3",
30
- "pako": "^2.0.4",
31
29
  "react": "^18.2.0",
32
30
  "react-dom": "^18.2.0",
33
31
  "react-router-dom": "^6.3.0"
@@ -75,5 +73,5 @@
75
73
  },
76
74
  "sideEffects": false,
77
75
  "types": "dist/esm/index.d.ts",
78
- "version": "2.40.9"
76
+ "version": "2.40.11"
79
77
  }
@@ -0,0 +1,32 @@
1
+ import { useAsyncEffect, WithChildren } from '@xylabs/react-shared'
2
+ import { XyoModuleParams } from '@xyo-network/module'
3
+ import { MemoryNode, NodeConfig } from '@xyo-network/node'
4
+ import { useState } from 'react'
5
+
6
+ import { NodeProvider } from './Provider'
7
+
8
+ export type MemoryNodeProviderProps = WithChildren<{
9
+ required?: boolean
10
+ }> &
11
+ XyoModuleParams<NodeConfig>
12
+
13
+ export const MemoryNodeProvider: React.FC<MemoryNodeProviderProps> = ({ children, required = false, ...params }) => {
14
+ const [node, setNode] = useState<MemoryNode>()
15
+
16
+ useAsyncEffect(
17
+ // eslint-disable-next-line react-hooks/exhaustive-deps
18
+ async (mounted) => {
19
+ const node = await MemoryNode.create(params)
20
+ if (mounted()) {
21
+ setNode(node)
22
+ }
23
+ },
24
+ [params],
25
+ )
26
+
27
+ return (
28
+ <NodeProvider node={node} required={required}>
29
+ {children}
30
+ </NodeProvider>
31
+ )
32
+ }
@@ -1,4 +1,5 @@
1
1
  export * from './Context'
2
+ export * from './MemoryProvider'
2
3
  export * from './Provider'
3
4
  export * from './State'
4
5
  export * from './useArchivistModule'
@@ -3,6 +3,6 @@ import { XyoArchivistWrapper } from '@xyo-network/archivist'
3
3
  import { useModule } from './useModule'
4
4
 
5
5
  export const useArchivistModule = (address?: string) => {
6
- const module = useModule(address)
6
+ const module = useModule({ address })
7
7
  return module ? new XyoArchivistWrapper(module) : undefined
8
8
  }
@@ -3,6 +3,6 @@ import { XyoDivinerWrapper } from '@xyo-network/diviner'
3
3
  import { useModule } from './useModule'
4
4
 
5
5
  export const useDivinerModule = (address?: string) => {
6
- const module = useModule(address)
6
+ const module = useModule({ address })
7
7
  return module ? new XyoDivinerWrapper(module) : undefined
8
8
  }
@@ -1,6 +1,17 @@
1
1
  import { useNode } from './useNode'
2
2
 
3
- export const useModule = (address?: string) => {
3
+ export interface ModuleIdentifier {
4
+ address?: string
5
+ schema?: string
6
+ }
7
+
8
+ export const useModule = ({ address, schema }: ModuleIdentifier) => {
4
9
  const [node] = useNode()
5
- return address ? node?.resolve([address]).shift() : undefined
10
+ if (address) {
11
+ return node?.resolve([address]).shift()
12
+ } else if (schema) {
13
+ return node?.find([schema]).shift()
14
+ } else {
15
+ return undefined
16
+ }
6
17
  }
@@ -3,6 +3,6 @@ import { XyoWitnessWrapper } from '@xyo-network/witness'
3
3
  import { useModule } from './useModule'
4
4
 
5
5
  export const useWitnessModule = (address?: string) => {
6
- const module = useModule(address)
6
+ const module = useModule({ address })
7
7
  return module ? new XyoWitnessWrapper(module) : undefined
8
8
  }