@tmdb-graphql-api/resolvers 0.0.34 → 0.1.1-unstable.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/index.mjs +1 -1
  4. package/dist/esm/index.mjs.map +1 -1
  5. package/dist/production.analysis.txt +506 -413
  6. package/dist/types/cjs/constants.d.cts +3 -0
  7. package/dist/types/cjs/constants.d.cts.map +1 -1
  8. package/dist/types/cjs/helpers/buildArgsResolver.d.cts +9 -0
  9. package/dist/types/cjs/helpers/buildArgsResolver.d.cts.map +1 -0
  10. package/dist/types/cjs/helpers/buildNoObjArgsResolver.d.cts +9 -0
  11. package/dist/types/cjs/helpers/buildNoObjArgsResolver.d.cts.map +1 -0
  12. package/dist/types/cjs/helpers/buildObjArgsResolver.d.cts +9 -0
  13. package/dist/types/cjs/helpers/buildObjArgsResolver.d.cts.map +1 -0
  14. package/dist/types/cjs/helpers/buildObjResolver.d.cts +11 -0
  15. package/dist/types/cjs/helpers/buildObjResolver.d.cts.map +1 -0
  16. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts +4 -3
  17. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts.map +1 -1
  18. package/dist/types/cjs/main.d.cts.map +1 -1
  19. package/dist/types/cjs/queries/certifications.d.cts +429 -4
  20. package/dist/types/cjs/queries/certifications.d.cts.map +1 -1
  21. package/dist/types/cjs/queries/collection.d.cts +61 -3397
  22. package/dist/types/cjs/queries/collection.d.cts.map +1 -1
  23. package/dist/types/cjs/queries/collectionImages.d.cts +40 -13
  24. package/dist/types/cjs/queries/collectionImages.d.cts.map +1 -1
  25. package/dist/types/cjs/queries/collectionTranslations.d.cts +34 -17
  26. package/dist/types/cjs/queries/collectionTranslations.d.cts.map +1 -1
  27. package/dist/types/cjs/queries/company.d.cts +9 -12
  28. package/dist/types/cjs/queries/company.d.cts.map +1 -1
  29. package/dist/types/cjs/queries/companyAlternativeNames.d.cts +27 -9
  30. package/dist/types/cjs/queries/companyAlternativeNames.d.cts.map +1 -1
  31. package/dist/types/cjs/queries/companyLogos.d.cts +19 -13
  32. package/dist/types/cjs/queries/companyLogos.d.cts.map +1 -1
  33. package/dist/types/cjs/queries/configuration.d.cts +11 -14
  34. package/dist/types/cjs/queries/configuration.d.cts.map +1 -1
  35. package/dist/types/cjs/queries/configurationCountries.d.cts +16 -3
  36. package/dist/types/cjs/queries/configurationCountries.d.cts.map +1 -1
  37. package/dist/types/cjs/queries/configurationJobs.d.cts +15 -3
  38. package/dist/types/cjs/queries/configurationJobs.d.cts.map +1 -1
  39. package/dist/types/cjs/queries/configurationLanguages.d.cts +16 -3
  40. package/dist/types/cjs/queries/configurationLanguages.d.cts.map +1 -1
  41. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts +12 -3
  42. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts.map +1 -1
  43. package/dist/types/cjs/queries/configurationTimezones.d.cts +15 -3
  44. package/dist/types/cjs/queries/configurationTimezones.d.cts.map +1 -1
  45. package/dist/types/cjs/queries/credit.d.cts +46 -4197
  46. package/dist/types/cjs/queries/credit.d.cts.map +1 -1
  47. package/dist/types/cjs/queries/discoverMovies.d.cts +2 -4
  48. package/dist/types/cjs/queries/discoverMovies.d.cts.map +1 -1
  49. package/dist/types/cjs/queries/discoverTv.d.cts +2 -4
  50. package/dist/types/cjs/queries/discoverTv.d.cts.map +1 -1
  51. package/dist/types/cjs/queries/episode.d.cts +235 -94
  52. package/dist/types/cjs/queries/episode.d.cts.map +1 -1
  53. package/dist/types/cjs/queries/episodeCredits.d.cts +168 -32
  54. package/dist/types/cjs/queries/episodeCredits.d.cts.map +1 -1
  55. package/dist/types/cjs/queries/episodeExternalIds.d.cts +139 -15
  56. package/dist/types/cjs/queries/episodeExternalIds.d.cts.map +1 -1
  57. package/dist/types/cjs/queries/episodeStills.d.cts +140 -5
  58. package/dist/types/cjs/queries/episodeStills.d.cts.map +1 -1
  59. package/dist/types/cjs/queries/episodeTranslations.d.cts +141 -19
  60. package/dist/types/cjs/queries/episodeTranslations.d.cts.map +1 -1
  61. package/dist/types/cjs/queries/episodeVideos.d.cts +142 -14
  62. package/dist/types/cjs/queries/episodeVideos.d.cts.map +1 -1
  63. package/dist/types/cjs/queries/find.d.cts +10 -1801
  64. package/dist/types/cjs/queries/find.d.cts.map +1 -1
  65. package/dist/types/cjs/queries/genres.d.cts +6 -6
  66. package/dist/types/cjs/queries/genres.d.cts.map +1 -1
  67. package/dist/types/cjs/queries/keyword.d.cts +2 -5
  68. package/dist/types/cjs/queries/keyword.d.cts.map +1 -1
  69. package/dist/types/cjs/queries/movie.d.cts +35 -3588
  70. package/dist/types/cjs/queries/movie.d.cts.map +1 -1
  71. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts +1736 -5
  72. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts.map +1 -1
  73. package/dist/types/cjs/queries/movieCredits.d.cts +1755 -30
  74. package/dist/types/cjs/queries/movieCredits.d.cts.map +1 -1
  75. package/dist/types/cjs/queries/movieExternalIds.d.cts +1738 -15
  76. package/dist/types/cjs/queries/movieExternalIds.d.cts.map +1 -1
  77. package/dist/types/cjs/queries/movieImages.d.cts +1756 -5
  78. package/dist/types/cjs/queries/movieImages.d.cts.map +1 -1
  79. package/dist/types/cjs/queries/movieKeywords.d.cts +1735 -5
  80. package/dist/types/cjs/queries/movieKeywords.d.cts.map +1 -1
  81. package/dist/types/cjs/queries/movieRecommendations.d.cts +1728 -1848
  82. package/dist/types/cjs/queries/movieRecommendations.d.cts.map +1 -1
  83. package/dist/types/cjs/queries/movieReleaseDates.d.cts +1742 -12
  84. package/dist/types/cjs/queries/movieReleaseDates.d.cts.map +1 -1
  85. package/dist/types/cjs/queries/movieReviews.d.cts +1728 -1848
  86. package/dist/types/cjs/queries/movieReviews.d.cts.map +1 -1
  87. package/dist/types/cjs/queries/movieSimilarMovies.d.cts +1728 -1848
  88. package/dist/types/cjs/queries/movieSimilarMovies.d.cts.map +1 -1
  89. package/dist/types/cjs/queries/movieTranslations.d.cts +1744 -19
  90. package/dist/types/cjs/queries/movieTranslations.d.cts.map +1 -1
  91. package/dist/types/cjs/queries/movieVideos.d.cts +1741 -13
  92. package/dist/types/cjs/queries/movieVideos.d.cts.map +1 -1
  93. package/dist/types/cjs/queries/movieWatchProviders.d.cts +3205 -1373
  94. package/dist/types/cjs/queries/movieWatchProviders.d.cts.map +1 -1
  95. package/dist/types/cjs/queries/network.d.cts +14 -23
  96. package/dist/types/cjs/queries/network.d.cts.map +1 -1
  97. package/dist/types/cjs/queries/networkAlternativeNames.d.cts +11 -9
  98. package/dist/types/cjs/queries/networkAlternativeNames.d.cts.map +1 -1
  99. package/dist/types/cjs/queries/networkLogos.d.cts +17 -13
  100. package/dist/types/cjs/queries/networkLogos.d.cts.map +1 -1
  101. package/dist/types/cjs/queries/person.d.cts +13 -41
  102. package/dist/types/cjs/queries/person.d.cts.map +1 -1
  103. package/dist/types/cjs/queries/personCombinedCredits.d.cts +233 -5
  104. package/dist/types/cjs/queries/personCombinedCredits.d.cts.map +1 -1
  105. package/dist/types/cjs/queries/personExternalIds.d.cts +203 -5
  106. package/dist/types/cjs/queries/personExternalIds.d.cts.map +1 -1
  107. package/dist/types/cjs/queries/personMovieCredits.d.cts +231 -5
  108. package/dist/types/cjs/queries/personMovieCredits.d.cts.map +1 -1
  109. package/dist/types/cjs/queries/personProfiles.d.cts +200 -5
  110. package/dist/types/cjs/queries/personProfiles.d.cts.map +1 -1
  111. package/dist/types/cjs/queries/personTranslations.d.cts +201 -19
  112. package/dist/types/cjs/queries/personTranslations.d.cts.map +1 -1
  113. package/dist/types/cjs/queries/personTvCredits.d.cts +232 -5
  114. package/dist/types/cjs/queries/personTvCredits.d.cts.map +1 -1
  115. package/dist/types/cjs/queries/rated.d.cts +6 -8
  116. package/dist/types/cjs/queries/rated.d.cts.map +1 -1
  117. package/dist/types/cjs/queries/review.d.cts +37 -23
  118. package/dist/types/cjs/queries/review.d.cts.map +1 -1
  119. package/dist/types/cjs/queries/search.d.cts +6 -8
  120. package/dist/types/cjs/queries/search.d.cts.map +1 -1
  121. package/dist/types/cjs/queries/season.d.cts +233 -282
  122. package/dist/types/cjs/queries/season.d.cts.map +1 -1
  123. package/dist/types/cjs/queries/seasonCredits.d.cts +152 -32
  124. package/dist/types/cjs/queries/seasonCredits.d.cts.map +1 -1
  125. package/dist/types/cjs/queries/seasonEpisodeCount.d.cts.map +1 -1
  126. package/dist/types/cjs/queries/seasonExternalIds.d.cts +134 -5
  127. package/dist/types/cjs/queries/seasonExternalIds.d.cts.map +1 -1
  128. package/dist/types/cjs/queries/seasonPosters.d.cts +136 -5
  129. package/dist/types/cjs/queries/seasonPosters.d.cts.map +1 -1
  130. package/dist/types/cjs/queries/seasonTranslations.d.cts +137 -19
  131. package/dist/types/cjs/queries/seasonTranslations.d.cts.map +1 -1
  132. package/dist/types/cjs/queries/seasonVideos.d.cts +138 -14
  133. package/dist/types/cjs/queries/seasonVideos.d.cts.map +1 -1
  134. package/dist/types/cjs/queries/trending.d.cts +5 -7
  135. package/dist/types/cjs/queries/trending.d.cts.map +1 -1
  136. package/dist/types/cjs/queries/tv.d.cts +79 -10478
  137. package/dist/types/cjs/queries/tv.d.cts.map +1 -1
  138. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts +1273 -10
  139. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts.map +1 -1
  140. package/dist/types/cjs/queries/tvContentRatings.d.cts +1273 -8
  141. package/dist/types/cjs/queries/tvContentRatings.d.cts.map +1 -1
  142. package/dist/types/cjs/queries/tvCredits.d.cts +1292 -30
  143. package/dist/types/cjs/queries/tvCredits.d.cts.map +1 -1
  144. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts +1280 -37
  145. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts.map +1 -1
  146. package/dist/types/cjs/queries/tvExternalIds.d.cts +1280 -15
  147. package/dist/types/cjs/queries/tvExternalIds.d.cts.map +1 -1
  148. package/dist/types/cjs/queries/tvImages.d.cts +1294 -15
  149. package/dist/types/cjs/queries/tvImages.d.cts.map +1 -1
  150. package/dist/types/cjs/queries/tvKeywords.d.cts +1271 -7
  151. package/dist/types/cjs/queries/tvKeywords.d.cts.map +1 -1
  152. package/dist/types/cjs/queries/tvRecommendations.d.cts +1264 -5365
  153. package/dist/types/cjs/queries/tvRecommendations.d.cts.map +1 -1
  154. package/dist/types/cjs/queries/tvReviews.d.cts +1264 -5365
  155. package/dist/types/cjs/queries/tvReviews.d.cts.map +1 -1
  156. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts +1264 -5365
  157. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts.map +1 -1
  158. package/dist/types/cjs/queries/tvTranslations.d.cts +1280 -18
  159. package/dist/types/cjs/queries/tvTranslations.d.cts.map +1 -1
  160. package/dist/types/cjs/queries/tvVideos.d.cts +1279 -13
  161. package/dist/types/cjs/queries/tvVideos.d.cts.map +1 -1
  162. package/dist/types/cjs/queries/tvWatchProviders.d.cts +2174 -1371
  163. package/dist/types/cjs/queries/tvWatchProviders.d.cts.map +1 -1
  164. package/dist/types/cjs/queries/videoType.d.cts +2 -2
  165. package/dist/types/cjs/queries/videoType.d.cts.map +1 -1
  166. package/dist/types/cjs/types.d.cts +130 -297
  167. package/dist/types/cjs/types.d.cts.map +1 -1
  168. package/dist/types/esm/constants.d.ts +3 -0
  169. package/dist/types/esm/constants.d.ts.map +1 -1
  170. package/dist/types/esm/helpers/buildArgsResolver.d.ts +9 -0
  171. package/dist/types/esm/helpers/buildArgsResolver.d.ts.map +1 -0
  172. package/dist/types/esm/helpers/buildNoObjArgsResolver.d.ts +9 -0
  173. package/dist/types/esm/helpers/buildNoObjArgsResolver.d.ts.map +1 -0
  174. package/dist/types/esm/helpers/buildObjArgsResolver.d.ts +9 -0
  175. package/dist/types/esm/helpers/buildObjArgsResolver.d.ts.map +1 -0
  176. package/dist/types/esm/helpers/buildObjResolver.d.ts +11 -0
  177. package/dist/types/esm/helpers/buildObjResolver.d.ts.map +1 -0
  178. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts +4 -3
  179. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts.map +1 -1
  180. package/dist/types/esm/main.d.ts.map +1 -1
  181. package/dist/types/esm/queries/certifications.d.ts +429 -4
  182. package/dist/types/esm/queries/certifications.d.ts.map +1 -1
  183. package/dist/types/esm/queries/collection.d.ts +61 -3397
  184. package/dist/types/esm/queries/collection.d.ts.map +1 -1
  185. package/dist/types/esm/queries/collectionImages.d.ts +40 -13
  186. package/dist/types/esm/queries/collectionImages.d.ts.map +1 -1
  187. package/dist/types/esm/queries/collectionTranslations.d.ts +34 -17
  188. package/dist/types/esm/queries/collectionTranslations.d.ts.map +1 -1
  189. package/dist/types/esm/queries/company.d.ts +9 -12
  190. package/dist/types/esm/queries/company.d.ts.map +1 -1
  191. package/dist/types/esm/queries/companyAlternativeNames.d.ts +27 -9
  192. package/dist/types/esm/queries/companyAlternativeNames.d.ts.map +1 -1
  193. package/dist/types/esm/queries/companyLogos.d.ts +19 -13
  194. package/dist/types/esm/queries/companyLogos.d.ts.map +1 -1
  195. package/dist/types/esm/queries/configuration.d.ts +11 -14
  196. package/dist/types/esm/queries/configuration.d.ts.map +1 -1
  197. package/dist/types/esm/queries/configurationCountries.d.ts +16 -3
  198. package/dist/types/esm/queries/configurationCountries.d.ts.map +1 -1
  199. package/dist/types/esm/queries/configurationJobs.d.ts +15 -3
  200. package/dist/types/esm/queries/configurationJobs.d.ts.map +1 -1
  201. package/dist/types/esm/queries/configurationLanguages.d.ts +16 -3
  202. package/dist/types/esm/queries/configurationLanguages.d.ts.map +1 -1
  203. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts +12 -3
  204. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts.map +1 -1
  205. package/dist/types/esm/queries/configurationTimezones.d.ts +15 -3
  206. package/dist/types/esm/queries/configurationTimezones.d.ts.map +1 -1
  207. package/dist/types/esm/queries/credit.d.ts +46 -4197
  208. package/dist/types/esm/queries/credit.d.ts.map +1 -1
  209. package/dist/types/esm/queries/discoverMovies.d.ts +2 -4
  210. package/dist/types/esm/queries/discoverMovies.d.ts.map +1 -1
  211. package/dist/types/esm/queries/discoverTv.d.ts +2 -4
  212. package/dist/types/esm/queries/discoverTv.d.ts.map +1 -1
  213. package/dist/types/esm/queries/episode.d.ts +235 -94
  214. package/dist/types/esm/queries/episode.d.ts.map +1 -1
  215. package/dist/types/esm/queries/episodeCredits.d.ts +168 -32
  216. package/dist/types/esm/queries/episodeCredits.d.ts.map +1 -1
  217. package/dist/types/esm/queries/episodeExternalIds.d.ts +139 -15
  218. package/dist/types/esm/queries/episodeExternalIds.d.ts.map +1 -1
  219. package/dist/types/esm/queries/episodeStills.d.ts +140 -5
  220. package/dist/types/esm/queries/episodeStills.d.ts.map +1 -1
  221. package/dist/types/esm/queries/episodeTranslations.d.ts +141 -19
  222. package/dist/types/esm/queries/episodeTranslations.d.ts.map +1 -1
  223. package/dist/types/esm/queries/episodeVideos.d.ts +142 -14
  224. package/dist/types/esm/queries/episodeVideos.d.ts.map +1 -1
  225. package/dist/types/esm/queries/find.d.ts +10 -1801
  226. package/dist/types/esm/queries/find.d.ts.map +1 -1
  227. package/dist/types/esm/queries/genres.d.ts +6 -6
  228. package/dist/types/esm/queries/genres.d.ts.map +1 -1
  229. package/dist/types/esm/queries/keyword.d.ts +2 -5
  230. package/dist/types/esm/queries/keyword.d.ts.map +1 -1
  231. package/dist/types/esm/queries/movie.d.ts +35 -3588
  232. package/dist/types/esm/queries/movie.d.ts.map +1 -1
  233. package/dist/types/esm/queries/movieAlternativeTitles.d.ts +1736 -5
  234. package/dist/types/esm/queries/movieAlternativeTitles.d.ts.map +1 -1
  235. package/dist/types/esm/queries/movieCredits.d.ts +1755 -30
  236. package/dist/types/esm/queries/movieCredits.d.ts.map +1 -1
  237. package/dist/types/esm/queries/movieExternalIds.d.ts +1738 -15
  238. package/dist/types/esm/queries/movieExternalIds.d.ts.map +1 -1
  239. package/dist/types/esm/queries/movieImages.d.ts +1756 -5
  240. package/dist/types/esm/queries/movieImages.d.ts.map +1 -1
  241. package/dist/types/esm/queries/movieKeywords.d.ts +1735 -5
  242. package/dist/types/esm/queries/movieKeywords.d.ts.map +1 -1
  243. package/dist/types/esm/queries/movieRecommendations.d.ts +1728 -1848
  244. package/dist/types/esm/queries/movieRecommendations.d.ts.map +1 -1
  245. package/dist/types/esm/queries/movieReleaseDates.d.ts +1742 -12
  246. package/dist/types/esm/queries/movieReleaseDates.d.ts.map +1 -1
  247. package/dist/types/esm/queries/movieReviews.d.ts +1728 -1848
  248. package/dist/types/esm/queries/movieReviews.d.ts.map +1 -1
  249. package/dist/types/esm/queries/movieSimilarMovies.d.ts +1728 -1848
  250. package/dist/types/esm/queries/movieSimilarMovies.d.ts.map +1 -1
  251. package/dist/types/esm/queries/movieTranslations.d.ts +1744 -19
  252. package/dist/types/esm/queries/movieTranslations.d.ts.map +1 -1
  253. package/dist/types/esm/queries/movieVideos.d.ts +1741 -13
  254. package/dist/types/esm/queries/movieVideos.d.ts.map +1 -1
  255. package/dist/types/esm/queries/movieWatchProviders.d.ts +3205 -1373
  256. package/dist/types/esm/queries/movieWatchProviders.d.ts.map +1 -1
  257. package/dist/types/esm/queries/network.d.ts +14 -23
  258. package/dist/types/esm/queries/network.d.ts.map +1 -1
  259. package/dist/types/esm/queries/networkAlternativeNames.d.ts +11 -9
  260. package/dist/types/esm/queries/networkAlternativeNames.d.ts.map +1 -1
  261. package/dist/types/esm/queries/networkLogos.d.ts +17 -13
  262. package/dist/types/esm/queries/networkLogos.d.ts.map +1 -1
  263. package/dist/types/esm/queries/person.d.ts +13 -41
  264. package/dist/types/esm/queries/person.d.ts.map +1 -1
  265. package/dist/types/esm/queries/personCombinedCredits.d.ts +233 -5
  266. package/dist/types/esm/queries/personCombinedCredits.d.ts.map +1 -1
  267. package/dist/types/esm/queries/personExternalIds.d.ts +203 -5
  268. package/dist/types/esm/queries/personExternalIds.d.ts.map +1 -1
  269. package/dist/types/esm/queries/personMovieCredits.d.ts +231 -5
  270. package/dist/types/esm/queries/personMovieCredits.d.ts.map +1 -1
  271. package/dist/types/esm/queries/personProfiles.d.ts +200 -5
  272. package/dist/types/esm/queries/personProfiles.d.ts.map +1 -1
  273. package/dist/types/esm/queries/personTranslations.d.ts +201 -19
  274. package/dist/types/esm/queries/personTranslations.d.ts.map +1 -1
  275. package/dist/types/esm/queries/personTvCredits.d.ts +232 -5
  276. package/dist/types/esm/queries/personTvCredits.d.ts.map +1 -1
  277. package/dist/types/esm/queries/rated.d.ts +6 -8
  278. package/dist/types/esm/queries/rated.d.ts.map +1 -1
  279. package/dist/types/esm/queries/review.d.ts +37 -23
  280. package/dist/types/esm/queries/review.d.ts.map +1 -1
  281. package/dist/types/esm/queries/search.d.ts +6 -8
  282. package/dist/types/esm/queries/search.d.ts.map +1 -1
  283. package/dist/types/esm/queries/season.d.ts +233 -282
  284. package/dist/types/esm/queries/season.d.ts.map +1 -1
  285. package/dist/types/esm/queries/seasonCredits.d.ts +152 -32
  286. package/dist/types/esm/queries/seasonCredits.d.ts.map +1 -1
  287. package/dist/types/esm/queries/seasonEpisodeCount.d.ts.map +1 -1
  288. package/dist/types/esm/queries/seasonExternalIds.d.ts +134 -5
  289. package/dist/types/esm/queries/seasonExternalIds.d.ts.map +1 -1
  290. package/dist/types/esm/queries/seasonPosters.d.ts +136 -5
  291. package/dist/types/esm/queries/seasonPosters.d.ts.map +1 -1
  292. package/dist/types/esm/queries/seasonTranslations.d.ts +137 -19
  293. package/dist/types/esm/queries/seasonTranslations.d.ts.map +1 -1
  294. package/dist/types/esm/queries/seasonVideos.d.ts +138 -14
  295. package/dist/types/esm/queries/seasonVideos.d.ts.map +1 -1
  296. package/dist/types/esm/queries/trending.d.ts +5 -7
  297. package/dist/types/esm/queries/trending.d.ts.map +1 -1
  298. package/dist/types/esm/queries/tv.d.ts +79 -10478
  299. package/dist/types/esm/queries/tv.d.ts.map +1 -1
  300. package/dist/types/esm/queries/tvAlternativeTitles.d.ts +1273 -10
  301. package/dist/types/esm/queries/tvAlternativeTitles.d.ts.map +1 -1
  302. package/dist/types/esm/queries/tvContentRatings.d.ts +1273 -8
  303. package/dist/types/esm/queries/tvContentRatings.d.ts.map +1 -1
  304. package/dist/types/esm/queries/tvCredits.d.ts +1292 -30
  305. package/dist/types/esm/queries/tvCredits.d.ts.map +1 -1
  306. package/dist/types/esm/queries/tvEpisodeGroups.d.ts +1280 -37
  307. package/dist/types/esm/queries/tvEpisodeGroups.d.ts.map +1 -1
  308. package/dist/types/esm/queries/tvExternalIds.d.ts +1280 -15
  309. package/dist/types/esm/queries/tvExternalIds.d.ts.map +1 -1
  310. package/dist/types/esm/queries/tvImages.d.ts +1294 -15
  311. package/dist/types/esm/queries/tvImages.d.ts.map +1 -1
  312. package/dist/types/esm/queries/tvKeywords.d.ts +1271 -7
  313. package/dist/types/esm/queries/tvKeywords.d.ts.map +1 -1
  314. package/dist/types/esm/queries/tvRecommendations.d.ts +1264 -5365
  315. package/dist/types/esm/queries/tvRecommendations.d.ts.map +1 -1
  316. package/dist/types/esm/queries/tvReviews.d.ts +1264 -5365
  317. package/dist/types/esm/queries/tvReviews.d.ts.map +1 -1
  318. package/dist/types/esm/queries/tvSimilarTvShows.d.ts +1264 -5365
  319. package/dist/types/esm/queries/tvSimilarTvShows.d.ts.map +1 -1
  320. package/dist/types/esm/queries/tvTranslations.d.ts +1280 -18
  321. package/dist/types/esm/queries/tvTranslations.d.ts.map +1 -1
  322. package/dist/types/esm/queries/tvVideos.d.ts +1279 -13
  323. package/dist/types/esm/queries/tvVideos.d.ts.map +1 -1
  324. package/dist/types/esm/queries/tvWatchProviders.d.ts +2174 -1371
  325. package/dist/types/esm/queries/tvWatchProviders.d.ts.map +1 -1
  326. package/dist/types/esm/queries/videoType.d.ts +2 -2
  327. package/dist/types/esm/queries/videoType.d.ts.map +1 -1
  328. package/dist/types/esm/types.d.ts +130 -297
  329. package/dist/types/esm/types.d.ts.map +1 -1
  330. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  331. package/package.json +12 -11
  332. package/src/__testUtils__/helpers/createMockLogger.ts +10 -0
  333. package/src/constants.ts +3 -0
  334. package/src/helpers/__snapshots__/typePropNames.test.ts.snap +0 -2
  335. package/src/helpers/buildArgsResolver.ts +37 -0
  336. package/src/helpers/buildNoObjArgsResolver.ts +36 -0
  337. package/src/helpers/buildObjArgsResolver.ts +43 -0
  338. package/src/helpers/buildObjResolver.ts +48 -0
  339. package/src/helpers/getTvIdSeasonAndEpisode.ts +12 -8
  340. package/src/main.ts +5 -11
  341. package/src/queries/__snapshots__/episode.test.ts.snap +1 -2
  342. package/src/queries/__snapshots__/season.test.ts.snap +1 -2
  343. package/src/queries/certifications.test.ts +13 -20
  344. package/src/queries/certifications.ts +21 -24
  345. package/src/queries/collection.test.ts +13 -16
  346. package/src/queries/collection.ts +20 -23
  347. package/src/queries/collectionImages.test.ts +16 -24
  348. package/src/queries/collectionImages.ts +16 -19
  349. package/src/queries/collectionTranslations.test.ts +29 -17
  350. package/src/queries/collectionTranslations.ts +19 -23
  351. package/src/queries/company.test.ts +13 -16
  352. package/src/queries/company.ts +20 -23
  353. package/src/queries/companyAlternativeNames.test.ts +34 -19
  354. package/src/queries/companyAlternativeNames.ts +19 -23
  355. package/src/queries/companyLogos.test.ts +29 -19
  356. package/src/queries/companyLogos.ts +13 -21
  357. package/src/queries/configuration.test.ts +12 -16
  358. package/src/queries/configuration.ts +11 -15
  359. package/src/queries/configurationCountries.test.ts +27 -17
  360. package/src/queries/configurationCountries.ts +19 -23
  361. package/src/queries/configurationJobs.test.ts +27 -17
  362. package/src/queries/configurationJobs.ts +19 -23
  363. package/src/queries/configurationLanguages.test.ts +27 -17
  364. package/src/queries/configurationLanguages.ts +19 -23
  365. package/src/queries/configurationPrimaryTranslations.test.ts +26 -17
  366. package/src/queries/configurationPrimaryTranslations.ts +14 -18
  367. package/src/queries/configurationTimezones.test.ts +27 -17
  368. package/src/queries/configurationTimezones.ts +19 -23
  369. package/src/queries/credit.test.ts +13 -16
  370. package/src/queries/credit.ts +12 -15
  371. package/src/queries/discoverMovies.test.ts +35 -81
  372. package/src/queries/discoverMovies.ts +21 -20
  373. package/src/queries/discoverTv.test.ts +29 -43
  374. package/src/queries/discoverTv.ts +16 -21
  375. package/src/queries/episode.test.ts +16 -17
  376. package/src/queries/episode.ts +36 -36
  377. package/src/queries/episodeCredits.test.ts +35 -67
  378. package/src/queries/episodeCredits.ts +29 -22
  379. package/src/queries/episodeExternalIds.test.ts +27 -39
  380. package/src/queries/episodeExternalIds.ts +35 -23
  381. package/src/queries/episodeStills.test.ts +28 -41
  382. package/src/queries/episodeStills.ts +32 -22
  383. package/src/queries/episodeTranslations.test.ts +26 -34
  384. package/src/queries/episodeTranslations.ts +29 -22
  385. package/src/queries/episodeVideos.test.ts +28 -41
  386. package/src/queries/episodeVideos.ts +29 -22
  387. package/src/queries/find.test.ts +13 -16
  388. package/src/queries/find.ts +25 -22
  389. package/src/queries/genres.test.ts +13 -22
  390. package/src/queries/genres.ts +13 -19
  391. package/src/queries/keyword.test.ts +13 -16
  392. package/src/queries/keyword.ts +12 -15
  393. package/src/queries/movie.test.ts +16 -20
  394. package/src/queries/movie.ts +20 -21
  395. package/src/queries/movieAlternativeTitles.test.ts +24 -30
  396. package/src/queries/movieAlternativeTitles.ts +34 -22
  397. package/src/queries/movieCredits.test.ts +27 -45
  398. package/src/queries/movieCredits.ts +24 -21
  399. package/src/queries/movieExternalIds.test.ts +22 -29
  400. package/src/queries/movieExternalIds.ts +26 -21
  401. package/src/queries/movieImages.test.ts +28 -46
  402. package/src/queries/movieImages.ts +26 -23
  403. package/src/queries/movieKeywords.test.ts +21 -26
  404. package/src/queries/movieKeywords.ts +24 -21
  405. package/src/queries/movieRecommendations.test.ts +27 -49
  406. package/src/queries/movieRecommendations.ts +27 -23
  407. package/src/queries/movieReleaseDates.test.ts +24 -28
  408. package/src/queries/movieReleaseDates.ts +25 -21
  409. package/src/queries/movieReviews.test.ts +32 -36
  410. package/src/queries/movieReviews.ts +28 -23
  411. package/src/queries/movieSimilarMovies.test.ts +25 -47
  412. package/src/queries/movieSimilarMovies.ts +28 -24
  413. package/src/queries/movieTranslations.test.ts +20 -25
  414. package/src/queries/movieTranslations.ts +24 -21
  415. package/src/queries/movieVideos.test.ts +22 -29
  416. package/src/queries/movieVideos.ts +24 -21
  417. package/src/queries/movieWatchProviders.test.ts +19 -27
  418. package/src/queries/movieWatchProviders.ts +26 -23
  419. package/src/queries/network.test.ts +13 -16
  420. package/src/queries/network.ts +20 -23
  421. package/src/queries/networkAlternativeNames.test.ts +16 -18
  422. package/src/queries/networkAlternativeNames.ts +19 -23
  423. package/src/queries/networkLogos.test.ts +14 -15
  424. package/src/queries/networkLogos.ts +13 -20
  425. package/src/queries/person.test.ts +16 -20
  426. package/src/queries/person.ts +20 -21
  427. package/src/queries/personCombinedCredits.test.ts +26 -26
  428. package/src/queries/personCombinedCredits.ts +27 -21
  429. package/src/queries/personExternalIds.test.ts +26 -26
  430. package/src/queries/personExternalIds.ts +27 -21
  431. package/src/queries/personMovieCredits.test.ts +26 -26
  432. package/src/queries/personMovieCredits.ts +27 -21
  433. package/src/queries/personProfiles.test.ts +22 -26
  434. package/src/queries/personProfiles.ts +25 -22
  435. package/src/queries/personTranslations.test.ts +22 -25
  436. package/src/queries/personTranslations.ts +24 -21
  437. package/src/queries/personTvCredits.test.ts +28 -28
  438. package/src/queries/personTvCredits.ts +26 -21
  439. package/src/queries/rated.test.ts +33 -69
  440. package/src/queries/rated.ts +31 -20
  441. package/src/queries/review.test.ts +13 -16
  442. package/src/queries/review.ts +27 -31
  443. package/src/queries/search.test.ts +53 -107
  444. package/src/queries/search.ts +42 -20
  445. package/src/queries/season.test.ts +16 -17
  446. package/src/queries/season.ts +34 -44
  447. package/src/queries/seasonCredits.test.ts +36 -45
  448. package/src/queries/seasonCredits.ts +27 -23
  449. package/src/queries/seasonEpisodeCount.ts +0 -4
  450. package/src/queries/seasonExternalIds.test.ts +25 -28
  451. package/src/queries/seasonExternalIds.ts +32 -22
  452. package/src/queries/seasonPosters.test.ts +25 -30
  453. package/src/queries/seasonPosters.ts +25 -22
  454. package/src/queries/seasonTranslations.test.ts +21 -27
  455. package/src/queries/seasonTranslations.ts +29 -22
  456. package/src/queries/seasonVideos.test.ts +23 -28
  457. package/src/queries/seasonVideos.ts +25 -22
  458. package/src/queries/trending.test.ts +28 -60
  459. package/src/queries/trending.ts +42 -20
  460. package/src/queries/tv.test.ts +16 -20
  461. package/src/queries/tv.ts +26 -34
  462. package/src/queries/tvAlternativeTitles.test.ts +25 -28
  463. package/src/queries/tvAlternativeTitles.ts +25 -22
  464. package/src/queries/tvContentRatings.test.ts +25 -28
  465. package/src/queries/tvContentRatings.ts +24 -22
  466. package/src/queries/tvCredits.test.ts +38 -44
  467. package/src/queries/tvCredits.ts +24 -21
  468. package/src/queries/tvEpisodeGroups.test.ts +25 -28
  469. package/src/queries/tvEpisodeGroups.ts +24 -21
  470. package/src/queries/tvExternalIds.test.ts +25 -28
  471. package/src/queries/tvExternalIds.ts +26 -21
  472. package/src/queries/tvImages.test.ts +36 -46
  473. package/src/queries/tvImages.ts +26 -23
  474. package/src/queries/tvKeywords.test.ts +24 -28
  475. package/src/queries/tvKeywords.ts +24 -21
  476. package/src/queries/tvRecommendations.test.ts +29 -49
  477. package/src/queries/tvRecommendations.ts +28 -22
  478. package/src/queries/tvReviews.test.ts +37 -48
  479. package/src/queries/tvReviews.ts +27 -23
  480. package/src/queries/tvSimilarTvShows.test.ts +37 -48
  481. package/src/queries/tvSimilarTvShows.ts +28 -24
  482. package/src/queries/tvTranslations.test.ts +24 -28
  483. package/src/queries/tvTranslations.ts +24 -21
  484. package/src/queries/tvVideos.test.ts +24 -28
  485. package/src/queries/tvVideos.ts +24 -21
  486. package/src/queries/tvWatchProviders.test.ts +24 -28
  487. package/src/queries/tvWatchProviders.ts +26 -23
  488. package/src/queries/videoType.ts +2 -2
  489. package/src/types.ts +226 -391
@@ -1,16 +1,27 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
- import { SEASON, TRANSLATIONS, TV } from '../constants.ts';
3
- import { type Context, type RawSeasonTranslations, type RawSeasonWithAppendToResponse } from '../types.ts';
1
+ import { SEASON, TRANSLATIONS } from '../constants.ts';
2
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
3
+ import {
4
+ type EnrichedRawSeason,
5
+ type EnrichedRawSeasonWithAppendToResponse,
6
+ type RawSeasonTranslations,
7
+ } from '../types.ts';
4
8
 
5
- export const resolveSeasonTranslations = async (
6
- obj: RawSeasonWithAppendToResponse & { __headers?: Headers },
7
- _args: undefined,
8
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
9
- { fieldNodes }: GraphQLResolveInfo
10
- ) => {
11
- if (obj.translations && obj.__headers) {
12
- setCacheMetadata(`${SEASON}.${TRANSLATIONS}`, obj.__headers);
13
- return obj.translations.translations;
9
+ const isEnrichedRawSeasonWithTranslations = (
10
+ obj: EnrichedRawSeason | (EnrichedRawSeasonWithAppendToResponse & { __headers?: Headers })
11
+ ): obj is EnrichedRawSeasonWithAppendToResponse & { __headers: Headers } => TRANSLATIONS in obj && '__headers' in obj;
12
+
13
+ export const resolveSeasonTranslations = buildObjResolver<
14
+ EnrichedRawSeason | (EnrichedRawSeasonWithAppendToResponse & { __headers?: Headers }),
15
+ RawSeasonTranslations['translations']
16
+ >(SEASON, async (obj, ctx) => {
17
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
18
+
19
+ if (isEnrichedRawSeasonWithTranslations(obj)) {
20
+ return {
21
+ data: obj.translations?.translations,
22
+ headers: obj.__headers,
23
+ source: 'parentNode',
24
+ };
14
25
  }
15
26
 
16
27
  const { data, errors, headers } = await restClient.season<RawSeasonTranslations>(
@@ -20,13 +31,9 @@ export const resolveSeasonTranslations = async (
20
31
  { requestID, tmdbGuestSessionId }
21
32
  );
22
33
 
23
- if (errors?.length) {
24
- throw new GraphQLError(
25
- `Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${TRANSLATIONS}.`,
26
- { nodes: fieldNodes, originalError: errors[0] }
27
- );
28
- }
29
-
30
- setCacheMetadata(`${SEASON}.${TRANSLATIONS}`, headers);
31
- return data?.translations;
32
- };
34
+ return {
35
+ data: data?.translations,
36
+ errors,
37
+ headers,
38
+ };
39
+ });
@@ -7,40 +7,39 @@ 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 RawSeason, type RawSeasonWithAppendToResponse } from '../types.ts';
12
+ import { VIDEOS } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
12
14
  import { resolveSeasonVideos } from './seasonVideos.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveSeasonVideos >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
+ const context = {
20
+ logger: createMockLogger(jest.fn),
21
+ restClient: createRestClient(),
22
+ setCacheMetadata: jest.fn(),
23
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
24
+ } as unknown as Context;
19
25
 
20
- beforeAll(() => {
21
- restClient = createRestClient();
22
- });
26
+ const info = {} as GraphQLResolveInfo;
23
27
 
24
28
  beforeEach(() => {
25
- mockedFetch.mockGetOnce(buildEndpoint(SEASON_PATH, { id: 1399, number: 1, type: 'videos' }), {
29
+ mockedFetch.mockGetOnce(buildEndpoint(SEASON_PATH, { id: 1399, number: 1, type: VIDEOS }), {
26
30
  body: seasonVideos,
27
31
  });
28
32
  });
29
33
 
30
34
  afterEach(async () => {
31
35
  mockedFetch.mockReset();
32
- await restClient.cache?.clear();
36
+ await context.restClient.cache?.clear();
37
+ jest.clearAllMocks();
33
38
  });
34
39
 
35
40
  it('should return the season videos', async () => {
36
- await expect(
37
- resolveSeasonVideos(
38
- seasonDetails as unknown as RawSeason,
39
- undefined,
40
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
41
- {} as GraphQLResolveInfo
42
- )
43
- ).resolves.toMatchSnapshot();
41
+ // @ts-expect-error minor nested type mismatch
42
+ await expect(resolveSeasonVideos(seasonDetails, undefined, context, info)).resolves.toMatchSnapshot();
44
43
  });
45
44
 
46
45
  describe('when raw season data has videos', () => {
@@ -53,20 +52,18 @@ describe('resolveSeasonVideos >', () => {
53
52
 
54
53
  await expect(
55
54
  resolveSeasonVideos(
55
+ // @ts-expect-error minor nested type mismatch
56
56
  {
57
57
  ...seasonDetails,
58
58
  __headers: new Headers(),
59
59
  videos: rest,
60
- } as unknown as RawSeasonWithAppendToResponse & {
61
- __headers?: Headers;
62
60
  },
63
61
  undefined,
64
62
  {
63
+ ...context,
65
64
  restClient: { season: seasonFetchMock } 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,20 +76,18 @@ describe('resolveSeasonVideos >', () => {
79
76
  const { id, ...rest } = seasonVideos;
80
77
 
81
78
  await resolveSeasonVideos(
79
+ // @ts-expect-error minor nested type mismatch
82
80
  {
83
81
  ...seasonDetails,
84
82
  __headers: new Headers(),
85
83
  videos: rest,
86
- } as unknown as RawSeasonWithAppendToResponse & {
87
- __headers?: Headers;
88
84
  },
89
85
  undefined,
90
86
  {
87
+ ...context,
91
88
  restClient: { season: seasonFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
92
- setCacheMetadata,
93
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
94
- } as unknown as Context,
95
- {} as GraphQLResolveInfo
89
+ },
90
+ info
96
91
  );
97
92
 
98
93
  expect(seasonFetchMock).not.toHaveBeenCalled();
@@ -1,16 +1,23 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
- import { SEASON, TV, VIDEOS } from '../constants.ts';
3
- import { type Context, type RawSeasonVideos, type RawSeasonWithAppendToResponse } from '../types.ts';
1
+ import { SEASON, VIDEOS } from '../constants.ts';
2
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
3
+ import { type EnrichedRawSeason, type EnrichedRawSeasonWithAppendToResponse, type RawSeasonVideos } from '../types.ts';
4
4
 
5
- export const resolveSeasonVideos = async (
6
- obj: RawSeasonWithAppendToResponse & { __headers?: Headers },
7
- _args: undefined,
8
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
9
- { fieldNodes }: GraphQLResolveInfo
10
- ) => {
11
- if (obj.videos && obj.__headers) {
12
- setCacheMetadata(`${SEASON}.${VIDEOS}`, obj.__headers);
13
- return obj.videos.results;
5
+ const isEnrichedRawSeasonWithVideos = (
6
+ obj: EnrichedRawSeason | (EnrichedRawSeasonWithAppendToResponse & { __headers?: Headers })
7
+ ): obj is EnrichedRawSeasonWithAppendToResponse & { __headers: Headers } => VIDEOS in obj && '__headers' in obj;
8
+
9
+ export const resolveSeasonVideos = buildObjResolver<
10
+ EnrichedRawSeason | (EnrichedRawSeasonWithAppendToResponse & { __headers?: Headers }),
11
+ RawSeasonVideos['results']
12
+ >(SEASON, async (obj, ctx) => {
13
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
14
+
15
+ if (isEnrichedRawSeasonWithVideos(obj)) {
16
+ return {
17
+ data: obj.videos?.results,
18
+ headers: obj.__headers,
19
+ source: 'parentNode',
20
+ };
14
21
  }
15
22
 
16
23
  const { data, errors, headers } = await restClient.season<RawSeasonVideos>(
@@ -20,13 +27,9 @@ export const resolveSeasonVideos = async (
20
27
  { requestID, tmdbGuestSessionId }
21
28
  );
22
29
 
23
- if (errors?.length) {
24
- throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${VIDEOS}.`, {
25
- nodes: fieldNodes,
26
- originalError: errors[0],
27
- });
28
- }
29
-
30
- setCacheMetadata(`${SEASON}.${VIDEOS}`, headers);
31
- return data?.results;
32
- };
30
+ return {
31
+ data: data?.results,
32
+ errors,
33
+ headers,
34
+ };
35
+ });
@@ -1,5 +1,4 @@
1
1
  import { removeConnectionInputOptions } from '@graphql-box/connection-resolver';
2
- import { type PlainObject } from '@graphql-box/core';
3
2
  import { jest } from '@jest/globals';
4
3
  import { type ShortcutMethodNames, TRENDING_PATH } from '@tmdb-graphql-api/rest-client';
5
4
  import { TrendingMediaType, TrendingTimeWindow } from '@tmdb-graphql-api/schema/types';
@@ -11,6 +10,7 @@ import { type Getta, type ShortcutProperties } from 'getta';
11
10
  import { type GraphQLResolveInfo } from 'graphql';
12
11
  import { decode } from 'js-base64';
13
12
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
13
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
14
14
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
15
15
  import { TRENDING } from '../constants.ts';
16
16
  import { type Context } from '../types.ts';
@@ -23,6 +23,15 @@ const baseArgs = {
23
23
  timeWindow: 'DAY' as TrendingTimeWindow,
24
24
  };
25
25
 
26
+ const context = {
27
+ logger: createMockLogger(jest.fn),
28
+ restClient: createRestClient(),
29
+ setCacheMetadata: jest.fn(),
30
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
31
+ } as unknown as Context;
32
+
33
+ const info = {} as GraphQLResolveInfo;
34
+
26
35
  describe('createMakeCursors', () => {
27
36
  const GROUP_CURSOR = `${JSON.stringify(removeConnectionInputOptions(baseArgs))}::${TRENDING}`;
28
37
 
@@ -45,15 +54,8 @@ describe('createResourceResolver', () => {
45
54
  trending: jest.fn().mockReturnValue({}),
46
55
  } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>;
47
56
 
48
- const setCacheMetadata = jest.fn();
49
-
50
57
  it('when `restClient.trending` is called', async () => {
51
- const resourceResolver = createResourceResolver(undefined, baseArgs, {
52
- restClient,
53
- setCacheMetadata,
54
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
55
- } as unknown as Context);
56
-
58
+ const resourceResolver = createResourceResolver(undefined, baseArgs, { ...context, restClient }, info);
57
59
  await resourceResolver({ page: 1 });
58
60
 
59
61
  expect(restClient.trending).toHaveBeenCalledWith(
@@ -69,16 +71,13 @@ describe('createResourceResolver', () => {
69
71
  });
70
72
 
71
73
  describe('resolveTrending', () => {
72
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
73
- const setCacheMetadata = jest.fn();
74
-
75
- const mockEndpoint = ({ mediaType, timeWindow }: PlainObject, page: number, body: Jsonifiable) => {
74
+ const mockEndpoint = (
75
+ { mediaType, timeWindow }: { mediaType: TrendingMediaType; timeWindow: TrendingTimeWindow },
76
+ page: number,
77
+ body: Jsonifiable
78
+ ) => {
76
79
  mockedFetch.mockGetOnce(
77
- buildEndpoint(
78
- TRENDING_PATH,
79
- { subType: (timeWindow as string).toLowerCase(), type: (mediaType as string).toLowerCase() },
80
- { page }
81
- ),
80
+ buildEndpoint(TRENDING_PATH, { subType: timeWindow.toLowerCase(), type: mediaType.toLowerCase() }, { page }),
82
81
  {
83
82
  body,
84
83
  headers: { 'cache-control': 'public, max-age=6000' },
@@ -86,76 +85,45 @@ describe('resolveTrending', () => {
86
85
  );
87
86
  };
88
87
 
89
- beforeAll(() => {
90
- restClient = createRestClient();
91
- });
92
-
93
88
  beforeEach(() => {
94
89
  mockEndpoint(baseArgs, 1, trendingAllDay);
95
- mockEndpoint({ ...baseArgs, mediaType: 'MOVIE' }, 1, trendingMovieDay);
96
- mockEndpoint({ mediaType: 'MOVIE', timeWindow: 'WEEK' }, 1, trendingMovieWeek);
90
+ mockEndpoint({ ...baseArgs, mediaType: TrendingMediaType.Movie }, 1, trendingMovieDay);
91
+ mockEndpoint({ mediaType: TrendingMediaType.Movie, timeWindow: TrendingTimeWindow.Week }, 1, trendingMovieWeek);
97
92
  });
98
93
 
99
94
  afterEach(async () => {
100
95
  mockedFetch.mockReset();
101
- await restClient.cache?.clear();
96
+ await context.restClient.cache?.clear();
102
97
  await cursorCache.clear();
98
+ jest.clearAllMocks();
103
99
  });
104
100
 
105
101
  describe('when the first 5 are requested', () => {
106
102
  it('should return the correct response', async () => {
107
- await expect(
108
- resolveTrending(
109
- undefined,
110
- { ...baseArgs, first: 5 },
111
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
112
- {} as GraphQLResolveInfo
113
- )
114
- ).resolves.toMatchSnapshot();
103
+ await expect(resolveTrending(undefined, { ...baseArgs, first: 5 }, context, info)).resolves.toMatchSnapshot();
115
104
  });
116
105
  });
117
106
 
118
107
  describe('when the second 5 are requested', () => {
119
108
  it('should return the correct response', async () => {
120
- const { pageInfo } = await resolveTrending(
121
- undefined,
122
- { ...baseArgs, first: 5 },
123
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
124
- {} as GraphQLResolveInfo
125
- );
109
+ const { pageInfo } = await resolveTrending(undefined, { ...baseArgs, first: 5 }, context, info);
126
110
 
127
111
  await expect(
128
- resolveTrending(
129
- undefined,
130
- { ...baseArgs, after: pageInfo.endCursor, first: 5 },
131
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
132
- {} as GraphQLResolveInfo
133
- )
112
+ resolveTrending(undefined, { ...baseArgs, after: pageInfo.endCursor, first: 5 }, context, info)
134
113
  ).resolves.toMatchSnapshot();
135
114
  });
136
115
  });
137
116
 
138
117
  describe('when the first 5 are requested with different args', () => {
139
118
  it('should request each resource from the server once', async () => {
140
- await resolveTrending(
141
- undefined,
142
- { ...baseArgs, first: 5 },
143
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
144
- {} as GraphQLResolveInfo
145
- );
146
-
147
- await resolveTrending(
148
- undefined,
149
- { ...baseArgs, first: 5, mediaType: TrendingMediaType.Movie },
150
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
151
- {} as GraphQLResolveInfo
152
- );
119
+ await resolveTrending(undefined, { ...baseArgs, first: 5 }, context, info);
120
+ await resolveTrending(undefined, { ...baseArgs, first: 5, mediaType: TrendingMediaType.Movie }, context, info);
153
121
 
154
122
  await resolveTrending(
155
123
  undefined,
156
124
  { ...baseArgs, first: 5, mediaType: TrendingMediaType.Movie, timeWindow: TrendingTimeWindow.Week },
157
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
158
- {} as GraphQLResolveInfo
125
+ context,
126
+ info
159
127
  );
160
128
 
161
129
  expect(mockedFetch).toHaveBeenCalledTimes(3);
@@ -1,12 +1,18 @@
1
1
  import { Core } from '@cachemap/core';
2
2
  import { init as map } from '@cachemap/map';
3
3
  import { init as reaper } from '@cachemap/reaper';
4
- import { type Getters, makeConnectionResolver, removeConnectionInputOptions } from '@graphql-box/connection-resolver';
4
+ import {
5
+ type CreateResourceResolver,
6
+ type Getters,
7
+ makeConnectionResolver,
8
+ removeConnectionInputOptions,
9
+ } from '@graphql-box/connection-resolver';
5
10
  import { type MediaType, type QueryTrendingArgs } from '@tmdb-graphql-api/schema/types';
11
+ import { TrendingMediaType } from '@tmdb-graphql-api/schema/types';
6
12
  import { encode } from 'js-base64';
7
13
  import { capitalize } from 'lodash-es';
8
14
  import { TRENDING } from '../constants.ts';
9
- import { type Context, type RawMedia, type RawTrending } from '../types.ts';
15
+ import { type Context, type RawMediaType, type RawTrending } from '../types.ts';
10
16
 
11
17
  /* eslint-disable camelcase */
12
18
 
@@ -19,14 +25,13 @@ export const createMakeCursors = (_obj: undefined, args: QueryTrendingArgs) => {
19
25
  };
20
26
  };
21
27
 
22
- export const createResourceResolver =
23
- (
24
- _obj: undefined,
25
- { mediaType, timeWindow }: QueryTrendingArgs,
26
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context
27
- ) =>
28
+ export const createResourceResolver: CreateResourceResolver<undefined, QueryTrendingArgs, Context, RawTrending> =
29
+ (_obj, args, ctx) =>
28
30
  async ({ page }: { page: number }) => {
29
- const result = await restClient.trending<RawTrending>(
31
+ const { mediaType, timeWindow } = args;
32
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
33
+
34
+ const { data, errors, headers } = await restClient.trending<RawTrending>(
30
35
  {
31
36
  pathTemplateData: { subType: timeWindow.toLowerCase(), type: mediaType.toLowerCase() },
32
37
  queryParams: { page },
@@ -34,17 +39,32 @@ export const createResourceResolver =
34
39
  { requestID, tmdbGuestSessionId }
35
40
  );
36
41
 
37
- if (!result.data) {
38
- return result;
42
+ if (!data) {
43
+ return {
44
+ errors,
45
+ headers,
46
+ };
39
47
  }
40
48
 
41
- result.data.results = result.data.results.map(entry => {
42
- entry.media_type = capitalize(entry.media_type ?? mediaType) as MediaType;
49
+ data.results = data.results?.map(entry => {
50
+ let type = entry.media_type;
51
+
52
+ if (!type && mediaType !== TrendingMediaType.All) {
53
+ type = mediaType.toLowerCase();
54
+ }
55
+
56
+ if (type) {
57
+ entry.media_type = capitalize(type);
58
+ }
59
+
43
60
  return entry;
44
61
  });
45
62
 
46
- setCacheMetadata(TRENDING, result.headers);
47
- return result;
63
+ return {
64
+ data,
65
+ errors,
66
+ headers,
67
+ };
48
68
  };
49
69
 
50
70
  export const cursorCache = new Core({
@@ -54,11 +74,13 @@ export const cursorCache = new Core({
54
74
  type: 'GRAPHQL',
55
75
  });
56
76
 
57
- export const getters: Getters<RawTrending, RawMedia & { media_type?: MediaType }> = {
58
- nodes: ({ results }) => results,
59
- page: ({ page }) => page,
60
- totalPages: ({ total_pages }) => total_pages,
61
- totalResults: ({ total_results }) => total_results,
77
+ export const getters: Getters<RawTrending, RawMediaType & { media_type?: Capitalize<Lowercase<MediaType>> }> = {
78
+ // @ts-expect-error nested identifier is optional when
79
+ // it shouldn't be
80
+ nodes: ({ results = [] }) => results,
81
+ page: ({ page = 0 }) => page,
82
+ totalPages: ({ total_pages = 0 }) => total_pages,
83
+ totalResults: ({ total_results = 0 }) => total_results,
62
84
  };
63
85
 
64
86
  export const resolveTrending = makeConnectionResolver({
@@ -9,6 +9,7 @@ import { mockFetch } from 'fetch-mocked';
9
9
  import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
10
10
  import { type GraphQLResolveInfo, OperationTypeNode, parse } from 'graphql';
11
11
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
12
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
12
13
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
13
14
  import { TV } from '../constants.ts';
14
15
  import { type Context } from '../types.ts';
@@ -17,13 +18,14 @@ import { resolveTv } from './tv.ts';
17
18
  const mockedFetch = mockFetch(jest.fn);
18
19
 
19
20
  describe('resolveTv >', () => {
20
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
21
- const setCacheMetadata = jest.fn();
22
21
  const id = 1399;
23
22
 
24
- beforeAll(() => {
25
- restClient = createRestClient();
26
- });
23
+ const context = {
24
+ logger: createMockLogger(jest.fn),
25
+ restClient: createRestClient(),
26
+ setCacheMetadata: jest.fn(),
27
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
28
+ } as unknown as Context;
27
29
 
28
30
  beforeEach(() => {
29
31
  mockedFetch.mockGetOnce(buildEndpoint(TV_PATH, { id }), {
@@ -33,26 +35,21 @@ describe('resolveTv >', () => {
33
35
 
34
36
  afterEach(async () => {
35
37
  mockedFetch.mockReset();
36
- await restClient.cache?.clear();
38
+ await context.restClient.cache?.clear();
39
+ jest.clearAllMocks();
37
40
  });
38
41
 
39
42
  it('should return the correct tv details', async () => {
40
43
  const operationDefinition = getOperationDefinitions(parse(tvDetailsQuery()), OperationTypeNode.QUERY)[0]!;
41
44
  const { fieldNode } = getChildFields(operationDefinition, { name: TV })![0]!;
42
-
43
- await expect(
44
- resolveTv(
45
- undefined,
46
- { id },
47
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
48
- { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo
49
- )
50
- ).resolves.toMatchSnapshot();
45
+ const info = { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo;
46
+ await expect(resolveTv(undefined, { id: String(id) }, context, info)).resolves.toMatchSnapshot();
51
47
  });
52
48
 
53
49
  it('should request the correct resources when append to response fields are found', async () => {
54
50
  const operationDefinition = getOperationDefinitions(parse(tvDetailsLgQuery()), OperationTypeNode.QUERY)[0]!;
55
51
  const { fieldNode } = getChildFields(operationDefinition, { name: TV })![0]!;
52
+ const info = { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo;
56
53
 
57
54
  const tvFetchMock = jest
58
55
  .fn<(...args: PlainArray) => Promise<FetchResponse>>()
@@ -60,13 +57,12 @@ describe('resolveTv >', () => {
60
57
 
61
58
  await resolveTv(
62
59
  undefined,
63
- { id },
60
+ { id: String(id) },
64
61
  {
62
+ ...context,
65
63
  restClient: { tv: tvFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
66
- setCacheMetadata,
67
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
68
- } as unknown as Context,
69
- { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo
64
+ },
65
+ info
70
66
  );
71
67
 
72
68
  expect(tvFetchMock.mock.calls[0]![0]).toEqual(
package/src/queries/tv.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { type QueryTvArgs } from '@tmdb-graphql-api/schema/types';
2
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
3
2
  import { isUndefined, snakeCase } from 'lodash-es';
4
3
  import {
5
4
  ALTERNATIVE_TITLES,
@@ -23,8 +22,9 @@ import {
23
22
  VIDEOS,
24
23
  WATCH_PROVIDERS,
25
24
  } from '../constants.ts';
25
+ import { buildObjArgsResolver } from '../helpers/buildObjArgsResolver.ts';
26
26
  import { getAppendToResponseKeys } from '../helpers/getAppendToResponseKeys.ts';
27
- import { type Context, type RawTv, type RawTvWithAppendToResponse } from '../types.ts';
27
+ import { type RawTv, type RawTvWithAppendToResponse } from '../types.ts';
28
28
 
29
29
  const appendToResponse = {
30
30
  [ALTERNATIVE_TITLES]: snakeCase(ALTERNATIVE_TITLES),
@@ -45,27 +45,20 @@ const appendToResponse = {
45
45
  [WATCH_PROVIDERS]: 'watch/providers',
46
46
  };
47
47
 
48
- const enrichSeasonData = (obj: RawTv) => {
49
- // Although RawTv should always have seasons there are some
50
- // instances where this is undefined and causes an exception.
51
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
52
- if (obj.seasons) {
53
- for (const season of obj.seasons) {
54
- season.tv_show_id = obj.id;
55
- }
56
- }
57
- };
58
-
59
- export const resolveTv = async (
60
- obj: RawTv | undefined,
61
- args: QueryTvArgs,
62
- { fragmentDefinitions, requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
63
- { fieldName, fieldNodes }: GraphQLResolveInfo
64
- ) => {
48
+ export const resolveTv = buildObjArgsResolver<
49
+ RawTv,
50
+ QueryTvArgs,
51
+ (RawTvWithAppendToResponse & { __headers?: Headers }) | RawTvWithAppendToResponse[keyof RawTvWithAppendToResponse]
52
+ >(TV, async (obj, args, ctx, info) => {
53
+ const { fragmentDefinitions, requestID, restClient, tmdbGuestSessionId } = ctx;
54
+ const { fieldName, fieldNodes } = info;
65
55
  const typedFieldName = snakeCase(fieldName) as keyof RawTv;
66
56
 
67
57
  if (obj && !isUndefined(obj[typedFieldName])) {
68
- return obj[typedFieldName];
58
+ return {
59
+ data: obj[typedFieldName],
60
+ source: 'parentNode',
61
+ };
69
62
  }
70
63
 
71
64
  const id = obj ? obj.id : args.id;
@@ -85,18 +78,17 @@ export const resolveTv = async (
85
78
  { requestID, tmdbGuestSessionId }
86
79
  );
87
80
 
88
- if (errors?.length) {
89
- throw new GraphQLError(`Failed to resolve ${TV} ${id}.`, { nodes: fieldNodes, originalError: errors[0] });
90
- }
91
-
92
- const rawTv = data!;
93
- enrichSeasonData(rawTv);
94
-
95
- if (obj) {
96
- setCacheMetadata(`${TV}.${fieldName}`, headers);
97
- return rawTv[typedFieldName];
98
- }
81
+ const tvData = {
82
+ ...data,
83
+ seasons: (data?.seasons ?? []).map(season => ({
84
+ ...season,
85
+ tv_show_id: Number(id),
86
+ })),
87
+ };
99
88
 
100
- setCacheMetadata(TV, headers);
101
- return appendToResponseKeys.length > 0 ? { ...rawTv, __headers: headers } : rawTv;
102
- };
89
+ return {
90
+ data: obj ? tvData[typedFieldName] : appendToResponseKeys.length > 0 ? { ...tvData, __headers: headers } : tvData,
91
+ errors,
92
+ headers,
93
+ };
94
+ });