Skip to content

Commit 1fc83d3

Browse files
authoredNov 1, 2024··
fix(assets): fix getImage options type (#12349)
1 parent 20e5a84 commit 1fc83d3

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed
 

‎.changeset/long-monkeys-exercise.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'astro': patch
3+
---
4+
5+
Fixes the `getImage` options type so it properly extends `ImageTransform`

‎packages/astro/src/assets/types.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import type { WithRequired } from '../type-utils.js';
1+
import type { OmitPreservingIndexSignature, Simplify, WithRequired } from '../type-utils.js';
22
import type { VALID_INPUT_FORMATS, VALID_OUTPUT_FORMATS } from './consts.js';
33
import type { ImageService } from './services/service.js';
44

@@ -66,10 +66,10 @@ export type SrcSetValue = UnresolvedSrcSetValue & {
6666
/**
6767
* A yet to be resolved image transform. Used by `getImage`
6868
*/
69-
export type UnresolvedImageTransform = Omit<ImageTransform, 'src'> & {
69+
export type UnresolvedImageTransform = Simplify<OmitPreservingIndexSignature<ImageTransform, 'src'> & {
7070
src: ImageMetadata | string | Promise<{ default: ImageMetadata }>;
7171
inferSize?: boolean;
72-
} & {
72+
}> & {
7373
[isESMImport]?: never;
7474
};
7575

‎packages/astro/src/type-utils.ts

+5
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ export type OmitIndexSignature<ObjectType> = {
1616
: KeyType]: ObjectType[KeyType];
1717
};
1818

19+
// This is an alternative `Omit<T, K>` implementation that _doesn't_ remove the index signature of an object.
20+
export type OmitPreservingIndexSignature<T, K extends PropertyKey> = {
21+
[P in keyof T as Exclude<P, K>]: T[P]
22+
};
23+
1924
// Transform a string into its kebab case equivalent (camelCase -> kebab-case). Useful for CSS-in-JS to CSS.
2025
export type Kebab<T extends string, A extends string = ''> = T extends `${infer F}${infer R}`
2126
? Kebab<R, `${A}${F extends Lowercase<F> ? '' : '-'}${Lowercase<F>}`>

0 commit comments

Comments
 (0)
Please sign in to comment.