append to response support
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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'
|
||||||
>;
|
>;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user