tmdb-kit 1.1.0 → 1.2.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,5 +1,5 @@
1
1
  import type { TMDBTransport } from '../http.cjs';
2
- import type { CreditsResponse, ImageQueryOptions, ImagesResponse, LanguageOptions, ListOptions, PagedResponse, TMDBObject, TVDetails, TVDetailsOptions, TVSeasonDetails, TVSeasonDetailsOptions, TVSummary, VideosResponse } from '../types.cjs';
2
+ import type { AggregateCreditsResponse, CreditsResponse, EpisodeDetails, EpisodeDetailsOptions, EpisodeGroupDetails, EpisodeGroupsResponse, ImageQueryOptions, ImagesResponse, LanguageOptions, ListOptions, PagedResponse, SeasonImagesResponse, TMDBObject, TVDetails, TVDetailsOptions, TVSeasonDetails, TVSeasonDetailsOptions, TVSummary, VideosResponse } from '../types.cjs';
3
3
  /**
4
4
  * Access TMDB TV show endpoints (popular, top-rated, details, seasons, etc.).
5
5
  *
@@ -19,4 +19,12 @@ export declare class TVResource {
19
19
  similar(seriesId: number, options?: Omit<ListOptions, 'region'>): Promise<PagedResponse<TVSummary>>;
20
20
  videos(seriesId: number, options?: LanguageOptions): Promise<VideosResponse>;
21
21
  seasonDetails<TAppend extends TMDBObject = TMDBObject>(seriesId: number, seasonNumber: number, options?: TVSeasonDetailsOptions): Promise<TVSeasonDetails & TAppend>;
22
+ seasonCredits(seriesId: number, seasonNumber: number, options?: LanguageOptions): Promise<CreditsResponse>;
23
+ seasonAggregateCredits(seriesId: number, seasonNumber: number, options?: LanguageOptions): Promise<AggregateCreditsResponse>;
24
+ seasonImages(seriesId: number, seasonNumber: number, options?: ImageQueryOptions): Promise<SeasonImagesResponse>;
25
+ seasonVideos(seriesId: number, seasonNumber: number, options?: LanguageOptions): Promise<VideosResponse>;
26
+ episodeDetails<TAppend extends TMDBObject = TMDBObject>(seriesId: number, seasonNumber: number, episodeNumber: number, options?: EpisodeDetailsOptions): Promise<EpisodeDetails & TAppend>;
27
+ aggregateCredits(seriesId: number, options?: LanguageOptions): Promise<AggregateCreditsResponse>;
28
+ episodeGroups(seriesId: number, options?: LanguageOptions): Promise<EpisodeGroupsResponse>;
29
+ episodeGroup(groupId: string, options?: LanguageOptions): Promise<EpisodeGroupDetails>;
22
30
  }
@@ -1,5 +1,5 @@
1
1
  import type { TMDBTransport } from '../http.js';
2
- import type { CreditsResponse, ImageQueryOptions, ImagesResponse, LanguageOptions, ListOptions, PagedResponse, TMDBObject, TVDetails, TVDetailsOptions, TVSeasonDetails, TVSeasonDetailsOptions, TVSummary, VideosResponse } from '../types.js';
2
+ import type { AggregateCreditsResponse, CreditsResponse, EpisodeDetails, EpisodeDetailsOptions, EpisodeGroupDetails, EpisodeGroupsResponse, ImageQueryOptions, ImagesResponse, LanguageOptions, ListOptions, PagedResponse, SeasonImagesResponse, TMDBObject, TVDetails, TVDetailsOptions, TVSeasonDetails, TVSeasonDetailsOptions, TVSummary, VideosResponse } from '../types.js';
3
3
  /**
4
4
  * Access TMDB TV show endpoints (popular, top-rated, details, seasons, etc.).
5
5
  *
@@ -19,4 +19,12 @@ export declare class TVResource {
19
19
  similar(seriesId: number, options?: Omit<ListOptions, 'region'>): Promise<PagedResponse<TVSummary>>;
20
20
  videos(seriesId: number, options?: LanguageOptions): Promise<VideosResponse>;
21
21
  seasonDetails<TAppend extends TMDBObject = TMDBObject>(seriesId: number, seasonNumber: number, options?: TVSeasonDetailsOptions): Promise<TVSeasonDetails & TAppend>;
22
+ seasonCredits(seriesId: number, seasonNumber: number, options?: LanguageOptions): Promise<CreditsResponse>;
23
+ seasonAggregateCredits(seriesId: number, seasonNumber: number, options?: LanguageOptions): Promise<AggregateCreditsResponse>;
24
+ seasonImages(seriesId: number, seasonNumber: number, options?: ImageQueryOptions): Promise<SeasonImagesResponse>;
25
+ seasonVideos(seriesId: number, seasonNumber: number, options?: LanguageOptions): Promise<VideosResponse>;
26
+ episodeDetails<TAppend extends TMDBObject = TMDBObject>(seriesId: number, seasonNumber: number, episodeNumber: number, options?: EpisodeDetailsOptions): Promise<EpisodeDetails & TAppend>;
27
+ aggregateCredits(seriesId: number, options?: LanguageOptions): Promise<AggregateCreditsResponse>;
28
+ episodeGroups(seriesId: number, options?: LanguageOptions): Promise<EpisodeGroupsResponse>;
29
+ episodeGroup(groupId: string, options?: LanguageOptions): Promise<EpisodeGroupDetails>;
22
30
  }
package/dist/types.d.cts CHANGED
@@ -162,6 +162,95 @@ export type TVSeasonAppendToResponse = 'account_states' | 'aggregate_credits' |
162
162
  export interface TVSeasonDetailsOptions extends LanguageOptions {
163
163
  appendToResponse?: TVSeasonAppendToResponse | readonly TVSeasonAppendToResponse[];
164
164
  }
165
+ /**
166
+ * Episode details endpoint payload. Unlike {@link EpisodeSummary}, the
167
+ * single-episode endpoint does not return `show_id`.
168
+ */
169
+ export type EpisodeDetails = Omit<EpisodeSummary, 'show_id'>;
170
+ export type EpisodeAppendToResponse = 'account_states' | 'credits' | 'external_ids' | 'images' | 'translations' | 'videos' | (string & {});
171
+ export interface EpisodeDetailsOptions extends LanguageOptions {
172
+ appendToResponse?: EpisodeAppendToResponse | readonly EpisodeAppendToResponse[];
173
+ }
174
+ export interface AggregateRole {
175
+ credit_id: string;
176
+ character: string;
177
+ episode_count: number;
178
+ }
179
+ export interface AggregateJob {
180
+ credit_id: string;
181
+ job: string;
182
+ episode_count: number;
183
+ }
184
+ export interface AggregateCastMember {
185
+ adult?: boolean;
186
+ gender: number | null;
187
+ id: number;
188
+ known_for_department: string;
189
+ name: string;
190
+ order: number;
191
+ original_name: string;
192
+ popularity: number;
193
+ profile_path: string | null;
194
+ roles: AggregateRole[];
195
+ total_episode_count: number;
196
+ }
197
+ export interface AggregateCrewMember {
198
+ adult?: boolean;
199
+ department: string;
200
+ gender: number | null;
201
+ id: number;
202
+ jobs: AggregateJob[];
203
+ known_for_department: string;
204
+ name: string;
205
+ original_name: string;
206
+ popularity: number;
207
+ profile_path: string | null;
208
+ total_episode_count: number;
209
+ }
210
+ export interface AggregateCreditsResponse {
211
+ id: number;
212
+ cast: AggregateCastMember[];
213
+ crew: AggregateCrewMember[];
214
+ }
215
+ export interface EpisodeGroupSummary {
216
+ description: string;
217
+ episode_count: number;
218
+ group_count: number;
219
+ id: string;
220
+ name: string;
221
+ network: Network | null;
222
+ type: number;
223
+ }
224
+ export interface EpisodeGroupsResponse {
225
+ id: number;
226
+ results: EpisodeGroupSummary[];
227
+ }
228
+ export interface EpisodeGroupEpisode {
229
+ air_date: TMDBDateString | null;
230
+ episode_number: number;
231
+ episode_type: string;
232
+ id: number;
233
+ name: string;
234
+ order: number;
235
+ overview: string;
236
+ production_code: string | null;
237
+ runtime: number | null;
238
+ season_number: number;
239
+ show_id: number;
240
+ still_path: string | null;
241
+ vote_average: number;
242
+ vote_count: number;
243
+ }
244
+ export interface EpisodeGroup {
245
+ id: string;
246
+ name: string;
247
+ order: number;
248
+ locked: boolean;
249
+ episodes: EpisodeGroupEpisode[];
250
+ }
251
+ export interface EpisodeGroupDetails extends EpisodeGroupSummary {
252
+ groups: EpisodeGroup[];
253
+ }
165
254
  export interface TVDetails extends Omit<TVSummary, 'genre_ids'> {
166
255
  created_by: CreatedBy[];
167
256
  episode_run_time: number[];
@@ -329,6 +418,10 @@ export interface ImagesResponse {
329
418
  logos?: ImageItem[];
330
419
  posters: ImageItem[];
331
420
  }
421
+ export interface SeasonImagesResponse {
422
+ id: number;
423
+ posters: ImageItem[];
424
+ }
332
425
  export interface ConfigurationImages {
333
426
  base_url: string;
334
427
  secure_base_url: string;
@@ -414,12 +507,17 @@ export declare function isKnownStillSize(value: string): value is KnownStillSize
414
507
  export declare function isKnownImageSize(value: string): value is KnownImageSize;
415
508
  export type MovieAppendToResponse = 'account_states' | 'alternative_titles' | 'changes' | 'credits' | 'external_ids' | 'images' | 'keywords' | 'lists' | 'recommendations' | 'release_dates' | 'reviews' | 'similar' | 'translations' | 'videos' | 'watch/providers' | (string & {});
416
509
  export type TVAppendToResponse = 'account_states' | 'aggregate_credits' | 'alternative_titles' | 'changes' | 'content_ratings' | 'credits' | 'episode_groups' | 'external_ids' | 'images' | 'keywords' | 'recommendations' | 'reviews' | 'screened_theatrically' | 'similar' | 'translations' | 'videos' | 'watch/providers' | (string & {});
417
- export interface ListOptions {
510
+ /** Per-request options shared by every resource method. */
511
+ export interface RequestOptions {
512
+ /** AbortSignal used to cancel the underlying request. */
513
+ signal?: AbortSignal;
514
+ }
515
+ export interface ListOptions extends RequestOptions {
418
516
  language?: LanguageCode;
419
517
  page?: number;
420
518
  region?: RegionCode;
421
519
  }
422
- export interface LanguageOptions {
520
+ export interface LanguageOptions extends RequestOptions {
423
521
  language?: LanguageCode;
424
522
  }
425
523
  export interface MovieDetailsOptions extends LanguageOptions {
package/dist/types.d.ts CHANGED
@@ -162,6 +162,95 @@ export type TVSeasonAppendToResponse = 'account_states' | 'aggregate_credits' |
162
162
  export interface TVSeasonDetailsOptions extends LanguageOptions {
163
163
  appendToResponse?: TVSeasonAppendToResponse | readonly TVSeasonAppendToResponse[];
164
164
  }
165
+ /**
166
+ * Episode details endpoint payload. Unlike {@link EpisodeSummary}, the
167
+ * single-episode endpoint does not return `show_id`.
168
+ */
169
+ export type EpisodeDetails = Omit<EpisodeSummary, 'show_id'>;
170
+ export type EpisodeAppendToResponse = 'account_states' | 'credits' | 'external_ids' | 'images' | 'translations' | 'videos' | (string & {});
171
+ export interface EpisodeDetailsOptions extends LanguageOptions {
172
+ appendToResponse?: EpisodeAppendToResponse | readonly EpisodeAppendToResponse[];
173
+ }
174
+ export interface AggregateRole {
175
+ credit_id: string;
176
+ character: string;
177
+ episode_count: number;
178
+ }
179
+ export interface AggregateJob {
180
+ credit_id: string;
181
+ job: string;
182
+ episode_count: number;
183
+ }
184
+ export interface AggregateCastMember {
185
+ adult?: boolean;
186
+ gender: number | null;
187
+ id: number;
188
+ known_for_department: string;
189
+ name: string;
190
+ order: number;
191
+ original_name: string;
192
+ popularity: number;
193
+ profile_path: string | null;
194
+ roles: AggregateRole[];
195
+ total_episode_count: number;
196
+ }
197
+ export interface AggregateCrewMember {
198
+ adult?: boolean;
199
+ department: string;
200
+ gender: number | null;
201
+ id: number;
202
+ jobs: AggregateJob[];
203
+ known_for_department: string;
204
+ name: string;
205
+ original_name: string;
206
+ popularity: number;
207
+ profile_path: string | null;
208
+ total_episode_count: number;
209
+ }
210
+ export interface AggregateCreditsResponse {
211
+ id: number;
212
+ cast: AggregateCastMember[];
213
+ crew: AggregateCrewMember[];
214
+ }
215
+ export interface EpisodeGroupSummary {
216
+ description: string;
217
+ episode_count: number;
218
+ group_count: number;
219
+ id: string;
220
+ name: string;
221
+ network: Network | null;
222
+ type: number;
223
+ }
224
+ export interface EpisodeGroupsResponse {
225
+ id: number;
226
+ results: EpisodeGroupSummary[];
227
+ }
228
+ export interface EpisodeGroupEpisode {
229
+ air_date: TMDBDateString | null;
230
+ episode_number: number;
231
+ episode_type: string;
232
+ id: number;
233
+ name: string;
234
+ order: number;
235
+ overview: string;
236
+ production_code: string | null;
237
+ runtime: number | null;
238
+ season_number: number;
239
+ show_id: number;
240
+ still_path: string | null;
241
+ vote_average: number;
242
+ vote_count: number;
243
+ }
244
+ export interface EpisodeGroup {
245
+ id: string;
246
+ name: string;
247
+ order: number;
248
+ locked: boolean;
249
+ episodes: EpisodeGroupEpisode[];
250
+ }
251
+ export interface EpisodeGroupDetails extends EpisodeGroupSummary {
252
+ groups: EpisodeGroup[];
253
+ }
165
254
  export interface TVDetails extends Omit<TVSummary, 'genre_ids'> {
166
255
  created_by: CreatedBy[];
167
256
  episode_run_time: number[];
@@ -329,6 +418,10 @@ export interface ImagesResponse {
329
418
  logos?: ImageItem[];
330
419
  posters: ImageItem[];
331
420
  }
421
+ export interface SeasonImagesResponse {
422
+ id: number;
423
+ posters: ImageItem[];
424
+ }
332
425
  export interface ConfigurationImages {
333
426
  base_url: string;
334
427
  secure_base_url: string;
@@ -414,12 +507,17 @@ export declare function isKnownStillSize(value: string): value is KnownStillSize
414
507
  export declare function isKnownImageSize(value: string): value is KnownImageSize;
415
508
  export type MovieAppendToResponse = 'account_states' | 'alternative_titles' | 'changes' | 'credits' | 'external_ids' | 'images' | 'keywords' | 'lists' | 'recommendations' | 'release_dates' | 'reviews' | 'similar' | 'translations' | 'videos' | 'watch/providers' | (string & {});
416
509
  export type TVAppendToResponse = 'account_states' | 'aggregate_credits' | 'alternative_titles' | 'changes' | 'content_ratings' | 'credits' | 'episode_groups' | 'external_ids' | 'images' | 'keywords' | 'recommendations' | 'reviews' | 'screened_theatrically' | 'similar' | 'translations' | 'videos' | 'watch/providers' | (string & {});
417
- export interface ListOptions {
510
+ /** Per-request options shared by every resource method. */
511
+ export interface RequestOptions {
512
+ /** AbortSignal used to cancel the underlying request. */
513
+ signal?: AbortSignal;
514
+ }
515
+ export interface ListOptions extends RequestOptions {
418
516
  language?: LanguageCode;
419
517
  page?: number;
420
518
  region?: RegionCode;
421
519
  }
422
- export interface LanguageOptions {
520
+ export interface LanguageOptions extends RequestOptions {
423
521
  language?: LanguageCode;
424
522
  }
425
523
  export interface MovieDetailsOptions extends LanguageOptions {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "tmdb-kit",
3
3
  "type": "module",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "description": "A tiny, typed, zero-runtime-dependency TMDB SDK and CLI for Node.js, Bun, Deno, and edge runtimes.",
6
6
  "author": "isaced",
7
7
  "license": "MIT",