@tmdb-graphql-api/resolvers 0.1.2-unstable.0 → 0.1.2-unstable.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/dist/cjs/index.cjs +1 -1
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/esm/index.mjs +1 -1
  4. package/dist/esm/index.mjs.map +1 -1
  5. package/dist/production.analysis.txt +376 -376
  6. package/dist/types/cjs/helpers/buildArgsResolver.d.cts +1 -1
  7. package/dist/types/cjs/helpers/buildArgsResolver.d.cts.map +1 -1
  8. package/dist/types/cjs/helpers/buildNoObjArgsResolver.d.cts.map +1 -1
  9. package/dist/types/cjs/helpers/buildObjArgsResolver.d.cts.map +1 -1
  10. package/dist/types/cjs/helpers/buildObjResolver.d.cts.map +1 -1
  11. package/dist/types/cjs/queries/configuration.d.cts.map +1 -1
  12. package/dist/types/cjs/queries/movieAlternativeTitles.d.cts.map +1 -1
  13. package/dist/types/cjs/queries/movieReviews.d.cts.map +1 -1
  14. package/dist/types/cjs/types.d.cts +6 -5
  15. package/dist/types/cjs/types.d.cts.map +1 -1
  16. package/dist/types/esm/helpers/buildArgsResolver.d.ts +1 -1
  17. package/dist/types/esm/helpers/buildArgsResolver.d.ts.map +1 -1
  18. package/dist/types/esm/helpers/buildNoObjArgsResolver.d.ts.map +1 -1
  19. package/dist/types/esm/helpers/buildObjArgsResolver.d.ts.map +1 -1
  20. package/dist/types/esm/helpers/buildObjResolver.d.ts.map +1 -1
  21. package/dist/types/esm/queries/configuration.d.ts.map +1 -1
  22. package/dist/types/esm/queries/movieAlternativeTitles.d.ts.map +1 -1
  23. package/dist/types/esm/queries/movieReviews.d.ts.map +1 -1
  24. package/dist/types/esm/types.d.ts +6 -5
  25. package/dist/types/esm/types.d.ts.map +1 -1
  26. package/dist/types/tsconfig.build.tsbuildinfo +1 -1
  27. package/package.json +11 -11
  28. package/src/helpers/buildArgsResolver.ts +17 -15
  29. package/src/helpers/buildNoObjArgsResolver.ts +12 -11
  30. package/src/helpers/buildObjArgsResolver.ts +29 -14
  31. package/src/helpers/buildObjResolver.ts +14 -13
  32. package/src/queries/certifications.test.ts +4 -1
  33. package/src/queries/certifications.ts +2 -2
  34. package/src/queries/collection.test.ts +4 -1
  35. package/src/queries/collection.ts +2 -2
  36. package/src/queries/collectionImages.test.ts +4 -1
  37. package/src/queries/collectionImages.ts +2 -2
  38. package/src/queries/collectionTranslations.test.ts +4 -1
  39. package/src/queries/collectionTranslations.ts +2 -2
  40. package/src/queries/company.test.ts +4 -1
  41. package/src/queries/company.ts +2 -2
  42. package/src/queries/companyAlternativeNames.test.ts +4 -1
  43. package/src/queries/companyAlternativeNames.ts +2 -2
  44. package/src/queries/companyLogos.test.ts +4 -1
  45. package/src/queries/companyLogos.ts +2 -2
  46. package/src/queries/configuration.test.ts +4 -1
  47. package/src/queries/configuration.ts +2 -6
  48. package/src/queries/configurationCountries.test.ts +4 -1
  49. package/src/queries/configurationCountries.ts +2 -2
  50. package/src/queries/configurationJobs.test.ts +4 -1
  51. package/src/queries/configurationJobs.ts +2 -2
  52. package/src/queries/configurationLanguages.test.ts +4 -1
  53. package/src/queries/configurationLanguages.ts +2 -2
  54. package/src/queries/configurationPrimaryTranslations.test.ts +4 -1
  55. package/src/queries/configurationPrimaryTranslations.ts +2 -2
  56. package/src/queries/configurationTimezones.test.ts +4 -1
  57. package/src/queries/configurationTimezones.ts +2 -2
  58. package/src/queries/credit.test.ts +4 -1
  59. package/src/queries/credit.ts +2 -2
  60. package/src/queries/discoverMovies.test.ts +9 -3
  61. package/src/queries/discoverMovies.ts +2 -2
  62. package/src/queries/discoverTv.test.ts +9 -3
  63. package/src/queries/discoverTv.ts +2 -2
  64. package/src/queries/episode.test.ts +4 -1
  65. package/src/queries/episode.ts +2 -2
  66. package/src/queries/episodeCredits.test.ts +4 -1
  67. package/src/queries/episodeCredits.ts +2 -2
  68. package/src/queries/episodeExternalIds.test.ts +4 -1
  69. package/src/queries/episodeExternalIds.ts +2 -2
  70. package/src/queries/episodeStills.test.ts +4 -1
  71. package/src/queries/episodeStills.ts +2 -2
  72. package/src/queries/episodeTranslations.test.ts +4 -1
  73. package/src/queries/episodeTranslations.ts +2 -2
  74. package/src/queries/episodeVideos.test.ts +4 -1
  75. package/src/queries/episodeVideos.ts +2 -2
  76. package/src/queries/find.test.ts +4 -1
  77. package/src/queries/find.ts +2 -2
  78. package/src/queries/genres.test.ts +4 -1
  79. package/src/queries/genres.ts +2 -2
  80. package/src/queries/keyword.test.ts +4 -1
  81. package/src/queries/keyword.ts +2 -2
  82. package/src/queries/movie.test.ts +4 -1
  83. package/src/queries/movie.ts +2 -2
  84. package/src/queries/movieAlternativeTitles.test.ts +4 -1
  85. package/src/queries/movieAlternativeTitles.ts +3 -2
  86. package/src/queries/movieCredits.test.ts +4 -1
  87. package/src/queries/movieCredits.ts +2 -2
  88. package/src/queries/movieExternalIds.test.ts +4 -1
  89. package/src/queries/movieExternalIds.ts +2 -2
  90. package/src/queries/movieImages.test.ts +4 -1
  91. package/src/queries/movieImages.ts +2 -2
  92. package/src/queries/movieKeywords.test.ts +4 -1
  93. package/src/queries/movieKeywords.ts +2 -2
  94. package/src/queries/movieRecommendations.test.ts +5 -2
  95. package/src/queries/movieRecommendations.ts +2 -2
  96. package/src/queries/movieReleaseDates.test.ts +4 -1
  97. package/src/queries/movieReleaseDates.ts +2 -2
  98. package/src/queries/movieReviews.test.ts +9 -4
  99. package/src/queries/movieReviews.ts +3 -2
  100. package/src/queries/movieSimilarMovies.test.ts +5 -2
  101. package/src/queries/movieSimilarMovies.ts +2 -2
  102. package/src/queries/movieTranslations.test.ts +4 -1
  103. package/src/queries/movieTranslations.ts +2 -2
  104. package/src/queries/movieVideos.test.ts +4 -1
  105. package/src/queries/movieVideos.ts +2 -2
  106. package/src/queries/movieWatchProviders.test.ts +4 -1
  107. package/src/queries/movieWatchProviders.ts +2 -2
  108. package/src/queries/network.test.ts +4 -1
  109. package/src/queries/network.ts +2 -2
  110. package/src/queries/networkAlternativeNames.test.ts +4 -1
  111. package/src/queries/networkAlternativeNames.ts +2 -2
  112. package/src/queries/networkLogos.test.ts +4 -1
  113. package/src/queries/networkLogos.ts +2 -2
  114. package/src/queries/person.test.ts +4 -1
  115. package/src/queries/person.ts +2 -2
  116. package/src/queries/personCombinedCredits.test.ts +4 -1
  117. package/src/queries/personCombinedCredits.ts +2 -2
  118. package/src/queries/personExternalIds.test.ts +4 -1
  119. package/src/queries/personExternalIds.ts +2 -2
  120. package/src/queries/personMovieCredits.test.ts +4 -1
  121. package/src/queries/personMovieCredits.ts +2 -2
  122. package/src/queries/personProfiles.test.ts +4 -1
  123. package/src/queries/personProfiles.ts +2 -2
  124. package/src/queries/personTranslations.test.ts +4 -1
  125. package/src/queries/personTranslations.ts +2 -2
  126. package/src/queries/personTvCredits.test.ts +4 -1
  127. package/src/queries/personTvCredits.ts +2 -2
  128. package/src/queries/rated.test.ts +7 -4
  129. package/src/queries/rated.ts +3 -3
  130. package/src/queries/review.test.ts +4 -1
  131. package/src/queries/review.ts +2 -2
  132. package/src/queries/search.test.ts +5 -2
  133. package/src/queries/search.ts +2 -2
  134. package/src/queries/season.test.ts +4 -1
  135. package/src/queries/season.ts +2 -2
  136. package/src/queries/seasonCredits.test.ts +4 -1
  137. package/src/queries/seasonCredits.ts +2 -2
  138. package/src/queries/seasonExternalIds.test.ts +4 -1
  139. package/src/queries/seasonExternalIds.ts +2 -2
  140. package/src/queries/seasonPosters.test.ts +4 -1
  141. package/src/queries/seasonPosters.ts +2 -2
  142. package/src/queries/seasonTranslations.test.ts +4 -1
  143. package/src/queries/seasonTranslations.ts +2 -2
  144. package/src/queries/seasonVideos.test.ts +4 -1
  145. package/src/queries/seasonVideos.ts +2 -2
  146. package/src/queries/trending.test.ts +5 -2
  147. package/src/queries/trending.ts +2 -2
  148. package/src/queries/tv.test.ts +4 -1
  149. package/src/queries/tv.ts +2 -2
  150. package/src/queries/tvAlternativeTitles.test.ts +4 -1
  151. package/src/queries/tvAlternativeTitles.ts +2 -2
  152. package/src/queries/tvContentRatings.test.ts +4 -1
  153. package/src/queries/tvContentRatings.ts +2 -2
  154. package/src/queries/tvCredits.test.ts +4 -1
  155. package/src/queries/tvCredits.ts +2 -2
  156. package/src/queries/tvEpisodeGroups.test.ts +4 -1
  157. package/src/queries/tvEpisodeGroups.ts +2 -2
  158. package/src/queries/tvExternalIds.test.ts +4 -1
  159. package/src/queries/tvExternalIds.ts +2 -2
  160. package/src/queries/tvImages.test.ts +4 -1
  161. package/src/queries/tvImages.ts +2 -2
  162. package/src/queries/tvKeywords.test.ts +4 -1
  163. package/src/queries/tvKeywords.ts +2 -2
  164. package/src/queries/tvRecommendations.test.ts +5 -2
  165. package/src/queries/tvRecommendations.ts +2 -2
  166. package/src/queries/tvReviews.test.ts +5 -2
  167. package/src/queries/tvReviews.ts +2 -2
  168. package/src/queries/tvSimilarTvShows.test.ts +5 -2
  169. package/src/queries/tvSimilarTvShows.ts +2 -2
  170. package/src/queries/tvTranslations.test.ts +4 -1
  171. package/src/queries/tvTranslations.ts +2 -2
  172. package/src/queries/tvVideos.test.ts +4 -1
  173. package/src/queries/tvVideos.ts +2 -2
  174. package/src/queries/tvWatchProviders.test.ts +4 -1
  175. package/src/queries/tvWatchProviders.ts +2 -2
  176. package/src/types.ts +4 -5
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tmdb-graphql-api/resolvers",
3
3
  "description": "The TMDB GraphQL resolvers module.",
4
- "version": "0.1.2-unstable.0",
4
+ "version": "0.1.2-unstable.10",
5
5
  "author": "Dylan Aubrey",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/badbatch/themoviedb-graphql-api",
@@ -32,16 +32,16 @@
32
32
  "@cachemap/core": "^5.2.7",
33
33
  "@cachemap/map": "^5.0.9",
34
34
  "@cachemap/reaper": "^5.1.3",
35
- "@graphql-box/connection-resolver": "^5.4.6",
36
- "@graphql-box/core": "^5.4.2",
37
- "cacheability": "^4.0.20",
38
- "getta": "^1.0.10",
35
+ "@graphql-box/connection-resolver": "^5.4.11",
36
+ "@graphql-box/core": "^5.4.4",
37
+ "cacheability": "^4.0.27",
38
+ "getta": "^1.0.14",
39
39
  "js-base64": "^3.6.0",
40
40
  "query-string": "^8.1.0",
41
41
  "type-fest": "^4.37.0",
42
42
  "winston": "^3.17.0",
43
- "@tmdb-graphql-api/rest-client": "0.0.11-unstable.0",
44
- "@tmdb-graphql-api/schema": "0.1.1-unstable.0"
43
+ "@tmdb-graphql-api/rest-client": "0.0.11-unstable.6",
44
+ "@tmdb-graphql-api/schema": "0.1.1-unstable.1"
45
45
  },
46
46
  "peerDependencies": {
47
47
  "@babel/runtime": "<8",
@@ -51,14 +51,14 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "@babel/runtime": "^7.23.2",
54
- "@graphql-box/helpers": "^5.4.2",
54
+ "@graphql-box/helpers": "^5.4.4",
55
55
  "@jest/globals": "^29.7.0",
56
56
  "@types/lodash-es": "^4.14.191",
57
57
  "core-js": "^3.33.1",
58
- "cts-types": "^0.0.6",
58
+ "cts-types": "^0.0.8",
59
59
  "del-cli": "^5.1.0",
60
- "fetch-mocked": "^0.0.21",
61
- "graphql": "^16.8.1",
60
+ "fetch-mocked": "^0.0.27",
61
+ "graphql": "^16.10.0",
62
62
  "lodash-es": "^4.17.21",
63
63
  "@tmdb-graphql-api/test-utils": "0.1.0"
64
64
  },
@@ -3,7 +3,7 @@ import { type Context } from '../types.ts';
3
3
 
4
4
  export const buildArgsResolver =
5
5
  <Args extends object, Data>(
6
- field: string,
6
+ fieldName: string,
7
7
  callback: (
8
8
  args: Args,
9
9
  ctx: Context,
@@ -11,27 +11,29 @@ export const buildArgsResolver =
11
11
  ) => Promise<{ data?: Data; errors?: Error[]; headers: Headers; source?: string }>
12
12
  ) =>
13
13
  async (_obj: undefined, args: Args, ctx: Context, info: GraphQLResolveInfo) => {
14
- const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
14
+ const { logger, setCacheMetadata } = ctx;
15
15
  const { fieldNodes } = info;
16
16
 
17
- const childLogger = logger.child({
18
- args,
19
- field,
20
- operationName,
21
- requestID,
22
- tmdbGuestSessionId,
23
- });
17
+ const newCtx = {
18
+ ...ctx,
19
+ data: {
20
+ ...ctx.data,
21
+ args,
22
+ fieldPath: fieldName,
23
+ },
24
+ };
24
25
 
25
- childLogger.info(`Resolving ${field}`);
26
- const { data, errors, headers, source = 'api' } = await callback(args, ctx, info);
26
+ const childLogger = logger.child(newCtx.data);
27
+
28
+ childLogger.info(`Resolving ${fieldName} ${JSON.stringify(args)}`, { logEntryName: 'RESOLVER_START' });
29
+ const { data, errors, headers } = await callback(args, newCtx, info);
27
30
 
28
31
  if (errors?.length) {
29
- const message = `Failed to resolve ${field}`;
30
- childLogger.error(message, { errors });
32
+ const message = `Failed to resolve ${fieldName}`;
33
+ childLogger.error(message, { errors, logEntryName: 'RESOLVER_FAILED' });
31
34
  throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
32
35
  }
33
36
 
34
- childLogger.info(`Successfully resolved ${field} from ${source}`);
35
- setCacheMetadata(field, headers);
37
+ setCacheMetadata(fieldName, headers);
36
38
  return data;
37
39
  };
@@ -10,27 +10,28 @@ export const buildNoObjArgsResolver =
10
10
  ) => Promise<{ data?: Data; errors?: Error[]; headers: Headers; source?: string }>
11
11
  ) =>
12
12
  async (obj: Obj | undefined, _args: undefined, ctx: Context, info: GraphQLResolveInfo) => {
13
- const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
13
+ const { logger, setCacheMetadata } = ctx;
14
14
  const { fieldName, fieldNodes } = info;
15
15
  const fieldPath = obj ? `${parentFieldName}.${fieldName}` : parentFieldName;
16
16
 
17
- const childLogger = logger.child({
18
- fieldPath,
19
- operationName,
20
- requestID,
21
- tmdbGuestSessionId,
22
- });
17
+ const newCtx = {
18
+ ...ctx,
19
+ data: {
20
+ ...ctx.data,
21
+ fieldPath,
22
+ },
23
+ };
23
24
 
24
- childLogger.info(`Resolving ${fieldPath}`);
25
- const { data, errors, headers } = await callback(ctx, info);
25
+ const childLogger = logger.child(newCtx.data);
26
+ childLogger.info(`Resolving ${fieldPath}`, { logEntryName: 'RESOLVER_START' });
27
+ const { data, errors, headers } = await callback(newCtx, info);
26
28
 
27
29
  if (errors?.length) {
28
30
  const message = `Failed to resolve ${fieldPath}`;
29
- childLogger.error(message, { errors });
31
+ childLogger.error(message, { errors, logEntryName: 'RESOLVER_FAILED' });
30
32
  throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
31
33
  }
32
34
 
33
- childLogger.info(`Successfully resolved ${fieldPath} from api`);
34
35
  setCacheMetadata(fieldPath, headers);
35
36
  return data;
36
37
  };
@@ -12,29 +12,44 @@ export const buildObjArgsResolver =
12
12
  ) => Promise<{ data?: Data; errors?: Error[]; headers?: Headers; source?: string }>
13
13
  ) =>
14
14
  async (obj: Obj | undefined, args: Args, ctx: Context, info: GraphQLResolveInfo) => {
15
- const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
15
+ const { logger, setCacheMetadata } = ctx;
16
16
  const { fieldName, fieldNodes } = info;
17
17
  const fieldPath = obj ? `${parentFieldName}.${fieldName}` : parentFieldName;
18
18
 
19
- const childLogger = logger.child({
20
- args,
21
- fieldPath,
22
- operationName,
23
- requestID,
24
- tmdbGuestSessionId,
25
- });
19
+ const newCtx = {
20
+ ...ctx,
21
+ data: {
22
+ ...ctx.data,
23
+ args,
24
+ fieldPath,
25
+ },
26
+ };
26
27
 
27
- childLogger.info(`Resolving ${fieldPath}`);
28
- const { data, errors, headers, source = 'api' } = await callback(obj, args, ctx, info);
28
+ const childLogger = logger.child(newCtx.data);
29
+ const loggingEnabled = !obj || fieldName === 'id';
30
+ const id = obj && 'id' in obj && obj.id ? obj.id : 'id' in args ? args.id : undefined;
31
+
32
+ const enrichLogMessage = (message: string) => {
33
+ const enrichedMessage = `${message} ${parentFieldName}`;
34
+ return id ? `${enrichedMessage} ${String(id)}` : enrichedMessage;
35
+ };
36
+
37
+ if (loggingEnabled) {
38
+ childLogger.info(enrichLogMessage('Resolving'), { logEntryName: 'RESOLVER_START' });
39
+ }
40
+
41
+ const { data, errors, headers } = await callback(obj, args, newCtx, info);
29
42
 
30
43
  if (errors?.length) {
31
- const message = `Failed to resolve ${fieldPath}`;
32
- childLogger.error(message, { errors });
44
+ const message = enrichLogMessage('Failed to resolve');
45
+
46
+ if (loggingEnabled) {
47
+ childLogger.error(message, { errors, logEntryName: 'RESOLVER_FAILED' });
48
+ }
49
+
33
50
  throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
34
51
  }
35
52
 
36
- childLogger.info(`Successfully resolved ${fieldPath} from ${source}`);
37
-
38
53
  if (headers) {
39
54
  setCacheMetadata(fieldPath, headers);
40
55
  }
@@ -11,17 +11,20 @@ export const buildObjResolver =
11
11
  ) => Promise<{ data?: Data; errors?: Error[]; headers?: Headers; source?: string }>
12
12
  ) =>
13
13
  async (obj: Obj | undefined, _args: undefined, ctx: Context, info: GraphQLResolveInfo) => {
14
- const { logger, operationName, requestID, setCacheMetadata, tmdbGuestSessionId } = ctx;
14
+ const { logger, setCacheMetadata } = ctx;
15
15
  const { fieldName, fieldNodes } = info;
16
16
  const fieldPath = `${parentFieldName}.${fieldName}`;
17
17
 
18
- const childLogger = logger.child({
19
- fieldPath,
20
- operationName,
21
- parentFieldId: obj?.id,
22
- requestID,
23
- tmdbGuestSessionId,
24
- });
18
+ const newCtx = {
19
+ ...ctx,
20
+ data: {
21
+ ...ctx.data,
22
+ fieldPath,
23
+ parentFieldId: obj?.id,
24
+ },
25
+ };
26
+
27
+ const childLogger = logger.child(newCtx.data);
25
28
 
26
29
  if (!obj) {
27
30
  const message = `Required ${parentFieldName} node missing`;
@@ -29,17 +32,15 @@ export const buildObjResolver =
29
32
  throw new GraphQLError(message, { nodes: fieldNodes });
30
33
  }
31
34
 
32
- childLogger.info(`Resolving ${fieldPath}`);
33
- const { data, errors, headers, source = 'api' } = await callback(obj, ctx, info);
35
+ childLogger.info(`Resolving ${fieldPath}`, { logEntryName: 'RESOLVER_START' });
36
+ const { data, errors, headers } = await callback(obj, newCtx, info);
34
37
 
35
38
  if (errors?.length) {
36
39
  const message = `Failed to resolve ${fieldPath}`;
37
- childLogger.error(message, { errors });
40
+ childLogger.error(message, { errors, logEntryName: 'RESOLVER_FAILED' });
38
41
  throw new GraphQLError(message, { nodes: fieldNodes, originalError: errors[0] });
39
42
  }
40
43
 
41
- childLogger.info(`Successfully resolved ${fieldPath} from ${source}`);
42
-
43
44
  if (headers) {
44
45
  setCacheMetadata(fieldPath, headers);
45
46
  }
@@ -15,10 +15,13 @@ const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveCertifications >', () => {
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const info = {} as GraphQLResolveInfo;
@@ -7,13 +7,13 @@ export const resolveCertifications = buildArgsResolver<QueryCertificationsArgs,
7
7
  CERTIFICATIONS,
8
8
  async (args, ctx) => {
9
9
  const { screenType } = args;
10
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
10
+ const { data: ctxData, restClient } = ctx;
11
11
 
12
12
  const { data, errors } = await restClient.certifications<RawCertifications>(
13
13
  {
14
14
  pathTemplateData: { type: screenType.toLowerCase() },
15
15
  },
16
- { requestID, tmdbGuestSessionId }
16
+ ctxData
17
17
  );
18
18
 
19
19
  return {
@@ -15,10 +15,13 @@ describe('resolveCollection >', () => {
15
15
  const id = 10;
16
16
 
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const info = {} as GraphQLResolveInfo;
@@ -10,7 +10,7 @@ export const resolveCollection = buildObjArgsResolver<
10
10
  RawCollection | RawCollection[keyof RawCollection]
11
11
  >(COLLECTION, async (obj, args, ctx, info) => {
12
12
  const id = obj?.id ?? args.id;
13
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
13
+ const { data: ctxData, restClient } = ctx;
14
14
  const { fieldName } = info;
15
15
  const typedFieldName = snakeCase(fieldName) as keyof RawCollection;
16
16
 
@@ -25,7 +25,7 @@ export const resolveCollection = buildObjArgsResolver<
25
25
  {
26
26
  pathTemplateData: { id },
27
27
  },
28
- { requestID, tmdbGuestSessionId }
28
+ ctxData
29
29
  );
30
30
 
31
31
  return {
@@ -15,10 +15,13 @@ const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveCollectionImages >', () => {
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  beforeEach(() => {
@@ -6,14 +6,14 @@ export const resolveCollectionImages = buildObjResolver<
6
6
  RawCollection,
7
7
  RawCollectionImages['backdrops'] | RawCollectionImages['posters']
8
8
  >(COLLECTION, async (obj, ctx, info) => {
9
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
9
+ const { data: ctxData, restClient } = ctx;
10
10
  const { fieldName } = info;
11
11
 
12
12
  const { data, errors, headers } = await restClient.collection<RawCollectionImages>(
13
13
  {
14
14
  pathTemplateData: { id: obj.id, type: IMAGES },
15
15
  },
16
- { requestID, tmdbGuestSessionId }
16
+ ctxData
17
17
  );
18
18
 
19
19
  const typedFieldName = fieldName as 'backdrops' | 'posters';
@@ -15,10 +15,13 @@ const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveCollectionTranslations >', () => {
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const resolveInfo = buildResolveInfoArgument(
@@ -5,13 +5,13 @@ import { type RawCollection, type RawCollectionTranslations } from '../types.ts'
5
5
  export const resolveCollectionTranslations = buildObjResolver<RawCollection, RawCollectionTranslations['translations']>(
6
6
  COLLECTION,
7
7
  async (obj, ctx) => {
8
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
8
+ const { data: ctxData, restClient } = ctx;
9
9
 
10
10
  const { data, errors, headers } = await restClient.collection<RawCollectionTranslations>(
11
11
  {
12
12
  pathTemplateData: { id: obj.id, type: TRANSLATIONS },
13
13
  },
14
- { requestID, tmdbGuestSessionId }
14
+ ctxData
15
15
  );
16
16
 
17
17
  return {
@@ -15,10 +15,13 @@ describe('resolveCompany >', () => {
15
15
  const id = 2;
16
16
 
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const info = {} as GraphQLResolveInfo;
@@ -10,7 +10,7 @@ export const resolveCompany = buildObjArgsResolver<
10
10
  RawCompany | RawCompany[keyof RawCompany]
11
11
  >(COMPANY, async (obj, args, ctx, info) => {
12
12
  const id = obj?.id ?? args.id;
13
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
13
+ const { data: ctxData, restClient } = ctx;
14
14
  const { fieldName } = info;
15
15
  const typedFieldName = snakeCase(fieldName) as keyof RawCompany;
16
16
 
@@ -25,7 +25,7 @@ export const resolveCompany = buildObjArgsResolver<
25
25
  {
26
26
  pathTemplateData: { id },
27
27
  },
28
- { requestID, tmdbGuestSessionId }
28
+ ctxData
29
29
  );
30
30
 
31
31
  return {
@@ -16,10 +16,13 @@ const mockedFetch = mockFetch(jest.fn);
16
16
 
17
17
  describe('resolveCompanyAlternativeNames >', () => {
18
18
  const context = {
19
+ data: {
20
+ requestID: 'mockRequestID',
21
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
22
+ },
19
23
  logger: createMockLogger(jest.fn),
20
24
  restClient: createRestClient(),
21
25
  setCacheMetadata: jest.fn(),
22
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
23
26
  } as unknown as Context;
24
27
 
25
28
  const apiFieldName = snakeCase(ALTERNATIVE_NAMES);
@@ -6,13 +6,13 @@ import { type RawCollection, type RawCompanyAlternativeNames } from '../types.ts
6
6
  export const resolveCompanyAlternativeNames = buildObjResolver<RawCollection, RawCompanyAlternativeNames['results']>(
7
7
  COMPANY,
8
8
  async (obj, ctx) => {
9
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
9
+ const { data: ctxData, restClient } = ctx;
10
10
 
11
11
  const { data, errors, headers } = await restClient.company<RawCompanyAlternativeNames>(
12
12
  {
13
13
  pathTemplateData: { id: obj.id, type: snakeCase(ALTERNATIVE_NAMES) },
14
14
  },
15
- { requestID, tmdbGuestSessionId }
15
+ ctxData
16
16
  );
17
17
 
18
18
  return {
@@ -15,10 +15,13 @@ const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveCompanyImages >', () => {
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const resolveInfo = buildResolveInfoArgument(
@@ -3,13 +3,13 @@ import { buildObjResolver } from '../helpers/buildObjResolver.ts';
3
3
  import type { RawCompany, RawCompanyLogos } from '../types.ts';
4
4
 
5
5
  export const resolveCompanyLogos = buildObjResolver<RawCompany, RawCompanyLogos['logos']>(COMPANY, async (obj, ctx) => {
6
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
6
+ const { data: ctxData, restClient } = ctx;
7
7
 
8
8
  const { data, errors, headers } = await restClient.company<RawCompanyLogos>(
9
9
  {
10
10
  pathTemplateData: { id: obj.id, type: IMAGES },
11
11
  },
12
- { requestID, tmdbGuestSessionId }
12
+ ctxData
13
13
  );
14
14
 
15
15
  return {
@@ -13,10 +13,13 @@ const mockedFetch = mockFetch(jest.fn);
13
13
 
14
14
  describe('resolveConfiguration >', () => {
15
15
  const context = {
16
+ data: {
17
+ requestID: 'mockRequestID',
18
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
19
+ },
16
20
  logger: createMockLogger(jest.fn),
17
21
  restClient: createRestClient(),
18
22
  setCacheMetadata: jest.fn(),
19
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
20
23
  } as unknown as Context;
21
24
 
22
25
  const info = {} as GraphQLResolveInfo;
@@ -3,12 +3,8 @@ import { buildNoObjArgsResolver } from '../helpers/buildNoObjArgsResolver.ts';
3
3
  import { type RawConfiguration } from '../types.ts';
4
4
 
5
5
  export const resolveConfiguration = buildNoObjArgsResolver<undefined, RawConfiguration>(CONFIGURATION, async ctx => {
6
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
7
-
8
- const { data, errors, headers } = await restClient.configuration<RawConfiguration>(undefined, {
9
- requestID,
10
- tmdbGuestSessionId,
11
- });
6
+ const { data: ctxData, restClient } = ctx;
7
+ const { data, errors, headers } = await restClient.configuration<RawConfiguration>(undefined, ctxData);
12
8
 
13
9
  return {
14
10
  data,
@@ -15,10 +15,13 @@ const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveConfigurationCountries >', () => {
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const resolveInfo = buildResolveInfoArgument(
@@ -5,13 +5,13 @@ import { type RawConfiguration, type RawConfigurationCountries } from '../types.
5
5
  export const resolveConfigurationCountries = buildNoObjArgsResolver<RawConfiguration, RawConfigurationCountries>(
6
6
  CONFIGURATION,
7
7
  async ctx => {
8
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
8
+ const { data: ctxData, restClient } = ctx;
9
9
 
10
10
  const { data, errors, headers } = await restClient.configuration<RawConfigurationCountries>(
11
11
  {
12
12
  pathTemplateData: { type: COUNTRIES },
13
13
  },
14
- { requestID, tmdbGuestSessionId }
14
+ ctxData
15
15
  );
16
16
 
17
17
  return {
@@ -15,10 +15,13 @@ const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveConfigurationJobs >', () => {
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const resolveInfo = buildResolveInfoArgument(
@@ -5,13 +5,13 @@ import { type RawConfiguration, type RawConfigurationJobs } from '../types.ts';
5
5
  export const resolveConfigurationJobs = buildNoObjArgsResolver<RawConfiguration, RawConfigurationJobs>(
6
6
  CONFIGURATION,
7
7
  async ctx => {
8
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
8
+ const { data: ctxData, restClient } = ctx;
9
9
 
10
10
  const { data, errors, headers } = await restClient.configuration<RawConfigurationJobs>(
11
11
  {
12
12
  pathTemplateData: { type: JOBS },
13
13
  },
14
- { requestID, tmdbGuestSessionId }
14
+ ctxData
15
15
  );
16
16
 
17
17
  return {
@@ -15,10 +15,13 @@ const mockedFetch = mockFetch(jest.fn);
15
15
 
16
16
  describe('resolveConfigurationLanguages >', () => {
17
17
  const context = {
18
+ data: {
19
+ requestID: 'mockRequestID',
20
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
21
+ },
18
22
  logger: createMockLogger(jest.fn),
19
23
  restClient: createRestClient(),
20
24
  setCacheMetadata: jest.fn(),
21
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
22
25
  } as unknown as Context;
23
26
 
24
27
  const resolveInfo = buildResolveInfoArgument(
@@ -5,13 +5,13 @@ import { type RawConfiguration, type RawConfigurationLanguages } from '../types.
5
5
  export const resolveConfigurationLanguages = buildNoObjArgsResolver<RawConfiguration, RawConfigurationLanguages>(
6
6
  CONFIGURATION,
7
7
  async ctx => {
8
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
8
+ const { data: ctxData, restClient } = ctx;
9
9
 
10
10
  const { data, errors, headers } = await restClient.configuration<RawConfigurationLanguages>(
11
11
  {
12
12
  pathTemplateData: { type: LANGUAGES },
13
13
  },
14
- { requestID, tmdbGuestSessionId }
14
+ ctxData
15
15
  );
16
16
 
17
17
  return {
@@ -16,10 +16,13 @@ const mockedFetch = mockFetch(jest.fn);
16
16
 
17
17
  describe('resolveConfigurationPrimaryTranslations >', () => {
18
18
  const context = {
19
+ data: {
20
+ requestID: 'mockRequestID',
21
+ tmdbGuestSessionId: 'mockTmdbGuestSessionId',
22
+ },
19
23
  logger: createMockLogger(jest.fn),
20
24
  restClient: createRestClient(),
21
25
  setCacheMetadata: jest.fn(),
22
- tmdbGuestSessionId: 'mock-tmdbGuestSessionId',
23
26
  } as unknown as Context;
24
27
 
25
28
  const resolveInfo = buildResolveInfoArgument(
@@ -7,13 +7,13 @@ export const resolveConfigurationPrimaryTranslations = buildNoObjArgsResolver<
7
7
  RawConfiguration,
8
8
  RawConfigurationPrimaryTranslations
9
9
  >(CONFIGURATION, async ctx => {
10
- const { requestID, restClient, tmdbGuestSessionId } = ctx;
10
+ const { data: ctxData, restClient } = ctx;
11
11
 
12
12
  const { data, errors, headers } = await restClient.configuration<RawConfigurationPrimaryTranslations>(
13
13
  {
14
14
  pathTemplateData: { type: snakeCase(PRIMARY_TRANSLATIONS) },
15
15
  },
16
- { requestID, tmdbGuestSessionId }
16
+ ctxData
17
17
  );
18
18
 
19
19
  return {