@xyo-network/module-abstract 2.70.3 → 2.70.4

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.
@@ -31,27 +31,33 @@ export class SimpleModuleResolver {
31
31
  removeResolver(_resolver) {
32
32
  throw 'Removing resolvers not supported';
33
33
  }
34
- resolve(nameOrAddressOrFilter) {
35
- if (nameOrAddressOrFilter) {
36
- if (typeof nameOrAddressOrFilter === 'string') {
37
- const result = this.resolveByName(Object.values(this.modules), [nameOrAddressOrFilter]).pop() ??
38
- this.resolveByAddress(Object.values(this.modules), [nameOrAddressOrFilter]).pop();
39
- return result;
40
- }
41
- else if (nameOrAddressOrFilter.address) {
42
- const result = this.resolveByAddress(Object.values(this.modules), nameOrAddressOrFilter.address);
43
- return result;
44
- }
45
- else if (nameOrAddressOrFilter.name) {
46
- const result = this.resolveByName(Object.values(this.modules), nameOrAddressOrFilter.name);
47
- return result;
34
+ resolve(nameOrAddressOrFilter, options) {
35
+ const unfiltered = (() => {
36
+ if (nameOrAddressOrFilter) {
37
+ if (typeof nameOrAddressOrFilter === 'string') {
38
+ return (this.resolveByName(Object.values(this.modules), [nameOrAddressOrFilter]).pop() ??
39
+ this.resolveByAddress(Object.values(this.modules), [nameOrAddressOrFilter]).pop());
40
+ }
41
+ else if (nameOrAddressOrFilter.address) {
42
+ return this.resolveByAddress(Object.values(this.modules), nameOrAddressOrFilter.address);
43
+ }
44
+ else if (nameOrAddressOrFilter.name) {
45
+ return this.resolveByName(Object.values(this.modules), nameOrAddressOrFilter.name);
46
+ }
47
+ else if (nameOrAddressOrFilter.query) {
48
+ return this.resolveByQuery(Object.values(this.modules), nameOrAddressOrFilter.query);
49
+ }
48
50
  }
49
- else if (nameOrAddressOrFilter.query) {
50
- return this.resolveByQuery(Object.values(this.modules), nameOrAddressOrFilter.query);
51
+ else {
52
+ return Object.values(this.modules);
51
53
  }
54
+ })();
55
+ const identity = options?.identity;
56
+ if (identity) {
57
+ return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined;
52
58
  }
53
59
  else {
54
- return Object.values(this.modules);
60
+ return unfiltered;
55
61
  }
56
62
  }
57
63
  addSingleModule(module) {
@@ -71,11 +77,11 @@ export class SimpleModuleResolver {
71
77
  }
72
78
  }
73
79
  resolveByAddress(modules, address) {
74
- return address
80
+ return (address
75
81
  ? compact(flatten(address?.map((address) => {
76
82
  return modules.filter((module) => module.address === address);
77
83
  })))
78
- : modules;
84
+ : modules);
79
85
  }
80
86
  resolveByName(modules, name) {
81
87
  if (name) {
@@ -84,14 +90,14 @@ export class SimpleModuleResolver {
84
90
  return modules;
85
91
  }
86
92
  resolveByQuery(modules, query) {
87
- return query
93
+ return (query
88
94
  ? compact(modules.filter((module) => query?.reduce((supported, queryList) => {
89
95
  return (queryList.reduce((supported, query) => {
90
96
  const queryable = module.queries.includes(query);
91
97
  return supported && queryable;
92
98
  }, true) || supported);
93
99
  }, false)))
94
- : modules;
100
+ : modules);
95
101
  }
96
102
  }
97
103
  //# sourceMappingURL=SimpleModuleResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleModuleResolver.js","sourceRoot":"","sources":["../../../src/Resolver/SimpleModuleResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SimpleModuleResolver.js","sourceRoot":"","sources":["../../../src/Resolver/SimpleModuleResolver.ts"],"names":[],"mappings":"AAWA,OAAO,OAAO,MAAM,gBAAgB,CAAA;AACpC,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAEpC,gEAAgE;AAChE,MAAM,OAAO,oBAAoB;IACvB,aAAa,GAA2B,EAAE,CAAA;IAC1C,OAAO,GAAmC,EAAE,CAAA;IAEpD,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAA;IACb,CAAC;IAID,GAAG,CAAC,MAAyC;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACzB,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;SACzD;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;SAC7B;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,WAAW,CAAC,SAAyB;QACnC,MAAM,gCAAgC,CAAA;IACxC,CAAC;IAED,MAAM,CAAC,OAA0B;QAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC1B,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;SAC/D;aAAM;YACL,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;SACjC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,cAAc,CAAC,SAAyB;QACtC,MAAM,kCAAkC,CAAA;IAC1C,CAAC;IAID,OAAO,CACL,qBAAgD,EAChD,OAAgC;QAEhC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;YACvB,IAAI,qBAAqB,EAAE;gBACzB,IAAI,OAAO,qBAAqB,KAAK,QAAQ,EAAE;oBAC7C,OAAO,CACL,IAAI,CAAC,aAAa,CAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,EAAE;wBACjF,IAAI,CAAC,gBAAgB,CAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,GAAG,EAAE,CACrF,CAAA;iBACF;qBAAM,IAAK,qBAA6C,CAAC,OAAO,EAAE;oBACjE,OAAO,IAAI,CAAC,gBAAgB,CAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG,qBAA6C,CAAC,OAAO,CAAC,CAAA;iBACrH;qBAAM,IAAK,qBAA0C,CAAC,IAAI,EAAE;oBAC3D,OAAO,IAAI,CAAC,aAAa,CAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG,qBAA0C,CAAC,IAAI,CAAC,CAAA;iBAC5G;qBAAM,IAAK,qBAA2C,CAAC,KAAK,EAAE;oBAC7D,OAAO,IAAI,CAAC,cAAc,CAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAG,qBAA2C,CAAC,KAAK,CAAC,CAAA;iBAC/G;aACF;iBAAM;gBACL,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAA;aAC1C;QACH,CAAC,CAAC,EAAE,CAAA;QACJ,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,CAAA;QAClC,IAAI,QAAQ,EAAE;YACZ,OAAO,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;SACpI;aAAM;YACL,OAAO,UAAU,CAAA;SAClB;IACH,CAAC;IAEO,eAAe,CAAC,MAAuB;QAC7C,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAA;SACtC;IACH,CAAC;IAEO,kBAAkB,CAAC,OAAe;QACxC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;gBACxC,IAAI,IAAI,EAAE;oBACR,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;iBACnC;aACF;SACF;IACH,CAAC;IAEO,gBAAgB,CAA4C,OAAyB,EAAE,OAAkB;QAC/G,OAAO,CACL,OAAO;YACL,CAAC,CAAC,OAAO,CACL,OAAO,CACL,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACvB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA;YAC/D,CAAC,CAAC,CACH,CACF;YACH,CAAC,CAAC,OAAO,CACL,CAAA;IACV,CAAC;IAEO,aAAa,CAA4C,OAAyB,EAAE,IAAe;QACzG,IAAI,IAAI,EAAE;YACR,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAQ,CAAA;SAC3G;QACD,OAAO,OAAc,CAAA;IACvB,CAAC;IAEO,cAAc,CAA4C,OAAyB,EAAE,KAAkB;QAC7G,OAAO,CACL,KAAK;YACH,CAAC,CAAC,OAAO,CACL,OAAO,CAAC,MAAM,CACZ,CAAC,MAAM,EAAE,EAAE,CACT,KAAK,EAAE,MAAM,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;gBACrC,OAAO,CACL,SAAS,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;oBACpC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;oBAChD,OAAO,SAAS,IAAI,SAAS,CAAA;gBAC/B,CAAC,EAAE,IAAI,CAAC,IAAI,SAAS,CACtB,CAAA;YACH,CAAC,EAAE,KAAK,CAAC,CACZ,CACF;YACH,CAAC,CAAC,OAAO,CACL,CAAA;IACV,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { ModuleFilter, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model';
1
+ import { ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleRepository, ModuleResolver } from '@xyo-network/module-model';
2
2
  import { Promisable } from '@xyo-network/promise';
3
3
  export declare class SimpleModuleResolver implements ModuleRepository {
4
4
  private addressToName;
@@ -9,8 +9,8 @@ export declare class SimpleModuleResolver implements ModuleRepository {
9
9
  addResolver(_resolver: ModuleResolver): this;
10
10
  remove(address: string | string[]): this;
11
11
  removeResolver(_resolver: ModuleResolver): this;
12
- resolve(filter?: ModuleFilter): Promisable<ModuleInstance[]>;
13
- resolve(nameOrAddress: string): Promisable<ModuleInstance | undefined>;
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
14
  private addSingleModule;
15
15
  private removeSingleModule;
16
16
  private resolveByAddress;
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../../src/Resolver/SimpleModuleResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAKjD,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,MAAM,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC,cAAc,EAAE,CAAC;IAC5D,OAAO,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAAC,cAAc,GAAG,SAAS,CAAC;IAsBtE,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,cAAc;CAiBvB"}
1
+ {"version":3,"file":"SimpleModuleResolver.d.ts","sourceRoot":"","sources":["../../../src/Resolver/SimpleModuleResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAKjD,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/package.json CHANGED
@@ -12,23 +12,23 @@
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^2.9.3",
14
14
  "@xylabs/exists": "^2.9.3",
15
- "@xyo-network/account": "~2.70.3",
16
- "@xyo-network/account-model": "~2.70.3",
17
- "@xyo-network/address-payload-plugin": "~2.70.3",
18
- "@xyo-network/archivist-model": "~2.70.3",
19
- "@xyo-network/boundwitness-builder": "~2.70.3",
20
- "@xyo-network/boundwitness-model": "~2.70.3",
21
- "@xyo-network/config-payload-plugin": "~2.70.3",
22
- "@xyo-network/core": "~2.70.3",
23
- "@xyo-network/error": "~2.70.3",
24
- "@xyo-network/manifest-model": "~2.70.3",
25
- "@xyo-network/module-events": "~2.70.3",
26
- "@xyo-network/module-model": "~2.70.3",
27
- "@xyo-network/payload-builder": "~2.70.3",
28
- "@xyo-network/payload-model": "~2.70.3",
29
- "@xyo-network/promise": "~2.70.3",
30
- "@xyo-network/query-payload-plugin": "~2.70.3",
31
- "@xyo-network/shared": "~2.70.3",
15
+ "@xyo-network/account": "~2.70.4",
16
+ "@xyo-network/account-model": "~2.70.4",
17
+ "@xyo-network/address-payload-plugin": "~2.70.4",
18
+ "@xyo-network/archivist-model": "~2.70.4",
19
+ "@xyo-network/boundwitness-builder": "~2.70.4",
20
+ "@xyo-network/boundwitness-model": "~2.70.4",
21
+ "@xyo-network/config-payload-plugin": "~2.70.4",
22
+ "@xyo-network/core": "~2.70.4",
23
+ "@xyo-network/error": "~2.70.4",
24
+ "@xyo-network/manifest-model": "~2.70.4",
25
+ "@xyo-network/module-events": "~2.70.4",
26
+ "@xyo-network/module-model": "~2.70.4",
27
+ "@xyo-network/payload-builder": "~2.70.4",
28
+ "@xyo-network/payload-model": "~2.70.4",
29
+ "@xyo-network/promise": "~2.70.4",
30
+ "@xyo-network/query-payload-plugin": "~2.70.4",
31
+ "@xyo-network/shared": "~2.70.4",
32
32
  "lodash": "^4.17.21"
33
33
  },
34
34
  "devDependencies": {
@@ -71,5 +71,5 @@
71
71
  },
72
72
  "sideEffects": false,
73
73
  "types": "dist/types/index.d.ts",
74
- "version": "2.70.3"
74
+ "version": "2.70.4"
75
75
  }
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  AddressModuleFilter,
3
3
  ModuleFilter,
4
+ ModuleFilterOptions,
4
5
  ModuleInstance,
5
6
  ModuleRepository,
6
7
  ModuleResolver,
@@ -48,26 +49,35 @@ export class SimpleModuleResolver implements ModuleRepository {
48
49
  throw 'Removing resolvers not supported'
49
50
  }
50
51
 
51
- resolve(filter?: ModuleFilter): Promisable<ModuleInstance[]>
52
- resolve(nameOrAddress: string): Promisable<ModuleInstance | undefined>
53
- resolve(nameOrAddressOrFilter?: ModuleFilter | string): Promisable<ModuleInstance[] | ModuleInstance | undefined> {
54
- if (nameOrAddressOrFilter) {
55
- if (typeof nameOrAddressOrFilter === 'string') {
56
- const result: ModuleInstance | undefined =
57
- this.resolveByName(Object.values(this.modules), [nameOrAddressOrFilter]).pop() ??
58
- this.resolveByAddress(Object.values(this.modules), [nameOrAddressOrFilter]).pop()
59
- return result
60
- } else if ((nameOrAddressOrFilter as AddressModuleFilter).address) {
61
- const result: ModuleInstance[] = this.resolveByAddress(Object.values(this.modules), (nameOrAddressOrFilter as AddressModuleFilter).address)
62
- return result
63
- } else if ((nameOrAddressOrFilter as NameModuleFilter).name) {
64
- const result: ModuleInstance[] = this.resolveByName(Object.values(this.modules), (nameOrAddressOrFilter as NameModuleFilter).name)
65
- return result
66
- } else if ((nameOrAddressOrFilter as QueryModuleFilter).query) {
67
- return this.resolveByQuery(Object.values(this.modules), (nameOrAddressOrFilter as QueryModuleFilter).query)
52
+ resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promisable<T[]>
53
+ resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promisable<T | undefined>
54
+ resolve<T extends ModuleInstance = ModuleInstance>(
55
+ nameOrAddressOrFilter?: ModuleFilter<T> | string,
56
+ options?: ModuleFilterOptions<T>,
57
+ ): Promisable<T[] | T | undefined> {
58
+ const unfiltered = (() => {
59
+ if (nameOrAddressOrFilter) {
60
+ if (typeof nameOrAddressOrFilter === 'string') {
61
+ return (
62
+ this.resolveByName<T>(Object.values(this.modules), [nameOrAddressOrFilter]).pop() ??
63
+ this.resolveByAddress<T>(Object.values(this.modules), [nameOrAddressOrFilter]).pop()
64
+ )
65
+ } else if ((nameOrAddressOrFilter as AddressModuleFilter).address) {
66
+ return this.resolveByAddress<T>(Object.values(this.modules), (nameOrAddressOrFilter as AddressModuleFilter).address)
67
+ } else if ((nameOrAddressOrFilter as NameModuleFilter).name) {
68
+ return this.resolveByName<T>(Object.values(this.modules), (nameOrAddressOrFilter as NameModuleFilter).name)
69
+ } else if ((nameOrAddressOrFilter as QueryModuleFilter).query) {
70
+ return this.resolveByQuery<T>(Object.values(this.modules), (nameOrAddressOrFilter as QueryModuleFilter).query)
71
+ }
72
+ } else {
73
+ return Object.values(this.modules) as T[]
68
74
  }
75
+ })()
76
+ const identity = options?.identity
77
+ if (identity) {
78
+ return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : undefined
69
79
  } else {
70
- return Object.values(this.modules)
80
+ return unfiltered
71
81
  }
72
82
  }
73
83
 
@@ -89,40 +99,44 @@ export class SimpleModuleResolver implements ModuleRepository {
89
99
  }
90
100
  }
91
101
 
92
- private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: T[], address?: string[]): T[] {
93
- return address
94
- ? compact(
95
- flatten(
96
- address?.map((address) => {
97
- return modules.filter((module) => module.address === address)
98
- }),
99
- ),
100
- )
101
- : modules
102
+ private resolveByAddress<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], address?: string[]): T[] {
103
+ return (
104
+ address
105
+ ? compact(
106
+ flatten(
107
+ address?.map((address) => {
108
+ return modules.filter((module) => module.address === address)
109
+ }),
110
+ ),
111
+ )
112
+ : modules
113
+ ) as T[]
102
114
  }
103
115
 
104
- private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: T[], name?: string[]): T[] {
116
+ private resolveByName<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], name?: string[]): T[] {
105
117
  if (name) {
106
- return compact(name.map((name) => modules.filter((module) => module.config?.name === name)).flat())
118
+ return compact(name.map((name) => modules.filter((module) => module.config?.name === name)).flat()) as T[]
107
119
  }
108
- return modules
120
+ return modules as T[]
109
121
  }
110
122
 
111
- private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: T[], query?: string[][]): T[] {
112
- return query
113
- ? compact(
114
- modules.filter(
115
- (module) =>
116
- query?.reduce((supported, queryList) => {
117
- return (
118
- queryList.reduce((supported, query) => {
119
- const queryable = module.queries.includes(query)
120
- return supported && queryable
121
- }, true) || supported
122
- )
123
- }, false),
124
- ),
125
- )
126
- : modules
123
+ private resolveByQuery<T extends ModuleInstance = ModuleInstance>(modules: ModuleInstance[], query?: string[][]): T[] {
124
+ return (
125
+ query
126
+ ? compact(
127
+ modules.filter(
128
+ (module) =>
129
+ query?.reduce((supported, queryList) => {
130
+ return (
131
+ queryList.reduce((supported, query) => {
132
+ const queryable = module.queries.includes(query)
133
+ return supported && queryable
134
+ }, true) || supported
135
+ )
136
+ }, false),
137
+ ),
138
+ )
139
+ : modules
140
+ ) as T[]
127
141
  }
128
142
  }