full site update
This commit is contained in:
43
node_modules/astro/dist/assets/services/sharp.js
generated
vendored
43
node_modules/astro/dist/assets/services/sharp.js
generated
vendored
@@ -20,6 +20,15 @@ async function loadSharp() {
|
||||
sharpImport.cache(false);
|
||||
return sharpImport;
|
||||
}
|
||||
const fitMap = {
|
||||
fill: "fill",
|
||||
contain: "inside",
|
||||
cover: "cover",
|
||||
none: "outside",
|
||||
"scale-down": "inside",
|
||||
outside: "outside",
|
||||
inside: "inside"
|
||||
};
|
||||
const sharpService = {
|
||||
validateOptions: baseService.validateOptions,
|
||||
getURL: baseService.getURL,
|
||||
@@ -36,10 +45,26 @@ const sharpService = {
|
||||
limitInputPixels: config.service.config.limitInputPixels
|
||||
});
|
||||
result.rotate();
|
||||
if (transform.height && !transform.width) {
|
||||
result.resize({ height: Math.round(transform.height) });
|
||||
const withoutEnlargement = Boolean(transform.fit);
|
||||
if (transform.width && transform.height && transform.fit) {
|
||||
const fit = fitMap[transform.fit] ?? "inside";
|
||||
result.resize({
|
||||
width: Math.round(transform.width),
|
||||
height: Math.round(transform.height),
|
||||
fit,
|
||||
position: transform.position,
|
||||
withoutEnlargement
|
||||
});
|
||||
} else if (transform.height && !transform.width) {
|
||||
result.resize({
|
||||
height: Math.round(transform.height),
|
||||
withoutEnlargement
|
||||
});
|
||||
} else if (transform.width) {
|
||||
result.resize({ width: Math.round(transform.width) });
|
||||
result.resize({
|
||||
width: Math.round(transform.width),
|
||||
withoutEnlargement
|
||||
});
|
||||
}
|
||||
if (transform.format) {
|
||||
let quality = void 0;
|
||||
@@ -51,7 +76,17 @@ const sharpService = {
|
||||
quality = transform.quality in qualityTable ? qualityTable[transform.quality] : void 0;
|
||||
}
|
||||
}
|
||||
result.toFormat(transform.format, { quality });
|
||||
const isGifInput = inputBuffer[0] === 71 && // 'G'
|
||||
inputBuffer[1] === 73 && // 'I'
|
||||
inputBuffer[2] === 70 && // 'F'
|
||||
inputBuffer[3] === 56 && // '8'
|
||||
(inputBuffer[4] === 57 || inputBuffer[4] === 55) && // '9' or '7'
|
||||
inputBuffer[5] === 97;
|
||||
if (transform.format === "webp" && isGifInput) {
|
||||
result.webp({ quality: typeof quality === "number" ? quality : void 0, loop: 0 });
|
||||
} else {
|
||||
result.toFormat(transform.format, { quality });
|
||||
}
|
||||
}
|
||||
const { data, info } = await result.toBuffer({ resolveWithObject: true });
|
||||
return {
|
||||
|
Reference in New Issue
Block a user