@xyo-network/bridge-module-resolver 2.47.4 → 2.47.6

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.
@@ -15,9 +15,16 @@ export class BridgeModuleResolver extends CompositeModuleResolver {
15
15
  get isModuleResolver() {
16
16
  return true;
17
17
  }
18
- add(_module, _name) {
18
+ add(_module) {
19
19
  throw new Error('Method not implemented.');
20
20
  }
21
+ async currentResolvedModules() {
22
+ const result = {};
23
+ await Promise.all(Object.entries(this.resolvedModules).map(async ([key, value]) => {
24
+ result[key] = await value;
25
+ }));
26
+ return result;
27
+ }
21
28
  remove(_address) {
22
29
  throw new Error('Method not implemented.');
23
30
  }
@@ -36,26 +43,52 @@ export class BridgeModuleResolver extends CompositeModuleResolver {
36
43
  }
37
44
  }));
38
45
  }
39
- resolveByAddress(targetAddress) {
46
+ async resolveByAddress(targetAddress) {
40
47
  const cached = this.resolvedModules[targetAddress];
41
48
  if (cached)
42
- return cached;
43
- const mod = new ProxyModule(this.bridge, targetAddress);
44
- this.resolvedModules[targetAddress] = mod;
45
- return mod;
49
+ return await cached;
50
+ this.resolvedModules[targetAddress] =
51
+ this.resolvedModules[targetAddress] ??
52
+ (async (address) => {
53
+ const mod = new ProxyModule(this.bridge, address);
54
+ //discover it to set the config in the bridge
55
+ await this.bridge.targetDiscover(targetAddress);
56
+ return mod;
57
+ })(targetAddress);
58
+ return await this.resolvedModules[targetAddress];
46
59
  }
47
- resolveByName(name) {
48
- const cached = this.resolvedModules[name];
49
- if (cached)
50
- return cached;
51
- return undefined;
60
+ async resolveByName(name) {
61
+ return Object.values(await this.currentResolvedModules()).filter((module) => module.config.name === name);
62
+ }
63
+ async resolveByQuery(queries) {
64
+ return Object.values(await this.currentResolvedModules()).filter((module) => {
65
+ //filter out the requested queries
66
+ const found = module.queries.filter((query) => queries.find((q) => q === query));
67
+ //did we find all the requested queries?
68
+ return queries.length === found.length;
69
+ });
52
70
  }
53
71
  async resolveRemoteModules(filter) {
54
- const addresses = filter ? filter?.address : await this.getRemoteAddresses();
55
- const names = filter?.name;
56
- const byAddress = compact(await Promise.all(addresses?.map((address) => this.resolveByAddress(address)) ?? []));
57
- const byName = compact(await Promise.all(names?.map((name) => this.resolveByName(name)) ?? []));
58
- return [...byAddress, ...byName];
72
+ if (filter?.address) {
73
+ return this.resolveRemoteModulesByAddress(filter);
74
+ }
75
+ if (filter?.name) {
76
+ return this.resolveRemoteModulesByName(filter);
77
+ }
78
+ if (filter?.query) {
79
+ return this.resolveRemoteModulesByQuery(filter);
80
+ }
81
+ //get all of them
82
+ return this.resolveRemoteModulesByAddress({ address: await this.getRemoteAddresses() });
83
+ }
84
+ async resolveRemoteModulesByAddress(filter) {
85
+ return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress(address))));
86
+ }
87
+ async resolveRemoteModulesByName(filter) {
88
+ return compact((await Promise.all(filter.name.map(async (name) => await this.resolveByName(name)))).flat());
89
+ }
90
+ async resolveRemoteModulesByQuery(filter) {
91
+ return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery(query)))).flat());
59
92
  }
60
93
  }
61
94
  //# sourceMappingURL=ModuleResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.js","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModuleResolver.js","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { ModuleConfigSchema } from '@xyo-network/module';
2
1
  export class ProxyModule {
3
2
  bridge;
4
3
  _address;
@@ -10,7 +9,7 @@ export class ProxyModule {
10
9
  return this._address;
11
10
  }
12
11
  get config() {
13
- return { schema: ModuleConfigSchema };
12
+ return this.bridge.targetConfig(this.address);
14
13
  }
15
14
  get queries() {
16
15
  return this.bridge.targetQueries(this.address);
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.js","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,kBAAkB,EAAyD,MAAM,qBAAqB,CAAA;AAGrI,MAAM,OAAO,WAAW;IACS;IAAyC;IAAxE,YAA+B,MAAoB,EAAqB,QAAgB;QAAzD,WAAM,GAAN,MAAM,CAAc;QAAqB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAE5F,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;IACvC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAwD,KAAQ,EAAE,QAAuB;QAClG,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IACrE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA2B,EAAE,QAAuB,EAAE,WAA0B;QAC9F,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;IACtF,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,OAAO,CAAC,MAAqB;QACjC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9D,CAAC;CACF"}
1
+ {"version":3,"file":"ProxyModule.js","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,WAAW;IACS;IAAyC;IAAxE,YAA+B,MAAoB,EAAqB,QAAgB;QAAzD,WAAM,GAAN,MAAM,CAAc;QAAqB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAE5F,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAwD,KAAQ,EAAE,QAAuB;QAClG,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IACrE,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA2B,EAAE,QAAuB,EAAE,WAA0B;QAC9F,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAA;IACtF,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,OAAO,CAAC,MAAqB;QACjC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC9D,CAAC;CACF"}
@@ -7,15 +7,18 @@ export declare class BridgeModuleResolver extends CompositeModuleResolver {
7
7
  private resolvedModules;
8
8
  constructor(bridge: BridgeModule);
9
9
  get isModuleResolver(): boolean;
10
- add(module: Module, name?: string | undefined): this;
11
- add(module: Module[], name?: string[] | undefined): this;
12
- add(module: Module | Module[], name?: string | string[] | undefined): this;
13
- remove(name: string | string[]): this;
14
- remove(address: string | string[]): this;
10
+ add(module: Module): this;
11
+ add(module: Module[]): this;
12
+ currentResolvedModules(): Promise<Record<string, ProxyModule>>;
13
+ remove(_address: string | string[]): this;
15
14
  resolve(filter?: ModuleFilter): Promise<ProxyModule[]>;
16
15
  private getRemoteAddresses;
17
16
  private resolveByAddress;
18
17
  private resolveByName;
18
+ private resolveByQuery;
19
19
  private resolveRemoteModules;
20
+ private resolveRemoteModulesByAddress;
21
+ private resolveRemoteModulesByName;
22
+ private resolveRemoteModulesByQuery;
20
23
  }
21
24
  //# sourceMappingURL=ModuleResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIhE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,qBAAa,oBAAqB,SAAQ,uBAAuB;IAKnD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAJnD,OAAO,CAAC,eAAe,CAAkC;gBAI1B,MAAM,EAAE,YAAY;IAInD,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAED,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IACpD,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI;IACxD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI;IAK1E,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IACrC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAKlC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAI9C,kBAAkB;IAchC,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,aAAa;YAMP,oBAAoB;CAOnC"}
1
+ {"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAuB,MAAM,EAAE,YAAY,EAAuC,MAAM,2BAA2B,CAAA;AAI1H,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,qBAAa,oBAAqB,SAAQ,uBAAuB;IAKnD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAJnD,OAAO,CAAC,eAAe,CAA2C;gBAInC,MAAM,EAAE,YAAY;IAInD,IAAW,gBAAgB,IAAI,OAAO,CAErC;IAED,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAKrB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAWpE,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAInC,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAI9C,kBAAkB;YAclB,gBAAgB;YAkBhB,aAAa;YAIb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAsB,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACrI,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,qBAAa,WAAY,YAAW,MAAM;IAC5B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAzD,MAAM,EAAE,YAAY,EAAqB,QAAQ,EAAE,MAAM;IAExF,IAAI,OAAO,WAEV;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,OAAO,aAEV;IAED,IAAI,QAAQ;;;;;;;;;QAEX;IAEK,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3H,SAAS,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAGxD"}
1
+ {"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AACjH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,qBAAa,WAAY,YAAW,MAAM;IAC5B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IAAE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM;gBAAzD,MAAM,EAAE,YAAY,EAAqB,QAAQ,EAAE,MAAM;IAExF,IAAI,OAAO,WAEV;IAED,IAAI,MAAM,IAAI,YAAY,CAEzB;IAED,IAAI,OAAO,aAEV;IAED,IAAI,QAAQ;;;;;;;;;QAEX;IAEK,KAAK,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3H,SAAS,CAAC,KAAK,EAAE,oBAAoB,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAGxD"}
package/package.json CHANGED
@@ -10,16 +10,16 @@
10
10
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js/issues"
11
11
  },
12
12
  "dependencies": {
13
- "@xyo-network/address-payload-plugin": "^2.47.4",
14
- "@xyo-network/bridge-model": "^2.47.4",
15
- "@xyo-network/module": "^2.47.4",
16
- "@xyo-network/module-model": "^2.47.4",
17
- "@xyo-network/payload-model": "^2.47.4",
13
+ "@xyo-network/address-payload-plugin": "^2.47.6",
14
+ "@xyo-network/bridge-model": "^2.47.6",
15
+ "@xyo-network/module": "^2.47.6",
16
+ "@xyo-network/module-model": "^2.47.6",
17
+ "@xyo-network/payload-model": "^2.47.6",
18
18
  "lodash": "^4.17.21"
19
19
  },
20
20
  "devDependencies": {
21
- "@xylabs/ts-scripts-yarn3": "^2.14.15",
22
- "@xylabs/tsconfig": "^2.14.15",
21
+ "@xylabs/ts-scripts-yarn3": "^2.14.16",
22
+ "@xylabs/tsconfig": "^2.14.16",
23
23
  "typescript": "^4.9.5"
24
24
  },
25
25
  "description": "Primary SDK for using XYO Protocol 2.0",
@@ -55,5 +55,5 @@
55
55
  },
56
56
  "sideEffects": false,
57
57
  "types": "dist/types/index.d.ts",
58
- "version": "2.47.4"
58
+ "version": "2.47.6"
59
59
  }
@@ -1,14 +1,14 @@
1
1
  import { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'
2
2
  import { BridgeModule } from '@xyo-network/bridge-model'
3
3
  import { CompositeModuleResolver } from '@xyo-network/module'
4
- import { Module, ModuleFilter } from '@xyo-network/module-model'
4
+ import { AddressModuleFilter, Module, ModuleFilter, NameModuleFilter, QueryModuleFilter } from '@xyo-network/module-model'
5
5
  import compact from 'lodash/compact'
6
6
  import flatten from 'lodash/flatten'
7
7
 
8
8
  import { ProxyModule } from './ProxyModule'
9
9
 
10
10
  export class BridgeModuleResolver extends CompositeModuleResolver {
11
- private resolvedModules: Record<string, ProxyModule> = {}
11
+ private resolvedModules: Record<string, Promise<ProxyModule>> = {}
12
12
 
13
13
  // TODO: Allow optional ctor param for supplying address for nested Nodes
14
14
  // protected readonly address?: string,
@@ -20,16 +20,24 @@ export class BridgeModuleResolver extends CompositeModuleResolver {
20
20
  return true
21
21
  }
22
22
 
23
- add(module: Module, name?: string | undefined): this
24
- add(module: Module[], name?: string[] | undefined): this
25
- add(module: Module | Module[], name?: string | string[] | undefined): this
26
- add(_module: unknown, _name?: unknown): this {
23
+ add(module: Module): this
24
+ add(module: Module[]): this
25
+ add(_module: Module | Module[]): this {
27
26
  throw new Error('Method not implemented.')
28
27
  }
29
28
 
30
- remove(name: string | string[]): this
31
- remove(address: string | string[]): this
32
- remove(_address: unknown): this {
29
+ async currentResolvedModules(): Promise<Record<string, ProxyModule>> {
30
+ const result: Record<string, ProxyModule> = {}
31
+ await Promise.all(
32
+ Object.entries(this.resolvedModules).map(async ([key, value]) => {
33
+ result[key] = await value
34
+ }),
35
+ )
36
+
37
+ return result
38
+ }
39
+
40
+ remove(_address: string | string[]): this {
33
41
  throw new Error('Method not implemented.')
34
42
  }
35
43
 
@@ -51,25 +59,64 @@ export class BridgeModuleResolver extends CompositeModuleResolver {
51
59
  )
52
60
  }
53
61
 
54
- private resolveByAddress(targetAddress: string): ProxyModule | undefined {
62
+ private async resolveByAddress(targetAddress: string): Promise<ProxyModule | undefined> {
55
63
  const cached = this.resolvedModules[targetAddress]
56
- if (cached) return cached
57
- const mod = new ProxyModule(this.bridge, targetAddress)
58
- this.resolvedModules[targetAddress] = mod
59
- return mod
64
+ if (cached) return await cached
65
+
66
+ this.resolvedModules[targetAddress] =
67
+ this.resolvedModules[targetAddress] ??
68
+ (async (address: string) => {
69
+ const mod = new ProxyModule(this.bridge, address)
70
+
71
+ //discover it to set the config in the bridge
72
+ await this.bridge.targetDiscover(targetAddress)
73
+
74
+ return mod
75
+ })(targetAddress)
76
+
77
+ return await this.resolvedModules[targetAddress]
60
78
  }
61
79
 
62
- private resolveByName(name: string): ProxyModule | undefined {
63
- const cached = this.resolvedModules[name]
64
- if (cached) return cached
65
- return undefined
80
+ private async resolveByName(name: string): Promise<ProxyModule[] | undefined> {
81
+ return Object.values(await this.currentResolvedModules()).filter((module) => module.config.name === name)
82
+ }
83
+
84
+ private async resolveByQuery(queries: string[]): Promise<ProxyModule[]> {
85
+ return Object.values(await this.currentResolvedModules()).filter((module) => {
86
+ //filter out the requested queries
87
+ const found = module.queries.filter((query) => queries.find((q) => q === query))
88
+
89
+ //did we find all the requested queries?
90
+ return queries.length === found.length
91
+ })
66
92
  }
67
93
 
68
94
  private async resolveRemoteModules(filter?: ModuleFilter): Promise<ProxyModule[]> {
69
- const addresses = filter ? filter?.address : await this.getRemoteAddresses()
70
- const names = filter?.name
71
- const byAddress = compact(await Promise.all(addresses?.map((address) => this.resolveByAddress(address)) ?? []))
72
- const byName = compact(await Promise.all(names?.map((name) => this.resolveByName(name)) ?? []))
73
- return [...byAddress, ...byName]
95
+ if ((filter as AddressModuleFilter)?.address) {
96
+ return this.resolveRemoteModulesByAddress(filter as AddressModuleFilter)
97
+ }
98
+
99
+ if ((filter as NameModuleFilter)?.name) {
100
+ return this.resolveRemoteModulesByName(filter as NameModuleFilter)
101
+ }
102
+
103
+ if ((filter as QueryModuleFilter)?.query) {
104
+ return this.resolveRemoteModulesByQuery(filter as QueryModuleFilter)
105
+ }
106
+
107
+ //get all of them
108
+ return this.resolveRemoteModulesByAddress({ address: await this.getRemoteAddresses() })
109
+ }
110
+
111
+ private async resolveRemoteModulesByAddress(filter: AddressModuleFilter): Promise<ProxyModule[]> {
112
+ return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress(address))))
113
+ }
114
+
115
+ private async resolveRemoteModulesByName(filter: NameModuleFilter): Promise<ProxyModule[]> {
116
+ return compact((await Promise.all(filter.name.map(async (name) => await this.resolveByName(name)))).flat())
117
+ }
118
+
119
+ private async resolveRemoteModulesByQuery(filter: QueryModuleFilter): Promise<ProxyModule[]> {
120
+ return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery(query)))).flat())
74
121
  }
75
122
  }
@@ -1,5 +1,5 @@
1
1
  import { BridgeModule } from '@xyo-network/bridge-model'
2
- import { Module, ModuleConfig, ModuleConfigSchema, ModuleFilter, ModuleQueryResult, XyoQueryBoundWitness } from '@xyo-network/module'
2
+ import { Module, ModuleConfig, ModuleFilter, ModuleQueryResult, XyoQueryBoundWitness } from '@xyo-network/module'
3
3
  import { XyoPayload } from '@xyo-network/payload-model'
4
4
 
5
5
  export class ProxyModule implements Module {
@@ -10,7 +10,7 @@ export class ProxyModule implements Module {
10
10
  }
11
11
 
12
12
  get config(): ModuleConfig {
13
- return { schema: ModuleConfigSchema }
13
+ return this.bridge.targetConfig(this.address)
14
14
  }
15
15
 
16
16
  get queries() {