@tmdb-graphql-api/resolvers 0.0.11 → 0.0.12

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