@caidrive/shared
Version:
caidrive.shared.components
73 lines (72 loc) • 3.03 kB
JavaScript
;
/**
*
*
*/
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FormDataParser = void 0;
const formidable_1 = __importDefault(require("formidable"));
const node_buffer_1 = require("node:buffer");
const node_stream_1 = require("node:stream");
const core_1 = require("../core");
class FormDataParser {
static parse(req) {
return __awaiter(this, void 0, void 0, function* () {
try {
// const [fields, files] = await Parser.form.parse(req);
let data;
const form = (0, formidable_1.default)({
// 10mb
maxFileSize: 10 * 1024 * 1024,
allowEmptyFiles: false,
multiples: true,
fileWriteStreamHandler: (file) => {
data = {};
const chunks = [];
const writable = new node_stream_1.Writable({
write(chunk, enc, next) {
chunks.push(chunk);
next();
},
destroy() { },
final(cb) {
const buffer = node_buffer_1.Buffer.concat(chunks);
// if filename option is not provided file.newFilename will be a random string
/*eslint-disable */
data = buffer;
cb();
},
});
return writable;
},
});
const [fields, files] = yield form.parse(req);
return core_1.Result.ok([
fields,
files,
data,
]);
}
catch (error) {
console.log(error);
/**
*
*/
return core_1.Result.fail(error === null || error === void 0 ? void 0 : error.code);
}
});
}
}
exports.FormDataParser = FormDataParser;