@xyo-network/module-model 2.97.2 → 2.98.0

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/CreatableModule/CreatableModuleRegistry.d.cts +5 -2
  2. package/dist/browser/CreatableModule/CreatableModuleRegistry.d.cts.map +1 -1
  3. package/dist/browser/CreatableModule/CreatableModuleRegistry.d.mts +5 -2
  4. package/dist/browser/CreatableModule/CreatableModuleRegistry.d.mts.map +1 -1
  5. package/dist/browser/CreatableModule/CreatableModuleRegistry.d.ts +5 -2
  6. package/dist/browser/CreatableModule/CreatableModuleRegistry.d.ts.map +1 -1
  7. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.cts +6 -0
  8. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.cts.map +1 -1
  9. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.mts +6 -0
  10. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.mts.map +1 -1
  11. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.ts +6 -0
  12. package/dist/browser/CreatableModule/ModuleFactoryLocator.d.ts.map +1 -1
  13. package/dist/browser/CreatableModule/index.d.cts +0 -1
  14. package/dist/browser/CreatableModule/index.d.cts.map +1 -1
  15. package/dist/browser/CreatableModule/index.d.mts +0 -1
  16. package/dist/browser/CreatableModule/index.d.mts.map +1 -1
  17. package/dist/browser/CreatableModule/index.d.ts +0 -1
  18. package/dist/browser/CreatableModule/index.d.ts.map +1 -1
  19. package/dist/browser/index.cjs +56 -20
  20. package/dist/browser/index.cjs.map +1 -1
  21. package/dist/browser/index.js +56 -20
  22. package/dist/browser/index.js.map +1 -1
  23. package/dist/node/CreatableModule/CreatableModuleRegistry.d.cts +5 -2
  24. package/dist/node/CreatableModule/CreatableModuleRegistry.d.cts.map +1 -1
  25. package/dist/node/CreatableModule/CreatableModuleRegistry.d.mts +5 -2
  26. package/dist/node/CreatableModule/CreatableModuleRegistry.d.mts.map +1 -1
  27. package/dist/node/CreatableModule/CreatableModuleRegistry.d.ts +5 -2
  28. package/dist/node/CreatableModule/CreatableModuleRegistry.d.ts.map +1 -1
  29. package/dist/node/CreatableModule/ModuleFactoryLocator.d.cts +6 -0
  30. package/dist/node/CreatableModule/ModuleFactoryLocator.d.cts.map +1 -1
  31. package/dist/node/CreatableModule/ModuleFactoryLocator.d.mts +6 -0
  32. package/dist/node/CreatableModule/ModuleFactoryLocator.d.mts.map +1 -1
  33. package/dist/node/CreatableModule/ModuleFactoryLocator.d.ts +6 -0
  34. package/dist/node/CreatableModule/ModuleFactoryLocator.d.ts.map +1 -1
  35. package/dist/node/CreatableModule/index.d.cts +0 -1
  36. package/dist/node/CreatableModule/index.d.cts.map +1 -1
  37. package/dist/node/CreatableModule/index.d.mts +0 -1
  38. package/dist/node/CreatableModule/index.d.mts.map +1 -1
  39. package/dist/node/CreatableModule/index.d.ts +0 -1
  40. package/dist/node/CreatableModule/index.d.ts.map +1 -1
  41. package/dist/node/index.cjs +59 -21
  42. package/dist/node/index.cjs.map +1 -1
  43. package/dist/node/index.js +56 -20
  44. package/dist/node/index.js.map +1 -1
  45. package/package.json +15 -15
  46. package/src/CreatableModule/CreatableModuleRegistry.ts +30 -7
  47. package/src/CreatableModule/ModuleFactoryLocator.ts +37 -10
  48. package/src/CreatableModule/index.ts +0 -1
  49. package/dist/browser/CreatableModule/CreatableModuleDictionary.d.cts +0 -5
  50. package/dist/browser/CreatableModule/CreatableModuleDictionary.d.cts.map +0 -1
  51. package/dist/browser/CreatableModule/CreatableModuleDictionary.d.mts +0 -5
  52. package/dist/browser/CreatableModule/CreatableModuleDictionary.d.mts.map +0 -1
  53. package/dist/browser/CreatableModule/CreatableModuleDictionary.d.ts +0 -5
  54. package/dist/browser/CreatableModule/CreatableModuleDictionary.d.ts.map +0 -1
  55. package/dist/node/CreatableModule/CreatableModuleDictionary.d.cts +0 -5
  56. package/dist/node/CreatableModule/CreatableModuleDictionary.d.cts.map +0 -1
  57. package/dist/node/CreatableModule/CreatableModuleDictionary.d.mts +0 -5
  58. package/dist/node/CreatableModule/CreatableModuleDictionary.d.mts.map +0 -1
  59. package/dist/node/CreatableModule/CreatableModuleDictionary.d.ts +0 -5
  60. package/dist/node/CreatableModule/CreatableModuleDictionary.d.ts.map +0 -1
  61. package/src/CreatableModule/CreatableModuleDictionary.ts +0 -5
@@ -1,4 +1,5 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
+ import { Schema } from '@xyo-network/payload-model'
2
3
 
3
4
  import { AttachableModuleInstance } from '../instance'
4
5
  import { hasAllLabels, Labels } from '../Labels'
@@ -38,17 +39,9 @@ export class ModuleFactoryLocator {
38
39
  * @param additional Additional module factories to register
39
40
  */
40
41
  register<TModule extends AttachableModuleInstance>(mod: CreatableModuleFactory<TModule>, labels?: Labels): this {
42
+ this.registerOne(mod, mod.defaultConfigSchema, true, labels)
41
43
  mod.configSchemas.map((schema) => {
42
- const existingFactories = this._registry[schema]
43
- const factory: LabeledCreatableModuleFactory<TModule> = {
44
- // Destructure instance properties
45
- ...mod,
46
- // Copy static methods
47
- create: mod.create.bind(mod) as LabeledCreatableModuleFactory<TModule>['create'],
48
- // Merge module & supplied labels
49
- labels: Object.assign({}, (mod as LabeledCreatableModuleFactory).labels ?? {}, labels ?? {}),
50
- }
51
- this._registry[schema] = [...(existingFactories ?? []), factory]
44
+ this.registerOne(mod, schema, false, labels)
52
45
  })
53
46
  return this
54
47
  }
@@ -67,6 +60,40 @@ export class ModuleFactoryLocator {
67
60
  return this
68
61
  }
69
62
 
63
+ /**
64
+ * Registers a single module factory (with optional tags) with the locator & a specific schema
65
+ * @param additional Additional module factories to register
66
+ */
67
+ registerOne<TModule extends AttachableModuleInstance>(
68
+ mod: CreatableModuleFactory<TModule>,
69
+ schema: Schema,
70
+ overwrite = false,
71
+ labels?: Labels,
72
+ ): this {
73
+ //if we don't want to overwrite and the factory already exists, return
74
+ if (!overwrite) {
75
+ const existingFactories = this._registry[schema]
76
+ if (existingFactories) {
77
+ const existing = existingFactories.find((factory) => (factory as LabeledCreatableModuleFactory).labels === labels)
78
+ if (existing) {
79
+ return this
80
+ }
81
+ }
82
+ }
83
+
84
+ const existingFactories = this._registry[schema]
85
+ const factory: LabeledCreatableModuleFactory<TModule> = {
86
+ // Destructure instance properties
87
+ ...mod,
88
+ // Copy static methods
89
+ create: mod.create.bind(mod) as LabeledCreatableModuleFactory<TModule>['create'],
90
+ // Merge module & supplied labels
91
+ labels: Object.assign({}, (mod as LabeledCreatableModuleFactory).labels ?? {}, labels ?? {}),
92
+ }
93
+ this._registry[schema] = [...(existingFactories ?? []), factory]
94
+ return this
95
+ }
96
+
70
97
  /**
71
98
  * Tries to locate a module factory that matches the supplied schema and labels
72
99
  * @param schema The config schema for the module
@@ -1,5 +1,4 @@
1
1
  export * from './CreatableModule'
2
- export * from './CreatableModuleDictionary'
3
2
  export * from './CreatableModuleRegistry'
4
3
  export * from './LabeledCreatableModuleFactory'
5
4
  export * from './ModuleFactory'
@@ -1,5 +0,0 @@
1
- import { CreatableModuleFactory } from './CreatableModule';
2
- export interface CreatableModuleDictionary {
3
- [key: string]: CreatableModuleFactory;
4
- }
5
- //# sourceMappingURL=CreatableModuleDictionary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreatableModuleDictionary.d.ts","sourceRoot":"","sources":["../../../src/CreatableModule/CreatableModuleDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CACtC"}
@@ -1,5 +0,0 @@
1
- import { CreatableModuleFactory } from './CreatableModule';
2
- export interface CreatableModuleDictionary {
3
- [key: string]: CreatableModuleFactory;
4
- }
5
- //# sourceMappingURL=CreatableModuleDictionary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreatableModuleDictionary.d.ts","sourceRoot":"","sources":["../../../src/CreatableModule/CreatableModuleDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CACtC"}
@@ -1,5 +0,0 @@
1
- import { CreatableModuleFactory } from './CreatableModule';
2
- export interface CreatableModuleDictionary {
3
- [key: string]: CreatableModuleFactory;
4
- }
5
- //# sourceMappingURL=CreatableModuleDictionary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreatableModuleDictionary.d.ts","sourceRoot":"","sources":["../../../src/CreatableModule/CreatableModuleDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CACtC"}
@@ -1,5 +0,0 @@
1
- import { CreatableModuleFactory } from './CreatableModule';
2
- export interface CreatableModuleDictionary {
3
- [key: string]: CreatableModuleFactory;
4
- }
5
- //# sourceMappingURL=CreatableModuleDictionary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreatableModuleDictionary.d.ts","sourceRoot":"","sources":["../../../src/CreatableModule/CreatableModuleDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CACtC"}
@@ -1,5 +0,0 @@
1
- import { CreatableModuleFactory } from './CreatableModule';
2
- export interface CreatableModuleDictionary {
3
- [key: string]: CreatableModuleFactory;
4
- }
5
- //# sourceMappingURL=CreatableModuleDictionary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreatableModuleDictionary.d.ts","sourceRoot":"","sources":["../../../src/CreatableModule/CreatableModuleDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CACtC"}
@@ -1,5 +0,0 @@
1
- import { CreatableModuleFactory } from './CreatableModule';
2
- export interface CreatableModuleDictionary {
3
- [key: string]: CreatableModuleFactory;
4
- }
5
- //# sourceMappingURL=CreatableModuleDictionary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CreatableModuleDictionary.d.ts","sourceRoot":"","sources":["../../../src/CreatableModule/CreatableModuleDictionary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE1D,MAAM,WAAW,yBAAyB;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAAA;CACtC"}
@@ -1,5 +0,0 @@
1
- import { CreatableModuleFactory } from './CreatableModule'
2
-
3
- export interface CreatableModuleDictionary {
4
- [key: string]: CreatableModuleFactory
5
- }