@sitecore-content-sdk/nextjs 0.1.0-beta.4 → 0.1.0-beta.40
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/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/config.d.ts +1 -0
- package/config.js +1 -0
- package/dist/cjs/client/index.js +10 -0
- package/dist/cjs/client/sitecore-nextjs-client.js +117 -0
- package/dist/cjs/components/Link.js +8 -2
- package/dist/cjs/components/RichText.js +16 -4
- package/dist/cjs/config/define-cli-config.js +30 -0
- package/dist/cjs/config/index.js +7 -0
- 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 +5 -1
- package/dist/cjs/middleware/middleware.js +72 -16
- package/dist/cjs/middleware/multisite-middleware.js +62 -55
- package/dist/cjs/middleware/personalize-middleware.js +108 -111
- package/dist/cjs/middleware/redirects-middleware.js +126 -117
- 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/Link.js +8 -2
- package/dist/esm/components/RichText.js +14 -2
- package/dist/esm/config/define-cli-config.js +26 -0
- package/dist/esm/config/index.js +2 -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 +2 -1
- package/dist/esm/middleware/middleware.js +69 -15
- package/dist/esm/middleware/multisite-middleware.js +63 -56
- package/dist/esm/middleware/personalize-middleware.js +105 -108
- package/dist/esm/middleware/redirects-middleware.js +127 -118
- 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 +13 -10
- 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/Link.d.ts +5 -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 +2 -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 +2 -1
- package/types/middleware/middleware.d.ts +48 -21
- package/types/middleware/multisite-middleware.d.ts +4 -13
- package/types/middleware/personalize-middleware.d.ts +7 -21
- package/types/middleware/redirects-middleware.d.ts +3 -13
- 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/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';
|
package/config.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types/config/index';
|
package/config.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/cjs/config/index');
|
|
@@ -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;
|
|
@@ -73,14 +73,20 @@ exports.Link = (0, react_1.forwardRef)((props, ref) => {
|
|
|
73
73
|
const isFileUrl = FILE_EXTENSION_MATCHER.test(href);
|
|
74
74
|
// determine if a link is a route or not. File extensions are not routes and should not be pre-fetched.
|
|
75
75
|
if (isMatching && !isFileUrl) {
|
|
76
|
-
return (react_1.default.createElement(link_1.default, Object.assign({ href: { pathname: href, query: querystring, hash: anchor }, key: "link", locale: false, title: value.title, target: value.target, className: value.class }, htmlLinkProps, { ref: ref }, (process.env.TEST
|
|
76
|
+
return (react_1.default.createElement(link_1.default, Object.assign({ href: { pathname: href, query: querystring, hash: anchor }, key: "link", locale: false, title: value.title, target: value.target, className: value.class, prefetch: props.prefetch }, htmlLinkProps, { ref: ref }, (process.env.TEST
|
|
77
|
+
? {
|
|
78
|
+
'data-nextjs-link': true,
|
|
79
|
+
'data-nextjs-prefetch': props.prefetch,
|
|
80
|
+
}
|
|
81
|
+
: {})),
|
|
77
82
|
text,
|
|
78
83
|
children));
|
|
79
84
|
}
|
|
80
85
|
}
|
|
81
|
-
// prevent passing internalLinkMatcher as it is an invalid DOM element prop
|
|
86
|
+
// prevent passing internalLinkMatcher or prefetch as it is an invalid DOM element prop
|
|
82
87
|
const reactLinkProps = Object.assign({}, props);
|
|
83
88
|
delete reactLinkProps.internalLinkMatcher;
|
|
89
|
+
delete reactLinkProps.prefetch;
|
|
84
90
|
return (react_1.default.createElement(react_2.Link, Object.assign({}, reactLinkProps, { ref: ref }, (process.env.TEST ? { 'data-react-link': true } : {}))));
|
|
85
91
|
});
|
|
86
92
|
exports.Link.displayName = 'NextLink';
|
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineCliConfig = exports.defineConfig = void 0;
|
|
4
|
+
var config_1 = require("@sitecore-content-sdk/core/config");
|
|
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,13 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MultisiteMiddleware = exports.PersonalizeMiddleware = exports.RedirectsMiddleware = 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");
|
|
7
7
|
Object.defineProperty(exports, "MiddlewareBase", { enumerable: true, get: function () { return middleware_1.MiddlewareBase; } });
|
|
8
|
+
Object.defineProperty(exports, "Middleware", { enumerable: true, get: function () { return middleware_1.Middleware; } });
|
|
9
|
+
Object.defineProperty(exports, "defineMiddleware", { enumerable: true, get: function () { return middleware_1.defineMiddleware; } });
|
|
8
10
|
var redirects_middleware_1 = require("./redirects-middleware");
|
|
9
11
|
Object.defineProperty(exports, "RedirectsMiddleware", { enumerable: true, get: function () { return redirects_middleware_1.RedirectsMiddleware; } });
|
|
10
12
|
var personalize_middleware_1 = require("./personalize-middleware");
|
|
11
13
|
Object.defineProperty(exports, "PersonalizeMiddleware", { enumerable: true, get: function () { return personalize_middleware_1.PersonalizeMiddleware; } });
|
|
12
14
|
var multisite_middleware_1 = require("./multisite-middleware");
|
|
13
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; } });
|
|
@@ -1,12 +1,33 @@
|
|
|
1
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
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MiddlewareBase = void 0;
|
|
12
|
+
exports.defineMiddleware = exports.MiddlewareBase = exports.Middleware = exports.REWRITE_HEADER_NAME = void 0;
|
|
13
|
+
const site_1 = require("@sitecore-content-sdk/core/site");
|
|
14
|
+
const core_1 = require("@sitecore-content-sdk/core");
|
|
4
15
|
const server_1 = require("next/server");
|
|
5
|
-
|
|
16
|
+
exports.REWRITE_HEADER_NAME = 'x-sc-rewrite';
|
|
17
|
+
/**
|
|
18
|
+
* Middleware class to be extended by all middleware implementations
|
|
19
|
+
*/
|
|
20
|
+
class Middleware {
|
|
21
|
+
}
|
|
22
|
+
exports.Middleware = Middleware;
|
|
23
|
+
/**
|
|
24
|
+
* Base middleware class with common methods
|
|
25
|
+
*/
|
|
26
|
+
class MiddlewareBase extends Middleware {
|
|
6
27
|
constructor(config) {
|
|
28
|
+
super();
|
|
7
29
|
this.config = config;
|
|
8
|
-
this.
|
|
9
|
-
this.REWRITE_HEADER_NAME = 'x-sc-rewrite';
|
|
30
|
+
this.siteResolver = new site_1.SiteResolver(config.sites);
|
|
10
31
|
this.defaultHostname = config.defaultHostname || 'localhost';
|
|
11
32
|
}
|
|
12
33
|
/**
|
|
@@ -29,12 +50,12 @@ class MiddlewareBase {
|
|
|
29
50
|
req.headers.get('purpose') === 'prefetch' || req.headers.get('Next-Router-Prefetch') === '1' // Pages Router // App Router
|
|
30
51
|
);
|
|
31
52
|
}
|
|
32
|
-
|
|
33
|
-
|
|
53
|
+
disabled(req, res) {
|
|
54
|
+
const { pathname } = req.nextUrl;
|
|
34
55
|
return (pathname.startsWith('/api/') || // Ignore Next.js API calls
|
|
35
56
|
pathname.startsWith('/sitecore/') || // Ignore Sitecore API calls
|
|
36
57
|
pathname.startsWith('/_next') || // Ignore next service calls
|
|
37
|
-
(
|
|
58
|
+
(this.config.skip && this.config.skip(req, res)));
|
|
38
59
|
}
|
|
39
60
|
/**
|
|
40
61
|
* Safely extract all headers for debug logging
|
|
@@ -53,7 +74,7 @@ class MiddlewareBase {
|
|
|
53
74
|
* @returns {string} language
|
|
54
75
|
*/
|
|
55
76
|
getLanguage(req) {
|
|
56
|
-
return req.nextUrl.locale || req.nextUrl.defaultLocale || 'en';
|
|
77
|
+
return req.nextUrl.locale || req.nextUrl.defaultLocale || this.config.defaultLanguage || 'en';
|
|
57
78
|
}
|
|
58
79
|
/**
|
|
59
80
|
* Extract 'host' header
|
|
@@ -64,34 +85,69 @@ class MiddlewareBase {
|
|
|
64
85
|
return (_a = req.headers.get('host')) === null || _a === void 0 ? void 0 : _a.split(':')[0];
|
|
65
86
|
}
|
|
66
87
|
/**
|
|
67
|
-
* Get site information.
|
|
68
|
-
*
|
|
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
|
|
69
91
|
* @param {NextRequest} req request
|
|
70
92
|
* @param {NextResponse} [res] response
|
|
71
93
|
* @returns {SiteInfo} site information
|
|
72
94
|
*/
|
|
73
95
|
getSite(req, res) {
|
|
74
96
|
var _a;
|
|
75
|
-
const siteNameCookie = (_a = res === null || res === void 0 ? void 0 : res.cookies.get(
|
|
76
|
-
if (siteNameCookie)
|
|
77
|
-
return this.config.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;
|
|
78
98
|
const hostname = this.getHostHeader(req) || this.defaultHostname;
|
|
79
|
-
|
|
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
|
+
}
|
|
109
|
+
return this.siteResolver.getByHost(hostname);
|
|
80
110
|
}
|
|
81
111
|
/**
|
|
82
112
|
* Create a rewrite response
|
|
83
113
|
* @param {string} rewritePath the destionation path
|
|
84
114
|
* @param {NextRequest} req the current request
|
|
85
115
|
* @param {NextResponse} res the current response
|
|
116
|
+
* @param {boolean} [skipHeader] don't write 'x-sc-rewrite' header
|
|
86
117
|
*/
|
|
87
|
-
rewrite(rewritePath, req, res) {
|
|
118
|
+
rewrite(rewritePath, req, res, skipHeader) {
|
|
88
119
|
// Note an absolute URL is required: https://nextjs.org/docs/messages/middleware-relative-urls
|
|
89
120
|
const rewriteUrl = req.nextUrl.clone();
|
|
90
121
|
rewriteUrl.pathname = rewritePath;
|
|
91
122
|
const response = server_1.NextResponse.rewrite(rewriteUrl, res);
|
|
92
123
|
// Share rewrite path with following executed middlewares
|
|
93
|
-
|
|
124
|
+
if (!skipHeader) {
|
|
125
|
+
response.headers.set(exports.REWRITE_HEADER_NAME, rewritePath);
|
|
126
|
+
}
|
|
94
127
|
return response;
|
|
95
128
|
}
|
|
96
129
|
}
|
|
97
130
|
exports.MiddlewareBase = MiddlewareBase;
|
|
131
|
+
/**
|
|
132
|
+
* Define a middleware with a list of middlewares
|
|
133
|
+
* @param {Middleware[]} middlewares List of middlewares to execute
|
|
134
|
+
*/
|
|
135
|
+
const defineMiddleware = (...middlewares) => {
|
|
136
|
+
return {
|
|
137
|
+
/**
|
|
138
|
+
* Execute all middlewares
|
|
139
|
+
* @param {NextRequest} req request
|
|
140
|
+
* @param {NextFetchEvent} ev fetch event
|
|
141
|
+
* @param {NextResponse} [res] response
|
|
142
|
+
*/
|
|
143
|
+
exec: (req, ev, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
144
|
+
const response = res || server_1.NextResponse.next();
|
|
145
|
+
core_1.debug.common('middleware start');
|
|
146
|
+
const start = Date.now();
|
|
147
|
+
const middlewareResponse = yield middlewares.reduce((p, middleware) => p.then((res) => middleware.handle(req, res, ev)), Promise.resolve(response));
|
|
148
|
+
core_1.debug.common('middleware end in %dms', Date.now() - start);
|
|
149
|
+
return middlewareResponse;
|
|
150
|
+
}),
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
exports.defineMiddleware = defineMiddleware;
|