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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/index.mjs +1 -1
  4. package/dist/esm/index.mjs.map +1 -1
  5. package/dist/production.analysis.txt +506 -413
  6. package/dist/types/cjs/constants.d.cts +3 -0
  7. package/dist/types/cjs/constants.d.cts.map +1 -1
  8. package/dist/types/cjs/helpers/buildArgsResolver.d.cts +9 -0
  9. package/dist/types/cjs/helpers/buildArgsResolver.d.cts.map +1 -0
  10. package/dist/types/cjs/helpers/buildNoObjArgsResolver.d.cts +9 -0
  11. package/dist/types/cjs/helpers/buildNoObjArgsResolver.d.cts.map +1 -0
  12. package/dist/types/cjs/helpers/buildObjArgsResolver.d.cts +9 -0
  13. package/dist/types/cjs/helpers/buildObjArgsResolver.d.cts.map +1 -0
  14. package/dist/types/cjs/helpers/buildObjResolver.d.cts +11 -0
  15. package/dist/types/cjs/helpers/buildObjResolver.d.cts.map +1 -0
  16. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts +4 -3
  17. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts.map +1 -1
  18. package/dist/types/cjs/main.d.cts.map +1 -1
  19. package/dist/types/cjs/queries/certifications.d.cts +429 -4
  20. package/dist/types/cjs/queries/certifications.d.cts.map +1 -1
  21. package/dist/types/cjs/queries/collection.d.cts +61 -3397
  22. package/dist/types/cjs/queries/collection.d.cts.map +1 -1
  23. package/dist/types/cjs/queries/collectionImages.d.cts +40 -13
  24. package/dist/types/cjs/queries/collectionImages.d.cts.map +1 -1
  25. package/dist/types/cjs/queries/collectionTranslations.d.cts +34 -17
  26. package/dist/types/cjs/queries/collectionTranslations.d.cts.map +1 -1
  27. package/dist/types/cjs/queries/company.d.cts +9 -12
  28. package/dist/types/cjs/queries/company.d.cts.map +1 -1
  29. package/dist/types/cjs/queries/companyAlternativeNames.d.cts +27 -9
  30. package/dist/types/cjs/queries/companyAlternativeNames.d.cts.map +1 -1
  31. package/dist/types/cjs/queries/companyLogos.d.cts +19 -13
  32. package/dist/types/cjs/queries/companyLogos.d.cts.map +1 -1
  33. package/dist/types/cjs/queries/configuration.d.cts +11 -14
  34. package/dist/types/cjs/queries/configuration.d.cts.map +1 -1
  35. package/dist/types/cjs/queries/configurationCountries.d.cts +16 -3
  36. package/dist/types/cjs/queries/configurationCountries.d.cts.map +1 -1
  37. package/dist/types/cjs/queries/configurationJobs.d.cts +15 -3
  38. package/dist/types/cjs/queries/configurationJobs.d.cts.map +1 -1
  39. package/dist/types/cjs/queries/configurationLanguages.d.cts +16 -3
  40. package/dist/types/cjs/queries/configurationLanguages.d.cts.map +1 -1
  41. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts +12 -3
  42. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts.map +1 -1
  43. package/dist/types/cjs/queries/configurationTimezones.d.cts +15 -3
  44. package/dist/types/cjs/queries/configurationTimezones.d.cts.map +1 -1
  45. package/dist/types/cjs/queries/credit.d.cts +46 -4197
  46. package/dist/types/cjs/queries/credit.d.cts.map +1 -1
  47. package/dist/types/cjs/queries/discoverMovies.d.cts +2 -4
  48. package/dist/types/cjs/queries/discoverMovies.d.cts.map +1 -1
  49. package/dist/types/cjs/queries/discoverTv.d.cts +2 -4
  50. package/dist/types/cjs/queries/discoverTv.d.cts.map +1 -1
  51. package/dist/types/cjs/queries/episode.d.cts +235 -94
  52. package/dist/types/cjs/queries/episode.d.cts.map +1 -1
  53. package/dist/types/cjs/queries/episodeCredits.d.cts +168 -32
  54. package/dist/types/cjs/queries/episodeCredits.d.cts.map +1 -1
  55. package/dist/types/cjs/queries/episodeExternalIds.d.cts +139 -15
  56. package/dist/types/cjs/queries/episodeExternalIds.d.cts.map +1 -1
  57. package/dist/types/cjs/queries/episodeStills.d.cts +140 -5
  58. package/dist/types/cjs/queries/episodeStills.d.cts.map +1 -1
  59. package/dist/types/cjs/queries/episodeTranslations.d.cts +141 -19
  60. package/dist/types/cjs/queries/episodeTranslations.d.cts.map +1 -1
  61. package/dist/types/cjs/queries/episodeVideos.d.cts +142 -14
  62. package/dist/types/cjs/queries/episodeVideos.d.cts.map +1 -1
  63. package/dist/types/cjs/queries/find.d.cts +10 -1801
  64. package/dist/types/cjs/queries/find.d.cts.map +1 -1
  65. package/dist/types/cjs/queries/genres.d.cts +6 -6
  66. package/dist/types/cjs/queries/genres.d.cts.map +1 -1
  67. package/dist/types/cjs/queries/keyword.d.cts +2 -5
  68. package/dist/types/cjs/queries/keyword.d.cts.map +1 -1
  69. package/dist/types/cjs/queries/movie.d.cts +35 -3588
  70. package/dist/types/cjs/queries/movie.d.cts.map +1 -1
  71. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts +1736 -5
  72. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts.map +1 -1
  73. package/dist/types/cjs/queries/movieCredits.d.cts +1755 -30
  74. package/dist/types/cjs/queries/movieCredits.d.cts.map +1 -1
  75. package/dist/types/cjs/queries/movieExternalIds.d.cts +1738 -15
  76. package/dist/types/cjs/queries/movieExternalIds.d.cts.map +1 -1
  77. package/dist/types/cjs/queries/movieImages.d.cts +1756 -5
  78. package/dist/types/cjs/queries/movieImages.d.cts.map +1 -1
  79. package/dist/types/cjs/queries/movieKeywords.d.cts +1735 -5
  80. package/dist/types/cjs/queries/movieKeywords.d.cts.map +1 -1
  81. package/dist/types/cjs/queries/movieRecommendations.d.cts +1728 -1848
  82. package/dist/types/cjs/queries/movieRecommendations.d.cts.map +1 -1
  83. package/dist/types/cjs/queries/movieReleaseDates.d.cts +1742 -12
  84. package/dist/types/cjs/queries/movieReleaseDates.d.cts.map +1 -1
  85. package/dist/types/cjs/queries/movieReviews.d.cts +1728 -1848
  86. package/dist/types/cjs/queries/movieReviews.d.cts.map +1 -1
  87. package/dist/types/cjs/queries/movieSimilarMovies.d.cts +1728 -1848
  88. package/dist/types/cjs/queries/movieSimilarMovies.d.cts.map +1 -1
  89. package/dist/types/cjs/queries/movieTranslations.d.cts +1744 -19
  90. package/dist/types/cjs/queries/movieTranslations.d.cts.map +1 -1
  91. package/dist/types/cjs/queries/movieVideos.d.cts +1741 -13
  92. package/dist/types/cjs/queries/movieVideos.d.cts.map +1 -1
  93. package/dist/types/cjs/queries/movieWatchProviders.d.cts +3205 -1373
  94. package/dist/types/cjs/queries/movieWatchProviders.d.cts.map +1 -1
  95. package/dist/types/cjs/queries/network.d.cts +14 -23
  96. package/dist/types/cjs/queries/network.d.cts.map +1 -1
  97. package/dist/types/cjs/queries/networkAlternativeNames.d.cts +11 -9
  98. package/dist/types/cjs/queries/networkAlternativeNames.d.cts.map +1 -1
  99. package/dist/types/cjs/queries/networkLogos.d.cts +17 -13
  100. package/dist/types/cjs/queries/networkLogos.d.cts.map +1 -1
  101. package/dist/types/cjs/queries/person.d.cts +13 -41
  102. package/dist/types/cjs/queries/person.d.cts.map +1 -1
  103. package/dist/types/cjs/queries/personCombinedCredits.d.cts +233 -5
  104. package/dist/types/cjs/queries/personCombinedCredits.d.cts.map +1 -1
  105. package/dist/types/cjs/queries/personExternalIds.d.cts +203 -5
  106. package/dist/types/cjs/queries/personExternalIds.d.cts.map +1 -1
  107. package/dist/types/cjs/queries/personMovieCredits.d.cts +231 -5
  108. package/dist/types/cjs/queries/personMovieCredits.d.cts.map +1 -1
  109. package/dist/types/cjs/queries/personProfiles.d.cts +200 -5
  110. package/dist/types/cjs/queries/personProfiles.d.cts.map +1 -1
  111. package/dist/types/cjs/queries/personTranslations.d.cts +201 -19
  112. package/dist/types/cjs/queries/personTranslations.d.cts.map +1 -1
  113. package/dist/types/cjs/queries/personTvCredits.d.cts +232 -5
  114. package/dist/types/cjs/queries/personTvCredits.d.cts.map +1 -1
  115. package/dist/types/cjs/queries/rated.d.cts +6 -8
  116. package/dist/types/cjs/queries/rated.d.cts.map +1 -1
  117. package/dist/types/cjs/queries/review.d.cts +37 -23
  118. package/dist/types/cjs/queries/review.d.cts.map +1 -1
  119. package/dist/types/cjs/queries/search.d.cts +6 -8
  120. package/dist/types/cjs/queries/search.d.cts.map +1 -1
  121. package/dist/types/cjs/queries/season.d.cts +233 -282
  122. package/dist/types/cjs/queries/season.d.cts.map +1 -1
  123. package/dist/types/cjs/queries/seasonCredits.d.cts +152 -32
  124. package/dist/types/cjs/queries/seasonCredits.d.cts.map +1 -1
  125. package/dist/types/cjs/queries/seasonEpisodeCount.d.cts.map +1 -1
  126. package/dist/types/cjs/queries/seasonExternalIds.d.cts +134 -5
  127. package/dist/types/cjs/queries/seasonExternalIds.d.cts.map +1 -1
  128. package/dist/types/cjs/queries/seasonPosters.d.cts +136 -5
  129. package/dist/types/cjs/queries/seasonPosters.d.cts.map +1 -1
  130. package/dist/types/cjs/queries/seasonTranslations.d.cts +137 -19
  131. package/dist/types/cjs/queries/seasonTranslations.d.cts.map +1 -1
  132. package/dist/types/cjs/queries/seasonVideos.d.cts +138 -14
  133. package/dist/types/cjs/queries/seasonVideos.d.cts.map +1 -1
  134. package/dist/types/cjs/queries/trending.d.cts +5 -7
  135. package/dist/types/cjs/queries/trending.d.cts.map +1 -1
  136. package/dist/types/cjs/queries/tv.d.cts +79 -10478
  137. package/dist/types/cjs/queries/tv.d.cts.map +1 -1
  138. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts +1273 -10
  139. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts.map +1 -1
  140. package/dist/types/cjs/queries/tvContentRatings.d.cts +1273 -8
  141. package/dist/types/cjs/queries/tvContentRatings.d.cts.map +1 -1
  142. package/dist/types/cjs/queries/tvCredits.d.cts +1292 -30
  143. package/dist/types/cjs/queries/tvCredits.d.cts.map +1 -1
  144. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts +1280 -37
  145. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts.map +1 -1
  146. package/dist/types/cjs/queries/tvExternalIds.d.cts +1280 -15
  147. package/dist/types/cjs/queries/tvExternalIds.d.cts.map +1 -1
  148. package/dist/types/cjs/queries/tvImages.d.cts +1294 -15
  149. package/dist/types/cjs/queries/tvImages.d.cts.map +1 -1
  150. package/dist/types/cjs/queries/tvKeywords.d.cts +1271 -7
  151. package/dist/types/cjs/queries/tvKeywords.d.cts.map +1 -1
  152. package/dist/types/cjs/queries/tvRecommendations.d.cts +1264 -5365
  153. package/dist/types/cjs/queries/tvRecommendations.d.cts.map +1 -1
  154. package/dist/types/cjs/queries/tvReviews.d.cts +1264 -5365
  155. package/dist/types/cjs/queries/tvReviews.d.cts.map +1 -1
  156. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts +1264 -5365
  157. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts.map +1 -1
  158. package/dist/types/cjs/queries/tvTranslations.d.cts +1280 -18
  159. package/dist/types/cjs/queries/tvTranslations.d.cts.map +1 -1
  160. package/dist/types/cjs/queries/tvVideos.d.cts +1279 -13
  161. package/dist/types/cjs/queries/tvVideos.d.cts.map +1 -1
  162. package/dist/types/cjs/queries/tvWatchProviders.d.cts +2174 -1371
  163. package/dist/types/cjs/queries/tvWatchProviders.d.cts.map +1 -1
  164. package/dist/types/cjs/queries/videoType.d.cts +2 -2
  165. package/dist/types/cjs/queries/videoType.d.cts.map +1 -1
  166. package/dist/types/cjs/types.d.cts +130 -297
  167. package/dist/types/cjs/types.d.cts.map +1 -1
  168. package/dist/types/esm/constants.d.ts +3 -0
  169. package/dist/types/esm/constants.d.ts.map +1 -1
  170. package/dist/types/esm/helpers/buildArgsResolver.d.ts +9 -0
  171. package/dist/types/esm/helpers/buildArgsResolver.d.ts.map +1 -0
  172. package/dist/types/esm/helpers/buildNoObjArgsResolver.d.ts +9 -0
  173. package/dist/types/esm/helpers/buildNoObjArgsResolver.d.ts.map +1 -0
  174. package/dist/types/esm/helpers/buildObjArgsResolver.d.ts +9 -0
  175. package/dist/types/esm/helpers/buildObjArgsResolver.d.ts.map +1 -0
  176. package/dist/types/esm/helpers/buildObjResolver.d.ts +11 -0
  177. package/dist/types/esm/helpers/buildObjResolver.d.ts.map +1 -0
  178. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts +4 -3
  179. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts.map +1 -1
  180. package/dist/types/esm/main.d.ts.map +1 -1
  181. package/dist/types/esm/queries/certifications.d.ts +429 -4
  182. package/dist/types/esm/queries/certifications.d.ts.map +1 -1
  183. package/dist/types/esm/queries/collection.d.ts +61 -3397
  184. package/dist/types/esm/queries/collection.d.ts.map +1 -1
  185. package/dist/types/esm/queries/collectionImages.d.ts +40 -13
  186. package/dist/types/esm/queries/collectionImages.d.ts.map +1 -1
  187. package/dist/types/esm/queries/collectionTranslations.d.ts +34 -17
  188. package/dist/types/esm/queries/collectionTranslations.d.ts.map +1 -1
  189. package/dist/types/esm/queries/company.d.ts +9 -12
  190. package/dist/types/esm/queries/company.d.ts.map +1 -1
  191. package/dist/types/esm/queries/companyAlternativeNames.d.ts +27 -9
  192. package/dist/types/esm/queries/companyAlternativeNames.d.ts.map +1 -1
  193. package/dist/types/esm/queries/companyLogos.d.ts +19 -13
  194. package/dist/types/esm/queries/companyLogos.d.ts.map +1 -1
  195. package/dist/types/esm/queries/configuration.d.ts +11 -14
  196. package/dist/types/esm/queries/configuration.d.ts.map +1 -1
  197. package/dist/types/esm/queries/configurationCountries.d.ts +16 -3
  198. package/dist/types/esm/queries/configurationCountries.d.ts.map +1 -1
  199. package/dist/types/esm/queries/configurationJobs.d.ts +15 -3
  200. package/dist/types/esm/queries/configurationJobs.d.ts.map +1 -1
  201. package/dist/types/esm/queries/configurationLanguages.d.ts +16 -3
  202. package/dist/types/esm/queries/configurationLanguages.d.ts.map +1 -1
  203. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts +12 -3
  204. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts.map +1 -1
  205. package/dist/types/esm/queries/configurationTimezones.d.ts +15 -3
  206. package/dist/types/esm/queries/configurationTimezones.d.ts.map +1 -1
  207. package/dist/types/esm/queries/credit.d.ts +46 -4197
  208. package/dist/types/esm/queries/credit.d.ts.map +1 -1
  209. package/dist/types/esm/queries/discoverMovies.d.ts +2 -4
  210. package/dist/types/esm/queries/discoverMovies.d.ts.map +1 -1
  211. package/dist/types/esm/queries/discoverTv.d.ts +2 -4
  212. package/dist/types/esm/queries/discoverTv.d.ts.map +1 -1
  213. package/dist/types/esm/queries/episode.d.ts +235 -94
  214. package/dist/types/esm/queries/episode.d.ts.map +1 -1
  215. package/dist/types/esm/queries/episodeCredits.d.ts +168 -32
  216. package/dist/types/esm/queries/episodeCredits.d.ts.map +1 -1
  217. package/dist/types/esm/queries/episodeExternalIds.d.ts +139 -15
  218. package/dist/types/esm/queries/episodeExternalIds.d.ts.map +1 -1
  219. package/dist/types/esm/queries/episodeStills.d.ts +140 -5
  220. package/dist/types/esm/queries/episodeStills.d.ts.map +1 -1
  221. package/dist/types/esm/queries/episodeTranslations.d.ts +141 -19
  222. package/dist/types/esm/queries/episodeTranslations.d.ts.map +1 -1
  223. package/dist/types/esm/queries/episodeVideos.d.ts +142 -14
  224. package/dist/types/esm/queries/episodeVideos.d.ts.map +1 -1
  225. package/dist/types/esm/queries/find.d.ts +10 -1801
  226. package/dist/types/esm/queries/find.d.ts.map +1 -1
  227. package/dist/types/esm/queries/genres.d.ts +6 -6
  228. package/dist/types/esm/queries/genres.d.ts.map +1 -1
  229. package/dist/types/esm/queries/keyword.d.ts +2 -5
  230. package/dist/types/esm/queries/keyword.d.ts.map +1 -1
  231. package/dist/types/esm/queries/movie.d.ts +35 -3588
  232. package/dist/types/esm/queries/movie.d.ts.map +1 -1
  233. package/dist/types/esm/queries/movieAlternativeTitles.d.ts +1736 -5
  234. package/dist/types/esm/queries/movieAlternativeTitles.d.ts.map +1 -1
  235. package/dist/types/esm/queries/movieCredits.d.ts +1755 -30
  236. package/dist/types/esm/queries/movieCredits.d.ts.map +1 -1
  237. package/dist/types/esm/queries/movieExternalIds.d.ts +1738 -15
  238. package/dist/types/esm/queries/movieExternalIds.d.ts.map +1 -1
  239. package/dist/types/esm/queries/movieImages.d.ts +1756 -5
  240. package/dist/types/esm/queries/movieImages.d.ts.map +1 -1
  241. package/dist/types/esm/queries/movieKeywords.d.ts +1735 -5
  242. package/dist/types/esm/queries/movieKeywords.d.ts.map +1 -1
  243. package/dist/types/esm/queries/movieRecommendations.d.ts +1728 -1848
  244. package/dist/types/esm/queries/movieRecommendations.d.ts.map +1 -1
  245. package/dist/types/esm/queries/movieReleaseDates.d.ts +1742 -12
  246. package/dist/types/esm/queries/movieReleaseDates.d.ts.map +1 -1
  247. package/dist/types/esm/queries/movieReviews.d.ts +1728 -1848
  248. package/dist/types/esm/queries/movieReviews.d.ts.map +1 -1
  249. package/dist/types/esm/queries/movieSimilarMovies.d.ts +1728 -1848
  250. package/dist/types/esm/queries/movieSimilarMovies.d.ts.map +1 -1
  251. package/dist/types/esm/queries/movieTranslations.d.ts +1744 -19
  252. package/dist/types/esm/queries/movieTranslations.d.ts.map +1 -1
  253. package/dist/types/esm/queries/movieVideos.d.ts +1741 -13
  254. package/dist/types/esm/queries/movieVideos.d.ts.map +1 -1
  255. package/dist/types/esm/queries/movieWatchProviders.d.ts +3205 -1373
  256. package/dist/types/esm/queries/movieWatchProviders.d.ts.map +1 -1
  257. package/dist/types/esm/queries/network.d.ts +14 -23
  258. package/dist/types/esm/queries/network.d.ts.map +1 -1
  259. package/dist/types/esm/queries/networkAlternativeNames.d.ts +11 -9
  260. package/dist/types/esm/queries/networkAlternativeNames.d.ts.map +1 -1
  261. package/dist/types/esm/queries/networkLogos.d.ts +17 -13
  262. package/dist/types/esm/queries/networkLogos.d.ts.map +1 -1
  263. package/dist/types/esm/queries/person.d.ts +13 -41
  264. package/dist/types/esm/queries/person.d.ts.map +1 -1
  265. package/dist/types/esm/queries/personCombinedCredits.d.ts +233 -5
  266. package/dist/types/esm/queries/personCombinedCredits.d.ts.map +1 -1
  267. package/dist/types/esm/queries/personExternalIds.d.ts +203 -5
  268. package/dist/types/esm/queries/personExternalIds.d.ts.map +1 -1
  269. package/dist/types/esm/queries/personMovieCredits.d.ts +231 -5
  270. package/dist/types/esm/queries/personMovieCredits.d.ts.map +1 -1
  271. package/dist/types/esm/queries/personProfiles.d.ts +200 -5
  272. package/dist/types/esm/queries/personProfiles.d.ts.map +1 -1
  273. package/dist/types/esm/queries/personTranslations.d.ts +201 -19
  274. package/dist/types/esm/queries/personTranslations.d.ts.map +1 -1
  275. package/dist/types/esm/queries/personTvCredits.d.ts +232 -5
  276. package/dist/types/esm/queries/personTvCredits.d.ts.map +1 -1
  277. package/dist/types/esm/queries/rated.d.ts +6 -8
  278. package/dist/types/esm/queries/rated.d.ts.map +1 -1
  279. package/dist/types/esm/queries/review.d.ts +37 -23
  280. package/dist/types/esm/queries/review.d.ts.map +1 -1
  281. package/dist/types/esm/queries/search.d.ts +6 -8
  282. package/dist/types/esm/queries/search.d.ts.map +1 -1
  283. package/dist/types/esm/queries/season.d.ts +233 -282
  284. package/dist/types/esm/queries/season.d.ts.map +1 -1
  285. package/dist/types/esm/queries/seasonCredits.d.ts +152 -32
  286. package/dist/types/esm/queries/seasonCredits.d.ts.map +1 -1
  287. package/dist/types/esm/queries/seasonEpisodeCount.d.ts.map +1 -1
  288. package/dist/types/esm/queries/seasonExternalIds.d.ts +134 -5
  289. package/dist/types/esm/queries/seasonExternalIds.d.ts.map +1 -1
  290. package/dist/types/esm/queries/seasonPosters.d.ts +136 -5
  291. package/dist/types/esm/queries/seasonPosters.d.ts.map +1 -1
  292. package/dist/types/esm/queries/seasonTranslations.d.ts +137 -19
  293. package/dist/types/esm/queries/seasonTranslations.d.ts.map +1 -1
  294. package/dist/types/esm/queries/seasonVideos.d.ts +138 -14
  295. package/dist/types/esm/queries/seasonVideos.d.ts.map +1 -1
  296. package/dist/types/esm/queries/trending.d.ts +5 -7
  297. package/dist/types/esm/queries/trending.d.ts.map +1 -1
  298. package/dist/types/esm/queries/tv.d.ts +79 -10478
  299. package/dist/types/esm/queries/tv.d.ts.map +1 -1
  300. package/dist/types/esm/queries/tvAlternativeTitles.d.ts +1273 -10
  301. package/dist/types/esm/queries/tvAlternativeTitles.d.ts.map +1 -1
  302. package/dist/types/esm/queries/tvContentRatings.d.ts +1273 -8
  303. package/dist/types/esm/queries/tvContentRatings.d.ts.map +1 -1
  304. package/dist/types/esm/queries/tvCredits.d.ts +1292 -30
  305. package/dist/types/esm/queries/tvCredits.d.ts.map +1 -1
  306. package/dist/types/esm/queries/tvEpisodeGroups.d.ts +1280 -37
  307. package/dist/types/esm/queries/tvEpisodeGroups.d.ts.map +1 -1
  308. package/dist/types/esm/queries/tvExternalIds.d.ts +1280 -15
  309. package/dist/types/esm/queries/tvExternalIds.d.ts.map +1 -1
  310. package/dist/types/esm/queries/tvImages.d.ts +1294 -15
  311. package/dist/types/esm/queries/tvImages.d.ts.map +1 -1
  312. package/dist/types/esm/queries/tvKeywords.d.ts +1271 -7
  313. package/dist/types/esm/queries/tvKeywords.d.ts.map +1 -1
  314. package/dist/types/esm/queries/tvRecommendations.d.ts +1264 -5365
  315. package/dist/types/esm/queries/tvRecommendations.d.ts.map +1 -1
  316. package/dist/types/esm/queries/tvReviews.d.ts +1264 -5365
  317. package/dist/types/esm/queries/tvReviews.d.ts.map +1 -1
  318. package/dist/types/esm/queries/tvSimilarTvShows.d.ts +1264 -5365
  319. package/dist/types/esm/queries/tvSimilarTvShows.d.ts.map +1 -1
  320. package/dist/types/esm/queries/tvTranslations.d.ts +1280 -18
  321. package/dist/types/esm/queries/tvTranslations.d.ts.map +1 -1
  322. package/dist/types/esm/queries/tvVideos.d.ts +1279 -13
  323. package/dist/types/esm/queries/tvVideos.d.ts.map +1 -1
  324. package/dist/types/esm/queries/tvWatchProviders.d.ts +2174 -1371
  325. package/dist/types/esm/queries/tvWatchProviders.d.ts.map +1 -1
  326. package/dist/types/esm/queries/videoType.d.ts +2 -2
  327. package/dist/types/esm/queries/videoType.d.ts.map +1 -1
  328. package/dist/types/esm/types.d.ts +130 -297
  329. package/dist/types/esm/types.d.ts.map +1 -1
  330. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  331. package/package.json +12 -11
  332. package/src/__testUtils__/helpers/createMockLogger.ts +10 -0
  333. package/src/constants.ts +3 -0
  334. package/src/helpers/__snapshots__/typePropNames.test.ts.snap +0 -2
  335. package/src/helpers/buildArgsResolver.ts +37 -0
  336. package/src/helpers/buildNoObjArgsResolver.ts +36 -0
  337. package/src/helpers/buildObjArgsResolver.ts +43 -0
  338. package/src/helpers/buildObjResolver.ts +48 -0
  339. package/src/helpers/getTvIdSeasonAndEpisode.ts +12 -8
  340. package/src/main.ts +5 -11
  341. package/src/queries/__snapshots__/episode.test.ts.snap +1 -2
  342. package/src/queries/__snapshots__/season.test.ts.snap +1 -2
  343. package/src/queries/certifications.test.ts +13 -20
  344. package/src/queries/certifications.ts +21 -24
  345. package/src/queries/collection.test.ts +13 -16
  346. package/src/queries/collection.ts +20 -23
  347. package/src/queries/collectionImages.test.ts +16 -24
  348. package/src/queries/collectionImages.ts +16 -19
  349. package/src/queries/collectionTranslations.test.ts +29 -17
  350. package/src/queries/collectionTranslations.ts +19 -23
  351. package/src/queries/company.test.ts +13 -16
  352. package/src/queries/company.ts +20 -23
  353. package/src/queries/companyAlternativeNames.test.ts +34 -19
  354. package/src/queries/companyAlternativeNames.ts +19 -23
  355. package/src/queries/companyLogos.test.ts +29 -19
  356. package/src/queries/companyLogos.ts +13 -21
  357. package/src/queries/configuration.test.ts +12 -16
  358. package/src/queries/configuration.ts +11 -15
  359. package/src/queries/configurationCountries.test.ts +27 -17
  360. package/src/queries/configurationCountries.ts +19 -23
  361. package/src/queries/configurationJobs.test.ts +27 -17
  362. package/src/queries/configurationJobs.ts +19 -23
  363. package/src/queries/configurationLanguages.test.ts +27 -17
  364. package/src/queries/configurationLanguages.ts +19 -23
  365. package/src/queries/configurationPrimaryTranslations.test.ts +26 -17
  366. package/src/queries/configurationPrimaryTranslations.ts +14 -18
  367. package/src/queries/configurationTimezones.test.ts +27 -17
  368. package/src/queries/configurationTimezones.ts +19 -23
  369. package/src/queries/credit.test.ts +13 -16
  370. package/src/queries/credit.ts +12 -15
  371. package/src/queries/discoverMovies.test.ts +35 -81
  372. package/src/queries/discoverMovies.ts +21 -20
  373. package/src/queries/discoverTv.test.ts +29 -43
  374. package/src/queries/discoverTv.ts +16 -21
  375. package/src/queries/episode.test.ts +16 -17
  376. package/src/queries/episode.ts +36 -36
  377. package/src/queries/episodeCredits.test.ts +35 -67
  378. package/src/queries/episodeCredits.ts +29 -22
  379. package/src/queries/episodeExternalIds.test.ts +27 -39
  380. package/src/queries/episodeExternalIds.ts +35 -23
  381. package/src/queries/episodeStills.test.ts +28 -41
  382. package/src/queries/episodeStills.ts +32 -22
  383. package/src/queries/episodeTranslations.test.ts +26 -34
  384. package/src/queries/episodeTranslations.ts +29 -22
  385. package/src/queries/episodeVideos.test.ts +28 -41
  386. package/src/queries/episodeVideos.ts +29 -22
  387. package/src/queries/find.test.ts +13 -16
  388. package/src/queries/find.ts +25 -22
  389. package/src/queries/genres.test.ts +13 -22
  390. package/src/queries/genres.ts +13 -19
  391. package/src/queries/keyword.test.ts +13 -16
  392. package/src/queries/keyword.ts +12 -15
  393. package/src/queries/movie.test.ts +16 -20
  394. package/src/queries/movie.ts +20 -21
  395. package/src/queries/movieAlternativeTitles.test.ts +24 -30
  396. package/src/queries/movieAlternativeTitles.ts +34 -22
  397. package/src/queries/movieCredits.test.ts +27 -45
  398. package/src/queries/movieCredits.ts +24 -21
  399. package/src/queries/movieExternalIds.test.ts +22 -29
  400. package/src/queries/movieExternalIds.ts +26 -21
  401. package/src/queries/movieImages.test.ts +28 -46
  402. package/src/queries/movieImages.ts +26 -23
  403. package/src/queries/movieKeywords.test.ts +21 -26
  404. package/src/queries/movieKeywords.ts +24 -21
  405. package/src/queries/movieRecommendations.test.ts +27 -49
  406. package/src/queries/movieRecommendations.ts +27 -23
  407. package/src/queries/movieReleaseDates.test.ts +24 -28
  408. package/src/queries/movieReleaseDates.ts +25 -21
  409. package/src/queries/movieReviews.test.ts +32 -36
  410. package/src/queries/movieReviews.ts +28 -23
  411. package/src/queries/movieSimilarMovies.test.ts +25 -47
  412. package/src/queries/movieSimilarMovies.ts +28 -24
  413. package/src/queries/movieTranslations.test.ts +20 -25
  414. package/src/queries/movieTranslations.ts +24 -21
  415. package/src/queries/movieVideos.test.ts +22 -29
  416. package/src/queries/movieVideos.ts +24 -21
  417. package/src/queries/movieWatchProviders.test.ts +19 -27
  418. package/src/queries/movieWatchProviders.ts +26 -23
  419. package/src/queries/network.test.ts +13 -16
  420. package/src/queries/network.ts +20 -23
  421. package/src/queries/networkAlternativeNames.test.ts +16 -18
  422. package/src/queries/networkAlternativeNames.ts +19 -23
  423. package/src/queries/networkLogos.test.ts +14 -15
  424. package/src/queries/networkLogos.ts +13 -20
  425. package/src/queries/person.test.ts +16 -20
  426. package/src/queries/person.ts +20 -21
  427. package/src/queries/personCombinedCredits.test.ts +26 -26
  428. package/src/queries/personCombinedCredits.ts +27 -21
  429. package/src/queries/personExternalIds.test.ts +26 -26
  430. package/src/queries/personExternalIds.ts +27 -21
  431. package/src/queries/personMovieCredits.test.ts +26 -26
  432. package/src/queries/personMovieCredits.ts +27 -21
  433. package/src/queries/personProfiles.test.ts +22 -26
  434. package/src/queries/personProfiles.ts +25 -22
  435. package/src/queries/personTranslations.test.ts +22 -25
  436. package/src/queries/personTranslations.ts +24 -21
  437. package/src/queries/personTvCredits.test.ts +28 -28
  438. package/src/queries/personTvCredits.ts +26 -21
  439. package/src/queries/rated.test.ts +33 -69
  440. package/src/queries/rated.ts +31 -20
  441. package/src/queries/review.test.ts +13 -16
  442. package/src/queries/review.ts +27 -31
  443. package/src/queries/search.test.ts +53 -107
  444. package/src/queries/search.ts +42 -20
  445. package/src/queries/season.test.ts +16 -17
  446. package/src/queries/season.ts +34 -44
  447. package/src/queries/seasonCredits.test.ts +36 -45
  448. package/src/queries/seasonCredits.ts +27 -23
  449. package/src/queries/seasonEpisodeCount.ts +0 -4
  450. package/src/queries/seasonExternalIds.test.ts +25 -28
  451. package/src/queries/seasonExternalIds.ts +32 -22
  452. package/src/queries/seasonPosters.test.ts +25 -30
  453. package/src/queries/seasonPosters.ts +25 -22
  454. package/src/queries/seasonTranslations.test.ts +21 -27
  455. package/src/queries/seasonTranslations.ts +29 -22
  456. package/src/queries/seasonVideos.test.ts +23 -28
  457. package/src/queries/seasonVideos.ts +25 -22
  458. package/src/queries/trending.test.ts +28 -60
  459. package/src/queries/trending.ts +42 -20
  460. package/src/queries/tv.test.ts +16 -20
  461. package/src/queries/tv.ts +26 -34
  462. package/src/queries/tvAlternativeTitles.test.ts +25 -28
  463. package/src/queries/tvAlternativeTitles.ts +25 -22
  464. package/src/queries/tvContentRatings.test.ts +25 -28
  465. package/src/queries/tvContentRatings.ts +24 -22
  466. package/src/queries/tvCredits.test.ts +38 -44
  467. package/src/queries/tvCredits.ts +24 -21
  468. package/src/queries/tvEpisodeGroups.test.ts +25 -28
  469. package/src/queries/tvEpisodeGroups.ts +24 -21
  470. package/src/queries/tvExternalIds.test.ts +25 -28
  471. package/src/queries/tvExternalIds.ts +26 -21
  472. package/src/queries/tvImages.test.ts +36 -46
  473. package/src/queries/tvImages.ts +26 -23
  474. package/src/queries/tvKeywords.test.ts +24 -28
  475. package/src/queries/tvKeywords.ts +24 -21
  476. package/src/queries/tvRecommendations.test.ts +29 -49
  477. package/src/queries/tvRecommendations.ts +28 -22
  478. package/src/queries/tvReviews.test.ts +37 -48
  479. package/src/queries/tvReviews.ts +27 -23
  480. package/src/queries/tvSimilarTvShows.test.ts +37 -48
  481. package/src/queries/tvSimilarTvShows.ts +28 -24
  482. package/src/queries/tvTranslations.test.ts +24 -28
  483. package/src/queries/tvTranslations.ts +24 -21
  484. package/src/queries/tvVideos.test.ts +24 -28
  485. package/src/queries/tvVideos.ts +24 -21
  486. package/src/queries/tvWatchProviders.test.ts +24 -28
  487. package/src/queries/tvWatchProviders.ts +26 -23
  488. package/src/queries/videoType.ts +2 -2
  489. package/src/types.ts +226 -391
@@ -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, RECOMMENDATIONS } from '../constants.ts';
13
- import { type Context, type RawMovie, type RawMovieWithAppendToResponse } from '../types.ts';
14
+ import { type Context } from '../types.ts';
14
15
  import {
15
16
  createMakeCursors,
16
17
  createResourceResolver,
@@ -21,18 +22,27 @@ 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: RECOMMENDATIONS } as GraphQLResolveInfo;
33
+
24
34
  describe('createMakeCursors', () => {
25
35
  const GROUP_CURSOR = `${id}::${MOVIE}::${RECOMMENDATIONS}`;
26
36
 
27
37
  it('makeGroupCursor', () => {
28
- const { makeGroupCursor } = createMakeCursors({ id } as unknown as RawMovie);
38
+ const { makeGroupCursor } = createMakeCursors({ id });
29
39
  const groupCursor = makeGroupCursor();
30
40
  expect(decode(groupCursor)).toBe(GROUP_CURSOR);
31
41
  });
32
42
 
33
43
  it('makeIDCursor', () => {
34
44
  const recommendationMovieId = '6';
35
- const { makeIDCursor } = createMakeCursors({ id } as unknown as RawMovie);
45
+ const { makeIDCursor } = createMakeCursors({ id });
36
46
  const idCursor = makeIDCursor(recommendationMovieId);
37
47
  expect(decode(idCursor)).toBe(`${recommendationMovieId}::${GROUP_CURSOR}`);
38
48
  });
@@ -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('resolveMovieRecommendations', () => {
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: RECOMMENDATIONS }, { page }), {
73
73
  body,
@@ -75,49 +75,29 @@ describe('resolveMovieRecommendations', () => {
75
75
  });
76
76
  };
77
77
 
78
- beforeAll(() => {
79
- restClient = createRestClient();
80
- });
81
-
82
78
  beforeEach(() => {
83
79
  mockEndpoint(1, movieRecommendations);
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
- resolveMovieRecommendations(
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(resolveMovieRecommendations({ 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 resolveMovieRecommendations(
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 resolveMovieRecommendations({ id }, { first: 5 }, context, info);
113
98
 
114
99
  await expect(
115
- resolveMovieRecommendations(
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
+ resolveMovieRecommendations({ id }, { after: pageInfo.endCursor, first: 5 }, context, info)
121
101
  ).resolves.toMatchSnapshot();
122
102
  });
123
103
  });
@@ -134,14 +114,13 @@ describe('resolveMovieRecommendations', () => {
134
114
  ...movieDetails,
135
115
  __headers: new Headers(),
136
116
  recommendations: movieRecommendations,
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('resolveMovieRecommendations', () => {
156
135
  ...movieDetails,
157
136
  __headers: new Headers(),
158
137
  recommendations: movieRecommendations,
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,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 MovieRecommendationsArgs } from '@tmdb-graphql-api/schema/types';
6
- import { type FetchResponse } from 'getta';
7
6
  import { encode } from 'js-base64';
8
7
  import { MOVIE, RECOMMENDATIONS } from '../constants.ts';
9
8
  import {
@@ -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: MovieRecommendationsArgs,
31
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context
32
- ) =>
33
- async ({ page }: { page: number }) => {
34
- if (obj.recommendations?.page === page && obj.__headers) {
35
- setCacheMetadata(`${MOVIE}.${RECOMMENDATIONS}`, obj.__headers);
26
+ const isRawMovieWithRecommendations = (
27
+ obj: RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
28
+ page: number
29
+ ): obj is RawMovieWithAppendToResponse & { __headers: Headers } =>
30
+ RECOMMENDATIONS in obj && obj.recommendations?.page === page && '__headers' in obj;
36
31
 
32
+ export const createResourceResolver: CreateResourceResolver<
33
+ RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
34
+ MovieRecommendationsArgs,
35
+ Context,
36
+ RawMovieRecommendations
37
+ > =
38
+ (obj, _args, { requestID, restClient, tmdbGuestSessionId }) =>
39
+ async ({ page }) => {
40
+ if (isRawMovieWithRecommendations(obj, page)) {
37
41
  return {
38
42
  data: obj.recommendations,
39
- errors: [],
40
43
  headers: obj.__headers,
41
- } as unknown as FetchResponse<RawMovieRecommendations>;
44
+ };
42
45
  }
43
46
 
44
- const result = await restClient.movie<RawMovieRecommendations>(
47
+ const { data, errors, headers } = await restClient.movie<RawMovieRecommendations>(
45
48
  {
46
49
  pathTemplateData: { id: obj.id, type: RECOMMENDATIONS },
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}.${RECOMMENDATIONS}`, 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<RawMovieRecommendations, 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 resolveMovieRecommendations = makeConnectionResolver({
@@ -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({