UNPKG

@intlayer/chokidar

Version:

Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.

47 lines (45 loc) 1.96 kB
import { parallelize } from "../utils/parallelize.mjs"; import { writeJsonIfChanged } from "../writeJsonIfChanged.mjs"; import { mkdir } from "node:fs/promises"; import { resolve } from "node:path"; import { colorizePath } from "@intlayer/config/logger"; import { assertPathWithin } from "@intlayer/config/utils"; import { mergeDictionaries, normalizeDictionaries } from "@intlayer/core/dictionaryManipulator"; //#region src/buildIntlayerDictionary/writeMergedDictionary.ts /** * Write the merged dictionaries to the dictionariesDir * @param groupedDictionaries - The grouped dictionaries * @param configuration - The configuration * @returns The merged dictionaries * * @example * ```ts * const unmergedDictionaries = await writeUnmergedDictionaries(dictionaries); * const finalDictionaries = await writeFinalDictionaries(unmergedDictionaries); * console.log(finalDictionaries); * * // .intlayer/dictionary/home.json * // { key: 'home', content: { ... } }, * ``` */ const writeMergedDictionaries = async (groupedDictionaries, configuration) => { const { dictionariesDir } = configuration.system; await mkdir(resolve(dictionariesDir), { recursive: true }); const results = await parallelize(Object.entries(groupedDictionaries), async ([key, dictionariesEntry]) => { if (key === "undefined") return; const mergedDictionary = mergeDictionaries(normalizeDictionaries(dictionariesEntry.dictionaries, configuration)); const resultFilePath = resolve(dictionariesDir, `${key}.json`); assertPathWithin(resultFilePath, dictionariesDir); await writeJsonIfChanged(resultFilePath, mergedDictionary).catch((err) => { console.error(`Error creating merged ${colorizePath(resultFilePath)}:`, err); }); return [key, { dictionaryPath: resultFilePath, dictionary: mergedDictionary }]; }); return Object.fromEntries(results.filter(Boolean)); }; //#endregion export { writeMergedDictionaries }; //# sourceMappingURL=writeMergedDictionary.mjs.map