UNPKG

@intlayer/chokidar

Version:

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

62 lines (60 loc) 2.04 kB
import { dirname, extname } from "node:path"; import { getAppLogger } from "@intlayer/config/logger"; //#region src/loadDictionaries/logTypeScriptErrors.ts const logTypeScriptErrors = async (filePaths, configuration) => { const appLogger = getAppLogger(configuration); const filesToCheck = filePaths.filter((path) => { const ext = 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, 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 export { logTypeScriptErrors }; //# sourceMappingURL=logTypeScriptErrors.mjs.map