@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
62 lines (60 loc) • 2.96 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');
const require_filterInvalidDictionaries = require('../filterInvalidDictionaries.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/writeUnmergedDictionary.ts
const groupDictionariesByKey = (dictionaries) => dictionaries.reduce((acc, dictionary) => {
const key = dictionary.key;
if (!acc[key]) acc[key] = [];
acc[key].push(dictionary);
return acc;
}, {});
/**
* Write the unmerged dictionaries to the unmergedDictionariesDir
* @param dictionaries - The dictionaries to write
* @param configuration - The configuration
* @returns The grouped dictionaries
*
* @example
* ```ts
* const unmergedDictionaries = await writeUnmergedDictionaries(dictionaries);
* console.log(unmergedDictionaries);
*
* // .intlayer/unmerged_dictionaries/home.json
* // {
* // [
* // { key: 'home', content: { ... } },
* // { key: 'home', content: { ... } },
* // ],
* // }
* ```
*/
const writeUnmergedDictionaries = async (dictionaries, configuration, env) => {
const { unmergedDictionariesDir } = configuration.system;
await (0, node_fs_promises.mkdir)((0, node_path.resolve)(unmergedDictionariesDir), { recursive: true });
const groupedDictionaries = groupDictionariesByKey(require_filterInvalidDictionaries.filterInvalidDictionaries(dictionaries, configuration, { checkSchema: true }));
const results = await require_utils_parallelize.parallelize(Object.entries(groupedDictionaries), async ([key, dictionaries]) => {
if (key === "undefined") return;
const orderedDictionaries = (0, _intlayer_core_dictionaryManipulator.orderDictionaries)(dictionaries);
const unmergedFilePath = (0, node_path.resolve)(unmergedDictionariesDir, `${key}.json`);
(0, _intlayer_config_utils.assertPathWithin)(unmergedFilePath, unmergedDictionariesDir);
if (configuration.editor.enabled || env === "dev") await require_writeJsonIfChanged.writeJsonIfChanged(unmergedFilePath, orderedDictionaries).catch((err) => {
console.error(`${_intlayer_config_logger.x} Error creating unmerged ${(0, _intlayer_config_logger.colorizePath)(unmergedFilePath)}:`, err);
});
return [key, {
dictionaryPath: unmergedFilePath,
dictionaries
}];
});
return Object.fromEntries(results.filter(Boolean));
};
//#endregion
exports.groupDictionariesByKey = groupDictionariesByKey;
exports.writeUnmergedDictionaries = writeUnmergedDictionaries;
//# sourceMappingURL=writeUnmergedDictionary.cjs.map