{"version":3,"file":"diagnostics.js","names":[],"sources":["../../../src/checkers/oxlint/diagnostics.ts"],"sourcesContent":["import { parentPort } from 'node:worker_threads'\nimport { FileDiagnosticManager } from '../../FileDiagnosticManager.js'\nimport {\n composeCheckerSummary,\n consoleLog,\n diagnosticToConsoleLevel,\n diagnosticToRuntimeError,\n diagnosticToTerminalLog,\n type NormalizedDiagnostic,\n toClientPayload,\n} from '../../logger.js'\nimport {\n ACTION_TYPES,\n type CreateDiagnostic,\n DiagnosticLevel,\n} from '../../types.js'\nimport { resolveOptions } from './options.js'\nimport { setupDevServer } from './server.js'\nimport type { DisplayTarget } from './types'\n\nexport const createDiagnostic: CreateDiagnostic<'oxlint'> = (pluginConfig) => {\n const manager = new FileDiagnosticManager()\n\n const oxlintConfig = pluginConfig.oxlint\n const displayTargets = new Set()\n\n return {\n config: async ({ enableOverlay, enableTerminal }) => {\n displayTargets.clear()\n if (enableOverlay) displayTargets.add('overlay')\n if (enableTerminal) displayTargets.add('terminal')\n },\n async configureServer({ root }) {\n if (!oxlintConfig) return\n\n const options = resolveOptions(root, oxlintConfig)\n await setupDevServer(root, options, manager, displayTargets)\n },\n }\n}\n\nexport function dispatchDiagnostics(\n diagnostics: NormalizedDiagnostic[],\n targets: Set,\n) {\n if (targets.size === 0) return\n\n if (targets.has('terminal')) {\n dispatchTerminalDiagnostics(diagnostics)\n }\n if (targets.has('overlay')) {\n dispatchOverlayDiagnostics(diagnostics)\n }\n}\n\nfunction dispatchTerminalDiagnostics(diagnostics: NormalizedDiagnostic[]) {\n for (const d of diagnostics) {\n consoleLog(\n diagnosticToTerminalLog(d, 'oxlint'),\n diagnosticToConsoleLevel(d),\n )\n }\n\n const errorCount = diagnostics.filter(\n (d) => d.level === DiagnosticLevel.Error,\n ).length\n const warningCount = diagnostics.filter(\n (d) => d.level === DiagnosticLevel.Warning,\n ).length\n consoleLog(\n composeCheckerSummary('oxlint', errorCount, warningCount),\n errorCount ? 'error' : warningCount ? 'warn' : 'info',\n )\n}\n\nfunction dispatchOverlayDiagnostics(diagnostics: NormalizedDiagnostic[]) {\n parentPort?.postMessage({\n type: ACTION_TYPES.overlayError,\n payload: toClientPayload(\n 'oxlint',\n diagnostics.map((d) => diagnosticToRuntimeError(d)),\n ),\n })\n}\n"],"mappings":";;;;;;;AAoBA,MAAa,oBAAgD,iBAAiB;CAC5E,MAAM,UAAU,IAAI,sBAAsB;CAE1C,MAAM,eAAe,aAAa;CAClC,MAAM,iCAAiB,IAAI,IAAmB;CAE9C,OAAO;EACL,QAAQ,OAAO,EAAE,eAAe,qBAAqB;GACnD,eAAe,MAAM;GACrB,IAAI,eAAe,eAAe,IAAI,SAAS;GAC/C,IAAI,gBAAgB,eAAe,IAAI,UAAU;EACnD;EACA,MAAM,gBAAgB,EAAE,QAAQ;GAC9B,IAAI,CAAC,cAAc;GAGnB,MAAM,eAAe,MADL,eAAe,MAAM,YACJ,GAAG,SAAS,cAAc;EAC7D;CACF;AACF;AAEA,SAAgB,oBACd,aACA,SACA;CACA,IAAI,QAAQ,SAAS,GAAG;CAExB,IAAI,QAAQ,IAAI,UAAU,GACxB,4BAA4B,WAAW;CAEzC,IAAI,QAAQ,IAAI,SAAS,GACvB,2BAA2B,WAAW;AAE1C;AAEA,SAAS,4BAA4B,aAAqC;CACxE,KAAK,MAAM,KAAK,aACd,WACE,wBAAwB,GAAG,QAAQ,GACnC,yBAAyB,CAAC,CAC5B;CAGF,MAAM,aAAa,YAAY,QAC5B,MAAM,EAAE,UAAA,CACX,CAAC,CAAC;CACF,MAAM,eAAe,YAAY,QAC9B,MAAM,EAAE,UAAA,CACX,CAAC,CAAC;CACF,WACE,sBAAsB,UAAU,YAAY,YAAY,GACxD,aAAa,UAAU,eAAe,SAAS,MACjD;AACF;AAEA,SAAS,2BAA2B,aAAqC;CACvE,YAAY,YAAY;EACtB,MAAA;EACA,SAAS,gBACP,UACA,YAAY,KAAK,MAAM,yBAAyB,CAAC,CAAC,CACpD;CACF,CAAC;AACH"}