nestjs-multer-extended-aws-latest
Version:
Extended MulterModule for NestJS Latest AWS SDK
66 lines (65 loc) • 2.77 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSharpOptions = exports.isOriginalSuffix = exports.getSharpOptionProps = exports.transformImage = exports.transformException = void 0;
const common_1 = require("@nestjs/common");
const sharp_1 = __importDefault(require("sharp"));
const enums_1 = require("./enums");
const transformException = (error) => {
if (!error || error instanceof common_1.HttpException) {
return error;
}
switch (error.message) {
case enums_1.MulterExceptions.LIMIT_FILE_SIZE:
return new common_1.PayloadTooLargeException(error.message);
case enums_1.MulterExceptions.LIMIT_FILE_COUNT:
case enums_1.MulterExceptions.LIMIT_FIELD_KEY:
case enums_1.MulterExceptions.LIMIT_FIELD_VALUE:
case enums_1.MulterExceptions.LIMIT_FIELD_COUNT:
case enums_1.MulterExceptions.LIMIT_UNEXPECTED_FILE:
case enums_1.MulterExceptions.LIMIT_PART_COUNT:
case enums_1.MulterExceptions.INVALID_IMAGE_FILE_TYPE:
return new common_1.BadRequestException(error.message);
}
return error;
};
exports.transformException = transformException;
const transformImage = (options, size) => {
let imageStream = sharp_1.default({ failOnError: false });
for (const [key, value] of Object.entries(options)) {
if (value) {
imageStream = resolveImageStream(key, value, size, imageStream);
}
}
return imageStream;
};
exports.transformImage = transformImage;
const getSharpOptionProps = (storageOpts) => {
const prop = Object.keys(storageOpts).filter(p => p === 'resize' || p === 'resizeMultiple')[0];
return storageOpts[prop];
};
exports.getSharpOptionProps = getSharpOptionProps;
const isOriginalSuffix = (suffix) => suffix === 'original';
exports.isOriginalSuffix = isOriginalSuffix;
const isObject = obj => typeof obj === 'object' && obj !== null;
const resolveImageStream = (key, value, size, imageStream) => {
switch (key) {
case enums_1.ExtendedOptions.RESIZE_IMAGE:
case enums_1.ExtendedOptions.RESIZE_IMAGE_MULTIPLE_SIZES:
if (isObject(size)) {
imageStream = imageStream.resize(size.width, size.height, size.options);
}
break;
}
return imageStream;
};
const getSharpOptions = (options) => {
return {
resize: options.resize,
resizeMultiple: options.resizeMultiple,
ignoreAspectRatio: options.ignoreAspectRatio,
};
};
exports.getSharpOptions = getSharpOptions;