File tree 3 files changed +13
-3
lines changed
3 files changed +13
-3
lines changed Original file line number Diff line number Diff line change
1
+ ---
2
+ ' astro ' : patch
3
+ ---
4
+
5
+ Fixes the ` getImage ` options type so it properly extends ` ImageTransform `
Original file line number Diff line number Diff line change 1
- import type { WithRequired } from '../type-utils.js' ;
1
+ import type { OmitPreservingIndexSignature , Simplify , WithRequired } from '../type-utils.js' ;
2
2
import type { VALID_INPUT_FORMATS , VALID_OUTPUT_FORMATS } from './consts.js' ;
3
3
import type { ImageService } from './services/service.js' ;
4
4
@@ -66,10 +66,10 @@ export type SrcSetValue = UnresolvedSrcSetValue & {
66
66
/**
67
67
* A yet to be resolved image transform. Used by `getImage`
68
68
*/
69
- export type UnresolvedImageTransform = Omit < ImageTransform , 'src' > & {
69
+ export type UnresolvedImageTransform = Simplify < OmitPreservingIndexSignature < ImageTransform , 'src' > & {
70
70
src : ImageMetadata | string | Promise < { default : ImageMetadata } > ;
71
71
inferSize ?: boolean ;
72
- } & {
72
+ } > & {
73
73
[ isESMImport ] ?: never ;
74
74
} ;
75
75
Original file line number Diff line number Diff line change @@ -16,6 +16,11 @@ export type OmitIndexSignature<ObjectType> = {
16
16
: KeyType ] : ObjectType [ KeyType ] ;
17
17
} ;
18
18
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
+
19
24
// Transform a string into its kebab case equivalent (camelCase -> kebab-case). Useful for CSS-in-JS to CSS.
20
25
export type Kebab < T extends string , A extends string = '' > = T extends `${infer F } ${infer R } `
21
26
? Kebab < R , `${A } ${F extends Lowercase < F > ? '' : '-' } ${Lowercase < F > } `>
You can’t perform that action at this time.
0 commit comments