@xyo-network/module-abstract 2.93.0-rc.1 → 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 -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 +17 -17
- package/src/AbstractModule.ts +11 -50
- package/src/AbstractModuleInstance.ts +69 -4
- package/src/ResolveHelper.ts +37 -12
package/dist/browser/index.js
CHANGED
|
@@ -213,75 +213,6 @@ var SupportedQueryValidator = class {
|
|
|
213
213
|
queryable;
|
|
214
214
|
};
|
|
215
215
|
|
|
216
|
-
// src/ResolveHelper.ts
|
|
217
|
-
import { duplicateModules } from "@xyo-network/module-model";
|
|
218
|
-
var ResolveHelper = class {
|
|
219
|
-
static {
|
|
220
|
-
__name(this, "ResolveHelper");
|
|
221
|
-
}
|
|
222
|
-
static async resolve(config, idOrFilter = "*", { required = "log", ...options } = {}) {
|
|
223
|
-
const { dead = false, upResolver, downResolver } = config;
|
|
224
|
-
const childOptions = {
|
|
225
|
-
...options,
|
|
226
|
-
required: false
|
|
227
|
-
};
|
|
228
|
-
const direction = options?.direction ?? "all";
|
|
229
|
-
const up = direction === "up" || direction === "all";
|
|
230
|
-
const down = direction === "down" || direction === "all";
|
|
231
|
-
let result;
|
|
232
|
-
if (idOrFilter === "*") {
|
|
233
|
-
if (dead) {
|
|
234
|
-
return [];
|
|
235
|
-
}
|
|
236
|
-
return [
|
|
237
|
-
...down ? await downResolver.resolve("*", childOptions) : [],
|
|
238
|
-
...up ? await upResolver.resolve("*", childOptions) : []
|
|
239
|
-
].filter(duplicateModules);
|
|
240
|
-
} else {
|
|
241
|
-
switch (typeof idOrFilter) {
|
|
242
|
-
case "string": {
|
|
243
|
-
if (dead) {
|
|
244
|
-
return void 0;
|
|
245
|
-
}
|
|
246
|
-
result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
247
|
-
break;
|
|
248
|
-
}
|
|
249
|
-
default: {
|
|
250
|
-
if (dead) {
|
|
251
|
-
return [];
|
|
252
|
-
}
|
|
253
|
-
const filter = idOrFilter;
|
|
254
|
-
result = [
|
|
255
|
-
...down ? await downResolver.resolve(filter, childOptions) : [],
|
|
256
|
-
...up ? await upResolver.resolve(filter, childOptions) : []
|
|
257
|
-
].filter(duplicateModules);
|
|
258
|
-
break;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
this.validateRequiredResolve(required, result, idOrFilter);
|
|
263
|
-
return result;
|
|
264
|
-
}
|
|
265
|
-
static validateRequiredResolve(required, result, idOrFilter, logger) {
|
|
266
|
-
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
267
|
-
switch (required) {
|
|
268
|
-
case "warn": {
|
|
269
|
-
logger?.warn("resolve failed", idOrFilter);
|
|
270
|
-
break;
|
|
271
|
-
}
|
|
272
|
-
case "log": {
|
|
273
|
-
logger?.log("resolve failed", idOrFilter);
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
default: {
|
|
277
|
-
logger?.error("resolve failed", idOrFilter);
|
|
278
|
-
break;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
};
|
|
284
|
-
|
|
285
216
|
// src/AbstractModule.ts
|
|
286
217
|
var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
287
218
|
static {
|
|
@@ -289,7 +220,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
289
220
|
}
|
|
290
221
|
static allowRandomAccount = true;
|
|
291
222
|
static configSchemas;
|
|
292
|
-
static defaultLogger = new ConsoleLogger(LogLevel.
|
|
223
|
+
static defaultLogger = new ConsoleLogger(LogLevel.warn);
|
|
293
224
|
static enableLazyLoad = false;
|
|
294
225
|
static privateConstructorKey = Date.now().toString();
|
|
295
226
|
downResolver = new CompositeModuleResolver();
|
|
@@ -340,6 +271,9 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
340
271
|
get allowAnonymous() {
|
|
341
272
|
return !!this.config.security?.allowAnonymous;
|
|
342
273
|
}
|
|
274
|
+
get archiving() {
|
|
275
|
+
return this.config.archiving;
|
|
276
|
+
}
|
|
343
277
|
get config() {
|
|
344
278
|
return this.params.config;
|
|
345
279
|
}
|
|
@@ -534,31 +468,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
534
468
|
];
|
|
535
469
|
return validators.every((validator) => validator(query, payloads));
|
|
536
470
|
}
|
|
537
|
-
async resolve(idOrFilter = "*", options = {}) {
|
|
538
|
-
switch (typeof idOrFilter) {
|
|
539
|
-
case "string": {
|
|
540
|
-
return await ResolveHelper.resolve({
|
|
541
|
-
dead: this.dead,
|
|
542
|
-
downResolver: this.downResolver,
|
|
543
|
-
upResolver: this.upResolver
|
|
544
|
-
}, idOrFilter, options);
|
|
545
|
-
}
|
|
546
|
-
case "object": {
|
|
547
|
-
return await ResolveHelper.resolve({
|
|
548
|
-
dead: this.dead,
|
|
549
|
-
downResolver: this.downResolver,
|
|
550
|
-
upResolver: this.upResolver
|
|
551
|
-
}, idOrFilter, options);
|
|
552
|
-
}
|
|
553
|
-
default: {
|
|
554
|
-
return await ResolveHelper.resolve({
|
|
555
|
-
dead: this.dead,
|
|
556
|
-
downResolver: this.downResolver,
|
|
557
|
-
upResolver: this.upResolver
|
|
558
|
-
}, idOrFilter, options);
|
|
559
|
-
}
|
|
560
|
-
}
|
|
561
|
-
}
|
|
562
471
|
start(_timeout) {
|
|
563
472
|
this._startPromise = this._startPromise ?? this.startHandler();
|
|
564
473
|
const result = this._startPromise;
|
|
@@ -671,7 +580,7 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
671
580
|
await Promise.all(payloads.map((payload) => PayloadBuilder2.build(payload))),
|
|
672
581
|
await Promise.all((errors ?? [])?.map((error) => PayloadBuilder2.build(error)))
|
|
673
582
|
];
|
|
674
|
-
if (this.
|
|
583
|
+
if (this.archiving) {
|
|
675
584
|
await this.storeToArchivists(result.flat());
|
|
676
585
|
}
|
|
677
586
|
return result;
|
|
@@ -741,11 +650,11 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
741
650
|
}
|
|
742
651
|
}
|
|
743
652
|
}
|
|
744
|
-
async manifestHandler(
|
|
653
|
+
async manifestHandler(maxDepth = 1, _ignoreAddresses = []) {
|
|
745
654
|
const name = this.config.name ?? "Anonymous";
|
|
746
655
|
const children = await this.downResolver.resolve("*", {
|
|
747
656
|
direction: "down",
|
|
748
|
-
maxDepth
|
|
657
|
+
maxDepth
|
|
749
658
|
});
|
|
750
659
|
const childAddressToName = {};
|
|
751
660
|
for (const child of children) {
|
|
@@ -847,13 +756,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
847
756
|
}
|
|
848
757
|
return resultPayloads;
|
|
849
758
|
}
|
|
850
|
-
async resolveArchivingArchivists() {
|
|
851
|
-
const archivists = this.config.archiving?.archivists;
|
|
852
|
-
if (!archivists)
|
|
853
|
-
return [];
|
|
854
|
-
const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
|
|
855
|
-
return compact(resolved.map((mod) => asArchivistInstance(mod)));
|
|
856
|
-
}
|
|
857
759
|
async startHandler() {
|
|
858
760
|
this.validateConfig();
|
|
859
761
|
await this.initializeQueryAccounts();
|
|
@@ -871,12 +773,6 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
871
773
|
this._started = void 0;
|
|
872
774
|
return true;
|
|
873
775
|
}
|
|
874
|
-
async storeToArchivists(payloads) {
|
|
875
|
-
const archivists = await this.resolveArchivingArchivists();
|
|
876
|
-
return (await Promise.all(archivists.map((archivist) => {
|
|
877
|
-
return archivist.insert?.(payloads);
|
|
878
|
-
}))).map(([bw]) => bw);
|
|
879
|
-
}
|
|
880
776
|
subscribeHandler() {
|
|
881
777
|
return;
|
|
882
778
|
}
|
|
@@ -918,6 +814,101 @@ var AbstractModule = class _AbstractModule extends BaseEmitter {
|
|
|
918
814
|
|
|
919
815
|
// src/AbstractModuleInstance.ts
|
|
920
816
|
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
817
|
+
import { compact as compact2 } from "@xylabs/lodash";
|
|
818
|
+
import { asArchivistInstance as asArchivistInstance2 } from "@xyo-network/archivist-model";
|
|
819
|
+
|
|
820
|
+
// src/ResolveHelper.ts
|
|
821
|
+
import { IdLogger as IdLogger2 } from "@xylabs/logger";
|
|
822
|
+
import { toJsonString } from "@xylabs/object";
|
|
823
|
+
import { duplicateModules } from "@xyo-network/module-model";
|
|
824
|
+
var ResolveHelper = class {
|
|
825
|
+
static {
|
|
826
|
+
__name(this, "ResolveHelper");
|
|
827
|
+
}
|
|
828
|
+
static defaultLogger;
|
|
829
|
+
static async resolve(config, idOrFilter = "*", { visibility, maxDepth = 5, required = "log", ...options } = {}) {
|
|
830
|
+
const { module, logger = this.defaultLogger, dead = false, upResolver, downResolver } = config;
|
|
831
|
+
const log = logger ? new IdLogger2(logger, () => `ResolveHelper [${module.id}][${idOrFilter}][${visibility}]`) : void 0;
|
|
832
|
+
const childOptions = {
|
|
833
|
+
...options,
|
|
834
|
+
direction: "down",
|
|
835
|
+
maxDepth: maxDepth - 1,
|
|
836
|
+
required: false,
|
|
837
|
+
visibility
|
|
838
|
+
};
|
|
839
|
+
const direction = options?.direction ?? "all";
|
|
840
|
+
const up = direction === "up" || direction === "all";
|
|
841
|
+
const down = direction === "down" || direction === "all";
|
|
842
|
+
let result;
|
|
843
|
+
log?.debug("start", idOrFilter, maxDepth);
|
|
844
|
+
if (idOrFilter === "*") {
|
|
845
|
+
if (dead) {
|
|
846
|
+
log?.warn("failed [dead]", idOrFilter);
|
|
847
|
+
return [];
|
|
848
|
+
}
|
|
849
|
+
const modules = [
|
|
850
|
+
...down ? await downResolver.resolve("*", childOptions) : [],
|
|
851
|
+
...up ? await upResolver.resolve("*", childOptions) : []
|
|
852
|
+
].filter(duplicateModules).filter((module2) => module2.address !== config.address);
|
|
853
|
+
if (modules.length > 0) {
|
|
854
|
+
log?.log("modules [count]", modules.length);
|
|
855
|
+
log?.debug("modules", toJsonString(modules, 4));
|
|
856
|
+
}
|
|
857
|
+
if (maxDepth === 0) {
|
|
858
|
+
return modules;
|
|
859
|
+
}
|
|
860
|
+
const childModules = (await Promise.all(modules.map(async (module2) => await module2.resolve("*", childOptions)))).flat().filter(duplicateModules);
|
|
861
|
+
return [
|
|
862
|
+
module,
|
|
863
|
+
...modules,
|
|
864
|
+
...childModules
|
|
865
|
+
].filter(duplicateModules);
|
|
866
|
+
} else {
|
|
867
|
+
switch (typeof idOrFilter) {
|
|
868
|
+
case "string": {
|
|
869
|
+
if (dead) {
|
|
870
|
+
return void 0;
|
|
871
|
+
}
|
|
872
|
+
result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
|
|
873
|
+
break;
|
|
874
|
+
}
|
|
875
|
+
default: {
|
|
876
|
+
if (dead) {
|
|
877
|
+
return [];
|
|
878
|
+
}
|
|
879
|
+
const filter = idOrFilter;
|
|
880
|
+
result = [
|
|
881
|
+
...down ? await downResolver.resolve(filter, childOptions) : [],
|
|
882
|
+
...up ? await upResolver.resolve(filter, childOptions) : []
|
|
883
|
+
].filter(duplicateModules);
|
|
884
|
+
break;
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
this.validateRequiredResolve(required, result, idOrFilter, logger);
|
|
889
|
+
return result;
|
|
890
|
+
}
|
|
891
|
+
static validateRequiredResolve(required, result, idOrFilter, logger = this.defaultLogger) {
|
|
892
|
+
const log = logger ? new IdLogger2(logger, () => `validateRequiredResolve [${idOrFilter}][${result}]`) : void 0;
|
|
893
|
+
if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
|
|
894
|
+
switch (required) {
|
|
895
|
+
case "warn": {
|
|
896
|
+
log?.warn("resolve failed", idOrFilter);
|
|
897
|
+
break;
|
|
898
|
+
}
|
|
899
|
+
case "log": {
|
|
900
|
+
log?.log("resolve failed", idOrFilter);
|
|
901
|
+
break;
|
|
902
|
+
}
|
|
903
|
+
default: {
|
|
904
|
+
throw new Error(`resolve failed [${idOrFilter}]`);
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
};
|
|
910
|
+
|
|
911
|
+
// src/AbstractModuleInstance.ts
|
|
921
912
|
var AbstractModuleInstance = class extends AbstractModule {
|
|
922
913
|
static {
|
|
923
914
|
__name(this, "AbstractModuleInstance");
|
|
@@ -937,10 +928,10 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
937
928
|
return await this.describeHandler();
|
|
938
929
|
});
|
|
939
930
|
}
|
|
940
|
-
discover() {
|
|
931
|
+
discover(maxDepth = 5) {
|
|
941
932
|
this._checkDead();
|
|
942
933
|
return this.busy(async () => {
|
|
943
|
-
return await this.discoverHandler();
|
|
934
|
+
return await this.discoverHandler(maxDepth);
|
|
944
935
|
});
|
|
945
936
|
}
|
|
946
937
|
manifest(maxDepth, ignoreAddresses) {
|
|
@@ -955,6 +946,30 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
955
946
|
return await this.moduleAddressHandler();
|
|
956
947
|
});
|
|
957
948
|
}
|
|
949
|
+
async resolve(idOrFilter = "*", options = {}) {
|
|
950
|
+
const config = {
|
|
951
|
+
address: this.address,
|
|
952
|
+
dead: this.dead,
|
|
953
|
+
downResolver: this.downResolver,
|
|
954
|
+
logger: this.logger,
|
|
955
|
+
module: this,
|
|
956
|
+
upResolver: this.upResolver
|
|
957
|
+
};
|
|
958
|
+
if (idOrFilter === "*") {
|
|
959
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
960
|
+
}
|
|
961
|
+
switch (typeof idOrFilter) {
|
|
962
|
+
case "string": {
|
|
963
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
964
|
+
}
|
|
965
|
+
case "object": {
|
|
966
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
967
|
+
}
|
|
968
|
+
default: {
|
|
969
|
+
return await ResolveHelper.resolve(config, idOrFilter, options);
|
|
970
|
+
}
|
|
971
|
+
}
|
|
972
|
+
}
|
|
958
973
|
state() {
|
|
959
974
|
this._checkDead();
|
|
960
975
|
return this.busy(async () => {
|
|
@@ -965,6 +980,19 @@ var AbstractModuleInstance = class extends AbstractModule {
|
|
|
965
980
|
this._checkDead();
|
|
966
981
|
return this.subscribeHandler();
|
|
967
982
|
}
|
|
983
|
+
async resolveArchivingArchivists() {
|
|
984
|
+
const archivists = this.config.archiving?.archivists;
|
|
985
|
+
if (!archivists)
|
|
986
|
+
return [];
|
|
987
|
+
const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
|
|
988
|
+
return compact2(resolved.map((mod) => asArchivistInstance2(mod)));
|
|
989
|
+
}
|
|
990
|
+
async storeToArchivists(payloads) {
|
|
991
|
+
const archivists = await this.resolveArchivingArchivists();
|
|
992
|
+
return (await Promise.all(archivists.map((archivist) => {
|
|
993
|
+
return archivist.insert?.(payloads);
|
|
994
|
+
}))).map(([bw]) => bw);
|
|
995
|
+
}
|
|
968
996
|
};
|
|
969
997
|
export {
|
|
970
998
|
AbstractModule,
|