@xyo-network/node 2.51.6 → 2.51.8

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.
@@ -2,6 +2,7 @@ import { assertEx } from '@xylabs/assert';
2
2
  import { exists } from '@xylabs/exists';
3
3
  import { fulfilled, rejected } from '@xylabs/promise';
4
4
  import { duplicateModules, ModuleWrapper } from '@xyo-network/module';
5
+ import compact from 'lodash/compact';
5
6
  import { AbstractNode } from './AbstractNode';
6
7
  import { NodeConfigSchema } from './Config';
7
8
  import { NodeWrapper } from './NodeWrapper';
@@ -17,10 +18,10 @@ export class MemoryNode extends AbstractNode {
17
18
  const module = assertEx(this.registeredModuleMap[address], 'No module registered at that address');
18
19
  const wrapper = ModuleWrapper.wrap(module);
19
20
  const notifiedAddresses = [];
20
- const notifyOfExistingModules = async (node) => {
21
+ const getModulesToNotifyAbout = async (node) => {
21
22
  //send attach events for all existing attached modules
22
23
  const childModules = await node.resolve();
23
- childModules.map((child) => {
24
+ return compact(childModules.map((child) => {
24
25
  //don't report self
25
26
  if (node.address === child.address) {
26
27
  return;
@@ -30,13 +31,10 @@ export class MemoryNode extends AbstractNode {
30
31
  return;
31
32
  }
32
33
  notifiedAddresses.push(child.address);
33
- const args = { module: child, name: child.config.name };
34
- this.moduleAttachedEventListeners?.map((listener) => listener(args));
35
- });
34
+ return child;
35
+ }));
36
36
  };
37
- await notifyOfExistingModules(wrapper);
38
- const args = { module, name: module.config.name };
39
- this.moduleAttachedEventListeners?.map((listener) => listener(args));
37
+ const notificationList = await getModulesToNotifyAbout(wrapper);
40
38
  this.privateResolver.addResolver(module.downResolver);
41
39
  //give it inside access
42
40
  module.upResolver.addResolver?.(this.privateResolver);
@@ -46,6 +44,8 @@ export class MemoryNode extends AbstractNode {
46
44
  //expose it externally
47
45
  this.downResolver.addResolver(module.downResolver);
48
46
  }
47
+ const args = { module, name: module.config.name };
48
+ this.moduleAttachedEventListeners?.map((listener) => listener(args));
49
49
  if (NodeWrapper.isNodeModule(module)) {
50
50
  if (external) {
51
51
  const wrappedAsNode = NodeWrapper.wrap(module);
@@ -55,6 +55,13 @@ export class MemoryNode extends AbstractNode {
55
55
  detachEmitter.on('moduleDetached', (args) => this.moduleDetachedEventListeners?.map((listener) => listener(args)));
56
56
  }
57
57
  }
58
+ const notifyOfExistingModules = (childModules) => {
59
+ childModules.map((child) => {
60
+ const args = { module: child, name: child.config.name };
61
+ this.moduleAttachedEventListeners?.map((listener) => listener(args));
62
+ });
63
+ };
64
+ notifyOfExistingModules(notificationList);
58
65
  }
59
66
  async detach(address) {
60
67
  const module = assertEx(this.registeredModuleMap[address], 'No module found at that address');
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryNode.js","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,MAAM,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAA;AAE3F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AAKvD,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAA;AAEnG,qBAAa,UAAU,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,YAAY,CAAC,OAAO,CAAC;IACxG,OAAgB,YAAY,4BAAmB;IAE/C,OAAO,CAAC,mBAAmB,CAA6B;WAElC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAItE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO;IAwD1C,MAAM,CAAC,OAAO,EAAE,MAAM;IA0C5B,QAAQ,CAAC,MAAM,EAAE,MAAM;IAMvB,UAAU;IAMV,iBAAiB;;;;;;;;;;;IAMX,UAAU,CAAC,MAAM,EAAE,MAAM;cAMf,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAmB7G"}
1
+ {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,MAAM,EAAE,YAAY,EAAiB,MAAM,qBAAqB,CAAA;AAG3F,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AAKvD,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAA;AAEnG,qBAAa,UAAU,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,CAAE,SAAQ,YAAY,CAAC,OAAO,CAAC;IACxG,OAAgB,YAAY,4BAAmB;IAE/C,OAAO,CAAC,mBAAmB,CAA6B;WAElC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAItE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO;IAqE1C,MAAM,CAAC,OAAO,EAAE,MAAM;IA0C5B,QAAQ,CAAC,MAAM,EAAE,MAAM;IAMvB,UAAU;IAMV,iBAAiB;;;;;;;;;;;IAMX,UAAU,CAAC,MAAM,EAAE,MAAM;cAMf,OAAO,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAmB7G"}
package/package.json CHANGED
@@ -13,16 +13,16 @@
13
13
  "@xylabs/assert": "^2.7.4",
14
14
  "@xylabs/exists": "^2.7.4",
15
15
  "@xylabs/promise": "^2.7.4",
16
- "@xyo-network/account": "^2.51.6",
17
- "@xyo-network/account-model": "^2.51.6",
18
- "@xyo-network/address-payload-plugin": "^2.51.6",
19
- "@xyo-network/archivist-wrapper": "^2.51.6",
20
- "@xyo-network/module": "^2.51.6",
21
- "@xyo-network/module-model": "^2.51.6",
22
- "@xyo-network/payload-builder": "^2.51.6",
23
- "@xyo-network/payload-model": "^2.51.6",
24
- "@xyo-network/payload-wrapper": "^2.51.6",
25
- "@xyo-network/promise": "^2.51.6"
16
+ "@xyo-network/account": "^2.51.8",
17
+ "@xyo-network/account-model": "^2.51.8",
18
+ "@xyo-network/address-payload-plugin": "^2.51.8",
19
+ "@xyo-network/archivist-wrapper": "^2.51.8",
20
+ "@xyo-network/module": "^2.51.8",
21
+ "@xyo-network/module-model": "^2.51.8",
22
+ "@xyo-network/payload-builder": "^2.51.8",
23
+ "@xyo-network/payload-model": "^2.51.8",
24
+ "@xyo-network/payload-wrapper": "^2.51.8",
25
+ "@xyo-network/promise": "^2.51.8"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@xylabs/ts-scripts-yarn3": "^2.16.1",
@@ -62,5 +62,5 @@
62
62
  },
63
63
  "sideEffects": false,
64
64
  "types": "dist/types/index.d.ts",
65
- "version": "2.51.6"
65
+ "version": "2.51.8"
66
66
  }
package/src/MemoryNode.ts CHANGED
@@ -2,6 +2,7 @@ import { assertEx } from '@xylabs/assert'
2
2
  import { exists } from '@xylabs/exists'
3
3
  import { fulfilled, rejected } from '@xylabs/promise'
4
4
  import { duplicateModules, Module, ModuleFilter, ModuleWrapper } from '@xyo-network/module'
5
+ import compact from 'lodash/compact'
5
6
 
6
7
  import { AbstractNode, AbstractNodeParams } from './AbstractNode'
7
8
  import { NodeConfig, NodeConfigSchema } from './Config'
@@ -27,29 +28,30 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams> ext
27
28
 
28
29
  const wrapper = ModuleWrapper.wrap(module)
29
30
  const notifiedAddresses: string[] = []
30
- const notifyOfExistingModules = async (node: ModuleWrapper) => {
31
+
32
+ const getModulesToNotifyAbout = async (node: ModuleWrapper) => {
31
33
  //send attach events for all existing attached modules
32
34
  const childModules = await node.resolve()
33
- childModules.map((child) => {
34
- //don't report self
35
- if (node.address === child.address) {
36
- return
37
- }
38
-
39
- //prevent loop
40
- if (notifiedAddresses.includes(child.address)) {
41
- return
42
- }
43
- notifiedAddresses.push(child.address)
44
- const args = { module: child, name: child.config.name }
45
- this.moduleAttachedEventListeners?.map((listener) => listener(args))
46
- })
47
- }
35
+ return compact(
36
+ childModules.map((child) => {
37
+ //don't report self
38
+ if (node.address === child.address) {
39
+ return
40
+ }
48
41
 
49
- await notifyOfExistingModules(wrapper)
42
+ //prevent loop
43
+ if (notifiedAddresses.includes(child.address)) {
44
+ return
45
+ }
50
46
 
51
- const args = { module, name: module.config.name }
52
- this.moduleAttachedEventListeners?.map((listener) => listener(args))
47
+ notifiedAddresses.push(child.address)
48
+
49
+ return child
50
+ }),
51
+ )
52
+ }
53
+
54
+ const notificationList = await getModulesToNotifyAbout(wrapper)
53
55
 
54
56
  this.privateResolver.addResolver(module.downResolver)
55
57
 
@@ -64,6 +66,9 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams> ext
64
66
  this.downResolver.addResolver(module.downResolver)
65
67
  }
66
68
 
69
+ const args = { module, name: module.config.name }
70
+ this.moduleAttachedEventListeners?.map((listener) => listener(args))
71
+
67
72
  if (NodeWrapper.isNodeModule(module)) {
68
73
  if (external) {
69
74
  const wrappedAsNode = NodeWrapper.wrap(module as NodeModule)
@@ -74,6 +79,15 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams> ext
74
79
  detachEmitter.on('moduleDetached', (args: ModuleDetachedEventArgs) => this.moduleDetachedEventListeners?.map((listener) => listener(args)))
75
80
  }
76
81
  }
82
+
83
+ const notifyOfExistingModules = (childModules: Module[]) => {
84
+ childModules.map((child) => {
85
+ const args = { module: child, name: child.config.name }
86
+ this.moduleAttachedEventListeners?.map((listener) => listener(args))
87
+ })
88
+ }
89
+
90
+ notifyOfExistingModules(notificationList)
77
91
  }
78
92
 
79
93
  override async detach(address: string) {