@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,14 +1,12 @@
1
1
  import { type QueryCreditArgs } from '@tmdb-graphql-api/schema/types';
2
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
3
2
  import { CREDIT } from '../constants.ts';
4
- import { type Context, type RawCredit } from '../types.ts';
3
+ import { buildArgsResolver } from '../helpers/buildArgsResolver.ts';
4
+ import { type RawCredit } from '../types.ts';
5
+
6
+ export const resolveCredit = buildArgsResolver<QueryCreditArgs, RawCredit>(CREDIT, async (args, ctx) => {
7
+ const { id } = args;
8
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
5
9
 
6
- export const resolveCredit = async (
7
- _obj: undefined,
8
- { id }: QueryCreditArgs,
9
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
10
- { fieldNodes }: GraphQLResolveInfo
11
- ) => {
12
10
  const { data, errors, headers } = await restClient.credit<RawCredit>(
13
11
  {
14
12
  pathTemplateData: { id },
@@ -16,10 +14,9 @@ export const resolveCredit = async (
16
14
  { requestID, tmdbGuestSessionId }
17
15
  );
18
16
 
19
- if (errors?.length) {
20
- throw new GraphQLError(`Failed to resolve ${CREDIT} ${id}.`, { nodes: fieldNodes, originalError: errors[0] });
21
- }
22
-
23
- setCacheMetadata(CREDIT, headers);
24
- return data;
25
- };
17
+ return {
18
+ data,
19
+ errors,
20
+ headers,
21
+ };
22
+ });
@@ -1,17 +1,17 @@
1
1
  import { removeConnectionInputOptions } from '@graphql-box/connection-resolver';
2
2
  import { type PlainObject } from '@graphql-box/core';
3
3
  import { jest } from '@jest/globals';
4
- import { DISCOVER_PATH, type ShortcutMethodNames } from '@tmdb-graphql-api/rest-client';
4
+ import { DISCOVER_PATH } from '@tmdb-graphql-api/rest-client';
5
5
  import { type MovieSortBy } from '@tmdb-graphql-api/schema/types';
6
6
  import discoverMovies2010 from '@tmdb-graphql-api/test-utils/responses/themoviedb/discoverMovies/2010.json';
7
7
  import discoverMovies2020 from '@tmdb-graphql-api/test-utils/responses/themoviedb/discoverMovies/2020.json';
8
8
  import { type Jsonifiable, mockFetch } from 'fetch-mocked';
9
- import { type Getta, type ShortcutProperties } from 'getta';
10
9
  import { type GraphQLResolveInfo } from 'graphql';
11
10
  import { decode } from 'js-base64';
12
11
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
12
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
13
13
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
14
- import { DISCOVER_MOVIES } from '../constants.ts';
14
+ import { DISCOVER_MOVIES, MOVIE } from '../constants.ts';
15
15
  import { formatQueryParams } from '../helpers/formatQueryParams.ts';
16
16
  import { removeNullValues } from '../helpers/removeNullValues.ts';
17
17
  import { type Context } from '../types.ts';
@@ -49,24 +49,24 @@ describe('createMakeCursors', () => {
49
49
  });
50
50
 
51
51
  describe('createResourceResolver', () => {
52
- const restClient = {
53
- discover: jest.fn().mockReturnValue({}),
54
- } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>;
52
+ const context = {
53
+ logger: createMockLogger(jest.fn),
54
+ restClient: {
55
+ discover: jest.fn().mockReturnValue({}),
56
+ },
57
+ setCacheMetadata: jest.fn(),
58
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
59
+ } as unknown as Context;
55
60
 
56
- const setCacheMetadata = jest.fn();
61
+ const info = {} as GraphQLResolveInfo;
57
62
 
58
63
  it('when `restClient.discover` is called', async () => {
59
- const resourceResolver = createResourceResolver(undefined, baseArgs, {
60
- restClient,
61
- setCacheMetadata,
62
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
63
- } as unknown as Context);
64
-
64
+ const resourceResolver = createResourceResolver(undefined, baseArgs, context, info);
65
65
  await resourceResolver({ page: 1 });
66
66
 
67
- expect(restClient.discover).toHaveBeenCalledWith(
67
+ expect(context.restClient.discover).toHaveBeenCalledWith(
68
68
  {
69
- pathTemplateData: { type: 'movie' },
69
+ pathTemplateData: { type: MOVIE },
70
70
  queryParams: {
71
71
  include_adult: false,
72
72
  include_video: false,
@@ -82,9 +82,15 @@ describe('createResourceResolver', () => {
82
82
  });
83
83
 
84
84
  describe('resolveDiscoverMovies', () => {
85
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
86
- const setCacheMetadata = jest.fn();
87
- const type = 'movie';
85
+ const context = {
86
+ logger: createMockLogger(jest.fn),
87
+ restClient: createRestClient(),
88
+ setCacheMetadata: jest.fn(),
89
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
90
+ } as unknown as Context;
91
+
92
+ const info = {} as GraphQLResolveInfo;
93
+ const type = MOVIE;
88
94
 
89
95
  const mockEndpoint = (args: PlainObject, page: number, body: Jsonifiable) => {
90
96
  mockedFetch.mockGetOnce(buildEndpoint(DISCOVER_PATH, { type }, { ...formatQueryParams(args), page }), {
@@ -93,10 +99,6 @@ describe('resolveDiscoverMovies', () => {
93
99
  });
94
100
  };
95
101
 
96
- beforeAll(() => {
97
- restClient = createRestClient();
98
- });
99
-
100
102
  beforeEach(() => {
101
103
  mockEndpoint(baseArgs, 1, discoverMovies2020);
102
104
  mockEndpoint({ ...baseArgs, primaryReleaseYear: 2010 }, 1, discoverMovies2010);
@@ -104,58 +106,33 @@ describe('resolveDiscoverMovies', () => {
104
106
 
105
107
  afterEach(async () => {
106
108
  mockedFetch.mockReset();
107
- await restClient.cache?.clear();
109
+ await context.restClient.cache?.clear();
108
110
  await cursorCache.clear();
111
+ jest.clearAllMocks();
109
112
  });
110
113
 
111
114
  describe('when the first 5 are requested', () => {
112
115
  it('should return the correct response', async () => {
113
116
  await expect(
114
- resolveDiscoverMovies(
115
- undefined,
116
- { ...baseArgs, first: 5 },
117
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
118
- {} as GraphQLResolveInfo
119
- )
117
+ resolveDiscoverMovies(undefined, { ...baseArgs, first: 5 }, context, info)
120
118
  ).resolves.toMatchSnapshot();
121
119
  });
122
120
  });
123
121
 
124
122
  describe('when the second 5 are requested', () => {
125
123
  it('should return the correct response', async () => {
126
- const { pageInfo } = await resolveDiscoverMovies(
127
- undefined,
128
- { ...baseArgs, first: 5 },
129
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
130
- {} as GraphQLResolveInfo
131
- );
124
+ const { pageInfo } = await resolveDiscoverMovies(undefined, { ...baseArgs, first: 5 }, context, info);
132
125
 
133
126
  await expect(
134
- resolveDiscoverMovies(
135
- undefined,
136
- { ...baseArgs, after: pageInfo.endCursor, first: 5 },
137
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
138
- {} as GraphQLResolveInfo
139
- )
127
+ resolveDiscoverMovies(undefined, { ...baseArgs, after: pageInfo.endCursor, first: 5 }, context, info)
140
128
  ).resolves.toMatchSnapshot();
141
129
  });
142
130
  });
143
131
 
144
132
  describe('when the first 5 are requested twice', () => {
145
133
  beforeEach(async () => {
146
- await resolveDiscoverMovies(
147
- undefined,
148
- { ...baseArgs, first: 5 },
149
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
150
- {} as GraphQLResolveInfo
151
- );
152
-
153
- await resolveDiscoverMovies(
154
- undefined,
155
- { ...baseArgs, first: 5 },
156
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
157
- {} as GraphQLResolveInfo
158
- );
134
+ await resolveDiscoverMovies(undefined, { ...baseArgs, first: 5 }, context, info);
135
+ await resolveDiscoverMovies(undefined, { ...baseArgs, first: 5 }, context, info);
159
136
  });
160
137
 
161
138
  it('should only request the resource from the server once', () => {
@@ -165,33 +142,10 @@ describe('resolveDiscoverMovies', () => {
165
142
 
166
143
  describe('when the first 5 are requested with different args twice', () => {
167
144
  beforeEach(async () => {
168
- await resolveDiscoverMovies(
169
- undefined,
170
- { ...baseArgs, first: 5 },
171
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
172
- {} as GraphQLResolveInfo
173
- );
174
-
175
- await resolveDiscoverMovies(
176
- undefined,
177
- { ...baseArgs, first: 5 },
178
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
179
- {} as GraphQLResolveInfo
180
- );
181
-
182
- await resolveDiscoverMovies(
183
- undefined,
184
- { ...baseArgs, first: 5, primaryReleaseYear: 2010 },
185
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
186
- {} as GraphQLResolveInfo
187
- );
188
-
189
- await resolveDiscoverMovies(
190
- undefined,
191
- { ...baseArgs, first: 5, primaryReleaseYear: 2010 },
192
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
193
- {} as GraphQLResolveInfo
194
- );
145
+ await resolveDiscoverMovies(undefined, { ...baseArgs, first: 5 }, context, info);
146
+ await resolveDiscoverMovies(undefined, { ...baseArgs, first: 5 }, context, info);
147
+ await resolveDiscoverMovies(undefined, { ...baseArgs, first: 5, primaryReleaseYear: 2010 }, context, info);
148
+ await resolveDiscoverMovies(undefined, { ...baseArgs, first: 5, primaryReleaseYear: 2010 }, context, info);
195
149
  });
196
150
 
197
151
  it('should request each resource from the server once', () => {
@@ -1,7 +1,12 @@
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 QueryDiscoverMoviesArgs } from '@tmdb-graphql-api/schema/types';
6
11
  import { encode } from 'js-base64';
7
12
  import { DISCOVER_MOVIES, MOVIE } from '../constants.ts';
@@ -20,14 +25,15 @@ export const createMakeCursors = (_obj: undefined, args: QueryDiscoverMoviesArgs
20
25
  };
21
26
  };
22
27
 
23
- export const createResourceResolver =
24
- (
25
- _obj: undefined,
26
- args: QueryDiscoverMoviesArgs,
27
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context
28
- ) =>
29
- async ({ page }: { page: number }) => {
30
- const result = await restClient.discover<RawDiscoverMovies>(
28
+ export const createResourceResolver: CreateResourceResolver<
29
+ undefined,
30
+ QueryDiscoverMoviesArgs,
31
+ Context,
32
+ RawDiscoverMovies
33
+ > =
34
+ (_obj, args, { requestID, restClient, tmdbGuestSessionId }) =>
35
+ async ({ page }) =>
36
+ restClient.discover<RawDiscoverMovies>(
31
37
  {
32
38
  pathTemplateData: { type: MOVIE },
33
39
  queryParams: { ...formatQueryParams(args), page },
@@ -35,13 +41,6 @@ export const createResourceResolver =
35
41
  { requestID, tmdbGuestSessionId }
36
42
  );
37
43
 
38
- if (result.data) {
39
- setCacheMetadata(DISCOVER_MOVIES, result.headers);
40
- }
41
-
42
- return result;
43
- };
44
-
45
44
  export const cursorCache = new Core({
46
45
  name: 'DISCOVER_MOVIES_CONNECTION_RESOLVER',
47
46
  reaper: reaper({ interval: 300_000 }),
@@ -50,10 +49,12 @@ export const cursorCache = new Core({
50
49
  });
51
50
 
52
51
  export const getters: Getters<RawDiscoverMovies, RawMovie> = {
53
- nodes: ({ results }) => results,
54
- page: ({ page }) => page,
55
- totalPages: ({ total_pages }) => total_pages,
56
- totalResults: ({ total_results }) => total_results,
52
+ // @ts-expect-error nested identifier is optional when
53
+ // it shouldn't be
54
+ nodes: ({ results = [] }) => results,
55
+ page: ({ page = 0 }) => page,
56
+ totalPages: ({ total_pages = 0 }) => total_pages,
57
+ totalResults: ({ total_results = 0 }) => total_results,
57
58
  };
58
59
 
59
60
  export const resolveDiscoverMovies = makeConnectionResolver({
@@ -1,16 +1,16 @@
1
1
  import { removeConnectionInputOptions } from '@graphql-box/connection-resolver';
2
2
  import { type PlainObject } from '@graphql-box/core';
3
3
  import { jest } from '@jest/globals';
4
- import { DISCOVER_PATH, type ShortcutMethodNames } from '@tmdb-graphql-api/rest-client';
4
+ import { DISCOVER_PATH } from '@tmdb-graphql-api/rest-client';
5
5
  import { type TvSortBy } from '@tmdb-graphql-api/schema/types';
6
6
  import discoverTv2020 from '@tmdb-graphql-api/test-utils/responses/themoviedb/discoverTv/2020.json';
7
7
  import { type Jsonifiable, mockFetch } from 'fetch-mocked';
8
- import { type Getta, type ShortcutProperties } from 'getta';
9
8
  import { type GraphQLResolveInfo } from 'graphql';
10
9
  import { decode } from 'js-base64';
11
10
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
11
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
12
12
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
13
- import { DISCOVER_TV } from '../constants.ts';
13
+ import { DISCOVER_TV, TV } from '../constants.ts';
14
14
  import { formatQueryParams } from '../helpers/formatQueryParams.ts';
15
15
  import { removeNullValues } from '../helpers/removeNullValues.ts';
16
16
  import { type Context } from '../types.ts';
@@ -47,24 +47,24 @@ describe('createMakeCursors', () => {
47
47
  });
48
48
 
49
49
  describe('createResourceResolver', () => {
50
- const restClient = {
51
- discover: jest.fn().mockReturnValue({}),
52
- } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>;
50
+ const context = {
51
+ logger: createMockLogger(jest.fn),
52
+ restClient: {
53
+ discover: jest.fn().mockReturnValue({}),
54
+ },
55
+ setCacheMetadata: jest.fn(),
56
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
57
+ } as unknown as Context;
53
58
 
54
- const setCacheMetadata = jest.fn();
59
+ const info = {} as GraphQLResolveInfo;
55
60
 
56
61
  it('when `restClient.discover` is called', async () => {
57
- const resourceResolver = createResourceResolver(undefined, baseArgs, {
58
- restClient,
59
- setCacheMetadata,
60
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
61
- } as unknown as Context);
62
-
62
+ const resourceResolver = createResourceResolver(undefined, baseArgs, context, info);
63
63
  await resourceResolver({ page: 1 });
64
64
 
65
- expect(restClient.discover).toHaveBeenCalledWith(
65
+ expect(context.restClient.discover).toHaveBeenCalledWith(
66
66
  {
67
- pathTemplateData: { type: 'tv' },
67
+ pathTemplateData: { type: TV },
68
68
  queryParams: {
69
69
  'first_air_date.gte': '2020',
70
70
  include_null_first_air_dates: false,
@@ -81,9 +81,15 @@ describe('createResourceResolver', () => {
81
81
  });
82
82
 
83
83
  describe('resolveDiscoverTv', () => {
84
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
85
- const setCacheMetadata = jest.fn();
86
- const type = 'tv';
84
+ const context = {
85
+ logger: createMockLogger(jest.fn),
86
+ restClient: createRestClient(),
87
+ setCacheMetadata: jest.fn(),
88
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
89
+ } as unknown as Context;
90
+
91
+ const info = {} as GraphQLResolveInfo;
92
+ const type = TV;
87
93
 
88
94
  const mockEndpoint = (args: PlainObject, page: number, body: Jsonifiable) => {
89
95
  mockedFetch.mockGetOnce(buildEndpoint(DISCOVER_PATH, { type }, { ...formatQueryParams(args), page }), {
@@ -92,49 +98,29 @@ describe('resolveDiscoverTv', () => {
92
98
  });
93
99
  };
94
100
 
95
- beforeAll(() => {
96
- restClient = createRestClient();
97
- });
98
-
99
101
  beforeEach(() => {
100
102
  mockEndpoint(baseArgs, 1, discoverTv2020);
101
103
  });
102
104
 
103
105
  afterEach(async () => {
104
106
  mockedFetch.mockReset();
105
- await restClient.cache?.clear();
107
+ await context.restClient.cache?.clear();
106
108
  await cursorCache.clear();
109
+ jest.clearAllMocks();
107
110
  });
108
111
 
109
112
  describe('when the first 5 are requested', () => {
110
113
  it('should return the correct response', async () => {
111
- await expect(
112
- resolveDiscoverTv(
113
- undefined,
114
- { ...baseArgs, first: 5 },
115
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
116
- {} as GraphQLResolveInfo
117
- )
118
- ).resolves.toMatchSnapshot();
114
+ await expect(resolveDiscoverTv(undefined, { ...baseArgs, first: 5 }, context, info)).resolves.toMatchSnapshot();
119
115
  });
120
116
  });
121
117
 
122
118
  describe('when the second 5 are requested', () => {
123
119
  it('should return the correct response', async () => {
124
- const { pageInfo } = await resolveDiscoverTv(
125
- undefined,
126
- { ...baseArgs, first: 5 },
127
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
128
- {} as GraphQLResolveInfo
129
- );
120
+ const { pageInfo } = await resolveDiscoverTv(undefined, { ...baseArgs, first: 5 }, context, info);
130
121
 
131
122
  await expect(
132
- resolveDiscoverTv(
133
- undefined,
134
- { ...baseArgs, after: pageInfo.endCursor, first: 5 },
135
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
136
- {} as GraphQLResolveInfo
137
- )
123
+ resolveDiscoverTv(undefined, { ...baseArgs, after: pageInfo.endCursor, first: 5 }, context, info)
138
124
  ).resolves.toMatchSnapshot();
139
125
  });
140
126
  });
@@ -1,7 +1,12 @@
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 QueryDiscoverTvArgs } from '@tmdb-graphql-api/schema/types';
6
11
  import { encode } from 'js-base64';
7
12
  import { DISCOVER_TV, TV } from '../constants.ts';
@@ -20,29 +25,17 @@ export const createMakeCursors = (_obj: undefined, args: QueryDiscoverTvArgs) =>
20
25
  };
21
26
  };
22
27
 
23
- export const createResourceResolver =
24
- (
25
- _obj: undefined,
26
- args: QueryDiscoverTvArgs,
27
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context
28
- ) =>
29
- async ({ page }: { page: number }) => {
30
- const result = await restClient.discover<RawDiscoverTv>(
28
+ export const createResourceResolver: CreateResourceResolver<undefined, QueryDiscoverTvArgs, Context, RawDiscoverTv> =
29
+ (_obj, args, { requestID, restClient, tmdbGuestSessionId }) =>
30
+ async ({ page }) =>
31
+ restClient.discover<RawDiscoverTv>(
31
32
  {
32
33
  pathTemplateData: { type: TV },
33
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
34
34
  queryParams: { ...formatQueryParams(args), page },
35
35
  },
36
36
  { requestID, tmdbGuestSessionId }
37
37
  );
38
38
 
39
- if (result.data) {
40
- setCacheMetadata(DISCOVER_TV, result.headers);
41
- }
42
-
43
- return result;
44
- };
45
-
46
39
  export const cursorCache = new Core({
47
40
  name: 'DISCOVER_TV_CONNECTION_RESOLVER',
48
41
  reaper: reaper({ interval: 300_000 }),
@@ -51,10 +44,12 @@ export const cursorCache = new Core({
51
44
  });
52
45
 
53
46
  export const getters: Getters<RawDiscoverTv, RawTv> = {
54
- nodes: ({ results }) => results,
55
- page: ({ page }) => page,
56
- totalPages: ({ total_pages }) => total_pages,
57
- totalResults: ({ total_results }) => total_results,
47
+ // @ts-expect-error nested identifier is optional when
48
+ // it shouldn't be
49
+ nodes: ({ results = [] }) => results,
50
+ page: ({ page = 0 }) => page,
51
+ totalPages: ({ total_pages = 0 }) => total_pages,
52
+ totalResults: ({ total_results = 0 }) => total_results,
58
53
  };
59
54
 
60
55
  export const resolveDiscoverTv = 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 { EPISODE } from '../constants.ts';
14
15
  import { encodeId } from '../helpers/encodeId.ts';
@@ -18,13 +19,14 @@ import { resolveEpisode } from './episode.ts';
18
19
  const mockedFetch = mockFetch(jest.fn);
19
20
 
20
21
  describe('resolveEpisode >', () => {
21
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
22
- const setCacheMetadata = jest.fn();
23
22
  const id = 1399;
24
23
 
25
- beforeAll(() => {
26
- restClient = createRestClient();
27
- });
24
+ const context = {
25
+ logger: createMockLogger(jest.fn),
26
+ restClient: createRestClient(),
27
+ setCacheMetadata: jest.fn(),
28
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
29
+ } as unknown as Context;
28
30
 
29
31
  beforeEach(() => {
30
32
  mockedFetch.mockGetOnce(buildEndpoint(EPISODE_PATH, { episodeNumber: 1, id, seasonNumber: 1 }), {
@@ -34,26 +36,24 @@ describe('resolveEpisode >', () => {
34
36
 
35
37
  afterEach(async () => {
36
38
  mockedFetch.mockReset();
37
- await restClient.cache?.clear();
39
+ await context.restClient.cache?.clear();
40
+ jest.clearAllMocks();
38
41
  });
39
42
 
40
43
  it('should return the correct episode details', async () => {
41
44
  const operationDefinition = getOperationDefinitions(parse(episodeDetailsQuery()), OperationTypeNode.QUERY)[0]!;
42
45
  const { fieldNode } = getChildFields(operationDefinition, { name: EPISODE })![0]!;
46
+ const info = { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo;
43
47
 
44
48
  await expect(
45
- resolveEpisode(
46
- undefined,
47
- { id: encodeId({ episodeNumber: 1, id, seasonNumber: 1 }) },
48
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
49
- { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo
50
- )
49
+ resolveEpisode(undefined, { id: encodeId({ episodeNumber: 1, id, seasonNumber: 1 }) }, context, info)
51
50
  ).resolves.toMatchSnapshot();
52
51
  });
53
52
 
54
53
  it('should request the correct resources when append to response fields are found', async () => {
55
54
  const operationDefinition = getOperationDefinitions(parse(episodeDetailsLgQuery()), OperationTypeNode.QUERY)[0]!;
56
55
  const { fieldNode } = getChildFields(operationDefinition, { name: EPISODE })![0]!;
56
+ const info = { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo;
57
57
 
58
58
  const episodeFetchMock = jest
59
59
  .fn<(...args: PlainArray) => Promise<FetchResponse>>()
@@ -63,11 +63,10 @@ describe('resolveEpisode >', () => {
63
63
  undefined,
64
64
  { id: encodeId({ episodeNumber: 1, id, seasonNumber: 1 }) },
65
65
  {
66
+ ...context,
66
67
  restClient: { episode: episodeFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
67
- setCacheMetadata,
68
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
69
- } as unknown as Context,
70
- { fieldNodes: [fieldNode] } as unknown as GraphQLResolveInfo
68
+ },
69
+ info
71
70
  );
72
71
 
73
72
  expect(episodeFetchMock.mock.calls[0]![0]).toEqual(
@@ -1,11 +1,11 @@
1
1
  import { type QueryEpisodeArgs } from '@tmdb-graphql-api/schema/types';
2
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
3
2
  import { isUndefined, snakeCase } from 'lodash-es';
4
- import { CREDITS, EPISODE, EXTERNAL_IDS, IMAGES, SEASON, TRANSLATIONS, TV, VIDEOS } from '../constants.ts';
3
+ import { CREDITS, EPISODE, EXTERNAL_IDS, IMAGES, TRANSLATIONS, VIDEOS } from '../constants.ts';
4
+ import { buildObjArgsResolver } from '../helpers/buildObjArgsResolver.ts';
5
5
  import { encodeId } from '../helpers/encodeId.ts';
6
6
  import { getAppendToResponseKeys } from '../helpers/getAppendToResponseKeys.ts';
7
7
  import { getTvIdSeasonAndEpisode } from '../helpers/getTvIdSeasonAndEpisode.ts';
8
- import { type Context, type RawEpisode, type RawEpisodeWithAppendToResponse } from '../types.ts';
8
+ import { type EnrichedRawEpisode, type EnrichedRawEpisodeWithAppendToResponse, type RawEpisode } from '../types.ts';
9
9
 
10
10
  const appendToResponse = {
11
11
  [EXTERNAL_IDS]: snakeCase(EXTERNAL_IDS),
@@ -17,24 +17,30 @@ const appendToResponse = {
17
17
  stills: IMAGES,
18
18
  };
19
19
 
20
- export const resolveEpisode = async (
21
- obj: RawEpisode | undefined,
22
- args: QueryEpisodeArgs,
23
- { fragmentDefinitions, requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
24
- { fieldName, fieldNodes }: GraphQLResolveInfo
25
- ) => {
20
+ export const resolveEpisode = buildObjArgsResolver<
21
+ EnrichedRawEpisode,
22
+ QueryEpisodeArgs,
23
+ | (EnrichedRawEpisodeWithAppendToResponse & { __headers?: Headers })
24
+ | EnrichedRawEpisodeWithAppendToResponse[keyof EnrichedRawEpisodeWithAppendToResponse]
25
+ >(EPISODE, async (obj, args, ctx, info) => {
26
+ const { fragmentDefinitions, requestID, restClient, tmdbGuestSessionId } = ctx;
27
+ const { fieldName, fieldNodes } = info;
26
28
  const typedFieldName = snakeCase(fieldName) as keyof RawEpisode;
27
29
  const { episodeNumber, id, seasonNumber } = getTvIdSeasonAndEpisode(obj, args);
28
30
 
29
31
  if (obj && !isUndefined(obj[typedFieldName])) {
30
- return typedFieldName === 'id'
31
- ? encodeId({ id, seasonNumber, ...(episodeNumber ? { episodeNumber } : {}) })
32
- : obj[typedFieldName];
32
+ return {
33
+ data:
34
+ typedFieldName === 'id'
35
+ ? encodeId({ id, seasonNumber, ...(episodeNumber ? { episodeNumber } : {}) })
36
+ : obj[typedFieldName],
37
+ source: 'parentNode',
38
+ };
33
39
  }
34
40
 
35
41
  const appendToResponseKeys = getAppendToResponseKeys(fieldNodes[0]!, appendToResponse, fragmentDefinitions);
36
42
 
37
- const { data, errors, headers } = await restClient.episode<RawEpisodeWithAppendToResponse>(
43
+ const { data, errors, headers } = await restClient.episode<EnrichedRawEpisodeWithAppendToResponse>(
38
44
  {
39
45
  pathTemplateData: { episodeNumber, id, seasonNumber },
40
46
  ...(appendToResponseKeys.length > 0
@@ -48,25 +54,19 @@ export const resolveEpisode = async (
48
54
  { requestID, tmdbGuestSessionId }
49
55
  );
50
56
 
51
- if (errors?.length) {
52
- throw new GraphQLError(
53
- `Failed to resolve ${TV} show ${id} ${SEASON} ${seasonNumber} ${EPISODE} ${episodeNumber!}.`,
54
- { nodes: fieldNodes, originalError: errors[0] }
55
- );
56
- }
57
-
58
- const rawEpisode = data!;
59
- rawEpisode.id = encodeId({ id, seasonNumber, ...(episodeNumber ? { episodeNumber } : {}) });
60
-
61
- if (!rawEpisode.tv_show_id) {
62
- rawEpisode.tv_show_id = id;
63
- }
57
+ const episodeData = {
58
+ ...data,
59
+ id: encodeId({ id, seasonNumber, ...(episodeNumber ? { episodeNumber } : {}) }),
60
+ tv_show_id: Number(id),
61
+ };
64
62
 
65
- if (obj) {
66
- setCacheMetadata(`${EPISODE}.${fieldName}`, headers);
67
- return rawEpisode[typedFieldName];
68
- }
69
-
70
- setCacheMetadata(EPISODE, headers);
71
- return appendToResponseKeys.length > 0 ? { ...rawEpisode, __headers: headers } : rawEpisode;
72
- };
63
+ return {
64
+ data: obj
65
+ ? episodeData[typedFieldName]
66
+ : appendToResponseKeys.length > 0
67
+ ? { ...episodeData, __headers: headers }
68
+ : episodeData,
69
+ errors,
70
+ headers,
71
+ };
72
+ });