@xyo-network/bridge-module-resolver 2.74.4 → 2.75.0
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 +299 -0
- package/dist/browser/ModuleResolver.cjs.map +1 -0
- package/dist/browser/ModuleResolver.d.mts.map +1 -0
- package/dist/browser/ModuleResolver.d.ts.map +1 -0
- package/dist/browser/ModuleResolver.js +281 -0
- package/dist/browser/ModuleResolver.js.map +1 -0
- package/dist/browser/ProxyModule.cjs +131 -0
- package/dist/browser/ProxyModule.cjs.map +1 -0
- package/dist/browser/ProxyModule.d.mts.map +1 -0
- package/dist/browser/ProxyModule.d.ts.map +1 -0
- package/dist/browser/ProxyModule.js +113 -0
- package/dist/browser/ProxyModule.js.map +1 -0
- package/dist/{index.js → browser/index.cjs} +1 -7
- package/dist/browser/index.cjs.map +1 -0
- package/dist/browser/index.d.mts.map +1 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/{index.mjs → browser/index.js} +1 -1
- package/dist/browser/index.js.map +1 -0
- package/dist/node/ModuleResolver.d.mts +30 -0
- package/dist/node/ModuleResolver.d.mts.map +1 -0
- package/dist/node/ModuleResolver.d.ts +30 -0
- package/dist/node/ModuleResolver.d.ts.map +1 -0
- package/dist/node/ModuleResolver.js +194 -0
- package/dist/node/ModuleResolver.js.map +1 -0
- package/dist/node/ModuleResolver.mjs +170 -0
- package/dist/node/ModuleResolver.mjs.map +1 -0
- package/dist/node/ProxyModule.d.mts +84 -0
- package/dist/node/ProxyModule.d.mts.map +1 -0
- package/dist/node/ProxyModule.d.ts +84 -0
- package/dist/node/ProxyModule.d.ts.map +1 -0
- package/dist/node/ProxyModule.js +134 -0
- package/dist/node/ProxyModule.js.map +1 -0
- package/dist/node/ProxyModule.mjs +112 -0
- package/dist/node/ProxyModule.mjs.map +1 -0
- package/dist/node/index.d.mts +3 -0
- package/dist/node/index.d.mts.map +1 -0
- package/dist/node/index.d.ts +3 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +25 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/index.mjs +3 -0
- package/dist/node/index.mjs.map +1 -0
- package/package.json +45 -42
- package/dist/ModuleResolver.d.mts.map +0 -1
- package/dist/ModuleResolver.d.ts.map +0 -1
- package/dist/ProxyModule.d.mts.map +0 -1
- package/dist/ProxyModule.d.ts.map +0 -1
- package/dist/docs.json +0 -30258
- package/dist/index.d.mts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- /package/dist/{ModuleResolver.d.mts → browser/ModuleResolver.d.mts} +0 -0
- /package/dist/{ModuleResolver.d.ts → browser/ModuleResolver.d.ts} +0 -0
- /package/dist/{ProxyModule.d.mts → browser/ProxyModule.d.mts} +0 -0
- /package/dist/{ProxyModule.d.ts → browser/ProxyModule.d.ts} +0 -0
- /package/dist/{index.d.mts → browser/index.d.mts} +0 -0
- /package/dist/{index.d.ts → browser/index.d.ts} +0 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var ModuleResolver_exports = {};
|
|
20
|
+
__export(ModuleResolver_exports, {
|
|
21
|
+
BridgeModuleResolver: () => BridgeModuleResolver
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(ModuleResolver_exports);
|
|
24
|
+
var import_lodash = require("@xylabs/lodash");
|
|
25
|
+
var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
|
|
26
|
+
var import_archivist_model = require("@xyo-network/archivist-model");
|
|
27
|
+
var import_archivist_wrapper = require("@xyo-network/archivist-wrapper");
|
|
28
|
+
var import_diviner = require("@xyo-network/diviner");
|
|
29
|
+
var import_diviner_model = require("@xyo-network/diviner-model");
|
|
30
|
+
var import_error = require("@xyo-network/error");
|
|
31
|
+
var import_module = require("@xyo-network/module");
|
|
32
|
+
var import_node_model = require("@xyo-network/node-model");
|
|
33
|
+
var import_node_wrapper = require("@xyo-network/node-wrapper");
|
|
34
|
+
var import_sentinel = require("@xyo-network/sentinel");
|
|
35
|
+
var import_witness_model = require("@xyo-network/witness-model");
|
|
36
|
+
var import_witness_wrapper = require("@xyo-network/witness-wrapper");
|
|
37
|
+
var import_ProxyModule = require("./ProxyModule");
|
|
38
|
+
class BridgeModuleResolver extends import_module.CompositeModuleResolver {
|
|
39
|
+
// TODO: Allow optional ctor param for supplying address for nested Nodes
|
|
40
|
+
// protected readonly address?: string,
|
|
41
|
+
constructor(bridge, wrapperAccount) {
|
|
42
|
+
super();
|
|
43
|
+
this.bridge = bridge;
|
|
44
|
+
this.wrapperAccount = wrapperAccount;
|
|
45
|
+
}
|
|
46
|
+
primed = void 0;
|
|
47
|
+
remoteAddresses;
|
|
48
|
+
resolvedModules = {};
|
|
49
|
+
get isModuleResolver() {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
add(_module) {
|
|
53
|
+
throw new Error("Method not implemented.");
|
|
54
|
+
}
|
|
55
|
+
async currentResolvedModules() {
|
|
56
|
+
const result = {};
|
|
57
|
+
await Promise.all(
|
|
58
|
+
Object.entries(this.resolvedModules).map(async ([key, value]) => {
|
|
59
|
+
result[key] = await value;
|
|
60
|
+
})
|
|
61
|
+
);
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
async getRemoteAddresses() {
|
|
65
|
+
this.remoteAddresses = this.remoteAddresses ?? (async () => {
|
|
66
|
+
const discover = await this.bridge.targetDiscover();
|
|
67
|
+
return (0, import_lodash.compact)(
|
|
68
|
+
discover?.map((payload) => {
|
|
69
|
+
if (payload.schema === import_address_payload_plugin.AddressSchema) {
|
|
70
|
+
const schemaPayload = payload;
|
|
71
|
+
return schemaPayload.address;
|
|
72
|
+
} else {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
);
|
|
77
|
+
})();
|
|
78
|
+
return await this.remoteAddresses;
|
|
79
|
+
}
|
|
80
|
+
prime() {
|
|
81
|
+
this.primed = this.primed ?? (async () => {
|
|
82
|
+
await this.resolveRemoteModules();
|
|
83
|
+
return true;
|
|
84
|
+
})();
|
|
85
|
+
return this.primed;
|
|
86
|
+
}
|
|
87
|
+
remove(_address) {
|
|
88
|
+
throw new Error("Method not implemented.");
|
|
89
|
+
}
|
|
90
|
+
reset() {
|
|
91
|
+
this.primed = void 0;
|
|
92
|
+
this.remoteAddresses = void 0;
|
|
93
|
+
this.resolvedModules = {};
|
|
94
|
+
}
|
|
95
|
+
async resolve(nameOrAddressOrFilter, options) {
|
|
96
|
+
const unfiltered = await (async () => {
|
|
97
|
+
const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 };
|
|
98
|
+
await this.prime();
|
|
99
|
+
await this.resolveRemoteModules();
|
|
100
|
+
if (typeof nameOrAddressOrFilter === "string") {
|
|
101
|
+
if (mutatedOptions.maxDepth < 0) {
|
|
102
|
+
return void 0;
|
|
103
|
+
}
|
|
104
|
+
const result = await this.resolveByAddress(nameOrAddressOrFilter) ?? await this.resolveByName(nameOrAddressOrFilter);
|
|
105
|
+
return result;
|
|
106
|
+
} else {
|
|
107
|
+
if (mutatedOptions.maxDepth < 0) {
|
|
108
|
+
return [];
|
|
109
|
+
}
|
|
110
|
+
const result = await this.resolveRemoteModules(nameOrAddressOrFilter);
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
})();
|
|
114
|
+
const identity = options?.identity;
|
|
115
|
+
if (identity) {
|
|
116
|
+
return Array.isArray(unfiltered) ? unfiltered?.filter((module2) => identity(module2)) : identity(unfiltered) ? unfiltered : void 0;
|
|
117
|
+
} else {
|
|
118
|
+
return unfiltered;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async resolveByAddress(targetAddress) {
|
|
122
|
+
const remoteAddresses = await this.getRemoteAddresses();
|
|
123
|
+
if (!remoteAddresses.find((address) => address === targetAddress)) {
|
|
124
|
+
return void 0;
|
|
125
|
+
}
|
|
126
|
+
const cached = this.resolvedModules[targetAddress];
|
|
127
|
+
if (cached)
|
|
128
|
+
return await cached;
|
|
129
|
+
this.resolvedModules[targetAddress] = this.resolvedModules[targetAddress] ?? (async (address) => {
|
|
130
|
+
await this.bridge.targetDiscover(address);
|
|
131
|
+
const mod = new import_ProxyModule.ProxyModule({ address, bridge: this.bridge, config: { schema: import_ProxyModule.ProxyModuleConfigSchema } });
|
|
132
|
+
try {
|
|
133
|
+
if ((0, import_archivist_model.isArchivistModule)(mod)) {
|
|
134
|
+
return import_archivist_wrapper.ArchivistWrapper.wrap(mod, this.wrapperAccount);
|
|
135
|
+
}
|
|
136
|
+
if ((0, import_diviner_model.isDivinerModule)(mod)) {
|
|
137
|
+
return import_diviner.DivinerWrapper.wrap(mod, this.wrapperAccount);
|
|
138
|
+
}
|
|
139
|
+
if ((0, import_witness_model.isWitnessModule)(mod)) {
|
|
140
|
+
return import_witness_wrapper.WitnessWrapper.wrap(mod, this.wrapperAccount);
|
|
141
|
+
}
|
|
142
|
+
if ((0, import_node_model.isNodeModule)(mod)) {
|
|
143
|
+
return import_node_wrapper.NodeWrapper.wrap(mod, this.wrapperAccount);
|
|
144
|
+
}
|
|
145
|
+
if ((0, import_sentinel.isSentinelModule)(mod)) {
|
|
146
|
+
return import_sentinel.SentinelWrapper.wrap(mod, this.wrapperAccount);
|
|
147
|
+
}
|
|
148
|
+
console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`);
|
|
149
|
+
return import_module.ModuleWrapper.wrap(mod, this.wrapperAccount);
|
|
150
|
+
} catch (ex) {
|
|
151
|
+
(0, import_error.handleError)(ex, (error) => {
|
|
152
|
+
console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
})(targetAddress);
|
|
156
|
+
return await this.resolvedModules[targetAddress];
|
|
157
|
+
}
|
|
158
|
+
async resolveByName(name) {
|
|
159
|
+
const modules = await this.currentResolvedModules();
|
|
160
|
+
return Object.values(modules).filter((module2) => module2.config.name === name).pop();
|
|
161
|
+
}
|
|
162
|
+
async resolveByQuery(queries) {
|
|
163
|
+
return Object.values(await this.currentResolvedModules()).filter((module2) => {
|
|
164
|
+
const found = module2.queries.filter((query) => queries.find((q) => q === query));
|
|
165
|
+
return queries.length === found.length;
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
async resolveRemoteModules(filter) {
|
|
169
|
+
if (filter?.address) {
|
|
170
|
+
return await this.resolveRemoteModulesByAddress(filter);
|
|
171
|
+
}
|
|
172
|
+
if (filter?.name) {
|
|
173
|
+
return await this.resolveRemoteModulesByName(filter);
|
|
174
|
+
}
|
|
175
|
+
if (filter?.query) {
|
|
176
|
+
return await this.resolveRemoteModulesByQuery(filter);
|
|
177
|
+
}
|
|
178
|
+
return await this.resolveRemoteModulesByAddress({ address: await this.getRemoteAddresses() });
|
|
179
|
+
}
|
|
180
|
+
async resolveRemoteModulesByAddress(filter) {
|
|
181
|
+
return (0, import_lodash.compact)(await Promise.all(filter.address.map((address) => this.resolveByAddress(address))));
|
|
182
|
+
}
|
|
183
|
+
async resolveRemoteModulesByName(filter) {
|
|
184
|
+
return (0, import_lodash.compact)(await Promise.all(filter.name.map(async (name) => await this.resolveByName(name))));
|
|
185
|
+
}
|
|
186
|
+
async resolveRemoteModulesByQuery(filter) {
|
|
187
|
+
return (0, import_lodash.compact)((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery(query)))).flat());
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
191
|
+
0 && (module.exports = {
|
|
192
|
+
BridgeModuleResolver
|
|
193
|
+
});
|
|
194
|
+
//# sourceMappingURL=ModuleResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ModuleResolver.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"],"mappings":"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","names":["module"]}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { compact } from "@xylabs/lodash";
|
|
2
|
+
import { AddressSchema } from "@xyo-network/address-payload-plugin";
|
|
3
|
+
import { isArchivistModule } from "@xyo-network/archivist-model";
|
|
4
|
+
import { ArchivistWrapper } from "@xyo-network/archivist-wrapper";
|
|
5
|
+
import { DivinerWrapper } from "@xyo-network/diviner";
|
|
6
|
+
import { isDivinerModule } from "@xyo-network/diviner-model";
|
|
7
|
+
import { handleError } from "@xyo-network/error";
|
|
8
|
+
import { CompositeModuleResolver, ModuleWrapper } from "@xyo-network/module";
|
|
9
|
+
import { isNodeModule } from "@xyo-network/node-model";
|
|
10
|
+
import { NodeWrapper } from "@xyo-network/node-wrapper";
|
|
11
|
+
import { isSentinelModule, SentinelWrapper } from "@xyo-network/sentinel";
|
|
12
|
+
import { isWitnessModule } from "@xyo-network/witness-model";
|
|
13
|
+
import { WitnessWrapper } from "@xyo-network/witness-wrapper";
|
|
14
|
+
import { ProxyModule, ProxyModuleConfigSchema } from "./ProxyModule";
|
|
15
|
+
class BridgeModuleResolver extends CompositeModuleResolver {
|
|
16
|
+
// TODO: Allow optional ctor param for supplying address for nested Nodes
|
|
17
|
+
// protected readonly address?: string,
|
|
18
|
+
constructor(bridge, wrapperAccount) {
|
|
19
|
+
super();
|
|
20
|
+
this.bridge = bridge;
|
|
21
|
+
this.wrapperAccount = wrapperAccount;
|
|
22
|
+
}
|
|
23
|
+
primed = void 0;
|
|
24
|
+
remoteAddresses;
|
|
25
|
+
resolvedModules = {};
|
|
26
|
+
get isModuleResolver() {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
add(_module) {
|
|
30
|
+
throw new Error("Method not implemented.");
|
|
31
|
+
}
|
|
32
|
+
async currentResolvedModules() {
|
|
33
|
+
const result = {};
|
|
34
|
+
await Promise.all(
|
|
35
|
+
Object.entries(this.resolvedModules).map(async ([key, value]) => {
|
|
36
|
+
result[key] = await value;
|
|
37
|
+
})
|
|
38
|
+
);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
async getRemoteAddresses() {
|
|
42
|
+
this.remoteAddresses = this.remoteAddresses ?? (async () => {
|
|
43
|
+
const discover = await this.bridge.targetDiscover();
|
|
44
|
+
return compact(
|
|
45
|
+
discover?.map((payload) => {
|
|
46
|
+
if (payload.schema === AddressSchema) {
|
|
47
|
+
const schemaPayload = payload;
|
|
48
|
+
return schemaPayload.address;
|
|
49
|
+
} else {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
})
|
|
53
|
+
);
|
|
54
|
+
})();
|
|
55
|
+
return await this.remoteAddresses;
|
|
56
|
+
}
|
|
57
|
+
prime() {
|
|
58
|
+
this.primed = this.primed ?? (async () => {
|
|
59
|
+
await this.resolveRemoteModules();
|
|
60
|
+
return true;
|
|
61
|
+
})();
|
|
62
|
+
return this.primed;
|
|
63
|
+
}
|
|
64
|
+
remove(_address) {
|
|
65
|
+
throw new Error("Method not implemented.");
|
|
66
|
+
}
|
|
67
|
+
reset() {
|
|
68
|
+
this.primed = void 0;
|
|
69
|
+
this.remoteAddresses = void 0;
|
|
70
|
+
this.resolvedModules = {};
|
|
71
|
+
}
|
|
72
|
+
async resolve(nameOrAddressOrFilter, options) {
|
|
73
|
+
const unfiltered = await (async () => {
|
|
74
|
+
const mutatedOptions = { ...options, maxDepth: (options?.maxDepth ?? BridgeModuleResolver.defaultMaxDepth) - 1 };
|
|
75
|
+
await this.prime();
|
|
76
|
+
await this.resolveRemoteModules();
|
|
77
|
+
if (typeof nameOrAddressOrFilter === "string") {
|
|
78
|
+
if (mutatedOptions.maxDepth < 0) {
|
|
79
|
+
return void 0;
|
|
80
|
+
}
|
|
81
|
+
const result = await this.resolveByAddress(nameOrAddressOrFilter) ?? await this.resolveByName(nameOrAddressOrFilter);
|
|
82
|
+
return result;
|
|
83
|
+
} else {
|
|
84
|
+
if (mutatedOptions.maxDepth < 0) {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
const result = await this.resolveRemoteModules(nameOrAddressOrFilter);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
const identity = options?.identity;
|
|
92
|
+
if (identity) {
|
|
93
|
+
return Array.isArray(unfiltered) ? unfiltered?.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : void 0;
|
|
94
|
+
} else {
|
|
95
|
+
return unfiltered;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async resolveByAddress(targetAddress) {
|
|
99
|
+
const remoteAddresses = await this.getRemoteAddresses();
|
|
100
|
+
if (!remoteAddresses.find((address) => address === targetAddress)) {
|
|
101
|
+
return void 0;
|
|
102
|
+
}
|
|
103
|
+
const cached = this.resolvedModules[targetAddress];
|
|
104
|
+
if (cached)
|
|
105
|
+
return await cached;
|
|
106
|
+
this.resolvedModules[targetAddress] = this.resolvedModules[targetAddress] ?? (async (address) => {
|
|
107
|
+
await this.bridge.targetDiscover(address);
|
|
108
|
+
const mod = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } });
|
|
109
|
+
try {
|
|
110
|
+
if (isArchivistModule(mod)) {
|
|
111
|
+
return ArchivistWrapper.wrap(mod, this.wrapperAccount);
|
|
112
|
+
}
|
|
113
|
+
if (isDivinerModule(mod)) {
|
|
114
|
+
return DivinerWrapper.wrap(mod, this.wrapperAccount);
|
|
115
|
+
}
|
|
116
|
+
if (isWitnessModule(mod)) {
|
|
117
|
+
return WitnessWrapper.wrap(mod, this.wrapperAccount);
|
|
118
|
+
}
|
|
119
|
+
if (isNodeModule(mod)) {
|
|
120
|
+
return NodeWrapper.wrap(mod, this.wrapperAccount);
|
|
121
|
+
}
|
|
122
|
+
if (isSentinelModule(mod)) {
|
|
123
|
+
return SentinelWrapper.wrap(mod, this.wrapperAccount);
|
|
124
|
+
}
|
|
125
|
+
console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`);
|
|
126
|
+
return ModuleWrapper.wrap(mod, this.wrapperAccount);
|
|
127
|
+
} catch (ex) {
|
|
128
|
+
handleError(ex, (error) => {
|
|
129
|
+
console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
})(targetAddress);
|
|
133
|
+
return await this.resolvedModules[targetAddress];
|
|
134
|
+
}
|
|
135
|
+
async resolveByName(name) {
|
|
136
|
+
const modules = await this.currentResolvedModules();
|
|
137
|
+
return Object.values(modules).filter((module) => module.config.name === name).pop();
|
|
138
|
+
}
|
|
139
|
+
async resolveByQuery(queries) {
|
|
140
|
+
return Object.values(await this.currentResolvedModules()).filter((module) => {
|
|
141
|
+
const found = module.queries.filter((query) => queries.find((q) => q === query));
|
|
142
|
+
return queries.length === found.length;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
async resolveRemoteModules(filter) {
|
|
146
|
+
if (filter?.address) {
|
|
147
|
+
return await this.resolveRemoteModulesByAddress(filter);
|
|
148
|
+
}
|
|
149
|
+
if (filter?.name) {
|
|
150
|
+
return await this.resolveRemoteModulesByName(filter);
|
|
151
|
+
}
|
|
152
|
+
if (filter?.query) {
|
|
153
|
+
return await this.resolveRemoteModulesByQuery(filter);
|
|
154
|
+
}
|
|
155
|
+
return await this.resolveRemoteModulesByAddress({ address: await this.getRemoteAddresses() });
|
|
156
|
+
}
|
|
157
|
+
async resolveRemoteModulesByAddress(filter) {
|
|
158
|
+
return compact(await Promise.all(filter.address.map((address) => this.resolveByAddress(address))));
|
|
159
|
+
}
|
|
160
|
+
async resolveRemoteModulesByName(filter) {
|
|
161
|
+
return compact(await Promise.all(filter.name.map(async (name) => await this.resolveByName(name))));
|
|
162
|
+
}
|
|
163
|
+
async resolveRemoteModulesByQuery(filter) {
|
|
164
|
+
return compact((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery(query)))).flat());
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
export {
|
|
168
|
+
BridgeModuleResolver
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=ModuleResolver.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ModuleResolver.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"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
|
|
2
|
+
import { BridgeModule } from '@xyo-network/bridge-model';
|
|
3
|
+
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
4
|
+
import { AddressPreviousHashPayload, BaseEmitter, CompositeModuleResolver, ModuleConfig, ModuleDescription, ModuleEventData, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module';
|
|
5
|
+
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Promisable } from '@xyo-network/promise';
|
|
7
|
+
export type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config';
|
|
8
|
+
export declare const ProxyModuleConfigSchema: ProxyModuleConfigSchema;
|
|
9
|
+
export type TProxyModuleConfig = ModuleConfig<{
|
|
10
|
+
schema: ProxyModuleConfigSchema;
|
|
11
|
+
}>;
|
|
12
|
+
export type ProxyModuleParams = ModuleParams<TProxyModuleConfig, {
|
|
13
|
+
address: string;
|
|
14
|
+
bridge: BridgeModule;
|
|
15
|
+
}>;
|
|
16
|
+
export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {
|
|
17
|
+
proxyParams: ProxyModuleParams;
|
|
18
|
+
readonly upResolver: CompositeModuleResolver;
|
|
19
|
+
private _busyCount;
|
|
20
|
+
constructor(proxyParams: ProxyModuleParams);
|
|
21
|
+
get address(): string;
|
|
22
|
+
get bridge(): BridgeModule<import("@xyo-network/core").BaseParamsFields & {
|
|
23
|
+
account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
|
|
24
|
+
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
25
|
+
accountDerivationPath?: string | undefined;
|
|
26
|
+
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
27
|
+
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
28
|
+
readonly name?: string | undefined;
|
|
29
|
+
readonly paging?: Record<string, {
|
|
30
|
+
size?: number | undefined;
|
|
31
|
+
}> | undefined;
|
|
32
|
+
readonly security?: {
|
|
33
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
34
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
35
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
36
|
+
} | undefined;
|
|
37
|
+
readonly sign?: boolean | undefined;
|
|
38
|
+
readonly storeQueries?: boolean | undefined;
|
|
39
|
+
readonly timestamp?: boolean | undefined;
|
|
40
|
+
} & Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
41
|
+
accountDerivationPath?: string | undefined;
|
|
42
|
+
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
43
|
+
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
44
|
+
readonly name?: string | undefined;
|
|
45
|
+
readonly paging?: Record<string, {
|
|
46
|
+
size?: number | undefined;
|
|
47
|
+
}> | undefined;
|
|
48
|
+
readonly security?: {
|
|
49
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
50
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
51
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
52
|
+
} | undefined;
|
|
53
|
+
readonly sign?: boolean | undefined;
|
|
54
|
+
readonly storeQueries?: boolean | undefined;
|
|
55
|
+
readonly timestamp?: boolean | undefined;
|
|
56
|
+
} & {
|
|
57
|
+
discoverCache?: true | import("@xyo-network/bridge-model").CacheConfig | undefined;
|
|
58
|
+
schema: "network.xyo.bridge.config";
|
|
59
|
+
}, "schema"> & {
|
|
60
|
+
schema: "network.xyo.bridge.config";
|
|
61
|
+
}, "schema"> & {
|
|
62
|
+
schema: string;
|
|
63
|
+
}, "schema"> & {
|
|
64
|
+
schema: string;
|
|
65
|
+
};
|
|
66
|
+
ephemeralQueryAccountEnabled?: boolean | undefined;
|
|
67
|
+
wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
|
|
68
|
+
}, ModuleEventData<object>>;
|
|
69
|
+
get config(): ModuleConfig;
|
|
70
|
+
get downResolver(): import("@xyo-network/module").ModuleResolver;
|
|
71
|
+
get queries(): string[];
|
|
72
|
+
addressPreviousHash(): Promise<AddressPreviousHashPayload>;
|
|
73
|
+
busy<R>(closure: () => Promise<R>): Promise<R>;
|
|
74
|
+
describe(): Promise<ModuleDescription>;
|
|
75
|
+
discover(): Promise<Payload[]>;
|
|
76
|
+
manifest(): Promisable<ModuleManifestPayload>;
|
|
77
|
+
moduleAddress(): Promise<AddressPreviousHashPayload[]>;
|
|
78
|
+
previousHash(): Promise<string | undefined>;
|
|
79
|
+
query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult>;
|
|
80
|
+
queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean>;
|
|
81
|
+
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
82
|
+
resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ProxyModule.d.ts.map
|
|
@@ -0,0 +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,EACL,0BAA0B,EAC1B,WAAW,EACX,uBAAuB,EAEvB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAC5B,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,iDAEf;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,IAAI,UAAU,CAAC,qBAAqB,CAAC;IAK7C,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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { QueryBoundWitness } from '@xyo-network/boundwitness-builder';
|
|
2
|
+
import { BridgeModule } from '@xyo-network/bridge-model';
|
|
3
|
+
import { ModuleManifestPayload } from '@xyo-network/manifest-model';
|
|
4
|
+
import { AddressPreviousHashPayload, BaseEmitter, CompositeModuleResolver, ModuleConfig, ModuleDescription, ModuleEventData, ModuleFilter, ModuleFilterOptions, ModuleInstance, ModuleParams, ModuleQueryResult } from '@xyo-network/module';
|
|
5
|
+
import { Payload } from '@xyo-network/payload-model';
|
|
6
|
+
import { Promisable } from '@xyo-network/promise';
|
|
7
|
+
export type ProxyModuleConfigSchema = 'network.xyo.module.proxy.config';
|
|
8
|
+
export declare const ProxyModuleConfigSchema: ProxyModuleConfigSchema;
|
|
9
|
+
export type TProxyModuleConfig = ModuleConfig<{
|
|
10
|
+
schema: ProxyModuleConfigSchema;
|
|
11
|
+
}>;
|
|
12
|
+
export type ProxyModuleParams = ModuleParams<TProxyModuleConfig, {
|
|
13
|
+
address: string;
|
|
14
|
+
bridge: BridgeModule;
|
|
15
|
+
}>;
|
|
16
|
+
export declare class ProxyModule extends BaseEmitter<ModuleParams, ModuleEventData> implements ModuleInstance<ModuleParams, ModuleEventData> {
|
|
17
|
+
proxyParams: ProxyModuleParams;
|
|
18
|
+
readonly upResolver: CompositeModuleResolver;
|
|
19
|
+
private _busyCount;
|
|
20
|
+
constructor(proxyParams: ProxyModuleParams);
|
|
21
|
+
get address(): string;
|
|
22
|
+
get bridge(): BridgeModule<import("@xyo-network/core").BaseParamsFields & {
|
|
23
|
+
account?: import("@xyo-network/account-model").AccountInstance | "random" | undefined;
|
|
24
|
+
config: import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
25
|
+
accountDerivationPath?: string | undefined;
|
|
26
|
+
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
27
|
+
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
28
|
+
readonly name?: string | undefined;
|
|
29
|
+
readonly paging?: Record<string, {
|
|
30
|
+
size?: number | undefined;
|
|
31
|
+
}> | undefined;
|
|
32
|
+
readonly security?: {
|
|
33
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
34
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
35
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
36
|
+
} | undefined;
|
|
37
|
+
readonly sign?: boolean | undefined;
|
|
38
|
+
readonly storeQueries?: boolean | undefined;
|
|
39
|
+
readonly timestamp?: boolean | undefined;
|
|
40
|
+
} & Omit<import("@xyo-network/payload-model").SchemaFields & import("@xyo-network/payload-model").PayloadFields & Omit<{
|
|
41
|
+
accountDerivationPath?: string | undefined;
|
|
42
|
+
readonly archivist?: import("@xyo-network/module").ArchivistModuleConfig | undefined;
|
|
43
|
+
readonly labels?: import("@xyo-network/module").Labels | undefined;
|
|
44
|
+
readonly name?: string | undefined;
|
|
45
|
+
readonly paging?: Record<string, {
|
|
46
|
+
size?: number | undefined;
|
|
47
|
+
}> | undefined;
|
|
48
|
+
readonly security?: {
|
|
49
|
+
readonly allowAnonymous?: boolean | undefined;
|
|
50
|
+
readonly allowed?: Record<string, (string | import("@xyo-network/module").CosigningAddressSet)[]> | undefined;
|
|
51
|
+
readonly disallowed?: Record<string, string[]> | undefined;
|
|
52
|
+
} | undefined;
|
|
53
|
+
readonly sign?: boolean | undefined;
|
|
54
|
+
readonly storeQueries?: boolean | undefined;
|
|
55
|
+
readonly timestamp?: boolean | undefined;
|
|
56
|
+
} & {
|
|
57
|
+
discoverCache?: true | import("@xyo-network/bridge-model").CacheConfig | undefined;
|
|
58
|
+
schema: "network.xyo.bridge.config";
|
|
59
|
+
}, "schema"> & {
|
|
60
|
+
schema: "network.xyo.bridge.config";
|
|
61
|
+
}, "schema"> & {
|
|
62
|
+
schema: string;
|
|
63
|
+
}, "schema"> & {
|
|
64
|
+
schema: string;
|
|
65
|
+
};
|
|
66
|
+
ephemeralQueryAccountEnabled?: boolean | undefined;
|
|
67
|
+
wallet?: import("@xyo-network/wallet-model").WalletInstance | undefined;
|
|
68
|
+
}, ModuleEventData<object>>;
|
|
69
|
+
get config(): ModuleConfig;
|
|
70
|
+
get downResolver(): import("@xyo-network/module").ModuleResolver;
|
|
71
|
+
get queries(): string[];
|
|
72
|
+
addressPreviousHash(): Promise<AddressPreviousHashPayload>;
|
|
73
|
+
busy<R>(closure: () => Promise<R>): Promise<R>;
|
|
74
|
+
describe(): Promise<ModuleDescription>;
|
|
75
|
+
discover(): Promise<Payload[]>;
|
|
76
|
+
manifest(): Promisable<ModuleManifestPayload>;
|
|
77
|
+
moduleAddress(): Promise<AddressPreviousHashPayload[]>;
|
|
78
|
+
previousHash(): Promise<string | undefined>;
|
|
79
|
+
query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult>;
|
|
80
|
+
queryable(query: QueryBoundWitness, payloads?: Payload[], queryConfig?: ModuleConfig): Promise<boolean>;
|
|
81
|
+
resolve(filter?: ModuleFilter, options?: ModuleFilterOptions): Promise<ModuleInstance[]>;
|
|
82
|
+
resolve(nameOrAddress: string, options?: ModuleFilterOptions): Promise<ModuleInstance | undefined>;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ProxyModule.d.ts.map
|
|
@@ -0,0 +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,EACL,0BAA0B,EAC1B,WAAW,EACX,uBAAuB,EAEvB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,iBAAiB,EAClB,MAAM,qBAAqB,CAAA;AAC5B,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,iDAEf;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,IAAI,UAAU,CAAC,qBAAqB,CAAC;IAK7C,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"}
|