@dawans/promptshield
Version:
Secure your LLM stack with enterprise-grade RulePacks for AI safety scanning
68 lines (67 loc) • 2.12 kB
JavaScript
;
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;
},
};