UNPKG

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