@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
69 lines (67 loc) • 3.08 kB
JavaScript
import { parallelize } from "../utils/parallelize.mjs";
import { writeFileIfChanged } from "../writeFileIfChanged.mjs";
import { generateDictionaryListContent } from "./generateDictionaryListContent.mjs";
import { getBuiltDictionariesPath } from "./getBuiltDictionariesPath.mjs";
import { getBuiltDynamicDictionariesPath } from "./getBuiltDynamicDictionariesPath.mjs";
import { getBuiltFetchDictionariesPath } from "./getBuiltFetchDictionariesPath.mjs";
import { getBuiltRemoteDictionariesPath } from "./getBuiltRemoteDictionariesPath.mjs";
import { getBuiltUnmergedDictionariesPath } from "./getBuiltUnmergedDictionariesPath.mjs";
import { mkdir } from "node:fs/promises";
import { resolve } from "node:path";
import { getConfiguration } from "@intlayer/config/node";
//#region src/createDictionaryEntryPoint/createDictionaryEntryPoint.ts
const writeDictionaryFiles = async (paths, fileName, importType, functionName, format, configuration = getConfiguration()) => {
const content = generateDictionaryListContent(await paths, functionName, importType, format, configuration);
const extension = format === "cjs" ? "cjs" : "mjs";
const { mainDir } = configuration.system;
await writeFileIfChanged(resolve(mainDir, `${fileName}.${extension}`), content);
};
/**
* This function generates a list of dictionaries in the main directory
*/
const createDictionaryEntryPoint = async (configuration = getConfiguration(), options = {}) => {
const { formats, excludeKeys = [] } = options;
const outputFormats = formats ?? configuration.build.outputFormat;
const { mainDir } = configuration.system;
await mkdir(mainDir, { recursive: true });
await parallelize([
...outputFormats.map((format) => ({
paths: getBuiltDictionariesPath(configuration, excludeKeys),
importType: "json",
functionName: "getDictionaries",
fileName: "dictionaries",
format
})),
...outputFormats.map((format) => ({
paths: getBuiltUnmergedDictionariesPath(configuration, excludeKeys),
importType: "json",
functionName: "getUnmergedDictionaries",
fileName: "unmerged_dictionaries",
format
})),
...outputFormats.map((format) => ({
paths: getBuiltDynamicDictionariesPath(configuration, format, excludeKeys),
importType: "javascript",
functionName: "getDynamicDictionaries",
fileName: "dynamic_dictionaries",
format
})),
...outputFormats.map((format) => ({
paths: getBuiltFetchDictionariesPath(configuration, format, excludeKeys),
importType: "javascript",
functionName: "getFetchDictionaries",
fileName: "fetch_dictionaries",
format
})),
...outputFormats.map((format) => ({
paths: getBuiltRemoteDictionariesPath(configuration, excludeKeys),
importType: "json",
functionName: "getRemoteDictionaries",
fileName: "remote_dictionaries",
format
}))
], async ({ paths, fileName, format, functionName, importType }) => await writeDictionaryFiles(paths, fileName, importType, functionName, format, configuration));
};
//#endregion
export { createDictionaryEntryPoint };
//# sourceMappingURL=createDictionaryEntryPoint.mjs.map