@xyo-network/react-node 2.45.0-rc.8 → 2.45.0

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 (118) hide show
  1. package/dist/cjs/hooks/index.js +2 -9
  2. package/dist/cjs/hooks/index.js.map +1 -1
  3. package/dist/cjs/hooks/useMemoryNodeUpdates.js +1 -1
  4. package/dist/cjs/hooks/useMemoryNodeUpdates.js.map +1 -1
  5. package/dist/cjs/hooks/useModule.js +71 -3
  6. package/dist/cjs/hooks/useModule.js.map +1 -1
  7. package/dist/cjs/hooks/useModules.js +29 -6
  8. package/dist/cjs/hooks/useModules.js.map +1 -1
  9. package/dist/cjs/hooks/useNode.js +44 -50
  10. package/dist/cjs/hooks/useNode.js.map +1 -1
  11. package/dist/cjs/hooks/{useModuleAddresses.js → useNodeAttachedAddresses.js} +9 -9
  12. package/dist/cjs/hooks/useNodeAttachedAddresses.js.map +1 -0
  13. package/dist/cjs/hooks/useProvidedNode.js +29 -15
  14. package/dist/cjs/hooks/useProvidedNode.js.map +1 -1
  15. package/dist/cjs/hooks/useWrappedModule.js +49 -0
  16. package/dist/cjs/hooks/useWrappedModule.js.map +1 -0
  17. package/dist/docs.json +767 -2334
  18. package/dist/esm/hooks/index.js +2 -9
  19. package/dist/esm/hooks/index.js.map +1 -1
  20. package/dist/esm/hooks/useMemoryNodeUpdates.js +1 -1
  21. package/dist/esm/hooks/useMemoryNodeUpdates.js.map +1 -1
  22. package/dist/esm/hooks/useModule.js +69 -3
  23. package/dist/esm/hooks/useModule.js.map +1 -1
  24. package/dist/esm/hooks/useModules.js +30 -7
  25. package/dist/esm/hooks/useModules.js.map +1 -1
  26. package/dist/esm/hooks/useNode.js +43 -48
  27. package/dist/esm/hooks/useNode.js.map +1 -1
  28. package/dist/esm/hooks/useNodeAttachedAddresses.js +17 -0
  29. package/dist/esm/hooks/useNodeAttachedAddresses.js.map +1 -0
  30. package/dist/esm/hooks/useProvidedNode.js +27 -15
  31. package/dist/esm/hooks/useProvidedNode.js.map +1 -1
  32. package/dist/esm/hooks/useWrappedModule.js +45 -0
  33. package/dist/esm/hooks/useWrappedModule.js.map +1 -0
  34. package/dist/types/hooks/index.d.ts +2 -9
  35. package/dist/types/hooks/index.d.ts.map +1 -1
  36. package/dist/types/hooks/useModule.d.ts +23 -58
  37. package/dist/types/hooks/useModule.d.ts.map +1 -1
  38. package/dist/types/hooks/useModules.d.ts +5 -5
  39. package/dist/types/hooks/useModules.d.ts.map +1 -1
  40. package/dist/types/hooks/useNode.d.ts +3 -59
  41. package/dist/types/hooks/useNode.d.ts.map +1 -1
  42. package/dist/types/hooks/useNodeAttachedAddresses.d.ts +2 -0
  43. package/dist/types/hooks/useNodeAttachedAddresses.d.ts.map +1 -0
  44. package/dist/types/hooks/useProvidedNode.d.ts +3 -6
  45. package/dist/types/hooks/useProvidedNode.d.ts.map +1 -1
  46. package/dist/types/hooks/useWrappedModule.d.ts +39 -0
  47. package/dist/types/hooks/useWrappedModule.d.ts.map +1 -0
  48. package/package.json +16 -17
  49. package/src/components/Node.stories.tsx +36 -10
  50. package/src/hooks/index.ts +2 -9
  51. package/src/hooks/useMemoryNodeUpdates.tsx +1 -1
  52. package/src/hooks/useModule.tsx +77 -3
  53. package/src/hooks/useModules.ts +30 -10
  54. package/src/hooks/useNode.tsx +40 -70
  55. package/src/hooks/{useModuleAddresses.ts → useNodeAttachedAddresses.ts} +6 -6
  56. package/src/hooks/useProvidedNode.tsx +31 -18
  57. package/src/hooks/useWrappedModule.tsx +61 -0
  58. package/dist/cjs/hooks/useArchiveArchivists.js +0 -38
  59. package/dist/cjs/hooks/useArchiveArchivists.js.map +0 -1
  60. package/dist/cjs/hooks/useArchivistModule.js +0 -12
  61. package/dist/cjs/hooks/useArchivistModule.js.map +0 -1
  62. package/dist/cjs/hooks/useArchivistModules.js +0 -11
  63. package/dist/cjs/hooks/useArchivistModules.js.map +0 -1
  64. package/dist/cjs/hooks/useDivinerModule.js +0 -12
  65. package/dist/cjs/hooks/useDivinerModule.js.map +0 -1
  66. package/dist/cjs/hooks/useDivinerModules.js +0 -12
  67. package/dist/cjs/hooks/useDivinerModules.js.map +0 -1
  68. package/dist/cjs/hooks/useModuleAddresses.js.map +0 -1
  69. package/dist/cjs/hooks/useNodeQueryDiviner.js +0 -43
  70. package/dist/cjs/hooks/useNodeQueryDiviner.js.map +0 -1
  71. package/dist/cjs/hooks/useWitnessModule.js +0 -12
  72. package/dist/cjs/hooks/useWitnessModule.js.map +0 -1
  73. package/dist/cjs/hooks/useWitnessModules.js +0 -11
  74. package/dist/cjs/hooks/useWitnessModules.js.map +0 -1
  75. package/dist/esm/hooks/useArchiveArchivists.js +0 -33
  76. package/dist/esm/hooks/useArchiveArchivists.js.map +0 -1
  77. package/dist/esm/hooks/useArchivistModule.js +0 -8
  78. package/dist/esm/hooks/useArchivistModule.js.map +0 -1
  79. package/dist/esm/hooks/useArchivistModules.js +0 -7
  80. package/dist/esm/hooks/useArchivistModules.js.map +0 -1
  81. package/dist/esm/hooks/useDivinerModule.js +0 -8
  82. package/dist/esm/hooks/useDivinerModule.js.map +0 -1
  83. package/dist/esm/hooks/useDivinerModules.js +0 -8
  84. package/dist/esm/hooks/useDivinerModules.js.map +0 -1
  85. package/dist/esm/hooks/useModuleAddresses.js +0 -17
  86. package/dist/esm/hooks/useModuleAddresses.js.map +0 -1
  87. package/dist/esm/hooks/useNodeQueryDiviner.js +0 -37
  88. package/dist/esm/hooks/useNodeQueryDiviner.js.map +0 -1
  89. package/dist/esm/hooks/useWitnessModule.js +0 -8
  90. package/dist/esm/hooks/useWitnessModule.js.map +0 -1
  91. package/dist/esm/hooks/useWitnessModules.js +0 -7
  92. package/dist/esm/hooks/useWitnessModules.js.map +0 -1
  93. package/dist/types/hooks/useArchiveArchivists.d.ts +0 -9
  94. package/dist/types/hooks/useArchiveArchivists.d.ts.map +0 -1
  95. package/dist/types/hooks/useArchivistModule.d.ts +0 -4
  96. package/dist/types/hooks/useArchivistModule.d.ts.map +0 -1
  97. package/dist/types/hooks/useArchivistModules.d.ts +0 -3
  98. package/dist/types/hooks/useArchivistModules.d.ts.map +0 -1
  99. package/dist/types/hooks/useDivinerModule.d.ts +0 -4
  100. package/dist/types/hooks/useDivinerModule.d.ts.map +0 -1
  101. package/dist/types/hooks/useDivinerModules.d.ts +0 -3
  102. package/dist/types/hooks/useDivinerModules.d.ts.map +0 -1
  103. package/dist/types/hooks/useModuleAddresses.d.ts +0 -2
  104. package/dist/types/hooks/useModuleAddresses.d.ts.map +0 -1
  105. package/dist/types/hooks/useNodeQueryDiviner.d.ts +0 -6
  106. package/dist/types/hooks/useNodeQueryDiviner.d.ts.map +0 -1
  107. package/dist/types/hooks/useWitnessModule.d.ts +0 -4
  108. package/dist/types/hooks/useWitnessModule.d.ts.map +0 -1
  109. package/dist/types/hooks/useWitnessModules.d.ts +0 -3
  110. package/dist/types/hooks/useWitnessModules.d.ts.map +0 -1
  111. package/src/hooks/useArchiveArchivists.tsx +0 -49
  112. package/src/hooks/useArchivistModule.ts +0 -10
  113. package/src/hooks/useArchivistModules.ts +0 -8
  114. package/src/hooks/useDivinerModule.ts +0 -10
  115. package/src/hooks/useDivinerModules.ts +0 -9
  116. package/src/hooks/useNodeQueryDiviner.tsx +0 -54
  117. package/src/hooks/useWitnessModule.ts +0 -10
  118. package/src/hooks/useWitnessModules.ts +0 -8
@@ -1,60 +1,4 @@
1
- import { Account } from '@xyo-network/account';
2
- import { Module, ModuleWrapper } from '@xyo-network/module';
3
- import { NodeModule, NodeWrapper } from '@xyo-network/node';
4
- export type WrapFunc<TModule extends Module = Module, TWrapper extends ModuleWrapper = ModuleWrapper> = (module?: TModule, account?: Account) => TWrapper | undefined;
5
- export type NodeFunc = () => [NodeModule | undefined, Error | undefined];
6
- export declare const createUseModuleHook: <TModule extends Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
7
- name?: string | undefined;
8
- security?: {
9
- allowAnonymous?: boolean | undefined;
10
- allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
11
- disallowed?: Record<string, string[]> | undefined;
12
- } | undefined;
13
- storeQueries?: boolean | undefined;
14
- } & {
15
- schema: string;
16
- }> = Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
17
- name?: string | undefined;
18
- security?: {
19
- allowAnonymous?: boolean | undefined;
20
- allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
21
- disallowed?: Record<string, string[]> | undefined;
22
- } | undefined;
23
- storeQueries?: boolean | undefined;
24
- } & {
25
- schema: string;
26
- }>, TWrapper extends ModuleWrapper<Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
27
- name?: string | undefined;
28
- security?: {
29
- allowAnonymous?: boolean | undefined;
30
- allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
31
- disallowed?: Record<string, string[]> | undefined;
32
- } | undefined;
33
- storeQueries?: boolean | undefined;
34
- } & {
35
- schema: string;
36
- }>> = ModuleWrapper<Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
37
- name?: string | undefined;
38
- security?: {
39
- allowAnonymous?: boolean | undefined;
40
- allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
41
- disallowed?: Record<string, string[]> | undefined;
42
- } | undefined;
43
- storeQueries?: boolean | undefined;
44
- } & {
45
- schema: string;
46
- }>>, TWrapFunc extends WrapFunc<TModule, TWrapper> = WrapFunc<TModule, TWrapper>>(wrapFunc: TWrapFunc, nodeFunc: NodeFunc) => {
47
- (name?: string): [TModule | undefined, Error | undefined];
48
- (name: string | undefined, wrap: true | Account): [TWrapper | undefined, Error | undefined];
49
- (wrap: true | Account): [TWrapper | undefined, Error | undefined];
50
- (address: string): [TModule | undefined, Error | undefined];
51
- (address: string, wrap: true | Account): [TWrapper | undefined, Error | undefined];
52
- };
53
- export declare const useNode: {
54
- (name?: string): [NodeModule | undefined, Error | undefined];
55
- (name: string | undefined, wrap: true | Account): [NodeWrapper | undefined, Error | undefined];
56
- (wrap: true | Account): [NodeWrapper | undefined, Error | undefined];
57
- (address: string): [NodeModule | undefined, Error | undefined];
58
- (address: string, wrap: true | Account): [NodeWrapper | undefined, Error | undefined];
59
- };
1
+ import { AccountInstance } from '@xyo-network/account-model';
2
+ import { NodeWrapper } from '@xyo-network/node';
3
+ export declare const useNode: (nameOrAddress?: string, account?: AccountInstance) => [NodeWrapper | undefined, Error | undefined];
60
4
  //# sourceMappingURL=useNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useNode.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAK3D,MAAM,MAAM,QAAQ,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,QAAQ,SAAS,aAAa,GAAG,aAAa,IAAI,CACtG,MAAM,CAAC,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,OAAO,KACd,QAAQ,GAAG,SAAS,CAAA;AAEzB,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAA;AAExE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iHAMpB,QAAQ;YAEE,MAAM;WACP,MAAM,GAAG,SAAS,QAAQ,IAAI,GAAG,OAAO;WACxC,IAAI,GAAG,OAAO;cACX,MAAM;cACN,MAAM,QAAQ,IAAI,GAAG,OAAO;CAkDnD,CAAA;AAED,eAAO,MAAM,OAAO;YAxDE,MAAM;WACP,MAAM,GAAG,SAAS,QAAQ,IAAI,GAAG,OAAO;WACxC,IAAI,GAAG,OAAO;cACX,MAAM;cACN,MAAM,QAAQ,IAAI,GAAG,OAAO;CAoDsE,CAAA"}
1
+ {"version":3,"file":"useNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAc,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAsB3D,eAAO,MAAM,OAAO,mBAAoB,MAAM,YAAY,eAAe,KAAG,CAAC,WAAW,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA2BtH,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const useNodeAttachedAddresses: () => (string[] | Promise<string[]> | undefined)[];
2
+ //# sourceMappingURL=useNodeAttachedAddresses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNodeAttachedAddresses.d.ts","sourceRoot":"","sources":["../../../src/hooks/useNodeAttachedAddresses.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,wBAAwB,oDAgBpC,CAAA"}
@@ -1,8 +1,5 @@
1
- import { Account } from '@xyo-network/account';
1
+ import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { NodeModule, NodeWrapper } from '@xyo-network/node';
3
- declare function useProvidedNodeFunc(wrap?: undefined): [NodeModule | undefined, Error | undefined];
4
- declare function useProvidedNodeFunc(wrap: false): [NodeModule | undefined, Error | undefined];
5
- declare function useProvidedNodeFunc(wrap: true | Account): [NodeWrapper | undefined, Error | undefined];
6
- export declare const useProvidedNode: typeof useProvidedNodeFunc;
7
- export {};
3
+ export declare const useProvidedNode: () => [NodeModule | undefined];
4
+ export declare const useProvidedWrappedNode: (account?: AccountInstance) => [NodeWrapper | undefined, Error | undefined];
8
5
  //# sourceMappingURL=useProvidedNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useProvidedNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useProvidedNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAK3D,iBAAS,mBAAmB,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,CAAC,UAAU,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAA;AAC3F,iBAAS,mBAAmB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,UAAU,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAA;AACtF,iBAAS,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,CAAC,WAAW,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CAAC,CAAA;AAmBhG,eAAO,MAAM,eAAe,4BAAsB,CAAA"}
1
+ {"version":3,"file":"useProvidedNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useProvidedNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAM3D,eAAO,MAAM,eAAe,QAAO,CAAC,UAAU,GAAG,SAAS,CAIzD,CAAA;AAED,eAAO,MAAM,sBAAsB,aAAc,eAAe,KAAG,CAAC,WAAW,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA2B7G,CAAA"}
@@ -0,0 +1,39 @@
1
+ import { AccountInstance } from '@xyo-network/account-model';
2
+ import { ModuleWrapper } from '@xyo-network/module';
3
+ export interface WrapperStatic<TModuleWrapper extends ModuleWrapper = ModuleWrapper> {
4
+ requiredQueries: string[];
5
+ wrap: (module?: TModuleWrapper['module'], account?: AccountInstance) => TModuleWrapper;
6
+ }
7
+ export declare const WrappedModuleHookFactory: <TModuleWrapper extends ModuleWrapper<import("@xyo-network/module").Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
8
+ name?: string | undefined;
9
+ security?: {
10
+ allowAnonymous?: boolean | undefined;
11
+ allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
12
+ disallowed?: Record<string, string[]> | undefined;
13
+ } | undefined;
14
+ storeQueries?: boolean | undefined;
15
+ } & {
16
+ schema: string;
17
+ }>> = ModuleWrapper<import("@xyo-network/module").Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
18
+ name?: string | undefined;
19
+ security?: {
20
+ allowAnonymous?: boolean | undefined;
21
+ allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
22
+ disallowed?: Record<string, string[]> | undefined;
23
+ } | undefined;
24
+ storeQueries?: boolean | undefined;
25
+ } & {
26
+ schema: string;
27
+ }>>>(wrapperObject: WrapperStatic<TModuleWrapper>, name?: string) => (nameOrAddress?: string, account?: AccountInstance, spinCheck?: boolean) => [TModuleWrapper | undefined, Error | undefined];
28
+ export declare const useWrappedModule: (nameOrAddress?: string, account?: AccountInstance, spinCheck?: boolean) => [ModuleWrapper<import("@xyo-network/module").Module<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & {
29
+ name?: string | undefined;
30
+ security?: {
31
+ allowAnonymous?: boolean | undefined;
32
+ allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
33
+ disallowed?: Record<string, string[]> | undefined;
34
+ } | undefined;
35
+ storeQueries?: boolean | undefined;
36
+ } & {
37
+ schema: string;
38
+ }>> | undefined, Error | undefined];
39
+ //# sourceMappingURL=useWrappedModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWrappedModule.d.ts","sourceRoot":"","sources":["../../../src/hooks/useWrappedModule.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAMnD,MAAM,WAAW,aAAa,CAAC,cAAc,SAAS,aAAa,GAAG,aAAa;IACjF,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,eAAe,KAAK,cAAc,CAAA;CACvF;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;0DAE5B,MAAM,sBAEoB,MAAM,YAAY,eAAe,cAAc,OAAO,oDAyCxF,CAAA;AAED,eAAO,MAAM,gBAAgB,mBA3CM,MAAM,YAAY,eAAe,cAAc,OAAO;;;;;;;;;;mCA2ClB,CAAA"}
package/package.json CHANGED
@@ -10,24 +10,24 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@mui/lab": "^5.0.0-alpha.121",
14
- "@xylabs/react-flexbox": "^2.16.8",
15
- "@xylabs/react-shared": "^2.16.8",
16
- "@xyo-network/account": "^2.51.1",
17
- "@xyo-network/archivist": "^2.51.1",
18
- "@xyo-network/diviner-model": "^2.51.1",
19
- "@xyo-network/diviner-wrapper": "^2.51.1",
20
- "@xyo-network/module": "^2.51.1",
21
- "@xyo-network/module-model": "^2.51.1",
22
- "@xyo-network/node": "^2.51.1",
23
- "@xyo-network/payload-model": "^2.51.1",
24
- "@xyo-network/react-shared": "^2.45.0-rc.8",
25
- "@xyo-network/witness": "^2.51.1"
13
+ "@mui/lab": "^5.0.0-alpha.122",
14
+ "@xylabs/react-flexbox": "^2.16.11",
15
+ "@xylabs/react-render-spin-check": "^2.16.11",
16
+ "@xylabs/react-shared": "^2.16.11",
17
+ "@xyo-network/account-model": "^2.51.7",
18
+ "@xyo-network/module": "^2.51.7",
19
+ "@xyo-network/module-model": "^2.51.7",
20
+ "@xyo-network/node": "^2.51.7",
21
+ "@xyo-network/react-shared": "^2.45.0",
22
+ "@xyo-network/react-wallet": "^2.45.0"
26
23
  },
27
24
  "devDependencies": {
28
25
  "@storybook/react": "^6.5.16",
29
- "@xylabs/ts-scripts-yarn3": "^2.16.0",
30
- "@xylabs/tsconfig-react": "^2.16.0",
26
+ "@xylabs/ts-scripts-yarn3": "^2.16.1",
27
+ "@xylabs/tsconfig-react": "^2.16.1",
28
+ "@xyo-network/account": "^2.51.7",
29
+ "@xyo-network/react-storybook": "^2.45.0",
30
+ "@xyo-network/react-wallet": "^2.45.0",
31
31
  "require-from-string": "^2.0.2",
32
32
  "typescript": "^4.9.5"
33
33
  },
@@ -83,6 +83,5 @@
83
83
  },
84
84
  "sideEffects": false,
85
85
  "types": "dist/types/index.d.ts",
86
- "version": "2.45.0-rc.8",
87
- "stableVersion": "2.44.1"
86
+ "version": "2.45.0"
88
87
  }
@@ -1,29 +1,53 @@
1
1
  import { ComponentStory, DecoratorFn, Meta } from '@storybook/react'
2
- import { useAsyncEffect } from '@xylabs/react-shared'
2
+ import { useAsyncEffect, WithChildren } from '@xylabs/react-shared'
3
+ import { HDWallet } from '@xyo-network/account'
3
4
  import { AbstractModule } from '@xyo-network/module'
4
5
  import { MemoryNode, NodeConfigSchema, NodeWrapper } from '@xyo-network/node'
5
- import { useState } from 'react'
6
+ import { DefaultSeedPhrase } from '@xyo-network/react-storybook'
7
+ import { WalletProvider } from '@xyo-network/react-wallet'
8
+ import { useEffect, useState } from 'react'
6
9
 
7
10
  import { MemoryNodeProvider } from '../contexts'
8
- import { useProvidedNode } from '../hooks'
11
+ import { useModule, useProvidedNode } from '../hooks'
12
+
13
+ const randomWallet = HDWallet.fromMnemonic(DefaultSeedPhrase)
9
14
 
10
15
  class TestModule extends AbstractModule {}
16
+ const TestModuleName = 'TestModule'
17
+ const TestModuleAccount = randomWallet.deriveAccount('0')
18
+
19
+ const account = randomWallet.deriveAccount('0')
11
20
 
12
21
  const MemoryNodeDecorator: DecoratorFn = (Story, args) => {
13
22
  return (
14
- <MemoryNodeProvider config={{ schema: NodeConfigSchema }}>
15
- <Story {...args} />
16
- </MemoryNodeProvider>
23
+ <WalletProvider defaultWallet={randomWallet}>
24
+ <MemoryNodeProvider config={{ schema: NodeConfigSchema }}>
25
+ <Story {...args} />
26
+ </MemoryNodeProvider>
27
+ </WalletProvider>
17
28
  )
18
29
  }
19
30
 
31
+ const UseModuleTest: React.FC<WithChildren> = ({ children }) => {
32
+ const [testModule] = useModule(TestModuleName, account)
33
+
34
+ useEffect(() => {
35
+ if (testModule) {
36
+ // Should be called but isn't
37
+ console.log('*****test module*****', testModule)
38
+ }
39
+ }, [testModule])
40
+
41
+ return <>{children}</>
42
+ }
43
+
20
44
  // eslint-disable-next-line import/no-default-export
21
45
  export default {
22
46
  title: 'modules/node/NodeBox',
23
47
  } as Meta
24
48
 
25
49
  const Template: ComponentStory<React.FC> = (props) => {
26
- const [node] = useProvidedNode() as [MemoryNode, Error]
50
+ const [node] = useProvidedNode() as [MemoryNode]
27
51
  const [description, setDescription] = useState<string>()
28
52
 
29
53
  useAsyncEffect(
@@ -31,9 +55,9 @@ const Template: ComponentStory<React.FC> = (props) => {
31
55
  async (mounted) => {
32
56
  if (node) {
33
57
  try {
34
- const mod = await TestModule.create({ config: { schema: 'network.xyo.test.module' } })
58
+ const mod = await TestModule.create({ account: TestModuleAccount, config: { name: TestModuleName, schema: 'network.xyo.test.module' } })
35
59
  node?.register(mod)
36
- await node?.attach(mod.address)
60
+ await node?.attach(mod.address, true)
37
61
  const wrapper = NodeWrapper.wrap(node)
38
62
  const description = await wrapper?.describe()
39
63
  if (mounted()) {
@@ -49,7 +73,9 @@ const Template: ComponentStory<React.FC> = (props) => {
49
73
 
50
74
  return (
51
75
  <div {...props}>
52
- <pre>{description}</pre>
76
+ <UseModuleTest>
77
+ <pre>{description}</pre>
78
+ </UseModuleTest>
53
79
  </div>
54
80
  )
55
81
  }
@@ -1,14 +1,7 @@
1
- export * from './useArchiveArchivists'
2
- export * from './useArchivistModule'
3
- export * from './useArchivistModules'
4
- export * from './useDivinerModule'
5
- export * from './useDivinerModules'
6
1
  export * from './useMemoryNodeUpdates'
7
2
  export * from './useModule'
8
- export * from './useModuleAddresses'
9
3
  export * from './useModules'
10
4
  export * from './useNode'
11
- export * from './useNodeQueryDiviner'
5
+ export * from './useNodeAttachedAddresses'
12
6
  export * from './useProvidedNode'
13
- export * from './useWitnessModule'
14
- export * from './useWitnessModules'
7
+ export * from './useWrappedModule'
@@ -16,7 +16,7 @@ export const useMemoryNodeUpdates = (refreshAddresses?: string[]): UseMemoryNode
16
16
 
17
17
  useEffect(() => {
18
18
  if (node) {
19
- const onFunc = node.on as ModuleAttachedEventEmitter['on']
19
+ const onFunc = node.module.on as ModuleAttachedEventEmitter['on']
20
20
  onFunc('moduleAttached', (args) => {
21
21
  if (refreshAddresses) {
22
22
  if (refreshAddresses.some((address) => address === args?.module.address)) setModule(args)
@@ -1,5 +1,79 @@
1
- import { Module, ModuleWrapper } from '@xyo-network/module'
1
+ import { useAsyncEffect } from '@xylabs/react-shared'
2
+ import { AccountInstance } from '@xyo-network/account-model'
3
+ import { Module, ModuleFilter } from '@xyo-network/module-model'
4
+ import { ModuleAttachedEventArgs, ModuleAttachedEventEmitter, ModuleDetachedEventArgs, ModuleDetachedEventEmitter } from '@xyo-network/node'
5
+ import { useMemo, useState } from 'react'
2
6
 
3
- import { createUseModuleHook, useNode } from './useNode'
7
+ import { useProvidedWrappedNode } from './useProvidedNode'
4
8
 
5
- export const useModule = createUseModuleHook<Module, ModuleWrapper>((module) => ModuleWrapper.wrap(module), useNode)
9
+ export const useModule = <TModule extends Module = Module>(
10
+ nameOrAddressOrFilter?: string | ModuleFilter,
11
+ account?: AccountInstance,
12
+ ): [TModule | undefined, Error | undefined] => {
13
+ const nameOrAddress = useMemo(() => (typeof nameOrAddressOrFilter === 'string' ? nameOrAddressOrFilter : undefined), [nameOrAddressOrFilter])
14
+ const filter = useMemo(() => (typeof nameOrAddressOrFilter === 'object' ? nameOrAddressOrFilter : undefined), [nameOrAddressOrFilter])
15
+ const [node, nodeError] = useProvidedWrappedNode(account)
16
+ const [module, setModule] = useState<TModule>()
17
+ const [error, setError] = useState<Error>()
18
+
19
+ const address = module?.address
20
+
21
+ useAsyncEffect(
22
+ // eslint-disable-next-line react-hooks/exhaustive-deps
23
+ async (mounted) => {
24
+ try {
25
+ if (nodeError) {
26
+ setError(nodeError)
27
+ setModule(undefined)
28
+ } else {
29
+ if (node) {
30
+ const attachEmitter = node.module as ModuleAttachedEventEmitter
31
+ const detachEmitter = node.module as ModuleDetachedEventEmitter
32
+ const attachHandler = (args: ModuleAttachedEventArgs) => {
33
+ const eventModule = args.module
34
+ if (nameOrAddress && (eventModule.address === nameOrAddress || eventModule?.config.name === nameOrAddress) && mounted()) {
35
+ setModule(eventModule as TModule)
36
+ setError(undefined)
37
+ }
38
+ }
39
+ const detachHandler = (args: ModuleDetachedEventArgs) => {
40
+ const eventModule = args.module
41
+ if (eventModule.address === address && mounted()) {
42
+ setModule(undefined)
43
+ setError(undefined)
44
+ }
45
+ }
46
+ const module: TModule | undefined = nameOrAddress
47
+ ? await node.resolve<TModule>(nameOrAddress)
48
+ : (await node.resolve<TModule>(filter)).pop()
49
+ if (mounted()) {
50
+ attachEmitter.on('moduleAttached', attachHandler, true)
51
+ detachEmitter.on('moduleDetached', detachHandler, true)
52
+ detachEmitter.on('moduleDetached', detachHandler)
53
+ attachEmitter.on('moduleAttached', attachHandler)
54
+ setModule(module)
55
+ setError(undefined)
56
+ }
57
+ return () => {
58
+ //remove the event handler on unmount
59
+ attachEmitter.on('moduleAttached', attachHandler, true)
60
+ detachEmitter.on('moduleDetached', detachHandler, true)
61
+ }
62
+ } else {
63
+ setError(undefined)
64
+ setModule(undefined)
65
+ }
66
+ }
67
+ } catch (ex) {
68
+ if (mounted()) {
69
+ const error = ex as Error
70
+ setError(error)
71
+ setModule(undefined)
72
+ }
73
+ }
74
+ },
75
+ [nameOrAddress, node, nodeError, address, filter],
76
+ )
77
+
78
+ return [module, error]
79
+ }
@@ -1,23 +1,43 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared'
2
- import { Module, ModuleFilter } from '@xyo-network/module'
2
+ import { Module, ModuleFilter } from '@xyo-network/module-model'
3
3
  import { useState } from 'react'
4
4
 
5
- import { useProvidedNode } from './useProvidedNode'
5
+ import { useProvidedWrappedNode } from './useProvidedNode'
6
6
 
7
- export const useModules = <T extends Module = Module>(filter?: ModuleFilter) => {
8
- const [node] = useProvidedNode(true)
9
- const [modules, setModules] = useState<T[]>()
7
+ export const useModules = <TModule extends Module = Module>(filter?: ModuleFilter): [TModule[] | undefined, Error | undefined] => {
8
+ const [node, nodeError] = useProvidedWrappedNode()
9
+ const [modules, setModules] = useState<TModule[]>()
10
+ const [error, setError] = useState<Error>()
10
11
 
11
12
  useAsyncEffect(
12
13
  // eslint-disable-next-line react-hooks/exhaustive-deps
13
14
  async (mounted) => {
14
- const modules = await node?.resolve<T>(filter)
15
- if (mounted()) {
16
- setModules(modules)
15
+ try {
16
+ if (nodeError) {
17
+ setError(nodeError)
18
+ setModules(undefined)
19
+ } else {
20
+ if (node) {
21
+ const modules: TModule[] | undefined = await node.resolve<TModule>(filter)
22
+ if (mounted()) {
23
+ setModules(modules)
24
+ setError(undefined)
25
+ }
26
+ } else {
27
+ setError(undefined)
28
+ setModules(undefined)
29
+ }
30
+ }
31
+ } catch (ex) {
32
+ if (mounted()) {
33
+ const error = ex as Error
34
+ setError(error)
35
+ setModules(undefined)
36
+ }
17
37
  }
18
38
  },
19
- [filter, node],
39
+ [filter, node, nodeError],
20
40
  )
21
41
 
22
- return modules
42
+ return [modules, error]
23
43
  }
@@ -1,81 +1,51 @@
1
- /* eslint-disable react-hooks/rules-of-hooks */
2
- import { useAsyncEffect } from '@xylabs/react-shared'
3
- import { Account } from '@xyo-network/account'
4
- import { Module, ModuleWrapper } from '@xyo-network/module'
1
+ import { AccountInstance } from '@xyo-network/account-model'
5
2
  import { NodeModule, NodeWrapper } from '@xyo-network/node'
6
- import { useState } from 'react'
3
+ import { useEffect, useState } from 'react'
7
4
 
5
+ import { useModule } from './useModule'
8
6
  import { useProvidedNode } from './useProvidedNode'
9
7
 
10
- export type WrapFunc<TModule extends Module = Module, TWrapper extends ModuleWrapper = ModuleWrapper> = (
11
- module?: TModule,
12
- account?: Account,
13
- ) => TWrapper | undefined
8
+ //AT: intentionally not exported
9
+ const useNodeModule = (nameOrAddress?: string): [NodeModule | undefined, Error | undefined] => {
10
+ const [providedNode] = useProvidedNode()
11
+ const [node, nodeError] = useModule(nameOrAddress)
14
12
 
15
- export type NodeFunc = () => [NodeModule | undefined, Error | undefined]
13
+ if (nameOrAddress) {
14
+ if (providedNode) {
15
+ return [node as NodeModule, nodeError]
16
+ } else {
17
+ return [providedNode, undefined]
18
+ }
19
+ } else {
20
+ return [providedNode, undefined]
21
+ }
22
+ }
23
+
24
+ export const useNode = (nameOrAddress?: string, account?: AccountInstance): [NodeWrapper | undefined, Error | undefined] => {
25
+ const [node, nodeError] = useNodeModule(nameOrAddress)
26
+ const [wrapper, setWrapper] = useState<NodeWrapper>()
27
+ const [error, setError] = useState<Error>()
16
28
 
17
- export const createUseModuleHook = <
18
- TModule extends Module = Module,
19
- TWrapper extends ModuleWrapper = ModuleWrapper,
20
- TWrapFunc extends WrapFunc<TModule, TWrapper> = WrapFunc<TModule, TWrapper>,
21
- >(
22
- wrapFunc: TWrapFunc,
23
- nodeFunc: NodeFunc,
24
- ) => {
25
- function use(name?: string): [TModule | undefined, Error | undefined]
26
- function use(name: string | undefined, wrap: true | Account): [TWrapper | undefined, Error | undefined]
27
- function use(wrap: true | Account): [TWrapper | undefined, Error | undefined]
28
- function use(address: string): [TModule | undefined, Error | undefined]
29
- function use(address: string, wrap: true | Account): [TWrapper | undefined, Error | undefined]
30
- function use(
31
- nameOrAddressOrWrapOrAccount?: string | boolean | Account,
32
- wrap: boolean | Account = false,
33
- ): [TWrapper | TModule | undefined, Error | undefined] {
34
- const [node, nodeError] = nodeFunc()
35
- const shouldWrap = typeof nameOrAddressOrWrapOrAccount === 'boolean' ? nameOrAddressOrWrapOrAccount : wrap
36
- const account = typeof nameOrAddressOrWrapOrAccount === 'object' ? nameOrAddressOrWrapOrAccount : typeof wrap === 'boolean' ? undefined : wrap
37
- const nameOrAddress = typeof nameOrAddressOrWrapOrAccount === 'string' ? nameOrAddressOrWrapOrAccount : undefined
38
- const [module, setModule] = useState<TModule | TWrapper>()
39
- const [error, setError] = useState<Error>()
40
- useAsyncEffect(
41
- // eslint-disable-next-line react-hooks/exhaustive-deps
42
- async (mounted) => {
29
+ useEffect(() => {
30
+ if (node) {
31
+ if (nodeError) {
32
+ setError(nodeError)
33
+ setWrapper(undefined)
34
+ } else {
43
35
  try {
44
- if (nodeError) {
45
- console.log(`Setting NodeError [${nodeError.message}]`)
46
- setError(nodeError)
47
- setModule(undefined)
48
- } else {
49
- if (node) {
50
- const wrappedNode = NodeWrapper.wrap(node)
51
- const module = await wrappedNode?.resolve<TModule>(nameOrAddress)
52
- const finalModule = shouldWrap ? wrapFunc(module, account) : module
53
- if (mounted()) {
54
- console.log(`Setting Module [${finalModule?.address}]`)
55
- setModule(finalModule)
56
- setError(undefined)
57
- }
58
- } else {
59
- console.log('Setting All to undefined')
60
- setError(undefined)
61
- setModule(undefined)
62
- }
63
- }
36
+ const wrapper = NodeWrapper.wrap(node, account)
37
+ setWrapper(wrapper)
38
+ setError(undefined)
64
39
  } catch (ex) {
65
- if (mounted()) {
66
- const error = ex as Error
67
- console.log(`Setting Error [${error.message}]`)
68
- setError(error)
69
- setModule(undefined)
70
- }
40
+ setWrapper(undefined)
41
+ setError(ex as Error)
71
42
  }
72
- },
73
- [wrap, node, nameOrAddress, nodeError, shouldWrap, account],
74
- )
43
+ }
44
+ } else {
45
+ setWrapper(undefined)
46
+ setError(undefined)
47
+ }
48
+ }, [node, account, nodeError])
75
49
 
76
- return [module, error]
77
- }
78
- return use
50
+ return [wrapper, error]
79
51
  }
80
-
81
- export const useNode = createUseModuleHook<NodeModule, NodeWrapper>((module) => NodeWrapper.wrap(module), useProvidedNode)
@@ -1,22 +1,22 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-shared'
2
2
  import { useState } from 'react'
3
3
 
4
- import { useProvidedNode } from './useProvidedNode'
4
+ import { useNode } from './useNode'
5
5
 
6
- export const useModuleAddresses = () => {
7
- const [node] = useProvidedNode()
8
- const [attachedAddresses, setAttachedAddresses] = useState<string[]>()
6
+ export const useNodeAttachedAddresses = () => {
7
+ const [node] = useNode()
8
+ const [addresses, setAddresses] = useState<string[]>()
9
9
 
10
10
  useAsyncEffect(
11
11
  // eslint-disable-next-line react-hooks/exhaustive-deps
12
12
  async (mounted) => {
13
13
  const attached = await node?.attached()
14
14
  if (mounted()) {
15
- setAttachedAddresses(attached)
15
+ setAddresses(attached)
16
16
  }
17
17
  },
18
18
  [node],
19
19
  )
20
20
 
21
- return [attachedAddresses, node?.registered()]
21
+ return [addresses, node?.registered()]
22
22
  }