UNPKG

@dawans/promptshield

Version:

Secure your LLM stack with enterprise-grade RulePacks for AI safety scanning

68 lines (67 loc) 2.12 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ViolationUtils = void 0; /** * Utility functions for working with violations */ exports.ViolationUtils = { /** * Creates a violation summary from a list of violations */ createSummary(violations) { const summary = { total: violations.length, bySeverity: {}, byCategory: {}, byRule: {}, }; violations.forEach((violation) => { // Count by severity summary.bySeverity[violation.severity] = (summary.bySeverity[violation.severity] || 0) + 1; // Count by category summary.byCategory[violation.category] = (summary.byCategory[violation.category] || 0) + 1; // Count by rule summary.byRule[violation.ruleId] = (summary.byRule[violation.ruleId] || 0) + 1; }); return summary; }, /** * Filters violations by severity */ filterBySeverity(violations, severities) { if (severities.length === 0) return violations; return violations.filter((v) => severities.includes(v.severity)); }, /** * Filters violations by category */ filterByCategory(violations, categories) { if (categories.length === 0) return violations; return violations.filter((v) => categories.includes(v.category)); }, /** * Sorts violations by severity (critical first) */ sortBySeverity(violations) { const severityOrder = { critical: 0, high: 1, medium: 2, low: 3 }; return violations.sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]); }, /** * Groups violations by field */ groupByField(violations) { const groups = {}; violations.forEach((violation) => { if (!groups[violation.field]) { groups[violation.field] = []; } groups[violation.field].push(violation); }); return groups; }, };