UNPKG

hastily

Version:

express middleware to simulate fastly cdn

84 lines 6.17 kB
export const optoFitToSharp = { bounds: 'inside', cover: 'outside', crop: 'cover', }; // sharp supports mitchell interpolation and not bilinear, // but who's gonna notice? export const optoResizeFilterToSharp = { bicubic: 'cubic', bilinear: 'mitchell', cubic: 'cubic', lanczos: 'lanczos3', lanczos2: 'lanczos2', lanczos3: 'lanczos3', linear: 'mitchell', nearest: 'nearest', }; /** * @hidden */ const resize = (sharp, params) => { if (!params.has('width')) { params.warn('unsupported', 'width', 'resize without width param. Will not resize.'); return false; } const nums = params.toNumbers(['width', 'height', 'dpr']); const width = nums[0]; let height = nums[1]; const dpr = nums[2]; for (const [name, param] of [ ['width', width], ['height', height], ]) { if (param < 1 && param > 0) { params.warn('unsupported', name, 'ratio-based resize/crop. Will not apply.'); return false; } } if (isNaN(width)) { params.warn('invalid', 'width', 'resize with non-numeric width param'); return false; } if (isNaN(height)) { height = undefined; } const { log } = params; log.debug('width %s, height %s, dpr %s', width, height, dpr); const options = { withoutEnlargement: true, }; if (params.has('fit')) { const fitOpt = params.get('fit'); const fit = optoFitToSharp[fitOpt]; if (fit) { options.fit = fit; } else { params.warn('unsupported', 'fit'); } log.debug('mapped options.fit from %s -> %s', fitOpt, options.fit); } else if (typeof height === 'number' && height > 0) { options.fit = 'fill'; } if (params.get('enable') === 'true' || params.get('disable') === 'false') { log.debug('overriding withoutEnlargement to false, yucky enlargement enabled'); options.withoutEnlargement = false; } if (params.has('resize-filter')) { const filterOpt = params.get('resize-filter'); const kernel = optoResizeFilterToSharp[filterOpt]; if (kernel) { options.kernel = kernel; } else { params.warn('unsupported', 'fit'); } log.debug('mapped options.resize-filter from %s -> %s', filterOpt, options.kernel); } log.debug('sharp.resize(%s, %s, %o)', width, height, options); return sharp.resize(width, height, options); }; export default resize; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9tYXBwZXJzL3Jlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWtDO0lBQzNELE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLElBQUksRUFBRSxPQUFPO0NBQ2QsQ0FBQztBQUVGLDBEQUEwRDtBQUMxRCwwQkFBMEI7QUFDMUIsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQXFDO0lBQ3ZFLE9BQU8sRUFBRSxPQUFPO0lBQ2hCLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLEtBQUssRUFBRSxPQUFPO0lBQ2QsT0FBTyxFQUFFLFVBQVU7SUFDbkIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsUUFBUSxFQUFFLFVBQVU7SUFDcEIsTUFBTSxFQUFFLFVBQVU7SUFDbEIsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxNQUFNLEdBQVcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7SUFDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxDQUFDLElBQUksQ0FDVCxhQUFhLEVBQ2IsT0FBTyxFQUNQLDhDQUE4QyxDQUMvQyxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxLQUFLLEdBQVcsSUFBSSxDQUFDLENBQUMsQ0FBVyxDQUFDO0lBQ3hDLElBQUksTUFBTSxHQUF1QixJQUFJLENBQUMsQ0FBQyxDQUFXLENBQUM7SUFDbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLEtBQUss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