diff --git a/src/runtime/providers/ipx.ts b/src/runtime/providers/ipx.ts index d39a18621..9f8e01014 100644 --- a/src/runtime/providers/ipx.ts +++ b/src/runtime/providers/ipx.ts @@ -2,7 +2,7 @@ import { joinURL, encodePath, encodeParam } from 'ufo' import type { ProviderGetImage } from '../../module' import { createOperationsGenerator } from '#image' -const operationsGenerator = createOperationsGenerator({ +export const operationsGenerator = createOperationsGenerator({ keyMap: { format: 'f', fit: 'fit', diff --git a/src/runtime/providers/ipxStatic.ts b/src/runtime/providers/ipxStatic.ts index c1eab0d6a..fc3391eee 100644 --- a/src/runtime/providers/ipxStatic.ts +++ b/src/runtime/providers/ipxStatic.ts @@ -1 +1,23 @@ -export * from './ipx' +import { joinURL, encodePath } from 'ufo' +import type { ProviderGetImage } from '../../module' +import { operationsGenerator } from './ipx' + +export const getImage: ProviderGetImage = (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).replace(/\/{2,}/g, '/')), + } +} + +export { validateDomains, supportsAlias } from './ipx'