import { parseDocument } from 'yaml';
import { detectorAzurePerformance } from '../detectors/detector-azure-performance.js';
import { detectorAzureSecurity } from '../detectors/detector-azure-security.js';
export const analistaAzurePipelines = {
    nome: 'azure-pipelines',
    categoria: 'workflows',
    descricao: 'Analista de configurações do Azure Pipelines',
    test: (relPath) => (relPath === 'azure-pipelines.yml' || relPath.endsWith('azure-pipelines.yml') || relPath.includes('/azure-pipelines/')) && /\.(ya?ml)$/i.test(relPath),
    aplicar: async (conteudo, relPath, _ast = null, _fc, contexto) => {
        const ocorrencias = [];
        try {
            const securityResults = await Promise.resolve(detectorAzureSecurity.aplicar(conteudo, relPath, null, _fc, contexto));
            const performanceResults = await Promise.resolve(detectorAzurePerformance.aplicar(conteudo, relPath, null, _fc, contexto));
            ocorrencias.push(...securityResults, ...performanceResults);
            const doc = parseDocument(conteudo);
            const configData = doc.toJS();
            if (configData) {
                if (configData.version && parseFloat(String(configData.version)) < 1.0) {
                    ocorrencias.push({
                        tipo: 'AZURE_OBSOLETE_VERSION',
                        mensagem: 'Versão do schema do Azure Pipelines está obsoleta',
                        relPath,
                        linha: 1,
                        nivel: 'aviso',
                        sugestao: 'Remova o campo "version" para usar o schema YAML moderno'
                    });
                }
                if (configData.variables && Object.keys(configData.variables).length > 20) {
                    ocorrencias.push({
                        tipo: 'AZURE_TOO_MANY_VARIABLES',
                        mensagem: 'Muitas variáveis globais definidas no pipeline',
                        relPath,
                        linha: 1,
                        nivel: 'info',
                        sugestao: 'Considere usar Variable Groups para organizar variáveis comuns'
                    });
                }
            }
        }
        catch {
        }
        return ocorrencias;
    }
};
//# sourceMappingURL=analyst-azure.js.map