@nuxt/image
Version:
Nuxt Image Module
34 lines (33 loc) • 1 kB
JavaScript
import { joinURL, encodePath, encodeParam } from "ufo";
import { createOperationsGenerator } from "../utils/index.js";
import { defineProvider } from "../utils/provider.js";
export const operationsGenerator = createOperationsGenerator({
keyMap: {
format: "f",
width: "w",
height: "h",
resize: "s",
quality: "q",
background: "b",
position: "pos"
},
formatter: (key, val) => encodeParam(key) + "_" + encodeParam(val.toString())
});
export default defineProvider({
validateDomains: true,
supportsAlias: true,
getImage: (src, { modifiers, baseURL }, ctx) => {
if (modifiers.width && modifiers.height) {
modifiers.resize = `${modifiers.width}x${modifiers.height}`;
delete modifiers.width;
delete modifiers.height;
}
const params = operationsGenerator(modifiers) || "_";
if (!baseURL) {
baseURL = joinURL(ctx.options.nuxt.baseURL, "/_ipx");
}
return {
url: joinURL(baseURL, params, encodePath(src))
};
}
});