@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
@@ -6,42 +6,42 @@ import movieReleaseDates from '@tmdb-graphql-api/test-utils/responses/themoviedb
6
6
  import { mockFetch } from 'fetch-mocked';
7
7
  import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
8
8
  import { type GraphQLResolveInfo } from 'graphql';
9
+ import { snakeCase } from 'lodash-es';
9
10
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
11
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
10
12
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
11
- import { type Context, type RawMovieWithAppendToResponse } from '../types.ts';
13
+ import { RELEASE_DATES } from '../constants.ts';
14
+ import { type Context } from '../types.ts';
12
15
  import { resolveMovieReleaseDates } from './movieReleaseDates.ts';
13
16
 
14
17
  const mockedFetch = mockFetch(jest.fn);
15
18
 
16
19
  describe('resolveMovieReleaseDates >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
20
  const movieId = 1891;
20
21
 
21
- beforeAll(() => {
22
- restClient = createRestClient();
23
- });
22
+ const context = {
23
+ logger: createMockLogger(jest.fn),
24
+ restClient: createRestClient(),
25
+ setCacheMetadata: jest.fn(),
26
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
27
+ } as unknown as Context;
28
+
29
+ const info = { fieldName: RELEASE_DATES } as GraphQLResolveInfo;
24
30
 
25
31
  beforeEach(() => {
26
- mockedFetch.mockGetOnce(buildEndpoint(MOVIE_PATH, { id: movieId, type: 'release_dates' }), {
32
+ mockedFetch.mockGetOnce(buildEndpoint(MOVIE_PATH, { id: movieId, type: snakeCase(RELEASE_DATES) }), {
27
33
  body: movieReleaseDates,
28
34
  });
29
35
  });
30
36
 
31
37
  afterEach(async () => {
32
38
  mockedFetch.mockReset();
33
- await restClient.cache?.clear();
39
+ await context.restClient.cache?.clear();
40
+ jest.clearAllMocks();
34
41
  });
35
42
 
36
43
  it('should return the movie release dates', async () => {
37
- await expect(
38
- resolveMovieReleaseDates(
39
- movieDetails as RawMovieWithAppendToResponse,
40
- undefined,
41
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
42
- {} as GraphQLResolveInfo
43
- )
44
- ).resolves.toMatchSnapshot();
44
+ await expect(resolveMovieReleaseDates(movieDetails, undefined, context, info)).resolves.toMatchSnapshot();
45
45
  });
46
46
 
47
47
  describe('when raw movie data has releaseDates', () => {
@@ -57,17 +57,15 @@ describe('resolveMovieReleaseDates >', () => {
57
57
  {
58
58
  ...movieDetails,
59
59
  __headers: new Headers(),
60
+ // @ts-expect-error arg is slightly modified version of movie details
60
61
  release_dates: rest,
61
- } as unknown as RawMovieWithAppendToResponse & {
62
- __headers?: Headers;
63
62
  },
64
63
  undefined,
65
64
  {
65
+ ...context,
66
66
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
67
- setCacheMetadata,
68
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
69
- } as unknown as Context,
70
- {} as GraphQLResolveInfo
67
+ },
68
+ info
71
69
  )
72
70
  ).resolves.toMatchSnapshot();
73
71
  });
@@ -83,17 +81,15 @@ describe('resolveMovieReleaseDates >', () => {
83
81
  {
84
82
  ...movieDetails,
85
83
  __headers: new Headers(),
84
+ // @ts-expect-error arg is slightly modified version of movie details
86
85
  release_dates: rest,
87
- } as unknown as RawMovieWithAppendToResponse & {
88
- __headers?: Headers;
89
86
  },
90
87
  undefined,
91
88
  {
89
+ ...context,
92
90
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
93
- setCacheMetadata,
94
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
95
- } as unknown as Context,
96
- {} as GraphQLResolveInfo
91
+ },
92
+ info
97
93
  );
98
94
 
99
95
  expect(movieFetchMock).not.toHaveBeenCalled();
@@ -1,17 +1,25 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
1
  import { snakeCase } from 'lodash-es';
3
2
  import { MOVIE, RELEASE_DATES } from '../constants.ts';
4
- import { type Context, type RawMovieReleaseDates, type RawMovieWithAppendToResponse } from '../types.ts';
3
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
4
+ import { type RawMovie, type RawMovieReleaseDates, type RawMovieWithAppendToResponse } from '../types.ts';
5
5
 
6
- export const resolveMovieReleaseDates = async (
7
- obj: RawMovieWithAppendToResponse & { __headers?: Headers },
8
- _args: undefined,
9
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
10
- { fieldNodes }: GraphQLResolveInfo
11
- ) => {
12
- if (obj.release_dates && obj.__headers) {
13
- setCacheMetadata(`${MOVIE}.${RELEASE_DATES}`, obj.__headers);
14
- return obj.release_dates.results;
6
+ const isRawMovieWithReleaseDates = (
7
+ obj: RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers })
8
+ ): obj is RawMovieWithAppendToResponse & { __headers: Headers } =>
9
+ snakeCase(RELEASE_DATES) in obj && '__headers' in obj;
10
+
11
+ export const resolveMovieReleaseDates = buildObjResolver<
12
+ RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
13
+ RawMovieReleaseDates['results']
14
+ >(MOVIE, async (obj, ctx) => {
15
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
16
+
17
+ if (isRawMovieWithReleaseDates(obj)) {
18
+ return {
19
+ data: obj.release_dates?.results,
20
+ headers: obj.__headers,
21
+ source: 'parentNode',
22
+ };
15
23
  }
16
24
 
17
25
  const { data, errors, headers } = await restClient.movie<RawMovieReleaseDates>(
@@ -21,13 +29,9 @@ export const resolveMovieReleaseDates = async (
21
29
  { requestID, tmdbGuestSessionId }
22
30
  );
23
31
 
24
- if (errors?.length) {
25
- throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${RELEASE_DATES}.`, {
26
- nodes: fieldNodes,
27
- originalError: errors[0],
28
- });
29
- }
30
-
31
- setCacheMetadata(`${MOVIE}.${RELEASE_DATES}`, headers);
32
- return data!.results;
33
- };
32
+ return {
33
+ data: data?.results,
34
+ errors,
35
+ headers,
36
+ };
37
+ });
@@ -8,9 +8,10 @@ import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
8
8
  import { type GraphQLResolveInfo } from 'graphql';
9
9
  import { decode } from 'js-base64';
10
10
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
11
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
11
12
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
12
13
  import { MOVIE, REVIEWS } from '../constants.ts';
13
- import { type Context, type RawMovie, type RawMovieWithAppendToResponse } from '../types.ts';
14
+ import { type Context, type RawMovie } from '../types.ts';
14
15
  import { createMakeCursors, createResourceResolver, cursorCache, resolveMovieReviews } from './movieReviews.ts';
15
16
 
16
17
  const mockedFetch = mockFetch(jest.fn);
@@ -34,22 +35,23 @@ describe('createMakeCursors', () => {
34
35
  });
35
36
 
36
37
  describe('createResourceResolver', () => {
37
- const restClient = {
38
- movie: jest.fn().mockReturnValue({}),
39
- } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>;
38
+ const context = {
39
+ logger: createMockLogger(jest.fn),
40
+ restClient: {
41
+ movie: jest.fn().mockReturnValue({}),
42
+ },
43
+ setCacheMetadata: jest.fn(),
44
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
45
+ } as unknown as Context;
40
46
 
41
- const setCacheMetadata = jest.fn();
47
+ const info = { fieldName: REVIEWS } as GraphQLResolveInfo;
42
48
 
43
49
  it('when `restClient.movie` is called', async () => {
44
- const resourceResolver = createResourceResolver({ id: movieId } as RawMovieWithAppendToResponse, {}, {
45
- restClient,
46
- setCacheMetadata,
47
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
48
- } as unknown as Context);
50
+ const resourceResolver = createResourceResolver({ id: movieId }, {}, context, info);
49
51
 
50
52
  await resourceResolver({ page: 1 });
51
53
 
52
- expect(restClient.movie).toHaveBeenCalledWith(
54
+ expect(context.restClient.movie).toHaveBeenCalledWith(
53
55
  {
54
56
  pathTemplateData: { id: movieId, type: REVIEWS },
55
57
  queryParams: { page: 1 },
@@ -60,8 +62,14 @@ describe('createResourceResolver', () => {
60
62
  });
61
63
 
62
64
  describe('resolveMovieReviews', () => {
63
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
64
- const setCacheMetadata = jest.fn();
65
+ const context = {
66
+ logger: createMockLogger(jest.fn),
67
+ restClient: createRestClient(),
68
+ setCacheMetadata: jest.fn(),
69
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
70
+ } as unknown as Context;
71
+
72
+ const info = { fieldName: REVIEWS } as GraphQLResolveInfo;
65
73
 
66
74
  const mockEndpoint = (page: number, body: Jsonifiable) => {
67
75
  mockedFetch.mockGetOnce(buildEndpoint(MOVIE_PATH, { id: movieId, type: REVIEWS }, { page }), {
@@ -70,30 +78,20 @@ describe('resolveMovieReviews', () => {
70
78
  });
71
79
  };
72
80
 
73
- beforeAll(() => {
74
- restClient = createRestClient();
75
- });
76
-
77
81
  beforeEach(() => {
78
82
  mockEndpoint(1, movieReviews);
79
83
  });
80
84
 
81
85
  afterEach(async () => {
82
86
  mockedFetch.mockReset();
83
- await restClient.cache?.clear();
87
+ await context.restClient.cache?.clear();
84
88
  await cursorCache.clear();
89
+ jest.clearAllMocks();
85
90
  });
86
91
 
87
92
  describe('when the first 5 are requested', () => {
88
93
  it('should return the correct response', async () => {
89
- await expect(
90
- resolveMovieReviews(
91
- { id: movieId } as RawMovieWithAppendToResponse,
92
- { first: 5 },
93
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
94
- {} as GraphQLResolveInfo
95
- )
96
- ).resolves.toMatchSnapshot();
94
+ await expect(resolveMovieReviews({ id: movieId }, { first: 5 }, context, info)).resolves.toMatchSnapshot();
97
95
  });
98
96
  });
99
97
 
@@ -111,14 +109,13 @@ describe('resolveMovieReviews', () => {
111
109
  ...movieDetails,
112
110
  __headers: new Headers(),
113
111
  reviews: rest,
114
- } as unknown as RawMovieWithAppendToResponse & { __headers?: Headers },
112
+ },
115
113
  { first: 5 },
116
114
  {
115
+ ...context,
117
116
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
118
- setCacheMetadata,
119
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
120
- } as unknown as Context,
121
- {} as GraphQLResolveInfo
117
+ },
118
+ info
122
119
  )
123
120
  ).resolves.toMatchSnapshot();
124
121
  });
@@ -135,14 +132,13 @@ describe('resolveMovieReviews', () => {
135
132
  ...movieDetails,
136
133
  __headers: new Headers(),
137
134
  reviews: rest,
138
- } as unknown as RawMovieWithAppendToResponse & { __headers?: Headers },
135
+ },
139
136
  { first: 5 },
140
137
  {
138
+ ...context,
141
139
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
142
- setCacheMetadata,
143
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
144
- } as unknown as Context,
145
- {} as GraphQLResolveInfo
140
+ },
141
+ info
146
142
  );
147
143
 
148
144
  expect(movieFetchMock).not.toHaveBeenCalled();
@@ -1,9 +1,8 @@
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 } from '@graphql-box/connection-resolver';
4
+ import { type CreateResourceResolver, type Getters, makeConnectionResolver } from '@graphql-box/connection-resolver';
5
5
  import { type MovieReviewsArgs } from '@tmdb-graphql-api/schema/types';
6
- import { type FetchResponse } from 'getta';
7
6
  import { encode } from 'js-base64';
8
7
  import { MOVIE, REVIEWS } from '../constants.ts';
9
8
  import {
@@ -25,24 +24,28 @@ export const createMakeCursors = (obj: RawMovie) => {
25
24
  };
26
25
  };
27
26
 
28
- export const createResourceResolver =
29
- (
30
- obj: RawMovieWithAppendToResponse & { __headers?: Headers },
31
- _args: MovieReviewsArgs,
32
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context
33
- ) =>
34
- async ({ page }: { page: number }) => {
35
- if (obj.reviews?.page === page && obj.__headers) {
36
- setCacheMetadata(`${MOVIE}.${REVIEWS}`, obj.__headers);
27
+ const isRawMovieWithReviews = (
28
+ obj: RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
29
+ page: number
30
+ ): obj is RawMovieWithAppendToResponse & { __headers: Headers } =>
31
+ REVIEWS in obj && obj.reviews?.page === page && '__headers' in obj;
37
32
 
33
+ export const createResourceResolver: CreateResourceResolver<
34
+ RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
35
+ MovieReviewsArgs,
36
+ Context,
37
+ RawMovieReviews
38
+ > =
39
+ (obj, _args, { requestID, restClient, tmdbGuestSessionId }: Context) =>
40
+ async ({ page }: { page: number }) => {
41
+ if (isRawMovieWithReviews(obj, page)) {
38
42
  return {
39
43
  data: obj.reviews,
40
- errors: [],
41
44
  headers: obj.__headers,
42
- } as unknown as FetchResponse<RawMovieReviews>;
45
+ };
43
46
  }
44
47
 
45
- const result = await restClient.movie<RawMovieReviews>(
48
+ const { data, errors, headers } = await restClient.movie<RawMovieReviews>(
46
49
  {
47
50
  pathTemplateData: { id: obj.id, type: REVIEWS },
48
51
  queryParams: { page },
@@ -50,11 +53,11 @@ export const createResourceResolver =
50
53
  { requestID, tmdbGuestSessionId }
51
54
  );
52
55
 
53
- if (result.data) {
54
- setCacheMetadata(`${MOVIE}.${REVIEWS}`, result.headers);
55
- }
56
-
57
- return result;
56
+ return {
57
+ data,
58
+ errors,
59
+ headers,
60
+ };
58
61
  };
59
62
 
60
63
  export const cursorCache = new Core({
@@ -65,10 +68,12 @@ export const cursorCache = new Core({
65
68
  });
66
69
 
67
70
  export const getters: Getters<RawMovieReviews, RawReview> = {
68
- nodes: ({ results }) => results,
69
- page: ({ page }) => page,
70
- totalPages: ({ total_pages }) => total_pages,
71
- totalResults: ({ total_results }) => total_results,
71
+ // @ts-expect-error nested identifier is optional when
72
+ // it shouldn't be
73
+ nodes: ({ results = [] }) => results,
74
+ page: ({ page = 0 }) => page,
75
+ totalPages: ({ total_pages = 0 }) => total_pages,
76
+ totalResults: ({ total_results = 0 }) => total_results,
72
77
  };
73
78
 
74
79
  export const resolveMovieReviews = makeConnectionResolver({
@@ -8,9 +8,10 @@ import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
8
8
  import { type GraphQLResolveInfo } from 'graphql';
9
9
  import { decode } from 'js-base64';
10
10
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
11
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
11
12
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
12
13
  import { MOVIE, SIMILAR } from '../constants.ts';
13
- import { type Context, type RawMovie, type RawMovieWithAppendToResponse } from '../types.ts';
14
+ import { type Context, type RawMovie } from '../types.ts';
14
15
  import {
15
16
  createMakeCursors,
16
17
  createResourceResolver,
@@ -21,6 +22,15 @@ import {
21
22
  const mockedFetch = mockFetch(jest.fn);
22
23
  const id = 1891;
23
24
 
25
+ const context = {
26
+ logger: createMockLogger(jest.fn),
27
+ restClient: createRestClient(),
28
+ setCacheMetadata: jest.fn(),
29
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
30
+ } as unknown as Context;
31
+
32
+ const info = { fieldName: SIMILAR } as GraphQLResolveInfo;
33
+
24
34
  describe('createMakeCursors', () => {
25
35
  const GROUP_CURSOR = `${id}::${MOVIE}::${SIMILAR}`;
26
36
 
@@ -43,15 +53,8 @@ describe('createResourceResolver', () => {
43
53
  movie: jest.fn().mockReturnValue({}),
44
54
  } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>;
45
55
 
46
- const setCacheMetadata = jest.fn();
47
-
48
56
  it('when `restClient.movie` is called', async () => {
49
- const resourceResolver = createResourceResolver({ id } as RawMovieWithAppendToResponse, {}, {
50
- restClient,
51
- setCacheMetadata,
52
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
53
- } as unknown as Context);
54
-
57
+ const resourceResolver = createResourceResolver({ id }, {}, { ...context, restClient }, info);
55
58
  await resourceResolver({ page: 1 });
56
59
 
57
60
  expect(restClient.movie).toHaveBeenCalledWith(
@@ -65,9 +68,6 @@ describe('createResourceResolver', () => {
65
68
  });
66
69
 
67
70
  describe('resolveMovieSimilarMovies', () => {
68
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
69
- const setCacheMetadata = jest.fn();
70
-
71
71
  const mockEndpoint = (page: number, body: Jsonifiable) => {
72
72
  mockedFetch.mockGetOnce(buildEndpoint(MOVIE_PATH, { id, type: SIMILAR }, { page }), {
73
73
  body,
@@ -75,49 +75,29 @@ describe('resolveMovieSimilarMovies', () => {
75
75
  });
76
76
  };
77
77
 
78
- beforeAll(() => {
79
- restClient = createRestClient();
80
- });
81
-
82
78
  beforeEach(() => {
83
79
  mockEndpoint(1, movieSimilarMovies);
84
80
  });
85
81
 
86
82
  afterEach(async () => {
87
83
  mockedFetch.mockReset();
88
- await restClient.cache?.clear();
84
+ await context.restClient.cache?.clear();
89
85
  await cursorCache.clear();
86
+ jest.clearAllMocks();
90
87
  });
91
88
 
92
89
  describe('when the first 5 are requested', () => {
93
90
  it('should return the correct response', async () => {
94
- await expect(
95
- resolveMovieSimilarMovies(
96
- { id } as RawMovieWithAppendToResponse,
97
- { first: 5 },
98
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
99
- {} as GraphQLResolveInfo
100
- )
101
- ).resolves.toMatchSnapshot();
91
+ await expect(resolveMovieSimilarMovies({ id }, { first: 5 }, context, info)).resolves.toMatchSnapshot();
102
92
  });
103
93
  });
104
94
 
105
95
  describe('when the second 5 are requested', () => {
106
96
  it('should return the correct response', async () => {
107
- const { pageInfo } = await resolveMovieSimilarMovies(
108
- { id } as RawMovieWithAppendToResponse,
109
- { first: 5 },
110
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
111
- {} as GraphQLResolveInfo
112
- );
97
+ const { pageInfo } = await resolveMovieSimilarMovies({ id }, { first: 5 }, context, info);
113
98
 
114
99
  await expect(
115
- resolveMovieSimilarMovies(
116
- { id } as RawMovieWithAppendToResponse,
117
- { after: pageInfo.endCursor, first: 5 },
118
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
119
- {} as GraphQLResolveInfo
120
- )
100
+ resolveMovieSimilarMovies({ id }, { after: pageInfo.endCursor, first: 5 }, context, info)
121
101
  ).resolves.toMatchSnapshot();
122
102
  });
123
103
  });
@@ -134,14 +114,13 @@ describe('resolveMovieSimilarMovies', () => {
134
114
  ...movieDetails,
135
115
  __headers: new Headers(),
136
116
  similar: movieSimilarMovies,
137
- } as unknown as RawMovieWithAppendToResponse & { __headers?: Headers },
117
+ },
138
118
  { first: 5 },
139
119
  {
120
+ ...context,
140
121
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
141
- setCacheMetadata,
142
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
143
- } as unknown as Context,
144
- {} as GraphQLResolveInfo
122
+ },
123
+ info
145
124
  )
146
125
  ).resolves.toMatchSnapshot();
147
126
  });
@@ -156,14 +135,13 @@ describe('resolveMovieSimilarMovies', () => {
156
135
  ...movieDetails,
157
136
  __headers: new Headers(),
158
137
  similar: movieSimilarMovies,
159
- } as unknown as RawMovieWithAppendToResponse & { __headers?: Headers },
138
+ },
160
139
  { first: 5 },
161
140
  {
141
+ ...context,
162
142
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
163
- setCacheMetadata,
164
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
165
- } as unknown as Context,
166
- {} as GraphQLResolveInfo
143
+ },
144
+ info
167
145
  );
168
146
 
169
147
  expect(movieFetchMock).not.toHaveBeenCalled();
@@ -1,11 +1,10 @@
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 } from '@graphql-box/connection-resolver';
4
+ import { type CreateResourceResolver, type Getters, makeConnectionResolver } from '@graphql-box/connection-resolver';
5
5
  import { type MovieSimilarMoviesArgs } from '@tmdb-graphql-api/schema/types';
6
- import { type FetchResponse } from 'getta';
7
6
  import { encode } from 'js-base64';
8
- import { MOVIE, SIMILAR, SIMILAR_MOVIES } from '../constants.ts';
7
+ import { MOVIE, SIMILAR } from '../constants.ts';
9
8
  import {
10
9
  type Context,
11
10
  type RawMovie,
@@ -24,24 +23,28 @@ export const createMakeCursors = (obj: RawMovie) => {
24
23
  };
25
24
  };
26
25
 
27
- export const createResourceResolver =
28
- (
29
- obj: RawMovieWithAppendToResponse & { __headers?: Headers },
30
- _args: MovieSimilarMoviesArgs,
31
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context
32
- ) =>
33
- async ({ page }: { page: number }) => {
34
- if (obj.similar?.page === page && obj.__headers) {
35
- setCacheMetadata(`${MOVIE}.${SIMILAR_MOVIES}`, obj.__headers);
26
+ const isRawMovieWithSimilarMovies = (
27
+ obj: RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
28
+ page: number
29
+ ): obj is RawMovieWithAppendToResponse & { __headers: Headers } =>
30
+ SIMILAR in obj && obj.similar?.page === page && '__headers' in obj;
36
31
 
32
+ export const createResourceResolver: CreateResourceResolver<
33
+ RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
34
+ MovieSimilarMoviesArgs,
35
+ Context,
36
+ RawMovieSimilarMovies
37
+ > =
38
+ (obj, _args, { requestID, restClient, tmdbGuestSessionId }) =>
39
+ async ({ page }: { page: number }) => {
40
+ if (isRawMovieWithSimilarMovies(obj, page)) {
37
41
  return {
38
42
  data: obj.similar,
39
- errors: [],
40
43
  headers: obj.__headers,
41
- } as unknown as FetchResponse<RawMovieSimilarMovies>;
44
+ };
42
45
  }
43
46
 
44
- const result = await restClient.movie<RawMovieSimilarMovies>(
47
+ const { data, errors, headers } = await restClient.movie<RawMovieSimilarMovies>(
45
48
  {
46
49
  pathTemplateData: { id: obj.id, type: SIMILAR },
47
50
  queryParams: { page },
@@ -49,11 +52,11 @@ export const createResourceResolver =
49
52
  { requestID, tmdbGuestSessionId }
50
53
  );
51
54
 
52
- if (result.data) {
53
- setCacheMetadata(`${MOVIE}.${SIMILAR_MOVIES}`, result.headers);
54
- }
55
-
56
- return result;
55
+ return {
56
+ data,
57
+ errors,
58
+ headers,
59
+ };
57
60
  };
58
61
 
59
62
  export const cursorCache = new Core({
@@ -64,10 +67,11 @@ export const cursorCache = new Core({
64
67
  });
65
68
 
66
69
  export const getters: Getters<RawMovieSimilarMovies, RawMovie> = {
67
- nodes: ({ results }) => results,
68
- page: ({ page }) => page,
69
- totalPages: ({ total_pages }) => total_pages,
70
- totalResults: ({ total_results }) => total_results,
70
+ // @ts-expect-error minor type mismatch
71
+ nodes: ({ results = [] }) => results,
72
+ page: ({ page = 0 }) => page,
73
+ totalPages: ({ total_pages = 0 }) => total_pages,
74
+ totalResults: ({ total_results = 0 }) => total_results,
71
75
  };
72
76
 
73
77
  export const resolveMovieSimilarMovies = makeConnectionResolver({