first
This commit is contained in:
151
node_modules/@11ty/eleventy-img/img.js
generated
vendored
Normal file
151
node_modules/@11ty/eleventy-img/img.js
generated
vendored
Normal file
@ -0,0 +1,151 @@
|
||||
const {default: PQueue} = require("p-queue");
|
||||
|
||||
const DeferCounter = require("./src/defer-counter.js");
|
||||
const BuildLogger = require("./src/build-logger.js");
|
||||
const Util = require("./src/util.js");
|
||||
const Image = require("./src/image.js");
|
||||
const DirectoryManager = require("./src/directory-manager.js");
|
||||
|
||||
// For exports
|
||||
const getImageSize = require("image-size");
|
||||
const ImagePath = require("./src/image-path.js");
|
||||
|
||||
const debug = require("debug")("Eleventy:Image");
|
||||
|
||||
const GLOBAL_OPTIONS = require("./src/global-options.js").defaults;
|
||||
|
||||
const { memCache, diskCache } = require("./src/caches.js");
|
||||
|
||||
let deferCounter = new DeferCounter();
|
||||
let buildLogger = new BuildLogger();
|
||||
let directoryManager = new DirectoryManager();
|
||||
|
||||
/* Queue */
|
||||
let processingQueue = new PQueue({
|
||||
concurrency: GLOBAL_OPTIONS.concurrency
|
||||
});
|
||||
processingQueue.on("active", () => {
|
||||
debug( `Concurrency: ${processingQueue.concurrency}, Size: ${processingQueue.size}, Pending: ${processingQueue.pending}` );
|
||||
});
|
||||
|
||||
// TODO move this into build-logger.js
|
||||
function setupLogger(eleventyConfig, opts) {
|
||||
if(typeof eleventyConfig?.logger?.logWithOptions !== "function" || Util.isRequested(opts?.generatedVia)) {
|
||||
return;
|
||||
}
|
||||
|
||||
buildLogger.setupOnce(eleventyConfig, () => {
|
||||
// before build
|
||||
deferCounter.resetCount();
|
||||
memCache.resetCount();
|
||||
diskCache.resetCount();
|
||||
}, () => {
|
||||
// after build
|
||||
let [memoryCacheHit] = memCache.getCount();
|
||||
let [diskCacheHit, diskCacheMiss] = diskCache.getCount();
|
||||
// these are unique images, multiple requests to optimize the same image are de-duplicated
|
||||
let deferCount = deferCounter.getCount();
|
||||
|
||||
let cachedCount = memoryCacheHit + diskCacheHit;
|
||||
let optimizedCount = diskCacheMiss + diskCacheHit + memoryCacheHit + deferCount;
|
||||
|
||||
let msg = [];
|
||||
msg.push(`${optimizedCount} ${optimizedCount !== 1 ? "images" : "image"} optimized`);
|
||||
|
||||
if(cachedCount > 0 || deferCount > 0) {
|
||||
let innerMsg = [];
|
||||
if(cachedCount > 0) {
|
||||
innerMsg.push(`${cachedCount} cached`);
|
||||
}
|
||||
if(deferCount > 0) {
|
||||
innerMsg.push(`${deferCount} deferred`);
|
||||
}
|
||||
msg.push(` (${innerMsg.join(", ")})`);
|
||||
}
|
||||
|
||||
if(optimizedCount > 0 || cachedCount > 0 || deferCount > 0) {
|
||||
eleventyConfig?.logger?.logWithOptions({
|
||||
message: msg.join(""),
|
||||
prefix: "[11ty/eleventy-img]",
|
||||
color: "green",
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function createImage(src, opts = {}) {
|
||||
let eleventyConfig = opts.eleventyConfig;
|
||||
|
||||
if(opts?.eleventyConfig && {}.propertyIsEnumerable.call(opts, "eleventyConfig")) {
|
||||
delete opts.eleventyConfig;
|
||||
Util.addConfig(eleventyConfig, opts);
|
||||
}
|
||||
|
||||
let img = Image.create(src, opts);
|
||||
|
||||
img.setQueue(processingQueue);
|
||||
img.setBuildLogger(buildLogger);
|
||||
img.setDirectoryManager(directoryManager);
|
||||
|
||||
setupLogger(eleventyConfig, opts);
|
||||
|
||||
if(opts.transformOnRequest) {
|
||||
deferCounter.increment(src);
|
||||
}
|
||||
|
||||
return img;
|
||||
};
|
||||
|
||||
function queueImage(src, opts = {}) {
|
||||
if(src.constructor?.name === "UserConfig") {
|
||||
throw new Error(`Eleventy Image’s default export is not an Eleventy Plugin and cannot be used with \`eleventyConfig.addPlugin()\`. Use the \`eleventyImageTransformPlugin\` named export instead, like this: \`import { eleventyImageTransformPlugin } from '@11ty/eleventy-img';\` or this: \`const { eleventyImageTransformPlugin } = require('@11ty/eleventy-img');\``);
|
||||
}
|
||||
|
||||
let img = createImage(src, opts);
|
||||
return img.queue();
|
||||
}
|
||||
|
||||
// Exports
|
||||
|
||||
module.exports = queueImage;
|
||||
|
||||
Object.defineProperty(module.exports, "concurrency", {
|
||||
get: function() {
|
||||
return processingQueue.concurrency;
|
||||
},
|
||||
set: function(concurrency) {
|
||||
processingQueue.concurrency = concurrency;
|
||||
},
|
||||
});
|
||||
|
||||
module.exports.Util = Util;
|
||||
module.exports.Image = Image;
|
||||
module.exports.ImagePath = ImagePath;
|
||||
module.exports.ImageSize = getImageSize;
|
||||
|
||||
// Backwards compat
|
||||
module.exports.statsSync = Image.statsSync;
|
||||
module.exports.statsByDimensionsSync = Image.statsByDimensionsSync;
|
||||
module.exports.getFormats = Image.getFormatsArray;
|
||||
module.exports.getWidths = Image.getValidWidths;
|
||||
|
||||
module.exports.getHash = function getHash(src, options) {
|
||||
let img = new Image(src, options);
|
||||
return img.getHash();
|
||||
};
|
||||
|
||||
module.exports.setupLogger = setupLogger;
|
||||
|
||||
const generateHTML = require("./src/generate-html.js");
|
||||
module.exports.generateHTML = generateHTML;
|
||||
module.exports.generateObject = generateHTML.generateObject;
|
||||
|
||||
const { eleventyWebcOptionsPlugin } = require("./src/webc-options-plugin.js");
|
||||
module.exports.eleventyImagePlugin = eleventyWebcOptionsPlugin;
|
||||
module.exports.eleventyImageWebcOptionsPlugin = eleventyWebcOptionsPlugin;
|
||||
|
||||
const { eleventyImageTransformPlugin } = require("./src/transform-plugin.js");
|
||||
module.exports.eleventyImageTransformPlugin = eleventyImageTransformPlugin;
|
||||
|
||||
const { eleventyImageOnRequestDuringServePlugin } = require("./src/on-request-during-serve-plugin.js");
|
||||
module.exports.eleventyImageOnRequestDuringServePlugin = eleventyImageOnRequestDuringServePlugin;
|
||||
Reference in New Issue
Block a user