UNPKG

@intlayer/chokidar

Version:

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

49 lines (47 loc) 2.17 kB
import { parallelize } from "../utils/parallelize.mjs"; import { writeJsonIfChanged } from "../writeJsonIfChanged.mjs"; import { filterInvalidDictionaries } from "../filterInvalidDictionaries.mjs"; import { groupDictionariesByKey } from "./writeUnmergedDictionary.mjs"; import { formatDistantDictionaries } from "../loadDictionaries/loadRemoteDictionaries.mjs"; import { mkdir } from "node:fs/promises"; import { resolve } from "node:path"; import { colorizePath, x } from "@intlayer/config/logger"; import { orderDictionaries } from "@intlayer/core/dictionaryManipulator"; //#region src/buildIntlayerDictionary/writeRemoteDictionary.ts /** * Write the localized dictionaries to the dictionariesDir * @param mergedDictionaries - The merged dictionaries * @param configuration - The configuration * @returns The final dictionaries * * @example * ```ts * const unmergedDictionaries = await writeUnmergedDictionaries(dictionaries); * const finalDictionaries = await writeFinalDictionaries(unmergedDictionaries); * console.log(finalDictionaries); * * // .intlayer/fetch_dictionaries/home.json * // { key: 'home', content: { ... } }, * ``` */ const writeRemoteDictionary = async (remoteDictionaries, configuration) => { const { remoteDictionariesDir } = configuration.system; await mkdir(resolve(remoteDictionariesDir), { recursive: true }); const groupedDictionaries = groupDictionariesByKey(filterInvalidDictionaries(remoteDictionaries, configuration)); const results = await parallelize(Object.entries(groupedDictionaries), async ([key, dictionaries]) => { if (key === "undefined") return; const orderedDictionaries = orderDictionaries(formatDistantDictionaries(dictionaries)); const unmergedFilePath = resolve(remoteDictionariesDir, `${key}.json`); await writeJsonIfChanged(unmergedFilePath, orderedDictionaries).catch((err) => { console.error(`${x} Error creating unmerged ${colorizePath(unmergedFilePath)}:`, err); }); return [key, { dictionaryPath: unmergedFilePath, dictionaries }]; }); return Object.fromEntries(results.filter(Boolean)); }; //#endregion export { writeRemoteDictionary }; //# sourceMappingURL=writeRemoteDictionary.mjs.map