@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
41 lines • 1.51 kB
JavaScript
import { getConfiguration } from "@intlayer/config";
import { mkdir, writeFile } from "fs/promises";
import { resolve } from "path";
import { formatDictionaryText } from "./formatDictionaryText.mjs";
const groupDictionariesByKey = (dictionaries) => {
return dictionaries.reduce(
(acc, dictionary) => {
const key = dictionary.key;
if (!acc[key]) {
acc[key] = [];
}
acc[key].push(dictionary);
return acc;
},
{}
);
};
const writeUnmergedDictionaries = async (dictionaries, configuration = getConfiguration()) => {
const { unmergedDictionariesDir } = configuration.content;
await mkdir(resolve(unmergedDictionariesDir), { recursive: true });
const groupedDictionaries = groupDictionariesByKey(dictionaries);
let resultDictionariesPaths = {};
for await (const [key, dictionaries2] of Object.entries(groupedDictionaries)) {
if (key === "undefined") continue;
const contentString = formatDictionaryText(dictionaries2);
const outputFileName = `${key}.json`;
const unmergedFilePath = resolve(unmergedDictionariesDir, outputFileName);
await writeFile(unmergedFilePath, contentString, "utf8").catch((err) => {
console.error(`Error creating unmerged ${outputFileName}:`, err);
});
resultDictionariesPaths[key] = {
dictionaryPath: unmergedFilePath,
dictionaries: dictionaries2
};
}
return resultDictionariesPaths;
};
export {
writeUnmergedDictionaries
};
//# sourceMappingURL=writeUnmergedDictionary.mjs.map