UNPKG

@nuxt/image

Version:

Nuxt Image Module

32 lines (31 loc) 1.25 kB
import { stringifyQuery } from "ufo"; import { defineProvider } from "../utils/provider.js"; export default defineProvider({ validateDomains: true, getImage: (src, { modifiers, baseURL = "/_vercel/image" }, ctx) => { const validWidths = Object.values(ctx.options.screens || {}).sort((a, b) => a - b); const largestWidth = validWidths[validWidths.length - 1] || 0; let width = Number(modifiers?.width || 0); if (!width) { width = largestWidth; if (import.meta.dev) { console.warn(`A defined width should be provided to use the \`vercel\` provider. Defaulting to \`${largestWidth}\`. Warning originated from \`${src}\`.`); } } else if (!validWidths.includes(width)) { width = validWidths.find((validWidth) => validWidth > width) || largestWidth; if (import.meta.dev) { console.warn(`The width being used (\`${modifiers?.width}\`) should be added to \`image.screens\`. Defaulting to \`${width}\`. Warning originated from \`${src}\`.`); } } if (import.meta.dev) { return { url: src }; } return { url: baseURL + "?" + stringifyQuery({ url: src, w: String(width), q: String(modifiers?.quality || "100") }) }; } });