@xyo-network/module-resolver 2.92.6 → 2.92.8
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/browser/CompositeModuleResolver.d.cts +11 -4
- package/dist/browser/CompositeModuleResolver.d.cts.map +1 -1
- package/dist/browser/CompositeModuleResolver.d.mts +11 -4
- package/dist/browser/CompositeModuleResolver.d.mts.map +1 -1
- package/dist/browser/CompositeModuleResolver.d.ts +11 -4
- package/dist/browser/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/browser/ResolverEventEmitter.d.cts.map +1 -1
- package/dist/browser/ResolverEventEmitter.d.mts.map +1 -1
- package/dist/browser/ResolverEventEmitter.d.ts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.cts +6 -3
- package/dist/browser/SimpleModuleResolver.d.cts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.mts +6 -3
- package/dist/browser/SimpleModuleResolver.d.mts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.ts +6 -3
- package/dist/browser/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/browser/index.cjs +68 -25
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +70 -27
- package/dist/browser/index.js.map +1 -1
- package/dist/node/CompositeModuleResolver.d.cts +11 -4
- package/dist/node/CompositeModuleResolver.d.cts.map +1 -1
- package/dist/node/CompositeModuleResolver.d.mts +11 -4
- package/dist/node/CompositeModuleResolver.d.mts.map +1 -1
- package/dist/node/CompositeModuleResolver.d.ts +11 -4
- package/dist/node/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/node/ResolverEventEmitter.d.cts.map +1 -1
- package/dist/node/ResolverEventEmitter.d.mts.map +1 -1
- package/dist/node/ResolverEventEmitter.d.ts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.cts +6 -3
- package/dist/node/SimpleModuleResolver.d.cts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.mts +6 -3
- package/dist/node/SimpleModuleResolver.d.mts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.ts +6 -3
- package/dist/node/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/node/index.cjs +68 -28
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +70 -30
- package/dist/node/index.js.map +1 -1
- package/package.json +9 -8
- package/src/CompositeModuleResolver.ts +49 -9
- package/src/ResolverEventEmitter.ts +1 -0
- package/src/SimpleModuleResolver.ts +53 -43
package/dist/browser/index.js
CHANGED
|
@@ -2,14 +2,17 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
4
|
// src/CompositeModuleResolver.ts
|
|
5
|
-
import { assertEx } from "@xylabs/assert";
|
|
5
|
+
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
6
6
|
import { exists } from "@xylabs/exists";
|
|
7
7
|
import { Base } from "@xylabs/object";
|
|
8
8
|
import { duplicateModules } from "@xyo-network/module-model";
|
|
9
|
+
import { LRUCache } from "lru-cache";
|
|
9
10
|
|
|
10
11
|
// src/SimpleModuleResolver.ts
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
12
|
+
import { assertEx } from "@xylabs/assert";
|
|
13
|
+
import { isAddress } from "@xylabs/hex";
|
|
14
|
+
import { compact } from "@xylabs/lodash";
|
|
15
|
+
import { isAddressModuleFilter, isModuleName, isNameModuleFilter, isQueryModuleFilter } from "@xyo-network/module-model";
|
|
13
16
|
var SimpleModuleResolver = class {
|
|
14
17
|
static {
|
|
15
18
|
__name(this, "SimpleModuleResolver");
|
|
@@ -40,20 +43,26 @@ var SimpleModuleResolver = class {
|
|
|
40
43
|
removeResolver(_resolver) {
|
|
41
44
|
throw "Removing resolvers not supported";
|
|
42
45
|
}
|
|
43
|
-
resolve(idOrFilter, options) {
|
|
46
|
+
resolve(idOrFilter = "*", options) {
|
|
44
47
|
const unfiltered = (() => {
|
|
45
48
|
if (idOrFilter) {
|
|
46
49
|
if (typeof idOrFilter === "string") {
|
|
50
|
+
if (idOrFilter === "*") {
|
|
51
|
+
return Object.values(this.modules);
|
|
52
|
+
}
|
|
47
53
|
const id = idOrFilter;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
const name = isModuleName(id) ? id : void 0;
|
|
55
|
+
const address = isAddress(id) ? id : void 0;
|
|
56
|
+
assertEx(name || address, () => "module identifier must be a ModuleName or Address");
|
|
57
|
+
return (name ? this.resolveByName(Object.values(this.modules), [
|
|
58
|
+
name
|
|
59
|
+
]).pop() : void 0) ?? (address ? this.resolveByAddress(this.modules, [
|
|
60
|
+
address
|
|
61
|
+
]).pop() : void 0);
|
|
53
62
|
} else {
|
|
54
63
|
const filter = idOrFilter;
|
|
55
64
|
if (isAddressModuleFilter(filter)) {
|
|
56
|
-
return this.resolveByAddress(
|
|
65
|
+
return this.resolveByAddress(this.modules, filter.address);
|
|
57
66
|
} else if (isNameModuleFilter(filter)) {
|
|
58
67
|
return this.resolveByName(Object.values(this.modules), filter.name);
|
|
59
68
|
} else if (isQueryModuleFilter(filter)) {
|
|
@@ -77,6 +86,7 @@ var SimpleModuleResolver = class {
|
|
|
77
86
|
}
|
|
78
87
|
}
|
|
79
88
|
removeSingleModule(address) {
|
|
89
|
+
assertEx(isAddress(address), () => "Invalid address");
|
|
80
90
|
if (address && this.modules[address]) {
|
|
81
91
|
delete this.modules[address];
|
|
82
92
|
const name = this.addressToName[address];
|
|
@@ -86,18 +96,17 @@ var SimpleModuleResolver = class {
|
|
|
86
96
|
}
|
|
87
97
|
}
|
|
88
98
|
resolveByAddress(modules, address) {
|
|
89
|
-
return
|
|
90
|
-
return modules
|
|
91
|
-
}))
|
|
99
|
+
return compact(address.map((address2) => {
|
|
100
|
+
return modules[address2];
|
|
101
|
+
}));
|
|
92
102
|
}
|
|
93
103
|
resolveByName(modules, name) {
|
|
94
|
-
|
|
95
|
-
return
|
|
96
|
-
}
|
|
97
|
-
return modules;
|
|
104
|
+
return compact(name.map((name2) => {
|
|
105
|
+
return modules.find((module) => module.config.name === name2);
|
|
106
|
+
}));
|
|
98
107
|
}
|
|
99
108
|
resolveByQuery(modules, query) {
|
|
100
|
-
return
|
|
109
|
+
return compact(modules.filter((module) => query?.reduce((supported, queryList) => {
|
|
101
110
|
return (
|
|
102
111
|
// eslint-disable-next-line unicorn/no-array-reduce
|
|
103
112
|
queryList.reduce((supported2, query2) => {
|
|
@@ -105,7 +114,7 @@ var SimpleModuleResolver = class {
|
|
|
105
114
|
return supported2 && queryable;
|
|
106
115
|
}, true) || supported
|
|
107
116
|
);
|
|
108
|
-
}, false)))
|
|
117
|
+
}, false)));
|
|
109
118
|
}
|
|
110
119
|
};
|
|
111
120
|
|
|
@@ -119,12 +128,23 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
119
128
|
}
|
|
120
129
|
static defaultMaxDepth = 5;
|
|
121
130
|
resolvers = [];
|
|
122
|
-
|
|
123
|
-
|
|
131
|
+
_cache;
|
|
132
|
+
_localResolver;
|
|
133
|
+
constructor({ cache, ...params } = {}) {
|
|
124
134
|
super(params);
|
|
125
135
|
const localResolver = new SimpleModuleResolver();
|
|
126
136
|
this.addResolver(localResolver);
|
|
127
|
-
|
|
137
|
+
const {
|
|
138
|
+
max = 100,
|
|
139
|
+
ttl = 1e3 * 5
|
|
140
|
+
/* five seconds */
|
|
141
|
+
} = cache ?? {};
|
|
142
|
+
this._cache = new LRUCache({
|
|
143
|
+
max,
|
|
144
|
+
ttl,
|
|
145
|
+
...cache
|
|
146
|
+
});
|
|
147
|
+
this._localResolver = localResolver;
|
|
128
148
|
}
|
|
129
149
|
get moduleIdentifierTransformers() {
|
|
130
150
|
return this.params.moduleIdentifierTransformers;
|
|
@@ -155,11 +175,23 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
155
175
|
this.resolvers = this.resolvers.filter((item) => item !== resolver);
|
|
156
176
|
return this;
|
|
157
177
|
}
|
|
158
|
-
async resolve(idOrFilter, options) {
|
|
178
|
+
async resolve(idOrFilter = "*", options) {
|
|
159
179
|
const mutatedOptions = {
|
|
160
180
|
...options,
|
|
161
181
|
maxDepth: (options?.maxDepth ?? _CompositeModuleResolver.defaultMaxDepth) - 1
|
|
162
182
|
};
|
|
183
|
+
if (idOrFilter === "*") {
|
|
184
|
+
const all = idOrFilter;
|
|
185
|
+
if (mutatedOptions.maxDepth < 0) {
|
|
186
|
+
return [];
|
|
187
|
+
}
|
|
188
|
+
const result = await Promise.all(this.resolvers.map(async (resolver) => {
|
|
189
|
+
const result2 = await resolver.resolve(all, mutatedOptions);
|
|
190
|
+
return result2;
|
|
191
|
+
}));
|
|
192
|
+
const flatResult = result.flat().filter(exists);
|
|
193
|
+
return flatResult.filter(duplicateModules);
|
|
194
|
+
}
|
|
163
195
|
if (typeof idOrFilter === "string") {
|
|
164
196
|
const idParts = moduleIdentifierParts(idOrFilter);
|
|
165
197
|
if (idParts.length > 1) {
|
|
@@ -169,11 +201,22 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
169
201
|
if (mutatedOptions.maxDepth < 0) {
|
|
170
202
|
return void 0;
|
|
171
203
|
}
|
|
204
|
+
const cachedResult = this._cache.get(id);
|
|
205
|
+
if (cachedResult) {
|
|
206
|
+
if (cachedResult.status === "dead") {
|
|
207
|
+
this._cache.delete(id);
|
|
208
|
+
} else {
|
|
209
|
+
return cachedResult;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
172
212
|
const results = await Promise.all(this.resolvers.map(async (resolver) => {
|
|
173
213
|
const result2 = await resolver.resolve(id, mutatedOptions);
|
|
174
214
|
return result2;
|
|
175
215
|
}));
|
|
176
216
|
const result = results.filter(exists).filter(duplicateModules).pop();
|
|
217
|
+
if (result) {
|
|
218
|
+
this._cache.set(id, result);
|
|
219
|
+
}
|
|
177
220
|
return result;
|
|
178
221
|
} else {
|
|
179
222
|
const filter = idOrFilter;
|
|
@@ -190,16 +233,16 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
190
233
|
}
|
|
191
234
|
addSingleModule(module) {
|
|
192
235
|
if (module) {
|
|
193
|
-
this.
|
|
236
|
+
this._localResolver.add(module);
|
|
194
237
|
}
|
|
195
238
|
}
|
|
196
239
|
removeSingleModule(address) {
|
|
197
|
-
this.
|
|
240
|
+
this._localResolver.remove(address);
|
|
198
241
|
}
|
|
199
242
|
async resolveMultipartIdentifier(moduleIdentifier) {
|
|
200
243
|
const idParts = moduleIdentifierParts(moduleIdentifier);
|
|
201
|
-
|
|
202
|
-
const id =
|
|
244
|
+
assertEx2(idParts.length >= 2, () => "Not a valid multipart identifier");
|
|
245
|
+
const id = assertEx2(idParts.shift());
|
|
203
246
|
const module = await this.resolve(id);
|
|
204
247
|
return await module?.resolve(idParts.join(":"));
|
|
205
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/CompositeModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { Base, BaseParams } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport {\n duplicateModules,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\nimport { ModuleIdentifierTransformer } from './transformers'\n\nexport type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>\n\nexport interface ModuleResolverParams extends BaseParams {\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nconst moduleIdentifierParts = (moduleIdentifier: ModuleIdentifier): ModuleIdentifierPart[] => {\n return moduleIdentifier?.split(':') as ModuleIdentifierPart[]\n}\n\nexport class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolverInstance[] = []\n private localResolver: SimpleModuleResolver\n\n constructor(params: ModuleResolverParams = {}) {\n super(params)\n const localResolver = new SimpleModuleResolver()\n this.addResolver(localResolver)\n this.localResolver = localResolver\n }\n\n private get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolverInstance): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addresses: Address[] | Address): this {\n if (Array.isArray(addresses)) {\n for (const address of addresses) this.removeSingleModule(address)\n } else {\n this.removeSingleModule(addresses)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolverInstance): this {\n this.resolvers = this.resolvers.filter((item) => item !== resolver)\n return this\n }\n\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter?: ModuleFilter<T> | ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth) - 1 }\n if (typeof idOrFilter === 'string') {\n const idParts = moduleIdentifierParts(idOrFilter)\n if (idParts.length > 1) {\n return await this.resolveMultipartIdentifier<T>(idOrFilter)\n }\n const id = await this.transformModuleIdentifier(idOrFilter)\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const results = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T | undefined = await resolver.resolve<T>(id, mutatedOptions)\n return result\n }),\n )\n const result: T | undefined = results.filter(exists).filter(duplicateModules).pop()\n return result\n } else {\n const filter = idOrFilter\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>(filter, mutatedOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter(duplicateModules)\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this.localResolver.add(module)\n }\n }\n private removeSingleModule(address: Address) {\n this.localResolver.remove(address)\n }\n\n private async resolveMultipartIdentifier<T extends ModuleInstance = ModuleInstance>(moduleIdentifier: ModuleIdentifier): Promise<T | undefined> {\n const idParts = moduleIdentifierParts(moduleIdentifier)\n assertEx(idParts.length >= 2, 'Not a valid multipart identifier')\n const id = assertEx(idParts.shift())\n const module = await this.resolve(id)\n return await module?.resolve<T>(idParts.join(':'))\n }\n\n private async transformModuleIdentifier(identifier: ModuleIdentifier) {\n let id = identifier\n for (const transformer of this.moduleIdentifierTransformers ?? []) {\n id = await transformer.transform(id)\n }\n return id\n }\n}\n","import { Address } from '@xylabs/hex'\nimport { compact, flatten } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport {\n isAddressModuleFilter,\n isNameModuleFilter,\n isQueryModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\n\n//This class is now package private (not exported from index.ts)\nexport class SimpleModuleResolver implements ModuleRepository {\n private addressToName: Record<string, string> = {}\n private modules: Record<string, ModuleInstance> = {}\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolverInstance): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: Address | Address[]): this {\n if (Array.isArray(address)) {\n for (const addr of address) this.removeSingleModule(addr)\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolverInstance): this {\n throw 'Removing resolvers not supported'\n }\n\n resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>\n resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>\n resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[] | T | undefined> {\n const unfiltered = (() => {\n if (idOrFilter) {\n if (typeof idOrFilter === 'string') {\n const id = idOrFilter\n return this.resolveByName<T>(Object.values(this.modules), [id]).pop() ?? this.resolveByAddress<T>(Object.values(this.modules), [id]).pop()\n } else {\n const filter = idOrFilter\n if (isAddressModuleFilter(filter)) {\n return this.resolveByAddress<T>(Object.values(this.modules), filter.address)\n } else if (isNameModuleFilter(filter)) {\n return this.resolveByName<T>(Object.values(this.modules), filter.name)\n } else if (isQueryModuleFilter(filter)) {\n return this.resolveByQuery<T>(Object.values(this.modules), filter.query)\n }\n }\n } else {\n return Object.values(this.modules) as T[]\n }\n })()\n const identity = options?.identity\n if (identity) {\n return (\n Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module))\n : identity(unfiltered) ? unfiltered\n : undefined\n )\n } else {\n return unfiltered\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this.modules[module.address] = module\n }\n }\n\n private removeSingleModule(address: Address) {\n if (address && this.modules[address]) {\n delete this.modules[address]\n const name = this.addressToName[address]\n if (name) {\n delete this.addressToName[address]\n }\n }\n }\n\n private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], address?: string[]): T[] {\n return (\n address ?\n compact(\n flatten(\n address?.map((address) => {\n return modules.filter((module) => module.address === address)\n }),\n ),\n )\n : modules) as T[]\n }\n\n private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name?: string[]): T[] {\n if (name) {\n return compact(name.flatMap((name) => modules.filter((module) => module.config?.name === name))) as T[]\n }\n return modules as T[]\n }\n\n private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query?: string[][]): T[] {\n return (\n query ?\n compact(\n modules.filter((module) =>\n query?.reduce((supported, queryList) => {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n queryList.reduce((supported, query) => {\n const queryable = module.queries.includes(query)\n return supported && queryable\n }, true) || supported\n )\n }, false),\n ),\n )\n : modules) as T[]\n }\n}\n","import { Module, ModuleFilter, ModuleResolver } from '@xyo-network/module-model'\n\nexport interface ModuleResolvedEventArgs {\n filter?: ModuleFilter\n module: Module\n}\n\nexport interface ResolverEventEmitter {\n on(event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void): void\n}\n\ntype ListenerFunction = (args: ModuleResolvedEventArgs) => void\n\nconst getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {\n const listeners: ListenerFunction[] = []\n const emit = (event: 'moduleResolved', args: ModuleResolvedEventArgs): boolean => {\n if (listeners.length === 0) return false\n listeners.map((listener) => listener(args))\n return true\n }\n const onModuleResolved = (module: Module, filter?: ModuleFilter) => {\n const args = { filter, module }\n emit('moduleResolved', args)\n }\n const { resolve } = resolver\n function originalResolve(filter?: ModuleFilter) {\n return resolve.bind(resolver)(filter)\n }\n\n return {\n on: (event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void) => {\n listeners.push(listener)\n },\n resolve: async (filter?: ModuleFilter): Promise<Module[]> => {\n const modules: Module[] = await originalResolve(filter)\n await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)))\n return modules\n },\n }\n}\n\nexport const mixinResolverEventEmitter = <T extends ModuleResolver = ModuleResolver>(resolver: T): T & ResolverEventEmitter => {\n const mixin = getMixin(resolver)\n const ret = Object.assign(resolver, mixin)\n return ret\n}\n"],"mappings":"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","names":["assertEx","exists","Base","duplicateModules","compact","flatten","isAddressModuleFilter","isNameModuleFilter","isQueryModuleFilter","SimpleModuleResolver","addressToName","modules","add","module","Array","isArray","mod","addSingleModule","addResolver","_resolver","remove","address","addr","removeSingleModule","removeResolver","resolve","idOrFilter","options","unfiltered","id","resolveByName","Object","values","pop","resolveByAddress","filter","isAddressModuleFilter","isNameModuleFilter","name","isQueryModuleFilter","resolveByQuery","query","identity","undefined","compact","flatten","map","flatMap","config","reduce","supported","queryList","queryable","queries","includes","moduleIdentifierParts","moduleIdentifier","split","CompositeModuleResolver","Base","defaultMaxDepth","resolvers","localResolver","constructor","params","SimpleModuleResolver","addResolver","moduleIdentifierTransformers","add","module","Array","isArray","mod","addSingleModule","resolver","push","remove","addresses","address","removeSingleModule","removeResolver","filter","item","resolve","idOrFilter","options","mutatedOptions","maxDepth","idParts","length","resolveMultipartIdentifier","id","transformModuleIdentifier","undefined","results","Promise","all","map","result","exists","duplicateModules","pop","flatResult","flat","assertEx","shift","join","identifier","transformer","transform","getMixin","resolver","listeners","emit","event","args","length","map","listener","onModuleResolved","module","filter","resolve","originalResolve","bind","on","push","modules","Promise","allSettled","mod","mixinResolverEventEmitter","mixin","ret","Object","assign"]}
|
|
1
|
+
{"version":3,"sources":["../../src/CompositeModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { Address } from '@xylabs/hex'\nimport { Base, BaseParams } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport {\n CacheConfig,\n duplicateModules,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierPart,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\nimport { LRUCache } from 'lru-cache'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\nimport { ModuleIdentifierTransformer } from './transformers'\n\nexport type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>\n\nexport interface ModuleResolverParams extends BaseParams {\n cache?: CacheConfig\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nconst moduleIdentifierParts = (moduleIdentifier: ModuleIdentifier): ModuleIdentifierPart[] => {\n return moduleIdentifier?.split(':') as ModuleIdentifierPart[]\n}\n\nexport class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolverInstance[] = []\n private _cache: LRUCache<ModuleIdentifier, ModuleInstance>\n private _localResolver: SimpleModuleResolver\n\n constructor({ cache, ...params }: ModuleResolverParams = {}) {\n super(params)\n const localResolver = new SimpleModuleResolver()\n this.addResolver(localResolver)\n const { max = 100, ttl = 1000 * 5 /* five seconds */ } = cache ?? {}\n this._cache = new LRUCache<ModuleIdentifier, ModuleInstance>({ max, ttl, ...cache })\n this._localResolver = localResolver\n }\n\n private get moduleIdentifierTransformers() {\n return this.params.moduleIdentifierTransformers\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolverInstance): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addresses: Address[] | Address): this {\n if (Array.isArray(addresses)) {\n for (const address of addresses) this.removeSingleModule(address)\n } else {\n this.removeSingleModule(addresses)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolverInstance): this {\n this.resolvers = this.resolvers.filter((item) => item !== resolver)\n return this\n }\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth) - 1 }\n\n //resolve all\n if (idOrFilter === '*') {\n const all = idOrFilter\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>(all, mutatedOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter(duplicateModules)\n }\n\n if (typeof idOrFilter === 'string') {\n //resolve ModuleIdentifier\n const idParts = moduleIdentifierParts(idOrFilter)\n if (idParts.length > 1) {\n return await this.resolveMultipartIdentifier<T>(idOrFilter)\n }\n const id = await this.transformModuleIdentifier(idOrFilter)\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const cachedResult = this._cache.get(id)\n if (cachedResult) {\n if (cachedResult.status === 'dead') {\n this._cache.delete(id)\n } else {\n return cachedResult as T\n }\n }\n const results = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T | undefined = await resolver.resolve<T>(id, mutatedOptions)\n return result\n }),\n )\n const result: T | undefined = results.filter(exists).filter(duplicateModules).pop()\n if (result) {\n this._cache.set(id, result)\n }\n return result\n } else {\n //resolve filter\n const filter = idOrFilter\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result = await Promise.all(\n this.resolvers.map(async (resolver) => {\n const result: T[] = await resolver.resolve<T>(filter, mutatedOptions)\n return result\n }),\n )\n const flatResult: T[] = result.flat().filter(exists)\n return flatResult.filter(duplicateModules)\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this._localResolver.add(module)\n }\n }\n private removeSingleModule(address: Address) {\n this._localResolver.remove(address)\n }\n\n private async resolveMultipartIdentifier<T extends ModuleInstance = ModuleInstance>(moduleIdentifier: ModuleIdentifier): Promise<T | undefined> {\n const idParts = moduleIdentifierParts(moduleIdentifier)\n assertEx(idParts.length >= 2, () => 'Not a valid multipart identifier')\n const id = assertEx(idParts.shift())\n const module = await this.resolve(id)\n return await module?.resolve<T>(idParts.join(':'))\n }\n\n private async transformModuleIdentifier(identifier: ModuleIdentifier) {\n let id = identifier\n for (const transformer of this.moduleIdentifierTransformers ?? []) {\n id = await transformer.transform(id)\n }\n return id\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { Address, isAddress } from '@xylabs/hex'\nimport { compact } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport {\n isAddressModuleFilter,\n isModuleName,\n isNameModuleFilter,\n isQueryModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleName,\n ModuleRepository,\n ModuleResolver,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\n\n//This class is now package private (not exported from index.ts)\nexport class SimpleModuleResolver implements ModuleRepository, ModuleResolver {\n private addressToName: Record<Address, ModuleName> = {}\n private modules: Record<Address, ModuleInstance> = {}\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n for (const mod of module) this.addSingleModule(mod)\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolverInstance): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: Address | Address[]): this {\n if (Array.isArray(address)) {\n for (const addr of address) this.removeSingleModule(addr)\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolverInstance): this {\n throw 'Removing resolvers not supported'\n }\n\n resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>\n resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>\n resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>\n resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | string = '*',\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[] | T | undefined> {\n const unfiltered = (() => {\n if (idOrFilter) {\n if (typeof idOrFilter === 'string') {\n if (idOrFilter === '*') {\n return Object.values(this.modules) as T[]\n }\n const id = idOrFilter as ModuleIdentifier\n const name = isModuleName(id) ? id : undefined\n const address = isAddress(id) ? id : undefined\n assertEx(name || address, () => 'module identifier must be a ModuleName or Address')\n return (\n (name ? this.resolveByName<T>(Object.values(this.modules), [name]).pop() : undefined) ??\n (address ? this.resolveByAddress<T>(this.modules, [address]).pop() : undefined)\n )\n } else {\n const filter = idOrFilter\n if (isAddressModuleFilter(filter)) {\n return this.resolveByAddress<T>(this.modules, filter.address)\n } else if (isNameModuleFilter(filter)) {\n return this.resolveByName<T>(Object.values(this.modules), filter.name)\n } else if (isQueryModuleFilter(filter)) {\n return this.resolveByQuery<T>(Object.values(this.modules), filter.query)\n }\n }\n } else {\n return Object.values(this.modules) as T[]\n }\n })()\n const identity = options?.identity\n if (identity) {\n return (\n Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module))\n : identity(unfiltered) ? unfiltered\n : undefined\n )\n } else {\n return unfiltered\n }\n }\n\n private addSingleModule(module?: ModuleInstance) {\n if (module) {\n this.modules[module.address] = module\n }\n }\n\n private removeSingleModule(address: Address) {\n assertEx(isAddress(address), () => 'Invalid address')\n if (address && this.modules[address]) {\n delete this.modules[address]\n const name = this.addressToName[address]\n if (name) {\n delete this.addressToName[address]\n }\n }\n }\n\n private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: Record<Address, ModuleInstance>, address: Address[]): T[] {\n return compact(\n address.map((address) => {\n return modules[address]\n }),\n ) as T[]\n }\n\n private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name: ModuleName[]): T[] {\n return compact(\n name.map((name) => {\n return modules.find((module) => module.config.name === name)\n }),\n ) as T[]\n }\n\n private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query: string[][]): T[] {\n return compact(\n modules.filter((module) =>\n query?.reduce((supported, queryList) => {\n return (\n // eslint-disable-next-line unicorn/no-array-reduce\n queryList.reduce((supported, query) => {\n const queryable = module.queries.includes(query)\n return supported && queryable\n }, true) || supported\n )\n }, false),\n ),\n ) as T[]\n }\n}\n","import { Module, ModuleFilter, ModuleResolver } from '@xyo-network/module-model'\n\nexport interface ModuleResolvedEventArgs {\n filter?: ModuleFilter\n module: Module\n}\n\nexport interface ResolverEventEmitter {\n on(event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void): void\n}\n\ntype ListenerFunction = (args: ModuleResolvedEventArgs) => void\n\nconst getMixin = <T extends ModuleResolver = ModuleResolver>(resolver: T) => {\n const listeners: ListenerFunction[] = []\n const emit = (event: 'moduleResolved', args: ModuleResolvedEventArgs): boolean => {\n if (listeners.length === 0) return false\n listeners.map((listener) => listener(args))\n return true\n }\n const onModuleResolved = (module: Module, filter?: ModuleFilter) => {\n const args = { filter, module }\n emit('moduleResolved', args)\n }\n // eslint-disable-next-line deprecation/deprecation\n const { resolve } = resolver\n function originalResolve(filter?: ModuleFilter) {\n return resolve.bind(resolver)(filter)\n }\n\n return {\n on: (event: 'moduleResolved', listener: (args: ModuleResolvedEventArgs) => void) => {\n listeners.push(listener)\n },\n resolve: async (filter?: ModuleFilter): Promise<Module[]> => {\n const modules: Module[] = await originalResolve(filter)\n await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)))\n return modules\n },\n }\n}\n\nexport const mixinResolverEventEmitter = <T extends ModuleResolver = ModuleResolver>(resolver: T): T & ResolverEventEmitter => {\n const mixin = getMixin(resolver)\n const ret = Object.assign(resolver, mixin)\n return ret\n}\n"],"mappings":"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","names":["assertEx","exists","Base","duplicateModules","LRUCache","assertEx","isAddress","compact","isAddressModuleFilter","isModuleName","isNameModuleFilter","isQueryModuleFilter","SimpleModuleResolver","addressToName","modules","add","module","Array","isArray","mod","addSingleModule","addResolver","_resolver","remove","address","addr","removeSingleModule","removeResolver","resolve","idOrFilter","options","unfiltered","Object","values","id","name","isModuleName","undefined","isAddress","assertEx","resolveByName","pop","resolveByAddress","filter","isAddressModuleFilter","isNameModuleFilter","isQueryModuleFilter","resolveByQuery","query","identity","compact","map","find","config","reduce","supported","queryList","queryable","queries","includes","moduleIdentifierParts","moduleIdentifier","split","CompositeModuleResolver","Base","defaultMaxDepth","resolvers","_cache","_localResolver","constructor","cache","params","localResolver","SimpleModuleResolver","addResolver","max","ttl","LRUCache","moduleIdentifierTransformers","add","module","Array","isArray","mod","addSingleModule","resolver","push","remove","addresses","address","removeSingleModule","removeResolver","filter","item","resolve","idOrFilter","options","mutatedOptions","maxDepth","all","result","Promise","map","flatResult","flat","exists","duplicateModules","idParts","length","resolveMultipartIdentifier","id","transformModuleIdentifier","undefined","cachedResult","get","status","delete","results","pop","set","assertEx","shift","join","identifier","transformer","transform","getMixin","resolver","listeners","emit","event","args","length","map","listener","onModuleResolved","module","filter","resolve","originalResolve","bind","on","push","modules","Promise","allSettled","mod","mixinResolverEventEmitter","mixin","ret","Object","assign"]}
|
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Base, BaseParams } from '@xylabs/object';
|
|
3
3
|
import { Promisable } from '@xylabs/promise';
|
|
4
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
+
import { CacheConfig, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
5
5
|
import { ModuleIdentifierTransformer } from './transformers';
|
|
6
6
|
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
7
7
|
export interface ModuleResolverParams extends BaseParams {
|
|
8
|
+
cache?: CacheConfig;
|
|
8
9
|
moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
|
|
9
10
|
}
|
|
10
11
|
export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
|
|
11
12
|
static defaultMaxDepth: number;
|
|
12
13
|
protected resolvers: ModuleResolverInstance[];
|
|
13
|
-
private
|
|
14
|
-
|
|
14
|
+
private _cache;
|
|
15
|
+
private _localResolver;
|
|
16
|
+
constructor({ cache, ...params }?: ModuleResolverParams);
|
|
15
17
|
private get moduleIdentifierTransformers();
|
|
16
18
|
add(module: ModuleInstance): this;
|
|
17
19
|
add(module: ModuleInstance[]): this;
|
|
18
20
|
addResolver(resolver: ModuleResolverInstance): this;
|
|
19
21
|
remove(addresses: Address[] | Address): this;
|
|
20
22
|
removeResolver(resolver: ModuleResolverInstance): this;
|
|
21
|
-
|
|
23
|
+
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
+
resolve(): Promise<ModuleInstance[]>;
|
|
25
|
+
resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
26
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
22
27
|
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
|
|
28
|
+
/** @deprecated use '*' if trying to resolve all */
|
|
29
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
23
30
|
private addSingleModule;
|
|
24
31
|
private removeSingleModule;
|
|
25
32
|
private resolveMultipartIdentifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,IAAI,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IACzH,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAItD,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAqElI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
|
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Base, BaseParams } from '@xylabs/object';
|
|
3
3
|
import { Promisable } from '@xylabs/promise';
|
|
4
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
+
import { CacheConfig, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
5
5
|
import { ModuleIdentifierTransformer } from './transformers';
|
|
6
6
|
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
7
7
|
export interface ModuleResolverParams extends BaseParams {
|
|
8
|
+
cache?: CacheConfig;
|
|
8
9
|
moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
|
|
9
10
|
}
|
|
10
11
|
export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
|
|
11
12
|
static defaultMaxDepth: number;
|
|
12
13
|
protected resolvers: ModuleResolverInstance[];
|
|
13
|
-
private
|
|
14
|
-
|
|
14
|
+
private _cache;
|
|
15
|
+
private _localResolver;
|
|
16
|
+
constructor({ cache, ...params }?: ModuleResolverParams);
|
|
15
17
|
private get moduleIdentifierTransformers();
|
|
16
18
|
add(module: ModuleInstance): this;
|
|
17
19
|
add(module: ModuleInstance[]): this;
|
|
18
20
|
addResolver(resolver: ModuleResolverInstance): this;
|
|
19
21
|
remove(addresses: Address[] | Address): this;
|
|
20
22
|
removeResolver(resolver: ModuleResolverInstance): this;
|
|
21
|
-
|
|
23
|
+
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
+
resolve(): Promise<ModuleInstance[]>;
|
|
25
|
+
resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
26
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
22
27
|
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
|
|
28
|
+
/** @deprecated use '*' if trying to resolve all */
|
|
29
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
23
30
|
private addSingleModule;
|
|
24
31
|
private removeSingleModule;
|
|
25
32
|
private resolveMultipartIdentifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,IAAI,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IACzH,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAItD,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAqElI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
|
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Base, BaseParams } from '@xylabs/object';
|
|
3
3
|
import { Promisable } from '@xylabs/promise';
|
|
4
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
+
import { CacheConfig, ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
5
5
|
import { ModuleIdentifierTransformer } from './transformers';
|
|
6
6
|
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
7
7
|
export interface ModuleResolverParams extends BaseParams {
|
|
8
|
+
cache?: CacheConfig;
|
|
8
9
|
moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
|
|
9
10
|
}
|
|
10
11
|
export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
|
|
11
12
|
static defaultMaxDepth: number;
|
|
12
13
|
protected resolvers: ModuleResolverInstance[];
|
|
13
|
-
private
|
|
14
|
-
|
|
14
|
+
private _cache;
|
|
15
|
+
private _localResolver;
|
|
16
|
+
constructor({ cache, ...params }?: ModuleResolverParams);
|
|
15
17
|
private get moduleIdentifierTransformers();
|
|
16
18
|
add(module: ModuleInstance): this;
|
|
17
19
|
add(module: ModuleInstance[]): this;
|
|
18
20
|
addResolver(resolver: ModuleResolverInstance): this;
|
|
19
21
|
remove(addresses: Address[] | Address): this;
|
|
20
22
|
removeResolver(resolver: ModuleResolverInstance): this;
|
|
21
|
-
|
|
23
|
+
/** @deprecated do not pass undefined. If trying to get all, pass '*' */
|
|
24
|
+
resolve(): Promise<ModuleInstance[]>;
|
|
25
|
+
resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
26
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
22
27
|
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
|
|
28
|
+
/** @deprecated use '*' if trying to resolve all */
|
|
29
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
23
30
|
private addSingleModule;
|
|
24
31
|
private removeSingleModule;
|
|
25
32
|
private resolveMultipartIdentifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EACL,WAAW,EAEX,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAIlC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,KAAK,CAAC,EAAE,WAAW,CAAA;IACnB,4BAA4B,CAAC,EAAE,2BAA2B,EAAE,CAAA;CAC7D;AAMD,qBAAa,uBAAwB,SAAQ,IAAI,CAAC,oBAAoB,CAAE,YAAW,gBAAgB,EAAE,sBAAsB;IACzH,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,sBAAsB,EAAE,CAAK;IAClD,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,cAAc,CAAsB;gBAEhC,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,GAAE,oBAAyB;IAS3D,OAAO,KAAK,4BAA4B,GAEvC;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAKnD,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI;IAS5C,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAItD,yEAAyE;IACnE,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IACpC,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC3H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IACxI,mDAAmD;IAC7C,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAqElI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolverEventEmitter.d.ts","sourceRoot":"","sources":["../../src/ResolverEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEhF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAA;CACrF;
|
|
1
|
+
{"version":3,"file":"ResolverEventEmitter.d.ts","sourceRoot":"","sources":["../../src/ResolverEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEhF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAA;CACrF;AAiCD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;4EAAyD,CAAC,KAAG,CAAC,GAAG,oBAItG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolverEventEmitter.d.ts","sourceRoot":"","sources":["../../src/ResolverEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEhF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAA;CACrF;
|
|
1
|
+
{"version":3,"file":"ResolverEventEmitter.d.ts","sourceRoot":"","sources":["../../src/ResolverEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEhF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAA;CACrF;AAiCD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;4EAAyD,CAAC,KAAG,CAAC,GAAG,oBAItG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResolverEventEmitter.d.ts","sourceRoot":"","sources":["../../src/ResolverEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEhF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAA;CACrF;
|
|
1
|
+
{"version":3,"file":"ResolverEventEmitter.d.ts","sourceRoot":"","sources":["../../src/ResolverEventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAEhF,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAA;CACrF;AAiCD,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;4EAAyD,CAAC,KAAG,CAAC,GAAG,oBAItG,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Promisable } from '@xylabs/promise';
|
|
3
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
-
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
3
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolver, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
+
export declare class SimpleModuleResolver implements ModuleRepository, ModuleResolver {
|
|
5
5
|
private addressToName;
|
|
6
6
|
private modules;
|
|
7
7
|
add(module: ModuleInstance): this;
|
|
@@ -9,8 +9,11 @@ export declare class SimpleModuleResolver implements ModuleRepository {
|
|
|
9
9
|
addResolver(_resolver: ModuleResolverInstance): this;
|
|
10
10
|
remove(address: Address | Address[]): this;
|
|
11
11
|
removeResolver(_resolver: ModuleResolverInstance): this;
|
|
12
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
12
|
+
resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
14
|
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
15
|
+
/** @deprecated use '*' if trying to resolve all */
|
|
16
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
14
17
|
private addSingleModule;
|
|
15
18
|
private removeSingleModule;
|
|
16
19
|
private resolveByAddress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB,EAAE,cAAc;IAC3E,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;IAErD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IACrI,mDAAmD;IACnD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IA6C/H,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Promisable } from '@xylabs/promise';
|
|
3
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
-
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
3
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolver, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
+
export declare class SimpleModuleResolver implements ModuleRepository, ModuleResolver {
|
|
5
5
|
private addressToName;
|
|
6
6
|
private modules;
|
|
7
7
|
add(module: ModuleInstance): this;
|
|
@@ -9,8 +9,11 @@ export declare class SimpleModuleResolver implements ModuleRepository {
|
|
|
9
9
|
addResolver(_resolver: ModuleResolverInstance): this;
|
|
10
10
|
remove(address: Address | Address[]): this;
|
|
11
11
|
removeResolver(_resolver: ModuleResolverInstance): this;
|
|
12
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
12
|
+
resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
14
|
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
15
|
+
/** @deprecated use '*' if trying to resolve all */
|
|
16
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
14
17
|
private addSingleModule;
|
|
15
18
|
private removeSingleModule;
|
|
16
19
|
private resolveByAddress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB,EAAE,cAAc;IAC3E,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;IAErD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IACrI,mDAAmD;IACnD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IA6C/H,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address } from '@xylabs/hex';
|
|
2
2
|
import { Promisable } from '@xylabs/promise';
|
|
3
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
-
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
3
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolver, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
4
|
+
export declare class SimpleModuleResolver implements ModuleRepository, ModuleResolver {
|
|
5
5
|
private addressToName;
|
|
6
6
|
private modules;
|
|
7
7
|
add(module: ModuleInstance): this;
|
|
@@ -9,8 +9,11 @@ export declare class SimpleModuleResolver implements ModuleRepository {
|
|
|
9
9
|
addResolver(_resolver: ModuleResolverInstance): this;
|
|
10
10
|
remove(address: Address | Address[]): this;
|
|
11
11
|
removeResolver(_resolver: ModuleResolverInstance): this;
|
|
12
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
12
|
+
resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
14
|
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
15
|
+
/** @deprecated use '*' if trying to resolve all */
|
|
16
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
14
17
|
private addSingleModule;
|
|
15
18
|
private removeSingleModule;
|
|
16
19
|
private resolveByAddress;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAa,MAAM,aAAa,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAKL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EAEd,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB,EAAE,cAAc;IAC3E,OAAO,CAAC,aAAa,CAAkC;IACvD,OAAO,CAAC,OAAO,CAAsC;IAErD,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAS1C,cAAc,CAAC,SAAS,EAAE,sBAAsB,GAAG,IAAI;IAIvD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/G,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC9H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,EAAE,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IACrI,mDAAmD;IACnD,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IA6C/H,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,cAAc;CAevB"}
|