@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,67 @@
|
|
|
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 __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/ResolverEventEmitter.ts
|
|
22
|
+
var ResolverEventEmitter_exports = {};
|
|
23
|
+
__export(ResolverEventEmitter_exports, {
|
|
24
|
+
mixinResolverEventEmitter: () => mixinResolverEventEmitter
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(ResolverEventEmitter_exports);
|
|
27
|
+
var getMixin = /* @__PURE__ */ __name((resolver) => {
|
|
28
|
+
const listeners = [];
|
|
29
|
+
const emit = /* @__PURE__ */ __name((event, args) => {
|
|
30
|
+
if (listeners.length < 1)
|
|
31
|
+
return false;
|
|
32
|
+
listeners.map((listener) => listener(args));
|
|
33
|
+
return true;
|
|
34
|
+
}, "emit");
|
|
35
|
+
const onModuleResolved = /* @__PURE__ */ __name((module2, filter) => {
|
|
36
|
+
const args = {
|
|
37
|
+
filter,
|
|
38
|
+
module: module2
|
|
39
|
+
};
|
|
40
|
+
emit("moduleResolved", args);
|
|
41
|
+
}, "onModuleResolved");
|
|
42
|
+
const { resolve } = resolver;
|
|
43
|
+
function originalResolve(filter) {
|
|
44
|
+
return resolve.bind(resolver)(filter);
|
|
45
|
+
}
|
|
46
|
+
__name(originalResolve, "originalResolve");
|
|
47
|
+
return {
|
|
48
|
+
on: (event, listener) => {
|
|
49
|
+
listeners.push(listener);
|
|
50
|
+
},
|
|
51
|
+
resolve: async (filter) => {
|
|
52
|
+
const modules = await originalResolve(filter);
|
|
53
|
+
await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)));
|
|
54
|
+
return modules;
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}, "getMixin");
|
|
58
|
+
var mixinResolverEventEmitter = /* @__PURE__ */ __name((resolver) => {
|
|
59
|
+
const mixin = getMixin(resolver);
|
|
60
|
+
const ret = Object.assign(resolver, mixin);
|
|
61
|
+
return ret;
|
|
62
|
+
}, "mixinResolverEventEmitter");
|
|
63
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
+
0 && (module.exports = {
|
|
65
|
+
mixinResolverEventEmitter
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=ResolverEventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ResolverEventEmitter.ts"],"sourcesContent":["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":";;;;;;;;;;;;;;;;;;;;;AAaA;;;;;AAAA,IAAMA,WAAW,wBAA4CC,aAAAA;AAC3D,QAAMC,YAAgC,CAAA;AACtC,QAAMC,OAAO,wBAACC,OAAyBC,SAAAA;AACrC,QAAIH,UAAUI,SAAS;AAAG,aAAO;AACjCJ,cAAUK,IAAI,CAACC,aAAaA,SAASH,IAAAA,CAAAA;AACrC,WAAO;EACT,GAJa;AAKb,QAAMI,mBAAmB,wBAACC,SAAgBC,WAAAA;AACxC,UAAMN,OAAO;MAAEM;MAAQD,QAAAA;IAAO;AAC9BP,SAAK,kBAAkBE,IAAAA;EACzB,GAHyB;AAIzB,QAAM,EAAEO,QAAO,IAAKX;AACpB,WAASY,gBAAgBF,QAAqB;AAC5C,WAAOC,QAAQE,KAAKb,QAAAA,EAAUU,MAAAA;EAChC;AAFSE;AAIT,SAAO;IACLE,IAAI,CAACX,OAAyBI,aAAAA;AAC5BN,gBAAUc,KAAKR,QAAAA;IACjB;IACAI,SAAS,OAAOD,WAAAA;AACd,YAAMM,UAAoB,MAAMJ,gBAAgBF,MAAAA;AAChD,YAAMO,QAAQC,WAAWF,QAAQV,IAAI,CAACa,QAAQX,iBAAiBW,KAAKT,MAAAA,CAAAA,CAAAA;AACpE,aAAOM;IACT;EACF;AACF,GA1BiB;AA4BV,IAAMI,4BAA4B,wBAA4CpB,aAAAA;AACnF,QAAMqB,QAAQtB,SAASC,QAAAA;AACvB,QAAMsB,MAAMC,OAAOC,OAAOxB,UAAUqB,KAAAA;AACpC,SAAOC;AACT,GAJyC;","names":["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,44 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// src/ResolverEventEmitter.ts
|
|
5
|
+
var getMixin = /* @__PURE__ */ __name((resolver) => {
|
|
6
|
+
const listeners = [];
|
|
7
|
+
const emit = /* @__PURE__ */ __name((event, args) => {
|
|
8
|
+
if (listeners.length < 1)
|
|
9
|
+
return false;
|
|
10
|
+
listeners.map((listener) => listener(args));
|
|
11
|
+
return true;
|
|
12
|
+
}, "emit");
|
|
13
|
+
const onModuleResolved = /* @__PURE__ */ __name((module, filter) => {
|
|
14
|
+
const args = {
|
|
15
|
+
filter,
|
|
16
|
+
module
|
|
17
|
+
};
|
|
18
|
+
emit("moduleResolved", args);
|
|
19
|
+
}, "onModuleResolved");
|
|
20
|
+
const { resolve } = resolver;
|
|
21
|
+
function originalResolve(filter) {
|
|
22
|
+
return resolve.bind(resolver)(filter);
|
|
23
|
+
}
|
|
24
|
+
__name(originalResolve, "originalResolve");
|
|
25
|
+
return {
|
|
26
|
+
on: (event, listener) => {
|
|
27
|
+
listeners.push(listener);
|
|
28
|
+
},
|
|
29
|
+
resolve: async (filter) => {
|
|
30
|
+
const modules = await originalResolve(filter);
|
|
31
|
+
await Promise.allSettled(modules.map((mod) => onModuleResolved(mod, filter)));
|
|
32
|
+
return modules;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}, "getMixin");
|
|
36
|
+
var mixinResolverEventEmitter = /* @__PURE__ */ __name((resolver) => {
|
|
37
|
+
const mixin = getMixin(resolver);
|
|
38
|
+
const ret = Object.assign(resolver, mixin);
|
|
39
|
+
return ret;
|
|
40
|
+
}, "mixinResolverEventEmitter");
|
|
41
|
+
export {
|
|
42
|
+
mixinResolverEventEmitter
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=ResolverEventEmitter.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ResolverEventEmitter.ts"],"sourcesContent":["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":";;;;AAaA,IAAMA,WAAW,wBAA4CC,aAAAA;AAC3D,QAAMC,YAAgC,CAAA;AACtC,QAAMC,OAAO,wBAACC,OAAyBC,SAAAA;AACrC,QAAIH,UAAUI,SAAS;AAAG,aAAO;AACjCJ,cAAUK,IAAI,CAACC,aAAaA,SAASH,IAAAA,CAAAA;AACrC,WAAO;EACT,GAJa;AAKb,QAAMI,mBAAmB,wBAACC,QAAgBC,WAAAA;AACxC,UAAMN,OAAO;MAAEM;MAAQD;IAAO;AAC9BP,SAAK,kBAAkBE,IAAAA;EACzB,GAHyB;AAIzB,QAAM,EAAEO,QAAO,IAAKX;AACpB,WAASY,gBAAgBF,QAAqB;AAC5C,WAAOC,QAAQE,KAAKb,QAAAA,EAAUU,MAAAA;EAChC;AAFSE;AAIT,SAAO;IACLE,IAAI,CAACX,OAAyBI,aAAAA;AAC5BN,gBAAUc,KAAKR,QAAAA;IACjB;IACAI,SAAS,OAAOD,WAAAA;AACd,YAAMM,UAAoB,MAAMJ,gBAAgBF,MAAAA;AAChD,YAAMO,QAAQC,WAAWF,QAAQV,IAAI,CAACa,QAAQX,iBAAiBW,KAAKT,MAAAA,CAAAA,CAAAA;AACpE,aAAOM;IACT;EACF;AACF,GA1BiB;AA4BV,IAAMI,4BAA4B,wBAA4CpB,aAAAA;AACnF,QAAMqB,QAAQtB,SAASC,QAAAA;AACvB,QAAMsB,MAAMC,OAAOC,OAAOxB,UAAUqB,KAAAA;AACpC,SAAOC;AACT,GAJyC;","names":["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,20 @@
|
|
|
1
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model';
|
|
2
|
+
import { Promisable } from '@xyo-network/promise';
|
|
3
|
+
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
4
|
+
private addressToName;
|
|
5
|
+
private modules;
|
|
6
|
+
get isModuleResolver(): boolean;
|
|
7
|
+
add(module: ModuleInstance): this;
|
|
8
|
+
add(module: ModuleInstance[]): this;
|
|
9
|
+
addResolver(_resolver: ModuleResolver): this;
|
|
10
|
+
remove(address: string | string[]): this;
|
|
11
|
+
removeResolver(_resolver: ModuleResolver): this;
|
|
12
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
14
|
+
private addSingleModule;
|
|
15
|
+
private removeSingleModule;
|
|
16
|
+
private resolveByAddress;
|
|
17
|
+
private resolveByName;
|
|
18
|
+
private resolveByQuery;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SimpleModuleResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model';
|
|
2
|
+
import { Promisable } from '@xyo-network/promise';
|
|
3
|
+
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
4
|
+
private addressToName;
|
|
5
|
+
private modules;
|
|
6
|
+
get isModuleResolver(): boolean;
|
|
7
|
+
add(module: ModuleInstance): this;
|
|
8
|
+
add(module: ModuleInstance[]): this;
|
|
9
|
+
addResolver(_resolver: ModuleResolver): this;
|
|
10
|
+
remove(address: string | string[]): this;
|
|
11
|
+
removeResolver(_resolver: ModuleResolver): this;
|
|
12
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
14
|
+
private addSingleModule;
|
|
15
|
+
private removeSingleModule;
|
|
16
|
+
private resolveByAddress;
|
|
17
|
+
private resolveByName;
|
|
18
|
+
private resolveByQuery;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SimpleModuleResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model';
|
|
2
|
+
import { Promisable } from '@xyo-network/promise';
|
|
3
|
+
export declare class SimpleModuleResolver implements ModuleRepository {
|
|
4
|
+
private addressToName;
|
|
5
|
+
private modules;
|
|
6
|
+
get isModuleResolver(): boolean;
|
|
7
|
+
add(module: ModuleInstance): this;
|
|
8
|
+
add(module: ModuleInstance[]): this;
|
|
9
|
+
addResolver(_resolver: ModuleResolver): this;
|
|
10
|
+
remove(address: string | string[]): this;
|
|
11
|
+
removeResolver(_resolver: ModuleResolver): this;
|
|
12
|
+
resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>;
|
|
13
|
+
resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promisable<T | undefined>;
|
|
14
|
+
private addSingleModule;
|
|
15
|
+
private removeSingleModule;
|
|
16
|
+
private resolveByAddress;
|
|
17
|
+
private resolveByName;
|
|
18
|
+
private resolveByQuery;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SimpleModuleResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
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 __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
+
|
|
21
|
+
// src/SimpleModuleResolver.ts
|
|
22
|
+
var SimpleModuleResolver_exports = {};
|
|
23
|
+
__export(SimpleModuleResolver_exports, {
|
|
24
|
+
SimpleModuleResolver: () => SimpleModuleResolver
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(SimpleModuleResolver_exports);
|
|
27
|
+
var import_lodash = require("@xylabs/lodash");
|
|
28
|
+
var _SimpleModuleResolver = class _SimpleModuleResolver {
|
|
29
|
+
addressToName = {};
|
|
30
|
+
modules = {};
|
|
31
|
+
get isModuleResolver() {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
add(module2) {
|
|
35
|
+
if (Array.isArray(module2)) {
|
|
36
|
+
module2.forEach((module3) => this.addSingleModule(module3));
|
|
37
|
+
} else {
|
|
38
|
+
this.addSingleModule(module2);
|
|
39
|
+
}
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
addResolver(_resolver) {
|
|
43
|
+
throw "Adding resolvers not supported";
|
|
44
|
+
}
|
|
45
|
+
remove(address) {
|
|
46
|
+
if (Array.isArray(address)) {
|
|
47
|
+
address.forEach((address2) => this.removeSingleModule(address2));
|
|
48
|
+
} else {
|
|
49
|
+
this.removeSingleModule(address);
|
|
50
|
+
}
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
removeResolver(_resolver) {
|
|
54
|
+
throw "Removing resolvers not supported";
|
|
55
|
+
}
|
|
56
|
+
resolve(nameOrAddressOrFilter, options) {
|
|
57
|
+
const unfiltered = (() => {
|
|
58
|
+
if (nameOrAddressOrFilter) {
|
|
59
|
+
if (typeof nameOrAddressOrFilter === "string") {
|
|
60
|
+
return this.resolveByName(Object.values(this.modules), [
|
|
61
|
+
nameOrAddressOrFilter
|
|
62
|
+
]).pop() ?? this.resolveByAddress(Object.values(this.modules), [
|
|
63
|
+
nameOrAddressOrFilter
|
|
64
|
+
]).pop();
|
|
65
|
+
} else if (nameOrAddressOrFilter.address) {
|
|
66
|
+
return this.resolveByAddress(Object.values(this.modules), nameOrAddressOrFilter.address);
|
|
67
|
+
} else if (nameOrAddressOrFilter.name) {
|
|
68
|
+
return this.resolveByName(Object.values(this.modules), nameOrAddressOrFilter.name);
|
|
69
|
+
} else if (nameOrAddressOrFilter.query) {
|
|
70
|
+
return this.resolveByQuery(Object.values(this.modules), nameOrAddressOrFilter.query);
|
|
71
|
+
}
|
|
72
|
+
} else {
|
|
73
|
+
return Object.values(this.modules);
|
|
74
|
+
}
|
|
75
|
+
})();
|
|
76
|
+
const identity = options == null ? void 0 : options.identity;
|
|
77
|
+
if (identity) {
|
|
78
|
+
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((module2) => identity(module2)) : identity(unfiltered) ? unfiltered : void 0;
|
|
79
|
+
} else {
|
|
80
|
+
return unfiltered;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
addSingleModule(module2) {
|
|
84
|
+
if (module2) {
|
|
85
|
+
this.modules[module2.address] = module2;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
removeSingleModule(address) {
|
|
89
|
+
if (address) {
|
|
90
|
+
if (this.modules[address]) {
|
|
91
|
+
delete this.modules[address];
|
|
92
|
+
const name = this.addressToName[address];
|
|
93
|
+
if (name) {
|
|
94
|
+
delete this.addressToName[address];
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
resolveByAddress(modules, address) {
|
|
100
|
+
return address ? (0, import_lodash.compact)((0, import_lodash.flatten)(address == null ? void 0 : address.map((address2) => {
|
|
101
|
+
return modules.filter((module2) => module2.address === address2);
|
|
102
|
+
}))) : modules;
|
|
103
|
+
}
|
|
104
|
+
resolveByName(modules, name) {
|
|
105
|
+
if (name) {
|
|
106
|
+
return (0, import_lodash.compact)(name.map((name2) => modules.filter((module2) => {
|
|
107
|
+
var _a;
|
|
108
|
+
return ((_a = module2.config) == null ? void 0 : _a.name) === name2;
|
|
109
|
+
})).flat());
|
|
110
|
+
}
|
|
111
|
+
return modules;
|
|
112
|
+
}
|
|
113
|
+
resolveByQuery(modules, query) {
|
|
114
|
+
return query ? (0, import_lodash.compact)(modules.filter((module2) => query == null ? void 0 : query.reduce((supported, queryList) => {
|
|
115
|
+
return queryList.reduce((supported2, query2) => {
|
|
116
|
+
const queryable = module2.queries.includes(query2);
|
|
117
|
+
return supported2 && queryable;
|
|
118
|
+
}, true) || supported;
|
|
119
|
+
}, false))) : modules;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
__name(_SimpleModuleResolver, "SimpleModuleResolver");
|
|
123
|
+
var SimpleModuleResolver = _SimpleModuleResolver;
|
|
124
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
125
|
+
0 && (module.exports = {
|
|
126
|
+
SimpleModuleResolver
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=SimpleModuleResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/SimpleModuleResolver.ts"],"sourcesContent":["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"],"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"]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
4
|
+
// src/SimpleModuleResolver.ts
|
|
5
|
+
import { compact, flatten } from "@xylabs/lodash";
|
|
6
|
+
var _SimpleModuleResolver = class _SimpleModuleResolver {
|
|
7
|
+
addressToName = {};
|
|
8
|
+
modules = {};
|
|
9
|
+
get isModuleResolver() {
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
add(module) {
|
|
13
|
+
if (Array.isArray(module)) {
|
|
14
|
+
module.forEach((module2) => this.addSingleModule(module2));
|
|
15
|
+
} else {
|
|
16
|
+
this.addSingleModule(module);
|
|
17
|
+
}
|
|
18
|
+
return this;
|
|
19
|
+
}
|
|
20
|
+
addResolver(_resolver) {
|
|
21
|
+
throw "Adding resolvers not supported";
|
|
22
|
+
}
|
|
23
|
+
remove(address) {
|
|
24
|
+
if (Array.isArray(address)) {
|
|
25
|
+
address.forEach((address2) => this.removeSingleModule(address2));
|
|
26
|
+
} else {
|
|
27
|
+
this.removeSingleModule(address);
|
|
28
|
+
}
|
|
29
|
+
return this;
|
|
30
|
+
}
|
|
31
|
+
removeResolver(_resolver) {
|
|
32
|
+
throw "Removing resolvers not supported";
|
|
33
|
+
}
|
|
34
|
+
resolve(nameOrAddressOrFilter, options) {
|
|
35
|
+
const unfiltered = (() => {
|
|
36
|
+
if (nameOrAddressOrFilter) {
|
|
37
|
+
if (typeof nameOrAddressOrFilter === "string") {
|
|
38
|
+
return this.resolveByName(Object.values(this.modules), [
|
|
39
|
+
nameOrAddressOrFilter
|
|
40
|
+
]).pop() ?? this.resolveByAddress(Object.values(this.modules), [
|
|
41
|
+
nameOrAddressOrFilter
|
|
42
|
+
]).pop();
|
|
43
|
+
} else if (nameOrAddressOrFilter.address) {
|
|
44
|
+
return this.resolveByAddress(Object.values(this.modules), nameOrAddressOrFilter.address);
|
|
45
|
+
} else if (nameOrAddressOrFilter.name) {
|
|
46
|
+
return this.resolveByName(Object.values(this.modules), nameOrAddressOrFilter.name);
|
|
47
|
+
} else if (nameOrAddressOrFilter.query) {
|
|
48
|
+
return this.resolveByQuery(Object.values(this.modules), nameOrAddressOrFilter.query);
|
|
49
|
+
}
|
|
50
|
+
} else {
|
|
51
|
+
return Object.values(this.modules);
|
|
52
|
+
}
|
|
53
|
+
})();
|
|
54
|
+
const identity = options == null ? void 0 : options.identity;
|
|
55
|
+
if (identity) {
|
|
56
|
+
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : void 0;
|
|
57
|
+
} else {
|
|
58
|
+
return unfiltered;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
addSingleModule(module) {
|
|
62
|
+
if (module) {
|
|
63
|
+
this.modules[module.address] = module;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
removeSingleModule(address) {
|
|
67
|
+
if (address) {
|
|
68
|
+
if (this.modules[address]) {
|
|
69
|
+
delete this.modules[address];
|
|
70
|
+
const name = this.addressToName[address];
|
|
71
|
+
if (name) {
|
|
72
|
+
delete this.addressToName[address];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
resolveByAddress(modules, address) {
|
|
78
|
+
return address ? compact(flatten(address == null ? void 0 : address.map((address2) => {
|
|
79
|
+
return modules.filter((module) => module.address === address2);
|
|
80
|
+
}))) : modules;
|
|
81
|
+
}
|
|
82
|
+
resolveByName(modules, name) {
|
|
83
|
+
if (name) {
|
|
84
|
+
return compact(name.map((name2) => modules.filter((module) => {
|
|
85
|
+
var _a;
|
|
86
|
+
return ((_a = module.config) == null ? void 0 : _a.name) === name2;
|
|
87
|
+
})).flat());
|
|
88
|
+
}
|
|
89
|
+
return modules;
|
|
90
|
+
}
|
|
91
|
+
resolveByQuery(modules, query) {
|
|
92
|
+
return query ? compact(modules.filter((module) => query == null ? void 0 : query.reduce((supported, queryList) => {
|
|
93
|
+
return queryList.reduce((supported2, query2) => {
|
|
94
|
+
const queryable = module.queries.includes(query2);
|
|
95
|
+
return supported2 && queryable;
|
|
96
|
+
}, true) || supported;
|
|
97
|
+
}, false))) : modules;
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
__name(_SimpleModuleResolver, "SimpleModuleResolver");
|
|
101
|
+
var SimpleModuleResolver = _SimpleModuleResolver;
|
|
102
|
+
export {
|
|
103
|
+
SimpleModuleResolver
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=SimpleModuleResolver.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/SimpleModuleResolver.ts"],"sourcesContent":["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"],"mappings":"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","names":["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"]}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|