dev-lamp
Version:
Your friendly lighthouse performance companion - 100% local
35 lines • 1.42 kB
JavaScript
;
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