@xyo-network/bridge-abstract 3.6.8 → 3.6.10
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/neutral/index.mjs +98 -141
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +31 -31
package/dist/neutral/index.mjs
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/AbstractBridge.ts
|
|
5
2
|
import { assertEx } from "@xylabs/assert";
|
|
6
3
|
import { exists } from "@xylabs/exists";
|
|
@@ -8,18 +5,26 @@ import { forget } from "@xylabs/forget";
|
|
|
8
5
|
import { globallyUnique } from "@xylabs/object";
|
|
9
6
|
import { asArchivistInstance } from "@xyo-network/archivist-model";
|
|
10
7
|
import { QueryBoundWitnessWrapper } from "@xyo-network/boundwitness-wrapper";
|
|
11
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
BridgeConfigSchema,
|
|
10
|
+
BridgeConnectQuerySchema,
|
|
11
|
+
BridgeDisconnectQuerySchema,
|
|
12
|
+
BridgeExposeQuerySchema,
|
|
13
|
+
BridgeUnexposeQuerySchema,
|
|
14
|
+
ModuleFilterPayloadSchema
|
|
15
|
+
} from "@xyo-network/bridge-model";
|
|
12
16
|
import { AbstractModuleInstance } from "@xyo-network/module-abstract";
|
|
13
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
AddressSchema,
|
|
19
|
+
isAddressModuleFilter,
|
|
20
|
+
isNameModuleFilter,
|
|
21
|
+
resolveAddressToInstance,
|
|
22
|
+
resolvePathToAddress,
|
|
23
|
+
transformModuleIdentifier
|
|
24
|
+
} from "@xyo-network/module-model";
|
|
14
25
|
import { isPayloadOfSchemaType } from "@xyo-network/payload-model";
|
|
15
26
|
var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
16
|
-
static
|
|
17
|
-
__name(this, "AbstractBridge");
|
|
18
|
-
}
|
|
19
|
-
static configSchemas = [
|
|
20
|
-
...super.configSchemas,
|
|
21
|
-
BridgeConfigSchema
|
|
22
|
-
];
|
|
27
|
+
static configSchemas = [...super.configSchemas, BridgeConfigSchema];
|
|
23
28
|
static defaultConfigSchema = BridgeConfigSchema;
|
|
24
29
|
static uniqueName = globallyUnique("AbstractBridge", _AbstractBridge, "xyo");
|
|
25
30
|
_roots;
|
|
@@ -30,13 +35,7 @@ var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
|
30
35
|
return this.config.client?.discoverRoots ?? this.config.discoverRoots ?? (this.config.client === void 0 ? false : "start");
|
|
31
36
|
}
|
|
32
37
|
get queries() {
|
|
33
|
-
return [
|
|
34
|
-
BridgeConnectQuerySchema,
|
|
35
|
-
BridgeDisconnectQuerySchema,
|
|
36
|
-
BridgeExposeQuerySchema,
|
|
37
|
-
BridgeUnexposeQuerySchema,
|
|
38
|
-
...super.queries
|
|
39
|
-
];
|
|
38
|
+
return [BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ...super.queries];
|
|
40
39
|
}
|
|
41
40
|
get resolver() {
|
|
42
41
|
return assertEx(this.params.resolver, () => "No resolver provided");
|
|
@@ -47,10 +46,7 @@ var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
|
47
46
|
const addressToExpose = assertEx(await resolvePathToAddress(this, id), () => `Module to expose not found [${id}]`);
|
|
48
47
|
console.log(`expose: ${addressToExpose}`);
|
|
49
48
|
const modules = await this.exposeHandler(addressToExpose, options);
|
|
50
|
-
await this.emit("exposed", {
|
|
51
|
-
mod: this,
|
|
52
|
-
modules
|
|
53
|
-
});
|
|
49
|
+
await this.emit("exposed", { mod: this, modules });
|
|
54
50
|
return modules;
|
|
55
51
|
}
|
|
56
52
|
async exposed() {
|
|
@@ -60,21 +56,10 @@ var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
|
60
56
|
// eslint-disable-next-line complexity
|
|
61
57
|
async resolve(idOrFilter = "*", options = {}) {
|
|
62
58
|
const roots = this._roots ?? [];
|
|
63
|
-
const workingSet = options.direction === "up" ? [
|
|
64
|
-
this
|
|
65
|
-
] : [
|
|
66
|
-
...roots,
|
|
67
|
-
this
|
|
68
|
-
];
|
|
59
|
+
const workingSet = options.direction === "up" ? [this] : [...roots, this];
|
|
69
60
|
if (idOrFilter === "*") {
|
|
70
61
|
const remainingDepth = (options.maxDepth ?? 5) - 1;
|
|
71
|
-
return remainingDepth <= 0 ? workingSet : [
|
|
72
|
-
...workingSet,
|
|
73
|
-
...(await Promise.all(roots.map((mod) => mod.resolve("*", {
|
|
74
|
-
...options,
|
|
75
|
-
maxDepth: remainingDepth
|
|
76
|
-
})))).flat()
|
|
77
|
-
];
|
|
62
|
+
return remainingDepth <= 0 ? workingSet : [...workingSet, ...(await Promise.all(roots.map((mod) => mod.resolve("*", { ...options, maxDepth: remainingDepth })))).flat()];
|
|
78
63
|
}
|
|
79
64
|
switch (typeof idOrFilter) {
|
|
80
65
|
case "string": {
|
|
@@ -117,10 +102,7 @@ var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
|
117
102
|
this._noOverride("unexpose");
|
|
118
103
|
const addressToUnexpose = assertEx(await resolvePathToAddress(this, id), () => `Module to unexpose not found [${id}]`);
|
|
119
104
|
const modules = await this.unexposeHandler(addressToUnexpose, options);
|
|
120
|
-
await this.emit("unexposed", {
|
|
121
|
-
mod: this,
|
|
122
|
-
modules
|
|
123
|
-
});
|
|
105
|
+
await this.emit("unexposed", { mod: this, modules });
|
|
124
106
|
return modules.map((mod) => mod.address);
|
|
125
107
|
}
|
|
126
108
|
async queryHandler(query, payloads) {
|
|
@@ -131,33 +113,37 @@ var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
|
131
113
|
case BridgeExposeQuerySchema: {
|
|
132
114
|
const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType(ModuleFilterPayloadSchema));
|
|
133
115
|
assertEx(filterPayloads, () => "At least one filter is required");
|
|
134
|
-
await Promise.all(
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
const
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
116
|
+
await Promise.all(
|
|
117
|
+
filterPayloads.map(async (filter) => {
|
|
118
|
+
const { id, ...options } = filter;
|
|
119
|
+
const modules = await this.expose(id, options);
|
|
120
|
+
for (const mod of modules) {
|
|
121
|
+
const addressPayload = {
|
|
122
|
+
address: mod.address,
|
|
123
|
+
schema: AddressSchema
|
|
124
|
+
};
|
|
125
|
+
resultPayloads.push(addressPayload);
|
|
126
|
+
}
|
|
127
|
+
})
|
|
128
|
+
);
|
|
145
129
|
break;
|
|
146
130
|
}
|
|
147
131
|
case BridgeUnexposeQuerySchema: {
|
|
148
132
|
const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType(ModuleFilterPayloadSchema));
|
|
149
133
|
assertEx(filterPayloads, () => "At least one filter is required");
|
|
150
|
-
await Promise.all(
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
134
|
+
await Promise.all(
|
|
135
|
+
filterPayloads.map(async (filter) => {
|
|
136
|
+
const { id, ...options } = filter;
|
|
137
|
+
const moduleAddresses = await this.unexpose(id, options);
|
|
138
|
+
for (const address of moduleAddresses) {
|
|
139
|
+
const addressPayload = {
|
|
140
|
+
address,
|
|
141
|
+
schema: AddressSchema
|
|
142
|
+
};
|
|
143
|
+
resultPayloads.push(addressPayload);
|
|
144
|
+
}
|
|
145
|
+
})
|
|
146
|
+
);
|
|
161
147
|
break;
|
|
162
148
|
}
|
|
163
149
|
default: {
|
|
@@ -169,7 +155,9 @@ var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
|
169
155
|
async resolveArchivingArchivists() {
|
|
170
156
|
const archivists = this.archiving?.archivists;
|
|
171
157
|
if (!archivists) return [];
|
|
172
|
-
const resolvedAddresses = (await Promise.all(
|
|
158
|
+
const resolvedAddresses = (await Promise.all(
|
|
159
|
+
archivists.map(async (archivist) => (await Promise.all((await this.parents()).map((parent) => resolvePathToAddress(parent, archivist)))).filter(exists))
|
|
160
|
+
)).flat().filter(exists);
|
|
173
161
|
const resolved = (await Promise.all(resolvedAddresses.map((address) => resolveAddressToInstance(this, address)))).filter(exists);
|
|
174
162
|
return resolved.map((mod) => asArchivistInstance(mod)).filter(exists);
|
|
175
163
|
}
|
|
@@ -179,9 +167,6 @@ var AbstractBridge = class _AbstractBridge extends AbstractModuleInstance {
|
|
|
179
167
|
import { ObjectResolverPriority } from "@xyo-network/module-model";
|
|
180
168
|
import { CompositeModuleResolver } from "@xyo-network/module-resolver";
|
|
181
169
|
var AbstractBridgeModuleResolver = class extends CompositeModuleResolver {
|
|
182
|
-
static {
|
|
183
|
-
__name(this, "AbstractBridgeModuleResolver");
|
|
184
|
-
}
|
|
185
170
|
get priority() {
|
|
186
171
|
return ObjectResolverPriority.VeryLow;
|
|
187
172
|
}
|
|
@@ -202,7 +187,13 @@ import { toJsonString } from "@xylabs/object";
|
|
|
202
187
|
import { BoundWitnessWrapper, QueryBoundWitnessWrapper as QueryBoundWitnessWrapper2 } from "@xyo-network/boundwitness-wrapper";
|
|
203
188
|
import { ModuleManifestPayloadSchema, NodeManifestPayloadSchema } from "@xyo-network/manifest-model";
|
|
204
189
|
import { AbstractModuleInstance as AbstractModuleInstance2 } from "@xyo-network/module-abstract";
|
|
205
|
-
import {
|
|
190
|
+
import {
|
|
191
|
+
AddressPreviousHashSchema,
|
|
192
|
+
DeadModuleError,
|
|
193
|
+
ModuleAddressQuerySchema,
|
|
194
|
+
ModuleManifestQuerySchema,
|
|
195
|
+
ModuleStateQuerySchema
|
|
196
|
+
} from "@xyo-network/module-model";
|
|
206
197
|
import { ModuleWrapper } from "@xyo-network/module-wrapper";
|
|
207
198
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
208
199
|
import { isPayloadOfSchemaType as isPayloadOfSchemaType2, ModuleErrorSchema } from "@xyo-network/payload-model";
|
|
@@ -213,7 +204,11 @@ import { LRUCache } from "lru-cache";
|
|
|
213
204
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
214
205
|
import { exists as exists2 } from "@xylabs/exists";
|
|
215
206
|
import { Account } from "@xyo-network/account";
|
|
216
|
-
import {
|
|
207
|
+
import {
|
|
208
|
+
isAddressModuleFilter as isAddressModuleFilter2,
|
|
209
|
+
isNameModuleFilter as isNameModuleFilter2,
|
|
210
|
+
ObjectResolverPriority as ObjectResolverPriority2
|
|
211
|
+
} from "@xyo-network/module-model";
|
|
217
212
|
import { CompositeModuleResolver as CompositeModuleResolver2 } from "@xyo-network/module-resolver";
|
|
218
213
|
|
|
219
214
|
// src/wrapModuleWithType.ts
|
|
@@ -227,7 +222,7 @@ import { isSentinelModule } from "@xyo-network/sentinel-model";
|
|
|
227
222
|
import { SentinelWrapper } from "@xyo-network/sentinel-wrapper";
|
|
228
223
|
import { isWitnessModule } from "@xyo-network/witness-model";
|
|
229
224
|
import { WitnessWrapper } from "@xyo-network/witness-wrapper";
|
|
230
|
-
var wrapModuleWithType =
|
|
225
|
+
var wrapModuleWithType = (mod, account) => {
|
|
231
226
|
if (isArchivistModule(mod)) {
|
|
232
227
|
return ArchivistWrapper.wrap(mod, account);
|
|
233
228
|
}
|
|
@@ -244,22 +239,15 @@ var wrapModuleWithType = /* @__PURE__ */ __name((mod, account) => {
|
|
|
244
239
|
return WitnessWrapper.wrap(mod, account);
|
|
245
240
|
}
|
|
246
241
|
throw "Failed to wrap";
|
|
247
|
-
}
|
|
242
|
+
};
|
|
248
243
|
|
|
249
244
|
// src/AbstractModuleProxy/ModuleProxyResolver.ts
|
|
250
245
|
var ModuleProxyResolver = class {
|
|
251
|
-
static {
|
|
252
|
-
__name(this, "ModuleProxyResolver");
|
|
253
|
-
}
|
|
254
|
-
options;
|
|
255
|
-
downResolver;
|
|
256
246
|
constructor(options) {
|
|
257
247
|
this.options = options;
|
|
258
|
-
this.downResolver = new CompositeModuleResolver2({
|
|
259
|
-
moduleIdentifierTransformers: options.moduleIdentifierTransformers,
|
|
260
|
-
root: this.root
|
|
261
|
-
});
|
|
248
|
+
this.downResolver = new CompositeModuleResolver2({ moduleIdentifierTransformers: options.moduleIdentifierTransformers, root: this.root });
|
|
262
249
|
}
|
|
250
|
+
downResolver;
|
|
263
251
|
get priority() {
|
|
264
252
|
return ObjectResolverPriority2.VeryLow;
|
|
265
253
|
}
|
|
@@ -312,10 +300,7 @@ var ModuleProxyResolver = class {
|
|
|
312
300
|
}
|
|
313
301
|
const addressToProxy = Object.keys(this.childAddressMap).includes(firstPartAddress) ? firstPartAddress : Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)?.[0];
|
|
314
302
|
if (addressToProxy) {
|
|
315
|
-
const proxy = await this.host.resolve(addressToProxy, {
|
|
316
|
-
...options,
|
|
317
|
-
direction: "down"
|
|
318
|
-
});
|
|
303
|
+
const proxy = await this.host.resolve(addressToProxy, { ...options, direction: "down" });
|
|
319
304
|
if (proxy) {
|
|
320
305
|
const wrapped = wrapModuleWithType(proxy, await Account.random());
|
|
321
306
|
return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped;
|
|
@@ -356,12 +341,7 @@ var ModuleProxyResolver = class {
|
|
|
356
341
|
|
|
357
342
|
// src/AbstractModuleProxy/AbstractModuleProxy.ts
|
|
358
343
|
var AbstractModuleProxy = class _AbstractModuleProxy extends AbstractModuleInstance2 {
|
|
359
|
-
static
|
|
360
|
-
__name(this, "AbstractModuleProxy");
|
|
361
|
-
}
|
|
362
|
-
static requiredQueries = [
|
|
363
|
-
ModuleStateQuerySchema
|
|
364
|
-
];
|
|
344
|
+
static requiredQueries = [ModuleStateQuerySchema];
|
|
365
345
|
_config;
|
|
366
346
|
_publicChildren;
|
|
367
347
|
_state = void 0;
|
|
@@ -398,10 +378,13 @@ var AbstractModuleProxy = class _AbstractModuleProxy extends AbstractModuleInsta
|
|
|
398
378
|
}).filter(exists3);
|
|
399
379
|
}
|
|
400
380
|
async addressPreviousHash() {
|
|
401
|
-
const queryPayload = {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
381
|
+
const queryPayload = { schema: ModuleAddressQuerySchema };
|
|
382
|
+
const result = assertEx3(
|
|
383
|
+
(await this.sendQuery(queryPayload, void 0, this.account)).find(
|
|
384
|
+
isPayloadOfSchemaType2(AddressPreviousHashSchema)
|
|
385
|
+
),
|
|
386
|
+
() => "Result did not include correct payload"
|
|
387
|
+
);
|
|
405
388
|
return result;
|
|
406
389
|
}
|
|
407
390
|
childAddressByName(name) {
|
|
@@ -410,9 +393,7 @@ var AbstractModuleProxy = class _AbstractModuleProxy extends AbstractModuleInsta
|
|
|
410
393
|
return asAddress(childPairs?.find(([_, childName]) => childName === name)?.[0]);
|
|
411
394
|
}
|
|
412
395
|
async childAddressMap() {
|
|
413
|
-
let nodeManifests = isPayloadOfSchemaType2(NodeManifestPayloadSchema)(this.params.manifest) ? [
|
|
414
|
-
this.params.manifest
|
|
415
|
-
] : void 0;
|
|
396
|
+
let nodeManifests = isPayloadOfSchemaType2(NodeManifestPayloadSchema)(this.params.manifest) ? [this.params.manifest] : void 0;
|
|
416
397
|
const result = {};
|
|
417
398
|
if (nodeManifests === void 0) {
|
|
418
399
|
const state = await this.state();
|
|
@@ -432,24 +413,15 @@ var AbstractModuleProxy = class _AbstractModuleProxy extends AbstractModuleInsta
|
|
|
432
413
|
return result;
|
|
433
414
|
}
|
|
434
415
|
async manifest(maxDepth) {
|
|
435
|
-
const queryPayload = {
|
|
436
|
-
schema: ModuleManifestQuerySchema,
|
|
437
|
-
...maxDepth === void 0 ? {} : {
|
|
438
|
-
maxDepth
|
|
439
|
-
}
|
|
440
|
-
};
|
|
416
|
+
const queryPayload = { schema: ModuleManifestQuerySchema, ...maxDepth === void 0 ? {} : { maxDepth } };
|
|
441
417
|
return (await this.sendQuery(queryPayload))[0];
|
|
442
418
|
}
|
|
443
419
|
async moduleAddress() {
|
|
444
|
-
const queryPayload = {
|
|
445
|
-
schema: ModuleAddressQuerySchema
|
|
446
|
-
};
|
|
420
|
+
const queryPayload = { schema: ModuleAddressQuerySchema };
|
|
447
421
|
return await this.sendQuery(queryPayload);
|
|
448
422
|
}
|
|
449
423
|
async previousHash() {
|
|
450
|
-
const queryPayload = {
|
|
451
|
-
schema: ModuleAddressQuerySchema
|
|
452
|
-
};
|
|
424
|
+
const queryPayload = { schema: ModuleAddressQuerySchema };
|
|
453
425
|
return (await this.sendQuery(queryPayload)).pop().previousHash;
|
|
454
426
|
}
|
|
455
427
|
async publicChildren() {
|
|
@@ -462,15 +434,9 @@ var AbstractModuleProxy = class _AbstractModuleProxy extends AbstractModuleInsta
|
|
|
462
434
|
try {
|
|
463
435
|
await this.checkSpam(query);
|
|
464
436
|
if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {
|
|
465
|
-
forget2(this.storeToArchivists([
|
|
466
|
-
query,
|
|
467
|
-
...payloads ?? []
|
|
468
|
-
]));
|
|
437
|
+
forget2(this.storeToArchivists([query, ...payloads ?? []]));
|
|
469
438
|
}
|
|
470
|
-
this.params.onQuerySendStarted?.({
|
|
471
|
-
payloads,
|
|
472
|
-
query
|
|
473
|
-
});
|
|
439
|
+
this.params.onQuerySendStarted?.({ payloads, query });
|
|
474
440
|
const result = await this.proxyQueryHandler(query, payloads);
|
|
475
441
|
this.params.onQuerySendFinished?.({
|
|
476
442
|
payloads,
|
|
@@ -503,9 +469,7 @@ var AbstractModuleProxy = class _AbstractModuleProxy extends AbstractModuleInsta
|
|
|
503
469
|
schema: ModuleErrorSchema
|
|
504
470
|
};
|
|
505
471
|
const sourceQuery = assertEx3(QueryBoundWitnessWrapper2.unwrap(query), () => "Invalid query");
|
|
506
|
-
return await this.bindQueryResult(sourceQuery, [], void 0, [
|
|
507
|
-
errorPayload
|
|
508
|
-
]);
|
|
472
|
+
return await this.bindQueryResult(sourceQuery, [], void 0, [errorPayload]);
|
|
509
473
|
}
|
|
510
474
|
});
|
|
511
475
|
}
|
|
@@ -528,34 +492,27 @@ var AbstractModuleProxy = class _AbstractModuleProxy extends AbstractModuleInsta
|
|
|
528
492
|
let manifest = this.params.manifest;
|
|
529
493
|
if (!manifest) {
|
|
530
494
|
const state = await this.state();
|
|
531
|
-
const manifestPayload = state.find(
|
|
495
|
+
const manifestPayload = state.find(
|
|
496
|
+
(payload) => isPayloadOfSchemaType2(NodeManifestPayloadSchema)(payload) || isPayloadOfSchemaType2(ModuleManifestPayloadSchema)(payload)
|
|
497
|
+
);
|
|
532
498
|
manifest = assertEx3(manifestPayload, () => "Can't find manifest payload");
|
|
533
499
|
}
|
|
534
|
-
this.setConfig({
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
500
|
+
this.setConfig({ ...manifest.config });
|
|
501
|
+
this.downResolver.addResolver(
|
|
502
|
+
new ModuleProxyResolver({
|
|
503
|
+
childAddressMap: await this.childAddressMap(),
|
|
504
|
+
host: this.params.host,
|
|
505
|
+
mod: this,
|
|
506
|
+
moduleIdentifierTransformers: this.params.moduleIdentifierTransformers
|
|
507
|
+
})
|
|
508
|
+
);
|
|
543
509
|
return await super.startHandler();
|
|
544
510
|
}
|
|
545
511
|
async state() {
|
|
546
512
|
if (this._state === void 0) {
|
|
547
|
-
const stateQueryPayload = {
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
};
|
|
551
|
-
const manifestQueryPayload = {
|
|
552
|
-
query: ModuleManifestQuerySchema,
|
|
553
|
-
schema: QuerySchema
|
|
554
|
-
};
|
|
555
|
-
this._state = [
|
|
556
|
-
stateQueryPayload,
|
|
557
|
-
manifestQueryPayload
|
|
558
|
-
];
|
|
513
|
+
const stateQueryPayload = { query: ModuleStateQuerySchema, schema: QuerySchema };
|
|
514
|
+
const manifestQueryPayload = { query: ModuleManifestQuerySchema, schema: QuerySchema };
|
|
515
|
+
this._state = [stateQueryPayload, manifestQueryPayload];
|
|
559
516
|
const wrapper = ModuleWrapper.wrap(this, this.account);
|
|
560
517
|
this._state = await wrapper.state();
|
|
561
518
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/AbstractBridge.ts","../../src/AbstractBridgeModuleResolver.ts","../../src/AbstractModuleProxy/AbstractModuleProxy.ts","../../src/AbstractModuleProxy/ModuleProxyResolver.ts","../../src/wrapModuleWithType.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport type { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type {\n AttachableBridgeInstance,\n BridgeExposeOptions,\n BridgeModuleEventData,\n BridgeParams,\n BridgeQueries,\n BridgeUnexposeOptions,\n ModuleFilterPayload,\n} from '@xyo-network/bridge-model'\nimport {\n BridgeConfigSchema,\n BridgeConnectQuerySchema,\n BridgeDisconnectQuerySchema,\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n ModuleFilterPayloadSchema,\n} from '@xyo-network/bridge-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n AddressPayload,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\nimport {\n AddressSchema,\n isAddressModuleFilter,\n isNameModuleFilter,\n resolveAddressToInstance,\n resolvePathToAddress,\n transformModuleIdentifier,\n} from '@xyo-network/module-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport abstract class AbstractBridge<TParams extends BridgeParams = BridgeParams>\n extends AbstractModuleInstance<TParams, BridgeModuleEventData>\n implements AttachableBridgeInstance<TParams, BridgeModuleEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = BridgeConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractBridge', AbstractBridge, 'xyo')\n\n protected _roots?: ModuleInstance[]\n\n override get allowNameResolution() {\n // we default to false here to prevent name collisions\n return this.params.allowNameResolution ?? true\n }\n\n get discoverRoots() {\n return this.config.client?.discoverRoots ?? this.config.discoverRoots ?? (this.config.client === undefined ? false : 'start')\n }\n\n override get queries(): string[] {\n return [BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ...super.queries]\n }\n\n get resolver(): Promisable<ModuleResolverInstance> {\n return assertEx(this.params.resolver, () => 'No resolver provided')\n }\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n this._noOverride('expose')\n assertEx(id !== '*', () => \"Exposing '*' not supported\")\n const addressToExpose = assertEx(await resolvePathToAddress(this, id), () => `Module to expose not found [${id}]`)\n console.log(`expose: ${addressToExpose}`)\n const modules = await this.exposeHandler(addressToExpose, options)\n await this.emit('exposed', { mod: this, modules })\n return modules\n }\n\n async exposed(): Promise<Address[]> {\n this._noOverride('exposed')\n return await this.exposedHandler()\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n // eslint-disable-next-line complexity\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const roots = (this._roots ?? []) as T[]\n const workingSet = (options.direction === 'up' ? [this as ModuleInstance] : [...roots, this]) as T[]\n if (idOrFilter === '*') {\n const remainingDepth = (options.maxDepth ?? 5) - 1\n return remainingDepth <= 0\n ? workingSet\n : (\n [...workingSet, ...(await Promise.all(roots.map(mod => mod.resolve('*', { ...options, maxDepth: remainingDepth })))).flat()]\n )\n }\n switch (typeof idOrFilter) {\n case 'string': {\n const parts = idOrFilter.split(':')\n const first = assertEx(parts.shift(), () => 'Missing module identifier')\n const firstId = await transformModuleIdentifier(first, this.moduleIdentifierTransformers)\n const result = workingSet.find((mod) => {\n return firstId === mod.address || firstId === mod.modName\n })\n return parts.length === 0 ? result : result?.resolve(parts.join(':'), options)\n }\n case 'object': {\n const results: T[] = []\n if (isNameModuleFilter(idOrFilter)) {\n for (const mod of workingSet) {\n if (mod.modName && idOrFilter.name.includes(mod.modName)) results.push(mod as T)\n }\n }\n if (isAddressModuleFilter(idOrFilter)) {\n for (const mod of workingSet) {\n if (mod.modName && idOrFilter.address.includes(mod.address)) results.push(mod as T)\n }\n }\n return results\n }\n default: {\n return\n }\n }\n }\n\n override async startHandler(): Promise<boolean> {\n if (this.discoverRoots === 'lazy') {\n forget(this.getRoots())\n } else if (this.discoverRoots === 'start') {\n await this.getRoots()\n }\n return true\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions | undefined): Promise<Address[]> {\n this._noOverride('unexpose')\n const addressToUnexpose = assertEx(await resolvePathToAddress(this, id), () => `Module to unexpose not found [${id}]`)\n const modules = await this.unexposeHandler(addressToUnexpose, options)\n await this.emit('unexposed', { mod: this, modules })\n return modules.map(mod => mod.address)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n query: T,\n payloads?: Payload[],\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<BridgeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case BridgeExposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const modules = await this.expose(id, options)\n for (const mod of modules) {\n const addressPayload: AddressPayload = {\n address: mod.address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n case BridgeUnexposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const moduleAddresses = await this.unexpose(id, options)\n for (const address of moduleAddresses) {\n const addressPayload: AddressPayload = {\n address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolvedAddresses = (\n await Promise.all(\n archivists.map(async archivist =>\n (await Promise.all((await this.parents()).map(parent => resolvePathToAddress(parent, archivist)))).filter(exists)),\n )\n )\n .flat()\n .filter(exists)\n const resolved = (await Promise.all(resolvedAddresses.map(address => resolveAddressToInstance(this, address)))).filter(exists)\n return resolved.map(mod => asArchivistInstance(mod)).filter(exists)\n }\n\n abstract exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>\n\n abstract exposedHandler(): Promisable<Address[]>\n\n abstract getRoots(force?: boolean): Promise<ModuleInstance[]>\n\n abstract unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type {\n BridgeInstance, QuerySendFinishedEventArgs, QuerySendStartedEventArgs,\n} from '@xyo-network/bridge-model'\nimport type {\n ArchivingModuleConfig,\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '@xyo-network/module-model'\nimport { ObjectResolverPriority } from '@xyo-network/module-model'\nimport type { ModuleResolverParams } from '@xyo-network/module-resolver'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\n\nimport type { ModuleProxyParams } from './AbstractModuleProxy/index.ts'\n\nexport interface BridgeModuleResolverParams extends ModuleResolverParams {\n additionalSigners?: AccountInstance[]\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n bridge: BridgeInstance\n cacheConfig?: CacheConfig\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n wrapperAccount: AccountInstance\n}\n\nexport abstract class AbstractBridgeModuleResolver<\n TParams extends BridgeModuleResolverParams = BridgeModuleResolverParams,\n TProxyParams extends ModuleProxyParams = ModuleProxyParams,\n> extends CompositeModuleResolver<TParams> {\n override get priority() {\n return ObjectResolverPriority.VeryLow\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n _params?: Partial<TProxyParams>,\n ): Promise<T[]> {\n if (id === '*') {\n return []\n }\n return await super.resolveHandler(id, options)\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport type { Address } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { QuerySendFinishedEventArgs, QuerySendStartedEventArgs } from '@xyo-network/bridge-model'\nimport type { ModuleManifestPayload, NodeManifestPayload } from '@xyo-network/manifest-model'\nimport { ModuleManifestPayloadSchema, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n AddressPreviousHashPayload,\n ArchivingModuleConfig,\n Module,\n ModuleAddressQuery,\n ModuleConfigSchema,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleParams,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolver,\n} from '@xyo-network/module-model'\nimport {\n AddressPreviousHashSchema,\n DeadModuleError,\n ModuleAddressQuerySchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n} from '@xyo-network/module-model'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { ModuleError, Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, ModuleErrorSchema } from '@xyo-network/payload-model'\nimport type { QueryPayload } from '@xyo-network/query-payload-plugin'\nimport { QuerySchema } from '@xyo-network/query-payload-plugin'\nimport { LRUCache } from 'lru-cache'\n\nimport { ModuleProxyResolver } from './ModuleProxyResolver.ts'\n\nexport type ModuleProxyParams = ModuleParams<\n {\n schema: ModuleConfigSchema\n },\n {\n account: AccountInstance\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n host: ModuleResolver\n manifest?: ModuleManifestPayload\n moduleAddress: Address\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n state?: Payload[]\n }\n>\n\nexport abstract class AbstractModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<ModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<ModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n>\n extends AbstractModuleInstance<TParams, TWrappedModule['eventData']>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static requiredQueries: string[] = [ModuleStateQuerySchema]\n\n protected _config?: ModuleInstance['config']\n protected _publicChildren?: ModuleInstance[]\n protected _state: Payload[] | undefined = undefined\n protected _stateInProcess = false\n\n private _spamTrap = new LRUCache<string, number>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n constructor(params: TParams) {\n params.addToResolvers = false\n super(AbstractModuleProxy.privateConstructorKey, params, params.account)\n }\n\n override get address() {\n return this.params.moduleAddress\n }\n\n override get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.params?.archiving\n }\n\n override get config() {\n return assertEx(this._config, () => 'Config not set')\n }\n\n override get queries(): string[] {\n const queryPayloads = assertEx(this._state, () => 'Module state not found. Make sure proxy has been started').filter(item =>\n isPayloadOfSchemaType<QueryPayload>(QuerySchema)(item)) as QueryPayload[]\n return queryPayloads.map(payload => payload.query)\n }\n\n static hasRequiredQueries(mod: Module) {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static missingRequiredQueries(mod: Module): string[] {\n const moduleQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n const result: AddressPreviousHashPayload = assertEx(\n (await this.sendQuery(queryPayload, undefined, this.account)).find(\n isPayloadOfSchemaType<AddressPreviousHashPayload>(AddressPreviousHashSchema),\n ) as AddressPreviousHashPayload,\n () => 'Result did not include correct payload',\n )\n return result\n }\n\n childAddressByName(name: ModuleName): Address | undefined {\n const nodeManifests = this._state?.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n const childPairs = nodeManifests?.flatMap(nodeManifest => Object.entries(nodeManifest.status?.children ?? {}) as [Address, ModuleName | null][])\n return asAddress(childPairs?.find(([_, childName]) => childName === name)?.[0])\n }\n\n async childAddressMap(): Promise<Record<Address, ModuleName | null>> {\n let nodeManifests: NodeManifestPayload[] | undefined\n = isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(this.params.manifest) ? [this.params.manifest] : undefined\n const result: Record<Address, ModuleName | null> = {}\n if (nodeManifests === undefined) {\n const state = await this.state()\n nodeManifests = state.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n }\n for (const manifest of nodeManifests ?? []) {\n const children = manifest.modules?.public ?? []\n for (const child of children) {\n if (typeof child === 'object') {\n const address = child.status?.address\n if (address) {\n result[address] = child.config.name ?? null\n }\n }\n }\n }\n return result\n }\n\n override async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as ModuleManifestPayload\n }\n\n override async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload)) as AddressPreviousHashPayload[]\n }\n\n override async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as AddressPreviousHashPayload).previousHash\n }\n\n override async publicChildren() {\n this._publicChildren = this._publicChildren ?? (await super.publicChildren())\n return this._publicChildren\n }\n\n override async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n this._checkDead()\n return await this.busy(async () => {\n try {\n await this.checkSpam(query)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n this.params.onQuerySendStarted?.({ payloads, query })\n const result = await this.proxyQueryHandler<T>(query, payloads)\n this.params.onQuerySendFinished?.({\n payloads, query, result, status: 'success',\n })\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n forget(this.emit('moduleQueried', {\n mod: this, payloads, query, result,\n }))\n return result\n } catch (ex) {\n this.params.onQuerySendFinished?.({\n payloads, query, status: 'failure',\n })\n const error = ex as Error\n this._lastError = error\n // this.status = 'dead'\n const deadError = new DeadModuleError(this.address, error)\n const errorPayload: ModuleError = {\n message: deadError.message,\n name: deadError.name,\n schema: ModuleErrorSchema,\n }\n const sourceQuery = assertEx(QueryBoundWitnessWrapper.unwrap(query), () => 'Invalid query')\n return await this.bindQueryResult(sourceQuery, [], undefined, [errorPayload])\n }\n })\n }\n\n override queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<ModuleQueryHandlerResult> {\n throw new Error('queryHandler should never be called')\n }\n\n override async queryable<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<boolean> {\n return await Promise.resolve(true)\n }\n\n override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n return (await this.params.archiving?.resolveArchivists()) ?? []\n }\n\n setConfig(config: TWrappedModule['params']['config']) {\n this._config = config\n }\n\n setState(state: Payload[]) {\n this._state = state\n }\n\n override async startHandler(): Promise<boolean> {\n let manifest: ModuleManifestPayload | NodeManifestPayload | undefined = this.params.manifest\n if (!manifest) {\n const state = await this.state()\n const manifestPayload = state.find(\n payload => isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(payload)\n || isPayloadOfSchemaType<ModuleManifestPayload>(ModuleManifestPayloadSchema)(payload),\n )\n manifest = assertEx(manifestPayload, () => \"Can't find manifest payload\")\n }\n this.setConfig({ ...manifest.config })\n this.downResolver.addResolver(\n new ModuleProxyResolver({\n childAddressMap: await this.childAddressMap(),\n host: this.params.host,\n mod: this,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n }),\n )\n return await super.startHandler()\n }\n\n override async state(): Promise<Payload[]> {\n if (this._state === undefined) {\n // temporarily add ModuleStateQuerySchema to the schema list so we can wrap it and get the real query list\n const stateQueryPayload: QueryPayload = { query: ModuleStateQuerySchema, schema: QuerySchema }\n const manifestQueryPayload: QueryPayload = { query: ModuleManifestQuerySchema, schema: QuerySchema }\n this._state = [stateQueryPayload, manifestQueryPayload]\n const wrapper = ModuleWrapper.wrap(this, this.account)\n this._state = await wrapper.state()\n }\n return this._state\n }\n\n protected async filterErrors(result: ModuleQueryResult): Promise<ModuleError[]> {\n const wrapper = await BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n // this checks and warns if we are getting spammed by the same query\n private async checkSpam(query: QueryBoundWitness) {\n const hash = await PayloadBuilder.hash(query)\n const previousCount = this._spamTrap.get(hash) ?? 0\n if (previousCount > 0) {\n this.logger?.warn(`Spam trap triggered for query: ${hash} from ${toJsonString(query.addresses)}`)\n }\n this._spamTrap.set(hash, previousCount + 1)\n }\n\n abstract proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { Account } from '@xyo-network/account'\nimport type { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport type {\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleName,\n ModuleResolver,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport {\n isAddressModuleFilter,\n isNameModuleFilter,\n ObjectResolverPriority,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\n\nimport { wrapModuleWithType } from '../wrapModuleWithType.ts'\n\nexport interface ModuleProxyResolverOptions {\n childAddressMap: Record<Address, ModuleName | null>\n childManifests?: Record<Address, ModuleManifestPayload>\n childStates?: Record<Address, ModuleManifestPayload>\n host: ModuleResolver\n mod: ModuleInstance\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nexport class ModuleProxyResolver<T extends ModuleProxyResolverOptions = ModuleProxyResolverOptions> implements ModuleResolverInstance {\n private downResolver: CompositeModuleResolver\n\n constructor(private options: T) {\n this.downResolver = new CompositeModuleResolver({ moduleIdentifierTransformers: options.moduleIdentifierTransformers, root: this.root })\n }\n\n get priority() {\n return ObjectResolverPriority.VeryLow\n }\n\n get root() {\n return this.options.mod\n }\n\n protected get childAddressMap() {\n return this.options.childAddressMap\n }\n\n protected get host() {\n return this.options.host\n }\n\n protected get mod() {\n return this.options.mod\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n childManifest(address: Address) {\n return this.options.childManifests?.[address]\n }\n\n childState(address: Address) {\n return this.options.childStates?.[address]\n }\n\n removeResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n // eslint-disable-next-line complexity\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n // console.log(`childAddressMap: ${toJsonString(this.childAddressMap, 10)}`)\n const direction = options?.direction ?? 'all'\n if (idOrFilter === '*') {\n // get all the child addresses. if they have been resolved before, they should be in downResolver\n const childAddresses = Object.keys(this.childAddressMap)\n const resolvedChildren = await Promise.all(childAddresses.map<Promise<T | undefined>>(address => this.resolve<T>(address, options)))\n return resolvedChildren.filter(exists)\n } else if (typeof idOrFilter === 'string') {\n const idParts = idOrFilter.split(':')\n const firstPart: ModuleIdentifier = assertEx(idParts.shift(), () => 'Invalid module identifier at first position')\n const firstPartAddress = await this.resolveIdentifier(firstPart)\n if (firstPartAddress) {\n const remainingParts = idParts.length > 0 ? idParts.join(':') : undefined\n if (direction === 'down' || direction === 'all') {\n const downResolverModule = await this.downResolver.resolve<T>(firstPartAddress)\n if (downResolverModule) {\n return remainingParts ? downResolverModule.resolve(remainingParts, options) : downResolverModule\n }\n\n console.log(`ModuleProxyResolver: ${firstPartAddress} | ${this.root.address}`)\n if (firstPartAddress === this.root.address) {\n const wrapped = wrapModuleWithType(this.root, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n\n // if it is a known child, create a proxy\n const addressToProxy\n = Object.keys(this.childAddressMap).includes(firstPartAddress as Address)\n ? (firstPartAddress as Address)\n : (Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)?.[0] as Address | undefined)\n if (addressToProxy) {\n const proxy = await this.host.resolve(addressToProxy, { ...options, direction: 'down' })\n if (proxy) {\n const wrapped = wrapModuleWithType(proxy, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n return\n }\n }\n }\n return\n } else {\n const filter = idOrFilter\n if (isAddressModuleFilter(filter)) {\n return (await Promise.all(filter.address.map(item => this.resolve(item, options)))).filter(exists)\n } else if (isNameModuleFilter(filter)) {\n return (await Promise.all(filter.name.map(item => this.resolve(item, options)))).filter(exists)\n }\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<Address | undefined> {\n // check if any of the modules have the id as an address\n if (this.childAddressMap[id as Address]) {\n return id as Address\n }\n\n if (this.root.address === id) {\n return this.root.address\n }\n\n if (this.root.modName === id) {\n return this.root.address\n }\n\n // check if id is a name of one of modules in the resolver\n const addressFromName = Object.entries(this.childAddressMap).find(([, name]) => name === id)?.[0] as Address | undefined\n if (addressFromName) {\n return addressFromName\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ObjectFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ObjectFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return await Promise.resolve([])\n }\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport type { Module } from '@xyo-network/module-model'\nimport type { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nexport const wrapModuleWithType = (mod: Module, account: AccountInstance): ModuleWrapper => {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, account)\n }\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, account)\n }\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, account)\n }\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, account)\n }\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, account)\n }\n throw 'Failed to wrap'\n}\n"],"mappings":"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","names":["assertEx","exists","forget","globallyUnique","asArchivistInstance","QueryBoundWitnessWrapper","BridgeConfigSchema","BridgeConnectQuerySchema","BridgeDisconnectQuerySchema","BridgeExposeQuerySchema","BridgeUnexposeQuerySchema","ModuleFilterPayloadSchema","AbstractModuleInstance","AddressSchema","isAddressModuleFilter","isNameModuleFilter","resolveAddressToInstance","resolvePathToAddress","transformModuleIdentifier","isPayloadOfSchemaType","AbstractBridge","AbstractModuleInstance","configSchemas","BridgeConfigSchema","defaultConfigSchema","uniqueName","globallyUnique","_roots","allowNameResolution","params","discoverRoots","config","client","undefined","queries","BridgeConnectQuerySchema","BridgeDisconnectQuerySchema","BridgeExposeQuerySchema","BridgeUnexposeQuerySchema","resolver","assertEx","expose","id","options","_noOverride","addressToExpose","resolvePathToAddress","console","log","modules","exposeHandler","emit","mod","exposed","exposedHandler","resolve","idOrFilter","roots","workingSet","direction","remainingDepth","maxDepth","Promise","all","map","flat","parts","split","first","shift","firstId","transformModuleIdentifier","moduleIdentifierTransformers","result","find","address","modName","length","join","results","isNameModuleFilter","name","includes","push","isAddressModuleFilter","startHandler","forget","getRoots","unexpose","addressToUnexpose","unexposeHandler","queryHandler","query","payloads","wrapper","QueryBoundWitnessWrapper","parseQuery","queryPayload","getQuery","resultPayloads","schema","filterPayloads","filter","isPayloadOfSchemaType","ModuleFilterPayloadSchema","addressPayload","AddressSchema","moduleAddresses","resolveArchivingArchivists","archivists","archiving","resolvedAddresses","archivist","parents","parent","exists","resolved","resolveAddressToInstance","asArchivistInstance","ObjectResolverPriority","CompositeModuleResolver","AbstractBridgeModuleResolver","CompositeModuleResolver","priority","ObjectResolverPriority","VeryLow","resolveHandler","id","options","_params","assertEx","exists","forget","asAddress","toJsonString","BoundWitnessWrapper","QueryBoundWitnessWrapper","ModuleManifestPayloadSchema","NodeManifestPayloadSchema","AbstractModuleInstance","AddressPreviousHashSchema","DeadModuleError","ModuleAddressQuerySchema","ModuleManifestQuerySchema","ModuleStateQuerySchema","ModuleWrapper","PayloadBuilder","isPayloadOfSchemaType","ModuleErrorSchema","QuerySchema","LRUCache","assertEx","exists","Account","isAddressModuleFilter","isNameModuleFilter","ObjectResolverPriority","CompositeModuleResolver","isArchivistModule","ArchivistWrapper","isDivinerModule","DivinerWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","isWitnessModule","WitnessWrapper","wrapModuleWithType","mod","account","isArchivistModule","ArchivistWrapper","wrap","isDivinerModule","DivinerWrapper","isNodeModule","NodeWrapper","isSentinelModule","SentinelWrapper","isWitnessModule","WitnessWrapper","ModuleProxyResolver","downResolver","constructor","options","CompositeModuleResolver","moduleIdentifierTransformers","root","priority","ObjectResolverPriority","VeryLow","mod","childAddressMap","host","addResolver","_resolver","Error","childManifest","address","childManifests","childState","childStates","removeResolver","resolve","idOrFilter","direction","childAddresses","Object","keys","resolvedChildren","Promise","all","map","filter","exists","idParts","split","firstPart","assertEx","shift","firstPartAddress","resolveIdentifier","remainingParts","length","join","undefined","downResolverModule","console","log","wrapped","wrapModuleWithType","Account","random","addressToProxy","includes","entries","find","_","value","proxy","isAddressModuleFilter","item","isNameModuleFilter","name","id","_options","modName","addressFromName","resolvePrivate","AbstractModuleProxy","AbstractModuleInstance","requiredQueries","ModuleStateQuerySchema","_config","_publicChildren","_state","undefined","_stateInProcess","_spamTrap","LRUCache","max","ttl","ttlAutopurge","constructor","params","addToResolvers","privateConstructorKey","account","address","moduleAddress","archiving","config","assertEx","queries","queryPayloads","filter","item","isPayloadOfSchemaType","QuerySchema","map","payload","query","hasRequiredQueries","mod","missingRequiredQueries","length","moduleQueries","includes","exists","addressPreviousHash","queryPayload","schema","ModuleAddressQuerySchema","result","sendQuery","find","AddressPreviousHashSchema","childAddressByName","name","nodeManifests","NodeManifestPayloadSchema","childPairs","flatMap","nodeManifest","Object","entries","status","children","asAddress","_","childName","childAddressMap","manifest","state","modules","public","child","maxDepth","ModuleManifestQuerySchema","previousHash","pop","publicChildren","payloads","_checkDead","busy","checkSpam","isAllowedArchivingQuery","forget","storeToArchivists","onQuerySendStarted","proxyQueryHandler","onQuerySendFinished","flat","emit","ex","error","_lastError","deadError","DeadModuleError","errorPayload","message","ModuleErrorSchema","sourceQuery","QueryBoundWitnessWrapper","unwrap","bindQueryResult","queryHandler","_query","_payloads","_queryConfig","Error","queryable","Promise","resolve","resolveArchivingArchivists","resolveArchivists","setConfig","setState","startHandler","manifestPayload","ModuleManifestPayloadSchema","downResolver","addResolver","ModuleProxyResolver","host","moduleIdentifierTransformers","stateQueryPayload","manifestQueryPayload","wrapper","ModuleWrapper","wrap","filterErrors","BoundWitnessWrapper","payloadsBySchema","hash","PayloadBuilder","previousCount","get","logger","warn","toJsonString","addresses","set"]}
|
|
1
|
+
{"version":3,"sources":["../../src/AbstractBridge.ts","../../src/AbstractBridgeModuleResolver.ts","../../src/AbstractModuleProxy/AbstractModuleProxy.ts","../../src/AbstractModuleProxy/ModuleProxyResolver.ts","../../src/wrapModuleWithType.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport type { Address } from '@xylabs/hex'\nimport { globallyUnique } from '@xylabs/object'\nimport type { Promisable } from '@xylabs/promise'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type {\n AttachableBridgeInstance,\n BridgeExposeOptions,\n BridgeModuleEventData,\n BridgeParams,\n BridgeQueries,\n BridgeUnexposeOptions,\n ModuleFilterPayload,\n} from '@xyo-network/bridge-model'\nimport {\n BridgeConfigSchema,\n BridgeConnectQuerySchema,\n BridgeDisconnectQuerySchema,\n BridgeExposeQuerySchema,\n BridgeUnexposeQuerySchema,\n ModuleFilterPayloadSchema,\n} from '@xyo-network/bridge-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n AddressPayload,\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n ModuleQueryHandlerResult,\n ModuleResolverInstance,\n} from '@xyo-network/module-model'\nimport {\n AddressSchema,\n isAddressModuleFilter,\n isNameModuleFilter,\n resolveAddressToInstance,\n resolvePathToAddress,\n transformModuleIdentifier,\n} from '@xyo-network/module-model'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType } from '@xyo-network/payload-model'\n\nexport abstract class AbstractBridge<TParams extends BridgeParams = BridgeParams>\n extends AbstractModuleInstance<TParams, BridgeModuleEventData>\n implements AttachableBridgeInstance<TParams, BridgeModuleEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, BridgeConfigSchema]\n static override readonly defaultConfigSchema: Schema = BridgeConfigSchema\n static override readonly uniqueName = globallyUnique('AbstractBridge', AbstractBridge, 'xyo')\n\n protected _roots?: ModuleInstance[]\n\n override get allowNameResolution() {\n // we default to false here to prevent name collisions\n return this.params.allowNameResolution ?? true\n }\n\n get discoverRoots() {\n return this.config.client?.discoverRoots ?? this.config.discoverRoots ?? (this.config.client === undefined ? false : 'start')\n }\n\n override get queries(): string[] {\n return [BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ...super.queries]\n }\n\n get resolver(): Promisable<ModuleResolverInstance> {\n return assertEx(this.params.resolver, () => 'No resolver provided')\n }\n\n async expose(id: ModuleIdentifier, options?: BridgeExposeOptions | undefined): Promise<ModuleInstance[]> {\n this._noOverride('expose')\n assertEx(id !== '*', () => \"Exposing '*' not supported\")\n const addressToExpose = assertEx(await resolvePathToAddress(this, id), () => `Module to expose not found [${id}]`)\n console.log(`expose: ${addressToExpose}`)\n const modules = await this.exposeHandler(addressToExpose, options)\n await this.emit('exposed', { mod: this, modules })\n return modules\n }\n\n async exposed(): Promise<Address[]> {\n this._noOverride('exposed')\n return await this.exposedHandler()\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n override async resolve(): Promise<ModuleInstance[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n override async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n override async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter, options?: ModuleFilterOptions<T>): Promise<T[]>\n // eslint-disable-next-line complexity\n override async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options: ModuleFilterOptions<T> = {},\n ): Promise<T | T[] | undefined> {\n const roots = (this._roots ?? []) as T[]\n const workingSet = (options.direction === 'up' ? [this as ModuleInstance] : [...roots, this]) as T[]\n if (idOrFilter === '*') {\n const remainingDepth = (options.maxDepth ?? 5) - 1\n return remainingDepth <= 0\n ? workingSet\n : (\n [...workingSet, ...(await Promise.all(roots.map(mod => mod.resolve('*', { ...options, maxDepth: remainingDepth })))).flat()]\n )\n }\n switch (typeof idOrFilter) {\n case 'string': {\n const parts = idOrFilter.split(':')\n const first = assertEx(parts.shift(), () => 'Missing module identifier')\n const firstId = await transformModuleIdentifier(first, this.moduleIdentifierTransformers)\n const result = workingSet.find((mod) => {\n return firstId === mod.address || firstId === mod.modName\n })\n return parts.length === 0 ? result : result?.resolve(parts.join(':'), options)\n }\n case 'object': {\n const results: T[] = []\n if (isNameModuleFilter(idOrFilter)) {\n for (const mod of workingSet) {\n if (mod.modName && idOrFilter.name.includes(mod.modName)) results.push(mod as T)\n }\n }\n if (isAddressModuleFilter(idOrFilter)) {\n for (const mod of workingSet) {\n if (mod.modName && idOrFilter.address.includes(mod.address)) results.push(mod as T)\n }\n }\n return results\n }\n default: {\n return\n }\n }\n }\n\n override async startHandler(): Promise<boolean> {\n if (this.discoverRoots === 'lazy') {\n forget(this.getRoots())\n } else if (this.discoverRoots === 'start') {\n await this.getRoots()\n }\n return true\n }\n\n async unexpose(id: ModuleIdentifier, options?: BridgeUnexposeOptions | undefined): Promise<Address[]> {\n this._noOverride('unexpose')\n const addressToUnexpose = assertEx(await resolvePathToAddress(this, id), () => `Module to unexpose not found [${id}]`)\n const modules = await this.unexposeHandler(addressToUnexpose, options)\n await this.emit('unexposed', { mod: this, modules })\n return modules.map(mod => mod.address)\n }\n\n protected override async queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n query: T,\n payloads?: Payload[],\n ): Promise<ModuleQueryHandlerResult> {\n const wrapper = await QueryBoundWitnessWrapper.parseQuery<BridgeQueries>(query, payloads)\n const queryPayload = await wrapper.getQuery()\n const resultPayloads: Payload[] = []\n\n switch (queryPayload.schema) {\n case BridgeExposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const modules = await this.expose(id, options)\n for (const mod of modules) {\n const addressPayload: AddressPayload = {\n address: mod.address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n case BridgeUnexposeQuerySchema: {\n const filterPayloads = (payloads ?? []).filter(isPayloadOfSchemaType<ModuleFilterPayload>(ModuleFilterPayloadSchema))\n assertEx(filterPayloads, () => 'At least one filter is required')\n\n await Promise.all(\n filterPayloads.map(async (filter) => {\n const { id, ...options } = filter\n const moduleAddresses = await this.unexpose(id, options)\n for (const address of moduleAddresses) {\n const addressPayload: AddressPayload = {\n address,\n schema: AddressSchema,\n }\n resultPayloads.push(addressPayload)\n }\n }),\n )\n break\n }\n default: {\n return await super.queryHandler(query, payloads)\n }\n }\n return resultPayloads\n }\n\n protected override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n const archivists = this.archiving?.archivists\n if (!archivists) return []\n const resolvedAddresses = (\n await Promise.all(\n archivists.map(async archivist =>\n (await Promise.all((await this.parents()).map(parent => resolvePathToAddress(parent, archivist)))).filter(exists)),\n )\n )\n .flat()\n .filter(exists)\n const resolved = (await Promise.all(resolvedAddresses.map(address => resolveAddressToInstance(this, address)))).filter(exists)\n return resolved.map(mod => asArchivistInstance(mod)).filter(exists)\n }\n\n abstract exposeHandler(address: Address, options?: BridgeExposeOptions | undefined): Promisable<ModuleInstance[]>\n\n abstract exposedHandler(): Promisable<Address[]>\n\n abstract getRoots(force?: boolean): Promise<ModuleInstance[]>\n\n abstract unexposeHandler(address: Address, options?: BridgeUnexposeOptions | undefined): Promisable<ModuleInstance[]>\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type {\n BridgeInstance, QuerySendFinishedEventArgs, QuerySendStartedEventArgs,\n} from '@xyo-network/bridge-model'\nimport type {\n ArchivingModuleConfig,\n CacheConfig,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleInstance,\n} from '@xyo-network/module-model'\nimport { ObjectResolverPriority } from '@xyo-network/module-model'\nimport type { ModuleResolverParams } from '@xyo-network/module-resolver'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\n\nimport type { ModuleProxyParams } from './AbstractModuleProxy/index.ts'\n\nexport interface BridgeModuleResolverParams extends ModuleResolverParams {\n additionalSigners?: AccountInstance[]\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n bridge: BridgeInstance\n cacheConfig?: CacheConfig\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n wrapperAccount: AccountInstance\n}\n\nexport abstract class AbstractBridgeModuleResolver<\n TParams extends BridgeModuleResolverParams = BridgeModuleResolverParams,\n TProxyParams extends ModuleProxyParams = ModuleProxyParams,\n> extends CompositeModuleResolver<TParams> {\n override get priority() {\n return ObjectResolverPriority.VeryLow\n }\n\n override async resolveHandler<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n options?: ModuleFilterOptions<T>,\n _params?: Partial<TProxyParams>,\n ): Promise<T[]> {\n if (id === '*') {\n return []\n }\n return await super.resolveHandler(id, options)\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport { forget } from '@xylabs/forget'\nimport type { Address } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport type { QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessWrapper, QueryBoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type { QuerySendFinishedEventArgs, QuerySendStartedEventArgs } from '@xyo-network/bridge-model'\nimport type { ModuleManifestPayload, NodeManifestPayload } from '@xyo-network/manifest-model'\nimport { ModuleManifestPayloadSchema, NodeManifestPayloadSchema } from '@xyo-network/manifest-model'\nimport { AbstractModuleInstance } from '@xyo-network/module-abstract'\nimport type {\n AddressPreviousHashPayload,\n ArchivingModuleConfig,\n Module,\n ModuleAddressQuery,\n ModuleConfigSchema,\n ModuleInstance,\n ModuleManifestQuery,\n ModuleName,\n ModuleParams,\n ModuleQueryHandlerResult,\n ModuleQueryResult,\n ModuleResolver,\n} from '@xyo-network/module-model'\nimport {\n AddressPreviousHashSchema,\n DeadModuleError,\n ModuleAddressQuerySchema,\n ModuleManifestQuerySchema,\n ModuleStateQuerySchema,\n} from '@xyo-network/module-model'\nimport { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { ModuleError, Payload } from '@xyo-network/payload-model'\nimport { isPayloadOfSchemaType, ModuleErrorSchema } from '@xyo-network/payload-model'\nimport type { QueryPayload } from '@xyo-network/query-payload-plugin'\nimport { QuerySchema } from '@xyo-network/query-payload-plugin'\nimport { LRUCache } from 'lru-cache'\n\nimport { ModuleProxyResolver } from './ModuleProxyResolver.ts'\n\nexport type ModuleProxyParams = ModuleParams<\n {\n schema: ModuleConfigSchema\n },\n {\n account: AccountInstance\n archiving?: ArchivingModuleConfig['archiving'] & { resolveArchivists: () => Promise<ArchivistInstance[]> }\n host: ModuleResolver\n manifest?: ModuleManifestPayload\n moduleAddress: Address\n onQuerySendFinished?: (args: Omit<QuerySendFinishedEventArgs, 'mod'>) => void\n onQuerySendStarted?: (args: Omit<QuerySendStartedEventArgs, 'mod'>) => void\n state?: Payload[]\n }\n>\n\nexport abstract class AbstractModuleProxy<\n TWrappedModule extends ModuleInstance = ModuleInstance,\n TParams extends Omit<ModuleProxyParams, 'config'> & { config: TWrappedModule['config'] } = Omit<ModuleProxyParams, 'config'> & {\n config: TWrappedModule['config']\n },\n>\n extends AbstractModuleInstance<TParams, TWrappedModule['eventData']>\n implements ModuleInstance<TParams, TWrappedModule['eventData']> {\n static requiredQueries: string[] = [ModuleStateQuerySchema]\n\n protected _config?: ModuleInstance['config']\n protected _publicChildren?: ModuleInstance[]\n protected _state: Payload[] | undefined = undefined\n protected _stateInProcess = false\n\n private _spamTrap = new LRUCache<string, number>({\n max: 1000, ttl: 1000 * 60, ttlAutopurge: true,\n })\n\n constructor(params: TParams) {\n params.addToResolvers = false\n super(AbstractModuleProxy.privateConstructorKey, params, params.account)\n }\n\n override get address() {\n return this.params.moduleAddress\n }\n\n override get archiving(): ArchivingModuleConfig['archiving'] | undefined {\n return this.params?.archiving\n }\n\n override get config() {\n return assertEx(this._config, () => 'Config not set')\n }\n\n override get queries(): string[] {\n const queryPayloads = assertEx(this._state, () => 'Module state not found. Make sure proxy has been started').filter(item =>\n isPayloadOfSchemaType<QueryPayload>(QuerySchema)(item)) as QueryPayload[]\n return queryPayloads.map(payload => payload.query)\n }\n\n static hasRequiredQueries(mod: Module) {\n return this.missingRequiredQueries(mod).length === 0\n }\n\n static missingRequiredQueries(mod: Module): string[] {\n const moduleQueries = mod.queries\n return (\n this.requiredQueries.map((query) => {\n return moduleQueries.includes(query) ? null : query\n })\n ).filter(exists)\n }\n\n async addressPreviousHash(): Promise<AddressPreviousHashPayload> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n const result: AddressPreviousHashPayload = assertEx(\n (await this.sendQuery(queryPayload, undefined, this.account)).find(\n isPayloadOfSchemaType<AddressPreviousHashPayload>(AddressPreviousHashSchema),\n ) as AddressPreviousHashPayload,\n () => 'Result did not include correct payload',\n )\n return result\n }\n\n childAddressByName(name: ModuleName): Address | undefined {\n const nodeManifests = this._state?.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n const childPairs = nodeManifests?.flatMap(nodeManifest => Object.entries(nodeManifest.status?.children ?? {}) as [Address, ModuleName | null][])\n return asAddress(childPairs?.find(([_, childName]) => childName === name)?.[0])\n }\n\n async childAddressMap(): Promise<Record<Address, ModuleName | null>> {\n let nodeManifests: NodeManifestPayload[] | undefined\n = isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(this.params.manifest) ? [this.params.manifest] : undefined\n const result: Record<Address, ModuleName | null> = {}\n if (nodeManifests === undefined) {\n const state = await this.state()\n nodeManifests = state.filter(isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema))\n }\n for (const manifest of nodeManifests ?? []) {\n const children = manifest.modules?.public ?? []\n for (const child of children) {\n if (typeof child === 'object') {\n const address = child.status?.address\n if (address) {\n result[address] = child.config.name ?? null\n }\n }\n }\n }\n return result\n }\n\n override async manifest(maxDepth?: number): Promise<ModuleManifestPayload> {\n const queryPayload: ModuleManifestQuery = { schema: ModuleManifestQuerySchema, ...(maxDepth === undefined ? {} : { maxDepth }) }\n return (await this.sendQuery(queryPayload))[0] as ModuleManifestPayload\n }\n\n override async moduleAddress(): Promise<AddressPreviousHashPayload[]> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return (await this.sendQuery(queryPayload)) as AddressPreviousHashPayload[]\n }\n\n override async previousHash(): Promise<string | undefined> {\n const queryPayload: ModuleAddressQuery = { schema: ModuleAddressQuerySchema }\n return ((await this.sendQuery(queryPayload)).pop() as AddressPreviousHashPayload).previousHash\n }\n\n override async publicChildren() {\n this._publicChildren = this._publicChildren ?? (await super.publicChildren())\n return this._publicChildren\n }\n\n override async query<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult> {\n this._checkDead()\n return await this.busy(async () => {\n try {\n await this.checkSpam(query)\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists([query, ...(payloads ?? [])]))\n }\n this.params.onQuerySendStarted?.({ payloads, query })\n const result = await this.proxyQueryHandler<T>(query, payloads)\n this.params.onQuerySendFinished?.({\n payloads, query, result, status: 'success',\n })\n if (this.archiving && this.isAllowedArchivingQuery(query.schema)) {\n forget(this.storeToArchivists(result.flat()))\n }\n forget(this.emit('moduleQueried', {\n mod: this, payloads, query, result,\n }))\n return result\n } catch (ex) {\n this.params.onQuerySendFinished?.({\n payloads, query, status: 'failure',\n })\n const error = ex as Error\n this._lastError = error\n // this.status = 'dead'\n const deadError = new DeadModuleError(this.address, error)\n const errorPayload: ModuleError = {\n message: deadError.message,\n name: deadError.name,\n schema: ModuleErrorSchema,\n }\n const sourceQuery = assertEx(QueryBoundWitnessWrapper.unwrap(query), () => 'Invalid query')\n return await this.bindQueryResult(sourceQuery, [], undefined, [errorPayload])\n }\n })\n }\n\n override queryHandler<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<ModuleQueryHandlerResult> {\n throw new Error('queryHandler should never be called')\n }\n\n override async queryable<T extends QueryBoundWitness = QueryBoundWitness>(\n _query: T,\n _payloads?: Payload[],\n _queryConfig?: TWrappedModule['params']['config'],\n ): Promise<boolean> {\n return await Promise.resolve(true)\n }\n\n override async resolveArchivingArchivists(): Promise<ArchivistInstance[]> {\n return (await this.params.archiving?.resolveArchivists()) ?? []\n }\n\n setConfig(config: TWrappedModule['params']['config']) {\n this._config = config\n }\n\n setState(state: Payload[]) {\n this._state = state\n }\n\n override async startHandler(): Promise<boolean> {\n let manifest: ModuleManifestPayload | NodeManifestPayload | undefined = this.params.manifest\n if (!manifest) {\n const state = await this.state()\n const manifestPayload = state.find(\n payload => isPayloadOfSchemaType<NodeManifestPayload>(NodeManifestPayloadSchema)(payload)\n || isPayloadOfSchemaType<ModuleManifestPayload>(ModuleManifestPayloadSchema)(payload),\n )\n manifest = assertEx(manifestPayload, () => \"Can't find manifest payload\")\n }\n this.setConfig({ ...manifest.config })\n this.downResolver.addResolver(\n new ModuleProxyResolver({\n childAddressMap: await this.childAddressMap(),\n host: this.params.host,\n mod: this,\n moduleIdentifierTransformers: this.params.moduleIdentifierTransformers,\n }),\n )\n return await super.startHandler()\n }\n\n override async state(): Promise<Payload[]> {\n if (this._state === undefined) {\n // temporarily add ModuleStateQuerySchema to the schema list so we can wrap it and get the real query list\n const stateQueryPayload: QueryPayload = { query: ModuleStateQuerySchema, schema: QuerySchema }\n const manifestQueryPayload: QueryPayload = { query: ModuleManifestQuerySchema, schema: QuerySchema }\n this._state = [stateQueryPayload, manifestQueryPayload]\n const wrapper = ModuleWrapper.wrap(this, this.account)\n this._state = await wrapper.state()\n }\n return this._state\n }\n\n protected async filterErrors(result: ModuleQueryResult): Promise<ModuleError[]> {\n const wrapper = await BoundWitnessWrapper.wrap(result[0], result[1])\n return wrapper.payloadsBySchema<ModuleError>(ModuleErrorSchema)\n }\n\n // this checks and warns if we are getting spammed by the same query\n private async checkSpam(query: QueryBoundWitness) {\n const hash = await PayloadBuilder.hash(query)\n const previousCount = this._spamTrap.get(hash) ?? 0\n if (previousCount > 0) {\n this.logger?.warn(`Spam trap triggered for query: ${hash} from ${toJsonString(query.addresses)}`)\n }\n this._spamTrap.set(hash, previousCount + 1)\n }\n\n abstract proxyQueryHandler<T extends QueryBoundWitness = QueryBoundWitness>(query: T, payloads?: Payload[]): Promise<ModuleQueryResult>\n}\n","import { assertEx } from '@xylabs/assert'\nimport { exists } from '@xylabs/exists'\nimport type { Address } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport { Account } from '@xyo-network/account'\nimport type { ModuleManifestPayload } from '@xyo-network/manifest-model'\nimport type {\n ModuleFilter,\n ModuleFilterOptions,\n ModuleIdentifier,\n ModuleIdentifierTransformer,\n ModuleInstance,\n ModuleName,\n ModuleResolver,\n ModuleResolverInstance,\n ObjectFilterOptions,\n} from '@xyo-network/module-model'\nimport {\n isAddressModuleFilter,\n isNameModuleFilter,\n ObjectResolverPriority,\n} from '@xyo-network/module-model'\nimport { CompositeModuleResolver } from '@xyo-network/module-resolver'\n\nimport { wrapModuleWithType } from '../wrapModuleWithType.ts'\n\nexport interface ModuleProxyResolverOptions {\n childAddressMap: Record<Address, ModuleName | null>\n childManifests?: Record<Address, ModuleManifestPayload>\n childStates?: Record<Address, ModuleManifestPayload>\n host: ModuleResolver\n mod: ModuleInstance\n moduleIdentifierTransformers?: ModuleIdentifierTransformer[]\n}\n\nexport class ModuleProxyResolver<T extends ModuleProxyResolverOptions = ModuleProxyResolverOptions> implements ModuleResolverInstance {\n private downResolver: CompositeModuleResolver\n\n constructor(private options: T) {\n this.downResolver = new CompositeModuleResolver({ moduleIdentifierTransformers: options.moduleIdentifierTransformers, root: this.root })\n }\n\n get priority() {\n return ObjectResolverPriority.VeryLow\n }\n\n get root() {\n return this.options.mod\n }\n\n protected get childAddressMap() {\n return this.options.childAddressMap\n }\n\n protected get host() {\n return this.options.host\n }\n\n protected get mod() {\n return this.options.mod\n }\n\n addResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n childManifest(address: Address) {\n return this.options.childManifests?.[address]\n }\n\n childState(address: Address) {\n return this.options.childStates?.[address]\n }\n\n removeResolver(_resolver: ModuleResolver): this {\n throw new Error('Not supported')\n }\n\n /** @deprecated do not pass undefined. If trying to get all, pass '*' */\n async resolve(): Promise<ModuleInstance[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(filter: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n async resolve<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ModuleFilterOptions<T>): Promise<T | undefined>\n /** @deprecated use '*' if trying to resolve all */\n async resolve<T extends ModuleInstance = ModuleInstance>(filter?: ModuleFilter<T>, options?: ModuleFilterOptions<T>): Promise<T[]>\n // eslint-disable-next-line complexity\n async resolve<T extends ModuleInstance = ModuleInstance>(\n idOrFilter: ModuleFilter<T> | ModuleIdentifier = '*',\n options?: ModuleFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n // console.log(`childAddressMap: ${toJsonString(this.childAddressMap, 10)}`)\n const direction = options?.direction ?? 'all'\n if (idOrFilter === '*') {\n // get all the child addresses. if they have been resolved before, they should be in downResolver\n const childAddresses = Object.keys(this.childAddressMap)\n const resolvedChildren = await Promise.all(childAddresses.map<Promise<T | undefined>>(address => this.resolve<T>(address, options)))\n return resolvedChildren.filter(exists)\n } else if (typeof idOrFilter === 'string') {\n const idParts = idOrFilter.split(':')\n const firstPart: ModuleIdentifier = assertEx(idParts.shift(), () => 'Invalid module identifier at first position')\n const firstPartAddress = await this.resolveIdentifier(firstPart)\n if (firstPartAddress) {\n const remainingParts = idParts.length > 0 ? idParts.join(':') : undefined\n if (direction === 'down' || direction === 'all') {\n const downResolverModule = await this.downResolver.resolve<T>(firstPartAddress)\n if (downResolverModule) {\n return remainingParts ? downResolverModule.resolve(remainingParts, options) : downResolverModule\n }\n\n console.log(`ModuleProxyResolver: ${firstPartAddress} | ${this.root.address}`)\n if (firstPartAddress === this.root.address) {\n const wrapped = wrapModuleWithType(this.root, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n\n // if it is a known child, create a proxy\n const addressToProxy\n = Object.keys(this.childAddressMap).includes(firstPartAddress as Address)\n ? (firstPartAddress as Address)\n : (Object.entries(this.childAddressMap).find(([_, value]) => value === firstPartAddress)?.[0] as Address | undefined)\n if (addressToProxy) {\n const proxy = await this.host.resolve(addressToProxy, { ...options, direction: 'down' })\n if (proxy) {\n const wrapped = wrapModuleWithType(proxy, await Account.random()) as unknown as T\n return remainingParts ? wrapped?.resolve(remainingParts, options) : wrapped\n }\n return\n }\n }\n }\n return\n } else {\n const filter = idOrFilter\n if (isAddressModuleFilter(filter)) {\n return (await Promise.all(filter.address.map(item => this.resolve(item, options)))).filter(exists)\n } else if (isNameModuleFilter(filter)) {\n return (await Promise.all(filter.name.map(item => this.resolve(item, options)))).filter(exists)\n }\n }\n }\n\n resolveIdentifier(id: ModuleIdentifier, _options?: ObjectFilterOptions): Promisable<Address | undefined> {\n // check if any of the modules have the id as an address\n if (this.childAddressMap[id as Address]) {\n return id as Address\n }\n\n if (this.root.address === id) {\n return this.root.address\n }\n\n if (this.root.modName === id) {\n return this.root.address\n }\n\n // check if id is a name of one of modules in the resolver\n const addressFromName = Object.entries(this.childAddressMap).find(([, name]) => name === id)?.[0] as Address | undefined\n if (addressFromName) {\n return addressFromName\n }\n }\n\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(all: '*', options?: ObjectFilterOptions<T>): Promise<T[]>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(id: ModuleIdentifier, options?: ObjectFilterOptions<T>): Promise<T | undefined>\n async resolvePrivate<T extends ModuleInstance = ModuleInstance>(\n id: ModuleIdentifier,\n _options?: ObjectFilterOptions<T>,\n ): Promise<T | T[] | undefined> {\n if (id === '*') return await Promise.resolve([])\n }\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport { isArchivistModule } from '@xyo-network/archivist-model'\nimport { ArchivistWrapper } from '@xyo-network/archivist-wrapper'\nimport { isDivinerModule } from '@xyo-network/diviner-model'\nimport { DivinerWrapper } from '@xyo-network/diviner-wrapper'\nimport type { Module } from '@xyo-network/module-model'\nimport type { ModuleWrapper } from '@xyo-network/module-wrapper'\nimport { isNodeModule } from '@xyo-network/node-model'\nimport { NodeWrapper } from '@xyo-network/node-wrapper'\nimport { isSentinelModule } from '@xyo-network/sentinel-model'\nimport { SentinelWrapper } from '@xyo-network/sentinel-wrapper'\nimport { isWitnessModule } from '@xyo-network/witness-model'\nimport { WitnessWrapper } from '@xyo-network/witness-wrapper'\n\nexport const wrapModuleWithType = (mod: Module, account: AccountInstance): ModuleWrapper => {\n if (isArchivistModule(mod)) {\n return ArchivistWrapper.wrap(mod, account)\n }\n if (isDivinerModule(mod)) {\n return DivinerWrapper.wrap(mod, account)\n }\n if (isNodeModule(mod)) {\n return NodeWrapper.wrap(mod, account)\n }\n if (isSentinelModule(mod)) {\n return SentinelWrapper.wrap(mod, account)\n }\n if (isWitnessModule(mod)) {\n return WitnessWrapper.wrap(mod, account)\n }\n throw 'Failed to wrap'\n}\n"],"mappings":"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","names":["assertEx","exists","forget","QueryBoundWitnessWrapper","AbstractModuleInstance","isPayloadOfSchemaType","assertEx","exists","isAddressModuleFilter","isNameModuleFilter","ObjectResolverPriority","CompositeModuleResolver","CompositeModuleResolver","ObjectResolverPriority","exists","assertEx","isAddressModuleFilter","isNameModuleFilter","AbstractModuleInstance","assertEx","isPayloadOfSchemaType","exists","forget","QueryBoundWitnessWrapper"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/bridge-abstract",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.10",
|
|
4
4
|
"description": "Primary SDK for using XYO Protocol 2.0",
|
|
5
5
|
"homepage": "https://xyo.network",
|
|
6
6
|
"bugs": {
|
|
@@ -29,41 +29,41 @@
|
|
|
29
29
|
"module": "dist/neutral/index.mjs",
|
|
30
30
|
"types": "dist/neutral/index.d.ts",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@xylabs/assert": "^4.
|
|
33
|
-
"@xylabs/exists": "^4.
|
|
34
|
-
"@xylabs/forget": "^4.
|
|
35
|
-
"@xylabs/hex": "^4.
|
|
36
|
-
"@xylabs/object": "^4.
|
|
37
|
-
"@xylabs/promise": "^4.
|
|
38
|
-
"@xyo-network/account": "^3.6.
|
|
39
|
-
"@xyo-network/account-model": "^3.6.
|
|
40
|
-
"@xyo-network/archivist-model": "^3.6.
|
|
41
|
-
"@xyo-network/archivist-wrapper": "^3.6.
|
|
42
|
-
"@xyo-network/boundwitness-model": "^3.6.
|
|
43
|
-
"@xyo-network/boundwitness-wrapper": "^3.6.
|
|
44
|
-
"@xyo-network/bridge-model": "^3.6.
|
|
45
|
-
"@xyo-network/diviner-model": "^3.6.
|
|
46
|
-
"@xyo-network/diviner-wrapper": "^3.6.
|
|
47
|
-
"@xyo-network/manifest-model": "^3.6.
|
|
48
|
-
"@xyo-network/module-abstract": "^3.6.
|
|
49
|
-
"@xyo-network/module-model": "^3.6.
|
|
50
|
-
"@xyo-network/module-resolver": "^3.6.
|
|
51
|
-
"@xyo-network/module-wrapper": "^3.6.
|
|
52
|
-
"@xyo-network/node-model": "^3.6.
|
|
53
|
-
"@xyo-network/node-wrapper": "^3.6.
|
|
54
|
-
"@xyo-network/payload-builder": "^3.6.
|
|
55
|
-
"@xyo-network/payload-model": "^3.6.
|
|
56
|
-
"@xyo-network/query-payload-plugin": "^3.6.
|
|
57
|
-
"@xyo-network/sentinel-model": "^3.6.
|
|
58
|
-
"@xyo-network/sentinel-wrapper": "^3.6.
|
|
59
|
-
"@xyo-network/witness-model": "^3.6.
|
|
60
|
-
"@xyo-network/witness-wrapper": "^3.6.
|
|
32
|
+
"@xylabs/assert": "^4.5.1",
|
|
33
|
+
"@xylabs/exists": "^4.5.1",
|
|
34
|
+
"@xylabs/forget": "^4.5.1",
|
|
35
|
+
"@xylabs/hex": "^4.5.1",
|
|
36
|
+
"@xylabs/object": "^4.5.1",
|
|
37
|
+
"@xylabs/promise": "^4.5.1",
|
|
38
|
+
"@xyo-network/account": "^3.6.10",
|
|
39
|
+
"@xyo-network/account-model": "^3.6.10",
|
|
40
|
+
"@xyo-network/archivist-model": "^3.6.10",
|
|
41
|
+
"@xyo-network/archivist-wrapper": "^3.6.10",
|
|
42
|
+
"@xyo-network/boundwitness-model": "^3.6.10",
|
|
43
|
+
"@xyo-network/boundwitness-wrapper": "^3.6.10",
|
|
44
|
+
"@xyo-network/bridge-model": "^3.6.10",
|
|
45
|
+
"@xyo-network/diviner-model": "^3.6.10",
|
|
46
|
+
"@xyo-network/diviner-wrapper": "^3.6.10",
|
|
47
|
+
"@xyo-network/manifest-model": "^3.6.10",
|
|
48
|
+
"@xyo-network/module-abstract": "^3.6.10",
|
|
49
|
+
"@xyo-network/module-model": "^3.6.10",
|
|
50
|
+
"@xyo-network/module-resolver": "^3.6.10",
|
|
51
|
+
"@xyo-network/module-wrapper": "^3.6.10",
|
|
52
|
+
"@xyo-network/node-model": "^3.6.10",
|
|
53
|
+
"@xyo-network/node-wrapper": "^3.6.10",
|
|
54
|
+
"@xyo-network/payload-builder": "^3.6.10",
|
|
55
|
+
"@xyo-network/payload-model": "^3.6.10",
|
|
56
|
+
"@xyo-network/query-payload-plugin": "^3.6.10",
|
|
57
|
+
"@xyo-network/sentinel-model": "^3.6.10",
|
|
58
|
+
"@xyo-network/sentinel-wrapper": "^3.6.10",
|
|
59
|
+
"@xyo-network/witness-model": "^3.6.10",
|
|
60
|
+
"@xyo-network/witness-wrapper": "^3.6.10",
|
|
61
61
|
"lru-cache": "^11.0.2"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@xylabs/ts-scripts-yarn3": "^4.2.6",
|
|
65
65
|
"@xylabs/tsconfig": "^4.2.6",
|
|
66
|
-
"typescript": "^5.7.
|
|
66
|
+
"typescript": "^5.7.3"
|
|
67
67
|
},
|
|
68
68
|
"publishConfig": {
|
|
69
69
|
"access": "public"
|