support for most of the append_to_response options

This commit is contained in:
DerPenz
2023-04-19 20:12:09 +02:00
parent 4f5c39ba7a
commit a5acac981c
3 changed files with 67 additions and 4 deletions

View File

@@ -1,3 +1,13 @@
import {
Credits,
Images,
Keywords,
Recommendations,
Reviews,
Translations,
Videos,
} from '.';
export interface LanguageOption {
language?: string;
}
@@ -9,3 +19,31 @@ export interface RegionOption {
export interface PageOption {
page?: number;
}
export type AppendToResponseKeys =
| 'images'
| 'videos'
| 'credits'
| 'recommendations'
| 'reviews'
| '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) &
('keywords' extends T[number] ? { keywords: Omit<Keywords, 'id'> } : object)
: never);