kjelsrud.dev/node_modules/astro/dist/assets/services/sharp.js

62 lines
1.7 KiB
JavaScript
Raw Normal View History

2023-07-19 21:31:30 +02:00
import {
baseService,
parseQuality
} from "./service.js";
let sharp;
const qualityTable = {
low: 25,
mid: 50,
high: 80,
max: 100
};
async function loadSharp() {
let sharpImport;
try {
sharpImport = (await import("sharp")).default;
} catch (e) {
throw new Error("Could not find Sharp. Please install Sharp manually into your project.");
}
return sharpImport;
}
const sharpService = {
validateOptions: baseService.validateOptions,
getURL: baseService.getURL,
parseURL: baseService.parseURL,
getHTMLAttributes: baseService.getHTMLAttributes,
async transform(inputBuffer, transformOptions) {
if (!sharp)
sharp = await loadSharp();
const transform = transformOptions;
if (transform.format === "svg")
return { data: inputBuffer, format: "svg" };
let result = sharp(inputBuffer, { failOnError: false, pages: -1 });
result.rotate();
if (transform.height && !transform.width) {
result.resize({ height: transform.height });
} else if (transform.width) {
result.resize({ width: transform.width });
}
if (transform.format) {
let quality = void 0;
if (transform.quality) {
const parsedQuality = parseQuality(transform.quality);
if (typeof parsedQuality === "number") {
quality = parsedQuality;
} else {
quality = transform.quality in qualityTable ? qualityTable[transform.quality] : void 0;
}
}
result.toFormat(transform.format, { quality });
}
const { data, info } = await result.toBuffer({ resolveWithObject: true });
return {
data,
format: info.format
};
}
};
var sharp_default = sharpService;
export {
sharp_default as default
};