@tmdb-graphql-api/resolvers 0.0.6

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 (604) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/dist/cjs/index.cjs +3435 -0
  4. package/dist/cjs/index.cjs.map +1 -0
  5. package/dist/esm/index.mjs +3432 -0
  6. package/dist/esm/index.mjs.map +1 -0
  7. package/dist/types/cjs/constants.d.cts +54 -0
  8. package/dist/types/cjs/constants.d.cts.map +1 -0
  9. package/dist/types/cjs/helpers/decodeId.d.cts +3 -0
  10. package/dist/types/cjs/helpers/decodeId.d.cts.map +1 -0
  11. package/dist/types/cjs/helpers/defaultFieldResolver.d.cts +4 -0
  12. package/dist/types/cjs/helpers/defaultFieldResolver.d.cts.map +1 -0
  13. package/dist/types/cjs/helpers/encodeId.d.cts +3 -0
  14. package/dist/types/cjs/helpers/encodeId.d.cts.map +1 -0
  15. package/dist/types/cjs/helpers/formatDirectionalSuffixes.d.cts +3 -0
  16. package/dist/types/cjs/helpers/formatDirectionalSuffixes.d.cts.map +1 -0
  17. package/dist/types/cjs/helpers/formatQueryParams.d.cts +6 -0
  18. package/dist/types/cjs/helpers/formatQueryParams.d.cts.map +1 -0
  19. package/dist/types/cjs/helpers/getAppendToResponseKeys.d.cts +4 -0
  20. package/dist/types/cjs/helpers/getAppendToResponseKeys.d.cts.map +1 -0
  21. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts +8 -0
  22. package/dist/types/cjs/helpers/getTvIdSeasonAndEpisode.d.cts.map +1 -0
  23. package/dist/types/cjs/helpers/makeFallbackFieldResolvers.d.cts +3 -0
  24. package/dist/types/cjs/helpers/makeFallbackFieldResolvers.d.cts.map +1 -0
  25. package/dist/types/cjs/helpers/removeNullValues.d.cts +3 -0
  26. package/dist/types/cjs/helpers/removeNullValues.d.cts.map +1 -0
  27. package/dist/types/cjs/helpers/snakeCasePropNames.d.cts +4 -0
  28. package/dist/types/cjs/helpers/snakeCasePropNames.d.cts.map +1 -0
  29. package/dist/types/cjs/helpers/typePropNames.d.cts +2 -0
  30. package/dist/types/cjs/helpers/typePropNames.d.cts.map +1 -0
  31. package/dist/types/cjs/index.d.cts +3 -0
  32. package/dist/types/cjs/index.d.cts.map +1 -0
  33. package/dist/types/cjs/main.d.cts +3 -0
  34. package/dist/types/cjs/main.d.cts.map +1 -0
  35. package/dist/types/cjs/queries/certifications.d.cts +5 -0
  36. package/dist/types/cjs/queries/certifications.d.cts.map +1 -0
  37. package/dist/types/cjs/queries/collection.d.cts +3401 -0
  38. package/dist/types/cjs/queries/collection.d.cts.map +1 -0
  39. package/dist/types/cjs/queries/collectionImages.d.cts +14 -0
  40. package/dist/types/cjs/queries/collectionImages.d.cts.map +1 -0
  41. package/dist/types/cjs/queries/collectionTranslations.d.cts +18 -0
  42. package/dist/types/cjs/queries/collectionTranslations.d.cts.map +1 -0
  43. package/dist/types/cjs/queries/company.d.cts +15 -0
  44. package/dist/types/cjs/queries/company.d.cts.map +1 -0
  45. package/dist/types/cjs/queries/companyAlternativeNames.d.cts +10 -0
  46. package/dist/types/cjs/queries/companyAlternativeNames.d.cts.map +1 -0
  47. package/dist/types/cjs/queries/companyLogos.d.cts +14 -0
  48. package/dist/types/cjs/queries/companyLogos.d.cts.map +1 -0
  49. package/dist/types/cjs/queries/configuration.d.cts +16 -0
  50. package/dist/types/cjs/queries/configuration.d.cts.map +1 -0
  51. package/dist/types/cjs/queries/configurationCountries.d.cts +4 -0
  52. package/dist/types/cjs/queries/configurationCountries.d.cts.map +1 -0
  53. package/dist/types/cjs/queries/configurationJobs.d.cts +4 -0
  54. package/dist/types/cjs/queries/configurationJobs.d.cts.map +1 -0
  55. package/dist/types/cjs/queries/configurationLanguages.d.cts +4 -0
  56. package/dist/types/cjs/queries/configurationLanguages.d.cts.map +1 -0
  57. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts +4 -0
  58. package/dist/types/cjs/queries/configurationPrimaryTranslations.d.cts.map +1 -0
  59. package/dist/types/cjs/queries/configurationTimezones.d.cts +4 -0
  60. package/dist/types/cjs/queries/configurationTimezones.d.cts.map +1 -0
  61. package/dist/types/cjs/queries/credit.d.cts +4196 -0
  62. package/dist/types/cjs/queries/credit.d.cts.map +1 -0
  63. package/dist/types/cjs/queries/discoverMovies.d.cts +15 -0
  64. package/dist/types/cjs/queries/discoverMovies.d.cts.map +1 -0
  65. package/dist/types/cjs/queries/discoverTv.d.cts +15 -0
  66. package/dist/types/cjs/queries/discoverTv.d.cts.map +1 -0
  67. package/dist/types/cjs/queries/episode.d.cts +98 -0
  68. package/dist/types/cjs/queries/episode.d.cts.map +1 -0
  69. package/dist/types/cjs/queries/episodeCredits.d.cts +33 -0
  70. package/dist/types/cjs/queries/episodeCredits.d.cts.map +1 -0
  71. package/dist/types/cjs/queries/episodeExternalIds.d.cts +16 -0
  72. package/dist/types/cjs/queries/episodeExternalIds.d.cts.map +1 -0
  73. package/dist/types/cjs/queries/episodeStills.d.cts +6 -0
  74. package/dist/types/cjs/queries/episodeStills.d.cts.map +1 -0
  75. package/dist/types/cjs/queries/episodeTranslations.d.cts +20 -0
  76. package/dist/types/cjs/queries/episodeTranslations.d.cts.map +1 -0
  77. package/dist/types/cjs/queries/episodeVideos.d.cts +16 -0
  78. package/dist/types/cjs/queries/episodeVideos.d.cts.map +1 -0
  79. package/dist/types/cjs/queries/find.d.cts +1803 -0
  80. package/dist/types/cjs/queries/find.d.cts.map +1 -0
  81. package/dist/types/cjs/queries/genres.d.cts +9 -0
  82. package/dist/types/cjs/queries/genres.d.cts.map +1 -0
  83. package/dist/types/cjs/queries/keyword.d.cts +9 -0
  84. package/dist/types/cjs/queries/keyword.d.cts.map +1 -0
  85. package/dist/types/cjs/queries/movie.d.cts +3597 -0
  86. package/dist/types/cjs/queries/movie.d.cts.map +1 -0
  87. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts +7 -0
  88. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts.map +1 -0
  89. package/dist/types/cjs/queries/movieCredits.d.cts +33 -0
  90. package/dist/types/cjs/queries/movieCredits.d.cts.map +1 -0
  91. package/dist/types/cjs/queries/movieExternalIds.d.cts +16 -0
  92. package/dist/types/cjs/queries/movieExternalIds.d.cts.map +1 -0
  93. package/dist/types/cjs/queries/movieImages.d.cts +6 -0
  94. package/dist/types/cjs/queries/movieImages.d.cts.map +1 -0
  95. package/dist/types/cjs/queries/movieKeywords.d.cts +6 -0
  96. package/dist/types/cjs/queries/movieKeywords.d.cts.map +1 -0
  97. package/dist/types/cjs/queries/movieRecommendations.d.cts +1866 -0
  98. package/dist/types/cjs/queries/movieRecommendations.d.cts.map +1 -0
  99. package/dist/types/cjs/queries/movieReleaseDates.d.cts +13 -0
  100. package/dist/types/cjs/queries/movieReleaseDates.d.cts.map +1 -0
  101. package/dist/types/cjs/queries/movieReviews.d.cts +1866 -0
  102. package/dist/types/cjs/queries/movieReviews.d.cts.map +1 -0
  103. package/dist/types/cjs/queries/movieSimilarMovies.d.cts +1866 -0
  104. package/dist/types/cjs/queries/movieSimilarMovies.d.cts.map +1 -0
  105. package/dist/types/cjs/queries/movieTranslations.d.cts +20 -0
  106. package/dist/types/cjs/queries/movieTranslations.d.cts.map +1 -0
  107. package/dist/types/cjs/queries/movieVideos.d.cts +16 -0
  108. package/dist/types/cjs/queries/movieVideos.d.cts.map +1 -0
  109. package/dist/types/cjs/queries/movieWatchProviders.d.cts +1375 -0
  110. package/dist/types/cjs/queries/movieWatchProviders.d.cts.map +1 -0
  111. package/dist/types/cjs/queries/network.d.cts +26 -0
  112. package/dist/types/cjs/queries/network.d.cts.map +1 -0
  113. package/dist/types/cjs/queries/networkAlternativeNames.d.cts +10 -0
  114. package/dist/types/cjs/queries/networkAlternativeNames.d.cts.map +1 -0
  115. package/dist/types/cjs/queries/networkLogos.d.cts +14 -0
  116. package/dist/types/cjs/queries/networkLogos.d.cts.map +1 -0
  117. package/dist/types/cjs/queries/person.d.cts +46 -0
  118. package/dist/types/cjs/queries/person.d.cts.map +1 -0
  119. package/dist/types/cjs/queries/personCombinedCredits.d.cts +6 -0
  120. package/dist/types/cjs/queries/personCombinedCredits.d.cts.map +1 -0
  121. package/dist/types/cjs/queries/personExternalIds.d.cts +6 -0
  122. package/dist/types/cjs/queries/personExternalIds.d.cts.map +1 -0
  123. package/dist/types/cjs/queries/personMovieCredits.d.cts +6 -0
  124. package/dist/types/cjs/queries/personMovieCredits.d.cts.map +1 -0
  125. package/dist/types/cjs/queries/personProfiles.d.cts +6 -0
  126. package/dist/types/cjs/queries/personProfiles.d.cts.map +1 -0
  127. package/dist/types/cjs/queries/personTranslations.d.cts +20 -0
  128. package/dist/types/cjs/queries/personTranslations.d.cts.map +1 -0
  129. package/dist/types/cjs/queries/personTvCredits.d.cts +6 -0
  130. package/dist/types/cjs/queries/personTvCredits.d.cts.map +1 -0
  131. package/dist/types/cjs/queries/rated.d.cts +17 -0
  132. package/dist/types/cjs/queries/rated.d.cts.map +1 -0
  133. package/dist/types/cjs/queries/review.d.cts +28 -0
  134. package/dist/types/cjs/queries/review.d.cts.map +1 -0
  135. package/dist/types/cjs/queries/search.d.cts +17 -0
  136. package/dist/types/cjs/queries/search.d.cts.map +1 -0
  137. package/dist/types/cjs/queries/season.d.cts +282 -0
  138. package/dist/types/cjs/queries/season.d.cts.map +1 -0
  139. package/dist/types/cjs/queries/seasonCredits.d.cts +33 -0
  140. package/dist/types/cjs/queries/seasonCredits.d.cts.map +1 -0
  141. package/dist/types/cjs/queries/seasonEpisodeCount.d.cts +3 -0
  142. package/dist/types/cjs/queries/seasonEpisodeCount.d.cts.map +1 -0
  143. package/dist/types/cjs/queries/seasonExternalIds.d.cts +6 -0
  144. package/dist/types/cjs/queries/seasonExternalIds.d.cts.map +1 -0
  145. package/dist/types/cjs/queries/seasonPosters.d.cts +6 -0
  146. package/dist/types/cjs/queries/seasonPosters.d.cts.map +1 -0
  147. package/dist/types/cjs/queries/seasonTranslations.d.cts +20 -0
  148. package/dist/types/cjs/queries/seasonTranslations.d.cts.map +1 -0
  149. package/dist/types/cjs/queries/seasonVideos.d.cts +16 -0
  150. package/dist/types/cjs/queries/seasonVideos.d.cts.map +1 -0
  151. package/dist/types/cjs/queries/trending.d.cts +17 -0
  152. package/dist/types/cjs/queries/trending.d.cts.map +1 -0
  153. package/dist/types/cjs/queries/tv.d.cts +10460 -0
  154. package/dist/types/cjs/queries/tv.d.cts.map +1 -0
  155. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts +12 -0
  156. package/dist/types/cjs/queries/tvAlternativeTitles.d.cts.map +1 -0
  157. package/dist/types/cjs/queries/tvContentRatings.d.cts +10 -0
  158. package/dist/types/cjs/queries/tvContentRatings.d.cts.map +1 -0
  159. package/dist/types/cjs/queries/tvCredits.d.cts +33 -0
  160. package/dist/types/cjs/queries/tvCredits.d.cts.map +1 -0
  161. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts +41 -0
  162. package/dist/types/cjs/queries/tvEpisodeGroups.d.cts.map +1 -0
  163. package/dist/types/cjs/queries/tvExternalIds.d.cts +16 -0
  164. package/dist/types/cjs/queries/tvExternalIds.d.cts.map +1 -0
  165. package/dist/types/cjs/queries/tvImages.d.cts +16 -0
  166. package/dist/types/cjs/queries/tvImages.d.cts.map +1 -0
  167. package/dist/types/cjs/queries/tvKeywords.d.cts +10 -0
  168. package/dist/types/cjs/queries/tvKeywords.d.cts.map +1 -0
  169. package/dist/types/cjs/queries/tvRecommendations.d.cts +5373 -0
  170. package/dist/types/cjs/queries/tvRecommendations.d.cts.map +1 -0
  171. package/dist/types/cjs/queries/tvReviews.d.cts +5373 -0
  172. package/dist/types/cjs/queries/tvReviews.d.cts.map +1 -0
  173. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts +5373 -0
  174. package/dist/types/cjs/queries/tvSimilarTvShows.d.cts.map +1 -0
  175. package/dist/types/cjs/queries/tvTranslations.d.cts +20 -0
  176. package/dist/types/cjs/queries/tvTranslations.d.cts.map +1 -0
  177. package/dist/types/cjs/queries/tvVideos.d.cts +16 -0
  178. package/dist/types/cjs/queries/tvVideos.d.cts.map +1 -0
  179. package/dist/types/cjs/queries/tvWatchProviders.d.cts +1375 -0
  180. package/dist/types/cjs/queries/tvWatchProviders.d.cts.map +1 -0
  181. package/dist/types/cjs/queries/videoType.d.cts +3 -0
  182. package/dist/types/cjs/queries/videoType.d.cts.map +1 -0
  183. package/dist/types/cjs/types.d.cts +326 -0
  184. package/dist/types/cjs/types.d.cts.map +1 -0
  185. package/dist/types/esm/constants.d.ts +54 -0
  186. package/dist/types/esm/constants.d.ts.map +1 -0
  187. package/dist/types/esm/helpers/decodeId.d.ts +3 -0
  188. package/dist/types/esm/helpers/decodeId.d.ts.map +1 -0
  189. package/dist/types/esm/helpers/defaultFieldResolver.d.ts +4 -0
  190. package/dist/types/esm/helpers/defaultFieldResolver.d.ts.map +1 -0
  191. package/dist/types/esm/helpers/encodeId.d.ts +3 -0
  192. package/dist/types/esm/helpers/encodeId.d.ts.map +1 -0
  193. package/dist/types/esm/helpers/formatDirectionalSuffixes.d.ts +3 -0
  194. package/dist/types/esm/helpers/formatDirectionalSuffixes.d.ts.map +1 -0
  195. package/dist/types/esm/helpers/formatQueryParams.d.ts +6 -0
  196. package/dist/types/esm/helpers/formatQueryParams.d.ts.map +1 -0
  197. package/dist/types/esm/helpers/getAppendToResponseKeys.d.ts +4 -0
  198. package/dist/types/esm/helpers/getAppendToResponseKeys.d.ts.map +1 -0
  199. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts +8 -0
  200. package/dist/types/esm/helpers/getTvIdSeasonAndEpisode.d.ts.map +1 -0
  201. package/dist/types/esm/helpers/makeFallbackFieldResolvers.d.ts +3 -0
  202. package/dist/types/esm/helpers/makeFallbackFieldResolvers.d.ts.map +1 -0
  203. package/dist/types/esm/helpers/removeNullValues.d.ts +3 -0
  204. package/dist/types/esm/helpers/removeNullValues.d.ts.map +1 -0
  205. package/dist/types/esm/helpers/snakeCasePropNames.d.ts +4 -0
  206. package/dist/types/esm/helpers/snakeCasePropNames.d.ts.map +1 -0
  207. package/dist/types/esm/helpers/typePropNames.d.ts +2 -0
  208. package/dist/types/esm/helpers/typePropNames.d.ts.map +1 -0
  209. package/dist/types/esm/index.d.ts +3 -0
  210. package/dist/types/esm/index.d.ts.map +1 -0
  211. package/dist/types/esm/main.d.ts +3 -0
  212. package/dist/types/esm/main.d.ts.map +1 -0
  213. package/dist/types/esm/queries/certifications.d.ts +5 -0
  214. package/dist/types/esm/queries/certifications.d.ts.map +1 -0
  215. package/dist/types/esm/queries/collection.d.ts +3401 -0
  216. package/dist/types/esm/queries/collection.d.ts.map +1 -0
  217. package/dist/types/esm/queries/collectionImages.d.ts +14 -0
  218. package/dist/types/esm/queries/collectionImages.d.ts.map +1 -0
  219. package/dist/types/esm/queries/collectionTranslations.d.ts +18 -0
  220. package/dist/types/esm/queries/collectionTranslations.d.ts.map +1 -0
  221. package/dist/types/esm/queries/company.d.ts +15 -0
  222. package/dist/types/esm/queries/company.d.ts.map +1 -0
  223. package/dist/types/esm/queries/companyAlternativeNames.d.ts +10 -0
  224. package/dist/types/esm/queries/companyAlternativeNames.d.ts.map +1 -0
  225. package/dist/types/esm/queries/companyLogos.d.ts +14 -0
  226. package/dist/types/esm/queries/companyLogos.d.ts.map +1 -0
  227. package/dist/types/esm/queries/configuration.d.ts +16 -0
  228. package/dist/types/esm/queries/configuration.d.ts.map +1 -0
  229. package/dist/types/esm/queries/configurationCountries.d.ts +4 -0
  230. package/dist/types/esm/queries/configurationCountries.d.ts.map +1 -0
  231. package/dist/types/esm/queries/configurationJobs.d.ts +4 -0
  232. package/dist/types/esm/queries/configurationJobs.d.ts.map +1 -0
  233. package/dist/types/esm/queries/configurationLanguages.d.ts +4 -0
  234. package/dist/types/esm/queries/configurationLanguages.d.ts.map +1 -0
  235. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts +4 -0
  236. package/dist/types/esm/queries/configurationPrimaryTranslations.d.ts.map +1 -0
  237. package/dist/types/esm/queries/configurationTimezones.d.ts +4 -0
  238. package/dist/types/esm/queries/configurationTimezones.d.ts.map +1 -0
  239. package/dist/types/esm/queries/credit.d.ts +4196 -0
  240. package/dist/types/esm/queries/credit.d.ts.map +1 -0
  241. package/dist/types/esm/queries/discoverMovies.d.ts +15 -0
  242. package/dist/types/esm/queries/discoverMovies.d.ts.map +1 -0
  243. package/dist/types/esm/queries/discoverTv.d.ts +15 -0
  244. package/dist/types/esm/queries/discoverTv.d.ts.map +1 -0
  245. package/dist/types/esm/queries/episode.d.ts +98 -0
  246. package/dist/types/esm/queries/episode.d.ts.map +1 -0
  247. package/dist/types/esm/queries/episodeCredits.d.ts +33 -0
  248. package/dist/types/esm/queries/episodeCredits.d.ts.map +1 -0
  249. package/dist/types/esm/queries/episodeExternalIds.d.ts +16 -0
  250. package/dist/types/esm/queries/episodeExternalIds.d.ts.map +1 -0
  251. package/dist/types/esm/queries/episodeStills.d.ts +6 -0
  252. package/dist/types/esm/queries/episodeStills.d.ts.map +1 -0
  253. package/dist/types/esm/queries/episodeTranslations.d.ts +20 -0
  254. package/dist/types/esm/queries/episodeTranslations.d.ts.map +1 -0
  255. package/dist/types/esm/queries/episodeVideos.d.ts +16 -0
  256. package/dist/types/esm/queries/episodeVideos.d.ts.map +1 -0
  257. package/dist/types/esm/queries/find.d.ts +1803 -0
  258. package/dist/types/esm/queries/find.d.ts.map +1 -0
  259. package/dist/types/esm/queries/genres.d.ts +9 -0
  260. package/dist/types/esm/queries/genres.d.ts.map +1 -0
  261. package/dist/types/esm/queries/keyword.d.ts +9 -0
  262. package/dist/types/esm/queries/keyword.d.ts.map +1 -0
  263. package/dist/types/esm/queries/movie.d.ts +3597 -0
  264. package/dist/types/esm/queries/movie.d.ts.map +1 -0
  265. package/dist/types/esm/queries/movieAlternativeTitles.d.ts +7 -0
  266. package/dist/types/esm/queries/movieAlternativeTitles.d.ts.map +1 -0
  267. package/dist/types/esm/queries/movieCredits.d.ts +33 -0
  268. package/dist/types/esm/queries/movieCredits.d.ts.map +1 -0
  269. package/dist/types/esm/queries/movieExternalIds.d.ts +16 -0
  270. package/dist/types/esm/queries/movieExternalIds.d.ts.map +1 -0
  271. package/dist/types/esm/queries/movieImages.d.ts +6 -0
  272. package/dist/types/esm/queries/movieImages.d.ts.map +1 -0
  273. package/dist/types/esm/queries/movieKeywords.d.ts +6 -0
  274. package/dist/types/esm/queries/movieKeywords.d.ts.map +1 -0
  275. package/dist/types/esm/queries/movieRecommendations.d.ts +1866 -0
  276. package/dist/types/esm/queries/movieRecommendations.d.ts.map +1 -0
  277. package/dist/types/esm/queries/movieReleaseDates.d.ts +13 -0
  278. package/dist/types/esm/queries/movieReleaseDates.d.ts.map +1 -0
  279. package/dist/types/esm/queries/movieReviews.d.ts +1866 -0
  280. package/dist/types/esm/queries/movieReviews.d.ts.map +1 -0
  281. package/dist/types/esm/queries/movieSimilarMovies.d.ts +1866 -0
  282. package/dist/types/esm/queries/movieSimilarMovies.d.ts.map +1 -0
  283. package/dist/types/esm/queries/movieTranslations.d.ts +20 -0
  284. package/dist/types/esm/queries/movieTranslations.d.ts.map +1 -0
  285. package/dist/types/esm/queries/movieVideos.d.ts +16 -0
  286. package/dist/types/esm/queries/movieVideos.d.ts.map +1 -0
  287. package/dist/types/esm/queries/movieWatchProviders.d.ts +1375 -0
  288. package/dist/types/esm/queries/movieWatchProviders.d.ts.map +1 -0
  289. package/dist/types/esm/queries/network.d.ts +26 -0
  290. package/dist/types/esm/queries/network.d.ts.map +1 -0
  291. package/dist/types/esm/queries/networkAlternativeNames.d.ts +10 -0
  292. package/dist/types/esm/queries/networkAlternativeNames.d.ts.map +1 -0
  293. package/dist/types/esm/queries/networkLogos.d.ts +14 -0
  294. package/dist/types/esm/queries/networkLogos.d.ts.map +1 -0
  295. package/dist/types/esm/queries/person.d.ts +46 -0
  296. package/dist/types/esm/queries/person.d.ts.map +1 -0
  297. package/dist/types/esm/queries/personCombinedCredits.d.ts +6 -0
  298. package/dist/types/esm/queries/personCombinedCredits.d.ts.map +1 -0
  299. package/dist/types/esm/queries/personExternalIds.d.ts +6 -0
  300. package/dist/types/esm/queries/personExternalIds.d.ts.map +1 -0
  301. package/dist/types/esm/queries/personMovieCredits.d.ts +6 -0
  302. package/dist/types/esm/queries/personMovieCredits.d.ts.map +1 -0
  303. package/dist/types/esm/queries/personProfiles.d.ts +6 -0
  304. package/dist/types/esm/queries/personProfiles.d.ts.map +1 -0
  305. package/dist/types/esm/queries/personTranslations.d.ts +20 -0
  306. package/dist/types/esm/queries/personTranslations.d.ts.map +1 -0
  307. package/dist/types/esm/queries/personTvCredits.d.ts +6 -0
  308. package/dist/types/esm/queries/personTvCredits.d.ts.map +1 -0
  309. package/dist/types/esm/queries/rated.d.ts +17 -0
  310. package/dist/types/esm/queries/rated.d.ts.map +1 -0
  311. package/dist/types/esm/queries/review.d.ts +28 -0
  312. package/dist/types/esm/queries/review.d.ts.map +1 -0
  313. package/dist/types/esm/queries/search.d.ts +17 -0
  314. package/dist/types/esm/queries/search.d.ts.map +1 -0
  315. package/dist/types/esm/queries/season.d.ts +282 -0
  316. package/dist/types/esm/queries/season.d.ts.map +1 -0
  317. package/dist/types/esm/queries/seasonCredits.d.ts +33 -0
  318. package/dist/types/esm/queries/seasonCredits.d.ts.map +1 -0
  319. package/dist/types/esm/queries/seasonEpisodeCount.d.ts +3 -0
  320. package/dist/types/esm/queries/seasonEpisodeCount.d.ts.map +1 -0
  321. package/dist/types/esm/queries/seasonExternalIds.d.ts +6 -0
  322. package/dist/types/esm/queries/seasonExternalIds.d.ts.map +1 -0
  323. package/dist/types/esm/queries/seasonPosters.d.ts +6 -0
  324. package/dist/types/esm/queries/seasonPosters.d.ts.map +1 -0
  325. package/dist/types/esm/queries/seasonTranslations.d.ts +20 -0
  326. package/dist/types/esm/queries/seasonTranslations.d.ts.map +1 -0
  327. package/dist/types/esm/queries/seasonVideos.d.ts +16 -0
  328. package/dist/types/esm/queries/seasonVideos.d.ts.map +1 -0
  329. package/dist/types/esm/queries/trending.d.ts +17 -0
  330. package/dist/types/esm/queries/trending.d.ts.map +1 -0
  331. package/dist/types/esm/queries/tv.d.ts +10460 -0
  332. package/dist/types/esm/queries/tv.d.ts.map +1 -0
  333. package/dist/types/esm/queries/tvAlternativeTitles.d.ts +12 -0
  334. package/dist/types/esm/queries/tvAlternativeTitles.d.ts.map +1 -0
  335. package/dist/types/esm/queries/tvContentRatings.d.ts +10 -0
  336. package/dist/types/esm/queries/tvContentRatings.d.ts.map +1 -0
  337. package/dist/types/esm/queries/tvCredits.d.ts +33 -0
  338. package/dist/types/esm/queries/tvCredits.d.ts.map +1 -0
  339. package/dist/types/esm/queries/tvEpisodeGroups.d.ts +41 -0
  340. package/dist/types/esm/queries/tvEpisodeGroups.d.ts.map +1 -0
  341. package/dist/types/esm/queries/tvExternalIds.d.ts +16 -0
  342. package/dist/types/esm/queries/tvExternalIds.d.ts.map +1 -0
  343. package/dist/types/esm/queries/tvImages.d.ts +16 -0
  344. package/dist/types/esm/queries/tvImages.d.ts.map +1 -0
  345. package/dist/types/esm/queries/tvKeywords.d.ts +10 -0
  346. package/dist/types/esm/queries/tvKeywords.d.ts.map +1 -0
  347. package/dist/types/esm/queries/tvRecommendations.d.ts +5373 -0
  348. package/dist/types/esm/queries/tvRecommendations.d.ts.map +1 -0
  349. package/dist/types/esm/queries/tvReviews.d.ts +5373 -0
  350. package/dist/types/esm/queries/tvReviews.d.ts.map +1 -0
  351. package/dist/types/esm/queries/tvSimilarTvShows.d.ts +5373 -0
  352. package/dist/types/esm/queries/tvSimilarTvShows.d.ts.map +1 -0
  353. package/dist/types/esm/queries/tvTranslations.d.ts +20 -0
  354. package/dist/types/esm/queries/tvTranslations.d.ts.map +1 -0
  355. package/dist/types/esm/queries/tvVideos.d.ts +16 -0
  356. package/dist/types/esm/queries/tvVideos.d.ts.map +1 -0
  357. package/dist/types/esm/queries/tvWatchProviders.d.ts +1375 -0
  358. package/dist/types/esm/queries/tvWatchProviders.d.ts.map +1 -0
  359. package/dist/types/esm/queries/videoType.d.ts +3 -0
  360. package/dist/types/esm/queries/videoType.d.ts.map +1 -0
  361. package/dist/types/esm/types.d.ts +326 -0
  362. package/dist/types/esm/types.d.ts.map +1 -0
  363. package/dist/types/tsconfig.build.tsbuildinfo +1 -0
  364. package/package.json +71 -0
  365. package/src/__testUtils__/helpers/buildEndpoint.ts +21 -0
  366. package/src/__testUtils__/helpers/buildResolveInfoArg.ts +34 -0
  367. package/src/__testUtils__/helpers/createRestClient.ts +9 -0
  368. package/src/constants.ts +71 -0
  369. package/src/helpers/__snapshots__/typePropNames.test.ts.snap +708 -0
  370. package/src/helpers/decodeId.ts +4 -0
  371. package/src/helpers/defaultFieldResolver.ts +19 -0
  372. package/src/helpers/encodeId.ts +4 -0
  373. package/src/helpers/formatDirectionalSuffixes.ts +15 -0
  374. package/src/helpers/formatQueryParams.ts +8 -0
  375. package/src/helpers/getAppendToResponseKeys.ts +28 -0
  376. package/src/helpers/getTvIdSeasonAndEpisode.ts +25 -0
  377. package/src/helpers/makeFallbackFieldResolvers.ts +11 -0
  378. package/src/helpers/removeNullValues.ts +11 -0
  379. package/src/helpers/snakeCasePropNames.ts +9 -0
  380. package/src/helpers/typePropNames.test.ts +7 -0
  381. package/src/helpers/typePropNames.ts +14 -0
  382. package/src/index.ts +2 -0
  383. package/src/main.ts +215 -0
  384. package/src/queries/__snapshots__/certifications.test.ts.snap +1365 -0
  385. package/src/queries/__snapshots__/collection.test.ts.snap +195 -0
  386. package/src/queries/__snapshots__/collectionImages.test.ts.snap +29 -0
  387. package/src/queries/__snapshots__/collectionTranslations.test.ts.snap +391 -0
  388. package/src/queries/__snapshots__/company.test.ts.snap +14 -0
  389. package/src/queries/__snapshots__/companyAlternativeNames.test.ts.snap +14 -0
  390. package/src/queries/__snapshots__/companyLogos.test.ts.snap +46 -0
  391. package/src/queries/__snapshots__/configuration.test.ts.snap +101 -0
  392. package/src/queries/__snapshots__/configurationCountries.test.ts.snap +1241 -0
  393. package/src/queries/__snapshots__/configurationJobs.test.ts.snap +1007 -0
  394. package/src/queries/__snapshots__/configurationLanguages.test.ts.snap +941 -0
  395. package/src/queries/__snapshots__/configurationPrimaryTranslations.test.ts.snap +76 -0
  396. package/src/queries/__snapshots__/configurationTimezones.test.ts.snap +1678 -0
  397. package/src/queries/__snapshots__/credit.test.ts.snap +106 -0
  398. package/src/queries/__snapshots__/discoverMovies.test.ts.snap +481 -0
  399. package/src/queries/__snapshots__/discoverTv.test.ts.snap +443 -0
  400. package/src/queries/__snapshots__/episode.test.ts.snap +360 -0
  401. package/src/queries/__snapshots__/episodeCredits.test.ts.snap +866 -0
  402. package/src/queries/__snapshots__/episodeExternalIds.test.ts.snap +21 -0
  403. package/src/queries/__snapshots__/episodeStills.test.ts.snap +281 -0
  404. package/src/queries/__snapshots__/episodeTranslations.test.ts.snap +1059 -0
  405. package/src/queries/__snapshots__/episodeVideos.test.ts.snap +5 -0
  406. package/src/queries/__snapshots__/find.test.ts.snap +86 -0
  407. package/src/queries/__snapshots__/genres.test.ts.snap +151 -0
  408. package/src/queries/__snapshots__/keyword.test.ts.snap +8 -0
  409. package/src/queries/__snapshots__/movie.test.ts.snap +73 -0
  410. package/src/queries/__snapshots__/movieAlternativeTitles.test.ts.snap +611 -0
  411. package/src/queries/__snapshots__/movieCredits.test.ts.snap +2690 -0
  412. package/src/queries/__snapshots__/movieExternalIds.test.ts.snap +19 -0
  413. package/src/queries/__snapshots__/movieImages.test.ts.snap +7 -0
  414. package/src/queries/__snapshots__/movieKeywords.test.ts.snap +147 -0
  415. package/src/queries/__snapshots__/movieRecommendations.test.ts.snap +727 -0
  416. package/src/queries/__snapshots__/movieReleaseDates.test.ts.snap +755 -0
  417. package/src/queries/__snapshots__/movieReviews.test.ts.snap +509 -0
  418. package/src/queries/__snapshots__/movieSimilarMovies.test.ts.snap +693 -0
  419. package/src/queries/__snapshots__/movieTranslations.test.ts.snap +1079 -0
  420. package/src/queries/__snapshots__/movieVideos.test.ts.snap +179 -0
  421. package/src/queries/__snapshots__/movieWatchProviders.test.ts.snap +5321 -0
  422. package/src/queries/__snapshots__/network.test.ts.snap +12 -0
  423. package/src/queries/__snapshots__/networkAlternativeNames.test.ts.snap +18 -0
  424. package/src/queries/__snapshots__/networkLogos.test.ts.snap +16 -0
  425. package/src/queries/__snapshots__/person.test.ts.snap +35 -0
  426. package/src/queries/__snapshots__/personCombinedCredits.test.ts.snap +7249 -0
  427. package/src/queries/__snapshots__/personExternalIds.test.ts.snap +25 -0
  428. package/src/queries/__snapshots__/personMovieCredits.test.ts.snap +5595 -0
  429. package/src/queries/__snapshots__/personProfiles.test.ts.snap +155 -0
  430. package/src/queries/__snapshots__/personTranslations.test.ts.snap +389 -0
  431. package/src/queries/__snapshots__/personTvCredits.test.ts.snap +1361 -0
  432. package/src/queries/__snapshots__/rated.test.ts.snap +547 -0
  433. package/src/queries/__snapshots__/review.test.ts.snap +31 -0
  434. package/src/queries/__snapshots__/search.test.ts.snap +2479 -0
  435. package/src/queries/__snapshots__/season.test.ts.snap +4694 -0
  436. package/src/queries/__snapshots__/seasonCredits.test.ts.snap +692 -0
  437. package/src/queries/__snapshots__/seasonExternalIds.test.ts.snap +19 -0
  438. package/src/queries/__snapshots__/seasonPosters.test.ts.snap +5 -0
  439. package/src/queries/__snapshots__/seasonTranslations.test.ts.snap +1073 -0
  440. package/src/queries/__snapshots__/seasonVideos.test.ts.snap +395 -0
  441. package/src/queries/__snapshots__/trending.test.ts.snap +481 -0
  442. package/src/queries/__snapshots__/tv.test.ts.snap +220 -0
  443. package/src/queries/__snapshots__/tvAlternativeTitles.test.ts.snap +211 -0
  444. package/src/queries/__snapshots__/tvContentRatings.test.ts.snap +115 -0
  445. package/src/queries/__snapshots__/tvCredits.test.ts.snap +809 -0
  446. package/src/queries/__snapshots__/tvEpisodeGroups.test.ts.snap +39 -0
  447. package/src/queries/__snapshots__/tvExternalIds.test.ts.snap +27 -0
  448. package/src/queries/__snapshots__/tvImages.test.ts.snap +7 -0
  449. package/src/queries/__snapshots__/tvKeywords.test.ts.snap +59 -0
  450. package/src/queries/__snapshots__/tvRecommendations.test.ts.snap +757 -0
  451. package/src/queries/__snapshots__/tvReviews.test.ts.snap +562 -0
  452. package/src/queries/__snapshots__/tvSimilarTvShows.test.ts.snap +759 -0
  453. package/src/queries/__snapshots__/tvTranslations.test.ts.snap +1267 -0
  454. package/src/queries/__snapshots__/tvVideos.test.ts.snap +107 -0
  455. package/src/queries/__snapshots__/tvWatchProviders.test.ts.snap +2817 -0
  456. package/src/queries/certifications.test.ts +66 -0
  457. package/src/queries/certifications.ts +29 -0
  458. package/src/queries/collection.test.ts +47 -0
  459. package/src/queries/collection.ts +40 -0
  460. package/src/queries/collectionImages.test.ts +90 -0
  461. package/src/queries/collectionImages.ts +30 -0
  462. package/src/queries/collectionTranslations.test.ts +45 -0
  463. package/src/queries/collectionTranslations.ts +28 -0
  464. package/src/queries/company.test.ts +45 -0
  465. package/src/queries/company.ts +40 -0
  466. package/src/queries/companyAlternativeNames.test.ts +45 -0
  467. package/src/queries/companyAlternativeNames.ts +29 -0
  468. package/src/queries/companyLogos.test.ts +45 -0
  469. package/src/queries/companyLogos.ts +28 -0
  470. package/src/queries/configuration.test.ts +44 -0
  471. package/src/queries/configuration.ts +23 -0
  472. package/src/queries/configurationCountries.test.ts +45 -0
  473. package/src/queries/configurationCountries.ts +28 -0
  474. package/src/queries/configurationJobs.test.ts +45 -0
  475. package/src/queries/configurationJobs.ts +28 -0
  476. package/src/queries/configurationLanguages.test.ts +45 -0
  477. package/src/queries/configurationLanguages.ts +28 -0
  478. package/src/queries/configurationPrimaryTranslations.test.ts +45 -0
  479. package/src/queries/configurationPrimaryTranslations.ts +29 -0
  480. package/src/queries/configurationTimezones.test.ts +45 -0
  481. package/src/queries/configurationTimezones.ts +28 -0
  482. package/src/queries/credit.test.ts +45 -0
  483. package/src/queries/credit.ts +26 -0
  484. package/src/queries/discoverMovies.test.ts +202 -0
  485. package/src/queries/discoverMovies.ts +65 -0
  486. package/src/queries/discoverTv.test.ts +142 -0
  487. package/src/queries/discoverTv.ts +66 -0
  488. package/src/queries/episode.test.ts +82 -0
  489. package/src/queries/episode.ts +73 -0
  490. package/src/queries/episodeCredits.test.ts +134 -0
  491. package/src/queries/episodeCredits.ts +41 -0
  492. package/src/queries/episodeExternalIds.test.ts +104 -0
  493. package/src/queries/episodeExternalIds.ts +40 -0
  494. package/src/queries/episodeStills.test.ts +96 -0
  495. package/src/queries/episodeStills.ts +38 -0
  496. package/src/queries/episodeTranslations.test.ts +96 -0
  497. package/src/queries/episodeTranslations.ts +38 -0
  498. package/src/queries/episodeVideos.test.ts +96 -0
  499. package/src/queries/episodeVideos.ts +38 -0
  500. package/src/queries/find.test.ts +48 -0
  501. package/src/queries/find.ts +35 -0
  502. package/src/queries/genres.test.ts +66 -0
  503. package/src/queries/genres.ts +29 -0
  504. package/src/queries/keyword.test.ts +45 -0
  505. package/src/queries/keyword.ts +28 -0
  506. package/src/queries/movie.test.ts +81 -0
  507. package/src/queries/movie.ts +87 -0
  508. package/src/queries/movieAlternativeTitles.test.ts +95 -0
  509. package/src/queries/movieAlternativeTitles.ts +37 -0
  510. package/src/queries/movieCredits.test.ts +118 -0
  511. package/src/queries/movieCredits.ts +35 -0
  512. package/src/queries/movieExternalIds.test.ts +95 -0
  513. package/src/queries/movieExternalIds.ts +35 -0
  514. package/src/queries/movieImages.test.ts +118 -0
  515. package/src/queries/movieImages.ts +35 -0
  516. package/src/queries/movieKeywords.test.ts +95 -0
  517. package/src/queries/movieKeywords.ts +33 -0
  518. package/src/queries/movieRecommendations.test.ts +173 -0
  519. package/src/queries/movieRecommendations.ts +74 -0
  520. package/src/queries/movieReleaseDates.test.ts +103 -0
  521. package/src/queries/movieReleaseDates.ts +34 -0
  522. package/src/queries/movieReviews.test.ts +152 -0
  523. package/src/queries/movieReviews.ts +74 -0
  524. package/src/queries/movieSimilarMovies.test.ts +173 -0
  525. package/src/queries/movieSimilarMovies.ts +74 -0
  526. package/src/queries/movieTranslations.test.ts +99 -0
  527. package/src/queries/movieTranslations.ts +33 -0
  528. package/src/queries/movieVideos.test.ts +95 -0
  529. package/src/queries/movieVideos.ts +33 -0
  530. package/src/queries/movieWatchProviders.test.ts +103 -0
  531. package/src/queries/movieWatchProviders.ts +33 -0
  532. package/src/queries/network.test.ts +45 -0
  533. package/src/queries/network.ts +40 -0
  534. package/src/queries/networkAlternativeNames.test.ts +45 -0
  535. package/src/queries/networkAlternativeNames.ts +29 -0
  536. package/src/queries/networkLogos.test.ts +45 -0
  537. package/src/queries/networkLogos.ts +28 -0
  538. package/src/queries/person.test.ts +81 -0
  539. package/src/queries/person.ts +67 -0
  540. package/src/queries/personCombinedCredits.test.ts +99 -0
  541. package/src/queries/personCombinedCredits.ts +35 -0
  542. package/src/queries/personExternalIds.test.ts +99 -0
  543. package/src/queries/personExternalIds.ts +35 -0
  544. package/src/queries/personMovieCredits.test.ts +99 -0
  545. package/src/queries/personMovieCredits.ts +35 -0
  546. package/src/queries/personProfiles.test.ts +98 -0
  547. package/src/queries/personProfiles.ts +33 -0
  548. package/src/queries/personTranslations.test.ts +99 -0
  549. package/src/queries/personTranslations.ts +33 -0
  550. package/src/queries/personTvCredits.test.ts +99 -0
  551. package/src/queries/personTvCredits.ts +35 -0
  552. package/src/queries/rated.test.ts +170 -0
  553. package/src/queries/rated.ts +70 -0
  554. package/src/queries/review.test.ts +45 -0
  555. package/src/queries/review.ts +40 -0
  556. package/src/queries/search.test.ts +426 -0
  557. package/src/queries/search.ts +73 -0
  558. package/src/queries/season.test.ts +82 -0
  559. package/src/queries/season.ts +78 -0
  560. package/src/queries/seasonCredits.test.ts +118 -0
  561. package/src/queries/seasonCredits.ts +35 -0
  562. package/src/queries/seasonEpisodeCount.ts +9 -0
  563. package/src/queries/seasonExternalIds.test.ts +103 -0
  564. package/src/queries/seasonExternalIds.ts +35 -0
  565. package/src/queries/seasonPosters.test.ts +94 -0
  566. package/src/queries/seasonPosters.ts +33 -0
  567. package/src/queries/seasonTranslations.test.ts +102 -0
  568. package/src/queries/seasonTranslations.ts +33 -0
  569. package/src/queries/seasonVideos.test.ts +102 -0
  570. package/src/queries/seasonVideos.ts +33 -0
  571. package/src/queries/trending.test.ts +165 -0
  572. package/src/queries/trending.ts +70 -0
  573. package/src/queries/tv.test.ts +81 -0
  574. package/src/queries/tv.ts +98 -0
  575. package/src/queries/tvAlternativeTitles.test.ts +103 -0
  576. package/src/queries/tvAlternativeTitles.ts +35 -0
  577. package/src/queries/tvContentRatings.test.ts +103 -0
  578. package/src/queries/tvContentRatings.ts +35 -0
  579. package/src/queries/tvCredits.test.ts +118 -0
  580. package/src/queries/tvCredits.ts +35 -0
  581. package/src/queries/tvEpisodeGroups.test.ts +103 -0
  582. package/src/queries/tvEpisodeGroups.ts +34 -0
  583. package/src/queries/tvExternalIds.test.ts +103 -0
  584. package/src/queries/tvExternalIds.ts +35 -0
  585. package/src/queries/tvImages.test.ts +118 -0
  586. package/src/queries/tvImages.ts +35 -0
  587. package/src/queries/tvKeywords.test.ts +103 -0
  588. package/src/queries/tvKeywords.ts +33 -0
  589. package/src/queries/tvRecommendations.test.ts +173 -0
  590. package/src/queries/tvRecommendations.ts +74 -0
  591. package/src/queries/tvReviews.test.ts +168 -0
  592. package/src/queries/tvReviews.ts +74 -0
  593. package/src/queries/tvSimilarTvShows.test.ts +168 -0
  594. package/src/queries/tvSimilarTvShows.ts +74 -0
  595. package/src/queries/tvTranslations.test.ts +103 -0
  596. package/src/queries/tvTranslations.ts +33 -0
  597. package/src/queries/tvVideos.test.ts +103 -0
  598. package/src/queries/tvVideos.ts +33 -0
  599. package/src/queries/tvWatchProviders.test.ts +103 -0
  600. package/src/queries/tvWatchProviders.ts +33 -0
  601. package/src/queries/videoType.ts +4 -0
  602. package/src/types.ts +476 -0
  603. package/tsconfig.build.json +11 -0
  604. package/tsconfig.json +18 -0
@@ -0,0 +1,3432 @@
1
+ import { snakeCase, isUndefined, capitalize } from 'lodash-es';
2
+ import { schema } from '@tmdb-graphql-api/schema';
3
+ import { Kind, GraphQLError } from 'graphql';
4
+ import { Core } from '@cachemap/core';
5
+ import { init as init$1 } from '@cachemap/map';
6
+ import { init } from '@cachemap/reaper';
7
+ import { removeConnectionInputOptions, makeConnectionResolver } from '@graphql-box/connection-resolver';
8
+ import { encode, decode } from 'js-base64';
9
+ import 'core-js/modules/es.array.push.js';
10
+ import { getChildFields, getName } from '@graphql-box/helpers';
11
+
12
+ const defaultFieldResolver = (object, _arguments, _context, {
13
+ fieldNodes
14
+ }) => {
15
+ const currentField = fieldNodes[0];
16
+ const {
17
+ value: name
18
+ } = currentField.name;
19
+ if (Object.prototype.hasOwnProperty.call(object, name)) {
20
+ return object[name];
21
+ }
22
+ return object[snakeCase(name)];
23
+ };
24
+
25
+ const typeMap = schema.getTypeMap();
26
+ const typePropNames = Object.keys(typeMap).reduce((acc, key) => {
27
+ const type = typeMap[key];
28
+ if (type?.astNode?.kind === Kind.OBJECT_TYPE_DEFINITION) {
29
+ acc[key] = Object.keys(type.getFields());
30
+ }
31
+ return acc;
32
+ }, {});
33
+
34
+ const makeFallbackFieldResolvers = (typeName, resolver) => {
35
+ const propNames = typePropNames[typeName];
36
+ return propNames.reduce((acc, propName) => {
37
+ acc[propName] = resolver;
38
+ return acc;
39
+ }, {});
40
+ };
41
+
42
+ const ALTERNATIVE_NAMES = 'alternativeNames';
43
+ const ALTERNATIVE_TITLES = 'alternativeTitles';
44
+ const BACKDROPS = 'backdrops';
45
+ const CAST = 'cast';
46
+ const CERTIFICATIONS = 'certifications';
47
+ const COLLECTION = 'collection';
48
+ const COMBINED_CREDITS = 'combinedCredits';
49
+ const COMPANY = 'company';
50
+ const CONFIGURATION = 'configuration';
51
+ const CONTENT_RATINGS = 'contentRatings';
52
+ const COUNTRIES = 'countries';
53
+ const CREDIT = 'credit';
54
+ const CREDITS = 'credits';
55
+ const CREW = 'crew';
56
+ const DISCOVER_MOVIES = 'discoverMovies';
57
+ const DISCOVER_TV = 'discoverTv';
58
+ const EPISODE = 'episode';
59
+ const EPISODE_GROUPS = 'episodeGroups';
60
+ const EXTERNAL_IDS = 'externalIds';
61
+ const FIND = 'find';
62
+ const GENRES = 'genres';
63
+ const IMAGES = 'images';
64
+ const JOBS = 'jobs';
65
+ const KEYWORD = 'keyword';
66
+ const KEYWORDS = 'keywords';
67
+ const LANGUAGES = 'languages';
68
+ const LOGOS = 'logos';
69
+ const MOVIE = 'movie';
70
+ const MOVIE_CREDITS = 'movieCredits';
71
+ const NETWORK = 'network';
72
+ const PERSON = 'person';
73
+ const POSTERS = 'posters';
74
+ const PRIMARY_TRANSLATIONS = 'primaryTranslations';
75
+ const PROFILES = 'profiles';
76
+ const RATED = 'rated';
77
+ const RECOMMENDATIONS = 'recommendations';
78
+ const RELEASE_DATES = 'releaseDates';
79
+ const REVIEW = 'review';
80
+ const REVIEWS = 'reviews';
81
+ const SEARCH = 'search';
82
+ const SEASON = 'season';
83
+ const SIMILAR = 'similar';
84
+ const SIMILAR_MOVIES = 'similarMovies';
85
+ const SIMILAR_TV_SHOWS = 'similarTvShows';
86
+ const STILLS = 'stills';
87
+ const TIMEZONES = 'timezones';
88
+ const TRANSLATIONS = 'translations';
89
+ const TRENDING = 'trending';
90
+ const TV = 'tv';
91
+ const TV_CREDITS = 'tvCredits';
92
+ const VIDEOS = 'videos';
93
+ const WATCH_PROVIDERS = 'watchProviders';
94
+
95
+ const resolveCertifications = async (_obj, {
96
+ screenType
97
+ }, {
98
+ requestID,
99
+ restClient,
100
+ setCacheMetadata,
101
+ tmdbGuestSessionId
102
+ }, {
103
+ fieldNodes
104
+ }) => {
105
+ const {
106
+ data,
107
+ errors
108
+ } = await restClient.certifications({
109
+ pathTemplateData: {
110
+ type: screenType.toLowerCase()
111
+ }
112
+ }, {
113
+ requestID,
114
+ tmdbGuestSessionId
115
+ });
116
+ if (errors?.length) {
117
+ throw new GraphQLError(`Failed to resolve ${screenType} ${CERTIFICATIONS}.`, {
118
+ nodes: fieldNodes,
119
+ originalError: errors[0]
120
+ });
121
+ }
122
+ setCacheMetadata(CERTIFICATIONS, {
123
+ cacheControl: 'public, max-age=28800'
124
+ });
125
+ return data?.certifications;
126
+ };
127
+
128
+ const resolveCollection = async (obj, args, {
129
+ requestID,
130
+ restClient,
131
+ setCacheMetadata,
132
+ tmdbGuestSessionId
133
+ }, {
134
+ fieldName,
135
+ fieldNodes
136
+ }) => {
137
+ const typedFieldName = snakeCase(fieldName);
138
+ if (obj && !isUndefined(obj[typedFieldName])) {
139
+ return obj[typedFieldName];
140
+ }
141
+ const id = obj ? obj.id : args.id;
142
+ const {
143
+ data,
144
+ errors,
145
+ headers
146
+ } = await restClient.collection({
147
+ pathTemplateData: {
148
+ id
149
+ }
150
+ }, {
151
+ requestID,
152
+ tmdbGuestSessionId
153
+ });
154
+ if (errors?.length) {
155
+ throw new GraphQLError(`Failed to resolve ${COLLECTION} ${id}.`, {
156
+ nodes: fieldNodes,
157
+ originalError: errors[0]
158
+ });
159
+ }
160
+ if (obj) {
161
+ setCacheMetadata(`${COLLECTION}.${fieldName}`, headers);
162
+ return data[typedFieldName];
163
+ }
164
+ setCacheMetadata(COLLECTION, headers);
165
+ return data;
166
+ };
167
+
168
+ const resolveCollectionImages = async ({
169
+ id
170
+ }, _args, {
171
+ requestID,
172
+ restClient,
173
+ setCacheMetadata,
174
+ tmdbGuestSessionId
175
+ }, {
176
+ fieldName,
177
+ fieldNodes
178
+ }) => {
179
+ const typedFieldName = fieldName;
180
+ const {
181
+ data,
182
+ errors,
183
+ headers
184
+ } = await restClient.collection({
185
+ pathTemplateData: {
186
+ id,
187
+ type: IMAGES
188
+ }
189
+ }, {
190
+ requestID,
191
+ tmdbGuestSessionId
192
+ });
193
+ if (errors?.length) {
194
+ throw new GraphQLError(`Failed to resolve ${COLLECTION} ${id} ${fieldName}.`, {
195
+ nodes: fieldNodes,
196
+ originalError: errors[0]
197
+ });
198
+ }
199
+ setCacheMetadata(`${COLLECTION}.${typedFieldName}`, headers);
200
+ return data[typedFieldName];
201
+ };
202
+
203
+ const resolveCollectionTranslations = async ({
204
+ id
205
+ }, _args, {
206
+ requestID,
207
+ restClient,
208
+ setCacheMetadata,
209
+ tmdbGuestSessionId
210
+ }, {
211
+ fieldNodes
212
+ }) => {
213
+ const {
214
+ data,
215
+ errors,
216
+ headers
217
+ } = await restClient.collection({
218
+ pathTemplateData: {
219
+ id,
220
+ type: 'translations'
221
+ }
222
+ }, {
223
+ requestID,
224
+ tmdbGuestSessionId
225
+ });
226
+ if (errors?.length) {
227
+ throw new GraphQLError(`Failed to resolve ${COLLECTION} ${id} ${TRANSLATIONS}.`, {
228
+ nodes: fieldNodes,
229
+ originalError: errors[0]
230
+ });
231
+ }
232
+ setCacheMetadata(`${COLLECTION}.${TRANSLATIONS}`, headers);
233
+ return data?.translations;
234
+ };
235
+
236
+ const resolveCompany = async (obj, args, {
237
+ requestID,
238
+ restClient,
239
+ setCacheMetadata,
240
+ tmdbGuestSessionId
241
+ }, {
242
+ fieldName,
243
+ fieldNodes
244
+ }) => {
245
+ const typedFieldName = snakeCase(fieldName);
246
+ if (obj && !isUndefined(obj[typedFieldName])) {
247
+ return obj[typedFieldName];
248
+ }
249
+ const id = obj ? obj.id : args.id;
250
+ const {
251
+ data,
252
+ errors,
253
+ headers
254
+ } = await restClient.company({
255
+ pathTemplateData: {
256
+ id
257
+ }
258
+ }, {
259
+ requestID,
260
+ tmdbGuestSessionId
261
+ });
262
+ if (errors?.length) {
263
+ throw new GraphQLError(`Failed to resolve ${COMPANY} ${id}.`, {
264
+ nodes: fieldNodes,
265
+ originalError: errors[0]
266
+ });
267
+ }
268
+ if (obj) {
269
+ setCacheMetadata(`${COMPANY}.${fieldName}`, headers);
270
+ return data[typedFieldName];
271
+ }
272
+ setCacheMetadata(COMPANY, headers);
273
+ return data;
274
+ };
275
+
276
+ const resolveCompanyAlternativeNames = async ({
277
+ id
278
+ }, _args, {
279
+ requestID,
280
+ restClient,
281
+ setCacheMetadata,
282
+ tmdbGuestSessionId
283
+ }, {
284
+ fieldNodes
285
+ }) => {
286
+ const {
287
+ data,
288
+ errors,
289
+ headers
290
+ } = await restClient.company({
291
+ pathTemplateData: {
292
+ id,
293
+ type: snakeCase(ALTERNATIVE_NAMES)
294
+ }
295
+ }, {
296
+ requestID,
297
+ tmdbGuestSessionId
298
+ });
299
+ if (errors?.length) {
300
+ throw new GraphQLError(`Failed to resolve ${COMPANY} ${id} ${ALTERNATIVE_NAMES}.`, {
301
+ nodes: fieldNodes,
302
+ originalError: errors[0]
303
+ });
304
+ }
305
+ setCacheMetadata(`${COMPANY}.${ALTERNATIVE_NAMES}`, headers);
306
+ return data.results;
307
+ };
308
+
309
+ const resolveCompanyLogos = async ({
310
+ id
311
+ }, _args, {
312
+ requestID,
313
+ restClient,
314
+ setCacheMetadata,
315
+ tmdbGuestSessionId
316
+ }, {
317
+ fieldNodes
318
+ }) => {
319
+ const {
320
+ data,
321
+ errors,
322
+ headers
323
+ } = await restClient.company({
324
+ pathTemplateData: {
325
+ id,
326
+ type: IMAGES
327
+ }
328
+ }, {
329
+ requestID,
330
+ tmdbGuestSessionId
331
+ });
332
+ if (errors?.length) {
333
+ throw new GraphQLError(`Failed to resolve ${COMPANY} ${id} ${LOGOS}.`, {
334
+ nodes: fieldNodes,
335
+ originalError: errors[0]
336
+ });
337
+ }
338
+ setCacheMetadata(`${COMPANY}.${LOGOS}`, headers);
339
+ return data.logos;
340
+ };
341
+
342
+ const resolveConfiguration = async (_obj, _args, {
343
+ requestID,
344
+ restClient,
345
+ setCacheMetadata,
346
+ tmdbGuestSessionId
347
+ }, {
348
+ fieldNodes
349
+ }) => {
350
+ const {
351
+ data,
352
+ errors,
353
+ headers
354
+ } = await restClient.configuration(undefined, {
355
+ requestID,
356
+ tmdbGuestSessionId
357
+ });
358
+ if (errors?.length) {
359
+ throw new GraphQLError('Failed to resolve configuration.', {
360
+ nodes: fieldNodes,
361
+ originalError: errors[0]
362
+ });
363
+ }
364
+ setCacheMetadata(CONFIGURATION, headers);
365
+ return data;
366
+ };
367
+
368
+ const resolveConfigurationCountries = async (_obj, _args, {
369
+ requestID,
370
+ restClient,
371
+ setCacheMetadata,
372
+ tmdbGuestSessionId
373
+ }, {
374
+ fieldNodes
375
+ }) => {
376
+ const {
377
+ data,
378
+ errors,
379
+ headers
380
+ } = await restClient.configuration({
381
+ pathTemplateData: {
382
+ type: COUNTRIES
383
+ }
384
+ }, {
385
+ requestID,
386
+ tmdbGuestSessionId
387
+ });
388
+ if (errors?.length) {
389
+ throw new GraphQLError(`Failed to resolve ${CONFIGURATION} ${COUNTRIES}.`, {
390
+ nodes: fieldNodes,
391
+ originalError: errors[0]
392
+ });
393
+ }
394
+ setCacheMetadata(`${CONFIGURATION}.${COUNTRIES}`, headers);
395
+ return data;
396
+ };
397
+
398
+ const resolveConfigurationJobs = async (_obj, _args, {
399
+ requestID,
400
+ restClient,
401
+ setCacheMetadata,
402
+ tmdbGuestSessionId
403
+ }, {
404
+ fieldNodes
405
+ }) => {
406
+ const {
407
+ data,
408
+ errors,
409
+ headers
410
+ } = await restClient.configuration({
411
+ pathTemplateData: {
412
+ type: JOBS
413
+ }
414
+ }, {
415
+ requestID,
416
+ tmdbGuestSessionId
417
+ });
418
+ if (errors?.length) {
419
+ throw new GraphQLError(`Failed to resolve ${CONFIGURATION} ${JOBS}.`, {
420
+ nodes: fieldNodes,
421
+ originalError: errors[0]
422
+ });
423
+ }
424
+ setCacheMetadata(`${CONFIGURATION}.${JOBS}`, headers);
425
+ return data;
426
+ };
427
+
428
+ const resolveConfigurationLanguages = async (_obj, _args, {
429
+ requestID,
430
+ restClient,
431
+ setCacheMetadata,
432
+ tmdbGuestSessionId
433
+ }, {
434
+ fieldNodes
435
+ }) => {
436
+ const {
437
+ data,
438
+ errors,
439
+ headers
440
+ } = await restClient.configuration({
441
+ pathTemplateData: {
442
+ type: LANGUAGES
443
+ }
444
+ }, {
445
+ requestID,
446
+ tmdbGuestSessionId
447
+ });
448
+ if (errors?.length) {
449
+ throw new GraphQLError(`Failed to resolve ${CONFIGURATION} ${LANGUAGES}.`, {
450
+ nodes: fieldNodes,
451
+ originalError: errors[0]
452
+ });
453
+ }
454
+ setCacheMetadata(`${CONFIGURATION}.${LANGUAGES}`, headers);
455
+ return data;
456
+ };
457
+
458
+ const resolveConfigurationPrimaryTranslations = async (_obj, _args, {
459
+ requestID,
460
+ restClient,
461
+ setCacheMetadata,
462
+ tmdbGuestSessionId
463
+ }, {
464
+ fieldNodes
465
+ }) => {
466
+ const {
467
+ data,
468
+ errors,
469
+ headers
470
+ } = await restClient.configuration({
471
+ pathTemplateData: {
472
+ type: snakeCase(PRIMARY_TRANSLATIONS)
473
+ }
474
+ }, {
475
+ requestID,
476
+ tmdbGuestSessionId
477
+ });
478
+ if (errors?.length) {
479
+ throw new GraphQLError(`Failed to resolve ${CONFIGURATION} ${PRIMARY_TRANSLATIONS}.`, {
480
+ nodes: fieldNodes,
481
+ originalError: errors[0]
482
+ });
483
+ }
484
+ setCacheMetadata(`${CONFIGURATION}.${PRIMARY_TRANSLATIONS}`, headers);
485
+ return data;
486
+ };
487
+
488
+ const resolveConfigurationTimezones = async (_obj, _args, {
489
+ requestID,
490
+ restClient,
491
+ setCacheMetadata,
492
+ tmdbGuestSessionId
493
+ }, {
494
+ fieldNodes
495
+ }) => {
496
+ const {
497
+ data,
498
+ errors,
499
+ headers
500
+ } = await restClient.configuration({
501
+ pathTemplateData: {
502
+ type: TIMEZONES
503
+ }
504
+ }, {
505
+ requestID,
506
+ tmdbGuestSessionId
507
+ });
508
+ if (errors?.length) {
509
+ throw new GraphQLError(`Failed to resolve ${CONFIGURATION} ${TIMEZONES}.`, {
510
+ nodes: fieldNodes,
511
+ originalError: errors[0]
512
+ });
513
+ }
514
+ setCacheMetadata(`${CONFIGURATION}.${TIMEZONES}`, headers);
515
+ return data;
516
+ };
517
+
518
+ const resolveCredit = async (_obj, {
519
+ id
520
+ }, {
521
+ requestID,
522
+ restClient,
523
+ setCacheMetadata,
524
+ tmdbGuestSessionId
525
+ }, {
526
+ fieldNodes
527
+ }) => {
528
+ const {
529
+ data,
530
+ errors,
531
+ headers
532
+ } = await restClient.credit({
533
+ pathTemplateData: {
534
+ id
535
+ }
536
+ }, {
537
+ requestID,
538
+ tmdbGuestSessionId
539
+ });
540
+ if (errors?.length) {
541
+ throw new GraphQLError(`Failed to resolve ${CREDIT} ${id}.`, {
542
+ nodes: fieldNodes,
543
+ originalError: errors[0]
544
+ });
545
+ }
546
+ setCacheMetadata(CREDIT, headers);
547
+ return data;
548
+ };
549
+
550
+ const formatDirectionalSuffixes = props => Object.keys(props).reduce((accumulator, propertyName) => {
551
+ if (propertyName === 'sort_by') {
552
+ accumulator[propertyName] = props[propertyName].toLowerCase().replace(/_([a-z]+)$/, '.$1');
553
+ } else if (propertyName.endsWith('_gte') || propertyName.endsWith('_lte')) {
554
+ accumulator[propertyName.replace(/_([a-z]+)$/, '.$1')] = props[propertyName];
555
+ } else {
556
+ accumulator[propertyName] = props[propertyName];
557
+ }
558
+ return accumulator;
559
+ }, {});
560
+
561
+ const removeNullValues = props => Object.keys(props).reduce((acc, propName) => {
562
+ if (props[propName] === null) {
563
+ return acc;
564
+ }
565
+ acc[propName] = props[propName];
566
+ return acc;
567
+ }, {});
568
+
569
+ const snakeCasePropNames = props => Object.keys(props).reduce((snakeCased, propName) => {
570
+ snakeCased[snakeCase(propName)] = props[propName];
571
+ return snakeCased;
572
+ }, {});
573
+
574
+ const formatQueryParams = args => formatDirectionalSuffixes(snakeCasePropNames(removeNullValues(removeConnectionInputOptions(args))));
575
+
576
+ const createMakeCursors$a = (_obj, args) => {
577
+ const groupCursor = `${JSON.stringify(removeNullValues(removeConnectionInputOptions(args)))}::${DISCOVER_MOVIES}`;
578
+ return {
579
+ makeGroupCursor: () => encode(groupCursor),
580
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
581
+ };
582
+ };
583
+ const createResourceResolver$a = (_obj, args, {
584
+ requestID,
585
+ restClient,
586
+ setCacheMetadata,
587
+ tmdbGuestSessionId
588
+ }) => async ({
589
+ page
590
+ }) => {
591
+ const result = await restClient.discover({
592
+ pathTemplateData: {
593
+ type: MOVIE
594
+ },
595
+ queryParams: {
596
+ ...formatQueryParams(args),
597
+ page
598
+ }
599
+ }, {
600
+ requestID,
601
+ tmdbGuestSessionId
602
+ });
603
+ if (result.data) {
604
+ setCacheMetadata(DISCOVER_MOVIES, result.headers);
605
+ }
606
+ return result;
607
+ };
608
+ const cursorCache$a = new Core({
609
+ name: 'DISCOVER_MOVIES_CONNECTION_RESOLVER',
610
+ reaper: init({
611
+ interval: 300_000
612
+ }),
613
+ store: init$1(),
614
+ type: 'GRAPHQL'
615
+ });
616
+ const getters$a = {
617
+ nodes: ({
618
+ results
619
+ }) => results,
620
+ page: ({
621
+ page
622
+ }) => page,
623
+ totalPages: ({
624
+ total_pages
625
+ }) => total_pages,
626
+ totalResults: ({
627
+ total_results
628
+ }) => total_results
629
+ };
630
+ const resolveDiscoverMovies = makeConnectionResolver({
631
+ createMakeCursors: createMakeCursors$a,
632
+ createResourceResolver: createResourceResolver$a,
633
+ cursorCache: cursorCache$a,
634
+ getters: getters$a,
635
+ resultsPerPage: 20
636
+ });
637
+
638
+ const createMakeCursors$9 = (_obj, args) => {
639
+ const groupCursor = `${JSON.stringify(removeNullValues(removeConnectionInputOptions(args)))}::${DISCOVER_TV}`;
640
+ return {
641
+ makeGroupCursor: () => encode(groupCursor),
642
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
643
+ };
644
+ };
645
+ const createResourceResolver$9 = (_obj, args, {
646
+ requestID,
647
+ restClient,
648
+ setCacheMetadata,
649
+ tmdbGuestSessionId
650
+ }) => async ({
651
+ page
652
+ }) => {
653
+ const result = await restClient.discover({
654
+ pathTemplateData: {
655
+ type: TV
656
+ },
657
+ queryParams: {
658
+ ...formatQueryParams(args),
659
+ page
660
+ }
661
+ }, {
662
+ requestID,
663
+ tmdbGuestSessionId
664
+ });
665
+ if (result.data) {
666
+ setCacheMetadata(DISCOVER_TV, result.headers);
667
+ }
668
+ return result;
669
+ };
670
+ const cursorCache$9 = new Core({
671
+ name: 'DISCOVER_TV_CONNECTION_RESOLVER',
672
+ reaper: init({
673
+ interval: 300_000
674
+ }),
675
+ store: init$1(),
676
+ type: 'GRAPHQL'
677
+ });
678
+ const getters$9 = {
679
+ nodes: ({
680
+ results
681
+ }) => results,
682
+ page: ({
683
+ page
684
+ }) => page,
685
+ totalPages: ({
686
+ total_pages
687
+ }) => total_pages,
688
+ totalResults: ({
689
+ total_results
690
+ }) => total_results
691
+ };
692
+ const resolveDiscoverTv = makeConnectionResolver({
693
+ createMakeCursors: createMakeCursors$9,
694
+ createResourceResolver: createResourceResolver$9,
695
+ cursorCache: cursorCache$9,
696
+ getters: getters$9,
697
+ resultsPerPage: 20
698
+ });
699
+
700
+ const encodeId = obj => encode(JSON.stringify(obj));
701
+
702
+ const getAppendToResponseKeys = (parentFieldNode, appendToResponse, fragmentDefinitions) => (getChildFields(parentFieldNode, {
703
+ fragmentDefinitions
704
+ }) ?? []).reduce((acc, {
705
+ fieldNode
706
+ }) => {
707
+ const name = getName(fieldNode);
708
+ if (!name) {
709
+ return acc;
710
+ }
711
+ const key = appendToResponse[name];
712
+ if (!key) {
713
+ return acc;
714
+ }
715
+ if (!acc.includes(key)) {
716
+ acc.push(key);
717
+ }
718
+ return acc;
719
+ }, []);
720
+
721
+ const decodeId = id => JSON.parse(decode(id));
722
+
723
+ const getTvIdSeasonAndEpisode = (obj, args) => {
724
+ let id;
725
+ let seasonNumber;
726
+ let episodeNumber;
727
+ if (obj) {
728
+ id = obj.tv_show_id;
729
+ seasonNumber = obj.season_number;
730
+ episodeNumber = 'episode_number' in obj ? obj.episode_number : undefined;
731
+ } else {
732
+ const parsed = decodeId(args.id);
733
+ id = parsed.id;
734
+ seasonNumber = parsed.seasonNumber;
735
+ episodeNumber = parsed.episodeNumber;
736
+ }
737
+ return {
738
+ episodeNumber,
739
+ id,
740
+ seasonNumber
741
+ };
742
+ };
743
+
744
+ const appendToResponse$4 = {
745
+ [EXTERNAL_IDS]: snakeCase(EXTERNAL_IDS),
746
+ [TRANSLATIONS]: TRANSLATIONS,
747
+ [VIDEOS]: VIDEOS,
748
+ cast: CREDITS,
749
+ crew: CREDITS,
750
+ guestStars: CREDITS,
751
+ stills: IMAGES
752
+ };
753
+ const resolveEpisode = async (obj, args, {
754
+ fragmentDefinitions,
755
+ requestID,
756
+ restClient,
757
+ setCacheMetadata,
758
+ tmdbGuestSessionId
759
+ }, {
760
+ fieldName,
761
+ fieldNodes
762
+ }) => {
763
+ const typedFieldName = snakeCase(fieldName);
764
+ const {
765
+ episodeNumber,
766
+ id,
767
+ seasonNumber
768
+ } = getTvIdSeasonAndEpisode(obj, args);
769
+ if (obj && !isUndefined(obj[typedFieldName])) {
770
+ return typedFieldName === 'id' ? encodeId({
771
+ id,
772
+ seasonNumber,
773
+ ...(episodeNumber ? {
774
+ episodeNumber
775
+ } : {})
776
+ }) : obj[typedFieldName];
777
+ }
778
+ const appendToResponseKeys = getAppendToResponseKeys(fieldNodes[0], appendToResponse$4, fragmentDefinitions);
779
+ const {
780
+ data,
781
+ errors,
782
+ headers
783
+ } = await restClient.episode({
784
+ pathTemplateData: {
785
+ episodeNumber,
786
+ id,
787
+ seasonNumber
788
+ },
789
+ ...(appendToResponseKeys.length > 0 ? {
790
+ queryParams: {
791
+ append_to_response: appendToResponseKeys.join(',')
792
+ }
793
+ } : {})
794
+ }, {
795
+ requestID,
796
+ tmdbGuestSessionId
797
+ });
798
+ if (errors?.length) {
799
+ throw new GraphQLError(`Failed to resolve ${TV} show ${id} ${SEASON} ${seasonNumber} ${EPISODE} ${episodeNumber}.`, {
800
+ nodes: fieldNodes,
801
+ originalError: errors[0]
802
+ });
803
+ }
804
+ const rawEpisode = data;
805
+ rawEpisode.id = encodeId({
806
+ id,
807
+ seasonNumber,
808
+ ...(episodeNumber ? {
809
+ episodeNumber
810
+ } : {})
811
+ });
812
+ if (!rawEpisode.tv_show_id) {
813
+ rawEpisode.tv_show_id = id;
814
+ }
815
+ if (obj) {
816
+ setCacheMetadata(`${EPISODE}.${fieldName}`, headers);
817
+ return rawEpisode[typedFieldName];
818
+ }
819
+ setCacheMetadata(EPISODE, headers);
820
+ return appendToResponseKeys.length > 0 ? {
821
+ ...rawEpisode,
822
+ __headers: headers
823
+ } : rawEpisode;
824
+ };
825
+
826
+ const resolveEpisodeCredits = async (obj, _args, {
827
+ requestID,
828
+ restClient,
829
+ setCacheMetadata,
830
+ tmdbGuestSessionId
831
+ }, {
832
+ fieldName,
833
+ fieldNodes
834
+ }) => {
835
+ const typedFieldName = snakeCase(fieldName);
836
+ if (obj.credits && obj.__headers) {
837
+ setCacheMetadata(`${EPISODE}.${fieldName}`, obj.__headers);
838
+ return obj.credits[typedFieldName];
839
+ }
840
+ const {
841
+ data,
842
+ errors,
843
+ headers
844
+ } = await restClient.episode({
845
+ pathTemplateData: {
846
+ episodeNumber: obj.episode_number,
847
+ id: obj.tv_show_id,
848
+ seasonNumber: obj.season_number,
849
+ type: CREDITS
850
+ }
851
+ }, {
852
+ requestID,
853
+ tmdbGuestSessionId
854
+ });
855
+ if (errors?.length) {
856
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${fieldName}.`, {
857
+ nodes: fieldNodes,
858
+ originalError: errors[0]
859
+ });
860
+ }
861
+ setCacheMetadata(`${EPISODE}.${fieldName}`, headers);
862
+ return data[typedFieldName];
863
+ };
864
+
865
+ const resolveEpisodeExternalIds = async (obj, _args, {
866
+ requestID,
867
+ restClient,
868
+ setCacheMetadata,
869
+ tmdbGuestSessionId
870
+ }, {
871
+ fieldNodes
872
+ }) => {
873
+ if (obj.external_ids && obj.__headers) {
874
+ setCacheMetadata(`${EPISODE}.${EXTERNAL_IDS}`, obj.__headers);
875
+ return obj.external_ids;
876
+ }
877
+ const {
878
+ data,
879
+ errors,
880
+ headers
881
+ } = await restClient.episode({
882
+ pathTemplateData: {
883
+ episodeNumber: obj.episode_number,
884
+ id: obj.tv_show_id,
885
+ seasonNumber: obj.season_number,
886
+ type: snakeCase(EXTERNAL_IDS)
887
+ }
888
+ }, {
889
+ requestID,
890
+ tmdbGuestSessionId
891
+ });
892
+ if (errors?.length) {
893
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${EXTERNAL_IDS}.`, {
894
+ nodes: fieldNodes,
895
+ originalError: errors[0]
896
+ });
897
+ }
898
+ setCacheMetadata(`${EPISODE}.${EXTERNAL_IDS}`, headers);
899
+ const {
900
+ id: movieId,
901
+ ...rest
902
+ } = data;
903
+ return rest;
904
+ };
905
+
906
+ const resolveEpisodeStills = async (obj, _args, {
907
+ requestID,
908
+ restClient,
909
+ setCacheMetadata,
910
+ tmdbGuestSessionId
911
+ }, {
912
+ fieldNodes
913
+ }) => {
914
+ if (obj.images && obj.__headers) {
915
+ setCacheMetadata(`${EPISODE}.${STILLS}`, obj.__headers);
916
+ return obj.images.stills;
917
+ }
918
+ const {
919
+ data,
920
+ errors,
921
+ headers
922
+ } = await restClient.episode({
923
+ pathTemplateData: {
924
+ episodeNumber: obj.episode_number,
925
+ id: obj.tv_show_id,
926
+ seasonNumber: obj.season_number,
927
+ type: IMAGES
928
+ }
929
+ }, {
930
+ requestID,
931
+ tmdbGuestSessionId
932
+ });
933
+ if (errors?.length) {
934
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${STILLS}.`, {
935
+ nodes: fieldNodes,
936
+ originalError: errors[0]
937
+ });
938
+ }
939
+ setCacheMetadata(`${EPISODE}.${STILLS}`, headers);
940
+ return data.stills;
941
+ };
942
+
943
+ const resolveEpisodeTranslations = async (obj, _args, {
944
+ requestID,
945
+ restClient,
946
+ setCacheMetadata,
947
+ tmdbGuestSessionId
948
+ }, {
949
+ fieldNodes
950
+ }) => {
951
+ if (obj.translations && obj.__headers) {
952
+ setCacheMetadata(`${EPISODE}.${TRANSLATIONS}`, obj.__headers);
953
+ return obj.translations.translations;
954
+ }
955
+ const {
956
+ data,
957
+ errors,
958
+ headers
959
+ } = await restClient.episode({
960
+ pathTemplateData: {
961
+ episodeNumber: obj.episode_number,
962
+ id: obj.tv_show_id,
963
+ seasonNumber: obj.season_number,
964
+ type: TRANSLATIONS
965
+ }
966
+ }, {
967
+ requestID,
968
+ tmdbGuestSessionId
969
+ });
970
+ if (errors?.length) {
971
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${TRANSLATIONS}.`, {
972
+ nodes: fieldNodes,
973
+ originalError: errors[0]
974
+ });
975
+ }
976
+ setCacheMetadata(`${EPISODE}.${TRANSLATIONS}`, headers);
977
+ return data?.translations;
978
+ };
979
+
980
+ const resolveEpisodeVideos = async (obj, _args, {
981
+ requestID,
982
+ restClient,
983
+ setCacheMetadata,
984
+ tmdbGuestSessionId
985
+ }, {
986
+ fieldNodes
987
+ }) => {
988
+ if (obj.videos && obj.__headers) {
989
+ setCacheMetadata(`${EPISODE}.${VIDEOS}`, obj.__headers);
990
+ return obj.videos.results;
991
+ }
992
+ const {
993
+ data,
994
+ errors,
995
+ headers
996
+ } = await restClient.episode({
997
+ pathTemplateData: {
998
+ episodeNumber: obj.episode_number,
999
+ id: obj.tv_show_id,
1000
+ seasonNumber: obj.season_number,
1001
+ type: VIDEOS
1002
+ }
1003
+ }, {
1004
+ requestID,
1005
+ tmdbGuestSessionId
1006
+ });
1007
+ if (errors?.length) {
1008
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EPISODE} ${obj.episode_number} ${VIDEOS}.`, {
1009
+ nodes: fieldNodes,
1010
+ originalError: errors[0]
1011
+ });
1012
+ }
1013
+ setCacheMetadata(`${EPISODE}.${VIDEOS}`, headers);
1014
+ return data?.results;
1015
+ };
1016
+
1017
+ const resolveFind = async (_obj, {
1018
+ id,
1019
+ source
1020
+ }, {
1021
+ requestID,
1022
+ restClient,
1023
+ setCacheMetadata,
1024
+ tmdbGuestSessionId
1025
+ }, {
1026
+ fieldNodes
1027
+ }) => {
1028
+ const {
1029
+ data,
1030
+ errors,
1031
+ headers
1032
+ } = await restClient.find({
1033
+ pathTemplateData: {
1034
+ id
1035
+ },
1036
+ queryParams: {
1037
+ ...snakeCasePropNames({
1038
+ externalSource: source
1039
+ })
1040
+ }
1041
+ }, {
1042
+ requestID,
1043
+ tmdbGuestSessionId
1044
+ });
1045
+ if (errors?.length) {
1046
+ throw new GraphQLError(`Failed to resolve ${FIND} ${id}.`, {
1047
+ nodes: fieldNodes,
1048
+ originalError: errors[0]
1049
+ });
1050
+ }
1051
+ setCacheMetadata(FIND, headers);
1052
+ return {
1053
+ episodes: data?.tv_episode_results,
1054
+ movies: data?.movie_results,
1055
+ people: data?.person_results,
1056
+ seasons: data?.tv_season_results,
1057
+ tv: data?.tv_results
1058
+ };
1059
+ };
1060
+
1061
+ const resolveGenres = async (_obj, {
1062
+ screenType
1063
+ }, {
1064
+ requestID,
1065
+ restClient,
1066
+ setCacheMetadata,
1067
+ tmdbGuestSessionId
1068
+ }, {
1069
+ fieldNodes
1070
+ }) => {
1071
+ const {
1072
+ data,
1073
+ errors,
1074
+ headers
1075
+ } = await restClient.genres({
1076
+ pathTemplateData: {
1077
+ type: screenType.toLowerCase()
1078
+ }
1079
+ }, {
1080
+ requestID,
1081
+ tmdbGuestSessionId
1082
+ });
1083
+ if (errors?.length) {
1084
+ throw new GraphQLError(`Failed to resolve ${screenType} ${GENRES}.`, {
1085
+ nodes: fieldNodes,
1086
+ originalError: errors[0]
1087
+ });
1088
+ }
1089
+ setCacheMetadata(GENRES, headers);
1090
+ return data?.genres;
1091
+ };
1092
+
1093
+ const resolveKeyword = async (_obj, {
1094
+ id,
1095
+ includeAdult
1096
+ }, {
1097
+ requestID,
1098
+ restClient,
1099
+ setCacheMetadata,
1100
+ tmdbGuestSessionId
1101
+ }, {
1102
+ fieldNodes
1103
+ }) => {
1104
+ const {
1105
+ data,
1106
+ errors,
1107
+ headers
1108
+ } = await restClient.keyword({
1109
+ pathTemplateData: {
1110
+ id
1111
+ },
1112
+ queryParams: {
1113
+ ...snakeCasePropNames({
1114
+ includeAdult
1115
+ })
1116
+ }
1117
+ }, {
1118
+ requestID,
1119
+ tmdbGuestSessionId
1120
+ });
1121
+ if (errors?.length) {
1122
+ throw new GraphQLError(`Failed to resolve ${KEYWORD} ${id}.`, {
1123
+ nodes: fieldNodes,
1124
+ originalError: errors[0]
1125
+ });
1126
+ }
1127
+ setCacheMetadata(KEYWORD, headers);
1128
+ return data;
1129
+ };
1130
+
1131
+ const appendToResponse$3 = {
1132
+ [ALTERNATIVE_TITLES]: snakeCase(ALTERNATIVE_TITLES),
1133
+ [BACKDROPS]: IMAGES,
1134
+ [CAST]: CREDITS,
1135
+ [CREW]: CREDITS,
1136
+ [EXTERNAL_IDS]: snakeCase(EXTERNAL_IDS),
1137
+ [KEYWORDS]: KEYWORDS,
1138
+ [LOGOS]: IMAGES,
1139
+ [POSTERS]: IMAGES,
1140
+ [RECOMMENDATIONS]: RECOMMENDATIONS,
1141
+ [RELEASE_DATES]: snakeCase(RELEASE_DATES),
1142
+ [REVIEWS]: REVIEWS,
1143
+ [SIMILAR_MOVIES]: SIMILAR,
1144
+ [TRANSLATIONS]: TRANSLATIONS,
1145
+ [VIDEOS]: VIDEOS,
1146
+ [WATCH_PROVIDERS]: 'watch/providers'
1147
+ };
1148
+ const resolveMovie = async (obj, args, {
1149
+ fragmentDefinitions,
1150
+ requestID,
1151
+ restClient,
1152
+ setCacheMetadata,
1153
+ tmdbGuestSessionId
1154
+ }, {
1155
+ fieldName,
1156
+ fieldNodes
1157
+ }) => {
1158
+ const typedFieldName = snakeCase(fieldName);
1159
+ if (obj && !isUndefined(obj[typedFieldName])) {
1160
+ return obj[typedFieldName];
1161
+ }
1162
+ const id = obj ? obj.id : args.id;
1163
+ const appendToResponseKeys = getAppendToResponseKeys(fieldNodes[0], appendToResponse$3, fragmentDefinitions);
1164
+ const {
1165
+ data,
1166
+ errors,
1167
+ headers
1168
+ } = await restClient.movie({
1169
+ pathTemplateData: {
1170
+ id
1171
+ },
1172
+ ...(appendToResponseKeys.length > 0 ? {
1173
+ queryParams: {
1174
+ append_to_response: appendToResponseKeys.join(',')
1175
+ }
1176
+ } : {})
1177
+ }, {
1178
+ requestID,
1179
+ tmdbGuestSessionId
1180
+ });
1181
+ if (errors?.length) {
1182
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${id}.`, {
1183
+ nodes: fieldNodes,
1184
+ originalError: errors[0]
1185
+ });
1186
+ }
1187
+ if (obj) {
1188
+ setCacheMetadata(`${MOVIE}.${fieldName}`, headers);
1189
+ return data[typedFieldName];
1190
+ }
1191
+ setCacheMetadata(MOVIE, headers);
1192
+ return appendToResponseKeys.length > 0 ? {
1193
+ ...data,
1194
+ __headers: headers
1195
+ } : data;
1196
+ };
1197
+
1198
+ const resolveMovieAlternativeTitles = async (obj, {
1199
+ country
1200
+ }, {
1201
+ requestID,
1202
+ restClient,
1203
+ setCacheMetadata,
1204
+ tmdbGuestSessionId
1205
+ }, {
1206
+ fieldNodes
1207
+ }) => {
1208
+ if (obj.alternative_titles && obj.__headers) {
1209
+ setCacheMetadata(`${MOVIE}.${ALTERNATIVE_TITLES}`, obj.__headers);
1210
+ return obj.alternative_titles.titles;
1211
+ }
1212
+ const {
1213
+ data,
1214
+ errors,
1215
+ headers
1216
+ } = await restClient.movie({
1217
+ pathTemplateData: {
1218
+ id: obj.id,
1219
+ type: snakeCase(ALTERNATIVE_TITLES)
1220
+ },
1221
+ queryParams: {
1222
+ country
1223
+ }
1224
+ }, {
1225
+ requestID,
1226
+ tmdbGuestSessionId
1227
+ });
1228
+ if (errors?.length) {
1229
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${ALTERNATIVE_TITLES}.`, {
1230
+ nodes: fieldNodes,
1231
+ originalError: errors[0]
1232
+ });
1233
+ }
1234
+ setCacheMetadata(`${MOVIE}.${ALTERNATIVE_TITLES}`, headers);
1235
+ return data.titles;
1236
+ };
1237
+
1238
+ const resolveMovieCredits = async (obj, _args, {
1239
+ requestID,
1240
+ restClient,
1241
+ setCacheMetadata,
1242
+ tmdbGuestSessionId
1243
+ }, {
1244
+ fieldName,
1245
+ fieldNodes
1246
+ }) => {
1247
+ const typedFieldName = fieldName;
1248
+ if (obj.credits && obj.__headers) {
1249
+ setCacheMetadata(`${MOVIE}.${typedFieldName}`, obj.__headers);
1250
+ return obj.credits[typedFieldName];
1251
+ }
1252
+ const {
1253
+ data,
1254
+ errors,
1255
+ headers
1256
+ } = await restClient.movie({
1257
+ pathTemplateData: {
1258
+ id: obj.id,
1259
+ type: CREDITS
1260
+ }
1261
+ }, {
1262
+ requestID,
1263
+ tmdbGuestSessionId
1264
+ });
1265
+ if (errors?.length) {
1266
+ throw new GraphQLError(`Failed to resolve movie ${obj.id} ${typedFieldName}.`, {
1267
+ nodes: fieldNodes,
1268
+ originalError: errors[0]
1269
+ });
1270
+ }
1271
+ setCacheMetadata(`${MOVIE}.${typedFieldName}`, headers);
1272
+ return data[typedFieldName];
1273
+ };
1274
+
1275
+ const resolveMovieExternalIds = async (obj, _args, {
1276
+ requestID,
1277
+ restClient,
1278
+ setCacheMetadata,
1279
+ tmdbGuestSessionId
1280
+ }, {
1281
+ fieldNodes
1282
+ }) => {
1283
+ if (obj.external_ids && obj.__headers) {
1284
+ setCacheMetadata(`${MOVIE}.${EXTERNAL_IDS}`, obj.__headers);
1285
+ return obj.external_ids;
1286
+ }
1287
+ const {
1288
+ data,
1289
+ errors,
1290
+ headers
1291
+ } = await restClient.movie({
1292
+ pathTemplateData: {
1293
+ id: obj.id,
1294
+ type: snakeCase(EXTERNAL_IDS)
1295
+ }
1296
+ }, {
1297
+ requestID,
1298
+ tmdbGuestSessionId
1299
+ });
1300
+ if (errors?.length) {
1301
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${EXTERNAL_IDS}.`, {
1302
+ nodes: fieldNodes,
1303
+ originalError: errors[0]
1304
+ });
1305
+ }
1306
+ setCacheMetadata(`${MOVIE}.${EXTERNAL_IDS}`, headers);
1307
+ const {
1308
+ id: movieId,
1309
+ ...rest
1310
+ } = data;
1311
+ return rest;
1312
+ };
1313
+
1314
+ const resolveMovieImages = async (obj, _args, {
1315
+ requestID,
1316
+ restClient,
1317
+ setCacheMetadata,
1318
+ tmdbGuestSessionId
1319
+ }, {
1320
+ fieldName,
1321
+ fieldNodes
1322
+ }) => {
1323
+ const typedFieldName = fieldName;
1324
+ if (obj.images && obj.__headers) {
1325
+ setCacheMetadata(`${MOVIE}.${typedFieldName}`, obj.__headers);
1326
+ return obj.images[typedFieldName];
1327
+ }
1328
+ const {
1329
+ data,
1330
+ errors,
1331
+ headers
1332
+ } = await restClient.movie({
1333
+ pathTemplateData: {
1334
+ id: obj.id,
1335
+ type: 'images'
1336
+ }
1337
+ }, {
1338
+ requestID,
1339
+ tmdbGuestSessionId
1340
+ });
1341
+ if (errors?.length) {
1342
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${typedFieldName}.`, {
1343
+ nodes: fieldNodes,
1344
+ originalError: errors[0]
1345
+ });
1346
+ }
1347
+ setCacheMetadata(`${MOVIE}.${typedFieldName}`, headers);
1348
+ return data[typedFieldName];
1349
+ };
1350
+
1351
+ const resolveMovieKeywords = async (obj, _args, {
1352
+ requestID,
1353
+ restClient,
1354
+ setCacheMetadata,
1355
+ tmdbGuestSessionId
1356
+ }, {
1357
+ fieldNodes
1358
+ }) => {
1359
+ if (obj.keywords && obj.__headers) {
1360
+ setCacheMetadata(`${MOVIE}.${KEYWORDS}`, obj.__headers);
1361
+ return obj.keywords.keywords;
1362
+ }
1363
+ const {
1364
+ data,
1365
+ errors,
1366
+ headers
1367
+ } = await restClient.movie({
1368
+ pathTemplateData: {
1369
+ id: obj.id,
1370
+ type: KEYWORDS
1371
+ }
1372
+ }, {
1373
+ requestID,
1374
+ tmdbGuestSessionId
1375
+ });
1376
+ if (errors?.length) {
1377
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${KEYWORDS}.`, {
1378
+ nodes: fieldNodes,
1379
+ originalError: errors[0]
1380
+ });
1381
+ }
1382
+ setCacheMetadata(`${MOVIE}.${KEYWORDS}`, headers);
1383
+ return data?.keywords;
1384
+ };
1385
+
1386
+ const createMakeCursors$8 = obj => {
1387
+ const groupCursor = `${obj.id}::${MOVIE}::${RECOMMENDATIONS}`;
1388
+ return {
1389
+ makeGroupCursor: () => encode(groupCursor),
1390
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
1391
+ };
1392
+ };
1393
+ const createResourceResolver$8 = (obj, _args, {
1394
+ requestID,
1395
+ restClient,
1396
+ setCacheMetadata,
1397
+ tmdbGuestSessionId
1398
+ }) => async ({
1399
+ page
1400
+ }) => {
1401
+ if (obj.recommendations && obj.__headers) {
1402
+ setCacheMetadata(`${MOVIE}.${RECOMMENDATIONS}`, obj.__headers);
1403
+ return {
1404
+ data: obj.recommendations,
1405
+ errors: [],
1406
+ headers: obj.__headers
1407
+ };
1408
+ }
1409
+ const result = await restClient.movie({
1410
+ pathTemplateData: {
1411
+ id: obj.id,
1412
+ type: RECOMMENDATIONS
1413
+ },
1414
+ queryParams: {
1415
+ page
1416
+ }
1417
+ }, {
1418
+ requestID,
1419
+ tmdbGuestSessionId
1420
+ });
1421
+ if (result.data) {
1422
+ setCacheMetadata(`${MOVIE}.${RECOMMENDATIONS}`, result.headers);
1423
+ }
1424
+ return result;
1425
+ };
1426
+ const cursorCache$8 = new Core({
1427
+ name: 'MOVIE_RECOMMENDATIONS_CONNECTION_RESOLVER',
1428
+ reaper: init({
1429
+ interval: 300_000
1430
+ }),
1431
+ store: init$1(),
1432
+ type: 'GRAPHQL'
1433
+ });
1434
+ const getters$8 = {
1435
+ nodes: ({
1436
+ results
1437
+ }) => results,
1438
+ page: ({
1439
+ page
1440
+ }) => page,
1441
+ totalPages: ({
1442
+ total_pages
1443
+ }) => total_pages,
1444
+ totalResults: ({
1445
+ total_results
1446
+ }) => total_results
1447
+ };
1448
+ const resolveMovieRecommendations = makeConnectionResolver({
1449
+ createMakeCursors: createMakeCursors$8,
1450
+ createResourceResolver: createResourceResolver$8,
1451
+ cursorCache: cursorCache$8,
1452
+ getters: getters$8,
1453
+ resultsPerPage: 20
1454
+ });
1455
+
1456
+ const resolveMovieReleaseDates = async (obj, _args, {
1457
+ requestID,
1458
+ restClient,
1459
+ setCacheMetadata,
1460
+ tmdbGuestSessionId
1461
+ }, {
1462
+ fieldNodes
1463
+ }) => {
1464
+ if (obj.release_dates && obj.__headers) {
1465
+ setCacheMetadata(`${MOVIE}.${RELEASE_DATES}`, obj.__headers);
1466
+ return obj.release_dates.results;
1467
+ }
1468
+ const {
1469
+ data,
1470
+ errors,
1471
+ headers
1472
+ } = await restClient.movie({
1473
+ pathTemplateData: {
1474
+ id: obj.id,
1475
+ type: snakeCase(RELEASE_DATES)
1476
+ }
1477
+ }, {
1478
+ requestID,
1479
+ tmdbGuestSessionId
1480
+ });
1481
+ if (errors?.length) {
1482
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${RELEASE_DATES}.`, {
1483
+ nodes: fieldNodes,
1484
+ originalError: errors[0]
1485
+ });
1486
+ }
1487
+ setCacheMetadata(`${MOVIE}.${RELEASE_DATES}`, headers);
1488
+ return data.results;
1489
+ };
1490
+
1491
+ const createMakeCursors$7 = obj => {
1492
+ const groupCursor = `${obj.id}::${MOVIE}::${REVIEWS}`;
1493
+ return {
1494
+ makeGroupCursor: () => encode(groupCursor),
1495
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
1496
+ };
1497
+ };
1498
+ const createResourceResolver$7 = (obj, _args, {
1499
+ requestID,
1500
+ restClient,
1501
+ setCacheMetadata,
1502
+ tmdbGuestSessionId
1503
+ }) => async ({
1504
+ page
1505
+ }) => {
1506
+ if (obj.reviews && obj.__headers) {
1507
+ setCacheMetadata(`${MOVIE}.${REVIEWS}`, obj.__headers);
1508
+ return {
1509
+ data: obj.reviews,
1510
+ errors: [],
1511
+ headers: obj.__headers
1512
+ };
1513
+ }
1514
+ const result = await restClient.movie({
1515
+ pathTemplateData: {
1516
+ id: obj.id,
1517
+ type: REVIEWS
1518
+ },
1519
+ queryParams: {
1520
+ page
1521
+ }
1522
+ }, {
1523
+ requestID,
1524
+ tmdbGuestSessionId
1525
+ });
1526
+ if (result.data) {
1527
+ setCacheMetadata(`${MOVIE}.${REVIEWS}`, result.headers);
1528
+ }
1529
+ return result;
1530
+ };
1531
+ const cursorCache$7 = new Core({
1532
+ name: 'MOVIE_REVIEWS_CONNECTION_RESOLVER',
1533
+ reaper: init({
1534
+ interval: 300_000
1535
+ }),
1536
+ store: init$1(),
1537
+ type: 'GRAPHQL'
1538
+ });
1539
+ const getters$7 = {
1540
+ nodes: ({
1541
+ results
1542
+ }) => results,
1543
+ page: ({
1544
+ page
1545
+ }) => page,
1546
+ totalPages: ({
1547
+ total_pages
1548
+ }) => total_pages,
1549
+ totalResults: ({
1550
+ total_results
1551
+ }) => total_results
1552
+ };
1553
+ const resolveMovieReviews = makeConnectionResolver({
1554
+ createMakeCursors: createMakeCursors$7,
1555
+ createResourceResolver: createResourceResolver$7,
1556
+ cursorCache: cursorCache$7,
1557
+ getters: getters$7,
1558
+ resultsPerPage: 20
1559
+ });
1560
+
1561
+ const createMakeCursors$6 = obj => {
1562
+ const groupCursor = `${obj.id}::${MOVIE}::${SIMILAR}`;
1563
+ return {
1564
+ makeGroupCursor: () => encode(groupCursor),
1565
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
1566
+ };
1567
+ };
1568
+ const createResourceResolver$6 = (obj, _args, {
1569
+ requestID,
1570
+ restClient,
1571
+ setCacheMetadata,
1572
+ tmdbGuestSessionId
1573
+ }) => async ({
1574
+ page
1575
+ }) => {
1576
+ if (obj.similar && obj.__headers) {
1577
+ setCacheMetadata(`${MOVIE}.${SIMILAR_MOVIES}`, obj.__headers);
1578
+ return {
1579
+ data: obj.similar,
1580
+ errors: [],
1581
+ headers: obj.__headers
1582
+ };
1583
+ }
1584
+ const result = await restClient.movie({
1585
+ pathTemplateData: {
1586
+ id: obj.id,
1587
+ type: SIMILAR
1588
+ },
1589
+ queryParams: {
1590
+ page
1591
+ }
1592
+ }, {
1593
+ requestID,
1594
+ tmdbGuestSessionId
1595
+ });
1596
+ if (result.data) {
1597
+ setCacheMetadata(`${MOVIE}.${SIMILAR_MOVIES}`, result.headers);
1598
+ }
1599
+ return result;
1600
+ };
1601
+ const cursorCache$6 = new Core({
1602
+ name: 'MOVIE_SIMILAR_MOVIES_CONNECTION_RESOLVER',
1603
+ reaper: init({
1604
+ interval: 300_000
1605
+ }),
1606
+ store: init$1(),
1607
+ type: 'GRAPHQL'
1608
+ });
1609
+ const getters$6 = {
1610
+ nodes: ({
1611
+ results
1612
+ }) => results,
1613
+ page: ({
1614
+ page
1615
+ }) => page,
1616
+ totalPages: ({
1617
+ total_pages
1618
+ }) => total_pages,
1619
+ totalResults: ({
1620
+ total_results
1621
+ }) => total_results
1622
+ };
1623
+ const resolveMovieSimilarMovies = makeConnectionResolver({
1624
+ createMakeCursors: createMakeCursors$6,
1625
+ createResourceResolver: createResourceResolver$6,
1626
+ cursorCache: cursorCache$6,
1627
+ getters: getters$6,
1628
+ resultsPerPage: 20
1629
+ });
1630
+
1631
+ const resolveMovieTranslations = async (obj, _args, {
1632
+ requestID,
1633
+ restClient,
1634
+ setCacheMetadata,
1635
+ tmdbGuestSessionId
1636
+ }, {
1637
+ fieldNodes
1638
+ }) => {
1639
+ if (obj.translations && obj.__headers) {
1640
+ setCacheMetadata(`${MOVIE}.${TRANSLATIONS}`, obj.__headers);
1641
+ return obj.translations.translations;
1642
+ }
1643
+ const {
1644
+ data,
1645
+ errors,
1646
+ headers
1647
+ } = await restClient.movie({
1648
+ pathTemplateData: {
1649
+ id: obj.id,
1650
+ type: TRANSLATIONS
1651
+ }
1652
+ }, {
1653
+ requestID,
1654
+ tmdbGuestSessionId
1655
+ });
1656
+ if (errors?.length) {
1657
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${TRANSLATIONS}.`, {
1658
+ nodes: fieldNodes,
1659
+ originalError: errors[0]
1660
+ });
1661
+ }
1662
+ setCacheMetadata(`${MOVIE}.${TRANSLATIONS}`, headers);
1663
+ return data?.translations;
1664
+ };
1665
+
1666
+ const resolveMovieVideos = async (obj, _args, {
1667
+ requestID,
1668
+ restClient,
1669
+ setCacheMetadata,
1670
+ tmdbGuestSessionId
1671
+ }, {
1672
+ fieldNodes
1673
+ }) => {
1674
+ if (obj.videos && obj.__headers) {
1675
+ setCacheMetadata(`${MOVIE}.${VIDEOS}`, obj.__headers);
1676
+ return obj.videos.results;
1677
+ }
1678
+ const {
1679
+ data,
1680
+ errors,
1681
+ headers
1682
+ } = await restClient.movie({
1683
+ pathTemplateData: {
1684
+ id: obj.id,
1685
+ type: VIDEOS
1686
+ }
1687
+ }, {
1688
+ requestID,
1689
+ tmdbGuestSessionId
1690
+ });
1691
+ if (errors?.length) {
1692
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${VIDEOS}.`, {
1693
+ nodes: fieldNodes,
1694
+ originalError: errors[0]
1695
+ });
1696
+ }
1697
+ setCacheMetadata(`${MOVIE}.${VIDEOS}`, headers);
1698
+ return data?.results;
1699
+ };
1700
+
1701
+ const resolveMovieWatchProviders = async (obj, _args, {
1702
+ requestID,
1703
+ restClient,
1704
+ setCacheMetadata,
1705
+ tmdbGuestSessionId
1706
+ }, {
1707
+ fieldNodes
1708
+ }) => {
1709
+ if (obj['watch/providers'] && obj.__headers) {
1710
+ setCacheMetadata(`${MOVIE}.${WATCH_PROVIDERS}`, obj.__headers);
1711
+ return obj['watch/providers'].results;
1712
+ }
1713
+ const {
1714
+ data,
1715
+ errors,
1716
+ headers
1717
+ } = await restClient.watchProviders({
1718
+ pathTemplateData: {
1719
+ id: obj.id,
1720
+ type: MOVIE
1721
+ }
1722
+ }, {
1723
+ requestID,
1724
+ tmdbGuestSessionId
1725
+ });
1726
+ if (errors?.length) {
1727
+ throw new GraphQLError(`Failed to resolve ${MOVIE} ${obj.id} ${WATCH_PROVIDERS}.`, {
1728
+ nodes: fieldNodes,
1729
+ originalError: errors[0]
1730
+ });
1731
+ }
1732
+ setCacheMetadata(`${MOVIE}.${WATCH_PROVIDERS}`, headers);
1733
+ return data?.results;
1734
+ };
1735
+
1736
+ const resolveNetwork = async (obj, args, {
1737
+ requestID,
1738
+ restClient,
1739
+ setCacheMetadata,
1740
+ tmdbGuestSessionId
1741
+ }, {
1742
+ fieldName,
1743
+ fieldNodes
1744
+ }) => {
1745
+ const typedFieldName = snakeCase(fieldName);
1746
+ if (obj && !isUndefined(obj[typedFieldName])) {
1747
+ return obj[typedFieldName];
1748
+ }
1749
+ const id = obj ? obj.id : args.id;
1750
+ const {
1751
+ data,
1752
+ errors,
1753
+ headers
1754
+ } = await restClient.network({
1755
+ pathTemplateData: {
1756
+ id
1757
+ }
1758
+ }, {
1759
+ requestID,
1760
+ tmdbGuestSessionId
1761
+ });
1762
+ if (errors?.length) {
1763
+ throw new GraphQLError(`Failed to resolve ${NETWORK} ${id}.`, {
1764
+ nodes: fieldNodes,
1765
+ originalError: errors[0]
1766
+ });
1767
+ }
1768
+ if (obj) {
1769
+ setCacheMetadata(`${NETWORK}.${fieldName}`, headers);
1770
+ return data[typedFieldName];
1771
+ }
1772
+ setCacheMetadata(NETWORK, headers);
1773
+ return data;
1774
+ };
1775
+
1776
+ const resolveNetworkAlternativeNames = async ({
1777
+ id
1778
+ }, _args, {
1779
+ requestID,
1780
+ restClient,
1781
+ setCacheMetadata,
1782
+ tmdbGuestSessionId
1783
+ }, {
1784
+ fieldNodes
1785
+ }) => {
1786
+ const {
1787
+ data,
1788
+ errors,
1789
+ headers
1790
+ } = await restClient.network({
1791
+ pathTemplateData: {
1792
+ id,
1793
+ type: snakeCase(ALTERNATIVE_NAMES)
1794
+ }
1795
+ }, {
1796
+ requestID,
1797
+ tmdbGuestSessionId
1798
+ });
1799
+ if (errors?.length) {
1800
+ throw new GraphQLError(`Failed to resolve ${NETWORK} ${id} ${ALTERNATIVE_NAMES}.`, {
1801
+ nodes: fieldNodes,
1802
+ originalError: errors[0]
1803
+ });
1804
+ }
1805
+ setCacheMetadata(`${NETWORK}.${ALTERNATIVE_NAMES}`, headers);
1806
+ return data.results;
1807
+ };
1808
+
1809
+ const resolveNetworkLogos = async ({
1810
+ id
1811
+ }, _args, {
1812
+ requestID,
1813
+ restClient,
1814
+ setCacheMetadata,
1815
+ tmdbGuestSessionId
1816
+ }, {
1817
+ fieldNodes
1818
+ }) => {
1819
+ const {
1820
+ data,
1821
+ errors,
1822
+ headers
1823
+ } = await restClient.network({
1824
+ pathTemplateData: {
1825
+ id,
1826
+ type: IMAGES
1827
+ }
1828
+ }, {
1829
+ requestID,
1830
+ tmdbGuestSessionId
1831
+ });
1832
+ if (errors?.length) {
1833
+ throw new GraphQLError(`Failed to resolve ${NETWORK} ${id} ${LOGOS}.`, {
1834
+ nodes: fieldNodes,
1835
+ originalError: errors[0]
1836
+ });
1837
+ }
1838
+ setCacheMetadata(`${NETWORK}.${LOGOS}`, headers);
1839
+ return data.logos;
1840
+ };
1841
+
1842
+ const appendToResponse$2 = {
1843
+ [COMBINED_CREDITS]: snakeCase(COMBINED_CREDITS),
1844
+ [EXTERNAL_IDS]: snakeCase(EXTERNAL_IDS),
1845
+ [MOVIE_CREDITS]: snakeCase(MOVIE_CREDITS),
1846
+ [PROFILES]: IMAGES,
1847
+ [TRANSLATIONS]: TRANSLATIONS,
1848
+ [TV_CREDITS]: snakeCase(TV_CREDITS)
1849
+ };
1850
+ const resolvePerson = async (obj, args, {
1851
+ fragmentDefinitions,
1852
+ requestID,
1853
+ restClient,
1854
+ setCacheMetadata,
1855
+ tmdbGuestSessionId
1856
+ }, {
1857
+ fieldName,
1858
+ fieldNodes
1859
+ }) => {
1860
+ const typedFieldName = snakeCase(fieldName);
1861
+ if (obj && !isUndefined(obj[typedFieldName])) {
1862
+ return obj[typedFieldName];
1863
+ }
1864
+ const id = obj ? obj.id : args.id;
1865
+ const appendToResponseKeys = getAppendToResponseKeys(fieldNodes[0], appendToResponse$2, fragmentDefinitions);
1866
+ const {
1867
+ data,
1868
+ errors,
1869
+ headers
1870
+ } = await restClient.person({
1871
+ pathTemplateData: {
1872
+ id
1873
+ },
1874
+ ...(appendToResponseKeys.length > 0 ? {
1875
+ queryParams: {
1876
+ append_to_response: appendToResponseKeys.join(',')
1877
+ }
1878
+ } : {})
1879
+ }, {
1880
+ requestID,
1881
+ tmdbGuestSessionId
1882
+ });
1883
+ if (errors?.length) {
1884
+ throw new GraphQLError(`Failed to resolve ${PERSON} ${id}.`, {
1885
+ nodes: fieldNodes,
1886
+ originalError: errors[0]
1887
+ });
1888
+ }
1889
+ if (obj) {
1890
+ setCacheMetadata(`${PERSON}.${fieldName}`, headers);
1891
+ return data[typedFieldName];
1892
+ }
1893
+ setCacheMetadata(PERSON, headers);
1894
+ return appendToResponseKeys.length > 0 ? {
1895
+ ...data,
1896
+ __headers: headers
1897
+ } : data;
1898
+ };
1899
+
1900
+ const resolvePersonCombinedCredits = async (obj, _args, {
1901
+ requestID,
1902
+ restClient,
1903
+ setCacheMetadata,
1904
+ tmdbGuestSessionId
1905
+ }, {
1906
+ fieldNodes
1907
+ }) => {
1908
+ if (obj.combined_credits && obj.__headers) {
1909
+ setCacheMetadata(`${PERSON}.${COMBINED_CREDITS}`, obj.__headers);
1910
+ return obj.combined_credits;
1911
+ }
1912
+ const {
1913
+ data,
1914
+ errors,
1915
+ headers
1916
+ } = await restClient.person({
1917
+ pathTemplateData: {
1918
+ id: obj.id,
1919
+ type: snakeCase(COMBINED_CREDITS)
1920
+ }
1921
+ }, {
1922
+ requestID,
1923
+ tmdbGuestSessionId
1924
+ });
1925
+ if (errors?.length) {
1926
+ throw new GraphQLError(`Failed to resolve ${PERSON} ${obj.id} ${COMBINED_CREDITS}.`, {
1927
+ nodes: fieldNodes,
1928
+ originalError: errors[0]
1929
+ });
1930
+ }
1931
+ setCacheMetadata(`${PERSON}.${COMBINED_CREDITS}`, headers);
1932
+ const {
1933
+ id: personId,
1934
+ ...rest
1935
+ } = data;
1936
+ return rest;
1937
+ };
1938
+
1939
+ const resolvePersonExternalIds = async (obj, _args, {
1940
+ requestID,
1941
+ restClient,
1942
+ setCacheMetadata,
1943
+ tmdbGuestSessionId
1944
+ }, {
1945
+ fieldNodes
1946
+ }) => {
1947
+ if (obj.external_ids && obj.__headers) {
1948
+ setCacheMetadata(`${PERSON}.${EXTERNAL_IDS}`, obj.__headers);
1949
+ return obj.external_ids;
1950
+ }
1951
+ const {
1952
+ data,
1953
+ errors,
1954
+ headers
1955
+ } = await restClient.person({
1956
+ pathTemplateData: {
1957
+ id: obj.id,
1958
+ type: snakeCase(EXTERNAL_IDS)
1959
+ }
1960
+ }, {
1961
+ requestID,
1962
+ tmdbGuestSessionId
1963
+ });
1964
+ if (errors?.length) {
1965
+ throw new GraphQLError(`Failed to resolve ${PERSON} ${obj.id} ${EXTERNAL_IDS}.`, {
1966
+ nodes: fieldNodes,
1967
+ originalError: errors[0]
1968
+ });
1969
+ }
1970
+ setCacheMetadata(`${PERSON}.${EXTERNAL_IDS}`, headers);
1971
+ const {
1972
+ id: personId,
1973
+ ...rest
1974
+ } = data;
1975
+ return rest;
1976
+ };
1977
+
1978
+ const resolvePersonMovieCredits = async (obj, _args, {
1979
+ requestID,
1980
+ restClient,
1981
+ setCacheMetadata,
1982
+ tmdbGuestSessionId
1983
+ }, {
1984
+ fieldNodes
1985
+ }) => {
1986
+ if (obj.movie_credits && obj.__headers) {
1987
+ setCacheMetadata(`${PERSON}.${MOVIE_CREDITS}`, obj.__headers);
1988
+ return obj.movie_credits;
1989
+ }
1990
+ const {
1991
+ data,
1992
+ errors,
1993
+ headers
1994
+ } = await restClient.person({
1995
+ pathTemplateData: {
1996
+ id: obj.id,
1997
+ type: snakeCase(MOVIE_CREDITS)
1998
+ }
1999
+ }, {
2000
+ requestID,
2001
+ tmdbGuestSessionId
2002
+ });
2003
+ if (errors?.length) {
2004
+ throw new GraphQLError(`Failed to resolve ${PERSON} ${obj.id} ${MOVIE_CREDITS}.`, {
2005
+ nodes: fieldNodes,
2006
+ originalError: errors[0]
2007
+ });
2008
+ }
2009
+ setCacheMetadata(`${PERSON}.${MOVIE_CREDITS}`, headers);
2010
+ const {
2011
+ id: personId,
2012
+ ...rest
2013
+ } = data;
2014
+ return rest;
2015
+ };
2016
+
2017
+ const resolvePersonProfiles = async (obj, _args, {
2018
+ requestID,
2019
+ restClient,
2020
+ setCacheMetadata,
2021
+ tmdbGuestSessionId
2022
+ }, {
2023
+ fieldNodes
2024
+ }) => {
2025
+ if (obj.images && obj.__headers) {
2026
+ setCacheMetadata(`${PERSON}.${PROFILES}`, obj.__headers);
2027
+ return obj.images.profiles;
2028
+ }
2029
+ const {
2030
+ data,
2031
+ errors,
2032
+ headers
2033
+ } = await restClient.person({
2034
+ pathTemplateData: {
2035
+ id: obj.id,
2036
+ type: IMAGES
2037
+ }
2038
+ }, {
2039
+ requestID,
2040
+ tmdbGuestSessionId
2041
+ });
2042
+ if (errors?.length) {
2043
+ throw new GraphQLError(`Failed to resolve ${PERSON} ${obj.id} ${PROFILES}.`, {
2044
+ nodes: fieldNodes,
2045
+ originalError: errors[0]
2046
+ });
2047
+ }
2048
+ setCacheMetadata(`${PERSON}.${PROFILES}`, headers);
2049
+ return data.profiles;
2050
+ };
2051
+
2052
+ const resolvePersonTranslations = async (obj, _args, {
2053
+ requestID,
2054
+ restClient,
2055
+ setCacheMetadata,
2056
+ tmdbGuestSessionId
2057
+ }, {
2058
+ fieldNodes
2059
+ }) => {
2060
+ if (obj.translations && obj.__headers) {
2061
+ setCacheMetadata(`${PERSON}.${TRANSLATIONS}`, obj.__headers);
2062
+ return obj.translations.translations;
2063
+ }
2064
+ const {
2065
+ data,
2066
+ errors,
2067
+ headers
2068
+ } = await restClient.person({
2069
+ pathTemplateData: {
2070
+ id: obj.id,
2071
+ type: TRANSLATIONS
2072
+ }
2073
+ }, {
2074
+ requestID,
2075
+ tmdbGuestSessionId
2076
+ });
2077
+ if (errors?.length) {
2078
+ throw new GraphQLError(`Failed to resolve ${PERSON} ${obj.id} ${TRANSLATIONS}.`, {
2079
+ nodes: fieldNodes,
2080
+ originalError: errors[0]
2081
+ });
2082
+ }
2083
+ setCacheMetadata(`${PERSON}.${TRANSLATIONS}`, headers);
2084
+ return data?.translations;
2085
+ };
2086
+
2087
+ const resolvePersonTvCredits = async (obj, _args, {
2088
+ requestID,
2089
+ restClient,
2090
+ setCacheMetadata,
2091
+ tmdbGuestSessionId
2092
+ }, {
2093
+ fieldNodes
2094
+ }) => {
2095
+ if (obj.tv_credits && obj.__headers) {
2096
+ setCacheMetadata(`${PERSON}.${TV_CREDITS}`, obj.__headers);
2097
+ return obj.tv_credits;
2098
+ }
2099
+ const {
2100
+ data,
2101
+ errors,
2102
+ headers
2103
+ } = await restClient.person({
2104
+ pathTemplateData: {
2105
+ id: obj.id,
2106
+ type: snakeCase(TV_CREDITS)
2107
+ }
2108
+ }, {
2109
+ requestID,
2110
+ tmdbGuestSessionId
2111
+ });
2112
+ if (errors?.length) {
2113
+ throw new GraphQLError(`Failed to resolve ${PERSON} ${obj.id} ${TV_CREDITS}.`, {
2114
+ nodes: fieldNodes,
2115
+ originalError: errors[0]
2116
+ });
2117
+ }
2118
+ setCacheMetadata(`${PERSON}.${TV_CREDITS}`, headers);
2119
+ const {
2120
+ id: personId,
2121
+ ...rest
2122
+ } = data;
2123
+ return rest;
2124
+ };
2125
+
2126
+ const createMakeCursors$5 = (_obj, args) => {
2127
+ const groupCursor = `${JSON.stringify(removeConnectionInputOptions(args))}::${RATED}`;
2128
+ return {
2129
+ makeGroupCursor: () => encode(groupCursor),
2130
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
2131
+ };
2132
+ };
2133
+ const createResourceResolver$5 = (_obj, {
2134
+ screenType
2135
+ }, {
2136
+ requestID,
2137
+ restClient,
2138
+ setCacheMetadata,
2139
+ tmdbGuestSessionId
2140
+ }) => async ({
2141
+ page
2142
+ }) => {
2143
+ const result = await restClient.rated({
2144
+ pathTemplateData: {
2145
+ id: tmdbGuestSessionId,
2146
+ type: screenType.toLowerCase()
2147
+ },
2148
+ queryParams: {
2149
+ page
2150
+ }
2151
+ }, {
2152
+ requestID,
2153
+ tmdbGuestSessionId
2154
+ });
2155
+ if (!result.data) {
2156
+ return result;
2157
+ }
2158
+ result.data.results = result.data.results.map(entry => {
2159
+ entry.media_type = capitalize(entry.media_type ?? screenType);
2160
+ return entry;
2161
+ });
2162
+ setCacheMetadata(RATED, result.headers);
2163
+ return result;
2164
+ };
2165
+ const cursorCache$5 = new Core({
2166
+ name: 'RATED_CONNECTION_RESOLVER',
2167
+ reaper: init({
2168
+ interval: 300_000
2169
+ }),
2170
+ store: init$1(),
2171
+ type: 'GRAPHQL'
2172
+ });
2173
+ const getters$5 = {
2174
+ nodes: ({
2175
+ results
2176
+ }) => results,
2177
+ page: ({
2178
+ page
2179
+ }) => page,
2180
+ totalPages: ({
2181
+ total_pages
2182
+ }) => total_pages,
2183
+ totalResults: ({
2184
+ total_results
2185
+ }) => total_results
2186
+ };
2187
+ const resolveRated = makeConnectionResolver({
2188
+ createMakeCursors: createMakeCursors$5,
2189
+ createResourceResolver: createResourceResolver$5,
2190
+ cursorCache: cursorCache$5,
2191
+ getters: getters$5,
2192
+ resultsPerPage: 20
2193
+ });
2194
+
2195
+ const resolveReview = async (obj, args, {
2196
+ requestID,
2197
+ restClient,
2198
+ setCacheMetadata,
2199
+ tmdbGuestSessionId
2200
+ }, {
2201
+ fieldName,
2202
+ fieldNodes
2203
+ }) => {
2204
+ const typedFieldName = snakeCase(fieldName);
2205
+ if (obj && !isUndefined(obj[typedFieldName])) {
2206
+ return obj[typedFieldName];
2207
+ }
2208
+ const id = obj ? obj.id : args.id;
2209
+ const {
2210
+ data,
2211
+ errors,
2212
+ headers
2213
+ } = await restClient.review({
2214
+ pathTemplateData: {
2215
+ id
2216
+ }
2217
+ }, {
2218
+ requestID,
2219
+ tmdbGuestSessionId
2220
+ });
2221
+ if (errors?.length) {
2222
+ throw new GraphQLError(`Failed to resolve ${REVIEW} ${id}.`, {
2223
+ nodes: fieldNodes,
2224
+ originalError: errors[0]
2225
+ });
2226
+ }
2227
+ if (obj) {
2228
+ setCacheMetadata(`${REVIEW}.${fieldName}`, headers);
2229
+ return data[typedFieldName];
2230
+ }
2231
+ setCacheMetadata(REVIEW, headers);
2232
+ return data;
2233
+ };
2234
+
2235
+ const createMakeCursors$4 = (_obj, args) => {
2236
+ const groupCursor = `${JSON.stringify(removeConnectionInputOptions(args))}::${SEARCH}`;
2237
+ return {
2238
+ makeGroupCursor: () => encode(groupCursor),
2239
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
2240
+ };
2241
+ };
2242
+ const createResourceResolver$4 = (_obj, args, {
2243
+ requestID,
2244
+ restClient,
2245
+ setCacheMetadata,
2246
+ tmdbGuestSessionId
2247
+ }) => {
2248
+ const {
2249
+ searchType,
2250
+ ...rest
2251
+ } = removeConnectionInputOptions(args);
2252
+ return async ({
2253
+ page
2254
+ }) => {
2255
+ const result = await restClient.search({
2256
+ pathTemplateData: {
2257
+ type: (searchType ?? 'MULTI').toLowerCase()
2258
+ },
2259
+ queryParams: {
2260
+ ...snakeCasePropNames(rest),
2261
+ page
2262
+ }
2263
+ }, {
2264
+ requestID,
2265
+ tmdbGuestSessionId
2266
+ });
2267
+ if (!result.data) {
2268
+ return result;
2269
+ }
2270
+ result.data.results = result.data.results.map(entry => {
2271
+ entry.media_type = capitalize(entry.media_type ?? searchType);
2272
+ return entry;
2273
+ });
2274
+ setCacheMetadata(SEARCH, result.headers);
2275
+ return result;
2276
+ };
2277
+ };
2278
+ const cursorCache$4 = new Core({
2279
+ name: 'SEARCH_CONNECTION_RESOLVER',
2280
+ reaper: init({
2281
+ interval: 300_000
2282
+ }),
2283
+ store: init$1(),
2284
+ type: 'GRAPHQL'
2285
+ });
2286
+ const getters$4 = {
2287
+ nodes: ({
2288
+ results
2289
+ }) => results,
2290
+ page: ({
2291
+ page
2292
+ }) => page,
2293
+ totalPages: ({
2294
+ total_pages
2295
+ }) => total_pages,
2296
+ totalResults: ({
2297
+ total_results
2298
+ }) => total_results
2299
+ };
2300
+ const resolveSearch = makeConnectionResolver({
2301
+ createMakeCursors: createMakeCursors$4,
2302
+ createResourceResolver: createResourceResolver$4,
2303
+ cursorCache: cursorCache$4,
2304
+ getters: getters$4,
2305
+ resultsPerPage: 20
2306
+ });
2307
+
2308
+ const appendToResponse$1 = {
2309
+ [CAST]: CREDITS,
2310
+ [CREW]: CREDITS,
2311
+ [EXTERNAL_IDS]: snakeCase(EXTERNAL_IDS),
2312
+ [POSTERS]: IMAGES,
2313
+ [TRANSLATIONS]: TRANSLATIONS,
2314
+ [VIDEOS]: VIDEOS
2315
+ };
2316
+ const enrichEpisodeData = obj => {
2317
+ for (const episode of obj.episodes) {
2318
+ episode.tv_show_id = obj.tv_show_id;
2319
+ }
2320
+ };
2321
+ const resolveSeason = async (obj, args, {
2322
+ fragmentDefinitions,
2323
+ requestID,
2324
+ restClient,
2325
+ setCacheMetadata,
2326
+ tmdbGuestSessionId
2327
+ }, {
2328
+ fieldName,
2329
+ fieldNodes
2330
+ }) => {
2331
+ const typedFieldName = snakeCase(fieldName);
2332
+ const {
2333
+ id,
2334
+ seasonNumber
2335
+ } = getTvIdSeasonAndEpisode(obj, args);
2336
+ if (obj && !isUndefined(obj[typedFieldName])) {
2337
+ return typedFieldName === 'id' ? encodeId({
2338
+ id,
2339
+ seasonNumber
2340
+ }) : obj[typedFieldName];
2341
+ }
2342
+ const appendToResponseKeys = getAppendToResponseKeys(fieldNodes[0], appendToResponse$1, fragmentDefinitions);
2343
+ const {
2344
+ data,
2345
+ errors,
2346
+ headers
2347
+ } = await restClient.season({
2348
+ pathTemplateData: {
2349
+ id,
2350
+ number: seasonNumber
2351
+ },
2352
+ ...(appendToResponseKeys.length > 0 ? {
2353
+ queryParams: {
2354
+ append_to_response: appendToResponseKeys.join(',')
2355
+ }
2356
+ } : {})
2357
+ }, {
2358
+ requestID,
2359
+ tmdbGuestSessionId
2360
+ });
2361
+ if (errors?.length) {
2362
+ throw new GraphQLError(`Failed to resolve ${TV} show ${id} ${SEASON} ${seasonNumber}.`, {
2363
+ nodes: fieldNodes,
2364
+ originalError: errors[0]
2365
+ });
2366
+ }
2367
+ const rawSeason = data;
2368
+ rawSeason.id = encodeId({
2369
+ id,
2370
+ seasonNumber
2371
+ });
2372
+ if (!rawSeason.tv_show_id) {
2373
+ rawSeason.tv_show_id = id;
2374
+ }
2375
+ enrichEpisodeData(rawSeason);
2376
+ if (obj) {
2377
+ setCacheMetadata(`${SEASON}.${fieldName}`, headers);
2378
+ return rawSeason[typedFieldName];
2379
+ }
2380
+ setCacheMetadata(SEASON, headers);
2381
+ return appendToResponseKeys.length > 0 ? {
2382
+ ...rawSeason,
2383
+ __headers: headers
2384
+ } : rawSeason;
2385
+ };
2386
+
2387
+ const resolveSeasonCredits = async (obj, _args, {
2388
+ requestID,
2389
+ restClient,
2390
+ setCacheMetadata,
2391
+ tmdbGuestSessionId
2392
+ }, {
2393
+ fieldName,
2394
+ fieldNodes
2395
+ }) => {
2396
+ const typedFieldName = fieldName;
2397
+ if (obj.credits && obj.__headers) {
2398
+ setCacheMetadata(`${SEASON}.${fieldName}`, obj.__headers);
2399
+ return obj.credits[typedFieldName];
2400
+ }
2401
+ const {
2402
+ data,
2403
+ errors,
2404
+ headers
2405
+ } = await restClient.season({
2406
+ pathTemplateData: {
2407
+ id: obj.tv_show_id,
2408
+ number: obj.season_number,
2409
+ type: CREDITS
2410
+ }
2411
+ }, {
2412
+ requestID,
2413
+ tmdbGuestSessionId
2414
+ });
2415
+ if (errors?.length) {
2416
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${fieldName}.`, {
2417
+ nodes: fieldNodes,
2418
+ originalError: errors[0]
2419
+ });
2420
+ }
2421
+ setCacheMetadata(`${SEASON}.${fieldName}`, headers);
2422
+ return data[typedFieldName];
2423
+ };
2424
+
2425
+ const resolveSeasonEpisodeCount = obj => {
2426
+ if (obj.episode_count) {
2427
+ return obj.episode_count;
2428
+ }
2429
+ return obj.episodes.length;
2430
+ };
2431
+
2432
+ const resolveSeasonExternalIds = async (obj, _args, {
2433
+ requestID,
2434
+ restClient,
2435
+ setCacheMetadata,
2436
+ tmdbGuestSessionId
2437
+ }, {
2438
+ fieldNodes
2439
+ }) => {
2440
+ if (obj.external_ids && obj.__headers) {
2441
+ setCacheMetadata(`${SEASON}.${EXTERNAL_IDS}`, obj.__headers);
2442
+ return obj.external_ids;
2443
+ }
2444
+ const {
2445
+ data,
2446
+ errors,
2447
+ headers
2448
+ } = await restClient.season({
2449
+ pathTemplateData: {
2450
+ id: obj.tv_show_id,
2451
+ number: obj.season_number,
2452
+ type: snakeCase(EXTERNAL_IDS)
2453
+ }
2454
+ }, {
2455
+ requestID,
2456
+ tmdbGuestSessionId
2457
+ });
2458
+ if (errors?.length) {
2459
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${EXTERNAL_IDS}.`, {
2460
+ nodes: fieldNodes,
2461
+ originalError: errors[0]
2462
+ });
2463
+ }
2464
+ setCacheMetadata(`${SEASON}.${EXTERNAL_IDS}`, headers);
2465
+ const {
2466
+ id: movieId,
2467
+ ...rest
2468
+ } = data;
2469
+ return rest;
2470
+ };
2471
+
2472
+ const resolveSeasonPosters = async (obj, _args, {
2473
+ requestID,
2474
+ restClient,
2475
+ setCacheMetadata,
2476
+ tmdbGuestSessionId
2477
+ }, {
2478
+ fieldNodes
2479
+ }) => {
2480
+ if (obj.images && obj.__headers) {
2481
+ setCacheMetadata(`${SEASON}.${POSTERS}`, obj.__headers);
2482
+ return obj.images.posters;
2483
+ }
2484
+ const {
2485
+ data,
2486
+ errors,
2487
+ headers
2488
+ } = await restClient.season({
2489
+ pathTemplateData: {
2490
+ id: obj.tv_show_id,
2491
+ number: obj.season_number,
2492
+ type: IMAGES
2493
+ }
2494
+ }, {
2495
+ requestID,
2496
+ tmdbGuestSessionId
2497
+ });
2498
+ if (errors?.length) {
2499
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${POSTERS}.`, {
2500
+ nodes: fieldNodes,
2501
+ originalError: errors[0]
2502
+ });
2503
+ }
2504
+ setCacheMetadata(`${SEASON}.${POSTERS}`, headers);
2505
+ return data.posters;
2506
+ };
2507
+
2508
+ const resolveSeasonTranslations = async (obj, _args, {
2509
+ requestID,
2510
+ restClient,
2511
+ setCacheMetadata,
2512
+ tmdbGuestSessionId
2513
+ }, {
2514
+ fieldNodes
2515
+ }) => {
2516
+ if (obj.translations && obj.__headers) {
2517
+ setCacheMetadata(`${SEASON}.${TRANSLATIONS}`, obj.__headers);
2518
+ return obj.translations.translations;
2519
+ }
2520
+ const {
2521
+ data,
2522
+ errors,
2523
+ headers
2524
+ } = await restClient.season({
2525
+ pathTemplateData: {
2526
+ id: obj.tv_show_id,
2527
+ number: obj.season_number,
2528
+ type: TRANSLATIONS
2529
+ }
2530
+ }, {
2531
+ requestID,
2532
+ tmdbGuestSessionId
2533
+ });
2534
+ if (errors?.length) {
2535
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${TRANSLATIONS}.`, {
2536
+ nodes: fieldNodes,
2537
+ originalError: errors[0]
2538
+ });
2539
+ }
2540
+ setCacheMetadata(`${SEASON}.${TRANSLATIONS}`, headers);
2541
+ return data?.translations;
2542
+ };
2543
+
2544
+ const resolveSeasonVideos = async (obj, _args, {
2545
+ requestID,
2546
+ restClient,
2547
+ setCacheMetadata,
2548
+ tmdbGuestSessionId
2549
+ }, {
2550
+ fieldNodes
2551
+ }) => {
2552
+ if (obj.videos && obj.__headers) {
2553
+ setCacheMetadata(`${SEASON}.${VIDEOS}`, obj.__headers);
2554
+ return obj.videos.results;
2555
+ }
2556
+ const {
2557
+ data,
2558
+ errors,
2559
+ headers
2560
+ } = await restClient.season({
2561
+ pathTemplateData: {
2562
+ id: obj.tv_show_id,
2563
+ number: obj.season_number,
2564
+ type: VIDEOS
2565
+ }
2566
+ }, {
2567
+ requestID,
2568
+ tmdbGuestSessionId
2569
+ });
2570
+ if (errors?.length) {
2571
+ throw new GraphQLError(`Failed to resolve ${TV} show ${obj.tv_show_id} ${SEASON} ${obj.season_number} ${VIDEOS}.`, {
2572
+ nodes: fieldNodes,
2573
+ originalError: errors[0]
2574
+ });
2575
+ }
2576
+ setCacheMetadata(`${SEASON}.${VIDEOS}`, headers);
2577
+ return data?.results;
2578
+ };
2579
+
2580
+ const createMakeCursors$3 = (_obj, args) => {
2581
+ const groupCursor = `${JSON.stringify(removeConnectionInputOptions(args))}::${TRENDING}`;
2582
+ return {
2583
+ makeGroupCursor: () => encode(groupCursor),
2584
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
2585
+ };
2586
+ };
2587
+ const createResourceResolver$3 = (_obj, {
2588
+ mediaType,
2589
+ timeWindow
2590
+ }, {
2591
+ requestID,
2592
+ restClient,
2593
+ setCacheMetadata,
2594
+ tmdbGuestSessionId
2595
+ }) => async ({
2596
+ page
2597
+ }) => {
2598
+ const result = await restClient.trending({
2599
+ pathTemplateData: {
2600
+ subType: timeWindow.toLowerCase(),
2601
+ type: mediaType.toLowerCase()
2602
+ },
2603
+ queryParams: {
2604
+ page
2605
+ }
2606
+ }, {
2607
+ requestID,
2608
+ tmdbGuestSessionId
2609
+ });
2610
+ if (!result.data) {
2611
+ return result;
2612
+ }
2613
+ result.data.results = result.data.results.map(entry => {
2614
+ entry.media_type = capitalize(entry.media_type ?? mediaType);
2615
+ return entry;
2616
+ });
2617
+ setCacheMetadata(TRENDING, result.headers);
2618
+ return result;
2619
+ };
2620
+ const cursorCache$3 = new Core({
2621
+ name: 'TRENDING_CONNECTION_RESOLVER',
2622
+ reaper: init({
2623
+ interval: 300_000
2624
+ }),
2625
+ store: init$1(),
2626
+ type: 'GRAPHQL'
2627
+ });
2628
+ const getters$3 = {
2629
+ nodes: ({
2630
+ results
2631
+ }) => results,
2632
+ page: ({
2633
+ page
2634
+ }) => page,
2635
+ totalPages: ({
2636
+ total_pages
2637
+ }) => total_pages,
2638
+ totalResults: ({
2639
+ total_results
2640
+ }) => total_results
2641
+ };
2642
+ const resolveTrending = makeConnectionResolver({
2643
+ createMakeCursors: createMakeCursors$3,
2644
+ createResourceResolver: createResourceResolver$3,
2645
+ cursorCache: cursorCache$3,
2646
+ getters: getters$3,
2647
+ resultsPerPage: 20
2648
+ });
2649
+
2650
+ const appendToResponse = {
2651
+ [ALTERNATIVE_TITLES]: snakeCase(ALTERNATIVE_TITLES),
2652
+ [BACKDROPS]: IMAGES,
2653
+ [CAST]: CREDITS,
2654
+ [CONTENT_RATINGS]: snakeCase(CONTENT_RATINGS),
2655
+ [CREW]: CREDITS,
2656
+ [EPISODE_GROUPS]: snakeCase(EPISODE_GROUPS),
2657
+ [EXTERNAL_IDS]: snakeCase(EXTERNAL_IDS),
2658
+ [KEYWORDS]: KEYWORDS,
2659
+ [LOGOS]: IMAGES,
2660
+ [POSTERS]: IMAGES,
2661
+ [RECOMMENDATIONS]: RECOMMENDATIONS,
2662
+ [REVIEWS]: REVIEWS,
2663
+ [SIMILAR_TV_SHOWS]: SIMILAR,
2664
+ [TRANSLATIONS]: TRANSLATIONS,
2665
+ [VIDEOS]: VIDEOS,
2666
+ [WATCH_PROVIDERS]: 'watch/providers'
2667
+ };
2668
+ const enrichSeasonData = obj => {
2669
+ for (const season of obj.seasons) {
2670
+ season.tv_show_id = obj.id;
2671
+ }
2672
+ };
2673
+ const resolveTv = async (obj, args, {
2674
+ fragmentDefinitions,
2675
+ requestID,
2676
+ restClient,
2677
+ setCacheMetadata,
2678
+ tmdbGuestSessionId
2679
+ }, {
2680
+ fieldName,
2681
+ fieldNodes
2682
+ }) => {
2683
+ const typedFieldName = snakeCase(fieldName);
2684
+ if (obj && !isUndefined(obj[typedFieldName])) {
2685
+ return obj[typedFieldName];
2686
+ }
2687
+ const id = obj ? obj.id : args.id;
2688
+ const appendToResponseKeys = getAppendToResponseKeys(fieldNodes[0], appendToResponse, fragmentDefinitions);
2689
+ const {
2690
+ data,
2691
+ errors,
2692
+ headers
2693
+ } = await restClient.tv({
2694
+ pathTemplateData: {
2695
+ id
2696
+ },
2697
+ ...(appendToResponseKeys.length > 0 ? {
2698
+ queryParams: {
2699
+ append_to_response: appendToResponseKeys.join(',')
2700
+ }
2701
+ } : {})
2702
+ }, {
2703
+ requestID,
2704
+ tmdbGuestSessionId
2705
+ });
2706
+ if (errors?.length) {
2707
+ throw new GraphQLError(`Failed to resolve ${TV} ${id}.`, {
2708
+ nodes: fieldNodes,
2709
+ originalError: errors[0]
2710
+ });
2711
+ }
2712
+ const rawTv = data;
2713
+ enrichSeasonData(rawTv);
2714
+ if (obj) {
2715
+ setCacheMetadata(`${TV}.${fieldName}`, headers);
2716
+ return rawTv[typedFieldName];
2717
+ }
2718
+ setCacheMetadata(TV, headers);
2719
+ return appendToResponseKeys.length > 0 ? {
2720
+ ...rawTv,
2721
+ __headers: headers
2722
+ } : rawTv;
2723
+ };
2724
+
2725
+ const resolveTvAlternativeTitles = async (obj, _args, {
2726
+ requestID,
2727
+ restClient,
2728
+ setCacheMetadata,
2729
+ tmdbGuestSessionId
2730
+ }, {
2731
+ fieldNodes
2732
+ }) => {
2733
+ if (obj.alternative_titles && obj.__headers) {
2734
+ setCacheMetadata(`${TV}.${ALTERNATIVE_TITLES}`, obj.__headers);
2735
+ return obj.alternative_titles.results;
2736
+ }
2737
+ const {
2738
+ data,
2739
+ errors,
2740
+ headers
2741
+ } = await restClient.tv({
2742
+ pathTemplateData: {
2743
+ id: obj.id,
2744
+ type: snakeCase(ALTERNATIVE_TITLES)
2745
+ }
2746
+ }, {
2747
+ requestID,
2748
+ tmdbGuestSessionId
2749
+ });
2750
+ if (errors?.length) {
2751
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${ALTERNATIVE_TITLES}.`, {
2752
+ nodes: fieldNodes,
2753
+ originalError: errors[0]
2754
+ });
2755
+ }
2756
+ setCacheMetadata(`${TV}.${ALTERNATIVE_TITLES}`, headers);
2757
+ return data.results;
2758
+ };
2759
+
2760
+ const resolveTvContentRatings = async (obj, _args, {
2761
+ requestID,
2762
+ restClient,
2763
+ setCacheMetadata,
2764
+ tmdbGuestSessionId
2765
+ }, {
2766
+ fieldNodes
2767
+ }) => {
2768
+ if (obj.content_ratings && obj.__headers) {
2769
+ setCacheMetadata(`${TV}.${CONTENT_RATINGS}`, obj.__headers);
2770
+ return obj.content_ratings.results;
2771
+ }
2772
+ const {
2773
+ data,
2774
+ errors,
2775
+ headers
2776
+ } = await restClient.tv({
2777
+ pathTemplateData: {
2778
+ id: obj.id,
2779
+ type: snakeCase(CONTENT_RATINGS)
2780
+ }
2781
+ }, {
2782
+ requestID,
2783
+ tmdbGuestSessionId
2784
+ });
2785
+ if (errors?.length) {
2786
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${CONTENT_RATINGS}.`, {
2787
+ nodes: fieldNodes,
2788
+ originalError: errors[0]
2789
+ });
2790
+ }
2791
+ setCacheMetadata(`${TV}.${CONTENT_RATINGS}`, headers);
2792
+ return data.results;
2793
+ };
2794
+
2795
+ const resolveTvCredits = async (obj, _args, {
2796
+ requestID,
2797
+ restClient,
2798
+ setCacheMetadata,
2799
+ tmdbGuestSessionId
2800
+ }, {
2801
+ fieldName,
2802
+ fieldNodes
2803
+ }) => {
2804
+ const typedFieldName = fieldName;
2805
+ if (obj.credits && obj.__headers) {
2806
+ setCacheMetadata(`${TV}.${typedFieldName}`, obj.__headers);
2807
+ return obj.credits[typedFieldName];
2808
+ }
2809
+ const {
2810
+ data,
2811
+ errors,
2812
+ headers
2813
+ } = await restClient.tv({
2814
+ pathTemplateData: {
2815
+ id: obj.id,
2816
+ type: CREDITS
2817
+ }
2818
+ }, {
2819
+ requestID,
2820
+ tmdbGuestSessionId
2821
+ });
2822
+ if (errors?.length) {
2823
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${typedFieldName}.`, {
2824
+ nodes: fieldNodes,
2825
+ originalError: errors[0]
2826
+ });
2827
+ }
2828
+ setCacheMetadata(`${TV}.${typedFieldName}`, headers);
2829
+ return data[typedFieldName];
2830
+ };
2831
+
2832
+ const resolveTvEpisodeGroups = async (obj, _args, {
2833
+ requestID,
2834
+ restClient,
2835
+ setCacheMetadata,
2836
+ tmdbGuestSessionId
2837
+ }, {
2838
+ fieldNodes
2839
+ }) => {
2840
+ if (obj.episode_groups && obj.__headers) {
2841
+ setCacheMetadata(`${TV}.${EPISODE_GROUPS}`, obj.__headers);
2842
+ return obj.episode_groups.results;
2843
+ }
2844
+ const {
2845
+ data,
2846
+ errors,
2847
+ headers
2848
+ } = await restClient.tv({
2849
+ pathTemplateData: {
2850
+ id: obj.id,
2851
+ type: snakeCase(EPISODE_GROUPS)
2852
+ }
2853
+ }, {
2854
+ requestID,
2855
+ tmdbGuestSessionId
2856
+ });
2857
+ if (errors?.length) {
2858
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${EPISODE_GROUPS}.`, {
2859
+ nodes: fieldNodes,
2860
+ originalError: errors[0]
2861
+ });
2862
+ }
2863
+ setCacheMetadata(`${TV}.${EPISODE_GROUPS}`, headers);
2864
+ return data.results;
2865
+ };
2866
+
2867
+ const resolveTvExternalIds = async (obj, _args, {
2868
+ requestID,
2869
+ restClient,
2870
+ setCacheMetadata,
2871
+ tmdbGuestSessionId
2872
+ }, {
2873
+ fieldNodes
2874
+ }) => {
2875
+ if (obj.external_ids && obj.__headers) {
2876
+ setCacheMetadata(`${TV}.${EXTERNAL_IDS}`, obj.__headers);
2877
+ return obj.external_ids;
2878
+ }
2879
+ const {
2880
+ data,
2881
+ errors,
2882
+ headers
2883
+ } = await restClient.tv({
2884
+ pathTemplateData: {
2885
+ id: obj.id,
2886
+ type: snakeCase(EXTERNAL_IDS)
2887
+ }
2888
+ }, {
2889
+ requestID,
2890
+ tmdbGuestSessionId
2891
+ });
2892
+ if (errors?.length) {
2893
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${EXTERNAL_IDS}.`, {
2894
+ nodes: fieldNodes,
2895
+ originalError: errors[0]
2896
+ });
2897
+ }
2898
+ setCacheMetadata(`${TV}.${EXTERNAL_IDS}`, headers);
2899
+ const {
2900
+ id: tvId,
2901
+ ...rest
2902
+ } = data;
2903
+ return rest;
2904
+ };
2905
+
2906
+ const resolveTvImages = async (obj, _args, {
2907
+ requestID,
2908
+ restClient,
2909
+ setCacheMetadata,
2910
+ tmdbGuestSessionId
2911
+ }, {
2912
+ fieldName,
2913
+ fieldNodes
2914
+ }) => {
2915
+ const typedFieldName = fieldName;
2916
+ if (obj.images && obj.__headers) {
2917
+ setCacheMetadata(`${TV}.${typedFieldName}`, obj.__headers);
2918
+ return obj.images[typedFieldName];
2919
+ }
2920
+ const {
2921
+ data,
2922
+ errors,
2923
+ headers
2924
+ } = await restClient.tv({
2925
+ pathTemplateData: {
2926
+ id: obj.id,
2927
+ type: 'images'
2928
+ }
2929
+ }, {
2930
+ requestID,
2931
+ tmdbGuestSessionId
2932
+ });
2933
+ if (errors?.length) {
2934
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${typedFieldName}.`, {
2935
+ nodes: fieldNodes,
2936
+ originalError: errors[0]
2937
+ });
2938
+ }
2939
+ setCacheMetadata(`${TV}.${typedFieldName}`, headers);
2940
+ return data[typedFieldName];
2941
+ };
2942
+
2943
+ const resolveTvKeywords = async (obj, _args, {
2944
+ requestID,
2945
+ restClient,
2946
+ setCacheMetadata,
2947
+ tmdbGuestSessionId
2948
+ }, {
2949
+ fieldNodes
2950
+ }) => {
2951
+ if (obj.keywords && obj.__headers) {
2952
+ setCacheMetadata(`${TV}.${KEYWORDS}`, obj.__headers);
2953
+ return obj.keywords.results;
2954
+ }
2955
+ const {
2956
+ data,
2957
+ errors,
2958
+ headers
2959
+ } = await restClient.tv({
2960
+ pathTemplateData: {
2961
+ id: obj.id,
2962
+ type: KEYWORDS
2963
+ }
2964
+ }, {
2965
+ requestID,
2966
+ tmdbGuestSessionId
2967
+ });
2968
+ if (errors?.length) {
2969
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${KEYWORDS}.`, {
2970
+ nodes: fieldNodes,
2971
+ originalError: errors[0]
2972
+ });
2973
+ }
2974
+ setCacheMetadata(`${TV}.${KEYWORDS}`, headers);
2975
+ return data?.results;
2976
+ };
2977
+
2978
+ const createMakeCursors$2 = obj => {
2979
+ const groupCursor = `${obj.id}::${TV}::${RECOMMENDATIONS}`;
2980
+ return {
2981
+ makeGroupCursor: () => encode(groupCursor),
2982
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
2983
+ };
2984
+ };
2985
+ const createResourceResolver$2 = (obj, _args, {
2986
+ requestID,
2987
+ restClient,
2988
+ setCacheMetadata,
2989
+ tmdbGuestSessionId
2990
+ }) => async ({
2991
+ page
2992
+ }) => {
2993
+ if (obj.recommendations && obj.__headers) {
2994
+ setCacheMetadata(`${TV}.${RECOMMENDATIONS}`, obj.__headers);
2995
+ return {
2996
+ data: obj.recommendations,
2997
+ errors: [],
2998
+ headers: obj.__headers
2999
+ };
3000
+ }
3001
+ const result = await restClient.tv({
3002
+ pathTemplateData: {
3003
+ id: obj.id,
3004
+ type: RECOMMENDATIONS
3005
+ },
3006
+ queryParams: {
3007
+ page
3008
+ }
3009
+ }, {
3010
+ requestID,
3011
+ tmdbGuestSessionId
3012
+ });
3013
+ if (result.data) {
3014
+ setCacheMetadata(`${TV}.${RECOMMENDATIONS}`, result.headers);
3015
+ }
3016
+ return result;
3017
+ };
3018
+ const cursorCache$2 = new Core({
3019
+ name: 'TV_RECOMMENDATIONS_CONNECTION_RESOLVER',
3020
+ reaper: init({
3021
+ interval: 300_000
3022
+ }),
3023
+ store: init$1(),
3024
+ type: 'GRAPHQL'
3025
+ });
3026
+ const getters$2 = {
3027
+ nodes: ({
3028
+ results
3029
+ }) => results,
3030
+ page: ({
3031
+ page
3032
+ }) => page,
3033
+ totalPages: ({
3034
+ total_pages
3035
+ }) => total_pages,
3036
+ totalResults: ({
3037
+ total_results
3038
+ }) => total_results
3039
+ };
3040
+ const resolveTvRecommendations = makeConnectionResolver({
3041
+ createMakeCursors: createMakeCursors$2,
3042
+ createResourceResolver: createResourceResolver$2,
3043
+ cursorCache: cursorCache$2,
3044
+ getters: getters$2,
3045
+ resultsPerPage: 20
3046
+ });
3047
+
3048
+ const createMakeCursors$1 = obj => {
3049
+ const groupCursor = `${obj.id}::${TV}::${REVIEWS}`;
3050
+ return {
3051
+ makeGroupCursor: () => encode(groupCursor),
3052
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
3053
+ };
3054
+ };
3055
+ const createResourceResolver$1 = (obj, _args, {
3056
+ requestID,
3057
+ restClient,
3058
+ setCacheMetadata,
3059
+ tmdbGuestSessionId
3060
+ }) => async ({
3061
+ page
3062
+ }) => {
3063
+ if (obj.reviews && obj.__headers) {
3064
+ setCacheMetadata(`${TV}.${REVIEWS}`, obj.__headers);
3065
+ return {
3066
+ data: obj.reviews,
3067
+ errors: [],
3068
+ headers: obj.__headers
3069
+ };
3070
+ }
3071
+ const result = await restClient.tv({
3072
+ pathTemplateData: {
3073
+ id: obj.id,
3074
+ type: REVIEWS
3075
+ },
3076
+ queryParams: {
3077
+ page
3078
+ }
3079
+ }, {
3080
+ requestID,
3081
+ tmdbGuestSessionId
3082
+ });
3083
+ if (result.data) {
3084
+ setCacheMetadata(`${TV}.${REVIEWS}`, result.headers);
3085
+ }
3086
+ return result;
3087
+ };
3088
+ const cursorCache$1 = new Core({
3089
+ name: 'TV_REVIEWS_CONNECTION_RESOLVER',
3090
+ reaper: init({
3091
+ interval: 300_000
3092
+ }),
3093
+ store: init$1(),
3094
+ type: 'GRAPHQL'
3095
+ });
3096
+ const getters$1 = {
3097
+ nodes: ({
3098
+ results
3099
+ }) => results,
3100
+ page: ({
3101
+ page
3102
+ }) => page,
3103
+ totalPages: ({
3104
+ total_pages
3105
+ }) => total_pages,
3106
+ totalResults: ({
3107
+ total_results
3108
+ }) => total_results
3109
+ };
3110
+ const resolveTvReviews = makeConnectionResolver({
3111
+ createMakeCursors: createMakeCursors$1,
3112
+ createResourceResolver: createResourceResolver$1,
3113
+ cursorCache: cursorCache$1,
3114
+ getters: getters$1,
3115
+ resultsPerPage: 20
3116
+ });
3117
+
3118
+ const createMakeCursors = obj => {
3119
+ const groupCursor = `${obj.id}::${TV}::${SIMILAR}`;
3120
+ return {
3121
+ makeGroupCursor: () => encode(groupCursor),
3122
+ makeIDCursor: id => encode(`${id}::${groupCursor}`)
3123
+ };
3124
+ };
3125
+ const createResourceResolver = (obj, _args, {
3126
+ requestID,
3127
+ restClient,
3128
+ setCacheMetadata,
3129
+ tmdbGuestSessionId
3130
+ }) => async ({
3131
+ page
3132
+ }) => {
3133
+ if (obj.similar && obj.__headers) {
3134
+ setCacheMetadata(`${TV}.${SIMILAR_TV_SHOWS}`, obj.__headers);
3135
+ return {
3136
+ data: obj.similar,
3137
+ errors: [],
3138
+ headers: obj.__headers
3139
+ };
3140
+ }
3141
+ const result = await restClient.tv({
3142
+ pathTemplateData: {
3143
+ id: obj.id,
3144
+ type: SIMILAR
3145
+ },
3146
+ queryParams: {
3147
+ page
3148
+ }
3149
+ }, {
3150
+ requestID,
3151
+ tmdbGuestSessionId
3152
+ });
3153
+ if (result.data) {
3154
+ setCacheMetadata(`${TV}.${SIMILAR_TV_SHOWS}`, result.headers);
3155
+ }
3156
+ return result;
3157
+ };
3158
+ const cursorCache = new Core({
3159
+ name: 'TV_SIMILAR_TV_SHOWS_CONNECTION_RESOLVER',
3160
+ reaper: init({
3161
+ interval: 300_000
3162
+ }),
3163
+ store: init$1(),
3164
+ type: 'GRAPHQL'
3165
+ });
3166
+ const getters = {
3167
+ nodes: ({
3168
+ results
3169
+ }) => results,
3170
+ page: ({
3171
+ page
3172
+ }) => page,
3173
+ totalPages: ({
3174
+ total_pages
3175
+ }) => total_pages,
3176
+ totalResults: ({
3177
+ total_results
3178
+ }) => total_results
3179
+ };
3180
+ const resolveTvSimilarTvShows = makeConnectionResolver({
3181
+ createMakeCursors,
3182
+ createResourceResolver,
3183
+ cursorCache,
3184
+ getters,
3185
+ resultsPerPage: 20
3186
+ });
3187
+
3188
+ const resolveTvTranslations = async (obj, _args, {
3189
+ requestID,
3190
+ restClient,
3191
+ setCacheMetadata,
3192
+ tmdbGuestSessionId
3193
+ }, {
3194
+ fieldNodes
3195
+ }) => {
3196
+ if (obj.translations && obj.__headers) {
3197
+ setCacheMetadata(`${TV}.${TRANSLATIONS}`, obj.__headers);
3198
+ return obj.translations.translations;
3199
+ }
3200
+ const {
3201
+ data,
3202
+ errors,
3203
+ headers
3204
+ } = await restClient.tv({
3205
+ pathTemplateData: {
3206
+ id: obj.id,
3207
+ type: TRANSLATIONS
3208
+ }
3209
+ }, {
3210
+ requestID,
3211
+ tmdbGuestSessionId
3212
+ });
3213
+ if (errors?.length) {
3214
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${TRANSLATIONS}.`, {
3215
+ nodes: fieldNodes,
3216
+ originalError: errors[0]
3217
+ });
3218
+ }
3219
+ setCacheMetadata(`${TV}.${TRANSLATIONS}`, headers);
3220
+ return data?.translations;
3221
+ };
3222
+
3223
+ const resolveTvVideos = async (obj, _args, {
3224
+ requestID,
3225
+ restClient,
3226
+ setCacheMetadata,
3227
+ tmdbGuestSessionId
3228
+ }, {
3229
+ fieldNodes
3230
+ }) => {
3231
+ if (obj.videos && obj.__headers) {
3232
+ setCacheMetadata(`${TV}.${VIDEOS}`, obj.__headers);
3233
+ return obj.videos.results;
3234
+ }
3235
+ const {
3236
+ data,
3237
+ errors,
3238
+ headers
3239
+ } = await restClient.tv({
3240
+ pathTemplateData: {
3241
+ id: obj.id,
3242
+ type: VIDEOS
3243
+ }
3244
+ }, {
3245
+ requestID,
3246
+ tmdbGuestSessionId
3247
+ });
3248
+ if (errors?.length) {
3249
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${VIDEOS}.`, {
3250
+ nodes: fieldNodes,
3251
+ originalError: errors[0]
3252
+ });
3253
+ }
3254
+ setCacheMetadata(`${TV}.${VIDEOS}`, headers);
3255
+ return data?.results;
3256
+ };
3257
+
3258
+ const resolveTvWatchProviders = async (obj, _args, {
3259
+ requestID,
3260
+ restClient,
3261
+ setCacheMetadata,
3262
+ tmdbGuestSessionId
3263
+ }, {
3264
+ fieldNodes
3265
+ }) => {
3266
+ if (obj['watch/providers'] && obj.__headers) {
3267
+ setCacheMetadata(`${TV}.${WATCH_PROVIDERS}`, obj.__headers);
3268
+ return obj['watch/providers'].results;
3269
+ }
3270
+ const {
3271
+ data,
3272
+ errors,
3273
+ headers
3274
+ } = await restClient.watchProviders({
3275
+ pathTemplateData: {
3276
+ id: obj.id,
3277
+ type: TV
3278
+ }
3279
+ }, {
3280
+ requestID,
3281
+ tmdbGuestSessionId
3282
+ });
3283
+ if (errors?.length) {
3284
+ throw new GraphQLError(`Failed to resolve ${TV} ${obj.id} ${WATCH_PROVIDERS}.`, {
3285
+ nodes: fieldNodes,
3286
+ originalError: errors[0]
3287
+ });
3288
+ }
3289
+ setCacheMetadata(`${TV}.${WATCH_PROVIDERS}`, headers);
3290
+ return data?.results;
3291
+ };
3292
+
3293
+ const resolveVideoType = ({
3294
+ type
3295
+ }) => snakeCase(type).toUpperCase();
3296
+
3297
+ const resolvers = {
3298
+ Certifications: {
3299
+ CA_QC: obj => obj['CA-QC']
3300
+ },
3301
+ Collection: {
3302
+ ...makeFallbackFieldResolvers('Collection', resolveCollection),
3303
+ backdrops: resolveCollectionImages,
3304
+ posters: resolveCollectionImages,
3305
+ translations: resolveCollectionTranslations
3306
+ },
3307
+ Company: {
3308
+ ...makeFallbackFieldResolvers('Company', resolveCompany),
3309
+ alternativeNames: resolveCompanyAlternativeNames,
3310
+ logos: resolveCompanyLogos
3311
+ },
3312
+ Configuration: {
3313
+ countries: resolveConfigurationCountries,
3314
+ jobs: resolveConfigurationJobs,
3315
+ languages: resolveConfigurationLanguages,
3316
+ primaryTranslations: resolveConfigurationPrimaryTranslations,
3317
+ timezones: resolveConfigurationTimezones
3318
+ },
3319
+ Episode: {
3320
+ ...makeFallbackFieldResolvers('Episode', resolveEpisode),
3321
+ cast: resolveEpisodeCredits,
3322
+ crew: resolveEpisodeCredits,
3323
+ externalIds: resolveEpisodeExternalIds,
3324
+ stills: resolveEpisodeStills,
3325
+ translations: resolveEpisodeTranslations,
3326
+ videos: resolveEpisodeVideos
3327
+ },
3328
+ Media: {
3329
+ __resolveType: obj => {
3330
+ return obj.media_type;
3331
+ }
3332
+ },
3333
+ Movie: {
3334
+ ...makeFallbackFieldResolvers('Movie', resolveMovie),
3335
+ alternativeTitles: resolveMovieAlternativeTitles,
3336
+ backdrops: resolveMovieImages,
3337
+ cast: resolveMovieCredits,
3338
+ crew: resolveMovieCredits,
3339
+ externalIds: resolveMovieExternalIds,
3340
+ keywords: resolveMovieKeywords,
3341
+ logos: resolveMovieImages,
3342
+ posters: resolveMovieImages,
3343
+ recommendations: resolveMovieRecommendations,
3344
+ releaseDates: resolveMovieReleaseDates,
3345
+ reviews: resolveMovieReviews,
3346
+ similarMovies: resolveMovieSimilarMovies,
3347
+ translations: resolveMovieTranslations,
3348
+ videos: resolveMovieVideos,
3349
+ watchProviders: resolveMovieWatchProviders
3350
+ },
3351
+ Network: {
3352
+ ...makeFallbackFieldResolvers('Network', resolveNetwork),
3353
+ alternativeNames: resolveNetworkAlternativeNames,
3354
+ logos: resolveNetworkLogos
3355
+ },
3356
+ Person: {
3357
+ ...makeFallbackFieldResolvers('Person', resolvePerson),
3358
+ combinedCredits: resolvePersonCombinedCredits,
3359
+ externalIds: resolvePersonExternalIds,
3360
+ movieCredits: resolvePersonMovieCredits,
3361
+ profiles: resolvePersonProfiles,
3362
+ translations: resolvePersonTranslations,
3363
+ tvCredits: resolvePersonTvCredits
3364
+ },
3365
+ Query: {
3366
+ certifications: resolveCertifications,
3367
+ collection: resolveCollection,
3368
+ company: resolveCompany,
3369
+ configuration: resolveConfiguration,
3370
+ credit: resolveCredit,
3371
+ discoverMovies: resolveDiscoverMovies,
3372
+ discoverTv: resolveDiscoverTv,
3373
+ episode: resolveEpisode,
3374
+ find: resolveFind,
3375
+ genres: resolveGenres,
3376
+ keyword: resolveKeyword,
3377
+ movie: resolveMovie,
3378
+ network: resolveNetwork,
3379
+ person: resolvePerson,
3380
+ rated: resolveRated,
3381
+ review: resolveReview,
3382
+ search: resolveSearch,
3383
+ season: resolveSeason,
3384
+ trending: resolveTrending,
3385
+ tv: resolveTv
3386
+ },
3387
+ RatedScreen: {
3388
+ __resolveType: obj => {
3389
+ return obj.media_type;
3390
+ }
3391
+ },
3392
+ Search: {
3393
+ __resolveType: obj => {
3394
+ return obj.media_type;
3395
+ }
3396
+ },
3397
+ Season: {
3398
+ ...makeFallbackFieldResolvers('Season', resolveSeason),
3399
+ cast: resolveSeasonCredits,
3400
+ crew: resolveSeasonCredits,
3401
+ episodeCount: resolveSeasonEpisodeCount,
3402
+ externalIds: resolveSeasonExternalIds,
3403
+ posters: resolveSeasonPosters,
3404
+ translations: resolveSeasonTranslations,
3405
+ videos: resolveSeasonVideos
3406
+ },
3407
+ Tv: {
3408
+ ...makeFallbackFieldResolvers('Tv', resolveTv),
3409
+ alternativeTitles: resolveTvAlternativeTitles,
3410
+ backdrops: resolveTvImages,
3411
+ cast: resolveTvCredits,
3412
+ contentRatings: resolveTvContentRatings,
3413
+ crew: resolveTvCredits,
3414
+ episodeGroups: resolveTvEpisodeGroups,
3415
+ externalIds: resolveTvExternalIds,
3416
+ keywords: resolveTvKeywords,
3417
+ logos: resolveTvImages,
3418
+ posters: resolveTvImages,
3419
+ recommendations: resolveTvRecommendations,
3420
+ reviews: resolveTvReviews,
3421
+ similarTvShows: resolveTvSimilarTvShows,
3422
+ translations: resolveTvTranslations,
3423
+ videos: resolveTvVideos,
3424
+ watchProviders: resolveTvWatchProviders
3425
+ },
3426
+ Video: {
3427
+ type: resolveVideoType
3428
+ }
3429
+ };
3430
+
3431
+ export { defaultFieldResolver, resolvers };
3432
+ //# sourceMappingURL=index.mjs.map