@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.
Files changed (61) hide show
  1. package/dist/browser/AbstractModule.d.cts +4 -12
  2. package/dist/browser/AbstractModule.d.cts.map +1 -1
  3. package/dist/browser/AbstractModule.d.mts +4 -12
  4. package/dist/browser/AbstractModule.d.mts.map +1 -1
  5. package/dist/browser/AbstractModule.d.ts +4 -12
  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 +19 -0
  14. package/dist/browser/ResolveHelper.d.cts.map +1 -0
  15. package/dist/browser/ResolveHelper.d.mts +19 -0
  16. package/dist/browser/ResolveHelper.d.mts.map +1 -0
  17. package/dist/browser/ResolveHelper.d.ts +19 -0
  18. package/dist/browser/ResolveHelper.d.ts.map +1 -0
  19. package/dist/browser/index.cjs +144 -70
  20. package/dist/browser/index.cjs.map +1 -1
  21. package/dist/browser/index.d.cts +1 -0
  22. package/dist/browser/index.d.cts.map +1 -1
  23. package/dist/browser/index.d.mts +1 -0
  24. package/dist/browser/index.d.mts.map +1 -1
  25. package/dist/browser/index.d.ts +1 -0
  26. package/dist/browser/index.d.ts.map +1 -1
  27. package/dist/browser/index.js +145 -71
  28. package/dist/browser/index.js.map +1 -1
  29. package/dist/node/AbstractModule.d.cts +4 -12
  30. package/dist/node/AbstractModule.d.cts.map +1 -1
  31. package/dist/node/AbstractModule.d.mts +4 -12
  32. package/dist/node/AbstractModule.d.mts.map +1 -1
  33. package/dist/node/AbstractModule.d.ts +4 -12
  34. package/dist/node/AbstractModule.d.ts.map +1 -1
  35. package/dist/node/AbstractModuleInstance.d.cts +13 -3
  36. package/dist/node/AbstractModuleInstance.d.cts.map +1 -1
  37. package/dist/node/AbstractModuleInstance.d.mts +13 -3
  38. package/dist/node/AbstractModuleInstance.d.mts.map +1 -1
  39. package/dist/node/AbstractModuleInstance.d.ts +13 -3
  40. package/dist/node/AbstractModuleInstance.d.ts.map +1 -1
  41. package/dist/node/ResolveHelper.d.cts +19 -0
  42. package/dist/node/ResolveHelper.d.cts.map +1 -0
  43. package/dist/node/ResolveHelper.d.mts +19 -0
  44. package/dist/node/ResolveHelper.d.mts.map +1 -0
  45. package/dist/node/ResolveHelper.d.ts +19 -0
  46. package/dist/node/ResolveHelper.d.ts.map +1 -0
  47. package/dist/node/index.cjs +152 -78
  48. package/dist/node/index.cjs.map +1 -1
  49. package/dist/node/index.d.cts +1 -0
  50. package/dist/node/index.d.cts.map +1 -1
  51. package/dist/node/index.d.mts +1 -0
  52. package/dist/node/index.d.mts.map +1 -1
  53. package/dist/node/index.d.ts +1 -0
  54. package/dist/node/index.d.ts.map +1 -1
  55. package/dist/node/index.js +152 -79
  56. package/dist/node/index.js.map +1 -1
  57. package/package.json +28 -27
  58. package/src/AbstractModule.ts +25 -103
  59. package/src/AbstractModuleInstance.ts +69 -4
  60. package/src/ResolveHelper.ts +121 -0
  61. package/src/index.ts +1 -0
@@ -21,7 +21,7 @@ import { BoundWitnessBuilder, QueryBoundWitnessBuilder } from "@xyo-network/boun
21
21
  import { QueryBoundWitnessWrapper as QueryBoundWitnessWrapper3 } from "@xyo-network/boundwitness-wrapper";
22
22
  import { ConfigSchema } from "@xyo-network/config-payload-plugin";
23
23
  import { ModuleManifestPayloadSchema } from "@xyo-network/manifest-model";
24
- import { AddressPreviousHashSchema, DeadModuleError, duplicateModules, isModuleName, ModuleAddressQuerySchema, ModuleDescribeQuerySchema, ModuleDescriptionSchema, ModuleDiscoverQuerySchema, ModuleFactory, ModuleManifestQuerySchema, ModuleStateQuerySchema, ModuleSubscribeQuerySchema, serializableField } from "@xyo-network/module-model";
24
+ import { AddressPreviousHashSchema, DeadModuleError, isModuleName, ModuleAddressQuerySchema, ModuleDescribeQuerySchema, ModuleDescriptionSchema, ModuleDiscoverQuerySchema, ModuleFactory, ModuleManifestQuerySchema, ModuleStateQuerySchema, ModuleSubscribeQuerySchema, serializableField } from "@xyo-network/module-model";
25
25
  import { CompositeModuleResolver } from "@xyo-network/module-resolver";
26
26
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
27
27
  import { QuerySchema } from "@xyo-network/query-payload-plugin";
@@ -273,6 +273,9 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
273
273
  var _a;
274
274
  return !!((_a = this.config.security) == null ? void 0 : _a.allowAnonymous);
275
275
  }
276
+ get archiving() {
277
+ return this.config.archiving;
278
+ }
276
279
  get config() {
277
280
  return this.params.config;
278
281
  }
@@ -472,48 +475,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
472
475
  ];
473
476
  return validators.every((validator) => validator(query, payloads));
474
477
  }
475
- async resolve(idOrFilter = "*", { required = "log", ...options } = {}) {
476
- const childOptions = {
477
- ...options,
478
- required: false
479
- };
480
- const direction = (options == null ? void 0 : options.direction) ?? "all";
481
- const up = direction === "up" || direction === "all";
482
- const down = direction === "down" || direction === "all";
483
- let result;
484
- if (idOrFilter === "*") {
485
- if (this.dead) {
486
- return [];
487
- }
488
- return [
489
- ...down ? await this.downResolver.resolve("*", childOptions) : [],
490
- ...up ? await this.upResolver.resolve("*", childOptions) : []
491
- ].filter(duplicateModules);
492
- } else {
493
- switch (typeof idOrFilter) {
494
- case "string": {
495
- if (this.dead) {
496
- return void 0;
497
- }
498
- result = (down ? await this.downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await this.upResolver.resolve(idOrFilter, childOptions) : void 0);
499
- break;
500
- }
501
- default: {
502
- if (this.dead) {
503
- return [];
504
- }
505
- const filter = idOrFilter;
506
- result = [
507
- ...down ? await this.downResolver.resolve(filter, childOptions) : [],
508
- ...up ? await this.upResolver.resolve(filter, childOptions) : []
509
- ].filter(duplicateModules);
510
- break;
511
- }
512
- }
513
- }
514
- this.validateRequiredResolve(required, result, idOrFilter);
515
- return result;
516
- }
517
478
  start(_timeout) {
518
479
  this._startPromise = this._startPromise ?? this.startHandler();
519
480
  const result = this._startPromise;
@@ -630,7 +591,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
630
591
  await Promise.all(payloads.map((payload) => PayloadBuilder2.build(payload))),
631
592
  await Promise.all((_a = errors ?? []) == null ? void 0 : _a.map((error) => PayloadBuilder2.build(error)))
632
593
  ];
633
- if (this.config.archiving) {
594
+ if (this.archiving) {
634
595
  await this.storeToArchivists(result.flat());
635
596
  }
636
597
  return result;
@@ -654,7 +615,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
654
615
  }
655
616
  async discoverHandler(_maxDepth) {
656
617
  var _a;
657
- const config = this.config;
618
+ const config = await PayloadBuilder2.build(this.config);
658
619
  const address = await new PayloadBuilder2({
659
620
  schema: AddressSchema
660
621
  }).fields({
@@ -668,10 +629,10 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
668
629
  query
669
630
  }).build();
670
631
  }));
671
- const configSchema = {
632
+ const configSchema = await PayloadBuilder2.build({
672
633
  config: config.schema,
673
634
  schema: ConfigSchema
674
- };
635
+ });
675
636
  return compact([
676
637
  config,
677
638
  configSchema,
@@ -706,8 +667,18 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
706
667
  }
707
668
  }
708
669
  }
709
- manifestHandler(_depth, _ignoreAddresses) {
670
+ async manifestHandler(maxDepth = 1, _ignoreAddresses = []) {
710
671
  const name = this.config.name ?? "Anonymous";
672
+ const children = await this.downResolver.resolve("*", {
673
+ direction: "down",
674
+ maxDepth
675
+ });
676
+ const childAddressToName = {};
677
+ for (const child of children) {
678
+ if (child.address !== this.address) {
679
+ childAddressToName[child.address] = child.config.name ?? null;
680
+ }
681
+ }
711
682
  return {
712
683
  config: {
713
684
  name,
@@ -715,7 +686,8 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
715
686
  },
716
687
  schema: ModuleManifestPayloadSchema,
717
688
  status: {
718
- address: this.address
689
+ address: this.address,
690
+ children: childAddressToName
719
691
  }
720
692
  };
721
693
  }
@@ -801,14 +773,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
801
773
  }
802
774
  return resultPayloads;
803
775
  }
804
- async resolveArchivingArchivists() {
805
- var _a;
806
- const archivists = (_a = this.config.archiving) == null ? void 0 : _a.archivists;
807
- if (!archivists)
808
- return [];
809
- const resolved = await Promise.all(archivists.map((archivist) => this.resolve(archivist)));
810
- return compact(resolved.map((mod) => asArchivistInstance(mod)));
811
- }
812
776
  async startHandler() {
813
777
  this.validateConfig();
814
778
  await this.initializeQueryAccounts();
@@ -826,13 +790,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
826
790
  this._started = void 0;
827
791
  return true;
828
792
  }
829
- async storeToArchivists(payloads) {
830
- const archivists = await this.resolveArchivingArchivists();
831
- return (await Promise.all(archivists.map((archivist) => {
832
- var _a;
833
- return (_a = archivist.insert) == null ? void 0 : _a.call(archivist, payloads);
834
- }))).map(([bw]) => bw);
835
- }
836
793
  subscribeHandler() {
837
794
  return;
838
795
  }
@@ -871,35 +828,111 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
871
828
  }
872
829
  }, true);
873
830
  }
874
- validateRequiredResolve(required, result, idOrFilter) {
831
+ };
832
+ __name(_AbstractModule, "AbstractModule");
833
+ __publicField(_AbstractModule, "allowRandomAccount", true);
834
+ __publicField(_AbstractModule, "configSchemas");
835
+ __publicField(_AbstractModule, "defaultLogger", new ConsoleLogger(LogLevel.warn));
836
+ __publicField(_AbstractModule, "enableLazyLoad", false);
837
+ __publicField(_AbstractModule, "privateConstructorKey", Date.now().toString());
838
+ var AbstractModule = _AbstractModule;
839
+
840
+ // src/AbstractModuleInstance.ts
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;
875
914
  if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
876
915
  switch (required) {
877
916
  case "warn": {
878
- this.logger.warn("resolve failed", idOrFilter);
917
+ log == null ? void 0 : log.warn("resolve failed", idOrFilter);
879
918
  break;
880
919
  }
881
920
  case "log": {
882
- this.logger.log("resolve failed", idOrFilter);
921
+ log == null ? void 0 : log.log("resolve failed", idOrFilter);
883
922
  break;
884
923
  }
885
924
  default: {
886
- this.logger.error("resolve failed", idOrFilter);
887
- break;
925
+ throw new Error(`resolve failed [${idOrFilter}]`);
888
926
  }
889
927
  }
890
928
  }
891
929
  }
892
930
  };
893
- __name(_AbstractModule, "AbstractModule");
894
- __publicField(_AbstractModule, "allowRandomAccount", true);
895
- __publicField(_AbstractModule, "configSchemas");
896
- __publicField(_AbstractModule, "defaultLogger", new ConsoleLogger(LogLevel.log));
897
- __publicField(_AbstractModule, "enableLazyLoad", false);
898
- __publicField(_AbstractModule, "privateConstructorKey", Date.now().toString());
899
- var AbstractModule = _AbstractModule;
931
+ __name(_ResolveHelper, "ResolveHelper");
932
+ __publicField(_ResolveHelper, "defaultLogger");
933
+ var ResolveHelper = _ResolveHelper;
900
934
 
901
935
  // src/AbstractModuleInstance.ts
902
- import { assertEx as assertEx3 } from "@xylabs/assert";
903
936
  var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModule {
904
937
  constructor(privateConstructorKey, params, account) {
905
938
  assertEx3(AbstractModule.privateConstructorKey === privateConstructorKey, () => "Use create function instead of constructor");
@@ -916,10 +949,10 @@ var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModu
916
949
  return await this.describeHandler();
917
950
  });
918
951
  }
919
- discover() {
952
+ discover(maxDepth = 5) {
920
953
  this._checkDead();
921
954
  return this.busy(async () => {
922
- return await this.discoverHandler();
955
+ return await this.discoverHandler(maxDepth);
923
956
  });
924
957
  }
925
958
  manifest(maxDepth, ignoreAddresses) {
@@ -934,6 +967,30 @@ var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModu
934
967
  return await this.moduleAddressHandler();
935
968
  });
936
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
+ }
937
994
  state() {
938
995
  this._checkDead();
939
996
  return this.busy(async () => {
@@ -944,6 +1001,21 @@ var _AbstractModuleInstance = class _AbstractModuleInstance extends AbstractModu
944
1001
  this._checkDead();
945
1002
  return this.subscribeHandler();
946
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
+ }
947
1019
  };
948
1020
  __name(_AbstractModuleInstance, "AbstractModuleInstance");
949
1021
  var AbstractModuleInstance = _AbstractModuleInstance;
@@ -953,6 +1025,7 @@ export {
953
1025
  BaseEmitter,
954
1026
  ModuleConfigQueryValidator,
955
1027
  ModuleErrorBuilder,
1028
+ ResolveHelper,
956
1029
  SupportedQueryValidator,
957
1030
  isQuerySupportedByModule
958
1031
  };