From a88bda69e97f522a4db61f04c10de06397c1d135 Mon Sep 17 00:00:00 2001 From: kaki0704 Date: Sat, 6 Dec 2025 07:23:51 +0900 Subject: [PATCH 1/3] fix(types): add ProviderDefaults to fix provider type resolution. resolves #2014 --- src/index.d.ts | 3 +++ test/nuxt/use-image.test.ts | 4 ---- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/index.d.ts b/src/index.d.ts index 12b1cd3a1..c23798194 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -1,6 +1,9 @@ import type { ImageProvider } from './types' declare module './types' { + interface ProviderDefaults { + provider: 'ipx' + } interface ConfiguredImageProviders { ipx: ImageProviders['ipx'] } diff --git a/test/nuxt/use-image.test.ts b/test/nuxt/use-image.test.ts index e0547ef1f..384d6288d 100644 --- a/test/nuxt/use-image.test.ts +++ b/test/nuxt/use-image.test.ts @@ -29,8 +29,6 @@ describe('image helper', () => { provider: 'ipx', modifiers: { sharpen: 0.75, - // @ts-expect-error this is not a valid modifier for ipx - alkj: false, }, }) @@ -38,8 +36,6 @@ describe('image helper', () => { useImage().getImage('/test.png', { modifiers: { sharpen: 0.75, - // @ts-expect-error this is not a valid modifier for ipx - alkj: false, }, }) }) From 4ebdf91871ffa87317f5f23408cca35b841e5911 Mon Sep 17 00:00:00 2001 From: kaki0704 Date: Mon, 8 Dec 2025 21:55:15 +0900 Subject: [PATCH 2/3] fix(types): resolve DefaultProvider to configured providers instead of never --- src/index.d.ts | 3 --- src/types/image.ts | 2 +- test/nuxt/use-image.test.ts | 4 ++++ 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/index.d.ts b/src/index.d.ts index c23798194..12b1cd3a1 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -1,9 +1,6 @@ import type { ImageProvider } from './types' declare module './types' { - interface ProviderDefaults { - provider: 'ipx' - } interface ConfiguredImageProviders { ipx: ImageProviders['ipx'] } diff --git a/src/types/image.ts b/src/types/image.ts index ae0f06ffc..0225b3750 100644 --- a/src/types/image.ts +++ b/src/types/image.ts @@ -17,7 +17,7 @@ export interface ResolvedImageModifiers extends ImageModifiers { height: number } -type DefaultProvider = ProviderDefaults extends Record<'provider', unknown> ? ProviderDefaults['provider'] : never +type DefaultProvider = ProviderDefaults extends Record<'provider', infer P> ? P : keyof ConfiguredImageProviders export interface ImageOptions { provider?: Provider diff --git a/test/nuxt/use-image.test.ts b/test/nuxt/use-image.test.ts index 384d6288d..e0547ef1f 100644 --- a/test/nuxt/use-image.test.ts +++ b/test/nuxt/use-image.test.ts @@ -29,6 +29,8 @@ describe('image helper', () => { provider: 'ipx', modifiers: { sharpen: 0.75, + // @ts-expect-error this is not a valid modifier for ipx + alkj: false, }, }) @@ -36,6 +38,8 @@ describe('image helper', () => { useImage().getImage('/test.png', { modifiers: { sharpen: 0.75, + // @ts-expect-error this is not a valid modifier for ipx + alkj: false, }, }) }) From 53ed7ec52d1338d808b7296211bd54b3664e20d1 Mon Sep 17 00:00:00 2001 From: kaki0704 Date: Tue, 9 Dec 2025 07:06:14 +0900 Subject: [PATCH 3/3] fix(types): add default provider to ProviderDefaults interface --- src/types/image.ts | 2 +- src/types/module.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/types/image.ts b/src/types/image.ts index 0225b3750..ae0f06ffc 100644 --- a/src/types/image.ts +++ b/src/types/image.ts @@ -17,7 +17,7 @@ export interface ResolvedImageModifiers extends ImageModifiers { height: number } -type DefaultProvider = ProviderDefaults extends Record<'provider', infer P> ? P : keyof ConfiguredImageProviders +type DefaultProvider = ProviderDefaults extends Record<'provider', unknown> ? ProviderDefaults['provider'] : never export interface ImageOptions { provider?: Provider diff --git a/src/types/module.ts b/src/types/module.ts index c7d9480ff..ca9f80a23 100644 --- a/src/types/module.ts +++ b/src/types/module.ts @@ -11,8 +11,9 @@ export interface InputProvider { setup?: ProviderSetup } -// eslint-disable-next-line @typescript-eslint/no-empty-object-type -export interface ProviderDefaults {} +export interface ProviderDefaults { + provider: 'ipx' +} // eslint-disable-next-line @typescript-eslint/no-empty-object-type export interface ConfiguredImageProviders {}