@remkoj/optimizely-cms-nextjs 4.3.1 → 5.0.1
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.d.ts +34 -7
- package/dist/client.js +48 -18
- package/dist/client.js.map +1 -1
- package/dist/cms-page/data.d.ts +5 -1
- package/dist/cms-page/data.js.map +1 -1
- package/dist/cms-page/page.d.ts +3 -3
- package/dist/cms-page/page.js +120 -73
- package/dist/cms-page/page.js.map +1 -1
- package/dist/ope/page.js +18 -12
- package/dist/ope/page.js.map +1 -1
- package/dist/ope/types.d.ts +4 -1
- package/dist/publish/index.d.ts +21 -5
- package/dist/publish/index.js +56 -19
- package/dist/publish/index.js.map +1 -1
- package/package.json +11 -11
package/dist/client.d.ts
CHANGED
|
@@ -1,8 +1,35 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
|
-
import { type IOptiGraphClient } from '@remkoj/optimizely-graph-client';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
import { type IOptiGraphClient, type OptimizelyGraphConfig } from '@remkoj/optimizely-graph-client';
|
|
3
|
+
/**
|
|
4
|
+
* Create a new client instance. This is a direct wrapper for the `createClient` function
|
|
5
|
+
* exported from `@remkoj/optimizely-graph-client`.
|
|
6
|
+
*
|
|
7
|
+
* @returns The newly created GraphQL Client
|
|
8
|
+
*/
|
|
9
|
+
export declare function createClient(): IOptiGraphClient;
|
|
10
|
+
/**
|
|
11
|
+
* Create a new client instance, with the needed configuration to access restricted content. This
|
|
12
|
+
* wraps the `createClient` function from `@remkoj/optimizely-graph-client` and applies some
|
|
13
|
+
* configuration defaults.
|
|
14
|
+
*
|
|
15
|
+
* @returns The newly created GraphQL Client
|
|
16
|
+
*/
|
|
17
|
+
export declare function createAuthorizedClient(token?: string, config?: OptimizelyGraphConfig): IOptiGraphClient;
|
|
18
|
+
/**
|
|
19
|
+
* Create a new client instance, with the needed configuration to access restricted content. This
|
|
20
|
+
* wraps the `createClient` function from `@remkoj/optimizely-graph-client` and applies some
|
|
21
|
+
* configuration defaults.
|
|
22
|
+
*
|
|
23
|
+
* @deprecated use createAuthorizedClient
|
|
24
|
+
* @returns The newly created GraphQL Client
|
|
25
|
+
*/
|
|
26
|
+
export declare const getAuthorizedServerClient: typeof createAuthorizedClient;
|
|
27
|
+
/**
|
|
28
|
+
* Create a new client instance. This is a direct wrapper for the `createClient` function
|
|
29
|
+
* exported from `@remkoj/optimizely-graph-client`.
|
|
30
|
+
*
|
|
31
|
+
* @deprecated use createClient
|
|
32
|
+
* @returns The newly created GraphQL Client
|
|
33
|
+
*/
|
|
34
|
+
export declare const getServerClient: typeof createClient;
|
|
35
|
+
export default createClient;
|
package/dist/client.js
CHANGED
|
@@ -1,28 +1,58 @@
|
|
|
1
1
|
import 'server-only';
|
|
2
|
-
import createBaseClient,
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { createClient as createBaseClient, AuthMode } from '@remkoj/optimizely-graph-client';
|
|
3
|
+
/**
|
|
4
|
+
* Create a new client instance. This is a direct wrapper for the `createClient` function
|
|
5
|
+
* exported from `@remkoj/optimizely-graph-client`.
|
|
6
|
+
*
|
|
7
|
+
* @returns The newly created GraphQL Client
|
|
8
|
+
*/
|
|
9
|
+
export function createClient() {
|
|
10
|
+
return createAuthorizedClient();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a new client instance, with the needed configuration to access restricted content. This
|
|
14
|
+
* wraps the `createClient` function from `@remkoj/optimizely-graph-client` and applies some
|
|
15
|
+
* configuration defaults.
|
|
16
|
+
*
|
|
17
|
+
* @returns The newly created GraphQL Client
|
|
18
|
+
*/
|
|
19
|
+
export function createAuthorizedClient(token, config) {
|
|
20
|
+
const client = createBaseClient(config);
|
|
5
21
|
if (client.debug)
|
|
6
|
-
console.log('⚪ [ContentGraph
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
export const getAuthorizedServerClient = (token) => {
|
|
10
|
-
const client = createBaseClient();
|
|
11
|
-
if (client.debug)
|
|
12
|
-
console.log('⚪ [ContentGraph Shared Client] Created new Optimizely Graph client with authentication details');
|
|
22
|
+
console.log('⚪ [ContentGraph Client] Created new Optimizely Graph client');
|
|
23
|
+
// Apply token if needed
|
|
13
24
|
if (typeof (token) == 'string' && token.length > 0) {
|
|
14
25
|
if (token == client.siteInfo.publishToken) {
|
|
15
|
-
console.warn(`🔐 [ContentGraph
|
|
26
|
+
console.warn(`🔐 [ContentGraph Client] Allowed authenticated access by publish token, switching to HMAC`);
|
|
16
27
|
client.updateAuthentication(AuthMode.HMAC);
|
|
17
28
|
}
|
|
18
|
-
else
|
|
29
|
+
else {
|
|
19
30
|
client.updateAuthentication(token);
|
|
31
|
+
}
|
|
32
|
+
if (client.debug) {
|
|
33
|
+
console.warn(`🔐 [ContentGraph Client] Updated authentication, current mode: ${client.currentAuthMode}`);
|
|
34
|
+
console.log('⚪ [ContentGraph Client] Setting disable cache feature flags');
|
|
35
|
+
}
|
|
36
|
+
client.updateFlags({ cache: false, cache_uniq: false, queryCache: false }, false);
|
|
20
37
|
}
|
|
21
|
-
if (client.debug)
|
|
22
|
-
console.log(`🟡 [ContentGraph Shared Client] Updated authentication, current mode: ${client.currentAuthMode}`);
|
|
23
38
|
return client;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a new client instance, with the needed configuration to access restricted content. This
|
|
42
|
+
* wraps the `createClient` function from `@remkoj/optimizely-graph-client` and applies some
|
|
43
|
+
* configuration defaults.
|
|
44
|
+
*
|
|
45
|
+
* @deprecated use createAuthorizedClient
|
|
46
|
+
* @returns The newly created GraphQL Client
|
|
47
|
+
*/
|
|
48
|
+
export const getAuthorizedServerClient = createAuthorizedClient;
|
|
49
|
+
/**
|
|
50
|
+
* Create a new client instance. This is a direct wrapper for the `createClient` function
|
|
51
|
+
* exported from `@remkoj/optimizely-graph-client`.
|
|
52
|
+
*
|
|
53
|
+
* @deprecated use createClient
|
|
54
|
+
* @returns The newly created GraphQL Client
|
|
55
|
+
*/
|
|
56
|
+
export const getServerClient = createClient;
|
|
57
|
+
export default createClient;
|
|
28
58
|
//# sourceMappingURL=client.js.map
|
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,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AACpB,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,QAAQ,EAAqD,MAAM,iCAAiC,CAAA;AAE/I;;;;;GAKG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,sBAAsB,EAAE,CAAA;AACjC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc,EAAE,MAA8B;IACnF,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACvC,IAAI,MAAM,CAAC,KAAK;QACd,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;IAE5E,wBAAwB;IACxB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAA;YACzG,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;QACpC,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,kEAAkE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAA;YACxG,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAA;QAC5E,CAAC;QACD,MAAM,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,CAAA;IACnF,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,sBAAsB,CAAA;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAA;AAE3C,eAAe,YAAY,CAAA"}
|
package/dist/cms-page/data.d.ts
CHANGED
|
@@ -10,7 +10,11 @@ export type GetContentByPathResponse = {
|
|
|
10
10
|
items?: MayBe<Array<{
|
|
11
11
|
__typename?: MayBe<string>;
|
|
12
12
|
_type?: MayBe<string>;
|
|
13
|
-
} & Record<string, any
|
|
13
|
+
} & Record<string, any>> | {
|
|
14
|
+
__typename?: MayBe<string>;
|
|
15
|
+
_type?: MayBe<string>;
|
|
16
|
+
} & Record<string, any>>;
|
|
17
|
+
total?: MayBe<number>;
|
|
14
18
|
}>;
|
|
15
19
|
};
|
|
16
20
|
export type GetMetaDataByPathResponse = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/cms-page/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAiB,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/cms-page/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAiB,MAAM,iBAAiB,CAAA;AAuCpD,MAAM,CAAC,MAAM,iBAAiB,GAA4B,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;IAC9E,OAAO,MAAM,CAAC,OAAO,CAAuD,aAAa,EAAE,SAAS,CAAC,CAAA;AACvG,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE;IAC5E,OAAO,MAAM,CAAC,OAAO,CAAsD,YAAY,EAAE,SAAS,CAAC,CAAA;AACrG,CAAC,CAAA;AAED,eAAe,gBAAgB,CAAA;AAE/B,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;IAiBpB,CAAA;AAEJ,MAAM,aAAa,GAAG,GAAG,CAAA;;;;;;;;;;;;;;EAcvB,CAAA"}
|
package/dist/cms-page/page.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import 'server-only';
|
|
|
2
2
|
import type { Metadata, ResolvingMetadata } from 'next';
|
|
3
3
|
import { type IRouteResolver, type Route } from '@remkoj/optimizely-graph-client/router';
|
|
4
4
|
import { type ChannelDefinition } from '@remkoj/optimizely-graph-client/channels';
|
|
5
|
-
import { type
|
|
5
|
+
import { type IOptiGraphClient } from '@remkoj/optimizely-graph-client/client';
|
|
6
6
|
import { type ComponentFactory } from '@remkoj/optimizely-cms-react/rsc';
|
|
7
7
|
import { type GetContentByPathMethod } from './data.js';
|
|
8
8
|
export type DefaultCmsPageParams = {
|
|
@@ -46,12 +46,12 @@ export type CreatePageOptions<LocaleEnum = SystemLocales, TParams extends Record
|
|
|
46
46
|
/**
|
|
47
47
|
* Main function used to retrieve the content by path
|
|
48
48
|
*/
|
|
49
|
-
getContentByPath
|
|
49
|
+
getContentByPath?: GetContentByPathMethod<LocaleEnum>;
|
|
50
50
|
/**
|
|
51
51
|
* The factory that should yield the GraphQL Client to be used within this
|
|
52
52
|
* page.
|
|
53
53
|
*/
|
|
54
|
-
client:
|
|
54
|
+
client: () => IOptiGraphClient;
|
|
55
55
|
/**
|
|
56
56
|
* The channel information used to resolve locales, domains and more
|
|
57
57
|
*/
|
package/dist/cms-page/page.js
CHANGED
|
@@ -2,27 +2,27 @@ 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/router';
|
|
6
|
-
import { OptiCmsSchema } from '@remkoj/optimizely-graph-client/client';
|
|
5
|
+
import { RouteResolver, } from '@remkoj/optimizely-graph-client/router';
|
|
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,
|
|
9
|
+
import { CmsContent, Utils, ServerContext, updateSharedServerContext, } 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';
|
|
13
|
-
import
|
|
14
|
-
import { getServerClient } from '../client.js';
|
|
13
|
+
import { createClient } from '../client.js';
|
|
15
14
|
export var SystemLocales;
|
|
16
15
|
(function (SystemLocales) {
|
|
17
16
|
SystemLocales["All"] = "ALL";
|
|
18
17
|
SystemLocales["Neutral"] = "NEUTRAL";
|
|
19
18
|
})(SystemLocales || (SystemLocales = {}));
|
|
20
19
|
const CreatePageOptionDefaults = {
|
|
21
|
-
|
|
22
|
-
client: getServerClient,
|
|
20
|
+
client: createClient,
|
|
23
21
|
routerFactory: (client) => new RouteResolver(client),
|
|
24
22
|
propsToCmsPath: ({ params }) => buildRequestPath(params),
|
|
25
|
-
routeToParams: (route) => {
|
|
23
|
+
routeToParams: (route) => {
|
|
24
|
+
return { path: urlToPath(route.url), lang: route.locale };
|
|
25
|
+
},
|
|
26
26
|
paramsToLocale: (params, channel) => {
|
|
27
27
|
if (!channel)
|
|
28
28
|
return undefined;
|
|
@@ -31,7 +31,7 @@ const CreatePageOptionDefaults = {
|
|
|
31
31
|
if (!toTest)
|
|
32
32
|
return channel.defaultLocale;
|
|
33
33
|
return channel.slugToLocale(toTest.toString());
|
|
34
|
-
}
|
|
34
|
+
},
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
37
37
|
* Generate the React Server Side component and Next.JS functions needed to render an
|
|
@@ -44,36 +44,31 @@ const CreatePageOptionDefaults = {
|
|
|
44
44
|
*/
|
|
45
45
|
export function createPage(factory, options) {
|
|
46
46
|
// Build the global/shared configuration for the Optimizely CMS Page
|
|
47
|
-
const { getContentByPath, client: clientFactory, channel, propsToCmsPath, routeToParams, routerFactory, paramsToLocale } = {
|
|
47
|
+
const { getContentByPath, client: clientFactory, channel, propsToCmsPath, routeToParams, routerFactory, paramsToLocale, } = {
|
|
48
48
|
...CreatePageOptionDefaults,
|
|
49
|
-
...options
|
|
50
|
-
};
|
|
51
|
-
// Create the global Graph Client
|
|
52
|
-
const globalClient = clientFactory();
|
|
53
|
-
// Create the global Router instance
|
|
54
|
-
const router = routerFactory(globalClient);
|
|
55
|
-
const getInfoByPath = async (requestPath, siteId) => {
|
|
56
|
-
const route = await router.getContentInfoByPath(requestPath, siteId);
|
|
57
|
-
if (!route)
|
|
58
|
-
return undefined;
|
|
59
|
-
const contentLink = router.routeToContentLink(route);
|
|
60
|
-
const contentType = route.contentType;
|
|
61
|
-
const graphLocale = localeToGraphLocale(route.locale, channel);
|
|
62
|
-
return [route, contentLink, contentType, graphLocale];
|
|
49
|
+
...options,
|
|
63
50
|
};
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
51
|
+
function buildContext(initialLocale = 'en') {
|
|
52
|
+
return new ServerContext({
|
|
53
|
+
factory,
|
|
54
|
+
client: clientFactory(),
|
|
55
|
+
mode: 'public',
|
|
56
|
+
locale: initialLocale,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
69
59
|
const pageDefintion = {
|
|
70
|
-
generateStaticParams: async () =>
|
|
60
|
+
generateStaticParams: async () => {
|
|
61
|
+
const client = clientFactory();
|
|
62
|
+
const router = routerFactory(client);
|
|
63
|
+
const channelId = getChannelId(client, channel);
|
|
64
|
+
const allRoutes = await router.getRoutes(channelId, channel ? undefined : true);
|
|
65
|
+
return allRoutes.map((r) => routeToParams(r));
|
|
66
|
+
},
|
|
71
67
|
generateMetadata: async ({ params, searchParams }, parent) => {
|
|
72
68
|
// Get context
|
|
73
|
-
const context =
|
|
74
|
-
context.
|
|
75
|
-
|
|
76
|
-
// Read variables from request
|
|
69
|
+
const context = buildContext();
|
|
70
|
+
const channelId = getChannelId(context.client, channel);
|
|
71
|
+
// Read variables from request
|
|
77
72
|
const requestPath = propsToCmsPath({ params, searchParams });
|
|
78
73
|
if (!requestPath)
|
|
79
74
|
return Promise.resolve({});
|
|
@@ -84,8 +79,8 @@ export function createPage(factory, options) {
|
|
|
84
79
|
if (context.isDebug)
|
|
85
80
|
console.log(`⚪ [CmsPage.generateMetadata] Processed Next.JS route: ${JSON.stringify(params)} => Optimizely CMS route: ${JSON.stringify({ path: requestPath, siteId: channelId })}`);
|
|
86
81
|
// Resolve the route to a content link
|
|
87
|
-
const routeInfo = await getInfoByPath(requestPath,
|
|
88
|
-
if (!routeInfo) {
|
|
82
|
+
const routeInfo = await getInfoByPath(context.client, routerFactory, requestPath, channel);
|
|
83
|
+
if (!routeInfo || !routeInfo[0]) {
|
|
89
84
|
if (context.isDebug)
|
|
90
85
|
console.log('⚪ [CmsPage.generateMetadata] No data received');
|
|
91
86
|
return Promise.resolve({});
|
|
@@ -95,32 +90,34 @@ export function createPage(factory, options) {
|
|
|
95
90
|
console.log(`⚪ [CmsPage.generateMetadata] Retrieved content info:`, route);
|
|
96
91
|
// Update context from route
|
|
97
92
|
context.setLocale(route.locale);
|
|
93
|
+
// Make the shared server context available
|
|
94
|
+
updateSharedServerContext(context);
|
|
98
95
|
// Fetch the metadata based upon the actual content type and resolve parent
|
|
99
|
-
const metaResolver = new MetaDataResolver(
|
|
96
|
+
const metaResolver = new MetaDataResolver(context.client);
|
|
100
97
|
const [pageMetadata, baseMetadata] = await Promise.all([
|
|
101
98
|
metaResolver.resolve(factory, contentLink, contentType, graphLocale),
|
|
102
|
-
parent
|
|
99
|
+
parent,
|
|
103
100
|
]);
|
|
104
101
|
if (context.isDebug)
|
|
105
102
|
console.log(`⚪ [CmsPage.generateMetadata] Component yielded metadata:`, pageMetadata);
|
|
106
103
|
// Make sure merging of objects goes correctly
|
|
107
104
|
for (const metaKey of Object.getOwnPropertyNames(pageMetadata)) {
|
|
108
|
-
if (
|
|
105
|
+
if (isObject(pageMetadata[metaKey]) &&
|
|
106
|
+
isObject(baseMetadata[metaKey])) {
|
|
109
107
|
//@ts-expect-error Silence error due to failed introspection...
|
|
110
108
|
pageMetadata[metaKey] = deepmerge(baseMetadata[metaKey], pageMetadata[metaKey], { arrayMerge: (target, source) => [...source] });
|
|
111
109
|
}
|
|
112
110
|
}
|
|
113
111
|
// Not sure, but needed somehow...
|
|
114
|
-
if (typeof
|
|
112
|
+
if (typeof baseMetadata.metadataBase == 'string' &&
|
|
113
|
+
baseMetadata.metadataBase.length > 1) {
|
|
115
114
|
pageMetadata.metadataBase = new URL(baseMetadata.metadataBase);
|
|
116
115
|
}
|
|
117
116
|
return pageMetadata;
|
|
118
117
|
},
|
|
119
118
|
CmsPage: async ({ params, searchParams }) => {
|
|
120
119
|
// Prepare the context
|
|
121
|
-
const context =
|
|
122
|
-
context.setOptimizelyGraphClient(globalClient);
|
|
123
|
-
context.setComponentFactory(factory);
|
|
120
|
+
const context = buildContext();
|
|
124
121
|
// Analyze the Next.JS Request props
|
|
125
122
|
const requestPath = propsToCmsPath({ params, searchParams });
|
|
126
123
|
if (context.isDebug)
|
|
@@ -133,63 +130,113 @@ export function createPage(factory, options) {
|
|
|
133
130
|
if (initialLocale)
|
|
134
131
|
context.setLocale(initialLocale);
|
|
135
132
|
// Resolve the content based upon the path
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
if (context.isDebug)
|
|
142
|
-
console.log(`⚪ [CmsPage] Processed Next.JS route: ${JSON.stringify(params)} => getContentByPath Variables: ${JSON.stringify(requestVars)}`);
|
|
143
|
-
const response = await getContentByPath(globalClient, requestVars);
|
|
144
|
-
const info = (response?.content?.items ?? [])[0];
|
|
145
|
-
if (!info) {
|
|
146
|
-
if (context.isDebugOrDevelopment) {
|
|
147
|
-
console.error(`🔴 [CmsPage] Unable to load content for ${requestPath}, data received: `, response);
|
|
148
|
-
}
|
|
149
|
-
return notFound();
|
|
150
|
-
}
|
|
151
|
-
else if (context.isDebugOrDevelopment && (response?.content?.items ?? []).length > 1) {
|
|
152
|
-
console.warn(`🟠 [CmsPage] Resolving content for ${requestPath}, yielded ${(response?.content?.items ?? []).length} items, picked:`, info);
|
|
153
|
-
}
|
|
154
|
-
// Extract the type & link
|
|
155
|
-
const contentType = Utils.normalizeContentType(info._metadata?.types);
|
|
156
|
-
const contentLink = normalizeContentLinkWithLocale(info._metadata);
|
|
157
|
-
if (!contentLink) {
|
|
158
|
-
console.error("🔴 [CmsPage] Unable to infer the contentLink from the retrieved content, this should not have happened!");
|
|
133
|
+
const lookupData = getContentByPath
|
|
134
|
+
? await loadContentByPath(context.client, getContentByPath, requestPath, channel)
|
|
135
|
+
: await getInfoByPath(context.client, routerFactory, requestPath, channel);
|
|
136
|
+
if (!lookupData) {
|
|
137
|
+
console.error(`🔴 [CmsPage] Unable to resolve the content for ${JSON.stringify(params)}!`);
|
|
159
138
|
return notFound();
|
|
160
139
|
}
|
|
140
|
+
const [route, contentLink, contentType, graphLocale, contentData] = lookupData;
|
|
161
141
|
if (contentLink?.locale)
|
|
162
142
|
context.setLocale(contentLink?.locale);
|
|
143
|
+
// Make the shared server context available
|
|
144
|
+
updateSharedServerContext(context);
|
|
163
145
|
// Render the content link
|
|
164
|
-
return _jsx(CmsContent, { contentType: contentType, contentLink: contentLink, fragmentData:
|
|
165
|
-
}
|
|
146
|
+
return (_jsx(CmsContent, { contentType: contentType, contentLink: contentLink, fragmentData: contentData ?? undefined, ctx: context }));
|
|
147
|
+
},
|
|
166
148
|
};
|
|
167
149
|
return pageDefintion;
|
|
168
150
|
}
|
|
151
|
+
// Helper function to obtain the info by path
|
|
152
|
+
async function getInfoByPath(client, routerFactory, requestPath, channel) {
|
|
153
|
+
const channelId = getChannelId(client, channel);
|
|
154
|
+
const router = routerFactory(client);
|
|
155
|
+
const route = await router.getContentInfoByPath(requestPath, channelId);
|
|
156
|
+
if (!route)
|
|
157
|
+
return undefined;
|
|
158
|
+
const contentLink = router.routeToContentLink(route);
|
|
159
|
+
const contentType = route.contentType;
|
|
160
|
+
const graphLocale = localeToGraphLocale(route.locale, channel);
|
|
161
|
+
return [route, contentLink, contentType, graphLocale, null];
|
|
162
|
+
}
|
|
163
|
+
async function loadContentByPath(client, getContentByPath, requestPath, channel, isDebug = false) {
|
|
164
|
+
const channelId = getChannelId(client, channel);
|
|
165
|
+
const pathForRequest = [
|
|
166
|
+
requestPath,
|
|
167
|
+
requestPath.endsWith('/')
|
|
168
|
+
? requestPath.substring(0, requestPath.length - 1)
|
|
169
|
+
: requestPath + '/',
|
|
170
|
+
].filter((x) => x);
|
|
171
|
+
const requestVars = {
|
|
172
|
+
path: pathForRequest,
|
|
173
|
+
siteId: channelId,
|
|
174
|
+
};
|
|
175
|
+
if (isDebug)
|
|
176
|
+
console.log(`⚪ [CmsPage] Processed Next.JS route => getContentByPath Variables: ${JSON.stringify(requestVars)}`);
|
|
177
|
+
const response = await getContentByPath(client, requestVars);
|
|
178
|
+
const info = Array.isArray(response?.content?.items)
|
|
179
|
+
? response?.content?.items[0]
|
|
180
|
+
: response?.content?.items;
|
|
181
|
+
if (!info) {
|
|
182
|
+
if (isDebug) {
|
|
183
|
+
console.error(`🔴 [CmsPage] Unable to load content for ${requestPath}, data received: `, response);
|
|
184
|
+
}
|
|
185
|
+
return notFound();
|
|
186
|
+
}
|
|
187
|
+
else if (isDebug && (response?.content?.total ?? 0) > 1) {
|
|
188
|
+
console.warn(`🟠 [CmsPage] Resolving content for ${requestPath}, yielded ${response?.content?.total ?? 0} items, picked:`, info);
|
|
189
|
+
}
|
|
190
|
+
// Extract the type & link
|
|
191
|
+
const contentType = Utils.normalizeContentType(info._metadata?.types);
|
|
192
|
+
const contentLink = normalizeContentLinkWithLocale(info._metadata);
|
|
193
|
+
if (!contentLink) {
|
|
194
|
+
console.error('🔴 [CmsPage] Unable to infer the contentLink from the retrieved content, this should not have happened!');
|
|
195
|
+
return notFound();
|
|
196
|
+
}
|
|
197
|
+
const graphLocale = localeToGraphLocale(info._metadata?.locale, channel);
|
|
198
|
+
return [null, contentLink, contentType, graphLocale, info];
|
|
199
|
+
}
|
|
200
|
+
function getChannelId(client, channel) {
|
|
201
|
+
return channel
|
|
202
|
+
? client.currentOptiCmsSchema == OptiCmsSchema.CMS12
|
|
203
|
+
? channel.id
|
|
204
|
+
: getPrimaryURL(channel).origin
|
|
205
|
+
: undefined;
|
|
206
|
+
}
|
|
169
207
|
/**
|
|
170
208
|
*
|
|
171
209
|
*
|
|
172
210
|
* @param param0 The URL parameters
|
|
173
211
|
* @returns The request path as understood by Graph
|
|
174
212
|
*/
|
|
175
|
-
function buildRequestPath({ lang, path }) {
|
|
213
|
+
function buildRequestPath({ lang, path, }) {
|
|
176
214
|
const slugs = [];
|
|
177
215
|
if (path)
|
|
178
|
-
slugs.push(...path.filter(x => x));
|
|
216
|
+
slugs.push(...path.filter((x) => x));
|
|
179
217
|
if (lang)
|
|
180
218
|
slugs.unshift(lang);
|
|
181
219
|
if (slugs.length == 0)
|
|
182
220
|
return '/';
|
|
183
|
-
const fullPath = '/' +
|
|
221
|
+
const fullPath = '/' +
|
|
222
|
+
slugs
|
|
223
|
+
.filter((x) => x && x.length > 0)
|
|
224
|
+
.map((x) => decodeURIComponent(x))
|
|
225
|
+
.join('/');
|
|
184
226
|
if (!slugs[slugs.length - 1].includes('.'))
|
|
185
227
|
return fullPath + '/';
|
|
186
228
|
return fullPath;
|
|
187
229
|
}
|
|
188
230
|
function getPrimaryURL(chnl) {
|
|
189
|
-
const dd = chnl.domains.filter(x => x.isPrimary).at(0) ?? chnl.domains.at(0);
|
|
231
|
+
const dd = chnl.domains.filter((x) => x.isPrimary).at(0) ?? chnl.domains.at(0);
|
|
190
232
|
if (!dd)
|
|
191
233
|
return chnl.getPrimaryDomain();
|
|
192
|
-
const s = dd.name.startsWith('localhost') || dd.name.indexOf('.local') > 0
|
|
234
|
+
const s = dd.name.startsWith('localhost') || dd.name.indexOf('.local') > 0
|
|
235
|
+
? 'http:'
|
|
236
|
+
: 'https:';
|
|
193
237
|
return new URL(`${s}//${dd.name}`);
|
|
194
238
|
}
|
|
239
|
+
function isObject(toTest) {
|
|
240
|
+
return typeof toTest == 'object' && toTest != null && toTest != undefined;
|
|
241
|
+
}
|
|
195
242
|
//# 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/ope/page.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import 'server-only';
|
|
3
3
|
import { contentLinkToString, localeToGraphLocale, } from '@remkoj/optimizely-graph-client/utils';
|
|
4
|
-
import {
|
|
4
|
+
import { ServerContext, Utils, CmsContent, updateSharedServerContext, } from '@remkoj/optimizely-cms-react/rsc';
|
|
5
5
|
import { notFound } from 'next/navigation.js';
|
|
6
6
|
import OnPageEdit from '../components/on-page-edit.js';
|
|
7
|
-
import {
|
|
7
|
+
import { createAuthorizedClient } from '../client.js';
|
|
8
8
|
import React from 'react';
|
|
9
9
|
import Script from 'next/script.js';
|
|
10
10
|
import { getContentById } from './data.js';
|
|
@@ -13,7 +13,7 @@ const defaultOptions = {
|
|
|
13
13
|
refreshNotice: () => _jsx(_Fragment, {}),
|
|
14
14
|
layout: (props) => _jsx(_Fragment, { children: props.children }),
|
|
15
15
|
loader: getContentById,
|
|
16
|
-
clientFactory: (token) =>
|
|
16
|
+
clientFactory: (token) => createAuthorizedClient(token),
|
|
17
17
|
communicationInjectorPath: '/util/javascript/communicationinjector.js',
|
|
18
18
|
contentResolver: getContentRequest,
|
|
19
19
|
requestValidator: isValidRequest,
|
|
@@ -29,11 +29,12 @@ const defaultOptions = {
|
|
|
29
29
|
*/
|
|
30
30
|
export function createEditPageComponent(factory, options) {
|
|
31
31
|
const { layout: PageLayout, refreshNotice: RefreshNotice, loader: getContentById, clientFactory, communicationInjectorPath, contentResolver: resolveContent, requestValidator: validateRequest, refreshTimeout, } = { ...defaultOptions, ...options };
|
|
32
|
+
function isDevelopment() {
|
|
33
|
+
return process.env.NODE_ENV == 'development';
|
|
34
|
+
}
|
|
32
35
|
async function EditPage(props) {
|
|
33
|
-
// Create context
|
|
34
|
-
const context = getServerContext();
|
|
35
36
|
// Validate the search parameters
|
|
36
|
-
if (!validateRequest(props, false,
|
|
37
|
+
if (!validateRequest(props, false, isDevelopment())) {
|
|
37
38
|
console.error('🔴 [OnPageEdit] Invalid edit mode request');
|
|
38
39
|
return notFound();
|
|
39
40
|
}
|
|
@@ -46,10 +47,11 @@ export function createEditPageComponent(factory, options) {
|
|
|
46
47
|
const { token, ctx, ...contentRequest } = contentRequestInfo;
|
|
47
48
|
// Build context
|
|
48
49
|
const client = clientFactory(token);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
const context = new ServerContext({
|
|
51
|
+
client,
|
|
52
|
+
factory,
|
|
53
|
+
mode: ctx,
|
|
54
|
+
});
|
|
53
55
|
// Get information from the Request URI
|
|
54
56
|
if (context.isDebug) {
|
|
55
57
|
console.log('⚪ [OnPageEdit] Request context:', ctx);
|
|
@@ -66,7 +68,9 @@ export function createEditPageComponent(factory, options) {
|
|
|
66
68
|
JSON.stringify(contentRequest) +
|
|
67
69
|
' yielded more then one item, picking first matching');
|
|
68
70
|
}
|
|
69
|
-
const contentItem = (contentInfo?.content?.items
|
|
71
|
+
const contentItem = (Array.isArray(contentInfo?.content?.items)
|
|
72
|
+
? contentInfo?.content?.items[0]
|
|
73
|
+
: contentInfo?.content?.items) ?? undefined;
|
|
70
74
|
const contentType = Utils.normalizeContentType(contentItem?._metadata.types);
|
|
71
75
|
// Return a 404 if the content item or type could not be resolved
|
|
72
76
|
if (!contentItem) {
|
|
@@ -92,10 +96,12 @@ export function createEditPageComponent(factory, options) {
|
|
|
92
96
|
context.setEditableContentId(contentLink);
|
|
93
97
|
if (contentLink.locale)
|
|
94
98
|
context.setLocale(contentLink.locale);
|
|
99
|
+
// Make the shared server context available
|
|
100
|
+
updateSharedServerContext(context);
|
|
95
101
|
// Render the content, with edit mode context
|
|
96
102
|
const isPage = contentType.some((x) => x?.toLowerCase() == 'page') ?? false;
|
|
97
103
|
const Layout = isPage ? PageLayout : React.Fragment;
|
|
98
|
-
const output = (_jsxs(_Fragment, { children: [_jsx(Script, { src: new URL(communicationInjectorPath, client.siteInfo.cmsURL).href, strategy: "afterInteractive" }), _jsxs(Layout, { locale: contentItem.locale?.name ?? '', children: [_jsx(OnPageEdit, { refreshTimeout: refreshTimeout, children: _jsx(RefreshNotice, {}) }), _jsx(CmsContent, { contentType: contentType, contentLink: contentLink, fragmentData: contentItem })] }), context.isDebug && (_jsxs("div", { className: "optly-contentLink", children: ["ContentItem:", ' ', contentLink
|
|
104
|
+
const output = (_jsxs(_Fragment, { children: [_jsx(Script, { src: new URL(communicationInjectorPath, client.siteInfo.cmsURL).href, strategy: "afterInteractive" }), _jsxs(Layout, { locale: contentItem.locale?.name ?? '', children: [_jsx(OnPageEdit, { refreshTimeout: refreshTimeout, children: _jsx(RefreshNotice, {}) }), _jsx(CmsContent, { contentType: contentType, contentLink: contentLink, fragmentData: contentItem, ctx: context })] }), context.isDebug && (_jsxs("div", { className: "optly-contentLink", children: ["ContentItem:", ' ', contentLink
|
|
99
105
|
? contentLinkToString(contentLink)
|
|
100
106
|
: 'Invalid content link returned from Optimizely Graph'] }))] }));
|
|
101
107
|
return output;
|
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;AAOpB,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,uCAAuC,CAAA;AAE9C,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/ope/page.tsx"],"names":[],"mappings":"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"}
|
package/dist/ope/types.d.ts
CHANGED
|
@@ -115,7 +115,10 @@ export type GetContentByIdData = {
|
|
|
115
115
|
items?: MayBe<Array<{
|
|
116
116
|
__typename?: MayBe<string>;
|
|
117
117
|
_type?: MayBe<string>;
|
|
118
|
-
} & Record<string, any
|
|
118
|
+
} & Record<string, any>> | ({
|
|
119
|
+
__typename?: MayBe<string>;
|
|
120
|
+
_type?: MayBe<string>;
|
|
121
|
+
} & Record<string, any>)>;
|
|
119
122
|
total?: MayBe<number>;
|
|
120
123
|
}>;
|
|
121
124
|
};
|
package/dist/publish/index.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type NextRequest, NextResponse } from 'next/server.js';
|
|
2
2
|
import { revalidatePath, revalidateTag } from "next/cache.js";
|
|
3
|
-
import { type ClientFactory, OptiCmsSchema, RouteResolver, type Route } from '@remkoj/optimizely-graph-client';
|
|
3
|
+
import { type ClientFactory, type IOptiGraphClient, OptiCmsSchema, RouteResolver, type Route } from '@remkoj/optimizely-graph-client';
|
|
4
4
|
export { type NextRequest, NextResponse } from 'next/server.js';
|
|
5
5
|
export type PublishApiHandler = (req: NextRequest) => Promise<NextResponse<PublishApiResponse>> | NextResponse<PublishApiResponse>;
|
|
6
|
-
export type PublishScopes =
|
|
6
|
+
export type PublishScopes = Parameters<typeof revalidatePath>[1];
|
|
7
|
+
export type DynamicScopes = NonNullable<Parameters<typeof revalidatePath>[1]>;
|
|
7
8
|
export type PublishHookData = {
|
|
8
9
|
timestamp: string;
|
|
9
10
|
tenantId: string;
|
|
@@ -49,6 +50,10 @@ export type PublishApiOptions = {
|
|
|
49
50
|
* The scopes for which to revalidate the cache
|
|
50
51
|
*/
|
|
51
52
|
scopes: Array<PublishScopes>;
|
|
53
|
+
/**
|
|
54
|
+
* The scopes for which to revalidate the cache for dynamic routes
|
|
55
|
+
*/
|
|
56
|
+
dynamicScopes: Array<DynamicScopes>;
|
|
52
57
|
/**
|
|
53
58
|
* The tags to revalidate the cache for
|
|
54
59
|
*/
|
|
@@ -63,7 +68,7 @@ export type PublishApiOptions = {
|
|
|
63
68
|
* The Optimizely Graph client to use for Graph Operations needed to publish
|
|
64
69
|
* content
|
|
65
70
|
*/
|
|
66
|
-
client: ClientFactory;
|
|
71
|
+
client: ClientFactory | IOptiGraphClient;
|
|
67
72
|
/**
|
|
68
73
|
* The router to use when the publishing optimization is enabled
|
|
69
74
|
*/
|
|
@@ -90,6 +95,8 @@ export type PublishApiOptions = {
|
|
|
90
95
|
itemIdToKeyAndLocale: (itemId: string, subject?: PublishHookData['type']['subject']) => {
|
|
91
96
|
key: string;
|
|
92
97
|
locale: string;
|
|
98
|
+
version?: string;
|
|
99
|
+
status?: string;
|
|
93
100
|
} | undefined;
|
|
94
101
|
/**
|
|
95
102
|
* Basic filter for bulk operations, to only select those items in a bulk operation
|
|
@@ -102,8 +109,11 @@ export type PublishApiOptions = {
|
|
|
102
109
|
};
|
|
103
110
|
export type PublishApiResponse = {
|
|
104
111
|
revalidated: {
|
|
105
|
-
paths: Array<
|
|
106
|
-
|
|
112
|
+
paths: Array<string | {
|
|
113
|
+
path: string;
|
|
114
|
+
scope: PublishScopes;
|
|
115
|
+
}>;
|
|
116
|
+
scopes?: Array<PublishScopes>;
|
|
107
117
|
tags: Array<Parameters<typeof revalidateTag>[0]>;
|
|
108
118
|
};
|
|
109
119
|
optimized: boolean;
|
|
@@ -113,5 +123,11 @@ export type PublishApiResponse = {
|
|
|
113
123
|
optimized?: boolean;
|
|
114
124
|
error: string;
|
|
115
125
|
};
|
|
126
|
+
/**
|
|
127
|
+
* Create the default handler for webhooks received from Optimizely Graph.
|
|
128
|
+
*
|
|
129
|
+
* @param options The configuration fo the API
|
|
130
|
+
* @returns The created API Handler
|
|
131
|
+
*/
|
|
116
132
|
export declare function createPublishApi(options?: Partial<PublishApiOptions>): PublishApiHandler;
|
|
117
133
|
export default createPublishApi;
|
package/dist/publish/index.js
CHANGED
|
@@ -1,32 +1,43 @@
|
|
|
1
1
|
import { NextResponse } from 'next/server.js';
|
|
2
2
|
import { revalidatePath, revalidateTag } from "next/cache.js";
|
|
3
3
|
import { RouteResolver } from '@remkoj/optimizely-graph-client';
|
|
4
|
-
import {
|
|
4
|
+
import { createAuthorizedClient } from '../client.js';
|
|
5
5
|
export { NextResponse } from 'next/server.js';
|
|
6
6
|
const publishApiDefaults = {
|
|
7
7
|
paths: ['/', '/[[...path]]', '/[lang]', '/[lang]/[[...path]]'],
|
|
8
8
|
additionalPaths: [],
|
|
9
|
-
scopes: [
|
|
9
|
+
scopes: [undefined, 'layout'],
|
|
10
|
+
dynamicScopes: ['page', 'layout'],
|
|
10
11
|
tags: [],
|
|
11
12
|
optimizePublish: false,
|
|
12
|
-
client:
|
|
13
|
+
client: createAuthorizedClient,
|
|
13
14
|
router: {},
|
|
14
15
|
hookDataFilter: (hookType) => hookType.subject == 'bulk' && hookType.action == 'completed',
|
|
15
16
|
bulkItemStatusFilter: (bulkItemStatus) => bulkItemStatus == "indexed" || bulkItemStatus == "deleted",
|
|
16
17
|
itemIdToKeyAndLocale: (id) => {
|
|
17
|
-
const
|
|
18
|
+
const idParts = id.split('_');
|
|
19
|
+
// The version may or may not be in the ID, so parsing accordingly
|
|
20
|
+
const [key, version, locale, status] = idParts.length >= 4 ?
|
|
21
|
+
idParts :
|
|
22
|
+
[idParts[0], undefined, idParts[1], idParts[2]];
|
|
23
|
+
// Only return a value if we have both a key & locale
|
|
18
24
|
if (key && locale)
|
|
19
|
-
return { key: key.replaceAll('-', ''), locale,
|
|
25
|
+
return { key: key.replaceAll('-', ''), locale, version, status };
|
|
20
26
|
return undefined;
|
|
21
27
|
}
|
|
22
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Create the default handler for webhooks received from Optimizely Graph.
|
|
31
|
+
*
|
|
32
|
+
* @param options The configuration fo the API
|
|
33
|
+
* @returns The created API Handler
|
|
34
|
+
*/
|
|
23
35
|
export function createPublishApi(options) {
|
|
24
|
-
const { paths, additionalPaths, optimizePublish, client: clientFactory, router: routerFactory, hookDataFilter, tags, scopes, itemIdToKeyAndLocale, bulkItemStatusFilter } = {
|
|
36
|
+
const { paths, additionalPaths, optimizePublish, client: clientFactory, router: routerFactory, hookDataFilter, tags, scopes, dynamicScopes, itemIdToKeyAndLocale, bulkItemStatusFilter } = {
|
|
25
37
|
...publishApiDefaults,
|
|
26
38
|
...options
|
|
27
39
|
};
|
|
28
|
-
|
|
29
|
-
function getRouteResolver() {
|
|
40
|
+
function getRouteResolver(client) {
|
|
30
41
|
return typeof routerFactory == 'function' ? routerFactory() : new RouteResolver(client, routerFactory?.urlBase, routerFactory?.resolverMode ?? client.currentOptiCmsSchema);
|
|
31
42
|
}
|
|
32
43
|
function resolveTags(data) {
|
|
@@ -36,13 +47,31 @@ export function createPublishApi(options) {
|
|
|
36
47
|
return Promise.resolve(tags);
|
|
37
48
|
return Promise.resolve([tags]);
|
|
38
49
|
}
|
|
39
|
-
function
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
50
|
+
function isDynamic(path) {
|
|
51
|
+
return path.indexOf("[") >= 0;
|
|
52
|
+
}
|
|
53
|
+
function publishAll(targetPaths, targetTags, optimized = false, publishScopes = scopes, dscopes = dynamicScopes) {
|
|
54
|
+
const publishedPathAndScopes = [];
|
|
55
|
+
// Publish the paths targeted explicitly
|
|
56
|
+
targetPaths.forEach(path => {
|
|
57
|
+
const scopes = isDynamic(path) ? dscopes : publishScopes;
|
|
58
|
+
scopes.forEach(scope => {
|
|
59
|
+
revalidatePath(path, scope);
|
|
60
|
+
publishedPathAndScopes.push({ path, scope });
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
// Publish the enforced paths
|
|
64
|
+
additionalPaths.forEach(path => {
|
|
65
|
+
const scopes = isDynamic(path) ? dscopes : publishScopes;
|
|
66
|
+
scopes.forEach(scope => {
|
|
67
|
+
revalidatePath(path, scope);
|
|
68
|
+
publishedPathAndScopes.push({ path, scope });
|
|
69
|
+
});
|
|
43
70
|
});
|
|
71
|
+
// Publish the tags te published
|
|
44
72
|
targetTags.forEach(tag => revalidateTag(tag));
|
|
45
|
-
|
|
73
|
+
// Build the outcome
|
|
74
|
+
return { revalidated: { paths: publishedPathAndScopes, tags: targetTags }, optimized };
|
|
46
75
|
}
|
|
47
76
|
function getItemIds(hookData) {
|
|
48
77
|
let items = [];
|
|
@@ -68,6 +97,7 @@ export function createPublishApi(options) {
|
|
|
68
97
|
}
|
|
69
98
|
const requestHandler = async (req) => {
|
|
70
99
|
// Validate the request
|
|
100
|
+
const client = typeof (clientFactory) == 'object' ? clientFactory : clientFactory();
|
|
71
101
|
const publishToken = client.siteInfo.publishToken;
|
|
72
102
|
const requestToken = getRequestToken(req);
|
|
73
103
|
if (!publishToken) {
|
|
@@ -88,21 +118,26 @@ export function createPublishApi(options) {
|
|
|
88
118
|
// Purge everything if not known (e.g. for a GET request)
|
|
89
119
|
if (!webhookData) {
|
|
90
120
|
console.error("[Publish-API] No hook data received, optimization disabled");
|
|
91
|
-
|
|
121
|
+
const responseData = publishAll(paths, publishTags);
|
|
122
|
+
console.debug("[Publish-API] Publish result:", JSON.stringify(responseData));
|
|
123
|
+
return NextResponse.json(responseData);
|
|
92
124
|
}
|
|
93
125
|
// Make sure we're allowed to process the hook
|
|
94
126
|
if (!hookDataFilter(webhookData.type)) {
|
|
95
127
|
console.log("[Publish-API] Webhook ignored due to hookDataFilter", webhookData.type);
|
|
96
|
-
return NextResponse.json({ optimized: false, revalidated: { paths: [],
|
|
128
|
+
return NextResponse.json({ optimized: false, revalidated: { paths: [], tags: [] } });
|
|
97
129
|
}
|
|
98
130
|
// If we're not optimizing, just publish everything
|
|
99
|
-
if (!optimizePublish)
|
|
100
|
-
|
|
131
|
+
if (!optimizePublish) {
|
|
132
|
+
const responseData = publishAll(paths, publishTags);
|
|
133
|
+
console.debug("[Publish-API] Publish result:", JSON.stringify(responseData));
|
|
134
|
+
return NextResponse.json(responseData);
|
|
135
|
+
}
|
|
101
136
|
// Get the actual content ids from the hook data
|
|
102
137
|
const contentIds = getItemIds(webhookData);
|
|
103
138
|
console.debug("[Publish-API] Content items to publish:", JSON.stringify(contentIds));
|
|
104
139
|
// Resolve the contentids to paths
|
|
105
|
-
const router = getRouteResolver();
|
|
140
|
+
const router = getRouteResolver(client);
|
|
106
141
|
const results = await Promise.allSettled(contentIds.map(contentId => router.getContentInfoById(contentId.key, contentId.locale)));
|
|
107
142
|
const pathsToFlush = results.map(result => {
|
|
108
143
|
if (result.status == "rejected") {
|
|
@@ -113,7 +148,9 @@ export function createPublishApi(options) {
|
|
|
113
148
|
}).filter(x => x);
|
|
114
149
|
console.debug("[Publish-API] Content paths to publish:", JSON.stringify(pathsToFlush));
|
|
115
150
|
// Flush these paths
|
|
116
|
-
|
|
151
|
+
const responseData = publishAll(pathsToFlush, publishTags, true);
|
|
152
|
+
console.debug("[Publish-API] Publish result:", JSON.stringify(responseData));
|
|
153
|
+
return NextResponse.json(responseData);
|
|
117
154
|
}
|
|
118
155
|
catch (e) {
|
|
119
156
|
console.error("[Publish-API] Error handling publishing request", e?.message ?? e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/publish/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/publish/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@remkoj/optimizely-cms-nextjs",
|
|
3
3
|
"description": "Next.JS integration for Optimizely SaaS CMS",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
|
-
"version": "
|
|
5
|
+
"version": "5.0.1",
|
|
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",
|
|
@@ -44,29 +44,29 @@
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@remkoj/optimizely-cms-react": "
|
|
48
|
-
"@remkoj/optimizely-graph-client": "
|
|
47
|
+
"@remkoj/optimizely-cms-react": "5.0.1",
|
|
48
|
+
"@remkoj/optimizely-graph-client": "5.0.1",
|
|
49
49
|
"@types/negotiator": "^0.6.3",
|
|
50
|
-
"@types/node": "^22.
|
|
51
|
-
"@types/react": "^18.3.
|
|
52
|
-
"@types/react-dom": "18.3.
|
|
50
|
+
"@types/node": "^22.14.1",
|
|
51
|
+
"@types/react": "^18.3.20",
|
|
52
|
+
"@types/react-dom": "18.3.6",
|
|
53
53
|
"graphql": "^16.10.0",
|
|
54
54
|
"graphql-request": "^6.1.0",
|
|
55
|
-
"next": "^14.2.
|
|
55
|
+
"next": "^14.2.28",
|
|
56
56
|
"prop-types": "^15.8.1",
|
|
57
57
|
"react": "^18.3.1",
|
|
58
58
|
"react-dom": "^18.3.1",
|
|
59
59
|
"scheduler": "^0.25.0",
|
|
60
|
-
"typescript": "^5.
|
|
60
|
+
"typescript": "^5.8.3"
|
|
61
61
|
},
|
|
62
62
|
"dependencies": {
|
|
63
|
-
"@formatjs/intl-localematcher": "^0.6.
|
|
63
|
+
"@formatjs/intl-localematcher": "^0.6.1",
|
|
64
64
|
"deepmerge": "^4.3.1",
|
|
65
65
|
"negotiator": "^1.0.0"
|
|
66
66
|
},
|
|
67
67
|
"peerDependencies": {
|
|
68
|
-
"@remkoj/optimizely-cms-react": "^
|
|
69
|
-
"@remkoj/optimizely-graph-client": "^
|
|
68
|
+
"@remkoj/optimizely-cms-react": "^5.0.1",
|
|
69
|
+
"@remkoj/optimizely-graph-client": "^5.0.1",
|
|
70
70
|
"graphql": "^16",
|
|
71
71
|
"graphql-request": "^6",
|
|
72
72
|
"next": "^14",
|