update dependencies

This commit is contained in:
Blake Joynes
2024-06-09 11:25:34 -04:00
parent 730afebd7d
commit 6fc8c7b6d3
5 changed files with 116 additions and 118 deletions

View File

@@ -1,23 +1,17 @@
import globals from "globals"; import globals from 'globals';
import pluginJs from "@eslint/js"; import pluginJs from '@eslint/js';
import tseslint from "typescript-eslint"; import tseslint from 'typescript-eslint';
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended';
export default [ export default [
{ {
files: ["src/*.ts"], files: ['src/*.ts'],
ignores:[ ignores: ['node_modules', 'dist', 'lib', 'coverage'],
"node_modules",
"dist",
"lib",
"coverage"
],
languageOptions: { languageOptions: {
globals: globals.browser, globals: globals.browser,
}
}, },
},
pluginJs.configs.recommended, pluginJs.configs.recommended,
...tseslint.configs.recommended, ...tseslint.configs.recommended,
eslintPluginPrettierRecommended, eslintPluginPrettierRecommended,
]; ];

View File

@@ -8,6 +8,7 @@ export class Api {
this.accessToken = accessToken; this.accessToken = accessToken;
} }
/* eslint-disable @typescript-eslint/no-explicit-any */
async get<T>(path: string, options?: Record<string, any>): Promise<T> { async get<T>(path: string, options?: Record<string, any>): Promise<T> {
const params = parseOptions(options); const params = parseOptions(options);
const response = await fetch(`${BASE_URL_V3}${path}?${params}`, { const response = await fetch(`${BASE_URL_V3}${path}?${params}`, {

View File

@@ -129,112 +129,114 @@ export type AppendToResponseMediaType =
export type AppendToResponse< export type AppendToResponse<
K, K,
T extends AppendToResponseAllKeys[] | undefined, T extends AppendToResponseAllKeys[] | undefined,
Media extends AppendToResponseMediaType Media extends AppendToResponseMediaType,
> = K & > = K &
(T extends undefined (T extends undefined
? object ? object
: T extends Array<unknown> : T extends Array<unknown>
? ('credits' extends T[number] ? ('credits' extends T[number]
? {
credits: Media extends 'tvEpisode'
? TvEpisodeCredit
: Omit<Credits, 'id'>;
}
: object) &
('videos' extends T[number] ? { videos: Omit<Videos, 'id'> } : object) &
('images' extends T[number]
? { ? {
images: Omit< credits: Media extends 'tvEpisode'
Media extends 'person' ? PeopleImages : Images, ? TvEpisodeCredit
'id' : Omit<Credits, 'id'>;
>;
} }
: object) & : object) &
('recommendations' extends T[number] ('videos' extends T[number]
? { recommendations: Recommendations } ? { videos: Omit<Videos, 'id'> }
: object) & : object) &
('reviews' extends T[number] ('images' extends T[number]
? { reviews: Omit<Reviews, 'id'> } ? {
: object) & images: Omit<
('reviews' extends T[number] Media extends 'person' ? PeopleImages : Images,
? { reviews: Omit<Translations, 'id'> } 'id'
: object) & >;
('changes' extends T[number] }
? { : object) &
changes: Changes< ('recommendations' extends T[number]
Media extends 'person' ? { recommendations: Recommendations }
? PersonChangeValue : object) &
: Media extends 'movie' ('reviews' extends T[number]
? MovieChangeValue ? { reviews: Omit<Reviews, 'id'> }
: object) &
('reviews' extends T[number]
? { reviews: Omit<Translations, 'id'> }
: object) &
('changes' extends T[number]
? {
changes: Changes<
Media extends 'person'
? PersonChangeValue
: Media extends 'movie'
? MovieChangeValue
: Media extends 'tvShow'
? TvShowChangeValue
: Media extends 'tvSeason'
? TvSeasonChangeValue
: TvEpisodeChangeValue
>;
}
: object) &
('keywords' extends T[number]
? { keywords: Omit<Keywords, 'id'> }
: object) &
('lists' extends T[number]
? { lists: Omit<MovieLists, 'id'> }
: object) &
('release_dates' extends T[number]
? { release_dates: Omit<ReleaseDates, 'id'> }
: object) &
('alternative_titles' extends T[number]
? { alternative_titles: Omit<AlternativeTitles, 'id'> }
: object) &
('external_ids' extends T[number]
? { external_ids: Omit<ExternalIds, 'id'> }
: object) &
('translations' extends T[number]
? {
translations: Omit<
Media extends 'person'
? PersonTranslations
: Media extends 'tvEpisode'
? TvEpisodeTranslations
: Translations,
'id'
>;
}
: object) &
('watch/providers' extends T[number]
? { 'watch/providers': Omit<WatchProviders, 'id'> }
: object) &
('aggregate_credits' extends T[number]
? { aggregate_credits: Omit<Credits, 'id'> }
: object) &
('episode_groups' extends T[number]
? { episode_groups: Omit<EpisodeGroups, 'id'> }
: object) &
('screened_theatrically' extends T[number]
? { screened_theatrically: Omit<ScreenedTheatrically, 'id'> }
: object) &
('similar' extends T[number]
? {
similar: Media extends 'movie'
? SimilarMovies
: Media extends 'tvShow' : Media extends 'tvShow'
? TvShowChangeValue ? SimilarTvShows
: Media extends 'tvSeason' : unknown;
? TvSeasonChangeValue }
: TvEpisodeChangeValue : object) &
>; ('content_ratings' extends T[number]
} ? { content_ratings: Omit<ContentRatings, 'id'> }
: object) & : object) &
('keywords' extends T[number] ('movie_credits' extends T[number]
? { keywords: Omit<Keywords, 'id'> } ? { movie_credits: Omit<PersonMovieCredit, 'id'> }
: object) & : object) &
('lists' extends T[number] ('tv_credits' extends T[number]
? { lists: Omit<MovieLists, 'id'> } ? { tv_credits: Omit<PersonTvShowCredit, 'id'> }
: object) & : object) &
('release_dates' extends T[number] ('combined_credits' extends T[number]
? { release_dates: Omit<ReleaseDates, 'id'> } ? { combined_credits: Omit<PersonCombinedCredits, 'id'> }
: object) & : object) &
('alternative_titles' extends T[number] ('tagged_images' extends T[number]
? { alternative_titles: Omit<AlternativeTitles, 'id'> } ? { tagged_images: TaggedImages }
: object) & : object)
('external_ids' extends T[number] : never);
? { external_ids: Omit<ExternalIds, 'id'> }
: object) &
('translations' extends T[number]
? {
translations: Omit<
Media extends 'person'
? PersonTranslations
: Media extends 'tvEpisode'
? TvEpisodeTranslations
: Translations,
'id'
>;
}
: object) &
('watch/providers' extends T[number]
? { 'watch/providers': Omit<WatchProviders, 'id'> }
: object) &
('aggregate_credits' extends T[number]
? { aggregate_credits: Omit<Credits, 'id'> }
: object) &
('episode_groups' extends T[number]
? { episode_groups: Omit<EpisodeGroups, 'id'> }
: object) &
('screened_theatrically' extends T[number]
? { screened_theatrically: Omit<ScreenedTheatrically, 'id'> }
: object) &
('similar' extends T[number]
? {
similar: Media extends 'movie'
? SimilarMovies
: Media extends 'tvShow'
? SimilarTvShows
: unknown;
}
: object) &
('content_ratings' extends T[number]
? { content_ratings: Omit<ContentRatings, 'id'> }
: object) &
('movie_credits' extends T[number]
? { movie_credits: Omit<PersonMovieCredit, 'id'> }
: object) &
('tv_credits' extends T[number]
? { tv_credits: Omit<PersonTvShowCredit, 'id'> }
: object) &
('combined_credits' extends T[number]
? { combined_credits: Omit<PersonCombinedCredits, 'id'> }
: object) &
('tagged_images' extends T[number]
? { tagged_images: TaggedImages }
: object)
: never);

View File

@@ -15,10 +15,10 @@ export type TrendingMediaType = MediaType | 'all';
type TrendingResult<T extends TrendingMediaType> = T extends 'tv' type TrendingResult<T extends TrendingMediaType> = T extends 'tv'
? TV ? TV
: T extends 'movie' : T extends 'movie'
? Movie ? Movie
: T extends 'person' : T extends 'person'
? Person ? Person
: TVWithMediaType | MovieWithMediaType | PersonWithMediaType; : TVWithMediaType | MovieWithMediaType | PersonWithMediaType;
export interface TrendingResults<T extends TrendingMediaType> { export interface TrendingResults<T extends TrendingMediaType> {
page: number; page: number;

View File

@@ -1,3 +1,4 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
export function parseOptions(options?: Record<string, any>): string { export function parseOptions(options?: Record<string, any>): string {
return options ? new URLSearchParams(Object.entries(options)).toString() : ''; return options ? new URLSearchParams(Object.entries(options)).toString() : '';
} }