@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
49 lines (47 loc) • 2.41 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
const require_utils_parallelize = require('../utils/parallelize.cjs');
const require_writeJsonIfChanged = require('../writeJsonIfChanged.cjs');
let node_fs_promises = require("node:fs/promises");
let node_path = require("node:path");
let _intlayer_config_logger = require("@intlayer/config/logger");
let _intlayer_config_utils = require("@intlayer/config/utils");
let _intlayer_core_dictionaryManipulator = require("@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 (0, node_fs_promises.mkdir)((0, node_path.resolve)(dictionariesDir), { recursive: true });
const results = await require_utils_parallelize.parallelize(Object.entries(groupedDictionaries), async ([key, dictionariesEntry]) => {
if (key === "undefined") return;
const mergedDictionary = (0, _intlayer_core_dictionaryManipulator.mergeDictionaries)((0, _intlayer_core_dictionaryManipulator.normalizeDictionaries)(dictionariesEntry.dictionaries, configuration));
const resultFilePath = (0, node_path.resolve)(dictionariesDir, `${key}.json`);
(0, _intlayer_config_utils.assertPathWithin)(resultFilePath, dictionariesDir);
await require_writeJsonIfChanged.writeJsonIfChanged(resultFilePath, mergedDictionary).catch((err) => {
console.error(`Error creating merged ${(0, _intlayer_config_logger.colorizePath)(resultFilePath)}:`, err);
});
return [key, {
dictionaryPath: resultFilePath,
dictionary: mergedDictionary
}];
});
return Object.fromEntries(results.filter(Boolean));
};
//#endregion
exports.writeMergedDictionaries = writeMergedDictionaries;
//# sourceMappingURL=writeMergedDictionary.cjs.map