@xyo-network/module-abstract 2.92.11 → 2.93.0-rc.2
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 -12
- package/dist/browser/AbstractModule.d.cts.map +1 -1
- package/dist/browser/AbstractModule.d.mts +4 -12
- package/dist/browser/AbstractModule.d.mts.map +1 -1
- package/dist/browser/AbstractModule.d.ts +4 -12
- 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 +19 -0
- package/dist/browser/ResolveHelper.d.cts.map +1 -0
- package/dist/browser/ResolveHelper.d.mts +19 -0
- package/dist/browser/ResolveHelper.d.mts.map +1 -0
- package/dist/browser/ResolveHelper.d.ts +19 -0
- package/dist/browser/ResolveHelper.d.ts.map +1 -0
- package/dist/browser/index.cjs +144 -70
- package/dist/browser/index.cjs.map +1 -1
- package/dist/browser/index.d.cts +1 -0
- package/dist/browser/index.d.cts.map +1 -1
- package/dist/browser/index.d.mts +1 -0
- package/dist/browser/index.d.mts.map +1 -1
- package/dist/browser/index.d.ts +1 -0
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +145 -71
- package/dist/browser/index.js.map +1 -1
- package/dist/node/AbstractModule.d.cts +4 -12
- package/dist/node/AbstractModule.d.cts.map +1 -1
- package/dist/node/AbstractModule.d.mts +4 -12
- package/dist/node/AbstractModule.d.mts.map +1 -1
- package/dist/node/AbstractModule.d.ts +4 -12
- 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 +19 -0
- package/dist/node/ResolveHelper.d.cts.map +1 -0
- package/dist/node/ResolveHelper.d.mts +19 -0
- package/dist/node/ResolveHelper.d.mts.map +1 -0
- package/dist/node/ResolveHelper.d.ts +19 -0
- package/dist/node/ResolveHelper.d.ts.map +1 -0
- package/dist/node/index.cjs +152 -78
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.d.cts +1 -0
- package/dist/node/index.d.cts.map +1 -1
- package/dist/node/index.d.mts +1 -0
- package/dist/node/index.d.mts.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.d.ts.map +1 -1
- package/dist/node/index.js +152 -79
- package/dist/node/index.js.map +1 -1
- package/package.json +28 -27
- package/src/AbstractModule.ts +25 -103
- package/src/AbstractModuleInstance.ts +69 -4
- package/src/ResolveHelper.ts +121 -0
- package/src/index.ts +1 -0
package/dist/browser/index.cjs
CHANGED
|
@@ -26,6 +26,7 @@ __export(src_exports, {
|
|
|
26
26
|
BaseEmitter: () => BaseEmitter,
|
|
27
27
|
ModuleConfigQueryValidator: () => ModuleConfigQueryValidator,
|
|
28
28
|
ModuleErrorBuilder: () => ModuleErrorBuilder,
|
|
29
|
+
ResolveHelper: () => ResolveHelper,
|
|
29
30
|
SupportedQueryValidator: () => SupportedQueryValidator,
|
|
30
31
|
isQuerySupportedByModule: () => isQuerySupportedByModule
|
|
31
32
|
});
|
|
@@ -250,7 +251,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
250
251
|
}
|
|
251
252
|
static allowRandomAccount = true;
|
|
252
253
|
static configSchemas;
|
|
253
|
-
static defaultLogger = new import_logger.ConsoleLogger(import_logger.LogLevel.
|
|
254
|
+
static defaultLogger = new import_logger.ConsoleLogger(import_logger.LogLevel.warn);
|
|
254
255
|
static enableLazyLoad = false;
|
|
255
256
|
static privateConstructorKey = Date.now().toString();
|
|
256
257
|
downResolver = new import_module_resolver.CompositeModuleResolver();
|
|
@@ -301,6 +302,9 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
301
302
|
get allowAnonymous() {
|
|
302
303
|
return !!this.config.security?.allowAnonymous;
|
|
303
304
|
}
|
|
305
|
+
get archiving() {
|
|
306
|
+
return this.config.archiving;
|
|
307
|
+
}
|
|
304
308
|
get config() {
|
|
305
309
|
return this.params.config;
|
|
306
310
|
}
|
|
@@ -495,48 +499,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
495
499
|
];
|
|
496
500
|
return validators.every((validator) => validator(query, payloads));
|
|
497
501
|
}
|
|
498
|
-
async resolve(idOrFilter = "*", { required = "log", ...options } = {}) {
|
|
499
|
-
const childOptions = {
|
|
500
|
-
...options,
|
|
501
|
-
required: false
|
|
502
|
-
};
|
|
503
|
-
const direction = options?.direction ?? "all";
|
|
504
|
-
const up = direction === "up" || direction === "all";
|
|
505
|
-
const down = direction === "down" || direction === "all";
|
|
506
|
-
let result;
|
|
507
|
-
if (idOrFilter === "*") {
|
|
508
|
-
if (this.dead) {
|
|
509
|
-
return [];
|
|
510
|
-
}
|
|
511
|
-
return [
|
|
512
|
-
...down ? await this.downResolver.resolve("*", childOptions) : [],
|
|
513
|
-
...up ? await this.upResolver.resolve("*", childOptions) : []
|
|
514
|
-
].filter(import_module_model.duplicateModules);
|
|
515
|
-
} else {
|
|
516
|
-
switch (typeof idOrFilter) {
|
|
517
|
-
case "string": {
|
|
518
|
-
if (this.dead) {
|
|
519
|
-
return void 0;
|
|
520
|
-
}
|
|
521
|
-
result = (down ? await this.downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await this.upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
522
|
-
break;
|
|
523
|
-
}
|
|
524
|
-
default: {
|
|
525
|
-
if (this.dead) {
|
|
526
|
-
return [];
|
|
527
|
-
}
|
|
528
|
-
const filter = idOrFilter;
|
|
529
|
-
result = [
|
|
530
|
-
...down ? await this.downResolver.resolve(filter, childOptions) : [],
|
|
531
|
-
...up ? await this.upResolver.resolve(filter, childOptions) : []
|
|
532
|
-
].filter(import_module_model.duplicateModules);
|
|
533
|
-
break;
|
|
534
|
-
}
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
this.validateRequiredResolve(required, result, idOrFilter);
|
|
538
|
-
return result;
|
|
539
|
-
}
|
|
540
502
|
start(_timeout) {
|
|
541
503
|
this._startPromise = this._startPromise ?? this.startHandler();
|
|
542
504
|
const result = this._startPromise;
|
|
@@ -649,7 +611,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
649
611
|
await Promise.all(payloads.map((payload) => import_payload_builder2.PayloadBuilder.build(payload))),
|
|
650
612
|
await Promise.all((errors ?? [])?.map((error) => import_payload_builder2.PayloadBuilder.build(error)))
|
|
651
613
|
];
|
|
652
|
-
if (this.
|
|
614
|
+
if (this.archiving) {
|
|
653
615
|
await this.storeToArchivists(result.flat());
|
|
654
616
|
}
|
|
655
617
|
return result;
|
|
@@ -671,7 +633,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
671
633
|
return description;
|
|
672
634
|
}
|
|
673
635
|
async discoverHandler(_maxDepth) {
|
|
674
|
-
const config = this.config;
|
|
636
|
+
const config = await import_payload_builder2.PayloadBuilder.build(this.config);
|
|
675
637
|
const address = await new import_payload_builder2.PayloadBuilder({
|
|
676
638
|
schema: import_address_payload_plugin.AddressSchema
|
|
677
639
|
}).fields({
|
|
@@ -685,10 +647,10 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
685
647
|
query
|
|
686
648
|
}).build();
|
|
687
649
|
}));
|
|
688
|
-
const configSchema = {
|
|
650
|
+
const configSchema = await import_payload_builder2.PayloadBuilder.build({
|
|
689
651
|
config: config.schema,
|
|
690
652
|
schema: import_config_payload_plugin.ConfigSchema
|
|
691
|
-
};
|
|
653
|
+
});
|
|
692
654
|
return (0, import_lodash.compact)([
|
|
693
655
|
config,
|
|
694
656
|
configSchema,
|
|
@@ -719,8 +681,18 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
719
681
|
}
|
|
720
682
|
}
|
|
721
683
|
}
|
|
722
|
-
manifestHandler(
|
|
684
|
+
async manifestHandler(maxDepth = 1, _ignoreAddresses = []) {
|
|
723
685
|
const name = this.config.name ?? "Anonymous";
|
|
686
|
+
const children = await this.downResolver.resolve("*", {
|
|
687
|
+
direction: "down",
|
|
688
|
+
maxDepth
|
|
689
|
+
});
|
|
690
|
+
const childAddressToName = {};
|
|
691
|
+
for (const child of children) {
|
|
692
|
+
if (child.address !== this.address) {
|
|
693
|
+
childAddressToName[child.address] = child.config.name ?? null;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
724
696
|
return {
|
|
725
697
|
config: {
|
|
726
698
|
name,
|
|
@@ -728,7 +700,8 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
728
700
|
},
|
|
729
701
|
schema: import_manifest_model.ModuleManifestPayloadSchema,
|
|
730
702
|
status: {
|
|
731
|
-
address: this.address
|
|
703
|
+
address: this.address,
|
|
704
|
+
children: childAddressToName
|
|
732
705
|
}
|
|
733
706
|
};
|
|
734
707
|
}
|
|
@@ -814,13 +787,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
814
787
|
}
|
|
815
788
|
return resultPayloads;
|
|
816
789
|
}
|
|
817
|
-
async resolveArchivingArchivists() {
|
|
818
|
-
const archivists = this.config.archiving?.archivists;
|
|
819
|
-
if (!archivists)
|
|
820
|
-
return [];
|
|
821
|
-
const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
|
|
822
|
-
return (0, import_lodash.compact)(resolved.map((mod) => (0, import_archivist_model.asArchivistInstance)(mod)));
|
|
823
|
-
}
|
|
824
790
|
async startHandler() {
|
|
825
791
|
this.validateConfig();
|
|
826
792
|
await this.initializeQueryAccounts();
|
|
@@ -838,12 +804,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
838
804
|
this._started = void 0;
|
|
839
805
|
return true;
|
|
840
806
|
}
|
|
841
|
-
async storeToArchivists(payloads) {
|
|
842
|
-
const archivists = await this.resolveArchivingArchivists();
|
|
843
|
-
return (await Promise.all(archivists.map((archivist) => {
|
|
844
|
-
return archivist.insert?.(payloads);
|
|
845
|
-
}))).map(([bw]) => bw);
|
|
846
|
-
}
|
|
847
807
|
subscribeHandler() {
|
|
848
808
|
return;
|
|
849
809
|
}
|
|
@@ -881,20 +841,98 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
881
841
|
}
|
|
882
842
|
}, true);
|
|
883
843
|
}
|
|
884
|
-
|
|
844
|
+
};
|
|
845
|
+
|
|
846
|
+
// src/AbstractModuleInstance.ts
|
|
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;
|
|
885
924
|
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
886
925
|
switch (required) {
|
|
887
926
|
case "warn": {
|
|
888
|
-
|
|
927
|
+
log?.warn("resolve failed", idOrFilter);
|
|
889
928
|
break;
|
|
890
929
|
}
|
|
891
930
|
case "log": {
|
|
892
|
-
|
|
931
|
+
log?.log("resolve failed", idOrFilter);
|
|
893
932
|
break;
|
|
894
933
|
}
|
|
895
934
|
default: {
|
|
896
|
-
|
|
897
|
-
break;
|
|
935
|
+
throw new Error(`resolve failed [${idOrFilter}]`);
|
|
898
936
|
}
|
|
899
937
|
}
|
|
900
938
|
}
|
|
@@ -902,7 +940,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
902
940
|
};
|
|
903
941
|
|
|
904
942
|
// src/AbstractModuleInstance.ts
|
|
905
|
-
var import_assert3 = require("@xylabs/assert");
|
|
906
943
|
var AbstractModuleInstance = class extends AbstractModule {
|
|
907
944
|
static {
|
|
908
945
|
__name(this, "AbstractModuleInstance");
|
|
@@ -922,10 +959,10 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
922
959
|
return await this.describeHandler();
|
|
923
960
|
});
|
|
924
961
|
}
|
|
925
|
-
discover() {
|
|
962
|
+
discover(maxDepth = 5) {
|
|
926
963
|
this._checkDead();
|
|
927
964
|
return this.busy(async () => {
|
|
928
|
-
return await this.discoverHandler();
|
|
965
|
+
return await this.discoverHandler(maxDepth);
|
|
929
966
|
});
|
|
930
967
|
}
|
|
931
968
|
manifest(maxDepth, ignoreAddresses) {
|
|
@@ -940,6 +977,30 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
940
977
|
return await this.moduleAddressHandler();
|
|
941
978
|
});
|
|
942
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
|
+
}
|
|
943
1004
|
state() {
|
|
944
1005
|
this._checkDead();
|
|
945
1006
|
return this.busy(async () => {
|
|
@@ -950,5 +1011,18 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
950
1011
|
this._checkDead();
|
|
951
1012
|
return this.subscribeHandler();
|
|
952
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
|
+
}
|
|
953
1027
|
};
|
|
954
1028
|
//# sourceMappingURL=index.cjs.map
|