@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/node/index.js
CHANGED
|
@@ -222,74 +222,6 @@ var _SupportedQueryValidator = class _SupportedQueryValidator {
|
|
|
222
222
|
__name(_SupportedQueryValidator, "SupportedQueryValidator");
|
|
223
223
|
var SupportedQueryValidator = _SupportedQueryValidator;
|
|
224
224
|
|
|
225
|
-
// src/ResolveHelper.ts
|
|
226
|
-
import { duplicateModules } from "@xyo-network/module-model";
|
|
227
|
-
var _ResolveHelper = class _ResolveHelper {
|
|
228
|
-
static async resolve(config, idOrFilter = "*", { required = "log", ...options } = {}) {
|
|
229
|
-
const { dead = false, upResolver, downResolver } = config;
|
|
230
|
-
const childOptions = {
|
|
231
|
-
...options,
|
|
232
|
-
required: false
|
|
233
|
-
};
|
|
234
|
-
const direction = (options == null ? void 0 : options.direction) ?? "all";
|
|
235
|
-
const up = direction === "up" || direction === "all";
|
|
236
|
-
const down = direction === "down" || direction === "all";
|
|
237
|
-
let result;
|
|
238
|
-
if (idOrFilter === "*") {
|
|
239
|
-
if (dead) {
|
|
240
|
-
return [];
|
|
241
|
-
}
|
|
242
|
-
return [
|
|
243
|
-
...down ? await downResolver.resolve("*", childOptions) : [],
|
|
244
|
-
...up ? await upResolver.resolve("*", childOptions) : []
|
|
245
|
-
].filter(duplicateModules);
|
|
246
|
-
} else {
|
|
247
|
-
switch (typeof idOrFilter) {
|
|
248
|
-
case "string": {
|
|
249
|
-
if (dead) {
|
|
250
|
-
return void 0;
|
|
251
|
-
}
|
|
252
|
-
result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
253
|
-
break;
|
|
254
|
-
}
|
|
255
|
-
default: {
|
|
256
|
-
if (dead) {
|
|
257
|
-
return [];
|
|
258
|
-
}
|
|
259
|
-
const filter = idOrFilter;
|
|
260
|
-
result = [
|
|
261
|
-
...down ? await downResolver.resolve(filter, childOptions) : [],
|
|
262
|
-
...up ? await upResolver.resolve(filter, childOptions) : []
|
|
263
|
-
].filter(duplicateModules);
|
|
264
|
-
break;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
this.validateRequiredResolve(required, result, idOrFilter);
|
|
269
|
-
return result;
|
|
270
|
-
}
|
|
271
|
-
static validateRequiredResolve(required, result, idOrFilter, logger) {
|
|
272
|
-
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
273
|
-
switch (required) {
|
|
274
|
-
case "warn": {
|
|
275
|
-
logger == null ? void 0 : logger.warn("resolve failed", idOrFilter);
|
|
276
|
-
break;
|
|
277
|
-
}
|
|
278
|
-
case "log": {
|
|
279
|
-
logger == null ? void 0 : logger.log("resolve failed", idOrFilter);
|
|
280
|
-
break;
|
|
281
|
-
}
|
|
282
|
-
default: {
|
|
283
|
-
logger == null ? void 0 : logger.error("resolve failed", idOrFilter);
|
|
284
|
-
break;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
};
|
|
290
|
-
__name(_ResolveHelper, "ResolveHelper");
|
|
291
|
-
var ResolveHelper = _ResolveHelper;
|
|
292
|
-
|
|
293
225
|
// src/AbstractModule.ts
|
|
294
226
|
var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
295
227
|
downResolver = new CompositeModuleResolver();
|
|
@@ -341,6 +273,9 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
341
273
|
var _a;
|
|
342
274
|
return !!((_a = this.config.security) == null ? void 0 : _a.allowAnonymous);
|
|
343
275
|
}
|
|
276
|
+
get archiving() {
|
|
277
|
+
return this.config.archiving;
|
|
278
|
+
}
|
|
344
279
|
get config() {
|
|
345
280
|
return this.params.config;
|
|
346
281
|
}
|
|
@@ -540,31 +475,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
540
475
|
];
|
|
541
476
|
return validators.every((validator) => validator(query, payloads));
|
|
542
477
|
}
|
|
543
|
-
async resolve(idOrFilter = "*", options = {}) {
|
|
544
|
-
switch (typeof idOrFilter) {
|
|
545
|
-
case "string": {
|
|
546
|
-
return await ResolveHelper.resolve({
|
|
547
|
-
dead: this.dead,
|
|
548
|
-
downResolver: this.downResolver,
|
|
549
|
-
upResolver: this.upResolver
|
|
550
|
-
}, idOrFilter, options);
|
|
551
|
-
}
|
|
552
|
-
case "object": {
|
|
553
|
-
return await ResolveHelper.resolve({
|
|
554
|
-
dead: this.dead,
|
|
555
|
-
downResolver: this.downResolver,
|
|
556
|
-
upResolver: this.upResolver
|
|
557
|
-
}, idOrFilter, options);
|
|
558
|
-
}
|
|
559
|
-
default: {
|
|
560
|
-
return await ResolveHelper.resolve({
|
|
561
|
-
dead: this.dead,
|
|
562
|
-
downResolver: this.downResolver,
|
|
563
|
-
upResolver: this.upResolver
|
|
564
|
-
}, idOrFilter, options);
|
|
565
|
-
}
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
478
|
start(_timeout) {
|
|
569
479
|
this._startPromise = this._startPromise ?? this.startHandler();
|
|
570
480
|
const result = this._startPromise;
|
|
@@ -681,7 +591,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
681
591
|
await Promise.all(payloads.map((payload) => PayloadBuilder2.build(payload))),
|
|
682
592
|
await Promise.all((_a = errors ?? []) == null ? void 0 : _a.map((error) => PayloadBuilder2.build(error)))
|
|
683
593
|
];
|
|
684
|
-
if (this.
|
|
594
|
+
if (this.archiving) {
|
|
685
595
|
await this.storeToArchivists(result.flat());
|
|
686
596
|
}
|
|
687
597
|
return result;
|
|
@@ -757,11 +667,11 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
757
667
|
}
|
|
758
668
|
}
|
|
759
669
|
}
|
|
760
|
-
async manifestHandler(
|
|
670
|
+
async manifestHandler(maxDepth = 1, _ignoreAddresses = []) {
|
|
761
671
|
const name = this.config.name ?? "Anonymous";
|
|
762
672
|
const children = await this.downResolver.resolve("*", {
|
|
763
673
|
direction: "down",
|
|
764
|
-
maxDepth
|
|
674
|
+
maxDepth
|
|
765
675
|
});
|
|
766
676
|
const childAddressToName = {};
|
|
767
677
|
for (const child of children) {
|
|
@@ -863,14 +773,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
863
773
|
}
|
|
864
774
|
return resultPayloads;
|
|
865
775
|
}
|
|
866
|
-
async resolveArchivingArchivists() {
|
|
867
|
-
var _a;
|
|
868
|
-
const archivists = (_a = this.config.archiving) == null ? void 0 : _a.archivists;
|
|
869
|
-
if (!archivists)
|
|
870
|
-
return [];
|
|
871
|
-
const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
|
|
872
|
-
return compact(resolved.map((mod) => asArchivistInstance(mod)));
|
|
873
|
-
}
|
|
874
776
|
async startHandler() {
|
|
875
777
|
this.validateConfig();
|
|
876
778
|
await this.initializeQueryAccounts();
|
|
@@ -888,13 +790,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
888
790
|
this._started = void 0;
|
|
889
791
|
return true;
|
|
890
792
|
}
|
|
891
|
-
async storeToArchivists(payloads) {
|
|
892
|
-
const archivists = await this.resolveArchivingArchivists();
|
|
893
|
-
return (await Promise.all(archivists.map((archivist) => {
|
|
894
|
-
var _a;
|
|
895
|
-
return (_a = archivist.insert) == null ? void 0 : _a.call(archivist, payloads);
|
|
896
|
-
}))).map(([bw]) => bw);
|
|
897
|
-
}
|
|
898
793
|
subscribeHandler() {
|
|
899
794
|
return;
|
|
900
795
|
}
|
|
@@ -937,13 +832,107 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
937
832
|
__name(_AbstractModule, "AbstractModule");
|
|
938
833
|
__publicField(_AbstractModule, "allowRandomAccount", true);
|
|
939
834
|
__publicField(_AbstractModule, "configSchemas");
|
|
940
|
-
__publicField(_AbstractModule, "defaultLogger", new ConsoleLogger(LogLevel.
|
|
835
|
+
__publicField(_AbstractModule, "defaultLogger", new ConsoleLogger(LogLevel.warn));
|
|
941
836
|
__publicField(_AbstractModule, "enableLazyLoad", false);
|
|
942
837
|
__publicField(_AbstractModule, "privateConstructorKey", Date.now().toString());
|
|
943
838
|
var AbstractModule = _AbstractModule;
|
|
944
839
|
|
|
945
840
|
// src/AbstractModuleInstance.ts
|
|
946
841
|
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
842
|
+
import { compact as compact2 } from "@xylabs/lodash";
|
|
843
|
+
import { asArchivistInstance as asArchivistInstance2 } from "@xyo-network/archivist-model";
|
|
844
|
+
|
|
845
|
+
// src/ResolveHelper.ts
|
|
846
|
+
import { IdLogger as IdLogger2 } from "@xylabs/logger";
|
|
847
|
+
import { toJsonString } from "@xylabs/object";
|
|
848
|
+
import { duplicateModules } from "@xyo-network/module-model";
|
|
849
|
+
var _ResolveHelper = class _ResolveHelper {
|
|
850
|
+
static async resolve(config, idOrFilter = "*", { visibility, maxDepth = 5, required = "log", ...options } = {}) {
|
|
851
|
+
const { module, logger = this.defaultLogger, dead = false, upResolver, downResolver } = config;
|
|
852
|
+
const log = logger ? new IdLogger2(logger, () => `ResolveHelper [${module.id}][${idOrFilter}][${visibility}]`) : void 0;
|
|
853
|
+
const childOptions = {
|
|
854
|
+
...options,
|
|
855
|
+
direction: "down",
|
|
856
|
+
maxDepth: maxDepth - 1,
|
|
857
|
+
required: false,
|
|
858
|
+
visibility
|
|
859
|
+
};
|
|
860
|
+
const direction = (options == null ? void 0 : options.direction) ?? "all";
|
|
861
|
+
const up = direction === "up" || direction === "all";
|
|
862
|
+
const down = direction === "down" || direction === "all";
|
|
863
|
+
let result;
|
|
864
|
+
log == null ? void 0 : log.debug("start", idOrFilter, maxDepth);
|
|
865
|
+
if (idOrFilter === "*") {
|
|
866
|
+
if (dead) {
|
|
867
|
+
log == null ? void 0 : log.warn("failed [dead]", idOrFilter);
|
|
868
|
+
return [];
|
|
869
|
+
}
|
|
870
|
+
const modules = [
|
|
871
|
+
...down ? await downResolver.resolve("*", childOptions) : [],
|
|
872
|
+
...up ? await upResolver.resolve("*", childOptions) : []
|
|
873
|
+
].filter(duplicateModules).filter((module2) => module2.address !== config.address);
|
|
874
|
+
if (modules.length > 0) {
|
|
875
|
+
log == null ? void 0 : log.log("modules [count]", modules.length);
|
|
876
|
+
log == null ? void 0 : log.debug("modules", toJsonString(modules, 4));
|
|
877
|
+
}
|
|
878
|
+
if (maxDepth === 0) {
|
|
879
|
+
return modules;
|
|
880
|
+
}
|
|
881
|
+
const childModules = (await Promise.all(modules.map(async (module2) => await module2.resolve("*", childOptions)))).flat().filter(duplicateModules);
|
|
882
|
+
return [
|
|
883
|
+
module,
|
|
884
|
+
...modules,
|
|
885
|
+
...childModules
|
|
886
|
+
].filter(duplicateModules);
|
|
887
|
+
} else {
|
|
888
|
+
switch (typeof idOrFilter) {
|
|
889
|
+
case "string": {
|
|
890
|
+
if (dead) {
|
|
891
|
+
return void 0;
|
|
892
|
+
}
|
|
893
|
+
result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
894
|
+
break;
|
|
895
|
+
}
|
|
896
|
+
default: {
|
|
897
|
+
if (dead) {
|
|
898
|
+
return [];
|
|
899
|
+
}
|
|
900
|
+
const filter = idOrFilter;
|
|
901
|
+
result = [
|
|
902
|
+
...down ? await downResolver.resolve(filter, childOptions) : [],
|
|
903
|
+
...up ? await upResolver.resolve(filter, childOptions) : []
|
|
904
|
+
].filter(duplicateModules);
|
|
905
|
+
break;
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
this.validateRequiredResolve(required, result, idOrFilter, logger);
|
|
910
|
+
return result;
|
|
911
|
+
}
|
|
912
|
+
static validateRequiredResolve(required, result, idOrFilter, logger = this.defaultLogger) {
|
|
913
|
+
const log = logger ? new IdLogger2(logger, () => `validateRequiredResolve [${idOrFilter}][${result}]`) : void 0;
|
|
914
|
+
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
915
|
+
switch (required) {
|
|
916
|
+
case "warn": {
|
|
917
|
+
log == null ? void 0 : log.warn("resolve failed", idOrFilter);
|
|
918
|
+
break;
|
|
919
|
+
}
|
|
920
|
+
case "log": {
|
|
921
|
+
log == null ? void 0 : log.log("resolve failed", idOrFilter);
|
|
922
|
+
break;
|
|
923
|
+
}
|
|
924
|
+
default: {
|
|
925
|
+
throw new Error(`resolve failed [${idOrFilter}]`);
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
};
|
|
931
|
+
__name(_ResolveHelper, "ResolveHelper");
|
|
932
|
+
__publicField(_ResolveHelper, "defaultLogger");
|
|
933
|
+
var ResolveHelper = _ResolveHelper;
|
|
934
|
+
|
|
935
|
+
// src/AbstractModuleInstance.ts
|
|
947
936
|
var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModule {
|
|
948
937
|
constructor(privateConstructorKey, params, account) {
|
|
949
938
|
assertEx3(AbstractModule.privateConstructorKey === privateConstructorKey, () => "Use create function instead of constructor");
|
|
@@ -960,10 +949,10 @@ var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModu
|
|
|
960
949
|
return await this.describeHandler();
|
|
961
950
|
});
|
|
962
951
|
}
|
|
963
|
-
discover() {
|
|
952
|
+
discover(maxDepth = 5) {
|
|
964
953
|
this._checkDead();
|
|
965
954
|
return this.busy(async () => {
|
|
966
|
-
return await this.discoverHandler();
|
|
955
|
+
return await this.discoverHandler(maxDepth);
|
|
967
956
|
});
|
|
968
957
|
}
|
|
969
958
|
manifest(maxDepth, ignoreAddresses) {
|
|
@@ -978,6 +967,30 @@ var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModu
|
|
|
978
967
|
return await this.moduleAddressHandler();
|
|
979
968
|
});
|
|
980
969
|
}
|
|
970
|
+
async resolve(idOrFilter = "*", options = {}) {
|
|
971
|
+
const config = {
|
|
972
|
+
address: this.address,
|
|
973
|
+
dead: this.dead,
|
|
974
|
+
downResolver: this.downResolver,
|
|
975
|
+
logger: this.logger,
|
|
976
|
+
module: this,
|
|
977
|
+
upResolver: this.upResolver
|
|
978
|
+
};
|
|
979
|
+
if (idOrFilter === "*") {
|
|
980
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
981
|
+
}
|
|
982
|
+
switch (typeof idOrFilter) {
|
|
983
|
+
case "string": {
|
|
984
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
985
|
+
}
|
|
986
|
+
case "object": {
|
|
987
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
988
|
+
}
|
|
989
|
+
default: {
|
|
990
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
991
|
+
}
|
|
992
|
+
}
|
|
993
|
+
}
|
|
981
994
|
state() {
|
|
982
995
|
this._checkDead();
|
|
983
996
|
return this.busy(async () => {
|
|
@@ -988,6 +1001,21 @@ var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModu
|
|
|
988
1001
|
this._checkDead();
|
|
989
1002
|
return this.subscribeHandler();
|
|
990
1003
|
}
|
|
1004
|
+
async resolveArchivingArchivists() {
|
|
1005
|
+
var _a;
|
|
1006
|
+
const archivists = (_a = this.config.archiving) == null ? void 0 : _a.archivists;
|
|
1007
|
+
if (!archivists)
|
|
1008
|
+
return [];
|
|
1009
|
+
const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
|
|
1010
|
+
return compact2(resolved.map((mod) => asArchivistInstance2(mod)));
|
|
1011
|
+
}
|
|
1012
|
+
async storeToArchivists(payloads) {
|
|
1013
|
+
const archivists = await this.resolveArchivingArchivists();
|
|
1014
|
+
return (await Promise.all(archivists.map((archivist) => {
|
|
1015
|
+
var _a;
|
|
1016
|
+
return (_a = archivist.insert) == null ? void 0 : _a.call(archivist, payloads);
|
|
1017
|
+
}))).map(([bw]) => bw);
|
|
1018
|
+
}
|
|
991
1019
|
};
|
|
992
1020
|
__name(_AbstractModuleInstance, "AbstractModuleInstance");
|
|
993
1021
|
var AbstractModuleInstance = _AbstractModuleInstance;
|