@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.
Files changed (48) hide show
  1. package/dist/browser/AbstractModule.d.cts +4 -11
  2. package/dist/browser/AbstractModule.d.cts.map +1 -1
  3. package/dist/browser/AbstractModule.d.mts +4 -11
  4. package/dist/browser/AbstractModule.d.mts.map +1 -1
  5. package/dist/browser/AbstractModule.d.ts +4 -11
  6. package/dist/browser/AbstractModule.d.ts.map +1 -1
  7. package/dist/browser/AbstractModuleInstance.d.cts +13 -3
  8. package/dist/browser/AbstractModuleInstance.d.cts.map +1 -1
  9. package/dist/browser/AbstractModuleInstance.d.mts +13 -3
  10. package/dist/browser/AbstractModuleInstance.d.mts.map +1 -1
  11. package/dist/browser/AbstractModuleInstance.d.ts +13 -3
  12. package/dist/browser/AbstractModuleInstance.d.ts.map +1 -1
  13. package/dist/browser/ResolveHelper.d.cts +6 -1
  14. package/dist/browser/ResolveHelper.d.cts.map +1 -1
  15. package/dist/browser/ResolveHelper.d.mts +6 -1
  16. package/dist/browser/ResolveHelper.d.mts.map +1 -1
  17. package/dist/browser/ResolveHelper.d.ts +6 -1
  18. package/dist/browser/ResolveHelper.d.ts.map +1 -1
  19. package/dist/browser/index.cjs +174 -146
  20. package/dist/browser/index.cjs.map +1 -1
  21. package/dist/browser/index.js +141 -113
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/node/AbstractModule.d.cts +4 -11
  24. package/dist/node/AbstractModule.d.cts.map +1 -1
  25. package/dist/node/AbstractModule.d.mts +4 -11
  26. package/dist/node/AbstractModule.d.mts.map +1 -1
  27. package/dist/node/AbstractModule.d.ts +4 -11
  28. package/dist/node/AbstractModule.d.ts.map +1 -1
  29. package/dist/node/AbstractModuleInstance.d.cts +13 -3
  30. package/dist/node/AbstractModuleInstance.d.cts.map +1 -1
  31. package/dist/node/AbstractModuleInstance.d.mts +13 -3
  32. package/dist/node/AbstractModuleInstance.d.mts.map +1 -1
  33. package/dist/node/AbstractModuleInstance.d.ts +13 -3
  34. package/dist/node/AbstractModuleInstance.d.ts.map +1 -1
  35. package/dist/node/ResolveHelper.d.cts +6 -1
  36. package/dist/node/ResolveHelper.d.cts.map +1 -1
  37. package/dist/node/ResolveHelper.d.mts +6 -1
  38. package/dist/node/ResolveHelper.d.mts.map +1 -1
  39. package/dist/node/ResolveHelper.d.ts +6 -1
  40. package/dist/node/ResolveHelper.d.ts.map +1 -1
  41. package/dist/node/index.cjs +175 -147
  42. package/dist/node/index.cjs.map +1 -1
  43. package/dist/node/index.js +142 -114
  44. package/dist/node/index.js.map +1 -1
  45. package/package.json +17 -17
  46. package/src/AbstractModule.ts +11 -50
  47. package/src/AbstractModuleInstance.ts +69 -4
  48. package/src/ResolveHelper.ts +37 -12
@@ -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.log);
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.config.archiving) {
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(_depth, _ignoreAddresses) {
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: 1
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,