@remkoj/optimizely-cms-nextjs 4.0.0 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -86,6 +86,15 @@ export type CreatePageOptions<LocaleEnum = SystemLocales, TParams extends Record
86
86
  * @returns The processed route
87
87
  */
88
88
  routeToParams: (route: Route) => TParams;
89
+ /**
90
+ * Takes the Next.JS route segments and try to transform it into an initial
91
+ * locale code, the default implementation will try to resolve the `lang`
92
+ * route segment using the channel definition.
93
+ *
94
+ * @param slugs The slugs to resolve
95
+ * @returns The resolved locale
96
+ */
97
+ paramsToLocale: (params?: TParams, channel?: ChannelDefinition) => string | undefined;
89
98
  };
90
99
  /**
91
100
  * Generate the React Server Side component and Next.JS functions needed to render an
@@ -6,7 +6,7 @@ import { RouteResolver } from '@remkoj/optimizely-graph-client/router';
6
6
  import { OptiCmsSchema } from '@remkoj/optimizely-graph-client/client';
7
7
  import { normalizeContentLinkWithLocale } from '@remkoj/optimizely-graph-client/utils';
8
8
  // React Support
9
- import { CmsContent, Utils, isDebug, getServerContext } from '@remkoj/optimizely-cms-react/rsc';
9
+ import { CmsContent, Utils, getServerContext } from '@remkoj/optimizely-cms-react/rsc';
10
10
  // Within package
11
11
  import { MetaDataResolver } from '../metadata.js';
12
12
  import { urlToPath, localeToGraphLocale } from './utils.js';
@@ -22,7 +22,16 @@ const CreatePageOptionDefaults = {
22
22
  client: getServerClient,
23
23
  routerFactory: (client) => new RouteResolver(client),
24
24
  propsToCmsPath: ({ params }) => buildRequestPath(params),
25
- routeToParams: (route) => { return { path: urlToPath(route.url), lang: route.locale }; }
25
+ routeToParams: (route) => { return { path: urlToPath(route.url), lang: route.locale }; },
26
+ paramsToLocale: (params, channel) => {
27
+ if (!channel)
28
+ return undefined;
29
+ const lang = params?.lang;
30
+ const toTest = Array.isArray(lang) ? lang.at(0) : lang;
31
+ if (!toTest)
32
+ return channel.defaultLocale;
33
+ return channel.slugToLocale(toTest.toString());
34
+ }
26
35
  };
27
36
  /**
28
37
  * Generate the React Server Side component and Next.JS functions needed to render an
@@ -35,7 +44,7 @@ const CreatePageOptionDefaults = {
35
44
  */
36
45
  export function createPage(factory, options) {
37
46
  // Build the global/shared configuration for the Optimizely CMS Page
38
- const { getContentByPath, client: clientFactory, channel, propsToCmsPath, routeToParams, routerFactory } = {
47
+ const { getContentByPath, client: clientFactory, channel, propsToCmsPath, routeToParams, routerFactory, paramsToLocale } = {
39
48
  ...CreatePageOptionDefaults,
40
49
  ...options
41
50
  };
@@ -54,28 +63,33 @@ export function createPage(factory, options) {
54
63
  };
55
64
  const pageDefintion = {
56
65
  generateStaticParams: async () => (await router.getRoutes()).map(r => routeToParams(r)),
57
- generateMetadata: async (props, parent) => {
58
- // Read variables from request
66
+ generateMetadata: async ({ params, searchParams }, parent) => {
67
+ // Get context
68
+ const context = getServerContext();
69
+ context.setOptimizelyGraphClient(globalClient);
70
+ context.setComponentFactory(factory);
71
+ // Read variables from request
59
72
  const siteId = channel ? (globalClient.currentOptiCmsSchema == OptiCmsSchema.CMS12 ? channel.id : channel.defaultDomain) : undefined;
60
- const requestPath = propsToCmsPath(props);
73
+ const requestPath = propsToCmsPath({ params, searchParams });
61
74
  if (!requestPath)
62
75
  return Promise.resolve({});
63
- if (isDebug())
64
- console.log(`⚪ [CmsPage.generateMetadata] Processed Next.JS route: ${JSON.stringify(props)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath, siteId })}`);
76
+ const initialLocale = paramsToLocale(params, channel);
77
+ if (initialLocale)
78
+ context.setLocale(initialLocale);
79
+ // Debug output
80
+ if (context.isDebug)
81
+ console.log(`⚪ [CmsPage.generateMetadata] Processed Next.JS route: ${JSON.stringify(params)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath, siteId })}`);
65
82
  // Resolve the route to a content link
66
83
  const routeInfo = await getInfoByPath(requestPath, siteId);
67
84
  if (!routeInfo) {
68
- if (isDebug())
85
+ if (context.isDebug)
69
86
  console.log('⚪ [CmsPage.generateMetadata] No data received');
70
87
  return Promise.resolve({});
71
88
  }
72
89
  const [route, contentLink, contentType, graphLocale] = routeInfo;
73
- if (isDebug())
90
+ if (context.isDebug)
74
91
  console.log(`⚪ [CmsPage.generateMetadata] Retrieved content info:`, route);
75
- // Update context
76
- const context = getServerContext();
77
- context.setOptimizelyGraphClient(globalClient);
78
- context.setComponentFactory(factory);
92
+ // Update context from route
79
93
  context.setLocale(route.locale);
80
94
  // Fetch the metadata based upon the actual content type and resolve parent
81
95
  const metaResolver = new MetaDataResolver(globalClient);
@@ -83,7 +97,7 @@ export function createPage(factory, options) {
83
97
  metaResolver.resolve(factory, contentLink, contentType, graphLocale),
84
98
  parent
85
99
  ]);
86
- if (isDebug())
100
+ if (context.isDebug)
87
101
  console.log(`⚪ [CmsPage.generateMetadata] Component yielded metadata:`, pageMetadata);
88
102
  // Make sure merging of objects goes correctly
89
103
  for (const metaKey of Object.getOwnPropertyNames(pageMetadata)) {
@@ -98,35 +112,39 @@ export function createPage(factory, options) {
98
112
  }
99
113
  return pageMetadata;
100
114
  },
101
- CmsPage: async (props) => {
115
+ CmsPage: async ({ params, searchParams }) => {
102
116
  // Prepare the context
103
117
  const context = getServerContext();
104
118
  context.setOptimizelyGraphClient(globalClient);
105
119
  context.setComponentFactory(factory);
106
120
  // Analyze the Next.JS Request props
107
- const requestPath = propsToCmsPath(props);
108
- if (isDebug())
109
- console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(props)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath })}`);
121
+ const requestPath = propsToCmsPath({ params, searchParams });
122
+ if (context.isDebug)
123
+ console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(params)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath })}`);
110
124
  // If we don't have the path, or the path is an internal Next.js route reject it.
111
125
  if (!requestPath || requestPath.startsWith('/_next/'))
112
126
  return notFound();
127
+ // Determine the initial locale
128
+ const initialLocale = paramsToLocale(params, channel);
129
+ if (initialLocale)
130
+ context.setLocale(initialLocale);
113
131
  // Resolve the content based upon the path
114
- const pathForRequest = requestPath.endsWith("/") ? [requestPath.substring(0, requestPath.length - 1), requestPath] : [requestPath, requestPath + '/'];
132
+ const pathForRequest = (requestPath.endsWith("/") ? [requestPath.substring(0, requestPath.length - 1), requestPath] : [requestPath, requestPath + '/']).filter(x => x.length >= 1);
115
133
  const requestVars = {
116
134
  path: pathForRequest,
117
135
  siteId: channel ? (globalClient.currentOptiCmsSchema == OptiCmsSchema.CMS12 ? channel.id : getPrimaryURL(channel).href) : undefined
118
136
  };
119
- if (isDebug())
120
- console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(props)} => getContentByPath Variables: ${JSON.stringify(requestVars)}`);
137
+ if (context.isDebug)
138
+ console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(params)} => getContentByPath Variables: ${JSON.stringify(requestVars)}`);
121
139
  const response = await getContentByPath(globalClient, requestVars);
122
140
  const info = (response?.content?.items ?? [])[0];
123
141
  if (!info) {
124
- if (isDebug()) {
142
+ if (context.isDebugOrDevelopment) {
125
143
  console.error(`🔴 [CmsPage] Unable to load content for ${requestPath}, data received: `, response);
126
144
  }
127
145
  return notFound();
128
146
  }
129
- else if (isDebug() && (response?.content?.items ?? []).length > 1) {
147
+ else if (context.isDebugOrDevelopment && (response?.content?.items ?? []).length > 1) {
130
148
  console.warn(`🟠 [CmsPage] Resolving content for ${requestPath}, yielded ${(response?.content?.items ?? []).length} items, picked:`, info);
131
149
  }
132
150
  // Extract the type & link
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":"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"}
@@ -1,27 +1,94 @@
1
- import { type NextRequest, NextResponse } from "next/server.js";
2
- import { revalidatePath } from "next/cache.js";
3
- import { type IOptiGraphClient, type OptimizelyGraphConfig, type ClientFactory } from "@remkoj/optimizely-graph-client";
4
- type PublishScopes = NonNullable<Parameters<typeof revalidatePath>[1]>;
5
- type OptiGraphClientFactory = IOptiGraphClient | OptimizelyGraphConfig | ClientFactory;
6
- type PublishApiOptions = {
7
- /**
8
- * The list of paths that your implementation uses with Optimizely CMS managed
9
- * content
1
+ import { type NextRequest, NextResponse } from 'next/server.js';
2
+ import { revalidatePath, revalidateTag } from "next/cache.js";
3
+ import { type ClientFactory, OptiCmsSchema, RouteResolver } from '@remkoj/optimizely-graph-client';
4
+ export { type NextRequest, NextResponse } from 'next/server.js';
5
+ export type PublishApiHandler = (req: NextRequest) => Promise<NextResponse<PublishApiResponse>> | NextResponse<PublishApiResponse>;
6
+ export type PublishScopes = NonNullable<Parameters<typeof revalidatePath>[1]>;
7
+ export type PublishHookData = {
8
+ timestamp: string;
9
+ tenantId: string;
10
+ } & ({
11
+ type: {
12
+ subject: "bulk";
13
+ action: string;
14
+ };
15
+ data: {
16
+ journalId: string;
17
+ items: {
18
+ [itemId: string]: "indexed" | "deleted";
19
+ };
20
+ docId: never;
21
+ };
22
+ } | {
23
+ type: {
24
+ subject: "doc";
25
+ action: string;
26
+ };
27
+ data: {
28
+ docId: string;
29
+ journalId: never;
30
+ items: never;
31
+ };
32
+ });
33
+ export type PublishApiOptions = {
34
+ /**
35
+ * The list of paths that your implementation uses with Optimizely CMS
36
+ * managed content. If the optimized publishing is enabled, this list will
37
+ * not be used at all.
38
+ */
39
+ paths: Array<Parameters<typeof revalidatePath>[0]>;
40
+ /**
41
+ * A list fo paths that must always be purged, regardless of optimization
42
+ * of purging is enabled. This is normally used for search-results etc..
10
43
  */
11
- paths: Array<string>;
44
+ additionalPaths: Array<Parameters<typeof revalidatePath>[0]>;
12
45
  /**
13
46
  * The scopes for which to revalidate the cache
14
47
  */
15
- scopes?: Array<PublishScopes>;
48
+ scopes: Array<PublishScopes>;
16
49
  /**
17
50
  * The tags to revalidate the cache for
18
51
  */
19
- tags?: Array<string>;
52
+ tags: Array<Parameters<typeof revalidateTag>[0]>;
53
+ /**
54
+ * If set to true, the handler will only publish the paths of the items
55
+ * that are changed. However this comes at the expense of needing a GraphQL
56
+ * query for every received hook to resolve the paths.
57
+ */
58
+ optimizePublish: boolean;
20
59
  /**
21
60
  * The Optimizely Graph client to use for Graph Operations needed to publish
22
61
  * content
23
62
  */
24
- client?: OptiGraphClientFactory;
63
+ client: ClientFactory;
64
+ /**
65
+ * The router to use when the publishing optimization is enabled
66
+ */
67
+ router: (() => RouteResolver) | {
68
+ urlBase?: URL | string;
69
+ resolverMode?: OptiCmsSchema;
70
+ };
71
+ /**
72
+ * A filtering function for the received webhooks, only hooks for which this method
73
+ * returns true will trigger a cache invalidation.
74
+ *
75
+ * @param hookType
76
+ * @returns
77
+ */
78
+ hookDataFilter: (hookType: PublishHookData['type']) => boolean;
79
+ };
80
+ export type PublishApiResponse = {
81
+ revalidated: {
82
+ paths: Array<Parameters<typeof revalidatePath>[0]>;
83
+ scopes: Array<PublishScopes>;
84
+ tags: Array<Parameters<typeof revalidateTag>[0]>;
85
+ };
86
+ optimized: boolean;
87
+ error?: never;
88
+ } | {
89
+ revalidated?: never;
90
+ optimized?: boolean;
91
+ error: string;
25
92
  };
26
- export declare function createPublishApi(options: PublishApiOptions): (request: NextRequest) => Promise<NextResponse>;
93
+ export declare function createPublishApi(options?: Partial<PublishApiOptions>): PublishApiHandler;
27
94
  export default createPublishApi;
@@ -1,62 +1,117 @@
1
- import { NextResponse } from "next/server.js";
1
+ import { NextResponse } from 'next/server.js';
2
2
  import { revalidatePath, revalidateTag } from "next/cache.js";
3
- import { isContentGraphClient, ContentGraphClient } from "@remkoj/optimizely-graph-client";
4
- import { getServerClient } from '../client.js';
3
+ import { RouteResolver } from '@remkoj/optimizely-graph-client';
4
+ import { createClient } from '@remkoj/optimizely-cms-nextjs';
5
+ export { NextResponse } from 'next/server.js';
6
+ const publishApiDefaults = {
7
+ paths: ['/', '/[[...path]]', '/[lang]', '/[lang]/[[...path]]'],
8
+ additionalPaths: [],
9
+ scopes: ['page', 'layout'],
10
+ tags: [],
11
+ optimizePublish: false,
12
+ client: createClient,
13
+ router: {},
14
+ hookDataFilter: (hookType) => hookType.subject == 'bulk' && hookType.action == 'completed'
15
+ };
5
16
  export function createPublishApi(options) {
6
- const defaultOptions = {
7
- paths: [],
8
- client: getServerClient,
9
- scopes: ['page', 'layout'],
10
- tags: []
17
+ const { paths, additionalPaths, optimizePublish, client: clientFactory, router: routerFactory, hookDataFilter, tags, scopes } = {
18
+ ...publishApiDefaults,
19
+ ...options
11
20
  };
12
- function tryJsonParse(data) {
13
- if (typeof (data) != 'string')
14
- return null;
15
- try {
16
- return JSON.parse(data);
17
- }
18
- catch {
19
- return null;
21
+ const client = clientFactory();
22
+ function getRouteResolver() {
23
+ return typeof routerFactory == 'function' ? routerFactory() : new RouteResolver(client, routerFactory?.urlBase, routerFactory?.resolverMode ?? client.currentOptiCmsSchema);
24
+ }
25
+ function publishAll(targetPaths, optimized = false) {
26
+ scopes.forEach(scope => {
27
+ targetPaths.forEach(path => revalidatePath(path, scope));
28
+ additionalPaths.forEach(path => revalidatePath(path, scope));
29
+ });
30
+ tags.forEach(tag => revalidateTag(tag));
31
+ return { revalidated: { scopes, paths: [...targetPaths, ...additionalPaths], tags }, optimized };
32
+ }
33
+ function getItemIds(hookData) {
34
+ let items = [];
35
+ switch (hookData.type.subject) {
36
+ case "doc":
37
+ items = [hookData.data.docId].map(item => {
38
+ const [key, locale] = item.split('_');
39
+ return key && locale ? { key: key.replaceAll('-', ''), locale } : undefined;
40
+ }).filter(x => x);
41
+ break;
42
+ case "bulk":
43
+ items = Object.getOwnPropertyNames(hookData.data.items ?? {}).map(pn => {
44
+ const status = hookData.data.items[pn];
45
+ if (status == "indexed" || status == "deleted") {
46
+ const [key, _, locale] = pn.split('_');
47
+ return key && locale ? { key: key.replaceAll('-', ''), locale } : undefined;
48
+ }
49
+ return undefined;
50
+ }).filter(x => x);
51
+ break;
52
+ default:
53
+ //@ts-expect-error All known types have been handled, this error is for new/unknown types
54
+ throw new Error("Unknown hook subject " + hookData.type.subject);
20
55
  }
56
+ return items.filter((x, i, a) => a.findIndex(v => v.key == x.key && v.locale == x.locale) == i);
21
57
  }
22
- const { client: clientFactory, paths, scopes, tags } = {
23
- ...defaultOptions,
24
- ...options
25
- };
26
- const client = typeof clientFactory == 'function' ? clientFactory() : (isContentGraphClient(clientFactory) ? clientFactory : new ContentGraphClient(clientFactory));
27
- return async function (request) {
28
- // Authorize the request
29
- const xAuthToken = request.headers.get("X-OPTLY-PUBLISH") ??
30
- request.nextUrl.searchParams.get("token") ??
31
- undefined;
32
- const serverToken = client.siteInfo.publishToken;
33
- if (!serverToken || serverToken == "") {
58
+ const requestHandler = async (req) => {
59
+ // Validate the request
60
+ const publishToken = client.siteInfo.publishToken;
61
+ const requestToken = getRequestToken(req);
62
+ if (!publishToken) {
34
63
  console.error("[Publish-API] No authentication configured, publishing has been disabled");
35
64
  return NextResponse.json({ error: "Not authorized" }, { status: 401 });
36
65
  }
37
- if (serverToken != xAuthToken) {
38
- console.error("[Publish-API] The provided publishing token is invalid", xAuthToken);
66
+ if (!requestToken || requestToken != publishToken) {
67
+ console.error("[Publish-API] The provided publishing token is invalid", requestToken);
39
68
  return NextResponse.json({ error: "Not authorized" }, { status: 401 });
40
69
  }
41
- // Get request data
42
- const requestBody = tryJsonParse(await request.text());
43
- console.log("[Publish-API] Graph Event: " + JSON.stringify(requestBody, undefined, 4));
44
- // Keep track of what has been revalidated
45
- const revalidated = [];
46
- // Flush all
47
- scopes.forEach(scope => {
48
- paths.forEach(path => {
49
- revalidatePath(path, scope);
50
- revalidated.push({ path, scope });
51
- });
52
- });
53
- tags.forEach(tag => {
54
- revalidateTag(tag);
55
- revalidated.push({ tag });
56
- });
57
- // Return result
58
- return NextResponse.json({ success: true, revalidated });
70
+ try {
71
+ // Get the webhook data
72
+ const webhookData = await req.json().catch(() => undefined);
73
+ console.debug('[Publish-API] Webhook data', webhookData);
74
+ // Purge everything if not known (e.g. for a GET request)
75
+ if (!webhookData) {
76
+ console.error("[Publish-API] No hook data received, optimization disabled");
77
+ return NextResponse.json(publishAll(paths));
78
+ }
79
+ // Make sure we're allowed to process the hook
80
+ if (!hookDataFilter(webhookData.type)) {
81
+ console.log("[Publish-API] Webhook ignored due to hookDataFilter", webhookData.type);
82
+ return NextResponse.json({ optimized: false, revalidated: { paths: [], scopes: [], tags: [] } });
83
+ }
84
+ // If we're not optimizing, just publish everything
85
+ if (!optimizePublish)
86
+ return NextResponse.json(publishAll(paths));
87
+ // Get the actual content ids from the hook data
88
+ const contentIds = getItemIds(webhookData);
89
+ console.debug("[Publish-API] Content items to publish:", JSON.stringify(contentIds));
90
+ // Resolve the contentids to paths
91
+ const router = getRouteResolver();
92
+ const results = await Promise.allSettled(contentIds.map(contentId => router.getContentInfoById(contentId.key, contentId.locale)));
93
+ const pathsToFlush = results.map(result => {
94
+ if (result.status == "rejected") {
95
+ console.error("[Publish-API] Error fetching route for content item:", result.reason?.message ?? result.reason);
96
+ return undefined;
97
+ }
98
+ return result.value?.path;
99
+ }).filter(x => x);
100
+ console.debug("[Publish-API] Content paths to publish:", JSON.stringify(pathsToFlush));
101
+ // Flush these paths
102
+ return NextResponse.json(publishAll(pathsToFlush, true));
103
+ }
104
+ catch (e) {
105
+ console.error("[Publish-API] Error handling publishing request", e?.message ?? e);
106
+ return NextResponse.json({ error: e?.message ?? "Unknown error " }, { status: 500 });
107
+ }
59
108
  };
109
+ return requestHandler;
110
+ }
111
+ function getRequestToken(req) {
112
+ return req.headers.get("X-OPTLY-PUBLISH") ??
113
+ req.nextUrl.searchParams.get("token") ??
114
+ undefined;
60
115
  }
61
116
  export default createPublishApi;
62
117
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/publish/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/publish/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@remkoj/optimizely-cms-nextjs",
3
3
  "license": "Apache-2.0",
4
- "version": "4.0.0",
4
+ "version": "4.2.0",
5
5
  "repository": "https://github.com/remkoj/optimizely-dxp-clients.git",
6
6
  "author": "Remko Jantzen <693172+remkoj@users.noreply.github.com>",
7
7
  "homepage": "https://github.com/remkoj/optimizely-dxp-clients",
@@ -39,26 +39,26 @@
39
39
  }
40
40
  },
41
41
  "devDependencies": {
42
- "@remkoj/optimizely-cms-react": "4.0.0",
43
- "@remkoj/optimizely-graph-client": "4.0.0",
44
- "@types/node": "^22.10.1",
45
- "@types/react": "^18.3.14",
46
- "@types/react-dom": "18.3.2",
47
- "graphql": "^16.9.0",
42
+ "@remkoj/optimizely-cms-react": "4.2.0",
43
+ "@remkoj/optimizely-graph-client": "4.2.0",
44
+ "@types/node": "^22.10.7",
45
+ "@types/react": "^18.3.18",
46
+ "@types/react-dom": "18.3.5",
47
+ "graphql": "^16.10.0",
48
48
  "graphql-request": "^6.1.0",
49
- "next": "^14.2.20",
49
+ "next": "^14.2.23",
50
50
  "prop-types": "^15.8.1",
51
51
  "react": "^18.3.1",
52
52
  "react-dom": "^18.3.1",
53
53
  "scheduler": "^0.25.0",
54
- "typescript": "^5.7.2"
54
+ "typescript": "^5.7.3"
55
55
  },
56
56
  "dependencies": {
57
57
  "deepmerge": "^4.3.1"
58
58
  },
59
59
  "peerDependencies": {
60
- "@remkoj/optimizely-cms-react": "*",
61
- "@remkoj/optimizely-graph-client": "*",
60
+ "@remkoj/optimizely-cms-react": "^4",
61
+ "@remkoj/optimizely-graph-client": "^4",
62
62
  "graphql": "^16",
63
63
  "graphql-request": "^6",
64
64
  "next": "^14",