@xyo-network/module-factory-locator 2.110.16 → 2.110.18

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["export * from './ModuleFactoryLocator.js'\nexport * from './standardCreatableFactories.js'\n","import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.js'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,oBAAyB;AACzB,IAAAA,uBAQO;;;ACTP,8BAAgC;AAChC,4BAA8B;AAC9B,yBAA2B;AAC3B,yCAA0C;AAC1C,8BAAgC;AAChC,oCAAqC;AACrC,0BAAwG;AACxG,yBAA2B;AAC3B,uBAAyB;AACzB,6BAA+B;AAC/B,2BAA6B;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,aAAOC,sDAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,eAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,6DAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,8BAAAA,EAAWC,KAAK,CAACP,gBAAYQ,mCAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["import_module_model","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["export * from './ModuleFactoryLocator.ts'\nexport * from './standardCreatableFactories.ts'\n","import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.ts'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,oBAAyB;AACzB,IAAAA,uBAQO;;;ACTP,8BAAgC;AAChC,4BAA8B;AAC9B,yBAA2B;AAC3B,yCAA0C;AAC1C,8BAAgC;AAChC,oCAAqC;AACrC,0BAAwG;AACxG,yBAA2B;AAC3B,uBAAyB;AACzB,6BAA+B;AAC/B,2BAA6B;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,aAAOC,sDAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,eAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,6DAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,8BAAAA,EAAWC,KAAK,CAACP,gBAAYQ,mCAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["import_module_model","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.js'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAGEC,cACAC,WAGAC,sCACK;;;ACTP,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,iCAAiC;AAC1C,SAASC,uBAAuB;AAChC,SAASC,4BAA4B;AACrC,SAAgEC,wCAAwC;AACxG,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,SAAOC,iCAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,WAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,mCAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,SAAAA,EAAWC,KAAK,CAACP,YAAYQ,aAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["assertEx","hasAllLabels","hasLabels","registerCreatableModuleFactory","MemoryArchivist","ViewArchivist","HttpBridge","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryPayloadDiviner","registerCreatableModuleFactories","MemoryNode","ViewNode","MemorySentinel","AdhocWitness","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
1
+ {"version":3,"sources":["../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.ts'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAGEC,cACAC,WAGAC,sCACK;;;ACTP,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,iCAAiC;AAC1C,SAASC,uBAAuB;AAChC,SAASC,4BAA4B;AACrC,SAAgEC,wCAAwC;AACxG,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,SAAOC,iCAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,WAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,mCAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,SAAAA,EAAWC,KAAK,CAACP,YAAYQ,aAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["assertEx","hasAllLabels","hasLabels","registerCreatableModuleFactory","MemoryArchivist","ViewArchivist","HttpBridge","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryPayloadDiviner","registerCreatableModuleFactories","MemoryNode","ViewNode","MemorySentinel","AdhocWitness","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["export * from './ModuleFactoryLocator.js'\nexport * from './standardCreatableFactories.js'\n","import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.js'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,oBAAyB;AACzB,IAAAA,uBAQO;;;ACTP,8BAAgC;AAChC,4BAA8B;AAC9B,yBAA2B;AAC3B,yCAA0C;AAC1C,8BAAgC;AAChC,oCAAqC;AACrC,0BAAwG;AACxG,yBAA2B;AAC3B,uBAAyB;AACzB,6BAA+B;AAC/B,2BAA6B;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,aAAOC,sDAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,eAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,6DAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,8BAAAA,EAAWC,KAAK,CAACP,gBAAYQ,mCAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["import_module_model","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["export * from './ModuleFactoryLocator.ts'\nexport * from './standardCreatableFactories.ts'\n","import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.ts'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,oBAAyB;AACzB,IAAAA,uBAQO;;;ACTP,8BAAgC;AAChC,4BAA8B;AAC9B,yBAA2B;AAC3B,yCAA0C;AAC1C,8BAAgC;AAChC,oCAAqC;AACrC,0BAAwG;AACxG,yBAA2B;AAC3B,uBAAyB;AACzB,6BAA+B;AAC/B,2BAA6B;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,aAAOC,sDAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,eAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,6DAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,8BAAAA,EAAWC,KAAK,CAACP,gBAAYQ,mCAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["import_module_model","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.js'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAGEC,cACAC,WAGAC,sCACK;;;ACTP,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,iCAAiC;AAC1C,SAASC,uBAAuB;AAChC,SAASC,4BAA4B;AACrC,SAAgEC,wCAAwC;AACxG,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,SAAOC,iCAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,WAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,mCAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,SAAAA,EAAWC,KAAK,CAACP,YAAYQ,aAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["assertEx","hasAllLabels","hasLabels","registerCreatableModuleFactory","MemoryArchivist","ViewArchivist","HttpBridge","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryPayloadDiviner","registerCreatableModuleFactories","MemoryNode","ViewNode","MemorySentinel","AdhocWitness","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
1
+ {"version":3,"sources":["../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.ts'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAGEC,cACAC,WAGAC,sCACK;;;ACTP,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,iCAAiC;AAC1C,SAASC,uBAAuB;AAChC,SAASC,4BAA4B;AACrC,SAAgEC,wCAAwC;AACxG,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,SAAOC,iCAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,uBAAN,MAAMA,sBAAAA;EAjBb,OAiBaA;;;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,WAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,mCAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAE7G,WAAOA;;MAEH,KAAKL,UAAUI,MAAAA,GAASe,OAAOC,SAAAA,EAAWC,KAAK,CAACP,YAAYQ,aAAaR,SAAST,QAAQA,MAAAA,CAAAA;QAE1F,KAAKL,UAAUI,MAAAA,IAAU,CAAA;EAC/B;AACF;","names":["assertEx","hasAllLabels","hasLabels","registerCreatableModuleFactory","MemoryArchivist","ViewArchivist","HttpBridge","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryPayloadDiviner","registerCreatableModuleFactories","MemoryNode","ViewNode","MemorySentinel","AdhocWitness","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["export * from './ModuleFactoryLocator.js'\nexport * from './standardCreatableFactories.js'\n","import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.js'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,oBAAyB;AACzB,IAAAA,uBAQO;;;ACTP,8BAAgC;AAChC,4BAA8B;AAC9B,yBAA2B;AAC3B,yCAA0C;AAC1C,8BAAgC;AAChC,oCAAqC;AACrC,0BAAwG;AACxG,yBAA2B;AAC3B,uBAAyB;AACzB,6BAA+B;AAC/B,2BAA6B;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,aAAOC,sDAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,wBAAN,MAAMA,sBAAAA;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,eAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,6DAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAhFjH;AAkFI,WAAOA;;OAEH,UAAKL,UAAUI,MAAAA,MAAf,mBAAwBe,OAAOC,gCAAWC,KAAK,CAACP,gBAAYQ,mCAAaR,mCAAST,QAAQA,MAAAA;SAE1F,UAAKL,UAAUI,MAAAA,MAAf,mBAAyB;EAC/B;AACF;AAvEaN;AAAN,IAAMA,uBAAN;","names":["import_module_model","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["export * from './ModuleFactoryLocator.ts'\nexport * from './standardCreatableFactories.ts'\n","import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.ts'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;ACAA,oBAAyB;AACzB,IAAAA,uBAQO;;;ACTP,8BAAgC;AAChC,4BAA8B;AAC9B,yBAA2B;AAC3B,yCAA0C;AAC1C,8BAAgC;AAChC,oCAAqC;AACrC,0BAAwG;AACxG,yBAA2B;AAC3B,uBAAyB;AACzB,6BAA+B;AAC/B,2BAA6B;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,aAAOC,sDAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,wBAAN,MAAMA,sBAAAA;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,eAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,6DAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAhFjH;AAkFI,WAAOA;;OAEH,UAAKL,UAAUI,MAAAA,MAAf,mBAAwBe,OAAOC,gCAAWC,KAAK,CAACP,gBAAYQ,mCAAaR,mCAAST,QAAQA,MAAAA;SAE1F,UAAKL,UAAUI,MAAAA,MAAf,mBAAyB;EAC/B;AACF;AAvEaN;AAAN,IAAMA,uBAAN;","names":["import_module_model","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,3 @@
1
- export * from './ModuleFactoryLocator.js';
2
- export * from './standardCreatableFactories.js';
1
+ export * from './ModuleFactoryLocator.ts';
2
+ export * from './standardCreatableFactories.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.js'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAGEC,cACAC,WAGAC,sCACK;;;ACTP,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,iCAAiC;AAC1C,SAASC,uBAAuB;AAChC,SAASC,4BAA4B;AACrC,SAAgEC,wCAAwC;AACxG,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,SAAOC,iCAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,wBAAN,MAAMA,sBAAAA;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,WAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,mCAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAhFjH;AAkFI,WAAOA;;OAEH,UAAKL,UAAUI,MAAAA,MAAf,mBAAwBe,OAAOC,WAAWC,KAAK,CAACP,YAAYQ,aAAaR,mCAAST,QAAQA,MAAAA;SAE1F,UAAKL,UAAUI,MAAAA,MAAf,mBAAyB;EAC/B;AACF;AAvEaN;AAAN,IAAMA,uBAAN;","names":["assertEx","hasAllLabels","hasLabels","registerCreatableModuleFactory","MemoryArchivist","ViewArchivist","HttpBridge","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryPayloadDiviner","registerCreatableModuleFactories","MemoryNode","ViewNode","MemorySentinel","AdhocWitness","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
1
+ {"version":3,"sources":["../../src/ModuleFactoryLocator.ts","../../src/standardCreatableFactories.ts"],"sourcesContent":["import { assertEx } from '@xylabs/assert'\nimport {\n CreatableModuleFactory,\n CreatableModuleRegistry,\n hasAllLabels,\n hasLabels,\n LabeledCreatableModuleFactory,\n Labels,\n registerCreatableModuleFactory,\n} from '@xyo-network/module-model'\nimport { Schema } from '@xyo-network/payload-model'\n\nimport { standardCreatableFactories } from './standardCreatableFactories.ts'\n\n/**\n * A class which encapsulates the Service Locator Pattern for Module Factories\n */\nexport class ModuleFactoryLocator {\n constructor(protected readonly _registry: CreatableModuleRegistry = standardCreatableFactories()) {}\n\n /**\n * The current registry for the module factory\n */\n get registry(): Readonly<CreatableModuleRegistry> {\n return this._registry\n }\n\n /**\n * Locates a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or throws if one is not found\n */\n locate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory {\n return assertEx(\n this.tryLocate(schema, labels),\n // eslint-disable-next-line sonarjs/no-nested-template-literals\n () => `No module factory for the supplied ${`config schema [${schema}]`}${labels ? ` & labels [${JSON.stringify(labels)}]` : ''} registered`,\n )\n }\n\n merge(locator: ModuleFactoryLocator): ModuleFactoryLocator {\n const registry = { ...this.registry }\n for (const schema in locator.registry) {\n if (registry[schema]) {\n registry[schema].push(...(locator.registry[schema] ?? []))\n } else {\n registry[schema] = locator.registry[schema]\n }\n }\n return new ModuleFactoryLocator(registry)\n }\n\n /**\n * Registers a single module factory (with optional tags) with the locator\n * @param factory The factory to register\n * @param labels The labels for the module factory\n */\n register(factory: CreatableModuleFactory, labels?: Labels, primary: boolean | Schema | Schema[] = false): this {\n registerCreatableModuleFactory(this._registry, factory, labels, primary)\n return this\n }\n\n /**\n * Registers multiple module factories with the locator\n * @param factories The factories to register\n */\n registerMany(factories: CreatableModuleFactory[]): this {\n for (const factory of factories) {\n this.register(factory)\n }\n return this\n }\n\n /**\n * Tries to locate a module factory that matches the supplied schema and labels\n * @param schema The config schema for the module\n * @param labels The labels for the module factory\n * @returns A module factory that matches the supplied schema and labels or undefined\n */\n tryLocate(schema: string, labels?: Labels): CreatableModuleFactory | LabeledCreatableModuleFactory | undefined {\n // If labels were provided\n return labels ?\n // Find the first factory that has labels and has all the labels provided\n this._registry[schema]?.filter(hasLabels).find((factory) => hasAllLabels(factory?.labels, labels))\n : // Otherwise, return the first factory\n this._registry[schema]?.[0]\n }\n}\n","import { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport { HttpBridge } from '@xyo-network/bridge-http'\nimport { MemoryBoundWitnessDiviner } from '@xyo-network/diviner-boundwitness-memory'\nimport { IdentityDiviner } from '@xyo-network/diviner-identity'\nimport { MemoryPayloadDiviner } from '@xyo-network/diviner-payload-memory'\nimport { CreatableModuleFactory, LabeledCreatableModuleFactory, registerCreatableModuleFactories } from '@xyo-network/module-model'\nimport { MemoryNode } from '@xyo-network/node-memory'\nimport { ViewNode } from '@xyo-network/node-view'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport { AdhocWitness } from '@xyo-network/witness-adhoc'\n\n//order matters in this array. later items will register themselves as primary for schemas shared with earlier items\nexport const standardCreatableFactoriesList: (CreatableModuleFactory | LabeledCreatableModuleFactory)[] = [\n HttpBridge,\n ViewArchivist,\n ViewNode,\n AdhocWitness,\n MemoryPayloadDiviner,\n MemoryBoundWitnessDiviner,\n IdentityDiviner,\n MemoryArchivist,\n MemoryArchivist,\n MemoryNode,\n MemorySentinel,\n]\n\nexport const standardCreatableFactories = () => {\n return registerCreatableModuleFactories(standardCreatableFactoriesList, {}, true)\n}\n"],"mappings":";;;;AAAA,SAASA,gBAAgB;AACzB,SAGEC,cACAC,WAGAC,sCACK;;;ACTP,SAASC,uBAAuB;AAChC,SAASC,qBAAqB;AAC9B,SAASC,kBAAkB;AAC3B,SAASC,iCAAiC;AAC1C,SAASC,uBAAuB;AAChC,SAASC,4BAA4B;AACrC,SAAgEC,wCAAwC;AACxG,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAGtB,IAAMC,iCAA6F;EACxGC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;EACAA;EACAC;EACAC;;AAGK,IAAMC,6BAA6B,6BAAA;AACxC,SAAOC,iCAAiCZ,gCAAgC,CAAC,GAAG,IAAA;AAC9E,GAF0C;;;ADVnC,IAAMa,wBAAN,MAAMA,sBAAAA;;EACXC,YAA+BC,YAAqCC,2BAAAA,GAA8B;SAAnED,YAAAA;EAAoE;;;;EAKnG,IAAIE,WAA8C;AAChD,WAAO,KAAKF;EACd;;;;;;;EAQAG,OAAOC,QAAgBC,QAAyE;AAC9F,WAAOC;MACL,KAAKC,UAAUH,QAAQC,MAAAA;;MAEvB,MAAM,sCAAsC,kBAAkBD,MAAAA,GAAS,GAAGC,SAAS,cAAcG,KAAKC,UAAUJ,MAAAA,CAAAA,MAAa,EAAA;IAAe;EAEhJ;EAEAK,MAAMC,SAAqD;AACzD,UAAMT,WAAW;MAAE,GAAG,KAAKA;IAAS;AACpC,eAAWE,UAAUO,QAAQT,UAAU;AACrC,UAAIA,SAASE,MAAAA,GAAS;AACpBF,iBAASE,MAAAA,EAAQQ,KAAI,GAAKD,QAAQT,SAASE,MAAAA,KAAW,CAAA,CAAE;MAC1D,OAAO;AACLF,iBAASE,MAAAA,IAAUO,QAAQT,SAASE,MAAAA;MACtC;IACF;AACA,WAAO,IAAIN,sBAAqBI,QAAAA;EAClC;;;;;;EAOAW,SAASC,SAAiCT,QAAiBU,UAAuC,OAAa;AAC7GC,mCAA+B,KAAKhB,WAAWc,SAAST,QAAQU,OAAAA;AAChE,WAAO;EACT;;;;;EAMAE,aAAaC,WAA2C;AACtD,eAAWJ,WAAWI,WAAW;AAC/B,WAAKL,SAASC,OAAAA;IAChB;AACA,WAAO;EACT;;;;;;;EAQAP,UAAUH,QAAgBC,QAAqF;AAhFjH;AAkFI,WAAOA;;OAEH,UAAKL,UAAUI,MAAAA,MAAf,mBAAwBe,OAAOC,WAAWC,KAAK,CAACP,YAAYQ,aAAaR,mCAAST,QAAQA,MAAAA;SAE1F,UAAKL,UAAUI,MAAAA,MAAf,mBAAyB;EAC/B;AACF;AAvEaN;AAAN,IAAMA,uBAAN;","names":["assertEx","hasAllLabels","hasLabels","registerCreatableModuleFactory","MemoryArchivist","ViewArchivist","HttpBridge","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryPayloadDiviner","registerCreatableModuleFactories","MemoryNode","ViewNode","MemorySentinel","AdhocWitness","standardCreatableFactoriesList","HttpBridge","ViewArchivist","ViewNode","AdhocWitness","MemoryPayloadDiviner","MemoryBoundWitnessDiviner","IdentityDiviner","MemoryArchivist","MemoryNode","MemorySentinel","standardCreatableFactories","registerCreatableModuleFactories","ModuleFactoryLocator","constructor","_registry","standardCreatableFactories","registry","locate","schema","labels","assertEx","tryLocate","JSON","stringify","merge","locator","push","register","factory","primary","registerCreatableModuleFactory","registerMany","factories","filter","hasLabels","find","hasAllLabels"]}
package/package.json CHANGED
@@ -11,18 +11,18 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@xylabs/assert": "^3.6.6",
14
- "@xyo-network/archivist-memory": "^2.110.16",
15
- "@xyo-network/archivist-view": "^2.110.16",
16
- "@xyo-network/bridge-http": "^2.110.16",
17
- "@xyo-network/diviner-boundwitness-memory": "^2.110.16",
18
- "@xyo-network/diviner-identity": "^2.110.16",
19
- "@xyo-network/diviner-payload-memory": "^2.110.16",
20
- "@xyo-network/module-model": "^2.110.16",
21
- "@xyo-network/node-memory": "^2.110.16",
22
- "@xyo-network/node-view": "^2.110.16",
23
- "@xyo-network/payload-model": "^2.110.16",
24
- "@xyo-network/sentinel-memory": "^2.110.16",
25
- "@xyo-network/witness-adhoc": "^2.110.16"
14
+ "@xyo-network/archivist-memory": "^2.110.18",
15
+ "@xyo-network/archivist-view": "^2.110.18",
16
+ "@xyo-network/bridge-http": "^2.110.18",
17
+ "@xyo-network/diviner-boundwitness-memory": "^2.110.18",
18
+ "@xyo-network/diviner-identity": "^2.110.18",
19
+ "@xyo-network/diviner-payload-memory": "^2.110.18",
20
+ "@xyo-network/module-model": "^2.110.18",
21
+ "@xyo-network/node-memory": "^2.110.18",
22
+ "@xyo-network/node-view": "^2.110.18",
23
+ "@xyo-network/payload-model": "^2.110.18",
24
+ "@xyo-network/sentinel-memory": "^2.110.18",
25
+ "@xyo-network/witness-adhoc": "^2.110.18"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@xylabs/ts-scripts-yarn3": "^3.14.1",
@@ -68,6 +68,6 @@
68
68
  "url": "https://github.com/XYOracleNetwork/sdk-xyo-client-js.git"
69
69
  },
70
70
  "sideEffects": false,
71
- "version": "2.110.16",
71
+ "version": "2.110.18",
72
72
  "type": "module"
73
73
  }
@@ -10,7 +10,7 @@ import {
10
10
  } from '@xyo-network/module-model'
11
11
  import { Schema } from '@xyo-network/payload-model'
12
12
 
13
- import { standardCreatableFactories } from './standardCreatableFactories.js'
13
+ import { standardCreatableFactories } from './standardCreatableFactories.ts'
14
14
 
15
15
  /**
16
16
  * A class which encapsulates the Service Locator Pattern for Module Factories
package/src/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './ModuleFactoryLocator.js'
2
- export * from './standardCreatableFactories.js'
1
+ export * from './ModuleFactoryLocator.ts'
2
+ export * from './standardCreatableFactories.ts'