UNPKG

@vo1x/tmdb

Version:

Unofficial TypeScript/JavaScript SDK for The Movie Database (TMDb) API v3.

1 lines 33.8 kB
{"version":3,"sources":["../src/core/errors.ts","../src/shared/parser.ts","../src/core/http.ts","../src/shared/validation.ts","../src/modules/movies/service.ts","../src/modules/tv/service.ts","../src/modules/search/service.ts","../src/modules/trending/service.ts","../src/modules/configuration/service.ts","../src/modules/person/service.ts","../src/tmdb.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export interface TMDBErrorBody {\n status_code?: number;\n status_message?: string;\n success?: boolean;\n}\n\n/**\n * Custom error class for TMDB API errors.\n * Provides structured error information from TMDB responses.\n */\nexport class TMDBError extends Error {\n readonly status?: number;\n\n readonly code?: number;\n\n readonly body?: TMDBErrorBody;\n\n constructor(\n message: string,\n options?: {\n status?: number;\n code?: number;\n body?: TMDBErrorBody;\n }\n ) {\n super(message);\n this.name = \"TMDBError\";\n this.status = options?.status;\n this.code = options?.code;\n this.body = options?.body;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, TMDBError);\n }\n }\n\n get isRateLimit(): boolean {\n return this.status === 429;\n }\n\n get isAuthError(): boolean {\n return this.status === 401 || this.code === 7; // Invalid API key\n }\n\n get isNotFound(): boolean {\n return this.status === 404 || this.code === 34; // Resource not found\n }\n\n get friendlyMessage(): string {\n if (this.isRateLimit) {\n return \"Rate limit exceeded. Please wait before making more requests.\";\n }\n if (this.isAuthError) {\n return \"Invalid API key. Please check your TMDB API credentials.\";\n }\n if (this.isNotFound) {\n return \"The requested content was not found.\";\n }\n return this.message;\n }\n}\n","/**\n * @internal\n */\nfunction snakeToCamel(str: string): string {\n return str.replace(/([-_][a-z])/g, (group) =>\n group.toUpperCase().replace(\"-\", \"\").replace(\"_\", \"\")\n );\n}\n\n/**\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function toCamelCase<T>(obj: any): T {\n if (Array.isArray(obj)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return obj.map((v) => toCamelCase(v)) as any;\n } else if (obj !== null && typeof obj === \"object\" && !(obj instanceof Date)) {\n return Object.keys(obj).reduce((acc, key) => {\n const camelKey = snakeToCamel(key);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = (obj as any)[key];\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (acc as any)[camelKey] = toCamelCase(value);\n\n return acc;\n }, {} as T);\n }\n return obj as T;\n}\n","import type { TMDBOptions } from \"../shared/common\";\nimport { TMDBError, type TMDBErrorBody } from \"./errors\";\n\nimport { toCamelCase } from \"../shared/parser\";\n\nconst DEFAULT_BASE_URL = \"https://api.themoviedb.org/3\";\n\n/**\n * Internal HTTP client for TMDB API requests.\n * Handles authentication, error responses, and request formatting.\n *\n * @internal\n */\nexport class HttpClient {\n private readonly baseUrl: string;\n private readonly apiKey?: string;\n private readonly language?: string;\n private readonly region?: string;\n\n constructor(options: TMDBOptions) {\n this.baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;\n this.apiKey = options.apiKey;\n this.language = options.language;\n this.region = options.region;\n }\n\n /**\n * Make a GET request to the TMDB API.\n *\n * @param path - API endpoint path (e.g., \"/movie/550\")\n * @param params - Query parameters to include in the request\n * @returns Promise resolving to the parsed JSON response\n * @throws {TMDBError} When the request fails or returns an error status\n */\n async get<T>(path: string, params?: Record<string, unknown>): Promise<T> {\n const queryParams = this.buildQueryParams(params);\n const url = this.baseUrl + path + this.buildQueryString(queryParams);\n\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n \"User-Agent\": \"tmdb-client/0.2.0\",\n },\n });\n\n if (!response.ok) {\n await this.handleErrorResponse(response);\n }\n\n return await this.parseJsonResponse<T>(response);\n } catch (error) {\n // Re-throw TMDBError instances as-is\n if (error instanceof TMDBError) {\n throw error;\n }\n\n // Handle network errors, timeouts, etc.\n const message = error instanceof Error ? error.message : \"Unknown error occurred\";\n throw new TMDBError(`Network error: ${message}`, { status: 0 });\n }\n }\n\n /**\n * Build query parameters, merging request params with client defaults.\n */\n private buildQueryParams(params?: Record<string, unknown>): Record<string, unknown> {\n return {\n ...params,\n language: params?.language ?? this.language,\n region: params?.region ?? this.region,\n ...(this.apiKey ? { api_key: this.apiKey } : {}),\n };\n }\n\n /**\n * Convert parameters object to URL query string.\n * Handles arrays by joining with commas, filters out empty values.\n */\n private buildQueryString(params?: Record<string, unknown>): string {\n if (!params) return \"\";\n\n const searchParams = new URLSearchParams();\n\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined || value === null || value === \"\") {\n continue;\n }\n\n if (Array.isArray(value)) {\n if (value.length > 0) {\n searchParams.set(key, value.join(\",\"));\n }\n continue;\n }\n\n searchParams.set(key, String(value));\n }\n\n const queryString = searchParams.toString();\n return queryString ? `?${queryString}` : \"\";\n }\n\n /**\n * Handle error responses from TMDB API.\n * Attempts to parse TMDB error format and throws structured TMDBError.\n */\n private async handleErrorResponse(response: Response): Promise<never> {\n let errorBody: TMDBErrorBody | undefined;\n let message = `HTTP ${response.status}: ${response.statusText}`;\n\n try {\n const contentType = response.headers.get(\"content-type\") || \"\";\n if (contentType.toLowerCase().includes(\"application/json\")) {\n errorBody = (await response.json()) as TMDBErrorBody;\n\n if (errorBody.status_message) {\n message = errorBody.status_message;\n }\n }\n } catch {\n /* ignore JSON parse errors */\n }\n\n if (response.status === 401) {\n message = \"Invalid API key. Please check your TMDB credentials.\";\n } else if (response.status === 429) {\n message = \"Rate limit exceeded. Please slow down your requests.\";\n } else if (response.status >= 500) {\n message = \"TMDB server error. Please try again later.\";\n }\n\n throw new TMDBError(message, {\n status: response.status,\n code: errorBody?.status_code,\n body: errorBody,\n });\n }\n\n /**\n * Parse JSON response with proper error handling.\n */\n private async parseJsonResponse<T>(response: Response): Promise<T> {\n const contentType = response.headers.get(\"content-type\") || \"\";\n\n if (!contentType.toLowerCase().includes(\"application/json\")) {\n throw new TMDBError(\"Expected JSON response but received different content type\", {\n status: response.status,\n });\n }\n\n try {\n const rawJson = await response.json();\n return toCamelCase<T>(rawJson);\n } catch {\n throw new TMDBError(\"Failed to parse JSON response from TMDB\", { status: response.status });\n }\n }\n}\n","import { TMDBError } from \"../core\";\n\nexport function validateId(id: number): void {\n if (!Number.isInteger(id) || id <= 0) {\n throw new TMDBError(\"Invalid TMDB movie id. Expected a positive integer.\");\n }\n}\n\nexport function validateQuery(query: string): void {\n if (!query?.trim()) {\n throw new TMDBError(\"Search query cannot be empty\");\n }\n}\n","import type { HttpClient } from \"../../core\";\nimport { validateId } from \"../../shared/validation\";\nimport type {\n Movie,\n MovieCredits,\n MovieImages,\n GetMovieOptions,\n GetMovieCreditsOptions,\n GetMovieImagesOptions,\n GetRecommendedMoviesOptions,\n GetSimilarMoviesOptions,\n RecommendedMovies,\n SimilarMovies,\n} from \"./types\";\n\n/**\n * Internal service for TMDB movie endpoints.\n * Not exposed to consumers — use the TMDB client facade instead.\n * @internal\n */\nexport class MoviesService {\n constructor(private readonly http: HttpClient) {}\n\n async get(id: number, options?: GetMovieOptions): Promise<Movie> {\n validateId(id);\n return this.http.get<Movie>(`/movie/${id}`, options);\n }\n\n async credits(id: number, options?: GetMovieCreditsOptions): Promise<MovieCredits> {\n validateId(id);\n return this.http.get<MovieCredits>(`/movie/${id}/credits`, options);\n }\n\n async images(id: number, options?: GetMovieImagesOptions): Promise<MovieImages> {\n validateId(id);\n return this.http.get<MovieImages>(`/movie/${id}/images`, options);\n }\n\n async recommendations(\n id: number,\n options?: GetRecommendedMoviesOptions\n ): Promise<RecommendedMovies> {\n validateId(id);\n return this.http.get<RecommendedMovies>(`/movie/${id}/recommendations`, options);\n }\n\n async similar(id: number, options?: GetSimilarMoviesOptions): Promise<SimilarMovies> {\n validateId(id);\n return this.http.get<SimilarMovies>(`/movie/${id}/similar`, options);\n }\n}\n","import { HttpClient } from \"../../core\";\nimport { validateId } from \"../../shared/validation\";\nimport type {\n TvShow,\n TvCredits,\n TvImages,\n GetTvShowOptions,\n GetTvCreditsOptions,\n GetTvImagesOptions,\n GetRecommendedTvShowsOptions,\n RecommendedTvShows,\n GetSimilarTvShowsOptions,\n SimilarTvShows,\n} from \"./types\";\n\n/**\n * Internal service for TMDB tv endpoints.\n * Not exposed to users — use the TMDB factory instead.\n * @internal\n */\nexport class TvService {\n constructor(private http: HttpClient) {}\n\n get(id: number, opts?: GetTvShowOptions): Promise<TvShow> {\n validateId(id);\n return this.http.get<TvShow>(`/tv/${id}`, opts);\n }\n\n credits(id: number, opts?: GetTvCreditsOptions): Promise<TvCredits> {\n validateId(id);\n return this.http.get<TvCredits>(`/tv/${id}/credits`, opts);\n }\n\n images(id: number, opts?: GetTvImagesOptions): Promise<TvImages> {\n validateId(id);\n return this.http.get<TvImages>(`/tv/${id}/images`, opts);\n }\n\n recommendations(id: number, opts?: GetRecommendedTvShowsOptions): Promise<RecommendedTvShows> {\n validateId(id);\n return this.http.get<RecommendedTvShows>(`/tv/${id}/recommendations`, opts);\n }\n\n similar(id: number, opts?: GetSimilarTvShowsOptions): Promise<SimilarTvShows> {\n validateId(id);\n return this.http.get<SimilarTvShows>(`/tv/${id}/similar`, opts);\n }\n}\n","import type { HttpClient } from \"../../core\";\nimport { validateQuery } from \"../../shared/validation\";\nimport type {\n MovieSearchResults,\n TvSearchResults,\n PeopleSearchResults,\n MultiSearchResults,\n GetMovieSearchOptions,\n GetTvSearchOptions,\n GetPeopleSearchOptions,\n GetMultiSearchOptions,\n} from \"./types\";\n\n/**\n * Internal service for TMDB search endpoints.\n * Not exposed to consumers - use TMDB client's search methods instead.\n * @internal\n */\nexport class SearchService {\n constructor(private readonly http: HttpClient) {}\n\n async searchMovies(query: string, options?: GetMovieSearchOptions): Promise<MovieSearchResults> {\n validateQuery(query);\n return this.http.get<MovieSearchResults>(\"/search/movie\", {\n query: query.trim(),\n ...options,\n });\n }\n\n async searchTv(query: string, options?: GetTvSearchOptions): Promise<TvSearchResults> {\n validateQuery(query);\n return this.http.get<TvSearchResults>(\"/search/tv\", {\n query: query.trim(),\n ...options,\n });\n }\n\n async searchPeople(\n query: string,\n options?: GetPeopleSearchOptions\n ): Promise<PeopleSearchResults> {\n validateQuery(query);\n return this.http.get<PeopleSearchResults>(\"/search/person\", {\n query: query.trim(),\n ...options,\n });\n }\n\n async searchMulti(query: string, options?: GetMultiSearchOptions): Promise<MultiSearchResults> {\n validateQuery(query);\n return this.http.get<MultiSearchResults>(\"/search/multi\", {\n query: query.trim(),\n ...options,\n });\n }\n}\n","import type { HttpClient } from \"../../core\";\nimport type { TrendingAll, GetTrendingAllOptions } from \"./types\";\n\n/**\n * Internal service for TMDB trending endpoints.\n * Not exposed to users — use the TMDB factory instead.\n * @internal\n */\nexport class TrendingService {\n constructor(private http: HttpClient) {}\n\n async getDailyTrending(opts?: GetTrendingAllOptions): Promise<TrendingAll> {\n return this.http.get<TrendingAll>(`/trending/all/day`, opts);\n }\n\n async getWeeklyTrending(opts?: GetTrendingAllOptions): Promise<TrendingAll> {\n return this.http.get<TrendingAll>(`/trending/all/week`, opts);\n }\n}\n","import type { HttpClient } from \"../../core\";\nimport type {\n TMDBConfiguration,\n Country,\n JobGroup,\n Language,\n TimezoneGroup,\n GetCountriesOptions,\n} from \"./types\";\n\n/**\n * Internal service for TMDB configuration endpoints.\n * Not exposed to users — use the TMDB factory instead.\n * @internal\n */\nexport class ConfigurationService {\n constructor(private http: HttpClient) {}\n\n async getConfig(): Promise<TMDBConfiguration> {\n return this.http.get<TMDBConfiguration>(\"/configuration\");\n }\n\n async countries(opts?: GetCountriesOptions): Promise<Country[]> {\n return this.http.get<Country[]>(\"/configuration/countries\", opts);\n }\n\n async jobs(): Promise<JobGroup[]> {\n return this.http.get<JobGroup[]>(\"/configuration/jobs\");\n }\n\n async languages(): Promise<Language[]> {\n return this.http.get<Language[]>(\"/configuration/languages\");\n }\n\n async timezones(): Promise<TimezoneGroup[]> {\n return this.http.get<TimezoneGroup[]>(\"/configuration/timezones\");\n }\n}\n","import type { HttpClient } from \"../../core\";\nimport { validateId } from \"../../shared/validation\";\nimport type {\n Person,\n PersonImages,\n PersonCombinedCredits,\n GetPersonOptions,\n GetPersonCombinedCreditsOptions,\n} from \"./types\";\n\n/**\n * Internal service for TMDB person endpoints.\n * @internal\n */\nexport class PersonService {\n constructor(private readonly http: HttpClient) {}\n\n async get(id: number, options?: GetPersonOptions): Promise<Person> {\n validateId(id);\n return this.http.get<Person>(`/person/${id}`, options);\n }\n\n async images(id: number): Promise<PersonImages> {\n validateId(id);\n return this.http.get<PersonImages>(`/person/${id}/images`);\n }\n\n async combinedCredits(\n id: number,\n options?: GetPersonCombinedCreditsOptions\n ): Promise<PersonCombinedCredits> {\n validateId(id);\n return this.http.get<PersonCombinedCredits>(`/person/${id}/combined_credits`, options);\n }\n}\n","import { HttpClient } from \"./core\";\nimport { TMDBError } from \"./core\";\n\nimport { MoviesService } from \"./modules/movies/service\";\nimport { TvService } from \"./modules/tv/service\";\nimport { SearchService } from \"./modules/search/service\";\nimport { TrendingService } from \"./modules/trending/service\";\nimport { ConfigurationService } from \"./modules/configuration/service\";\n\nimport type {\n GetMovieOptions,\n GetMovieCreditsOptions,\n GetMovieImagesOptions,\n GetRecommendedMoviesOptions,\n GetSimilarMoviesOptions,\n Movie,\n MovieCredits,\n MovieImages,\n RecommendedMovies,\n SimilarMovies,\n} from \"./modules/movies/types\";\n\nimport type {\n GetTvShowOptions,\n GetTvCreditsOptions,\n GetTvImagesOptions,\n GetRecommendedTvShowsOptions,\n GetSimilarTvShowsOptions,\n TvShow,\n TvCredits,\n TvImages,\n RecommendedTvShows,\n SimilarTvShows,\n} from \"./modules/tv/types\";\n\nimport type {\n GetMovieSearchOptions,\n GetTvSearchOptions,\n GetPeopleSearchOptions,\n GetMultiSearchOptions,\n MovieSearchResults,\n TvSearchResults,\n PeopleSearchResults,\n MultiSearchResults,\n} from \"./modules/search/types\";\n\nimport type { GetTrendingAllOptions, TrendingAll } from \"./modules/trending/types\";\n\nimport type {\n GetCountriesOptions,\n TMDBConfiguration,\n Country,\n JobGroup,\n Language,\n TimezoneGroup,\n} from \"./modules/configuration/types\";\n\nimport type {\n GetPersonOptions,\n Person,\n PersonImages,\n GetPersonCombinedCreditsOptions,\n PersonCombinedCredits,\n} from \"./modules/person/types\";\n\nimport type { TMDBOptions } from \"./shared/common\";\nimport { PersonService } from \"./modules/person/service\";\n\nexport class TMDB {\n readonly movies: {\n get: (id: number, options?: GetMovieOptions) => Promise<Movie>;\n credits: (id: number, options?: GetMovieCreditsOptions) => Promise<MovieCredits>;\n images: (id: number, options?: GetMovieImagesOptions) => Promise<MovieImages>;\n recommendations: (\n id: number,\n options?: GetRecommendedMoviesOptions\n ) => Promise<RecommendedMovies>;\n similar: (id: number, options?: GetSimilarMoviesOptions) => Promise<SimilarMovies>;\n };\n\n readonly tv: {\n get: (id: number, options?: GetTvShowOptions) => Promise<TvShow>;\n credits: (id: number, options?: GetTvCreditsOptions) => Promise<TvCredits>;\n images: (id: number, options?: GetTvImagesOptions) => Promise<TvImages>;\n recommendations: (\n id: number,\n options?: GetRecommendedTvShowsOptions\n ) => Promise<RecommendedTvShows>;\n similar: (id: number, options?: GetSimilarTvShowsOptions) => Promise<SimilarTvShows>;\n };\n\n readonly trending: {\n daily: (options?: GetTrendingAllOptions) => Promise<TrendingAll>;\n weekly: (options?: GetTrendingAllOptions) => Promise<TrendingAll>;\n };\n\n readonly configuration: {\n get: () => Promise<TMDBConfiguration>;\n countries: (options?: GetCountriesOptions) => Promise<Country[]>;\n jobs: () => Promise<JobGroup[]>;\n languages: () => Promise<Language[]>;\n timezones: () => Promise<TimezoneGroup[]>;\n };\n\n readonly search: {\n movies: (query: string, options?: GetMovieSearchOptions) => Promise<MovieSearchResults>;\n tv: (query: string, options?: GetTvSearchOptions) => Promise<TvSearchResults>;\n people: (query: string, options?: GetPeopleSearchOptions) => Promise<PeopleSearchResults>;\n multi: (query: string, options?: GetMultiSearchOptions) => Promise<MultiSearchResults>;\n };\n\n readonly person: {\n get: (id: number, options?: GetPersonOptions) => Promise<Person>;\n images: (id: number) => Promise<PersonImages>;\n combinedCredits: (\n id: number,\n options?: GetPersonCombinedCreditsOptions\n ) => Promise<PersonCombinedCredits>;\n };\n\n private readonly http: HttpClient;\n\n constructor(opts: TMDBOptions) {\n if (!opts?.apiKey?.trim()) {\n throw new TMDBError(\"API key is required.\", { status: 401 });\n }\n\n this.http = new HttpClient({\n apiKey: opts.apiKey,\n baseUrl: opts.baseUrl ?? \"https://api.themoviedb.org/3\",\n language: opts.language ?? \"en-US\",\n timeout: opts.timeout ?? 20_000,\n });\n\n const movies = new MoviesService(this.http);\n const tv = new TvService(this.http);\n const search = new SearchService(this.http);\n const trending = new TrendingService(this.http);\n const configuration = new ConfigurationService(this.http);\n const person = new PersonService(this.http);\n\n this.person = {\n get: person.get.bind(person),\n images: person.images.bind(person),\n combinedCredits: person.combinedCredits.bind(person),\n };\n\n this.movies = {\n get: movies.get.bind(movies),\n credits: movies.credits.bind(movies),\n images: movies.images.bind(movies),\n recommendations: movies.recommendations.bind(movies),\n similar: movies.similar.bind(movies),\n };\n\n this.tv = {\n get: tv.get.bind(tv),\n credits: tv.credits.bind(tv),\n images: tv.images.bind(tv),\n recommendations: tv.recommendations.bind(tv),\n similar: tv.similar.bind(tv),\n };\n\n this.trending = {\n daily: trending.getDailyTrending.bind(trending),\n weekly: trending.getWeeklyTrending.bind(trending),\n };\n\n this.configuration = {\n get: configuration.getConfig.bind(configuration),\n countries: configuration.countries.bind(configuration),\n jobs: configuration.jobs.bind(configuration),\n languages: configuration.languages.bind(configuration),\n timezones: configuration.timezones.bind(configuration),\n };\n\n this.search = {\n movies: search.searchMovies.bind(search),\n tv: search.searchTv.bind(search),\n people: search.searchPeople.bind(search),\n multi: search.searchMulti.bind(search),\n };\n }\n}\n"]}