@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
43 lines (41 loc) • 1.81 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('./_virtual/_rolldown/runtime.cjs');
let node_fs_promises = require("node:fs/promises");
let fast_glob = require("fast-glob");
fast_glob = require_runtime.__toESM(fast_glob);
let _intlayer_config_utils = require("@intlayer/config/utils");
//#region src/listDictionariesPath.ts
/**
* List all dictionaries absolute paths in the project
* @param configuration - The configuration object
* @returns An array of dictionary paths
*/
const listDictionaries = async (configuration) => {
const { fileExtensions, contentDir, excludedPath } = configuration.content;
const filePromises = fileExtensions.flatMap((ext) => contentDir.map((dir) => `${(0, _intlayer_config_utils.normalizePath)(dir)}/**/*${ext}`.replace("//", "/"))).map(async (pattern) => {
const magicIndex = pattern.search(/[*?{}(]/);
const basePattern = magicIndex > -1 ? pattern.slice(0, magicIndex) : pattern;
return (0, fast_glob.default)(pattern, {
ignore: excludedPath.filter((excludePattern) => {
const cleanName = excludePattern.replace(/\*\*/g, "").replace(/\//g, "");
if (cleanName && basePattern.includes(`/${cleanName}/`)) return false;
return true;
}),
absolute: true,
dot: true
});
});
const filesArrays = await Promise.all(filePromises);
return Array.from(new Set(filesArrays.flat()));
};
const listDictionariesWithStats = async (configuration) => {
const files = await listDictionaries(configuration);
return Promise.all(files.map(async (file) => ({
path: file,
stats: await (0, node_fs_promises.stat)(file)
})));
};
//#endregion
exports.listDictionaries = listDictionaries;
exports.listDictionariesWithStats = listDictionariesWithStats;
//# sourceMappingURL=listDictionariesPath.cjs.map