From 6fc8c7b6d3ea345f6c043ab7603bb7541b163286 Mon Sep 17 00:00:00 2001 From: Blake Joynes Date: Sun, 9 Jun 2024 11:25:34 -0400 Subject: [PATCH] update dependencies --- eslint.config.mjs | 20 ++-- src/api.ts | 1 + src/types/options.ts | 204 +++++++++++++++++++------------------- src/types/trending.ts | 8 +- src/utils/parseOptions.ts | 1 + 5 files changed, 116 insertions(+), 118 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 0741d4b..52ee658 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,23 +1,17 @@ -import globals from "globals"; -import pluginJs from "@eslint/js"; -import tseslint from "typescript-eslint"; +import globals from 'globals'; +import pluginJs from '@eslint/js'; +import tseslint from 'typescript-eslint'; import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'; - export default [ { - files: ["src/*.ts"], - ignores:[ - "node_modules", - "dist", - "lib", - "coverage" - ], + files: ['src/*.ts'], + ignores: ['node_modules', 'dist', 'lib', 'coverage'], languageOptions: { globals: globals.browser, - } }, + }, pluginJs.configs.recommended, ...tseslint.configs.recommended, eslintPluginPrettierRecommended, -]; \ No newline at end of file +]; diff --git a/src/api.ts b/src/api.ts index 688a613..3b01f59 100644 --- a/src/api.ts +++ b/src/api.ts @@ -8,6 +8,7 @@ export class Api { this.accessToken = accessToken; } + /* eslint-disable @typescript-eslint/no-explicit-any */ async get(path: string, options?: Record): Promise { const params = parseOptions(options); const response = await fetch(`${BASE_URL_V3}${path}?${params}`, { diff --git a/src/types/options.ts b/src/types/options.ts index 48be056..2b52dc4 100644 --- a/src/types/options.ts +++ b/src/types/options.ts @@ -129,112 +129,114 @@ export type AppendToResponseMediaType = export type AppendToResponse< K, T extends AppendToResponseAllKeys[] | undefined, - Media extends AppendToResponseMediaType + Media extends AppendToResponseMediaType, > = K & (T extends undefined ? object : T extends Array - ? ('credits' extends T[number] - ? { - credits: Media extends 'tvEpisode' - ? TvEpisodeCredit - : Omit; - } - : object) & - ('videos' extends T[number] ? { videos: Omit } : object) & - ('images' extends T[number] + ? ('credits' extends T[number] ? { - images: Omit< - Media extends 'person' ? PeopleImages : Images, - 'id' - >; + credits: Media extends 'tvEpisode' + ? TvEpisodeCredit + : Omit; } : object) & - ('recommendations' extends T[number] - ? { recommendations: Recommendations } - : object) & - ('reviews' extends T[number] - ? { reviews: Omit } - : object) & - ('reviews' extends T[number] - ? { reviews: Omit } - : object) & - ('changes' extends T[number] - ? { - changes: Changes< - Media extends 'person' - ? PersonChangeValue - : Media extends 'movie' - ? MovieChangeValue + ('videos' extends T[number] + ? { videos: Omit } + : object) & + ('images' extends T[number] + ? { + images: Omit< + Media extends 'person' ? PeopleImages : Images, + 'id' + >; + } + : object) & + ('recommendations' extends T[number] + ? { recommendations: Recommendations } + : object) & + ('reviews' extends T[number] + ? { reviews: Omit } + : object) & + ('reviews' extends T[number] + ? { reviews: Omit } + : 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 } + : object) & + ('lists' extends T[number] + ? { lists: Omit } + : object) & + ('release_dates' extends T[number] + ? { release_dates: Omit } + : object) & + ('alternative_titles' extends T[number] + ? { alternative_titles: Omit } + : object) & + ('external_ids' extends T[number] + ? { external_ids: Omit } + : 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 } + : object) & + ('aggregate_credits' extends T[number] + ? { aggregate_credits: Omit } + : object) & + ('episode_groups' extends T[number] + ? { episode_groups: Omit } + : object) & + ('screened_theatrically' extends T[number] + ? { screened_theatrically: Omit } + : object) & + ('similar' extends T[number] + ? { + similar: Media extends 'movie' + ? SimilarMovies : Media extends 'tvShow' - ? TvShowChangeValue - : Media extends 'tvSeason' - ? TvSeasonChangeValue - : TvEpisodeChangeValue - >; - } - : object) & - ('keywords' extends T[number] - ? { keywords: Omit } - : object) & - ('lists' extends T[number] - ? { lists: Omit } - : object) & - ('release_dates' extends T[number] - ? { release_dates: Omit } - : object) & - ('alternative_titles' extends T[number] - ? { alternative_titles: Omit } - : object) & - ('external_ids' extends T[number] - ? { external_ids: Omit } - : 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 } - : object) & - ('aggregate_credits' extends T[number] - ? { aggregate_credits: Omit } - : object) & - ('episode_groups' extends T[number] - ? { episode_groups: Omit } - : object) & - ('screened_theatrically' extends T[number] - ? { screened_theatrically: Omit } - : object) & - ('similar' extends T[number] - ? { - similar: Media extends 'movie' - ? SimilarMovies - : Media extends 'tvShow' - ? SimilarTvShows - : unknown; - } - : object) & - ('content_ratings' extends T[number] - ? { content_ratings: Omit } - : object) & - ('movie_credits' extends T[number] - ? { movie_credits: Omit } - : object) & - ('tv_credits' extends T[number] - ? { tv_credits: Omit } - : object) & - ('combined_credits' extends T[number] - ? { combined_credits: Omit } - : object) & - ('tagged_images' extends T[number] - ? { tagged_images: TaggedImages } - : object) - : never); + ? SimilarTvShows + : unknown; + } + : object) & + ('content_ratings' extends T[number] + ? { content_ratings: Omit } + : object) & + ('movie_credits' extends T[number] + ? { movie_credits: Omit } + : object) & + ('tv_credits' extends T[number] + ? { tv_credits: Omit } + : object) & + ('combined_credits' extends T[number] + ? { combined_credits: Omit } + : object) & + ('tagged_images' extends T[number] + ? { tagged_images: TaggedImages } + : object) + : never); diff --git a/src/types/trending.ts b/src/types/trending.ts index ef6c6ba..dd5841e 100644 --- a/src/types/trending.ts +++ b/src/types/trending.ts @@ -15,10 +15,10 @@ export type TrendingMediaType = MediaType | 'all'; type TrendingResult = T extends 'tv' ? TV : T extends 'movie' - ? Movie - : T extends 'person' - ? Person - : TVWithMediaType | MovieWithMediaType | PersonWithMediaType; + ? Movie + : T extends 'person' + ? Person + : TVWithMediaType | MovieWithMediaType | PersonWithMediaType; export interface TrendingResults { page: number; diff --git a/src/utils/parseOptions.ts b/src/utils/parseOptions.ts index 0821c93..37a358b 100644 --- a/src/utils/parseOptions.ts +++ b/src/utils/parseOptions.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ export function parseOptions(options?: Record): string { return options ? new URLSearchParams(Object.entries(options)).toString() : ''; }