Socket
Socket
Sign inDemoInstall

@mapbox/appropriate-images

Package Overview
Dependencies
297
Maintainers
14
Versions
21
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.1.0-beta.6 to 4.1.0-beta.7

74

lib/optimize.js
'use strict';
const _ = require('lodash');
const fs = require('fs').promises;
const pify = require('pify');
const fs = require('fs');
const imagemin = require('imagemin');

@@ -9,3 +10,6 @@ const imageminPngquant = require('imagemin-pngquant');

const imageminWebp = require('imagemin-webp');
const pLimit = require('p-limit');
const limit = pLimit(1);
/**

@@ -18,13 +22,10 @@ * Given output from imagemin, write image files.

*/
async function writeOptimizedImages(imageData) {
let destinationPaths = [];
for (const item of imageData) {
try {
await fs.writeFile(item.destinationPath, item.data);
destinationPaths.push(item.destinationPath);
} catch (error) {
throw new Error(error);
}
}
return destinationPaths;
function writeOptimizedImages(imageData) {
return Promise.all(
imageData.map((item) =>
pify(fs.writeFile)(item.destinationPath, item.data).then(
() => item.destinationPath
)
)
);
}

@@ -44,36 +45,25 @@

*/
module.exports = async (imageFilenames, options) => {
module.exports = (imageFilenames, options) => {
// These are two separate processes because otherwise the webp plugin
// overrides the others, somehow.
let filenameArrays = [];
try {
const regularOptimizations = await imagemin(imageFilenames, {
destination: options.outputDirectory,
plugins: [
imageminPngquant(options.pngquant),
imageminMozjpeg(options.mozjpeg)
]
});
filenameArrays = [
...filenameArrays,
...(await writeOptimizedImages(regularOptimizations))
];
} catch (err) {
throw new Error(err);
}
try {
const webpOptimizations = await imagemin(imageFilenames, {
destination: options.outputDirectory,
plugins: [imageminWebp(options.webp)]
});
filenameArrays = [
...filenameArrays,
...(await writeOptimizedImages(webpOptimizations))
];
} catch (err) {
throw new Error(err);
}
const regularOptimizations = imagemin(imageFilenames, {
destination: options.outputDirectory,
plugins: [
imageminPngquant(options.pngquant),
imageminMozjpeg(options.mozjpeg)
]
}).then(writeOptimizedImages);
return _.flatten(filenameArrays);
const webpOptimizations = imagemin(imageFilenames, {
destination: options.outputDirectory,
plugins: [imageminWebp(options.webp)]
}).then(writeOptimizedImages);
const input = [
limit(() => regularOptimizations),
limit(() => webpOptimizations)
];
return Promise.all(input).then((filenameArrays) => _.flatten(filenameArrays));
};
{
"name": "@mapbox/appropriate-images",
"version": "4.1.0-beta.6",
"version": "4.1.0-beta.7",
"description": "Get appropriately sized images into your website.",

@@ -45,2 +45,3 @@ "main": "index.js",

"p-finally": "^2.0.1",
"p-limit": "^3.1.0",
"pify": "^5.0.0",

@@ -47,0 +48,0 @@ "sharp": "^0.27.1",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc