@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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tmdb-graphql-api/resolvers",
3
3
  "description": "The TMDB GraphQL resolvers module.",
4
- "version": "0.0.34",
4
+ "version": "0.1.1-unstable.0",
5
5
  "author": "Dylan Aubrey",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/badbatch/themoviedb-graphql-api",
@@ -29,18 +29,19 @@
29
29
  "access": "public"
30
30
  },
31
31
  "dependencies": {
32
- "@cachemap/core": "^5.0.8",
33
- "@cachemap/map": "^5.0.6",
34
- "@cachemap/reaper": "^5.0.6",
35
- "@graphql-box/connection-resolver": "^5.0.1",
36
- "@graphql-box/core": "^5.0.1",
32
+ "@cachemap/core": "^5.2.7",
33
+ "@cachemap/map": "^5.0.9",
34
+ "@cachemap/reaper": "^5.1.3",
35
+ "@graphql-box/connection-resolver": "^5.4.6",
36
+ "@graphql-box/core": "^5.4.2",
37
37
  "cacheability": "^4.0.20",
38
38
  "getta": "^1.0.6",
39
39
  "js-base64": "^3.6.0",
40
40
  "query-string": "^8.1.0",
41
- "type-fest": "^4.5.0",
42
- "@tmdb-graphql-api/rest-client": "0.0.9",
43
- "@tmdb-graphql-api/schema": "0.0.26"
41
+ "type-fest": "^4.37.0",
42
+ "winston": "^3.17.0",
43
+ "@tmdb-graphql-api/rest-client": "0.0.10-unstable.0",
44
+ "@tmdb-graphql-api/schema": "0.1.1-unstable.0"
44
45
  },
45
46
  "peerDependencies": {
46
47
  "@babel/runtime": "<8",
@@ -50,7 +51,7 @@
50
51
  },
51
52
  "devDependencies": {
52
53
  "@babel/runtime": "^7.23.2",
53
- "@graphql-box/helpers": "^5.0.1",
54
+ "@graphql-box/helpers": "^5.4.2",
54
55
  "@jest/globals": "^29.7.0",
55
56
  "@types/lodash-es": "^4.14.191",
56
57
  "core-js": "^3.33.1",
@@ -59,7 +60,7 @@
59
60
  "fetch-mocked": "^0.0.21",
60
61
  "graphql": "^16.8.1",
61
62
  "lodash-es": "^4.17.21",
62
- "@tmdb-graphql-api/test-utils": "0.0.4"
63
+ "@tmdb-graphql-api/test-utils": "0.1.0"
63
64
  },
64
65
  "scripts": {
65
66
  "build": "pnpm run clean:dist && pnpm run compile",
@@ -0,0 +1,10 @@
1
+ import { type jest } from '@jest/globals';
2
+ import type { LeveledLogMethod, Logger } from 'winston';
3
+
4
+ export const createMockLogger = (mockFn: typeof jest.fn): Logger => {
5
+ const mockLogger = {} as unknown as Logger;
6
+ mockLogger.child = mockFn().mockReturnValue(mockLogger) as (options: Record<string, unknown>) => Logger;
7
+ mockLogger.error = mockFn() as LeveledLogMethod;
8
+ mockLogger.info = mockFn() as LeveledLogMethod;
9
+ return mockLogger;
10
+ };
package/src/constants.ts CHANGED
@@ -25,6 +25,7 @@ export const EXTERNAL_IDS = 'externalIds' as const;
25
25
  export const FIND = 'find' as const;
26
26
 
27
27
  export const GENRES = 'genres' as const;
28
+ export const GUEST_STARS = 'guestStars' as const;
28
29
 
29
30
  export const IMAGES = 'images' as const;
30
31
 
@@ -50,6 +51,7 @@ export const PROFILES = 'profiles' as const;
50
51
  export const RATED = 'rated' as const;
51
52
  export const RECOMMENDATIONS = 'recommendations' as const;
52
53
  export const RELEASE_DATES = 'releaseDates' as const;
54
+ export const RESULTS = 'results' as const;
53
55
  export const REVIEW = 'review' as const;
54
56
  export const REVIEWS = 'reviews' as const;
55
57
 
@@ -69,3 +71,4 @@ export const TV_CREDITS = 'tvCredits' as const;
69
71
  export const VIDEOS = 'videos' as const;
70
72
 
71
73
  export const WATCH_PROVIDERS = 'watchProviders' as const;
74
+ export const RAW_WATCH_PROVIDERS = 'watch/providers' as const;
@@ -266,7 +266,6 @@ exports[`typePropNames the correct prop names are returned 1`] = `
266
266
  "airDate",
267
267
  "cast",
268
268
  "crew",
269
- "episodeLookupId",
270
269
  "episodeNumber",
271
270
  "externalIds",
272
271
  "guestStars",
@@ -563,7 +562,6 @@ exports[`typePropNames the correct prop names are returned 1`] = `
563
562
  "overview",
564
563
  "posterPath",
565
564
  "posters",
566
- "seasonLookupId",
567
565
  "seasonNumber",
568
566
  "translations",
569
567
  "tvShowId",
@@ -0,0 +1,37 @@
1
+ import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
+ import { type Context } from '../types.ts';
3
+
4
+ export const buildArgsResolver =
5
+ <Args extends object, Data>(
6
+ field: string,
7
+ callback: (
8
+ args: Args,
9
+ ctx: Context,
10
+ info: GraphQLResolveInfo
11
+ ) => Promise<{ data?: Data; errors?: Error[]; headers: Headers; source?: string }>
12
+ ) =>
13
+ async (_obj: undefined, args: Args, ctx: Context, info: GraphQLResolveInfo) => {
14
+ const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
15
+ const { fieldNodes } = info;
16
+
17
+ const childLogger = logger.child({
18
+ args,
19
+ field,
20
+ operationName,
21
+ requestID,
22
+ tmdbGuestSessionId,
23
+ });
24
+
25
+ childLogger.info(`Resolving ${field}`);
26
+ const { data, errors, headers, source = 'api' } = await callback(args, ctx, info);
27
+
28
+ if (errors?.length) {
29
+ const message = `Failed to resolve ${field}`;
30
+ childLogger.error(message, { errors });
31
+ throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
32
+ }
33
+
34
+ childLogger.info(`Successfully resolved ${field} from ${source}`);
35
+ setCacheMetadata(field, headers);
36
+ return data;
37
+ };
@@ -0,0 +1,36 @@
1
+ import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
+ import type { Context } from '../types.ts';
3
+
4
+ export const buildNoObjArgsResolver =
5
+ <Obj, Data>(
6
+ parentFieldName: string,
7
+ callback: (
8
+ ctx: Context,
9
+ info: GraphQLResolveInfo
10
+ ) => Promise<{ data?: Data; errors?: Error[]; headers: Headers; source?: string }>
11
+ ) =>
12
+ async (obj: Obj | undefined, _args: undefined, ctx: Context, info: GraphQLResolveInfo) => {
13
+ const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
14
+ const { fieldName, fieldNodes } = info;
15
+ const fieldPath = obj ? `${parentFieldName}.${fieldName}` : parentFieldName;
16
+
17
+ const childLogger = logger.child({
18
+ fieldPath,
19
+ operationName,
20
+ requestID,
21
+ tmdbGuestSessionId,
22
+ });
23
+
24
+ childLogger.info(`Resolving ${fieldPath}`);
25
+ const { data, errors, headers } = await callback(ctx, info);
26
+
27
+ if (errors?.length) {
28
+ const message = `Failed to resolve ${fieldPath}`;
29
+ childLogger.error(message, { errors });
30
+ throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
31
+ }
32
+
33
+ childLogger.info(`Successfully resolved ${fieldPath} from api`);
34
+ setCacheMetadata(fieldPath, headers);
35
+ return data;
36
+ };
@@ -0,0 +1,43 @@
1
+ import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
+ import { type Context } from '../types.ts';
3
+
4
+ export const buildObjArgsResolver =
5
+ <Obj extends object, Args extends object, Data>(
6
+ parentFieldName: string,
7
+ callback: (
8
+ obj: Obj | undefined,
9
+ args: Args,
10
+ ctx: Context,
11
+ info: GraphQLResolveInfo
12
+ ) => Promise<{ data?: Data; errors?: Error[]; headers?: Headers; source?: string }>
13
+ ) =>
14
+ async (obj: Obj | undefined, args: Args, ctx: Context, info: GraphQLResolveInfo) => {
15
+ const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
16
+ const { fieldName, fieldNodes } = info;
17
+ const fieldPath = obj ? `${parentFieldName}.${fieldName}` : parentFieldName;
18
+
19
+ const childLogger = logger.child({
20
+ args,
21
+ fieldPath,
22
+ operationName,
23
+ requestID,
24
+ tmdbGuestSessionId,
25
+ });
26
+
27
+ childLogger.info(`Resolving ${fieldPath}`);
28
+ const { data, errors, headers, source = 'api' } = await callback(obj, args, ctx, info);
29
+
30
+ if (errors?.length) {
31
+ const message = `Failed to resolve ${fieldPath}`;
32
+ childLogger.error(message, { errors });
33
+ throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
34
+ }
35
+
36
+ childLogger.info(`Successfully resolved ${fieldPath} from ${source}`);
37
+
38
+ if (headers) {
39
+ setCacheMetadata(fieldPath, headers);
40
+ }
41
+
42
+ return data;
43
+ };
@@ -0,0 +1,48 @@
1
+ import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
2
+ import { type Context } from '../types.ts';
3
+
4
+ export const buildObjResolver =
5
+ <Obj extends { id: number | string }, Data>(
6
+ parentFieldName: string,
7
+ callback: (
8
+ obj: Obj,
9
+ ctx: Context,
10
+ info: GraphQLResolveInfo
11
+ ) => Promise<{ data?: Data; errors?: Error[]; headers?: Headers; source?: string }>
12
+ ) =>
13
+ async (obj: Obj | undefined, _args: undefined, ctx: Context, info: GraphQLResolveInfo) => {
14
+ const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
15
+ const { fieldName, fieldNodes } = info;
16
+ const fieldPath = `${parentFieldName}.${fieldName}`;
17
+
18
+ const childLogger = logger.child({
19
+ fieldPath,
20
+ operationName,
21
+ parentFieldId: obj?.id,
22
+ requestID,
23
+ tmdbGuestSessionId,
24
+ });
25
+
26
+ if (!obj) {
27
+ const message = `Required ${parentFieldName} node missing`;
28
+ childLogger.error(message);
29
+ throw new GraphQLError(message, { nodes: fieldNodes });
30
+ }
31
+
32
+ childLogger.info(`Resolving ${fieldPath}`);
33
+ const { data, errors, headers, source = 'api' } = await callback(obj, ctx, info);
34
+
35
+ if (errors?.length) {
36
+ const message = `Failed to resolve ${fieldPath}`;
37
+ childLogger.error(message, { errors });
38
+ throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
39
+ }
40
+
41
+ childLogger.info(`Successfully resolved ${fieldPath} from ${source}`);
42
+
43
+ if (headers) {
44
+ setCacheMetadata(fieldPath, headers);
45
+ }
46
+
47
+ return data;
48
+ };
@@ -1,21 +1,25 @@
1
- import { type RawEpisode, type RawSeason } from '../types.ts';
1
+ import { type QueryEpisodeArgs, type QuerySeasonArgs } from '@tmdb-graphql-api/schema/types';
2
+ import { type EnrichedRawEpisode, type EnrichedRawSeason } from '../types.ts';
2
3
  import { decodeId } from './decodeId.ts';
3
4
 
4
- export const getTvIdSeasonAndEpisode = (obj: RawSeason | RawEpisode | undefined, lookupId: string) => {
5
- let tvId: number;
5
+ export const getTvIdSeasonAndEpisode = (
6
+ obj: EnrichedRawEpisode | EnrichedRawSeason | undefined,
7
+ args: QuerySeasonArgs | QueryEpisodeArgs
8
+ ) => {
9
+ let id: string | number;
6
10
  let seasonNumber: number;
7
11
  let episodeNumber: number | undefined;
8
12
 
9
13
  if (obj) {
10
- tvId = obj.tv_show_id;
11
- seasonNumber = obj.season_number;
14
+ id = obj.tv_show_id;
15
+ seasonNumber = obj.season_number ?? 0;
12
16
  episodeNumber = 'episode_number' in obj ? obj.episode_number : undefined;
13
17
  } else {
14
- const parsed = decodeId<{ episodeNumber?: number; id: string; seasonNumber: number }>(lookupId);
15
- tvId = Number(parsed.id);
18
+ const parsed = decodeId<{ episodeNumber?: number; id: string; seasonNumber: number }>(args.id);
19
+ id = parsed.id;
16
20
  seasonNumber = parsed.seasonNumber;
17
21
  episodeNumber = parsed.episodeNumber;
18
22
  }
19
23
 
20
- return { episodeNumber, seasonNumber, tvId };
24
+ return { episodeNumber, id, seasonNumber };
21
25
  };
package/src/main.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type Certifications, type MediaType, type ScreenType } from '@tmdb-graphql-api/schema/types';
1
+ import { type Certifications, type MediaType, type ScreenType, type SearchType } from '@tmdb-graphql-api/schema/types';
2
2
  import { makeFallbackFieldResolvers } from './helpers/makeFallbackFieldResolvers.ts';
3
3
  import { resolveCertifications } from './queries/certifications.ts';
4
4
  import { resolveCollection } from './queries/collection.ts';
@@ -74,13 +74,7 @@ import { resolveTvTranslations } from './queries/tvTranslations.ts';
74
74
  import { resolveTvVideos } from './queries/tvVideos.ts';
75
75
  import { resolveTvWatchProviders } from './queries/tvWatchProviders.ts';
76
76
  import { resolveVideoType } from './queries/videoType.ts';
77
- import {
78
- type FieldResolver,
79
- type RawMedia,
80
- type RawRatedScreen,
81
- type RawSearch,
82
- type SearchMediaType,
83
- } from './types.ts';
77
+ import { type FieldResolver, type RawMediaType, type RawMovie, type RawSearchType, type RawTv } from './types.ts';
84
78
 
85
79
  export const resolvers: Record<string, Record<string, string | number | FieldResolver>> = {
86
80
  Certifications: {
@@ -115,7 +109,7 @@ export const resolvers: Record<string, Record<string, string | number | FieldRes
115
109
  },
116
110
  Media: {
117
111
  // eslint-disable-next-line camelcase
118
- __resolveType: (obj: RawMedia & { media_type: MediaType }) => {
112
+ __resolveType: (obj: RawMediaType & { media_type: Capitalize<Lowercase<MediaType>> }) => {
119
113
  return obj.media_type;
120
114
  },
121
115
  },
@@ -192,13 +186,13 @@ export const resolvers: Record<string, Record<string, string | number | FieldRes
192
186
  },
193
187
  RatedScreen: {
194
188
  // eslint-disable-next-line camelcase
195
- __resolveType: (obj: RawRatedScreen & { media_type: ScreenType }) => {
189
+ __resolveType: (obj: (RawMovie | RawTv) & { media_type: Capitalize<Lowercase<ScreenType>> }) => {
196
190
  return obj.media_type;
197
191
  },
198
192
  },
199
193
  Search: {
200
194
  // eslint-disable-next-line camelcase
201
- __resolveType: (obj: RawSearch & { media_type: SearchMediaType }) => {
195
+ __resolveType: (obj: RawSearchType & { media_type: Capitalize<Lowercase<SearchType>> }) => {
202
196
  return obj.media_type;
203
197
  },
204
198
  },
@@ -70,7 +70,6 @@ exports[`resolveEpisode > should return the correct episode details 1`] = `
70
70
  "profile_path": "/xvNN5huL0X8yJ7h3IZfGG4O2zBD.jpg",
71
71
  },
72
72
  ],
73
- "episode_lookup_id": "eyJzZWFzb25OdW1iZXIiOjEsInR2SWQiOjEzOTksImVwaXNvZGVOdW1iZXIiOjF9",
74
73
  "episode_number": 1,
75
74
  "guest_stars": [
76
75
  {
@@ -347,7 +346,7 @@ exports[`resolveEpisode > should return the correct episode details 1`] = `
347
346
  "profile_path": "/tNW2DukUhi0ljCxOcYqs6x30LIH.jpg",
348
347
  },
349
348
  ],
350
- "id": 63056,
349
+ "id": "eyJpZCI6MTM5OSwic2Vhc29uTnVtYmVyIjoxLCJlcGlzb2RlTnVtYmVyIjoxfQ%3D%3D",
351
350
  "name": "Winter Is Coming",
352
351
  "overview": "Jon Arryn, the Hand of the King, is dead. King Robert Baratheon plans to ask his oldest friend, Eddard Stark, to take Jon's place. Across the sea, Viserys Targaryen plans to wed his sister to a nomadic warlord in exchange for an army.",
353
352
  "production_code": "101",
@@ -4684,11 +4684,10 @@ exports[`resolveSeason > should return the correct season details 1`] = `
4684
4684
  "vote_count": 115,
4685
4685
  },
4686
4686
  ],
4687
- "id": 3624,
4687
+ "id": "eyJpZCI6MTM5OSwic2Vhc29uTnVtYmVyIjoxfQ%3D%3D",
4688
4688
  "name": "Season 1",
4689
4689
  "overview": "Trouble is brewing in the Seven Kingdoms of Westeros. For the driven inhabitants of this visionary world, control of Westeros' Iron Throne holds the lure of great power. But in a land where the seasons can last a lifetime, winter is coming...and beyond the Great Wall that protects them, an ancient evil has returned. In Season One, the story centers on three primary areas: the Stark and the Lannister families, whose designs on controlling the throne threaten a tenuous peace; the dragon princess Daenerys, heir to the former dynasty, who waits just over the Narrow Sea with her malevolent brother Viserys; and the Great Wall--a massive barrier of ice where a forgotten danger is stirring.",
4690
4690
  "poster_path": "/zwaj4egrhnXOBIit1tyb4Sbt3KP.jpg",
4691
- "season_lookup_id": "eyJzZWFzb25OdW1iZXIiOjEsInR2SWQiOjEzOTl9",
4692
4691
  "season_number": 1,
4693
4692
  "tv_show_id": 1399,
4694
4693
  }
@@ -1,12 +1,12 @@
1
1
  import { jest } from '@jest/globals';
2
- import { CERTIFICATIONS_PATH, type ShortcutMethodNames } from '@tmdb-graphql-api/rest-client';
2
+ import { CERTIFICATIONS_PATH } from '@tmdb-graphql-api/rest-client';
3
3
  import { ScreenType } from '@tmdb-graphql-api/schema/types';
4
4
  import movieCertifications from '@tmdb-graphql-api/test-utils/responses/themoviedb/certifications/movie.json';
5
5
  import tvCertifications from '@tmdb-graphql-api/test-utils/responses/themoviedb/certifications/tv.json';
6
6
  import { mockFetch } from 'fetch-mocked';
7
- import { type Getta, type ShortcutProperties } from 'getta';
8
7
  import { type GraphQLResolveInfo } from 'graphql';
9
8
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
9
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
10
10
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
11
11
  import { type Context } from '../types.ts';
12
12
  import { resolveCertifications } from './certifications.ts';
@@ -14,16 +14,19 @@ import { resolveCertifications } from './certifications.ts';
14
14
  const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveCertifications >', () => {
17
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
18
- const setCacheMetadata = jest.fn();
17
+ const context = {
18
+ logger: createMockLogger(jest.fn),
19
+ restClient: createRestClient(),
20
+ setCacheMetadata: jest.fn(),
21
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
+ } as unknown as Context;
19
23
 
20
- beforeAll(() => {
21
- restClient = createRestClient();
22
- });
24
+ const info = {} as GraphQLResolveInfo;
23
25
 
24
26
  afterEach(async () => {
25
27
  mockedFetch.mockReset();
26
- await restClient.cache?.clear();
28
+ await context.restClient.cache?.clear();
29
+ jest.clearAllMocks();
27
30
  });
28
31
 
29
32
  describe("when the screenType is 'MOVIE' >", () => {
@@ -35,12 +38,7 @@ describe('resolveCertifications >', () => {
35
38
 
36
39
  it('should return the movie certifications', async () => {
37
40
  await expect(
38
- resolveCertifications(
39
- undefined,
40
- { screenType: ScreenType.Movie },
41
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
42
- {} as GraphQLResolveInfo
43
- )
41
+ resolveCertifications(undefined, { screenType: ScreenType.Movie }, context, info)
44
42
  ).resolves.toMatchSnapshot();
45
43
  });
46
44
  });
@@ -54,12 +52,7 @@ describe('resolveCertifications >', () => {
54
52
 
55
53
  it('should return the tv certifications', async () => {
56
54
  await expect(
57
- resolveCertifications(
58
- undefined,
59
- { screenType: ScreenType.Tv },
60
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
61
- {} as GraphQLResolveInfo
62
- )
55
+ resolveCertifications(undefined, { screenType: ScreenType.Tv }, context, info)
63
56
  ).resolves.toMatchSnapshot();
64
57
  });
65
58
  });
@@ -1,28 +1,25 @@
1
- import { type Certifications, type QueryCertificationsArgs } from '@tmdb-graphql-api/schema/types';
2
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
1
+ import { type QueryCertificationsArgs } from '@tmdb-graphql-api/schema/types';
3
2
  import { CERTIFICATIONS } from '../constants.ts';
4
- import { type Context } from '../types.ts';
3
+ import { buildArgsResolver } from '../helpers/buildArgsResolver.ts';
4
+ import { type RawCertifications } from '../types.ts';
5
5
 
6
- export const resolveCertifications = async (
7
- _obj: undefined,
8
- { screenType }: QueryCertificationsArgs,
9
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
10
- { fieldNodes }: GraphQLResolveInfo
11
- ) => {
12
- const { data, errors } = await restClient.certifications<{ certifications: Certifications }>(
13
- {
14
- pathTemplateData: { type: screenType.toLowerCase() },
15
- },
16
- { requestID, tmdbGuestSessionId }
17
- );
6
+ export const resolveCertifications = buildArgsResolver<QueryCertificationsArgs, RawCertifications['certifications']>(
7
+ CERTIFICATIONS,
8
+ async (args, ctx) => {
9
+ const { screenType } = args;
10
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
18
11
 
19
- if (errors?.length) {
20
- throw new GraphQLError(`Failed to resolve ${screenType} ${CERTIFICATIONS}.`, {
21
- nodes: fieldNodes,
22
- originalError: errors[0],
23
- });
24
- }
12
+ const { data, errors } = await restClient.certifications<RawCertifications>(
13
+ {
14
+ pathTemplateData: { type: screenType.toLowerCase() },
15
+ },
16
+ { requestID, tmdbGuestSessionId }
17
+ );
25
18
 
26
- setCacheMetadata(CERTIFICATIONS, { cacheControl: 'public, max-age=28800' } as unknown as Headers);
27
- return data?.certifications;
28
- };
19
+ return {
20
+ data: data?.certifications,
21
+ errors,
22
+ headers: new Headers({ cacheControl: 'public, max-age=28800' }),
23
+ };
24
+ }
25
+ );
@@ -1,10 +1,10 @@
1
1
  import { jest } from '@jest/globals';
2
- import { COLLECTION_PATH, type ShortcutMethodNames } from '@tmdb-graphql-api/rest-client';
2
+ import { COLLECTION_PATH } from '@tmdb-graphql-api/rest-client';
3
3
  import collectionDetails from '@tmdb-graphql-api/test-utils/responses/themoviedb/collection/details.json';
4
4
  import { mockFetch } from 'fetch-mocked';
5
- import { type Getta, type ShortcutProperties } from 'getta';
6
5
  import { type GraphQLResolveInfo } from 'graphql';
7
6
  import { buildEndpoint } from '../__testUtils__/helpers/buildEndpoint.ts';
7
+ import { createMockLogger } from '../__testUtils__/helpers/createMockLogger.ts';
8
8
  import { createRestClient } from '../__testUtils__/helpers/createRestClient.ts';
9
9
  import { type Context } from '../types.ts';
10
10
  import { resolveCollection } from './collection.ts';
@@ -12,13 +12,16 @@ import { resolveCollection } from './collection.ts';
12
12
  const mockedFetch = mockFetch(jest.fn);
13
13
 
14
14
  describe('resolveCollection >', () => {
15
- let restClient: Getta & ShortcutProperties<ShortcutMethodNames>;
16
- const setCacheMetadata = jest.fn();
17
15
  const id = 10;
18
16
 
19
- beforeAll(() => {
20
- restClient = createRestClient();
21
- });
17
+ const context = {
18
+ logger: createMockLogger(jest.fn),
19
+ restClient: createRestClient(),
20
+ setCacheMetadata: jest.fn(),
21
+ tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
+ } as unknown as Context;
23
+
24
+ const info = {} as GraphQLResolveInfo;
22
25
 
23
26
  beforeEach(() => {
24
27
  mockedFetch.mockGetOnce(buildEndpoint(COLLECTION_PATH, { id }), {
@@ -28,19 +31,13 @@ describe('resolveCollection >', () => {
28
31
 
29
32
  afterEach(async () => {
30
33
  mockedFetch.mockReset();
31
- await restClient.cache?.clear();
34
+ await context.restClient.cache?.clear();
35
+ jest.clearAllMocks();
32
36
  });
33
37
 
34
38
  describe('when a collection id >', () => {
35
39
  it('should return the collection details', async () => {
36
- await expect(
37
- resolveCollection(
38
- undefined,
39
- { id },
40
- { restClient, setCacheMetadata, tmdbGuestSessionId: 'mock-tmdbGuestSessionId' } as unknown as Context,
41
- {} as GraphQLResolveInfo
42
- )
43
- ).resolves.toMatchSnapshot();
40
+ await expect(resolveCollection(undefined, { id: String(id) }, context, info)).resolves.toMatchSnapshot();
44
41
  });
45
42
  });
46
43
  });
@@ -1,23 +1,26 @@
1
1
  import { type QueryCollectionArgs } from '@tmdb-graphql-api/schema/types';
2
- import { GraphQLError, type GraphQLResolveInfo } from 'graphql';
3
2
  import { isUndefined, snakeCase } from 'lodash-es';
4
3
  import { COLLECTION } from '../constants.ts';
5
- import { type Context, type RawCollection } from '../types.ts';
4
+ import { buildObjArgsResolver } from '../helpers/buildObjArgsResolver.ts';
5
+ import { type RawCollection } from '../types.ts';
6
6
 
7
- export const resolveCollection = async (
8
- obj: RawCollection | undefined,
9
- args: QueryCollectionArgs,
10
- { requestID, restClient, setCacheMetadata, tmdbGuestSessionId }: Context,
11
- { fieldName, fieldNodes }: GraphQLResolveInfo
12
- ) => {
7
+ export const resolveCollection = buildObjArgsResolver<
8
+ RawCollection,
9
+ QueryCollectionArgs,
10
+ RawCollection | RawCollection[keyof RawCollection]
11
+ >(COLLECTION, async (obj, args, ctx, info) => {
12
+ const id = obj?.id ?? args.id;
13
+ const { requestID, restClient, tmdbGuestSessionId } = ctx;
14
+ const { fieldName } = info;
13
15
  const typedFieldName = snakeCase(fieldName) as keyof RawCollection;
14
16
 
15
17
  if (obj && !isUndefined(obj[typedFieldName])) {
16
- return obj[typedFieldName];
18
+ return {
19
+ data: obj[typedFieldName],
20
+ source: 'parentNode',
21
+ };
17
22
  }
18
23
 
19
- const id = obj ? obj.id : args.id;
20
-
21
24
  const { data, errors, headers } = await restClient.collection<RawCollection>(
22
25
  {
23
26
  pathTemplateData: { id },
@@ -25,15 +28,9 @@ export const resolveCollection = async (
25
28
  { requestID, tmdbGuestSessionId }
26
29
  );
27
30
 
28
- if (errors?.length) {
29
- throw new GraphQLError(`Failed to resolve ${COLLECTION} ${id}.`, { nodes: fieldNodes, originalError: errors[0] });
30
- }
31
-
32
- if (obj) {
33
- setCacheMetadata(`${COLLECTION}.${fieldName}`, headers);
34
- return data![typedFieldName];
35
- }
36
-
37
- setCacheMetadata(COLLECTION, headers);
38
- return data;
39
- };
31
+ return {
32
+ data: obj ? data?.[typedFieldName] : data,
33
+ errors,
34
+ headers,
35
+ };
36
+ });