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

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,25 +4,28 @@ 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;
25
- console.log('attachHandler: ', eventModule.address);
26
29
  if (nameOrAddress && ((eventModule === null || eventModule === void 0 ? void 0 : eventModule.address) === nameOrAddress || ((_a = eventModule === null || eventModule === void 0 ? void 0 : eventModule.config) === null || _a === void 0 ? void 0 : _a.name) === nameOrAddress)) {
27
30
  logger === null || logger === void 0 ? void 0 : logger.debug(`attachHandler-setting [${nameOrAddress}]`);
28
31
  if (eventModule) {
@@ -45,14 +48,13 @@ const useModuleFromNode = (nameOrAddress, config) => {
45
48
  };
46
49
  const detachHandler = (args) => {
47
50
  const eventModule = args.module;
48
- console.log('detachHandler: ', eventModule.address);
49
51
  if (eventModule.address === address) {
50
52
  logger === null || logger === void 0 ? void 0 : logger.debug(`detachHandler-clearing [${address}]`);
51
53
  setModule(undefined);
52
54
  setError(undefined);
53
55
  }
54
56
  };
55
- const module = nameOrAddress ? yield node.resolve(nameOrAddress, resolverConfig) : undefined;
57
+ const module = nameOrAddress ? yield activeNode.resolve(nameOrAddress, resolverConfig) : undefined;
56
58
  if (mounted()) {
57
59
  const instance = (0, module_model_1.asModuleInstance)(module);
58
60
  if (module) {
@@ -62,8 +64,8 @@ const useModuleFromNode = (nameOrAddress, config) => {
62
64
  setError(error);
63
65
  }
64
66
  else {
65
- eventUnsubscribe.push(node.on('moduleAttached', attachHandler));
66
- eventUnsubscribe.push(node.on('moduleDetached', detachHandler));
67
+ eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler));
68
+ eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler));
67
69
  logger === null || logger === void 0 ? void 0 : logger.debug(`resolved [${nameOrAddress}]`);
68
70
  setModule(instance !== null && instance !== void 0 ? instance : null);
69
71
  setError(undefined);
@@ -77,7 +79,7 @@ const useModuleFromNode = (nameOrAddress, config) => {
77
79
  }
78
80
  else {
79
81
  if (mounted()) {
80
- setModule(node ? node : undefined);
82
+ setModule(activeNode ? activeNode : undefined);
81
83
  setError(undefined);
82
84
  }
83
85
  }
@@ -94,7 +96,7 @@ const useModuleFromNode = (nameOrAddress, config) => {
94
96
  setModule(undefined);
95
97
  }
96
98
  }
97
- }), [nameOrAddress, node, address, config]);
99
+ }), [nameOrAddress, providedNode, address, configMemo]);
98
100
  return [module, error];
99
101
  };
100
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,22 +5,28 @@ 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
+ setConfigMemo(config);
14
17
  //we store this to prevent the need of a deep compare to prevent re-render
15
18
  const modulesLength = (0, react_1.useRef)();
16
19
  const eventUnsubscribe = [];
17
20
  const [resolvedModules, resolvedModulesError] = (0, react_promise_1.usePromise)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
18
21
  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
+ 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.log(`getModulesFromResolution:allResolvedModules [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
22
28
  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}]`);
29
+ logger === null || logger === void 0 ? void 0 : logger.log(`getModulesFromResolution-setting: [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
24
30
  modulesLength.current = allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length;
25
31
  return allResolvedModules;
26
32
  }
@@ -28,20 +34,23 @@ const useModulesFromNode = (filter, config) => {
28
34
  return undefined;
29
35
  });
30
36
  return yield getModulesFromResolution();
31
- }), [node, filter, config, refreshed]);
37
+ }), [providedNode, filter, configMemo, refreshed]);
32
38
  (0, react_1.useEffect)(() => {
33
39
  var _a;
34
- const { logger } = config !== null && config !== void 0 ? config : {};
35
- if (node) {
40
+ const { logger, node } = configMemo !== null && configMemo !== void 0 ? configMemo : {};
41
+ const activeNode = node !== null && node !== void 0 ? node : providedNode;
42
+ if (activeNode) {
36
43
  while (eventUnsubscribe.length) {
37
44
  (_a = eventUnsubscribe.pop()) === null || _a === void 0 ? void 0 : _a();
38
45
  }
39
- eventUnsubscribe.push(node.on('moduleAttached', () => {
40
- logger === null || logger === void 0 ? void 0 : logger.debug('moduleAttached: getModulesFromResolution');
46
+ eventUnsubscribe.push(activeNode.on('moduleAttached', ({ module }) => {
47
+ var _a;
48
+ logger === null || logger === void 0 ? void 0 : logger.log(`moduleAttached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
41
49
  refresh();
42
50
  }));
43
- eventUnsubscribe.push(node.on('moduleDetached', () => {
44
- logger === null || logger === void 0 ? void 0 : logger.debug('moduleDetached: getModulesFromResolution');
51
+ eventUnsubscribe.push(activeNode.on('moduleDetached', ({ module }) => {
52
+ var _a;
53
+ logger === null || logger === void 0 ? void 0 : logger.log(`moduleDetached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
45
54
  refresh();
46
55
  }));
47
56
  }
@@ -52,7 +61,7 @@ const useModulesFromNode = (filter, config) => {
52
61
  eventUnsubscribe.pop();
53
62
  }
54
63
  };
55
- }, [node, config]);
64
+ }, [providedNode, configMemo]);
56
65
  return [resolvedModules, resolvedModulesError];
57
66
  };
58
67
  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,22 +1,25 @@
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
- console.log('attachHandler: ', eventModule.address);
20
23
  if (nameOrAddress && (eventModule?.address === nameOrAddress || eventModule?.config?.name === nameOrAddress)) {
21
24
  logger?.debug(`attachHandler-setting [${nameOrAddress}]`);
22
25
  if (eventModule) {
@@ -39,14 +42,13 @@ export const useModuleFromNode = (nameOrAddress, config) => {
39
42
  };
40
43
  const detachHandler = (args) => {
41
44
  const eventModule = args.module;
42
- console.log('detachHandler: ', eventModule.address);
43
45
  if (eventModule.address === address) {
44
46
  logger?.debug(`detachHandler-clearing [${address}]`);
45
47
  setModule(undefined);
46
48
  setError(undefined);
47
49
  }
48
50
  };
49
- const module = nameOrAddress ? await node.resolve(nameOrAddress, resolverConfig) : undefined;
51
+ const module = nameOrAddress ? await activeNode.resolve(nameOrAddress, resolverConfig) : undefined;
50
52
  if (mounted()) {
51
53
  const instance = asModuleInstance(module);
52
54
  if (module) {
@@ -56,8 +58,8 @@ export const useModuleFromNode = (nameOrAddress, config) => {
56
58
  setError(error);
57
59
  }
58
60
  else {
59
- eventUnsubscribe.push(node.on('moduleAttached', attachHandler));
60
- eventUnsubscribe.push(node.on('moduleDetached', detachHandler));
61
+ eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler));
62
+ eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler));
61
63
  logger?.debug(`resolved [${nameOrAddress}]`);
62
64
  setModule(instance ?? null);
63
65
  setError(undefined);
@@ -71,7 +73,7 @@ export const useModuleFromNode = (nameOrAddress, config) => {
71
73
  }
72
74
  else {
73
75
  if (mounted()) {
74
- setModule(node ? node : undefined);
76
+ setModule(activeNode ? activeNode : undefined);
75
77
  setError(undefined);
76
78
  }
77
79
  }
@@ -88,7 +90,7 @@ export const useModuleFromNode = (nameOrAddress, config) => {
88
90
  setModule(undefined);
89
91
  }
90
92
  }
91
- }, [nameOrAddress, node, address, config]);
93
+ }, [nameOrAddress, providedNode, address, configMemo]);
92
94
  return [module, error];
93
95
  };
94
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,22 +1,27 @@
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
6
  import { useEffect, useRef } 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
+ setConfigMemo(config);
10
13
  //we store this to prevent the need of a deep compare to prevent re-render
11
14
  const modulesLength = useRef();
12
15
  const eventUnsubscribe = [];
13
16
  const [resolvedModules, resolvedModulesError] = usePromise(async () => {
14
17
  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
+ 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?.log(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`);
18
23
  if (allResolvedModules?.length !== modulesLength.current) {
19
- logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`);
24
+ logger?.log(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`);
20
25
  modulesLength.current = allResolvedModules?.length;
21
26
  return allResolvedModules;
22
27
  }
@@ -24,19 +29,20 @@ export const useModulesFromNode = (filter, config) => {
24
29
  return undefined;
25
30
  };
26
31
  return await getModulesFromResolution();
27
- }, [node, filter, config, refreshed]);
32
+ }, [providedNode, filter, configMemo, refreshed]);
28
33
  useEffect(() => {
29
- const { logger } = config ?? {};
30
- if (node) {
34
+ const { logger, node } = configMemo ?? {};
35
+ const activeNode = node ?? providedNode;
36
+ if (activeNode) {
31
37
  while (eventUnsubscribe.length) {
32
38
  eventUnsubscribe.pop()?.();
33
39
  }
34
- eventUnsubscribe.push(node.on('moduleAttached', () => {
35
- logger?.debug('moduleAttached: getModulesFromResolution');
40
+ eventUnsubscribe.push(activeNode.on('moduleAttached', ({ module }) => {
41
+ logger?.log(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`);
36
42
  refresh();
37
43
  }));
38
- eventUnsubscribe.push(node.on('moduleDetached', () => {
39
- logger?.debug('moduleDetached: getModulesFromResolution');
44
+ eventUnsubscribe.push(activeNode.on('moduleDetached', ({ module }) => {
45
+ logger?.log(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`);
40
46
  refresh();
41
47
  }));
42
48
  }
@@ -47,7 +53,7 @@ export const useModulesFromNode = (filter, config) => {
47
53
  eventUnsubscribe.pop();
48
54
  }
49
55
  };
50
- }, [node, config]);
56
+ }, [providedNode, configMemo]);
51
57
  return [resolvedModules, resolvedModulesError];
52
58
  };
53
59
  //# sourceMappingURL=useModulesFromNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAgC,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,OAAO,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAG5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,MAAqB,EACrB,MAA6B,EAC6B,EAAE;IAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,eAAe,EAAE,CAAA;IAChC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,UAAU,EAAE,CAAA;IAEzC,2EAA2E;IAC3E,MAAM,aAAa,GAAG,MAAM,EAAU,CAAA;IAEtC,MAAM,gBAAgB,GAA+B,EAAE,CAAA;IAEvD,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC,GAAG,UAAU,CAAsC,KAAK,IAAI,EAAE;QACzG,MAAM,wBAAwB,GAAG,KAAK,IAAkD,EAAE;YACxF,MAAM,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;YAClD,IAAI,IAAI,EAAE;gBACR,MAAM,kBAAkB,GAAG,OAAO,CAChC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAC9G,CAAA;gBACD,IAAI,kBAAkB,EAAE,MAAM,KAAK,aAAa,CAAC,OAAO,EAAE;oBACxD,MAAM,EAAE,KAAK,CAAC,sCAAsC,kBAAkB,EAAE,MAAM,GAAG,CAAC,CAAA;oBAClF,aAAa,CAAC,OAAO,GAAG,kBAAkB,EAAE,MAAM,CAAA;oBAClD,OAAO,kBAAkB,CAAA;iBAC1B;aACF;YACD,OAAO,SAAS,CAAA;QAClB,CAAC,CAAA;QAED,OAAO,MAAM,wBAAwB,EAAE,CAAA;IACzC,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;QAC/B,IAAI,IAAI,EAAE;YACR,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAA;aAC3B;YACD,gBAAgB,CAAC,IAAI,CACnB,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;gBAC7B,MAAM,EAAE,KAAK,CAAC,0CAA0C,CAAC,CAAA;gBACzD,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CACH,CAAA;YACD,gBAAgB,CAAC,IAAI,CACnB,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;gBAC7B,MAAM,EAAE,KAAK,CAAC,0CAA0C,CAAC,CAAA;gBACzD,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CACH,CAAA;SACF;QAED,OAAO,GAAG,EAAE;YACV,oBAAoB;YACpB,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YAC1C,OAAO,gBAAgB,CAAC,MAAM,EAAE;gBAC9B,gBAAgB,CAAC,GAAG,EAAE,CAAA;aACvB;QACH,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;IAElB,OAAO,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAA;AAChD,CAAC,CAAA"}
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,CAyFvI,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,CAgEzD,CAAA"}
package/package.json CHANGED
@@ -11,29 +11,30 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@mui/lab": "^5.0.0-alpha.137",
14
- "@xylabs/react-async-effect": "~2.17.6",
15
- "@xylabs/react-flexbox": "~2.17.6",
16
- "@xylabs/react-promise": "~2.17.6",
17
- "@xylabs/react-shared": "~2.17.6",
18
- "@xyo-network/logger": "^2.67.0-rc.4",
19
- "@xyo-network/module": "^2.67.0-rc.4",
20
- "@xyo-network/module-events": "^2.67.0-rc.4",
21
- "@xyo-network/module-model": "^2.67.0-rc.4",
22
- "@xyo-network/node": "^2.67.0-rc.4",
23
- "@xyo-network/node-model": "^2.67.0-rc.4",
24
- "@xyo-network/react-module": "~2.58.0-rc.3",
25
- "@xyo-network/react-node-context": "~2.58.0-rc.3",
26
- "@xyo-network/react-node-provider": "~2.58.0-rc.3",
14
+ "@xylabs/react-async-effect": "~2.17.7",
15
+ "@xylabs/react-flexbox": "~2.17.7",
16
+ "@xylabs/react-promise": "~2.17.7",
17
+ "@xylabs/react-shared": "~2.17.7",
18
+ "@xyo-network/logger": "^2.67.0",
19
+ "@xyo-network/module": "^2.67.0",
20
+ "@xyo-network/module-events": "^2.67.0",
21
+ "@xyo-network/module-model": "^2.67.0",
22
+ "@xyo-network/node": "^2.67.0",
23
+ "@xyo-network/node-model": "^2.67.0",
24
+ "@xyo-network/react-module": "~2.59.0-rc.1",
25
+ "@xyo-network/react-node-context": "~2.59.0-rc.1",
26
+ "@xyo-network/react-node-provider": "~2.59.0-rc.1",
27
+ "@xyo-network/react-shared": "~2.59.0-rc.1",
27
28
  "lodash": "^4.17.21"
28
29
  },
29
30
  "devDependencies": {
30
31
  "@storybook/react": "^7.1.1",
31
- "@types/lodash": "^4.14.195",
32
+ "@types/lodash": "^4.14.196",
32
33
  "@xylabs/ts-scripts-yarn3": "^2.19.0",
33
34
  "@xylabs/tsconfig-react": "^2.19.0",
34
- "@xyo-network/payload-model": "^2.67.0-rc.4",
35
- "@xyo-network/react-storybook": "~2.58.0-rc.3",
36
- "@xyo-network/react-wallet": "~2.58.0-rc.3",
35
+ "@xyo-network/payload-model": "^2.67.0",
36
+ "@xyo-network/react-storybook": "~2.59.0-rc.1",
37
+ "@xyo-network/react-wallet": "~2.59.0-rc.1",
37
38
  "typescript": "^5.1.6"
38
39
  },
39
40
  "peerDependencies": {
@@ -88,6 +89,6 @@
88
89
  },
89
90
  "sideEffects": false,
90
91
  "types": "dist/types/index.d.ts",
91
- "version": "2.58.0-rc.3",
92
- "stableVersion": "2.57.7"
92
+ "version": "2.59.0-rc.1",
93
+ "stableVersion": "2.58.0"
93
94
  }
@@ -2,32 +2,37 @@ 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
- console.log('attachHandler: ', eventModule.address)
31
36
  if (nameOrAddress && (eventModule?.address === nameOrAddress || eventModule?.config?.name === nameOrAddress)) {
32
37
  logger?.debug(`attachHandler-setting [${nameOrAddress}]`)
33
38
  if (eventModule) {
@@ -50,14 +55,13 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
50
55
  }
51
56
  const detachHandler = (args: ModuleDetachedEventArgs) => {
52
57
  const eventModule = args.module
53
- console.log('detachHandler: ', eventModule.address)
54
58
  if (eventModule.address === address) {
55
59
  logger?.debug(`detachHandler-clearing [${address}]`)
56
60
  setModule(undefined)
57
61
  setError(undefined)
58
62
  }
59
63
  }
60
- const module = nameOrAddress ? await node.resolve(nameOrAddress, resolverConfig) : undefined
64
+ const module = nameOrAddress ? await activeNode.resolve(nameOrAddress, resolverConfig) : undefined
61
65
  if (mounted()) {
62
66
  const instance = asModuleInstance(module)
63
67
  if (module) {
@@ -66,8 +70,8 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
66
70
  setModule(undefined)
67
71
  setError(error)
68
72
  } else {
69
- eventUnsubscribe.push(node.on('moduleAttached', attachHandler))
70
- eventUnsubscribe.push(node.on('moduleDetached', detachHandler))
73
+ eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler))
74
+ eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler))
71
75
  logger?.debug(`resolved [${nameOrAddress}]`)
72
76
  setModule(instance ?? null)
73
77
  setError(undefined)
@@ -79,7 +83,7 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
79
83
  }
80
84
  } else {
81
85
  if (mounted()) {
82
- setModule(node ? node : undefined)
86
+ setModule(activeNode ? activeNode : undefined)
83
87
  setError(undefined)
84
88
  }
85
89
  }
@@ -96,7 +100,7 @@ export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNod
96
100
  }
97
101
  }
98
102
  },
99
- [nameOrAddress, node, address, config],
103
+ [nameOrAddress, providedNode, address, configMemo],
100
104
  )
101
105
 
102
106
  return [module, error]
@@ -2,6 +2,7 @@ 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
7
  import { useEffect, useRef } from 'react'
7
8
 
@@ -12,9 +13,12 @@ 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()
17
19
 
20
+ setConfigMemo(config)
21
+
18
22
  //we store this to prevent the need of a deep compare to prevent re-render
19
23
  const modulesLength = useRef<number>()
20
24
 
@@ -22,13 +26,15 @@ export const useModulesFromNode = (
22
26
 
23
27
  const [resolvedModules, resolvedModulesError] = usePromise<ModuleInstance[] | null | undefined>(async () => {
24
28
  const getModulesFromResolution = async (): Promise<ModuleInstance[] | null | undefined> => {
25
- const { logger, ...resolverConfig } = config ?? {}
26
- if (node) {
29
+ const { logger, ...resolverConfig } = configMemo ?? {}
30
+ const activeNode = configMemo?.node ?? providedNode
31
+ if (activeNode) {
27
32
  const allResolvedModules = compact(
28
- (await node.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)),
33
+ (await activeNode.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)),
29
34
  )
35
+ logger?.log(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`)
30
36
  if (allResolvedModules?.length !== modulesLength.current) {
31
- logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`)
37
+ logger?.log(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`)
32
38
  modulesLength.current = allResolvedModules?.length
33
39
  return allResolvedModules
34
40
  }
@@ -37,23 +43,24 @@ export const useModulesFromNode = (
37
43
  }
38
44
 
39
45
  return await getModulesFromResolution()
40
- }, [node, filter, config, refreshed])
46
+ }, [providedNode, filter, configMemo, refreshed])
41
47
 
42
48
  useEffect(() => {
43
- const { logger } = config ?? {}
44
- if (node) {
49
+ const { logger, node } = configMemo ?? {}
50
+ const activeNode = node ?? providedNode
51
+ if (activeNode) {
45
52
  while (eventUnsubscribe.length) {
46
53
  eventUnsubscribe.pop()?.()
47
54
  }
48
55
  eventUnsubscribe.push(
49
- node.on('moduleAttached', () => {
50
- logger?.debug('moduleAttached: getModulesFromResolution')
56
+ activeNode.on('moduleAttached', ({ module }) => {
57
+ logger?.log(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`)
51
58
  refresh()
52
59
  }),
53
60
  )
54
61
  eventUnsubscribe.push(
55
- node.on('moduleDetached', () => {
56
- logger?.debug('moduleDetached: getModulesFromResolution')
62
+ activeNode.on('moduleDetached', ({ module }) => {
63
+ logger?.log(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`)
57
64
  refresh()
58
65
  }),
59
66
  )
@@ -66,7 +73,7 @@ export const useModulesFromNode = (
66
73
  eventUnsubscribe.pop()
67
74
  }
68
75
  }
69
- }, [node, config])
76
+ }, [providedNode, configMemo])
70
77
 
71
78
  return [resolvedModules, resolvedModulesError]
72
79
  }