@xyo-network/react-node 2.45.0-rc.16 → 2.45.0-rc.18

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/hooks/index.js +1 -0
  2. package/dist/cjs/hooks/index.js.map +1 -1
  3. package/dist/cjs/hooks/useArchiveArchivists.js +1 -1
  4. package/dist/cjs/hooks/useArchiveArchivists.js.map +1 -1
  5. package/dist/cjs/hooks/useModule.js +45 -3
  6. package/dist/cjs/hooks/useModule.js.map +1 -1
  7. package/dist/cjs/hooks/useModules.js +1 -1
  8. package/dist/cjs/hooks/useModules.js.map +1 -1
  9. package/dist/cjs/hooks/useNode.js +16 -56
  10. package/dist/cjs/hooks/useNode.js.map +1 -1
  11. package/dist/cjs/hooks/useProvidedNode.js +13 -9
  12. package/dist/cjs/hooks/useProvidedNode.js.map +1 -1
  13. package/dist/cjs/hooks/useWrappedModule.js +33 -0
  14. package/dist/cjs/hooks/useWrappedModule.js.map +1 -0
  15. package/dist/docs.json +627 -1510
  16. package/dist/esm/hooks/index.js +1 -0
  17. package/dist/esm/hooks/index.js.map +1 -1
  18. package/dist/esm/hooks/useArchiveArchivists.js +2 -2
  19. package/dist/esm/hooks/useArchiveArchivists.js.map +1 -1
  20. package/dist/esm/hooks/useModule.js +43 -3
  21. package/dist/esm/hooks/useModule.js.map +1 -1
  22. package/dist/esm/hooks/useModules.js +2 -2
  23. package/dist/esm/hooks/useModules.js.map +1 -1
  24. package/dist/esm/hooks/useNode.js +15 -54
  25. package/dist/esm/hooks/useNode.js.map +1 -1
  26. package/dist/esm/hooks/useProvidedNode.js +10 -8
  27. package/dist/esm/hooks/useProvidedNode.js.map +1 -1
  28. package/dist/esm/hooks/useWrappedModule.js +29 -0
  29. package/dist/esm/hooks/useWrappedModule.js.map +1 -0
  30. package/dist/types/hooks/index.d.ts +1 -0
  31. package/dist/types/hooks/index.d.ts.map +1 -1
  32. package/dist/types/hooks/useModule.d.ts +22 -58
  33. package/dist/types/hooks/useModule.d.ts.map +1 -1
  34. package/dist/types/hooks/useNode.d.ts +2 -59
  35. package/dist/types/hooks/useNode.d.ts.map +1 -1
  36. package/dist/types/hooks/useProvidedNode.d.ts +3 -6
  37. package/dist/types/hooks/useProvidedNode.d.ts.map +1 -1
  38. package/dist/types/hooks/useWrappedModule.d.ts +38 -0
  39. package/dist/types/hooks/useWrappedModule.d.ts.map +1 -0
  40. package/package.json +4 -4
  41. package/src/components/Node.stories.tsx +1 -1
  42. package/src/hooks/index.ts +1 -0
  43. package/src/hooks/useArchiveArchivists.tsx +2 -2
  44. package/src/hooks/useModule.tsx +44 -3
  45. package/src/hooks/useModules.ts +2 -2
  46. package/src/hooks/useNode.tsx +14 -77
  47. package/src/hooks/useProvidedNode.tsx +12 -12
  48. package/src/hooks/useWrappedModule.tsx +37 -0
@@ -1,5 +1,46 @@
1
- import { Module, ModuleWrapper } from '@xyo-network/module'
1
+ import { useAsyncEffect } from '@xylabs/react-shared'
2
+ import { Module } from '@xyo-network/module-model'
3
+ import { useState } from 'react'
2
4
 
3
- import { createUseModuleHook } from './useNode'
5
+ import { useProvidedWrappedNode } from './useProvidedNode'
4
6
 
5
- export const useModule = createUseModuleHook<Module, ModuleWrapper>((module) => ModuleWrapper.tryWrap(module))
7
+ export const useModule = <TModule extends Module = Module>(nameOrAddress?: string): [TModule | undefined, Error | undefined] => {
8
+ const [node, nodeError] = useProvidedWrappedNode()
9
+ const [module, setModule] = useState<TModule>()
10
+ const [error, setError] = useState<Error>()
11
+ useAsyncEffect(
12
+ // eslint-disable-next-line react-hooks/exhaustive-deps
13
+ async (mounted) => {
14
+ try {
15
+ if (nodeError) {
16
+ console.log(`Setting NodeError [${nodeError.message}]`)
17
+ setError(nodeError)
18
+ setModule(undefined)
19
+ } else {
20
+ if (node) {
21
+ const module: TModule | undefined = nameOrAddress ? await node.resolve<TModule>(nameOrAddress) : (await node.resolve<TModule>()).pop()
22
+ if (mounted()) {
23
+ console.log(`Setting Module [${module?.address}]`)
24
+ setModule(module)
25
+ setError(undefined)
26
+ }
27
+ } else {
28
+ console.log('Setting All to undefined')
29
+ setError(undefined)
30
+ setModule(undefined)
31
+ }
32
+ }
33
+ } catch (ex) {
34
+ if (mounted()) {
35
+ const error = ex as Error
36
+ console.log(`Setting Error [${error.message}]`)
37
+ setError(error)
38
+ setModule(undefined)
39
+ }
40
+ }
41
+ },
42
+ [nameOrAddress, node, nodeError],
43
+ )
44
+
45
+ return [module, error]
46
+ }
@@ -2,10 +2,10 @@ import { useAsyncEffect } from '@xylabs/react-shared'
2
2
  import { Module, ModuleFilter } from '@xyo-network/module'
3
3
  import { useState } from 'react'
4
4
 
5
- import { useProvidedNode } from './useProvidedNode'
5
+ import { useProvidedWrappedNode } from './useProvidedNode'
6
6
 
7
7
  export const useModules = <T extends Module = Module>(filter?: ModuleFilter) => {
8
- const [node] = useProvidedNode(true)
8
+ const [node] = useProvidedWrappedNode()
9
9
  const [modules, setModules] = useState<T[]>()
10
10
 
11
11
  useAsyncEffect(
@@ -1,82 +1,19 @@
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'
5
- import { NodeModule, NodeWrapper } from '@xyo-network/node'
6
- import { useState } from 'react'
1
+ import { NodeModule } from '@xyo-network/node'
7
2
 
8
- import { useProvidedNode } from './useProvidedNode'
3
+ import { useModule } from './useModule'
4
+ import { useProvidedWrappedNode } from './useProvidedNode'
9
5
 
10
- export type WrapFunc<TModule extends Module = Module, TWrapper extends ModuleWrapper = ModuleWrapper> = (
11
- module?: TModule,
12
- account?: Account,
13
- ) => TWrapper | undefined
6
+ export const useNode = (nameOrAddress?: string): [NodeModule | undefined, Error | undefined] => {
7
+ const [providedNode, providedNodeError] = useProvidedWrappedNode()
8
+ const [node, nodeError] = useModule<NodeModule>(nameOrAddress)
14
9
 
15
- export type NodeFunc = () => [NodeModule | undefined, Error | undefined]
16
-
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
- ) => {
24
- function use(name?: string): [TModule | undefined, Error | undefined]
25
- function use(name: string | undefined, wrap: true | Account): [TWrapper | undefined, Error | undefined]
26
- function use(wrap: true | Account): [TWrapper | undefined, Error | undefined]
27
- function use(address: string): [TModule | undefined, Error | undefined]
28
- function use(address: string, wrap: true | Account): [TWrapper | undefined, Error | undefined]
29
- function use(
30
- nameOrAddressOrWrapOrAccount?: string | boolean | Account,
31
- wrap: boolean | Account = false,
32
- ): [TWrapper | TModule | undefined, Error | undefined] {
33
- const [node, nodeError] = useProvidedNode()
34
- const shouldWrap = typeof nameOrAddressOrWrapOrAccount === 'boolean' ? nameOrAddressOrWrapOrAccount : wrap
35
- const account = typeof nameOrAddressOrWrapOrAccount === 'object' ? nameOrAddressOrWrapOrAccount : typeof wrap === 'boolean' ? undefined : wrap
36
- const nameOrAddress = typeof nameOrAddressOrWrapOrAccount === 'string' ? nameOrAddressOrWrapOrAccount : undefined
37
- const [module, setModule] = useState<TModule | TWrapper>()
38
- const [error, setError] = useState<Error>()
39
- useAsyncEffect(
40
- // eslint-disable-next-line react-hooks/exhaustive-deps
41
- async (mounted) => {
42
- try {
43
- if (nodeError) {
44
- console.log(`Setting NodeError [${nodeError.message}]`)
45
- setError(nodeError)
46
- setModule(undefined)
47
- } else {
48
- const wrappedNode = NodeWrapper.tryWrap(node)
49
- if (wrappedNode) {
50
- const module: TModule | undefined = nameOrAddress
51
- ? await wrappedNode?.resolve<TModule>(nameOrAddress)
52
- : (await wrappedNode.resolve<TModule>()).pop()
53
- const finalModule = shouldWrap ? wrapFunc(module, account) : module
54
- if (mounted()) {
55
- console.log(`Setting Module [${finalModule?.address}]`)
56
- setModule(finalModule)
57
- setError(undefined)
58
- }
59
- } else {
60
- console.log('Setting All to undefined')
61
- setError(undefined)
62
- setModule(undefined)
63
- }
64
- }
65
- } catch (ex) {
66
- if (mounted()) {
67
- const error = ex as Error
68
- console.log(`Setting Error [${error.message}]`)
69
- setError(error)
70
- setModule(undefined)
71
- }
72
- }
73
- },
74
- [wrap, node, nameOrAddress, nodeError, shouldWrap, account],
75
- )
76
-
77
- return [module, error]
10
+ if (nameOrAddress) {
11
+ if (providedNode) {
12
+ return [node, nodeError]
13
+ } else {
14
+ return [providedNode, providedNodeError]
15
+ }
16
+ } else {
17
+ return [providedNode, providedNodeError]
78
18
  }
79
- return use
80
19
  }
81
-
82
- export const useNode = createUseModuleHook<NodeModule, NodeWrapper>((module) => NodeWrapper.tryWrap(module))
@@ -1,31 +1,31 @@
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
3
  import { useContext, useEffect, useState } from 'react'
4
4
 
5
5
  import { NodeContext } from '../contexts'
6
6
 
7
- function useProvidedNodeFunc(wrap?: undefined): [NodeModule | undefined, Error | undefined]
8
- function useProvidedNodeFunc(wrap: false): [NodeModule | undefined, Error | undefined]
9
- function useProvidedNodeFunc(wrap: true | Account): [NodeWrapper | undefined, Error | undefined]
10
- function useProvidedNodeFunc(wrap: boolean | Account | undefined): [NodeModule | NodeWrapper | undefined, Error | undefined] {
7
+ export const useProvidedNode = (): [NodeModule | undefined] => {
11
8
  const { node } = useContext(NodeContext)
9
+
10
+ return [node]
11
+ }
12
+
13
+ export const useProvidedWrappedNode = (account?: AccountInstance): [NodeWrapper | undefined, Error | undefined] => {
14
+ const [node] = useProvidedNode()
12
15
  const [wrappedNode, setWrappedNode] = useState<NodeWrapper>()
13
16
  const [error, setError] = useState<Error>()
14
17
 
15
18
  useEffect(() => {
16
19
  try {
17
20
  if (node) {
18
- const account = typeof wrap === 'boolean' ? undefined : wrap
19
- const wrappedNode = wrap ? NodeWrapper.wrap(node, account) : undefined
20
- setWrappedNode(wrappedNode)
21
+ setWrappedNode(NodeWrapper.wrap(node, account))
21
22
  setError(undefined)
22
23
  }
23
24
  } catch (ex) {
25
+ setWrappedNode(undefined)
24
26
  setError(ex as Error)
25
27
  }
26
- }, [node, wrap])
28
+ }, [node, account])
27
29
 
28
- return [wrap ? wrappedNode : wrappedNode?.module, error]
30
+ return [wrappedNode, error]
29
31
  }
30
-
31
- export const useProvidedNode = useProvidedNodeFunc
@@ -0,0 +1,37 @@
1
+ /* eslint-disable react-hooks/rules-of-hooks */
2
+ import { AccountInstance } from '@xyo-network/account-model'
3
+ import { ModuleWrapper } from '@xyo-network/module'
4
+ import { useEffect, useState } from 'react'
5
+
6
+ import { useModule } from './useModule'
7
+
8
+ export interface WrapperStatic<TModuleWrapper extends ModuleWrapper = ModuleWrapper> {
9
+ wrap: (module?: TModuleWrapper['module'], account?: AccountInstance) => TModuleWrapper
10
+ }
11
+
12
+ export const WrappedModuleHookFactory = <TModuleWrapper extends ModuleWrapper = ModuleWrapper>(wrapperObject: WrapperStatic<TModuleWrapper>) => {
13
+ return (nameOrAddress?: string, account?: AccountInstance): [TModuleWrapper | undefined, Error | undefined] => {
14
+ const [module, moduleError] = useModule<TModuleWrapper['module']>(nameOrAddress)
15
+
16
+ const [wrapper, setWrapper] = useState<TModuleWrapper>()
17
+ const [error, setError] = useState<Error>()
18
+ useEffect(() => {
19
+ if (module) {
20
+ try {
21
+ const wrapper = wrapperObject.wrap(module, account) as TModuleWrapper
22
+ setWrapper(wrapper)
23
+ } catch (ex) {
24
+ setWrapper(undefined)
25
+ setError(ex as Error)
26
+ }
27
+ } else {
28
+ setWrapper(undefined)
29
+ setError(moduleError)
30
+ }
31
+ }, [module, account, moduleError])
32
+
33
+ return [wrapper, error]
34
+ }
35
+ }
36
+
37
+ export const useWrappedModule = WrappedModuleHookFactory(ModuleWrapper)