@xyo-network/module-abstract 2.66.3 → 2.66.5
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/AbstractIndirectModule.js +3 -6
- package/dist/cjs/AbstractIndirectModule.js.map +1 -1
- package/dist/cjs/QueryValidator/SupportedQueryValidator.js.map +1 -1
- package/dist/cjs/Resolver/CompositeModuleResolver.js.map +1 -1
- package/dist/cjs/Resolver/ResolverEventEmitter.js.map +1 -1
- package/dist/cjs/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/docs.json +3357 -3537
- package/dist/esm/AbstractIndirectModule.js +3 -6
- package/dist/esm/AbstractIndirectModule.js.map +1 -1
- package/dist/esm/QueryValidator/SupportedQueryValidator.js.map +1 -1
- package/dist/esm/Resolver/CompositeModuleResolver.js.map +1 -1
- package/dist/esm/Resolver/ResolverEventEmitter.js.map +1 -1
- package/dist/esm/Resolver/SimpleModuleResolver.js.map +1 -1
- package/dist/types/AbstractIndirectModule.d.ts +6 -6
- package/dist/types/AbstractIndirectModule.d.ts.map +1 -1
- package/dist/types/QueryValidator/SupportedQueryValidator.d.ts +4 -4
- package/dist/types/QueryValidator/SupportedQueryValidator.d.ts.map +1 -1
- package/dist/types/Resolver/CompositeModuleResolver.d.ts +5 -5
- package/dist/types/Resolver/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/types/Resolver/ResolverEventEmitter.d.ts +2 -2
- package/dist/types/Resolver/ResolverEventEmitter.d.ts.map +1 -1
- package/dist/types/Resolver/SimpleModuleResolver.d.ts +5 -5
- package/dist/types/Resolver/SimpleModuleResolver.d.ts.map +1 -1
- package/package.json +19 -20
- package/src/AbstractIndirectModule.ts +16 -21
- package/src/QueryValidator/SupportedQueryValidator.ts +3 -3
- package/src/Resolver/CompositeModuleResolver.ts +10 -12
- package/src/Resolver/ResolverEventEmitter.ts +5 -5
- package/src/Resolver/SimpleModuleResolver.ts +18 -20
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Module, ModuleFilter, ModuleResolver } from '@xyo-network/module-model'
|
|
2
2
|
|
|
3
3
|
export interface ModuleResolvedEventArgs {
|
|
4
4
|
filter?: ModuleFilter
|
|
5
|
-
module:
|
|
5
|
+
module: Module
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
export interface ResolverEventEmitter {
|
|
@@ -18,7 +18,7 @@ const getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {
|
|
|
18
18
|
listeners.map((listener) => listener(args))
|
|
19
19
|
return true
|
|
20
20
|
}
|
|
21
|
-
const onModuleResolved = (module:
|
|
21
|
+
const onModuleResolved = (module: Module, filter?: ModuleFilter) => {
|
|
22
22
|
const args = { filter, module }
|
|
23
23
|
emit('moduleResolved', args)
|
|
24
24
|
}
|
|
@@ -31,8 +31,8 @@ const getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {
|
|
|
31
31
|
on: (event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void) => {
|
|
32
32
|
listeners.push(listener)
|
|
33
33
|
},
|
|
34
|
-
resolve: async (filter?: ModuleFilter): Promise<
|
|
35
|
-
const modules:
|
|
34
|
+
resolve: async (filter?: ModuleFilter): Promise<Module[]> => {
|
|
35
|
+
const modules: Module[] = await originalResolve(filter)
|
|
36
36
|
await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)))
|
|
37
37
|
return modules
|
|
38
38
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AddressModuleFilter,
|
|
3
|
-
|
|
3
|
+
Module,
|
|
4
4
|
ModuleFilter,
|
|
5
5
|
ModuleRepository,
|
|
6
6
|
ModuleResolver,
|
|
@@ -14,15 +14,15 @@ import flatten from 'lodash/flatten'
|
|
|
14
14
|
//This class is now package private (not exported from index.ts)
|
|
15
15
|
export class SimpleModuleResolver implements ModuleRepository {
|
|
16
16
|
private addressToName: Record<string, string> = {}
|
|
17
|
-
private modules: Record<string,
|
|
17
|
+
private modules: Record<string, Module> = {}
|
|
18
18
|
|
|
19
19
|
get isModuleResolver() {
|
|
20
20
|
return true
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
add(module:
|
|
24
|
-
add(module:
|
|
25
|
-
add(module:
|
|
23
|
+
add(module: Module): this
|
|
24
|
+
add(module: Module[]): this
|
|
25
|
+
add(module: Module | Module[]): this {
|
|
26
26
|
if (Array.isArray(module)) {
|
|
27
27
|
module.forEach((module) => this.addSingleModule(module))
|
|
28
28
|
} else {
|
|
@@ -48,30 +48,28 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
48
48
|
throw 'Removing resolvers not supported'
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
resolve
|
|
52
|
-
resolve
|
|
53
|
-
resolve<
|
|
54
|
-
nameOrAddressOrFilter?: ModuleFilter | string,
|
|
55
|
-
): Promisable<TModule | TModule[] | undefined> {
|
|
51
|
+
resolve(filter?: ModuleFilter): Promisable<Module[]>
|
|
52
|
+
resolve(nameOrAddress: string): Promisable<Module | undefined>
|
|
53
|
+
resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promisable<Module | Module[] | undefined> {
|
|
56
54
|
if (nameOrAddressOrFilter) {
|
|
57
55
|
if (typeof nameOrAddressOrFilter === 'string') {
|
|
58
56
|
return (
|
|
59
|
-
this.resolveByName(Object.values(this.modules)
|
|
60
|
-
this.resolveByAddress(Object.values(this.modules)
|
|
57
|
+
this.resolveByName(Object.values(this.modules), [nameOrAddressOrFilter]).pop() ??
|
|
58
|
+
this.resolveByAddress(Object.values(this.modules), [nameOrAddressOrFilter]).pop()
|
|
61
59
|
)
|
|
62
60
|
} else if ((nameOrAddressOrFilter as AddressModuleFilter).address) {
|
|
63
|
-
return this.resolveByAddress
|
|
61
|
+
return this.resolveByAddress(Object.values(this.modules), (nameOrAddressOrFilter as AddressModuleFilter).address)
|
|
64
62
|
} else if ((nameOrAddressOrFilter as NameModuleFilter).name) {
|
|
65
|
-
return this.resolveByName
|
|
63
|
+
return this.resolveByName(Object.values(this.modules), (nameOrAddressOrFilter as NameModuleFilter).name)
|
|
66
64
|
} else if ((nameOrAddressOrFilter as QueryModuleFilter).query) {
|
|
67
|
-
return this.resolveByQuery
|
|
65
|
+
return this.resolveByQuery(Object.values(this.modules), (nameOrAddressOrFilter as QueryModuleFilter).query)
|
|
68
66
|
}
|
|
69
67
|
} else {
|
|
70
|
-
return Object.values(this.modules)
|
|
68
|
+
return Object.values(this.modules)
|
|
71
69
|
}
|
|
72
70
|
}
|
|
73
71
|
|
|
74
|
-
private addSingleModule(module?:
|
|
72
|
+
private addSingleModule(module?: Module) {
|
|
75
73
|
if (module) {
|
|
76
74
|
this.modules[module.address] = module
|
|
77
75
|
}
|
|
@@ -89,7 +87,7 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
89
87
|
}
|
|
90
88
|
}
|
|
91
89
|
|
|
92
|
-
private resolveByAddress<T extends
|
|
90
|
+
private resolveByAddress<T extends Module = Module>(modules: T[], address?: string[]): T[] {
|
|
93
91
|
return address
|
|
94
92
|
? compact(
|
|
95
93
|
flatten(
|
|
@@ -101,14 +99,14 @@ export class SimpleModuleResolver implements ModuleRepository {
|
|
|
101
99
|
: modules
|
|
102
100
|
}
|
|
103
101
|
|
|
104
|
-
private resolveByName<T extends
|
|
102
|
+
private resolveByName<T extends Module = Module>(modules: T[], name?: string[]): T[] {
|
|
105
103
|
if (name) {
|
|
106
104
|
return compact(name.map((name) => modules.filter((module) => module.config.name === name)).flat())
|
|
107
105
|
}
|
|
108
106
|
return modules
|
|
109
107
|
}
|
|
110
108
|
|
|
111
|
-
private resolveByQuery<T extends
|
|
109
|
+
private resolveByQuery<T extends Module = Module>(modules: T[], query?: string[][]): T[] {
|
|
112
110
|
return query
|
|
113
111
|
? compact(
|
|
114
112
|
modules.filter((module) =>
|