@xyo-network/bridge-module-resolver 2.84.1 → 2.84.3
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/node/{index.mjs → index.cjs} +81 -52
- package/dist/node/index.cjs.map +1 -0
- package/dist/node/index.js +51 -80
- package/dist/node/index.js.map +1 -1
- package/package.json +28 -28
- package/dist/node/index.mjs.map +0 -1
|
@@ -1,33 +1,61 @@
|
|
|
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
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var src_exports = {};
|
|
22
|
+
__export(src_exports, {
|
|
23
|
+
BridgeModuleResolver: () => BridgeModuleResolver,
|
|
24
|
+
ProxyModule: () => ProxyModule,
|
|
25
|
+
ProxyModuleConfigSchema: () => ProxyModuleConfigSchema
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(src_exports);
|
|
28
|
+
|
|
1
29
|
// src/ModuleResolver.ts
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
30
|
+
var import_error = require("@xylabs/error");
|
|
31
|
+
var import_lodash2 = require("@xylabs/lodash");
|
|
32
|
+
var import_address_payload_plugin2 = require("@xyo-network/address-payload-plugin");
|
|
33
|
+
var import_archivist_model = require("@xyo-network/archivist-model");
|
|
34
|
+
var import_archivist_wrapper = require("@xyo-network/archivist-wrapper");
|
|
35
|
+
var import_diviner = require("@xyo-network/diviner");
|
|
36
|
+
var import_diviner_model = require("@xyo-network/diviner-model");
|
|
37
|
+
var import_module_resolver2 = require("@xyo-network/module-resolver");
|
|
38
|
+
var import_module_wrapper = require("@xyo-network/module-wrapper");
|
|
39
|
+
var import_node_model = require("@xyo-network/node-model");
|
|
40
|
+
var import_node_wrapper = require("@xyo-network/node-wrapper");
|
|
41
|
+
var import_sentinel = require("@xyo-network/sentinel");
|
|
42
|
+
var import_witness_model = require("@xyo-network/witness-model");
|
|
43
|
+
var import_witness_wrapper = require("@xyo-network/witness-wrapper");
|
|
16
44
|
|
|
17
45
|
// src/ProxyModule.ts
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
46
|
+
var import_assert = require("@xylabs/assert");
|
|
47
|
+
var import_lodash = require("@xylabs/lodash");
|
|
48
|
+
var import_address_payload_plugin = require("@xyo-network/address-payload-plugin");
|
|
49
|
+
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
50
|
+
var import_module_abstract = require("@xyo-network/module-abstract");
|
|
51
|
+
var import_module_resolver = require("@xyo-network/module-resolver");
|
|
24
52
|
var ProxyModuleConfigSchema = "network.xyo.module.proxy.config";
|
|
25
|
-
var ProxyModule = class extends BaseEmitter {
|
|
53
|
+
var ProxyModule = class extends import_module_abstract.BaseEmitter {
|
|
26
54
|
constructor(proxyParams) {
|
|
27
55
|
super({ config: proxyParams.bridge.targetConfig(proxyParams.address) });
|
|
28
56
|
this.proxyParams = proxyParams;
|
|
29
57
|
}
|
|
30
|
-
upResolver = new CompositeModuleResolver();
|
|
58
|
+
upResolver = new import_module_resolver.CompositeModuleResolver();
|
|
31
59
|
_busyCount = 0;
|
|
32
60
|
get address() {
|
|
33
61
|
return this.proxyParams.address.toLowerCase();
|
|
@@ -40,7 +68,7 @@ var ProxyModule = class extends BaseEmitter {
|
|
|
40
68
|
return config;
|
|
41
69
|
}
|
|
42
70
|
get downResolver() {
|
|
43
|
-
return assertEx(this.bridge.targetDownResolver(this.address), "Unable to get resolver");
|
|
71
|
+
return (0, import_assert.assertEx)(this.bridge.targetDownResolver(this.address), "Unable to get resolver");
|
|
44
72
|
}
|
|
45
73
|
get queries() {
|
|
46
74
|
return this.bridge.targetQueries(this.address);
|
|
@@ -76,9 +104,9 @@ var ProxyModule = class extends BaseEmitter {
|
|
|
76
104
|
description.name = this.config.name;
|
|
77
105
|
}
|
|
78
106
|
const discover = await this.discover();
|
|
79
|
-
description.children = compact(
|
|
107
|
+
description.children = (0, import_lodash.compact)(
|
|
80
108
|
(discover == null ? void 0 : discover.map((payload) => {
|
|
81
|
-
const address = payload.schema === AddressSchema ? payload.address : void 0;
|
|
109
|
+
const address = payload.schema === import_address_payload_plugin.AddressSchema ? payload.address : void 0;
|
|
82
110
|
return address != this.address ? address : void 0;
|
|
83
111
|
})) ?? []
|
|
84
112
|
);
|
|
@@ -92,7 +120,7 @@ var ProxyModule = class extends BaseEmitter {
|
|
|
92
120
|
}
|
|
93
121
|
manifest(_depth) {
|
|
94
122
|
const name = this.config.name ?? "Anonymous";
|
|
95
|
-
return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema };
|
|
123
|
+
return { config: { name, ...this.config }, schema: import_manifest_model.ModuleManifestPayloadSchema };
|
|
96
124
|
}
|
|
97
125
|
moduleAddress() {
|
|
98
126
|
throw Error("Not Implemented");
|
|
@@ -102,7 +130,7 @@ var ProxyModule = class extends BaseEmitter {
|
|
|
102
130
|
}
|
|
103
131
|
async query(query, payloads) {
|
|
104
132
|
return await this.busy(async () => {
|
|
105
|
-
const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), "Remote Query Failed");
|
|
133
|
+
const result = (0, import_assert.assertEx)(await this.bridge.targetQuery(this.address, query, payloads), "Remote Query Failed");
|
|
106
134
|
await this.emit("moduleQueried", { module: this, payloads, query, result });
|
|
107
135
|
return result;
|
|
108
136
|
});
|
|
@@ -122,7 +150,7 @@ var ProxyModule = class extends BaseEmitter {
|
|
|
122
150
|
};
|
|
123
151
|
|
|
124
152
|
// src/ModuleResolver.ts
|
|
125
|
-
var BridgeModuleResolver = class _BridgeModuleResolver extends
|
|
153
|
+
var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_resolver2.CompositeModuleResolver {
|
|
126
154
|
// TODO: Allow optional ctor param for supplying address for nested Nodes
|
|
127
155
|
// protected readonly address?: string,
|
|
128
156
|
constructor(bridge, wrapperAccount, options) {
|
|
@@ -153,9 +181,9 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleRe
|
|
|
153
181
|
this.remoteAddresses = this.remoteAddresses ?? (async () => {
|
|
154
182
|
var _a;
|
|
155
183
|
const discover = await this.bridge.targetDiscover(void 0, (_a = this.options) == null ? void 0 : _a.maxDepth);
|
|
156
|
-
return
|
|
184
|
+
return (0, import_lodash2.compact)(
|
|
157
185
|
discover == null ? void 0 : discover.map((payload) => {
|
|
158
|
-
if (payload.schema ===
|
|
186
|
+
if (payload.schema === import_address_payload_plugin2.AddressSchema) {
|
|
159
187
|
const schemaPayload = payload;
|
|
160
188
|
return schemaPayload.address;
|
|
161
189
|
} else {
|
|
@@ -202,7 +230,7 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleRe
|
|
|
202
230
|
})();
|
|
203
231
|
const identity = options == null ? void 0 : options.identity;
|
|
204
232
|
if (identity) {
|
|
205
|
-
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((
|
|
233
|
+
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((module2) => identity(module2)) : identity(unfiltered) ? unfiltered : void 0;
|
|
206
234
|
} else {
|
|
207
235
|
return unfiltered;
|
|
208
236
|
}
|
|
@@ -219,25 +247,25 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleRe
|
|
|
219
247
|
await this.bridge.targetDiscover(address);
|
|
220
248
|
const mod = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } });
|
|
221
249
|
try {
|
|
222
|
-
if (isArchivistModule(mod)) {
|
|
223
|
-
return ArchivistWrapper.wrap(mod, this.wrapperAccount);
|
|
250
|
+
if ((0, import_archivist_model.isArchivistModule)(mod)) {
|
|
251
|
+
return import_archivist_wrapper.ArchivistWrapper.wrap(mod, this.wrapperAccount);
|
|
224
252
|
}
|
|
225
|
-
if (isDivinerModule(mod)) {
|
|
226
|
-
return DivinerWrapper.wrap(mod, this.wrapperAccount);
|
|
253
|
+
if ((0, import_diviner_model.isDivinerModule)(mod)) {
|
|
254
|
+
return import_diviner.DivinerWrapper.wrap(mod, this.wrapperAccount);
|
|
227
255
|
}
|
|
228
|
-
if (isWitnessModule(mod)) {
|
|
229
|
-
return WitnessWrapper.wrap(mod, this.wrapperAccount);
|
|
256
|
+
if ((0, import_witness_model.isWitnessModule)(mod)) {
|
|
257
|
+
return import_witness_wrapper.WitnessWrapper.wrap(mod, this.wrapperAccount);
|
|
230
258
|
}
|
|
231
|
-
if (isNodeModule(mod)) {
|
|
232
|
-
return NodeWrapper.wrap(mod, this.wrapperAccount);
|
|
259
|
+
if ((0, import_node_model.isNodeModule)(mod)) {
|
|
260
|
+
return import_node_wrapper.NodeWrapper.wrap(mod, this.wrapperAccount);
|
|
233
261
|
}
|
|
234
|
-
if (isSentinelModule(mod)) {
|
|
235
|
-
return SentinelWrapper.wrap(mod, this.wrapperAccount);
|
|
262
|
+
if ((0, import_sentinel.isSentinelModule)(mod)) {
|
|
263
|
+
return import_sentinel.SentinelWrapper.wrap(mod, this.wrapperAccount);
|
|
236
264
|
}
|
|
237
265
|
console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`);
|
|
238
|
-
return ModuleWrapper.wrap(mod, this.wrapperAccount);
|
|
266
|
+
return import_module_wrapper.ModuleWrapper.wrap(mod, this.wrapperAccount);
|
|
239
267
|
} catch (ex) {
|
|
240
|
-
handleError(ex, (error) => {
|
|
268
|
+
(0, import_error.handleError)(ex, (error) => {
|
|
241
269
|
console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`);
|
|
242
270
|
});
|
|
243
271
|
}
|
|
@@ -246,11 +274,11 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleRe
|
|
|
246
274
|
}
|
|
247
275
|
async resolveByName(name) {
|
|
248
276
|
const modules = await this.currentResolvedModules();
|
|
249
|
-
return Object.values(modules).filter((
|
|
277
|
+
return Object.values(modules).filter((module2) => module2.config.name === name).pop();
|
|
250
278
|
}
|
|
251
279
|
async resolveByQuery(queries) {
|
|
252
|
-
return Object.values(await this.currentResolvedModules()).filter((
|
|
253
|
-
const found =
|
|
280
|
+
return Object.values(await this.currentResolvedModules()).filter((module2) => {
|
|
281
|
+
const found = module2.queries.filter((query) => queries.find((q) => q === query));
|
|
254
282
|
return queries.length === found.length;
|
|
255
283
|
});
|
|
256
284
|
}
|
|
@@ -267,18 +295,19 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleRe
|
|
|
267
295
|
return await this.resolveRemoteModulesByAddress({ address: await this.getRemoteAddresses() });
|
|
268
296
|
}
|
|
269
297
|
async resolveRemoteModulesByAddress(filter) {
|
|
270
|
-
return
|
|
298
|
+
return (0, import_lodash2.compact)(await Promise.all(filter.address.map((address) => this.resolveByAddress(address))));
|
|
271
299
|
}
|
|
272
300
|
async resolveRemoteModulesByName(filter) {
|
|
273
|
-
return
|
|
301
|
+
return (0, import_lodash2.compact)(await Promise.all(filter.name.map(async (name) => await this.resolveByName(name))));
|
|
274
302
|
}
|
|
275
303
|
async resolveRemoteModulesByQuery(filter) {
|
|
276
|
-
return
|
|
304
|
+
return (0, import_lodash2.compact)((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery(query)))).flat());
|
|
277
305
|
}
|
|
278
306
|
};
|
|
279
|
-
export
|
|
307
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
308
|
+
0 && (module.exports = {
|
|
280
309
|
BridgeModuleResolver,
|
|
281
310
|
ProxyModule,
|
|
282
311
|
ProxyModuleConfigSchema
|
|
283
|
-
};
|
|
284
|
-
//# sourceMappingURL=index.
|
|
312
|
+
});
|
|
313
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts","../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["export * from './ModuleResolver'\nexport * from './ProxyModule'\n","import { handleError } from '@xylabs/error'\nimport { 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 {\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(undefined, this.options?.maxDepth)\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 { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } 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'\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: ModuleManifestPayloadSchema }\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"]}
|
package/dist/node/index.js
CHANGED
|
@@ -1,61 +1,33 @@
|
|
|
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
|
-
|
|
20
|
-
// src/index.ts
|
|
21
|
-
var src_exports = {};
|
|
22
|
-
__export(src_exports, {
|
|
23
|
-
BridgeModuleResolver: () => BridgeModuleResolver,
|
|
24
|
-
ProxyModule: () => ProxyModule,
|
|
25
|
-
ProxyModuleConfigSchema: () => ProxyModuleConfigSchema
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(src_exports);
|
|
28
|
-
|
|
29
1
|
// src/ModuleResolver.ts
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
2
|
+
import { handleError } from "@xylabs/error";
|
|
3
|
+
import { compact as compact2 } from "@xylabs/lodash";
|
|
4
|
+
import { AddressSchema as AddressSchema2 } from "@xyo-network/address-payload-plugin";
|
|
5
|
+
import { isArchivistModule } from "@xyo-network/archivist-model";
|
|
6
|
+
import { ArchivistWrapper } from "@xyo-network/archivist-wrapper";
|
|
7
|
+
import { DivinerWrapper } from "@xyo-network/diviner";
|
|
8
|
+
import { isDivinerModule } from "@xyo-network/diviner-model";
|
|
9
|
+
import { CompositeModuleResolver as CompositeModuleResolver2 } from "@xyo-network/module-resolver";
|
|
10
|
+
import { ModuleWrapper } from "@xyo-network/module-wrapper";
|
|
11
|
+
import { isNodeModule } from "@xyo-network/node-model";
|
|
12
|
+
import { NodeWrapper } from "@xyo-network/node-wrapper";
|
|
13
|
+
import { isSentinelModule, SentinelWrapper } from "@xyo-network/sentinel";
|
|
14
|
+
import { isWitnessModule } from "@xyo-network/witness-model";
|
|
15
|
+
import { WitnessWrapper } from "@xyo-network/witness-wrapper";
|
|
44
16
|
|
|
45
17
|
// src/ProxyModule.ts
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
18
|
+
import { assertEx } from "@xylabs/assert";
|
|
19
|
+
import { compact } from "@xylabs/lodash";
|
|
20
|
+
import { AddressSchema } from "@xyo-network/address-payload-plugin";
|
|
21
|
+
import { ModuleManifestPayloadSchema } from "@xyo-network/manifest-model";
|
|
22
|
+
import { BaseEmitter } from "@xyo-network/module-abstract";
|
|
23
|
+
import { CompositeModuleResolver } from "@xyo-network/module-resolver";
|
|
52
24
|
var ProxyModuleConfigSchema = "network.xyo.module.proxy.config";
|
|
53
|
-
var ProxyModule = class extends
|
|
25
|
+
var ProxyModule = class extends BaseEmitter {
|
|
54
26
|
constructor(proxyParams) {
|
|
55
27
|
super({ config: proxyParams.bridge.targetConfig(proxyParams.address) });
|
|
56
28
|
this.proxyParams = proxyParams;
|
|
57
29
|
}
|
|
58
|
-
upResolver = new
|
|
30
|
+
upResolver = new CompositeModuleResolver();
|
|
59
31
|
_busyCount = 0;
|
|
60
32
|
get address() {
|
|
61
33
|
return this.proxyParams.address.toLowerCase();
|
|
@@ -68,7 +40,7 @@ var ProxyModule = class extends import_module_abstract.BaseEmitter {
|
|
|
68
40
|
return config;
|
|
69
41
|
}
|
|
70
42
|
get downResolver() {
|
|
71
|
-
return
|
|
43
|
+
return assertEx(this.bridge.targetDownResolver(this.address), "Unable to get resolver");
|
|
72
44
|
}
|
|
73
45
|
get queries() {
|
|
74
46
|
return this.bridge.targetQueries(this.address);
|
|
@@ -104,9 +76,9 @@ var ProxyModule = class extends import_module_abstract.BaseEmitter {
|
|
|
104
76
|
description.name = this.config.name;
|
|
105
77
|
}
|
|
106
78
|
const discover = await this.discover();
|
|
107
|
-
description.children =
|
|
79
|
+
description.children = compact(
|
|
108
80
|
(discover == null ? void 0 : discover.map((payload) => {
|
|
109
|
-
const address = payload.schema ===
|
|
81
|
+
const address = payload.schema === AddressSchema ? payload.address : void 0;
|
|
110
82
|
return address != this.address ? address : void 0;
|
|
111
83
|
})) ?? []
|
|
112
84
|
);
|
|
@@ -120,7 +92,7 @@ var ProxyModule = class extends import_module_abstract.BaseEmitter {
|
|
|
120
92
|
}
|
|
121
93
|
manifest(_depth) {
|
|
122
94
|
const name = this.config.name ?? "Anonymous";
|
|
123
|
-
return { config: { name, ...this.config }, schema:
|
|
95
|
+
return { config: { name, ...this.config }, schema: ModuleManifestPayloadSchema };
|
|
124
96
|
}
|
|
125
97
|
moduleAddress() {
|
|
126
98
|
throw Error("Not Implemented");
|
|
@@ -130,7 +102,7 @@ var ProxyModule = class extends import_module_abstract.BaseEmitter {
|
|
|
130
102
|
}
|
|
131
103
|
async query(query, payloads) {
|
|
132
104
|
return await this.busy(async () => {
|
|
133
|
-
const result =
|
|
105
|
+
const result = assertEx(await this.bridge.targetQuery(this.address, query, payloads), "Remote Query Failed");
|
|
134
106
|
await this.emit("moduleQueried", { module: this, payloads, query, result });
|
|
135
107
|
return result;
|
|
136
108
|
});
|
|
@@ -150,7 +122,7 @@ var ProxyModule = class extends import_module_abstract.BaseEmitter {
|
|
|
150
122
|
};
|
|
151
123
|
|
|
152
124
|
// src/ModuleResolver.ts
|
|
153
|
-
var BridgeModuleResolver = class _BridgeModuleResolver extends
|
|
125
|
+
var BridgeModuleResolver = class _BridgeModuleResolver extends CompositeModuleResolver2 {
|
|
154
126
|
// TODO: Allow optional ctor param for supplying address for nested Nodes
|
|
155
127
|
// protected readonly address?: string,
|
|
156
128
|
constructor(bridge, wrapperAccount, options) {
|
|
@@ -181,9 +153,9 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_res
|
|
|
181
153
|
this.remoteAddresses = this.remoteAddresses ?? (async () => {
|
|
182
154
|
var _a;
|
|
183
155
|
const discover = await this.bridge.targetDiscover(void 0, (_a = this.options) == null ? void 0 : _a.maxDepth);
|
|
184
|
-
return (
|
|
156
|
+
return compact2(
|
|
185
157
|
discover == null ? void 0 : discover.map((payload) => {
|
|
186
|
-
if (payload.schema ===
|
|
158
|
+
if (payload.schema === AddressSchema2) {
|
|
187
159
|
const schemaPayload = payload;
|
|
188
160
|
return schemaPayload.address;
|
|
189
161
|
} else {
|
|
@@ -230,7 +202,7 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_res
|
|
|
230
202
|
})();
|
|
231
203
|
const identity = options == null ? void 0 : options.identity;
|
|
232
204
|
if (identity) {
|
|
233
|
-
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((
|
|
205
|
+
return Array.isArray(unfiltered) ? unfiltered == null ? void 0 : unfiltered.filter((module) => identity(module)) : identity(unfiltered) ? unfiltered : void 0;
|
|
234
206
|
} else {
|
|
235
207
|
return unfiltered;
|
|
236
208
|
}
|
|
@@ -247,25 +219,25 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_res
|
|
|
247
219
|
await this.bridge.targetDiscover(address);
|
|
248
220
|
const mod = new ProxyModule({ address, bridge: this.bridge, config: { schema: ProxyModuleConfigSchema } });
|
|
249
221
|
try {
|
|
250
|
-
if (
|
|
251
|
-
return
|
|
222
|
+
if (isArchivistModule(mod)) {
|
|
223
|
+
return ArchivistWrapper.wrap(mod, this.wrapperAccount);
|
|
252
224
|
}
|
|
253
|
-
if (
|
|
254
|
-
return
|
|
225
|
+
if (isDivinerModule(mod)) {
|
|
226
|
+
return DivinerWrapper.wrap(mod, this.wrapperAccount);
|
|
255
227
|
}
|
|
256
|
-
if (
|
|
257
|
-
return
|
|
228
|
+
if (isWitnessModule(mod)) {
|
|
229
|
+
return WitnessWrapper.wrap(mod, this.wrapperAccount);
|
|
258
230
|
}
|
|
259
|
-
if (
|
|
260
|
-
return
|
|
231
|
+
if (isNodeModule(mod)) {
|
|
232
|
+
return NodeWrapper.wrap(mod, this.wrapperAccount);
|
|
261
233
|
}
|
|
262
|
-
if (
|
|
263
|
-
return
|
|
234
|
+
if (isSentinelModule(mod)) {
|
|
235
|
+
return SentinelWrapper.wrap(mod, this.wrapperAccount);
|
|
264
236
|
}
|
|
265
237
|
console.warn(`BridgeModuleResolver: Unknown Module Type: [${targetAddress}]`);
|
|
266
|
-
return
|
|
238
|
+
return ModuleWrapper.wrap(mod, this.wrapperAccount);
|
|
267
239
|
} catch (ex) {
|
|
268
|
-
|
|
240
|
+
handleError(ex, (error) => {
|
|
269
241
|
console.error(`BridgeModuleResolver.resolveByAddress: ${error.message} [${targetAddress}]`);
|
|
270
242
|
});
|
|
271
243
|
}
|
|
@@ -274,11 +246,11 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_res
|
|
|
274
246
|
}
|
|
275
247
|
async resolveByName(name) {
|
|
276
248
|
const modules = await this.currentResolvedModules();
|
|
277
|
-
return Object.values(modules).filter((
|
|
249
|
+
return Object.values(modules).filter((module) => module.config.name === name).pop();
|
|
278
250
|
}
|
|
279
251
|
async resolveByQuery(queries) {
|
|
280
|
-
return Object.values(await this.currentResolvedModules()).filter((
|
|
281
|
-
const found =
|
|
252
|
+
return Object.values(await this.currentResolvedModules()).filter((module) => {
|
|
253
|
+
const found = module.queries.filter((query) => queries.find((q) => q === query));
|
|
282
254
|
return queries.length === found.length;
|
|
283
255
|
});
|
|
284
256
|
}
|
|
@@ -295,19 +267,18 @@ var BridgeModuleResolver = class _BridgeModuleResolver extends import_module_res
|
|
|
295
267
|
return await this.resolveRemoteModulesByAddress({ address: await this.getRemoteAddresses() });
|
|
296
268
|
}
|
|
297
269
|
async resolveRemoteModulesByAddress(filter) {
|
|
298
|
-
return (
|
|
270
|
+
return compact2(await Promise.all(filter.address.map((address) => this.resolveByAddress(address))));
|
|
299
271
|
}
|
|
300
272
|
async resolveRemoteModulesByName(filter) {
|
|
301
|
-
return (
|
|
273
|
+
return compact2(await Promise.all(filter.name.map(async (name) => await this.resolveByName(name))));
|
|
302
274
|
}
|
|
303
275
|
async resolveRemoteModulesByQuery(filter) {
|
|
304
|
-
return (
|
|
276
|
+
return compact2((await Promise.all(filter.query.map(async (query) => await this.resolveByQuery(query)))).flat());
|
|
305
277
|
}
|
|
306
278
|
};
|
|
307
|
-
|
|
308
|
-
0 && (module.exports = {
|
|
279
|
+
export {
|
|
309
280
|
BridgeModuleResolver,
|
|
310
281
|
ProxyModule,
|
|
311
282
|
ProxyModuleConfigSchema
|
|
312
|
-
}
|
|
283
|
+
};
|
|
313
284
|
//# sourceMappingURL=index.js.map
|
package/dist/node/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts","../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["export * from './ModuleResolver'\nexport * from './ProxyModule'\n","import { handleError } from '@xylabs/error'\nimport { 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 {\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(undefined, this.options?.maxDepth)\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 { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } 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'\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: ModuleManifestPayloadSchema }\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"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { handleError } from '@xylabs/error'\nimport { 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 {\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(undefined, this.options?.maxDepth)\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 { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } 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'\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: ModuleManifestPayloadSchema }\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"]}
|
package/package.json
CHANGED
|
@@ -14,33 +14,32 @@
|
|
|
14
14
|
"@xylabs/error": "^2.13.20",
|
|
15
15
|
"@xylabs/lodash": "^2.13.20",
|
|
16
16
|
"@xylabs/promise": "^2.13.20",
|
|
17
|
-
"@xyo-network/account-model": "~2.84.
|
|
18
|
-
"@xyo-network/address-payload-plugin": "^2.
|
|
19
|
-
"@xyo-network/archivist-model": "~2.84.
|
|
20
|
-
"@xyo-network/archivist-wrapper": "~2.84.
|
|
21
|
-
"@xyo-network/boundwitness-model": "~2.84.
|
|
22
|
-
"@xyo-network/bridge-model": "~2.84.
|
|
23
|
-
"@xyo-network/diviner": "~2.84.
|
|
24
|
-
"@xyo-network/diviner-model": "~2.84.
|
|
25
|
-
"@xyo-network/manifest-model": "~2.84.
|
|
26
|
-
"@xyo-network/module-abstract": "~2.84.
|
|
27
|
-
"@xyo-network/module-model": "~2.84.
|
|
28
|
-
"@xyo-network/module-resolver": "~2.84.
|
|
29
|
-
"@xyo-network/module-wrapper": "~2.84.
|
|
30
|
-
"@xyo-network/node-model": "~2.84.
|
|
31
|
-
"@xyo-network/node-wrapper": "~2.84.
|
|
32
|
-
"@xyo-network/payload-model": "~2.84.
|
|
33
|
-
"@xyo-network/sentinel": "~2.84.
|
|
34
|
-
"@xyo-network/witness-model": "~2.84.
|
|
35
|
-
"@xyo-network/witness-wrapper": "~2.84.
|
|
17
|
+
"@xyo-network/account-model": "~2.84.3",
|
|
18
|
+
"@xyo-network/address-payload-plugin": "^2.84.0",
|
|
19
|
+
"@xyo-network/archivist-model": "~2.84.3",
|
|
20
|
+
"@xyo-network/archivist-wrapper": "~2.84.3",
|
|
21
|
+
"@xyo-network/boundwitness-model": "~2.84.3",
|
|
22
|
+
"@xyo-network/bridge-model": "~2.84.3",
|
|
23
|
+
"@xyo-network/diviner": "~2.84.3",
|
|
24
|
+
"@xyo-network/diviner-model": "~2.84.3",
|
|
25
|
+
"@xyo-network/manifest-model": "~2.84.3",
|
|
26
|
+
"@xyo-network/module-abstract": "~2.84.3",
|
|
27
|
+
"@xyo-network/module-model": "~2.84.3",
|
|
28
|
+
"@xyo-network/module-resolver": "~2.84.3",
|
|
29
|
+
"@xyo-network/module-wrapper": "~2.84.3",
|
|
30
|
+
"@xyo-network/node-model": "~2.84.3",
|
|
31
|
+
"@xyo-network/node-wrapper": "~2.84.3",
|
|
32
|
+
"@xyo-network/payload-model": "~2.84.3",
|
|
33
|
+
"@xyo-network/sentinel": "~2.84.3",
|
|
34
|
+
"@xyo-network/witness-model": "~2.84.3",
|
|
35
|
+
"@xyo-network/witness-wrapper": "~2.84.3"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@xylabs/ts-scripts-yarn3": "^3.2.
|
|
39
|
-
"@xylabs/tsconfig": "^3.2.
|
|
38
|
+
"@xylabs/ts-scripts-yarn3": "^3.2.19",
|
|
39
|
+
"@xylabs/tsconfig": "^3.2.19",
|
|
40
40
|
"typescript": "^5.3.3"
|
|
41
41
|
},
|
|
42
42
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
43
|
-
"docs": "dist/docs.json",
|
|
44
43
|
"types": "dist/node/index.d.ts",
|
|
45
44
|
"exports": {
|
|
46
45
|
".": {
|
|
@@ -56,19 +55,19 @@
|
|
|
56
55
|
},
|
|
57
56
|
"node": {
|
|
58
57
|
"require": {
|
|
59
|
-
"types": "./dist/node/index.d.
|
|
60
|
-
"default": "./dist/node/index.
|
|
58
|
+
"types": "./dist/node/index.d.cts",
|
|
59
|
+
"default": "./dist/node/index.cjs"
|
|
61
60
|
},
|
|
62
61
|
"import": {
|
|
63
62
|
"types": "./dist/node/index.d.mts",
|
|
64
|
-
"default": "./dist/node/index.
|
|
63
|
+
"default": "./dist/node/index.js"
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
66
|
},
|
|
68
67
|
"./package.json": "./package.json"
|
|
69
68
|
},
|
|
70
|
-
"main": "dist/node/index.
|
|
71
|
-
"module": "dist/node/index.
|
|
69
|
+
"main": "dist/node/index.cjs",
|
|
70
|
+
"module": "dist/node/index.js",
|
|
72
71
|
"homepage": "https://xyo.network",
|
|
73
72
|
"license": "LGPL-3.0-only",
|
|
74
73
|
"publishConfig": {
|
|
@@ -79,5 +78,6 @@
|
|
|
79
78
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
|
|
80
79
|
},
|
|
81
80
|
"sideEffects": false,
|
|
82
|
-
"version": "2.84.
|
|
81
|
+
"version": "2.84.3",
|
|
82
|
+
"type": "module"
|
|
83
83
|
}
|
package/dist/node/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ModuleResolver.ts","../../src/ProxyModule.ts"],"sourcesContent":["import { handleError } from '@xylabs/error'\nimport { 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 {\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(undefined, this.options?.maxDepth)\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 { Promisable } from '@xylabs/promise'\nimport { AddressPayload, AddressSchema } from '@xyo-network/address-payload-plugin'\nimport { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BridgeModule } from '@xyo-network/bridge-model'\nimport { ModuleManifestPayload, ModuleManifestPayloadSchema } 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'\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: ModuleManifestPayloadSchema }\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"]}
|