@tmdb-graphql-api/resolvers 0.1.0 → 0.1.1-unstable.1

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 +514 -421
  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 +12 -11
  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
@@ -7,64 +7,54 @@ import { mockFetch } from 'fetch-mocked';
7
7
  import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
8
8
  import { type GraphQLResolveInfo } from 'graphql';
9
9
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
10
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
10
11
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
11
- import { type Context, type RawMovieWithAppendToResponse } from '../types.ts';
12
+ import { BACKDROPS, IMAGES, LOGOS } from '../constants.ts';
13
+ import { type Context } from '../types.ts';
12
14
  import { resolveMovieImages } from './movieImages.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveMovieImages >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
19
  const movieId = 1891;
20
20
 
21
- beforeAll(() => {
22
- restClient = createRestClient();
23
- });
21
+ const context = {
22
+ logger: createMockLogger(jest.fn),
23
+ restClient: createRestClient(),
24
+ setCacheMetadata: jest.fn(),
25
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
26
+ } as unknown as Context;
24
27
 
25
28
  beforeEach(() => {
26
- mockedFetch.mockGetOnce(buildEndpoint(MOVIE_PATH, { id: movieId, type: 'images' }), {
29
+ mockedFetch.mockGetOnce(buildEndpoint(MOVIE_PATH, { id: movieId, type: IMAGES }), {
27
30
  body: movieImages,
28
31
  });
29
32
  });
30
33
 
31
34
  afterEach(async () => {
32
35
  mockedFetch.mockReset();
33
- await restClient.cache?.clear();
36
+ await context.restClient.cache?.clear();
37
+ jest.clearAllMocks();
34
38
  });
35
39
 
36
40
  describe('when fieldName is backdrops', () => {
37
41
  it('should return the correct response', async () => {
38
- await expect(
39
- resolveMovieImages(
40
- movieDetails as RawMovieWithAppendToResponse,
41
- undefined,
42
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
43
- {
44
- fieldName: 'backdrops',
45
- } as GraphQLResolveInfo
46
- )
47
- ).resolves.toMatchSnapshot();
42
+ const info = { fieldName: BACKDROPS } as GraphQLResolveInfo;
43
+ await expect(resolveMovieImages(movieDetails, undefined, context, info)).resolves.toMatchSnapshot();
48
44
  });
49
45
  });
50
46
 
51
47
  describe('when fieldName is logos', () => {
52
48
  it('should return the correct response', async () => {
53
- await expect(
54
- resolveMovieImages(
55
- movieDetails as RawMovieWithAppendToResponse,
56
- undefined,
57
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
58
- {
59
- fieldName: 'logos',
60
- } as GraphQLResolveInfo
61
- )
62
- ).resolves.toMatchSnapshot();
49
+ const info = { fieldName: LOGOS } as GraphQLResolveInfo;
50
+ await expect(resolveMovieImages(movieDetails, undefined, context, info)).resolves.toMatchSnapshot();
63
51
  });
64
52
  });
65
53
 
66
54
  describe('when raw movie data has images', () => {
67
55
  it('should return the correct response', async () => {
56
+ const info = { fieldName: LOGOS } as GraphQLResolveInfo;
57
+
68
58
  const movieFetchMock = jest
69
59
  .fn<(...args: PlainArray) => Promise<FetchResponse>>()
70
60
  .mockResolvedValue({ data: {} } as FetchResponse);
@@ -73,23 +63,20 @@ describe('resolveMovieImages >', () => {
73
63
 
74
64
  await expect(
75
65
  resolveMovieImages(
76
- { ...movieDetails, __headers: new Headers(), images: rest } as unknown as RawMovieWithAppendToResponse & {
77
- __headers?: Headers;
78
- },
66
+ { ...movieDetails, __headers: new Headers(), images: rest },
79
67
  undefined,
80
68
  {
69
+ ...context,
81
70
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
82
- setCacheMetadata,
83
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
84
- } as unknown as Context,
85
- {
86
- fieldName: 'logos',
87
- } as GraphQLResolveInfo
71
+ },
72
+ info
88
73
  )
89
74
  ).resolves.toMatchSnapshot();
90
75
  });
91
76
 
92
77
  it('should not make a request to the server', async () => {
78
+ const info = { fieldName: LOGOS } as GraphQLResolveInfo;
79
+
93
80
  const movieFetchMock = jest
94
81
  .fn<(...args: PlainArray) => Promise<FetchResponse>>()
95
82
  .mockResolvedValue({ data: {} } as FetchResponse);
@@ -97,18 +84,13 @@ describe('resolveMovieImages >', () => {
97
84
  const { id, ...rest } = movieImages;
98
85
 
99
86
  await resolveMovieImages(
100
- { ...movieDetails, __headers: new Headers(), images: rest } as unknown as RawMovieWithAppendToResponse & {
101
- __headers?: Headers;
102
- },
87
+ { ...movieDetails, __headers: new Headers(), images: rest },
103
88
  undefined,
104
89
  {
90
+ ...context,
105
91
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
106
- setCacheMetadata,
107
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
108
- } as unknown as Context,
109
- {
110
- fieldName: 'logos',
111
- } as GraphQLResolveInfo
92
+ },
93
+ info
112
94
  );
113
95
 
114
96
  expect(movieFetchMock).not.toHaveBeenCalled();
@@ -1,34 +1,37 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
- import { MOVIE } from '../constants.ts';
3
- import { type Context, type RawMovieImages, type RawMovieWithAppendToResponse } from '../types.ts';
1
+ import { IMAGES, MOVIE } from '../constants.ts';
2
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
3
+ import { type RawMovie, type RawMovieImages, type RawMovieWithAppendToResponse } from '../types.ts';
4
4
 
5
- export const resolveMovieImages = async (
6
- obj: RawMovieWithAppendToResponse & { __headers?: Headers },
7
- _args: undefined,
8
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
9
- { fieldName, fieldNodes }: GraphQLResolveInfo
10
- ) => {
5
+ const isRawMovieWithImages = (
6
+ obj: RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers })
7
+ ): obj is RawMovieWithAppendToResponse & { __headers: Headers } => IMAGES in obj && '__headers' in obj;
8
+
9
+ export const resolveMovieImages = buildObjResolver<
10
+ RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
11
+ RawMovieImages['backdrops'] | RawMovieImages['logos'] | RawMovieImages['posters']
12
+ >(MOVIE, async (obj, ctx, info) => {
13
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
14
+ const { fieldName } = info;
11
15
  const typedFieldName = fieldName as 'backdrops' | 'logos' | 'posters';
12
16
 
13
- if (obj.images && obj.__headers) {
14
- setCacheMetadata(`${MOVIE}.${typedFieldName}`, obj.__headers);
15
- return obj.images[typedFieldName];
17
+ if (isRawMovieWithImages(obj)) {
18
+ return {
19
+ data: obj.images?.[typedFieldName],
20
+ headers: obj.__headers,
21
+ source: 'parentNode',
22
+ };
16
23
  }
17
24
 
18
25
  const { data, errors, headers } = await restClient.movie<RawMovieImages>(
19
26
  {
20
- pathTemplateData: { id: obj.id, type: 'images' },
27
+ pathTemplateData: { id: obj.id, type: IMAGES },
21
28
  },
22
29
  { requestID, tmdbGuestSessionId }
23
30
  );
24
31
 
25
- if (errors?.length) {
26
- throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${typedFieldName}.`, {
27
- nodes: fieldNodes,
28
- originalError: errors[0],
29
- });
30
- }
31
-
32
- setCacheMetadata(`${MOVIE}.${typedFieldName}`, headers);
33
- return data![typedFieldName];
34
- };
32
+ return {
33
+ data: data?.[typedFieldName],
34
+ errors,
35
+ headers,
36
+ };
37
+ });
@@ -7,20 +7,25 @@ import { mockFetch } from 'fetch-mocked';
7
7
  import { type FetchResponse, type Getta, type ShortcutProperties } from 'getta';
8
8
  import { type GraphQLResolveInfo } from 'graphql';
9
9
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
10
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
10
11
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
12
+ import { KEYWORDS } from '../constants.ts';
11
13
  import { type Context, type RawMovieWithAppendToResponse } from '../types.ts';
12
14
  import { resolveMovieKeywords } from './movieKeywords.ts';
13
15
 
14
16
  const mockedFetch = mockFetch(jest.fn);
15
17
 
16
18
  describe('resolveMovieKeywords >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
19
19
  const movieId = 1891;
20
20
 
21
- beforeAll(() => {
22
- restClient = createRestClient();
23
- });
21
+ const context = {
22
+ logger: createMockLogger(jest.fn),
23
+ restClient: createRestClient(),
24
+ setCacheMetadata: jest.fn(),
25
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
26
+ } as unknown as Context;
27
+
28
+ const info = { fieldName: KEYWORDS } as GraphQLResolveInfo;
24
29
 
25
30
  beforeEach(() => {
26
31
  mockedFetch.mockGetOnce(buildEndpoint(MOVIE_PATH, { id: movieId, type: 'keywords' }), {
@@ -30,17 +35,13 @@ describe('resolveMovieKeywords >', () => {
30
35
 
31
36
  afterEach(async () => {
32
37
  mockedFetch.mockReset();
33
- await restClient.cache?.clear();
38
+ await context.restClient.cache?.clear();
39
+ jest.clearAllMocks();
34
40
  });
35
41
 
36
42
  it('should return the movie keywords', async () => {
37
43
  await expect(
38
- resolveMovieKeywords(
39
- movieDetails as RawMovieWithAppendToResponse,
40
- undefined,
41
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
42
- {} as GraphQLResolveInfo
43
- )
44
+ resolveMovieKeywords(movieDetails as RawMovieWithAppendToResponse, undefined, context, info)
44
45
  ).resolves.toMatchSnapshot();
45
46
  });
46
47
 
@@ -54,16 +55,13 @@ describe('resolveMovieKeywords >', () => {
54
55
 
55
56
  await expect(
56
57
  resolveMovieKeywords(
57
- { ...movieDetails, __headers: new Headers(), keywords: rest } as RawMovieWithAppendToResponse & {
58
- __headers?: Headers;
59
- },
58
+ { ...movieDetails, __headers: new Headers(), keywords: rest },
60
59
  undefined,
61
60
  {
61
+ ...context,
62
62
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
63
- setCacheMetadata,
64
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
65
- } as unknown as Context,
66
- {} as GraphQLResolveInfo
63
+ },
64
+ info
67
65
  )
68
66
  ).resolves.toMatchSnapshot();
69
67
  });
@@ -76,16 +74,13 @@ describe('resolveMovieKeywords >', () => {
76
74
  const { id, ...rest } = movieKeywords;
77
75
 
78
76
  await resolveMovieKeywords(
79
- { ...movieDetails, __headers: new Headers(), keywords: rest } as RawMovieWithAppendToResponse & {
80
- __headers?: Headers;
81
- },
77
+ { ...movieDetails, __headers: new Headers(), keywords: rest },
82
78
  undefined,
83
79
  {
80
+ ...context,
84
81
  restClient: { movie: movieFetchMock } as unknown as Getta & ShortcutProperties<ShortcutMethodNames>,
85
- setCacheMetadata,
86
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
87
- } as unknown as Context,
88
- {} as GraphQLResolveInfo
82
+ },
83
+ info
89
84
  );
90
85
 
91
86
  expect(movieFetchMock).not.toHaveBeenCalled();
@@ -1,16 +1,23 @@
1
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
1
  import { KEYWORDS, MOVIE } from '../constants.ts';
3
- import { type Context, type RawMovieKeywords, type RawMovieWithAppendToResponse } from '../types.ts';
2
+ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
3
+ import { type RawMovie, type RawMovieKeywords, type RawMovieWithAppendToResponse } from '../types.ts';
4
4
 
5
- export const resolveMovieKeywords = async (
6
- obj: RawMovieWithAppendToResponse & { __headers?: Headers },
7
- _args: undefined,
8
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
9
- { fieldNodes }: GraphQLResolveInfo
10
- ) => {
11
- if (obj.keywords && obj.__headers) {
12
- setCacheMetadata(`${MOVIE}.${KEYWORDS}`, obj.__headers);
13
- return obj.keywords.keywords;
5
+ const isRawMovieWithKeywords = (
6
+ obj: RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers })
7
+ ): obj is RawMovieWithAppendToResponse & { __headers: Headers } => KEYWORDS in obj && '__headers' in obj;
8
+
9
+ export const resolveMovieKeywords = buildObjResolver<
10
+ RawMovie | (RawMovieWithAppendToResponse & { __headers?: Headers }),
11
+ RawMovieKeywords['keywords']
12
+ >(MOVIE, async (obj, ctx) => {
13
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
14
+
15
+ if (isRawMovieWithKeywords(obj)) {
16
+ return {
17
+ data: obj.keywords?.keywords,
18
+ headers: obj.__headers,
19
+ source: 'parentNode',
20
+ };
14
21
  }
15
22
 
16
23
  const { data, errors, headers } = await restClient.movie<RawMovieKeywords>(
@@ -20,13 +27,9 @@ export const resolveMovieKeywords = async (
20
27
  { requestID, tmdbGuestSessionId }
21
28
  );
22
29
 
23
- if (errors?.length) {
24
- throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${KEYWORDS}.`, {
25
- nodes: fieldNodes,
26
- originalError: errors[0],
27
- });
28
- }
29
-
30
- setCacheMetadata(`${MOVIE}.${KEYWORDS}`, headers);
31
- return data?.keywords;
32
- };
30
+ return {
31
+ data: data?.keywords,
32
+ errors,
33
+ headers,
34
+ };
35
+ });
@@ -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({