@tmdb-graphql-api/resolvers 0.0.34 → 0.1.1-unstable.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.
Files changed (489) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/index.mjs +1 -1
  4. package/dist/esm/index.mjs.map +1 -1
  5. package/dist/production.analysis.txt +506 -413
  6. package/dist/types/cjs/constants.d.cts +3 -0
  7. package/dist/types/cjs/constants.d.cts.map +1 -1
  8. package/dist/types/cjs/helpers/buildArgsResolver.d.cts +9 -0
  9. package/dist/types/cjs/helpers/buildArgsResolver.d.cts.map +1 -0
  10. package/dist/types/cjs/helpers/buildNoObjArgsResolver.d.cts +9 -0
  11. package/dist/types/cjs/helpers/buildNoObjArgsResolver.d.cts.map +1 -0
  12. package/dist/types/cjs/helpers/buildObjArgsResolver.d.cts +9 -0
  13. package/dist/types/cjs/helpers/buildObjArgsResolver.d.cts.map +1 -0
  14. package/dist/types/cjs/helpers/buildObjResolver.d.cts +11 -0
  15. package/dist/types/cjs/helpers/buildObjResolver.d.cts.map +1 -0
  16. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts +4 -3
  17. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts.map +1 -1
  18. package/dist/types/cjs/main.d.cts.map +1 -1
  19. package/dist/types/cjs/queries/certifications.d.cts +429 -4
  20. package/dist/types/cjs/queries/certifications.d.cts.map +1 -1
  21. package/dist/types/cjs/queries/collection.d.cts +61 -3397
  22. package/dist/types/cjs/queries/collection.d.cts.map +1 -1
  23. package/dist/types/cjs/queries/collectionImages.d.cts +40 -13
  24. package/dist/types/cjs/queries/collectionImages.d.cts.map +1 -1
  25. package/dist/types/cjs/queries/collectionTranslations.d.cts +34 -17
  26. package/dist/types/cjs/queries/collectionTranslations.d.cts.map +1 -1
  27. package/dist/types/cjs/queries/company.d.cts +9 -12
  28. package/dist/types/cjs/queries/company.d.cts.map +1 -1
  29. package/dist/types/cjs/queries/companyAlternativeNames.d.cts +27 -9
  30. package/dist/types/cjs/queries/companyAlternativeNames.d.cts.map +1 -1
  31. package/dist/types/cjs/queries/companyLogos.d.cts +19 -13
  32. package/dist/types/cjs/queries/companyLogos.d.cts.map +1 -1
  33. package/dist/types/cjs/queries/configuration.d.cts +11 -14
  34. package/dist/types/cjs/queries/configuration.d.cts.map +1 -1
  35. package/dist/types/cjs/queries/configurationCountries.d.cts +16 -3
  36. package/dist/types/cjs/queries/configurationCountries.d.cts.map +1 -1
  37. package/dist/types/cjs/queries/configurationJobs.d.cts +15 -3
  38. package/dist/types/cjs/queries/configurationJobs.d.cts.map +1 -1
  39. package/dist/types/cjs/queries/configurationLanguages.d.cts +16 -3
  40. package/dist/types/cjs/queries/configurationLanguages.d.cts.map +1 -1
  41. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts +12 -3
  42. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts.map +1 -1
  43. package/dist/types/cjs/queries/configurationTimezones.d.cts +15 -3
  44. package/dist/types/cjs/queries/configurationTimezones.d.cts.map +1 -1
  45. package/dist/types/cjs/queries/credit.d.cts +46 -4197
  46. package/dist/types/cjs/queries/credit.d.cts.map +1 -1
  47. package/dist/types/cjs/queries/discoverMovies.d.cts +2 -4
  48. package/dist/types/cjs/queries/discoverMovies.d.cts.map +1 -1
  49. package/dist/types/cjs/queries/discoverTv.d.cts +2 -4
  50. package/dist/types/cjs/queries/discoverTv.d.cts.map +1 -1
  51. package/dist/types/cjs/queries/episode.d.cts +235 -94
  52. package/dist/types/cjs/queries/episode.d.cts.map +1 -1
  53. package/dist/types/cjs/queries/episodeCredits.d.cts +168 -32
  54. package/dist/types/cjs/queries/episodeCredits.d.cts.map +1 -1
  55. package/dist/types/cjs/queries/episodeExternalIds.d.cts +139 -15
  56. package/dist/types/cjs/queries/episodeExternalIds.d.cts.map +1 -1
  57. package/dist/types/cjs/queries/episodeStills.d.cts +140 -5
  58. package/dist/types/cjs/queries/episodeStills.d.cts.map +1 -1
  59. package/dist/types/cjs/queries/episodeTranslations.d.cts +141 -19
  60. package/dist/types/cjs/queries/episodeTranslations.d.cts.map +1 -1
  61. package/dist/types/cjs/queries/episodeVideos.d.cts +142 -14
  62. package/dist/types/cjs/queries/episodeVideos.d.cts.map +1 -1
  63. package/dist/types/cjs/queries/find.d.cts +10 -1801
  64. package/dist/types/cjs/queries/find.d.cts.map +1 -1
  65. package/dist/types/cjs/queries/genres.d.cts +6 -6
  66. package/dist/types/cjs/queries/genres.d.cts.map +1 -1
  67. package/dist/types/cjs/queries/keyword.d.cts +2 -5
  68. package/dist/types/cjs/queries/keyword.d.cts.map +1 -1
  69. package/dist/types/cjs/queries/movie.d.cts +35 -3588
  70. package/dist/types/cjs/queries/movie.d.cts.map +1 -1
  71. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts +1736 -5
  72. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts.map +1 -1
  73. package/dist/types/cjs/queries/movieCredits.d.cts +1755 -30
  74. package/dist/types/cjs/queries/movieCredits.d.cts.map +1 -1
  75. package/dist/types/cjs/queries/movieExternalIds.d.cts +1738 -15
  76. package/dist/types/cjs/queries/movieExternalIds.d.cts.map +1 -1
  77. package/dist/types/cjs/queries/movieImages.d.cts +1756 -5
  78. package/dist/types/cjs/queries/movieImages.d.cts.map +1 -1
  79. package/dist/types/cjs/queries/movieKeywords.d.cts +1735 -5
  80. package/dist/types/cjs/queries/movieKeywords.d.cts.map +1 -1
  81. package/dist/types/cjs/queries/movieRecommendations.d.cts +1728 -1848
  82. package/dist/types/cjs/queries/movieRecommendations.d.cts.map +1 -1
  83. package/dist/types/cjs/queries/movieReleaseDates.d.cts +1742 -12
  84. package/dist/types/cjs/queries/movieReleaseDates.d.cts.map +1 -1
  85. package/dist/types/cjs/queries/movieReviews.d.cts +1728 -1848
  86. package/dist/types/cjs/queries/movieReviews.d.cts.map +1 -1
  87. package/dist/types/cjs/queries/movieSimilarMovies.d.cts +1728 -1848
  88. package/dist/types/cjs/queries/movieSimilarMovies.d.cts.map +1 -1
  89. package/dist/types/cjs/queries/movieTranslations.d.cts +1744 -19
  90. package/dist/types/cjs/queries/movieTranslations.d.cts.map +1 -1
  91. package/dist/types/cjs/queries/movieVideos.d.cts +1741 -13
  92. package/dist/types/cjs/queries/movieVideos.d.cts.map +1 -1
  93. package/dist/types/cjs/queries/movieWatchProviders.d.cts +3205 -1373
  94. package/dist/types/cjs/queries/movieWatchProviders.d.cts.map +1 -1
  95. package/dist/types/cjs/queries/network.d.cts +14 -23
  96. package/dist/types/cjs/queries/network.d.cts.map +1 -1
  97. package/dist/types/cjs/queries/networkAlternativeNames.d.cts +11 -9
  98. package/dist/types/cjs/queries/networkAlternativeNames.d.cts.map +1 -1
  99. package/dist/types/cjs/queries/networkLogos.d.cts +17 -13
  100. package/dist/types/cjs/queries/networkLogos.d.cts.map +1 -1
  101. package/dist/types/cjs/queries/person.d.cts +13 -41
  102. package/dist/types/cjs/queries/person.d.cts.map +1 -1
  103. package/dist/types/cjs/queries/personCombinedCredits.d.cts +233 -5
  104. package/dist/types/cjs/queries/personCombinedCredits.d.cts.map +1 -1
  105. package/dist/types/cjs/queries/personExternalIds.d.cts +203 -5
  106. package/dist/types/cjs/queries/personExternalIds.d.cts.map +1 -1
  107. package/dist/types/cjs/queries/personMovieCredits.d.cts +231 -5
  108. package/dist/types/cjs/queries/personMovieCredits.d.cts.map +1 -1
  109. package/dist/types/cjs/queries/personProfiles.d.cts +200 -5
  110. package/dist/types/cjs/queries/personProfiles.d.cts.map +1 -1
  111. package/dist/types/cjs/queries/personTranslations.d.cts +201 -19
  112. package/dist/types/cjs/queries/personTranslations.d.cts.map +1 -1
  113. package/dist/types/cjs/queries/personTvCredits.d.cts +232 -5
  114. package/dist/types/cjs/queries/personTvCredits.d.cts.map +1 -1
  115. package/dist/types/cjs/queries/rated.d.cts +6 -8
  116. package/dist/types/cjs/queries/rated.d.cts.map +1 -1
  117. package/dist/types/cjs/queries/review.d.cts +37 -23
  118. package/dist/types/cjs/queries/review.d.cts.map +1 -1
  119. package/dist/types/cjs/queries/search.d.cts +6 -8
  120. package/dist/types/cjs/queries/search.d.cts.map +1 -1
  121. package/dist/types/cjs/queries/season.d.cts +233 -282
  122. package/dist/types/cjs/queries/season.d.cts.map +1 -1
  123. package/dist/types/cjs/queries/seasonCredits.d.cts +152 -32
  124. package/dist/types/cjs/queries/seasonCredits.d.cts.map +1 -1
  125. package/dist/types/cjs/queries/seasonEpisodeCount.d.cts.map +1 -1
  126. package/dist/types/cjs/queries/seasonExternalIds.d.cts +134 -5
  127. package/dist/types/cjs/queries/seasonExternalIds.d.cts.map +1 -1
  128. package/dist/types/cjs/queries/seasonPosters.d.cts +136 -5
  129. package/dist/types/cjs/queries/seasonPosters.d.cts.map +1 -1
  130. package/dist/types/cjs/queries/seasonTranslations.d.cts +137 -19
  131. package/dist/types/cjs/queries/seasonTranslations.d.cts.map +1 -1
  132. package/dist/types/cjs/queries/seasonVideos.d.cts +138 -14
  133. package/dist/types/cjs/queries/seasonVideos.d.cts.map +1 -1
  134. package/dist/types/cjs/queries/trending.d.cts +5 -7
  135. package/dist/types/cjs/queries/trending.d.cts.map +1 -1
  136. package/dist/types/cjs/queries/tv.d.cts +79 -10478
  137. package/dist/types/cjs/queries/tv.d.cts.map +1 -1
  138. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts +1273 -10
  139. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts.map +1 -1
  140. package/dist/types/cjs/queries/tvContentRatings.d.cts +1273 -8
  141. package/dist/types/cjs/queries/tvContentRatings.d.cts.map +1 -1
  142. package/dist/types/cjs/queries/tvCredits.d.cts +1292 -30
  143. package/dist/types/cjs/queries/tvCredits.d.cts.map +1 -1
  144. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts +1280 -37
  145. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts.map +1 -1
  146. package/dist/types/cjs/queries/tvExternalIds.d.cts +1280 -15
  147. package/dist/types/cjs/queries/tvExternalIds.d.cts.map +1 -1
  148. package/dist/types/cjs/queries/tvImages.d.cts +1294 -15
  149. package/dist/types/cjs/queries/tvImages.d.cts.map +1 -1
  150. package/dist/types/cjs/queries/tvKeywords.d.cts +1271 -7
  151. package/dist/types/cjs/queries/tvKeywords.d.cts.map +1 -1
  152. package/dist/types/cjs/queries/tvRecommendations.d.cts +1264 -5365
  153. package/dist/types/cjs/queries/tvRecommendations.d.cts.map +1 -1
  154. package/dist/types/cjs/queries/tvReviews.d.cts +1264 -5365
  155. package/dist/types/cjs/queries/tvReviews.d.cts.map +1 -1
  156. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts +1264 -5365
  157. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts.map +1 -1
  158. package/dist/types/cjs/queries/tvTranslations.d.cts +1280 -18
  159. package/dist/types/cjs/queries/tvTranslations.d.cts.map +1 -1
  160. package/dist/types/cjs/queries/tvVideos.d.cts +1279 -13
  161. package/dist/types/cjs/queries/tvVideos.d.cts.map +1 -1
  162. package/dist/types/cjs/queries/tvWatchProviders.d.cts +2174 -1371
  163. package/dist/types/cjs/queries/tvWatchProviders.d.cts.map +1 -1
  164. package/dist/types/cjs/queries/videoType.d.cts +2 -2
  165. package/dist/types/cjs/queries/videoType.d.cts.map +1 -1
  166. package/dist/types/cjs/types.d.cts +130 -297
  167. package/dist/types/cjs/types.d.cts.map +1 -1
  168. package/dist/types/esm/constants.d.ts +3 -0
  169. package/dist/types/esm/constants.d.ts.map +1 -1
  170. package/dist/types/esm/helpers/buildArgsResolver.d.ts +9 -0
  171. package/dist/types/esm/helpers/buildArgsResolver.d.ts.map +1 -0
  172. package/dist/types/esm/helpers/buildNoObjArgsResolver.d.ts +9 -0
  173. package/dist/types/esm/helpers/buildNoObjArgsResolver.d.ts.map +1 -0
  174. package/dist/types/esm/helpers/buildObjArgsResolver.d.ts +9 -0
  175. package/dist/types/esm/helpers/buildObjArgsResolver.d.ts.map +1 -0
  176. package/dist/types/esm/helpers/buildObjResolver.d.ts +11 -0
  177. package/dist/types/esm/helpers/buildObjResolver.d.ts.map +1 -0
  178. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts +4 -3
  179. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts.map +1 -1
  180. package/dist/types/esm/main.d.ts.map +1 -1
  181. package/dist/types/esm/queries/certifications.d.ts +429 -4
  182. package/dist/types/esm/queries/certifications.d.ts.map +1 -1
  183. package/dist/types/esm/queries/collection.d.ts +61 -3397
  184. package/dist/types/esm/queries/collection.d.ts.map +1 -1
  185. package/dist/types/esm/queries/collectionImages.d.ts +40 -13
  186. package/dist/types/esm/queries/collectionImages.d.ts.map +1 -1
  187. package/dist/types/esm/queries/collectionTranslations.d.ts +34 -17
  188. package/dist/types/esm/queries/collectionTranslations.d.ts.map +1 -1
  189. package/dist/types/esm/queries/company.d.ts +9 -12
  190. package/dist/types/esm/queries/company.d.ts.map +1 -1
  191. package/dist/types/esm/queries/companyAlternativeNames.d.ts +27 -9
  192. package/dist/types/esm/queries/companyAlternativeNames.d.ts.map +1 -1
  193. package/dist/types/esm/queries/companyLogos.d.ts +19 -13
  194. package/dist/types/esm/queries/companyLogos.d.ts.map +1 -1
  195. package/dist/types/esm/queries/configuration.d.ts +11 -14
  196. package/dist/types/esm/queries/configuration.d.ts.map +1 -1
  197. package/dist/types/esm/queries/configurationCountries.d.ts +16 -3
  198. package/dist/types/esm/queries/configurationCountries.d.ts.map +1 -1
  199. package/dist/types/esm/queries/configurationJobs.d.ts +15 -3
  200. package/dist/types/esm/queries/configurationJobs.d.ts.map +1 -1
  201. package/dist/types/esm/queries/configurationLanguages.d.ts +16 -3
  202. package/dist/types/esm/queries/configurationLanguages.d.ts.map +1 -1
  203. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts +12 -3
  204. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts.map +1 -1
  205. package/dist/types/esm/queries/configurationTimezones.d.ts +15 -3
  206. package/dist/types/esm/queries/configurationTimezones.d.ts.map +1 -1
  207. package/dist/types/esm/queries/credit.d.ts +46 -4197
  208. package/dist/types/esm/queries/credit.d.ts.map +1 -1
  209. package/dist/types/esm/queries/discoverMovies.d.ts +2 -4
  210. package/dist/types/esm/queries/discoverMovies.d.ts.map +1 -1
  211. package/dist/types/esm/queries/discoverTv.d.ts +2 -4
  212. package/dist/types/esm/queries/discoverTv.d.ts.map +1 -1
  213. package/dist/types/esm/queries/episode.d.ts +235 -94
  214. package/dist/types/esm/queries/episode.d.ts.map +1 -1
  215. package/dist/types/esm/queries/episodeCredits.d.ts +168 -32
  216. package/dist/types/esm/queries/episodeCredits.d.ts.map +1 -1
  217. package/dist/types/esm/queries/episodeExternalIds.d.ts +139 -15
  218. package/dist/types/esm/queries/episodeExternalIds.d.ts.map +1 -1
  219. package/dist/types/esm/queries/episodeStills.d.ts +140 -5
  220. package/dist/types/esm/queries/episodeStills.d.ts.map +1 -1
  221. package/dist/types/esm/queries/episodeTranslations.d.ts +141 -19
  222. package/dist/types/esm/queries/episodeTranslations.d.ts.map +1 -1
  223. package/dist/types/esm/queries/episodeVideos.d.ts +142 -14
  224. package/dist/types/esm/queries/episodeVideos.d.ts.map +1 -1
  225. package/dist/types/esm/queries/find.d.ts +10 -1801
  226. package/dist/types/esm/queries/find.d.ts.map +1 -1
  227. package/dist/types/esm/queries/genres.d.ts +6 -6
  228. package/dist/types/esm/queries/genres.d.ts.map +1 -1
  229. package/dist/types/esm/queries/keyword.d.ts +2 -5
  230. package/dist/types/esm/queries/keyword.d.ts.map +1 -1
  231. package/dist/types/esm/queries/movie.d.ts +35 -3588
  232. package/dist/types/esm/queries/movie.d.ts.map +1 -1
  233. package/dist/types/esm/queries/movieAlternativeTitles.d.ts +1736 -5
  234. package/dist/types/esm/queries/movieAlternativeTitles.d.ts.map +1 -1
  235. package/dist/types/esm/queries/movieCredits.d.ts +1755 -30
  236. package/dist/types/esm/queries/movieCredits.d.ts.map +1 -1
  237. package/dist/types/esm/queries/movieExternalIds.d.ts +1738 -15
  238. package/dist/types/esm/queries/movieExternalIds.d.ts.map +1 -1
  239. package/dist/types/esm/queries/movieImages.d.ts +1756 -5
  240. package/dist/types/esm/queries/movieImages.d.ts.map +1 -1
  241. package/dist/types/esm/queries/movieKeywords.d.ts +1735 -5
  242. package/dist/types/esm/queries/movieKeywords.d.ts.map +1 -1
  243. package/dist/types/esm/queries/movieRecommendations.d.ts +1728 -1848
  244. package/dist/types/esm/queries/movieRecommendations.d.ts.map +1 -1
  245. package/dist/types/esm/queries/movieReleaseDates.d.ts +1742 -12
  246. package/dist/types/esm/queries/movieReleaseDates.d.ts.map +1 -1
  247. package/dist/types/esm/queries/movieReviews.d.ts +1728 -1848
  248. package/dist/types/esm/queries/movieReviews.d.ts.map +1 -1
  249. package/dist/types/esm/queries/movieSimilarMovies.d.ts +1728 -1848
  250. package/dist/types/esm/queries/movieSimilarMovies.d.ts.map +1 -1
  251. package/dist/types/esm/queries/movieTranslations.d.ts +1744 -19
  252. package/dist/types/esm/queries/movieTranslations.d.ts.map +1 -1
  253. package/dist/types/esm/queries/movieVideos.d.ts +1741 -13
  254. package/dist/types/esm/queries/movieVideos.d.ts.map +1 -1
  255. package/dist/types/esm/queries/movieWatchProviders.d.ts +3205 -1373
  256. package/dist/types/esm/queries/movieWatchProviders.d.ts.map +1 -1
  257. package/dist/types/esm/queries/network.d.ts +14 -23
  258. package/dist/types/esm/queries/network.d.ts.map +1 -1
  259. package/dist/types/esm/queries/networkAlternativeNames.d.ts +11 -9
  260. package/dist/types/esm/queries/networkAlternativeNames.d.ts.map +1 -1
  261. package/dist/types/esm/queries/networkLogos.d.ts +17 -13
  262. package/dist/types/esm/queries/networkLogos.d.ts.map +1 -1
  263. package/dist/types/esm/queries/person.d.ts +13 -41
  264. package/dist/types/esm/queries/person.d.ts.map +1 -1
  265. package/dist/types/esm/queries/personCombinedCredits.d.ts +233 -5
  266. package/dist/types/esm/queries/personCombinedCredits.d.ts.map +1 -1
  267. package/dist/types/esm/queries/personExternalIds.d.ts +203 -5
  268. package/dist/types/esm/queries/personExternalIds.d.ts.map +1 -1
  269. package/dist/types/esm/queries/personMovieCredits.d.ts +231 -5
  270. package/dist/types/esm/queries/personMovieCredits.d.ts.map +1 -1
  271. package/dist/types/esm/queries/personProfiles.d.ts +200 -5
  272. package/dist/types/esm/queries/personProfiles.d.ts.map +1 -1
  273. package/dist/types/esm/queries/personTranslations.d.ts +201 -19
  274. package/dist/types/esm/queries/personTranslations.d.ts.map +1 -1
  275. package/dist/types/esm/queries/personTvCredits.d.ts +232 -5
  276. package/dist/types/esm/queries/personTvCredits.d.ts.map +1 -1
  277. package/dist/types/esm/queries/rated.d.ts +6 -8
  278. package/dist/types/esm/queries/rated.d.ts.map +1 -1
  279. package/dist/types/esm/queries/review.d.ts +37 -23
  280. package/dist/types/esm/queries/review.d.ts.map +1 -1
  281. package/dist/types/esm/queries/search.d.ts +6 -8
  282. package/dist/types/esm/queries/search.d.ts.map +1 -1
  283. package/dist/types/esm/queries/season.d.ts +233 -282
  284. package/dist/types/esm/queries/season.d.ts.map +1 -1
  285. package/dist/types/esm/queries/seasonCredits.d.ts +152 -32
  286. package/dist/types/esm/queries/seasonCredits.d.ts.map +1 -1
  287. package/dist/types/esm/queries/seasonEpisodeCount.d.ts.map +1 -1
  288. package/dist/types/esm/queries/seasonExternalIds.d.ts +134 -5
  289. package/dist/types/esm/queries/seasonExternalIds.d.ts.map +1 -1
  290. package/dist/types/esm/queries/seasonPosters.d.ts +136 -5
  291. package/dist/types/esm/queries/seasonPosters.d.ts.map +1 -1
  292. package/dist/types/esm/queries/seasonTranslations.d.ts +137 -19
  293. package/dist/types/esm/queries/seasonTranslations.d.ts.map +1 -1
  294. package/dist/types/esm/queries/seasonVideos.d.ts +138 -14
  295. package/dist/types/esm/queries/seasonVideos.d.ts.map +1 -1
  296. package/dist/types/esm/queries/trending.d.ts +5 -7
  297. package/dist/types/esm/queries/trending.d.ts.map +1 -1
  298. package/dist/types/esm/queries/tv.d.ts +79 -10478
  299. package/dist/types/esm/queries/tv.d.ts.map +1 -1
  300. package/dist/types/esm/queries/tvAlternativeTitles.d.ts +1273 -10
  301. package/dist/types/esm/queries/tvAlternativeTitles.d.ts.map +1 -1
  302. package/dist/types/esm/queries/tvContentRatings.d.ts +1273 -8
  303. package/dist/types/esm/queries/tvContentRatings.d.ts.map +1 -1
  304. package/dist/types/esm/queries/tvCredits.d.ts +1292 -30
  305. package/dist/types/esm/queries/tvCredits.d.ts.map +1 -1
  306. package/dist/types/esm/queries/tvEpisodeGroups.d.ts +1280 -37
  307. package/dist/types/esm/queries/tvEpisodeGroups.d.ts.map +1 -1
  308. package/dist/types/esm/queries/tvExternalIds.d.ts +1280 -15
  309. package/dist/types/esm/queries/tvExternalIds.d.ts.map +1 -1
  310. package/dist/types/esm/queries/tvImages.d.ts +1294 -15
  311. package/dist/types/esm/queries/tvImages.d.ts.map +1 -1
  312. package/dist/types/esm/queries/tvKeywords.d.ts +1271 -7
  313. package/dist/types/esm/queries/tvKeywords.d.ts.map +1 -1
  314. package/dist/types/esm/queries/tvRecommendations.d.ts +1264 -5365
  315. package/dist/types/esm/queries/tvRecommendations.d.ts.map +1 -1
  316. package/dist/types/esm/queries/tvReviews.d.ts +1264 -5365
  317. package/dist/types/esm/queries/tvReviews.d.ts.map +1 -1
  318. package/dist/types/esm/queries/tvSimilarTvShows.d.ts +1264 -5365
  319. package/dist/types/esm/queries/tvSimilarTvShows.d.ts.map +1 -1
  320. package/dist/types/esm/queries/tvTranslations.d.ts +1280 -18
  321. package/dist/types/esm/queries/tvTranslations.d.ts.map +1 -1
  322. package/dist/types/esm/queries/tvVideos.d.ts +1279 -13
  323. package/dist/types/esm/queries/tvVideos.d.ts.map +1 -1
  324. package/dist/types/esm/queries/tvWatchProviders.d.ts +2174 -1371
  325. package/dist/types/esm/queries/tvWatchProviders.d.ts.map +1 -1
  326. package/dist/types/esm/queries/videoType.d.ts +2 -2
  327. package/dist/types/esm/queries/videoType.d.ts.map +1 -1
  328. package/dist/types/esm/types.d.ts +130 -297
  329. package/dist/types/esm/types.d.ts.map +1 -1
  330. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  331. package/package.json +12 -11
  332. package/src/__testUtils__/helpers/createMockLogger.ts +10 -0
  333. package/src/constants.ts +3 -0
  334. package/src/helpers/__snapshots__/typePropNames.test.ts.snap +0 -2
  335. package/src/helpers/buildArgsResolver.ts +37 -0
  336. package/src/helpers/buildNoObjArgsResolver.ts +36 -0
  337. package/src/helpers/buildObjArgsResolver.ts +43 -0
  338. package/src/helpers/buildObjResolver.ts +48 -0
  339. package/src/helpers/getTvIdSeasonAndEpisode.ts +12 -8
  340. package/src/main.ts +5 -11
  341. package/src/queries/__snapshots__/episode.test.ts.snap +1 -2
  342. package/src/queries/__snapshots__/season.test.ts.snap +1 -2
  343. package/src/queries/certifications.test.ts +13 -20
  344. package/src/queries/certifications.ts +21 -24
  345. package/src/queries/collection.test.ts +13 -16
  346. package/src/queries/collection.ts +20 -23
  347. package/src/queries/collectionImages.test.ts +16 -24
  348. package/src/queries/collectionImages.ts +16 -19
  349. package/src/queries/collectionTranslations.test.ts +29 -17
  350. package/src/queries/collectionTranslations.ts +19 -23
  351. package/src/queries/company.test.ts +13 -16
  352. package/src/queries/company.ts +20 -23
  353. package/src/queries/companyAlternativeNames.test.ts +34 -19
  354. package/src/queries/companyAlternativeNames.ts +19 -23
  355. package/src/queries/companyLogos.test.ts +29 -19
  356. package/src/queries/companyLogos.ts +13 -21
  357. package/src/queries/configuration.test.ts +12 -16
  358. package/src/queries/configuration.ts +11 -15
  359. package/src/queries/configurationCountries.test.ts +27 -17
  360. package/src/queries/configurationCountries.ts +19 -23
  361. package/src/queries/configurationJobs.test.ts +27 -17
  362. package/src/queries/configurationJobs.ts +19 -23
  363. package/src/queries/configurationLanguages.test.ts +27 -17
  364. package/src/queries/configurationLanguages.ts +19 -23
  365. package/src/queries/configurationPrimaryTranslations.test.ts +26 -17
  366. package/src/queries/configurationPrimaryTranslations.ts +14 -18
  367. package/src/queries/configurationTimezones.test.ts +27 -17
  368. package/src/queries/configurationTimezones.ts +19 -23
  369. package/src/queries/credit.test.ts +13 -16
  370. package/src/queries/credit.ts +12 -15
  371. package/src/queries/discoverMovies.test.ts +35 -81
  372. package/src/queries/discoverMovies.ts +21 -20
  373. package/src/queries/discoverTv.test.ts +29 -43
  374. package/src/queries/discoverTv.ts +16 -21
  375. package/src/queries/episode.test.ts +16 -17
  376. package/src/queries/episode.ts +36 -36
  377. package/src/queries/episodeCredits.test.ts +35 -67
  378. package/src/queries/episodeCredits.ts +29 -22
  379. package/src/queries/episodeExternalIds.test.ts +27 -39
  380. package/src/queries/episodeExternalIds.ts +35 -23
  381. package/src/queries/episodeStills.test.ts +28 -41
  382. package/src/queries/episodeStills.ts +32 -22
  383. package/src/queries/episodeTranslations.test.ts +26 -34
  384. package/src/queries/episodeTranslations.ts +29 -22
  385. package/src/queries/episodeVideos.test.ts +28 -41
  386. package/src/queries/episodeVideos.ts +29 -22
  387. package/src/queries/find.test.ts +13 -16
  388. package/src/queries/find.ts +25 -22
  389. package/src/queries/genres.test.ts +13 -22
  390. package/src/queries/genres.ts +13 -19
  391. package/src/queries/keyword.test.ts +13 -16
  392. package/src/queries/keyword.ts +12 -15
  393. package/src/queries/movie.test.ts +16 -20
  394. package/src/queries/movie.ts +20 -21
  395. package/src/queries/movieAlternativeTitles.test.ts +24 -30
  396. package/src/queries/movieAlternativeTitles.ts +34 -22
  397. package/src/queries/movieCredits.test.ts +27 -45
  398. package/src/queries/movieCredits.ts +24 -21
  399. package/src/queries/movieExternalIds.test.ts +22 -29
  400. package/src/queries/movieExternalIds.ts +26 -21
  401. package/src/queries/movieImages.test.ts +28 -46
  402. package/src/queries/movieImages.ts +26 -23
  403. package/src/queries/movieKeywords.test.ts +21 -26
  404. package/src/queries/movieKeywords.ts +24 -21
  405. package/src/queries/movieRecommendations.test.ts +27 -49
  406. package/src/queries/movieRecommendations.ts +27 -23
  407. package/src/queries/movieReleaseDates.test.ts +24 -28
  408. package/src/queries/movieReleaseDates.ts +25 -21
  409. package/src/queries/movieReviews.test.ts +32 -36
  410. package/src/queries/movieReviews.ts +28 -23
  411. package/src/queries/movieSimilarMovies.test.ts +25 -47
  412. package/src/queries/movieSimilarMovies.ts +28 -24
  413. package/src/queries/movieTranslations.test.ts +20 -25
  414. package/src/queries/movieTranslations.ts +24 -21
  415. package/src/queries/movieVideos.test.ts +22 -29
  416. package/src/queries/movieVideos.ts +24 -21
  417. package/src/queries/movieWatchProviders.test.ts +19 -27
  418. package/src/queries/movieWatchProviders.ts +26 -23
  419. package/src/queries/network.test.ts +13 -16
  420. package/src/queries/network.ts +20 -23
  421. package/src/queries/networkAlternativeNames.test.ts +16 -18
  422. package/src/queries/networkAlternativeNames.ts +19 -23
  423. package/src/queries/networkLogos.test.ts +14 -15
  424. package/src/queries/networkLogos.ts +13 -20
  425. package/src/queries/person.test.ts +16 -20
  426. package/src/queries/person.ts +20 -21
  427. package/src/queries/personCombinedCredits.test.ts +26 -26
  428. package/src/queries/personCombinedCredits.ts +27 -21
  429. package/src/queries/personExternalIds.test.ts +26 -26
  430. package/src/queries/personExternalIds.ts +27 -21
  431. package/src/queries/personMovieCredits.test.ts +26 -26
  432. package/src/queries/personMovieCredits.ts +27 -21
  433. package/src/queries/personProfiles.test.ts +22 -26
  434. package/src/queries/personProfiles.ts +25 -22
  435. package/src/queries/personTranslations.test.ts +22 -25
  436. package/src/queries/personTranslations.ts +24 -21
  437. package/src/queries/personTvCredits.test.ts +28 -28
  438. package/src/queries/personTvCredits.ts +26 -21
  439. package/src/queries/rated.test.ts +33 -69
  440. package/src/queries/rated.ts +31 -20
  441. package/src/queries/review.test.ts +13 -16
  442. package/src/queries/review.ts +27 -31
  443. package/src/queries/search.test.ts +53 -107
  444. package/src/queries/search.ts +42 -20
  445. package/src/queries/season.test.ts +16 -17
  446. package/src/queries/season.ts +34 -44
  447. package/src/queries/seasonCredits.test.ts +36 -45
  448. package/src/queries/seasonCredits.ts +27 -23
  449. package/src/queries/seasonEpisodeCount.ts +0 -4
  450. package/src/queries/seasonExternalIds.test.ts +25 -28
  451. package/src/queries/seasonExternalIds.ts +32 -22
  452. package/src/queries/seasonPosters.test.ts +25 -30
  453. package/src/queries/seasonPosters.ts +25 -22
  454. package/src/queries/seasonTranslations.test.ts +21 -27
  455. package/src/queries/seasonTranslations.ts +29 -22
  456. package/src/queries/seasonVideos.test.ts +23 -28
  457. package/src/queries/seasonVideos.ts +25 -22
  458. package/src/queries/trending.test.ts +28 -60
  459. package/src/queries/trending.ts +42 -20
  460. package/src/queries/tv.test.ts +16 -20
  461. package/src/queries/tv.ts +26 -34
  462. package/src/queries/tvAlternativeTitles.test.ts +25 -28
  463. package/src/queries/tvAlternativeTitles.ts +25 -22
  464. package/src/queries/tvContentRatings.test.ts +25 -28
  465. package/src/queries/tvContentRatings.ts +24 -22
  466. package/src/queries/tvCredits.test.ts +38 -44
  467. package/src/queries/tvCredits.ts +24 -21
  468. package/src/queries/tvEpisodeGroups.test.ts +25 -28
  469. package/src/queries/tvEpisodeGroups.ts +24 -21
  470. package/src/queries/tvExternalIds.test.ts +25 -28
  471. package/src/queries/tvExternalIds.ts +26 -21
  472. package/src/queries/tvImages.test.ts +36 -46
  473. package/src/queries/tvImages.ts +26 -23
  474. package/src/queries/tvKeywords.test.ts +24 -28
  475. package/src/queries/tvKeywords.ts +24 -21
  476. package/src/queries/tvRecommendations.test.ts +29 -49
  477. package/src/queries/tvRecommendations.ts +28 -22
  478. package/src/queries/tvReviews.test.ts +37 -48
  479. package/src/queries/tvReviews.ts +27 -23
  480. package/src/queries/tvSimilarTvShows.test.ts +37 -48
  481. package/src/queries/tvSimilarTvShows.ts +28 -24
  482. package/src/queries/tvTranslations.test.ts +24 -28
  483. package/src/queries/tvTranslations.ts +24 -21
  484. package/src/queries/tvVideos.test.ts +24 -28
  485. package/src/queries/tvVideos.ts +24 -21
  486. package/src/queries/tvWatchProviders.test.ts +24 -28
  487. package/src/queries/tvWatchProviders.ts +26 -23
  488. package/src/queries/videoType.ts +2 -2
  489. package/src/types.ts +226 -391
@@ -9,6 +9,7 @@ import { mockFetch } from 'fetch-mocked';
9
9
  import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
10
10
  import { type GraphQLResolveInfo, OperationTypeNode, parse } from 'graphql';
11
11
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
12
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
12
13
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
13
14
  import { EPISODE } from '../constants.ts';
14
15
  import { encodeId } from '../helpers/encodeId.ts';
@@ -18,13 +19,14 @@ import { resolveEpisode } from './episode.ts';
18
19
  const mockedFetch = mockFetch(jest.fn);
19
20
 
20
21
  describe('resolveEpisode >', () => {
21
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
22
- const setCacheMetadata = jest.fn();
23
22
  const id = 1399;
24
23
 
25
- beforeAll(() => {
26
- restClient = createRestClient();
27
- });
24
+ const context = {
25
+ logger: createMockLogger(jest.fn),
26
+ restClient: createRestClient(),
27
+ setCacheMetadata: jest.fn(),
28
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
29
+ } as unknown as Context;
28
30
 
29
31
  beforeEach(() => {
30
32
  mockedFetch.mockGetOnce(buildEndpoint(EPISODE_PATH, { episodeNumber: 1, id, seasonNumber: 1 }), {
@@ -34,26 +36,24 @@ describe('resolveEpisode >', () => {
34
36
 
35
37
  afterEach(async () => {
36
38
  mockedFetch.mockReset();
37
- await restClient.cache?.clear();
39
+ await context.restClient.cache?.clear();
40
+ jest.clearAllMocks();
38
41
  });
39
42
 
40
43
  it('should return the correct episode details', async () => {
41
44
  const operationDefinition = getOperationDefinitions(parse(episodeDetailsQuery()), OperationTypeNode.QUERY)[0]!;
42
45
  const { fieldNode } = getChildFields(operationDefinition, { name: EPISODE })![0]!;
46
+ const info = { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo;
43
47
 
44
48
  await expect(
45
- resolveEpisode(
46
- undefined,
47
- { episodeLookupId: encodeId({ episodeNumber: 1, id, seasonNumber: 1 }) },
48
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
49
- { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo
50
- )
49
+ resolveEpisode(undefined, { id: encodeId({ episodeNumber: 1, id, seasonNumber: 1 }) }, context, info)
51
50
  ).resolves.toMatchSnapshot();
52
51
  });
53
52
 
54
53
  it('should request the correct resources when append to response fields are found', async () => {
55
54
  const operationDefinition = getOperationDefinitions(parse(episodeDetailsLgQuery()), OperationTypeNode.QUERY)[0]!;
56
55
  const { fieldNode } = getChildFields(operationDefinition, { name: EPISODE })![0]!;
56
+ const info = { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo;
57
57
 
58
58
  const episodeFetchMock = jest
59
59
  .fn<(...args: PlainArray) => Promise<FetchResponse>>()
@@ -61,13 +61,12 @@ describe('resolveEpisode >', () => {
61
61
 
62
62
  await resolveEpisode(
63
63
  undefined,
64
- { episodeLookupId: encodeId({ episodeNumber: 1, id, seasonNumber: 1 }) },
64
+ { id: encodeId({ episodeNumber: 1, id, seasonNumber: 1 }) },
65
65
  {
66
+ ...context,
66
67
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
67
- setCacheMetadata,
68
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
69
- } as unknown as Context,
70
- { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo
68
+ },
69
+ info
71
70
  );
72
71
 
73
72
  expect(episodeFetchMock.mock.calls[0]![0]).toEqual(
@@ -1,11 +1,11 @@
1
1
  import { type QueryEpisodeArgs } from '@tmdb-graphql-api/schema/types';
2
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
3
2
  import { isUndefined, snakeCase } from 'lodash-es';
4
- import { CREDITS, EPISODE, EXTERNAL_IDS, IMAGES, SEASON, TRANSLATIONS, TV, VIDEOS } from '../constants.ts';
3
+ import { CREDITS, EPISODE, EXTERNAL_IDS, IMAGES, TRANSLATIONS, VIDEOS } from '../constants.ts';
4
+ import { buildObjArgsResolver } from '../helpers/buildObjArgsResolver.ts';
5
5
  import { encodeId } from '../helpers/encodeId.ts';
6
6
  import { getAppendToResponseKeys } from '../helpers/getAppendToResponseKeys.ts';
7
7
  import { getTvIdSeasonAndEpisode } from '../helpers/getTvIdSeasonAndEpisode.ts';
8
- import { type Context, type RawEpisode, type RawEpisodeWithAppendToResponse } from '../types.ts';
8
+ import { type EnrichedRawEpisode, type EnrichedRawEpisodeWithAppendToResponse, type RawEpisode } from '../types.ts';
9
9
 
10
10
  const appendToResponse = {
11
11
  [EXTERNAL_IDS]: snakeCase(EXTERNAL_IDS),
@@ -17,26 +17,32 @@ const appendToResponse = {
17
17
  stills: IMAGES,
18
18
  };
19
19
 
20
- export const resolveEpisode = async (
21
- obj: RawEpisode | undefined,
22
- args: QueryEpisodeArgs,
23
- { fragmentDefinitions, requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
24
- { fieldName, fieldNodes }: GraphQLResolveInfo
25
- ) => {
20
+ export const resolveEpisode = buildObjArgsResolver<
21
+ EnrichedRawEpisode,
22
+ QueryEpisodeArgs,
23
+ | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers })
24
+ | EnrichedRawEpisodeWithAppendToResponse[keyof EnrichedRawEpisodeWithAppendToResponse]
25
+ >(EPISODE, async (obj, args, ctx, info) => {
26
+ const { fragmentDefinitions, requestID, restClient, tmdbGuestSessionId } = ctx;
27
+ const { fieldName, fieldNodes } = info;
26
28
  const typedFieldName = snakeCase(fieldName) as keyof RawEpisode;
27
- const { episodeNumber, seasonNumber, tvId } = getTvIdSeasonAndEpisode(obj, args.episodeLookupId);
29
+ const { episodeNumber, id, seasonNumber } = getTvIdSeasonAndEpisode(obj, args);
28
30
 
29
31
  if (obj && !isUndefined(obj[typedFieldName])) {
30
- return typedFieldName === 'episode_lookup_id'
31
- ? encodeId({ seasonNumber, tvId, ...(episodeNumber ? { episodeNumber } : {}) })
32
- : obj[typedFieldName];
32
+ return {
33
+ data:
34
+ typedFieldName === 'id'
35
+ ? encodeId({ id, seasonNumber, ...(episodeNumber ? { episodeNumber } : {}) })
36
+ : obj[typedFieldName],
37
+ source: 'parentNode',
38
+ };
33
39
  }
34
40
 
35
41
  const appendToResponseKeys = getAppendToResponseKeys(fieldNodes[0]!, appendToResponse, fragmentDefinitions);
36
42
 
37
- const { data, errors, headers } = await restClient.episode<RawEpisodeWithAppendToResponse>(
43
+ const { data, errors, headers } = await restClient.episode<EnrichedRawEpisodeWithAppendToResponse>(
38
44
  {
39
- pathTemplateData: { episodeNumber, id: tvId, seasonNumber },
45
+ pathTemplateData: { episodeNumber, id, seasonNumber },
40
46
  ...(appendToResponseKeys.length > 0
41
47
  ? {
42
48
  queryParams: {
@@ -48,25 +54,19 @@ export const resolveEpisode = async (
48
54
  { requestID, tmdbGuestSessionId }
49
55
  );
50
56
 
51
- if (errors?.length) {
52
- throw new GraphQLError(
53
- `Failed to resolve ${TV} show ${tvId} ${SEASON} ${seasonNumber} ${EPISODE} ${episodeNumber!}.`,
54
- { nodes: fieldNodes, originalError: errors[0] }
55
- );
56
- }
57
-
58
- const rawEpisode = data!;
59
- rawEpisode.episode_lookup_id = encodeId({ seasonNumber, tvId, ...(episodeNumber ? { episodeNumber } : {}) });
60
-
61
- if (!rawEpisode.tv_show_id) {
62
- rawEpisode.tv_show_id = tvId;
63
- }
57
+ const episodeData = {
58
+ ...data,
59
+ id: encodeId({ id, seasonNumber, ...(episodeNumber ? { episodeNumber } : {}) }),
60
+ tv_show_id: Number(id),
61
+ };
64
62
 
65
- if (obj) {
66
- setCacheMetadata(`${EPISODE}.${fieldName}`, headers);
67
- return rawEpisode[typedFieldName];
68
- }
69
-
70
- setCacheMetadata(EPISODE, headers);
71
- return appendToResponseKeys.length > 0 ? { ...rawEpisode, __headers: headers } : rawEpisode;
72
- };
63
+ return {
64
+ data: obj
65
+ ? episodeData[typedFieldName]
66
+ : appendToResponseKeys.length > 0
67
+ ? { ...episodeData, __headers: headers }
68
+ : episodeData,
69
+ errors,
70
+ headers,
71
+ };
72
+ });
@@ -7,89 +7,59 @@ import { mockFetch } from 'fetch-mocked';
7
7
  import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
8
8
  import { type GraphQLResolveInfo } from 'graphql';
9
9
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
10
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
10
11
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
11
- import { encodeId } from '../helpers/encodeId.ts';
12
- import { type Context, type RawEpisode } from '../types.ts';
12
+ import { CAST, CREDITS, CREW, GUEST_STARS } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
13
14
  import { resolveEpisodeCredits } from './episodeCredits.ts';
14
15
 
15
16
  const mockedFetch = mockFetch(jest.fn);
16
17
 
17
- const episodeDetailsWithLookupId: RawEpisode = {
18
- ...episodeDetails,
19
- episode_lookup_id: encodeId({
20
- episodeNumber: episodeDetails.episode_number,
21
- seasonNumber: episodeDetails.season_number,
22
- tvId: episodeDetails.tv_show_id,
23
- }),
24
- };
25
-
26
18
  describe('resolveEpisodeCredits >', () => {
27
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
28
- const setCacheMetadata = jest.fn();
29
19
  const tvShowId = 1399;
30
20
  const seasonNumber = 1;
31
21
  const episodeNumber = 1;
32
22
 
33
- beforeAll(() => {
34
- restClient = createRestClient();
35
- });
23
+ const context = {
24
+ logger: createMockLogger(jest.fn),
25
+ restClient: createRestClient(),
26
+ setCacheMetadata: jest.fn(),
27
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
28
+ } as unknown as Context;
36
29
 
37
30
  beforeEach(() => {
38
- mockedFetch.mockGetOnce(
39
- buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: 'credits' }),
40
- {
41
- body: episodeCredits,
42
- }
43
- );
31
+ mockedFetch.mockGetOnce(buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: CREDITS }), {
32
+ body: episodeCredits,
33
+ });
44
34
  });
45
35
 
46
36
  afterEach(async () => {
47
37
  mockedFetch.mockReset();
48
- await restClient.cache?.clear();
38
+ await context.restClient.cache?.clear();
39
+ jest.clearAllMocks();
49
40
  });
50
41
 
51
42
  describe('when fieldName is cast', () => {
52
43
  it('should return the correct response', async () => {
53
- await expect(
54
- resolveEpisodeCredits(
55
- episodeDetailsWithLookupId,
56
- undefined,
57
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
58
- {
59
- fieldName: 'cast',
60
- } as GraphQLResolveInfo
61
- )
62
- ).resolves.toMatchSnapshot();
44
+ const info = { fieldName: CAST } as GraphQLResolveInfo;
45
+ // @ts-expect-error arg is slightly modified version of episode details
46
+ await expect(resolveEpisodeCredits(episodeDetails, undefined, context, info)).resolves.toMatchSnapshot();
63
47
  });
64
48
  });
65
49
 
66
50
  describe('when fieldName is crew', () => {
67
51
  it('should return the correct response', async () => {
68
- await expect(
69
- resolveEpisodeCredits(
70
- episodeDetailsWithLookupId,
71
- undefined,
72
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
73
- {
74
- fieldName: 'crew',
75
- } as GraphQLResolveInfo
76
- )
77
- ).resolves.toMatchSnapshot();
52
+ const info = { fieldName: CREW } as GraphQLResolveInfo;
53
+ // @ts-expect-error arg is slightly modified version of episode details
54
+ await expect(resolveEpisodeCredits(episodeDetails, undefined, context, info)).resolves.toMatchSnapshot();
78
55
  });
79
56
  });
80
57
 
81
58
  describe('when fieldName is guestStars', () => {
82
59
  it('should return the correct response', async () => {
83
- await expect(
84
- resolveEpisodeCredits(
85
- episodeDetailsWithLookupId,
86
- undefined,
87
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
88
- {
89
- fieldName: 'guestStars',
90
- } as GraphQLResolveInfo
91
- )
92
- ).resolves.toMatchSnapshot();
60
+ const info = { fieldName: GUEST_STARS } as GraphQLResolveInfo;
61
+ // @ts-expect-error arg is slightly modified version of episode details
62
+ await expect(resolveEpisodeCredits(episodeDetails, undefined, context, info)).resolves.toMatchSnapshot();
93
63
  });
94
64
  });
95
65
 
@@ -100,19 +70,18 @@ describe('resolveEpisodeCredits >', () => {
100
70
  .mockResolvedValue({ data: {} } as FetchResponse);
101
71
 
102
72
  const { id, ...rest } = episodeCredits;
73
+ const info = { fieldName: GUEST_STARS } as GraphQLResolveInfo;
103
74
 
104
75
  await expect(
105
76
  resolveEpisodeCredits(
106
- { ...episodeDetailsWithLookupId, __headers: new Headers(), credits: rest },
77
+ // @ts-expect-error arg is slightly modified version of credits
78
+ { ...episodeDetails, __headers: new Headers(), credits: rest },
107
79
  undefined,
108
80
  {
81
+ ...context,
109
82
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
110
- setCacheMetadata,
111
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
112
- } as unknown as Context,
113
- {
114
- fieldName: 'guestStars',
115
- } as GraphQLResolveInfo
83
+ },
84
+ info
116
85
  )
117
86
  ).resolves.toMatchSnapshot();
118
87
  });
@@ -123,18 +92,17 @@ describe('resolveEpisodeCredits >', () => {
123
92
  .mockResolvedValue({ data: {} } as FetchResponse);
124
93
 
125
94
  const { id, ...rest } = episodeCredits;
95
+ const info = { fieldName: GUEST_STARS } as GraphQLResolveInfo;
126
96
 
127
97
  await resolveEpisodeCredits(
128
- { ...episodeDetailsWithLookupId, __headers: new Headers(), credits: rest },
98
+ // @ts-expect-error arg is slightly modified version of credits
99
+ { ...episodeDetails, __headers: new Headers(), credits: rest },
129
100
  undefined,
130
101
  {
102
+ ...context,
131
103
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
132
- setCacheMetadata,
133
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
134
- } as unknown as Context,
135
- {
136
- fieldName: 'guestStars',
137
- } as GraphQLResolveInfo
104
+ },
105
+ info
138
106
  );
139
107
 
140
108
  expect(episodeFetchMock).not.toHaveBeenCalled();
@@ -1,19 +1,30 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
1
  import { snakeCase } from 'lodash-es';
3
- import { CREDITS, EPISODE, SEASON, TV } from '../constants.ts';
4
- import { type Context, type RawEpisodeCredits, type RawEpisodeWithAppendToResponse } from '../types.ts';
2
+ import { CREDITS, EPISODE } from '../constants.ts';
3
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
4
+ import {
5
+ type EnrichedRawEpisode,
6
+ type EnrichedRawEpisodeWithAppendToResponse,
7
+ type RawEpisodeCredits,
8
+ } from '../types.ts';
5
9
 
6
- export const resolveEpisodeCredits = async (
7
- obj: RawEpisodeWithAppendToResponse & { __headers?: Headers },
8
- _args: undefined,
9
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
10
- { fieldName, fieldNodes }: GraphQLResolveInfo
11
- ) => {
10
+ const isEnrichedRawEpisodeWithCredits = (
11
+ obj: EnrichedRawEpisode | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers })
12
+ ): obj is EnrichedRawEpisodeWithAppendToResponse & { __headers: Headers } => CREDITS in obj && '__headers' in obj;
13
+
14
+ export const resolveEpisodeCredits = buildObjResolver<
15
+ EnrichedRawEpisode | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers }),
16
+ RawEpisodeCredits['cast'] | RawEpisodeCredits['crew'] | RawEpisodeCredits['guest_stars']
17
+ >(EPISODE, async (obj, ctx, info) => {
18
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
19
+ const { fieldName } = info;
12
20
  const typedFieldName = snakeCase(fieldName) as 'cast' | 'crew' | 'guest_stars';
13
21
 
14
- if (obj.credits && obj.__headers) {
15
- setCacheMetadata(`${EPISODE}.${fieldName}`, obj.__headers);
16
- return obj.credits[typedFieldName];
22
+ if (isEnrichedRawEpisodeWithCredits(obj)) {
23
+ return {
24
+ data: obj.credits?.[typedFieldName],
25
+ headers: obj.__headers,
26
+ source: 'parentNode',
27
+ };
17
28
  }
18
29
 
19
30
  const { data, errors, headers } = await restClient.episode<RawEpisodeCredits>(
@@ -28,13 +39,9 @@ export const resolveEpisodeCredits = async (
28
39
  { requestID, tmdbGuestSessionId }
29
40
  );
30
41
 
31
- if (errors?.length) {
32
- throw new GraphQLError(
33
- `Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${fieldName}.`,
34
- { nodes: fieldNodes, originalError: errors[0] }
35
- );
36
- }
37
-
38
- setCacheMetadata(`${EPISODE}.${fieldName}`, headers);
39
- return data![typedFieldName];
40
- };
42
+ return {
43
+ data: data?.[typedFieldName],
44
+ errors,
45
+ headers,
46
+ };
47
+ });
@@ -6,37 +6,33 @@ import seasonExternalIds from '@tmdb-graphql-api/test-utils/responses/themoviedb
6
6
  import { mockFetch } from 'fetch-mocked';
7
7
  import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
8
8
  import { type GraphQLResolveInfo } from 'graphql';
9
+ import { snakeCase } from 'lodash-es';
9
10
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
11
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
10
12
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
11
- import { encodeId } from '../helpers/encodeId.ts';
12
- import { type Context, type RawEpisode, type RawEpisodeWithAppendToResponse } from '../types.ts';
13
+ import { EXTERNAL_IDS } from '../constants.ts';
14
+ import { type Context, type EnrichedRawEpisodeWithAppendToResponse } from '../types.ts';
13
15
  import { resolveEpisodeExternalIds } from './episodeExternalIds.ts';
14
16
 
15
17
  const mockedFetch = mockFetch(jest.fn);
16
18
 
17
- const episodeDetailsWithLookupId: RawEpisode = {
18
- ...episodeDetails,
19
- episode_lookup_id: encodeId({
20
- episodeNumber: episodeDetails.episode_number,
21
- seasonNumber: episodeDetails.season_number,
22
- tvId: episodeDetails.tv_show_id,
23
- }),
24
- };
25
-
26
19
  describe('resolveEpisodeExternalIds >', () => {
27
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
28
- const setCacheMetadata = jest.fn();
29
20
  const tvShowId = 1399;
30
21
  const seasonNumber = 1;
31
22
  const episodeNumber = 1;
32
23
 
33
- beforeAll(() => {
34
- restClient = createRestClient();
35
- });
24
+ const context = {
25
+ logger: createMockLogger(jest.fn),
26
+ restClient: createRestClient(),
27
+ setCacheMetadata: jest.fn(),
28
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
29
+ } as unknown as Context;
30
+
31
+ const info = { fieldName: EXTERNAL_IDS } as GraphQLResolveInfo;
36
32
 
37
33
  beforeEach(() => {
38
34
  mockedFetch.mockGetOnce(
39
- buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: 'external_ids' }),
35
+ buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: snakeCase(EXTERNAL_IDS) }),
40
36
  {
41
37
  body: seasonExternalIds,
42
38
  }
@@ -45,17 +41,14 @@ describe('resolveEpisodeExternalIds >', () => {
45
41
 
46
42
  afterEach(async () => {
47
43
  mockedFetch.mockReset();
48
- await restClient.cache?.clear();
44
+ await context.restClient.cache?.clear();
45
+ jest.clearAllMocks();
49
46
  });
50
47
 
51
48
  it('should return the episode external IDs', async () => {
52
49
  await expect(
53
- resolveEpisodeExternalIds(
54
- episodeDetailsWithLookupId,
55
- undefined,
56
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
57
- {} as GraphQLResolveInfo
58
- )
50
+ // @ts-expect-error arg is slightly modified version of episode details
51
+ resolveEpisodeExternalIds(episodeDetails, undefined, context, info)
59
52
  ).resolves.toMatchSnapshot();
60
53
  });
61
54
 
@@ -69,18 +62,14 @@ describe('resolveEpisodeExternalIds >', () => {
69
62
 
70
63
  await expect(
71
64
  resolveEpisodeExternalIds(
72
- {
73
- ...episodeDetailsWithLookupId,
74
- __headers: new Headers(),
75
- external_ids: rest,
76
- } as unknown as RawEpisodeWithAppendToResponse,
65
+ // @ts-expect-error arg is slightly modified version of episode details
66
+ { ...episodeDetails, __headers: new Headers(), external_ids: rest },
77
67
  undefined,
78
68
  {
69
+ ...context,
79
70
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
80
- setCacheMetadata,
81
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
82
- } as unknown as Context,
83
- {} as GraphQLResolveInfo
71
+ },
72
+ info
84
73
  )
85
74
  ).resolves.toMatchSnapshot();
86
75
  });
@@ -94,17 +83,16 @@ describe('resolveEpisodeExternalIds >', () => {
94
83
 
95
84
  await resolveEpisodeExternalIds(
96
85
  {
97
- ...episodeDetailsWithLookupId,
86
+ ...episodeDetails,
98
87
  __headers: new Headers(),
99
88
  external_ids: rest,
100
- } as unknown as RawEpisodeWithAppendToResponse,
89
+ } as unknown as EnrichedRawEpisodeWithAppendToResponse,
101
90
  undefined,
102
91
  {
92
+ ...context,
103
93
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
104
- setCacheMetadata,
105
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
106
- } as unknown as Context,
107
- {} as GraphQLResolveInfo
94
+ },
95
+ info
108
96
  );
109
97
 
110
98
  expect(episodeFetchMock).not.toHaveBeenCalled();
@@ -1,17 +1,32 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
1
  import { snakeCase } from 'lodash-es';
3
- import { EPISODE, EXTERNAL_IDS, SEASON, TV } from '../constants.ts';
4
- import { type Context, type RawEpisodeExternalIds, type RawEpisodeWithAppendToResponse } from '../types.ts';
2
+ import type { Except } from 'type-fest';
3
+ import { EPISODE, EXTERNAL_IDS } from '../constants.ts';
4
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
5
+ import {
6
+ type EnrichedRawEpisode,
7
+ type EnrichedRawEpisodeWithAppendToResponse,
8
+ type RawEpisodeExternalIds,
9
+ } from '../types.ts';
5
10
 
6
- export const resolveEpisodeExternalIds = async (
7
- obj: RawEpisodeWithAppendToResponse & { __headers?: Headers },
8
- _args: undefined,
9
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
10
- { fieldNodes }: GraphQLResolveInfo
11
- ) => {
12
- if (obj.external_ids && obj.__headers) {
13
- setCacheMetadata(`${EPISODE}.${EXTERNAL_IDS}`, obj.__headers);
14
- return obj.external_ids;
11
+ const isEnrichedRawEpisodeWithExternalIds = (
12
+ obj: EnrichedRawEpisode | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers })
13
+ ): obj is EnrichedRawEpisodeWithAppendToResponse & { __headers: Headers } =>
14
+ snakeCase(EXTERNAL_IDS) in obj && '__headers' in obj;
15
+
16
+ export const resolveEpisodeExternalIds = buildObjResolver<
17
+ EnrichedRawEpisode | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers }),
18
+ Except<RawEpisodeExternalIds, 'id'>
19
+ >(EPISODE, async (obj, ctx, info) => {
20
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
21
+ const { fieldName } = info;
22
+ const typedFieldName = snakeCase(fieldName) as 'external_ids';
23
+
24
+ if (isEnrichedRawEpisodeWithExternalIds(obj)) {
25
+ return {
26
+ data: obj[typedFieldName],
27
+ headers: obj.__headers,
28
+ source: 'parentNode',
29
+ };
15
30
  }
16
31
 
17
32
  const { data, errors, headers } = await restClient.episode<RawEpisodeExternalIds>(
@@ -20,20 +35,17 @@ export const resolveEpisodeExternalIds = async (
20
35
  episodeNumber: obj.episode_number,
21
36
  id: obj.tv_show_id,
22
37
  seasonNumber: obj.season_number,
23
- type: snakeCase(EXTERNAL_IDS),
38
+ type: typedFieldName,
24
39
  },
25
40
  },
26
41
  { requestID, tmdbGuestSessionId }
27
42
  );
28
43
 
29
- if (errors?.length) {
30
- throw new GraphQLError(
31
- `Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${EXTERNAL_IDS}.`,
32
- { nodes: fieldNodes, originalError: errors[0] }
33
- );
34
- }
44
+ const { id: movieId, ...rest } = data ?? {};
35
45
 
36
- setCacheMetadata(`${EPISODE}.${EXTERNAL_IDS}`, headers);
37
- const { id: movieId, ...rest } = data!;
38
- return rest;
39
- };
46
+ return {
47
+ data: rest,
48
+ errors,
49
+ headers,
50
+ };
51
+ });