{"version":3,"file":"logTypeScriptErrors.cjs","names":[],"sources":["../../../src/loadDictionaries/logTypeScriptErrors.ts"],"sourcesContent":["import { dirname, extname } from 'node:path';\nimport { getAppLogger } from '@intlayer/config/logger';\nimport type { IntlayerConfig } from '@intlayer/types/config';\n\nexport const logTypeScriptErrors = async (\n  filePaths: string[],\n  configuration: IntlayerConfig\n) => {\n  const appLogger = getAppLogger(configuration);\n\n  const filesToCheck = filePaths.filter((path) => {\n    const ext = extname(path);\n\n    return ['.ts', '.tsx', '.js', '.jsx', '.cjs', '.mjs', '.json'].includes(\n      ext\n    );\n  });\n\n  if (filesToCheck.length === 0) return;\n\n  let ts: typeof import('typescript');\n\n  try {\n    ts = (await import('typescript')).default || (await import('typescript'));\n  } catch {\n    // TypeScript not installed, skip type checking\n\n    return;\n  }\n\n  const configFileName = ts.findConfigFile(\n    configuration.system?.baseDir ?? process.cwd(),\n    ts.sys.fileExists,\n    'tsconfig.json'\n  );\n\n  let compilerOptions: any = {\n    noEmit: true,\n\n    allowJs: true,\n\n    resolveJsonModule: true,\n  };\n\n  if (configFileName) {\n    const configFileText = ts.sys.readFile(configFileName);\n\n    if (configFileText) {\n      const configJson = ts.parseConfigFileTextToJson(\n        configFileName,\n\n        configFileText\n      );\n\n      if (!configJson.error) {\n        const parsedConfig = ts.parseJsonConfigFileContent(\n          configJson.config,\n\n          ts.sys,\n\n          dirname(configFileName)\n        );\n\n        const { incremental, tsBuildInfoFile, ...restOptions } =\n          parsedConfig.options;\n\n        compilerOptions = { ...compilerOptions, ...restOptions, noEmit: true };\n      }\n    }\n  }\n\n  const program = ts.createProgram(filesToCheck, compilerOptions);\n\n  filesToCheck.forEach((filePath) => {\n    const sourceFile = program.getSourceFile(filePath);\n\n    if (!sourceFile) return;\n\n    const diagnostics = ts.getPreEmitDiagnostics(program, sourceFile);\n\n    diagnostics.forEach((diagnostic) => {\n      const message = ts.flattenDiagnosticMessageText(\n        diagnostic.messageText,\n\n        '\\n'\n      );\n\n      if (diagnostic.file && diagnostic.start !== undefined) {\n        const { line, character } =\n          diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);\n\n        appLogger(\n          `TS Error in ${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`,\n\n          { level: 'warn' }\n        );\n      }\n    });\n  });\n};\n"],"mappings":";;;;;;AAIA,MAAa,sBAAsB,OACjC,WACA,kBACG;CACH,MAAM,sDAAyB,cAAc;CAE7C,MAAM,eAAe,UAAU,QAAQ,SAAS;EAC9C,MAAM,6BAAc,KAAK;AAEzB,SAAO;GAAC;GAAO;GAAQ;GAAO;GAAQ;GAAQ;GAAQ;GAAQ,CAAC,SAC7D,IACD;GACD;AAEF,KAAI,aAAa,WAAW,EAAG;CAE/B,IAAI;AAEJ,KAAI;AACF,QAAM,MAAM,OAAO,eAAe,WAAY,MAAM,OAAO;SACrD;AAGN;;CAGF,MAAM,iBAAiB,GAAG,eACxB,cAAc,QAAQ,WAAW,QAAQ,KAAK,EAC9C,GAAG,IAAI,YACP,gBACD;CAED,IAAI,kBAAuB;EACzB,QAAQ;EAER,SAAS;EAET,mBAAmB;EACpB;AAED,KAAI,gBAAgB;EAClB,MAAM,iBAAiB,GAAG,IAAI,SAAS,eAAe;AAEtD,MAAI,gBAAgB;GAClB,MAAM,aAAa,GAAG,0BACpB,gBAEA,eACD;AAED,OAAI,CAAC,WAAW,OAAO;IASrB,MAAM,EAAE,aAAa,iBAAiB,GAAG,gBARpB,GAAG,2BACtB,WAAW,QAEX,GAAG,4BAEK,eAAe,CAIX,CAAC;AAEf,sBAAkB;KAAE,GAAG;KAAiB,GAAG;KAAa,QAAQ;KAAM;;;;CAK5E,MAAM,UAAU,GAAG,cAAc,cAAc,gBAAgB;AAE/D,cAAa,SAAS,aAAa;EACjC,MAAM,aAAa,QAAQ,cAAc,SAAS;AAElD,MAAI,CAAC,WAAY;AAIjB,EAFoB,GAAG,sBAAsB,SAAS,WAE3C,CAAC,SAAS,eAAe;GAClC,MAAM,UAAU,GAAG,6BACjB,WAAW,aAEX,KACD;AAED,OAAI,WAAW,QAAQ,WAAW,UAAU,QAAW;IACrD,MAAM,EAAE,MAAM,cACZ,WAAW,KAAK,8BAA8B,WAAW,MAAM;AAEjE,cACE,eAAe,WAAW,KAAK,SAAS,IAAI,OAAO,EAAE,GAAG,YAAY,EAAE,KAAK,WAE3E,EAAE,OAAO,QAAQ,CAClB;;IAEH;GACF"}