function globPatternToRegExp(pattern) {
    const escaped = pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    const regexText = `^${escaped.replace(/\\\*/g, '.*').replace(/\\\?/g, '.')}$`;
    return new RegExp(regexText);
}
export function aplicarSupressaoOcorrencias(ocorrencias, filtros) {
    if (!filtros) {
        return ocorrencias;
    }
    const filtradas = ocorrencias.filter(ocorrencia => {
        const tipo = ocorrencia.tipo || '';
        const relPath = ocorrencia.relPath || '';
        const mensagem = ocorrencia.mensagem || '';
        if (filtros.suppressRules?.some(rule => tipo.includes(rule) || mensagem.includes(rule))) {
            return false;
        }
        if (filtros.suppressBySeverity && filtros.suppressBySeverity[tipo] === 'off') {
            return false;
        }
        if (filtros.suppressByPath?.some(pattern => {
            const regex = globPatternToRegExp(pattern);
            return regex.test(relPath);
        })) {
            return false;
        }
        if (filtros.suppressByFilePattern?.some(pattern => {
            const fileNome = relPath.split('/').pop() || '';
            const regex = globPatternToRegExp(pattern);
            return regex.test(fileNome);
        })) {
            return false;
        }
        return true;
    });
    return filtradas;
}
//# sourceMappingURL=filters.js.map