@xyo-network/react-node 2.58.0 → 2.59.0-rc.2

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.
@@ -4,21 +4,25 @@ exports.useModuleFromNode = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_async_effect_1 = require("@xylabs/react-async-effect");
6
6
  const module_model_1 = require("@xyo-network/module-model");
7
+ const react_shared_1 = require("@xyo-network/react-shared");
7
8
  const react_1 = require("react");
8
9
  const provided_1 = require("./provided");
9
10
  const useModuleFromNode = (nameOrAddress, config) => {
10
- const [node] = (0, provided_1.useProvidedNode)();
11
+ const [providedNode] = (0, provided_1.useProvidedNode)();
11
12
  const [module, setModule] = (0, react_1.useState)();
12
13
  const [error, setError] = (0, react_1.useState)();
14
+ const [configMemo, setConfigMemo] = (0, react_shared_1.useDataState)(config);
15
+ setConfigMemo(config);
13
16
  const address = (0, react_1.useMemo)(() => module === null || module === void 0 ? void 0 : module.address, [module]);
14
17
  (0, react_async_effect_1.useAsyncEffect)(
15
18
  // eslint-disable-next-line react-hooks/exhaustive-deps
16
19
  (mounted) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
17
20
  var _a, _b;
18
- const _c = config !== null && config !== void 0 ? config : {}, { logger } = _c, resolverConfig = tslib_1.__rest(_c, ["logger"]);
21
+ const _c = configMemo !== null && configMemo !== void 0 ? configMemo : {}, { logger, node } = _c, resolverConfig = tslib_1.__rest(_c, ["logger", "node"]);
19
22
  const eventUnsubscribe = [];
20
23
  try {
21
- if (node) {
24
+ const activeNode = node !== null && node !== void 0 ? node : providedNode;
25
+ if (activeNode) {
22
26
  const attachHandler = (args) => {
23
27
  var _a, _b, _c;
24
28
  const eventModule = args.module;
@@ -50,7 +54,7 @@ const useModuleFromNode = (nameOrAddress, config) => {
50
54
  setError(undefined);
51
55
  }
52
56
  };
53
- const module = nameOrAddress ? yield node.resolve(nameOrAddress, resolverConfig) : undefined;
57
+ const module = nameOrAddress ? yield activeNode.resolve(nameOrAddress, resolverConfig) : undefined;
54
58
  if (mounted()) {
55
59
  const instance = (0, module_model_1.asModuleInstance)(module);
56
60
  if (module) {
@@ -60,8 +64,8 @@ const useModuleFromNode = (nameOrAddress, config) => {
60
64
  setError(error);
61
65
  }
62
66
  else {
63
- eventUnsubscribe.push(node.on('moduleAttached', attachHandler));
64
- eventUnsubscribe.push(node.on('moduleDetached', detachHandler));
67
+ eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler));
68
+ eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler));
65
69
  logger === null || logger === void 0 ? void 0 : logger.debug(`resolved [${nameOrAddress}]`);
66
70
  setModule(instance !== null && instance !== void 0 ? instance : null);
67
71
  setError(undefined);
@@ -75,7 +79,7 @@ const useModuleFromNode = (nameOrAddress, config) => {
75
79
  }
76
80
  else {
77
81
  if (mounted()) {
78
- setModule(node ? node : undefined);
82
+ setModule(activeNode ? activeNode : undefined);
79
83
  setError(undefined);
80
84
  }
81
85
  }
@@ -92,7 +96,7 @@ const useModuleFromNode = (nameOrAddress, config) => {
92
96
  setModule(undefined);
93
97
  }
94
98
  }
95
- }), [nameOrAddress, node, address, config]);
99
+ }), [nameOrAddress, providedNode, address, configMemo]);
96
100
  return [module, error];
97
101
  };
98
102
  exports.useModuleFromNode = useModuleFromNode;
@@ -1 +1 @@
1
- {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"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"}
@@ -5,43 +5,51 @@ const tslib_1 = require("tslib");
5
5
  const react_promise_1 = require("@xylabs/react-promise");
6
6
  const module_model_1 = require("@xyo-network/module-model");
7
7
  const react_module_1 = require("@xyo-network/react-module");
8
+ const react_shared_1 = require("@xyo-network/react-shared");
8
9
  const compact_1 = tslib_1.__importDefault(require("lodash/compact"));
9
10
  const react_1 = require("react");
10
11
  const provided_1 = require("./provided");
11
12
  const useModulesFromNode = (filter, config) => {
12
- const [node] = (0, provided_1.useProvidedNode)();
13
+ const [providedNode] = (0, provided_1.useProvidedNode)();
14
+ const [configMemo, setConfigMemo] = (0, react_shared_1.useDataState)(config);
13
15
  const [refreshed, refresh] = (0, react_module_1.useRefresh)();
16
+ const [resolvedModules, setResolvedModules] = (0, react_1.useState)();
17
+ setConfigMemo(config);
14
18
  //we store this to prevent the need of a deep compare to prevent re-render
15
19
  const modulesLength = (0, react_1.useRef)();
16
20
  const eventUnsubscribe = [];
17
- const [resolvedModules, resolvedModulesError] = (0, react_promise_1.usePromise)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
- const getModulesFromResolution = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
19
- const _a = config !== null && config !== void 0 ? config : {}, { logger } = _a, resolverConfig = tslib_1.__rest(_a, ["logger"]);
20
- if (node) {
21
- const allResolvedModules = (0, compact_1.default)((yield node.resolve(filter, resolverConfig)).map((module) => ((0, module_model_1.isModuleInstance)(module) ? module : undefined)));
22
- if ((allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length) !== modulesLength.current) {
23
- logger === null || logger === void 0 ? void 0 : logger.debug(`getModulesFromResolution-setting: [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
24
- modulesLength.current = allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length;
25
- return allResolvedModules;
26
- }
21
+ const [, resolvedModulesError] = (0, react_promise_1.usePromise)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
22
+ var _a;
23
+ const _b = configMemo !== null && configMemo !== void 0 ? configMemo : {}, { logger } = _b, resolverConfig = tslib_1.__rest(_b, ["logger"]);
24
+ const activeNode = (_a = configMemo === null || configMemo === void 0 ? void 0 : configMemo.node) !== null && _a !== void 0 ? _a : providedNode;
25
+ if (activeNode) {
26
+ const allResolvedModules = (0, compact_1.default)((yield activeNode.resolve(filter, resolverConfig)).map((module) => ((0, module_model_1.isModuleInstance)(module) ? module : undefined)));
27
+ logger === null || logger === void 0 ? void 0 : logger.debug(`getModulesFromResolution:allResolvedModules [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
28
+ if ((allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length) !== modulesLength.current) {
29
+ logger === null || logger === void 0 ? void 0 : logger.debug(`getModulesFromResolution-setting: [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
30
+ modulesLength.current = allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length;
31
+ setResolvedModules(allResolvedModules);
32
+ return allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length;
27
33
  }
28
- return undefined;
29
- });
30
- return yield getModulesFromResolution();
31
- }), [node, filter, config, refreshed]);
34
+ }
35
+ return modulesLength.current;
36
+ }), [providedNode, filter, configMemo, refreshed]);
32
37
  (0, react_1.useEffect)(() => {
33
38
  var _a;
34
- const { logger } = config !== null && config !== void 0 ? config : {};
35
- if (node) {
39
+ const { logger, node } = configMemo !== null && configMemo !== void 0 ? configMemo : {};
40
+ const activeNode = node !== null && node !== void 0 ? node : providedNode;
41
+ if (activeNode) {
36
42
  while (eventUnsubscribe.length) {
37
43
  (_a = eventUnsubscribe.pop()) === null || _a === void 0 ? void 0 : _a();
38
44
  }
39
- eventUnsubscribe.push(node.on('moduleAttached', () => {
40
- logger === null || logger === void 0 ? void 0 : logger.debug('moduleAttached: getModulesFromResolution');
45
+ eventUnsubscribe.push(activeNode.on('moduleAttached', ({ module }) => {
46
+ var _a;
47
+ logger === null || logger === void 0 ? void 0 : logger.debug(`moduleAttached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
41
48
  refresh();
42
49
  }));
43
- eventUnsubscribe.push(node.on('moduleDetached', () => {
44
- logger === null || logger === void 0 ? void 0 : logger.debug('moduleDetached: getModulesFromResolution');
50
+ eventUnsubscribe.push(activeNode.on('moduleDetached', ({ module }) => {
51
+ var _a;
52
+ logger === null || logger === void 0 ? void 0 : logger.debug(`moduleDetached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
45
53
  refresh();
46
54
  }));
47
55
  }
@@ -52,7 +60,7 @@ const useModulesFromNode = (filter, config) => {
52
60
  eventUnsubscribe.pop();
53
61
  }
54
62
  };
55
- }, [node, config]);
63
+ }, [providedNode, configMemo]);
56
64
  return [resolvedModules, resolvedModulesError];
57
65
  };
58
66
  exports.useModulesFromNode = useModulesFromNode;
@@ -1 +1 @@
1
- {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
@@ -1,19 +1,23 @@
1
1
  import { useAsyncEffect } from '@xylabs/react-async-effect';
2
2
  import { asModuleInstance, isModuleInstance } from '@xyo-network/module-model';
3
+ import { useDataState } from '@xyo-network/react-shared';
3
4
  import { useMemo, useState } from 'react';
4
5
  import { useProvidedNode } from './provided';
5
6
  export const useModuleFromNode = (nameOrAddress, config) => {
6
- const [node] = useProvidedNode();
7
+ const [providedNode] = useProvidedNode();
7
8
  const [module, setModule] = useState();
8
9
  const [error, setError] = useState();
10
+ const [configMemo, setConfigMemo] = useDataState(config);
11
+ setConfigMemo(config);
9
12
  const address = useMemo(() => module?.address, [module]);
10
13
  useAsyncEffect(
11
14
  // eslint-disable-next-line react-hooks/exhaustive-deps
12
15
  async (mounted) => {
13
- const { logger, ...resolverConfig } = config ?? {};
16
+ const { logger, node, ...resolverConfig } = configMemo ?? {};
14
17
  const eventUnsubscribe = [];
15
18
  try {
16
- if (node) {
19
+ const activeNode = node ?? providedNode;
20
+ if (activeNode) {
17
21
  const attachHandler = (args) => {
18
22
  const eventModule = args.module;
19
23
  if (nameOrAddress && (eventModule?.address === nameOrAddress || eventModule?.config?.name === nameOrAddress)) {
@@ -44,7 +48,7 @@ export const useModuleFromNode = (nameOrAddress, config) => {
44
48
  setError(undefined);
45
49
  }
46
50
  };
47
- const module = nameOrAddress ? await node.resolve(nameOrAddress, resolverConfig) : undefined;
51
+ const module = nameOrAddress ? await activeNode.resolve(nameOrAddress, resolverConfig) : undefined;
48
52
  if (mounted()) {
49
53
  const instance = asModuleInstance(module);
50
54
  if (module) {
@@ -54,8 +58,8 @@ export const useModuleFromNode = (nameOrAddress, config) => {
54
58
  setError(error);
55
59
  }
56
60
  else {
57
- eventUnsubscribe.push(node.on('moduleAttached', attachHandler));
58
- eventUnsubscribe.push(node.on('moduleDetached', detachHandler));
61
+ eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler));
62
+ eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler));
59
63
  logger?.debug(`resolved [${nameOrAddress}]`);
60
64
  setModule(instance ?? null);
61
65
  setError(undefined);
@@ -69,7 +73,7 @@ export const useModuleFromNode = (nameOrAddress, config) => {
69
73
  }
70
74
  else {
71
75
  if (mounted()) {
72
- setModule(node ? node : undefined);
76
+ setModule(activeNode ? activeNode : undefined);
73
77
  setError(undefined);
74
78
  }
75
79
  }
@@ -86,7 +90,7 @@ export const useModuleFromNode = (nameOrAddress, config) => {
86
90
  setModule(undefined);
87
91
  }
88
92
  }
89
- }, [nameOrAddress, node, address, config]);
93
+ }, [nameOrAddress, providedNode, address, configMemo]);
90
94
  return [module, error];
91
95
  };
92
96
  //# sourceMappingURL=useModuleFromNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"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"}
@@ -1,42 +1,47 @@
1
1
  import { usePromise } from '@xylabs/react-promise';
2
2
  import { isModuleInstance } from '@xyo-network/module-model';
3
3
  import { useRefresh } from '@xyo-network/react-module';
4
+ import { useDataState } from '@xyo-network/react-shared';
4
5
  import compact from 'lodash/compact';
5
- import { useEffect, useRef } from 'react';
6
+ import { useEffect, useRef, useState } from 'react';
6
7
  import { useProvidedNode } from './provided';
7
8
  export const useModulesFromNode = (filter, config) => {
8
- const [node] = useProvidedNode();
9
+ const [providedNode] = useProvidedNode();
10
+ const [configMemo, setConfigMemo] = useDataState(config);
9
11
  const [refreshed, refresh] = useRefresh();
12
+ const [resolvedModules, setResolvedModules] = useState();
13
+ setConfigMemo(config);
10
14
  //we store this to prevent the need of a deep compare to prevent re-render
11
15
  const modulesLength = useRef();
12
16
  const eventUnsubscribe = [];
13
- const [resolvedModules, resolvedModulesError] = usePromise(async () => {
14
- const getModulesFromResolution = async () => {
15
- const { logger, ...resolverConfig } = config ?? {};
16
- if (node) {
17
- const allResolvedModules = compact((await node.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)));
18
- if (allResolvedModules?.length !== modulesLength.current) {
19
- logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`);
20
- modulesLength.current = allResolvedModules?.length;
21
- return allResolvedModules;
22
- }
17
+ const [, resolvedModulesError] = usePromise(async () => {
18
+ const { logger, ...resolverConfig } = configMemo ?? {};
19
+ const activeNode = configMemo?.node ?? providedNode;
20
+ if (activeNode) {
21
+ const allResolvedModules = compact((await activeNode.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)));
22
+ logger?.debug(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`);
23
+ if (allResolvedModules?.length !== modulesLength.current) {
24
+ logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`);
25
+ modulesLength.current = allResolvedModules?.length;
26
+ setResolvedModules(allResolvedModules);
27
+ return allResolvedModules?.length;
23
28
  }
24
- return undefined;
25
- };
26
- return await getModulesFromResolution();
27
- }, [node, filter, config, refreshed]);
29
+ }
30
+ return modulesLength.current;
31
+ }, [providedNode, filter, configMemo, refreshed]);
28
32
  useEffect(() => {
29
- const { logger } = config ?? {};
30
- if (node) {
33
+ const { logger, node } = configMemo ?? {};
34
+ const activeNode = node ?? providedNode;
35
+ if (activeNode) {
31
36
  while (eventUnsubscribe.length) {
32
37
  eventUnsubscribe.pop()?.();
33
38
  }
34
- eventUnsubscribe.push(node.on('moduleAttached', () => {
35
- logger?.debug('moduleAttached: getModulesFromResolution');
39
+ eventUnsubscribe.push(activeNode.on('moduleAttached', ({ module }) => {
40
+ logger?.debug(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`);
36
41
  refresh();
37
42
  }));
38
- eventUnsubscribe.push(node.on('moduleDetached', () => {
39
- logger?.debug('moduleDetached: getModulesFromResolution');
43
+ eventUnsubscribe.push(activeNode.on('moduleDetached', ({ module }) => {
44
+ logger?.debug(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`);
40
45
  refresh();
41
46
  }));
42
47
  }
@@ -47,7 +52,7 @@ export const useModulesFromNode = (filter, config) => {
47
52
  eventUnsubscribe.pop();
48
53
  }
49
54
  };
50
- }, [node, config]);
55
+ }, [providedNode, configMemo]);
51
56
  return [resolvedModules, resolvedModulesError];
52
57
  };
53
58
  //# sourceMappingURL=useModulesFromNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  import { Logger } from '@xyo-network/logger';
2
2
  import { ModuleFilterOptions, ModuleInstance } from '@xyo-network/module-model';
3
+ import { NodeInstance } from '@xyo-network/node';
3
4
  export type ModuleFromNodeConfig = ModuleFilterOptions & {
4
5
  logger?: Logger;
6
+ node?: NodeInstance;
5
7
  };
6
8
  export declare const useModuleFromNode: (nameOrAddress?: string, config?: ModuleFromNodeConfig) => [ModuleInstance | undefined, Error | undefined];
7
9
  //# sourceMappingURL=useModuleFromNode.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModuleFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAsC,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAMnH,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,WAAW,oBAAoB,KAAG,CAAC,cAAc,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CAuFvI,CAAA"}
1
+ {"version":3,"file":"useModuleFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAsC,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACnH,OAAO,EAAoD,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMlG,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,WAAW,oBAAoB,KAAG,CAAC,cAAc,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA2FvI,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useModulesFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAM1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,eAAO,MAAM,kBAAkB,YACpB,YAAY,WACZ,oBAAoB,KAC5B,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA0DzD,CAAA"}
1
+ {"version":3,"file":"useModulesFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAO1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,eAAO,MAAM,kBAAkB,YACpB,YAAY,WACZ,oBAAoB,KAC5B,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA8DzD,CAAA"}
package/package.json CHANGED
@@ -21,9 +21,10 @@
21
21
  "@xyo-network/module-model": "^2.67.0",
22
22
  "@xyo-network/node": "^2.67.0",
23
23
  "@xyo-network/node-model": "^2.67.0",
24
- "@xyo-network/react-module": "~2.58.0",
25
- "@xyo-network/react-node-context": "~2.58.0",
26
- "@xyo-network/react-node-provider": "~2.58.0",
24
+ "@xyo-network/react-module": "~2.59.0-rc.2",
25
+ "@xyo-network/react-node-context": "~2.59.0-rc.2",
26
+ "@xyo-network/react-node-provider": "~2.59.0-rc.2",
27
+ "@xyo-network/react-shared": "~2.59.0-rc.2",
27
28
  "lodash": "^4.17.21"
28
29
  },
29
30
  "devDependencies": {
@@ -32,8 +33,8 @@
32
33
  "@xylabs/ts-scripts-yarn3": "^2.19.0",
33
34
  "@xylabs/tsconfig-react": "^2.19.0",
34
35
  "@xyo-network/payload-model": "^2.67.0",
35
- "@xyo-network/react-storybook": "~2.58.0",
36
- "@xyo-network/react-wallet": "~2.58.0",
36
+ "@xyo-network/react-storybook": "~2.59.0-rc.2",
37
+ "@xyo-network/react-wallet": "~2.59.0-rc.2",
37
38
  "typescript": "^5.1.6"
38
39
  },
39
40
  "peerDependencies": {
@@ -88,5 +89,6 @@
88
89
  },
89
90
  "sideEffects": false,
90
91
  "types": "dist/types/index.d.ts",
91
- "version": "2.58.0"
92
+ "version": "2.59.0-rc.2",
93
+ "stableVersion": "2.58.0"
92
94
  }
@@ -2,29 +2,35 @@ import { useAsyncEffect } from '@xylabs/react-async-effect'
2
2
  import { Logger } from '@xyo-network/logger'
3
3
  import { EventUnsubscribeFunction } from '@xyo-network/module-events'
4
4
  import { asModuleInstance, isModuleInstance, ModuleFilterOptions, ModuleInstance } from '@xyo-network/module-model'
5
- import { ModuleAttachedEventArgs, ModuleDetachedEventArgs } from '@xyo-network/node'
5
+ import { ModuleAttachedEventArgs, ModuleDetachedEventArgs, NodeInstance } from '@xyo-network/node'
6
+ import { useDataState } from '@xyo-network/react-shared'
6
7
  import { useMemo, useState } from 'react'
7
8
 
8
9
  import { useProvidedNode } from './provided'
9
10
 
10
11
  export type ModuleFromNodeConfig = ModuleFilterOptions & {
11
12
  logger?: Logger
13
+ node?: NodeInstance
12
14
  }
13
15
 
14
16
  export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNodeConfig): [ModuleInstance | undefined, Error | undefined] => {
15
- const [node] = useProvidedNode()
17
+ const [providedNode] = useProvidedNode()
16
18
  const [module, setModule] = useState<ModuleInstance>()
17
19
  const [error, setError] = useState<Error>()
20
+ const [configMemo, setConfigMemo] = useDataState(config)
21
+
22
+ setConfigMemo(config)
18
23
 
19
24
  const address = useMemo(() => module?.address, [module])
20
25
 
21
26
  useAsyncEffect(
22
27
  // eslint-disable-next-line react-hooks/exhaustive-deps
23
28
  async (mounted) => {
24
- const { logger, ...resolverConfig } = config ?? {}
29
+ const { logger, node, ...resolverConfig } = configMemo ?? {}
25
30
  const eventUnsubscribe: EventUnsubscribeFunction[] = []
26
31
  try {
27
- if (node) {
32
+ const activeNode = node ?? providedNode
33
+ if (activeNode) {
28
34
  const attachHandler = (args: ModuleAttachedEventArgs) => {
29
35
  const eventModule = args.module
30
36
  if (nameOrAddress && (eventModule?.address === nameOrAddress || eventModule?.config?.name === nameOrAddress)) {
@@ -55,7 +61,7 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
55
61
  setError(undefined)
56
62
  }
57
63
  }
58
- const module = nameOrAddress ? await node.resolve(nameOrAddress, resolverConfig) : undefined
64
+ const module = nameOrAddress ? await activeNode.resolve(nameOrAddress, resolverConfig) : undefined
59
65
  if (mounted()) {
60
66
  const instance = asModuleInstance(module)
61
67
  if (module) {
@@ -64,8 +70,8 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
64
70
  setModule(undefined)
65
71
  setError(error)
66
72
  } else {
67
- eventUnsubscribe.push(node.on('moduleAttached', attachHandler))
68
- eventUnsubscribe.push(node.on('moduleDetached', detachHandler))
73
+ eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler))
74
+ eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler))
69
75
  logger?.debug(`resolved [${nameOrAddress}]`)
70
76
  setModule(instance ?? null)
71
77
  setError(undefined)
@@ -77,7 +83,7 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
77
83
  }
78
84
  } else {
79
85
  if (mounted()) {
80
- setModule(node ? node : undefined)
86
+ setModule(activeNode ? activeNode : undefined)
81
87
  setError(undefined)
82
88
  }
83
89
  }
@@ -94,7 +100,7 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
94
100
  }
95
101
  }
96
102
  },
97
- [nameOrAddress, node, address, config],
103
+ [nameOrAddress, providedNode, address, configMemo],
98
104
  )
99
105
 
100
106
  return [module, error]
@@ -2,8 +2,9 @@ import { usePromise } from '@xylabs/react-promise'
2
2
  import { EventUnsubscribeFunction } from '@xyo-network/module-events'
3
3
  import { isModuleInstance, ModuleFilter, ModuleInstance } from '@xyo-network/module-model'
4
4
  import { useRefresh } from '@xyo-network/react-module'
5
+ import { useDataState } from '@xyo-network/react-shared'
5
6
  import compact from 'lodash/compact'
6
- import { useEffect, useRef } from 'react'
7
+ import { useEffect, useRef, useState } from 'react'
7
8
 
8
9
  import { useProvidedNode } from './provided'
9
10
  import { ModuleFromNodeConfig } from './useModuleFromNode'
@@ -12,48 +13,52 @@ export const useModulesFromNode = (
12
13
  filter?: ModuleFilter,
13
14
  config?: ModuleFromNodeConfig,
14
15
  ): [ModuleInstance[] | null | undefined, Error | undefined] => {
15
- const [node] = useProvidedNode()
16
+ const [providedNode] = useProvidedNode()
17
+ const [configMemo, setConfigMemo] = useDataState(config)
16
18
  const [refreshed, refresh] = useRefresh()
19
+ const [resolvedModules, setResolvedModules] = useState<ModuleInstance[]>()
20
+
21
+ setConfigMemo(config)
17
22
 
18
23
  //we store this to prevent the need of a deep compare to prevent re-render
19
24
  const modulesLength = useRef<number>()
20
25
 
21
26
  const eventUnsubscribe: EventUnsubscribeFunction[] = []
22
27
 
23
- const [resolvedModules, resolvedModulesError] = usePromise<ModuleInstance[] | null | undefined>(async () => {
24
- const getModulesFromResolution = async (): Promise<ModuleInstance[] | null | undefined> => {
25
- const { logger, ...resolverConfig } = config ?? {}
26
- if (node) {
27
- const allResolvedModules = compact(
28
- (await node.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)),
29
- )
30
- if (allResolvedModules?.length !== modulesLength.current) {
31
- logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`)
32
- modulesLength.current = allResolvedModules?.length
33
- return allResolvedModules
34
- }
28
+ const [, resolvedModulesError] = usePromise<number | null | undefined>(async () => {
29
+ const { logger, ...resolverConfig } = configMemo ?? {}
30
+ const activeNode = configMemo?.node ?? providedNode
31
+ if (activeNode) {
32
+ const allResolvedModules = compact(
33
+ (await activeNode.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)),
34
+ )
35
+ logger?.debug(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`)
36
+ if (allResolvedModules?.length !== modulesLength.current) {
37
+ logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`)
38
+ modulesLength.current = allResolvedModules?.length
39
+ setResolvedModules(allResolvedModules)
40
+ return allResolvedModules?.length
35
41
  }
36
- return undefined
37
42
  }
38
-
39
- return await getModulesFromResolution()
40
- }, [node, filter, config, refreshed])
43
+ return modulesLength.current
44
+ }, [providedNode, filter, configMemo, refreshed])
41
45
 
42
46
  useEffect(() => {
43
- const { logger } = config ?? {}
44
- if (node) {
47
+ const { logger, node } = configMemo ?? {}
48
+ const activeNode = node ?? providedNode
49
+ if (activeNode) {
45
50
  while (eventUnsubscribe.length) {
46
51
  eventUnsubscribe.pop()?.()
47
52
  }
48
53
  eventUnsubscribe.push(
49
- node.on('moduleAttached', () => {
50
- logger?.debug('moduleAttached: getModulesFromResolution')
54
+ activeNode.on('moduleAttached', ({ module }) => {
55
+ logger?.debug(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`)
51
56
  refresh()
52
57
  }),
53
58
  )
54
59
  eventUnsubscribe.push(
55
- node.on('moduleDetached', () => {
56
- logger?.debug('moduleDetached: getModulesFromResolution')
60
+ activeNode.on('moduleDetached', ({ module }) => {
61
+ logger?.debug(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`)
57
62
  refresh()
58
63
  }),
59
64
  )
@@ -66,7 +71,7 @@ export const useModulesFromNode = (
66
71
  eventUnsubscribe.pop()
67
72
  }
68
73
  }
69
- }, [node, config])
74
+ }, [providedNode, configMemo])
70
75
 
71
76
  return [resolvedModules, resolvedModulesError]
72
77
  }