@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.
@@ -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 { BridgeConfigSchema, BridgeConnectQuerySchema, BridgeDisconnectQuerySchema, BridgeExposeQuerySchema, BridgeUnexposeQuerySchema, ModuleFilterPayloadSchema } from "@xyo-network/bridge-model";
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 { AddressSchema, isAddressModuleFilter, isNameModuleFilter, resolveAddressToInstance, resolvePathToAddress, transformModuleIdentifier } from "@xyo-network/module-model";
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(filterPayloads.map(async (filter) => {
135
- const { id, ...options } = filter;
136
- const modules = await this.expose(id, options);
137
- for (const mod of modules) {
138
- const addressPayload = {
139
- address: mod.address,
140
- schema: AddressSchema
141
- };
142
- resultPayloads.push(addressPayload);
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(filterPayloads.map(async (filter) => {
151
- const { id, ...options } = filter;
152
- const moduleAddresses = await this.unexpose(id, options);
153
- for (const address of moduleAddresses) {
154
- const addressPayload = {
155
- address,
156
- schema: AddressSchema
157
- };
158
- resultPayloads.push(addressPayload);
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(archivists.map(async (archivist) => (await Promise.all((await this.parents()).map((parent) => resolvePathToAddress(parent, archivist)))).filter(exists)))).flat().filter(exists);
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 { AddressPreviousHashSchema, DeadModuleError, ModuleAddressQuerySchema, ModuleManifestQuerySchema, ModuleStateQuerySchema } from "@xyo-network/module-model";
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 { isAddressModuleFilter as isAddressModuleFilter2, isNameModuleFilter as isNameModuleFilter2, ObjectResolverPriority as ObjectResolverPriority2 } from "@xyo-network/module-model";
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 = /* @__PURE__ */ __name((mod, account) => {
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
- }, "wrapModuleWithType");
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
- schema: ModuleAddressQuerySchema
403
- };
404
- const result = assertEx3((await this.sendQuery(queryPayload, void 0, this.account)).find(isPayloadOfSchemaType2(AddressPreviousHashSchema)), () => "Result did not include correct payload");
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((payload) => isPayloadOfSchemaType2(NodeManifestPayloadSchema)(payload) || isPayloadOfSchemaType2(ModuleManifestPayloadSchema)(payload));
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
- ...manifest.config
536
- });
537
- this.downResolver.addResolver(new ModuleProxyResolver({
538
- childAddressMap: await this.childAddressMap(),
539
- host: this.params.host,
540
- mod: this,
541
- moduleIdentifierTransformers: this.params.moduleIdentifierTransformers
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
- query: ModuleStateQuerySchema,
549
- schema: QuerySchema
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.8",
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.4.34",
33
- "@xylabs/exists": "^4.4.34",
34
- "@xylabs/forget": "^4.4.34",
35
- "@xylabs/hex": "^4.4.34",
36
- "@xylabs/object": "^4.4.34",
37
- "@xylabs/promise": "^4.4.34",
38
- "@xyo-network/account": "^3.6.8",
39
- "@xyo-network/account-model": "^3.6.8",
40
- "@xyo-network/archivist-model": "^3.6.8",
41
- "@xyo-network/archivist-wrapper": "^3.6.8",
42
- "@xyo-network/boundwitness-model": "^3.6.8",
43
- "@xyo-network/boundwitness-wrapper": "^3.6.8",
44
- "@xyo-network/bridge-model": "^3.6.8",
45
- "@xyo-network/diviner-model": "^3.6.8",
46
- "@xyo-network/diviner-wrapper": "^3.6.8",
47
- "@xyo-network/manifest-model": "^3.6.8",
48
- "@xyo-network/module-abstract": "^3.6.8",
49
- "@xyo-network/module-model": "^3.6.8",
50
- "@xyo-network/module-resolver": "^3.6.8",
51
- "@xyo-network/module-wrapper": "^3.6.8",
52
- "@xyo-network/node-model": "^3.6.8",
53
- "@xyo-network/node-wrapper": "^3.6.8",
54
- "@xyo-network/payload-builder": "^3.6.8",
55
- "@xyo-network/payload-model": "^3.6.8",
56
- "@xyo-network/query-payload-plugin": "^3.6.8",
57
- "@xyo-network/sentinel-model": "^3.6.8",
58
- "@xyo-network/sentinel-wrapper": "^3.6.8",
59
- "@xyo-network/witness-model": "^3.6.8",
60
- "@xyo-network/witness-wrapper": "^3.6.8",
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.2"
66
+ "typescript": "^5.7.3"
67
67
  },
68
68
  "publishConfig": {
69
69
  "access": "public"