UNPKG

@baseplate-dev/sync

Version:

Library for syncing Baseplate descriptions

35 lines 1.73 kB
import { groupBy } from 'es-toolkit'; import { sortExtractorConfigKeys } from './sort-extractor-config-keys.js'; /** * Merges template entries into extractor configurations by grouping metadata * entries by generator and upserting them into the respective config objects. * This function only updates the in-memory configurations and does not write files. * * @param metadataEntries - Array of template file extractor metadata entries * @param context - Template extractor context containing config lookup * @throws Error if no config is found for a generator */ export function mergeExtractorTemplateEntries(metadataEntries, context) { // Group metadata entries by generator const metadataEntriesByGenerator = groupBy(metadataEntries, (e) => e.generator); for (const [generator, entries] of Object.entries(metadataEntriesByGenerator)) { const generatorConfig = context.configLookup.getExtractorConfig(generator); if (!generatorConfig) { throw new Error(`No 'extractor.json' found for generator: ${generator}`); } // Upsert template entries into the extractor.json file const { templates } = generatorConfig.config; // Create a map of new templates to add const newTemplates = Object.fromEntries(entries.map((e) => [e.templateName, e.metadata])); const newConfig = sortExtractorConfigKeys({ ...generatorConfig.config, templates: { ...templates, ...newTemplates, }, }); // Update the in-memory config cache context.configLookup.setExtractorConfig(generator, newConfig); } } //# sourceMappingURL=merge-extractor-template-entries.js.map