@tdanks2000/tmdb-wrapper 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["message: string","status: number","url: string","payload?: unknown","options?: Query","entries: [string, string][]","ms: number","res: Response","auth: TokenType","path: string","opts: RequestOptions<Q>","query: Query","payload: unknown","value: string","baseUrl: string","size: string","path: string","format: string","fileSize: string","imagePath: string","format?: string","image: Image","fileSize: ImageSize","format?: ImageFormat","auth: TokenType","access_token: TokenType","accountId: number","access_token: TokenType","access_token: TokenType","options?: ChangeOption","access_token: TokenType","id: number","options?: LanguageOption","options?: CollectionImageOptions","access_token: TokenType","id: number","access_token: TokenType","access_token: TokenType","id: string","access_token: TokenType","options?: MovieQueryOptions","options?: TvShowQueryOptions","access_token: TokenType","externalId: string","options: ExternalIdOptions","access_token: TokenType","options?: LanguageOption","access_token: TokenType","keywordId: number","options?: KeywordsOptions","access_token: TokenType","id: number","appendToResponse?: T","language?: string","options?: ChangeOption","options?: LanguageOption","options?: MoviesImageSearchOptions","options?: LanguageOption & PageOption","options?: PageOption & LanguageOption & RegionOption","access_token: TokenType","id: number","access_token: TokenType","id: number","appendToResponse?: T","language?: string","options?: ChangeOption","options?: LanguageOption","options?: PageOption","options?: LanguageOption & PageOption","access_token: TokenType","id: string","access_token: TokenType","options: SearchOptions","options: MovieSearchOptions","options: PeopleSearchOptions","options: TvSearchOptions","options: MultiSearchOptions","access_token: TokenType","mediaType: T","timeWindow: TimeWindow","options?: LanguageOption & PageOption","episodeSelection: EpisodeSelection","access_token: TokenType","appendToResponse?: T","options?: LanguageOption","episodeID: number","options?: ChangeOption","options?: TvEpisodeImageSearchOptions","options?: TvEpisodeVideoSearchOptions","seasonSelection: SeasonSelection","access_token: TokenType","appendToResponse?: T","options?: LanguageOption","seasonId: number","options?: ChangeOption","options?: TvSeasonImageSearchOptions","options?: TvSeasonVideoSearchOptions","access_token: TokenType","id: number","appendToResponse?: T","language?: string","options?: ChangeOption","options?: LanguageOption","tvId: number","seasonNumber: number","options?: TvShowImageOptions","options?: LanguageOption & PageOption","options?: TvShowVideoOptions","options?: PageOption & LanguageOption & TimezoneOption","options?: PageOption & LanguageOption","access_token: TokenType","auth: TokenType"],"sources":["../src/@types/endpoints/configuration.ts","../src/@types/endpoints/movies.ts","../src/utils/api.ts","../src/utils/getimagePath.ts","../src/@types/models/baseEndpoint.ts","../src/endpoints/account.ts","../src/endpoints/certification.ts","../src/endpoints/changes.ts","../src/endpoints/collections.ts","../src/endpoints/companies.ts","../src/endpoints/configuration.ts","../src/endpoints/credits.ts","../src/endpoints/discover.ts","../src/endpoints/find.ts","../src/endpoints/genre.ts","../src/endpoints/keywords.ts","../src/endpoints/movies.ts","../src/endpoints/networks.ts","../src/endpoints/people.ts","../src/endpoints/review.ts","../src/endpoints/search.ts","../src/endpoints/trending.ts","../src/endpoints/tvEpisodes.ts","../src/endpoints/tvSeasons.ts","../src/endpoints/tvShows.ts","../src/endpoints/watchProviders.ts","../src/index.ts"],"sourcesContent":["export interface ImageConfiguration {\n\tbase_url: string;\n\tsecure_base_url: string;\n\tbackdrop_sizes: BackdropSizes[];\n\tlogo_sizes: LogoSizes[];\n\tposter_sizes: PosterSizes[];\n\tprofile_sizes: ProfileSizes[];\n\tstill_sizes: StillSizes[];\n}\n\nexport interface Configuration {\n\timages: ImageConfiguration;\n\tchange_keys: ChangeKeys[];\n}\n\nexport enum BackdropSizes {\n\tW300 = \"w300\",\n\tW500 = \"w500\",\n\tW780 = \"w780\",\n\tW1280 = \"w1280\",\n\tORIGINAL = \"original\",\n}\n\nexport enum LogoSizes {\n\tW45 = \"w45\",\n\tW92 = \"w92\",\n\tW154 = \"w154\",\n\tW185 = \"w185\",\n\tW300 = \"w300\",\n\tW500 = \"w500\",\n\tORIGINAL = \"original\",\n}\n\nexport enum PosterSizes {\n\tW92 = \"w92\",\n\tW154 = \"w154\",\n\tW185 = \"w185\",\n\tW300 = \"w300\",\n\tW500 = \"w500\",\n\tW780 = \"w780\",\n\tORIGINAL = \"original\",\n}\n\nexport enum ProfileSizes {\n\tW45 = \"w45\",\n\tW185 = \"w185\",\n\tW632 = \"w632\",\n\tORIGINAL = \"original\",\n}\n\nexport enum StillSizes {\n\tW92 = \"w92\",\n\tW185 = \"w185\",\n\tW300 = \"w300\",\n\tORIGINAL = \"original\",\n}\n\nexport enum ChangeKeys {\n\tADULT = \"adult\",\n\tAIR_DATE = \"air_date\",\n\tALSO_KNOWN_AS = \"also_known_as\",\n\tALTERNATIVE_TITLES = \"alternative_titles\",\n\tBIOGRAPHY = \"biography\",\n\tBIRTHDAY = \"birthday\",\n\tBUDGET = \"budget\",\n\tCAST = \"cast\",\n\tCERTIFICATIONS = \"certifications\",\n\tCHARACTER_NAMES = \"character_names\",\n\tCREATED_BY = \"created_by\",\n\tCREW = \"crew\",\n\tDEATHDAY = \"deathday\",\n\tEPISODE = \"episode\",\n\tEPISODE_NUMBER = \"episode_number\",\n\tEPISODE_RUN_TIME = \"episode_run_time\",\n\tFREEBASE_ID = \"freebase_id\",\n\tFREEBASE_MID = \"freebase_mid\",\n\tGENERAL = \"general\",\n\tGENRES = \"genres\",\n\tGUEST_STARS = \"guest_stars\",\n\tHOMEPAGE = \"homepage\",\n\tIMAGES = \"images\",\n\tIMDB_ID = \"imdb_id\",\n\tLANGUAGES = \"languages\",\n\tNAME = \"name\",\n\tNETWORK = \"network\",\n\tORIGIN_COUNTRY = \"origin_country\",\n\tORIGINAL_NAME = \"original_name\",\n\tORIGINAL_TITLE = \"original_title\",\n\tOVERVIEW = \"overview\",\n\tPARTS = \"parts\",\n\tPLACE_OF_BIRTH = \"place_of_birth\",\n\tPLOT_KEYWORDS = \"plot_keywords\",\n\tPRODUCTION_CODE = \"production_code\",\n\tPRODUCTION_COMPANIES = \"production_companies\",\n\tPRODUCTION_COUNTRIES = \"production_countries\",\n\tRELEASES = \"releases\",\n\tREVENUE = \"revenue\",\n\tRUNTIME = \"runtime\",\n\tSEASON = \"season\",\n\tSEASON_NUMBER = \"season_number\",\n\tSEASON_REGULAR = \"season_regular\",\n\tSPOKEN_LANGUAGES = \"spoken_languages\",\n\tSTATUS = \"status\",\n\tTAGLINE = \"tagline\",\n\tTITLE = \"title\",\n\tTRANSLATIONS = \"translations\",\n\tTVDB_ID = \"tvdb_id\",\n\tTVRAGE_ID = \"tvrage_id\",\n\tTYPE = \"type\",\n\tVIDEO = \"video\",\n\tVIDEOS = \"videos\",\n}\n","import type {\n\tGenre,\n\tLanguageOption,\n\tMovie,\n\tProductionCompany,\n\tProductionCountry,\n\tSpokenLanguage,\n} from \"..\";\nimport type { Nullable, TMDBDateTime } from \"../wire\";\n\nexport interface BelongsToCollection {\n\tid: number;\n\tname: string;\n\tposter_path: Nullable<string>;\n\tbackdrop_path: Nullable<string>;\n}\n\nexport interface MovieDetails {\n\tadult: boolean;\n\tbackdrop_path: Nullable<string>;\n\tbelongs_to_collection?: BelongsToCollection;\n\tbudget: number;\n\tgenres: Genre[];\n\thomepage: string;\n\tid: number;\n\timdb_id: string;\n\toriginal_language: string;\n\toriginal_title: string;\n\toverview: string;\n\tpopularity: number;\n\tposter_path: Nullable<string>;\n\tproduction_companies: ProductionCompany[];\n\tproduction_countries: ProductionCountry[];\n\trelease_date: string;\n\trevenue: number;\n\truntime: number;\n\tspoken_languages: SpokenLanguage[];\n\tstatus: string;\n\ttagline: string;\n\ttitle: string;\n\tvideo: boolean;\n\tvote_average: number;\n\tvote_count: number;\n}\n\nexport enum ReleaseDateType {\n\tPremiere = 1,\n\t\"Theatrical (limited)\" = 2,\n\tTheatrical = 3,\n\tDigital = 4,\n\tPhysical = 5,\n\tTV = 6,\n}\n\nexport interface ReleaseDate {\n\tcertification: string;\n\tiso_639_1: string;\n\trelease_date: TMDBDateTime;\n\ttype: ReleaseDateType;\n\tnote: string;\n}\n\nexport interface ReleaseDateResult {\n\tiso_3166_1: string;\n\trelease_dates: ReleaseDate[];\n}\n\nexport interface ReleaseDates {\n\tid: number;\n\tresults: ReleaseDateResult[];\n}\n\nexport interface SimilarMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_pages: number;\n\ttotal_results: number;\n}\n\nexport interface MovieList {\n\tdescription: string;\n\tfavorite_count: number;\n\tid: number;\n\titem_count: number;\n\tiso_639_1: string;\n\tlist_type: string;\n\tname: string;\n\tposter_path: Nullable<string>;\n}\n\nexport interface MovieLists {\n\tid: number;\n\tpage: number;\n\tresults: MovieList[];\n\ttotal_pages: number;\n\ttotal_results: number;\n}\n\nexport interface LatestMovie {\n\tadult: boolean;\n\tbackdrop_path: Nullable<string>;\n\tbelongs_to_collection?: BelongsToCollection;\n\tbudget: number;\n\tgenres: Genre[];\n\thomepage: string;\n\tid: number;\n\timdb_id: string;\n\toriginal_language: string;\n\toriginal_title: string;\n\toverview: string;\n\tpopularity: number;\n\tposter_path: Nullable<string>;\n\tproduction_companies: ProductionCompany[];\n\tproduction_countries: ProductionCountry[];\n\trelease_date: string;\n\trevenue: number;\n\truntime: number;\n\tspoken_languages: SpokenLanguage[];\n\tstatus: string;\n\ttagline: string;\n\ttitle: string;\n\tvideo: boolean;\n\tvote_average: number;\n\tvote_count: number;\n}\n\nexport interface Dates {\n\tmaximum: string;\n\tminimum: string;\n}\n\nexport interface MoviesPlayingNow {\n\tpage: number;\n\tresults: Movie[];\n\tdates: Dates;\n\ttotal_pages: number;\n\ttotal_results: number;\n}\n\nexport interface PopularMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_results: number;\n\ttotal_pages: number;\n}\n\nexport interface TopRatedMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_results: number;\n\ttotal_pages: number;\n}\n\nexport interface UpcomingMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_results: number;\n\ttotal_pages: number;\n}\n\nexport type MovieChangeValue =\n\t| string\n\t| {\n\t\t\tperson_id: number;\n\t\t\tcharacter: string;\n\t\t\torder: number;\n\t\t\tcast_id: number;\n\t\t\tcredit_id: string;\n\t }\n\t| unknown;\n\nexport interface MoviesImageSearchOptions extends LanguageOption {\n\t/**\n\t * a list of ISO-639-1 values to query\n\t */\n\tinclude_image_language?: string[];\n}\n","import type { ErrorResponse, TokenType } from \"../@types\";\n\nconst BASE_URL_V3 = \"https://api.themoviedb.org/3\";\n\nexport type Primitive = string | number | boolean;\n\nexport type QueryValue =\n\t| Primitive\n\t| null\n\t| undefined\n\t| Array<Primitive | null | undefined>;\n\nexport type Query = Record<string, QueryValue>;\n\nexport interface RequestOptions<Q extends object = object> {\n\tquery?: Q;\n\tsignal?: AbortSignal;\n\ttimeoutMs?: number;\n\tretries?: number;\n\tretryDelayMs?: number;\n}\n\nexport class TMDBError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly status: number,\n\t\tpublic readonly url: string,\n\t\tpublic readonly payload?: unknown,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"TMDBError\";\n\t}\n}\n\nexport const parseOptions = (options?: Query): string => {\n\tif (!options) return \"\";\n\n\tconst entries: [string, string][] = [];\n\n\tfor (const [key, value] of Object.entries(options)) {\n\t\tif (value === undefined || value === null) continue;\n\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (const item of value) {\n\t\t\t\tif (item === undefined || item === null) continue;\n\t\t\t\tentries.push([key, String(item)]);\n\t\t\t}\n\t\t} else {\n\t\t\tentries.push([key, String(value)]);\n\t\t}\n\t}\n\n\treturn new URLSearchParams(entries).toString();\n};\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst shouldRetry = (status: number) =>\n\tstatus === 429 || status === 502 || status === 503 || status === 504;\n\nconst readRetryAfterMs = (res: Response): number | undefined => {\n\tconst raw = res.headers.get(\"retry-after\");\n\tif (!raw) return undefined;\n\n\tconst asSeconds = Number(raw);\n\tif (Number.isFinite(asSeconds)) return Math.max(0, asSeconds * 1000);\n\n\tconst asDate = Date.parse(raw);\n\tif (!Number.isNaN(asDate)) return Math.max(0, asDate - Date.now());\n\n\treturn undefined;\n};\n\nexport class API {\n\tprivate apiKey?: string;\n\tprivate accessToken?: string;\n\n\tconstructor(auth: TokenType) {\n\t\tif (typeof auth === \"string\") {\n\t\t\tthis.accessToken = auth;\n\t\t} else {\n\t\t\tthis.apiKey = auth.apiKey;\n\t\t\tthis.accessToken = auth.accessToken;\n\t\t}\n\t}\n\n\tasync get<T, Q extends object = object>(\n\t\tpath: string,\n\t\topts: RequestOptions<Q> = {},\n\t): Promise<T> {\n\t\tconst query: Query = {\n\t\t\t...(opts.query\n\t\t\t\t? (opts.query as unknown as Record<string, QueryValue>)\n\t\t\t\t: {}),\n\t\t\t...(this.apiKey ? { api_key: this.apiKey } : {}),\n\t\t};\n\n\t\tconst qs = parseOptions(query);\n\t\tconst url = `${BASE_URL_V3}${path}${qs ? `?${qs}` : \"\"}`;\n\n\t\tconst retries = opts.retries ?? 2;\n\t\tconst retryDelayMs = opts.retryDelayMs ?? 300;\n\t\tconst timeoutMs = opts.timeoutMs ?? 30_000;\n\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n\t\tif (opts.signal) {\n\t\t\tif (opts.signal.aborted) controller.abort();\n\t\t\telse\n\t\t\t\topts.signal.addEventListener(\"abort\", () => controller.abort(), {\n\t\t\t\t\tonce: true,\n\t\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tfor (let attempt = 0; attempt <= retries; attempt++) {\n\t\t\t\tconst res = await fetch(url, {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t...(this.accessToken\n\t\t\t\t\t\t\t? { Authorization: `Bearer ${this.accessToken}` }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (res.ok) {\n\t\t\t\t\treturn (await res.json()) as T;\n\t\t\t\t}\n\n\t\t\t\tlet payload: unknown;\n\t\t\t\tlet message = `${res.status} ${res.statusText}`;\n\n\t\t\t\ttry {\n\t\t\t\t\tpayload = (await res.json()) as ErrorResponse;\n\t\t\t\t\tif (\n\t\t\t\t\t\tpayload &&\n\t\t\t\t\t\ttypeof payload === \"object\" &&\n\t\t\t\t\t\t\"status_message\" in payload\n\t\t\t\t\t) {\n\t\t\t\t\t\tmessage = String((payload as ErrorResponse).status_message);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpayload = await res.text();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (attempt < retries && shouldRetry(res.status)) {\n\t\t\t\t\tconst retryAfter = readRetryAfterMs(res);\n\t\t\t\t\tconst delay = retryAfter ?? retryDelayMs * 2 ** attempt;\n\t\t\t\t\tawait sleep(delay);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthrow new TMDBError(message, res.status, url, payload);\n\t\t\t}\n\n\t\t\tthrow new TMDBError(\"Request failed\", 0, url);\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t}\n}\n","import type { Image } from \"../@types\";\n\nexport const TMDB_IMAGE_BASE_URL = \"https://image.tmdb.org/t/p/\";\n\nexport const ImageSizes = {\n\tORIGINAL: \"original\",\n\tW500: \"w500\",\n\tW300: \"w300\",\n\tW185: \"w185\",\n\tW92: \"w92\",\n\tH632: \"h632\",\n} as const;\n\nexport type ImageSize = (typeof ImageSizes)[keyof typeof ImageSizes];\n\nexport const ImageFormats = {\n\tJPG: \"jpg\",\n\tPNG: \"png\",\n\tSVG: \"svg\",\n} as const;\n\nexport type ImageFormat = (typeof ImageFormats)[keyof typeof ImageFormats];\n\nconst isAbsoluteUrl = (value: string) => /^https?:\\/\\//i.test(value);\n\nconst normalizeBaseUrl = (baseUrl: string) =>\n\tbaseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`;\n\nconst normalizeSize = (size: string) => size.replace(/^\\/+|\\/+$/g, \"\");\n\nconst normalizePath = (path: string) =>\n\tpath.startsWith(\"/\") ? path : `/${path}`;\n\nconst setExtension = (path: string, format: string) => {\n\tconst lastSlash = path.lastIndexOf(\"/\");\n\tconst lastDot = path.lastIndexOf(\".\");\n\n\tconst hasExt = lastDot > lastSlash;\n\tif (!hasExt) return `${path}.${format}`;\n\n\treturn `${path.slice(0, lastDot + 1)}${format}`;\n};\n\n/**\n * Constructs a TMDB image URL.\n *\n * - Keeps paths as-is unless `format` is provided (then it replaces/appends\n * the extension safely using the last dot after the last slash).\n * - Handles leading/trailing slashes robustly.\n * - If `imagePath` is already an absolute URL, it is returned unchanged.\n */\nexport const getFullImagePath = (\n\tbaseUrl: string,\n\tfileSize: string,\n\timagePath: string,\n\tformat?: string,\n): string => {\n\tif (!imagePath) return \"\";\n\tif (isAbsoluteUrl(imagePath)) return imagePath;\n\n\tconst base = normalizeBaseUrl(baseUrl);\n\tconst size = normalizeSize(fileSize);\n\n\tlet path = normalizePath(imagePath);\n\tif (format) path = setExtension(path, format);\n\n\treturn `${base}${size}${path}`;\n};\n\n/**\n * Convenience helper for TMDB `Image` objects.\n */\nexport const formImage = (\n\timage: Image,\n\tfileSize: ImageSize,\n\tformat?: ImageFormat,\n): string | undefined => {\n\tconst path = image?.file_path;\n\tif (!path) return undefined;\n\n\treturn getFullImagePath(TMDB_IMAGE_BASE_URL, fileSize, path, format);\n};\n","import { API } from \"../../utils\";\nimport type { TokenType } from \"../types\";\n\n/**\n * Base class for all TMDB API endpoints.\n *\n * Provides a configured {@link API} client instance to subclasses.\n */\nexport class BaseEndpoint {\n\t/**\n\t * Low-level HTTP client wrapper used by all endpoints.\n\t */\n\tprotected readonly api: API;\n\n\t/**\n\t * Create a new endpoint instance.\n\t *\n\t * @param {TokenType} auth - Authentication information.\n\t * - If a string: treated as a v4 API Read Access Token (Bearer token).\n\t * - If an object: can include an API key and/or access token.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tthis.api = new API(auth);\n\t}\n}\n","import { type AccountDetails, BaseEndpoint, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving account details.\n *\n * TMDB v3 reference:\n * - GET /account/{account_id}\n *\n * Note:\n * TMDB does not expose a generic \"GET /account\" for account details. You must\n * provide an `account_id`. Most apps obtain it from an auth flow and then cache\n * it for subsequent requests.\n */\nexport class AccountEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new AccountEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves account details asynchronously.\n\t *\n\t * TMDB: GET /account/{account_id}\n\t *\n\t * @param {number} accountId - The TMDB account ID.\n\t * @returns {Promise<AccountDetails>} A Promise that resolves with the account details.\n\t */\n\tdetails(accountId: number): Promise<AccountDetails> {\n\t\treturn this.api.get<AccountDetails>(`/account/${accountId}`);\n\t}\n}\n","import { BaseEndpoint, type Certifications, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving certifications for movies and TV shows.\n *\n * TMDB v3 reference:\n * - GET /certification/movie/list\n * - GET /certification/tv/list\n */\nexport class CertificationEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CertificationEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves certifications for movies asynchronously.\n\t *\n\t * TMDB: GET /certification/movie/list\n\t *\n\t * @returns {Promise<Certifications>} A Promise that resolves with the certifications for movies.\n\t */\n\tmovies(): Promise<Certifications> {\n\t\treturn this.api.get<Certifications>(\"/certification/movie/list\");\n\t}\n\n\t/**\n\t * Retrieves certifications for TV shows asynchronously.\n\t *\n\t * TMDB: GET /certification/tv/list\n\t *\n\t * @returns {Promise<Certifications>} A Promise that resolves with the certifications for TV shows.\n\t */\n\ttv(): Promise<Certifications> {\n\t\treturn this.api.get<Certifications>(\"/certification/tv/list\");\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype MediaChanges,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving changes in movies, TV shows, and persons.\n *\n * TMDB v3 reference:\n * - GET /movie/changes\n * - GET /tv/changes\n * - GET /person/changes\n */\nexport class ChangeEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new ChangeEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves changes in movies asynchronously.\n\t *\n\t * TMDB: GET /movie/changes\n\t *\n\t * @param {ChangeOption} [options] - Optional parameters for filtering the changes.\n\t * @returns {Promise<MediaChanges>} A Promise that resolves with the changes in movies.\n\t */\n\tmovies(options?: ChangeOption): Promise<MediaChanges> {\n\t\treturn this.api.get<MediaChanges>(\"/movie/changes\", { query: options });\n\t}\n\n\t/**\n\t * Retrieves changes in TV shows asynchronously.\n\t *\n\t * TMDB: GET /tv/changes\n\t *\n\t * @param {ChangeOption} [options] - Optional parameters for filtering the changes.\n\t * @returns {Promise<MediaChanges>} A Promise that resolves with the changes in TV shows.\n\t */\n\ttv(options?: ChangeOption): Promise<MediaChanges> {\n\t\treturn this.api.get<MediaChanges>(\"/tv/changes\", { query: options });\n\t}\n\n\t/**\n\t * Retrieves changes related to persons asynchronously.\n\t *\n\t * TMDB: GET /person/changes\n\t *\n\t * @param {ChangeOption} [options] - Optional parameters for filtering the changes.\n\t * @returns {Promise<MediaChanges>} A Promise that resolves with the changes related to persons.\n\t */\n\tperson(options?: ChangeOption): Promise<MediaChanges> {\n\t\treturn this.api.get<MediaChanges>(\"/person/changes\", { query: options });\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype CollectionImageOptions,\n\ttype DetailedCollection,\n\ttype ImageCollection,\n\ttype LanguageOption,\n\ttype TokenType,\n\ttype Translations,\n} from \"../@types\";\n\nconst BASE_COLLECTION = \"/collection\";\n\n/**\n * Represents an endpoint for accessing collections and their details.\n */\nexport class CollectionsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CollectionsEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific collection asynchronously.\n\t * @param {number} id - The ID of the collection.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<DetailedCollection>} A Promise that resolves with the detailed information of the collection.\n\t */\n\tasync details(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t): Promise<DetailedCollection> {\n\t\treturn await this.api.get<DetailedCollection>(\n\t\t\t`${BASE_COLLECTION}/${id}`,\n\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images associated with a specific collection asynchronously.\n\t * @param {number} id - The ID of the collection.\n\t * @param {CollectionImageOptions} [options] - Optional parameters for specifying image options.\n\t * @returns {Promise<ImageCollection>} A Promise that resolves with the collection images.\n\t */\n\tasync images(\n\t\tid: number,\n\t\toptions?: CollectionImageOptions,\n\t): Promise<ImageCollection> {\n\t\tconst computedOptions = {\n\t\t\tinclude_image_language: options?.include_image_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<ImageCollection>(\n\t\t\t`${BASE_COLLECTION}/${id}/images`,\n\t\t\t{ query: computedOptions },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations for a specific collection asynchronously.\n\t * @param {number} id - The ID of the collection.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<Translations>} A Promise that resolves with the translations of the collection.\n\t */\n\tasync translations(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t): Promise<Translations> {\n\t\treturn await this.api.get<Translations>(\n\t\t\t`${BASE_COLLECTION}/${id}/translations`,\n\n\t\t\t{ query: options },\n\t\t);\n\t}\n}\n","import {\n\ttype AlternativeNames,\n\tBaseEndpoint,\n\ttype CompanyDetails,\n\ttype CompanyImages,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for accessing company details and related information.\n */\nexport class CompaniesEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CompaniesEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific company asynchronously.\n\t * @param {number} id - The ID of the company.\n\t * @returns {Promise<CompanyDetails>} A Promise that resolves with the detailed information of the company.\n\t */\n\tasync details(id: number): Promise<CompanyDetails> {\n\t\treturn await this.api.get<CompanyDetails>(`/company/${id}`);\n\t}\n\n\t/**\n\t * Retrieves alternative names of a specific company asynchronously.\n\t * @param {number} id - The ID of the company.\n\t * @returns {Promise<AlternativeNames>} A Promise that resolves with the alternative names of the company.\n\t */\n\tasync alternativeNames(id: number): Promise<AlternativeNames> {\n\t\treturn await this.api.get<AlternativeNames>(\n\t\t\t`/company/${id}/alternative_names`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images associated with a specific company asynchronously.\n\t * @param {number} id - The ID of the company.\n\t * @returns {Promise<CompanyImages>} A Promise that resolves with the images of the company.\n\t */\n\tasync images(id: number): Promise<CompanyImages> {\n\t\treturn await this.api.get<CompanyImages>(`/company/${id}/images`);\n\t}\n}\n","import { BaseEndpoint, type Configuration, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving current system configuration.\n */\nexport class ConfigurationEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new ConfigurationEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves the current system configuration asynchronously.\n\t * @returns {Promise<Configuration>} A Promise that resolves with the current system configuration.\n\t */\n\tasync getCurrent(): Promise<Configuration> {\n\t\treturn await this.api.get<Configuration>(\"/configuration\");\n\t}\n}\n","import { BaseEndpoint, type CreditResponse, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving credit details.\n */\nexport class CreditsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CreditsEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves credit details by ID asynchronously.\n\t * @param {string} id - The ID of the credit.\n\t * @returns {Promise<CreditResponse>} A Promise that resolves with the credit details.\n\t */\n\tasync getById(id: string): Promise<CreditResponse> {\n\t\treturn await this.api.get<CreditResponse>(`/credit/${id}`);\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype MovieDiscoverResult,\n\ttype MovieQueryOptions,\n\ttype TokenType,\n\ttype TvShowDiscoverResult,\n\ttype TvShowQueryOptions,\n} from \"../@types\";\n\nconst BASE_DISCOVER = \"/discover\";\n\n/**\n * Represents an endpoint for discovering movies and TV shows based on various criteria.\n *\n * TMDB v3 reference:\n * - GET /discover/movie\n * - GET /discover/tv\n */\nexport class DiscoverEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new DiscoverEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves a list of movies based on the provided query options asynchronously.\n\t *\n\t * TMDB: GET /discover/movie\n\t *\n\t * @param {MovieQueryOptions} [options] - Optional parameters for refining the movie discovery.\n\t * @returns {Promise<MovieDiscoverResult>} A Promise that resolves with the movie discovery results.\n\t */\n\tmovie(options?: MovieQueryOptions): Promise<MovieDiscoverResult> {\n\t\treturn this.api.get<MovieDiscoverResult>(`${BASE_DISCOVER}/movie`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves a list of TV shows based on the provided query options asynchronously.\n\t *\n\t * TMDB: GET /discover/tv\n\t *\n\t * @param {TvShowQueryOptions} [options] - Optional parameters for refining the TV show discovery.\n\t * @returns {Promise<TvShowDiscoverResult>} A Promise that resolves with the TV show discovery results.\n\t */\n\ttvShow(options?: TvShowQueryOptions): Promise<TvShowDiscoverResult> {\n\t\treturn this.api.get<TvShowDiscoverResult>(`${BASE_DISCOVER}/tv`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype ExternalIdOptions,\n\ttype FindResult,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for finding media by external ID.\n */\nexport class FindEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new FindEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves media by external ID asynchronously.\n\t * @param {string} externalId - The external ID of the media.\n\t * @param {ExternalIdOptions} options - Options for finding media by external ID.\n\t * @returns {Promise<FindResult>} A Promise that resolves with the result of the find operation.\n\t */\n\tasync byId(\n\t\texternalId: string,\n\t\toptions: ExternalIdOptions,\n\t): Promise<FindResult> {\n\t\treturn await this.api.get<FindResult>(`/find/${externalId}`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype Genres,\n\ttype LanguageOption,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving genre information for movies and TV shows.\n */\nexport class GenreEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new GenreEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves genre information for movies asynchronously.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<Genres>} A Promise that resolves with the genre information for movies.\n\t */\n\tasync movies(options?: LanguageOption): Promise<Genres> {\n\t\treturn await this.api.get<Genres>(\"/genre/movie/list\", { query: options });\n\t}\n\n\t/**\n\t * Retrieves genre information for TV shows asynchronously.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<Genres>} A Promise that resolves with the genre information for TV shows.\n\t */\n\tasync tv(options?: LanguageOption): Promise<Genres> {\n\t\treturn await this.api.get<Genres>(\"/genre/tv/list\", { query: options });\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype BelongingMovies,\n\ttype Keyword,\n\ttype KeywordsOptions,\n\ttype TokenType,\n} from \"../@types\";\n\nconst BASE_KEYWORD = \"/keyword\";\n\n/**\n * Represents an endpoint for accessing keyword details and related movies.\n */\nexport class KeywordsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new KeywordsEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific keyword asynchronously.\n\t * @param {number} keywordId - The ID of the keyword.\n\t * @returns {Promise<Keyword>} A Promise that resolves with the details of the keyword.\n\t */\n\tasync details(keywordId: number): Promise<Keyword> {\n\t\treturn await this.api.get<Keyword>(`${BASE_KEYWORD}/${keywordId}`);\n\t}\n\n\t/**\n\t * Retrieves movies belonging to a specific keyword asynchronously.\n\t * @param {number} keywordId - The ID of the keyword.\n\t * @param {KeywordsOptions} [options] - Optional parameters for refining the search.\n\t * @returns {Promise<BelongingMovies>} A Promise that resolves with the movies belonging to the keyword.\n\t */\n\tasync belongingMovies(\n\t\tkeywordId: number,\n\t\toptions?: KeywordsOptions,\n\t): Promise<BelongingMovies> {\n\t\treturn await this.api.get<BelongingMovies>(\n\t\t\t`${BASE_KEYWORD}/${keywordId}/movies`,\n\n\t\t\t{ query: options },\n\t\t);\n\t}\n}\n","import {\n\ttype AlternativeTitles,\n\ttype AppendToResponse,\n\ttype AppendToResponseMovieKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype Credits,\n\ttype ExternalIds,\n\ttype Images,\n\ttype Keywords,\n\ttype LanguageOption,\n\ttype LatestMovie,\n\ttype MovieChangeValue,\n\ttype MovieDetails,\n\ttype MovieLists,\n\ttype MoviesImageSearchOptions,\n\ttype MoviesPlayingNow,\n\ttype PageOption,\n\ttype PopularMovies,\n\ttype Recommendations,\n\ttype RegionOption,\n\ttype ReleaseDates,\n\ttype Reviews,\n\ttype SimilarMovies,\n\ttype TokenType,\n\ttype TopRatedMovies,\n\ttype Translations,\n\ttype UpcomingMovies,\n\ttype Videos,\n\ttype WatchProviders,\n} from \"../@types\";\n\nconst BASE_MOVIE = \"/movie\";\n\n/**\n * Represents an endpoint for accessing movie-related information.\n */\nexport class MoviesEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new MoviesEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {AppendToResponseMovieKey[]} [appendToResponse] - Optional keys to append to the response.\n\t * @param {string} [language] - Optional parameter for specifying the language.\n\t * @returns {Promise<AppendToResponse<MovieDetails, AppendToResponseMovieKey[], 'movie'>>} A Promise that resolves with the details of the movie.\n\t */\n\tasync details<T extends AppendToResponseMovieKey[] | undefined>(\n\t\tid: number,\n\t\tappendToResponse?: T,\n\t\tlanguage?: string,\n\t) {\n\t\tconst query = {\n\t\t\tappend_to_response: appendToResponse\n\t\t\t\t? appendToResponse.join(\",\")\n\t\t\t\t: undefined,\n\t\t\tlanguage: language,\n\t\t};\n\n\t\treturn await this.api.get<AppendToResponse<MovieDetails, T, \"movie\">>(\n\t\t\t`${BASE_MOVIE}/${id}`,\n\t\t\t{ query },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves alternative titles of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @returns {Promise<AlternativeTitles>} A Promise that resolves with the alternative titles of the movie.\n\t */\n\tasync alternativeTitles(id: number): Promise<AlternativeTitles> {\n\t\treturn await this.api.get<AlternativeTitles>(\n\t\t\t`${BASE_MOVIE}/${id}/alternative_titles`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes made to a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {ChangeOption} [options] - Optional parameters for filtering changes.\n\t * @returns {Promise<Changes<MovieChangeValue>>} A Promise that resolves with the changes made to the movie.\n\t */\n\tasync changes(\n\t\tid: number,\n\t\toptions?: ChangeOption,\n\t): Promise<Changes<MovieChangeValue>> {\n\t\treturn await this.api.get<Changes<MovieChangeValue>>(\n\t\t\t`${BASE_MOVIE}/${id}/changes`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<Credits>} A Promise that resolves with the credits of the movie.\n\t */\n\tasync credits(id: number, options?: LanguageOption): Promise<Credits> {\n\t\treturn await this.api.get<Credits>(`${BASE_MOVIE}/${id}/credits`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves external IDs of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external IDs of the movie.\n\t */\n\tasync externalIds(id: number): Promise<ExternalIds> {\n\t\treturn await this.api.get<ExternalIds>(`${BASE_MOVIE}/${id}/external_ids`);\n\t}\n\n\t/**\n\t * Retrieves images of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {MoviesImageSearchOptions} [options] - Optional parameters for specifying image search options.\n\t * @returns {Promise<Images>} A Promise that resolves with the images of the movie.\n\t */\n\tasync images(\n\t\tid: number,\n\t\toptions?: MoviesImageSearchOptions,\n\t): Promise<Images> {\n\t\tconst computedOptions = {\n\t\t\tinclude_image_language: options?.include_image_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<Images>(`${BASE_MOVIE}/${id}/images`, {\n\t\t\tquery: computedOptions,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves keywords of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @returns {Promise<Keywords>} A Promise that resolves with the keywords of the movie.\n\t */\n\tasync keywords(id: number): Promise<Keywords> {\n\t\treturn await this.api.get<Keywords>(`${BASE_MOVIE}/${id}/keywords`);\n\t}\n\n\t/**\n\t * Retrieves lists containing a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for specifying language and pagination options.\n\t * @returns {Promise<MovieLists>} A Promise that resolves with the lists containing the movie.\n\t */\n\tasync lists(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<MovieLists> {\n\t\treturn await this.api.get<MovieLists>(`${BASE_MOVIE}/${id}/lists`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves recommendations for a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for specifying language and pagination options.\n\t * @returns {Promise<Recommendations>} A Promise that resolves with the recommendations for the movie.\n\t */\n\tasync recommendations(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<Recommendations> {\n\t\treturn await this.api.get<Recommendations>(\n\t\t\t`${BASE_MOVIE}/${id}/recommendations`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves release dates of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @returns {Promise<ReleaseDates>} A Promise that resolves with the release dates of the movie.\n\t */\n\tasync releaseDates(id: number): Promise<ReleaseDates> {\n\t\treturn await this.api.get<ReleaseDates>(\n\t\t\t`${BASE_MOVIE}/${id}/release_dates`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves reviews for a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for specifying language and pagination options.\n\t * @returns {Promise<Reviews>} A Promise that resolves with the reviews for the movie.\n\t */\n\tasync reviews(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<Reviews> {\n\t\treturn await this.api.get<Reviews>(`${BASE_MOVIE}/${id}/reviews`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves similar movies for a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for specifying language and pagination options.\n\t * @returns {Promise<SimilarMovies>} A Promise that resolves with the similar movies for the movie.\n\t */\n\tasync similar(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<SimilarMovies> {\n\t\treturn await this.api.get<SimilarMovies>(`${BASE_MOVIE}/${id}/similar`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves translations of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @returns {Promise<Translations>} A Promise that resolves with the translations of the movie.\n\t */\n\tasync translations(id: number): Promise<Translations> {\n\t\treturn await this.api.get<Translations>(`${BASE_MOVIE}/${id}/translations`);\n\t}\n\n\t/**\n\t * Retrieves videos of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos of the movie.\n\t */\n\tasync videos(id: number, options?: LanguageOption): Promise<Videos> {\n\t\treturn await this.api.get<Videos>(`${BASE_MOVIE}/${id}/videos`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves watch providers of a specific movie asynchronously.\n\t * @param {number} id - The ID of the movie.\n\t * @returns {Promise<WatchProviders>} A Promise that resolves with the watch providers of the movie.\n\t */\n\tasync watchProviders(id: number): Promise<WatchProviders> {\n\t\treturn await this.api.get<WatchProviders>(\n\t\t\t`${BASE_MOVIE}/${id}/watch/providers`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves details of the latest movie asynchronously.\n\t * @returns {Promise<LatestMovie>} A Promise that resolves with the details of the latest movie.\n\t */\n\tasync latest(): Promise<LatestMovie> {\n\t\treturn await this.api.get<LatestMovie>(`${BASE_MOVIE}/latest`);\n\t}\n\n\t/**\n\t * Retrieves movies playing now asynchronously.\n\t * @param {PageOption & LanguageOption & RegionOption} [options] - Optional parameters for specifying language, region, and pagination options.\n\t * @returns {Promise<MoviesPlayingNow>} A Promise that resolves with the movies playing now.\n\t */\n\tasync nowPlaying(\n\t\toptions?: PageOption & LanguageOption & RegionOption,\n\t): Promise<MoviesPlayingNow> {\n\t\treturn await this.api.get<MoviesPlayingNow>(`${BASE_MOVIE}/now_playing`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves popular movies asynchronously.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for specifying language and pagination options.\n\t * @returns {Promise<PopularMovies>} A Promise that resolves with the popular movies.\n\t */\n\tasync popular(options?: LanguageOption & PageOption): Promise<PopularMovies> {\n\t\treturn await this.api.get<PopularMovies>(`${BASE_MOVIE}/popular`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves top rated movies asynchronously.\n\t * @param {PageOption & LanguageOption & RegionOption} [options] - Optional parameters for specifying language, region, and pagination options.\n\t * @returns {Promise<TopRatedMovies>} A Promise that resolves with the top rated movies.\n\t */\n\tasync topRated(\n\t\toptions?: PageOption & LanguageOption & RegionOption,\n\t): Promise<TopRatedMovies> {\n\t\treturn await this.api.get<TopRatedMovies>(`${BASE_MOVIE}/top_rated`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves upcoming movies asynchronously.\n\t * @param {PageOption & LanguageOption & RegionOption} [options] - Optional parameters for specifying language, region, and pagination options.\n\t * @returns {Promise<UpcomingMovies>} A Promise that resolves with the upcoming movies.\n\t */\n\tasync upcoming(\n\t\toptions?: PageOption & LanguageOption & RegionOption,\n\t): Promise<UpcomingMovies> {\n\t\treturn await this.api.get<UpcomingMovies>(`${BASE_MOVIE}/upcoming`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n}\n","import {\n\ttype AlternativeNames,\n\tBaseEndpoint,\n\ttype NetworkDetails,\n\ttype NetworkImages,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for accessing network details.\n */\nexport class NetworksEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new NetworksEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific network asynchronously.\n\t * @param {number} id - The ID of the network.\n\t * @returns {Promise<NetworkDetails>} A Promise that resolves with the details of the network.\n\t */\n\tasync details(id: number): Promise<NetworkDetails> {\n\t\treturn await this.api.get<NetworkDetails>(`/network/${id}`);\n\t}\n\n\t/**\n\t * Retrieves alternative names of a specific network asynchronously.\n\t * @param {number} id - The ID of the network.\n\t * @returns {Promise<AlternativeNames>} A Promise that resolves with the alternative names of the network.\n\t */\n\tasync alternativeNames(id: number): Promise<AlternativeNames> {\n\t\treturn await this.api.get<AlternativeNames>(\n\t\t\t`/network/${id}/alternative_names`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images of a specific network asynchronously.\n\t * @param {number} id - The ID of the network.\n\t * @returns {Promise<NetworkImages>} A Promise that resolves with the images of the network.\n\t */\n\tasync images(id: number): Promise<NetworkImages> {\n\t\treturn await this.api.get<NetworkImages>(`/network/${id}/images`);\n\t}\n}\n","import {\n\ttype AppendToResponse,\n\ttype AppendToResponsePersonKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype ExternalIds,\n\ttype LanguageOption,\n\ttype PageOption,\n\ttype PeopleImages,\n\ttype PersonChangeValue,\n\ttype PersonCombinedCredits,\n\ttype PersonDetails,\n\ttype PersonMovieCredit,\n\ttype PersonTranslations,\n\ttype PersonTvShowCredit,\n\ttype PopularPersons,\n\ttype TaggedImages,\n\ttype TokenType,\n} from \"../@types\";\n\nconst BASE_PERSON = \"/person\";\n\n/**\n * Represents an endpoint for accessing information about people.\n */\nexport class PeopleEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new PeopleEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @param {AppendToResponsePersonKey[]} [appendToResponse] - Optional keys to append to the response.\n\t * @param {string} [language] - Optional parameter for specifying the language.\n\t * @returns {Promise<AppendToResponse<PersonDetails, AppendToResponsePersonKey[], 'person'>>} A Promise that resolves with the details of the person.\n\t */\n\tasync details<T extends AppendToResponsePersonKey[] | undefined>(\n\t\tid: number,\n\t\tappendToResponse?: T,\n\t\tlanguage?: string,\n\t) {\n\t\tconst options = {\n\t\t\tappend_to_response: appendToResponse\n\t\t\t\t? appendToResponse.join(\",\")\n\t\t\t\t: undefined,\n\t\t\tlanguage: language,\n\t\t};\n\t\treturn await this.api.get<AppendToResponse<PersonDetails, T, \"person\">>(\n\t\t\t`${BASE_PERSON}/${id}`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes made to a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @param {ChangeOption} [options] - Optional parameters for filtering changes.\n\t * @returns {Promise<Changes<PersonChangeValue>>} A Promise that resolves with the changes made to the person.\n\t */\n\tasync changes(\n\t\tid: number,\n\t\toptions?: ChangeOption,\n\t): Promise<Changes<PersonChangeValue>> {\n\t\treturn await this.api.get<Changes<PersonChangeValue>>(\n\t\t\t`${BASE_PERSON}/${id}/changes`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves movie credits of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<PersonMovieCredit>} A Promise that resolves with the movie credits of the person.\n\t */\n\tasync movieCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t): Promise<PersonMovieCredit> {\n\t\treturn await this.api.get<PersonMovieCredit>(\n\t\t\t`${BASE_PERSON}/${id}/movie_credits`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves TV show credits of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<PersonTvShowCredit>} A Promise that resolves with the TV show credits of the person.\n\t */\n\tasync tvShowCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t): Promise<PersonTvShowCredit> {\n\t\treturn await this.api.get<PersonTvShowCredit>(\n\t\t\t`${BASE_PERSON}/${id}/tv_credits`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves combined credits of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<PersonCombinedCredits>} A Promise that resolves with the combined credits of the person.\n\t */\n\tasync combinedCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t): Promise<PersonCombinedCredits> {\n\t\treturn await this.api.get<PersonCombinedCredits>(\n\t\t\t`${BASE_PERSON}/${id}/combined_credits`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves external IDs of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external IDs of the person.\n\t */\n\tasync externalId(id: number): Promise<ExternalIds> {\n\t\treturn await this.api.get<ExternalIds>(`${BASE_PERSON}/${id}/external_ids`);\n\t}\n\n\t/**\n\t * Retrieves images of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @returns {Promise<PeopleImages>} A Promise that resolves with the images of the person.\n\t */\n\tasync images(id: number): Promise<PeopleImages> {\n\t\treturn await this.api.get<PeopleImages>(`${BASE_PERSON}/${id}/images`);\n\t}\n\n\t/**\n\t * Retrieves tagged images of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @param {PageOption} [options] - Optional parameters for specifying pagination options.\n\t * @returns {Promise<TaggedImages>} A Promise that resolves with the tagged images of the person.\n\t */\n\tasync taggedImages(id: number, options?: PageOption): Promise<TaggedImages> {\n\t\treturn await this.api.get<TaggedImages>(\n\t\t\t`${BASE_PERSON}/${id}/tagged_images`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations of a specific person asynchronously.\n\t * @param {number} id - The ID of the person.\n\t * @returns {Promise<PersonTranslations>} A Promise that resolves with the translations of the person.\n\t */\n\tasync translation(id: number): Promise<PersonTranslations> {\n\t\treturn await this.api.get<PersonTranslations>(\n\t\t\t`${BASE_PERSON}/${id}/translations`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves details of the latest person asynchronously.\n\t * @returns {Promise<PersonDetails>} A Promise that resolves with the details of the latest person.\n\t */\n\tasync latest(): Promise<PersonDetails> {\n\t\treturn await this.api.get<PersonDetails>(`${BASE_PERSON}/latest`);\n\t}\n\n\t/**\n\t * Retrieves popular persons asynchronously.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for specifying language and pagination options.\n\t * @returns {Promise<PopularPersons>} A Promise that resolves with the popular persons.\n\t */\n\tasync popular(\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<PopularPersons> {\n\t\treturn await this.api.get<PopularPersons>(`${BASE_PERSON}/popular`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n}\n","import { BaseEndpoint, type ReviewDetails, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for accessing review details.\n */\nexport class ReviewEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new ReviewEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific review asynchronously.\n\t * @param {string} id - The ID of the review.\n\t * @returns {Promise<ReviewDetails>} A Promise that resolves with the details of the review.\n\t */\n\tasync details(id: string): Promise<ReviewDetails> {\n\t\treturn await this.api.get<ReviewDetails>(`/review/${id}`);\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype Collection,\n\ttype Company,\n\ttype Movie,\n\ttype MovieSearchOptions,\n\ttype MultiSearchOptions,\n\ttype MultiSearchResult,\n\ttype PeopleSearchOptions,\n\ttype Person,\n\ttype Search,\n\ttype SearchOptions,\n\ttype TokenType,\n\ttype TV,\n\ttype TvSearchOptions,\n} from \"../@types\";\n\nconst BASE_SEARCH = \"/search\";\n\n/**\n * Represents an endpoint for performing various search operations.\n */\nexport class SearchEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new SearchEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Searches for companies asynchronously.\n\t * @param {SearchOptions} options - The search options.\n\t * @returns {Promise<Search<Company>>} A Promise that resolves with the search results for companies.\n\t */\n\tasync companies(options: SearchOptions): Promise<Search<Company>> {\n\t\treturn await this.api.get<Search<Company>>(`${BASE_SEARCH}/company`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Searches for collections asynchronously.\n\t * @param {SearchOptions} options - The search options.\n\t * @returns {Promise<Search<Collection>>} A Promise that resolves with the search results for collections.\n\t */\n\tasync collections(options: SearchOptions): Promise<Search<Collection>> {\n\t\treturn await this.api.get<Search<Collection>>(`${BASE_SEARCH}/collection`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Searches for keywords asynchronously.\n\t * @param {SearchOptions} options - The search options.\n\t * @returns {Promise<Search<{ id: string; name: string }>>} A Promise that resolves with the search results for keywords.\n\t */\n\tasync keywords(\n\t\toptions: SearchOptions,\n\t): Promise<Search<{ id: string; name: string }>> {\n\t\treturn await this.api.get<Search<{ id: string; name: string }>>(\n\t\t\t`${BASE_SEARCH}/keyword`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Searches for movies asynchronously.\n\t * @param {MovieSearchOptions} options - The search options.\n\t * @returns {Promise<Search<Movie>>} A Promise that resolves with the search results for movies.\n\t */\n\tasync movies(options: MovieSearchOptions): Promise<Search<Movie>> {\n\t\treturn await this.api.get<Search<Movie>>(`${BASE_SEARCH}/movie`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Searches for people asynchronously.\n\t * @param {PeopleSearchOptions} options - The search options.\n\t * @returns {Promise<Search<Person>>} A Promise that resolves with the search results for people.\n\t */\n\tasync people(options: PeopleSearchOptions): Promise<Search<Person>> {\n\t\treturn await this.api.get<Search<Person>>(`${BASE_SEARCH}/person`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Searches for TV shows asynchronously.\n\t * @param {TvSearchOptions} options - The search options.\n\t * @returns {Promise<Search<TV>>} A Promise that resolves with the search results for TV shows.\n\t */\n\tasync tv(options: TvSearchOptions): Promise<Search<TV>> {\n\t\treturn await this.api.get<Search<TV>>(`${BASE_SEARCH}/tv`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Performs a multi-search asynchronously.\n\t * @param {MultiSearchOptions} options - The search options.\n\t * @returns {Promise<Search<MultiSearchResult>>} A Promise that resolves with the multi-search results.\n\t */\n\tasync multi(options: MultiSearchOptions): Promise<Search<MultiSearchResult>> {\n\t\treturn await this.api.get<Search<MultiSearchResult>>(\n\t\t\t`${BASE_SEARCH}/multi`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype LanguageOption,\n\ttype PageOption,\n\ttype TimeWindow,\n\ttype TokenType,\n\ttype TrendingMediaType,\n\ttype TrendingResults,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving trending content.\n */\nexport class TrendingEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TrendingEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves trending content asynchronously based on media type and time window.\n\t * @param {TrendingMediaType} mediaType - The type of media (e.g., 'all', 'movie', 'tv').\n\t * @param {TimeWindow} timeWindow - The time window for trending content (e.g., 'day', 'week').\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for specifying the language and pagination.\n\t * @returns {Promise<TrendingResults<T>>} A Promise that resolves with the trending results.\n\t * @template T - The type of media being searched for (e.g., 'movie', 'tv').\n\t */\n\tasync trending<T extends TrendingMediaType>(\n\t\tmediaType: T,\n\t\ttimeWindow: TimeWindow,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<TrendingResults<T>> {\n\t\treturn await this.api.get<TrendingResults<T>>(\n\t\t\t`/trending/${mediaType}/${timeWindow}`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n}\n","import {\n\ttype AppendToResponse,\n\ttype AppendToResponseTvEpisodeKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype Episode,\n\ttype EpisodeSelection,\n\ttype ExternalIds,\n\ttype Images,\n\ttype LanguageOption,\n\ttype TokenType,\n\ttype TvEpisodeChangeValue,\n\ttype TvEpisodeCredit,\n\ttype TvEpisodeImageSearchOptions,\n\ttype TvEpisodeTranslations,\n\ttype TvEpisodeVideoSearchOptions,\n\ttype Videos,\n} from \"../@types\";\n\nconst BASE_EPISODE = (episodeSelection: EpisodeSelection): string => {\n\treturn `/tv/${episodeSelection.tvShowID}/season/${episodeSelection.seasonNumber}/episode/${episodeSelection.episodeNumber}`;\n};\n\n/**\n * Represents an endpoint for accessing TV episode-related information.\n */\nexport class TvEpisodesEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TvEpisodesEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific TV episode asynchronously.\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for the TV episode.\n\t * @param {AppendToResponseTvEpisodeKey[]} [appendToResponse] - Additional data to append to the response.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<AppendToResponse<Omit<Episode, 'show_id'>, AppendToResponseTvEpisodeKey[], 'tvEpisode'>>}\n\t * A Promise that resolves with the details of the TV episode.\n\t */\n\tasync details<T extends AppendToResponseTvEpisodeKey[] | undefined>(\n\t\tepisodeSelection: EpisodeSelection,\n\t\tappendToResponse?: T,\n\t\toptions?: LanguageOption,\n\t) {\n\t\tconst combinedOptions = {\n\t\t\tappend_to_response: appendToResponse\n\t\t\t\t? appendToResponse.join(\",\")\n\t\t\t\t: undefined,\n\t\t\t...options,\n\t\t};\n\n\t\treturn await this.api.get<\n\t\t\tAppendToResponse<Omit<Episode, \"show_id\">, T, \"tvEpisode\">\n\t\t>(`${BASE_EPISODE(episodeSelection)}`, { query: combinedOptions });\n\t}\n\n\t/**\n\t * Retrieves changes related to a specific TV episode asynchronously.\n\t * @param {number} episodeID - The ID of the TV episode.\n\t * @param {ChangeOption} [options] - Optional parameters for specifying changes.\n\t * @returns {Promise<Changes<TvEpisodeChangeValue>>} A Promise that resolves with the changes related to the TV episode.\n\t */\n\tasync changes(episodeID: number, options?: ChangeOption) {\n\t\treturn await this.api.get<Changes<TvEpisodeChangeValue>>(\n\t\t\t`/tv/episode/${episodeID}/changes`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits for a specific TV episode asynchronously.\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for the TV episode.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<TvEpisodeCredit>} A Promise that resolves with the credits for the TV episode.\n\t */\n\tasync credits(episodeSelection: EpisodeSelection, options?: LanguageOption) {\n\t\treturn await this.api.get<TvEpisodeCredit>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/credits`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves external IDs for a specific TV episode asynchronously.\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for the TV episode.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external IDs for the TV episode.\n\t */\n\tasync externalIds(episodeSelection: EpisodeSelection) {\n\t\treturn await this.api.get<ExternalIds>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/external_ids`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images for a specific TV episode asynchronously.\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for the TV episode.\n\t * @param {TvEpisodeImageSearchOptions} [options] - Optional parameters for specifying image search options.\n\t * @returns {Promise<Images>} A Promise that resolves with the images for the TV episode.\n\t */\n\tasync images(\n\t\tepisodeSelection: EpisodeSelection,\n\t\toptions?: TvEpisodeImageSearchOptions,\n\t) {\n\t\tconst computedOptions = {\n\t\t\tinclude_image_language: options?.include_image_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<Images>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/images`,\n\t\t\t{ query: computedOptions },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations for a specific TV episode asynchronously.\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for the TV episode.\n\t * @returns {Promise<TvEpisodeTranslations>} A Promise that resolves with the translations for the TV episode.\n\t */\n\tasync translations(episodeSelection: EpisodeSelection) {\n\t\treturn await this.api.get<TvEpisodeTranslations>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/translations`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves videos for a specific TV episode asynchronously.\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for the TV episode.\n\t * @param {TvEpisodeVideoSearchOptions} [options] - Optional parameters for specifying video search options.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos for the TV episode.\n\t */\n\tasync videos(\n\t\tepisodeSelection: EpisodeSelection,\n\t\toptions?: TvEpisodeVideoSearchOptions,\n\t) {\n\t\tconst computedOptions = {\n\t\t\tinclude_video_language: options?.include_video_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<Videos>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/videos`,\n\t\t\t{ query: computedOptions },\n\t\t);\n\t}\n}\n","import {\n\ttype AggregateCredits,\n\ttype AppendToResponse,\n\ttype AppendToResponseTvSeasonKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype Credits,\n\ttype ExternalIds,\n\ttype Images,\n\ttype LanguageOption,\n\ttype SeasonDetails,\n\ttype SeasonSelection,\n\ttype TokenType,\n\ttype Translations,\n\ttype TvSeasonChangeValue,\n\ttype TvSeasonImageSearchOptions,\n\ttype TvSeasonVideoSearchOptions,\n\ttype Videos,\n} from \"../@types\";\n\nconst BASE_SEASON = (seasonSelection: SeasonSelection): string => {\n\treturn `/tv/${seasonSelection.tvShowID}/season/${seasonSelection.seasonNumber}`;\n};\n\n/**\n * Represents an endpoint for accessing TV season-related information.\n */\nexport class TvSeasonsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TvSeasonsEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific TV season asynchronously.\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the TV season.\n\t * @param {AppendToResponseTvSeasonKey[]} [appendToResponse] - Additional data to append to the response.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<AppendToResponse<SeasonDetails, AppendToResponseTvSeasonKey[], 'tvSeason'>>}\n\t * A Promise that resolves with the details of the TV season.\n\t */\n\tasync details<T extends AppendToResponseTvSeasonKey[] | undefined>(\n\t\tseasonSelection: SeasonSelection,\n\t\tappendToResponse?: T,\n\t\toptions?: LanguageOption,\n\t) {\n\t\tconst combinedOptions = {\n\t\t\tappend_to_response: appendToResponse\n\t\t\t\t? appendToResponse.join(\",\")\n\t\t\t\t: undefined,\n\t\t\t...options,\n\t\t};\n\n\t\treturn await this.api.get<AppendToResponse<SeasonDetails, T, \"tvSeason\">>(\n\t\t\t`${BASE_SEASON(seasonSelection)}`,\n\t\t\t{ query: combinedOptions },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves aggregate credits for a specific TV season asynchronously.\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<AggregateCredits>} A Promise that resolves with the aggregate credits for the TV season.\n\t */\n\tasync aggregateCredits(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: LanguageOption,\n\t) {\n\t\treturn await this.api.get<AggregateCredits>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/aggregate_credits`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes related to a specific TV season asynchronously.\n\t * @param {number} seasonId - The ID of the TV season.\n\t * @param {ChangeOption} [options] - Optional parameters for specifying changes.\n\t * @returns {Promise<Changes<TvSeasonChangeValue>>} A Promise that resolves with the changes related to the TV season.\n\t */\n\tasync changes(seasonId: number, options?: ChangeOption) {\n\t\treturn await this.api.get<Changes<TvSeasonChangeValue>>(\n\t\t\t`/tv/season/${seasonId}/changes`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits for a specific TV season asynchronously.\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<Credits>} A Promise that resolves with the credits for the TV season.\n\t */\n\tasync credits(seasonSelection: SeasonSelection, options?: LanguageOption) {\n\t\treturn await this.api.get<Credits>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/credits`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves external IDs for a specific TV season asynchronously.\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external IDs for the TV season.\n\t */\n\tasync externalIds(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: LanguageOption,\n\t) {\n\t\treturn await this.api.get<ExternalIds>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/external_ids`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images for a specific TV season asynchronously.\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the TV season.\n\t * @param {TvSeasonImageSearchOptions} [options] - Optional parameters for specifying image search options.\n\t * @returns {Promise<Images>} A Promise that resolves with the images for the TV season.\n\t */\n\tasync images(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: TvSeasonImageSearchOptions,\n\t) {\n\t\tconst computedOptions = {\n\t\t\tinclude_image_language: options?.include_image_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<Images>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/images`,\n\t\t\t{ query: computedOptions },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves videos for a specific TV season asynchronously.\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the TV season.\n\t * @param {TvSeasonVideoSearchOptions} [options] - Optional parameters for specifying video search options.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos for the TV season.\n\t */\n\tasync videos(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: TvSeasonVideoSearchOptions,\n\t) {\n\t\tconst computedOptions = {\n\t\t\tinclude_video_language: options?.include_video_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<Videos>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/videos`,\n\t\t\t{ query: computedOptions },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations for a specific TV season asynchronously.\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the language.\n\t * @returns {Promise<Translations>} A Promise that resolves with the translations for the TV season.\n\t */\n\tasync translations(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: LanguageOption,\n\t) {\n\t\treturn await this.api.get<Translations>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/translations`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n}\n","import {\n\ttype AggregateCredits,\n\ttype AlternativeTitles,\n\ttype AppendToResponse,\n\ttype AppendToResponseTvKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype ContentRatings,\n\ttype Credits,\n\ttype EpisodeGroups,\n\ttype ExternalIds,\n\ttype Images,\n\ttype Keywords,\n\ttype LanguageOption,\n\ttype Latesttv,\n\ttype OnTheAir,\n\ttype PageOption,\n\ttype Populartv,\n\ttype Recommendations,\n\ttype Reviews,\n\ttype ScreenedTheatrically,\n\ttype SeasonDetails,\n\ttype Similartv,\n\ttype TimezoneOption,\n\ttype TokenType,\n\ttype TopRatedtv,\n\ttype Translations,\n\ttype TvShowChangeValue,\n\ttype TvShowDetails,\n\ttype TvShowImageOptions,\n\ttype TvShowVideoOptions,\n\ttype tvAiringToday,\n\ttype Videos,\n\ttype WatchProviders,\n} from \"../@types\";\n\nconst BASE_TV = \"/tv\";\n\n/**\n * Represents an endpoint for accessing TV show-related information.\n */\nexport class TvShowsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TvShowsEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves details of a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {AppendToResponseTvKey[]} [appendToResponse] - Additional data to append to the response.\n\t * @param {string} [language] - The language for the response.\n\t * @returns {Promise<AppendToResponse<TvShowDetails, AppendToResponseTvKey[], 'tvShow'>>}\n\t * A Promise that resolves with the details of the TV show.\n\t */\n\tasync details<T extends AppendToResponseTvKey[] | undefined>(\n\t\tid: number,\n\t\tappendToResponse?: T,\n\t\tlanguage?: string,\n\t): Promise<AppendToResponse<TvShowDetails, T, \"tvShow\">> {\n\t\tconst options = {\n\t\t\tappend_to_response: appendToResponse\n\t\t\t\t? appendToResponse.join(\",\")\n\t\t\t\t: undefined,\n\t\t\tlanguage: language,\n\t\t};\n\t\treturn await this.api.get<AppendToResponse<TvShowDetails, T, \"tvShow\">>(\n\t\t\t`${BASE_TV}/${id}`,\n\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves alternative titles of a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<AlternativeTitles>} A Promise that resolves with the alternative titles of the TV show.\n\t */\n\tasync alternativeTitles(id: number): Promise<AlternativeTitles> {\n\t\treturn await this.api.get<AlternativeTitles>(\n\t\t\t`${BASE_TV}/${id}/alternative_titles`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {ChangeOption} [options] - Additional options for the request.\n\t * @returns {Promise<Changes<TvShowChangeValue>>}\n\t * A Promise that resolves with the changes for the TV show.\n\t */\n\tasync changes(\n\t\tid: number,\n\t\toptions?: ChangeOption,\n\t): Promise<Changes<TvShowChangeValue>> {\n\t\treturn await this.api.get<Changes<TvShowChangeValue>>(\n\t\t\t`${BASE_TV}/${id}/changes`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves content ratings for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<ContentRatings>} A Promise that resolves with the content ratings of the TV show.\n\t */\n\tasync contentRatings(id: number): Promise<ContentRatings> {\n\t\treturn await this.api.get<ContentRatings>(\n\t\t\t`${BASE_TV}/${id}/content_ratings`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves aggregate credits for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption} [options] - Additional options for the request.\n\t * @returns {Promise<AggregateCredits>} A Promise that resolves with the aggregate credits of the TV show.\n\t */\n\tasync aggregateCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t): Promise<AggregateCredits> {\n\t\treturn await this.api.get<AggregateCredits>(\n\t\t\t`${BASE_TV}/${id}/aggregate_credits`,\n\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption} [options] - Additional options for the request.\n\t * @returns {Promise<Credits>} A Promise that resolves with the credits of the TV show.\n\t */\n\tasync credits(id: number, options?: LanguageOption): Promise<Credits> {\n\t\treturn await this.api.get<Credits>(`${BASE_TV}/${id}/credits`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves details of a specific season of a TV show asynchronously.\n\t * @param {number} tvId - The ID of the TV show.\n\t * @param {number} seasonNumber - The season number.\n\t * @returns {Promise<SeasonDetails>} A Promise that resolves with the details of the season.\n\t */\n\tasync season(tvId: number, seasonNumber: number): Promise<SeasonDetails> {\n\t\treturn await this.api.get<SeasonDetails>(\n\t\t\t`${BASE_TV}/${tvId}/season/${seasonNumber}`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves episode groups for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<EpisodeGroups>} A Promise that resolves with the episode groups of the TV show.\n\t */\n\tasync episodeGroups(id: number): Promise<EpisodeGroups> {\n\t\treturn await this.api.get<EpisodeGroups>(`${BASE_TV}/${id}/episode_groups`);\n\t}\n\n\t/**\n\t * Retrieves external IDs for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external IDs of the TV show.\n\t */\n\tasync externalIds(id: number): Promise<ExternalIds> {\n\t\treturn await this.api.get<ExternalIds>(`${BASE_TV}/${id}/external_ids`);\n\t}\n\n\t/**\n\t * Retrieves images for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {TvShowImageOptions} [options] - Additional options for the request.\n\t * @returns {Promise<Images>} A Promise that resolves with the images of the TV show.\n\t */\n\tasync images(id: number, options?: TvShowImageOptions): Promise<Images> {\n\t\tconst computedOptions = {\n\t\t\tinclude_image_language: options?.include_image_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<Images>(`${BASE_TV}/${id}/images`, {\n\t\t\tquery: computedOptions,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves keywords for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<Keywords>} A Promise that resolves with the keywords of the TV show.\n\t */\n\tasync keywords(id: number): Promise<Keywords> {\n\t\treturn await this.api.get<Keywords>(`${BASE_TV}/${id}/keywords`);\n\t}\n\n\t/**\n\t * Retrieves recommendations for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption & PageOption} [options] - Additional options for the request.\n\t * @returns {Promise<Recommendations>} A Promise that resolves with the recommendations for the TV show.\n\t */\n\tasync recommendations(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<Recommendations> {\n\t\treturn await this.api.get<Recommendations>(\n\t\t\t`${BASE_TV}/${id}/recommendations`,\n\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves reviews for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption & PageOption} [options] - Additional options for the request.\n\t * @returns {Promise<Reviews>} A Promise that resolves with the reviews of the TV show.\n\t */\n\tasync reviews(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<Reviews> {\n\t\treturn await this.api.get<Reviews>(`${BASE_TV}/${id}/reviews`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves information about whether the TV show was screened theatrically asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<ScreenedTheatrically>} A Promise that resolves with information about theatrical screenings.\n\t */\n\tasync screenedTheatrically(id: number): Promise<ScreenedTheatrically> {\n\t\treturn await this.api.get<ScreenedTheatrically>(\n\t\t\t`${BASE_TV}/${id}/screened_theatrically`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves similar TV shows for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption & PageOption} [options] - Additional options for the request.\n\t * @returns {Promise<Similartv>} A Promise that resolves with the similar TV shows.\n\t */\n\tasync similar(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<Similartv> {\n\t\treturn await this.api.get<Similartv>(`${BASE_TV}/${id}/similar`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves translations for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<Translations>} A Promise that resolves with the translations of the TV show.\n\t */\n\tasync translations(id: number): Promise<Translations> {\n\t\treturn await this.api.get<Translations>(`${BASE_TV}/${id}/translations`);\n\t}\n\n\t/**\n\t * Retrieves videos for a specific TV show asynchronously.\n\t * @param {number} id - The ID of the TV show.\n\t * @param {TvShowVideoOptions} [options] - Additional options for the request.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos of the TV show.\n\t */\n\tasync videos(id: number, options?: TvShowVideoOptions): Promise<Videos> {\n\t\tconst computedOptions = {\n\t\t\tinclude_video_language: options?.include_video_language?.join(\",\"),\n\t\t\tlanguage: options?.language,\n\t\t};\n\t\treturn await this.api.get<Videos>(`${BASE_TV}/${id}/videos`, {\n\t\t\tquery: computedOptions,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves watch providers for a specific TV show asynchronously.\n\t * Powered by JustWatch.\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<WatchProviders>} A Promise that resolves with the watch providers of the TV show.\n\t */\n\tasync watchProviders(id: number): Promise<WatchProviders> {\n\t\treturn await this.api.get<WatchProviders>(\n\t\t\t`${BASE_TV}/${id}/watch/providers`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves the latest TV show asynchronously.\n\t * @returns {Promise<Latesttv>} A Promise that resolves with the latest TV show.\n\t */\n\tasync latest(): Promise<Latesttv> {\n\t\treturn await this.api.get<Latesttv>(`${BASE_TV}/latest`);\n\t}\n\n\t/**\n\t * Retrieves TV shows that are currently on the air asynchronously.\n\t * @param {PageOption & LanguageOption & TimezoneOption} [options] - Additional options for the request.\n\t * @returns {Promise<OnTheAir>} A Promise that resolves with TV shows currently on the air.\n\t */\n\tasync onTheAir(\n\t\toptions?: PageOption & LanguageOption & TimezoneOption,\n\t): Promise<OnTheAir> {\n\t\treturn await this.api.get<OnTheAir>(`${BASE_TV}/on_the_air`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves TV shows that are airing today asynchronously.\n\t * @param {PageOption & LanguageOption & TimezoneOption} [options] - Additional options for the request.\n\t * @returns {Promise<tvAiringToday>} A Promise that resolves with TV shows airing today.\n\t */\n\tasync airingToday(\n\t\toptions?: PageOption & LanguageOption & TimezoneOption,\n\t): Promise<tvAiringToday> {\n\t\treturn await this.api.get<tvAiringToday>(\n\t\t\t`${BASE_TV}/airing_today`,\n\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves popular TV shows asynchronously.\n\t * @param {PageOption & LanguageOption} [options] - Additional options for the request.\n\t * @returns {Promise<Populartv>} A Promise that resolves with popular TV shows.\n\t */\n\tasync popular(options?: PageOption & LanguageOption): Promise<Populartv> {\n\t\treturn await this.api.get<Populartv>(`${BASE_TV}/popular`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves top-rated TV shows asynchronously.\n\t * @param {PageOption & LanguageOption} [options] - Additional options for the request.\n\t * @returns {Promise<TopRatedtv>} A Promise that resolves with top-rated TV shows.\n\t */\n\tasync topRated(options?: PageOption & LanguageOption): Promise<TopRatedtv> {\n\t\treturn await this.api.get<TopRatedtv>(`${BASE_TV}/top_rated`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype TokenType,\n\ttype WatchProviderListResponse,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for accessing watch provider information.\n */\nexport class WatchProvidersEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new WatchProvidersEndpoint instance.\n\t * @param {string} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves a list of watch providers for movies.\n\t * @returns {Promise<WatchProviderListResponse>} A Promise that resolves with the list of movie watch providers.\n\t */\n\tasync movie(): Promise<WatchProviderListResponse> {\n\t\treturn await this.api.get<WatchProviderListResponse>(\n\t\t\t\"/watch/providers/movie\",\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves a list of watch providers for TV shows.\n\t * @returns {Promise<WatchProviderListResponse>} A Promise that resolves with the list of TV watch providers.\n\t */\n\tasync tv(): Promise<WatchProviderListResponse> {\n\t\treturn await this.api.get<WatchProviderListResponse>(\"/watch/providers/tv\");\n\t}\n\n\t/**\n\t * Retrieves a list of available regions for watch providers.\n\t * @returns {Promise<WatchProviderListResponse>} A Promise that resolves with the list of available regions.\n\t */\n\tasync regions(): Promise<WatchProviderListResponse> {\n\t\treturn await this.api.get<WatchProviderListResponse>(\n\t\t\t\"/watch/providers/regions\",\n\t\t);\n\t}\n}\n","import type { TokenType } from \"./@types\";\nimport {\n\tAccountEndpoint,\n\tCertificationEndpoint,\n\tChangeEndpoint,\n\tCollectionsEndpoint,\n\tCompaniesEndpoint,\n\tConfigurationEndpoint,\n\tCreditsEndpoint,\n\tDiscoverEndpoint,\n\tFindEndpoint,\n\tGenreEndpoint,\n\tKeywordsEndpoint,\n\tMoviesEndpoint,\n\tNetworksEndpoint,\n\tPeopleEndpoint,\n\tReviewEndpoint,\n\tSearchEndpoint,\n\tTrendingEndpoint,\n\tTvEpisodesEndpoint,\n\tTvSeasonsEndpoint,\n\tTvShowsEndpoint,\n\tWatchProvidersEndpoint,\n} from \"./endpoints\";\n\nclass TMDB {\n\tconstructor(auth: TokenType) {\n\t\tthis.account = new AccountEndpoint(auth);\n\t\tthis.certification = new CertificationEndpoint(auth);\n\t\tthis.changes = new ChangeEndpoint(auth);\n\t\tthis.collections = new CollectionsEndpoint(auth);\n\t\tthis.companies = new CompaniesEndpoint(auth);\n\t\tthis.configuration = new ConfigurationEndpoint(auth);\n\t\tthis.credits = new CreditsEndpoint(auth);\n\t\tthis.discover = new DiscoverEndpoint(auth);\n\t\tthis.find = new FindEndpoint(auth);\n\t\tthis.genre = new GenreEndpoint(auth);\n\t\tthis.keywords = new KeywordsEndpoint(auth);\n\t\tthis.movies = new MoviesEndpoint(auth);\n\t\tthis.networks = new NetworksEndpoint(auth);\n\t\tthis.people = new PeopleEndpoint(auth);\n\t\tthis.review = new ReviewEndpoint(auth);\n\t\tthis.search = new SearchEndpoint(auth);\n\t\tthis.trending = new TrendingEndpoint(auth);\n\t\tthis.tvEpisodes = new TvEpisodesEndpoint(auth);\n\t\tthis.tvSeasons = new TvSeasonsEndpoint(auth);\n\t\tthis.tvShows = new TvShowsEndpoint(auth);\n\t\tthis.watchProviders = new WatchProvidersEndpoint(auth);\n\t}\n\n\taccount: AccountEndpoint;\n\tcertification: CertificationEndpoint;\n\tchanges: ChangeEndpoint;\n\tcollections: CollectionsEndpoint;\n\tcompanies: CompaniesEndpoint;\n\tconfiguration: ConfigurationEndpoint;\n\tcredits: CreditsEndpoint;\n\tdiscover: DiscoverEndpoint;\n\tfind: FindEndpoint;\n\tgenre: GenreEndpoint;\n\tkeywords: KeywordsEndpoint;\n\tmovies: MoviesEndpoint;\n\tnetworks: NetworksEndpoint;\n\tpeople: PeopleEndpoint;\n\treview: ReviewEndpoint;\n\tsearch: SearchEndpoint;\n\ttrending: TrendingEndpoint;\n\ttvEpisodes: TvEpisodesEndpoint;\n\ttvSeasons: TvSeasonsEndpoint;\n\ttvShows: TvShowsEndpoint;\n\twatchProviders: WatchProvidersEndpoint;\n}\n\nexport * from \"./@types\";\nexport * from \"./utils\";\nexport { TMDB };\n"],"mappings":";AAeA,IAAY,0DAAL;AACN;AACA;AACA;AACA;AACA;;AACA;AAED,IAAY,kDAAL;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAED,IAAY,sDAAL;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAED,IAAY,wDAAL;AACN;AACA;AACA;AACA;;AACA;AAED,IAAY,oDAAL;AACN;AACA;AACA;AACA;;AACA;AAED,IAAY,oDAAL;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;;;AClED,IAAY,8DAAL;AACN;AACA;AACA;AACA;AACA;AACA;;AACA;;;;AClDD,MAAM,cAAc;AAoBpB,IAAa,YAAb,cAA+B,MAAM;CACpC,YACCA,SACgBC,QACAC,KACAC,SACf;AACD,QAAM,QAAQ;EAJE;EACA;EACA;AAGhB,OAAK,OAAO;CACZ;AACD;AAED,MAAa,eAAe,CAACC,YAA4B;AACxD,MAAK,QAAS,QAAO;CAErB,MAAMC,UAA8B,CAAE;AAEtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,QAAQ,EAAE;AACnD,MAAI,oBAAuB,UAAU,KAAM;AAE3C,MAAI,MAAM,QAAQ,MAAM,CACvB,MAAK,MAAM,QAAQ,OAAO;AACzB,OAAI,mBAAsB,SAAS,KAAM;AACzC,WAAQ,KAAK,CAAC,KAAK,OAAO,KAAK,AAAC,EAAC;EACjC;MAED,SAAQ,KAAK,CAAC,KAAK,OAAO,MAAM,AAAC,EAAC;CAEnC;AAED,QAAO,IAAI,gBAAgB,SAAS,UAAU;AAC9C;AAED,MAAM,QAAQ,CAACC,OAAe,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAG;AAE9E,MAAM,cAAc,CAACL,WACpB,WAAW,OA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"}
1
+ {"version":3,"file":"index.mjs","names":["message: string","status: number","url: string","payload?: unknown","options?: Query","entries: [string, string][]","values?: ReadonlyArray<Primitive | null | undefined>","query?: Q","config?: RequestConfig","ms: number","res: Response","auth: TokenType","path: string","opts: RequestOptions<Q>","query: Query","payload: unknown","value: string","baseUrl: string","size: string","path: string","format: string","fileSize: string","imagePath: string","format?: string","image: Image","fileSize: ImageSize","format?: ImageFormat","auth: TokenType","access_token: TokenType","accountId: number","access_token: TokenType","access_token: TokenType","options?: ChangeOption","auth: TokenType","id: number","options?: LanguageOption","request?: RequestConfig","options?: CollectionImageOptions","auth: TokenType","id: number","auth: TokenType","auth: TokenType","id: string","access_token: TokenType","options?: MovieQueryOptions","request?: RequestConfig","options?: TvShowQueryOptions","auth: TokenType","externalId: string","options: ExternalIdOptions","auth: TokenType","options?: LanguageOption","auth: TokenType","keywordId: number","options?: KeywordsOptions","auth: TokenType","id: number","appendToResponse?: T","language?: string","request?: RequestConfig","options?: ChangeOption","options?: LanguageOption","options?: MoviesImageSearchOptions","options?: LanguageOption & PageOption","options?: PageOption & LanguageOption & RegionOption","auth: TokenType","id: number","auth: TokenType","id: number","appendToResponse?: T","language?: string","request?: RequestConfig","options?: ChangeOption","options?: LanguageOption","options?: PageOption","options?: LanguageOption & PageOption","auth: TokenType","id: string","access_token: TokenType","options: SearchOptions","request?: RequestConfig","options: CollectionSearchOptions","options: MovieSearchOptions","options: PeopleSearchOptions","options: TvSearchOptions","options: MultiSearchOptions","auth: TokenType","mediaType: T","timeWindow: TimeWindow","options?: LanguageOption & PageOption","request?: RequestConfig","episodeSelection: EpisodeSelection","auth: TokenType","appendToResponse?: T","options?: LanguageOption","request?: RequestConfig","episodeID: number","options?: ChangeOption","options?: TvEpisodeImageSearchOptions","options?: TvEpisodeVideoSearchOptions","seasonSelection: SeasonSelection","auth: TokenType","appendToResponse?: T","options?: LanguageOption","request?: RequestConfig","seasonId: number","options?: ChangeOption","options?: TvSeasonImageSearchOptions","options?: TvSeasonVideoSearchOptions","auth: TokenType","id: number","appendToResponse?: T","language?: string","options?: ChangeOption","options?: LanguageOption","tvId: number","seasonNumber: number","options?: TvShowImageOptions","options?: LanguageOption & PageOption","options?: TvShowVideoOptions","options?: PageOption & LanguageOption & TimezoneOption","options?: PageOption & LanguageOption","access_token: TokenType","auth: TokenType"],"sources":["../src/@types/endpoints/configuration.ts","../src/@types/endpoints/movies.ts","../src/utils/api.ts","../src/utils/getimagePath.ts","../src/@types/models/baseEndpoint.ts","../src/endpoints/account.ts","../src/endpoints/certification.ts","../src/endpoints/changes.ts","../src/endpoints/collections.ts","../src/endpoints/companies.ts","../src/endpoints/configuration.ts","../src/endpoints/credits.ts","../src/endpoints/discover.ts","../src/endpoints/find.ts","../src/endpoints/genre.ts","../src/endpoints/keywords.ts","../src/endpoints/movies.ts","../src/endpoints/networks.ts","../src/endpoints/people.ts","../src/endpoints/review.ts","../src/endpoints/search.ts","../src/endpoints/trending.ts","../src/endpoints/tvEpisodes.ts","../src/endpoints/tvSeasons.ts","../src/endpoints/tvShows.ts","../src/endpoints/watchProviders.ts","../src/index.ts"],"sourcesContent":["export interface ImageConfiguration {\n\tbase_url: string;\n\tsecure_base_url: string;\n\tbackdrop_sizes: BackdropSizes[];\n\tlogo_sizes: LogoSizes[];\n\tposter_sizes: PosterSizes[];\n\tprofile_sizes: ProfileSizes[];\n\tstill_sizes: StillSizes[];\n}\n\nexport interface Configuration {\n\timages: ImageConfiguration;\n\tchange_keys: ChangeKeys[];\n}\n\nexport enum BackdropSizes {\n\tW300 = \"w300\",\n\tW500 = \"w500\",\n\tW780 = \"w780\",\n\tW1280 = \"w1280\",\n\tORIGINAL = \"original\",\n}\n\nexport enum LogoSizes {\n\tW45 = \"w45\",\n\tW92 = \"w92\",\n\tW154 = \"w154\",\n\tW185 = \"w185\",\n\tW300 = \"w300\",\n\tW500 = \"w500\",\n\tORIGINAL = \"original\",\n}\n\nexport enum PosterSizes {\n\tW92 = \"w92\",\n\tW154 = \"w154\",\n\tW185 = \"w185\",\n\tW300 = \"w300\",\n\tW500 = \"w500\",\n\tW780 = \"w780\",\n\tORIGINAL = \"original\",\n}\n\nexport enum ProfileSizes {\n\tW45 = \"w45\",\n\tW185 = \"w185\",\n\tW632 = \"w632\",\n\tORIGINAL = \"original\",\n}\n\nexport enum StillSizes {\n\tW92 = \"w92\",\n\tW185 = \"w185\",\n\tW300 = \"w300\",\n\tORIGINAL = \"original\",\n}\n\nexport enum ChangeKeys {\n\tADULT = \"adult\",\n\tAIR_DATE = \"air_date\",\n\tALSO_KNOWN_AS = \"also_known_as\",\n\tALTERNATIVE_TITLES = \"alternative_titles\",\n\tBIOGRAPHY = \"biography\",\n\tBIRTHDAY = \"birthday\",\n\tBUDGET = \"budget\",\n\tCAST = \"cast\",\n\tCERTIFICATIONS = \"certifications\",\n\tCHARACTER_NAMES = \"character_names\",\n\tCREATED_BY = \"created_by\",\n\tCREW = \"crew\",\n\tDEATHDAY = \"deathday\",\n\tEPISODE = \"episode\",\n\tEPISODE_NUMBER = \"episode_number\",\n\tEPISODE_RUN_TIME = \"episode_run_time\",\n\tFREEBASE_ID = \"freebase_id\",\n\tFREEBASE_MID = \"freebase_mid\",\n\tGENERAL = \"general\",\n\tGENRES = \"genres\",\n\tGUEST_STARS = \"guest_stars\",\n\tHOMEPAGE = \"homepage\",\n\tIMAGES = \"images\",\n\tIMDB_ID = \"imdb_id\",\n\tLANGUAGES = \"languages\",\n\tNAME = \"name\",\n\tNETWORK = \"network\",\n\tORIGIN_COUNTRY = \"origin_country\",\n\tORIGINAL_NAME = \"original_name\",\n\tORIGINAL_TITLE = \"original_title\",\n\tOVERVIEW = \"overview\",\n\tPARTS = \"parts\",\n\tPLACE_OF_BIRTH = \"place_of_birth\",\n\tPLOT_KEYWORDS = \"plot_keywords\",\n\tPRODUCTION_CODE = \"production_code\",\n\tPRODUCTION_COMPANIES = \"production_companies\",\n\tPRODUCTION_COUNTRIES = \"production_countries\",\n\tRELEASES = \"releases\",\n\tREVENUE = \"revenue\",\n\tRUNTIME = \"runtime\",\n\tSEASON = \"season\",\n\tSEASON_NUMBER = \"season_number\",\n\tSEASON_REGULAR = \"season_regular\",\n\tSPOKEN_LANGUAGES = \"spoken_languages\",\n\tSTATUS = \"status\",\n\tTAGLINE = \"tagline\",\n\tTITLE = \"title\",\n\tTRANSLATIONS = \"translations\",\n\tTVDB_ID = \"tvdb_id\",\n\tTVRAGE_ID = \"tvrage_id\",\n\tTYPE = \"type\",\n\tVIDEO = \"video\",\n\tVIDEOS = \"videos\",\n}\n","import type {\n\tGenre,\n\tLanguageOption,\n\tMovie,\n\tProductionCompany,\n\tProductionCountry,\n\tSpokenLanguage,\n} from \"..\";\nimport type { Nullable, TMDBDateTime } from \"../wire\";\n\nexport interface BelongsToCollection {\n\tid: number;\n\tname: string;\n\tposter_path: Nullable<string>;\n\tbackdrop_path: Nullable<string>;\n}\n\nexport interface MovieDetails {\n\tadult: boolean;\n\tbackdrop_path: Nullable<string>;\n\tbelongs_to_collection?: Nullable<BelongsToCollection>;\n\tbudget: number;\n\tgenres: Genre[];\n\thomepage: Nullable<string>;\n\tid: number;\n\timdb_id: Nullable<string>;\n\toriginal_language: string;\n\toriginal_title: string;\n\toverview: string;\n\tpopularity: number;\n\tposter_path: Nullable<string>;\n\tproduction_companies: ProductionCompany[];\n\tproduction_countries: ProductionCountry[];\n\trelease_date: string;\n\trevenue: number;\n\truntime: Nullable<number>;\n\tspoken_languages: SpokenLanguage[];\n\tstatus: string;\n\ttagline: Nullable<string>;\n\ttitle: string;\n\tvideo: boolean;\n\tvote_average: number;\n\tvote_count: number;\n}\n\nexport enum ReleaseDateType {\n\tPremiere = 1,\n\t\"Theatrical (limited)\" = 2,\n\tTheatrical = 3,\n\tDigital = 4,\n\tPhysical = 5,\n\tTV = 6,\n}\n\nexport interface ReleaseDate {\n\tcertification: string;\n\tiso_639_1: string;\n\trelease_date: TMDBDateTime;\n\ttype: ReleaseDateType;\n\tnote: string;\n}\n\nexport interface ReleaseDateResult {\n\tiso_3166_1: string;\n\trelease_dates: ReleaseDate[];\n}\n\nexport interface ReleaseDates {\n\tid: number;\n\tresults: ReleaseDateResult[];\n}\n\nexport interface SimilarMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_pages: number;\n\ttotal_results: number;\n}\n\nexport interface MovieList {\n\tdescription: string;\n\tfavorite_count: number;\n\tid: number;\n\titem_count: number;\n\tiso_639_1: string;\n\tlist_type: string;\n\tname: string;\n\tposter_path: Nullable<string>;\n}\n\nexport interface MovieLists {\n\tid: number;\n\tpage: number;\n\tresults: MovieList[];\n\ttotal_pages: number;\n\ttotal_results: number;\n}\n\nexport interface LatestMovie {\n\tadult: boolean;\n\tbackdrop_path: Nullable<string>;\n\tbelongs_to_collection?: Nullable<BelongsToCollection>;\n\tbudget: number;\n\tgenres: Genre[];\n\thomepage: Nullable<string>;\n\tid: number;\n\timdb_id: Nullable<string>;\n\toriginal_language: string;\n\toriginal_title: string;\n\toverview: string;\n\tpopularity: number;\n\tposter_path: Nullable<string>;\n\tproduction_companies: ProductionCompany[];\n\tproduction_countries: ProductionCountry[];\n\trelease_date: string;\n\trevenue: number;\n\truntime: Nullable<number>;\n\tspoken_languages: SpokenLanguage[];\n\tstatus: string;\n\ttagline: Nullable<string>;\n\ttitle: string;\n\tvideo: boolean;\n\tvote_average: number;\n\tvote_count: number;\n}\n\nexport interface Dates {\n\tmaximum: string;\n\tminimum: string;\n}\n\nexport interface MoviesPlayingNow {\n\tpage: number;\n\tresults: Movie[];\n\tdates: Dates;\n\ttotal_pages: number;\n\ttotal_results: number;\n}\n\nexport interface PopularMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_results: number;\n\ttotal_pages: number;\n}\n\nexport interface TopRatedMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_results: number;\n\ttotal_pages: number;\n}\n\nexport interface UpcomingMovies {\n\tpage: number;\n\tresults: Movie[];\n\ttotal_results: number;\n\ttotal_pages: number;\n}\n\nexport type MovieChangeValue =\n\t| string\n\t| {\n\t\t\tperson_id: number;\n\t\t\tcharacter: string;\n\t\t\torder: number;\n\t\t\tcast_id: number;\n\t\t\tcredit_id: string;\n\t }\n\t| unknown;\n\nexport interface MoviesImageSearchOptions extends LanguageOption {\n\t/**\n\t * a list of ISO-639-1 values to query\n\t */\n\tinclude_image_language?: string[];\n}\n","import type { ErrorResponse, TokenType } from \"../@types\";\n\nconst BASE_URL_V3 = \"https://api.themoviedb.org/3\";\n\nexport type Primitive = string | number | boolean;\n\nexport type QueryValue =\n\t| Primitive\n\t| null\n\t| undefined\n\t| Array<Primitive | null | undefined>;\n\nexport type Query = Record<string, QueryValue>;\n\nexport interface RequestOptions<Q extends object = object> {\n\tquery?: Q;\n\tsignal?: AbortSignal;\n\ttimeoutMs?: number;\n\tretries?: number;\n\tretryDelayMs?: number;\n}\n\nexport interface RequestConfig {\n\tsignal?: AbortSignal;\n\ttimeoutMs?: number;\n\tretries?: number;\n\tretryDelayMs?: number;\n}\n\nexport class TMDBError extends Error {\n\tconstructor(\n\t\tmessage: string,\n\t\tpublic readonly status: number,\n\t\tpublic readonly url: string,\n\t\tpublic readonly payload?: unknown,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"TMDBError\";\n\t}\n}\n\nexport const parseOptions = (options?: Query): string => {\n\tif (!options) return \"\";\n\n\tconst entries: [string, string][] = [];\n\n\tfor (const [key, value] of Object.entries(options)) {\n\t\tif (value === undefined || value === null) continue;\n\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (const item of value) {\n\t\t\t\tif (item === undefined || item === null) continue;\n\t\t\t\tentries.push([key, String(item)]);\n\t\t\t}\n\t\t} else {\n\t\t\tentries.push([key, String(value)]);\n\t\t}\n\t}\n\n\treturn new URLSearchParams(entries).toString();\n};\n\nexport const csv = (\n\tvalues?: ReadonlyArray<Primitive | null | undefined>,\n): string | undefined => {\n\tif (!values) return undefined;\n\n\tconst normalized = values\n\t\t.filter(\n\t\t\t(value): value is Primitive => value !== undefined && value !== null,\n\t\t)\n\t\t.map(String);\n\n\treturn normalized.length > 0 ? normalized.join(\",\") : undefined;\n};\n\nexport const withQuery = <Q extends object>(\n\tquery?: Q,\n\tconfig?: RequestConfig,\n): RequestOptions<Q> => ({\n\t...config,\n\tquery,\n});\n\nconst sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst shouldRetry = (status: number) =>\n\tstatus === 429 || status === 502 || status === 503 || status === 504;\n\nconst readRetryAfterMs = (res: Response): number | undefined => {\n\tconst raw = res.headers.get(\"retry-after\");\n\tif (!raw) return undefined;\n\n\tconst asSeconds = Number(raw);\n\tif (Number.isFinite(asSeconds)) return Math.max(0, asSeconds * 1000);\n\n\tconst asDate = Date.parse(raw);\n\tif (!Number.isNaN(asDate)) return Math.max(0, asDate - Date.now());\n\n\treturn undefined;\n};\n\nexport class API {\n\tprivate apiKey?: string;\n\tprivate accessToken?: string;\n\n\tconstructor(auth: TokenType) {\n\t\tif (typeof auth === \"string\") {\n\t\t\tthis.accessToken = auth;\n\t\t} else {\n\t\t\tthis.apiKey = auth.apiKey;\n\t\t\tthis.accessToken = auth.accessToken;\n\t\t}\n\t}\n\n\tasync get<T, Q extends object = object>(\n\t\tpath: string,\n\t\topts: RequestOptions<Q> = {},\n\t): Promise<T> {\n\t\tif (!this.apiKey && !this.accessToken) {\n\t\t\tthrow new TMDBError(\n\t\t\t\t\"No TMDB authentication provided\",\n\t\t\t\t0,\n\t\t\t\t`${BASE_URL_V3}${path}`,\n\t\t\t);\n\t\t}\n\n\t\tconst query: Query = {\n\t\t\t...(opts.query\n\t\t\t\t? (opts.query as unknown as Record<string, QueryValue>)\n\t\t\t\t: {}),\n\t\t\t...(this.apiKey ? { api_key: this.apiKey } : {}),\n\t\t};\n\n\t\tconst qs = parseOptions(query);\n\t\tconst url = `${BASE_URL_V3}${path}${qs ? `?${qs}` : \"\"}`;\n\n\t\tconst retries = opts.retries ?? 2;\n\t\tconst retryDelayMs = opts.retryDelayMs ?? 300;\n\t\tconst timeoutMs = opts.timeoutMs ?? 30_000;\n\n\t\tconst controller = new AbortController();\n\t\tconst timeout = setTimeout(() => controller.abort(), timeoutMs);\n\n\t\tconst abortFromSignal = () => controller.abort();\n\n\t\tif (opts.signal) {\n\t\t\tif (opts.signal.aborted) {\n\t\t\t\tcontroller.abort();\n\t\t\t} else {\n\t\t\t\topts.signal.addEventListener(\"abort\", abortFromSignal, {\n\t\t\t\t\tonce: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tfor (let attempt = 0; attempt <= retries; attempt++) {\n\t\t\t\tconst res = await fetch(url, {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tsignal: controller.signal,\n\t\t\t\t\theaders: {\n\t\t\t\t\t\t...(this.accessToken\n\t\t\t\t\t\t\t? { Authorization: `Bearer ${this.accessToken}` }\n\t\t\t\t\t\t\t: {}),\n\t\t\t\t\t\tAccept: \"application/json\",\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tif (res.ok) {\n\t\t\t\t\treturn (await res.json()) as T;\n\t\t\t\t}\n\n\t\t\t\tlet payload: unknown;\n\t\t\t\tlet message = `${res.status} ${res.statusText}`;\n\n\t\t\t\ttry {\n\t\t\t\t\tpayload = (await res.json()) as ErrorResponse;\n\t\t\t\t\tif (\n\t\t\t\t\t\tpayload &&\n\t\t\t\t\t\ttypeof payload === \"object\" &&\n\t\t\t\t\t\t\"status_message\" in payload\n\t\t\t\t\t) {\n\t\t\t\t\t\tmessage = String((payload as ErrorResponse).status_message);\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpayload = await res.text();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// ignore\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (attempt < retries && shouldRetry(res.status)) {\n\t\t\t\t\tconst retryAfter = readRetryAfterMs(res);\n\t\t\t\t\tconst delay = retryAfter ?? retryDelayMs * 2 ** attempt;\n\t\t\t\t\tawait sleep(delay);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tthrow new TMDBError(message, res.status, url, payload);\n\t\t\t}\n\n\t\t\tthrow new TMDBError(\"Request failed\", 0, url);\n\t\t} finally {\n\t\t\tclearTimeout(timeout);\n\n\t\t\tif (opts.signal) {\n\t\t\t\topts.signal.removeEventListener(\"abort\", abortFromSignal);\n\t\t\t}\n\t\t}\n\t}\n}\n","import type { Image } from \"../@types\";\n\nexport const TMDB_IMAGE_BASE_URL = \"https://image.tmdb.org/t/p/\";\n\nexport const ImageSizes = {\n\tORIGINAL: \"original\",\n\tW500: \"w500\",\n\tW300: \"w300\",\n\tW185: \"w185\",\n\tW92: \"w92\",\n\tH632: \"h632\",\n} as const;\n\nexport type ImageSize = (typeof ImageSizes)[keyof typeof ImageSizes];\n\nexport const ImageFormats = {\n\tJPG: \"jpg\",\n\tPNG: \"png\",\n\tSVG: \"svg\",\n} as const;\n\nexport type ImageFormat = (typeof ImageFormats)[keyof typeof ImageFormats];\n\nconst isAbsoluteUrl = (value: string) => /^https?:\\/\\//i.test(value);\n\nconst normalizeBaseUrl = (baseUrl: string) =>\n\tbaseUrl.endsWith(\"/\") ? baseUrl : `${baseUrl}/`;\n\nconst normalizeSize = (size: string) => size.replace(/^\\/+|\\/+$/g, \"\");\n\nconst normalizePath = (path: string) =>\n\tpath.startsWith(\"/\") ? path : `/${path}`;\n\nconst setExtension = (path: string, format: string) => {\n\tconst lastSlash = path.lastIndexOf(\"/\");\n\tconst lastDot = path.lastIndexOf(\".\");\n\n\tconst hasExt = lastDot > lastSlash;\n\tif (!hasExt) return `${path}.${format}`;\n\n\treturn `${path.slice(0, lastDot + 1)}${format}`;\n};\n\n/**\n * Constructs a TMDB image URL.\n *\n * - Keeps paths as-is unless `format` is provided (then it replaces/appends\n * the extension safely using the last dot after the last slash).\n * - Handles leading/trailing slashes robustly.\n * - If `imagePath` is already an absolute URL, it is returned unchanged.\n */\nexport const getFullImagePath = (\n\tbaseUrl: string,\n\tfileSize: string,\n\timagePath: string,\n\tformat?: string,\n): string => {\n\tif (!imagePath) return \"\";\n\tif (isAbsoluteUrl(imagePath)) return imagePath;\n\n\tconst base = normalizeBaseUrl(baseUrl);\n\tconst size = normalizeSize(fileSize);\n\n\tlet path = normalizePath(imagePath);\n\tif (format) path = setExtension(path, format);\n\n\treturn `${base}${size}${path}`;\n};\n\n/**\n * Convenience helper for TMDB `Image` objects.\n */\nexport const formImage = (\n\timage: Image,\n\tfileSize: ImageSize,\n\tformat?: ImageFormat,\n): string | undefined => {\n\tconst path = image?.file_path;\n\tif (!path) return undefined;\n\n\treturn getFullImagePath(TMDB_IMAGE_BASE_URL, fileSize, path, format);\n};\n","import { API } from \"../../utils\";\nimport type { TokenType } from \"../types\";\n\n/**\n * Base class for all TMDB API endpoints.\n *\n * Provides a configured {@link API} client instance to subclasses.\n */\nexport class BaseEndpoint {\n\t/**\n\t * Low-level HTTP client wrapper used by all endpoints.\n\t */\n\tprotected readonly api: API;\n\n\t/**\n\t * Create a new endpoint instance.\n\t *\n\t * @param {TokenType} auth - Authentication information.\n\t * - If a string: treated as a v4 API Read Access Token (Bearer token).\n\t * - If an object: can include an API key and/or access token.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tthis.api = new API(auth);\n\t}\n}\n","import { type AccountDetails, BaseEndpoint, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving account details.\n *\n * TMDB v3 reference:\n * - GET /account/{account_id}\n *\n * Note:\n * TMDB does not expose a generic \"GET /account\" for account details. You must\n * provide an `account_id`. Most apps obtain it from an auth flow and then cache\n * it for subsequent requests.\n */\nexport class AccountEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new AccountEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves account details asynchronously.\n\t *\n\t * TMDB: GET /account/{account_id}\n\t *\n\t * @param {number} accountId - The TMDB account ID.\n\t * @returns {Promise<AccountDetails>} A Promise that resolves with the account details.\n\t */\n\tdetails(accountId: number): Promise<AccountDetails> {\n\t\treturn this.api.get<AccountDetails>(`/account/${accountId}`);\n\t}\n}\n","import { BaseEndpoint, type Certifications, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving certifications for movies and TV shows.\n *\n * TMDB v3 reference:\n * - GET /certification/movie/list\n * - GET /certification/tv/list\n */\nexport class CertificationEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CertificationEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves certifications for movies asynchronously.\n\t *\n\t * TMDB: GET /certification/movie/list\n\t *\n\t * @returns {Promise<Certifications>} A Promise that resolves with the certifications for movies.\n\t */\n\tmovies(): Promise<Certifications> {\n\t\treturn this.api.get<Certifications>(\"/certification/movie/list\");\n\t}\n\n\t/**\n\t * Retrieves certifications for TV shows asynchronously.\n\t *\n\t * TMDB: GET /certification/tv/list\n\t *\n\t * @returns {Promise<Certifications>} A Promise that resolves with the certifications for TV shows.\n\t */\n\ttv(): Promise<Certifications> {\n\t\treturn this.api.get<Certifications>(\"/certification/tv/list\");\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype MediaChanges,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving changes in movies, TV shows, and persons.\n *\n * TMDB v3 reference:\n * - GET /movie/changes\n * - GET /tv/changes\n * - GET /person/changes\n */\nexport class ChangeEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new ChangeEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves changes in movies asynchronously.\n\t *\n\t * TMDB: GET /movie/changes\n\t *\n\t * @param {ChangeOption} [options] - Optional parameters for filtering the changes.\n\t * @returns {Promise<MediaChanges>} A Promise that resolves with the changes in movies.\n\t */\n\tmovies(options?: ChangeOption): Promise<MediaChanges> {\n\t\treturn this.api.get<MediaChanges>(\"/movie/changes\", { query: options });\n\t}\n\n\t/**\n\t * Retrieves changes in TV shows asynchronously.\n\t *\n\t * TMDB: GET /tv/changes\n\t *\n\t * @param {ChangeOption} [options] - Optional parameters for filtering the changes.\n\t * @returns {Promise<MediaChanges>} A Promise that resolves with the changes in TV shows.\n\t */\n\ttv(options?: ChangeOption): Promise<MediaChanges> {\n\t\treturn this.api.get<MediaChanges>(\"/tv/changes\", { query: options });\n\t}\n\n\t/**\n\t * Retrieves changes related to persons asynchronously.\n\t *\n\t * TMDB: GET /person/changes\n\t *\n\t * @param {ChangeOption} [options] - Optional parameters for filtering the changes.\n\t * @returns {Promise<MediaChanges>} A Promise that resolves with the changes related to persons.\n\t */\n\tperson(options?: ChangeOption): Promise<MediaChanges> {\n\t\treturn this.api.get<MediaChanges>(\"/person/changes\", { query: options });\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype CollectionImageOptions,\n\ttype DetailedCollection,\n\ttype ImageCollection,\n\ttype LanguageOption,\n\ttype TokenType,\n\ttype Translations,\n} from \"../@types\";\nimport { csv, type RequestConfig, withQuery } from \"../utils\";\n\nconst BASE_COLLECTION = \"/collection\";\n\n/**\n * Represents an endpoint for accessing collections and their details.\n */\nexport class CollectionsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CollectionsEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific collection asynchronously.\n\t *\n\t * @param {number} id - The ID of the collection.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<DetailedCollection>} A Promise that resolves with the\n\t * detailed information of the collection.\n\t */\n\tdetails(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<DetailedCollection> {\n\t\treturn this.api.get<DetailedCollection>(\n\t\t\t`${BASE_COLLECTION}/${id}`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images associated with a specific collection asynchronously.\n\t *\n\t * @param {number} id - The ID of the collection.\n\t * @param {CollectionImageOptions} [options] - Optional parameters for\n\t * specifying image options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<ImageCollection>} A Promise that resolves with the\n\t * collection images.\n\t */\n\timages(\n\t\tid: number,\n\t\toptions?: CollectionImageOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<ImageCollection> {\n\t\tconst query = {\n\t\t\tinclude_image_language: csv(options?.include_image_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<ImageCollection>(\n\t\t\t`${BASE_COLLECTION}/${id}/images`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations for a specific collection asynchronously.\n\t *\n\t * @param {number} id - The ID of the collection.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Translations>} A Promise that resolves with the\n\t * translations of the collection.\n\t */\n\ttranslations(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Translations> {\n\t\treturn this.api.get<Translations>(\n\t\t\t`${BASE_COLLECTION}/${id}/translations`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n}\n","import {\n\ttype AlternativeNames,\n\tBaseEndpoint,\n\ttype CompanyDetails,\n\ttype CompanyImages,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for accessing company details and related information.\n */\nexport class CompaniesEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CompaniesEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific company asynchronously.\n\t *\n\t * @param {number} id - The ID of the company.\n\t * @returns {Promise<CompanyDetails>} A Promise that resolves with the\n\t * detailed information of the company.\n\t */\n\tdetails(id: number): Promise<CompanyDetails> {\n\t\treturn this.api.get<CompanyDetails>(`/company/${id}`);\n\t}\n\n\t/**\n\t * Retrieves alternative names of a specific company asynchronously.\n\t *\n\t * @param {number} id - The ID of the company.\n\t * @returns {Promise<AlternativeNames>} A Promise that resolves with the\n\t * alternative names of the company.\n\t */\n\talternativeNames(id: number): Promise<AlternativeNames> {\n\t\treturn this.api.get<AlternativeNames>(`/company/${id}/alternative_names`);\n\t}\n\n\t/**\n\t * Retrieves images associated with a specific company asynchronously.\n\t *\n\t * @param {number} id - The ID of the company.\n\t * @returns {Promise<CompanyImages>} A Promise that resolves with the images\n\t * of the company.\n\t */\n\timages(id: number): Promise<CompanyImages> {\n\t\treturn this.api.get<CompanyImages>(`/company/${id}/images`);\n\t}\n}\n","import { BaseEndpoint, type Configuration, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving current system configuration.\n */\nexport class ConfigurationEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new ConfigurationEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves the current system configuration asynchronously.\n\t *\n\t * @returns {Promise<Configuration>} A Promise that resolves with the current\n\t * system configuration.\n\t */\n\tgetCurrent(): Promise<Configuration> {\n\t\treturn this.api.get<Configuration>(\"/configuration\");\n\t}\n}\n","import { BaseEndpoint, type CreditResponse, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving credit details.\n */\nexport class CreditsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new CreditsEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves credit details by ID asynchronously.\n\t *\n\t * @param {string} id - The ID of the credit.\n\t * @returns {Promise<CreditResponse>} A Promise that resolves with the credit\n\t * details.\n\t */\n\tgetById(id: string): Promise<CreditResponse> {\n\t\treturn this.api.get<CreditResponse>(`/credit/${id}`);\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype MovieDiscoverResult,\n\ttype MovieQueryOptions,\n\ttype TokenType,\n\ttype TvShowDiscoverResult,\n\ttype TvShowQueryOptions,\n} from \"../@types\";\nimport { type RequestConfig, withQuery } from \"../utils\";\n\nconst BASE_DISCOVER = \"/discover\";\n\n/**\n * Represents an endpoint for discovering movies and TV shows based on various\n * criteria.\n *\n * TMDB v3 reference:\n * - GET /discover/movie\n * - GET /discover/tv\n */\nexport class DiscoverEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new DiscoverEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves a list of movies based on the provided query options\n\t * asynchronously.\n\t *\n\t * @param {MovieQueryOptions} [options] - Optional parameters for refining the\n\t * movie discovery.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<MovieDiscoverResult>} A Promise that resolves with the\n\t * movie discovery results.\n\t */\n\tmovie(\n\t\toptions?: MovieQueryOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<MovieDiscoverResult> {\n\t\treturn this.api.get<MovieDiscoverResult>(\n\t\t\t`${BASE_DISCOVER}/movie`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves a list of TV shows based on the provided query options\n\t * asynchronously.\n\t *\n\t * @param {TvShowQueryOptions} [options] - Optional parameters for refining\n\t * the TV show discovery.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<TvShowDiscoverResult>} A Promise that resolves with the\n\t * TV show discovery results.\n\t */\n\ttvShow(\n\t\toptions?: TvShowQueryOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<TvShowDiscoverResult> {\n\t\treturn this.api.get<TvShowDiscoverResult>(\n\t\t\t`${BASE_DISCOVER}/tv`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype ExternalIdOptions,\n\ttype FindResult,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for finding media by external ID.\n */\nexport class FindEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new FindEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves media by external ID asynchronously.\n\t *\n\t * @param {string} externalId - The external ID of the media.\n\t * @param {ExternalIdOptions} options - Options for finding media by external\n\t * ID.\n\t * @returns {Promise<FindResult>} A Promise that resolves with the result of\n\t * the find operation.\n\t */\n\tbyId(externalId: string, options: ExternalIdOptions): Promise<FindResult> {\n\t\treturn this.api.get<FindResult>(`/find/${externalId}`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype Genres,\n\ttype LanguageOption,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for retrieving genre information for movies and TV\n * shows.\n */\nexport class GenreEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new GenreEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves genre information for movies asynchronously.\n\t *\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @returns {Promise<Genres>} A Promise that resolves with the genre\n\t * information for movies.\n\t */\n\tmovies(options?: LanguageOption): Promise<Genres> {\n\t\treturn this.api.get<Genres>(\"/genre/movie/list\", { query: options });\n\t}\n\n\t/**\n\t * Retrieves genre information for TV shows asynchronously.\n\t *\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @returns {Promise<Genres>} A Promise that resolves with the genre\n\t * information for TV shows.\n\t */\n\ttv(options?: LanguageOption): Promise<Genres> {\n\t\treturn this.api.get<Genres>(\"/genre/tv/list\", { query: options });\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype BelongingMovies,\n\ttype Keyword,\n\ttype KeywordsOptions,\n\ttype TokenType,\n} from \"../@types\";\n\nconst BASE_KEYWORD = \"/keyword\";\n\n/**\n * Represents an endpoint for accessing keyword details and related movies.\n */\nexport class KeywordsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new KeywordsEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific keyword asynchronously.\n\t *\n\t * @param {number} keywordId - The ID of the keyword.\n\t * @returns {Promise<Keyword>} A Promise that resolves with the details of\n\t * the keyword.\n\t */\n\tdetails(keywordId: number): Promise<Keyword> {\n\t\treturn this.api.get<Keyword>(`${BASE_KEYWORD}/${keywordId}`);\n\t}\n\n\t/**\n\t * Retrieves movies belonging to a specific keyword asynchronously.\n\t *\n\t * @param {number} keywordId - The ID of the keyword.\n\t * @param {KeywordsOptions} [options] - Optional parameters for refining the\n\t * search.\n\t * @returns {Promise<BelongingMovies>} A Promise that resolves with the\n\t * movies belonging to the keyword.\n\t */\n\tbelongingMovies(\n\t\tkeywordId: number,\n\t\toptions?: KeywordsOptions,\n\t): Promise<BelongingMovies> {\n\t\treturn this.api.get<BelongingMovies>(\n\t\t\t`${BASE_KEYWORD}/${keywordId}/movies`,\n\t\t\t{\n\t\t\t\tquery: options,\n\t\t\t},\n\t\t);\n\t}\n}\n","import {\n\ttype AlternativeTitles,\n\ttype AppendToResponse,\n\ttype AppendToResponseMovieKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype Credits,\n\ttype ExternalIds,\n\ttype Images,\n\ttype Keywords,\n\ttype LanguageOption,\n\ttype LatestMovie,\n\ttype MovieChangeValue,\n\ttype MovieDetails,\n\ttype MovieLists,\n\ttype MoviesImageSearchOptions,\n\ttype MoviesPlayingNow,\n\ttype PageOption,\n\ttype PopularMovies,\n\ttype Recommendations,\n\ttype RegionOption,\n\ttype ReleaseDates,\n\ttype Reviews,\n\ttype SimilarMovies,\n\ttype TokenType,\n\ttype TopRatedMovies,\n\ttype Translations,\n\ttype UpcomingMovies,\n\ttype Videos,\n\ttype WatchProviders,\n} from \"../@types\";\nimport { csv, type RequestConfig, withQuery } from \"../utils\";\n\nconst BASE_MOVIE = \"/movie\";\n\n/**\n * Represents an endpoint for accessing movie-related information.\n */\nexport class MoviesEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new MoviesEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {AppendToResponseMovieKey[]} [appendToResponse] - Optional keys to\n\t * append to the response.\n\t * @param {string} [language] - Optional parameter for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<AppendToResponse<MovieDetails, T, \"movie\">>} A Promise\n\t * that resolves with the details of the movie.\n\t */\n\tdetails<T extends AppendToResponseMovieKey[] | undefined>(\n\t\tid: number,\n\t\tappendToResponse?: T,\n\t\tlanguage?: string,\n\t\trequest?: RequestConfig,\n\t): Promise<AppendToResponse<MovieDetails, T, \"movie\">> {\n\t\tconst query = {\n\t\t\tappend_to_response: csv(appendToResponse),\n\t\t\tlanguage,\n\t\t};\n\n\t\treturn this.api.get<AppendToResponse<MovieDetails, T, \"movie\">>(\n\t\t\t`${BASE_MOVIE}/${id}`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves alternative titles of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<AlternativeTitles>} A Promise that resolves with the\n\t * alternative titles of the movie.\n\t */\n\talternativeTitles(\n\t\tid: number,\n\t\trequest?: RequestConfig,\n\t): Promise<AlternativeTitles> {\n\t\treturn this.api.get<AlternativeTitles>(\n\t\t\t`${BASE_MOVIE}/${id}/alternative_titles`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes made to a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {ChangeOption} [options] - Optional parameters for filtering\n\t * changes.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Changes<MovieChangeValue>>} A Promise that resolves with\n\t * the changes made to the movie.\n\t */\n\tchanges(\n\t\tid: number,\n\t\toptions?: ChangeOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Changes<MovieChangeValue>> {\n\t\treturn this.api.get<Changes<MovieChangeValue>>(\n\t\t\t`${BASE_MOVIE}/${id}/changes`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Credits>} A Promise that resolves with the credits of\n\t * the movie.\n\t */\n\tcredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Credits> {\n\t\treturn this.api.get<Credits>(\n\t\t\t`${BASE_MOVIE}/${id}/credits`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves external IDs of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external\n\t * IDs of the movie.\n\t */\n\texternalIds(id: number, request?: RequestConfig): Promise<ExternalIds> {\n\t\treturn this.api.get<ExternalIds>(\n\t\t\t`${BASE_MOVIE}/${id}/external_ids`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {MoviesImageSearchOptions} [options] - Optional parameters for\n\t * specifying image search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Images>} A Promise that resolves with the images of the\n\t * movie.\n\t */\n\timages(\n\t\tid: number,\n\t\toptions?: MoviesImageSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Images> {\n\t\tconst query = {\n\t\t\tinclude_image_language: csv(options?.include_image_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<Images>(\n\t\t\t`${BASE_MOVIE}/${id}/images`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves keywords of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Keywords>} A Promise that resolves with the keywords of\n\t * the movie.\n\t */\n\tkeywords(id: number, request?: RequestConfig): Promise<Keywords> {\n\t\treturn this.api.get<Keywords>(`${BASE_MOVIE}/${id}/keywords`, request);\n\t}\n\n\t/**\n\t * Retrieves lists containing a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for\n\t * specifying language and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<MovieLists>} A Promise that resolves with the lists\n\t * containing the movie.\n\t */\n\tlists(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<MovieLists> {\n\t\treturn this.api.get<MovieLists>(\n\t\t\t`${BASE_MOVIE}/${id}/lists`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves recommendations for a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for\n\t * specifying language and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Recommendations>} A Promise that resolves with the\n\t * recommendations for the movie.\n\t */\n\trecommendations(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Recommendations> {\n\t\treturn this.api.get<Recommendations>(\n\t\t\t`${BASE_MOVIE}/${id}/recommendations`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves release dates of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<ReleaseDates>} A Promise that resolves with the release\n\t * dates of the movie.\n\t */\n\treleaseDates(id: number, request?: RequestConfig): Promise<ReleaseDates> {\n\t\treturn this.api.get<ReleaseDates>(\n\t\t\t`${BASE_MOVIE}/${id}/release_dates`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves reviews for a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for\n\t * specifying language and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Reviews>} A Promise that resolves with the reviews for\n\t * the movie.\n\t */\n\treviews(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Reviews> {\n\t\treturn this.api.get<Reviews>(\n\t\t\t`${BASE_MOVIE}/${id}/reviews`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves similar movies for a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for\n\t * specifying language and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<SimilarMovies>} A Promise that resolves with the similar\n\t * movies for the movie.\n\t */\n\tsimilar(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<SimilarMovies> {\n\t\treturn this.api.get<SimilarMovies>(\n\t\t\t`${BASE_MOVIE}/${id}/similar`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Translations>} A Promise that resolves with the\n\t * translations of the movie.\n\t */\n\ttranslations(id: number, request?: RequestConfig): Promise<Translations> {\n\t\treturn this.api.get<Translations>(\n\t\t\t`${BASE_MOVIE}/${id}/translations`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves videos of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos of the\n\t * movie.\n\t */\n\tvideos(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Videos> {\n\t\treturn this.api.get<Videos>(\n\t\t\t`${BASE_MOVIE}/${id}/videos`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves watch providers of a specific movie asynchronously.\n\t *\n\t * @param {number} id - The ID of the movie.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<WatchProviders>} A Promise that resolves with the watch\n\t * providers of the movie.\n\t */\n\twatchProviders(id: number, request?: RequestConfig): Promise<WatchProviders> {\n\t\treturn this.api.get<WatchProviders>(\n\t\t\t`${BASE_MOVIE}/${id}/watch/providers`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves details of the latest movie asynchronously.\n\t *\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<LatestMovie>} A Promise that resolves with the details\n\t * of the latest movie.\n\t */\n\tlatest(request?: RequestConfig): Promise<LatestMovie> {\n\t\treturn this.api.get<LatestMovie>(`${BASE_MOVIE}/latest`, request);\n\t}\n\n\t/**\n\t * Retrieves movies playing now asynchronously.\n\t *\n\t * @param {PageOption & LanguageOption & RegionOption} [options] - Optional\n\t * parameters for specifying language, region, and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<MoviesPlayingNow>} A Promise that resolves with the\n\t * movies playing now.\n\t */\n\tnowPlaying(\n\t\toptions?: PageOption & LanguageOption & RegionOption,\n\t\trequest?: RequestConfig,\n\t): Promise<MoviesPlayingNow> {\n\t\treturn this.api.get<MoviesPlayingNow>(\n\t\t\t`${BASE_MOVIE}/now_playing`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves popular movies asynchronously.\n\t *\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for\n\t * specifying language and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PopularMovies>} A Promise that resolves with the popular\n\t * movies.\n\t */\n\tpopular(\n\t\toptions?: LanguageOption & PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<PopularMovies> {\n\t\treturn this.api.get<PopularMovies>(\n\t\t\t`${BASE_MOVIE}/popular`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves top rated movies asynchronously.\n\t *\n\t * @param {PageOption & LanguageOption & RegionOption} [options] - Optional\n\t * parameters for specifying language, region, and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<TopRatedMovies>} A Promise that resolves with the top\n\t * rated movies.\n\t */\n\ttopRated(\n\t\toptions?: PageOption & LanguageOption & RegionOption,\n\t\trequest?: RequestConfig,\n\t): Promise<TopRatedMovies> {\n\t\treturn this.api.get<TopRatedMovies>(\n\t\t\t`${BASE_MOVIE}/top_rated`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves upcoming movies asynchronously.\n\t *\n\t * @param {PageOption & LanguageOption & RegionOption} [options] - Optional\n\t * parameters for specifying language, region, and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<UpcomingMovies>} A Promise that resolves with the\n\t * upcoming movies.\n\t */\n\tupcoming(\n\t\toptions?: PageOption & LanguageOption & RegionOption,\n\t\trequest?: RequestConfig,\n\t): Promise<UpcomingMovies> {\n\t\treturn this.api.get<UpcomingMovies>(\n\t\t\t`${BASE_MOVIE}/upcoming`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n}\n","import {\n\ttype AlternativeNames,\n\tBaseEndpoint,\n\ttype NetworkDetails,\n\ttype NetworkImages,\n\ttype TokenType,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for accessing network details.\n */\nexport class NetworksEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new NetworksEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific network asynchronously.\n\t *\n\t * @param {number} id - The ID of the network.\n\t * @returns {Promise<NetworkDetails>} A Promise that resolves with the\n\t * details of the network.\n\t */\n\tdetails(id: number): Promise<NetworkDetails> {\n\t\treturn this.api.get<NetworkDetails>(`/network/${id}`);\n\t}\n\n\t/**\n\t * Retrieves alternative names of a specific network asynchronously.\n\t *\n\t * @param {number} id - The ID of the network.\n\t * @returns {Promise<AlternativeNames>} A Promise that resolves with the\n\t * alternative names of the network.\n\t */\n\talternativeNames(id: number): Promise<AlternativeNames> {\n\t\treturn this.api.get<AlternativeNames>(`/network/${id}/alternative_names`);\n\t}\n\n\t/**\n\t * Retrieves images of a specific network asynchronously.\n\t *\n\t * @param {number} id - The ID of the network.\n\t * @returns {Promise<NetworkImages>} A Promise that resolves with the images\n\t * of the network.\n\t */\n\timages(id: number): Promise<NetworkImages> {\n\t\treturn this.api.get<NetworkImages>(`/network/${id}/images`);\n\t}\n}\n","import {\n\ttype AppendToResponse,\n\ttype AppendToResponsePersonKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype ExternalIds,\n\ttype LanguageOption,\n\ttype PageOption,\n\ttype PeopleImages,\n\ttype PersonChangeValue,\n\ttype PersonCombinedCredits,\n\ttype PersonDetails,\n\ttype PersonMovieCredit,\n\ttype PersonTranslations,\n\ttype PersonTvShowCredit,\n\ttype PopularPersons,\n\ttype TaggedImages,\n\ttype TokenType,\n} from \"../@types\";\nimport { csv, type RequestConfig, withQuery } from \"../utils\";\n\nconst BASE_PERSON = \"/person\";\n\n/**\n * Represents an endpoint for accessing information about people.\n */\nexport class PeopleEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new PeopleEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {AppendToResponsePersonKey[]} [appendToResponse] - Optional keys to\n\t * append to the response.\n\t * @param {string} [language] - Optional parameter for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<AppendToResponse<PersonDetails, T, \"person\">>} A\n\t * Promise that resolves with the details of the person.\n\t */\n\tdetails<T extends AppendToResponsePersonKey[] | undefined>(\n\t\tid: number,\n\t\tappendToResponse?: T,\n\t\tlanguage?: string,\n\t\trequest?: RequestConfig,\n\t): Promise<AppendToResponse<PersonDetails, T, \"person\">> {\n\t\tconst query = {\n\t\t\tappend_to_response: csv(appendToResponse),\n\t\t\tlanguage,\n\t\t};\n\n\t\treturn this.api.get<AppendToResponse<PersonDetails, T, \"person\">>(\n\t\t\t`${BASE_PERSON}/${id}`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes made to a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {ChangeOption} [options] - Optional parameters for filtering\n\t * changes.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Changes<PersonChangeValue>>} A Promise that resolves\n\t * with the changes made to the person.\n\t */\n\tchanges(\n\t\tid: number,\n\t\toptions?: ChangeOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Changes<PersonChangeValue>> {\n\t\treturn this.api.get<Changes<PersonChangeValue>>(\n\t\t\t`${BASE_PERSON}/${id}/changes`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves movie credits of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PersonMovieCredit>} A Promise that resolves with the\n\t * movie credits of the person.\n\t */\n\tmovieCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<PersonMovieCredit> {\n\t\treturn this.api.get<PersonMovieCredit>(\n\t\t\t`${BASE_PERSON}/${id}/movie_credits`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves TV show credits of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PersonTvShowCredit>} A Promise that resolves with the\n\t * TV show credits of the person.\n\t */\n\ttvShowCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<PersonTvShowCredit> {\n\t\treturn this.api.get<PersonTvShowCredit>(\n\t\t\t`${BASE_PERSON}/${id}/tv_credits`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves combined credits of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PersonCombinedCredits>} A Promise that resolves with the\n\t * combined credits of the person.\n\t */\n\tcombinedCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<PersonCombinedCredits> {\n\t\treturn this.api.get<PersonCombinedCredits>(\n\t\t\t`${BASE_PERSON}/${id}/combined_credits`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves external IDs of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external\n\t * IDs of the person.\n\t */\n\texternalId(id: number, request?: RequestConfig): Promise<ExternalIds> {\n\t\treturn this.api.get<ExternalIds>(\n\t\t\t`${BASE_PERSON}/${id}/external_ids`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PeopleImages>} A Promise that resolves with the images\n\t * of the person.\n\t */\n\timages(id: number, request?: RequestConfig): Promise<PeopleImages> {\n\t\treturn this.api.get<PeopleImages>(`${BASE_PERSON}/${id}/images`, request);\n\t}\n\n\t/**\n\t * Retrieves tagged images of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {PageOption} [options] - Optional parameters for specifying\n\t * pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<TaggedImages>} A Promise that resolves with the tagged\n\t * images of the person.\n\t */\n\ttaggedImages(\n\t\tid: number,\n\t\toptions?: PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<TaggedImages> {\n\t\treturn this.api.get<TaggedImages>(\n\t\t\t`${BASE_PERSON}/${id}/tagged_images`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations of a specific person asynchronously.\n\t *\n\t * @param {number} id - The ID of the person.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PersonTranslations>} A Promise that resolves with the\n\t * translations of the person.\n\t */\n\ttranslation(\n\t\tid: number,\n\t\trequest?: RequestConfig,\n\t): Promise<PersonTranslations> {\n\t\treturn this.api.get<PersonTranslations>(\n\t\t\t`${BASE_PERSON}/${id}/translations`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves details of the latest person asynchronously.\n\t *\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PersonDetails>} A Promise that resolves with the details\n\t * of the latest person.\n\t */\n\tlatest(request?: RequestConfig): Promise<PersonDetails> {\n\t\treturn this.api.get<PersonDetails>(`${BASE_PERSON}/latest`, request);\n\t}\n\n\t/**\n\t * Retrieves popular persons asynchronously.\n\t *\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for\n\t * specifying language and pagination options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<PopularPersons>} A Promise that resolves with the\n\t * popular persons.\n\t */\n\tpopular(\n\t\toptions?: LanguageOption & PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<PopularPersons> {\n\t\treturn this.api.get<PopularPersons>(\n\t\t\t`${BASE_PERSON}/popular`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n}\n","import { BaseEndpoint, type ReviewDetails, type TokenType } from \"../@types\";\n\n/**\n * Represents an endpoint for accessing review details.\n */\nexport class ReviewEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new ReviewEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific review asynchronously.\n\t *\n\t * @param {string} id - The ID of the review.\n\t * @returns {Promise<ReviewDetails>} A Promise that resolves with the details\n\t * of the review.\n\t */\n\tdetails(id: string): Promise<ReviewDetails> {\n\t\treturn this.api.get<ReviewDetails>(`/review/${id}`);\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype Collection,\n\ttype CollectionSearchOptions,\n\ttype Company,\n\ttype Movie,\n\ttype MovieSearchOptions,\n\ttype MultiSearchOptions,\n\ttype MultiSearchResult,\n\ttype PeopleSearchOptions,\n\ttype Person,\n\ttype Search,\n\ttype SearchOptions,\n\ttype TokenType,\n\ttype TV,\n\ttype TvSearchOptions,\n} from \"../@types\";\nimport { type RequestConfig, withQuery } from \"../utils\";\n\nconst BASE_SEARCH = \"/search\";\n\n/**\n * Represents an endpoint for performing various search operations.\n */\nexport class SearchEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new SearchEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Searches for companies asynchronously.\n\t *\n\t * @param {SearchOptions} options - The search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Search<Company>>} A Promise that resolves with the\n\t * search results for companies.\n\t */\n\tcompanies(\n\t\toptions: SearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Search<Company>> {\n\t\treturn this.api.get<Search<Company>>(\n\t\t\t`${BASE_SEARCH}/company`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Searches for collections asynchronously.\n\t *\n\t * @param {CollectionSearchOptions} options - The search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Search<Collection>>} A Promise that resolves with the\n\t * search results for collections.\n\t */\n\tcollections(\n\t\toptions: CollectionSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Search<Collection>> {\n\t\treturn this.api.get<Search<Collection>>(\n\t\t\t`${BASE_SEARCH}/collection`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Searches for keywords asynchronously.\n\t *\n\t * @param {SearchOptions} options - The search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Search<{ id: string; name: string }>>} A Promise that\n\t * resolves with the search results for keywords.\n\t */\n\tkeywords(\n\t\toptions: SearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Search<{ id: string; name: string }>> {\n\t\treturn this.api.get<Search<{ id: string; name: string }>>(\n\t\t\t`${BASE_SEARCH}/keyword`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Searches for movies asynchronously.\n\t *\n\t * @param {MovieSearchOptions} options - The search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Search<Movie>>} A Promise that resolves with the search\n\t * results for movies.\n\t */\n\tmovies(\n\t\toptions: MovieSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Search<Movie>> {\n\t\treturn this.api.get<Search<Movie>>(\n\t\t\t`${BASE_SEARCH}/movie`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Searches for people asynchronously.\n\t *\n\t * @param {PeopleSearchOptions} options - The search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Search<Person>>} A Promise that resolves with the search\n\t * results for people.\n\t */\n\tpeople(\n\t\toptions: PeopleSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Search<Person>> {\n\t\treturn this.api.get<Search<Person>>(\n\t\t\t`${BASE_SEARCH}/person`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Searches for TV shows asynchronously.\n\t *\n\t * @param {TvSearchOptions} options - The search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Search<TV>>} A Promise that resolves with the search\n\t * results for TV shows.\n\t */\n\ttv(options: TvSearchOptions, request?: RequestConfig): Promise<Search<TV>> {\n\t\treturn this.api.get<Search<TV>>(\n\t\t\t`${BASE_SEARCH}/tv`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Performs a multi-search asynchronously.\n\t *\n\t * @param {MultiSearchOptions} options - The search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Search<MultiSearchResult>>} A Promise that resolves with\n\t * the multi-search results.\n\t */\n\tmulti(\n\t\toptions: MultiSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Search<MultiSearchResult>> {\n\t\treturn this.api.get<Search<MultiSearchResult>>(\n\t\t\t`${BASE_SEARCH}/multi`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype LanguageOption,\n\ttype PageOption,\n\ttype TimeWindow,\n\ttype TokenType,\n\ttype TrendingMediaType,\n\ttype TrendingResults,\n} from \"../@types\";\nimport { type RequestConfig, withQuery } from \"../utils\";\n\n/**\n * Represents an endpoint for retrieving trending content.\n */\nexport class TrendingEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TrendingEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves trending content asynchronously based on media type and time\n\t * window.\n\t *\n\t * @param {TrendingMediaType} mediaType - The type of media.\n\t * @param {TimeWindow} timeWindow - The time window for trending content.\n\t * @param {LanguageOption & PageOption} [options] - Optional parameters for\n\t * specifying the language and pagination.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<TrendingResults<T>>} A Promise that resolves with the\n\t * trending results.\n\t * @template T - The type of media being searched for.\n\t */\n\ttrending<T extends TrendingMediaType>(\n\t\tmediaType: T,\n\t\ttimeWindow: TimeWindow,\n\t\toptions?: LanguageOption & PageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<TrendingResults<T>> {\n\t\treturn this.api.get<TrendingResults<T>>(\n\t\t\t`/trending/${mediaType}/${timeWindow}`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n}\n","import {\n\ttype AppendToResponse,\n\ttype AppendToResponseTvEpisodeKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype Episode,\n\ttype EpisodeSelection,\n\ttype ExternalIds,\n\ttype Images,\n\ttype LanguageOption,\n\ttype TokenType,\n\ttype TvEpisodeChangeValue,\n\ttype TvEpisodeCredit,\n\ttype TvEpisodeImageSearchOptions,\n\ttype TvEpisodeTranslations,\n\ttype TvEpisodeVideoSearchOptions,\n\ttype Videos,\n} from \"../@types\";\nimport { csv, type RequestConfig, withQuery } from \"../utils\";\n\nconst BASE_EPISODE = (episodeSelection: EpisodeSelection): string => {\n\treturn `/tv/${episodeSelection.tvShowID}/season/${episodeSelection.seasonNumber}/episode/${episodeSelection.episodeNumber}`;\n};\n\n/**\n * Represents an endpoint for accessing TV episode-related information.\n */\nexport class TvEpisodesEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TvEpisodesEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific TV episode asynchronously.\n\t *\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for\n\t * the TV episode.\n\t * @param {AppendToResponseTvEpisodeKey[]} [appendToResponse] - Additional\n\t * data to append to the response.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<AppendToResponse<Omit<Episode, \"show_id\">, T,\n\t * \"tvEpisode\">>} A Promise that resolves with the details of the TV\n\t * episode.\n\t */\n\tdetails<T extends AppendToResponseTvEpisodeKey[] | undefined>(\n\t\tepisodeSelection: EpisodeSelection,\n\t\tappendToResponse?: T,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<AppendToResponse<Omit<Episode, \"show_id\">, T, \"tvEpisode\">> {\n\t\tconst query = {\n\t\t\tappend_to_response: csv(appendToResponse),\n\t\t\t...options,\n\t\t};\n\n\t\treturn this.api.get<\n\t\t\tAppendToResponse<Omit<Episode, \"show_id\">, T, \"tvEpisode\">\n\t\t>(BASE_EPISODE(episodeSelection), withQuery(query, request));\n\t}\n\n\t/**\n\t * Retrieves changes related to a specific TV episode asynchronously.\n\t *\n\t * @param {number} episodeID - The ID of the TV episode.\n\t * @param {ChangeOption} [options] - Optional parameters for specifying\n\t * changes.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Changes<TvEpisodeChangeValue>>} A Promise that resolves\n\t * with the changes related to the TV episode.\n\t */\n\tchanges(\n\t\tepisodeID: number,\n\t\toptions?: ChangeOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Changes<TvEpisodeChangeValue>> {\n\t\treturn this.api.get<Changes<TvEpisodeChangeValue>>(\n\t\t\t`/tv/episode/${episodeID}/changes`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits for a specific TV episode asynchronously.\n\t *\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for\n\t * the TV episode.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<TvEpisodeCredit>} A Promise that resolves with the\n\t * credits for the TV episode.\n\t */\n\tcredits(\n\t\tepisodeSelection: EpisodeSelection,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<TvEpisodeCredit> {\n\t\treturn this.api.get<TvEpisodeCredit>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/credits`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves external IDs for a specific TV episode asynchronously.\n\t *\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for\n\t * the TV episode.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external\n\t * IDs for the TV episode.\n\t */\n\texternalIds(\n\t\tepisodeSelection: EpisodeSelection,\n\t\trequest?: RequestConfig,\n\t): Promise<ExternalIds> {\n\t\treturn this.api.get<ExternalIds>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/external_ids`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images for a specific TV episode asynchronously.\n\t *\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for\n\t * the TV episode.\n\t * @param {TvEpisodeImageSearchOptions} [options] - Optional parameters for\n\t * specifying image search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Images>} A Promise that resolves with the images for the\n\t * TV episode.\n\t */\n\timages(\n\t\tepisodeSelection: EpisodeSelection,\n\t\toptions?: TvEpisodeImageSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Images> {\n\t\tconst query = {\n\t\t\tinclude_image_language: csv(options?.include_image_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<Images>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/images`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations for a specific TV episode asynchronously.\n\t *\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for\n\t * the TV episode.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<TvEpisodeTranslations>} A Promise that resolves with the\n\t * translations for the TV episode.\n\t */\n\ttranslations(\n\t\tepisodeSelection: EpisodeSelection,\n\t\trequest?: RequestConfig,\n\t): Promise<TvEpisodeTranslations> {\n\t\treturn this.api.get<TvEpisodeTranslations>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/translations`,\n\t\t\trequest,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves videos for a specific TV episode asynchronously.\n\t *\n\t * @param {EpisodeSelection} episodeSelection - The selection criteria for\n\t * the TV episode.\n\t * @param {TvEpisodeVideoSearchOptions} [options] - Optional parameters for\n\t * specifying video search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos for the\n\t * TV episode.\n\t */\n\tvideos(\n\t\tepisodeSelection: EpisodeSelection,\n\t\toptions?: TvEpisodeVideoSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Videos> {\n\t\tconst query = {\n\t\t\tinclude_video_language: csv(options?.include_video_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<Videos>(\n\t\t\t`${BASE_EPISODE(episodeSelection)}/videos`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n}\n","import {\n\ttype AggregateCredits,\n\ttype AppendToResponse,\n\ttype AppendToResponseTvSeasonKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype Credits,\n\ttype ExternalIds,\n\ttype Images,\n\ttype LanguageOption,\n\ttype SeasonDetails,\n\ttype SeasonSelection,\n\ttype TokenType,\n\ttype Translations,\n\ttype TvSeasonChangeValue,\n\ttype TvSeasonImageSearchOptions,\n\ttype TvSeasonVideoSearchOptions,\n\ttype Videos,\n} from \"../@types\";\nimport { csv, type RequestConfig, withQuery } from \"../utils\";\n\nconst BASE_SEASON = (seasonSelection: SeasonSelection): string => {\n\treturn `/tv/${seasonSelection.tvShowID}/season/${seasonSelection.seasonNumber}`;\n};\n\n/**\n * Represents an endpoint for accessing TV season-related information.\n */\nexport class TvSeasonsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TvSeasonsEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific TV season asynchronously.\n\t *\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the\n\t * TV season.\n\t * @param {AppendToResponseTvSeasonKey[]} [appendToResponse] - Additional\n\t * data to append to the response.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<AppendToResponse<SeasonDetails, T, \"tvSeason\">>} A\n\t * Promise that resolves with the details of the TV season.\n\t */\n\tdetails<T extends AppendToResponseTvSeasonKey[] | undefined>(\n\t\tseasonSelection: SeasonSelection,\n\t\tappendToResponse?: T,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<AppendToResponse<SeasonDetails, T, \"tvSeason\">> {\n\t\tconst query = {\n\t\t\tappend_to_response: csv(appendToResponse),\n\t\t\t...options,\n\t\t};\n\n\t\treturn this.api.get<AppendToResponse<SeasonDetails, T, \"tvSeason\">>(\n\t\t\tBASE_SEASON(seasonSelection),\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves aggregate credits for a specific TV season asynchronously.\n\t *\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the\n\t * TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<AggregateCredits>} A Promise that resolves with the\n\t * aggregate credits for the TV season.\n\t */\n\taggregateCredits(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<AggregateCredits> {\n\t\treturn this.api.get<AggregateCredits>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/aggregate_credits`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes related to a specific TV season asynchronously.\n\t *\n\t * @param {number} seasonId - The ID of the TV season.\n\t * @param {ChangeOption} [options] - Optional parameters for specifying\n\t * changes.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Changes<TvSeasonChangeValue>>} A Promise that resolves\n\t * with the changes related to the TV season.\n\t */\n\tchanges(\n\t\tseasonId: number,\n\t\toptions?: ChangeOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Changes<TvSeasonChangeValue>> {\n\t\treturn this.api.get<Changes<TvSeasonChangeValue>>(\n\t\t\t`/tv/season/${seasonId}/changes`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits for a specific TV season asynchronously.\n\t *\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the\n\t * TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Credits>} A Promise that resolves with the credits for\n\t * the TV season.\n\t */\n\tcredits(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Credits> {\n\t\treturn this.api.get<Credits>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/credits`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves external IDs for a specific TV season asynchronously.\n\t *\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the\n\t * TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external\n\t * IDs for the TV season.\n\t */\n\texternalIds(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<ExternalIds> {\n\t\treturn this.api.get<ExternalIds>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/external_ids`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves images for a specific TV season asynchronously.\n\t *\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the\n\t * TV season.\n\t * @param {TvSeasonImageSearchOptions} [options] - Optional parameters for\n\t * specifying image search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Images>} A Promise that resolves with the images for the\n\t * TV season.\n\t */\n\timages(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: TvSeasonImageSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Images> {\n\t\tconst query = {\n\t\t\tinclude_image_language: csv(options?.include_image_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<Images>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/images`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves videos for a specific TV season asynchronously.\n\t *\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the\n\t * TV season.\n\t * @param {TvSeasonVideoSearchOptions} [options] - Optional parameters for\n\t * specifying video search options.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos for the\n\t * TV season.\n\t */\n\tvideos(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: TvSeasonVideoSearchOptions,\n\t\trequest?: RequestConfig,\n\t): Promise<Videos> {\n\t\tconst query = {\n\t\t\tinclude_video_language: csv(options?.include_video_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<Videos>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/videos`,\n\t\t\twithQuery(query, request),\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves translations for a specific TV season asynchronously.\n\t *\n\t * @param {SeasonSelection} seasonSelection - The selection criteria for the\n\t * TV season.\n\t * @param {LanguageOption} [options] - Optional parameters for specifying the\n\t * language.\n\t * @param {RequestConfig} [request] - Optional request behavior overrides.\n\t * @returns {Promise<Translations>} A Promise that resolves with the\n\t * translations for the TV season.\n\t */\n\ttranslations(\n\t\tseasonSelection: SeasonSelection,\n\t\toptions?: LanguageOption,\n\t\trequest?: RequestConfig,\n\t): Promise<Translations> {\n\t\treturn this.api.get<Translations>(\n\t\t\t`${BASE_SEASON(seasonSelection)}/translations`,\n\t\t\twithQuery(options, request),\n\t\t);\n\t}\n}\n","import {\n\ttype AggregateCredits,\n\ttype AlternativeTitles,\n\ttype AppendToResponse,\n\ttype AppendToResponseTvKey,\n\tBaseEndpoint,\n\ttype ChangeOption,\n\ttype Changes,\n\ttype ContentRatings,\n\ttype Credits,\n\ttype EpisodeGroups,\n\ttype ExternalIds,\n\ttype Images,\n\ttype Keywords,\n\ttype LanguageOption,\n\ttype Latesttv,\n\ttype OnTheAir,\n\ttype PageOption,\n\ttype Populartv,\n\ttype Recommendations,\n\ttype Reviews,\n\ttype ScreenedTheatrically,\n\ttype SeasonDetails,\n\ttype Similartv,\n\ttype TimezoneOption,\n\ttype TokenType,\n\ttype TopRatedtv,\n\ttype Translations,\n\ttype TvShowChangeValue,\n\ttype TvShowDetails,\n\ttype TvShowImageOptions,\n\ttype TvShowVideoOptions,\n\ttype tvAiringToday,\n\ttype Videos,\n\ttype WatchProviders,\n} from \"../@types\";\nimport { csv } from \"../utils\";\n\nconst BASE_TV = \"/tv\";\n\n/**\n * Represents an endpoint for accessing TV show-related information.\n */\nexport class TvShowsEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new TvShowsEndpoint instance.\n\t *\n\t * @param {TokenType} auth - The authentication configuration.\n\t */\n\tconstructor(protected readonly auth: TokenType) {\n\t\tsuper(auth);\n\t}\n\n\t/**\n\t * Retrieves details of a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {AppendToResponseTvKey[]} [appendToResponse] - Additional data to\n\t * append to the response.\n\t * @param {string} [language] - The language for the response.\n\t * @returns {Promise<AppendToResponse<TvShowDetails, T, \"tvShow\">>} A\n\t * Promise that resolves with the details of the TV show.\n\t */\n\tdetails<T extends AppendToResponseTvKey[] | undefined>(\n\t\tid: number,\n\t\tappendToResponse?: T,\n\t\tlanguage?: string,\n\t): Promise<AppendToResponse<TvShowDetails, T, \"tvShow\">> {\n\t\tconst options = {\n\t\t\tappend_to_response: csv(appendToResponse),\n\t\t\tlanguage,\n\t\t};\n\n\t\treturn this.api.get<AppendToResponse<TvShowDetails, T, \"tvShow\">>(\n\t\t\t`${BASE_TV}/${id}`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves alternative titles of a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<AlternativeTitles>} A Promise that resolves with the\n\t * alternative titles of the TV show.\n\t */\n\talternativeTitles(id: number): Promise<AlternativeTitles> {\n\t\treturn this.api.get<AlternativeTitles>(\n\t\t\t`${BASE_TV}/${id}/alternative_titles`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves changes for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {ChangeOption} [options] - Additional options for the request.\n\t * @returns {Promise<Changes<TvShowChangeValue>>} A Promise that resolves\n\t * with the changes for the TV show.\n\t */\n\tchanges(\n\t\tid: number,\n\t\toptions?: ChangeOption,\n\t): Promise<Changes<TvShowChangeValue>> {\n\t\treturn this.api.get<Changes<TvShowChangeValue>>(\n\t\t\t`${BASE_TV}/${id}/changes`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves content ratings for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<ContentRatings>} A Promise that resolves with the\n\t * content ratings of the TV show.\n\t */\n\tcontentRatings(id: number): Promise<ContentRatings> {\n\t\treturn this.api.get<ContentRatings>(`${BASE_TV}/${id}/content_ratings`);\n\t}\n\n\t/**\n\t * Retrieves aggregate credits for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption} [options] - Additional options for the request.\n\t * @returns {Promise<AggregateCredits>} A Promise that resolves with the\n\t * aggregate credits of the TV show.\n\t */\n\taggregateCredits(\n\t\tid: number,\n\t\toptions?: LanguageOption,\n\t): Promise<AggregateCredits> {\n\t\treturn this.api.get<AggregateCredits>(\n\t\t\t`${BASE_TV}/${id}/aggregate_credits`,\n\t\t\t{ query: options },\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves credits for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption} [options] - Additional options for the request.\n\t * @returns {Promise<Credits>} A Promise that resolves with the credits of\n\t * the TV show.\n\t */\n\tcredits(id: number, options?: LanguageOption): Promise<Credits> {\n\t\treturn this.api.get<Credits>(`${BASE_TV}/${id}/credits`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves details of a specific season of a TV show asynchronously.\n\t *\n\t * @param {number} tvId - The ID of the TV show.\n\t * @param {number} seasonNumber - The season number.\n\t * @returns {Promise<SeasonDetails>} A Promise that resolves with the details\n\t * of the season.\n\t */\n\tseason(tvId: number, seasonNumber: number): Promise<SeasonDetails> {\n\t\treturn this.api.get<SeasonDetails>(\n\t\t\t`${BASE_TV}/${tvId}/season/${seasonNumber}`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves episode groups for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<EpisodeGroups>} A Promise that resolves with the episode\n\t * groups of the TV show.\n\t */\n\tepisodeGroups(id: number): Promise<EpisodeGroups> {\n\t\treturn this.api.get<EpisodeGroups>(`${BASE_TV}/${id}/episode_groups`);\n\t}\n\n\t/**\n\t * Retrieves external IDs for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<ExternalIds>} A Promise that resolves with the external\n\t * IDs of the TV show.\n\t */\n\texternalIds(id: number): Promise<ExternalIds> {\n\t\treturn this.api.get<ExternalIds>(`${BASE_TV}/${id}/external_ids`);\n\t}\n\n\t/**\n\t * Retrieves images for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {TvShowImageOptions} [options] - Additional options for the\n\t * request.\n\t * @returns {Promise<Images>} A Promise that resolves with the images of the\n\t * TV show.\n\t */\n\timages(id: number, options?: TvShowImageOptions): Promise<Images> {\n\t\tconst computedOptions = {\n\t\t\tinclude_image_language: csv(options?.include_image_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<Images>(`${BASE_TV}/${id}/images`, {\n\t\t\tquery: computedOptions,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves keywords for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<Keywords>} A Promise that resolves with the keywords of\n\t * the TV show.\n\t */\n\tkeywords(id: number): Promise<Keywords> {\n\t\treturn this.api.get<Keywords>(`${BASE_TV}/${id}/keywords`);\n\t}\n\n\t/**\n\t * Retrieves recommendations for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption & PageOption} [options] - Additional options for\n\t * the request.\n\t * @returns {Promise<Recommendations>} A Promise that resolves with the\n\t * recommendations for the TV show.\n\t */\n\trecommendations(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<Recommendations> {\n\t\treturn this.api.get<Recommendations>(`${BASE_TV}/${id}/recommendations`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves reviews for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption & PageOption} [options] - Additional options for\n\t * the request.\n\t * @returns {Promise<Reviews>} A Promise that resolves with the reviews of\n\t * the TV show.\n\t */\n\treviews(id: number, options?: LanguageOption & PageOption): Promise<Reviews> {\n\t\treturn this.api.get<Reviews>(`${BASE_TV}/${id}/reviews`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves information about whether the TV show was screened theatrically\n\t * asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<ScreenedTheatrically>} A Promise that resolves with\n\t * information about theatrical screenings.\n\t */\n\tscreenedTheatrically(id: number): Promise<ScreenedTheatrically> {\n\t\treturn this.api.get<ScreenedTheatrically>(\n\t\t\t`${BASE_TV}/${id}/screened_theatrically`,\n\t\t);\n\t}\n\n\t/**\n\t * Retrieves similar TV shows for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {LanguageOption & PageOption} [options] - Additional options for\n\t * the request.\n\t * @returns {Promise<Similartv>} A Promise that resolves with the similar TV\n\t * shows.\n\t */\n\tsimilar(\n\t\tid: number,\n\t\toptions?: LanguageOption & PageOption,\n\t): Promise<Similartv> {\n\t\treturn this.api.get<Similartv>(`${BASE_TV}/${id}/similar`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves translations for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<Translations>} A Promise that resolves with the\n\t * translations of the TV show.\n\t */\n\ttranslations(id: number): Promise<Translations> {\n\t\treturn this.api.get<Translations>(`${BASE_TV}/${id}/translations`);\n\t}\n\n\t/**\n\t * Retrieves videos for a specific TV show asynchronously.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @param {TvShowVideoOptions} [options] - Additional options for the\n\t * request.\n\t * @returns {Promise<Videos>} A Promise that resolves with the videos of the\n\t * TV show.\n\t */\n\tvideos(id: number, options?: TvShowVideoOptions): Promise<Videos> {\n\t\tconst computedOptions = {\n\t\t\tinclude_video_language: csv(options?.include_video_language),\n\t\t\tlanguage: options?.language,\n\t\t};\n\n\t\treturn this.api.get<Videos>(`${BASE_TV}/${id}/videos`, {\n\t\t\tquery: computedOptions,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves watch providers for a specific TV show asynchronously.\n\t * Powered by JustWatch.\n\t *\n\t * @param {number} id - The ID of the TV show.\n\t * @returns {Promise<WatchProviders>} A Promise that resolves with the watch\n\t * providers of the TV show.\n\t */\n\twatchProviders(id: number): Promise<WatchProviders> {\n\t\treturn this.api.get<WatchProviders>(`${BASE_TV}/${id}/watch/providers`);\n\t}\n\n\t/**\n\t * Retrieves the latest TV show asynchronously.\n\t *\n\t * @returns {Promise<Latesttv>} A Promise that resolves with the latest TV\n\t * show.\n\t */\n\tlatest(): Promise<Latesttv> {\n\t\treturn this.api.get<Latesttv>(`${BASE_TV}/latest`);\n\t}\n\n\t/**\n\t * Retrieves TV shows that are currently on the air asynchronously.\n\t *\n\t * @param {PageOption & LanguageOption & TimezoneOption} [options] -\n\t * Additional options for the request.\n\t * @returns {Promise<OnTheAir>} A Promise that resolves with TV shows\n\t * currently on the air.\n\t */\n\tonTheAir(\n\t\toptions?: PageOption & LanguageOption & TimezoneOption,\n\t): Promise<OnTheAir> {\n\t\treturn this.api.get<OnTheAir>(`${BASE_TV}/on_the_air`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves TV shows that are airing today asynchronously.\n\t *\n\t * @param {PageOption & LanguageOption & TimezoneOption} [options] -\n\t * Additional options for the request.\n\t * @returns {Promise<tvAiringToday>} A Promise that resolves with TV shows\n\t * airing today.\n\t */\n\tairingToday(\n\t\toptions?: PageOption & LanguageOption & TimezoneOption,\n\t): Promise<tvAiringToday> {\n\t\treturn this.api.get<tvAiringToday>(`${BASE_TV}/airing_today`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves popular TV shows asynchronously.\n\t *\n\t * @param {PageOption & LanguageOption} [options] - Additional options for\n\t * the request.\n\t * @returns {Promise<Populartv>} A Promise that resolves with popular TV\n\t * shows.\n\t */\n\tpopular(options?: PageOption & LanguageOption): Promise<Populartv> {\n\t\treturn this.api.get<Populartv>(`${BASE_TV}/popular`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n\n\t/**\n\t * Retrieves top-rated TV shows asynchronously.\n\t *\n\t * @param {PageOption & LanguageOption} [options] - Additional options for\n\t * the request.\n\t * @returns {Promise<TopRatedtv>} A Promise that resolves with top-rated TV\n\t * shows.\n\t */\n\ttopRated(options?: PageOption & LanguageOption): Promise<TopRatedtv> {\n\t\treturn this.api.get<TopRatedtv>(`${BASE_TV}/top_rated`, {\n\t\t\tquery: options,\n\t\t});\n\t}\n}\n","import {\n\tBaseEndpoint,\n\ttype TokenType,\n\ttype WatchProviderListResponse,\n\ttype WatchRegionsResponse,\n} from \"../@types\";\n\n/**\n * Represents an endpoint for accessing watch provider information.\n */\nexport class WatchProvidersEndpoint extends BaseEndpoint {\n\t/**\n\t * Constructs a new WatchProvidersEndpoint instance.\n\t *\n\t * @param {TokenType} access_token - The access token used for authentication.\n\t */\n\tconstructor(protected readonly access_token: TokenType) {\n\t\tsuper(access_token);\n\t}\n\n\t/**\n\t * Retrieves a list of watch providers for movies.\n\t *\n\t * @returns {Promise<WatchProviderListResponse>} A Promise that resolves with\n\t * the list of movie watch providers.\n\t */\n\tmovie(): Promise<WatchProviderListResponse> {\n\t\treturn this.api.get<WatchProviderListResponse>(\"/watch/providers/movie\");\n\t}\n\n\t/**\n\t * Retrieves a list of watch providers for TV shows.\n\t *\n\t * @returns {Promise<WatchProviderListResponse>} A Promise that resolves with\n\t * the list of TV watch providers.\n\t */\n\ttv(): Promise<WatchProviderListResponse> {\n\t\treturn this.api.get<WatchProviderListResponse>(\"/watch/providers/tv\");\n\t}\n\n\t/**\n\t * Retrieves a list of available regions for watch providers.\n\t *\n\t * @returns {Promise<WatchRegionsResponse>} A Promise that resolves with the\n\t * list of available regions.\n\t */\n\tregions(): Promise<WatchRegionsResponse> {\n\t\treturn this.api.get<WatchRegionsResponse>(\"/watch/providers/regions\");\n\t}\n}\n","import type { TokenType } from \"./@types\";\nimport {\n\tAccountEndpoint,\n\tCertificationEndpoint,\n\tChangeEndpoint,\n\tCollectionsEndpoint,\n\tCompaniesEndpoint,\n\tConfigurationEndpoint,\n\tCreditsEndpoint,\n\tDiscoverEndpoint,\n\tFindEndpoint,\n\tGenreEndpoint,\n\tKeywordsEndpoint,\n\tMoviesEndpoint,\n\tNetworksEndpoint,\n\tPeopleEndpoint,\n\tReviewEndpoint,\n\tSearchEndpoint,\n\tTrendingEndpoint,\n\tTvEpisodesEndpoint,\n\tTvSeasonsEndpoint,\n\tTvShowsEndpoint,\n\tWatchProvidersEndpoint,\n} from \"./endpoints\";\n\nclass TMDB {\n\treadonly account: AccountEndpoint;\n\treadonly certification: CertificationEndpoint;\n\treadonly changes: ChangeEndpoint;\n\treadonly collections: CollectionsEndpoint;\n\treadonly companies: CompaniesEndpoint;\n\treadonly configuration: ConfigurationEndpoint;\n\treadonly credits: CreditsEndpoint;\n\treadonly discover: DiscoverEndpoint;\n\treadonly find: FindEndpoint;\n\treadonly genre: GenreEndpoint;\n\treadonly keywords: KeywordsEndpoint;\n\treadonly movies: MoviesEndpoint;\n\treadonly networks: NetworksEndpoint;\n\treadonly people: PeopleEndpoint;\n\treadonly review: ReviewEndpoint;\n\treadonly search: SearchEndpoint;\n\treadonly trending: TrendingEndpoint;\n\treadonly tvEpisodes: TvEpisodesEndpoint;\n\treadonly tvSeasons: TvSeasonsEndpoint;\n\treadonly tvShows: TvShowsEndpoint;\n\treadonly watchProviders: WatchProvidersEndpoint;\n\n\tconstructor(auth: TokenType) {\n\t\tthis.account = new AccountEndpoint(auth);\n\t\tthis.certification = new CertificationEndpoint(auth);\n\t\tthis.changes = new ChangeEndpoint(auth);\n\t\tthis.collections = new CollectionsEndpoint(auth);\n\t\tthis.companies = new CompaniesEndpoint(auth);\n\t\tthis.configuration = new ConfigurationEndpoint(auth);\n\t\tthis.credits = new CreditsEndpoint(auth);\n\t\tthis.discover = new DiscoverEndpoint(auth);\n\t\tthis.find = new FindEndpoint(auth);\n\t\tthis.genre = new GenreEndpoint(auth);\n\t\tthis.keywords = new KeywordsEndpoint(auth);\n\t\tthis.movies = new MoviesEndpoint(auth);\n\t\tthis.networks = new NetworksEndpoint(auth);\n\t\tthis.people = new PeopleEndpoint(auth);\n\t\tthis.review = new ReviewEndpoint(auth);\n\t\tthis.search = new SearchEndpoint(auth);\n\t\tthis.trending = new TrendingEndpoint(auth);\n\t\tthis.tvEpisodes = new TvEpisodesEndpoint(auth);\n\t\tthis.tvSeasons = new TvSeasonsEndpoint(auth);\n\t\tthis.tvShows = new TvShowsEndpoint(auth);\n\t\tthis.watchProviders = new WatchProvidersEndpoint(auth);\n\t}\n}\n\nexport * from \"./@types\";\nexport * from \"./utils\";\nexport { TMDB };\n"],"mappings":";AAeA,IAAY,0DAAL;AACN;AACA;AACA;AACA;AACA;;AACA;AAED,IAAY,kDAAL;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAED,IAAY,sDAAL;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AAED,IAAY,wDAAL;AACN;AACA;AACA;AACA;;AACA;AAED,IAAY,oDAAL;AACN;AACA;AACA;AACA;;AACA;AAED,IAAY,oDAAL;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;;;;AClED,IAAY,8DAAL;AACN;AACA;AACA;AACA;AACA;AACA;;AACA;;;;AClDD,MAAM,cAAc;AA2BpB,IAAa,YAAb,cAA+B,MAAM;CACpC,YACCA,SACgBC,QACAC,KACAC,SACf;AACD,QAAM,QAAQ;EAJE;EACA;EACA;AAGhB,OAAK,OAAO;CACZ;AACD;AAED,MAAa,eAAe,CAACC,YAA4B;AACxD,MAAK,QAAS,QAAO;CAErB,MAAMC,UAA8B,CAAE;AAEtC,MAAK,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,QAAQ,QAAQ,EAAE;AACnD,MAAI,oBAAuB,UAAU,KAAM;AAE3C,MAAI,MAAM,QAAQ,MAAM,CACvB,MAAK,MAAM,QAAQ,OAAO;AACzB,OAAI,mBAAsB,SAAS,KAAM;AACzC,WAAQ,KAAK,CAAC,KAAK,OAAO,KAAK,AAAC,EAAC;EACjC;MAED,SAAQ,KAAK,CAAC,KAAK,OAAO,MAAM,AAAC,EAAC;CAEnC;AAED,QAAO,IAAI,gBAAgB,SAAS,UAAU;AAC9C;AAED,MAAa,MAAM,CAClBC,WACwB;AACxB,MAAK,OAAQ;CAEb,MAAM,aAAa,OACjB,OACA,CAAC,UAA8B,oBAAuB,UAAU,KAC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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tdanks2000/tmdb-wrapper",
3
- "version": "1.6.0",
3
+ "version": "2.0.0",
4
4
  "description": "A powerful and easy-to-use TypeScript wrapper for The Movie Database (TMDb) API",
5
5
  "module": "./dist/index.mjs",
6
6
  "type": "module",
@@ -63,9 +63,9 @@
63
63
  "check:write": "biome check --write ."
64
64
  },
65
65
  "devDependencies": {
66
- "@biomejs/biome": "^2.3.10",
67
- "@types/bun": "^1.3.5",
68
- "@types/node": "^22.19.3",
66
+ "@biomejs/biome": "^2.4.6",
67
+ "@types/bun": "^1.3.10",
68
+ "@types/node": "^22.19.15",
69
69
  "tsdown": "^0.12.9",
70
70
  "typescript": "^5.9.3"
71
71
  }