@xyo-network/module-resolver 2.90.22 → 2.91.0
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 +15 -5
- package/dist/browser/CompositeModuleResolver.d.cts.map +1 -1
- package/dist/browser/CompositeModuleResolver.d.mts +15 -5
- package/dist/browser/CompositeModuleResolver.d.mts.map +1 -1
- package/dist/browser/CompositeModuleResolver.d.ts +15 -5
- package/dist/browser/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.cts +4 -3
- package/dist/browser/SimpleModuleResolver.d.cts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.mts +4 -3
- package/dist/browser/SimpleModuleResolver.d.mts.map +1 -1
- package/dist/browser/SimpleModuleResolver.d.ts +4 -3
- package/dist/browser/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/browser/index.cjs +56 -25
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +0 -1
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +0 -1
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +0 -1
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +53 -22
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/transformers/Xns.d.cts +3 -0
- package/dist/browser/transformers/Xns.d.cts.map +1 -0
- package/dist/browser/transformers/Xns.d.mts +3 -0
- package/dist/browser/transformers/Xns.d.mts.map +1 -0
- package/dist/browser/transformers/Xns.d.ts +3 -0
- package/dist/browser/transformers/Xns.d.ts.map +1 -0
- package/dist/browser/transformers/index.d.cts +3 -0
- package/dist/browser/transformers/index.d.cts.map +1 -0
- package/dist/browser/transformers/index.d.mts +3 -0
- package/dist/browser/transformers/index.d.mts.map +1 -0
- package/dist/browser/transformers/index.d.ts +3 -0
- package/dist/browser/transformers/index.d.ts.map +1 -0
- package/dist/browser/transformers/model.d.cts +7 -0
- package/dist/browser/transformers/model.d.cts.map +1 -0
- package/dist/browser/transformers/model.d.mts +7 -0
- package/dist/browser/transformers/model.d.mts.map +1 -0
- package/dist/browser/transformers/model.d.ts +7 -0
- package/dist/browser/transformers/model.d.ts.map +1 -0
- package/dist/node/CompositeModuleResolver.d.cts +15 -5
- package/dist/node/CompositeModuleResolver.d.cts.map +1 -1
- package/dist/node/CompositeModuleResolver.d.mts +15 -5
- package/dist/node/CompositeModuleResolver.d.mts.map +1 -1
- package/dist/node/CompositeModuleResolver.d.ts +15 -5
- package/dist/node/CompositeModuleResolver.d.ts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.cts +4 -3
- package/dist/node/SimpleModuleResolver.d.cts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.mts +4 -3
- package/dist/node/SimpleModuleResolver.d.mts.map +1 -1
- package/dist/node/SimpleModuleResolver.d.ts +4 -3
- package/dist/node/SimpleModuleResolver.d.ts.map +1 -1
- package/dist/node/index.cjs +56 -26
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +0 -1
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +0 -1
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +0 -1
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +53 -22
- package/dist/node/index.js.map +1 -1
- package/dist/node/transformers/Xns.d.cts +3 -0
- package/dist/node/transformers/Xns.d.cts.map +1 -0
- package/dist/node/transformers/Xns.d.mts +3 -0
- package/dist/node/transformers/Xns.d.mts.map +1 -0
- package/dist/node/transformers/Xns.d.ts +3 -0
- package/dist/node/transformers/Xns.d.ts.map +1 -0
- package/dist/node/transformers/index.d.cts +3 -0
- package/dist/node/transformers/index.d.cts.map +1 -0
- package/dist/node/transformers/index.d.mts +3 -0
- package/dist/node/transformers/index.d.mts.map +1 -0
- package/dist/node/transformers/index.d.ts +3 -0
- package/dist/node/transformers/index.d.ts.map +1 -0
- package/dist/node/transformers/model.d.cts +7 -0
- package/dist/node/transformers/model.d.cts.map +1 -0
- package/dist/node/transformers/model.d.mts +7 -0
- package/dist/node/transformers/model.d.mts.map +1 -0
- package/dist/node/transformers/model.d.ts +7 -0
- package/dist/node/transformers/model.d.ts.map +1 -0
- package/package.json +10 -8
- package/src/CompositeModuleResolver.ts +55 -13
- package/src/SimpleModuleResolver.ts +51 -46
- package/src/index.ts +0 -1
- package/src/transformers/Xns.ts +5 -0
- package/src/transformers/index.ts +2 -0
- package/src/transformers/model.ts +8 -0
package/dist/browser/index.js
CHANGED
|
@@ -2,12 +2,14 @@ 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
6
|
import { exists } from "@xylabs/exists";
|
|
6
7
|
import { Base } from "@xylabs/object";
|
|
7
8
|
import { duplicateModules } from "@xyo-network/module-model";
|
|
8
9
|
|
|
9
10
|
// src/SimpleModuleResolver.ts
|
|
10
11
|
import { compact, flatten } from "@xylabs/lodash";
|
|
12
|
+
import { isAddressModuleFilter, isNameModuleFilter, isQueryModuleFilter } from "@xyo-network/module-model";
|
|
11
13
|
var SimpleModuleResolver = class {
|
|
12
14
|
static {
|
|
13
15
|
__name(this, "SimpleModuleResolver");
|
|
@@ -38,21 +40,25 @@ var SimpleModuleResolver = class {
|
|
|
38
40
|
removeResolver(_resolver) {
|
|
39
41
|
throw "Removing resolvers not supported";
|
|
40
42
|
}
|
|
41
|
-
resolve(
|
|
43
|
+
resolve(idOrFilter, options) {
|
|
42
44
|
const unfiltered = (() => {
|
|
43
|
-
if (
|
|
44
|
-
if (typeof
|
|
45
|
+
if (idOrFilter) {
|
|
46
|
+
if (typeof idOrFilter === "string") {
|
|
47
|
+
const id = idOrFilter;
|
|
45
48
|
return this.resolveByName(Object.values(this.modules), [
|
|
46
|
-
|
|
49
|
+
id
|
|
47
50
|
]).pop() ?? this.resolveByAddress(Object.values(this.modules), [
|
|
48
|
-
|
|
51
|
+
id
|
|
49
52
|
]).pop();
|
|
50
|
-
} else
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
} else {
|
|
54
|
+
const filter = idOrFilter;
|
|
55
|
+
if (isAddressModuleFilter(filter)) {
|
|
56
|
+
return this.resolveByAddress(Object.values(this.modules), filter.address);
|
|
57
|
+
} else if (isNameModuleFilter(filter)) {
|
|
58
|
+
return this.resolveByName(Object.values(this.modules), filter.name);
|
|
59
|
+
} else if (isQueryModuleFilter(filter)) {
|
|
60
|
+
return this.resolveByQuery(Object.values(this.modules), filter.query);
|
|
61
|
+
}
|
|
56
62
|
}
|
|
57
63
|
} else {
|
|
58
64
|
return Object.values(this.modules);
|
|
@@ -104,6 +110,9 @@ var SimpleModuleResolver = class {
|
|
|
104
110
|
};
|
|
105
111
|
|
|
106
112
|
// src/CompositeModuleResolver.ts
|
|
113
|
+
var moduleIdentifierParts = /* @__PURE__ */ __name((moduleIdentifier) => {
|
|
114
|
+
return moduleIdentifier?.split(":");
|
|
115
|
+
}, "moduleIdentifierParts");
|
|
107
116
|
var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
108
117
|
static {
|
|
109
118
|
__name(this, "CompositeModuleResolver");
|
|
@@ -117,6 +126,9 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
117
126
|
this.addResolver(localResolver);
|
|
118
127
|
this.localResolver = localResolver;
|
|
119
128
|
}
|
|
129
|
+
get moduleIdentifierTransformers() {
|
|
130
|
+
return this.params.moduleIdentifierTransformers;
|
|
131
|
+
}
|
|
120
132
|
add(module) {
|
|
121
133
|
if (Array.isArray(module)) {
|
|
122
134
|
for (const mod of module)
|
|
@@ -130,12 +142,12 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
130
142
|
this.resolvers.push(resolver);
|
|
131
143
|
return this;
|
|
132
144
|
}
|
|
133
|
-
remove(
|
|
134
|
-
if (Array.isArray(
|
|
135
|
-
for (const address of
|
|
145
|
+
remove(addresses) {
|
|
146
|
+
if (Array.isArray(addresses)) {
|
|
147
|
+
for (const address of addresses)
|
|
136
148
|
this.removeSingleModule(address);
|
|
137
149
|
} else {
|
|
138
|
-
this.removeSingleModule(
|
|
150
|
+
this.removeSingleModule(addresses);
|
|
139
151
|
}
|
|
140
152
|
return this;
|
|
141
153
|
}
|
|
@@ -143,27 +155,33 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
143
155
|
this.resolvers = this.resolvers.filter((item) => item !== resolver);
|
|
144
156
|
return this;
|
|
145
157
|
}
|
|
146
|
-
async resolve(
|
|
158
|
+
async resolve(idOrFilter, options) {
|
|
147
159
|
const mutatedOptions = {
|
|
148
160
|
...options,
|
|
149
161
|
maxDepth: (options?.maxDepth ?? _CompositeModuleResolver.defaultMaxDepth) - 1
|
|
150
162
|
};
|
|
151
|
-
if (typeof
|
|
163
|
+
if (typeof idOrFilter === "string") {
|
|
164
|
+
const idParts = moduleIdentifierParts(idOrFilter);
|
|
165
|
+
if (idParts.length > 1) {
|
|
166
|
+
return await this.resolveMultipartIdentifier(idOrFilter);
|
|
167
|
+
}
|
|
168
|
+
const id = await this.transformModuleIdentifier(idOrFilter);
|
|
152
169
|
if (mutatedOptions.maxDepth < 0) {
|
|
153
170
|
return void 0;
|
|
154
171
|
}
|
|
155
172
|
const results = await Promise.all(this.resolvers.map(async (resolver) => {
|
|
156
|
-
const result2 = await resolver.resolve(
|
|
173
|
+
const result2 = await resolver.resolve(id, mutatedOptions);
|
|
157
174
|
return result2;
|
|
158
175
|
}));
|
|
159
176
|
const result = results.filter(exists).filter(duplicateModules).pop();
|
|
160
177
|
return result;
|
|
161
178
|
} else {
|
|
179
|
+
const filter = idOrFilter;
|
|
162
180
|
if (mutatedOptions.maxDepth < 0) {
|
|
163
181
|
return [];
|
|
164
182
|
}
|
|
165
183
|
const result = await Promise.all(this.resolvers.map(async (resolver) => {
|
|
166
|
-
const result2 = await resolver.resolve(
|
|
184
|
+
const result2 = await resolver.resolve(filter, mutatedOptions);
|
|
167
185
|
return result2;
|
|
168
186
|
}));
|
|
169
187
|
const flatResult = result.flat().filter(exists);
|
|
@@ -175,8 +193,22 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
175
193
|
this.localResolver.add(module);
|
|
176
194
|
}
|
|
177
195
|
}
|
|
178
|
-
removeSingleModule(
|
|
179
|
-
this.localResolver.remove(
|
|
196
|
+
removeSingleModule(address) {
|
|
197
|
+
this.localResolver.remove(address);
|
|
198
|
+
}
|
|
199
|
+
async resolveMultipartIdentifier(moduleIdentifier) {
|
|
200
|
+
const idParts = moduleIdentifierParts(moduleIdentifier);
|
|
201
|
+
assertEx(idParts.length >= 2, "Not a valid multipart identifier");
|
|
202
|
+
const id = assertEx(idParts.shift());
|
|
203
|
+
const module = await this.resolve(id);
|
|
204
|
+
return await module?.resolve(idParts.join(":"));
|
|
205
|
+
}
|
|
206
|
+
async transformModuleIdentifier(identifier) {
|
|
207
|
+
let id = identifier;
|
|
208
|
+
for (const transformer of this.moduleIdentifierTransformers ?? []) {
|
|
209
|
+
id = await transformer.transform(id);
|
|
210
|
+
}
|
|
211
|
+
return id;
|
|
180
212
|
}
|
|
181
213
|
};
|
|
182
214
|
|
|
@@ -219,7 +251,6 @@ var mixinResolverEventEmitter = /* @__PURE__ */ __name((resolver) => {
|
|
|
219
251
|
}, "mixinResolverEventEmitter");
|
|
220
252
|
export {
|
|
221
253
|
CompositeModuleResolver,
|
|
222
|
-
SimpleModuleResolver,
|
|
223
254
|
mixinResolverEventEmitter
|
|
224
255
|
};
|
|
225
256
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/CompositeModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Base, BaseParams } from '@xylabs/object'\nimport {\n duplicateModules,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\n\nexport class CompositeModuleResolver extends Base implements ModuleRepository, ModuleResolverInstance {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolverInstance[] = []\n private localResolver: SimpleModuleResolver\n\n constructor(params: BaseParams = {}) {\n super(params)\n const localResolver = new SimpleModuleResolver()\n this.addResolver(localResolver)\n this.localResolver = localResolver\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(addressOrName: string | string[]): this {\n if (Array.isArray(addressOrName)) {\n for (const address of addressOrName) this.removeSingleModule(address)\n } else {\n this.removeSingleModule(addressOrName)\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>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? CompositeModuleResolver.defaultMaxDepth) - 1 }\n if (typeof nameOrAddressOrFilter === 'string') {\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>(nameOrAddressOrFilter, mutatedOptions)\n return result\n }),\n )\n const result: T | undefined = results.filter(exists).filter(duplicateModules).pop()\n return result\n } else {\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>(nameOrAddressOrFilter, 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(addressOrName: string) {\n this.localResolver.remove(addressOrName)\n }\n}\n","import { compact, flatten } from '@xylabs/lodash'\nimport { Promisable } from '@xylabs/promise'\nimport {\n AddressModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleRepository,\n ModuleResolverInstance,\n NameModuleFilter,\n QueryModuleFilter,\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: string | string[]): 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>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promisable<T | undefined>\n resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promisable<T[] | T | undefined> {\n const unfiltered = (() => {\n if (nameOrAddressOrFilter) {\n if (typeof nameOrAddressOrFilter === 'string') {\n return (\n this.resolveByName<T>(Object.values(this.modules), [nameOrAddressOrFilter]).pop() ??\n this.resolveByAddress<T>(Object.values(this.modules), [nameOrAddressOrFilter]).pop()\n )\n } else if ((nameOrAddressOrFilter as AddressModuleFilter).address) {\n return this.resolveByAddress<T>(Object.values(this.modules), (nameOrAddressOrFilter as AddressModuleFilter).address)\n } else if ((nameOrAddressOrFilter as NameModuleFilter).name) {\n return this.resolveByName<T>(Object.values(this.modules), (nameOrAddressOrFilter as NameModuleFilter).name)\n } else if ((nameOrAddressOrFilter as QueryModuleFilter).query) {\n return this.resolveByQuery<T>(Object.values(this.modules), (nameOrAddressOrFilter as QueryModuleFilter).query)\n }\n } else {\n return Object.values(this.modules) as T[]\n }\n })()\n const identity = options?.identity\n if (identity) {\n return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined\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: string) {\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\n ) 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\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 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":["exists","Base","duplicateModules","compact","flatten","SimpleModuleResolver","addressToName","modules","add","module","Array","isArray","mod","addSingleModule","addResolver","_resolver","remove","address","addr","removeSingleModule","removeResolver","resolve","nameOrAddressOrFilter","options","unfiltered","resolveByName","Object","values","pop","resolveByAddress","name","query","resolveByQuery","identity","filter","undefined","compact","flatten","map","flatMap","config","reduce","supported","queryList","queryable","queries","includes","CompositeModuleResolver","Base","defaultMaxDepth","resolvers","localResolver","constructor","params","SimpleModuleResolver","addResolver","add","module","Array","isArray","mod","addSingleModule","resolver","push","remove","addressOrName","address","removeSingleModule","removeResolver","filter","item","resolve","nameOrAddressOrFilter","options","mutatedOptions","maxDepth","undefined","results","Promise","all","map","result","exists","duplicateModules","pop","flatResult","flat","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 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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Xns.d.ts","sourceRoot":"","sources":["../../../src/transformers/Xns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,eAAO,MAAM,8BAA8B,OAAQ,gBAAgB,WAElE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Xns.d.ts","sourceRoot":"","sources":["../../../src/transformers/Xns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,eAAO,MAAM,8BAA8B,OAAQ,gBAAgB,WAElE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Xns.d.ts","sourceRoot":"","sources":["../../../src/transformers/Xns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,eAAO,MAAM,8BAA8B,OAAQ,gBAAgB,WAElE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transformers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transformers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/transformers/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,OAAO,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
|
+
import { ModuleIdentifier } from '@xyo-network/module-model';
|
|
3
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
4
|
+
export interface ModuleIdentifierTransformer {
|
|
5
|
+
transform: ModuleIdentifierTransformerFunc;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/transformers/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,+BAA+B,CAAA;CAC3C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
|
+
import { ModuleIdentifier } from '@xyo-network/module-model';
|
|
3
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
4
|
+
export interface ModuleIdentifierTransformer {
|
|
5
|
+
transform: ModuleIdentifierTransformerFunc;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/transformers/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,+BAA+B,CAAA;CAC3C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Promisable } from '@xylabs/promise';
|
|
2
|
+
import { ModuleIdentifier } from '@xyo-network/module-model';
|
|
3
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
4
|
+
export interface ModuleIdentifierTransformer {
|
|
5
|
+
transform: ModuleIdentifierTransformerFunc;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/transformers/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAE5D,MAAM,MAAM,+BAA+B,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAEpG,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,+BAA+B,CAAA;CAC3C"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Base, BaseParams } from '@xylabs/object';
|
|
2
|
-
import {
|
|
3
|
-
|
|
3
|
+
import { Promisable } from '@xylabs/promise';
|
|
4
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
5
|
+
import { ModuleIdentifierTransformer } from './transformers';
|
|
6
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
7
|
+
export interface ModuleResolverParams extends BaseParams {
|
|
8
|
+
moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
|
|
9
|
+
}
|
|
10
|
+
export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
|
|
4
11
|
static defaultMaxDepth: number;
|
|
5
12
|
protected resolvers: ModuleResolverInstance[];
|
|
6
13
|
private localResolver;
|
|
7
|
-
constructor(params?:
|
|
14
|
+
constructor(params?: ModuleResolverParams);
|
|
15
|
+
private get moduleIdentifierTransformers();
|
|
8
16
|
add(module: ModuleInstance): this;
|
|
9
17
|
add(module: ModuleInstance[]): this;
|
|
10
18
|
addResolver(resolver: ModuleResolverInstance): this;
|
|
11
|
-
remove(
|
|
19
|
+
remove(addresses: Address[] | Address): this;
|
|
12
20
|
removeResolver(resolver: ModuleResolverInstance): this;
|
|
13
21
|
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
14
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
22
|
+
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
|
|
15
23
|
private addSingleModule;
|
|
16
24
|
private removeSingleModule;
|
|
25
|
+
private resolveMultipartIdentifier;
|
|
26
|
+
private transformModuleIdentifier;
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=CompositeModuleResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"
|
|
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,EAEL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,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,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,aAAa,CAAsB;gBAE/B,MAAM,GAAE,oBAAyB;IAO7C,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;IAKhD,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;IAC5H,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;IAuCxI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Base, BaseParams } from '@xylabs/object';
|
|
2
|
-
import {
|
|
3
|
-
|
|
3
|
+
import { Promisable } from '@xylabs/promise';
|
|
4
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
5
|
+
import { ModuleIdentifierTransformer } from './transformers';
|
|
6
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
7
|
+
export interface ModuleResolverParams extends BaseParams {
|
|
8
|
+
moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
|
|
9
|
+
}
|
|
10
|
+
export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
|
|
4
11
|
static defaultMaxDepth: number;
|
|
5
12
|
protected resolvers: ModuleResolverInstance[];
|
|
6
13
|
private localResolver;
|
|
7
|
-
constructor(params?:
|
|
14
|
+
constructor(params?: ModuleResolverParams);
|
|
15
|
+
private get moduleIdentifierTransformers();
|
|
8
16
|
add(module: ModuleInstance): this;
|
|
9
17
|
add(module: ModuleInstance[]): this;
|
|
10
18
|
addResolver(resolver: ModuleResolverInstance): this;
|
|
11
|
-
remove(
|
|
19
|
+
remove(addresses: Address[] | Address): this;
|
|
12
20
|
removeResolver(resolver: ModuleResolverInstance): this;
|
|
13
21
|
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
14
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
22
|
+
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
|
|
15
23
|
private addSingleModule;
|
|
16
24
|
private removeSingleModule;
|
|
25
|
+
private resolveMultipartIdentifier;
|
|
26
|
+
private transformModuleIdentifier;
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=CompositeModuleResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"
|
|
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,EAEL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,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,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,aAAa,CAAsB;gBAE/B,MAAM,GAAE,oBAAyB;IAO7C,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;IAKhD,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;IAC5H,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;IAuCxI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
|
|
@@ -1,18 +1,28 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Base, BaseParams } from '@xylabs/object';
|
|
2
|
-
import {
|
|
3
|
-
|
|
3
|
+
import { Promisable } from '@xylabs/promise';
|
|
4
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
5
|
+
import { ModuleIdentifierTransformer } from './transformers';
|
|
6
|
+
export type ModuleIdentifierTransformerFunc = (id: ModuleIdentifier) => Promisable<ModuleIdentifier>;
|
|
7
|
+
export interface ModuleResolverParams extends BaseParams {
|
|
8
|
+
moduleIdentifierTransformers?: ModuleIdentifierTransformer[];
|
|
9
|
+
}
|
|
10
|
+
export declare class CompositeModuleResolver extends Base<ModuleResolverParams> implements ModuleRepository, ModuleResolverInstance {
|
|
4
11
|
static defaultMaxDepth: number;
|
|
5
12
|
protected resolvers: ModuleResolverInstance[];
|
|
6
13
|
private localResolver;
|
|
7
|
-
constructor(params?:
|
|
14
|
+
constructor(params?: ModuleResolverParams);
|
|
15
|
+
private get moduleIdentifierTransformers();
|
|
8
16
|
add(module: ModuleInstance): this;
|
|
9
17
|
add(module: ModuleInstance[]): this;
|
|
10
18
|
addResolver(resolver: ModuleResolverInstance): this;
|
|
11
|
-
remove(
|
|
19
|
+
remove(addresses: Address[] | Address): this;
|
|
12
20
|
removeResolver(resolver: ModuleResolverInstance): this;
|
|
13
21
|
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>;
|
|
14
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
22
|
+
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>;
|
|
15
23
|
private addSingleModule;
|
|
16
24
|
private removeSingleModule;
|
|
25
|
+
private resolveMultipartIdentifier;
|
|
26
|
+
private transformModuleIdentifier;
|
|
17
27
|
}
|
|
18
28
|
//# sourceMappingURL=CompositeModuleResolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../../src/CompositeModuleResolver.ts"],"names":[],"mappings":"
|
|
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,EAEL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAEhB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,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,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,aAAa,CAAsB;gBAE/B,MAAM,GAAE,oBAAyB;IAO7C,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;IAKhD,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;IAC5H,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;IAuCxI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;YAIZ,0BAA0B;YAQ1B,yBAAyB;CAOxC"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Promisable } from '@xylabs/promise';
|
|
2
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
3
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
3
4
|
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
4
5
|
private addressToName;
|
|
5
6
|
private modules;
|
|
6
7
|
add(module: ModuleInstance): this;
|
|
7
8
|
add(module: ModuleInstance[]): this;
|
|
8
9
|
addResolver(_resolver: ModuleResolverInstance): this;
|
|
9
|
-
remove(address:
|
|
10
|
+
remove(address: Address | Address[]): this;
|
|
10
11
|
removeResolver(_resolver: ModuleResolverInstance): this;
|
|
11
12
|
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
12
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
13
14
|
private addSingleModule;
|
|
14
15
|
private removeSingleModule;
|
|
15
16
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAIL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,OAAO,CAAqC;IAEpD,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,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/H,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;IAoCrI,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;CAkBvB"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Promisable } from '@xylabs/promise';
|
|
2
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
3
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
3
4
|
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
4
5
|
private addressToName;
|
|
5
6
|
private modules;
|
|
6
7
|
add(module: ModuleInstance): this;
|
|
7
8
|
add(module: ModuleInstance[]): this;
|
|
8
9
|
addResolver(_resolver: ModuleResolverInstance): this;
|
|
9
|
-
remove(address:
|
|
10
|
+
remove(address: Address | Address[]): this;
|
|
10
11
|
removeResolver(_resolver: ModuleResolverInstance): this;
|
|
11
12
|
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
12
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
13
14
|
private addSingleModule;
|
|
14
15
|
private removeSingleModule;
|
|
15
16
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAIL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,OAAO,CAAqC;IAEpD,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,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/H,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;IAoCrI,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;CAkBvB"}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
+
import { Address } from '@xylabs/hex';
|
|
1
2
|
import { Promisable } from '@xylabs/promise';
|
|
2
|
-
import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
3
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleIdentifier, ModuleInstance, ModuleRepository, ModuleResolverInstance } from '@xyo-network/module-model';
|
|
3
4
|
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
4
5
|
private addressToName;
|
|
5
6
|
private modules;
|
|
6
7
|
add(module: ModuleInstance): this;
|
|
7
8
|
add(module: ModuleInstance[]): this;
|
|
8
9
|
addResolver(_resolver: ModuleResolverInstance): this;
|
|
9
|
-
remove(address:
|
|
10
|
+
remove(address: Address | Address[]): this;
|
|
10
11
|
removeResolver(_resolver: ModuleResolverInstance): this;
|
|
11
12
|
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
12
|
-
resolve<T extends ModuleInstance = ModuleInstance>(
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
13
14
|
private addSingleModule;
|
|
14
15
|
private removeSingleModule;
|
|
15
16
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAIL,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,2BAA2B,CAAA;AAGlC,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,OAAO,CAAqC;IAEpD,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,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/H,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;IAoCrI,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;CAkBvB"}
|