UNPKG

@dawans/promptshield

Version:

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

79 lines (78 loc) 2.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScanMetricsUtils = void 0; /** * Utility functions for working with scan metrics */ exports.ScanMetricsUtils = { /** * Calculates average processing time per object */ calculateAverageTimePerObject(metrics) { if (metrics.objectsScanned === 0) return 0; return metrics.processingTime / metrics.objectsScanned; }, /** * Formats processing time as human-readable string */ formatProcessingTime(milliseconds) { if (milliseconds < 1000) { return `${Math.round(milliseconds)}ms`; } else if (milliseconds < 60000) { return `${(milliseconds / 1000).toFixed(1)}s`; } else { const minutes = Math.floor(milliseconds / 60000); const seconds = Math.floor((milliseconds % 60000) / 1000); return `${minutes}m ${seconds}s`; } }, /** * Formats memory usage as human-readable string */ formatMemoryUsage(bytes) { const units = ['B', 'KB', 'MB', 'GB']; let value = bytes; let unitIndex = 0; while (value >= 1024 && unitIndex < units.length - 1) { value /= 1024; unitIndex++; } return `${value.toFixed(1)} ${units[unitIndex]}`; }, /** * Calculates processing rate (objects per second) */ calculateProcessingRate(metrics) { if (metrics.processingTime === 0) return 0; return (metrics.objectsScanned / metrics.processingTime) * 1000; }, /** * Checks if memory usage is above threshold */ isMemoryUsageHigh(metrics, threshold) { const totalMemory = process.memoryUsage().heapTotal; return metrics.memoryUsage / totalMemory > threshold; }, /** * Creates a summary of key metrics */ createSummary(metrics) { const items = [ `${metrics.objectsScanned} objects scanned`, `${this.formatProcessingTime(metrics.processingTime)} processing time`, `${this.formatMemoryUsage(metrics.memoryUsage)} memory used`, `${metrics.rulesApplied} rules applied`, ]; if (metrics.averageTimePerObject) { items.push(`${this.formatProcessingTime(metrics.averageTimePerObject)} avg per object`); } if (metrics.parallelWorkers && metrics.parallelWorkers > 1) { items.push(`${metrics.parallelWorkers} parallel workers`); } return items.join(', '); }, };