UNPKG

@sigiljs/sigil

Version:

TypeScript-first Node.js HTTP framework offering schema-driven routing, modifier-based middleware, plugin extensibility, and flexible response templating

46 lines (45 loc) 1.16 kB
import f from "formidable"; import { Writable as c } from "node:stream"; import p from "../../utils/non-nullable.mjs"; import F from "../containers/incoming-body.mjs"; import d from "../containers/incoming-file.mjs"; async function S(m, o) { const n = {}, [r, t] = await f({ maxTotalFileSize: 104857600, maxFileSize: 10485760, maxFiles: 10, allowEmptyFiles: !1, maxFieldsSize: 5242880, maxFields: o?.fieldsLimit, filename: () => crypto.randomUUID(), // Custom write stream to collect file chunks in memory fileWriteStreamHandler: (a) => { const i = []; return new c({ write(e, u, s) { i.push(e), s(); }, final(e) { n[a.newFilename] = Buffer.concat(i), e(); } }); } }).parse(m), l = p( Object.entries(t).map( ([a, i]) => i?.map((e) => new d({ key: a, name: e.newFilename, originalName: e.originalFilename ?? "", mimeType: e.mimetype ?? "application/octet-stream", buffer: n[e.newFilename] })) ) ).flat(); return { body: new F(r), files: l }; } export { S as default };