UNPKG

@jadl/builders

Version:
75 lines (74 loc) 2.15 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileBuilder = void 0; const form_data_1 = __importDefault(require("form-data")); /** * File builder for easily sending file(s) as a response * @example * return new FileBuilder() * .add('image.png', imageBuffer) * .add('info.txt', Buffer.from('What\'s up!')) */ class FileBuilder { constructor(files = []) { this.files = files; } /** * Adds a file to be sent * @param name Name of file * @param buffer Buffer of the file * @returns {FileBuilder} */ add(name, buffer) { this.files.push({ name, buffer }); return this; } /** * Removes a file from the builder * @param name Name of file * @returns {FileBuilder} */ remove(name) { this.files = this.files.filter((x) => x.name !== name); return this; } /** * Finds a file by it's name * @param name Name of file * @returns {FileBuilderFile} */ find(name) { return this.files.find((x) => x.name === name); } /** * Clones this file builder to a deep cloned new FileBuilder * @returns {FileBuilder} cloned FileBuilder */ clone() { return new FileBuilder(this.files.map((x) => ({ name: x.name, buffer: Buffer.from(x.buffer) }))); } /** * Renders the FileBuilder to form-data * @returns {FormData} */ toFormData() { const form = new form_data_1.default(); if (this.files.length < 2) { form.append('file', this.files[0].buffer, this.files[0].name); } else { for (let i = 0; i < this.files.length; i++) { const file = this.files[i]; form.append(`file${i}`, file.buffer, file.name); } } return form; } } exports.FileBuilder = FileBuilder;