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

View File

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