@sitecore-content-sdk/nextjs 0.1.0-beta.8 → 0.1.0-canary.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/README.md +5 -4
- package/client.d.ts +1 -0
- package/client.js +1 -0
- package/component-props-loader.d.ts +1 -0
- package/component-props-loader.js +3 -0
- package/dist/cjs/client/index.js +10 -0
- package/dist/cjs/client/sitecore-nextjs-client.js +117 -0
- package/dist/cjs/components/RichText.js +16 -4
- package/dist/cjs/config/define-cli-config.js +30 -0
- package/dist/cjs/config/index.js +3 -1
- package/dist/cjs/editing/editing-config-middleware.js +1 -3
- package/dist/cjs/editing/editing-render-middleware.js +13 -9
- package/dist/cjs/editing/index.js +2 -2
- package/dist/cjs/index.js +16 -18
- package/dist/cjs/middleware/index.js +3 -1
- package/dist/cjs/middleware/middleware.js +23 -12
- package/dist/cjs/middleware/multisite-middleware.js +19 -8
- package/dist/cjs/middleware/personalize-middleware.js +3 -3
- package/dist/cjs/middleware/redirects-middleware.js +28 -13
- package/dist/cjs/middleware/sitemap-middleware.js +47 -0
- package/dist/cjs/services/component-props-service.js +41 -50
- package/dist/cjs/tools/component-props.loader.js +101 -0
- package/dist/cjs/tools/index.js +9 -0
- package/dist/cjs/tools/templating/byoc-component.js +75 -0
- package/dist/cjs/tools/templating/constants.js +7 -0
- package/dist/cjs/tools/templating/default-component.js +54 -0
- package/dist/cjs/tools/templating/utils.js +18 -0
- package/dist/cjs/utils/index.js +2 -1
- package/dist/cjs/utils/utils.js +10 -1
- package/dist/esm/client/index.js +2 -0
- package/dist/esm/client/sitecore-nextjs-client.js +113 -0
- package/dist/esm/components/RichText.js +14 -2
- package/dist/esm/config/define-cli-config.js +26 -0
- package/dist/esm/config/index.js +1 -0
- package/dist/esm/editing/editing-config-middleware.js +1 -3
- package/dist/esm/editing/editing-render-middleware.js +11 -7
- package/dist/esm/editing/index.js +1 -1
- package/dist/esm/index.js +3 -5
- package/dist/esm/middleware/index.js +1 -0
- package/dist/esm/middleware/middleware.js +23 -12
- package/dist/esm/middleware/multisite-middleware.js +20 -9
- package/dist/esm/middleware/personalize-middleware.js +4 -4
- package/dist/esm/middleware/redirects-middleware.js +29 -14
- package/dist/esm/middleware/sitemap-middleware.js +43 -0
- package/dist/esm/services/component-props-service.js +41 -50
- package/dist/esm/tools/component-props.loader.js +65 -0
- package/dist/esm/tools/index.js +1 -0
- package/dist/esm/tools/templating/byoc-component.js +69 -0
- package/dist/esm/tools/templating/constants.js +4 -0
- package/dist/esm/tools/templating/default-component.js +48 -0
- package/dist/esm/tools/templating/utils.js +12 -0
- package/dist/esm/utils/index.js +1 -1
- package/dist/esm/utils/utils.js +8 -0
- package/package.json +16 -13
- package/tools.d.ts +1 -0
- package/tools.js +1 -0
- package/types/client/index.d.ts +2 -0
- package/types/client/sitecore-nextjs-client.d.ts +44 -0
- package/types/components/RichText.d.ts +7 -1
- package/types/config/define-cli-config.d.ts +8 -0
- package/types/config/index.d.ts +1 -0
- package/types/editing/editing-config-middleware.d.ts +4 -2
- package/types/editing/editing-render-middleware.d.ts +3 -31
- package/types/editing/index.d.ts +1 -1
- package/types/index.d.ts +6 -8
- package/types/middleware/index.d.ts +1 -0
- package/types/middleware/middleware.d.ts +13 -7
- package/types/middleware/sitemap-middleware.d.ts +12 -0
- package/types/services/component-props-service.d.ts +10 -26
- package/types/sharedTypes/component-props.d.ts +18 -0
- package/types/sharedTypes/sitecore-page-props.d.ts +5 -0
- package/types/tools/component-props.loader.d.ts +7 -0
- package/types/tools/index.d.ts +1 -0
- package/types/tools/templating/byoc-component.d.ts +2 -0
- package/types/tools/templating/constants.d.ts +4 -0
- package/types/tools/templating/default-component.d.ts +2 -0
- package/types/tools/templating/utils.d.ts +6 -0
- package/types/utils/index.d.ts +1 -1
- package/types/utils/utils.d.ts +2 -0
- package/dist/cjs/ComponentBuilder.js +0 -63
- package/dist/cjs/graphql/index.js +0 -7
- package/dist/cjs/services/base-graphql-sitemap-service.js +0 -206
- package/dist/cjs/services/graphql-sitemap-service.js +0 -64
- package/dist/cjs/services/mutisite-graphql-sitemap-service.js +0 -81
- package/dist/esm/ComponentBuilder.js +0 -59
- package/dist/esm/graphql/index.js +0 -1
- package/dist/esm/services/base-graphql-sitemap-service.js +0 -201
- package/dist/esm/services/graphql-sitemap-service.js +0 -59
- package/dist/esm/services/mutisite-graphql-sitemap-service.js +0 -77
- package/graphql.d.ts +0 -1
- package/graphql.js +0 -1
- package/types/ComponentBuilder.d.ts +0 -59
- package/types/graphql/index.d.ts +0 -1
- package/types/services/base-graphql-sitemap-service.d.ts +0 -148
- package/types/services/graphql-sitemap-service.d.ts +0 -51
- package/types/services/mutisite-graphql-sitemap-service.d.ts +0 -42
- package/types/sharedTypes/module-factory.d.ts +0 -32
- /package/dist/cjs/sharedTypes/{module-factory.js → sitecore-page-props.js} +0 -0
- /package/dist/esm/sharedTypes/{module-factory.js → sitecore-page-props.js} +0 -0
package/README.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
# Sitecore
|
|
1
|
+
# Sitecore Content SDK for Next.js
|
|
2
|
+
|
|
3
|
+
This module is provided as a part of Sitecore Content SDK. It contains Next.js components and integration for Sitecore Content SDK.
|
|
2
4
|
|
|
3
5
|
<!---
|
|
4
|
-
@TODO:
|
|
6
|
+
@TODO: Update link with appropriate page when avaiable
|
|
5
7
|
-->
|
|
6
|
-
This module is provided as a part of Sitecore JavaScript Rendering SDK. It contains Next.js components and integration for JSS.
|
|
7
8
|
|
|
8
|
-
[Documentation
|
|
9
|
+
[Documentation](https://doc.sitecore.com/xmc/en/developers/xm-cloud/sitecore-javascript-rendering-sdk--jss--for-next-js.html)
|
|
9
10
|
|
|
10
11
|
[API reference documentation](/ref-docs/nextjs/)
|
package/client.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types/client/index';
|
package/client.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/cjs/client/index');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types/tools/component-props.loader';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SitecoreClient = exports.createGraphQLClientFactory = exports.getEdgeProxyContentUrl = exports.GraphQLRequestClient = exports.DefaultRetryStrategy = void 0;
|
|
4
|
+
var client_1 = require("@sitecore-content-sdk/core/client");
|
|
5
|
+
Object.defineProperty(exports, "DefaultRetryStrategy", { enumerable: true, get: function () { return client_1.DefaultRetryStrategy; } });
|
|
6
|
+
Object.defineProperty(exports, "GraphQLRequestClient", { enumerable: true, get: function () { return client_1.GraphQLRequestClient; } });
|
|
7
|
+
Object.defineProperty(exports, "getEdgeProxyContentUrl", { enumerable: true, get: function () { return client_1.getEdgeProxyContentUrl; } });
|
|
8
|
+
Object.defineProperty(exports, "createGraphQLClientFactory", { enumerable: true, get: function () { return client_1.createGraphQLClientFactory; } });
|
|
9
|
+
var sitecore_nextjs_client_1 = require("./sitecore-nextjs-client");
|
|
10
|
+
Object.defineProperty(exports, "SitecoreClient", { enumerable: true, get: function () { return sitecore_nextjs_client_1.SitecoreNextjsClient; } });
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.SitecoreNextjsClient = void 0;
|
|
13
|
+
const client_1 = require("@sitecore-content-sdk/core/client");
|
|
14
|
+
const component_props_service_1 = require("../services/component-props-service");
|
|
15
|
+
const site_1 = require("@sitecore-content-sdk/core/site");
|
|
16
|
+
const personalize_1 = require("@sitecore-content-sdk/core/personalize");
|
|
17
|
+
class SitecoreNextjsClient extends client_1.SitecoreClient {
|
|
18
|
+
constructor(initOptions) {
|
|
19
|
+
super(initOptions);
|
|
20
|
+
this.initOptions = initOptions;
|
|
21
|
+
this.componentPropsService = this.getComponentPropsService();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolves site based on the provided path
|
|
25
|
+
* @param {string | string[]} path path to resolve site from
|
|
26
|
+
* @returns resolved site, or default site info if not found
|
|
27
|
+
*/
|
|
28
|
+
resolveSiteFromPath(path) {
|
|
29
|
+
const resolvedPath = super.parsePath(path);
|
|
30
|
+
// Get site name (from path rewritten in middleware)
|
|
31
|
+
const siteData = (0, site_1.getSiteRewriteData)(resolvedPath, this.initOptions.defaultSite);
|
|
32
|
+
// Resolve site by name
|
|
33
|
+
return (this.siteResolver.getByName(siteData.siteName) || {
|
|
34
|
+
name: siteData.siteName,
|
|
35
|
+
hostName: '',
|
|
36
|
+
language: '',
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Normalizes a nextjs path that could have been rewritten
|
|
41
|
+
* @param {string | string[]} path nextjs path
|
|
42
|
+
* @returns path string without nextjs prefixes
|
|
43
|
+
*/
|
|
44
|
+
parsePath(path) {
|
|
45
|
+
const basePath = super.parsePath(path);
|
|
46
|
+
return (0, site_1.normalizeSiteRewrite)((0, personalize_1.normalizePersonalizedRewrite)(basePath));
|
|
47
|
+
}
|
|
48
|
+
getPage(path, pageOptions, options) {
|
|
49
|
+
const _super = Object.create(null, {
|
|
50
|
+
parsePath: { get: () => super.parsePath },
|
|
51
|
+
getPage: { get: () => super.getPage }
|
|
52
|
+
});
|
|
53
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
var _a;
|
|
55
|
+
const resolvedPath = this.parsePath(path);
|
|
56
|
+
// Get variant(s) for personalization (from path), must ensure path is of type string
|
|
57
|
+
const personalizeData = pageOptions.personalize || (0, personalize_1.getPersonalizedRewriteData)(_super.parsePath.call(this, path));
|
|
58
|
+
const site = pageOptions.site || ((_a = this.resolveSiteFromPath(path)) === null || _a === void 0 ? void 0 : _a.name);
|
|
59
|
+
const page = yield _super.getPage.call(this, resolvedPath, {
|
|
60
|
+
locale: pageOptions.locale,
|
|
61
|
+
site,
|
|
62
|
+
personalize: personalizeData,
|
|
63
|
+
}, options);
|
|
64
|
+
return page;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Retrieves preview page and layout details
|
|
69
|
+
* @param {PreviewData} previewData - The editing preview data for metadata mode.
|
|
70
|
+
* @param {FetchOptions} [fetchOptions] Additional fetch fetch options to override GraphQL requests (like retries and fetch)
|
|
71
|
+
*/
|
|
72
|
+
getPreview(previewData, fetchOptions) {
|
|
73
|
+
const _super = Object.create(null, {
|
|
74
|
+
getPreview: { get: () => super.getPreview }
|
|
75
|
+
});
|
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
77
|
+
return _super.getPreview.call(this, previewData, fetchOptions);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Parses components from nextjs component map and layoutData, executes getServerProps/getStaticProps methods
|
|
82
|
+
* and returns resulting props from components
|
|
83
|
+
* @param {LayoutServiceData} layoutData layout data to parse compnents from
|
|
84
|
+
* @param {PreviewData} context Nextjs preview data
|
|
85
|
+
* @param {ComponentMap<NextjsJssComponent>} components component map to get props for
|
|
86
|
+
* @returns {ComponentPropsCollection} component props
|
|
87
|
+
*/
|
|
88
|
+
getComponentData(layoutData, context, components) {
|
|
89
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
90
|
+
let componentProps = {};
|
|
91
|
+
if (!layoutData.sitecore.route)
|
|
92
|
+
return componentProps;
|
|
93
|
+
// Retrieve component props using side-effects defined on components level
|
|
94
|
+
componentProps = yield this.componentPropsService.fetchComponentProps({
|
|
95
|
+
layoutData: layoutData,
|
|
96
|
+
context,
|
|
97
|
+
components,
|
|
98
|
+
});
|
|
99
|
+
const errors = Object.keys(componentProps)
|
|
100
|
+
.map((id) => {
|
|
101
|
+
const component = componentProps[id];
|
|
102
|
+
return component.error
|
|
103
|
+
? `\nUnable to get component props for ${component.componentName} (${id}): ${component.error}`
|
|
104
|
+
: '';
|
|
105
|
+
})
|
|
106
|
+
.join('');
|
|
107
|
+
if (errors.length) {
|
|
108
|
+
throw new Error(errors);
|
|
109
|
+
}
|
|
110
|
+
return componentProps;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
getComponentPropsService() {
|
|
114
|
+
return new component_props_service_1.ComponentPropsService();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.SitecoreNextjsClient = SitecoreNextjsClient;
|
|
@@ -47,12 +47,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
47
47
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
48
48
|
};
|
|
49
49
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
-
exports.RichText = void 0;
|
|
50
|
+
exports.RichText = exports.prefetched = void 0;
|
|
51
51
|
const react_1 = __importStar(require("react"));
|
|
52
52
|
const prop_types_1 = __importDefault(require("prop-types"));
|
|
53
53
|
const router_1 = require("next/router");
|
|
54
54
|
const react_2 = require("@sitecore-content-sdk/react");
|
|
55
|
-
|
|
55
|
+
exports.prefetched = {};
|
|
56
56
|
const RichText = (props) => {
|
|
57
57
|
const { internalLinksSelector = 'a[href^="/"]', prefetchLinks = true, editable = true } = props, rest = __rest(props, ["internalLinksSelector", "prefetchLinks", "editable"]);
|
|
58
58
|
const hasText = props.field && props.field.value;
|
|
@@ -81,9 +81,21 @@ const RichText = (props) => {
|
|
|
81
81
|
internalLinks.forEach((link) => {
|
|
82
82
|
if (link.target === '_blank')
|
|
83
83
|
return;
|
|
84
|
-
|
|
84
|
+
const prefetch = () => {
|
|
85
85
|
router.prefetch(link.pathname, undefined, { locale: false });
|
|
86
|
-
prefetched[link.pathname] = true;
|
|
86
|
+
exports.prefetched[link.pathname] = true;
|
|
87
|
+
};
|
|
88
|
+
if (!exports.prefetched[link.pathname] && prefetchLinks !== false) {
|
|
89
|
+
if (prefetchLinks === true) {
|
|
90
|
+
prefetch();
|
|
91
|
+
}
|
|
92
|
+
if (prefetchLinks === 'hover') {
|
|
93
|
+
const mouseOverHandler = () => {
|
|
94
|
+
prefetch();
|
|
95
|
+
link.removeEventListener('mouseover', mouseOverHandler);
|
|
96
|
+
};
|
|
97
|
+
link.addEventListener('mouseover', mouseOverHandler, false);
|
|
98
|
+
}
|
|
87
99
|
}
|
|
88
100
|
link.addEventListener('click', routeHandler, false);
|
|
89
101
|
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineCliConfig = void 0;
|
|
4
|
+
const config_1 = require("@sitecore-content-sdk/core/config");
|
|
5
|
+
const byoc_component_1 = require("../tools/templating/byoc-component");
|
|
6
|
+
const default_component_1 = require("../tools/templating/default-component");
|
|
7
|
+
/**
|
|
8
|
+
* Accepts a `SitecoreCliConfigInput` object and returns the Sitecore Content SDK CLI configuration from the specified file,
|
|
9
|
+
* updated with the required default values.
|
|
10
|
+
* @param {SitecoreCliConfigInput} cliConfig the cli configuration provided by the application
|
|
11
|
+
* @returns {SitecoreCliConfig} full sitecore cli configuration to use with cli
|
|
12
|
+
*/
|
|
13
|
+
const defineCliConfig = (cliConfig) => {
|
|
14
|
+
addDefaultScaffoldTemplates(cliConfig);
|
|
15
|
+
return (0, config_1.defineCliConfig)(cliConfig);
|
|
16
|
+
};
|
|
17
|
+
exports.defineCliConfig = defineCliConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Adds default scaffold templates to the CLI configuration.
|
|
20
|
+
* @param {SitecoreCliConfigInput} cliConfig - The CLI configuration object
|
|
21
|
+
*/
|
|
22
|
+
function addDefaultScaffoldTemplates(cliConfig) {
|
|
23
|
+
if (!cliConfig.scaffold) {
|
|
24
|
+
cliConfig.scaffold = {};
|
|
25
|
+
}
|
|
26
|
+
if (!cliConfig.scaffold.templates) {
|
|
27
|
+
cliConfig.scaffold.templates = [];
|
|
28
|
+
}
|
|
29
|
+
cliConfig.scaffold.templates.unshift(default_component_1.defaultTemplate, byoc_component_1.byocTemplate);
|
|
30
|
+
}
|
package/dist/cjs/config/index.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.defineConfig = void 0;
|
|
3
|
+
exports.defineCliConfig = exports.defineConfig = void 0;
|
|
4
4
|
var config_1 = require("@sitecore-content-sdk/core/config");
|
|
5
5
|
Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return config_1.defineConfig; } });
|
|
6
|
+
var define_cli_config_1 = require("./define-cli-config");
|
|
7
|
+
Object.defineProperty(exports, "defineCliConfig", { enumerable: true, get: function () { return define_cli_config_1.defineCliConfig; } });
|
|
@@ -41,9 +41,7 @@ class EditingConfigMiddleware {
|
|
|
41
41
|
// CORS headers are set by enforceCors
|
|
42
42
|
return res.status(204).send(null);
|
|
43
43
|
}
|
|
44
|
-
const components = Array.
|
|
45
|
-
? this.config.components
|
|
46
|
-
: Array.from(this.config.components.keys());
|
|
44
|
+
const components = Array.from(this.config.components.keys());
|
|
47
45
|
return res.status(200).json({
|
|
48
46
|
components,
|
|
49
47
|
packages: this.config.metadata.packages,
|
|
@@ -9,27 +9,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.EditingRenderMiddleware = exports.
|
|
12
|
+
exports.EditingRenderMiddleware = exports.isDesignLibraryPreviewData = void 0;
|
|
13
13
|
const core_1 = require("@sitecore-content-sdk/core");
|
|
14
|
-
const layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
15
14
|
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
15
|
+
const layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
16
16
|
const utils_1 = require("../utils/utils");
|
|
17
17
|
const render_middleware_1 = require("./render-middleware");
|
|
18
18
|
const utils_2 = require("@sitecore-content-sdk/core/utils");
|
|
19
19
|
const personalize_1 = require("@sitecore-content-sdk/core/personalize");
|
|
20
|
+
const site_1 = require("@sitecore-content-sdk/core/site");
|
|
20
21
|
/**
|
|
21
|
-
* Type guard for
|
|
22
|
+
* Type guard for Design Library mode
|
|
22
23
|
* @param {object} data preview data to check
|
|
23
24
|
* @returns true if the data is EditingPreviewData
|
|
24
25
|
* @see EditingPreviewData
|
|
25
26
|
*/
|
|
26
|
-
const
|
|
27
|
+
const isDesignLibraryPreviewData = (data) => {
|
|
27
28
|
return (typeof data === 'object' &&
|
|
28
29
|
data !== null &&
|
|
29
30
|
'mode' in data &&
|
|
30
31
|
data.mode === 'library');
|
|
31
32
|
};
|
|
32
|
-
exports.
|
|
33
|
+
exports.isDesignLibraryPreviewData = isDesignLibraryPreviewData;
|
|
33
34
|
/**
|
|
34
35
|
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
35
36
|
* which is required for Sitecore editing support.
|
|
@@ -97,15 +98,12 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
97
98
|
});
|
|
98
99
|
}
|
|
99
100
|
if (mode === 'library') {
|
|
100
|
-
// dedicated route and layout to SSR component library
|
|
101
|
-
query.route = '/component-library/render';
|
|
102
101
|
res.setPreviewData({
|
|
103
102
|
itemId: query.sc_itemid,
|
|
104
103
|
componentUid: query.sc_uid,
|
|
105
104
|
renderingId: query.sc_renderingId,
|
|
106
105
|
language: query.sc_lang,
|
|
107
106
|
site: query.sc_site,
|
|
108
|
-
pageState: layout_1.LayoutServicePageState.Normal,
|
|
109
107
|
mode: 'library',
|
|
110
108
|
dataSourceId: query.sc_datasourceId,
|
|
111
109
|
version: query.sc_version,
|
|
@@ -121,7 +119,7 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
121
119
|
// for sc_variantId we may employ multiple variants (page-layout + component level)
|
|
122
120
|
variantIds: ((_c = query.sc_variant) === null || _c === void 0 ? void 0 : _c.split(',')) || [personalize_1.DEFAULT_VARIANT],
|
|
123
121
|
version: query.sc_version,
|
|
124
|
-
|
|
122
|
+
mode: query.mode,
|
|
125
123
|
layoutKind: query.sc_layoutKind,
|
|
126
124
|
},
|
|
127
125
|
// Cache the preview data for 3 seconds to ensure the page is rendered with the correct preview data not the cached one
|
|
@@ -149,6 +147,12 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
149
147
|
}
|
|
150
148
|
return cookie;
|
|
151
149
|
});
|
|
150
|
+
// Set Preview mode identifier cookie, if the page is rendered in Sitecore Preview mode
|
|
151
|
+
if (mode === layout_1.LayoutServicePageState.Preview) {
|
|
152
|
+
const previewSite = `${site_1.SITE_KEY}=${query.sc_site}; Path=/; HttpOnly; SameSite=None; Secure`;
|
|
153
|
+
const previewCookie = `${editing_1.PREVIEW_KEY}=true; Path=/; HttpOnly; SameSite=None; Secure`;
|
|
154
|
+
modifiedCookies.push(previewSite, previewCookie);
|
|
155
|
+
}
|
|
152
156
|
res.setHeader('Set-Cookie', modifiedCookies);
|
|
153
157
|
}
|
|
154
158
|
const route = ((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.resolvePageUrl) === null || _e === void 0 ? void 0 : _e.call(_d, query.route)) || query.route;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.
|
|
3
|
+
exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.isDesignLibraryPreviewData = exports.EditingRenderMiddleware = exports.GraphQLEditingService = void 0;
|
|
4
4
|
var editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
5
5
|
Object.defineProperty(exports, "GraphQLEditingService", { enumerable: true, get: function () { return editing_1.GraphQLEditingService; } });
|
|
6
6
|
var editing_render_middleware_1 = require("./editing-render-middleware");
|
|
7
7
|
Object.defineProperty(exports, "EditingRenderMiddleware", { enumerable: true, get: function () { return editing_render_middleware_1.EditingRenderMiddleware; } });
|
|
8
|
-
Object.defineProperty(exports, "
|
|
8
|
+
Object.defineProperty(exports, "isDesignLibraryPreviewData", { enumerable: true, get: function () { return editing_render_middleware_1.isDesignLibraryPreviewData; } });
|
|
9
9
|
var feaas_render_middleware_1 = require("./feaas-render-middleware");
|
|
10
10
|
Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
|
|
11
11
|
var editing_config_middleware_1 = require("./editing-config-middleware");
|
package/dist/cjs/index.js
CHANGED
|
@@ -33,8 +33,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.
|
|
37
|
-
exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.DefaultEmptyFieldEditingComponentText =
|
|
36
|
+
exports.DefaultEmptyFieldEditingComponentImage = exports.DesignLibrary = exports.File = exports.getDesignLibraryStylesheetLinks = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.Image = exports.BYOCWrapper = exports.FEaaSWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.GraphQLSitePathService = exports.ComponentPropsService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.GraphQLDictionaryService = exports.mediaApi = exports.RestComponentLayoutService = exports.RenderingType = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.debug = exports.enableDebug = exports.NativeDataFetcher = exports.constants = void 0;
|
|
37
|
+
exports.Form = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.DefaultEmptyFieldEditingComponentText = void 0;
|
|
38
38
|
var core_1 = require("@sitecore-content-sdk/core");
|
|
39
39
|
Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return core_1.constants; } });
|
|
40
40
|
// generic data access
|
|
@@ -49,6 +49,7 @@ Object.defineProperty(exports, "getChildPlaceholder", { enumerable: true, get: f
|
|
|
49
49
|
Object.defineProperty(exports, "getFieldValue", { enumerable: true, get: function () { return layout_1.getFieldValue; } });
|
|
50
50
|
Object.defineProperty(exports, "getContentStylesheetLink", { enumerable: true, get: function () { return layout_1.getContentStylesheetLink; } });
|
|
51
51
|
Object.defineProperty(exports, "EditMode", { enumerable: true, get: function () { return layout_1.EditMode; } });
|
|
52
|
+
Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
|
|
52
53
|
var editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
53
54
|
Object.defineProperty(exports, "RestComponentLayoutService", { enumerable: true, get: function () { return editing_1.RestComponentLayoutService; } });
|
|
54
55
|
var media_1 = require("@sitecore-content-sdk/core/media");
|
|
@@ -64,19 +65,17 @@ Object.defineProperty(exports, "normalizePersonalizedRewrite", { enumerable: tru
|
|
|
64
65
|
Object.defineProperty(exports, "CdpHelper", { enumerable: true, get: function () { return personalize_1.CdpHelper; } });
|
|
65
66
|
var component_props_service_1 = require("./services/component-props-service");
|
|
66
67
|
Object.defineProperty(exports, "ComponentPropsService", { enumerable: true, get: function () { return component_props_service_1.ComponentPropsService; } });
|
|
67
|
-
var graphql_sitemap_service_1 = require("./services/graphql-sitemap-service");
|
|
68
|
-
Object.defineProperty(exports, "GraphQLSitemapService", { enumerable: true, get: function () { return graphql_sitemap_service_1.GraphQLSitemapService; } });
|
|
69
|
-
var mutisite_graphql_sitemap_service_1 = require("./services/mutisite-graphql-sitemap-service");
|
|
70
|
-
Object.defineProperty(exports, "MultisiteGraphQLSitemapService", { enumerable: true, get: function () { return mutisite_graphql_sitemap_service_1.MultisiteGraphQLSitemapService; } });
|
|
71
68
|
var site_1 = require("@sitecore-content-sdk/core/site");
|
|
72
|
-
Object.defineProperty(exports, "
|
|
73
|
-
|
|
74
|
-
Object.defineProperty(exports, "
|
|
75
|
-
Object.defineProperty(exports, "
|
|
76
|
-
Object.defineProperty(exports, "
|
|
77
|
-
Object.defineProperty(exports, "
|
|
78
|
-
Object.defineProperty(exports, "
|
|
79
|
-
Object.defineProperty(exports, "
|
|
69
|
+
Object.defineProperty(exports, "GraphQLSitePathService", { enumerable: true, get: function () { return site_1.GraphQLSitePathService; } });
|
|
70
|
+
var site_2 = require("@sitecore-content-sdk/core/site");
|
|
71
|
+
Object.defineProperty(exports, "GraphQLSitemapXmlService", { enumerable: true, get: function () { return site_2.GraphQLSitemapXmlService; } });
|
|
72
|
+
Object.defineProperty(exports, "GraphQLErrorPagesService", { enumerable: true, get: function () { return site_2.GraphQLErrorPagesService; } });
|
|
73
|
+
Object.defineProperty(exports, "GraphQLRobotsService", { enumerable: true, get: function () { return site_2.GraphQLRobotsService; } });
|
|
74
|
+
Object.defineProperty(exports, "SiteResolver", { enumerable: true, get: function () { return site_2.SiteResolver; } });
|
|
75
|
+
Object.defineProperty(exports, "GraphQLSiteInfoService", { enumerable: true, get: function () { return site_2.GraphQLSiteInfoService; } });
|
|
76
|
+
Object.defineProperty(exports, "getSiteRewrite", { enumerable: true, get: function () { return site_2.getSiteRewrite; } });
|
|
77
|
+
Object.defineProperty(exports, "getSiteRewriteData", { enumerable: true, get: function () { return site_2.getSiteRewriteData; } });
|
|
78
|
+
Object.defineProperty(exports, "normalizeSiteRewrite", { enumerable: true, get: function () { return site_2.normalizeSiteRewrite; } });
|
|
80
79
|
var ComponentPropsContext_1 = require("./components/ComponentPropsContext");
|
|
81
80
|
Object.defineProperty(exports, "ComponentPropsReactContext", { enumerable: true, get: function () { return ComponentPropsContext_1.ComponentPropsReactContext; } });
|
|
82
81
|
Object.defineProperty(exports, "ComponentPropsContext", { enumerable: true, get: function () { return ComponentPropsContext_1.ComponentPropsContext; } });
|
|
@@ -93,8 +92,6 @@ const FEaaSWrapper = __importStar(require("./components/FEaaSWrapper"));
|
|
|
93
92
|
exports.FEaaSWrapper = FEaaSWrapper;
|
|
94
93
|
const BYOCWrapper = __importStar(require("./components/BYOCWrapper"));
|
|
95
94
|
exports.BYOCWrapper = BYOCWrapper;
|
|
96
|
-
var ComponentBuilder_1 = require("./ComponentBuilder");
|
|
97
|
-
Object.defineProperty(exports, "ComponentBuilder", { enumerable: true, get: function () { return ComponentBuilder_1.ComponentBuilder; } });
|
|
98
95
|
var react_1 = require("@sitecore-content-sdk/react");
|
|
99
96
|
Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return react_1.Image; } });
|
|
100
97
|
Object.defineProperty(exports, "Text", { enumerable: true, get: function () { return react_1.Text; } });
|
|
@@ -102,9 +99,9 @@ Object.defineProperty(exports, "DateField", { enumerable: true, get: function ()
|
|
|
102
99
|
Object.defineProperty(exports, "FEaaSComponent", { enumerable: true, get: function () { return react_1.FEaaSComponent; } });
|
|
103
100
|
Object.defineProperty(exports, "fetchFEaaSComponentServerProps", { enumerable: true, get: function () { return react_1.fetchFEaaSComponentServerProps; } });
|
|
104
101
|
Object.defineProperty(exports, "BYOCComponent", { enumerable: true, get: function () { return react_1.BYOCComponent; } });
|
|
105
|
-
Object.defineProperty(exports, "
|
|
102
|
+
Object.defineProperty(exports, "getDesignLibraryStylesheetLinks", { enumerable: true, get: function () { return react_1.getDesignLibraryStylesheetLinks; } });
|
|
106
103
|
Object.defineProperty(exports, "File", { enumerable: true, get: function () { return react_1.File; } });
|
|
107
|
-
Object.defineProperty(exports, "
|
|
104
|
+
Object.defineProperty(exports, "DesignLibrary", { enumerable: true, get: function () { return react_1.DesignLibrary; } });
|
|
108
105
|
Object.defineProperty(exports, "DefaultEmptyFieldEditingComponentImage", { enumerable: true, get: function () { return react_1.DefaultEmptyFieldEditingComponentImage; } });
|
|
109
106
|
Object.defineProperty(exports, "DefaultEmptyFieldEditingComponentText", { enumerable: true, get: function () { return react_1.DefaultEmptyFieldEditingComponentText; } });
|
|
110
107
|
Object.defineProperty(exports, "SitecoreContext", { enumerable: true, get: function () { return react_1.SitecoreContext; } });
|
|
@@ -117,3 +114,4 @@ Object.defineProperty(exports, "withDatasourceCheck", { enumerable: true, get: f
|
|
|
117
114
|
Object.defineProperty(exports, "withFieldMetadata", { enumerable: true, get: function () { return react_1.withFieldMetadata; } });
|
|
118
115
|
Object.defineProperty(exports, "withEmptyFieldEditingComponent", { enumerable: true, get: function () { return react_1.withEmptyFieldEditingComponent; } });
|
|
119
116
|
Object.defineProperty(exports, "EditingScripts", { enumerable: true, get: function () { return react_1.EditingScripts; } });
|
|
117
|
+
Object.defineProperty(exports, "Form", { enumerable: true, get: function () { return react_1.Form; } });
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MultisiteMiddleware = exports.PersonalizeMiddleware = exports.RedirectsMiddleware = exports.defineMiddleware = exports.Middleware = exports.MiddlewareBase = exports.debug = void 0;
|
|
3
|
+
exports.SitemapMiddleware = exports.MultisiteMiddleware = exports.PersonalizeMiddleware = exports.RedirectsMiddleware = exports.defineMiddleware = exports.Middleware = exports.MiddlewareBase = exports.debug = void 0;
|
|
4
4
|
var core_1 = require("@sitecore-content-sdk/core");
|
|
5
5
|
Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return core_1.debug; } });
|
|
6
6
|
var middleware_1 = require("./middleware");
|
|
@@ -13,3 +13,5 @@ var personalize_middleware_1 = require("./personalize-middleware");
|
|
|
13
13
|
Object.defineProperty(exports, "PersonalizeMiddleware", { enumerable: true, get: function () { return personalize_middleware_1.PersonalizeMiddleware; } });
|
|
14
14
|
var multisite_middleware_1 = require("./multisite-middleware");
|
|
15
15
|
Object.defineProperty(exports, "MultisiteMiddleware", { enumerable: true, get: function () { return multisite_middleware_1.MultisiteMiddleware; } });
|
|
16
|
+
var sitemap_middleware_1 = require("./sitemap-middleware");
|
|
17
|
+
Object.defineProperty(exports, "SitemapMiddleware", { enumerable: true, get: function () { return sitemap_middleware_1.SitemapMiddleware; } });
|
|
@@ -9,10 +9,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.defineMiddleware = exports.MiddlewareBase = exports.Middleware = void 0;
|
|
12
|
+
exports.defineMiddleware = exports.MiddlewareBase = exports.Middleware = exports.REWRITE_HEADER_NAME = void 0;
|
|
13
13
|
const site_1 = require("@sitecore-content-sdk/core/site");
|
|
14
14
|
const core_1 = require("@sitecore-content-sdk/core");
|
|
15
15
|
const server_1 = require("next/server");
|
|
16
|
+
exports.REWRITE_HEADER_NAME = 'x-sc-rewrite';
|
|
16
17
|
/**
|
|
17
18
|
* Middleware class to be extended by all middleware implementations
|
|
18
19
|
*/
|
|
@@ -26,8 +27,6 @@ class MiddlewareBase extends Middleware {
|
|
|
26
27
|
constructor(config) {
|
|
27
28
|
super();
|
|
28
29
|
this.config = config;
|
|
29
|
-
this.SITE_SYMBOL = 'sc_site';
|
|
30
|
-
this.REWRITE_HEADER_NAME = 'x-sc-rewrite';
|
|
31
30
|
this.siteResolver = new site_1.SiteResolver(config.sites);
|
|
32
31
|
this.defaultHostname = config.defaultHostname || 'localhost';
|
|
33
32
|
}
|
|
@@ -56,7 +55,7 @@ class MiddlewareBase extends Middleware {
|
|
|
56
55
|
return (pathname.startsWith('/api/') || // Ignore Next.js API calls
|
|
57
56
|
pathname.startsWith('/sitecore/') || // Ignore Sitecore API calls
|
|
58
57
|
pathname.startsWith('/_next') || // Ignore next service calls
|
|
59
|
-
(this.config.
|
|
58
|
+
(this.config.skip && this.config.skip(req, res)));
|
|
60
59
|
}
|
|
61
60
|
/**
|
|
62
61
|
* Safely extract all headers for debug logging
|
|
@@ -75,7 +74,7 @@ class MiddlewareBase extends Middleware {
|
|
|
75
74
|
* @returns {string} language
|
|
76
75
|
*/
|
|
77
76
|
getLanguage(req) {
|
|
78
|
-
return req.nextUrl.locale || req.nextUrl.defaultLocale || 'en';
|
|
77
|
+
return req.nextUrl.locale || req.nextUrl.defaultLocale || this.config.defaultLanguage || 'en';
|
|
79
78
|
}
|
|
80
79
|
/**
|
|
81
80
|
* Extract 'host' header
|
|
@@ -86,18 +85,27 @@ class MiddlewareBase extends Middleware {
|
|
|
86
85
|
return (_a = req.headers.get('host')) === null || _a === void 0 ? void 0 : _a.split(':')[0];
|
|
87
86
|
}
|
|
88
87
|
/**
|
|
89
|
-
* Get site information.
|
|
90
|
-
*
|
|
88
|
+
* Get site information. If site name is stored in cookie, use it, otherwise resolve by hostname
|
|
89
|
+
* - If site can't be resolved by site name cookie use default site info based on provided parameters
|
|
90
|
+
* - If site can't be resolved by hostname throw an error
|
|
91
91
|
* @param {NextRequest} req request
|
|
92
92
|
* @param {NextResponse} [res] response
|
|
93
93
|
* @returns {SiteInfo} site information
|
|
94
94
|
*/
|
|
95
95
|
getSite(req, res) {
|
|
96
96
|
var _a;
|
|
97
|
-
const siteNameCookie = (_a = res === null || res === void 0 ? void 0 : res.cookies.get(
|
|
98
|
-
if (siteNameCookie)
|
|
99
|
-
return this.siteResolver.getByName(siteNameCookie);
|
|
97
|
+
const siteNameCookie = (_a = res === null || res === void 0 ? void 0 : res.cookies.get(site_1.SITE_KEY)) === null || _a === void 0 ? void 0 : _a.value;
|
|
100
98
|
const hostname = this.getHostHeader(req) || this.defaultHostname;
|
|
99
|
+
if (siteNameCookie) {
|
|
100
|
+
// Usually we should be able to resolve site by cookie
|
|
101
|
+
// in case of Sitecore Preview mode, there can be a case that new site was created
|
|
102
|
+
// but it's not present in the sitemap, so we fallback to default site info
|
|
103
|
+
return (this.siteResolver.getByName(siteNameCookie) || {
|
|
104
|
+
name: siteNameCookie,
|
|
105
|
+
language: this.getLanguage(req),
|
|
106
|
+
hostName: '*',
|
|
107
|
+
});
|
|
108
|
+
}
|
|
101
109
|
return this.siteResolver.getByHost(hostname);
|
|
102
110
|
}
|
|
103
111
|
/**
|
|
@@ -105,14 +113,17 @@ class MiddlewareBase extends Middleware {
|
|
|
105
113
|
* @param {string} rewritePath the destionation path
|
|
106
114
|
* @param {NextRequest} req the current request
|
|
107
115
|
* @param {NextResponse} res the current response
|
|
116
|
+
* @param {boolean} [skipHeader] don't write 'x-sc-rewrite' header
|
|
108
117
|
*/
|
|
109
|
-
rewrite(rewritePath, req, res) {
|
|
118
|
+
rewrite(rewritePath, req, res, skipHeader) {
|
|
110
119
|
// Note an absolute URL is required: https://nextjs.org/docs/messages/middleware-relative-urls
|
|
111
120
|
const rewriteUrl = req.nextUrl.clone();
|
|
112
121
|
rewriteUrl.pathname = rewritePath;
|
|
113
122
|
const response = server_1.NextResponse.rewrite(rewriteUrl, res);
|
|
114
123
|
// Share rewrite path with following executed middlewares
|
|
115
|
-
|
|
124
|
+
if (!skipHeader) {
|
|
125
|
+
response.headers.set(exports.REWRITE_HEADER_NAME, rewritePath);
|
|
126
|
+
}
|
|
116
127
|
return response;
|
|
117
128
|
}
|
|
118
129
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */
|
|
2
3
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
4
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
5
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -13,6 +14,7 @@ exports.MultisiteMiddleware = void 0;
|
|
|
13
14
|
const site_1 = require("@sitecore-content-sdk/core/site");
|
|
14
15
|
const core_1 = require("@sitecore-content-sdk/core");
|
|
15
16
|
const middleware_1 = require("./middleware");
|
|
17
|
+
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
16
18
|
/**
|
|
17
19
|
* Middleware / handler for multisite support
|
|
18
20
|
*/
|
|
@@ -24,7 +26,7 @@ class MultisiteMiddleware extends middleware_1.MiddlewareBase {
|
|
|
24
26
|
super(config);
|
|
25
27
|
this.config = config;
|
|
26
28
|
this.handle = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
-
var _a;
|
|
29
|
+
var _a, _b, _c;
|
|
28
30
|
if (!this.config.enabled) {
|
|
29
31
|
core_1.debug.multisite('skipped (multisite middleware is disabled globally)');
|
|
30
32
|
return res;
|
|
@@ -47,12 +49,21 @@ class MultisiteMiddleware extends middleware_1.MiddlewareBase {
|
|
|
47
49
|
core_1.debug.multisite('skipped (preview)');
|
|
48
50
|
return res;
|
|
49
51
|
}
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
let siteName;
|
|
53
|
+
const isSitecorePreview = (_a = req.cookies.get(editing_1.PREVIEW_KEY)) === null || _a === void 0 ? void 0 : _a.value;
|
|
54
|
+
if (isSitecorePreview) {
|
|
55
|
+
// This cookie is required to be set in the Sitecore Preview mode
|
|
56
|
+
siteName = (_b = req.cookies.get(site_1.SITE_KEY)) === null || _b === void 0 ? void 0 : _b.value;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Site name can be forced by query string parameter or cookie
|
|
60
|
+
siteName =
|
|
61
|
+
req.nextUrl.searchParams.get(site_1.SITE_KEY) ||
|
|
62
|
+
(this.config.useCookieResolution &&
|
|
63
|
+
this.config.useCookieResolution(req) &&
|
|
64
|
+
((_c = req.cookies.get(site_1.SITE_KEY)) === null || _c === void 0 ? void 0 : _c.value)) ||
|
|
65
|
+
this.siteResolver.getByHost(hostname).name;
|
|
66
|
+
}
|
|
56
67
|
// Rewrite to site specific path
|
|
57
68
|
const rewritePath = (0, site_1.getSiteRewrite)(pathname, {
|
|
58
69
|
siteName,
|
|
@@ -65,7 +76,7 @@ class MultisiteMiddleware extends middleware_1.MiddlewareBase {
|
|
|
65
76
|
sameSite: 'none',
|
|
66
77
|
};
|
|
67
78
|
// Share site name with the following executed middlewares
|
|
68
|
-
response.cookies.set(
|
|
79
|
+
response.cookies.set(site_1.SITE_KEY, siteName, defaultCookieAttributes);
|
|
69
80
|
core_1.debug.multisite('multisite middleware end in %dms: %o', Date.now() - startTimestamp, {
|
|
70
81
|
rewritePath,
|
|
71
82
|
siteName,
|
|
@@ -35,7 +35,7 @@ class PersonalizeMiddleware extends middleware_1.MiddlewareBase {
|
|
|
35
35
|
const language = this.getLanguage(req);
|
|
36
36
|
const hostname = this.getHostHeader(req) || this.defaultHostname;
|
|
37
37
|
const startTimestamp = Date.now();
|
|
38
|
-
const
|
|
38
|
+
const cdpTimeout = this.config.cdpTimeout;
|
|
39
39
|
core_1.debug.personalize('personalize middleware start: %o', {
|
|
40
40
|
pathname,
|
|
41
41
|
language,
|
|
@@ -87,7 +87,7 @@ class PersonalizeMiddleware extends middleware_1.MiddlewareBase {
|
|
|
87
87
|
variantIds: execution.variantIds,
|
|
88
88
|
params,
|
|
89
89
|
language,
|
|
90
|
-
timeout,
|
|
90
|
+
timeout: cdpTimeout,
|
|
91
91
|
}, req).then((personalization) => {
|
|
92
92
|
const variantId = personalization.variantId;
|
|
93
93
|
if (variantId) {
|
|
@@ -104,7 +104,7 @@ class PersonalizeMiddleware extends middleware_1.MiddlewareBase {
|
|
|
104
104
|
return res;
|
|
105
105
|
}
|
|
106
106
|
// Path can be rewritten by previously executed middleware
|
|
107
|
-
const basePath = (res === null || res === void 0 ? void 0 : res.headers.get(
|
|
107
|
+
const basePath = (res === null || res === void 0 ? void 0 : res.headers.get(middleware_1.REWRITE_HEADER_NAME)) || pathname;
|
|
108
108
|
// Rewrite to persononalized path
|
|
109
109
|
const rewritePath = (0, personalize_1.getPersonalizedRewrite)(basePath, identifiedVariantIds);
|
|
110
110
|
const response = this.rewrite(rewritePath, req, res);
|