UNPKG

dev-lamp

Version:

Your friendly lighthouse performance companion - 100% local

35 lines 1.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileWriter = void 0; const promises_1 = require("fs/promises"); const path_1 = require("path"); const promises_2 = require("fs/promises"); const path_sanitizer_1 = require("./path-sanitizer"); class FileWriter { async write(content, outputPath) { // Sanitize the output path const sanitization = path_sanitizer_1.PathSanitizer.sanitizeOutputPath(outputPath); if (!sanitization.safe) { throw new Error(`Invalid output path: ${sanitization.error}`); } const safePath = sanitization.sanitized || outputPath; const absolutePath = (0, path_1.resolve)(safePath); // Ensure directory exists const dir = (0, path_1.dirname)(absolutePath); await (0, promises_2.mkdir)(dir, { recursive: true }); // Validate content if (!content || typeof content !== 'string') { throw new Error('Invalid content to write'); } // Limit file size to 10MB const maxSize = 10 * 1024 * 1024; if (content.length > maxSize) { throw new Error(`Content exceeds maximum size of ${maxSize} bytes`); } // Write file await (0, promises_1.writeFile)(absolutePath, content, 'utf-8'); return absolutePath; } } exports.FileWriter = FileWriter; //# sourceMappingURL=file-writer.js.map