payload-plugin-cloud-storage
Version:
Remote storage plugin for Payload CMS.
39 lines (38 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const uploadHook = (adapter) => {
const beforeChange = async (args) => {
var _a;
const { req, data } = args;
if ((_a = req === null || req === void 0 ? void 0 : req.files) === null || _a === void 0 ? void 0 : _a.file) {
let uploadedFile;
if (Array.isArray(req.files.file)) {
uploadedFile = req.files.file[0];
}
else {
uploadedFile = req.files.file;
}
const resizedBuffers = req.payloadUploadSizes
? Object.keys(req.payloadUploadSizes)
.map(uploadSize => {
var _a, _b, _c;
const name = (_b = (_a = data === null || data === void 0 ? void 0 : data.sizes) === null || _a === void 0 ? void 0 : _a[uploadSize]) === null || _b === void 0 ? void 0 : _b.filename;
const mimetype = uploadedFile === null || uploadedFile === void 0 ? void 0 : uploadedFile.mimetype;
const buffer = (_c = req === null || req === void 0 ? void 0 : req.payloadUploadSizes) === null || _c === void 0 ? void 0 : _c[uploadSize];
if (name && mimetype && buffer) {
return adapter.upload({
name,
data: buffer,
mimetype: mimetype
});
}
return null;
})
.filter(buffer => buffer !== null)
: [];
await Promise.all([adapter.upload(uploadedFile), ...resizedBuffers]);
}
};
return beforeChange;
};
exports.default = uploadHook;