@@ -11,6 +11,7 @@ import type {
1111 PeopleShowCreditsResponse ,
1212 ShowResponse ,
1313} from '@trakt/api' ;
14+ import type { MediaEntry } from '../models/MediaEntry.ts' ;
1415
1516type MediaCreditsResponse =
1617 | PeopleMovieCreditsResponse
@@ -49,6 +50,19 @@ function mapToMediaEntry(entryResponse: EntryResponse) {
4950type CrewResponse = NonNullable < MediaCreditsResponse [ 'crew' ] > ;
5051type CrewEntry = CrewResponse [ string ] [ number ] ;
5152
53+ type CastResponse = NonNullable < MediaCreditsResponse [ 'cast' ] > ;
54+ type CastEntry = CastResponse [ number ] ;
55+
56+ function toCredit ( media : MediaEntry , entry : CrewEntry | CastEntry ) {
57+ return {
58+ media,
59+ key : media . key ,
60+ ...( 'episode_count' in entry && entry . episode_count != null
61+ ? { episodeCount : entry . episode_count }
62+ : { } ) ,
63+ } ;
64+ }
65+
5266export function mapToMediaCredits (
5367 response : MediaCreditsResponse ,
5468) : MediaCredits {
@@ -66,10 +80,9 @@ export function mapToMediaCredits(
6680 const media = mapToMediaEntry ( entry ) ;
6781
6882 entries ?. push ( {
69- media,
83+ ... toCredit ( media , entry ) ,
7084 type : 'cast' ,
7185 character : entry . character ,
72- key : media . key ,
7386 } ) ;
7487 } ) ;
7588
@@ -78,10 +91,9 @@ export function mapToMediaCredits(
7891 const mediaEntries = entries . map ( ( entry : CrewEntry ) => {
7992 const media = mapToMediaEntry ( entry ) ;
8093 return {
81- media,
94+ ... toCredit ( media , entry ) ,
8295 type : 'crew' ,
8396 job : entry . job ,
84- key : media . key ,
8597 } ;
8698 } ) ;
8799
0 commit comments