@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
@@ -1,17 +1,24 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
1
  import { snakeCase } from 'lodash-es';
3
2
  import { EPISODE_GROUPS, TV } from '../constants.ts';
4
- import { type Context, type RawTvEpisodeGroups, type RawTvWithAppendToResponse } from '../types.ts';
3
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
4
+ import { type RawTv, type RawTvEpisodeGroups, type RawTvWithAppendToResponse } from '../types.ts';
5
5
 
6
- export const resolveTvEpisodeGroups = async (
7
- obj: RawTvWithAppendToResponse & { __headers?: Headers },
8
- _args: undefined,
9
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
10
- { fieldNodes }: GraphQLResolveInfo
11
- ) => {
12
- if (obj.episode_groups && obj.__headers) {
13
- setCacheMetadata(`${TV}.${EPISODE_GROUPS}`, obj.__headers);
14
- return obj.episode_groups.results;
6
+ const isRawTvWithEpisodeGroups = (
7
+ obj: RawTv | (RawTvWithAppendToResponse & { __headers?: Headers })
8
+ ): obj is RawTvWithAppendToResponse & { __headers: Headers } => snakeCase(EPISODE_GROUPS) in obj && '__headers' in obj;
9
+
10
+ export const resolveTvEpisodeGroups = buildObjResolver<
11
+ RawTv | (RawTvWithAppendToResponse & { __headers?: Headers }),
12
+ RawTvEpisodeGroups['results']
13
+ >(TV, async (obj, ctx) => {
14
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
15
+
16
+ if (isRawTvWithEpisodeGroups(obj)) {
17
+ return {
18
+ data: obj.episode_groups?.results,
19
+ headers: obj.__headers,
20
+ source: 'parentNode',
21
+ };
15
22
  }
16
23
 
17
24
  const { data, errors, headers } = await restClient.tv<RawTvEpisodeGroups>(
@@ -21,13 +28,9 @@ export const resolveTvEpisodeGroups = async (
21
28
  { requestID, tmdbGuestSessionId }
22
29
  );
23
30
 
24
- if (errors?.length) {
25
- throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${EPISODE_GROUPS}.`, {
26
- nodes: fieldNodes,
27
- originalError: errors[0],
28
- });
29
- }
30
-
31
- setCacheMetadata(`${TV}.${EPISODE_GROUPS}`, headers);
32
- return data!.results;
33
- };
31
+ return {
32
+ data: data?.results,
33
+ errors,
34
+ headers,
35
+ };
36
+ });
@@ -6,42 +6,43 @@ import tvExternalIds from '@tmdb-graphql-api/test-utils/responses/themoviedb/tv/
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 RawTvWithAppendToResponse } from '../types.ts';
13
+ import { EXTERNAL_IDS } from '../constants.ts';
14
+ import { type Context } from '../types.ts';
12
15
  import { resolveTvExternalIds } from './tvExternalIds.ts';
13
16
 
14
17
  const mockedFetch = mockFetch(jest.fn);
15
18
 
16
19
  describe('resolveTvExternalIds >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
20
  const tvId = 1399;
20
21
 
21
- beforeAll(() => {
22
- restClient = createRestClient();
23
- });
22
+ const context = {
23
+ logger: createMockLogger(jest.fn),
24
+ restClient: createRestClient(),
25
+ setCacheMetadata: jest.fn(),
26
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
27
+ } as unknown as Context;
28
+
29
+ const info = {} as GraphQLResolveInfo;
24
30
 
25
31
  beforeEach(() => {
26
- mockedFetch.mockGetOnce(buildEndpoint(TV_PATH, { id: tvId, type: 'external_ids' }), {
32
+ mockedFetch.mockGetOnce(buildEndpoint(TV_PATH, { id: tvId, type: snakeCase(EXTERNAL_IDS) }), {
27
33
  body: tvExternalIds,
28
34
  });
29
35
  });
30
36
 
31
37
  afterEach(async () => {
32
38
  mockedFetch.mockReset();
33
- await restClient.cache?.clear();
39
+ await context.restClient.cache?.clear();
40
+ jest.clearAllMocks();
34
41
  });
35
42
 
36
43
  it('should return the tv external IDs', async () => {
37
- await expect(
38
- resolveTvExternalIds(
39
- tvDetails as unknown as RawTvWithAppendToResponse,
40
- undefined,
41
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
42
- {} as GraphQLResolveInfo
43
- )
44
- ).resolves.toMatchSnapshot();
44
+ // @ts-expect-error minor nested type mismatch
45
+ await expect(resolveTvExternalIds(tvDetails, undefined, context, info)).resolves.toMatchSnapshot();
45
46
  });
46
47
 
47
48
  describe('when raw tv data has external IDs', () => {
@@ -54,20 +55,18 @@ describe('resolveTvExternalIds >', () => {
54
55
 
55
56
  await expect(
56
57
  resolveTvExternalIds(
58
+ // @ts-expect-error minor nested type mismatch
57
59
  {
58
60
  ...tvDetails,
59
61
  __headers: new Headers(),
60
62
  external_ids: rest,
61
- } as unknown as RawTvWithAppendToResponse & {
62
- __headers?: Headers;
63
63
  },
64
64
  undefined,
65
65
  {
66
+ ...context,
66
67
  restClient: { tv: tvFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
67
- setCacheMetadata,
68
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
69
- } as unknown as Context,
70
- {} as GraphQLResolveInfo
68
+ },
69
+ info
71
70
  )
72
71
  ).resolves.toMatchSnapshot();
73
72
  });
@@ -80,20 +79,18 @@ describe('resolveTvExternalIds >', () => {
80
79
  const { id, ...rest } = tvExternalIds;
81
80
 
82
81
  await resolveTvExternalIds(
82
+ // @ts-expect-error minor nested type mismatch
83
83
  {
84
84
  ...tvDetails,
85
85
  __headers: new Headers(),
86
86
  external_ids: rest,
87
- } as unknown as RawTvWithAppendToResponse & {
88
- __headers?: Headers;
89
87
  },
90
88
  undefined,
91
89
  {
90
+ ...context,
92
91
  restClient: { tv: tvFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
93
- setCacheMetadata,
94
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
95
- } as unknown as Context,
96
- {} as GraphQLResolveInfo
92
+ },
93
+ info
97
94
  );
98
95
 
99
96
  expect(tvFetchMock).not.toHaveBeenCalled();
@@ -1,17 +1,25 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
1
  import { snakeCase } from 'lodash-es';
2
+ import type { Except } from 'type-fest';
3
3
  import { EXTERNAL_IDS, TV } from '../constants.ts';
4
- import { type Context, type RawTvExternalIds, type RawTvWithAppendToResponse } from '../types.ts';
4
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
5
+ import { type RawTv, type RawTvExternalIds, type RawTvWithAppendToResponse } from '../types.ts';
5
6
 
6
- export const resolveTvExternalIds = async (
7
- obj: RawTvWithAppendToResponse & { __headers?: Headers },
8
- _args: undefined,
9
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
10
- { fieldNodes }: GraphQLResolveInfo
11
- ) => {
12
- if (obj.external_ids && obj.__headers) {
13
- setCacheMetadata(`${TV}.${EXTERNAL_IDS}`, obj.__headers);
14
- return obj.external_ids;
7
+ const isRawTvWithExternalIds = (
8
+ obj: RawTv | (RawTvWithAppendToResponse & { __headers?: Headers })
9
+ ): obj is RawTvWithAppendToResponse & { __headers: Headers } => snakeCase(EXTERNAL_IDS) in obj && '__headers' in obj;
10
+
11
+ export const resolveTvExternalIds = buildObjResolver<
12
+ RawTv | (RawTvWithAppendToResponse & { __headers?: Headers }),
13
+ Except<RawTvExternalIds, 'id'>
14
+ >(TV, async (obj, ctx) => {
15
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
16
+
17
+ if (isRawTvWithExternalIds(obj)) {
18
+ return {
19
+ data: obj.external_ids,
20
+ headers: obj.__headers,
21
+ source: 'parentNode',
22
+ };
15
23
  }
16
24
 
17
25
  const { data, errors, headers } = await restClient.tv<RawTvExternalIds>(
@@ -21,14 +29,11 @@ export const resolveTvExternalIds = async (
21
29
  { requestID, tmdbGuestSessionId }
22
30
  );
23
31
 
24
- if (errors?.length) {
25
- throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${EXTERNAL_IDS}.`, {
26
- nodes: fieldNodes,
27
- originalError: errors[0],
28
- });
29
- }
32
+ const { id: tvId, ...rest } = data ?? {};
30
33
 
31
- setCacheMetadata(`${TV}.${EXTERNAL_IDS}`, headers);
32
- const { id: tvId, ...rest } = data!;
33
- return rest;
34
- };
34
+ return {
35
+ data: rest,
36
+ errors,
37
+ headers,
38
+ };
39
+ });
@@ -7,63 +7,63 @@ 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 RawTvWithAppendToResponse } from '../types.ts';
12
+ import { IMAGES } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
12
14
  import { resolveTvImages } from './tvImages.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveTvImages >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
19
  const tvId = 1399;
20
20
 
21
- beforeAll(() => {
22
- restClient = createRestClient();
23
- });
21
+ const context = {
22
+ logger: createMockLogger(jest.fn),
23
+ restClient: createRestClient(),
24
+ setCacheMetadata: jest.fn(),
25
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
26
+ } as unknown as Context;
24
27
 
25
28
  beforeEach(() => {
26
- mockedFetch.mockGetOnce(buildEndpoint(TV_PATH, { id: tvId, type: 'images' }), {
29
+ mockedFetch.mockGetOnce(buildEndpoint(TV_PATH, { id: tvId, type: IMAGES }), {
27
30
  body: tvImages,
28
31
  });
29
32
  });
30
33
 
31
34
  afterEach(async () => {
32
35
  mockedFetch.mockReset();
33
- await restClient.cache?.clear();
36
+ await context.restClient.cache?.clear();
37
+ jest.clearAllMocks();
34
38
  });
35
39
 
36
40
  describe('when fieldName is backdrops', () => {
41
+ const info = {
42
+ fieldName: 'backdrops',
43
+ } as GraphQLResolveInfo;
44
+
37
45
  it('should return the correct response', async () => {
38
- await expect(
39
- resolveTvImages(
40
- tvDetails as unknown as RawTvWithAppendToResponse,
41
- undefined,
42
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
43
- {
44
- fieldName: 'backdrops',
45
- } as GraphQLResolveInfo
46
- )
47
- ).resolves.toMatchSnapshot();
46
+ // @ts-expect-error minor nested type mismatch
47
+ await expect(resolveTvImages(tvDetails, undefined, context, info)).resolves.toMatchSnapshot();
48
48
  });
49
49
  });
50
50
 
51
51
  describe('when fieldName is posters', () => {
52
+ const info = {
53
+ fieldName: 'posters',
54
+ } as GraphQLResolveInfo;
55
+
52
56
  it('should return the correct response', async () => {
53
- await expect(
54
- resolveTvImages(
55
- tvDetails as unknown as RawTvWithAppendToResponse,
56
- undefined,
57
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
58
- {
59
- fieldName: 'posters',
60
- } as GraphQLResolveInfo
61
- )
62
- ).resolves.toMatchSnapshot();
57
+ // @ts-expect-error minor nested type mismatch
58
+ await expect(resolveTvImages(tvDetails, undefined, context, info)).resolves.toMatchSnapshot();
63
59
  });
64
60
  });
65
61
 
66
62
  describe('when raw tv data has images', () => {
63
+ const info = {
64
+ fieldName: 'logos',
65
+ } as GraphQLResolveInfo;
66
+
67
67
  it('should return the correct response', async () => {
68
68
  const tvFetchMock = jest
69
69
  .fn<(...args: PlainArray) => Promise<FetchResponse>>()
@@ -73,18 +73,13 @@ describe('resolveTvImages >', () => {
73
73
 
74
74
  await expect(
75
75
  resolveTvImages(
76
- { ...tvImages, __headers: new Headers(), images: rest } as unknown as RawTvWithAppendToResponse & {
77
- __headers?: Headers;
78
- },
76
+ { ...tvImages, __headers: new Headers(), images: rest },
79
77
  undefined,
80
78
  {
79
+ ...context,
81
80
  restClient: { tv: tvFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
82
- setCacheMetadata,
83
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
84
- } as unknown as Context,
85
- {
86
- fieldName: 'logos',
87
- } as GraphQLResolveInfo
81
+ },
82
+ info
88
83
  )
89
84
  ).resolves.toMatchSnapshot();
90
85
  });
@@ -97,18 +92,13 @@ describe('resolveTvImages >', () => {
97
92
  const { id, ...rest } = tvImages;
98
93
 
99
94
  await resolveTvImages(
100
- { ...tvImages, __headers: new Headers(), images: rest } as unknown as RawTvWithAppendToResponse & {
101
- __headers?: Headers;
102
- },
95
+ { ...tvImages, __headers: new Headers(), images: rest },
103
96
  undefined,
104
97
  {
98
+ ...context,
105
99
  restClient: { tv: tvFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
106
- setCacheMetadata,
107
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
108
- } as unknown as Context,
109
- {
110
- fieldName: 'logos',
111
- } as GraphQLResolveInfo
100
+ },
101
+ info
112
102
  );
113
103
 
114
104
  expect(tvFetchMock).not.toHaveBeenCalled();
@@ -1,34 +1,37 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
- import { TV } from '../constants.ts';
3
- import { type Context, type RawTvImages, type RawTvWithAppendToResponse } from '../types.ts';
1
+ import { IMAGES, TV } from '../constants.ts';
2
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
3
+ import { type RawTv, type RawTvImages, type RawTvWithAppendToResponse } from '../types.ts';
4
4
 
5
- export const resolveTvImages = async (
6
- obj: RawTvWithAppendToResponse & { __headers?: Headers },
7
- _args: undefined,
8
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
9
- { fieldName, fieldNodes }: GraphQLResolveInfo
10
- ) => {
5
+ const isRawTvWithImages = (
6
+ obj: RawTv | (RawTvWithAppendToResponse & { __headers?: Headers })
7
+ ): obj is RawTvWithAppendToResponse & { __headers: Headers } => IMAGES in obj && '__headers' in obj;
8
+
9
+ export const resolveTvImages = buildObjResolver<
10
+ RawTv | (RawTvWithAppendToResponse & { __headers?: Headers }),
11
+ RawTvImages['posters'] | RawTvImages['logos'] | RawTvImages['backdrops']
12
+ >(TV, async (obj, ctx, info) => {
13
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
14
+ const { fieldName } = info;
11
15
  const typedFieldName = fieldName as 'backdrops' | 'logos' | 'posters';
12
16
 
13
- if (obj.images && obj.__headers) {
14
- setCacheMetadata(`${TV}.${typedFieldName}`, obj.__headers);
15
- return obj.images[typedFieldName];
17
+ if (isRawTvWithImages(obj)) {
18
+ return {
19
+ data: obj.images?.[typedFieldName],
20
+ headers: obj.__headers,
21
+ source: 'parentNode',
22
+ };
16
23
  }
17
24
 
18
25
  const { data, errors, headers } = await restClient.tv<RawTvImages>(
19
26
  {
20
- pathTemplateData: { id: obj.id, type: 'images' },
27
+ pathTemplateData: { id: obj.id, type: IMAGES },
21
28
  },
22
29
  { requestID, tmdbGuestSessionId }
23
30
  );
24
31
 
25
- if (errors?.length) {
26
- throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${typedFieldName}.`, {
27
- nodes: fieldNodes,
28
- originalError: errors[0],
29
- });
30
- }
31
-
32
- setCacheMetadata(`${TV}.${typedFieldName}`, headers);
33
- return data![typedFieldName];
34
- };
32
+ return {
33
+ data: data?.[typedFieldName],
34
+ errors,
35
+ headers,
36
+ };
37
+ });
@@ -7,41 +7,41 @@ 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 RawTvWithAppendToResponse } from '../types.ts';
12
+ import { KEYWORDS } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
12
14
  import { resolveTvKeywords } from './tvKeywords.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveTvKeywords >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
19
  const tvId = 1399;
20
20
 
21
- beforeAll(() => {
22
- restClient = createRestClient();
23
- });
21
+ const context = {
22
+ logger: createMockLogger(jest.fn),
23
+ restClient: createRestClient(),
24
+ setCacheMetadata: jest.fn(),
25
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
26
+ } as unknown as Context;
27
+
28
+ const info = {} as GraphQLResolveInfo;
24
29
 
25
30
  beforeEach(() => {
26
- mockedFetch.mockGetOnce(buildEndpoint(TV_PATH, { id: tvId, type: 'keywords' }), {
31
+ mockedFetch.mockGetOnce(buildEndpoint(TV_PATH, { id: tvId, type: KEYWORDS }), {
27
32
  body: tvKeywords,
28
33
  });
29
34
  });
30
35
 
31
36
  afterEach(async () => {
32
37
  mockedFetch.mockReset();
33
- await restClient.cache?.clear();
38
+ await context.restClient.cache?.clear();
39
+ jest.clearAllMocks();
34
40
  });
35
41
 
36
42
  it('should return the tv keywords', async () => {
37
- await expect(
38
- resolveTvKeywords(
39
- tvDetails as unknown as RawTvWithAppendToResponse,
40
- undefined,
41
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
42
- {} as GraphQLResolveInfo
43
- )
44
- ).resolves.toMatchSnapshot();
43
+ // @ts-expect-error minor nested type mismatch
44
+ await expect(resolveTvKeywords(tvDetails, undefined, context, info)).resolves.toMatchSnapshot();
45
45
  });
46
46
 
47
47
  describe('when raw tv data has keywords', () => {
@@ -54,20 +54,18 @@ describe('resolveTvKeywords >', () => {
54
54
 
55
55
  await expect(
56
56
  resolveTvKeywords(
57
+ // @ts-expect-error minor nested type mismatch
57
58
  {
58
59
  ...tvDetails,
59
60
  __headers: new Headers(),
60
61
  keywords: rest,
61
- } as unknown as RawTvWithAppendToResponse & {
62
- __headers?: Headers;
63
62
  },
64
63
  undefined,
65
64
  {
65
+ ...context,
66
66
  restClient: { tv: tvFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
67
- setCacheMetadata,
68
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
69
- } as unknown as Context,
70
- {} as GraphQLResolveInfo
67
+ },
68
+ info
71
69
  )
72
70
  ).resolves.toMatchSnapshot();
73
71
  });
@@ -80,20 +78,18 @@ describe('resolveTvKeywords >', () => {
80
78
  const { id, ...rest } = tvKeywords;
81
79
 
82
80
  await resolveTvKeywords(
81
+ // @ts-expect-error minor nested type mismatch
83
82
  {
84
83
  ...tvDetails,
85
84
  __headers: new Headers(),
86
85
  keywords: rest,
87
- } as unknown as RawTvWithAppendToResponse & {
88
- __headers?: Headers;
89
86
  },
90
87
  undefined,
91
88
  {
89
+ ...context,
92
90
  restClient: { tv: tvFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
93
- setCacheMetadata,
94
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
95
- } as unknown as Context,
96
- {} as GraphQLResolveInfo
91
+ },
92
+ info
97
93
  );
98
94
 
99
95
  expect(tvFetchMock).not.toHaveBeenCalled();
@@ -1,16 +1,23 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
1
  import { KEYWORDS, TV } from '../constants.ts';
3
- import { type Context, type RawTvKeywords, type RawTvWithAppendToResponse } from '../types.ts';
2
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
3
+ import { type RawTv, type RawTvKeywords, type RawTvWithAppendToResponse } from '../types.ts';
4
4
 
5
- export const resolveTvKeywords = async (
6
- obj: RawTvWithAppendToResponse & { __headers?: Headers },
7
- _args: undefined,
8
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
9
- { fieldNodes }: GraphQLResolveInfo
10
- ) => {
11
- if (obj.keywords && obj.__headers) {
12
- setCacheMetadata(`${TV}.${KEYWORDS}`, obj.__headers);
13
- return obj.keywords.results;
5
+ const isRawTvWithKeywords = (
6
+ obj: RawTv | (RawTvWithAppendToResponse & { __headers?: Headers })
7
+ ): obj is RawTvWithAppendToResponse & { __headers: Headers } => KEYWORDS in obj && '__headers' in obj;
8
+
9
+ export const resolveTvKeywords = buildObjResolver<
10
+ RawTv | (RawTvWithAppendToResponse & { __headers?: Headers }),
11
+ RawTvKeywords['results']
12
+ >(TV, async (obj, ctx) => {
13
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
14
+
15
+ if (isRawTvWithKeywords(obj)) {
16
+ return {
17
+ data: obj.keywords?.results,
18
+ headers: obj.__headers,
19
+ source: 'parentNode',
20
+ };
14
21
  }
15
22
 
16
23
  const { data, errors, headers } = await restClient.tv<RawTvKeywords>(
@@ -20,13 +27,9 @@ export const resolveTvKeywords = async (
20
27
  { requestID, tmdbGuestSessionId }
21
28
  );
22
29
 
23
- if (errors?.length) {
24
- throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${KEYWORDS}.`, {
25
- nodes: fieldNodes,
26
- originalError: errors[0],
27
- });
28
- }
29
-
30
- setCacheMetadata(`${TV}.${KEYWORDS}`, headers);
31
- return data?.results;
32
- };
30
+ return {
31
+ data: data?.results,
32
+ errors,
33
+ headers,
34
+ };
35
+ });