UNPKG

@nuxt/image

Version:

Nuxt Image Module

58 lines (57 loc) 1.4 kB
import { joinURL, hasProtocol } from "ufo"; import { createOperationsGenerator } from "../utils/index.js"; import { defineProvider } from "../utils/provider.js"; const operationsGenerator = createOperationsGenerator({ keyMap: { fit: "func", quality: "q", format: "force_format" }, valueMap: { fit: { cover: "crop", contain: "fit", fill: "cover", inside: "bound", outside: "boundmin" } } }); export default defineProvider({ getImage: (src, { modifiers, baseURL, token = "", apiVersion = "", cdnURL = "" }, ctx) => { const operations = operationsGenerator(modifiers); const query = operations ? "?" + operations : ""; if (import.meta.dev) { const warning = []; if (!token && !cdnURL) { warning.push("<token> or <cdnURL>"); } if (warning.length > 0) { console.warn(`[cloudimage] ${warning.join(", ")} is required to build image URL`); return { url: joinURL("<token>", "<baseURL>", src) + query }; } } if (!cdnURL) { cdnURL = `https://${token}.cloudimg.io/${apiVersion}`; } if (hasProtocol(src)) { return { url: joinURL(cdnURL, src) + query }; } if (!baseURL) { baseURL = ctx.options.nuxt.baseURL; } return { url: joinURL(cdnURL, baseURL, src) + query }; } });