@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
JavaScript
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