@xyo-network/module-abstract 2.92.11 → 2.93.0-rc.1

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 +1 -2
  2. package/dist/browser/AbstractModule.d.cts.map +1 -1
  3. package/dist/browser/AbstractModule.d.mts +1 -2
  4. package/dist/browser/AbstractModule.d.mts.map +1 -1
  5. package/dist/browser/AbstractModule.d.ts +1 -2
  6. package/dist/browser/AbstractModule.d.ts.map +1 -1
  7. package/dist/browser/ResolveHelper.d.cts +14 -0
  8. package/dist/browser/ResolveHelper.d.cts.map +1 -0
  9. package/dist/browser/ResolveHelper.d.mts +14 -0
  10. package/dist/browser/ResolveHelper.d.mts.map +1 -0
  11. package/dist/browser/ResolveHelper.d.ts +14 -0
  12. package/dist/browser/ResolveHelper.d.ts.map +1 -0
  13. package/dist/browser/index.cjs +140 -94
  14. package/dist/browser/index.cjs.map +1 -1
  15. package/dist/browser/index.d.cts +1 -0
  16. package/dist/browser/index.d.cts.map +1 -1
  17. package/dist/browser/index.d.mts +1 -0
  18. package/dist/browser/index.d.mts.map +1 -1
  19. package/dist/browser/index.d.ts +1 -0
  20. package/dist/browser/index.d.ts.map +1 -1
  21. package/dist/browser/index.js +108 -62
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/node/AbstractModule.d.cts +1 -2
  24. package/dist/node/AbstractModule.d.cts.map +1 -1
  25. package/dist/node/AbstractModule.d.mts +1 -2
  26. package/dist/node/AbstractModule.d.mts.map +1 -1
  27. package/dist/node/AbstractModule.d.ts +1 -2
  28. package/dist/node/AbstractModule.d.ts.map +1 -1
  29. package/dist/node/ResolveHelper.d.cts +14 -0
  30. package/dist/node/ResolveHelper.d.cts.map +1 -0
  31. package/dist/node/ResolveHelper.d.mts +14 -0
  32. package/dist/node/ResolveHelper.d.mts.map +1 -0
  33. package/dist/node/ResolveHelper.d.ts +14 -0
  34. package/dist/node/ResolveHelper.d.ts.map +1 -0
  35. package/dist/node/index.cjs +140 -94
  36. package/dist/node/index.cjs.map +1 -1
  37. package/dist/node/index.d.cts +1 -0
  38. package/dist/node/index.d.cts.map +1 -1
  39. package/dist/node/index.d.mts +1 -0
  40. package/dist/node/index.d.mts.map +1 -1
  41. package/dist/node/index.d.ts +1 -0
  42. package/dist/node/index.d.ts.map +1 -1
  43. package/dist/node/index.js +107 -62
  44. package/dist/node/index.js.map +1 -1
  45. package/package.json +28 -27
  46. package/src/AbstractModule.ts +27 -66
  47. package/src/ResolveHelper.ts +96 -0
  48. package/src/index.ts +1 -0
@@ -31,6 +31,7 @@ __export(src_exports, {
31
31
  BaseEmitter: () => BaseEmitter,
32
32
  ModuleConfigQueryValidator: () => ModuleConfigQueryValidator,
33
33
  ModuleErrorBuilder: () => ModuleErrorBuilder,
34
+ ResolveHelper: () => ResolveHelper,
34
35
  SupportedQueryValidator: () => SupportedQueryValidator,
35
36
  isQuerySupportedByModule: () => isQuerySupportedByModule
36
37
  });
@@ -51,7 +52,7 @@ var import_boundwitness_builder = require("@xyo-network/boundwitness-builder");
51
52
  var import_boundwitness_wrapper3 = require("@xyo-network/boundwitness-wrapper");
52
53
  var import_config_payload_plugin = require("@xyo-network/config-payload-plugin");
53
54
  var import_manifest_model = require("@xyo-network/manifest-model");
54
- var import_module_model = require("@xyo-network/module-model");
55
+ var import_module_model2 = require("@xyo-network/module-model");
55
56
  var import_module_resolver = require("@xyo-network/module-resolver");
56
57
  var import_payload_builder2 = require("@xyo-network/payload-builder");
57
58
  var import_query_payload_plugin = require("@xyo-network/query-payload-plugin");
@@ -252,27 +253,95 @@ var _SupportedQueryValidator = class _SupportedQueryValidator {
252
253
  __name(_SupportedQueryValidator, "SupportedQueryValidator");
253
254
  var SupportedQueryValidator = _SupportedQueryValidator;
254
255
 
256
+ // src/ResolveHelper.ts
257
+ var import_module_model = require("@xyo-network/module-model");
258
+ var _ResolveHelper = class _ResolveHelper {
259
+ static async resolve(config, idOrFilter = "*", { required = "log", ...options } = {}) {
260
+ const { dead = false, upResolver, downResolver } = config;
261
+ const childOptions = {
262
+ ...options,
263
+ required: false
264
+ };
265
+ const direction = (options == null ? void 0 : options.direction) ?? "all";
266
+ const up = direction === "up" || direction === "all";
267
+ const down = direction === "down" || direction === "all";
268
+ let result;
269
+ if (idOrFilter === "*") {
270
+ if (dead) {
271
+ return [];
272
+ }
273
+ return [
274
+ ...down ? await downResolver.resolve("*", childOptions) : [],
275
+ ...up ? await upResolver.resolve("*", childOptions) : []
276
+ ].filter(import_module_model.duplicateModules);
277
+ } else {
278
+ switch (typeof idOrFilter) {
279
+ case "string": {
280
+ if (dead) {
281
+ return void 0;
282
+ }
283
+ result = (down ? await downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await upResolver.resolve(idOrFilter, childOptions) : void 0);
284
+ break;
285
+ }
286
+ default: {
287
+ if (dead) {
288
+ return [];
289
+ }
290
+ const filter = idOrFilter;
291
+ result = [
292
+ ...down ? await downResolver.resolve(filter, childOptions) : [],
293
+ ...up ? await upResolver.resolve(filter, childOptions) : []
294
+ ].filter(import_module_model.duplicateModules);
295
+ break;
296
+ }
297
+ }
298
+ }
299
+ this.validateRequiredResolve(required, result, idOrFilter);
300
+ return result;
301
+ }
302
+ static validateRequiredResolve(required, result, idOrFilter, logger) {
303
+ if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
304
+ switch (required) {
305
+ case "warn": {
306
+ logger == null ? void 0 : logger.warn("resolve failed", idOrFilter);
307
+ break;
308
+ }
309
+ case "log": {
310
+ logger == null ? void 0 : logger.log("resolve failed", idOrFilter);
311
+ break;
312
+ }
313
+ default: {
314
+ logger == null ? void 0 : logger.error("resolve failed", idOrFilter);
315
+ break;
316
+ }
317
+ }
318
+ }
319
+ }
320
+ };
321
+ __name(_ResolveHelper, "ResolveHelper");
322
+ var ResolveHelper = _ResolveHelper;
323
+
255
324
  // src/AbstractModule.ts
256
325
  var _AbstractModule = class _AbstractModule extends BaseEmitter {
257
326
  downResolver = new import_module_resolver.CompositeModuleResolver();
258
327
  upResolver = new import_module_resolver.CompositeModuleResolver();
259
328
  _account = void 0;
260
329
  _baseModuleQueryAccountPaths = {
261
- [import_module_model.ModuleAddressQuerySchema]: "1",
262
- [import_module_model.ModuleDescribeQuerySchema]: "4",
263
- [import_module_model.ModuleDiscoverQuerySchema]: "2",
264
- [import_module_model.ModuleManifestQuerySchema]: "5",
265
- [import_module_model.ModuleStateQuerySchema]: "6",
266
- [import_module_model.ModuleSubscribeQuerySchema]: "3"
330
+ [import_module_model2.ModuleAddressQuerySchema]: "1",
331
+ [import_module_model2.ModuleDescribeQuerySchema]: "4",
332
+ [import_module_model2.ModuleDiscoverQuerySchema]: "2",
333
+ [import_module_model2.ModuleManifestQuerySchema]: "5",
334
+ [import_module_model2.ModuleStateQuerySchema]: "6",
335
+ [import_module_model2.ModuleSubscribeQuerySchema]: "3"
267
336
  };
268
337
  _lastError;
269
338
  _queryAccounts = {
270
- [import_module_model.ModuleAddressQuerySchema]: void 0,
271
- [import_module_model.ModuleDescribeQuerySchema]: void 0,
272
- [import_module_model.ModuleDiscoverQuerySchema]: void 0,
273
- [import_module_model.ModuleManifestQuerySchema]: void 0,
274
- [import_module_model.ModuleStateQuerySchema]: void 0,
275
- [import_module_model.ModuleSubscribeQuerySchema]: void 0
339
+ [import_module_model2.ModuleAddressQuerySchema]: void 0,
340
+ [import_module_model2.ModuleDescribeQuerySchema]: void 0,
341
+ [import_module_model2.ModuleDiscoverQuerySchema]: void 0,
342
+ [import_module_model2.ModuleManifestQuerySchema]: void 0,
343
+ [import_module_model2.ModuleStateQuerySchema]: void 0,
344
+ [import_module_model2.ModuleSubscribeQuerySchema]: void 0
276
345
  };
277
346
  _startPromise = void 0;
278
347
  _started = void 0;
@@ -317,12 +386,12 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
317
386
  }
318
387
  get queries() {
319
388
  return [
320
- import_module_model.ModuleDiscoverQuerySchema,
321
- import_module_model.ModuleAddressQuerySchema,
322
- import_module_model.ModuleSubscribeQuerySchema,
323
- import_module_model.ModuleDescribeQuerySchema,
324
- import_module_model.ModuleManifestQuerySchema,
325
- import_module_model.ModuleStateQuerySchema
389
+ import_module_model2.ModuleDiscoverQuerySchema,
390
+ import_module_model2.ModuleAddressQuerySchema,
391
+ import_module_model2.ModuleSubscribeQuerySchema,
392
+ import_module_model2.ModuleDescribeQuerySchema,
393
+ import_module_model2.ModuleManifestQuerySchema,
394
+ import_module_model2.ModuleStateQuerySchema
326
395
  ];
327
396
  }
328
397
  get queryAccountPaths() {
@@ -370,7 +439,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
370
439
  if (!this.configSchemas || this.configSchemas.length === 0) {
371
440
  throw new Error(`Missing configSchema [${(_a = params == null ? void 0 : params.config) == null ? void 0 : _a.schema}][${this.name}]`);
372
441
  }
373
- (0, import_assert2.assertEx)(((_b = params == null ? void 0 : params.config) == null ? void 0 : _b.name) === void 0 || (0, import_module_model.isModuleName)(params.config.name), () => {
442
+ (0, import_assert2.assertEx)(((_b = params == null ? void 0 : params.config) == null ? void 0 : _b.name) === void 0 || (0, import_module_model2.isModuleName)(params.config.name), () => {
374
443
  var _a2;
375
444
  return `Invalid module name: ${(_a2 = params == null ? void 0 : params.config) == null ? void 0 : _a2.name}`;
376
445
  });
@@ -403,7 +472,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
403
472
  return await determineAccount(params, this.allowRandomAccount);
404
473
  }
405
474
  static factory(params) {
406
- return import_module_model.ModuleFactory.withParams(this, params);
475
+ return import_module_model2.ModuleFactory.withParams(this, params);
407
476
  }
408
477
  _getRootFunction(funcName) {
409
478
  let anyThis = this;
@@ -502,47 +571,30 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
502
571
  ];
503
572
  return validators.every((validator) => validator(query, payloads));
504
573
  }
505
- async resolve(idOrFilter = "*", { required = "log", ...options } = {}) {
506
- const childOptions = {
507
- ...options,
508
- required: false
509
- };
510
- const direction = (options == null ? void 0 : options.direction) ?? "all";
511
- const up = direction === "up" || direction === "all";
512
- const down = direction === "down" || direction === "all";
513
- let result;
514
- if (idOrFilter === "*") {
515
- if (this.dead) {
516
- return [];
574
+ async resolve(idOrFilter = "*", options = {}) {
575
+ switch (typeof idOrFilter) {
576
+ case "string": {
577
+ return await ResolveHelper.resolve({
578
+ dead: this.dead,
579
+ downResolver: this.downResolver,
580
+ upResolver: this.upResolver
581
+ }, idOrFilter, options);
517
582
  }
518
- return [
519
- ...down ? await this.downResolver.resolve("*", childOptions) : [],
520
- ...up ? await this.upResolver.resolve("*", childOptions) : []
521
- ].filter(import_module_model.duplicateModules);
522
- } else {
523
- switch (typeof idOrFilter) {
524
- case "string": {
525
- if (this.dead) {
526
- return void 0;
527
- }
528
- result = (down ? await this.downResolver.resolve(idOrFilter, childOptions) : void 0) ?? (up ? await this.upResolver.resolve(idOrFilter, childOptions) : void 0);
529
- break;
530
- }
531
- default: {
532
- if (this.dead) {
533
- return [];
534
- }
535
- const filter = idOrFilter;
536
- result = [
537
- ...down ? await this.downResolver.resolve(filter, childOptions) : [],
538
- ...up ? await this.upResolver.resolve(filter, childOptions) : []
539
- ].filter(import_module_model.duplicateModules);
540
- break;
541
- }
583
+ case "object": {
584
+ return await ResolveHelper.resolve({
585
+ dead: this.dead,
586
+ downResolver: this.downResolver,
587
+ upResolver: this.upResolver
588
+ }, idOrFilter, options);
589
+ }
590
+ default: {
591
+ return await ResolveHelper.resolve({
592
+ dead: this.dead,
593
+ downResolver: this.downResolver,
594
+ upResolver: this.upResolver
595
+ }, idOrFilter, options);
542
596
  }
543
597
  }
544
- this.validateRequiredResolve(required, result, idOrFilter);
545
- return result;
546
598
  }
547
599
  start(_timeout) {
548
600
  this._startPromise = this._startPromise ?? this.startHandler();
@@ -609,7 +661,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
609
661
  }
610
662
  _checkDead() {
611
663
  if (this.dead) {
612
- throw new import_module_model.DeadModuleError(this.id, this._lastError);
664
+ throw new import_module_model2.DeadModuleError(this.id, this._lastError);
613
665
  }
614
666
  }
615
667
  _noOverride(functionName) {
@@ -670,7 +722,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
670
722
  const description = {
671
723
  address: this.address,
672
724
  queries: this.queries,
673
- schema: import_module_model.ModuleDescriptionSchema
725
+ schema: import_module_model2.ModuleDescriptionSchema
674
726
  };
675
727
  if ((_a = this.config) == null ? void 0 : _a.name) {
676
728
  description.name = this.config.name;
@@ -684,7 +736,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
684
736
  }
685
737
  async discoverHandler(_maxDepth) {
686
738
  var _a;
687
- const config = this.config;
739
+ const config = await import_payload_builder2.PayloadBuilder.build(this.config);
688
740
  const address = await new import_payload_builder2.PayloadBuilder({
689
741
  schema: import_address_payload_plugin.AddressSchema
690
742
  }).fields({
@@ -698,10 +750,10 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
698
750
  query
699
751
  }).build();
700
752
  }));
701
- const configSchema = {
753
+ const configSchema = await import_payload_builder2.PayloadBuilder.build({
702
754
  config: config.schema,
703
755
  schema: import_config_payload_plugin.ConfigSchema
704
- };
756
+ });
705
757
  return (0, import_lodash.compact)([
706
758
  config,
707
759
  configSchema,
@@ -736,8 +788,18 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
736
788
  }
737
789
  }
738
790
  }
739
- manifestHandler(_depth, _ignoreAddresses) {
791
+ async manifestHandler(_depth, _ignoreAddresses) {
740
792
  const name = this.config.name ?? "Anonymous";
793
+ const children = await this.downResolver.resolve("*", {
794
+ direction: "down",
795
+ maxDepth: 1
796
+ });
797
+ const childAddressToName = {};
798
+ for (const child of children) {
799
+ if (child.address !== this.address) {
800
+ childAddressToName[child.address] = child.config.name ?? null;
801
+ }
802
+ }
741
803
  return {
742
804
  config: {
743
805
  name,
@@ -745,7 +807,8 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
745
807
  },
746
808
  schema: import_manifest_model.ModuleManifestPayloadSchema,
747
809
  status: {
748
- address: this.address
810
+ address: this.address,
811
+ children: childAddressToName
749
812
  }
750
813
  };
751
814
  }
@@ -764,7 +827,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
764
827
  {
765
828
  address: address2,
766
829
  previousHash: previousHash2,
767
- schema: import_module_model.AddressPreviousHashSchema
830
+ schema: import_module_model2.AddressPreviousHashSchema
768
831
  }
769
832
  ];
770
833
  });
@@ -782,10 +845,10 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
782
845
  const moduleAccountPreviousHash = previousHash ? {
783
846
  address,
784
847
  previousHash,
785
- schema: import_module_model.AddressPreviousHashSchema
848
+ schema: import_module_model2.AddressPreviousHashSchema
786
849
  } : {
787
850
  address,
788
- schema: import_module_model.AddressPreviousHashSchema
851
+ schema: import_module_model2.AddressPreviousHashSchema
789
852
  };
790
853
  return [
791
854
  moduleAccount,
@@ -800,28 +863,28 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
800
863
  (0, import_assert2.assertEx)(await this.queryable(query, payloads, queryConfig));
801
864
  const resultPayloads = [];
802
865
  switch (queryPayload.schema) {
803
- case import_module_model.ModuleManifestQuerySchema: {
866
+ case import_module_model2.ModuleManifestQuerySchema: {
804
867
  resultPayloads.push(await this.manifestHandler(queryPayload.maxDepth));
805
868
  break;
806
869
  }
807
- case import_module_model.ModuleDiscoverQuerySchema: {
870
+ case import_module_model2.ModuleDiscoverQuerySchema: {
808
871
  const { maxDepth } = queryPayload;
809
872
  resultPayloads.push(...await this.discoverHandler(maxDepth));
810
873
  break;
811
874
  }
812
- case import_module_model.ModuleDescribeQuerySchema: {
875
+ case import_module_model2.ModuleDescribeQuerySchema: {
813
876
  resultPayloads.push(await this.describeHandler());
814
877
  break;
815
878
  }
816
- case import_module_model.ModuleAddressQuerySchema: {
879
+ case import_module_model2.ModuleAddressQuerySchema: {
817
880
  resultPayloads.push(...await this.moduleAddressHandler());
818
881
  break;
819
882
  }
820
- case import_module_model.ModuleStateQuerySchema: {
883
+ case import_module_model2.ModuleStateQuerySchema: {
821
884
  resultPayloads.push(...await this.stateHandler());
822
885
  break;
823
886
  }
824
- case import_module_model.ModuleSubscribeQuerySchema: {
887
+ case import_module_model2.ModuleSubscribeQuerySchema: {
825
888
  this.subscribeHandler();
826
889
  break;
827
890
  }
@@ -886,7 +949,7 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
886
949
  }, true) && valid
887
950
  );
888
951
  }
889
- if (!(0, import_module_model.serializableField)(value)) {
952
+ if (!(0, import_module_model2.serializableField)(value)) {
890
953
  (_b = this.logger) == null ? void 0 : _b.warn(`Fields that are not serializable to JSON are not allowed in config [${parents == null ? void 0 : parents.join(".")}.${key}]`);
891
954
  return false;
892
955
  }
@@ -901,24 +964,6 @@ var _AbstractModule = class _AbstractModule extends BaseEmitter {
901
964
  }
902
965
  }, true);
903
966
  }
904
- validateRequiredResolve(required, result, idOrFilter) {
905
- if (required && (result === void 0 || Array.isArray(result) && result.length > 0)) {
906
- switch (required) {
907
- case "warn": {
908
- this.logger.warn("resolve failed", idOrFilter);
909
- break;
910
- }
911
- case "log": {
912
- this.logger.log("resolve failed", idOrFilter);
913
- break;
914
- }
915
- default: {
916
- this.logger.error("resolve failed", idOrFilter);
917
- break;
918
- }
919
- }
920
- }
921
- }
922
967
  };
923
968
  __name(_AbstractModule, "AbstractModule");
924
969
  __publicField(_AbstractModule, "allowRandomAccount", true);
@@ -984,6 +1029,7 @@ var AbstractModuleInstance = _AbstractModuleInstance;
984
1029
  BaseEmitter,
985
1030
  ModuleConfigQueryValidator,
986
1031
  ModuleErrorBuilder,
1032
+ ResolveHelper,
987
1033
  SupportedQueryValidator,
988
1034
  isQuerySupportedByModule
989
1035
  });