diff --git a/src/module.ts b/src/module.ts index b895d5d62..718cf43fe 100644 --- a/src/module.ts +++ b/src/module.ts @@ -3,7 +3,7 @@ import process from 'node:process' import { hasProtocol, parseURL, withLeadingSlash } from 'ufo' import { defineNuxtModule, addTemplate, addImports, addServerImports, createResolver, addComponent, addPlugin, addServerTemplate, addTypeTemplate } from '@nuxt/kit' import { join, relative, resolve } from 'pathe' -import { resolveProviders, detectProvider, resolveProvider, BuiltInProviders } from './provider' +import { resolveProviders, detectProvider, resolveProvider, BuiltInProviders, isBuiltInProvider } from './provider' import type { ImageOptions, InputProvider, CreateImageOptions, ImageModuleProvider, ImageProviders } from './types' import { existsSync } from 'node:fs' @@ -122,7 +122,7 @@ export default defineNuxtModule({ provider: ${JSON.stringify(options.provider)} } interface ConfiguredImageProviders { -${providers.map(p => ` ${JSON.stringify(p.name)}: ${BuiltInProviders.includes(p.name as 'ipx') ? `ImageProviders[${JSON.stringify(p.name)}]` : `ReturnType extends ImageProvider ? Options : unknown `}`).join('\n')} +${providers.map(p => ` ${JSON.stringify(p.name)}: ${isBuiltInProvider(p) ? `ImageProviders[${JSON.stringify(p.name)}]` : `ReturnType extends ImageProvider ? Options : unknown `}`).join('\n')} } interface ImageProviders { ${BuiltInProviders.map(p => ` ${JSON.stringify(p)}: ReturnType extends ImageProvider ? Options : unknown `).join('\n')} diff --git a/src/provider.ts b/src/provider.ts index f3fe3b4ca..520106f7c 100644 --- a/src/provider.ts +++ b/src/provider.ts @@ -54,6 +54,13 @@ export const BuiltInProviders = [ 'sirv', ] as const +const resolver = createResolver(import.meta.url) +const providerRuntime = resolver.resolve('./runtime/providers/') + +export function isBuiltInProvider(provider: ImageModuleProvider) { + return provider.provider?.startsWith(providerRuntime) ?? BuiltInProviders.includes(provider.name as 'ipx') +} + type ImageProviderName = typeof BuiltInProviders[number] const providerSetup: Partial> = { @@ -127,7 +134,7 @@ export async function resolveProviders(nuxt: any, options: ModuleOptions): Promi export async function resolveProvider(_nuxt: any, key: string, input: InputProvider): Promise { if (typeof input === 'string') { - input = { name: input } + input = { name: key, provider: input } } if (!input.name) { @@ -142,7 +149,6 @@ export async function resolveProvider(_nuxt: any, key: string, input: InputProvi input.provider = normalizableProviders[input.provider]!() } - const resolver = createResolver(import.meta.url) input.provider = BuiltInProviders.includes(input.provider as ImageProviderName) ? resolver.resolve('./runtime/providers/' + input.provider) : await resolvePath(input.provider)