@tmdb-graphql-api/resolvers 0.1.0 → 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 (486) 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 +505 -412
  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 +2 -2
  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 +63 -3399
  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 +10 -13
  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 -4193
  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 +236 -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 +3 -6
  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 +1757 -32
  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 +1729 -1849
  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 +1729 -1849
  86. package/dist/types/cjs/queries/movieReviews.d.cts.map +1 -1
  87. package/dist/types/cjs/queries/movieSimilarMovies.d.cts +1729 -1849
  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 +1742 -14
  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 +15 -24
  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 +38 -24
  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 -279
  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 -10455
  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 +1294 -32
  143. package/dist/types/cjs/queries/tvCredits.d.cts.map +1 -1
  144. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts +1281 -38
  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 +1272 -8
  151. package/dist/types/cjs/queries/tvKeywords.d.cts.map +1 -1
  152. package/dist/types/cjs/queries/tvRecommendations.d.cts +1265 -5354
  153. package/dist/types/cjs/queries/tvRecommendations.d.cts.map +1 -1
  154. package/dist/types/cjs/queries/tvReviews.d.cts +1265 -5354
  155. package/dist/types/cjs/queries/tvReviews.d.cts.map +1 -1
  156. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts +1265 -5354
  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 +1280 -14
  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 -295
  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 +2 -2
  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 +63 -3399
  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 +10 -13
  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 -4193
  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 +236 -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 +3 -6
  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 +1757 -32
  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 +1729 -1849
  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 +1729 -1849
  248. package/dist/types/esm/queries/movieReviews.d.ts.map +1 -1
  249. package/dist/types/esm/queries/movieSimilarMovies.d.ts +1729 -1849
  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 +1742 -14
  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 +15 -24
  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 +38 -24
  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 -279
  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 -10455
  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 +1294 -32
  305. package/dist/types/esm/queries/tvCredits.d.ts.map +1 -1
  306. package/dist/types/esm/queries/tvEpisodeGroups.d.ts +1281 -38
  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 +1272 -8
  313. package/dist/types/esm/queries/tvKeywords.d.ts.map +1 -1
  314. package/dist/types/esm/queries/tvRecommendations.d.ts +1265 -5354
  315. package/dist/types/esm/queries/tvRecommendations.d.ts.map +1 -1
  316. package/dist/types/esm/queries/tvReviews.d.ts +1265 -5354
  317. package/dist/types/esm/queries/tvReviews.d.ts.map +1 -1
  318. package/dist/types/esm/queries/tvSimilarTvShows.d.ts +1265 -5354
  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 +1280 -14
  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 -295
  329. package/dist/types/esm/types.d.ts.map +1 -1
  330. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  331. package/package.json +11 -10
  332. package/src/__testUtils__/helpers/createMockLogger.ts +10 -0
  333. package/src/constants.ts +3 -0
  334. package/src/helpers/buildArgsResolver.ts +37 -0
  335. package/src/helpers/buildNoObjArgsResolver.ts +36 -0
  336. package/src/helpers/buildObjArgsResolver.ts +43 -0
  337. package/src/helpers/buildObjResolver.ts +48 -0
  338. package/src/helpers/getTvIdSeasonAndEpisode.ts +4 -4
  339. package/src/main.ts +5 -11
  340. package/src/queries/certifications.test.ts +13 -20
  341. package/src/queries/certifications.ts +21 -24
  342. package/src/queries/collection.test.ts +13 -16
  343. package/src/queries/collection.ts +20 -23
  344. package/src/queries/collectionImages.test.ts +16 -24
  345. package/src/queries/collectionImages.ts +16 -19
  346. package/src/queries/collectionTranslations.test.ts +29 -17
  347. package/src/queries/collectionTranslations.ts +19 -23
  348. package/src/queries/company.test.ts +13 -16
  349. package/src/queries/company.ts +20 -23
  350. package/src/queries/companyAlternativeNames.test.ts +34 -19
  351. package/src/queries/companyAlternativeNames.ts +19 -23
  352. package/src/queries/companyLogos.test.ts +29 -19
  353. package/src/queries/companyLogos.ts +13 -21
  354. package/src/queries/configuration.test.ts +12 -16
  355. package/src/queries/configuration.ts +11 -15
  356. package/src/queries/configurationCountries.test.ts +27 -17
  357. package/src/queries/configurationCountries.ts +19 -23
  358. package/src/queries/configurationJobs.test.ts +27 -17
  359. package/src/queries/configurationJobs.ts +19 -23
  360. package/src/queries/configurationLanguages.test.ts +27 -17
  361. package/src/queries/configurationLanguages.ts +19 -23
  362. package/src/queries/configurationPrimaryTranslations.test.ts +26 -17
  363. package/src/queries/configurationPrimaryTranslations.ts +14 -18
  364. package/src/queries/configurationTimezones.test.ts +27 -17
  365. package/src/queries/configurationTimezones.ts +19 -23
  366. package/src/queries/credit.test.ts +13 -16
  367. package/src/queries/credit.ts +12 -15
  368. package/src/queries/discoverMovies.test.ts +35 -81
  369. package/src/queries/discoverMovies.ts +21 -20
  370. package/src/queries/discoverTv.test.ts +29 -43
  371. package/src/queries/discoverTv.ts +16 -21
  372. package/src/queries/episode.test.ts +15 -16
  373. package/src/queries/episode.ts +34 -34
  374. package/src/queries/episodeCredits.test.ts +33 -55
  375. package/src/queries/episodeCredits.ts +29 -22
  376. package/src/queries/episodeExternalIds.test.ts +26 -28
  377. package/src/queries/episodeExternalIds.ts +35 -23
  378. package/src/queries/episodeStills.test.ts +26 -29
  379. package/src/queries/episodeStills.ts +32 -22
  380. package/src/queries/episodeTranslations.test.ts +24 -22
  381. package/src/queries/episodeTranslations.ts +29 -22
  382. package/src/queries/episodeVideos.test.ts +26 -29
  383. package/src/queries/episodeVideos.ts +29 -22
  384. package/src/queries/find.test.ts +13 -16
  385. package/src/queries/find.ts +25 -22
  386. package/src/queries/genres.test.ts +13 -22
  387. package/src/queries/genres.ts +13 -19
  388. package/src/queries/keyword.test.ts +13 -16
  389. package/src/queries/keyword.ts +12 -15
  390. package/src/queries/movie.test.ts +16 -20
  391. package/src/queries/movie.ts +20 -21
  392. package/src/queries/movieAlternativeTitles.test.ts +24 -30
  393. package/src/queries/movieAlternativeTitles.ts +34 -22
  394. package/src/queries/movieCredits.test.ts +27 -45
  395. package/src/queries/movieCredits.ts +24 -21
  396. package/src/queries/movieExternalIds.test.ts +22 -29
  397. package/src/queries/movieExternalIds.ts +26 -21
  398. package/src/queries/movieImages.test.ts +28 -46
  399. package/src/queries/movieImages.ts +26 -23
  400. package/src/queries/movieKeywords.test.ts +21 -26
  401. package/src/queries/movieKeywords.ts +24 -21
  402. package/src/queries/movieRecommendations.test.ts +27 -49
  403. package/src/queries/movieRecommendations.ts +27 -23
  404. package/src/queries/movieReleaseDates.test.ts +24 -28
  405. package/src/queries/movieReleaseDates.ts +25 -21
  406. package/src/queries/movieReviews.test.ts +32 -36
  407. package/src/queries/movieReviews.ts +28 -23
  408. package/src/queries/movieSimilarMovies.test.ts +25 -47
  409. package/src/queries/movieSimilarMovies.ts +28 -24
  410. package/src/queries/movieTranslations.test.ts +20 -25
  411. package/src/queries/movieTranslations.ts +24 -21
  412. package/src/queries/movieVideos.test.ts +22 -29
  413. package/src/queries/movieVideos.ts +24 -21
  414. package/src/queries/movieWatchProviders.test.ts +19 -27
  415. package/src/queries/movieWatchProviders.ts +26 -23
  416. package/src/queries/network.test.ts +13 -16
  417. package/src/queries/network.ts +20 -23
  418. package/src/queries/networkAlternativeNames.test.ts +16 -18
  419. package/src/queries/networkAlternativeNames.ts +19 -23
  420. package/src/queries/networkLogos.test.ts +14 -15
  421. package/src/queries/networkLogos.ts +13 -20
  422. package/src/queries/person.test.ts +16 -20
  423. package/src/queries/person.ts +20 -21
  424. package/src/queries/personCombinedCredits.test.ts +26 -26
  425. package/src/queries/personCombinedCredits.ts +27 -21
  426. package/src/queries/personExternalIds.test.ts +26 -26
  427. package/src/queries/personExternalIds.ts +27 -21
  428. package/src/queries/personMovieCredits.test.ts +26 -26
  429. package/src/queries/personMovieCredits.ts +27 -21
  430. package/src/queries/personProfiles.test.ts +22 -26
  431. package/src/queries/personProfiles.ts +25 -22
  432. package/src/queries/personTranslations.test.ts +22 -25
  433. package/src/queries/personTranslations.ts +24 -21
  434. package/src/queries/personTvCredits.test.ts +28 -28
  435. package/src/queries/personTvCredits.ts +26 -21
  436. package/src/queries/rated.test.ts +33 -69
  437. package/src/queries/rated.ts +31 -20
  438. package/src/queries/review.test.ts +13 -16
  439. package/src/queries/review.ts +27 -31
  440. package/src/queries/search.test.ts +53 -107
  441. package/src/queries/search.ts +42 -20
  442. package/src/queries/season.test.ts +15 -16
  443. package/src/queries/season.ts +32 -42
  444. package/src/queries/seasonCredits.test.ts +36 -45
  445. package/src/queries/seasonCredits.ts +27 -23
  446. package/src/queries/seasonEpisodeCount.ts +0 -4
  447. package/src/queries/seasonExternalIds.test.ts +25 -28
  448. package/src/queries/seasonExternalIds.ts +32 -22
  449. package/src/queries/seasonPosters.test.ts +25 -30
  450. package/src/queries/seasonPosters.ts +25 -22
  451. package/src/queries/seasonTranslations.test.ts +21 -27
  452. package/src/queries/seasonTranslations.ts +29 -22
  453. package/src/queries/seasonVideos.test.ts +23 -28
  454. package/src/queries/seasonVideos.ts +25 -22
  455. package/src/queries/trending.test.ts +28 -60
  456. package/src/queries/trending.ts +42 -20
  457. package/src/queries/tv.test.ts +16 -20
  458. package/src/queries/tv.ts +26 -34
  459. package/src/queries/tvAlternativeTitles.test.ts +25 -28
  460. package/src/queries/tvAlternativeTitles.ts +25 -22
  461. package/src/queries/tvContentRatings.test.ts +25 -28
  462. package/src/queries/tvContentRatings.ts +24 -22
  463. package/src/queries/tvCredits.test.ts +38 -44
  464. package/src/queries/tvCredits.ts +24 -21
  465. package/src/queries/tvEpisodeGroups.test.ts +25 -28
  466. package/src/queries/tvEpisodeGroups.ts +24 -21
  467. package/src/queries/tvExternalIds.test.ts +25 -28
  468. package/src/queries/tvExternalIds.ts +26 -21
  469. package/src/queries/tvImages.test.ts +36 -46
  470. package/src/queries/tvImages.ts +26 -23
  471. package/src/queries/tvKeywords.test.ts +24 -28
  472. package/src/queries/tvKeywords.ts +24 -21
  473. package/src/queries/tvRecommendations.test.ts +29 -49
  474. package/src/queries/tvRecommendations.ts +28 -22
  475. package/src/queries/tvReviews.test.ts +37 -48
  476. package/src/queries/tvReviews.ts +27 -23
  477. package/src/queries/tvSimilarTvShows.test.ts +37 -48
  478. package/src/queries/tvSimilarTvShows.ts +28 -24
  479. package/src/queries/tvTranslations.test.ts +24 -28
  480. package/src/queries/tvTranslations.ts +24 -21
  481. package/src/queries/tvVideos.test.ts +24 -28
  482. package/src/queries/tvVideos.ts +24 -21
  483. package/src/queries/tvWatchProviders.test.ts +24 -28
  484. package/src/queries/tvWatchProviders.ts +26 -23
  485. package/src/queries/videoType.ts +2 -2
  486. package/src/types.ts +228 -386
@@ -7,79 +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 { type Context, type RawEpisode } from '../types.ts';
12
+ import { CAST, CREDITS, CREW, GUEST_STARS } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
12
14
  import { resolveEpisodeCredits } from './episodeCredits.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveEpisodeCredits >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
19
  const tvShowId = 1399;
20
20
  const seasonNumber = 1;
21
21
  const episodeNumber = 1;
22
22
 
23
- beforeAll(() => {
24
- restClient = createRestClient();
25
- });
23
+ const context = {
24
+ logger: createMockLogger(jest.fn),
25
+ restClient: createRestClient(),
26
+ setCacheMetadata: jest.fn(),
27
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
28
+ } as unknown as Context;
26
29
 
27
30
  beforeEach(() => {
28
- mockedFetch.mockGetOnce(
29
- buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: 'credits' }),
30
- {
31
- body: episodeCredits,
32
- }
33
- );
31
+ mockedFetch.mockGetOnce(buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: CREDITS }), {
32
+ body: episodeCredits,
33
+ });
34
34
  });
35
35
 
36
36
  afterEach(async () => {
37
37
  mockedFetch.mockReset();
38
- await restClient.cache?.clear();
38
+ await context.restClient.cache?.clear();
39
+ jest.clearAllMocks();
39
40
  });
40
41
 
41
42
  describe('when fieldName is cast', () => {
42
43
  it('should return the correct response', async () => {
43
- await expect(
44
- resolveEpisodeCredits(
45
- episodeDetails as RawEpisode,
46
- undefined,
47
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
48
- {
49
- fieldName: 'cast',
50
- } as GraphQLResolveInfo
51
- )
52
- ).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();
53
47
  });
54
48
  });
55
49
 
56
50
  describe('when fieldName is crew', () => {
57
51
  it('should return the correct response', async () => {
58
- await expect(
59
- resolveEpisodeCredits(
60
- episodeDetails as RawEpisode,
61
- undefined,
62
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
63
- {
64
- fieldName: 'crew',
65
- } as GraphQLResolveInfo
66
- )
67
- ).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();
68
55
  });
69
56
  });
70
57
 
71
58
  describe('when fieldName is guestStars', () => {
72
59
  it('should return the correct response', async () => {
73
- await expect(
74
- resolveEpisodeCredits(
75
- episodeDetails as RawEpisode,
76
- undefined,
77
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
78
- {
79
- fieldName: 'guestStars',
80
- } as GraphQLResolveInfo
81
- )
82
- ).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();
83
63
  });
84
64
  });
85
65
 
@@ -90,19 +70,18 @@ describe('resolveEpisodeCredits >', () => {
90
70
  .mockResolvedValue({ data: {} } as FetchResponse);
91
71
 
92
72
  const { id, ...rest } = episodeCredits;
73
+ const info = { fieldName: GUEST_STARS } as GraphQLResolveInfo;
93
74
 
94
75
  await expect(
95
76
  resolveEpisodeCredits(
77
+ // @ts-expect-error arg is slightly modified version of credits
96
78
  { ...episodeDetails, __headers: new Headers(), credits: rest },
97
79
  undefined,
98
80
  {
81
+ ...context,
99
82
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
100
- setCacheMetadata,
101
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
102
- } as unknown as Context,
103
- {
104
- fieldName: 'guestStars',
105
- } as GraphQLResolveInfo
83
+ },
84
+ info
106
85
  )
107
86
  ).resolves.toMatchSnapshot();
108
87
  });
@@ -113,18 +92,17 @@ describe('resolveEpisodeCredits >', () => {
113
92
  .mockResolvedValue({ data: {} } as FetchResponse);
114
93
 
115
94
  const { id, ...rest } = episodeCredits;
95
+ const info = { fieldName: GUEST_STARS } as GraphQLResolveInfo;
116
96
 
117
97
  await resolveEpisodeCredits(
98
+ // @ts-expect-error arg is slightly modified version of credits
118
99
  { ...episodeDetails, __headers: new Headers(), credits: rest },
119
100
  undefined,
120
101
  {
102
+ ...context,
121
103
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
122
- setCacheMetadata,
123
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
124
- } as unknown as Context,
125
- {
126
- fieldName: 'guestStars',
127
- } as GraphQLResolveInfo
104
+ },
105
+ info
128
106
  );
129
107
 
130
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,27 +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 { 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';
12
15
  import { resolveEpisodeExternalIds } from './episodeExternalIds.ts';
13
16
 
14
17
  const mockedFetch = mockFetch(jest.fn);
15
18
 
16
19
  describe('resolveEpisodeExternalIds >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
20
  const tvShowId = 1399;
20
21
  const seasonNumber = 1;
21
22
  const episodeNumber = 1;
22
23
 
23
- beforeAll(() => {
24
- restClient = createRestClient();
25
- });
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;
26
32
 
27
33
  beforeEach(() => {
28
34
  mockedFetch.mockGetOnce(
29
- buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: 'external_ids' }),
35
+ buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: snakeCase(EXTERNAL_IDS) }),
30
36
  {
31
37
  body: seasonExternalIds,
32
38
  }
@@ -35,17 +41,14 @@ describe('resolveEpisodeExternalIds >', () => {
35
41
 
36
42
  afterEach(async () => {
37
43
  mockedFetch.mockReset();
38
- await restClient.cache?.clear();
44
+ await context.restClient.cache?.clear();
45
+ jest.clearAllMocks();
39
46
  });
40
47
 
41
48
  it('should return the episode external IDs', async () => {
42
49
  await expect(
43
- resolveEpisodeExternalIds(
44
- episodeDetails as RawEpisode,
45
- undefined,
46
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
47
- {} as GraphQLResolveInfo
48
- )
50
+ // @ts-expect-error arg is slightly modified version of episode details
51
+ resolveEpisodeExternalIds(episodeDetails, undefined, context, info)
49
52
  ).resolves.toMatchSnapshot();
50
53
  });
51
54
 
@@ -59,18 +62,14 @@ describe('resolveEpisodeExternalIds >', () => {
59
62
 
60
63
  await expect(
61
64
  resolveEpisodeExternalIds(
62
- {
63
- ...episodeDetails,
64
- __headers: new Headers(),
65
- external_ids: rest,
66
- } as unknown as RawEpisodeWithAppendToResponse,
65
+ // @ts-expect-error arg is slightly modified version of episode details
66
+ { ...episodeDetails, __headers: new Headers(), external_ids: rest },
67
67
  undefined,
68
68
  {
69
+ ...context,
69
70
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
70
- setCacheMetadata,
71
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
72
- } as unknown as Context,
73
- {} as GraphQLResolveInfo
71
+ },
72
+ info
74
73
  )
75
74
  ).resolves.toMatchSnapshot();
76
75
  });
@@ -87,14 +86,13 @@ describe('resolveEpisodeExternalIds >', () => {
87
86
  ...episodeDetails,
88
87
  __headers: new Headers(),
89
88
  external_ids: rest,
90
- } as unknown as RawEpisodeWithAppendToResponse,
89
+ } as unknown as EnrichedRawEpisodeWithAppendToResponse,
91
90
  undefined,
92
91
  {
92
+ ...context,
93
93
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
94
- setCacheMetadata,
95
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
96
- } as unknown as Context,
97
- {} as GraphQLResolveInfo
94
+ },
95
+ info
98
96
  );
99
97
 
100
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
+ });
@@ -7,46 +7,43 @@ 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 { type Context, type RawEpisode } from '../types.ts';
12
+ import { IMAGES, STILLS } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
12
14
  import { resolveEpisodeStills } from './episodeStills.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveEpisodeStills >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
19
  const tvShowId = 1399;
20
20
  const seasonNumber = 1;
21
21
  const episodeNumber = 1;
22
22
 
23
- beforeAll(() => {
24
- restClient = createRestClient();
25
- });
23
+ const context = {
24
+ logger: createMockLogger(jest.fn),
25
+ restClient: createRestClient(),
26
+ setCacheMetadata: jest.fn(),
27
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
28
+ } as unknown as Context;
29
+
30
+ const info = { fieldName: STILLS } as GraphQLResolveInfo;
26
31
 
27
32
  beforeEach(() => {
28
- mockedFetch.mockGetOnce(
29
- buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: 'images' }),
30
- {
31
- body: episodeStills,
32
- }
33
- );
33
+ mockedFetch.mockGetOnce(buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: IMAGES }), {
34
+ body: episodeStills,
35
+ });
34
36
  });
35
37
 
36
38
  afterEach(async () => {
37
39
  mockedFetch.mockReset();
38
- await restClient.cache?.clear();
40
+ await context.restClient.cache?.clear();
41
+ jest.clearAllMocks();
39
42
  });
40
43
 
41
44
  it('should return the episode stills', async () => {
42
- await expect(
43
- resolveEpisodeStills(
44
- episodeDetails as RawEpisode,
45
- undefined,
46
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
47
- {} as GraphQLResolveInfo
48
- )
49
- ).resolves.toMatchSnapshot();
45
+ // @ts-expect-error arg is slightly modified version of episode details
46
+ await expect(resolveEpisodeStills(episodeDetails, undefined, context, info)).resolves.toMatchSnapshot();
50
47
  });
51
48
 
52
49
  describe('when raw episode data has images', () => {
@@ -59,14 +56,14 @@ describe('resolveEpisodeStills >', () => {
59
56
 
60
57
  await expect(
61
58
  resolveEpisodeStills(
59
+ // @ts-expect-error arg is slightly modified version of episode details
62
60
  { ...episodeDetails, __headers: new Headers(), images: rest },
63
61
  undefined,
64
62
  {
63
+ ...context,
65
64
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
66
- setCacheMetadata,
67
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
68
- } as unknown as Context,
69
- {} as GraphQLResolveInfo
65
+ },
66
+ info
70
67
  )
71
68
  ).resolves.toMatchSnapshot();
72
69
  });
@@ -79,14 +76,14 @@ describe('resolveEpisodeStills >', () => {
79
76
  const { id, ...rest } = episodeStills;
80
77
 
81
78
  await resolveEpisodeStills(
79
+ // @ts-expect-error arg is slightly modified version of episode details
82
80
  { ...episodeDetails, __headers: new Headers(), images: rest },
83
81
  undefined,
84
82
  {
83
+ ...context,
85
84
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
86
- setCacheMetadata,
87
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
88
- } as unknown as Context,
89
- {} as GraphQLResolveInfo
85
+ },
86
+ info
90
87
  );
91
88
 
92
89
  expect(episodeFetchMock).not.toHaveBeenCalled();
@@ -1,16 +1,30 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
- import { EPISODE, IMAGES, SEASON, STILLS, TV } from '../constants.ts';
3
- import { type Context, type RawEpisodeImages, type RawEpisodeWithAppendToResponse } from '../types.ts';
1
+ import { snakeCase } from 'lodash-es';
2
+ import { EPISODE, IMAGES } from '../constants.ts';
3
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
4
+ import {
5
+ type EnrichedRawEpisode,
6
+ type EnrichedRawEpisodeWithAppendToResponse,
7
+ type RawEpisodeImages,
8
+ } from '../types.ts';
4
9
 
5
- export const resolveEpisodeStills = async (
6
- obj: RawEpisodeWithAppendToResponse & { __headers?: Headers },
7
- _args: undefined,
8
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
9
- { fieldNodes }: GraphQLResolveInfo
10
- ) => {
11
- if (obj.images && obj.__headers) {
12
- setCacheMetadata(`${EPISODE}.${STILLS}`, obj.__headers);
13
- return obj.images.stills;
10
+ const isEnrichedRawEpisodeWithImages = (
11
+ obj: EnrichedRawEpisode | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers })
12
+ ): obj is EnrichedRawEpisodeWithAppendToResponse & { __headers: Headers } => IMAGES in obj && '__headers' in obj;
13
+
14
+ export const resolveEpisodeStills = buildObjResolver<
15
+ EnrichedRawEpisode | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers }),
16
+ RawEpisodeImages['stills']
17
+ >(EPISODE, async (obj, ctx, info) => {
18
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
19
+ const { fieldName } = info;
20
+ const typedFieldName = snakeCase(fieldName) as 'stills';
21
+
22
+ if (isEnrichedRawEpisodeWithImages(obj)) {
23
+ return {
24
+ data: obj.images?.[typedFieldName],
25
+ headers: obj.__headers,
26
+ source: 'parentNode',
27
+ };
14
28
  }
15
29
 
16
30
  const { data, errors, headers } = await restClient.episode<RawEpisodeImages>(
@@ -25,13 +39,9 @@ export const resolveEpisodeStills = async (
25
39
  { requestID, tmdbGuestSessionId }
26
40
  );
27
41
 
28
- if (errors?.length) {
29
- throw new GraphQLError(
30
- `Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${STILLS}.`,
31
- { nodes: fieldNodes, originalError: errors[0] }
32
- );
33
- }
34
-
35
- setCacheMetadata(`${EPISODE}.${STILLS}`, headers);
36
- return data!.stills;
37
- };
42
+ return {
43
+ data: data?.[typedFieldName],
44
+ errors,
45
+ headers,
46
+ };
47
+ });
@@ -7,26 +7,31 @@ 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 { type Context, type RawEpisode } from '../types.ts';
12
+ import { TRANSLATIONS } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
12
14
  import { resolveEpisodeTranslations } from './episodeTranslations.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveEpisodeTranslations >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
19
  const tvShowId = 1399;
20
20
  const seasonNumber = 1;
21
21
  const episodeNumber = 1;
22
22
 
23
- beforeAll(() => {
24
- restClient = createRestClient();
25
- });
23
+ const context = {
24
+ logger: createMockLogger(jest.fn),
25
+ restClient: createRestClient(),
26
+ setCacheMetadata: jest.fn(),
27
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
28
+ } as unknown as Context;
29
+
30
+ const info = { fieldName: TRANSLATIONS } as GraphQLResolveInfo;
26
31
 
27
32
  beforeEach(() => {
28
33
  mockedFetch.mockGetOnce(
29
- buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: 'translations' }),
34
+ buildEndpoint(EPISODE_PATH, { episodeNumber, id: tvShowId, seasonNumber, type: TRANSLATIONS }),
30
35
  {
31
36
  body: episodeTranslations,
32
37
  }
@@ -35,17 +40,14 @@ describe('resolveEpisodeTranslations >', () => {
35
40
 
36
41
  afterEach(async () => {
37
42
  mockedFetch.mockReset();
38
- await restClient.cache?.clear();
43
+ await context.restClient.cache?.clear();
44
+ jest.clearAllMocks();
39
45
  });
40
46
 
41
47
  it('should return the episode translations', async () => {
42
48
  await expect(
43
- resolveEpisodeTranslations(
44
- episodeDetails as RawEpisode,
45
- undefined,
46
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
47
- {} as GraphQLResolveInfo
48
- )
49
+ // @ts-expect-error arg is slightly modified version of episode details
50
+ resolveEpisodeTranslations(episodeDetails, undefined, context, info)
49
51
  ).resolves.toMatchSnapshot();
50
52
  });
51
53
 
@@ -59,14 +61,14 @@ describe('resolveEpisodeTranslations >', () => {
59
61
 
60
62
  await expect(
61
63
  resolveEpisodeTranslations(
64
+ // @ts-expect-error arg is slightly modified version of episode details
62
65
  { ...episodeDetails, __headers: new Headers(), translations: rest },
63
66
  undefined,
64
67
  {
68
+ ...context,
65
69
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
66
- setCacheMetadata,
67
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
68
- } as unknown as Context,
69
- {} as GraphQLResolveInfo
70
+ },
71
+ info
70
72
  )
71
73
  ).resolves.toMatchSnapshot();
72
74
  });
@@ -79,14 +81,14 @@ describe('resolveEpisodeTranslations >', () => {
79
81
  const { id, ...rest } = episodeTranslations;
80
82
 
81
83
  await resolveEpisodeTranslations(
84
+ // @ts-expect-error arg is slightly modified version of episode details
82
85
  { ...episodeDetails, __headers: new Headers(), translations: rest },
83
86
  undefined,
84
87
  {
88
+ ...context,
85
89
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
86
- setCacheMetadata,
87
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
88
- } as unknown as Context,
89
- {} as GraphQLResolveInfo
90
+ },
91
+ info
90
92
  );
91
93
 
92
94
  expect(episodeFetchMock).not.toHaveBeenCalled();