@intlayer/chokidar
Version:
Uses chokidar to scan and build Intlayer declaration files into dictionaries based on Intlayer configuration.
64 lines (62 loc) • 2.26 kB
JavaScript
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
let node_path = require("node:path");
let _intlayer_config_logger = require("@intlayer/config/logger");
//#region src/loadDictionaries/logTypeScriptErrors.ts
const logTypeScriptErrors = async (filePaths, configuration) => {
const appLogger = (0, _intlayer_config_logger.getAppLogger)(configuration);
const filesToCheck = filePaths.filter((path) => {
const ext = (0, node_path.extname)(path);
return [
".ts",
".tsx",
".js",
".jsx",
".cjs",
".mjs",
".json"
].includes(ext);
});
if (filesToCheck.length === 0) return;
let ts;
try {
ts = (await import("typescript")).default || await import("typescript");
} catch {
return;
}
const configFileName = ts.findConfigFile(configuration.system?.baseDir ?? process.cwd(), ts.sys.fileExists, "tsconfig.json");
let compilerOptions = {
noEmit: true,
allowJs: true,
resolveJsonModule: true
};
if (configFileName) {
const configFileText = ts.sys.readFile(configFileName);
if (configFileText) {
const configJson = ts.parseConfigFileTextToJson(configFileName, configFileText);
if (!configJson.error) {
const { incremental, tsBuildInfoFile, ...restOptions } = ts.parseJsonConfigFileContent(configJson.config, ts.sys, (0, node_path.dirname)(configFileName)).options;
compilerOptions = {
...compilerOptions,
...restOptions,
noEmit: true
};
}
}
}
const program = ts.createProgram(filesToCheck, compilerOptions);
filesToCheck.forEach((filePath) => {
const sourceFile = program.getSourceFile(filePath);
if (!sourceFile) return;
ts.getPreEmitDiagnostics(program, sourceFile).forEach((diagnostic) => {
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
if (diagnostic.file && diagnostic.start !== void 0) {
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
appLogger(`TS Error in ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`, { level: "warn" });
}
});
});
};
//#endregion
exports.logTypeScriptErrors = logTypeScriptErrors;
//# sourceMappingURL=logTypeScriptErrors.cjs.map