append to response support

This commit is contained in:
DerPenz
2023-05-06 19:29:36 +02:00
parent 33830afe92
commit e46f140890
2 changed files with 28 additions and 5 deletions

View File

@@ -12,6 +12,7 @@ import {
AppendToResponse, AppendToResponse,
Changes, Changes,
TvEpisodeChangeValue, TvEpisodeChangeValue,
AppendToResponseTvEpisodeKey,
} from '..'; } from '..';
import { BaseEndpoint } from './base'; import { BaseEndpoint } from './base';
@@ -24,7 +25,7 @@ export class TvEpisodesEndpoint extends BaseEndpoint {
super(accessToken); super(accessToken);
} }
async details<T extends AppendToResponseMovieKey[] | undefined>( async details<T extends AppendToResponseTvEpisodeKey[] | undefined>(
episodeSelection: EpisodeSelection, episodeSelection: EpisodeSelection,
appendToResponse?: T, appendToResponse?: T,
options?: LanguageOption options?: LanguageOption
@@ -37,7 +38,7 @@ export class TvEpisodesEndpoint extends BaseEndpoint {
}; };
return await this.api.get< return await this.api.get<
AppendToResponse<Omit<Episode, 'show_id'>, T, 'movie'> AppendToResponse<Omit<Episode, 'show_id'>, T, 'tvEpisode'>
>(`${BASE_EPISODE(episodeSelection)}`, combinedOptions); >(`${BASE_EPISODE(episodeSelection)}`, combinedOptions);
} }

View File

@@ -27,6 +27,8 @@ import {
MovieChangeValue, MovieChangeValue,
TvShowChangeValue, TvShowChangeValue,
TvEpisodeChangeValue, TvEpisodeChangeValue,
TvEpisodeCredit,
TvEpisodeTranslations,
} from '.'; } from '.';
export interface LanguageOption { export interface LanguageOption {
@@ -90,12 +92,24 @@ export type AppendToResponsePersonKey =
| 'tagged_images' | 'tagged_images'
| 'translations'; | 'translations';
export type AppendToResponseTvEpisodeKey =
| 'images'
| 'credits'
| 'external_ids'
| 'videos'
| 'translations';
type AppendToResponseAllKeys = type AppendToResponseAllKeys =
| AppendToResponseTvKey | AppendToResponseTvKey
| AppendToResponseMovieKey | AppendToResponseMovieKey
| AppendToResponseTvEpisodeKey
| AppendToResponsePersonKey; | AppendToResponsePersonKey;
export type AppendToResponseMediaType = 'movie' | 'tvShow' | 'person'; export type AppendToResponseMediaType =
| 'movie'
| 'tvShow'
| 'person'
| 'tvEpisode';
export type AppendToResponse< export type AppendToResponse<
K, K,
@@ -106,7 +120,11 @@ export type AppendToResponse<
? object ? object
: T extends Array<unknown> : T extends Array<unknown>
? ('credits' extends T[number] ? ('credits' extends T[number]
? { credits: Omit<Credits, 'id'> } ? {
credits: Media extends 'tvEpisode'
? TvEpisodeCredit
: Omit<Credits, 'id'>;
}
: object) & : object) &
('videos' extends T[number] ? { videos: Omit<Videos, 'id'> } : object) & ('videos' extends T[number] ? { videos: Omit<Videos, 'id'> } : object) &
('images' extends T[number] ('images' extends T[number]
@@ -157,7 +175,11 @@ export type AppendToResponse<
('translations' extends T[number] ('translations' extends T[number]
? { ? {
translations: Omit< translations: Omit<
Media extends 'person' ? PersonTranslations : Translations, Media extends 'person'
? PersonTranslations
: Media extends 'tvEpisode'
? TvEpisodeTranslations
: Translations,
'id' 'id'
>; >;
} }