@xyo-network/bridge-module-resolver 2.75.13 → 2.75.15
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/ModuleResolver.cjs +10 -7
- package/dist/browser/ModuleResolver.cjs.map +1 -1
- package/dist/browser/ModuleResolver.d.cts +4 -3
- package/dist/browser/ModuleResolver.d.cts.map +1 -1
- package/dist/browser/ModuleResolver.d.mts +4 -3
- package/dist/browser/ModuleResolver.d.mts.map +1 -1
- package/dist/browser/ModuleResolver.d.ts +4 -3
- package/dist/browser/ModuleResolver.d.ts.map +1 -1
- package/dist/browser/ModuleResolver.js +6 -6
- package/dist/browser/ModuleResolver.js.map +1 -1
- package/dist/browser/ProxyModule.cjs +4 -3
- package/dist/browser/ProxyModule.cjs.map +1 -1
- package/dist/browser/ProxyModule.d.cts +13 -10
- package/dist/browser/ProxyModule.d.cts.map +1 -1
- package/dist/browser/ProxyModule.d.mts +13 -10
- package/dist/browser/ProxyModule.d.mts.map +1 -1
- package/dist/browser/ProxyModule.d.ts +13 -10
- package/dist/browser/ProxyModule.d.ts.map +1 -1
- package/dist/browser/ProxyModule.js +2 -4
- package/dist/browser/ProxyModule.js.map +1 -1
- package/dist/browser/index.cjs +10 -7
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +6 -6
- package/dist/browser/index.js.map +1 -1
- package/dist/docs.json +3209 -2670
- package/dist/node/ModuleResolver.d.cts +4 -3
- package/dist/node/ModuleResolver.d.cts.map +1 -1
- package/dist/node/ModuleResolver.d.mts +4 -3
- package/dist/node/ModuleResolver.d.mts.map +1 -1
- package/dist/node/ModuleResolver.d.ts +4 -3
- package/dist/node/ModuleResolver.d.ts.map +1 -1
- package/dist/node/ModuleResolver.js +10 -7
- package/dist/node/ModuleResolver.js.map +1 -1
- package/dist/node/ModuleResolver.mjs +6 -6
- package/dist/node/ModuleResolver.mjs.map +1 -1
- package/dist/node/ProxyModule.d.cts +13 -10
- package/dist/node/ProxyModule.d.cts.map +1 -1
- package/dist/node/ProxyModule.d.mts +13 -10
- package/dist/node/ProxyModule.d.mts.map +1 -1
- package/dist/node/ProxyModule.d.ts +13 -10
- package/dist/node/ProxyModule.d.ts.map +1 -1
- package/dist/node/ProxyModule.js +4 -3
- package/dist/node/ProxyModule.js.map +1 -1
- package/dist/node/ProxyModule.mjs +2 -4
- package/dist/node/ProxyModule.mjs.map +1 -1
- package/dist/node/index.js +10 -7
- package/dist/node/index.js.map +1 -1
- package/dist/node/index.mjs +6 -6
- package/dist/node/index.mjs.map +1 -1
- package/package.json +24 -22
- package/src/ModuleResolver.ts +4 -2
- package/src/ProxyModule.ts +3 -3
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
2
2
|
import { BridgeModule } from '@xyo-network/bridge-model';
|
|
3
|
-
import { CompositeModuleResolver } from '@xyo-network/module';
|
|
4
3
|
import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
|
|
5
|
-
|
|
4
|
+
import { CompositeModuleResolver } from '@xyo-network/module-resolver';
|
|
5
|
+
export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
|
|
6
6
|
protected readonly bridge: BridgeModule;
|
|
7
7
|
protected wrapperAccount: AccountInstance;
|
|
8
|
+
protected options?: ModuleFilterOptions<T> | undefined;
|
|
8
9
|
private primed;
|
|
9
10
|
private remoteAddresses?;
|
|
10
11
|
private resolvedModules;
|
|
11
|
-
constructor(bridge: BridgeModule, wrapperAccount: AccountInstance);
|
|
12
|
+
constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
|
|
12
13
|
get isModuleResolver(): boolean;
|
|
13
14
|
add(module: Module): this;
|
|
14
15
|
add(module: Module[]): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD,OAAO,
|
|
1
|
+
{"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAUtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
2
2
|
import { BridgeModule } from '@xyo-network/bridge-model';
|
|
3
|
-
import { CompositeModuleResolver } from '@xyo-network/module';
|
|
4
3
|
import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
|
|
5
|
-
|
|
4
|
+
import { CompositeModuleResolver } from '@xyo-network/module-resolver';
|
|
5
|
+
export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
|
|
6
6
|
protected readonly bridge: BridgeModule;
|
|
7
7
|
protected wrapperAccount: AccountInstance;
|
|
8
|
+
protected options?: ModuleFilterOptions<T> | undefined;
|
|
8
9
|
private primed;
|
|
9
10
|
private remoteAddresses?;
|
|
10
11
|
private resolvedModules;
|
|
11
|
-
constructor(bridge: BridgeModule, wrapperAccount: AccountInstance);
|
|
12
|
+
constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
|
|
12
13
|
get isModuleResolver(): boolean;
|
|
13
14
|
add(module: Module): this;
|
|
14
15
|
add(module: Module[]): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD,OAAO,
|
|
1
|
+
{"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAUtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { AccountInstance } from '@xyo-network/account-model';
|
|
2
2
|
import { BridgeModule } from '@xyo-network/bridge-model';
|
|
3
|
-
import { CompositeModuleResolver } from '@xyo-network/module';
|
|
4
3
|
import { Module, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleResolver } from '@xyo-network/module-model';
|
|
5
|
-
|
|
4
|
+
import { CompositeModuleResolver } from '@xyo-network/module-resolver';
|
|
5
|
+
export declare class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {
|
|
6
6
|
protected readonly bridge: BridgeModule;
|
|
7
7
|
protected wrapperAccount: AccountInstance;
|
|
8
|
+
protected options?: ModuleFilterOptions<T> | undefined;
|
|
8
9
|
private primed;
|
|
9
10
|
private remoteAddresses?;
|
|
10
11
|
private resolvedModules;
|
|
11
|
-
constructor(bridge: BridgeModule, wrapperAccount: AccountInstance);
|
|
12
|
+
constructor(bridge: BridgeModule, wrapperAccount: AccountInstance, options?: ModuleFilterOptions<T> | undefined);
|
|
12
13
|
get isModuleResolver(): boolean;
|
|
13
14
|
add(module: Module): this;
|
|
14
15
|
add(module: Module[]): this;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD,OAAO,
|
|
1
|
+
{"version":3,"file":"ModuleResolver.d.ts","sourceRoot":"","sources":["../../src/ModuleResolver.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAI5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAIxD,OAAO,EAEL,MAAM,EACN,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,cAAc,EAGf,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAUtE,qBAAa,oBAAoB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,SAAQ,uBAAwB,YAAW,cAAc;IAQlI,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY;IACvC,SAAS,CAAC,cAAc,EAAE,eAAe;IACzC,SAAS,CAAC,OAAO,CAAC;IATpB,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,eAAe,CAAC,CAAmB;IAC3C,OAAO,CAAC,eAAe,CAA8C;gBAKhD,MAAM,EAAE,YAAY,EAC7B,cAAc,EAAE,eAAe,EAC/B,OAAO,CAAC,oCAAwB;IAK5C,IAAa,gBAAgB,IAAI,OAAO,CAEvC;IAEQ,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IACzB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAK9B,sBAAsB,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAW/F,kBAAkB;IAmBxB,KAAK;IAUI,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAIlD,KAAK;IAMU,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,MAAM,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAC5H,OAAO,CAAC,CAAC,SAAS,cAAc,GAAG,cAAc,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;YAgCpI,gBAAgB;YAoDhB,aAAa;YAOb,cAAc;YAUd,oBAAoB;YAiBpB,6BAA6B;YAI7B,0BAA0B;YAI1B,2BAA2B;CAG1C"}
|
|
@@ -30,7 +30,8 @@ var import_archivist_wrapper = require("@xyo-network/archivist-wrapper");
|
|
|
30
30
|
var import_diviner = require("@xyo-network/diviner");
|
|
31
31
|
var import_diviner_model = require("@xyo-network/diviner-model");
|
|
32
32
|
var import_error = require("@xyo-network/error");
|
|
33
|
-
var
|
|
33
|
+
var import_module_resolver2 = require("@xyo-network/module-resolver");
|
|
34
|
+
var import_module_wrapper = require("@xyo-network/module-wrapper");
|
|
34
35
|
var import_node_model = require("@xyo-network/node-model");
|
|
35
36
|
var import_node_wrapper = require("@xyo-network/node-wrapper");
|
|
36
37
|
var import_sentinel = require("@xyo-network/sentinel");
|
|
@@ -42,14 +43,15 @@ var import_assert = require("@xylabs/assert");
|
|
|
42
43
|
var import_lodash = require("@xylabs/lodash");
|
|
43
44
|
var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
|
|
44
45
|
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
45
|
-
var
|
|
46
|
+
var import_module_abstract = require("@xyo-network/module-abstract");
|
|
47
|
+
var import_module_resolver = require("@xyo-network/module-resolver");
|
|
46
48
|
var ProxyModuleConfigSchema = "network.xyo.module.proxy.config";
|
|
47
|
-
var ProxyModule = class extends
|
|
49
|
+
var ProxyModule = class extends import_module_abstract.BaseEmitter {
|
|
48
50
|
constructor(proxyParams) {
|
|
49
51
|
super({ config: proxyParams.bridge.targetConfig(proxyParams.address) });
|
|
50
52
|
this.proxyParams = proxyParams;
|
|
51
53
|
}
|
|
52
|
-
upResolver = new
|
|
54
|
+
upResolver = new import_module_resolver.CompositeModuleResolver();
|
|
53
55
|
_busyCount = 0;
|
|
54
56
|
get address() {
|
|
55
57
|
return this.proxyParams.address.toLowerCase();
|
|
@@ -144,13 +146,14 @@ var ProxyModule = class extends import_module.BaseEmitter {
|
|
|
144
146
|
};
|
|
145
147
|
|
|
146
148
|
// src/ModuleResolver.ts
|
|
147
|
-
var BridgeModuleResolver = class _BridgeModuleResolver extends
|
|
149
|
+
var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_resolver2.CompositeModuleResolver {
|
|
148
150
|
// TODO: Allow optional ctor param for supplying address for nested Nodes
|
|
149
151
|
// protected readonly address?: string,
|
|
150
|
-
constructor(bridge, wrapperAccount) {
|
|
152
|
+
constructor(bridge, wrapperAccount, options) {
|
|
151
153
|
super();
|
|
152
154
|
this.bridge = bridge;
|
|
153
155
|
this.wrapperAccount = wrapperAccount;
|
|
156
|
+
this.options = options;
|
|
154
157
|
}
|
|
155
158
|
primed = void 0;
|
|
156
159
|
remoteAddresses;
|
|
@@ -255,7 +258,7 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends import_module2.Co
|
|
|
255
258
|
return import_sentinel.SentinelWrapper.wrap(mod, this.wrapperAccount);
|
|
256
259
|
}
|
|
257
260
|
console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`);
|
|
258
|
-
return
|
|
261
|
+
return import_module_wrapper.ModuleWrapper.wrap(mod, this.wrapperAccount);
|
|
259
262
|
} catch (ex) {
|
|
260
263
|
(0, import_error.handleError)(ex, (error) => {
|
|
261
264
|
console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { DivinerWrapper } from '@xyo-network/diviner'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { handleError } from '@xyo-network/error'\nimport { CompositeModuleResolver, ModuleWrapper } from '@xyo-network/module'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule, SentinelWrapper } from '@xyo-network/sentinel'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover()\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\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 async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.find((address) => address === targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-builder'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ManifestPayloadSchema, ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AddressPreviousHashPayload,\n BaseEmitter,\n CompositeModuleResolver,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Promisable } from '@xyo-network/promise'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n const config = this.bridge.targetConfig(this.address)\n return config\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address != this.address ? address : undefined\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n if (typeof nameOrAddressOrFilter === 'string') {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n } else {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n }\n })\n }\n}\n"],"mappings":"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","names":["import_lodash","import_address_payload_plugin","import_module","module"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { DivinerWrapper } from '@xyo-network/diviner'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { handleError } from '@xyo-network/error'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule, SentinelWrapper } from '@xyo-network/sentinel'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover()\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\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 async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.find((address) => address === targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-builder'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ManifestPayloadSchema, ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Promisable } from '@xyo-network/promise'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n const config = this.bridge.targetConfig(this.address)\n return config\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address != this.address ? address : undefined\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n if (typeof nameOrAddressOrFilter === 'string') {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n } else {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n }\n })\n }\n}\n"],"mappings":"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","names":["import_lodash","import_address_payload_plugin","import_module_resolver","module"]}
|
|
@@ -6,7 +6,8 @@ import { ArchivistWrapper } from "@xyo-network/archivist-wrapper";
|
|
|
6
6
|
import { DivinerWrapper } from "@xyo-network/diviner";
|
|
7
7
|
import { isDivinerModule } from "@xyo-network/diviner-model";
|
|
8
8
|
import { handleError } from "@xyo-network/error";
|
|
9
|
-
import { CompositeModuleResolver as CompositeModuleResolver2
|
|
9
|
+
import { CompositeModuleResolver as CompositeModuleResolver2 } from "@xyo-network/module-resolver";
|
|
10
|
+
import { ModuleWrapper } from "@xyo-network/module-wrapper";
|
|
10
11
|
import { isNodeModule } from "@xyo-network/node-model";
|
|
11
12
|
import { NodeWrapper } from "@xyo-network/node-wrapper";
|
|
12
13
|
import { isSentinelModule, SentinelWrapper } from "@xyo-network/sentinel";
|
|
@@ -18,10 +19,8 @@ import { assertEx } from "@xylabs/assert";
|
|
|
18
19
|
import { compact } from "@xylabs/lodash";
|
|
19
20
|
import { AddressSchema } from "@xyo-network/address-payload-plugin";
|
|
20
21
|
import { ManifestPayloadSchema } from "@xyo-network/manifest-model";
|
|
21
|
-
import {
|
|
22
|
-
|
|
23
|
-
CompositeModuleResolver
|
|
24
|
-
} from "@xyo-network/module";
|
|
22
|
+
import { BaseEmitter } from "@xyo-network/module-abstract";
|
|
23
|
+
import { CompositeModuleResolver } from "@xyo-network/module-resolver";
|
|
25
24
|
var ProxyModuleConfigSchema = "network.xyo.module.proxy.config";
|
|
26
25
|
var ProxyModule = class extends BaseEmitter {
|
|
27
26
|
constructor(proxyParams) {
|
|
@@ -126,10 +125,11 @@ var ProxyModule = class extends BaseEmitter {
|
|
|
126
125
|
var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleResolver2 {
|
|
127
126
|
// TODO: Allow optional ctor param for supplying address for nested Nodes
|
|
128
127
|
// protected readonly address?: string,
|
|
129
|
-
constructor(bridge, wrapperAccount) {
|
|
128
|
+
constructor(bridge, wrapperAccount, options) {
|
|
130
129
|
super();
|
|
131
130
|
this.bridge = bridge;
|
|
132
131
|
this.wrapperAccount = wrapperAccount;
|
|
132
|
+
this.options = options;
|
|
133
133
|
}
|
|
134
134
|
primed = void 0;
|
|
135
135
|
remoteAddresses;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { DivinerWrapper } from '@xyo-network/diviner'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { handleError } from '@xyo-network/error'\nimport { CompositeModuleResolver, ModuleWrapper } from '@xyo-network/module'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule, SentinelWrapper } from '@xyo-network/sentinel'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover()\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\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 async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.find((address) => address === targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-builder'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ManifestPayloadSchema, ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport {\n AddressPreviousHashPayload,\n BaseEmitter,\n CompositeModuleResolver,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Promisable } from '@xyo-network/promise'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n const config = this.bridge.targetConfig(this.address)\n return config\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address != this.address ? address : undefined\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n if (typeof nameOrAddressOrFilter === 'string') {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n } else {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n }\n })\n }\n}\n"],"mappings":"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","names":["compact","AddressSchema","CompositeModuleResolver","CompositeModuleResolver","compact","AddressSchema"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { compact } from '@xylabs/lodash'\nimport { AccountInstance } from '@xyo-network/account-model'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { DivinerWrapper } from '@xyo-network/diviner'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { handleError } from '@xyo-network/error'\nimport {\n AddressModuleFilter,\n Module,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleResolver,\n NameModuleFilter,\n QueryModuleFilter,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule, SentinelWrapper } from '@xyo-network/sentinel'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nimport { ProxyModule, ProxyModuleConfigSchema, ProxyModuleParams } from './ProxyModule'\n\nexport class BridgeModuleResolver<T extends ModuleInstance = ModuleInstance> extends CompositeModuleResolver implements ModuleResolver {\n private primed: Promise<boolean> | undefined = undefined\n private remoteAddresses?: Promise<string[]>\n private resolvedModules: Record<string, Promise<ModuleInstance>> = {}\n\n // TODO: Allow optional ctor param for supplying address for nested Nodes\n // protected readonly address?: string,\n constructor(\n protected readonly bridge: BridgeModule,\n protected wrapperAccount: AccountInstance,\n protected options?: ModuleFilterOptions<T>,\n ) {\n super()\n }\n\n override get isModuleResolver(): boolean {\n return true\n }\n\n override add(module: Module): this\n override add(module: Module[]): this\n override add(_module: Module | Module[]): this {\n throw new Error('Method not implemented.')\n }\n\n async currentResolvedModules<T extends ModuleInstance = ModuleInstance>(): Promise<Record<string, T>> {\n const result: Record<string, T> = {}\n await Promise.all(\n Object.entries(this.resolvedModules).map(async ([key, value]) => {\n result[key] = (await value) as T\n }),\n )\n\n return result\n }\n\n async getRemoteAddresses() {\n this.remoteAddresses =\n this.remoteAddresses ??\n (async () => {\n const discover = await this.bridge.targetDiscover()\n return compact(\n discover?.map((payload) => {\n if (payload.schema === AddressSchema) {\n const schemaPayload = payload as AddressPayload\n return schemaPayload.address\n } else {\n return null\n }\n }),\n )\n })()\n return await this.remoteAddresses\n }\n\n prime() {\n this.primed =\n this.primed ??\n (async () => {\n await this.resolveRemoteModules()\n return true\n })()\n return this.primed\n }\n\n override remove(_address: string | string[]): this {\n throw new Error('Method not implemented.')\n }\n\n reset() {\n this.primed = undefined\n this.remoteAddresses = undefined\n this.resolvedModules = {}\n }\n\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(nameOrAddress: string, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n nameOrAddressOrFilter?: ModuleFilter<T> | string,\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n const unfiltered = await (async () => {\n const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 }\n await this.prime()\n await this.resolveRemoteModules()\n if (typeof nameOrAddressOrFilter === 'string') {\n if (mutatedOptions.maxDepth < 0) {\n return undefined\n }\n const result: T | undefined = (await this.resolveByAddress<T>(nameOrAddressOrFilter)) ?? (await this.resolveByName<T>(nameOrAddressOrFilter))\n return result\n } else {\n if (mutatedOptions.maxDepth < 0) {\n return []\n }\n const result: T[] = await this.resolveRemoteModules<T>(nameOrAddressOrFilter)\n return result\n }\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 async resolveByAddress<T extends ModuleInstance = ModuleInstance>(targetAddress: string): Promise<T | undefined> {\n const remoteAddresses = await this.getRemoteAddresses()\n\n //check if it is even there\n if (!remoteAddresses.find((address) => address === targetAddress)) {\n //this.logger?.log(`Not in RA: ${targetAddress}`)\n return undefined\n }\n\n const cached = this.resolvedModules[targetAddress]\n if (cached) return (await cached) as T\n\n this.resolvedModules[targetAddress] =\n this.resolvedModules[targetAddress] ??\n (async (address: string) => {\n //discover it to set the config in the bridge\n await this.bridge.targetDiscover(address)\n\n const mod: Module = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } } as ProxyModuleParams)\n\n try {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, this.wrapperAccount)\n }\n\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, this.wrapperAccount)\n }\n console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`)\n return ModuleWrapper.wrap(mod, this.wrapperAccount)\n } catch (ex) {\n handleError(ex, (error) => {\n console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`)\n })\n }\n })(targetAddress)\n\n return (await this.resolvedModules[targetAddress]) as T\n }\n\n private async resolveByName<T extends ModuleInstance = ModuleInstance>(name: string): Promise<T | undefined> {\n const modules = await this.currentResolvedModules()\n return Object.values(modules)\n .filter((module) => module.config.name === name)\n .pop() as T\n }\n\n private async resolveByQuery<T extends ModuleInstance = ModuleInstance>(queries: string[]): Promise<T[]> {\n return Object.values(await this.currentResolvedModules()).filter((module) => {\n //filter out the requested queries\n const found = module.queries.filter((query) => queries.find((q) => q === query))\n\n //did we find all the requested queries?\n return queries.length === found.length\n }) as T[]\n }\n\n private async resolveRemoteModules<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter): Promise<T[]> {\n if ((filter as AddressModuleFilter)?.address) {\n return await this.resolveRemoteModulesByAddress<T>(filter as AddressModuleFilter)\n }\n\n if ((filter as NameModuleFilter)?.name) {\n return await this.resolveRemoteModulesByName<T>(filter as NameModuleFilter)\n }\n\n if ((filter as QueryModuleFilter)?.query) {\n return await this.resolveRemoteModulesByQuery<T>(filter as QueryModuleFilter)\n }\n\n //get all of them\n return await this.resolveRemoteModulesByAddress<T>({ address: await this.getRemoteAddresses() })\n }\n\n private async resolveRemoteModulesByAddress<T extends ModuleInstance = ModuleInstance>(filter: AddressModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress<T>(address))))\n }\n\n private async resolveRemoteModulesByName<T extends ModuleInstance = ModuleInstance>(filter: NameModuleFilter): Promise<T[]> {\n return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName<T>(name))))\n }\n\n private async resolveRemoteModulesByQuery<T extends ModuleInstance = ModuleInstance>(filter: QueryModuleFilter): Promise<T[]> {\n return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery<T>(query)))).flat())\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { compact } from '@xylabs/lodash'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-builder'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ManifestPayloadSchema, ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport { BaseEmitter } from '@xyo-network/module-abstract'\nimport {\n AddressPreviousHashPayload,\n ModuleBusyEventArgs,\n ModuleConfig,\n ModuleDescription,\n ModuleEventData,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleInstance,\n ModuleParams,\n ModuleQueryResult,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\nimport { Payload } from '@xyo-network/payload-model'\nimport { Promisable } from '@xyo-network/promise'\n\nexport type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\nexport const ProxyModuleConfigSchema: ProxyModuleConfigSchema = 'network.xyo.module.proxy.config'\n\nexport type TProxyModuleConfig = ModuleConfig<{ schema: ProxyModuleConfigSchema }>\n\nexport type ProxyModuleParams = ModuleParams<\n TProxyModuleConfig,\n {\n address: string\n bridge: BridgeModule\n }\n>\n\nexport class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {\n readonly upResolver = new CompositeModuleResolver()\n\n private _busyCount = 0\n\n constructor(public proxyParams: ProxyModuleParams) {\n super({ config: proxyParams.bridge.targetConfig(proxyParams.address) })\n }\n\n get address() {\n return this.proxyParams.address.toLowerCase()\n }\n\n get bridge() {\n return this.proxyParams.bridge\n }\n\n get config(): ModuleConfig {\n const config = this.bridge.targetConfig(this.address)\n return config\n }\n\n get downResolver() {\n return assertEx(this.bridge.targetDownResolver(this.address), 'Unable to get resolver')\n }\n\n get queries() {\n return this.bridge.targetQueries(this.address)\n }\n\n addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n throw Error('Not Implemented')\n }\n\n async busy<R>(closure: () => Promise<R>) {\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: true, module: this }\n await this.emit('moduleBusy', args)\n }\n this._busyCount++\n try {\n return await closure()\n } finally {\n this._busyCount--\n if (this._busyCount <= 0) {\n this._busyCount = 0\n const args: ModuleBusyEventArgs = { busy: false, module: this }\n await this.emit('moduleBusy', args)\n }\n }\n }\n\n async describe(): Promise<ModuleDescription> {\n return await this.busy(async () => {\n const description: ModuleDescription = {\n address: this.address,\n queries: this.queries,\n }\n if (this.config.name) {\n description.name = this.config.name\n }\n\n const discover = await this.discover()\n\n description.children = compact(\n discover?.map((payload) => {\n const address = payload.schema === AddressSchema ? (payload as AddressPayload).address : undefined\n return address != this.address ? address : undefined\n }) ?? [],\n )\n\n return description\n })\n }\n\n async discover(): Promise<Payload[]> {\n return await this.busy(async () => {\n return await this.bridge.targetDiscover()\n })\n }\n\n manifest(_depth?: number): Promisable<ModuleManifestPayload> {\n const name = this.config.name ?? 'Anonymous'\n return { config: { name, ...this.config }, schema: ManifestPayloadSchema }\n }\n\n moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n throw Error('Not Implemented')\n }\n\n previousHash(): Promise<string | undefined> {\n throw Error('Not Implemented')\n }\n\n async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n return await this.busy(async () => {\n const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), 'Remote Query Failed')\n await this.emit('moduleQueried', { module: this, payloads, query, result })\n return result\n })\n }\n\n async queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean> {\n return await this.bridge.targetQueryable(this.address, query, payloads, queryConfig)\n }\n\n /* Resolves a filter from the perspective of the module, including through the parent/gateway module */\n resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>\n resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>\n async resolve(\n nameOrAddressOrFilter?: ModuleFilter | string,\n options?: ModuleFilterOptions,\n ): Promise<ModuleInstance | ModuleInstance[] | undefined> {\n return await this.busy(async () => {\n if (typeof nameOrAddressOrFilter === 'string') {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n } else {\n return await this.bridge.targetResolve(this.address, nameOrAddressOrFilter, options)\n }\n })\n }\n}\n"],"mappings":"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","names":["compact","AddressSchema","CompositeModuleResolver","CompositeModuleResolver","compact","AddressSchema"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
|
|
2
2
|
import { BridgeModule } from '@xyo-network/bridge-model';
|
|
3
3
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
4
|
-
import {
|
|
4
|
+
import { BaseEmitter } from '@xyo-network/module-abstract';
|
|
5
|
+
import { AddressPreviousHashPayload, ModuleConfig, ModuleDescription, ModuleEventData, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
|
|
6
|
+
import { CompositeModuleResolver } from '@xyo-network/module-resolver';
|
|
5
7
|
import { Payload } from '@xyo-network/payload-model';
|
|
6
8
|
import { Promisable } from '@xyo-network/promise';
|
|
7
9
|
export type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config';
|
|
@@ -23,38 +25,39 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
|
|
|
23
25
|
account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
|
|
24
26
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
25
27
|
accountDerivationPath?: string | undefined;
|
|
26
|
-
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
27
|
-
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
28
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
29
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
28
30
|
readonly name?: string | undefined;
|
|
29
31
|
readonly paging?: Record<string, {
|
|
30
32
|
size?: number | undefined;
|
|
31
33
|
}> | undefined;
|
|
32
34
|
readonly security?: {
|
|
33
35
|
readonly allowAnonymous?: boolean | undefined;
|
|
34
|
-
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
36
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
35
37
|
readonly disallowed?: Record<string, string[]> | undefined;
|
|
36
38
|
} | undefined;
|
|
37
39
|
readonly sign?: boolean | undefined;
|
|
38
40
|
readonly storeQueries?: boolean | undefined;
|
|
39
41
|
readonly timestamp?: boolean | undefined;
|
|
40
|
-
} & Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
42
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
41
43
|
accountDerivationPath?: string | undefined;
|
|
42
|
-
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
43
|
-
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
44
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
45
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
44
46
|
readonly name?: string | undefined;
|
|
45
47
|
readonly paging?: Record<string, {
|
|
46
48
|
size?: number | undefined;
|
|
47
49
|
}> | undefined;
|
|
48
50
|
readonly security?: {
|
|
49
51
|
readonly allowAnonymous?: boolean | undefined;
|
|
50
|
-
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
52
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
51
53
|
readonly disallowed?: Record<string, string[]> | undefined;
|
|
52
54
|
} | undefined;
|
|
53
55
|
readonly sign?: boolean | undefined;
|
|
54
56
|
readonly storeQueries?: boolean | undefined;
|
|
55
57
|
readonly timestamp?: boolean | undefined;
|
|
56
|
-
} & {
|
|
58
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
57
59
|
discoverCache?: true | import("@xyo-network/bridge-model").CacheConfig | undefined;
|
|
60
|
+
maxDepth?: number | undefined;
|
|
58
61
|
schema: "network.xyo.bridge.config";
|
|
59
62
|
}, "schema"> & {
|
|
60
63
|
schema: "network.xyo.bridge.config";
|
|
@@ -67,7 +70,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
|
|
|
67
70
|
wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
|
|
68
71
|
}, ModuleEventData<object>>;
|
|
69
72
|
get config(): ModuleConfig;
|
|
70
|
-
get downResolver(): import("@xyo-network/module").ModuleResolver;
|
|
73
|
+
get downResolver(): import("@xyo-network/module-model").ModuleResolver;
|
|
71
74
|
get queries(): string[];
|
|
72
75
|
addressPreviousHash(): Promise<AddressPreviousHashPayload>;
|
|
73
76
|
busy<R>(closure: () => Promise<R>): Promise<R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAyB,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAyB,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAGzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAanG"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
|
|
2
2
|
import { BridgeModule } from '@xyo-network/bridge-model';
|
|
3
3
|
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
4
|
-
import {
|
|
4
|
+
import { BaseEmitter } from '@xyo-network/module-abstract';
|
|
5
|
+
import { AddressPreviousHashPayload, ModuleConfig, ModuleDescription, ModuleEventData, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module-model';
|
|
6
|
+
import { CompositeModuleResolver } from '@xyo-network/module-resolver';
|
|
5
7
|
import { Payload } from '@xyo-network/payload-model';
|
|
6
8
|
import { Promisable } from '@xyo-network/promise';
|
|
7
9
|
export type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config';
|
|
@@ -23,38 +25,39 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
|
|
|
23
25
|
account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
|
|
24
26
|
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
25
27
|
accountDerivationPath?: string | undefined;
|
|
26
|
-
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
27
|
-
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
28
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
29
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
28
30
|
readonly name?: string | undefined;
|
|
29
31
|
readonly paging?: Record<string, {
|
|
30
32
|
size?: number | undefined;
|
|
31
33
|
}> | undefined;
|
|
32
34
|
readonly security?: {
|
|
33
35
|
readonly allowAnonymous?: boolean | undefined;
|
|
34
|
-
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
36
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
35
37
|
readonly disallowed?: Record<string, string[]> | undefined;
|
|
36
38
|
} | undefined;
|
|
37
39
|
readonly sign?: boolean | undefined;
|
|
38
40
|
readonly storeQueries?: boolean | undefined;
|
|
39
41
|
readonly timestamp?: boolean | undefined;
|
|
40
|
-
} & Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
42
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
41
43
|
accountDerivationPath?: string | undefined;
|
|
42
|
-
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
43
|
-
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
44
|
+
readonly archivist?: import("@xyo-network/module-model").ArchivistModuleConfig | undefined;
|
|
45
|
+
readonly labels?: import("@xyo-network/module-model").Labels | undefined;
|
|
44
46
|
readonly name?: string | undefined;
|
|
45
47
|
readonly paging?: Record<string, {
|
|
46
48
|
size?: number | undefined;
|
|
47
49
|
}> | undefined;
|
|
48
50
|
readonly security?: {
|
|
49
51
|
readonly allowAnonymous?: boolean | undefined;
|
|
50
|
-
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
52
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module-model").CosigningAddressSet)[]> | undefined;
|
|
51
53
|
readonly disallowed?: Record<string, string[]> | undefined;
|
|
52
54
|
} | undefined;
|
|
53
55
|
readonly sign?: boolean | undefined;
|
|
54
56
|
readonly storeQueries?: boolean | undefined;
|
|
55
57
|
readonly timestamp?: boolean | undefined;
|
|
56
|
-
} & {
|
|
58
|
+
} & import("@xyo-network/module-model").ArchivingModuleConfig & {
|
|
57
59
|
discoverCache?: true | import("@xyo-network/bridge-model").CacheConfig | undefined;
|
|
60
|
+
maxDepth?: number | undefined;
|
|
58
61
|
schema: "network.xyo.bridge.config";
|
|
59
62
|
}, "schema"> & {
|
|
60
63
|
schema: "network.xyo.bridge.config";
|
|
@@ -67,7 +70,7 @@ export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventDa
|
|
|
67
70
|
wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
|
|
68
71
|
}, ModuleEventData<object>>;
|
|
69
72
|
get config(): ModuleConfig;
|
|
70
|
-
get downResolver(): import("@xyo-network/module").ModuleResolver;
|
|
73
|
+
get downResolver(): import("@xyo-network/module-model").ModuleResolver;
|
|
71
74
|
get queries(): string[];
|
|
72
75
|
addressPreviousHash(): Promise<AddressPreviousHashPayload>;
|
|
73
76
|
busy<R>(closure: () => Promise<R>): Promise<R>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAyB,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"ProxyModule.d.ts","sourceRoot":"","sources":["../../src/ProxyModule.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAyB,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EACL,0BAA0B,EAE1B,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAEjD,MAAM,MAAM,uBAAuB,GAAG,iCAAiC,CAAA;AACvE,eAAO,MAAM,uBAAuB,EAAE,uBAA2D,CAAA;AAEjG,MAAM,MAAM,kBAAkB,GAAG,YAAY,CAAC;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAA;AAElF,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAC1C,kBAAkB,EAClB;IACE,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,CAAA;CACrB,CACF,CAAA;AAED,qBAAa,WAAY,SAAQ,WAAW,CAAC,YAAY,EAAE,eAAe,CAAE,YAAW,cAAc,CAAC,YAAY,EAAE,eAAe,CAAC;IAK/G,WAAW,EAAE,iBAAiB;IAJjD,QAAQ,CAAC,UAAU,0BAAgC;IAEnD,OAAO,CAAC,UAAU,CAAI;gBAEH,WAAW,EAAE,iBAAiB;IAIjD,IAAI,OAAO,WAEV;IAED,IAAI,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAET;IAED,IAAI,MAAM,IAAI,YAAY,CAGzB;IAED,IAAI,YAAY,uDAEf;IAED,IAAI,OAAO,aAEV;IAED,mBAAmB,IAAI,OAAO,CAAC,0BAA0B,CAAC;IAIpD,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC;IAmBjC,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAuBtC,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAMpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;IAK5D,aAAa,IAAI,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAItD,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIrC,KAAK,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQlH,SAAS,CAAC,KAAK,EAAE,iBAAiB,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAK7G,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IACxF,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;CAanG"}
|