@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.
- package/dist/cjs/Events/ModuleAttached.js +3 -0
- package/dist/cjs/Events/ModuleAttached.js.map +1 -0
- package/dist/cjs/Events/ResolverChanged.js +3 -0
- package/dist/cjs/Events/ResolverChanged.js.map +1 -0
- package/dist/cjs/Events/index.js +6 -0
- package/dist/cjs/Events/index.js.map +1 -0
- package/dist/cjs/MemoryNode.js +13 -2
- package/dist/cjs/MemoryNode.js.map +1 -1
- package/dist/docs.json +1237 -1592
- package/dist/esm/Events/ModuleAttached.js +2 -0
- package/dist/esm/Events/ModuleAttached.js.map +1 -0
- package/dist/esm/Events/ResolverChanged.js +2 -0
- package/dist/esm/Events/ResolverChanged.js.map +1 -0
- package/dist/esm/Events/index.js +3 -0
- package/dist/esm/Events/index.js.map +1 -0
- package/dist/esm/MemoryNode.js +11 -1
- package/dist/esm/MemoryNode.js.map +1 -1
- package/dist/types/Events/ModuleAttached.d.ts +7 -0
- package/dist/types/Events/ModuleAttached.d.ts.map +1 -0
- package/dist/types/Events/ResolverChanged.d.ts +7 -0
- package/dist/types/Events/ResolverChanged.d.ts.map +1 -0
- package/dist/types/Events/index.d.ts +3 -0
- package/dist/types/Events/index.d.ts.map +1 -0
- package/dist/types/MemoryNode.d.ts +4 -9
- package/dist/types/MemoryNode.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/Events/ModuleAttached.ts +8 -0
- package/src/Events/ResolverChanged.ts +8 -0
- package/src/Events/index.ts +2 -0
- package/src/MemoryNode.spec.ts +19 -12
- package/src/MemoryNode.ts +23 -17
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleAttached.js","sourceRoot":"","sources":["../../../src/Events/ModuleAttached.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResolverChanged.js","sourceRoot":"","sources":["../../../src/Events/ResolverChanged.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|
package/dist/esm/MemoryNode.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,
|
|
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 @@
|
|
|
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
|
|
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,
|
|
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.
|
|
17
|
-
"@xyo-network/address-payload-plugin": "^2.43.
|
|
18
|
-
"@xyo-network/archivist-wrapper": "^2.43.
|
|
19
|
-
"@xyo-network/module": "^2.43.
|
|
20
|
-
"@xyo-network/module-model": "^2.43.
|
|
21
|
-
"@xyo-network/payload-builder": "^2.43.
|
|
22
|
-
"@xyo-network/payload-model": "^2.43.
|
|
23
|
-
"@xyo-network/payload-wrapper": "^2.43.
|
|
24
|
-
"@xyo-network/promise": "^2.43.
|
|
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.
|
|
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.
|
|
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>
|
package/src/MemoryNode.spec.ts
CHANGED
|
@@ -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('
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
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:
|
|
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: '
|
|
78
|
-
|
|
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
|
|