UNPKG

@intlayer/chokidar

Version:

Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.

60 lines 2.14 kB
import { existsSync, mkdirSync, writeFileSync } from "fs"; import { basename, extname, relative, resolve } from "path"; import { getConfiguration } from "@intlayer/config"; import { getBuiltDictionariesPath } from "../../getBuiltDictionariesPath.mjs"; import { getFileHash } from "../../utils.mjs"; const generateDictionaryListContent = (dictionaries, format = "esm", configuration = getConfiguration()) => { const { mainDir } = configuration.content; let content = ""; const dictionariesRef = dictionaries.map((dictionaryPath) => ({ relativePath: relative(mainDir, dictionaryPath), id: basename(dictionaryPath, extname(dictionaryPath)), // Get the base name as the dictionary id hash: `_${getFileHash(dictionaryPath)}` // Get the hash of the dictionary to avoid conflicts })); dictionariesRef.forEach((dictionary) => { if (format === "esm") content += `import ${dictionary.hash} from '${dictionary.relativePath}'; `; if (format === "cjs") content += `const ${dictionary.hash} = require('${dictionary.relativePath}'); `; }); content += "\n"; const formattedDictionaryMap = dictionariesRef.map((dictionary) => ` "${dictionary.id}": ${dictionary.hash}`).join(",\n"); if (format === "esm") content += `export default { ${formattedDictionaryMap} }; `; if (format === "cjs") content += `module.exports = { ${formattedDictionaryMap} }; `; return content; }; const createDictionaryEntryPoint = (configuration = getConfiguration()) => { const { mainDir } = configuration.content; if (!existsSync(mainDir)) { mkdirSync(mainDir, { recursive: true }); } const dictionariesPath = getBuiltDictionariesPath(configuration); const cjsContent = generateDictionaryListContent( dictionariesPath, "cjs", configuration ); writeFileSync(resolve(mainDir, "dictionaries.cjs"), cjsContent); const esmContent = generateDictionaryListContent( dictionariesPath, "esm", configuration ); writeFileSync(resolve(mainDir, "dictionaries.mjs"), esmContent); }; export { createDictionaryEntryPoint }; //# sourceMappingURL=createDictionaryEntryPoint.mjs.map