// AKAI Utils — shared utility functions function esc(s) { if (!s) return '' return s.replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, ''') } function sanitize(s) { return s.replace(/[^a-zA-Z0-9_-]/g, '_') } function formatBytes(bytes) { if (bytes === 0) return '0 B' const k = 1024 const sizes = ['B', 'KB', 'MB', 'GB'] const i = Math.floor(Math.log(bytes) / Math.log(k)) return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i] } function formatTime(secs) { const m = Math.floor(secs / 60) const s = Math.floor(secs % 60) return m + ':' + s.toString().padStart(2, '0') } if (typeof module !== 'undefined' && module.exports) { module.exports = { esc, sanitize, formatBytes, formatTime } }