@xyo-network/node 2.51.5 → 2.51.7

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.
@@ -1,7 +1,8 @@
1
1
  import { assertEx } from '@xylabs/assert';
2
2
  import { exists } from '@xylabs/exists';
3
3
  import { fulfilled, rejected } from '@xylabs/promise';
4
- import { duplicateModules } from '@xyo-network/module';
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';
@@ -15,6 +16,27 @@ export class MemoryNode extends AbstractNode {
15
16
  const existingModule = (await this.resolve({ address: [address] })).pop();
16
17
  assertEx(!existingModule, `Module [${existingModule?.config.name ?? existingModule?.address}] already attached at address [${address}]`);
17
18
  const module = assertEx(this.registeredModuleMap[address], 'No module registered at that address');
19
+ const wrapper = ModuleWrapper.wrap(module);
20
+ const notifiedAddresses = [];
21
+ const getModulesToNotifyAbout = async (node) => {
22
+ //send attach events for all existing attached modules
23
+ const childModules = await node.resolve();
24
+ return compact(childModules.map((child) => {
25
+ //don't report self
26
+ if (node.address === child.address) {
27
+ return;
28
+ }
29
+ //prevent loop
30
+ if (notifiedAddresses.includes(child.address)) {
31
+ return;
32
+ }
33
+ notifiedAddresses.push(child.address);
34
+ return child;
35
+ }));
36
+ };
37
+ const notificationList = await getModulesToNotifyAbout(wrapper);
38
+ const args = { module, name: module.config.name };
39
+ this.moduleAttachedEventListeners?.map((listener) => listener(args));
18
40
  this.privateResolver.addResolver(module.downResolver);
19
41
  //give it inside access
20
42
  module.upResolver.addResolver?.(this.privateResolver);
@@ -24,27 +46,22 @@ export class MemoryNode extends AbstractNode {
24
46
  //expose it externally
25
47
  this.downResolver.addResolver(module.downResolver);
26
48
  }
27
- const args = { module, name: module.config.name };
28
- this.moduleAttachedEventListeners?.map((listener) => listener(args));
29
- const wrappedAsNode = NodeWrapper.tryWrap(module);
30
- if (wrappedAsNode && external) {
31
- const attachEmitter = wrappedAsNode.module;
32
- const detachEmitter = wrappedAsNode.module;
33
- attachEmitter.on('moduleAttached', (args) => this.moduleAttachedEventListeners?.map((listener) => listener(args)));
34
- detachEmitter.on('moduleDetached', (args) => this.moduleDetachedEventListeners?.map((listener) => listener(args)));
35
- const notifyOfExistingModules = async (node) => {
36
- //send attach events for all existing attached modules
37
- const childModules = await node.resolve();
38
- await Promise.all(childModules.map((child) => {
39
- this.moduleAttachedEventListeners?.map((listener) => listener({ module: child }));
40
- const wrappedAsNode = NodeWrapper.tryWrap(child);
41
- if (wrappedAsNode) {
42
- return notifyOfExistingModules(wrappedAsNode);
43
- }
44
- }));
45
- };
46
- await notifyOfExistingModules(wrappedAsNode);
49
+ if (NodeWrapper.isNodeModule(module)) {
50
+ if (external) {
51
+ const wrappedAsNode = NodeWrapper.wrap(module);
52
+ const attachEmitter = wrappedAsNode.module;
53
+ const detachEmitter = wrappedAsNode.module;
54
+ attachEmitter.on('moduleAttached', (args) => this.moduleAttachedEventListeners?.map((listener) => listener(args)));
55
+ detachEmitter.on('moduleDetached', (args) => this.moduleDetachedEventListeners?.map((listener) => listener(args)));
56
+ }
47
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
+ await notifyOfExistingModules(notificationList);
48
65
  }
49
66
  async detach(address) {
50
67
  const module = assertEx(this.registeredModuleMap[address], 'No module found at that address');
@@ -58,20 +75,26 @@ export class MemoryNode extends AbstractNode {
58
75
  const args = { module, name: module.config.name };
59
76
  this.moduleDetachedEventListeners?.map((listener) => listener(args));
60
77
  //notify of all sub node children detach
61
- const wrappedAsNode = NodeWrapper.tryWrap(module);
62
- if (wrappedAsNode) {
78
+ const wrapper = ModuleWrapper.tryWrap(module);
79
+ const notifiedAddresses = [];
80
+ if (wrapper) {
63
81
  const notifyOfExistingModules = async (node) => {
64
82
  //send attach events for all existing attached modules
65
83
  const childModules = await node.resolve();
66
- await Promise.all(childModules.map((child) => {
67
- this.moduleDetachedEventListeners?.map((listener) => listener({ module: child }));
68
- const wrappedAsNode = NodeWrapper.tryWrap(child);
69
- if (wrappedAsNode) {
70
- return notifyOfExistingModules(wrappedAsNode);
84
+ childModules.map((child) => {
85
+ //don't report self
86
+ if (node.address === child.address) {
87
+ return;
88
+ }
89
+ //prevent loop
90
+ if (notifiedAddresses.includes(child.address)) {
91
+ return;
71
92
  }
72
- }));
93
+ notifiedAddresses.push(child.address);
94
+ this.moduleDetachedEventListeners?.map((listener) => listener({ module: child }));
95
+ });
73
96
  };
74
- await notifyOfExistingModules(wrappedAsNode);
97
+ await notifyOfExistingModules(wrapper);
75
98
  }
76
99
  }
77
100
  register(module) {
@@ -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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"}
@@ -12,11 +12,15 @@ export class NodeWrapper extends ModuleWrapper {
12
12
  this._archivist = this._archivist ?? new ArchivistWrapper(this.module);
13
13
  return this._archivist;
14
14
  }
15
+ static isNodeModule(module) {
16
+ const missingRequiredQueries = this.missingRequiredQueries(module);
17
+ return missingRequiredQueries.length === 0;
18
+ }
15
19
  static tryWrap(module, account) {
16
20
  if (module) {
17
21
  const missingRequiredQueries = this.missingRequiredQueries(module);
18
22
  if (missingRequiredQueries.length > 0) {
19
- console.warn(`Missing queries: ${JSON.stringify(missingRequiredQueries, null, 2)}`);
23
+ //console.warn(`Missing queries: ${JSON.stringify(missingRequiredQueries, null, 2)}`)
20
24
  }
21
25
  else {
22
26
  return new NodeWrapper(module, account);
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWrapper.js","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NodeWrapper.js","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAkB,aAAa,EAAE,MAAM,qCAAqC,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAU,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAG7D,OAAO,EAEL,0BAA0B,EAE1B,wBAAwB,EAExB,wBAAwB,EAExB,4BAA4B,GAC7B,MAAM,WAAW,CAAA;AAElB,MAAM,OAAO,WAAY,SAAQ,aAAyB;IACxD,MAAM,CAAU,eAAe,GAAG,CAAC,wBAAwB,EAAE,GAAG,aAAa,CAAC,eAAe,CAAC,CAAA;IAEtF,UAAU,CAAmB;IAErC,IAAI,SAAS;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtE,OAAO,IAAI,CAAC,UAAU,CAAA;IACxB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,MAAc;QAChC,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;QAClE,OAAO,sBAAsB,CAAC,MAAM,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,MAAM,CAAU,OAAO,CAA0C,MAAgB,EAAE,OAAyB;QAC1G,IAAI,MAAM,EAAE;YACV,MAAM,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAA;YAClE,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrC,qFAAqF;aACtF;iBAAM;gBACL,OAAO,IAAI,WAAW,CAAC,MAAiB,EAAE,OAAO,CAAC,CAAA;aACnD;SACF;IACH,CAAC;IAED,MAAM,CAAU,IAAI,CAA0C,MAAgB,EAAE,OAAyB;QACvG,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,sCAAsC,CAAC,CAAA;IACxF,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,QAAkB;QAC9C,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAqB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAA;QACtH,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAuB,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAC,CAAA;QACvG,MAAM,QAAQ,GAAqB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAiB,aAAa,CAAC,CAAC,CAAA;QACvI,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAC1B,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAqB,EAAE,OAAO,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CAAA;QAC5G,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAyB,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC,CAAA;QAC3G,MAAM,QAAQ,GAAqB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAiB,aAAa,CAAC,CAAC,CAAA;QACvI,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAoB,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE5E,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;IA+C1C,MAAM,CAAC,OAAO,EAAE,MAAM;IAqC5B,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"}
@@ -1,11 +1,12 @@
1
1
  import { AccountInstance } from '@xyo-network/account-model';
2
2
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper';
3
- import { ModuleWrapper } from '@xyo-network/module';
3
+ import { Module, ModuleWrapper } from '@xyo-network/module';
4
4
  import { NodeModule } from './Node';
5
5
  export declare class NodeWrapper extends ModuleWrapper<NodeModule> implements NodeModule {
6
6
  static requiredQueries: string[];
7
7
  private _archivist?;
8
8
  get archivist(): ArchivistWrapper;
9
+ static isNodeModule(module: Module): boolean;
9
10
  static tryWrap<TModule extends NodeModule = NodeModule>(module?: TModule, account?: AccountInstance): NodeWrapper | undefined;
10
11
  static wrap<TModule extends NodeModule = NodeModule>(module?: TModule, account?: AccountInstance): NodeWrapper;
11
12
  attach(address: string, external?: boolean): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"NodeWrapper.d.ts","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAInD,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAYnC,qBAAa,WAAY,SAAQ,aAAa,CAAC,UAAU,CAAE,YAAW,UAAU;IAC9E,OAAgB,eAAe,WAA+D;IAE9F,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,IAAI,SAAS,qBAGZ;WAEe,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;WAWtH,IAAI,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW;IAIjH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAKtC"}
1
+ {"version":3,"file":"NodeWrapper.d.ts","sourceRoot":"","sources":["../../src/NodeWrapper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAI3D,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAYnC,qBAAa,WAAY,SAAQ,aAAa,CAAC,UAAU,CAAE,YAAW,UAAU;IAC9E,OAAgB,eAAe,WAA+D;IAE9F,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,IAAI,SAAS,qBAGZ;IAED,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM;WAKlB,OAAO,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW,GAAG,SAAS;WAWtH,IAAI,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW;IAIjH,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAK1D,QAAQ,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAM7B,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;CAKtC"}
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.5",
17
- "@xyo-network/account-model": "^2.51.5",
18
- "@xyo-network/address-payload-plugin": "^2.51.5",
19
- "@xyo-network/archivist-wrapper": "^2.51.5",
20
- "@xyo-network/module": "^2.51.5",
21
- "@xyo-network/module-model": "^2.51.5",
22
- "@xyo-network/payload-builder": "^2.51.5",
23
- "@xyo-network/payload-model": "^2.51.5",
24
- "@xyo-network/payload-wrapper": "^2.51.5",
25
- "@xyo-network/promise": "^2.51.5"
16
+ "@xyo-network/account": "^2.51.7",
17
+ "@xyo-network/account-model": "^2.51.7",
18
+ "@xyo-network/address-payload-plugin": "^2.51.7",
19
+ "@xyo-network/archivist-wrapper": "^2.51.7",
20
+ "@xyo-network/module": "^2.51.7",
21
+ "@xyo-network/module-model": "^2.51.7",
22
+ "@xyo-network/payload-builder": "^2.51.7",
23
+ "@xyo-network/payload-model": "^2.51.7",
24
+ "@xyo-network/payload-wrapper": "^2.51.7",
25
+ "@xyo-network/promise": "^2.51.7"
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.5"
65
+ "version": "2.51.7"
66
66
  }
package/src/MemoryNode.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { exists } from '@xylabs/exists'
3
3
  import { fulfilled, rejected } from '@xylabs/promise'
4
- import { duplicateModules, Module, ModuleFilter } from '@xyo-network/module'
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'
@@ -25,6 +26,36 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams> ext
25
26
  assertEx(!existingModule, `Module [${existingModule?.config.name ?? existingModule?.address}] already attached at address [${address}]`)
26
27
  const module = assertEx(this.registeredModuleMap[address], 'No module registered at that address')
27
28
 
29
+ const wrapper = ModuleWrapper.wrap(module)
30
+ const notifiedAddresses: string[] = []
31
+
32
+ const getModulesToNotifyAbout = async (node: ModuleWrapper) => {
33
+ //send attach events for all existing attached modules
34
+ const childModules = await node.resolve()
35
+ return compact(
36
+ childModules.map((child) => {
37
+ //don't report self
38
+ if (node.address === child.address) {
39
+ return
40
+ }
41
+
42
+ //prevent loop
43
+ if (notifiedAddresses.includes(child.address)) {
44
+ return
45
+ }
46
+
47
+ notifiedAddresses.push(child.address)
48
+
49
+ return child
50
+ }),
51
+ )
52
+ }
53
+
54
+ const notificationList = await getModulesToNotifyAbout(wrapper)
55
+
56
+ const args = { module, name: module.config.name }
57
+ this.moduleAttachedEventListeners?.map((listener) => listener(args))
58
+
28
59
  this.privateResolver.addResolver(module.downResolver)
29
60
 
30
61
  //give it inside access
@@ -38,33 +69,25 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams> ext
38
69
  this.downResolver.addResolver(module.downResolver)
39
70
  }
40
71
 
41
- const args = { module, name: module.config.name }
42
- this.moduleAttachedEventListeners?.map((listener) => listener(args))
43
-
44
- const wrappedAsNode = NodeWrapper.tryWrap(module as NodeModule)
45
- if (wrappedAsNode && external) {
46
- const attachEmitter = wrappedAsNode.module as ModuleAttachedEventEmitter
47
- const detachEmitter = wrappedAsNode.module as ModuleDetachedEventEmitter
72
+ if (NodeWrapper.isNodeModule(module)) {
73
+ if (external) {
74
+ const wrappedAsNode = NodeWrapper.wrap(module as NodeModule)
75
+ const attachEmitter = wrappedAsNode.module as ModuleAttachedEventEmitter
76
+ const detachEmitter = wrappedAsNode.module as ModuleDetachedEventEmitter
48
77
 
49
- attachEmitter.on('moduleAttached', (args: ModuleAttachedEventArgs) => this.moduleAttachedEventListeners?.map((listener) => listener(args)))
50
- detachEmitter.on('moduleDetached', (args: ModuleDetachedEventArgs) => this.moduleDetachedEventListeners?.map((listener) => listener(args)))
51
-
52
- const notifyOfExistingModules = async (node: NodeWrapper) => {
53
- //send attach events for all existing attached modules
54
- const childModules = await node.resolve()
55
- await Promise.all(
56
- childModules.map((child) => {
57
- this.moduleAttachedEventListeners?.map((listener) => listener({ module: child }))
58
- const wrappedAsNode = NodeWrapper.tryWrap(child as NodeModule)
59
- if (wrappedAsNode) {
60
- return notifyOfExistingModules(wrappedAsNode)
61
- }
62
- }),
63
- )
78
+ attachEmitter.on('moduleAttached', (args: ModuleAttachedEventArgs) => this.moduleAttachedEventListeners?.map((listener) => listener(args)))
79
+ detachEmitter.on('moduleDetached', (args: ModuleDetachedEventArgs) => this.moduleDetachedEventListeners?.map((listener) => listener(args)))
64
80
  }
81
+ }
65
82
 
66
- await notifyOfExistingModules(wrappedAsNode)
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
+ })
67
88
  }
89
+
90
+ await notifyOfExistingModules(notificationList)
68
91
  }
69
92
 
70
93
  override async detach(address: string) {
@@ -85,22 +108,27 @@ export class MemoryNode<TParams extends MemoryNodeParams = MemoryNodeParams> ext
85
108
  this.moduleDetachedEventListeners?.map((listener) => listener(args))
86
109
 
87
110
  //notify of all sub node children detach
88
- const wrappedAsNode = NodeWrapper.tryWrap(module as NodeModule)
89
- if (wrappedAsNode) {
90
- const notifyOfExistingModules = async (node: NodeWrapper) => {
111
+ const wrapper = ModuleWrapper.tryWrap(module as NodeModule)
112
+ const notifiedAddresses: string[] = []
113
+ if (wrapper) {
114
+ const notifyOfExistingModules = async (node: ModuleWrapper) => {
91
115
  //send attach events for all existing attached modules
92
116
  const childModules = await node.resolve()
93
- await Promise.all(
94
- childModules.map((child) => {
95
- this.moduleDetachedEventListeners?.map((listener) => listener({ module: child }))
96
- const wrappedAsNode = NodeWrapper.tryWrap(child as NodeModule)
97
- if (wrappedAsNode) {
98
- return notifyOfExistingModules(wrappedAsNode)
99
- }
100
- }),
101
- )
117
+ childModules.map((child) => {
118
+ //don't report self
119
+ if (node.address === child.address) {
120
+ return
121
+ }
122
+
123
+ //prevent loop
124
+ if (notifiedAddresses.includes(child.address)) {
125
+ return
126
+ }
127
+ notifiedAddresses.push(child.address)
128
+ this.moduleDetachedEventListeners?.map((listener) => listener({ module: child }))
129
+ })
102
130
  }
103
- await notifyOfExistingModules(wrappedAsNode)
131
+ await notifyOfExistingModules(wrapper)
104
132
  }
105
133
  }
106
134
 
@@ -2,7 +2,7 @@ import { assertEx } from '@xylabs/assert'
2
2
  import { AccountInstance } from '@xyo-network/account-model'
3
3
  import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
4
4
  import { ArchivistWrapper } from '@xyo-network/archivist-wrapper'
5
- import { ModuleWrapper } from '@xyo-network/module'
5
+ import { Module, ModuleWrapper } from '@xyo-network/module'
6
6
  import { isXyoPayloadOfSchemaType } from '@xyo-network/payload-model'
7
7
  import { PayloadWrapper } from '@xyo-network/payload-wrapper'
8
8
 
@@ -28,11 +28,16 @@ export class NodeWrapper extends ModuleWrapper<NodeModule> implements NodeModule
28
28
  return this._archivist
29
29
  }
30
30
 
31
+ static isNodeModule(module: Module) {
32
+ const missingRequiredQueries = this.missingRequiredQueries(module)
33
+ return missingRequiredQueries.length === 0
34
+ }
35
+
31
36
  static override tryWrap<TModule extends NodeModule = NodeModule>(module?: TModule, account?: AccountInstance): NodeWrapper | undefined {
32
37
  if (module) {
33
38
  const missingRequiredQueries = this.missingRequiredQueries(module)
34
39
  if (missingRequiredQueries.length > 0) {
35
- console.warn(`Missing queries: ${JSON.stringify(missingRequiredQueries, null, 2)}`)
40
+ //console.warn(`Missing queries: ${JSON.stringify(missingRequiredQueries, null, 2)}`)
36
41
  } else {
37
42
  return new NodeWrapper(module as TModule, account)
38
43
  }