@xyo-network/module-resolver 2.74.5 → 2.75.1
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.cjs +205 -0
- package/dist/browser/CompositeModuleResolver.cjs.map +1 -0
- package/dist/browser/CompositeModuleResolver.d.cts.map +1 -0
- package/dist/browser/CompositeModuleResolver.d.mts.map +1 -0
- package/dist/browser/CompositeModuleResolver.d.ts +19 -0
- package/dist/browser/CompositeModuleResolver.d.ts.map +1 -0
- package/dist/browser/CompositeModuleResolver.js +86 -0
- package/dist/browser/CompositeModuleResolver.js.map +1 -0
- package/dist/browser/ResolverEventEmitter.cjs +63 -0
- package/dist/browser/ResolverEventEmitter.cjs.map +1 -0
- package/dist/browser/ResolverEventEmitter.d.cts.map +1 -0
- package/dist/browser/ResolverEventEmitter.d.mts.map +1 -0
- package/dist/browser/ResolverEventEmitter.d.ts +10 -0
- package/dist/browser/ResolverEventEmitter.d.ts.map +1 -0
- package/dist/browser/ResolverEventEmitter.js +42 -0
- package/dist/browser/ResolverEventEmitter.js.map +1 -0
- package/dist/browser/SimpleModuleResolver.cjs +122 -0
- package/dist/browser/SimpleModuleResolver.cjs.map +1 -0
- package/dist/browser/SimpleModuleResolver.d.cts.map +1 -0
- package/dist/browser/SimpleModuleResolver.d.mts.map +1 -0
- package/dist/browser/SimpleModuleResolver.d.ts +20 -0
- package/dist/browser/SimpleModuleResolver.d.ts.map +1 -0
- package/dist/browser/SimpleModuleResolver.js +101 -0
- package/dist/browser/SimpleModuleResolver.js.map +1 -0
- package/dist/{index.js → browser/index.cjs} +1 -7
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.cts.map +1 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.d.ts +4 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +4 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/docs.json +73 -73
- package/dist/node/CompositeModuleResolver.d.cts +19 -0
- package/dist/node/CompositeModuleResolver.d.cts.map +1 -0
- package/dist/node/CompositeModuleResolver.d.mts +19 -0
- package/dist/node/CompositeModuleResolver.d.mts.map +1 -0
- package/dist/node/CompositeModuleResolver.d.ts +19 -0
- package/dist/node/CompositeModuleResolver.d.ts.map +1 -0
- package/dist/node/CompositeModuleResolver.js +215 -0
- package/dist/node/CompositeModuleResolver.js.map +1 -0
- package/dist/node/CompositeModuleResolver.mjs +192 -0
- package/dist/node/CompositeModuleResolver.mjs.map +1 -0
- package/dist/node/ResolverEventEmitter.d.cts +10 -0
- package/dist/node/ResolverEventEmitter.d.cts.map +1 -0
- package/dist/node/ResolverEventEmitter.d.mts +10 -0
- package/dist/node/ResolverEventEmitter.d.mts.map +1 -0
- package/dist/node/ResolverEventEmitter.d.ts +10 -0
- package/dist/node/ResolverEventEmitter.d.ts.map +1 -0
- package/dist/node/ResolverEventEmitter.js +67 -0
- package/dist/node/ResolverEventEmitter.js.map +1 -0
- package/dist/node/ResolverEventEmitter.mjs +44 -0
- package/dist/node/ResolverEventEmitter.mjs.map +1 -0
- package/dist/node/SimpleModuleResolver.d.cts +20 -0
- package/dist/node/SimpleModuleResolver.d.cts.map +1 -0
- package/dist/node/SimpleModuleResolver.d.mts +20 -0
- package/dist/node/SimpleModuleResolver.d.mts.map +1 -0
- package/dist/node/SimpleModuleResolver.d.ts +20 -0
- package/dist/node/SimpleModuleResolver.d.ts.map +1 -0
- package/dist/node/SimpleModuleResolver.js +128 -0
- package/dist/node/SimpleModuleResolver.js.map +1 -0
- package/dist/node/SimpleModuleResolver.mjs +105 -0
- package/dist/node/SimpleModuleResolver.mjs.map +1 -0
- package/dist/node/index.d.cts +4 -0
- package/dist/node/index.d.cts.map +1 -0
- package/dist/node/index.d.mts +4 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +4 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +259 -0
- package/dist/node/index.js.map +1 -0
- package/dist/{index.mjs → node/index.mjs} +21 -15
- package/dist/node/index.mjs.map +1 -0
- package/package.json +29 -26
- package/dist/CompositeModuleResolver.d.mts.map +0 -1
- package/dist/CompositeModuleResolver.d.ts.map +0 -1
- package/dist/ResolverEventEmitter.d.mts.map +0 -1
- package/dist/ResolverEventEmitter.d.ts.map +0 -1
- package/dist/SimpleModuleResolver.d.mts.map +0 -1
- package/dist/SimpleModuleResolver.d.ts.map +0 -1
- package/dist/index.d.mts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- /package/dist/{CompositeModuleResolver.d.mts → browser/CompositeModuleResolver.d.cts} +0 -0
- /package/dist/{CompositeModuleResolver.d.ts → browser/CompositeModuleResolver.d.mts} +0 -0
- /package/dist/{ResolverEventEmitter.d.mts → browser/ResolverEventEmitter.d.cts} +0 -0
- /package/dist/{ResolverEventEmitter.d.ts → browser/ResolverEventEmitter.d.mts} +0 -0
- /package/dist/{SimpleModuleResolver.d.mts → browser/SimpleModuleResolver.d.cts} +0 -0
- /package/dist/{SimpleModuleResolver.d.ts → browser/SimpleModuleResolver.d.mts} +0 -0
- /package/dist/{index.d.mts → browser/index.d.cts} +0 -0
- /package/dist/{index.d.ts → browser/index.d.mts} +0 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
21
|
+
var __publicField = (obj, key, value) => {
|
|
22
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// src/index.ts
|
|
27
|
+
var src_exports = {};
|
|
28
|
+
__export(src_exports, {
|
|
29
|
+
CompositeModuleResolver: () => CompositeModuleResolver,
|
|
30
|
+
SimpleModuleResolver: () => SimpleModuleResolver,
|
|
31
|
+
mixinResolverEventEmitter: () => mixinResolverEventEmitter
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(src_exports);
|
|
34
|
+
|
|
35
|
+
// src/CompositeModuleResolver.ts
|
|
36
|
+
var import_exists = require("@xylabs/exists");
|
|
37
|
+
var import_core = require("@xyo-network/core");
|
|
38
|
+
var import_module_model = require("@xyo-network/module-model");
|
|
39
|
+
|
|
40
|
+
// src/SimpleModuleResolver.ts
|
|
41
|
+
var import_lodash = require("@xylabs/lodash");
|
|
42
|
+
var _SimpleModuleResolver = class _SimpleModuleResolver {
|
|
43
|
+
addressToName = {};
|
|
44
|
+
modules = {};
|
|
45
|
+
get isModuleResolver() {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
add(module2) {
|
|
49
|
+
if (Array.isArray(module2)) {
|
|
50
|
+
module2.forEach((module3) => this.addSingleModule(module3));
|
|
51
|
+
} else {
|
|
52
|
+
this.addSingleModule(module2);
|
|
53
|
+
}
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
addResolver(_resolver) {
|
|
57
|
+
throw "Adding resolvers not supported";
|
|
58
|
+
}
|
|
59
|
+
remove(address) {
|
|
60
|
+
if (Array.isArray(address)) {
|
|
61
|
+
address.forEach((address2) => this.removeSingleModule(address2));
|
|
62
|
+
} else {
|
|
63
|
+
this.removeSingleModule(address);
|
|
64
|
+
}
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
removeResolver(_resolver) {
|
|
68
|
+
throw "Removing resolvers not supported";
|
|
69
|
+
}
|
|
70
|
+
resolve(nameOrAddressOrFilter, options) {
|
|
71
|
+
const unfiltered = (() => {
|
|
72
|
+
if (nameOrAddressOrFilter) {
|
|
73
|
+
if (typeof nameOrAddressOrFilter === "string") {
|
|
74
|
+
return this.resolveByName(Object.values(this.modules), [
|
|
75
|
+
nameOrAddressOrFilter
|
|
76
|
+
]).pop() ?? this.resolveByAddress(Object.values(this.modules), [
|
|
77
|
+
nameOrAddressOrFilter
|
|
78
|
+
]).pop();
|
|
79
|
+
} else if (nameOrAddressOrFilter.address) {
|
|
80
|
+
return this.resolveByAddress(Object.values(this.modules), nameOrAddressOrFilter.address);
|
|
81
|
+
} else if (nameOrAddressOrFilter.name) {
|
|
82
|
+
return this.resolveByName(Object.values(this.modules), nameOrAddressOrFilter.name);
|
|
83
|
+
} else if (nameOrAddressOrFilter.query) {
|
|
84
|
+
return this.resolveByQuery(Object.values(this.modules), nameOrAddressOrFilter.query);
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
return Object.values(this.modules);
|
|
88
|
+
}
|
|
89
|
+
})();
|
|
90
|
+
const identity = options == null ? void 0 : options.identity;
|
|
91
|
+
if (identity) {
|
|
92
|
+
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((module2) => identity(module2)) : identity(unfiltered) ? unfiltered : void 0;
|
|
93
|
+
} else {
|
|
94
|
+
return unfiltered;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
addSingleModule(module2) {
|
|
98
|
+
if (module2) {
|
|
99
|
+
this.modules[module2.address] = module2;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
removeSingleModule(address) {
|
|
103
|
+
if (address) {
|
|
104
|
+
if (this.modules[address]) {
|
|
105
|
+
delete this.modules[address];
|
|
106
|
+
const name = this.addressToName[address];
|
|
107
|
+
if (name) {
|
|
108
|
+
delete this.addressToName[address];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
resolveByAddress(modules, address) {
|
|
114
|
+
return address ? (0, import_lodash.compact)((0, import_lodash.flatten)(address == null ? void 0 : address.map((address2) => {
|
|
115
|
+
return modules.filter((module2) => module2.address === address2);
|
|
116
|
+
}))) : modules;
|
|
117
|
+
}
|
|
118
|
+
resolveByName(modules, name) {
|
|
119
|
+
if (name) {
|
|
120
|
+
return (0, import_lodash.compact)(name.map((name2) => modules.filter((module2) => {
|
|
121
|
+
var _a;
|
|
122
|
+
return ((_a = module2.config) == null ? void 0 : _a.name) === name2;
|
|
123
|
+
})).flat());
|
|
124
|
+
}
|
|
125
|
+
return modules;
|
|
126
|
+
}
|
|
127
|
+
resolveByQuery(modules, query) {
|
|
128
|
+
return query ? (0, import_lodash.compact)(modules.filter((module2) => query == null ? void 0 : query.reduce((supported, queryList) => {
|
|
129
|
+
return queryList.reduce((supported2, query2) => {
|
|
130
|
+
const queryable = module2.queries.includes(query2);
|
|
131
|
+
return supported2 && queryable;
|
|
132
|
+
}, true) || supported;
|
|
133
|
+
}, false))) : modules;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
__name(_SimpleModuleResolver, "SimpleModuleResolver");
|
|
137
|
+
var SimpleModuleResolver = _SimpleModuleResolver;
|
|
138
|
+
|
|
139
|
+
// src/CompositeModuleResolver.ts
|
|
140
|
+
var _CompositeModuleResolver = class _CompositeModuleResolver extends import_core.Base {
|
|
141
|
+
resolvers = [];
|
|
142
|
+
localResolver;
|
|
143
|
+
constructor(params = {}) {
|
|
144
|
+
super(params);
|
|
145
|
+
const localResolver = new SimpleModuleResolver();
|
|
146
|
+
this.addResolver(localResolver);
|
|
147
|
+
this.localResolver = localResolver;
|
|
148
|
+
}
|
|
149
|
+
get isModuleResolver() {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
add(module2) {
|
|
153
|
+
if (Array.isArray(module2)) {
|
|
154
|
+
module2.forEach((module3) => this.addSingleModule(module3));
|
|
155
|
+
} else {
|
|
156
|
+
this.addSingleModule(module2);
|
|
157
|
+
}
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
160
|
+
addResolver(resolver) {
|
|
161
|
+
this.resolvers.push(resolver);
|
|
162
|
+
return this;
|
|
163
|
+
}
|
|
164
|
+
remove(addressOrName) {
|
|
165
|
+
if (Array.isArray(addressOrName)) {
|
|
166
|
+
addressOrName.forEach((address) => this.removeSingleModule(address));
|
|
167
|
+
} else {
|
|
168
|
+
this.removeSingleModule(addressOrName);
|
|
169
|
+
}
|
|
170
|
+
return this;
|
|
171
|
+
}
|
|
172
|
+
removeResolver(resolver) {
|
|
173
|
+
this.resolvers = this.resolvers.filter((item) => item !== resolver);
|
|
174
|
+
return this;
|
|
175
|
+
}
|
|
176
|
+
async resolve(nameOrAddressOrFilter, options) {
|
|
177
|
+
const mutatedOptions = {
|
|
178
|
+
...options,
|
|
179
|
+
maxDepth: ((options == null ? void 0 : options.maxDepth) ?? _CompositeModuleResolver.defaultMaxDepth) - 1
|
|
180
|
+
};
|
|
181
|
+
if (typeof nameOrAddressOrFilter === "string") {
|
|
182
|
+
if (mutatedOptions.maxDepth < 0) {
|
|
183
|
+
return void 0;
|
|
184
|
+
}
|
|
185
|
+
const results = await Promise.all(this.resolvers.map(async (resolver) => {
|
|
186
|
+
const result2 = await resolver.resolve(nameOrAddressOrFilter, mutatedOptions);
|
|
187
|
+
return result2;
|
|
188
|
+
}));
|
|
189
|
+
const result = results.filter(import_exists.exists).filter(import_module_model.duplicateModules).pop();
|
|
190
|
+
return result;
|
|
191
|
+
} else {
|
|
192
|
+
if (mutatedOptions.maxDepth < 0) {
|
|
193
|
+
return [];
|
|
194
|
+
}
|
|
195
|
+
const result = await Promise.all(this.resolvers.map(async (resolver) => {
|
|
196
|
+
const result2 = await resolver.resolve(nameOrAddressOrFilter, mutatedOptions);
|
|
197
|
+
return result2;
|
|
198
|
+
}));
|
|
199
|
+
const flatResult = result.flat();
|
|
200
|
+
return flatResult.filter(import_module_model.duplicateModules);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
addSingleModule(module2) {
|
|
204
|
+
if (module2) {
|
|
205
|
+
this.localResolver.add(module2);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
removeSingleModule(addressOrName) {
|
|
209
|
+
this.localResolver.remove(addressOrName);
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
__name(_CompositeModuleResolver, "CompositeModuleResolver");
|
|
213
|
+
__publicField(_CompositeModuleResolver, "defaultMaxDepth", 5);
|
|
214
|
+
var CompositeModuleResolver = _CompositeModuleResolver;
|
|
215
|
+
|
|
216
|
+
// src/ResolverEventEmitter.ts
|
|
217
|
+
var getMixin = /* @__PURE__ */ __name((resolver) => {
|
|
218
|
+
const listeners = [];
|
|
219
|
+
const emit = /* @__PURE__ */ __name((event, args) => {
|
|
220
|
+
if (listeners.length < 1)
|
|
221
|
+
return false;
|
|
222
|
+
listeners.map((listener) => listener(args));
|
|
223
|
+
return true;
|
|
224
|
+
}, "emit");
|
|
225
|
+
const onModuleResolved = /* @__PURE__ */ __name((module2, filter) => {
|
|
226
|
+
const args = {
|
|
227
|
+
filter,
|
|
228
|
+
module: module2
|
|
229
|
+
};
|
|
230
|
+
emit("moduleResolved", args);
|
|
231
|
+
}, "onModuleResolved");
|
|
232
|
+
const { resolve } = resolver;
|
|
233
|
+
function originalResolve(filter) {
|
|
234
|
+
return resolve.bind(resolver)(filter);
|
|
235
|
+
}
|
|
236
|
+
__name(originalResolve, "originalResolve");
|
|
237
|
+
return {
|
|
238
|
+
on: (event, listener) => {
|
|
239
|
+
listeners.push(listener);
|
|
240
|
+
},
|
|
241
|
+
resolve: async (filter) => {
|
|
242
|
+
const modules = await originalResolve(filter);
|
|
243
|
+
await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)));
|
|
244
|
+
return modules;
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
}, "getMixin");
|
|
248
|
+
var mixinResolverEventEmitter = /* @__PURE__ */ __name((resolver) => {
|
|
249
|
+
const mixin = getMixin(resolver);
|
|
250
|
+
const ret = Object.assign(resolver, mixin);
|
|
251
|
+
return ret;
|
|
252
|
+
}, "mixinResolverEventEmitter");
|
|
253
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
254
|
+
0 && (module.exports = {
|
|
255
|
+
CompositeModuleResolver,
|
|
256
|
+
SimpleModuleResolver,
|
|
257
|
+
mixinResolverEventEmitter
|
|
258
|
+
});
|
|
259
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/CompositeModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["export * from './CompositeModuleResolver'\nexport * from './ResolverEventEmitter'\nexport * from './SimpleModuleResolver'\n","import { exists } from '@xylabs/exists'\nimport { Base, BaseParams } from '@xyo-network/core'\nimport { duplicateModules, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\n\nexport class CompositeModuleResolver extends Base implements ModuleRepository, ModuleResolver {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolver[] = []\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolver): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addressOrName: string | string[]): this {\n if (Array.isArray(addressOrName)) {\n addressOrName.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(addressOrName)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolver): 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()\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 {\n AddressModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleRepository,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { Promisable } from '@xyo-network/promise'\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: string | string[]): this {\n if (Array.isArray(address)) {\n address.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolver): 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) {\n if (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\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.map((name) => modules.filter((module) => module.config?.name === name)).flat()) 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(\n (module) =>\n query?.reduce((supported, queryList) => {\n return (\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 < 1) 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":["SimpleModuleResolver","addressToName","modules","isModuleResolver","add","module","Array","isArray","forEach","addSingleModule","addResolver","_resolver","remove","address","removeSingleModule","removeResolver","resolve","nameOrAddressOrFilter","options","unfiltered","resolveByName","Object","values","pop","resolveByAddress","name","query","resolveByQuery","identity","filter","undefined","compact","flatten","map","config","flat","reduce","supported","queryList","queryable","queries","includes","CompositeModuleResolver","Base","resolvers","localResolver","constructor","params","SimpleModuleResolver","addResolver","isModuleResolver","add","module","Array","isArray","forEach","addSingleModule","resolver","push","remove","addressOrName","address","removeSingleModule","removeResolver","filter","item","resolve","nameOrAddressOrFilter","options","mutatedOptions","maxDepth","defaultMaxDepth","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,5 +1,10 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
2
3
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
4
|
+
var __publicField = (obj, key, value) => {
|
|
5
|
+
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
6
|
+
return value;
|
|
7
|
+
};
|
|
3
8
|
|
|
4
9
|
// src/CompositeModuleResolver.ts
|
|
5
10
|
import { exists } from "@xylabs/exists";
|
|
@@ -8,10 +13,7 @@ import { duplicateModules } from "@xyo-network/module-model";
|
|
|
8
13
|
|
|
9
14
|
// src/SimpleModuleResolver.ts
|
|
10
15
|
import { compact, flatten } from "@xylabs/lodash";
|
|
11
|
-
var
|
|
12
|
-
static {
|
|
13
|
-
__name(this, "SimpleModuleResolver");
|
|
14
|
-
}
|
|
16
|
+
var _SimpleModuleResolver = class _SimpleModuleResolver {
|
|
15
17
|
addressToName = {};
|
|
16
18
|
modules = {};
|
|
17
19
|
get isModuleResolver() {
|
|
@@ -59,9 +61,9 @@ var SimpleModuleResolver = class {
|
|
|
59
61
|
return Object.values(this.modules);
|
|
60
62
|
}
|
|
61
63
|
})();
|
|
62
|
-
const identity = options
|
|
64
|
+
const identity = options == null ? void 0 : options.identity;
|
|
63
65
|
if (identity) {
|
|
64
|
-
return Array.isArray(unfiltered) ? unfiltered
|
|
66
|
+
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : void 0;
|
|
65
67
|
} else {
|
|
66
68
|
return unfiltered;
|
|
67
69
|
}
|
|
@@ -83,18 +85,21 @@ var SimpleModuleResolver = class {
|
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
resolveByAddress(modules, address) {
|
|
86
|
-
return address ? compact(flatten(address
|
|
88
|
+
return address ? compact(flatten(address == null ? void 0 : address.map((address2) => {
|
|
87
89
|
return modules.filter((module) => module.address === address2);
|
|
88
90
|
}))) : modules;
|
|
89
91
|
}
|
|
90
92
|
resolveByName(modules, name) {
|
|
91
93
|
if (name) {
|
|
92
|
-
return compact(name.map((name2) => modules.filter((module) =>
|
|
94
|
+
return compact(name.map((name2) => modules.filter((module) => {
|
|
95
|
+
var _a;
|
|
96
|
+
return ((_a = module.config) == null ? void 0 : _a.name) === name2;
|
|
97
|
+
})).flat());
|
|
93
98
|
}
|
|
94
99
|
return modules;
|
|
95
100
|
}
|
|
96
101
|
resolveByQuery(modules, query) {
|
|
97
|
-
return query ? compact(modules.filter((module) => query
|
|
102
|
+
return query ? compact(modules.filter((module) => query == null ? void 0 : query.reduce((supported, queryList) => {
|
|
98
103
|
return queryList.reduce((supported2, query2) => {
|
|
99
104
|
const queryable = module.queries.includes(query2);
|
|
100
105
|
return supported2 && queryable;
|
|
@@ -102,13 +107,11 @@ var SimpleModuleResolver = class {
|
|
|
102
107
|
}, false))) : modules;
|
|
103
108
|
}
|
|
104
109
|
};
|
|
110
|
+
__name(_SimpleModuleResolver, "SimpleModuleResolver");
|
|
111
|
+
var SimpleModuleResolver = _SimpleModuleResolver;
|
|
105
112
|
|
|
106
113
|
// src/CompositeModuleResolver.ts
|
|
107
|
-
var
|
|
108
|
-
static {
|
|
109
|
-
__name(this, "CompositeModuleResolver");
|
|
110
|
-
}
|
|
111
|
-
static defaultMaxDepth = 5;
|
|
114
|
+
var _CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
112
115
|
resolvers = [];
|
|
113
116
|
localResolver;
|
|
114
117
|
constructor(params = {}) {
|
|
@@ -147,7 +150,7 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
147
150
|
async resolve(nameOrAddressOrFilter, options) {
|
|
148
151
|
const mutatedOptions = {
|
|
149
152
|
...options,
|
|
150
|
-
maxDepth: (options
|
|
153
|
+
maxDepth: ((options == null ? void 0 : options.maxDepth) ?? _CompositeModuleResolver.defaultMaxDepth) - 1
|
|
151
154
|
};
|
|
152
155
|
if (typeof nameOrAddressOrFilter === "string") {
|
|
153
156
|
if (mutatedOptions.maxDepth < 0) {
|
|
@@ -180,6 +183,9 @@ var CompositeModuleResolver = class _CompositeModuleResolver extends Base {
|
|
|
180
183
|
this.localResolver.remove(addressOrName);
|
|
181
184
|
}
|
|
182
185
|
};
|
|
186
|
+
__name(_CompositeModuleResolver, "CompositeModuleResolver");
|
|
187
|
+
__publicField(_CompositeModuleResolver, "defaultMaxDepth", 5);
|
|
188
|
+
var CompositeModuleResolver = _CompositeModuleResolver;
|
|
183
189
|
|
|
184
190
|
// src/ResolverEventEmitter.ts
|
|
185
191
|
var getMixin = /* @__PURE__ */ __name((resolver) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/CompositeModuleResolver.ts","../../src/SimpleModuleResolver.ts","../../src/ResolverEventEmitter.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Base, BaseParams } from '@xyo-network/core'\nimport { duplicateModules, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\n\nexport class CompositeModuleResolver extends Base implements ModuleRepository, ModuleResolver {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolver[] = []\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolver): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addressOrName: string | string[]): this {\n if (Array.isArray(addressOrName)) {\n addressOrName.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(addressOrName)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolver): 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()\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 {\n AddressModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleRepository,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { Promisable } from '@xyo-network/promise'\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: string | string[]): this {\n if (Array.isArray(address)) {\n address.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolver): 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) {\n if (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\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.map((name) => modules.filter((module) => module.config?.name === name)).flat()) 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(\n (module) =>\n query?.reduce((supported, queryList) => {\n return (\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 < 1) 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","isModuleResolver","add","module","Array","isArray","forEach","addSingleModule","addResolver","_resolver","remove","address","removeSingleModule","removeResolver","resolve","nameOrAddressOrFilter","options","unfiltered","resolveByName","Object","values","pop","resolveByAddress","name","query","resolveByQuery","identity","filter","undefined","compact","flatten","map","config","flat","reduce","supported","queryList","queryable","queries","includes","CompositeModuleResolver","Base","resolvers","localResolver","constructor","params","SimpleModuleResolver","addResolver","isModuleResolver","add","module","Array","isArray","forEach","addSingleModule","resolver","push","remove","addressOrName","address","removeSingleModule","removeResolver","filter","item","resolve","nameOrAddressOrFilter","options","mutatedOptions","maxDepth","defaultMaxDepth","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"]}
|
package/package.json
CHANGED
|
@@ -10,49 +10,52 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@xylabs/exists": "^2.
|
|
14
|
-
"@xylabs/lodash": "^2.
|
|
15
|
-
"@xyo-network/core": "~2.
|
|
16
|
-
"@xyo-network/module-model": "~2.
|
|
17
|
-
"@xyo-network/promise": "~2.
|
|
13
|
+
"@xylabs/exists": "^2.12.10",
|
|
14
|
+
"@xylabs/lodash": "^2.12.10",
|
|
15
|
+
"@xyo-network/core": "~2.75.1",
|
|
16
|
+
"@xyo-network/module-model": "~2.75.1",
|
|
17
|
+
"@xyo-network/promise": "~2.75.1"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@xylabs/ts-scripts-yarn3": "^3.0.
|
|
21
|
-
"@xylabs/tsconfig": "^3.0.
|
|
20
|
+
"@xylabs/ts-scripts-yarn3": "^3.0.77",
|
|
21
|
+
"@xylabs/tsconfig": "^3.0.77",
|
|
22
22
|
"jest": "^29.7.0",
|
|
23
23
|
"jest-mock-extended": "^3.0.5",
|
|
24
24
|
"typescript": "^5.2.2"
|
|
25
25
|
},
|
|
26
26
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
27
27
|
"docs": "dist/docs.json",
|
|
28
|
-
"types": "dist/index.d.ts",
|
|
28
|
+
"types": "dist/node/index.d.ts",
|
|
29
29
|
"exports": {
|
|
30
30
|
".": {
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
|
|
31
|
+
"browser": {
|
|
32
|
+
"require": {
|
|
33
|
+
"types": "./dist/browser/index.d.cts",
|
|
34
|
+
"default": "./dist/browser/index.cjs"
|
|
35
|
+
},
|
|
36
|
+
"import": {
|
|
37
|
+
"types": "./dist/browser/index.d.mts",
|
|
38
|
+
"default": "./dist/browser/index.js"
|
|
39
|
+
}
|
|
34
40
|
},
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
|
|
41
|
+
"node": {
|
|
42
|
+
"require": {
|
|
43
|
+
"types": "./dist/node/index.d.ts",
|
|
44
|
+
"default": "./dist/node/index.js"
|
|
45
|
+
},
|
|
46
|
+
"import": {
|
|
47
|
+
"types": "./dist/node/index.d.mts",
|
|
48
|
+
"default": "./dist/node/index.mjs"
|
|
49
|
+
}
|
|
38
50
|
}
|
|
39
51
|
},
|
|
40
|
-
"./dist/docs.json": {
|
|
41
|
-
"default": "./dist/docs.json"
|
|
42
|
-
},
|
|
43
|
-
"./cjs": {
|
|
44
|
-
"default": "./dist/index.js"
|
|
45
|
-
},
|
|
46
52
|
"./docs": {
|
|
47
53
|
"default": "./dist/docs.json"
|
|
48
54
|
},
|
|
49
|
-
"./esm": {
|
|
50
|
-
"default": "./dist/index.mjs"
|
|
51
|
-
},
|
|
52
55
|
"./package.json": "./package.json"
|
|
53
56
|
},
|
|
54
|
-
"main": "dist/index.js",
|
|
55
|
-
"module": "dist/index.mjs",
|
|
57
|
+
"main": "dist/node/index.js",
|
|
58
|
+
"module": "dist/node/index.mjs",
|
|
56
59
|
"homepage": "https://xyo.network",
|
|
57
60
|
"license": "LGPL-3.0",
|
|
58
61
|
"publishConfig": {
|
|
@@ -63,5 +66,5 @@
|
|
|
63
66
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
64
67
|
},
|
|
65
68
|
"sideEffects": false,
|
|
66
|
-
"version": "2.
|
|
69
|
+
"version": "2.75.1"
|
|
67
70
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAIjJ,qBAAa,uBAAwB,SAAQ,IAAK,YAAW,gBAAgB,EAAE,cAAc;IAC3F,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,cAAc,EAAE,CAAK;IAC1C,OAAO,CAAC,aAAa,CAAsB;gBAE/B,MAAM,GAAE,UAAe;IAOnC,IAAI,gBAAgB,YAEnB;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAK3C,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAS9C,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAKxC,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,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAiCzI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;CAG3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CompositeModuleResolver.d.ts","sourceRoot":"","sources":["../src/CompositeModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAoB,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAIjJ,qBAAa,uBAAwB,SAAQ,IAAK,YAAW,gBAAgB,EAAE,cAAc;IAC3F,MAAM,CAAC,eAAe,SAAI;IAC1B,SAAS,CAAC,SAAS,EAAE,cAAc,EAAE,CAAK;IAC1C,OAAO,CAAC,aAAa,CAAsB;gBAE/B,MAAM,GAAE,UAAe;IAOnC,IAAI,gBAAgB,YAEnB;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAK3C,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAS9C,cAAc,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAKxC,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,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAiCzI,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,kBAAkB;CAG3B"}
|
|
@@ -1 +0,0 @@
|
|
|
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;AAgCD,eAAO,MAAM,yBAAyB,sFAIrC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
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;AAgCD,eAAO,MAAM,yBAAyB,sFAIrC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,OAAO,CAAqC;IAEpD,IAAI,gBAAgB,YAEnB;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAI5C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IASxC,cAAc,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAI/C,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,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IA+BtI,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;CAmBvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../src/SimpleModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAGjD,qBAAa,oBAAqB,YAAW,gBAAgB;IAC3D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,OAAO,CAAqC;IAEpD,IAAI,gBAAgB,YAEnB;IAED,GAAG,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IACjC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI;IAUnC,WAAW,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAI5C,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IASxC,cAAc,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI;IAI/C,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,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;IA+BtI,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;CAmBvB"}
|
package/dist/index.d.mts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/CompositeModuleResolver.ts","../src/SimpleModuleResolver.ts","../src/ResolverEventEmitter.ts"],"sourcesContent":["export * from './CompositeModuleResolver'\nexport * from './ResolverEventEmitter'\nexport * from './SimpleModuleResolver'\n","import { exists } from '@xylabs/exists'\nimport { Base, BaseParams } from '@xyo-network/core'\nimport { duplicateModules, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\n\nexport class CompositeModuleResolver extends Base implements ModuleRepository, ModuleResolver {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolver[] = []\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolver): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addressOrName: string | string[]): this {\n if (Array.isArray(addressOrName)) {\n addressOrName.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(addressOrName)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolver): 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()\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 {\n AddressModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleRepository,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { Promisable } from '@xyo-network/promise'\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: string | string[]): this {\n if (Array.isArray(address)) {\n address.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolver): 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) {\n if (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\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.map((name) => modules.filter((module) => module.config?.name === name)).flat()) 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(\n (module) =>\n query?.reduce((supported, queryList) => {\n return (\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 < 1) 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":["SimpleModuleResolver","addressToName","modules","isModuleResolver","add","module","Array","isArray","forEach","addSingleModule","addResolver","_resolver","remove","address","removeSingleModule","removeResolver","resolve","nameOrAddressOrFilter","options","unfiltered","resolveByName","Object","values","pop","resolveByAddress","name","query","resolveByQuery","identity","filter","undefined","compact","flatten","map","config","flat","reduce","supported","queryList","queryable","queries","includes","CompositeModuleResolver","Base","defaultMaxDepth","resolvers","localResolver","constructor","params","SimpleModuleResolver","addResolver","isModuleResolver","add","module","Array","isArray","forEach","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"]}
|
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/CompositeModuleResolver.ts","../src/SimpleModuleResolver.ts","../src/ResolverEventEmitter.ts"],"sourcesContent":["import { exists } from '@xylabs/exists'\nimport { Base, BaseParams } from '@xyo-network/core'\nimport { duplicateModules, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model'\n\nimport { SimpleModuleResolver } from './SimpleModuleResolver'\n\nexport class CompositeModuleResolver extends Base implements ModuleRepository, ModuleResolver {\n static defaultMaxDepth = 5\n protected resolvers: ModuleResolver[] = []\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(resolver: ModuleResolver): this {\n this.resolvers.push(resolver)\n return this\n }\n\n remove(addressOrName: string | string[]): this {\n if (Array.isArray(addressOrName)) {\n addressOrName.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(addressOrName)\n }\n return this\n }\n\n removeResolver(resolver: ModuleResolver): 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()\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 {\n AddressModuleFilter,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleRepository,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { Promisable } from '@xyo-network/promise'\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 get isModuleResolver() {\n return true\n }\n\n add(module: ModuleInstance): this\n add(module: ModuleInstance[]): this\n add(module: ModuleInstance | ModuleInstance[]): this {\n if (Array.isArray(module)) {\n module.forEach((module) => this.addSingleModule(module))\n } else {\n this.addSingleModule(module)\n }\n return this\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw 'Adding resolvers not supported'\n }\n\n remove(address: string | string[]): this {\n if (Array.isArray(address)) {\n address.forEach((address) => this.removeSingleModule(address))\n } else {\n this.removeSingleModule(address)\n }\n return this\n }\n\n removeResolver(_resolver: ModuleResolver): 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) {\n if (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\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.map((name) => modules.filter((module) => module.config?.name === name)).flat()) 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(\n (module) =>\n query?.reduce((supported, queryList) => {\n return (\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 < 1) 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","isModuleResolver","add","module","Array","isArray","forEach","addSingleModule","addResolver","_resolver","remove","address","removeSingleModule","removeResolver","resolve","nameOrAddressOrFilter","options","unfiltered","resolveByName","Object","values","pop","resolveByAddress","name","query","resolveByQuery","identity","filter","undefined","compact","flatten","map","config","flat","reduce","supported","queryList","queryable","queries","includes","CompositeModuleResolver","Base","defaultMaxDepth","resolvers","localResolver","constructor","params","SimpleModuleResolver","addResolver","isModuleResolver","add","module","Array","isArray","forEach","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"]}
|