@xyo-network/node 2.45.0-rc.2 → 2.45.0-rc.4

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.
@@ -34,8 +34,10 @@ export class MemoryNode extends AbstractNode {
34
34
  }*/
35
35
  return instance;
36
36
  }
37
- attach(address, external) {
38
- const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address');
37
+ async attach(address, external) {
38
+ const existingModule = (await this.resolve({ address: [address] })).pop();
39
+ assertEx(!existingModule, `Module [${existingModule?.config.name}] already attached at address [${address}]`);
40
+ const module = assertEx(this.registeredModuleMap.get(address), 'No module registered at that address');
39
41
  this.internalResolver.addResolver(module.resolver);
40
42
  //give it inside access
41
43
  module.parentResolver.addResolver(this.internalResolver);
@@ -47,7 +49,7 @@ export class MemoryNode extends AbstractNode {
47
49
  //expose it externally
48
50
  this.resolver.addResolver(module.resolver);
49
51
  }
50
- const args = { module };
52
+ const args = { module, name: module.config.name };
51
53
  this.moduleAttachedEventListeners?.map((listener) => listener(args));
52
54
  }
53
55
  detach(address) {
@@ -59,7 +61,7 @@ export class MemoryNode extends AbstractNode {
59
61
  module.parentResolver.removeResolver(this.internalResolver);
60
62
  //remove external exposure
61
63
  this.resolver.removeResolver(module.resolver);
62
- const args = { address };
64
+ const args = { module, name: module.config.name };
63
65
  this.moduleDetachedEventListeners?.map((listener) => listener(args));
64
66
  }
65
67
  on(event, listener) {
@@ -74,6 +76,7 @@ export class MemoryNode extends AbstractNode {
74
76
  return this;
75
77
  }
76
78
  register(module) {
79
+ assertEx(!this.registeredModuleMap.get(module.address), `Module already registered at that address[${module.address}]`);
77
80
  this.registeredModuleMap.set(module.address, module);
78
81
  return this;
79
82
  }
@@ -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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"}
@@ -2,9 +2,11 @@ import { ModuleEventEmitter } from '@xyo-network/module';
2
2
  import { Module } from '@xyo-network/module-model';
3
3
  export interface ModuleAttachedEventArgs {
4
4
  module: Module;
5
+ name?: string;
5
6
  }
6
7
  export interface ModuleDetachedEventArgs {
7
- address: string;
8
+ module: Module;
9
+ name?: string;
8
10
  }
9
11
  export type ModuleAttachedEventEmitter = ModuleEventEmitter<'moduleAttached', ModuleAttachedEventArgs>;
10
12
  export type ModuleDetachedEventEmitter = ModuleEventEmitter<'moduleDetached', ModuleDetachedEventArgs>;
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleAttached.d.ts","sourceRoot":"","sources":["../../../src/Events/ModuleAttached.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAA;AACtG,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAA"}
1
+ {"version":3,"file":"ModuleAttached.d.ts","sourceRoot":"","sources":["../../../src/Events/ModuleAttached.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAElD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAA;AACtG,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAA"}
@@ -10,7 +10,7 @@ export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig> extends
10
10
  private registeredModuleMap;
11
11
  private readonly resolverChangedEventListeners;
12
12
  static create(params?: Partial<MemoryNodeParams>): Promise<MemoryNode>;
13
- attach(address: string, external?: boolean): void;
13
+ attach(address: string, external?: boolean): Promise<void>;
14
14
  detach(address: string): void;
15
15
  on(event: 'moduleAttached', listener: (args: ModuleAttachedEventArgs) => void): this;
16
16
  on(event: 'moduleResolverChanged', listener: (args: ModuleResolverChangedEventArgs) => void): this;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAmC,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE3G,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AACvD,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAE1B,8BAA8B,EAC9B,2BAA2B,EAC5B,MAAM,UAAU,CAAA;AAOjB,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAA;AAEnG,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAC7D,SAAQ,YAAY,CAAC,OAAO,CAC5B,YAAW,0BAA0B,EAAE,2BAA2B;IAElE,MAAM,CAAC,YAAY,4BAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+C;IAC5F,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+C;IAC5F,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAsD;WAE9E,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA2B5E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO;IAsB1C,MAAM,CAAC,OAAO,EAAE,MAAM;IAkB/B,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI;IACpF,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,8BAA8B,KAAK,IAAI,GAAG,IAAI;IAazF,QAAQ,CAAC,MAAM,EAAE,cAAc;IAK/B,UAAU;IAMV,iBAAiB;;;;;;;;;IAMX,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa/D,UAAU,CAAC,MAAM,EAAE,MAAM;CAKnC"}
1
+ {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAmC,MAAM,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAE3G,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AACvD,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAE1B,8BAA8B,EAC9B,2BAA2B,EAC5B,MAAM,UAAU,CAAA;AAOjB,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAAA;AAEnG,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,CAC7D,SAAQ,YAAY,CAAC,OAAO,CAC5B,YAAW,0BAA0B,EAAE,2BAA2B;IAElE,MAAM,CAAC,YAAY,4BAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+C;IAC5F,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+C;IAC5F,OAAO,CAAC,mBAAmB,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAsD;WAE9E,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BtE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO;IAwBhD,MAAM,CAAC,OAAO,EAAE,MAAM;IAkB/B,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI;IACpF,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,8BAA8B,KAAK,IAAI,GAAG,IAAI;IAazF,QAAQ,CAAC,MAAM,EAAE,cAAc;IAM/B,UAAU;IAMV,iBAAiB;;;;;;;;;IAMX,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAa/D,UAAU,CAAC,MAAM,EAAE,MAAM;CAKnC"}
package/package.json CHANGED
@@ -13,15 +13,15 @@
13
13
  "@xylabs/assert": "^2.7.1",
14
14
  "@xylabs/exists": "^2.7.1",
15
15
  "@xylabs/promise": "^2.7.1",
16
- "@xyo-network/account": "^2.45.0-rc.2",
17
- "@xyo-network/address-payload-plugin": "^2.45.0-rc.2",
18
- "@xyo-network/archivist-wrapper": "^2.45.0-rc.2",
19
- "@xyo-network/module": "^2.45.0-rc.2",
20
- "@xyo-network/module-model": "^2.45.0-rc.2",
21
- "@xyo-network/payload-builder": "^2.45.0-rc.2",
22
- "@xyo-network/payload-model": "^2.45.0-rc.2",
23
- "@xyo-network/payload-wrapper": "^2.45.0-rc.2",
24
- "@xyo-network/promise": "^2.45.0-rc.2"
16
+ "@xyo-network/account": "^2.45.0-rc.4",
17
+ "@xyo-network/address-payload-plugin": "^2.45.0-rc.4",
18
+ "@xyo-network/archivist-wrapper": "^2.45.0-rc.4",
19
+ "@xyo-network/module": "^2.45.0-rc.4",
20
+ "@xyo-network/module-model": "^2.45.0-rc.4",
21
+ "@xyo-network/payload-builder": "^2.45.0-rc.4",
22
+ "@xyo-network/payload-model": "^2.45.0-rc.4",
23
+ "@xyo-network/payload-wrapper": "^2.45.0-rc.4",
24
+ "@xyo-network/promise": "^2.45.0-rc.4"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@xylabs/ts-scripts-yarn3": "^2.14.15",
@@ -61,6 +61,6 @@
61
61
  },
62
62
  "sideEffects": false,
63
63
  "types": "dist/types/index.d.ts",
64
- "version": "2.45.0-rc.2",
64
+ "version": "2.45.0-rc.4",
65
65
  "stableVersion": "2.44.1"
66
66
  }
@@ -3,10 +3,12 @@ import { Module } from '@xyo-network/module-model'
3
3
 
4
4
  export interface ModuleAttachedEventArgs {
5
5
  module: Module
6
+ name?: string
6
7
  }
7
8
 
8
9
  export interface ModuleDetachedEventArgs {
9
- address: string
10
+ module: Module
11
+ name?: string
10
12
  }
11
13
 
12
14
  export type ModuleAttachedEventEmitter = ModuleEventEmitter<'moduleAttached', ModuleAttachedEventArgs>
package/src/MemoryNode.ts CHANGED
@@ -57,8 +57,10 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig>
57
57
  return instance
58
58
  }
59
59
 
60
- override attach(address: string, external?: boolean) {
61
- const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address')
60
+ override async attach(address: string, external?: boolean) {
61
+ const existingModule = (await this.resolve({ address: [address] })).pop()
62
+ assertEx(!existingModule, `Module [${existingModule?.config.name}] already attached at address [${address}]`)
63
+ const module = assertEx(this.registeredModuleMap.get(address), 'No module registered at that address')
62
64
 
63
65
  this.internalResolver.addResolver(module.resolver)
64
66
 
@@ -75,7 +77,7 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig>
75
77
  this.resolver.addResolver(module.resolver)
76
78
  }
77
79
 
78
- const args = { module }
80
+ const args = { module, name: module.config.name }
79
81
  this.moduleAttachedEventListeners?.map((listener) => listener(args))
80
82
  }
81
83
 
@@ -93,7 +95,7 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig>
93
95
  //remove external exposure
94
96
  this.resolver.removeResolver(module.resolver)
95
97
 
96
- const args = { address }
98
+ const args = { module, name: module.config.name }
97
99
  this.moduleDetachedEventListeners?.map((listener) => listener(args))
98
100
  }
99
101
 
@@ -112,6 +114,7 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig>
112
114
  }
113
115
 
114
116
  override register(module: AbstractModule) {
117
+ assertEx(!this.registeredModuleMap.get(module.address), `Module already registered at that address[${module.address}]`)
115
118
  this.registeredModuleMap.set(module.address, module)
116
119
  return this
117
120
  }