@parcel/transformer-image
Advanced tools
Comparing version
@@ -10,6 +10,2 @@ "use strict"; | ||
var _sharp = _interopRequireDefault(require("sharp")); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
const FORMATS = new Map([['heic', 'heif'], ['heif', 'heif'], ['jpeg', 'jpeg'], ['jpg', 'jpeg'], ['png', 'png'], ['raw', 'raw'], ['tiff', 'tiff'], ['webp', 'webp']]); | ||
@@ -19,6 +15,6 @@ | ||
async transform({ | ||
asset | ||
asset, | ||
options | ||
}) { | ||
asset.isIsolated = true; | ||
let inputBuffer = await asset.getBuffer(); | ||
let width = asset.query.width ? parseInt(asset.query.width, 10) : null; | ||
@@ -28,20 +24,29 @@ let height = asset.query.height ? parseInt(asset.query.height, 10) : null; | ||
let format = asset.query.as ? asset.query.as.toLowerCase().trim() : null; | ||
let imagePipeline = (0, _sharp.default)(inputBuffer); | ||
if (width || height) { | ||
imagePipeline.resize(width, height); | ||
} | ||
if (width || height || quality || format) { | ||
const sharp = await options.packageManager.require('sharp', asset.filePath, { | ||
// Sharp takes too long to install for autoinstall option to make sense | ||
autoinstall: false | ||
}); | ||
let inputBuffer = await asset.getBuffer(); | ||
let imagePipeline = sharp(inputBuffer); | ||
if (format) { | ||
if (!FORMATS.has(format)) { | ||
throw new Error(`Sharp does not support ${format} images.`); | ||
if (width || height) { | ||
imagePipeline.resize(width, height); | ||
} | ||
asset.type = format; | ||
imagePipeline[FORMATS.get(format)]({ | ||
quality | ||
}); | ||
if (format) { | ||
if (!FORMATS.has(format)) { | ||
throw new Error(`Sharp does not support ${format} images.`); | ||
} | ||
asset.type = format; | ||
imagePipeline[FORMATS.get(format)]({ | ||
quality | ||
}); | ||
} | ||
asset.setStream(imagePipeline); | ||
} | ||
asset.setStream(imagePipeline); | ||
return [asset]; | ||
@@ -48,0 +53,0 @@ } |
{ | ||
"name": "@parcel/transformer-image", | ||
"version": "2.0.0-nightly.1982+82747eb5", | ||
"version": "2.0.0-nightly.1984+46e8ffa3", | ||
"license": "MIT", | ||
@@ -19,6 +19,8 @@ "publishConfig": { | ||
"dependencies": { | ||
"@parcel/plugin": "2.0.0-nightly.360+82747eb5", | ||
"@parcel/plugin": "2.0.0-nightly.362+46e8ffa3" | ||
}, | ||
"devDependencies": { | ||
"sharp": "^0.24.1" | ||
}, | ||
"gitHead": "82747eb5778248d8db35186ec424687f91db5942" | ||
"gitHead": "46e8ffa3e781fcbee71dfba2fe83b7c0857f4866" | ||
} |
// @flow | ||
import {Transformer} from '@parcel/plugin'; | ||
import sharp from 'sharp'; | ||
@@ -17,6 +16,5 @@ const FORMATS = new Map([ | ||
export default (new Transformer({ | ||
async transform({asset}) { | ||
async transform({asset, options}) { | ||
asset.isIsolated = true; | ||
let inputBuffer = await asset.getBuffer(); | ||
let width = asset.query.width ? parseInt(asset.query.width, 10) : null; | ||
@@ -29,23 +27,35 @@ let height = asset.query.height ? parseInt(asset.query.height, 10) : null; | ||
let imagePipeline = sharp(inputBuffer); | ||
if (width || height) { | ||
imagePipeline.resize(width, height); | ||
} | ||
if (width || height || quality || format) { | ||
const sharp = await options.packageManager.require( | ||
'sharp', | ||
asset.filePath, | ||
{ | ||
// Sharp takes too long to install for autoinstall option to make sense | ||
autoinstall: false, | ||
}, | ||
); | ||
if (format) { | ||
if (!FORMATS.has(format)) { | ||
throw new Error(`Sharp does not support ${format} images.`); | ||
let inputBuffer = await asset.getBuffer(); | ||
let imagePipeline = sharp(inputBuffer); | ||
if (width || height) { | ||
imagePipeline.resize(width, height); | ||
} | ||
asset.type = format; | ||
if (format) { | ||
if (!FORMATS.has(format)) { | ||
throw new Error(`Sharp does not support ${format} images.`); | ||
} | ||
imagePipeline[FORMATS.get(format)]({ | ||
quality, | ||
}); | ||
asset.type = format; | ||
imagePipeline[FORMATS.get(format)]({ | ||
quality, | ||
}); | ||
} | ||
asset.setStream(imagePipeline); | ||
} | ||
asset.setStream(imagePipeline); | ||
return [asset]; | ||
}, | ||
}): Transformer); |
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
Manifest confusion
Supply chain riskThis package has inconsistent metadata. This could be malicious or caused by an error when publishing the package.
Found 1 instance in 1 package
4689
11.09%1
-50%90
18.42%1
Infinity%- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed