@remkoj/optimizely-cms-nextjs 2.0.4 → 3.0.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.
- package/dist/client.js +11 -5
- package/dist/client.js.map +1 -1
- package/dist/cms-page/layout.js +1 -2
- package/dist/cms-page/layout.js.map +1 -1
- package/dist/cms-page/page.d.ts +62 -5
- package/dist/cms-page/page.js +69 -43
- package/dist/cms-page/page.js.map +1 -1
- package/dist/cms-page/utils.d.ts +3 -2
- package/dist/cms-page/utils.js +22 -4
- package/dist/cms-page/utils.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +2 -2
- package/dist/metadata.js +2 -2
- package/dist/metadata.js.map +1 -1
- package/dist/ope/data.js +22 -22
- package/dist/ope/index.d.ts +1 -0
- package/dist/ope/index.js +1 -0
- package/dist/ope/index.js.map +1 -1
- package/dist/ope/middleware.d.ts +19 -0
- package/dist/ope/middleware.js +43 -0
- package/dist/ope/middleware.js.map +1 -0
- package/dist/ope/page.d.ts +0 -2
- package/dist/ope/page.js +13 -11
- package/dist/ope/page.js.map +1 -1
- package/dist/ope/tools.js +1 -1
- package/dist/ope/tools.js.map +1 -1
- package/dist/ope/types.d.ts +38 -8
- package/package.json +18 -14
package/dist/client.js
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
export const getServerClient = React.cache(() => {
|
|
2
|
+
import createBaseClient, { AuthMode } from '@remkoj/optimizely-graph-client';
|
|
3
|
+
export const getServerClient = () => {
|
|
5
4
|
const client = createBaseClient();
|
|
6
5
|
if (client.debug)
|
|
7
6
|
console.log('⚪ [ContentGraph Shared Client] Created new Optimizely Graph client');
|
|
8
7
|
return client;
|
|
9
|
-
}
|
|
8
|
+
};
|
|
10
9
|
export const getAuthorizedServerClient = (token) => {
|
|
11
10
|
const client = createBaseClient();
|
|
12
11
|
if (client.debug)
|
|
13
12
|
console.log('⚪ [ContentGraph Shared Client] Created new Optimizely Graph client with authentication details');
|
|
14
|
-
|
|
13
|
+
if (typeof (token) == 'string' && token.length > 0) {
|
|
14
|
+
if (token == client.siteInfo.publishToken) {
|
|
15
|
+
console.warn(`🔐 [ContentGraph Shared Client] Allowed authenticated access by publish token`);
|
|
16
|
+
client.updateAuthentication(AuthMode.HMAC);
|
|
17
|
+
}
|
|
18
|
+
else
|
|
19
|
+
client.updateAuthentication(token);
|
|
20
|
+
}
|
|
15
21
|
if (client.debug)
|
|
16
22
|
console.log(`🟡 [ContentGraph Shared Client] Updated authentication, current mode: ${client.currentAuthMode}`);
|
|
17
23
|
return client;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AACpB,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AACpB,OAAO,gBAAgB,EAAE,EAAyB,QAAQ,EAAE,MAAM,iCAAiC,CAAA;AAEnG,MAAM,CAAC,MAAM,eAAe,GAA4B,GAAG,EAAE;IACzD,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IACjC,IAAI,MAAM,CAAC,KAAK;QACZ,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAA;IACrF,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAyC,CAAC,KAAK,EAAE,EAAE;IACrF,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAA;IACjC,IAAI,MAAM,CAAC,KAAK;QACZ,OAAO,CAAC,GAAG,CAAC,gGAAgG,CAAC,CAAA;IACjH,IAAI,OAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YACxC,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAA;YAC7F,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC;;YACG,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,MAAM,CAAC,KAAK;QACZ,OAAO,CAAC,GAAG,CAAC,yEAA0E,MAAM,CAAC,eAAgB,EAAE,CAAC,CAAA;IACpH,OAAO,MAAM,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAA;AAC3C,MAAM,CAAC,MAAM,sBAAsB,GAAG,yBAAyB,CAAA;AAC/D,eAAe,eAAe,EAAE,CAAA"}
|
package/dist/cms-page/layout.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Utils } from "@remkoj/optimizely-cms-react";
|
|
2
1
|
import { getMetaDataByPath as getMetaDataByPathBase } from './data.js';
|
|
3
2
|
import { getServerClient } from "../client.js";
|
|
4
|
-
import { isDebug } from '@remkoj/optimizely-cms-react/rsc';
|
|
3
|
+
import { Utils, isDebug } from '@remkoj/optimizely-cms-react/rsc';
|
|
5
4
|
const defaultCreateLayoutOptions = {
|
|
6
5
|
defaultLocale: null,
|
|
7
6
|
getMetaDataByPath: getMetaDataByPathBase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/cms-page/layout.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/cms-page/layout.tsx"],"names":[],"mappings":"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"}
|
package/dist/cms-page/page.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
2
|
import type { Metadata, ResolvingMetadata } from 'next';
|
|
3
|
-
import { type
|
|
3
|
+
import { type IRouteResolver, type Route } from '@remkoj/optimizely-graph-client/router';
|
|
4
|
+
import { type ChannelDefinition } from '@remkoj/optimizely-graph-client/channels';
|
|
5
|
+
import { type ClientFactory, type IOptiGraphClient } from '@remkoj/optimizely-graph-client/client';
|
|
4
6
|
import { type ComponentFactory } from '@remkoj/optimizely-cms-react/rsc';
|
|
5
7
|
import { type GetContentByPathMethod } from './data.js';
|
|
6
8
|
export type DefaultCmsPageParams = {
|
|
7
9
|
path?: string[];
|
|
8
|
-
lang?: string;
|
|
9
10
|
};
|
|
10
11
|
export type DefaultCmsPageSearchParams = {};
|
|
11
12
|
export type DefaultCmsPageProps<TParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageParams, TSearchParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageSearchParams> = {
|
|
@@ -13,8 +14,28 @@ export type DefaultCmsPageProps<TParams extends Record<string, string | Array<st
|
|
|
13
14
|
searchParams: TSearchParams;
|
|
14
15
|
};
|
|
15
16
|
export type OptiCmsNextJsPage<TParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageParams, TSearchParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageSearchParams> = {
|
|
17
|
+
/**
|
|
18
|
+
* Default implementation for the `generateStaticParams` export of a
|
|
19
|
+
* Next.JS Page.
|
|
20
|
+
*
|
|
21
|
+
* @returns The list of routes that should be pre-rendered by Next.JS
|
|
22
|
+
*/
|
|
16
23
|
generateStaticParams: () => Promise<TParams[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Default implementation for the `generateMetadata` export, which builds
|
|
26
|
+
* the metadata for the given route within the Next.JS app.
|
|
27
|
+
*
|
|
28
|
+
* @param props The properties of the page
|
|
29
|
+
* @param resolving The metadata that is currently resolving
|
|
30
|
+
* @returns Updated metadat
|
|
31
|
+
*/
|
|
17
32
|
generateMetadata: (props: DefaultCmsPageProps<TParams, TSearchParams>, resolving: ResolvingMetadata) => Promise<Metadata>;
|
|
33
|
+
/**
|
|
34
|
+
* The actual component that performs the page rendering
|
|
35
|
+
*
|
|
36
|
+
* @param props The properties of the page
|
|
37
|
+
* @returns The component to render the page
|
|
38
|
+
*/
|
|
18
39
|
CmsPage: (props: DefaultCmsPageProps<TParams, TSearchParams>) => Promise<JSX.Element>;
|
|
19
40
|
};
|
|
20
41
|
export declare enum SystemLocales {
|
|
@@ -22,12 +43,48 @@ export declare enum SystemLocales {
|
|
|
22
43
|
Neutral = "NEUTRAL"
|
|
23
44
|
}
|
|
24
45
|
export type CreatePageOptions<LocaleEnum = SystemLocales, TParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageParams, TSearchParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageSearchParams> = {
|
|
25
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Main function used to retrieve the content by path
|
|
48
|
+
*/
|
|
26
49
|
getContentByPath: GetContentByPathMethod<LocaleEnum>;
|
|
50
|
+
/**
|
|
51
|
+
* The factory that should yield the GraphQL Client to be used within this
|
|
52
|
+
* page.
|
|
53
|
+
*/
|
|
27
54
|
client: ClientFactory;
|
|
55
|
+
/**
|
|
56
|
+
* The channel information used to resolve locales, domains and more
|
|
57
|
+
*/
|
|
28
58
|
channel?: ChannelDefinition;
|
|
59
|
+
/**
|
|
60
|
+
* Override the default RouteResolver that is used to discover the routes
|
|
61
|
+
* provided by the Optimizely CMS and to retrieve the content reference for
|
|
62
|
+
* each route.
|
|
63
|
+
*
|
|
64
|
+
* @param client The Optimizely GraphQL Client to use
|
|
65
|
+
* @returns The RouteResolver to use
|
|
66
|
+
*/
|
|
67
|
+
routerFactory: (client?: IOptiGraphClient) => IRouteResolver;
|
|
68
|
+
/**
|
|
69
|
+
* Take the props received by the CmsPage from Next.JS and tranform those
|
|
70
|
+
* into a path that will be understood by Optimizely CMS. The default
|
|
71
|
+
* implementation works with both `/[lang]/[[...path]]` as well as
|
|
72
|
+
* `/[[...path]]`
|
|
73
|
+
*
|
|
74
|
+
* @param props The Properties (slugs & search params) received
|
|
75
|
+
* by Next.JS
|
|
76
|
+
* @return The path to be retrieved from Router or getContentByPath
|
|
77
|
+
* function
|
|
78
|
+
*/
|
|
29
79
|
propsToCmsPath: (props: DefaultCmsPageProps<TParams, TSearchParams>) => string | null;
|
|
30
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Take the route from the Routing Service and transform that to the route
|
|
82
|
+
* params used by Next.JS. The default implementation assumes that the CMS
|
|
83
|
+
* routes will be handled by `/[[...path]]`
|
|
84
|
+
*
|
|
85
|
+
* @param route The Route retrieved from Optimizely Graph
|
|
86
|
+
* @returns The processed route
|
|
87
|
+
*/
|
|
31
88
|
routeToParams: (route: Route) => TParams;
|
|
32
89
|
};
|
|
33
90
|
/**
|
|
@@ -39,4 +96,4 @@ export type CreatePageOptions<LocaleEnum = SystemLocales, TParams extends Record
|
|
|
39
96
|
* @param options The page component generation options
|
|
40
97
|
* @returns The Optimizely CMS Page
|
|
41
98
|
*/
|
|
42
|
-
export declare function createPage<LocaleEnum = SystemLocales, TParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageParams, TSearchParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageSearchParams>(factory: ComponentFactory, options?: Partial<CreatePageOptions<LocaleEnum, TParams, TSearchParams>>): OptiCmsNextJsPage
|
|
99
|
+
export declare function createPage<LocaleEnum = SystemLocales, TParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageParams, TSearchParams extends Record<string, string | Array<string> | undefined> = DefaultCmsPageSearchParams>(factory: ComponentFactory, options?: Partial<CreatePageOptions<LocaleEnum, TParams, TSearchParams>>): OptiCmsNextJsPage<TParams, TSearchParams>;
|
package/dist/cms-page/page.js
CHANGED
|
@@ -2,10 +2,12 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import 'server-only';
|
|
3
3
|
import deepmerge from 'deepmerge';
|
|
4
4
|
import { notFound } from 'next/navigation.js';
|
|
5
|
-
import { RouteResolver } from '@remkoj/optimizely-graph-client';
|
|
5
|
+
import { RouteResolver } from '@remkoj/optimizely-graph-client/router';
|
|
6
|
+
import { OptiCmsSchema } from '@remkoj/optimizely-graph-client/client';
|
|
6
7
|
import { normalizeContentLinkWithLocale } from '@remkoj/optimizely-graph-client/utils';
|
|
7
|
-
|
|
8
|
-
import { Utils } from '@remkoj/optimizely-cms-react';
|
|
8
|
+
// React Support
|
|
9
|
+
import { CmsContent, Utils, isDebug, getServerContext } from '@remkoj/optimizely-cms-react/rsc';
|
|
10
|
+
// Within package
|
|
9
11
|
import { MetaDataResolver } from '../metadata.js';
|
|
10
12
|
import { urlToPath, localeToGraphLocale } from './utils.js';
|
|
11
13
|
import getContentByPathBase from './data.js';
|
|
@@ -16,12 +18,11 @@ export var SystemLocales;
|
|
|
16
18
|
SystemLocales["Neutral"] = "NEUTRAL";
|
|
17
19
|
})(SystemLocales || (SystemLocales = {}));
|
|
18
20
|
const CreatePageOptionDefaults = {
|
|
19
|
-
defaultLocale: null,
|
|
20
21
|
getContentByPath: getContentByPathBase,
|
|
21
22
|
client: getServerClient,
|
|
23
|
+
routerFactory: (client) => new RouteResolver(client),
|
|
22
24
|
propsToCmsPath: ({ params }) => buildRequestPath(params),
|
|
23
|
-
|
|
24
|
-
routeToParams: (route) => { return { path: urlToPath(route.url, route.locale), lang: route.locale }; }
|
|
25
|
+
routeToParams: (route) => { return { path: urlToPath(route.url), lang: route.locale }; }
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
27
28
|
* Generate the React Server Side component and Next.JS functions needed to render an
|
|
@@ -33,42 +34,57 @@ const CreatePageOptionDefaults = {
|
|
|
33
34
|
* @returns The Optimizely CMS Page
|
|
34
35
|
*/
|
|
35
36
|
export function createPage(factory, options) {
|
|
36
|
-
|
|
37
|
+
// Build the global/shared configuration for the Optimizely CMS Page
|
|
38
|
+
const { getContentByPath, client: clientFactory, channel, propsToCmsPath, routeToParams, routerFactory } = {
|
|
37
39
|
...CreatePageOptionDefaults,
|
|
38
40
|
...options
|
|
39
41
|
};
|
|
42
|
+
// Create the global Graph Client
|
|
40
43
|
const globalClient = clientFactory();
|
|
44
|
+
// Create the global Router instance
|
|
45
|
+
const router = routerFactory(globalClient);
|
|
46
|
+
const getInfoByPath = async (requestPath, siteId) => {
|
|
47
|
+
const route = await router.getContentInfoByPath(requestPath, siteId);
|
|
48
|
+
if (!route)
|
|
49
|
+
return undefined;
|
|
50
|
+
const contentLink = router.routeToContentLink(route);
|
|
51
|
+
const contentType = route.contentType;
|
|
52
|
+
const graphLocale = localeToGraphLocale(route.locale, channel);
|
|
53
|
+
return [route, contentLink, contentType, graphLocale];
|
|
54
|
+
};
|
|
41
55
|
const pageDefintion = {
|
|
42
|
-
generateStaticParams: async () =>
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
},
|
|
47
|
-
generateMetadata: async (props, resolving) => {
|
|
48
|
-
// Read variables from request
|
|
49
|
-
//const client = clientFactory()
|
|
56
|
+
generateStaticParams: async () => (await router.getRoutes()).map(r => routeToParams(r)),
|
|
57
|
+
generateMetadata: async (props, parent) => {
|
|
58
|
+
// Read variables from request
|
|
59
|
+
const siteId = channel ? (globalClient.currentOptiCmsSchema == OptiCmsSchema.CMS12 ? channel.id : channel.defaultDomain) : undefined;
|
|
50
60
|
const requestPath = propsToCmsPath(props);
|
|
51
61
|
if (!requestPath)
|
|
52
62
|
return Promise.resolve({});
|
|
53
|
-
|
|
54
|
-
|
|
63
|
+
if (isDebug())
|
|
64
|
+
console.log(`⚪ [CmsPage.generateMetadata] Processed Next.JS route: ${JSON.stringify(props)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath, siteId })}`);
|
|
55
65
|
// Resolve the route to a content link
|
|
56
|
-
const
|
|
57
|
-
if (!
|
|
66
|
+
const routeInfo = await getInfoByPath(requestPath, siteId);
|
|
67
|
+
if (!routeInfo) {
|
|
68
|
+
if (isDebug())
|
|
69
|
+
console.log('⚪ [CmsPage.generateMetadata] No data received');
|
|
58
70
|
return Promise.resolve({});
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
//
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
}
|
|
72
|
+
const [route, contentLink, contentType, graphLocale] = routeInfo;
|
|
73
|
+
if (isDebug())
|
|
74
|
+
console.log(`⚪ [CmsPage.generateMetadata] Retrieved content info:`, route);
|
|
75
|
+
// Update context
|
|
76
|
+
const context = getServerContext();
|
|
77
|
+
context.setOptimizelyGraphClient(globalClient);
|
|
78
|
+
context.setComponentFactory(factory);
|
|
79
|
+
context.setLocale(route.locale);
|
|
67
80
|
// Fetch the metadata based upon the actual content type and resolve parent
|
|
81
|
+
const metaResolver = new MetaDataResolver(globalClient);
|
|
68
82
|
const [pageMetadata, baseMetadata] = await Promise.all([
|
|
69
83
|
metaResolver.resolve(factory, contentLink, contentType, graphLocale),
|
|
70
|
-
|
|
84
|
+
parent
|
|
71
85
|
]);
|
|
86
|
+
if (isDebug())
|
|
87
|
+
console.log(`⚪ [CmsPage.generateMetadata] Component yielded metadata:`, pageMetadata);
|
|
72
88
|
// Make sure merging of objects goes correctly
|
|
73
89
|
for (const metaKey of Object.getOwnPropertyNames(pageMetadata)) {
|
|
74
90
|
if (typeof (pageMetadata[metaKey]) == "object" && pageMetadata[metaKey] != null && baseMetadata[metaKey] != undefined && baseMetadata[metaKey] != null) {
|
|
@@ -85,23 +101,23 @@ export function createPage(factory, options) {
|
|
|
85
101
|
CmsPage: async (props) => {
|
|
86
102
|
// Prepare the context
|
|
87
103
|
const context = getServerContext();
|
|
88
|
-
|
|
89
|
-
if (!context.client)
|
|
90
|
-
context.setOptimizelyGraphClient(client);
|
|
104
|
+
context.setOptimizelyGraphClient(globalClient);
|
|
91
105
|
context.setComponentFactory(factory);
|
|
92
106
|
// Analyze the Next.JS Request props
|
|
93
|
-
const requestLocale = propsToCmsLocale(props, defaultLocale);
|
|
94
107
|
const requestPath = propsToCmsPath(props);
|
|
95
108
|
if (isDebug())
|
|
96
|
-
console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(props)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath
|
|
97
|
-
//
|
|
98
|
-
|
|
99
|
-
if (requestLocale)
|
|
100
|
-
context.setLocale(requestLocale);
|
|
101
|
-
// Resolve the content based upon the path
|
|
102
|
-
if (!requestPath)
|
|
109
|
+
console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(props)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath })}`);
|
|
110
|
+
// If we don't have the path, or the path is an internal Next.JS route reject it.
|
|
111
|
+
if (!requestPath || requestPath.startsWith('/_next/'))
|
|
103
112
|
return notFound();
|
|
104
|
-
|
|
113
|
+
// Resolve the content based upon the path
|
|
114
|
+
const requestVars = {
|
|
115
|
+
path: requestPath,
|
|
116
|
+
siteId: channel ? (globalClient.currentOptiCmsSchema == OptiCmsSchema.CMS12 ? channel.id : getPrimaryURL(channel).href) : null
|
|
117
|
+
};
|
|
118
|
+
if (isDebug())
|
|
119
|
+
console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(props)} => getContentByPath Variables: ${JSON.stringify(requestVars)}`);
|
|
120
|
+
const response = await getContentByPath(globalClient, requestVars);
|
|
105
121
|
const info = (response?.content?.items ?? [])[0];
|
|
106
122
|
if (!info) {
|
|
107
123
|
if (isDebug()) {
|
|
@@ -109,15 +125,18 @@ export function createPage(factory, options) {
|
|
|
109
125
|
}
|
|
110
126
|
return notFound();
|
|
111
127
|
}
|
|
128
|
+
else if (isDebug() && (response?.content?.items ?? []).length > 1) {
|
|
129
|
+
console.warn(`🟠 [CmsPage] Resolving content for ${requestPath}, yielded ${(response?.content?.items ?? []).length} items, picked:`, info);
|
|
130
|
+
}
|
|
112
131
|
// Extract the type & link
|
|
113
132
|
const contentType = Utils.normalizeContentType(info._metadata?.types);
|
|
114
133
|
const contentLink = normalizeContentLinkWithLocale(info._metadata);
|
|
115
|
-
if (contentLink?.locale)
|
|
116
|
-
context.setLocale(contentLink?.locale);
|
|
117
134
|
if (!contentLink) {
|
|
118
135
|
console.error("🔴 [CmsPage] Unable to infer the contentLink from the retrieved content, this should not have happened!");
|
|
119
136
|
return notFound();
|
|
120
137
|
}
|
|
138
|
+
if (contentLink?.locale)
|
|
139
|
+
context.setLocale(contentLink?.locale);
|
|
121
140
|
// Render the content link
|
|
122
141
|
return _jsx(CmsContent, { contentType: contentType, contentLink: contentLink, fragmentData: info });
|
|
123
142
|
}
|
|
@@ -138,9 +157,16 @@ function buildRequestPath({ lang, path }) {
|
|
|
138
157
|
slugs.unshift(lang);
|
|
139
158
|
if (slugs.length == 0)
|
|
140
159
|
return '/';
|
|
141
|
-
const fullPath = '/' + slugs.filter(x => x && x.length > 0).join('/');
|
|
160
|
+
const fullPath = '/' + slugs.filter(x => x && x.length > 0).map(x => decodeURIComponent(x)).join('/');
|
|
142
161
|
if (!slugs[slugs.length - 1].includes('.'))
|
|
143
162
|
return fullPath + '/';
|
|
144
163
|
return fullPath;
|
|
145
164
|
}
|
|
165
|
+
function getPrimaryURL(chnl) {
|
|
166
|
+
const dd = chnl.domains.filter(x => x.isPrimary).at(0) ?? chnl.domains.at(0);
|
|
167
|
+
if (!dd)
|
|
168
|
+
return chnl.getPrimaryDomain();
|
|
169
|
+
const s = dd.name.startsWith('localhost') || dd.name.indexOf('.local') > 0 ? 'http:' : 'https:';
|
|
170
|
+
return new URL(`${s}//${dd.name}`);
|
|
171
|
+
}
|
|
146
172
|
//# sourceMappingURL=page.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":"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"}
|
package/dist/cms-page/utils.d.ts
CHANGED
|
@@ -10,5 +10,6 @@ export declare function urlToPath(baseUrl: URL, language?: string): string[];
|
|
|
10
10
|
* @returns
|
|
11
11
|
*/
|
|
12
12
|
export declare function localeToGraphLocale(locale: string, channel?: ChannelDefinition): string;
|
|
13
|
-
export declare function slugToLocale<T extends string | undefined | null>(channel: ChannelDefinition, slug: string, defaultValue: T): string | T;
|
|
14
|
-
export declare function slugToGraphLocale<T extends string | undefined | null>(channel: ChannelDefinition, slug: string, defaultValue: T): string | T;
|
|
13
|
+
export declare function slugToLocale<T extends string | undefined | null>(channel: ChannelDefinition | undefined, slug: string | null, defaultValue: T): string | T;
|
|
14
|
+
export declare function slugToGraphLocale<T extends string | undefined | null>(channel: ChannelDefinition | undefined, slug: string | null, defaultValue: T): string | T;
|
|
15
|
+
export declare function localeToSlug<T>(channel: ChannelDefinition | undefined, locale: T): string;
|
package/dist/cms-page/utils.js
CHANGED
|
@@ -19,11 +19,29 @@ export function localeToGraphLocale(locale, channel) {
|
|
|
19
19
|
return channel?.localeToGraphLocale(locale) ?? coreLocaleToGraphLocale(locale);
|
|
20
20
|
}
|
|
21
21
|
export function slugToLocale(channel, slug, defaultValue) {
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
if (!slug)
|
|
23
|
+
return defaultValue;
|
|
24
|
+
if (!channel) {
|
|
25
|
+
let parsedSlug = slug.replaceAll('_', '-').split('-').map((x, i) => i == 1 ? x.toUpperCase() : x.toLowerCase()).join('-');
|
|
26
|
+
return parsedSlug;
|
|
27
|
+
}
|
|
28
|
+
const locale = channel.slugToLocale(slug);
|
|
29
|
+
return locale || defaultValue?.replaceAll("_", "-");
|
|
24
30
|
}
|
|
25
31
|
export function slugToGraphLocale(channel, slug, defaultValue) {
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
if (!slug)
|
|
33
|
+
return defaultValue;
|
|
34
|
+
if (!channel) {
|
|
35
|
+
let parsedSlug = slug.replaceAll('_', '-').split('-').map((x, i) => i == 1 ? x.toUpperCase() : x.toLowerCase()).join('_');
|
|
36
|
+
return parsedSlug;
|
|
37
|
+
}
|
|
38
|
+
const graphLocale = channel.slugToGraphLocale(slug);
|
|
39
|
+
return graphLocale || defaultValue?.replaceAll("-", "_");
|
|
40
|
+
}
|
|
41
|
+
export function localeToSlug(channel, locale) {
|
|
42
|
+
const baseSlug = locale.toLowerCase().replaceAll('_', '-');
|
|
43
|
+
if (!channel)
|
|
44
|
+
return baseSlug;
|
|
45
|
+
return channel.localeToSlug(locale) ?? baseSlug;
|
|
28
46
|
}
|
|
29
47
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cms-page/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAEtG,oDAAoD;AACpD,MAAM,UAAU,SAAS,CAAC,OAAY,EAAE,QAAiB;IACrD,IAAI,KAAK,GAAc,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACjE,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACzB,OAAO,KAAK,CAAA;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAA2B;IAE3E,OAAO,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAsC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cms-page/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,IAAI,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAEtG,oDAAoD;AACpD,MAAM,UAAU,SAAS,CAAC,OAAY,EAAE,QAAiB;IACrD,IAAI,KAAK,GAAc,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACjE,IAAI,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ;QAChC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACzB,OAAO,KAAK,CAAA;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,OAA2B;IAE3E,OAAO,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,YAAY,CAAsC,OAAsC,EAAE,IAAmB,EAAE,YAAe;IAE1I,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAA;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvH,OAAO,UAAU,CAAA;IACrB,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,OAAO,MAAM,IAAI,YAAY,EAAE,UAAU,CAAC,GAAG,EAAC,GAAG,CAAM,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAsC,OAAsC,EAAE,IAAmB,EAAE,YAAe;IAE/I,IAAI,CAAC,IAAI;QAAE,OAAO,YAAY,CAAA;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACvH,OAAO,UAAU,CAAA;IACrB,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;IACnD,OAAO,WAAW,IAAI,YAAY,EAAE,UAAU,CAAC,GAAG,EAAC,GAAG,CAAM,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,OAAsC,EAAE,MAAS;IAE7E,MAAM,QAAQ,GAAI,MAAiB,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAC,GAAG,CAAC,CAAA;IACrE,IAAI,CAAC,OAAO;QACR,OAAO,QAAQ,CAAA;IACnB,OAAO,OAAO,CAAC,YAAY,CAAC,MAAgB,CAAC,IAAI,QAAQ,CAAA;AAC7D,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,6 @@ export * from './client.js';
|
|
|
2
2
|
export * from './metadata.js';
|
|
3
3
|
export * from './types.js';
|
|
4
4
|
export * from './page.js';
|
|
5
|
-
//export * as Auth from './auth'
|
|
6
5
|
export * as OnPageEdit from './ope/index.js';
|
|
7
6
|
export * as CmsPage from './cms-page/index.js';
|
|
8
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,OAAO,KAAK,UAAU,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA"}
|
package/dist/metadata.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type ComponentFactory
|
|
2
|
-
import { type OptimizelyGraphConfig, type IOptiGraphClient } from '@remkoj/optimizely-graph-client';
|
|
1
|
+
import { type ComponentFactory } from '@remkoj/optimizely-cms-react';
|
|
2
|
+
import { type OptimizelyGraphConfig, type IOptiGraphClient, type ContentLink } from '@remkoj/optimizely-graph-client';
|
|
3
3
|
import { Metadata } from 'next';
|
|
4
4
|
export declare class MetaDataResolver {
|
|
5
5
|
private _cgClient;
|
package/dist/metadata.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import createClient, {
|
|
1
|
+
import createClient, { isOptiGraphClient } from '@remkoj/optimizely-graph-client';
|
|
2
2
|
import { isOptimizelyNextPageWithMetaData } from './page.js';
|
|
3
3
|
export class MetaDataResolver {
|
|
4
4
|
constructor(clientOrConfig) {
|
|
5
|
-
this._cgClient =
|
|
5
|
+
this._cgClient = isOptiGraphClient(clientOrConfig) ? clientOrConfig : createClient(clientOrConfig);
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Resolve the meta data for a component, if it has a meta-data method exposed.
|
package/dist/metadata.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,EAAE,EAAE,iBAAiB,EAAuE,MAAM,iCAAiC,CAAA;AAEtJ,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAA;AAG5D,MAAM,OAAO,gBAAgB;IAIzB,YAAmB,cAAyD;QAExE,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;IACtG,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,OAAO,CAAC,OAAyB,EAAE,WAAwB,EAAE,WAAqB,EAAE,MAAsB;QAEnH,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;YACpB,OAAO,CAAC,GAAG,CAAC,gDAAiD,IAAI,CAAC,SAAS,CAAC,EAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,EAAE,CAAC,CAAA;QAEtH,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QAEzF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAA2B,CAAA;QACxE,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,gDAAiD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAE,EAAE,CAAC,CAAA;YAC1F,OAAO,EAAE,CAAA;QACb,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;YACpB,OAAO,CAAC,GAAG,CAAC,wCAAyC,SAAS,CAAC,WAAW,IAAI,mBAAoB,EAAE,CAAC,CAAA;QAEzG,IAAI,gCAAgC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACvE,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAA;YAChG,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YAC7E,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,8CAA+C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,EAAE,CAAC,CAAA;YACvF,OAAO,IAAI,CAAA;QACf,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,IAAI,CAAC,gDAAiD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAE,uCAAuC,CAAC,CAAA;QACpI,CAAC;QACD,OAAO,EAAE,CAAA;IACb,CAAC;CACJ;AAED,eAAe,gBAAgB,CAAA"}
|
package/dist/ope/data.js
CHANGED
|
@@ -2,27 +2,27 @@ import { gql } from 'graphql-request';
|
|
|
2
2
|
export const getContentById = async (client, variables) => {
|
|
3
3
|
return await client.request(gqlQuery, variables);
|
|
4
4
|
};
|
|
5
|
-
const gqlQuery = gql `query getContentByIdBase($key: String!, $version: String, $locale: [Locales!], $path: String, $domain: String) {
|
|
6
|
-
content: _Content(
|
|
7
|
-
where: {
|
|
8
|
-
_or: [
|
|
9
|
-
{ _metadata: { key: { eq: $key }, version: { eq: $version } } }
|
|
10
|
-
{ _metadata: { url: { hierarchical: { eq: $path }, base: { eq: $domain } }, version: { eq: $version } } }
|
|
11
|
-
]
|
|
12
|
-
}
|
|
13
|
-
locale: $locale
|
|
14
|
-
) {
|
|
15
|
-
total
|
|
16
|
-
items {
|
|
17
|
-
_metadata {
|
|
18
|
-
key
|
|
19
|
-
locale
|
|
20
|
-
types
|
|
21
|
-
displayName
|
|
22
|
-
version
|
|
23
|
-
}
|
|
24
|
-
_type: __typename
|
|
25
|
-
}
|
|
26
|
-
}
|
|
5
|
+
const gqlQuery = gql `query getContentByIdBase($key: String!, $version: String, $locale: [Locales!], $path: String, $domain: String) {
|
|
6
|
+
content: _Content(
|
|
7
|
+
where: {
|
|
8
|
+
_or: [
|
|
9
|
+
{ _metadata: { key: { eq: $key }, version: { eq: $version } } }
|
|
10
|
+
{ _metadata: { url: { hierarchical: { eq: $path }, base: { eq: $domain } }, version: { eq: $version } } }
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
locale: $locale
|
|
14
|
+
) {
|
|
15
|
+
total
|
|
16
|
+
items {
|
|
17
|
+
_metadata {
|
|
18
|
+
key
|
|
19
|
+
locale
|
|
20
|
+
types
|
|
21
|
+
displayName
|
|
22
|
+
version
|
|
23
|
+
}
|
|
24
|
+
_type: __typename
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
27
|
}`;
|
|
28
28
|
//# sourceMappingURL=data.js.map
|
package/dist/ope/index.d.ts
CHANGED
package/dist/ope/index.js
CHANGED
package/dist/ope/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ope/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,OAAO,EAAE,uBAAuB,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ope/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AACnC,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,OAAO,EAAE,uBAAuB,IAAI,OAAO,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type NextRequest, NextResponse } from "next/server.js";
|
|
2
|
+
type Middleware<T = any> = (request: NextRequest) => Promise<NextResponse<T>> | NextResponse<T>;
|
|
3
|
+
/**
|
|
4
|
+
* Create a Next.JS middleware, which enhances the current middleware with an
|
|
5
|
+
* automatic rewrite from the "old" CMS Preview URLs to the "new" CMS Preview
|
|
6
|
+
* URLs. This will make "side-by-side" previews work, as well as can help with
|
|
7
|
+
* supporting CMS 12
|
|
8
|
+
*
|
|
9
|
+
* @param middleware Your middleware, which should be wrapped by
|
|
10
|
+
* this middleware
|
|
11
|
+
* @param adminSlug The slug used by Optimizely CMS for the admin
|
|
12
|
+
* routes (defaults to "ui", a common alternative
|
|
13
|
+
* is "episerver")
|
|
14
|
+
* @param previewRoute The preview route within the frontend (defaults
|
|
15
|
+
* to "/preview")
|
|
16
|
+
* @returns The new middleware
|
|
17
|
+
*/
|
|
18
|
+
export declare function withEditFallback<T = unknown>(middleware?: Middleware<T>, adminSlug?: string, previewRoute?: string): Middleware<T>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { NextResponse } from "next/server.js";
|
|
2
|
+
/**
|
|
3
|
+
* Create a Next.JS middleware, which enhances the current middleware with an
|
|
4
|
+
* automatic rewrite from the "old" CMS Preview URLs to the "new" CMS Preview
|
|
5
|
+
* URLs. This will make "side-by-side" previews work, as well as can help with
|
|
6
|
+
* supporting CMS 12
|
|
7
|
+
*
|
|
8
|
+
* @param middleware Your middleware, which should be wrapped by
|
|
9
|
+
* this middleware
|
|
10
|
+
* @param adminSlug The slug used by Optimizely CMS for the admin
|
|
11
|
+
* routes (defaults to "ui", a common alternative
|
|
12
|
+
* is "episerver")
|
|
13
|
+
* @param previewRoute The preview route within the frontend (defaults
|
|
14
|
+
* to "/preview")
|
|
15
|
+
* @returns The new middleware
|
|
16
|
+
*/
|
|
17
|
+
export function withEditFallback(middleware, adminSlug = "ui", previewRoute = "/preview") {
|
|
18
|
+
const previewPath = `/${adminSlug}/CMS/Content/`;
|
|
19
|
+
const wrappedMiddleware = request => {
|
|
20
|
+
if (request.nextUrl.pathname.startsWith(previewPath) &&
|
|
21
|
+
request.nextUrl.pathname.includes(",,") &&
|
|
22
|
+
request.nextUrl.searchParams.has('epieditmode')) {
|
|
23
|
+
const [path, versionInfo] = request.nextUrl.pathname.split(",,", 2);
|
|
24
|
+
const [contentId, versionId] = versionInfo.split("_", 2);
|
|
25
|
+
const ctx = request.nextUrl.searchParams.get('epieditmode') == "true" ? "edit" : "preview";
|
|
26
|
+
const token = request.nextUrl.searchParams.get('preview_token') || request.nextUrl.searchParams.get('token') || process.env.OPTIMIZELY_PUBLISH_TOKEN || "use-hmac";
|
|
27
|
+
let requestPath = path.replace(previewPath, "/");
|
|
28
|
+
if (!requestPath.endsWith('/'))
|
|
29
|
+
requestPath = requestPath + '/';
|
|
30
|
+
const rewrittenUrl = new URL("/preview", request.url);
|
|
31
|
+
rewrittenUrl.searchParams.set("key", contentId);
|
|
32
|
+
rewrittenUrl.searchParams.set("ver", versionId);
|
|
33
|
+
rewrittenUrl.searchParams.set("loc", "ALL"); // Locale cannot be inferred from URL, however a contentId/versionId should always be unique
|
|
34
|
+
rewrittenUrl.searchParams.set("ctx", ctx);
|
|
35
|
+
rewrittenUrl.searchParams.set("preview_token", token);
|
|
36
|
+
rewrittenUrl.searchParams.set("path", requestPath);
|
|
37
|
+
return NextResponse.rewrite(rewrittenUrl);
|
|
38
|
+
}
|
|
39
|
+
return middleware ? middleware(request) : NextResponse.next();
|
|
40
|
+
};
|
|
41
|
+
return wrappedMiddleware;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=middleware.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/ope/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAIhE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gBAAgB,CAAc,UAA0B,EAAE,YAAoB,IAAI,EAAE,eAAuB,UAAU;IAEjI,MAAM,WAAW,GAAG,IAAI,SAAS,eAAe,CAAA;IAChD,MAAM,iBAAiB,GAAmB,OAAO,CAAC,EAAE;QAEhD,IACI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;YAChD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,EACjD,CAAC;YACC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAC,CAAC,CAAC,CAAA;YAClE,MAAM,CAAE,SAAS,EAAE,SAAS,CAAE,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,EAAC,CAAC,CAAC,CAAA;YACzD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;YAC1F,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,UAAU,CAAA;YAClK,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;YAChD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC1B,WAAW,GAAG,WAAW,GAAG,GAAG,CAAA;YAEnC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;YACrD,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAC/C,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;YAC/C,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA,CAAC,4FAA4F;YACxI,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACzC,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;YACrD,YAAY,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;YAClD,OAAO,YAAY,CAAC,OAAO,CAAC,YAAY,CAAoB,CAAA;QAChE,CAAC;QAED,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,YAAY,CAAC,IAAI,EAAsB,CAAA;IACtF,CAAC,CAAA;IACD,OAAO,iBAAiB,CAAA;AAC5B,CAAC"}
|
package/dist/ope/page.d.ts
CHANGED
|
@@ -5,8 +5,6 @@ import { type ComponentFactory } from '@remkoj/optimizely-cms-react/rsc';
|
|
|
5
5
|
* Create the EditPage component needed by Next.JS to render the "On Page
|
|
6
6
|
* Editing" variant of the content item selected by the editor.
|
|
7
7
|
*
|
|
8
|
-
* @param dxpUrl The domain of the CMS instance
|
|
9
|
-
* @param client The Apollo GraphQL client to use
|
|
10
8
|
* @param factory The component factory to be used
|
|
11
9
|
* @param options The optional options to use to control the edit page
|
|
12
10
|
* @returns The React Component that can be used by Next.JS to render the page
|
package/dist/ope/page.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import 'server-only';
|
|
3
|
-
import { contentLinkToString } from '@remkoj/optimizely-graph-client/utils';
|
|
4
|
-
import { Utils } from '@remkoj/optimizely-cms-react';
|
|
5
|
-
import { CmsContent, getServerContext } from '@remkoj/optimizely-cms-react/rsc';
|
|
3
|
+
import { contentLinkToString, localeToGraphLocale } from '@remkoj/optimizely-graph-client/utils';
|
|
4
|
+
import { getServerContext, Utils, CmsContent } from '@remkoj/optimizely-cms-react/rsc';
|
|
6
5
|
import { notFound } from 'next/navigation.js';
|
|
7
6
|
import OnPageEdit from '../components/on-page-edit.js';
|
|
8
7
|
import { getAuthorizedServerClient } from '../client.js';
|
|
@@ -15,30 +14,30 @@ const defaultOptions = {
|
|
|
15
14
|
layout: props => _jsx(_Fragment, { children: props.children }),
|
|
16
15
|
loader: getContentById,
|
|
17
16
|
clientFactory: (token) => getAuthorizedServerClient(token),
|
|
18
|
-
communicationInjectorPath: '/util/javascript/communicationinjector.js'
|
|
17
|
+
communicationInjectorPath: '/util/javascript/communicationinjector.js',
|
|
18
|
+
contentResolver: getContentRequest,
|
|
19
|
+
requestValidator: isValidRequest
|
|
19
20
|
};
|
|
20
21
|
/**
|
|
21
22
|
* Create the EditPage component needed by Next.JS to render the "On Page
|
|
22
23
|
* Editing" variant of the content item selected by the editor.
|
|
23
24
|
*
|
|
24
|
-
* @param dxpUrl The domain of the CMS instance
|
|
25
|
-
* @param client The Apollo GraphQL client to use
|
|
26
25
|
* @param factory The component factory to be used
|
|
27
26
|
* @param options The optional options to use to control the edit page
|
|
28
27
|
* @returns The React Component that can be used by Next.JS to render the page
|
|
29
28
|
*/
|
|
30
29
|
export function createEditPageComponent(factory, options) {
|
|
31
|
-
const { layout: PageLayout, refreshNotice: RefreshNotice, loader: getContentById, clientFactory, communicationInjectorPath } = { ...defaultOptions, ...options };
|
|
30
|
+
const { layout: PageLayout, refreshNotice: RefreshNotice, loader: getContentById, clientFactory, communicationInjectorPath, contentResolver: resolveContent, requestValidator: validateRequest } = { ...defaultOptions, ...options };
|
|
32
31
|
async function EditPage(props) {
|
|
33
32
|
// Create context
|
|
34
33
|
const context = getServerContext();
|
|
35
34
|
// Validate the search parameters
|
|
36
|
-
if (!
|
|
35
|
+
if (!validateRequest(props, false, context.isDevelopment)) {
|
|
37
36
|
console.error("🔴 [OnPageEdit] Invalid edit mode request");
|
|
38
37
|
return notFound();
|
|
39
38
|
}
|
|
40
39
|
// Get the requested content item
|
|
41
|
-
const contentRequestInfo =
|
|
40
|
+
const contentRequestInfo = resolveContent(props);
|
|
42
41
|
if (!contentRequestInfo) {
|
|
43
42
|
console.error("🔴 [OnPageEdit] Unable to resolve requested content");
|
|
44
43
|
return notFound();
|
|
@@ -48,7 +47,7 @@ export function createEditPageComponent(factory, options) {
|
|
|
48
47
|
const client = clientFactory(token);
|
|
49
48
|
context.setOptimizelyGraphClient(client);
|
|
50
49
|
context.setComponentFactory(factory);
|
|
51
|
-
context.
|
|
50
|
+
context.setMode(ctx);
|
|
52
51
|
// Get information from the Request URI
|
|
53
52
|
if (context.isDebug) {
|
|
54
53
|
console.log("⚪ [OnPageEdit] Request context:", ctx);
|
|
@@ -56,7 +55,10 @@ export function createEditPageComponent(factory, options) {
|
|
|
56
55
|
console.log("⚪ [OnPageEdit] Requested content:", JSON.stringify(contentRequest));
|
|
57
56
|
}
|
|
58
57
|
try {
|
|
59
|
-
const contentInfo = await getContentById(client,
|
|
58
|
+
const contentInfo = await getContentById(client, {
|
|
59
|
+
...contentRequest,
|
|
60
|
+
locale: localeToGraphLocale(contentRequest.locale)
|
|
61
|
+
});
|
|
60
62
|
if ((contentInfo?.content?.total ?? 0) > 1) {
|
|
61
63
|
console.warn("🟠 [OnPageEdit] Content request " + JSON.stringify(contentRequest) + " yielded more then one item, picking first matching");
|
|
62
64
|
}
|
package/dist/ope/page.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/ope/page.tsx"],"names":[],"mappings":";AAAA,OAAO,aAAa,CAAA;AAGpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/ope/page.tsx"],"names":[],"mappings":"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"}
|
package/dist/ope/tools.js
CHANGED
|
@@ -59,7 +59,7 @@ export function getContentRequest({ params: { path, lang }, searchParams: { prev
|
|
|
59
59
|
key: searchParams.key,
|
|
60
60
|
locale: searchParams.loc,
|
|
61
61
|
version: searchParams.ver,
|
|
62
|
-
path: null
|
|
62
|
+
path: searchParams.path ?? null
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
// Then fall back to old-mode URL parsing for developer URLs
|
package/dist/ope/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/ope/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/ope/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/ope/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ComponentType, type PropsWithChildren } from 'react';
|
|
2
2
|
import { type ClientFactory } from '@remkoj/optimizely-graph-client';
|
|
3
3
|
import { type GraphQLClient } from 'graphql-request';
|
|
4
|
-
import { type ContentQueryProps } from '@remkoj/optimizely-cms-react';
|
|
4
|
+
import { type ContentQueryProps } from '@remkoj/optimizely-cms-react/rsc';
|
|
5
5
|
export type ContentRequest = (Omit<ContentQueryProps<string>, 'path'> & {
|
|
6
6
|
path: string | null;
|
|
7
7
|
token: string;
|
|
@@ -23,6 +23,7 @@ export type EditPageProps = {
|
|
|
23
23
|
ver?: string;
|
|
24
24
|
loc?: string;
|
|
25
25
|
ctx?: 'edit' | 'preview';
|
|
26
|
+
path?: string;
|
|
26
27
|
epieditmode?: string;
|
|
27
28
|
};
|
|
28
29
|
};
|
|
@@ -38,12 +39,14 @@ export type ValidatedEditPageProps = {
|
|
|
38
39
|
ver: string;
|
|
39
40
|
loc: string;
|
|
40
41
|
ctx: 'edit' | 'preview';
|
|
41
|
-
|
|
42
|
+
path?: string;
|
|
43
|
+
epieditmode: never;
|
|
42
44
|
} | {
|
|
43
|
-
key:
|
|
44
|
-
ver:
|
|
45
|
-
loc:
|
|
46
|
-
ctx:
|
|
45
|
+
key: never;
|
|
46
|
+
ver: never;
|
|
47
|
+
loc: never;
|
|
48
|
+
ctx: never;
|
|
49
|
+
path: never;
|
|
47
50
|
epieditmode: 'true' | 'false';
|
|
48
51
|
});
|
|
49
52
|
};
|
|
@@ -60,11 +63,18 @@ export type EditViewOptions = {
|
|
|
60
63
|
locale: string;
|
|
61
64
|
}>>;
|
|
62
65
|
/**
|
|
63
|
-
* The
|
|
66
|
+
* The fourth step of the handling of a Preview/On-Page-Edit view,
|
|
67
|
+
* which actually loads the data of content to be shown to the
|
|
68
|
+
* editor.
|
|
64
69
|
*/
|
|
65
70
|
loader: GetContentByIdMethod;
|
|
66
71
|
/**
|
|
67
|
-
* The
|
|
72
|
+
* The third step of the handling of a Preview/On-Page-Edit view,
|
|
73
|
+
* which gets the Optimizely Graph client for the token/auth method
|
|
74
|
+
* inferred by the contentResolver.
|
|
75
|
+
*
|
|
76
|
+
* @param token The token to be used
|
|
77
|
+
* @returns The Optimizely Graph Client
|
|
68
78
|
*/
|
|
69
79
|
clientFactory: ClientFactory;
|
|
70
80
|
/**
|
|
@@ -72,6 +82,26 @@ export type EditViewOptions = {
|
|
|
72
82
|
* path.
|
|
73
83
|
*/
|
|
74
84
|
communicationInjectorPath: string;
|
|
85
|
+
/**
|
|
86
|
+
* The second step of the handling of a Preview/On-Page-Edit view,
|
|
87
|
+
* this actually extracts the requested content identification info
|
|
88
|
+
* from the path and search params
|
|
89
|
+
*
|
|
90
|
+
* @param props The page path props and search params
|
|
91
|
+
* @returns The requested content information
|
|
92
|
+
*/
|
|
93
|
+
contentResolver: (props: ValidatedEditPageProps) => ContentRequest | undefined;
|
|
94
|
+
/**
|
|
95
|
+
* This is the first step of the handling of a Preview/On-Page-Edit view,
|
|
96
|
+
* where the parameters should be validated to ensure this is a correct
|
|
97
|
+
* preview/on-page-edit request.
|
|
98
|
+
*
|
|
99
|
+
* @param props The page path props and search params
|
|
100
|
+
* @param throwOnInvalid Whether an error must thrown on invalid data
|
|
101
|
+
* @param isDevelopment Whether this request runs in development mode
|
|
102
|
+
* @returns If the request is valid
|
|
103
|
+
*/
|
|
104
|
+
requestValidator: (props: EditPageProps, throwOnInvalid?: boolean, isDevelopment?: boolean) => props is ValidatedEditPageProps;
|
|
75
105
|
};
|
|
76
106
|
export type GetContentByIdData<LocaleType = string> = {
|
|
77
107
|
content: {
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remkoj/optimizely-cms-nextjs",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "
|
|
5
|
-
"packageManager": "yarn@4.
|
|
4
|
+
"version": "3.0.0",
|
|
5
|
+
"packageManager": "yarn@4.5.0",
|
|
6
6
|
"repository": "https://github.com/remkoj/optimizely-dxp-clients.git",
|
|
7
7
|
"author": "Remko Jantzen <693172+remkoj@users.noreply.github.com>",
|
|
8
8
|
"homepage": "https://github.com/remkoj/optimizely-dxp-clients",
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
"./rsc": "./dist/client.js",
|
|
18
18
|
"./publish": "./dist/publish/index.js",
|
|
19
19
|
"./types": "./dist/types.js",
|
|
20
|
-
"./components": "./dist/components/shared/index.js"
|
|
20
|
+
"./components": "./dist/components/shared/index.js",
|
|
21
|
+
"./preview": "./dist/ope/index.js"
|
|
21
22
|
},
|
|
22
23
|
"typesVersions": {
|
|
23
24
|
"*": {
|
|
@@ -31,31 +32,34 @@
|
|
|
31
32
|
"dist/types.d.ts"
|
|
32
33
|
],
|
|
33
34
|
"components": [
|
|
34
|
-
"dist/components/shared/index.
|
|
35
|
+
"dist/components/shared/index.d.ts"
|
|
36
|
+
],
|
|
37
|
+
"preview": [
|
|
38
|
+
"dist/ope/index.d.ts"
|
|
35
39
|
]
|
|
36
40
|
}
|
|
37
41
|
},
|
|
38
42
|
"devDependencies": {
|
|
39
|
-
"@remkoj/optimizely-cms-react": "
|
|
40
|
-
"@remkoj/optimizely-graph-client": "
|
|
41
|
-
"@types/node": "^22.
|
|
42
|
-
"@types/react": "^18.3.
|
|
43
|
-
"@types/react-dom": "18.3.
|
|
43
|
+
"@remkoj/optimizely-cms-react": "3.0.0",
|
|
44
|
+
"@remkoj/optimizely-graph-client": "3.0.0",
|
|
45
|
+
"@types/node": "^22.8.4",
|
|
46
|
+
"@types/react": "^18.3.12",
|
|
47
|
+
"@types/react-dom": "18.3.1",
|
|
44
48
|
"graphql": "^16.9.0",
|
|
45
49
|
"graphql-request": "^6.1.0",
|
|
46
|
-
"next": "^14.2.
|
|
50
|
+
"next": "^14.2.16",
|
|
47
51
|
"prop-types": "^15.8.1",
|
|
48
52
|
"react": "^18.3.1",
|
|
49
53
|
"react-dom": "^18.3.1",
|
|
50
54
|
"scheduler": "^0.23.2",
|
|
51
|
-
"typescript": "^5.
|
|
55
|
+
"typescript": "^5.6.3"
|
|
52
56
|
},
|
|
53
57
|
"dependencies": {
|
|
54
58
|
"deepmerge": "^4.3.1"
|
|
55
59
|
},
|
|
56
60
|
"peerDependencies": {
|
|
57
|
-
"@remkoj/optimizely-cms-react": "
|
|
58
|
-
"@remkoj/optimizely-graph-client": "
|
|
61
|
+
"@remkoj/optimizely-cms-react": "*",
|
|
62
|
+
"@remkoj/optimizely-graph-client": "*",
|
|
59
63
|
"graphql": "^16",
|
|
60
64
|
"graphql-request": "^6",
|
|
61
65
|
"next": "^14",
|
|
@@ -63,7 +67,7 @@
|
|
|
63
67
|
},
|
|
64
68
|
"scripts": {
|
|
65
69
|
"clean": "yarn tsc --build --clean",
|
|
66
|
-
"prepare": "yarn tsc --build",
|
|
70
|
+
"prepare": "yarn tsc --build --force",
|
|
67
71
|
"watch": "yarn tsc --watch",
|
|
68
72
|
"recompile": "yarn tsc --build --clean && yarn tsc --build --force"
|
|
69
73
|
}
|