@xyo-network/module-abstract 2.57.4 → 2.57.6

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 (62) hide show
  1. package/dist/cjs/AbstractModule.js +57 -37
  2. package/dist/cjs/AbstractModule.js.map +1 -1
  3. package/dist/cjs/ModuleFactory.js +6 -1
  4. package/dist/cjs/ModuleFactory.js.map +1 -1
  5. package/dist/cjs/Resolver/CompositeModuleResolver.js +11 -0
  6. package/dist/cjs/Resolver/CompositeModuleResolver.js.map +1 -1
  7. package/dist/cjs/Resolver/SimpleModuleResolver.js +9 -0
  8. package/dist/cjs/Resolver/SimpleModuleResolver.js.map +1 -1
  9. package/dist/docs.json +60357 -27253
  10. package/dist/esm/AbstractModule.js +46 -33
  11. package/dist/esm/AbstractModule.js.map +1 -1
  12. package/dist/esm/ModuleFactory.js +4 -1
  13. package/dist/esm/ModuleFactory.js.map +1 -1
  14. package/dist/esm/Resolver/CompositeModuleResolver.js +9 -0
  15. package/dist/esm/Resolver/CompositeModuleResolver.js.map +1 -1
  16. package/dist/esm/Resolver/SimpleModuleResolver.js +9 -0
  17. package/dist/esm/Resolver/SimpleModuleResolver.js.map +1 -1
  18. package/dist/types/AbstractModule.d.ts +106 -4
  19. package/dist/types/AbstractModule.d.ts.map +1 -1
  20. package/dist/types/ModuleFactory.d.ts.map +1 -1
  21. package/dist/types/Resolver/CompositeModuleResolver.d.ts +1 -0
  22. package/dist/types/Resolver/CompositeModuleResolver.d.ts.map +1 -1
  23. package/dist/types/Resolver/SimpleModuleResolver.d.ts +1 -0
  24. package/dist/types/Resolver/SimpleModuleResolver.d.ts.map +1 -1
  25. package/dist/types/lib/duplicateModules.d.ts +18 -16
  26. package/dist/types/lib/duplicateModules.d.ts.map +1 -1
  27. package/docs/assets/highlight.css +22 -0
  28. package/docs/assets/main.js +58 -0
  29. package/docs/assets/search.js +1 -0
  30. package/docs/assets/style.css +1367 -0
  31. package/docs/classes/AbstractModule.html +940 -0
  32. package/docs/classes/BaseEmitter.html +378 -0
  33. package/docs/classes/CompositeModuleResolver.html +319 -0
  34. package/docs/classes/ModuleConfigQueryValidator.html +198 -0
  35. package/docs/classes/ModuleErrorBuilder.html +212 -0
  36. package/docs/classes/ModuleFactory.html +221 -0
  37. package/docs/classes/QueryBoundWitnessBuilder.html +348 -0
  38. package/docs/classes/QueryBoundWitnessValidator.html +371 -0
  39. package/docs/classes/QueryBoundWitnessWrapper.html +690 -0
  40. package/docs/classes/SimpleModuleResolver.html +347 -0
  41. package/docs/classes/SupportedQueryValidator.html +121 -0
  42. package/docs/functions/duplicateModules.html +89 -0
  43. package/docs/functions/isQuerySupportedByModule.html +83 -0
  44. package/docs/functions/mixinResolverEventEmitter.html +79 -0
  45. package/docs/functions/serializable.html +76 -0
  46. package/docs/functions/serializableField.html +74 -0
  47. package/docs/index.html +76 -0
  48. package/docs/interfaces/CreatableModuleDictionary.html +71 -0
  49. package/docs/interfaces/ModuleResolvedEventArgs.html +96 -0
  50. package/docs/interfaces/QueryValidator.html +99 -0
  51. package/docs/interfaces/ResolverEventEmitter.html +110 -0
  52. package/docs/modules.html +102 -0
  53. package/docs/types/ModuleError.html +65 -0
  54. package/docs/types/ModuleErrorSchema.html +66 -0
  55. package/docs/types/Queryable.html +85 -0
  56. package/docs/types/SortedPipedAddressesString.html +65 -0
  57. package/docs/variables/ModuleErrorSchema-1.html +66 -0
  58. package/package.json +24 -23
  59. package/src/AbstractModule.ts +55 -39
  60. package/src/ModuleFactory.ts +4 -1
  61. package/src/Resolver/CompositeModuleResolver.ts +9 -0
  62. package/src/Resolver/SimpleModuleResolver.ts +9 -0
@@ -1,5 +1,6 @@
1
1
  import { Logger } from '@xyo-network/core'
2
2
  import { CreatableModule, CreatableModuleFactory, Module } from '@xyo-network/module-model'
3
+ import merge from 'lodash/merge'
3
4
 
4
5
  export interface CreatableModuleDictionary {
5
6
  [key: string]: CreatableModuleFactory
@@ -26,7 +27,9 @@ export class ModuleFactory<TModule extends Module> implements CreatableModuleFac
26
27
 
27
28
  create<T extends Module>(this: CreatableModuleFactory<T>, params?: TModule['params'] | undefined): Promise<T> {
28
29
  const factory = this as ModuleFactory<T>
29
- return factory.creatableModule.create<T>(factory.defaultParams ? { ...factory.defaultParams, ...params } : params)
30
+ const schema: CreatableModuleFactory<TModule>['configSchema'] = factory.creatableModule.configSchema
31
+ const mergedParams: TModule['params'] = merge(factory.defaultParams ?? {}, params, { config: { schema } })
32
+ return factory.creatableModule.create<T>(mergedParams)
30
33
  }
31
34
 
32
35
  factory<T extends Module>(this: CreatableModule<T>, _params?: T['params'] | undefined): CreatableModuleFactory<T> {
@@ -61,6 +61,15 @@ export class CompositeModuleResolver extends Base implements ModuleRepository, M
61
61
  return result as T[]
62
62
  }
63
63
 
64
+ async resolveOne<T extends Module = Module>(filter: string): Promise<T | undefined> {
65
+ for (let i = 0; i < this.resolvers.length; i++) {
66
+ const resolver = this.resolvers[i]
67
+ const result = await resolver.resolveOne<T>(filter)
68
+ if (result) return result
69
+ }
70
+ return undefined
71
+ }
72
+
64
73
  private addSingleModule(module?: Module) {
65
74
  if (module) {
66
75
  this.localResolver.add(module)
@@ -62,6 +62,15 @@ export class SimpleModuleResolver implements ModuleRepository {
62
62
  return filteredByQuery
63
63
  }
64
64
 
65
+ resolveOne<T extends Module = Module>(filter: string): Promisable<T | undefined> {
66
+ const allModules = Object.values(this.modules) as T[]
67
+ for (const resolutionMethod of [this.resolveByAddress, this.resolveByName]) {
68
+ const filtered: T[] = resolutionMethod(allModules, [filter])
69
+ if (filtered.length === 1) return filtered[0]
70
+ }
71
+ return undefined
72
+ }
73
+
65
74
  private addSingleModule(module?: Module) {
66
75
  if (module) {
67
76
  this.modules[module.address] = module