This repository has been archived on 2025-12-24. You can view files and clone it, but cannot push or open issues or pull requests.
site-template/packages/imagetoolsNew/api/utils/getProcessedImage.js
2025-03-07 14:59:06 +01:00

59 lines
1.3 KiB
JavaScript

// @ts-check
import { fileURLToPath } from "node:url";
import { extname, relative, resolve } from "node:path";
import { getSrcPath } from "./getSrcPath.js";
import getResolvedSrc from "./getResolvedSrc.js";
import { cwd } from "../../utils/runtimeChecks.js";
import throwErrorIfUnsupported from "./throwErrorIfUnsupported.js";
import { getImageDetails } from "./imagetools.js"
export default async function getProcessedImage(src, transformConfigs) {
throwErrorIfUnsupported(src, extname(src).slice(1));
let base;
debugger
if (src.match("(http://|https://|data:image/).*")) {
({ src, base } = await getResolvedSrc(src))
} else {
const {
default: { isSsrBuild },
} = await import("../../astroViteConfigs.js");
if (isSsrBuild) {
const filename = fileURLToPath(import.meta.url)
const assetPath = resolve(filename, "../../client") + src
src = "/" + relative(cwd, assetPath)
}
}
const {
w,
h,
ar,
width = w,
height = h,
aspect = ar,
...rest
} = transformConfigs;
const path = src.replace(/\\/g, `/`);
const { image, imageWidth, imageHeight, imageFormat } = await getImageDetails(
await getSrcPath(src),
width,
height,
aspect
);
return {
path,
base,
rest,
image,
imageWidth,
imageHeight,
imageFormat,
};
}