@xyo-network/bridge-module-resolver 2.47.5 → 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.
- package/dist/cjs/ModuleResolver.js +63 -17
- package/dist/cjs/ModuleResolver.js.map +1 -1
- package/dist/cjs/ProxyModule.js +1 -2
- package/dist/cjs/ProxyModule.js.map +1 -1
- package/dist/docs.json +727 -1081
- package/dist/esm/ModuleResolver.js +49 -16
- package/dist/esm/ModuleResolver.js.map +1 -1
- package/dist/esm/ProxyModule.js +1 -2
- package/dist/esm/ProxyModule.js.map +1 -1
- package/dist/types/ModuleResolver.d.ts +8 -5
- package/dist/types/ModuleResolver.d.ts.map +1 -1
- package/dist/types/ProxyModule.d.ts.map +1 -1
- package/package.json +8 -8
- package/src/ModuleResolver.ts +70 -23
- package/src/ProxyModule.ts +2 -2
|
@@ -15,9 +15,16 @@ export class BridgeModuleResolver extends CompositeModuleResolver {
|
|
|
15
15
|
get isModuleResolver() {
|
|
16
16
|
return true;
|
|
17
17
|
}
|
|
18
|
-
add(_module
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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":"AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,qCAAqC,CAAA;AAEnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,OAAO,OAAO,MAAM,gBAAgB,CAAA;AACpC,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,OAAO,oBAAqB,SAAQ,uBAAuB;IAKhC;IAJvB,eAAe,
|
|
1
|
+
{"version":3,"file":"ModuleResolver.js","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/ProxyModule.js
CHANGED
|
@@ -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
|
|
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":"
|
|
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
|
|
11
|
-
add(module: Module[]
|
|
12
|
-
|
|
13
|
-
remove(
|
|
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,
|
|
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,
|
|
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.
|
|
14
|
-
"@xyo-network/bridge-model": "^2.47.
|
|
15
|
-
"@xyo-network/module": "^2.47.
|
|
16
|
-
"@xyo-network/module-model": "^2.47.
|
|
17
|
-
"@xyo-network/payload-model": "^2.47.
|
|
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.
|
|
22
|
-
"@xylabs/tsconfig": "^2.14.
|
|
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.
|
|
58
|
+
"version": "2.47.6"
|
|
59
59
|
}
|
package/src/ModuleResolver.ts
CHANGED
|
@@ -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
|
|
24
|
-
add(module: Module[]
|
|
25
|
-
add(
|
|
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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
58
|
-
this.resolvedModules[targetAddress] =
|
|
59
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
}
|
package/src/ProxyModule.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BridgeModule } from '@xyo-network/bridge-model'
|
|
2
|
-
import { Module, ModuleConfig,
|
|
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
|
|
13
|
+
return this.bridge.targetConfig(this.address)
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
get queries() {
|