61 lines
1.4 KiB
TypeScript
61 lines
1.4 KiB
TypeScript
import {
|
|
Changes,
|
|
Credits,
|
|
Images,
|
|
Keywords,
|
|
Recommendations,
|
|
Reviews,
|
|
Translations,
|
|
Videos,
|
|
} from '.';
|
|
|
|
export interface LanguageOption {
|
|
language?: string;
|
|
}
|
|
|
|
export interface RegionOption {
|
|
region?: string;
|
|
}
|
|
|
|
export interface PageOption {
|
|
page?: number;
|
|
}
|
|
|
|
export type AppendToResponseKeys =
|
|
| 'images'
|
|
| 'videos'
|
|
| 'credits'
|
|
| 'recommendations'
|
|
| 'reviews'
|
|
| 'changes'
|
|
| 'keywords';
|
|
|
|
export type AppendToResponse<
|
|
K,
|
|
T extends AppendToResponseKeys[] | undefined
|
|
> = K &
|
|
(T extends undefined
|
|
? object
|
|
: T extends Array<unknown>
|
|
? ('credits' extends T[number]
|
|
? { credits: Omit<Credits, 'id'> }
|
|
: object) &
|
|
('videos' extends T[number] ? { videos: Omit<Videos, 'id'> } : object) &
|
|
('images' extends T[number] ? { images: Omit<Images, 'id'> } : object) &
|
|
('recommendations' extends T[number]
|
|
? { recommendations: Recommendations }
|
|
: object) &
|
|
('reviews' extends T[number]
|
|
? { reviews: Omit<Reviews, 'id'> }
|
|
: object) &
|
|
('reviews' extends T[number]
|
|
? { reviews: Omit<Translations, 'id'> }
|
|
: object) &
|
|
('changes' extends T[number]
|
|
? { changes: Omit<Changes, 'id'> }
|
|
: object) &
|
|
('keywords' extends T[number]
|
|
? { keywords: Omit<Keywords, 'id'> }
|
|
: object)
|
|
: never);
|