@xyo-network/module-abstract 2.93.0-rc.1 → 2.93.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/AbstractModule.d.cts +4 -11
- package/dist/browser/AbstractModule.d.cts.map +1 -1
- package/dist/browser/AbstractModule.d.mts +4 -11
- package/dist/browser/AbstractModule.d.mts.map +1 -1
- package/dist/browser/AbstractModule.d.ts +4 -11
- package/dist/browser/AbstractModule.d.ts.map +1 -1
- package/dist/browser/AbstractModuleInstance.d.cts +13 -3
- package/dist/browser/AbstractModuleInstance.d.cts.map +1 -1
- package/dist/browser/AbstractModuleInstance.d.mts +13 -3
- package/dist/browser/AbstractModuleInstance.d.mts.map +1 -1
- package/dist/browser/AbstractModuleInstance.d.ts +13 -3
- package/dist/browser/AbstractModuleInstance.d.ts.map +1 -1
- package/dist/browser/ResolveHelper.d.cts +6 -1
- package/dist/browser/ResolveHelper.d.cts.map +1 -1
- package/dist/browser/ResolveHelper.d.mts +6 -1
- package/dist/browser/ResolveHelper.d.mts.map +1 -1
- package/dist/browser/ResolveHelper.d.ts +6 -1
- package/dist/browser/ResolveHelper.d.ts.map +1 -1
- package/dist/browser/index.cjs +174 -146
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.js +141 -113
- package/dist/browser/index.js.map +1 -1
- package/dist/node/AbstractModule.d.cts +4 -11
- package/dist/node/AbstractModule.d.cts.map +1 -1
- package/dist/node/AbstractModule.d.mts +4 -11
- package/dist/node/AbstractModule.d.mts.map +1 -1
- package/dist/node/AbstractModule.d.ts +4 -11
- package/dist/node/AbstractModule.d.ts.map +1 -1
- package/dist/node/AbstractModuleInstance.d.cts +13 -3
- package/dist/node/AbstractModuleInstance.d.cts.map +1 -1
- package/dist/node/AbstractModuleInstance.d.mts +13 -3
- package/dist/node/AbstractModuleInstance.d.mts.map +1 -1
- package/dist/node/AbstractModuleInstance.d.ts +13 -3
- package/dist/node/AbstractModuleInstance.d.ts.map +1 -1
- package/dist/node/ResolveHelper.d.cts +6 -1
- package/dist/node/ResolveHelper.d.cts.map +1 -1
- package/dist/node/ResolveHelper.d.mts +6 -1
- package/dist/node/ResolveHelper.d.mts.map +1 -1
- package/dist/node/ResolveHelper.d.ts +6 -1
- package/dist/node/ResolveHelper.d.ts.map +1 -1
- package/dist/node/index.cjs +175 -147
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.js +142 -114
- package/dist/node/index.js.map +1 -1
- package/package.json +18 -19
- package/src/AbstractModule.ts +11 -50
- package/src/AbstractModuleInstance.ts +69 -4
- package/src/ResolveHelper.ts +37 -12
package/dist/browser/index.cjs
CHANGED
|
@@ -47,7 +47,7 @@ var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
|
|
|
47
47
|
var import_boundwitness_wrapper3 = require("@xyo-network/boundwitness-wrapper");
|
|
48
48
|
var import_config_payload_plugin = require("@xyo-network/config-payload-plugin");
|
|
49
49
|
var import_manifest_model = require("@xyo-network/manifest-model");
|
|
50
|
-
var
|
|
50
|
+
var import_module_model = require("@xyo-network/module-model");
|
|
51
51
|
var import_module_resolver = require("@xyo-network/module-resolver");
|
|
52
52
|
var import_payload_builder2 = require("@xyo-network/payload-builder");
|
|
53
53
|
var import_query_payload_plugin = require("@xyo-network/query-payload-plugin");
|
|
@@ -244,75 +244,6 @@ var SupportedQueryValidator = class {
|
|
|
244
244
|
queryable;
|
|
245
245
|
};
|
|
246
246
|
|
|
247
|
-
// src/ResolveHelper.ts
|
|
248
|
-
var import_module_model = require("@xyo-network/module-model");
|
|
249
|
-
var ResolveHelper = class {
|
|
250
|
-
static {
|
|
251
|
-
__name(this, "ResolveHelper");
|
|
252
|
-
}
|
|
253
|
-
static async resolve(config, idOrFilter = "*", { required = "log", ...options } = {}) {
|
|
254
|
-
const { dead = false, upResolver, downResolver } = config;
|
|
255
|
-
const childOptions = {
|
|
256
|
-
...options,
|
|
257
|
-
required: false
|
|
258
|
-
};
|
|
259
|
-
const direction = options?.direction ?? "all";
|
|
260
|
-
const up = direction === "up" || direction === "all";
|
|
261
|
-
const down = direction === "down" || direction === "all";
|
|
262
|
-
let result;
|
|
263
|
-
if (idOrFilter === "*") {
|
|
264
|
-
if (dead) {
|
|
265
|
-
return [];
|
|
266
|
-
}
|
|
267
|
-
return [
|
|
268
|
-
...down ? await downResolver.resolve("*", childOptions) : [],
|
|
269
|
-
...up ? await upResolver.resolve("*", childOptions) : []
|
|
270
|
-
].filter(import_module_model.duplicateModules);
|
|
271
|
-
} else {
|
|
272
|
-
switch (typeof idOrFilter) {
|
|
273
|
-
case "string": {
|
|
274
|
-
if (dead) {
|
|
275
|
-
return void 0;
|
|
276
|
-
}
|
|
277
|
-
result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
278
|
-
break;
|
|
279
|
-
}
|
|
280
|
-
default: {
|
|
281
|
-
if (dead) {
|
|
282
|
-
return [];
|
|
283
|
-
}
|
|
284
|
-
const filter = idOrFilter;
|
|
285
|
-
result = [
|
|
286
|
-
...down ? await downResolver.resolve(filter, childOptions) : [],
|
|
287
|
-
...up ? await upResolver.resolve(filter, childOptions) : []
|
|
288
|
-
].filter(import_module_model.duplicateModules);
|
|
289
|
-
break;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
this.validateRequiredResolve(required, result, idOrFilter);
|
|
294
|
-
return result;
|
|
295
|
-
}
|
|
296
|
-
static validateRequiredResolve(required, result, idOrFilter, logger) {
|
|
297
|
-
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
298
|
-
switch (required) {
|
|
299
|
-
case "warn": {
|
|
300
|
-
logger?.warn("resolve failed", idOrFilter);
|
|
301
|
-
break;
|
|
302
|
-
}
|
|
303
|
-
case "log": {
|
|
304
|
-
logger?.log("resolve failed", idOrFilter);
|
|
305
|
-
break;
|
|
306
|
-
}
|
|
307
|
-
default: {
|
|
308
|
-
logger?.error("resolve failed", idOrFilter);
|
|
309
|
-
break;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
|
|
316
247
|
// src/AbstractModule.ts
|
|
317
248
|
var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
318
249
|
static {
|
|
@@ -320,28 +251,28 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
320
251
|
}
|
|
321
252
|
static allowRandomAccount = true;
|
|
322
253
|
static configSchemas;
|
|
323
|
-
static defaultLogger = new import_logger.ConsoleLogger(import_logger.LogLevel.
|
|
254
|
+
static defaultLogger = new import_logger.ConsoleLogger(import_logger.LogLevel.warn);
|
|
324
255
|
static enableLazyLoad = false;
|
|
325
256
|
static privateConstructorKey = Date.now().toString();
|
|
326
257
|
downResolver = new import_module_resolver.CompositeModuleResolver();
|
|
327
258
|
upResolver = new import_module_resolver.CompositeModuleResolver();
|
|
328
259
|
_account = void 0;
|
|
329
260
|
_baseModuleQueryAccountPaths = {
|
|
330
|
-
[
|
|
331
|
-
[
|
|
332
|
-
[
|
|
333
|
-
[
|
|
334
|
-
[
|
|
335
|
-
[
|
|
261
|
+
[import_module_model.ModuleAddressQuerySchema]: "1",
|
|
262
|
+
[import_module_model.ModuleDescribeQuerySchema]: "4",
|
|
263
|
+
[import_module_model.ModuleDiscoverQuerySchema]: "2",
|
|
264
|
+
[import_module_model.ModuleManifestQuerySchema]: "5",
|
|
265
|
+
[import_module_model.ModuleStateQuerySchema]: "6",
|
|
266
|
+
[import_module_model.ModuleSubscribeQuerySchema]: "3"
|
|
336
267
|
};
|
|
337
268
|
_lastError;
|
|
338
269
|
_queryAccounts = {
|
|
339
|
-
[
|
|
340
|
-
[
|
|
341
|
-
[
|
|
342
|
-
[
|
|
343
|
-
[
|
|
344
|
-
[
|
|
270
|
+
[import_module_model.ModuleAddressQuerySchema]: void 0,
|
|
271
|
+
[import_module_model.ModuleDescribeQuerySchema]: void 0,
|
|
272
|
+
[import_module_model.ModuleDiscoverQuerySchema]: void 0,
|
|
273
|
+
[import_module_model.ModuleManifestQuerySchema]: void 0,
|
|
274
|
+
[import_module_model.ModuleStateQuerySchema]: void 0,
|
|
275
|
+
[import_module_model.ModuleSubscribeQuerySchema]: void 0
|
|
345
276
|
};
|
|
346
277
|
_startPromise = void 0;
|
|
347
278
|
_started = void 0;
|
|
@@ -371,6 +302,9 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
371
302
|
get allowAnonymous() {
|
|
372
303
|
return !!this.config.security?.allowAnonymous;
|
|
373
304
|
}
|
|
305
|
+
get archiving() {
|
|
306
|
+
return this.config.archiving;
|
|
307
|
+
}
|
|
374
308
|
get config() {
|
|
375
309
|
return this.params.config;
|
|
376
310
|
}
|
|
@@ -385,12 +319,12 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
385
319
|
}
|
|
386
320
|
get queries() {
|
|
387
321
|
return [
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
322
|
+
import_module_model.ModuleDiscoverQuerySchema,
|
|
323
|
+
import_module_model.ModuleAddressQuerySchema,
|
|
324
|
+
import_module_model.ModuleSubscribeQuerySchema,
|
|
325
|
+
import_module_model.ModuleDescribeQuerySchema,
|
|
326
|
+
import_module_model.ModuleManifestQuerySchema,
|
|
327
|
+
import_module_model.ModuleStateQuerySchema
|
|
394
328
|
];
|
|
395
329
|
}
|
|
396
330
|
get queryAccountPaths() {
|
|
@@ -436,7 +370,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
436
370
|
if (!this.configSchemas || this.configSchemas.length === 0) {
|
|
437
371
|
throw new Error(`Missing configSchema [${params?.config?.schema}][${this.name}]`);
|
|
438
372
|
}
|
|
439
|
-
(0, import_assert2.assertEx)(params?.config?.name === void 0 || (0,
|
|
373
|
+
(0, import_assert2.assertEx)(params?.config?.name === void 0 || (0, import_module_model.isModuleName)(params.config.name), () => `Invalid module name: ${params?.config?.name}`);
|
|
440
374
|
const { account } = params ?? {};
|
|
441
375
|
const schema = params?.config?.schema ?? this.configSchema;
|
|
442
376
|
const allowedSchemas = this.configSchemas;
|
|
@@ -466,7 +400,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
466
400
|
return await determineAccount(params, this.allowRandomAccount);
|
|
467
401
|
}
|
|
468
402
|
static factory(params) {
|
|
469
|
-
return
|
|
403
|
+
return import_module_model.ModuleFactory.withParams(this, params);
|
|
470
404
|
}
|
|
471
405
|
_getRootFunction(funcName) {
|
|
472
406
|
let anyThis = this;
|
|
@@ -565,31 +499,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
565
499
|
];
|
|
566
500
|
return validators.every((validator) => validator(query, payloads));
|
|
567
501
|
}
|
|
568
|
-
async resolve(idOrFilter = "*", options = {}) {
|
|
569
|
-
switch (typeof idOrFilter) {
|
|
570
|
-
case "string": {
|
|
571
|
-
return await ResolveHelper.resolve({
|
|
572
|
-
dead: this.dead,
|
|
573
|
-
downResolver: this.downResolver,
|
|
574
|
-
upResolver: this.upResolver
|
|
575
|
-
}, idOrFilter, options);
|
|
576
|
-
}
|
|
577
|
-
case "object": {
|
|
578
|
-
return await ResolveHelper.resolve({
|
|
579
|
-
dead: this.dead,
|
|
580
|
-
downResolver: this.downResolver,
|
|
581
|
-
upResolver: this.upResolver
|
|
582
|
-
}, idOrFilter, options);
|
|
583
|
-
}
|
|
584
|
-
default: {
|
|
585
|
-
return await ResolveHelper.resolve({
|
|
586
|
-
dead: this.dead,
|
|
587
|
-
downResolver: this.downResolver,
|
|
588
|
-
upResolver: this.upResolver
|
|
589
|
-
}, idOrFilter, options);
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
502
|
start(_timeout) {
|
|
594
503
|
this._startPromise = this._startPromise ?? this.startHandler();
|
|
595
504
|
const result = this._startPromise;
|
|
@@ -653,7 +562,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
653
562
|
}
|
|
654
563
|
_checkDead() {
|
|
655
564
|
if (this.dead) {
|
|
656
|
-
throw new
|
|
565
|
+
throw new import_module_model.DeadModuleError(this.id, this._lastError);
|
|
657
566
|
}
|
|
658
567
|
}
|
|
659
568
|
_noOverride(functionName) {
|
|
@@ -702,7 +611,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
702
611
|
await Promise.all(payloads.map((payload) => import_payload_builder2.PayloadBuilder.build(payload))),
|
|
703
612
|
await Promise.all((errors ?? [])?.map((error) => import_payload_builder2.PayloadBuilder.build(error)))
|
|
704
613
|
];
|
|
705
|
-
if (this.
|
|
614
|
+
if (this.archiving) {
|
|
706
615
|
await this.storeToArchivists(result.flat());
|
|
707
616
|
}
|
|
708
617
|
return result;
|
|
@@ -711,7 +620,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
711
620
|
const description = {
|
|
712
621
|
address: this.address,
|
|
713
622
|
queries: this.queries,
|
|
714
|
-
schema:
|
|
623
|
+
schema: import_module_model.ModuleDescriptionSchema
|
|
715
624
|
};
|
|
716
625
|
if (this.config?.name) {
|
|
717
626
|
description.name = this.config.name;
|
|
@@ -772,11 +681,11 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
772
681
|
}
|
|
773
682
|
}
|
|
774
683
|
}
|
|
775
|
-
async manifestHandler(
|
|
684
|
+
async manifestHandler(maxDepth = 1, _ignoreAddresses = []) {
|
|
776
685
|
const name = this.config.name ?? "Anonymous";
|
|
777
686
|
const children = await this.downResolver.resolve("*", {
|
|
778
687
|
direction: "down",
|
|
779
|
-
maxDepth
|
|
688
|
+
maxDepth
|
|
780
689
|
});
|
|
781
690
|
const childAddressToName = {};
|
|
782
691
|
for (const child of children) {
|
|
@@ -811,7 +720,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
811
720
|
{
|
|
812
721
|
address: address2,
|
|
813
722
|
previousHash: previousHash2,
|
|
814
|
-
schema:
|
|
723
|
+
schema: import_module_model.AddressPreviousHashSchema
|
|
815
724
|
}
|
|
816
725
|
];
|
|
817
726
|
});
|
|
@@ -829,10 +738,10 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
829
738
|
const moduleAccountPreviousHash = previousHash ? {
|
|
830
739
|
address,
|
|
831
740
|
previousHash,
|
|
832
|
-
schema:
|
|
741
|
+
schema: import_module_model.AddressPreviousHashSchema
|
|
833
742
|
} : {
|
|
834
743
|
address,
|
|
835
|
-
schema:
|
|
744
|
+
schema: import_module_model.AddressPreviousHashSchema
|
|
836
745
|
};
|
|
837
746
|
return [
|
|
838
747
|
moduleAccount,
|
|
@@ -847,28 +756,28 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
847
756
|
(0, import_assert2.assertEx)(await this.queryable(query, payloads, queryConfig));
|
|
848
757
|
const resultPayloads = [];
|
|
849
758
|
switch (queryPayload.schema) {
|
|
850
|
-
case
|
|
759
|
+
case import_module_model.ModuleManifestQuerySchema: {
|
|
851
760
|
resultPayloads.push(await this.manifestHandler(queryPayload.maxDepth));
|
|
852
761
|
break;
|
|
853
762
|
}
|
|
854
|
-
case
|
|
763
|
+
case import_module_model.ModuleDiscoverQuerySchema: {
|
|
855
764
|
const { maxDepth } = queryPayload;
|
|
856
765
|
resultPayloads.push(...await this.discoverHandler(maxDepth));
|
|
857
766
|
break;
|
|
858
767
|
}
|
|
859
|
-
case
|
|
768
|
+
case import_module_model.ModuleDescribeQuerySchema: {
|
|
860
769
|
resultPayloads.push(await this.describeHandler());
|
|
861
770
|
break;
|
|
862
771
|
}
|
|
863
|
-
case
|
|
772
|
+
case import_module_model.ModuleAddressQuerySchema: {
|
|
864
773
|
resultPayloads.push(...await this.moduleAddressHandler());
|
|
865
774
|
break;
|
|
866
775
|
}
|
|
867
|
-
case
|
|
776
|
+
case import_module_model.ModuleStateQuerySchema: {
|
|
868
777
|
resultPayloads.push(...await this.stateHandler());
|
|
869
778
|
break;
|
|
870
779
|
}
|
|
871
|
-
case
|
|
780
|
+
case import_module_model.ModuleSubscribeQuerySchema: {
|
|
872
781
|
this.subscribeHandler();
|
|
873
782
|
break;
|
|
874
783
|
}
|
|
@@ -878,13 +787,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
878
787
|
}
|
|
879
788
|
return resultPayloads;
|
|
880
789
|
}
|
|
881
|
-
async resolveArchivingArchivists() {
|
|
882
|
-
const archivists = this.config.archiving?.archivists;
|
|
883
|
-
if (!archivists)
|
|
884
|
-
return [];
|
|
885
|
-
const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
|
|
886
|
-
return (0, import_lodash.compact)(resolved.map((mod) => (0, import_archivist_model.asArchivistInstance)(mod)));
|
|
887
|
-
}
|
|
888
790
|
async startHandler() {
|
|
889
791
|
this.validateConfig();
|
|
890
792
|
await this.initializeQueryAccounts();
|
|
@@ -902,12 +804,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
902
804
|
this._started = void 0;
|
|
903
805
|
return true;
|
|
904
806
|
}
|
|
905
|
-
async storeToArchivists(payloads) {
|
|
906
|
-
const archivists = await this.resolveArchivingArchivists();
|
|
907
|
-
return (await Promise.all(archivists.map((archivist) => {
|
|
908
|
-
return archivist.insert?.(payloads);
|
|
909
|
-
}))).map(([bw]) => bw);
|
|
910
|
-
}
|
|
911
807
|
subscribeHandler() {
|
|
912
808
|
return;
|
|
913
809
|
}
|
|
@@ -930,7 +826,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
930
826
|
}, true) && valid
|
|
931
827
|
);
|
|
932
828
|
}
|
|
933
|
-
if (!(0,
|
|
829
|
+
if (!(0, import_module_model.serializableField)(value)) {
|
|
934
830
|
this.logger?.warn(`Fields that are not serializable to JSON are not allowed in config [${parents?.join(".")}.${key}]`);
|
|
935
831
|
return false;
|
|
936
832
|
}
|
|
@@ -949,6 +845,101 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
949
845
|
|
|
950
846
|
// src/AbstractModuleInstance.ts
|
|
951
847
|
var import_assert3 = require("@xylabs/assert");
|
|
848
|
+
var import_lodash2 = require("@xylabs/lodash");
|
|
849
|
+
var import_archivist_model2 = require("@xyo-network/archivist-model");
|
|
850
|
+
|
|
851
|
+
// src/ResolveHelper.ts
|
|
852
|
+
var import_logger2 = require("@xylabs/logger");
|
|
853
|
+
var import_object3 = require("@xylabs/object");
|
|
854
|
+
var import_module_model2 = require("@xyo-network/module-model");
|
|
855
|
+
var ResolveHelper = class {
|
|
856
|
+
static {
|
|
857
|
+
__name(this, "ResolveHelper");
|
|
858
|
+
}
|
|
859
|
+
static defaultLogger;
|
|
860
|
+
static async resolve(config, idOrFilter = "*", { visibility, maxDepth = 5, required = "log", ...options } = {}) {
|
|
861
|
+
const { module: module2, logger = this.defaultLogger, dead = false, upResolver, downResolver } = config;
|
|
862
|
+
const log = logger ? new import_logger2.IdLogger(logger, () => `ResolveHelper [${module2.id}][${idOrFilter}][${visibility}]`) : void 0;
|
|
863
|
+
const childOptions = {
|
|
864
|
+
...options,
|
|
865
|
+
direction: "down",
|
|
866
|
+
maxDepth: maxDepth - 1,
|
|
867
|
+
required: false,
|
|
868
|
+
visibility
|
|
869
|
+
};
|
|
870
|
+
const direction = options?.direction ?? "all";
|
|
871
|
+
const up = direction === "up" || direction === "all";
|
|
872
|
+
const down = direction === "down" || direction === "all";
|
|
873
|
+
let result;
|
|
874
|
+
log?.debug("start", idOrFilter, maxDepth);
|
|
875
|
+
if (idOrFilter === "*") {
|
|
876
|
+
if (dead) {
|
|
877
|
+
log?.warn("failed [dead]", idOrFilter);
|
|
878
|
+
return [];
|
|
879
|
+
}
|
|
880
|
+
const modules = [
|
|
881
|
+
...down ? await downResolver.resolve("*", childOptions) : [],
|
|
882
|
+
...up ? await upResolver.resolve("*", childOptions) : []
|
|
883
|
+
].filter(import_module_model2.duplicateModules).filter((module3) => module3.address !== config.address);
|
|
884
|
+
if (modules.length > 0) {
|
|
885
|
+
log?.log("modules [count]", modules.length);
|
|
886
|
+
log?.debug("modules", (0, import_object3.toJsonString)(modules, 4));
|
|
887
|
+
}
|
|
888
|
+
if (maxDepth === 0) {
|
|
889
|
+
return modules;
|
|
890
|
+
}
|
|
891
|
+
const childModules = (await Promise.all(modules.map(async (module3) => await module3.resolve("*", childOptions)))).flat().filter(import_module_model2.duplicateModules);
|
|
892
|
+
return [
|
|
893
|
+
module2,
|
|
894
|
+
...modules,
|
|
895
|
+
...childModules
|
|
896
|
+
].filter(import_module_model2.duplicateModules);
|
|
897
|
+
} else {
|
|
898
|
+
switch (typeof idOrFilter) {
|
|
899
|
+
case "string": {
|
|
900
|
+
if (dead) {
|
|
901
|
+
return void 0;
|
|
902
|
+
}
|
|
903
|
+
result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
904
|
+
break;
|
|
905
|
+
}
|
|
906
|
+
default: {
|
|
907
|
+
if (dead) {
|
|
908
|
+
return [];
|
|
909
|
+
}
|
|
910
|
+
const filter = idOrFilter;
|
|
911
|
+
result = [
|
|
912
|
+
...down ? await downResolver.resolve(filter, childOptions) : [],
|
|
913
|
+
...up ? await upResolver.resolve(filter, childOptions) : []
|
|
914
|
+
].filter(import_module_model2.duplicateModules);
|
|
915
|
+
break;
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
this.validateRequiredResolve(required, result, idOrFilter, logger);
|
|
920
|
+
return result;
|
|
921
|
+
}
|
|
922
|
+
static validateRequiredResolve(required, result, idOrFilter, logger = this.defaultLogger) {
|
|
923
|
+
const log = logger ? new import_logger2.IdLogger(logger, () => `validateRequiredResolve [${idOrFilter}][${result}]`) : void 0;
|
|
924
|
+
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
925
|
+
switch (required) {
|
|
926
|
+
case "warn": {
|
|
927
|
+
log?.warn("resolve failed", idOrFilter);
|
|
928
|
+
break;
|
|
929
|
+
}
|
|
930
|
+
case "log": {
|
|
931
|
+
log?.log("resolve failed", idOrFilter);
|
|
932
|
+
break;
|
|
933
|
+
}
|
|
934
|
+
default: {
|
|
935
|
+
throw new Error(`resolve failed [${idOrFilter}]`);
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
};
|
|
941
|
+
|
|
942
|
+
// src/AbstractModuleInstance.ts
|
|
952
943
|
var AbstractModuleInstance = class extends AbstractModule {
|
|
953
944
|
static {
|
|
954
945
|
__name(this, "AbstractModuleInstance");
|
|
@@ -968,10 +959,10 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
968
959
|
return await this.describeHandler();
|
|
969
960
|
});
|
|
970
961
|
}
|
|
971
|
-
discover() {
|
|
962
|
+
discover(maxDepth = 5) {
|
|
972
963
|
this._checkDead();
|
|
973
964
|
return this.busy(async () => {
|
|
974
|
-
return await this.discoverHandler();
|
|
965
|
+
return await this.discoverHandler(maxDepth);
|
|
975
966
|
});
|
|
976
967
|
}
|
|
977
968
|
manifest(maxDepth, ignoreAddresses) {
|
|
@@ -986,6 +977,30 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
986
977
|
return await this.moduleAddressHandler();
|
|
987
978
|
});
|
|
988
979
|
}
|
|
980
|
+
async resolve(idOrFilter = "*", options = {}) {
|
|
981
|
+
const config = {
|
|
982
|
+
address: this.address,
|
|
983
|
+
dead: this.dead,
|
|
984
|
+
downResolver: this.downResolver,
|
|
985
|
+
logger: this.logger,
|
|
986
|
+
module: this,
|
|
987
|
+
upResolver: this.upResolver
|
|
988
|
+
};
|
|
989
|
+
if (idOrFilter === "*") {
|
|
990
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
991
|
+
}
|
|
992
|
+
switch (typeof idOrFilter) {
|
|
993
|
+
case "string": {
|
|
994
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
995
|
+
}
|
|
996
|
+
case "object": {
|
|
997
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
998
|
+
}
|
|
999
|
+
default: {
|
|
1000
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
989
1004
|
state() {
|
|
990
1005
|
this._checkDead();
|
|
991
1006
|
return this.busy(async () => {
|
|
@@ -996,5 +1011,18 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
996
1011
|
this._checkDead();
|
|
997
1012
|
return this.subscribeHandler();
|
|
998
1013
|
}
|
|
1014
|
+
async resolveArchivingArchivists() {
|
|
1015
|
+
const archivists = this.config.archiving?.archivists;
|
|
1016
|
+
if (!archivists)
|
|
1017
|
+
return [];
|
|
1018
|
+
const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
|
|
1019
|
+
return (0, import_lodash2.compact)(resolved.map((mod) => (0, import_archivist_model2.asArchivistInstance)(mod)));
|
|
1020
|
+
}
|
|
1021
|
+
async storeToArchivists(payloads) {
|
|
1022
|
+
const archivists = await this.resolveArchivingArchivists();
|
|
1023
|
+
return (await Promise.all(archivists.map((archivist) => {
|
|
1024
|
+
return archivist.insert?.(payloads);
|
|
1025
|
+
}))).map(([bw]) => bw);
|
|
1026
|
+
}
|
|
999
1027
|
};
|
|
1000
1028
|
//# sourceMappingURL=index.cjs.map
|