{"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,aAAa;CAE5C,MAAM,eAAe,UAAU,QAAQ,SAAS;EAC9C,MAAM,6BAAc,IAAI;EAExB,OAAO;GAAC;GAAO;GAAQ;GAAO;GAAQ;GAAQ;GAAQ;EAAO,EAAE,SAC7D,GACF;CACF,CAAC;CAED,IAAI,aAAa,WAAW,GAAG;CAE/B,IAAI;CAEJ,IAAI;EACF,MAAM,MAAM,OAAO,eAAe,WAAY,MAAM,OAAO;CAC7D,QAAQ;EAGN;CACF;CAEA,MAAM,iBAAiB,GAAG,eACxB,cAAc,QAAQ,WAAW,QAAQ,IAAI,GAC7C,GAAG,IAAI,YACP,eACF;CAEA,IAAI,kBAAuB;EACzB,QAAQ;EAER,SAAS;EAET,mBAAmB;CACrB;CAEA,IAAI,gBAAgB;EAClB,MAAM,iBAAiB,GAAG,IAAI,SAAS,cAAc;EAErD,IAAI,gBAAgB;GAClB,MAAM,aAAa,GAAG,0BACpB,gBAEA,cACF;GAEA,IAAI,CAAC,WAAW,OAAO;IASrB,MAAM,EAAE,aAAa,iBAAiB,GAAG,gBARpB,GAAG,2BACtB,WAAW,QAEX,GAAG,4BAEK,cAAc,CAIX,EAAE;IAEf,kBAAkB;KAAE,GAAG;KAAiB,GAAG;KAAa,QAAQ;IAAK;GACvE;EACF;CACF;CAEA,MAAM,UAAU,GAAG,cAAc,cAAc,eAAe;CAE9D,aAAa,SAAS,aAAa;EACjC,MAAM,aAAa,QAAQ,cAAc,QAAQ;EAEjD,IAAI,CAAC,YAAY;EAIjB,AAFoB,GAAG,sBAAsB,SAAS,UAE5C,EAAE,SAAS,eAAe;GAClC,MAAM,UAAU,GAAG,6BACjB,WAAW,aAEX,IACF;GAEA,IAAI,WAAW,QAAQ,WAAW,UAAU,QAAW;IACrD,MAAM,EAAE,MAAM,cACZ,WAAW,KAAK,8BAA8B,WAAW,KAAK;IAEhE,UACE,eAAe,WAAW,KAAK,SAAS,IAAI,OAAO,EAAE,GAAG,YAAY,EAAE,KAAK,WAE3E,EAAE,OAAO,OAAO,CAClB;GACF;EACF,CAAC;CACH,CAAC;AACH"}