import { getMessages } from '../../../core/messages/index.js';
import { splitLines } from '../../../shared/helpers/index.js';
import { criarOcorrencia } from '../../../types/index.js';
export function detectarCorrecoesCssInJs(src, _relPath) {
    const m = getMessages().CssInJsCorrecaoMensagens;
    const correcoes = [];
    const linhas = splitLines(src);
    linhas.forEach((linha, index) => {
        const numeroLinha = index + 1;
        if (/createGlobalStyle/.test(linha)) {
            correcoes.push({
                tipo: 'css-in-js-extract-global',
                original: linha.trim(),
                sugerido: m.extractGlobalCss,
                linha: numeroLinha,
                confianca: 70
            });
        }
        if (/!important/.test(linha) && /styled|css\s*`/.test(linha)) {
            correcoes.push({
                tipo: 'css-in-js-remove-important',
                original: linha.trim(),
                sugerido: linha.replace(/\s*!important/g, ''),
                linha: numeroLinha,
                confianca: 80
            });
        }
    });
    return correcoes;
}
export const correctionCssInJs = {
    nome: 'correction-css-in-js',
    categoria: 'estilo',
    descricao: 'Correções automáticas para problemas CSS-in-JS',
    test: (relPath) => /\.(js|jsx|ts|tsx|mjs|cjs)$/i.test(relPath),
    aplicar: (src, relPath) => {
        if (!src)
            return [];
        if (!/styled-components|styled-jsx|emotion/i.test(src))
            return [];
        const m = getMessages().CssInJsCorrecaoMensagens;
        const correcoes = detectarCorrecoesCssInJs(src, relPath);
        return correcoes.map(elem => criarOcorrencia({
            tipo: `correction-${elem.tipo}`,
            nivel: elem.confianca > 85 ? 'aviso' : 'info',
            mensagem: m.correctionSuggested(elem.tipo),
            relPath,
            linha: elem.linha,
            sugestao: m.sugestaoFormat(elem.original, elem.sugerido, elem.confianca)
        }));
    }
};
//# sourceMappingURL=correction-css-in-js.js.map