@xyo-network/node 2.43.10 → 2.43.11

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ModuleAttached.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModuleAttached.js","sourceRoot":"","sources":["../../../src/Events/ModuleAttached.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ResolverChanged.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolverChanged.js","sourceRoot":"","sources":["../../../src/Events/ResolverChanged.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from './ModuleAttached';
2
+ export * from './ResolverChanged';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Events/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
@@ -6,6 +6,7 @@ import { AbstractNode } from './AbstractNode';
6
6
  import { NodeConfigSchema } from './Config';
7
7
  export class MemoryNode extends AbstractNode {
8
8
  static configSchema = NodeConfigSchema;
9
+ moduleAttachedEventListeners = [];
9
10
  registeredModuleMap = new Map();
10
11
  resolverChangedEventListeners = [];
11
12
  get resolver() {
@@ -44,12 +45,21 @@ export class MemoryNode extends AbstractNode {
44
45
  attach(address, name) {
45
46
  const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address');
46
47
  this.internalResolver.add(module, name);
48
+ const args = { module };
49
+ this.moduleAttachedEventListeners?.map((listener) => listener(args));
47
50
  }
48
51
  detach(address) {
49
52
  this.internalResolver.remove(address);
50
53
  }
51
54
  on(event, listener) {
52
- this.resolverChangedEventListeners?.push(listener);
55
+ switch (event) {
56
+ case 'moduleAttached':
57
+ this.moduleAttachedEventListeners?.push(listener);
58
+ break;
59
+ case 'moduleResolverChanged':
60
+ this.resolverChangedEventListeners?.push(listener);
61
+ break;
62
+ }
53
63
  return this;
54
64
  }
55
65
  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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"}
@@ -0,0 +1,7 @@
1
+ import { ModuleEventEmitter } from '@xyo-network/module';
2
+ import { Module } from '@xyo-network/module-model';
3
+ export interface ModuleAttachedEventArgs {
4
+ module: Module;
5
+ }
6
+ export type ModuleAttachedEventEmitter = ModuleEventEmitter<'moduleAttached', ModuleAttachedEventArgs>;
7
+ //# sourceMappingURL=ModuleAttached.d.ts.map
@@ -0,0 +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,MAAM,0BAA0B,GAAG,kBAAkB,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { ModuleEventEmitter } from '@xyo-network/module';
2
+ import { ModuleResolver } from '@xyo-network/module-model';
3
+ export interface ModuleResolverChangedEventArgs {
4
+ resolver?: ModuleResolver;
5
+ }
6
+ export type ResolverChangedEventEmitter = ModuleEventEmitter<'moduleResolverChanged', ModuleResolverChangedEventArgs>;
7
+ //# sourceMappingURL=ResolverChanged.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolverChanged.d.ts","sourceRoot":"","sources":["../../../src/Events/ResolverChanged.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B;AAED,MAAM,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './ModuleAttached';
2
+ export * from './ResolverChanged';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Events/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
@@ -1,19 +1,13 @@
1
1
  import { Module, ModuleFilter, ModuleResolver } from '@xyo-network/module';
2
2
  import { AbstractNode, AbstractNodeParams } from './AbstractNode';
3
3
  import { NodeConfig } from './Config';
4
+ import { ModuleAttachedEventArgs, ModuleAttachedEventEmitter, ModuleResolverChangedEventArgs, ResolverChangedEventEmitter } from './Events';
4
5
  export interface MemoryNodeParams<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends AbstractNodeParams<TConfig, TModule> {
5
6
  autoAttachExternallyResolved?: boolean;
6
7
  }
7
- export type ListenerFunction<T> = (args: T) => void;
8
- export interface ModuleEventEmitter<TEvent extends string, TEventArgs> {
9
- on(event: TEvent, listener: ListenerFunction<TEventArgs>): this;
10
- }
11
- export interface ModuleResolverChangedEventArgs {
12
- resolver?: ModuleResolver;
13
- }
14
- export type ResolverChangedEventEmitter = ModuleEventEmitter<'moduleResolverChanged', ModuleResolverChangedEventArgs>;
15
- export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends AbstractNode<TConfig, TModule> implements ResolverChangedEventEmitter {
8
+ export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module> extends AbstractNode<TConfig, TModule> implements ModuleAttachedEventEmitter, ResolverChangedEventEmitter {
16
9
  static configSchema: "network.xyo.node.config";
10
+ private readonly moduleAttachedEventListeners;
17
11
  private registeredModuleMap;
18
12
  private readonly resolverChangedEventListeners;
19
13
  get resolver(): ModuleResolver | undefined;
@@ -21,6 +15,7 @@ export declare class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule
21
15
  static create(params?: Partial<MemoryNodeParams>): Promise<MemoryNode>;
22
16
  attach(address: string, name?: string): void;
23
17
  detach(address: string): void;
18
+ on(event: 'moduleAttached', listener: (args: ModuleAttachedEventArgs) => void): this;
24
19
  on(event: 'moduleResolverChanged', listener: (args: ModuleResolverChangedEventArgs) => void): this;
25
20
  register(module: TModule): void;
26
21
  registered(): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAA+C,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEvH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AAEvD,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CACxG,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC5C,4BAA4B,CAAC,EAAE,OAAO,CAAA;CACvC;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;AAEnD,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,MAAM,EAAE,UAAU;IACnE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;CAChE;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,EAAE,cAAc,CAAA;CAC1B;AAED,MAAM,MAAM,2BAA2B,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,8BAA8B,CAAC,CAAA;AAErH,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CAC9F,SAAQ,YAAY,CAAC,OAAO,EAAE,OAAO,CACrC,YAAW,2BAA2B;IAEtC,MAAM,CAAC,YAAY,4BAAmB;IACtC,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAyD;IAEvG,IAAa,QAAQ,IAIW,cAAc,GAAG,SAAS,CAFzD;IAED,IAAa,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,EAIzD;WAEqB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB5E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAKrC,MAAM,CAAC,OAAO,EAAE,MAAM;IAI/B,EAAE,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,8BAA8B,KAAK,IAAI,GAAG,IAAI;IAKzF,QAAQ,CAAC,MAAM,EAAE,OAAO;IAIxB,UAAU;IAMV,iBAAiB;IAMX,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOlD,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY3D,UAAU,CAAC,MAAM,EAAE,OAAO;CAGpC"}
1
+ {"version":3,"file":"MemoryNode.d.ts","sourceRoot":"","sources":["../../src/MemoryNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAA8D,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEtI,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,UAAU,CAAA;AACvD,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAA;AAO3I,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CACxG,SAAQ,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;IAC5C,4BAA4B,CAAC,EAAE,OAAO,CAAA;CACvC;AAED,qBAAa,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,EAAE,OAAO,SAAS,MAAM,GAAG,MAAM,CAC9F,SAAQ,YAAY,CAAC,OAAO,EAAE,OAAO,CACrC,YAAW,0BAA0B,EAAE,2BAA2B;IAElE,MAAM,CAAC,YAAY,4BAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAA+C;IAC5F,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAsD;IAEpG,IAAa,QAAQ,IAIW,cAAc,GAAG,SAAS,CAFzD;IAED,IAAa,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,EAIzD;WAEqB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAwB5E,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAOrC,MAAM,CAAC,OAAO,EAAE,MAAM;IAI/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,OAAO;IAIxB,UAAU;IAMV,iBAAiB;IAMX,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAOlD,UAAU,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAY3D,UAAU,CAAC,MAAM,EAAE,OAAO;CAGpC"}
package/package.json CHANGED
@@ -13,18 +13,18 @@
13
13
  "@xylabs/assert": "^2.6.16",
14
14
  "@xylabs/exists": "^2.6.16",
15
15
  "@xylabs/promise": "^2.6.16",
16
- "@xyo-network/account": "^2.43.10",
17
- "@xyo-network/address-payload-plugin": "^2.43.10",
18
- "@xyo-network/archivist-wrapper": "^2.43.10",
19
- "@xyo-network/module": "^2.43.10",
20
- "@xyo-network/module-model": "^2.43.10",
21
- "@xyo-network/payload-builder": "^2.43.10",
22
- "@xyo-network/payload-model": "^2.43.10",
23
- "@xyo-network/payload-wrapper": "^2.43.10",
24
- "@xyo-network/promise": "^2.43.10"
16
+ "@xyo-network/account": "^2.43.11",
17
+ "@xyo-network/address-payload-plugin": "^2.43.11",
18
+ "@xyo-network/archivist-wrapper": "^2.43.11",
19
+ "@xyo-network/module": "^2.43.11",
20
+ "@xyo-network/module-model": "^2.43.11",
21
+ "@xyo-network/payload-builder": "^2.43.11",
22
+ "@xyo-network/payload-model": "^2.43.11",
23
+ "@xyo-network/payload-wrapper": "^2.43.11",
24
+ "@xyo-network/promise": "^2.43.11"
25
25
  },
26
26
  "devDependencies": {
27
- "@xylabs/ts-scripts-yarn3": "^2.12.23"
27
+ "@xylabs/ts-scripts-yarn3": "^2.12.25"
28
28
  },
29
29
  "description": "Primary SDK for using XYO Protocol 2.0",
30
30
  "browser": "dist/esm/index.js",
@@ -59,5 +59,5 @@
59
59
  },
60
60
  "sideEffects": false,
61
61
  "types": "dist/types/index.d.ts",
62
- "version": "2.43.10"
62
+ "version": "2.43.11"
63
63
  }
@@ -0,0 +1,8 @@
1
+ import { ModuleEventEmitter } from '@xyo-network/module'
2
+ import { Module } from '@xyo-network/module-model'
3
+
4
+ export interface ModuleAttachedEventArgs {
5
+ module: Module
6
+ }
7
+
8
+ export type ModuleAttachedEventEmitter = ModuleEventEmitter<'moduleAttached', ModuleAttachedEventArgs>
@@ -0,0 +1,8 @@
1
+ import { ModuleEventEmitter } from '@xyo-network/module'
2
+ import { ModuleResolver } from '@xyo-network/module-model'
3
+
4
+ export interface ModuleResolverChangedEventArgs {
5
+ resolver?: ModuleResolver
6
+ }
7
+
8
+ export type ResolverChangedEventEmitter = ModuleEventEmitter<'moduleResolverChanged', ModuleResolverChangedEventArgs>
@@ -0,0 +1,2 @@
1
+ export * from './ModuleAttached'
2
+ export * from './ResolverChanged'
@@ -150,6 +150,15 @@ describe('MemoryNode', () => {
150
150
  it('attaches module', () => {
151
151
  node.attach(module.address)
152
152
  })
153
+ it('emits event on module attach', (done) => {
154
+ node.on('moduleAttached', (args) => {
155
+ expect(args.module).toBeObject()
156
+ expect(args.module.address).toBe(module.address)
157
+ expect(args.module).toBe(module)
158
+ done()
159
+ })
160
+ node.attach(module.address)
161
+ })
153
162
  })
154
163
  describe('attached', () => {
155
164
  let module: AbstractModule
@@ -368,19 +377,17 @@ describe('MemoryNode', () => {
368
377
  })
369
378
  })
370
379
  })
371
- describe('on', () => {
372
- describe('moduleResolverChanged', () => {
373
- it('emits event', (done) => {
374
- const resolver = new SimpleModuleResolver()
375
- node.on('moduleResolverChanged', (args) => {
376
- expect(args).toBeObject()
377
- expect(args.resolver).toBe(resolver)
378
- done()
379
- })
380
- expect(node.resolver).toBeUndefined()
381
- node.resolver = resolver
382
- expect(node.resolver).toBe(resolver)
380
+ describe('resolver', () => {
381
+ it('emits event when resolver changes', (done) => {
382
+ const resolver = new SimpleModuleResolver()
383
+ node.on('moduleResolverChanged', (args) => {
384
+ expect(args).toBeObject()
385
+ expect(args.resolver).toBe(resolver)
386
+ done()
383
387
  })
388
+ expect(node.resolver).toBeUndefined()
389
+ node.resolver = resolver
390
+ expect(node.resolver).toBe(resolver)
384
391
  })
385
392
  })
386
393
  })
package/src/MemoryNode.ts CHANGED
@@ -1,35 +1,30 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import { exists } from '@xylabs/exists'
3
3
  import { fulfilled } from '@xylabs/promise'
4
- import { duplicateModules, mixinResolverEventEmitter, Module, ModuleFilter, ModuleResolver } from '@xyo-network/module'
4
+ import { duplicateModules, EventListener, mixinResolverEventEmitter, Module, ModuleFilter, ModuleResolver } from '@xyo-network/module'
5
5
 
6
6
  import { AbstractNode, AbstractNodeParams } from './AbstractNode'
7
7
  import { NodeConfig, NodeConfigSchema } from './Config'
8
+ import { ModuleAttachedEventArgs, ModuleAttachedEventEmitter, ModuleResolverChangedEventArgs, ResolverChangedEventEmitter } from './Events'
9
+
10
+ type SupportedEventTypes = 'moduleAttached' | 'moduleResolverChanged'
11
+ type SupportedEventListeners<T extends SupportedEventTypes> = T extends 'moduleAttached'
12
+ ? EventListener<ModuleAttachedEventArgs>
13
+ : EventListener<ModuleResolverChangedEventArgs>
8
14
 
9
15
  export interface MemoryNodeParams<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module>
10
16
  extends AbstractNodeParams<TConfig, TModule> {
11
17
  autoAttachExternallyResolved?: boolean
12
18
  }
13
19
 
14
- export type ListenerFunction<T> = (args: T) => void
15
-
16
- export interface ModuleEventEmitter<TEvent extends string, TEventArgs> {
17
- on(event: TEvent, listener: ListenerFunction<TEventArgs>): this
18
- }
19
-
20
- export interface ModuleResolverChangedEventArgs {
21
- resolver?: ModuleResolver
22
- }
23
-
24
- export type ResolverChangedEventEmitter = ModuleEventEmitter<'moduleResolverChanged', ModuleResolverChangedEventArgs>
25
-
26
20
  export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends Module = Module>
27
21
  extends AbstractNode<TConfig, TModule>
28
- implements ResolverChangedEventEmitter
22
+ implements ModuleAttachedEventEmitter, ResolverChangedEventEmitter
29
23
  {
30
24
  static configSchema = NodeConfigSchema
25
+ private readonly moduleAttachedEventListeners: EventListener<ModuleAttachedEventArgs>[] = []
31
26
  private registeredModuleMap = new Map<string, TModule>()
32
- private readonly resolverChangedEventListeners: ListenerFunction<ModuleResolverChangedEventArgs>[] = []
27
+ private readonly resolverChangedEventListeners: EventListener<ModuleResolverChangedEventArgs>[] = []
33
28
 
34
29
  override get resolver() {
35
30
  return this._resolver
@@ -68,14 +63,25 @@ export class MemoryNode<TConfig extends NodeConfig = NodeConfig, TModule extends
68
63
  override attach(address: string, name?: string) {
69
64
  const module = assertEx(this.registeredModuleMap.get(address), 'No module found at that address')
70
65
  this.internalResolver.add(module, name)
66
+ const args = { module }
67
+ this.moduleAttachedEventListeners?.map((listener) => listener(args))
71
68
  }
72
69
 
73
70
  override detach(address: string) {
74
71
  this.internalResolver.remove(address)
75
72
  }
76
73
 
77
- on(event: 'moduleResolverChanged', listener: (args: ModuleResolverChangedEventArgs) => void): this {
78
- this.resolverChangedEventListeners?.push(listener)
74
+ on(event: 'moduleAttached', listener: (args: ModuleAttachedEventArgs) => void): this
75
+ on(event: 'moduleResolverChanged', listener: (args: ModuleResolverChangedEventArgs) => void): this
76
+ on<T extends SupportedEventTypes>(event: T, listener: SupportedEventListeners<T>): this {
77
+ switch (event) {
78
+ case 'moduleAttached':
79
+ this.moduleAttachedEventListeners?.push(listener as EventListener<ModuleAttachedEventArgs>)
80
+ break
81
+ case 'moduleResolverChanged':
82
+ this.resolverChangedEventListeners?.push(listener as EventListener<ModuleResolverChangedEventArgs>)
83
+ break
84
+ }
79
85
  return this
80
86
  }
81
87