@sitecore-content-sdk/nextjs 1.5.0 → 2.0.0-canary.10
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/LICENSE.txt +202 -202
- package/dist/cjs/client/index.js +1 -1
- package/dist/cjs/client/sitecore-nextjs-client.js +4 -4
- package/dist/cjs/components/BYOCWrapper.js +0 -5
- package/dist/cjs/components/FEaaSWrapper.js +0 -5
- package/dist/cjs/components/NextImage.js +2 -2
- package/dist/cjs/config/define-config.js +7 -4
- package/dist/cjs/config-cli/define-cli-config.js +1 -1
- package/dist/cjs/debug.js +11 -0
- package/dist/cjs/editing/codegen/import-map-server.js +1 -1
- package/dist/cjs/editing/editing-config-middleware.js +13 -11
- package/dist/cjs/editing/editing-render-middleware.js +41 -29
- package/dist/cjs/editing/feaas-render-middleware.js +24 -13
- package/dist/cjs/editing/index.js +2 -2
- package/dist/cjs/editing/types.js +2 -0
- package/dist/cjs/editing/utils.js +35 -6
- package/dist/cjs/index.js +17 -11
- package/dist/cjs/middleware/index.js +1 -24
- package/dist/cjs/{middleware/app-router-multisite-middleware.js → proxy/app-router-multisite-proxy.js} +8 -8
- package/dist/cjs/proxy/index.js +29 -0
- package/dist/cjs/{middleware/locale-middleware.js → proxy/locale-proxy.js} +18 -15
- package/dist/cjs/{middleware/multisite-middleware.js → proxy/multisite-proxy.js} +23 -20
- package/dist/cjs/{middleware/personalize-middleware.js → proxy/personalize-proxy.js} +31 -28
- package/dist/cjs/{middleware/middleware.js → proxy/proxy.js} +31 -28
- package/dist/cjs/{middleware/redirects-middleware.js → proxy/redirects-proxy.js} +121 -111
- package/dist/cjs/route-handler/editing-config-route-handler.js +16 -13
- package/dist/cjs/route-handler/editing-render-route-handler.js +43 -32
- package/dist/cjs/route-handler/robots-route-handler.js +14 -6
- package/dist/cjs/route-handler/sitemap-route-handler.js +13 -5
- package/dist/cjs/site/index.js +1 -1
- package/dist/cjs/tools/codegen/import-map.js +2 -2
- package/dist/cjs/tools/generate-map.js +1 -1
- package/dist/cjs/tools/index.js +7 -8
- package/dist/cjs/tools/templating/byoc-component.js +1 -1
- package/dist/cjs/tools/templating/default-component.js +1 -1
- package/dist/cjs/tools/templating/utils.js +5 -6
- package/dist/cjs/utils/index.js +4 -5
- package/dist/cjs/utils/utils.js +3 -3
- package/dist/esm/client/index.js +1 -1
- package/dist/esm/client/sitecore-nextjs-client.js +4 -4
- package/dist/esm/components/BYOCWrapper.js +0 -5
- package/dist/esm/components/FEaaSWrapper.js +0 -5
- package/dist/esm/components/NextImage.js +2 -2
- package/dist/esm/config/define-config.js +7 -4
- package/dist/esm/config-cli/define-cli-config.js +1 -1
- package/dist/esm/debug.js +9 -0
- package/dist/esm/editing/codegen/import-map-server.js +1 -1
- package/dist/esm/editing/editing-config-middleware.js +4 -5
- package/dist/esm/editing/editing-render-middleware.js +22 -13
- package/dist/esm/editing/feaas-render-middleware.js +14 -6
- package/dist/esm/editing/index.js +2 -2
- package/dist/esm/editing/types.js +1 -0
- package/dist/esm/editing/utils.js +32 -4
- package/dist/esm/index.js +11 -12
- package/dist/esm/middleware/index.js +0 -9
- package/dist/esm/{middleware/app-router-multisite-middleware.js → proxy/app-router-multisite-proxy.js} +6 -6
- package/dist/esm/proxy/index.js +9 -0
- package/dist/esm/{middleware/locale-middleware.js → proxy/locale-proxy.js} +12 -12
- package/dist/esm/{middleware/multisite-middleware.js → proxy/multisite-proxy.js} +16 -16
- package/dist/esm/{middleware/personalize-middleware.js → proxy/personalize-proxy.js} +17 -17
- package/dist/esm/{middleware/middleware.js → proxy/proxy.js} +24 -24
- package/dist/esm/{middleware/redirects-middleware.js → proxy/redirects-proxy.js} +112 -102
- package/dist/esm/route-handler/editing-config-route-handler.js +4 -4
- package/dist/esm/route-handler/editing-render-route-handler.js +19 -11
- package/dist/esm/route-handler/robots-route-handler.js +8 -3
- package/dist/esm/route-handler/sitemap-route-handler.js +8 -3
- package/dist/esm/site/index.js +1 -1
- package/dist/esm/tools/codegen/import-map.js +1 -1
- package/dist/esm/tools/generate-map.js +1 -1
- package/dist/esm/tools/index.js +2 -1
- package/dist/esm/tools/templating/byoc-component.js +1 -1
- package/dist/esm/tools/templating/default-component.js +1 -1
- package/dist/esm/tools/templating/utils.js +1 -2
- package/dist/esm/utils/index.js +2 -2
- package/dist/esm/utils/utils.js +2 -2
- package/package.json +187 -181
- package/proxy.d.ts +1 -0
- package/types/client/index.d.ts +1 -1
- package/types/client/index.d.ts.map +1 -1
- package/types/client/sitecore-nextjs-client.d.ts +3 -3
- package/types/client/sitecore-nextjs-client.d.ts.map +1 -1
- package/types/components/BYOCWrapper.d.ts +0 -5
- package/types/components/BYOCWrapper.d.ts.map +1 -1
- package/types/components/FEaaSWrapper.d.ts +0 -5
- package/types/components/FEaaSWrapper.d.ts.map +1 -1
- package/types/components/Placeholder.d.ts +2 -2
- package/types/components/Placeholder.d.ts.map +1 -1
- package/types/config/define-config.d.ts +1 -1
- package/types/config/define-config.d.ts.map +1 -1
- package/types/config-cli/define-cli-config.d.ts +1 -1
- package/types/config-cli/define-cli-config.d.ts.map +1 -1
- package/types/debug.d.ts +7 -0
- package/types/debug.d.ts.map +1 -0
- package/types/editing/codegen/import-map-server.d.ts +1 -1
- package/types/editing/codegen/import-map-server.d.ts.map +1 -1
- package/types/editing/codegen/import-map-utils.d.ts +1 -1
- package/types/editing/codegen/import-map-utils.d.ts.map +1 -1
- package/types/editing/codegen/import-map.d.ts +1 -1
- package/types/editing/codegen/import-map.d.ts.map +1 -1
- package/types/editing/codegen/index.d.ts +1 -1
- package/types/editing/codegen/index.d.ts.map +1 -1
- package/types/editing/editing-config-middleware.d.ts +1 -1
- package/types/editing/editing-config-middleware.d.ts.map +1 -1
- package/types/editing/editing-render-middleware.d.ts +8 -1
- package/types/editing/editing-render-middleware.d.ts.map +1 -1
- package/types/editing/feaas-render-middleware.d.ts +1 -1
- package/types/editing/feaas-render-middleware.d.ts.map +1 -1
- package/types/editing/index.d.ts +3 -2
- package/types/editing/index.d.ts.map +1 -1
- package/types/editing/types.d.ts +37 -0
- package/types/editing/types.d.ts.map +1 -0
- package/types/editing/utils.d.ts +12 -1
- package/types/editing/utils.d.ts.map +1 -1
- package/types/index.d.ts +13 -11
- package/types/index.d.ts.map +1 -1
- package/types/middleware/index.d.ts +0 -9
- package/types/middleware/index.d.ts.map +1 -1
- package/types/middleware/robots-middleware.d.ts +1 -1
- package/types/middleware/robots-middleware.d.ts.map +1 -1
- package/types/middleware/sitemap-middleware.d.ts +1 -1
- package/types/middleware/sitemap-middleware.d.ts.map +1 -1
- package/types/{middleware/app-router-multisite-middleware.d.ts → proxy/app-router-multisite-proxy.d.ts} +6 -6
- package/types/proxy/app-router-multisite-proxy.d.ts.map +1 -0
- package/types/proxy/index.d.ts +10 -0
- package/types/proxy/index.d.ts.map +1 -0
- package/types/proxy/locale-proxy.d.ts +35 -0
- package/types/proxy/locale-proxy.d.ts.map +1 -0
- package/types/{middleware/multisite-middleware.d.ts → proxy/multisite-proxy.d.ts} +11 -11
- package/types/proxy/multisite-proxy.d.ts.map +1 -0
- package/types/{middleware/personalize-middleware.d.ts → proxy/personalize-proxy.d.ts} +10 -10
- package/types/proxy/personalize-proxy.d.ts.map +1 -0
- package/types/{middleware/middleware.d.ts → proxy/proxy.d.ts} +24 -26
- package/types/proxy/proxy.d.ts.map +1 -0
- package/types/{middleware/redirects-middleware.d.ts → proxy/redirects-proxy.d.ts} +11 -11
- package/types/proxy/redirects-proxy.d.ts.map +1 -0
- package/types/route-handler/editing-config-route-handler.d.ts +1 -1
- package/types/route-handler/editing-config-route-handler.d.ts.map +1 -1
- package/types/route-handler/editing-render-route-handler.d.ts +7 -0
- package/types/route-handler/editing-render-route-handler.d.ts.map +1 -1
- package/types/route-handler/robots-route-handler.d.ts +2 -2
- package/types/route-handler/robots-route-handler.d.ts.map +1 -1
- package/types/route-handler/sitemap-route-handler.d.ts +2 -2
- package/types/route-handler/sitemap-route-handler.d.ts.map +1 -1
- package/types/services/component-props-service.d.ts +1 -1
- package/types/services/component-props-service.d.ts.map +1 -1
- package/types/sharedTypes/component-props.d.ts +1 -1
- package/types/sharedTypes/component-props.d.ts.map +1 -1
- package/types/sharedTypes/sitecore-page-props.d.ts +2 -2
- package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -1
- package/types/site/index.d.ts +1 -1
- package/types/site/index.d.ts.map +1 -1
- package/types/tools/codegen/import-map.d.ts +3 -3
- package/types/tools/codegen/import-map.d.ts.map +1 -1
- package/types/tools/generate-map.d.ts +1 -1
- package/types/tools/generate-map.d.ts.map +1 -1
- package/types/tools/index.d.ts +3 -1
- package/types/tools/index.d.ts.map +1 -1
- package/types/tools/templating/byoc-component.d.ts +1 -1
- package/types/tools/templating/byoc-component.d.ts.map +1 -1
- package/types/tools/templating/default-component.d.ts +1 -1
- package/types/tools/templating/default-component.d.ts.map +1 -1
- package/types/tools/templating/utils.d.ts +2 -2
- package/types/tools/templating/utils.d.ts.map +1 -1
- package/types/utils/index.d.ts +2 -2
- package/types/utils/index.d.ts.map +1 -1
- package/types/middleware/app-router-multisite-middleware.d.ts.map +0 -1
- package/types/middleware/locale-middleware.d.ts +0 -35
- package/types/middleware/locale-middleware.d.ts.map +0 -1
- package/types/middleware/middleware.d.ts.map +0 -1
- package/types/middleware/multisite-middleware.d.ts.map +0 -1
- package/types/middleware/personalize-middleware.d.ts.map +0 -1
- package/types/middleware/redirects-middleware.d.ts.map +0 -1
|
@@ -8,15 +8,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.EditingRenderMiddleware = void 0;
|
|
13
16
|
const core_1 = require("@sitecore-content-sdk/core");
|
|
14
|
-
const editing_1 = require("@sitecore-content-sdk/
|
|
15
|
-
const layout_1 = require("@sitecore-content-sdk/
|
|
17
|
+
const editing_1 = require("@sitecore-content-sdk/content/editing");
|
|
18
|
+
const layout_1 = require("@sitecore-content-sdk/content/layout");
|
|
16
19
|
const utils_1 = require("../utils/utils");
|
|
17
20
|
const render_middleware_1 = require("./render-middleware");
|
|
18
|
-
const
|
|
19
|
-
const
|
|
21
|
+
const tools_1 = require("@sitecore-content-sdk/core/tools");
|
|
22
|
+
const debug_1 = __importDefault(require("../debug"));
|
|
23
|
+
const utils_2 = require("./utils");
|
|
20
24
|
/**
|
|
21
25
|
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
22
26
|
* which is required for Sitecore editing support.
|
|
@@ -30,22 +34,22 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
30
34
|
super();
|
|
31
35
|
this.config = config;
|
|
32
36
|
this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
-
var _a, _b, _c, _d, _e;
|
|
37
|
+
var _a, _b, _c, _d, _e, _f;
|
|
34
38
|
const { body, method, headers, query } = req;
|
|
35
|
-
|
|
39
|
+
debug_1.default.editing('editing render middleware start: %o', {
|
|
36
40
|
method,
|
|
37
41
|
query,
|
|
38
42
|
headers,
|
|
39
43
|
body,
|
|
40
44
|
});
|
|
41
|
-
const corsHeaders = (0,
|
|
45
|
+
const corsHeaders = (0, tools_1.getEnforcedCorsHeaders)({
|
|
42
46
|
requestMethod: req.method,
|
|
43
47
|
headers: req.headers,
|
|
44
48
|
presetCorsHeader: headers['Access-Control-Allow-Origin'],
|
|
45
49
|
allowedOrigins: editing_1.EDITING_ALLOWED_ORIGINS,
|
|
46
50
|
});
|
|
47
51
|
if (!corsHeaders) {
|
|
48
|
-
|
|
52
|
+
debug_1.default.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
|
|
49
53
|
return res.status(401).json({
|
|
50
54
|
html: `<html><body>Requests from origin ${(_a = req.headers) === null || _a === void 0 ? void 0 : _a.origin} not allowed</body></html>`,
|
|
51
55
|
});
|
|
@@ -56,18 +60,18 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
56
60
|
// Validate secret
|
|
57
61
|
const secret = query[editing_1.QUERY_PARAM_EDITING_SECRET];
|
|
58
62
|
if (secret !== (0, utils_1.getEditingSecret)()) {
|
|
59
|
-
|
|
63
|
+
debug_1.default.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
|
|
60
64
|
return res.status(401).json({
|
|
61
65
|
html: editing_1.INVALID_SECRET_HTML_MESSAGE,
|
|
62
66
|
});
|
|
63
67
|
}
|
|
64
68
|
if (req.method === 'OPTIONS') {
|
|
65
|
-
|
|
66
|
-
// CORS headers are set by
|
|
69
|
+
debug_1.default.editing('preflight request');
|
|
70
|
+
// CORS headers are set by getEnforcedCorsHeaders
|
|
67
71
|
return res.status(204).send(null);
|
|
68
72
|
}
|
|
69
73
|
if (req.method !== 'GET') {
|
|
70
|
-
|
|
74
|
+
debug_1.default.editing('invalid method - sent %s expected GET', req.method);
|
|
71
75
|
res.setHeader('Allow', 'GET');
|
|
72
76
|
return res.status(405).json({
|
|
73
77
|
html: `<html><body>Invalid request method '${req.method}'</body></html>`,
|
|
@@ -75,50 +79,58 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
75
79
|
}
|
|
76
80
|
const startTimestamp = Date.now();
|
|
77
81
|
const mode = query.mode;
|
|
78
|
-
const requiredQueryParams = (0,
|
|
82
|
+
const requiredQueryParams = (0, utils_2.getRequiredEditingParamsList)(mode);
|
|
79
83
|
const missingQueryParams = requiredQueryParams.filter((param) => !query[param]);
|
|
84
|
+
const { allowedQueryParams, missingAllowedParams } = (0, utils_2.getAllowedQueryParams)(query, (_b = this.config) === null || _b === void 0 ? void 0 : _b.allowedQueryParams);
|
|
80
85
|
// Validate query parameters
|
|
81
|
-
if (missingQueryParams.length) {
|
|
82
|
-
|
|
86
|
+
if (missingQueryParams.length || missingAllowedParams.length) {
|
|
87
|
+
debug_1.default.editing('missing required query parameters: %o', [
|
|
88
|
+
...missingQueryParams,
|
|
89
|
+
...missingAllowedParams,
|
|
90
|
+
]);
|
|
83
91
|
return res.status(400).json({
|
|
84
|
-
html: `<html><body>Missing required query parameters: ${
|
|
92
|
+
html: `<html><body>Missing required query parameters: ${[
|
|
93
|
+
...missingQueryParams,
|
|
94
|
+
...missingAllowedParams,
|
|
95
|
+
].join(', ')}</body></html>`,
|
|
85
96
|
});
|
|
86
97
|
}
|
|
87
|
-
const previewDataParams = (0,
|
|
88
|
-
res.setPreviewData(Object.assign(Object.assign({}, previewDataParams), { variantIds: (
|
|
98
|
+
const previewDataParams = (0, utils_2.mapEditingParams)(query);
|
|
99
|
+
res.setPreviewData(Object.assign(Object.assign(Object.assign({}, previewDataParams), allowedQueryParams), { variantIds: (_c = previewDataParams.variantIds) === null || _c === void 0 ? void 0 : _c.split(',') }), {
|
|
89
100
|
maxAge: 3,
|
|
90
101
|
});
|
|
91
102
|
// Set Preview mode identifier cookie, if the page is rendered in Sitecore Preview mode
|
|
92
103
|
if (mode === layout_1.LayoutServicePageState.Preview) {
|
|
93
104
|
const cookies = res.getHeader('Set-Cookie');
|
|
94
|
-
const previewCookies = (0,
|
|
105
|
+
const previewCookies = (0, utils_2.getPreviewCookies)(query.sc_site);
|
|
95
106
|
res.setHeader('Set-Cookie', [...cookies, ...previewCookies]);
|
|
96
107
|
}
|
|
97
108
|
// Restrict the page to be rendered only within the allowed origins
|
|
98
|
-
res.setHeader('Content-Security-Policy', (0,
|
|
109
|
+
res.setHeader('Content-Security-Policy', (0, utils_2.getCSPHeader)());
|
|
99
110
|
const encodedRoute = encodeURI(query.route);
|
|
100
|
-
const route = ((
|
|
101
|
-
const base = ((
|
|
111
|
+
const route = ((_e = (_d = this.config) === null || _d === void 0 ? void 0 : _d.resolvePageUrl) === null || _e === void 0 ? void 0 : _e.call(_d, encodedRoute)) || encodedRoute;
|
|
112
|
+
const base = ((_f = this.config) === null || _f === void 0 ? void 0 : _f.sitecoreInternalEditingHostUrl) || (0, utils_2.resolveServerUrl)(req);
|
|
102
113
|
const requestUrl = new URL(route, base);
|
|
103
114
|
const cookies = res.getHeader('Set-Cookie');
|
|
104
115
|
// Make actual render request for page route, passing on preview cookies as well as any approved query string parameters.
|
|
105
116
|
// Note timestamp effectively disables caching the request (no amount of cache headers seemed to do it)
|
|
106
117
|
try {
|
|
107
|
-
|
|
118
|
+
debug_1.default.editing('fetching page route for %s', query.route);
|
|
108
119
|
// Get query string parameters to propagate on subsequent requests (e.g. for deployment protection bypass)
|
|
109
|
-
const propagatedQsParams = (0,
|
|
120
|
+
const propagatedQsParams = (0, utils_2.getQueryParamsForPropagation)(query);
|
|
110
121
|
// Get headers to propagate on subsequent requests
|
|
111
|
-
const propagatedHeaders = (0,
|
|
112
|
-
const html = yield (0,
|
|
122
|
+
const propagatedHeaders = (0, utils_2.getHeadersForPropagation)(headers);
|
|
123
|
+
const html = yield (0, utils_2.getEditingRequestHtml)(requestUrl, propagatedQsParams, propagatedHeaders, cookies, this.dataFetcher);
|
|
113
124
|
// remove preview cookies to not leak them to the browser
|
|
114
125
|
if (cookies && Array.isArray(cookies)) {
|
|
115
|
-
const filteredCookies = (0,
|
|
126
|
+
const filteredCookies = (0, utils_2.cleanupNextPreviewCookies)(cookies);
|
|
116
127
|
filteredCookies && res.setHeader('Set-Cookie', filteredCookies);
|
|
117
128
|
}
|
|
118
|
-
|
|
129
|
+
debug_1.default.editing('editing render middleware end in %dms: %o', Date.now() - startTimestamp, {
|
|
119
130
|
status: 200,
|
|
120
131
|
route,
|
|
121
132
|
});
|
|
133
|
+
res.setHeader('Content-Type', 'text/html; charset=utf-8');
|
|
122
134
|
res.status(200).send(html);
|
|
123
135
|
}
|
|
124
136
|
catch (err) {
|
|
@@ -132,7 +144,7 @@ class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
132
144
|
res.status(500).send(`<html><body>${error}</body></html>`);
|
|
133
145
|
}
|
|
134
146
|
});
|
|
135
|
-
this.dataFetcher = new core_1.NativeDataFetcher({ debugger:
|
|
147
|
+
this.dataFetcher = new core_1.NativeDataFetcher({ debugger: debug_1.default.editing });
|
|
136
148
|
}
|
|
137
149
|
/**
|
|
138
150
|
* Gets the Next.js API route handler
|
|
@@ -8,13 +8,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
15
|
exports.FEAASRenderMiddleware = void 0;
|
|
13
|
-
const
|
|
14
|
-
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
16
|
+
const editing_1 = require("@sitecore-content-sdk/content/editing");
|
|
15
17
|
const utils_1 = require("../utils/utils");
|
|
16
18
|
const render_middleware_1 = require("./render-middleware");
|
|
17
|
-
const
|
|
19
|
+
const tools_1 = require("@sitecore-content-sdk/core/tools");
|
|
20
|
+
const debug_1 = __importDefault(require("../debug"));
|
|
18
21
|
/**
|
|
19
22
|
* Middleware / handler for use in the feaas render Next.js API route (e.g. '/api/editing/feaas/render')
|
|
20
23
|
* which is required for Sitecore editing support.
|
|
@@ -22,7 +25,7 @@ const utils_2 = require("@sitecore-content-sdk/core/utils");
|
|
|
22
25
|
*/
|
|
23
26
|
class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
24
27
|
/**
|
|
25
|
-
* @param {
|
|
28
|
+
* @param {FEAASRenderMiddlewareConfig} [config] FEAAS render middleware config
|
|
26
29
|
*/
|
|
27
30
|
constructor(config) {
|
|
28
31
|
var _a;
|
|
@@ -33,32 +36,40 @@ class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
33
36
|
var _a;
|
|
34
37
|
const { method, query, headers } = req;
|
|
35
38
|
const startTimestamp = Date.now();
|
|
36
|
-
|
|
39
|
+
debug_1.default.editing('feaas render middleware start: %o', {
|
|
37
40
|
method,
|
|
38
41
|
query,
|
|
39
42
|
headers,
|
|
40
43
|
});
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
const corsHeaders = (0, tools_1.getEnforcedCorsHeaders)({
|
|
45
|
+
requestMethod: method,
|
|
46
|
+
headers: headers,
|
|
47
|
+
presetCorsHeader: headers['Access-Control-Allow-Origin'],
|
|
48
|
+
allowedOrigins: editing_1.EDITING_ALLOWED_ORIGINS,
|
|
49
|
+
});
|
|
50
|
+
if (!corsHeaders) {
|
|
51
|
+
debug_1.default.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
|
|
43
52
|
return res
|
|
44
53
|
.status(401)
|
|
45
54
|
.send(`<html><body>Requests from origin ${(_a = req.headers) === null || _a === void 0 ? void 0 : _a.origin} are not allowed</body></html>`);
|
|
46
55
|
}
|
|
56
|
+
Object.keys(corsHeaders).forEach((key) => {
|
|
57
|
+
res.setHeader(key, corsHeaders[key]);
|
|
58
|
+
});
|
|
47
59
|
if (!method || !['GET', 'OPTIONS'].includes(method)) {
|
|
48
|
-
|
|
60
|
+
debug_1.default.editing('invalid method - sent %s expected GET,OPTIONS', method);
|
|
49
61
|
res.setHeader('Allow', 'GET, OPTIONS');
|
|
50
62
|
return res.status(405).send(`<html><body>Invalid request method '${method}'</body></html>`);
|
|
51
63
|
}
|
|
52
64
|
// Validate secret
|
|
53
65
|
const secret = query[editing_1.QUERY_PARAM_EDITING_SECRET];
|
|
54
66
|
if (secret !== (0, utils_1.getEditingSecret)()) {
|
|
55
|
-
|
|
67
|
+
debug_1.default.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
|
|
56
68
|
return res.status(401).send(editing_1.INVALID_SECRET_HTML_MESSAGE);
|
|
57
69
|
}
|
|
58
70
|
// Handle preflight request
|
|
59
71
|
if (method === 'OPTIONS') {
|
|
60
|
-
|
|
61
|
-
// CORS headers are set by enforceCors
|
|
72
|
+
debug_1.default.editing('preflight request');
|
|
62
73
|
return res.status(204).send(null);
|
|
63
74
|
}
|
|
64
75
|
try {
|
|
@@ -77,8 +88,8 @@ class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
|
77
88
|
queryParams.append('feaasSrc', query.feaasSrc);
|
|
78
89
|
}
|
|
79
90
|
const redirectUrl = this.pageUrl + (queryParams.toString() ? `?${queryParams.toString()}` : '');
|
|
80
|
-
|
|
81
|
-
|
|
91
|
+
debug_1.default.editing('redirecting to page route %s', redirectUrl);
|
|
92
|
+
debug_1.default.editing('feaas render middleware end in %dms', Date.now() - startTimestamp);
|
|
82
93
|
res.redirect(redirectUrl);
|
|
83
94
|
}
|
|
84
95
|
catch (err) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.getHeadersForPropagation = exports.getQueryParamsForPropagation = exports.isDesignLibraryPreviewData = exports.EditingRenderMiddleware = exports.EditingService = void 0;
|
|
4
|
-
var editing_1 = require("@sitecore-content-sdk/
|
|
4
|
+
var editing_1 = require("@sitecore-content-sdk/content/editing");
|
|
5
5
|
Object.defineProperty(exports, "EditingService", { enumerable: true, get: function () { return editing_1.EditingService; } });
|
|
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; } });
|
|
@@ -13,7 +13,7 @@ var feaas_render_middleware_1 = require("./feaas-render-middleware");
|
|
|
13
13
|
Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
|
|
14
14
|
var editing_config_middleware_1 = require("./editing-config-middleware");
|
|
15
15
|
Object.defineProperty(exports, "EditingConfigMiddleware", { enumerable: true, get: function () { return editing_config_middleware_1.EditingConfigMiddleware; } });
|
|
16
|
-
var layout_1 = require("@sitecore-content-sdk/
|
|
16
|
+
var layout_1 = require("@sitecore-content-sdk/content/layout");
|
|
17
17
|
Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
|
|
18
18
|
Object.defineProperty(exports, "EDITING_COMPONENT_PLACEHOLDER", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_PLACEHOLDER; } });
|
|
19
19
|
Object.defineProperty(exports, "EDITING_COMPONENT_ID", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_ID; } });
|
|
@@ -9,13 +9,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.getCSPHeader = exports.resolveServerUrl = exports.isDesignLibraryPreviewData = exports.getEditingRequestHtml = exports.getHeadersForPropagation = exports.getQueryParamsForPropagation = exports.getRequiredEditingParamsList = exports.getPreviewCookies = exports.cleanupNextPreviewCookies = exports.mapEditingParams = exports.getEditingSecretFromRequest = void 0;
|
|
13
|
-
const editing_1 = require("@sitecore-content-sdk/
|
|
14
|
-
const personalize_1 = require("@sitecore-content-sdk/
|
|
15
|
-
const site_1 = require("@sitecore-content-sdk/
|
|
12
|
+
exports.getCSPHeader = exports.resolveServerUrl = exports.isDesignLibraryPreviewData = exports.getEditingRequestHtml = exports.getHeadersForPropagation = exports.getQueryParamsForPropagation = exports.getRequiredEditingParamsList = exports.getPreviewCookies = exports.cleanupNextPreviewCookies = exports.getAllowedQueryParams = exports.mapEditingParams = exports.getEditingSecretFromRequest = void 0;
|
|
13
|
+
const editing_1 = require("@sitecore-content-sdk/content/editing");
|
|
14
|
+
const personalize_1 = require("@sitecore-content-sdk/content/personalize");
|
|
15
|
+
const site_1 = require("@sitecore-content-sdk/content/site");
|
|
16
16
|
const constants_1 = require("./constants");
|
|
17
17
|
const constants_2 = require("next/constants");
|
|
18
|
-
const
|
|
18
|
+
const tools_1 = require("@sitecore-content-sdk/core/tools");
|
|
19
19
|
/**
|
|
20
20
|
* Gets editing secret value from request
|
|
21
21
|
* @param {NextApiRequest | NextRequest} req incoming request
|
|
@@ -69,6 +69,35 @@ const mapEditingParams = (query) => {
|
|
|
69
69
|
return params;
|
|
70
70
|
};
|
|
71
71
|
exports.mapEditingParams = mapEditingParams;
|
|
72
|
+
/**
|
|
73
|
+
* Parses the query parameters based on the provided allowed parameters or a resolver function, to extract additional parameters that should be allowed.
|
|
74
|
+
* @param {{ [key: string]: string | undefined }} queryParams Object of query parameters from incoming URL.
|
|
75
|
+
* @param {AllowedQueryParams} allowedParams Allowed parameters to map.
|
|
76
|
+
* @returns Object containing the list of missing required parameters and the allowed query parameters that were extracted.
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
const getAllowedQueryParams = (queryParams, allowedParams) => {
|
|
80
|
+
const allowedQueryParamsList = typeof allowedParams === 'function'
|
|
81
|
+
? allowedParams(Object.keys(queryParams))
|
|
82
|
+
: Array.isArray(allowedParams)
|
|
83
|
+
? allowedParams
|
|
84
|
+
: [];
|
|
85
|
+
if (!allowedQueryParamsList.length)
|
|
86
|
+
return { missingAllowedParams: [], allowedQueryParams: {} };
|
|
87
|
+
return allowedQueryParamsList.reduce((acc, param) => {
|
|
88
|
+
const name = typeof param === 'string' ? param : param.name;
|
|
89
|
+
const required = typeof param === 'string' ? false : param.required;
|
|
90
|
+
const value = queryParams[name];
|
|
91
|
+
if (value !== undefined) {
|
|
92
|
+
acc.allowedQueryParams[name] = value;
|
|
93
|
+
return acc;
|
|
94
|
+
}
|
|
95
|
+
if (required)
|
|
96
|
+
acc.missingAllowedParams.push(name);
|
|
97
|
+
return acc;
|
|
98
|
+
}, { missingAllowedParams: [], allowedQueryParams: {} });
|
|
99
|
+
};
|
|
100
|
+
exports.getAllowedQueryParams = getAllowedQueryParams;
|
|
72
101
|
/**
|
|
73
102
|
* Filters out Next.js preview cookies from a cookie string or array
|
|
74
103
|
* @param {string | string[] | null} cookies cookie header value
|
|
@@ -255,6 +284,6 @@ exports.resolveServerUrl = resolveServerUrl;
|
|
|
255
284
|
* @returns Content-Security-Policy header value
|
|
256
285
|
*/
|
|
257
286
|
const getCSPHeader = () => {
|
|
258
|
-
return `frame-ancestors 'self' ${[...(0,
|
|
287
|
+
return `frame-ancestors 'self' ${[...(0, tools_1.getAllowedOriginsFromEnv)(), ...editing_1.EDITING_ALLOWED_ORIGINS].join(' ')}`;
|
|
259
288
|
};
|
|
260
289
|
exports.getCSPHeader = getCSPHeader;
|
package/dist/cjs/index.js
CHANGED
|
@@ -32,17 +32,21 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
35
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.BYOCWrapper = exports.FEaaSWrapper = exports.BYOCServerWrapper = exports.BYOCClientWrapper = exports.FEaaSServerWrapper = exports.FEaaSClientWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.ComponentPropsService = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.SiteInfoService = exports.SiteResolver = exports.RobotsService = exports.ErrorPagesService = exports.SitemapXmlService = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RedirectsService = exports.SitePathService = exports.PersonalizeService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.DictionaryService = exports.mediaApi = exports.ComponentLayoutService = exports.ErrorPage = exports.RenderingType = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.LayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.
|
|
37
|
-
exports.AppPlaceholder = exports.ClientEditingChromesUpdate = exports.Form = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecore = exports.withSitecore = exports.SitecoreProviderReactContext = exports.SitecoreProvider = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.DesignLibraryApp = exports.DesignLibrary = exports.File = exports.getDesignLibraryStylesheetLinks = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.Image = void 0;
|
|
39
|
+
exports.BYOCWrapper = exports.FEaaSWrapper = exports.BYOCServerWrapper = exports.BYOCClientWrapper = exports.FEaaSServerWrapper = exports.FEaaSClientWrapper = exports.NextImage = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.ComponentPropsService = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.SiteInfoService = exports.SiteResolver = exports.RobotsService = exports.ErrorPagesService = exports.SitemapXmlService = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RedirectsService = exports.SitePathService = exports.PersonalizeService = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getGroomedVariantIds = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.DictionaryService = exports.mediaApi = exports.ComponentLayoutService = exports.ErrorPage = exports.RenderingType = exports.EditMode = exports.getContentStylesheetLink = exports.getFieldValue = exports.getChildPlaceholder = exports.LayoutService = exports.LayoutServicePageState = exports.MemoryCacheClient = exports.enableDebug = exports.NativeDataFetcher = exports.constants = exports.debug = void 0;
|
|
40
|
+
exports.renderEmptyPlaceholder = exports.AppPlaceholder = exports.ClientEditingChromesUpdate = exports.Form = exports.EditingScripts = exports.withEmptyFieldEditingComponent = exports.withFieldMetadata = exports.withDatasourceCheck = exports.withPlaceholder = exports.withAppPlaceholder = exports.withEditorChromes = exports.useSitecore = exports.withSitecore = exports.SitecoreProviderReactContext = exports.SitecoreProvider = exports.DefaultEmptyFieldEditingComponentText = exports.DefaultEmptyFieldEditingComponentImage = exports.DesignLibraryApp = exports.DesignLibrary = exports.File = exports.getDesignLibraryStylesheetLinks = exports.BYOCComponent = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.DateField = exports.Text = exports.Image = void 0;
|
|
41
|
+
var debug_1 = require("./debug");
|
|
42
|
+
Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return __importDefault(debug_1).default; } });
|
|
38
43
|
var core_1 = require("@sitecore-content-sdk/core");
|
|
39
44
|
Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return core_1.constants; } });
|
|
40
45
|
// generic data access
|
|
41
46
|
Object.defineProperty(exports, "NativeDataFetcher", { enumerable: true, get: function () { return core_1.NativeDataFetcher; } });
|
|
42
47
|
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return core_1.enableDebug; } });
|
|
43
|
-
Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return core_1.debug; } });
|
|
44
48
|
Object.defineProperty(exports, "MemoryCacheClient", { enumerable: true, get: function () { return core_1.MemoryCacheClient; } });
|
|
45
|
-
var layout_1 = require("@sitecore-content-sdk/
|
|
49
|
+
var layout_1 = require("@sitecore-content-sdk/content/layout");
|
|
46
50
|
Object.defineProperty(exports, "LayoutServicePageState", { enumerable: true, get: function () { return layout_1.LayoutServicePageState; } });
|
|
47
51
|
Object.defineProperty(exports, "LayoutService", { enumerable: true, get: function () { return layout_1.LayoutService; } });
|
|
48
52
|
Object.defineProperty(exports, "getChildPlaceholder", { enumerable: true, get: function () { return layout_1.getChildPlaceholder; } });
|
|
@@ -50,15 +54,15 @@ Object.defineProperty(exports, "getFieldValue", { enumerable: true, get: functio
|
|
|
50
54
|
Object.defineProperty(exports, "getContentStylesheetLink", { enumerable: true, get: function () { return layout_1.getContentStylesheetLink; } });
|
|
51
55
|
Object.defineProperty(exports, "EditMode", { enumerable: true, get: function () { return layout_1.EditMode; } });
|
|
52
56
|
Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
|
|
53
|
-
var client_1 = require("@sitecore-content-sdk/
|
|
57
|
+
var client_1 = require("@sitecore-content-sdk/content/client");
|
|
54
58
|
Object.defineProperty(exports, "ErrorPage", { enumerable: true, get: function () { return client_1.ErrorPage; } });
|
|
55
|
-
var editing_1 = require("@sitecore-content-sdk/
|
|
59
|
+
var editing_1 = require("@sitecore-content-sdk/content/editing");
|
|
56
60
|
Object.defineProperty(exports, "ComponentLayoutService", { enumerable: true, get: function () { return editing_1.ComponentLayoutService; } });
|
|
57
|
-
var media_1 = require("@sitecore-content-sdk/
|
|
61
|
+
var media_1 = require("@sitecore-content-sdk/content/media");
|
|
58
62
|
Object.defineProperty(exports, "mediaApi", { enumerable: true, get: function () { return media_1.mediaApi; } });
|
|
59
|
-
var i18n_1 = require("@sitecore-content-sdk/
|
|
63
|
+
var i18n_1 = require("@sitecore-content-sdk/content/i18n");
|
|
60
64
|
Object.defineProperty(exports, "DictionaryService", { enumerable: true, get: function () { return i18n_1.DictionaryService; } });
|
|
61
|
-
var personalize_1 = require("@sitecore-content-sdk/
|
|
65
|
+
var personalize_1 = require("@sitecore-content-sdk/content/personalize");
|
|
62
66
|
Object.defineProperty(exports, "personalizeLayout", { enumerable: true, get: function () { return personalize_1.personalizeLayout; } });
|
|
63
67
|
Object.defineProperty(exports, "getPersonalizedRewrite", { enumerable: true, get: function () { return personalize_1.getPersonalizedRewrite; } });
|
|
64
68
|
Object.defineProperty(exports, "getPersonalizedRewriteData", { enumerable: true, get: function () { return personalize_1.getPersonalizedRewriteData; } });
|
|
@@ -66,13 +70,13 @@ Object.defineProperty(exports, "getGroomedVariantIds", { enumerable: true, get:
|
|
|
66
70
|
Object.defineProperty(exports, "normalizePersonalizedRewrite", { enumerable: true, get: function () { return personalize_1.normalizePersonalizedRewrite; } });
|
|
67
71
|
Object.defineProperty(exports, "CdpHelper", { enumerable: true, get: function () { return personalize_1.CdpHelper; } });
|
|
68
72
|
Object.defineProperty(exports, "PersonalizeService", { enumerable: true, get: function () { return personalize_1.PersonalizeService; } });
|
|
69
|
-
var site_1 = require("@sitecore-content-sdk/
|
|
73
|
+
var site_1 = require("@sitecore-content-sdk/content/site");
|
|
70
74
|
Object.defineProperty(exports, "SitePathService", { enumerable: true, get: function () { return site_1.SitePathService; } });
|
|
71
75
|
Object.defineProperty(exports, "RedirectsService", { enumerable: true, get: function () { return site_1.RedirectsService; } });
|
|
72
76
|
Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
|
|
73
77
|
Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
|
|
74
78
|
Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
|
|
75
|
-
var site_2 = require("@sitecore-content-sdk/
|
|
79
|
+
var site_2 = require("@sitecore-content-sdk/content/site");
|
|
76
80
|
Object.defineProperty(exports, "SitemapXmlService", { enumerable: true, get: function () { return site_2.SitemapXmlService; } });
|
|
77
81
|
Object.defineProperty(exports, "ErrorPagesService", { enumerable: true, get: function () { return site_2.ErrorPagesService; } });
|
|
78
82
|
Object.defineProperty(exports, "RobotsService", { enumerable: true, get: function () { return site_2.RobotsService; } });
|
|
@@ -122,6 +126,7 @@ Object.defineProperty(exports, "SitecoreProviderReactContext", { enumerable: tru
|
|
|
122
126
|
Object.defineProperty(exports, "withSitecore", { enumerable: true, get: function () { return react_2.withSitecore; } });
|
|
123
127
|
Object.defineProperty(exports, "useSitecore", { enumerable: true, get: function () { return react_2.useSitecore; } });
|
|
124
128
|
Object.defineProperty(exports, "withEditorChromes", { enumerable: true, get: function () { return react_2.withEditorChromes; } });
|
|
129
|
+
Object.defineProperty(exports, "withAppPlaceholder", { enumerable: true, get: function () { return react_2.withAppPlaceholder; } });
|
|
125
130
|
Object.defineProperty(exports, "withPlaceholder", { enumerable: true, get: function () { return react_2.withPlaceholder; } });
|
|
126
131
|
Object.defineProperty(exports, "withDatasourceCheck", { enumerable: true, get: function () { return react_2.withDatasourceCheck; } });
|
|
127
132
|
Object.defineProperty(exports, "withFieldMetadata", { enumerable: true, get: function () { return react_2.withFieldMetadata; } });
|
|
@@ -130,3 +135,4 @@ Object.defineProperty(exports, "EditingScripts", { enumerable: true, get: functi
|
|
|
130
135
|
Object.defineProperty(exports, "Form", { enumerable: true, get: function () { return react_2.Form; } });
|
|
131
136
|
Object.defineProperty(exports, "ClientEditingChromesUpdate", { enumerable: true, get: function () { return react_2.ClientEditingChromesUpdate; } });
|
|
132
137
|
Object.defineProperty(exports, "AppPlaceholder", { enumerable: true, get: function () { return react_2.AppPlaceholder; } });
|
|
138
|
+
Object.defineProperty(exports, "renderEmptyPlaceholder", { enumerable: true, get: function () { return react_2.renderEmptyPlaceholder; } });
|
|
@@ -1,30 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
var core_1 = require("@sitecore-content-sdk/core");
|
|
5
|
-
Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return core_1.debug; } });
|
|
6
|
-
var middleware_1 = require("./middleware");
|
|
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; } });
|
|
10
|
-
var redirects_middleware_1 = require("./redirects-middleware");
|
|
11
|
-
Object.defineProperty(exports, "RedirectsMiddleware", { enumerable: true, get: function () { return redirects_middleware_1.RedirectsMiddleware; } });
|
|
12
|
-
var personalize_middleware_1 = require("./personalize-middleware");
|
|
13
|
-
Object.defineProperty(exports, "PersonalizeMiddleware", { enumerable: true, get: function () { return personalize_middleware_1.PersonalizeMiddleware; } });
|
|
14
|
-
var multisite_middleware_1 = require("./multisite-middleware");
|
|
15
|
-
Object.defineProperty(exports, "MultisiteMiddleware", { enumerable: true, get: function () { return multisite_middleware_1.MultisiteMiddleware; } });
|
|
16
|
-
var app_router_multisite_middleware_1 = require("./app-router-multisite-middleware");
|
|
17
|
-
Object.defineProperty(exports, "AppRouterMultisiteMiddleware", { enumerable: true, get: function () { return app_router_multisite_middleware_1.AppRouterMultisiteMiddleware; } });
|
|
3
|
+
exports.RobotsMiddleware = exports.SitemapMiddleware = void 0;
|
|
18
4
|
var sitemap_middleware_1 = require("./sitemap-middleware");
|
|
19
5
|
Object.defineProperty(exports, "SitemapMiddleware", { enumerable: true, get: function () { return sitemap_middleware_1.SitemapMiddleware; } });
|
|
20
6
|
var robots_middleware_1 = require("./robots-middleware");
|
|
21
7
|
Object.defineProperty(exports, "RobotsMiddleware", { enumerable: true, get: function () { return robots_middleware_1.RobotsMiddleware; } });
|
|
22
|
-
var locale_middleware_1 = require("./locale-middleware");
|
|
23
|
-
Object.defineProperty(exports, "LocaleMiddleware", { enumerable: true, get: function () { return locale_middleware_1.LocaleMiddleware; } });
|
|
24
|
-
var personalize_1 = require("@sitecore-content-sdk/core/personalize");
|
|
25
|
-
Object.defineProperty(exports, "PersonalizeService", { enumerable: true, get: function () { return personalize_1.PersonalizeService; } });
|
|
26
|
-
var site_1 = require("@sitecore-content-sdk/core/site");
|
|
27
|
-
Object.defineProperty(exports, "RedirectsService", { enumerable: true, get: function () { return site_1.RedirectsService; } });
|
|
28
|
-
Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
|
|
29
|
-
Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
|
|
30
|
-
Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
3
|
+
exports.AppRouterMultisiteProxy = void 0;
|
|
4
|
+
const multisite_proxy_1 = require("./multisite-proxy");
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Proxy/handler for enabling multisite support in the Next.js App Router.
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
9
|
-
class
|
|
9
|
+
class AppRouterMultisiteProxy extends multisite_proxy_1.MultisiteProxy {
|
|
10
10
|
/**
|
|
11
11
|
* Warns when multisite is disabled in App Router.
|
|
12
|
-
* The
|
|
12
|
+
* The proxy will still run to prevent routing errors.
|
|
13
13
|
* @param {NextResponse} _res response (unused, kept for method signature compatibility)
|
|
14
14
|
*/
|
|
15
15
|
// eslint-disable-next-line no-unused-vars
|
|
16
16
|
shouldWarnWhenDisabled(_res) {
|
|
17
|
-
console.warn('⚠️ Warning: Multisite is disabled in App Router configuration, but the
|
|
17
|
+
console.warn('⚠️ Warning: Multisite is disabled in App Router configuration, but the proxy will continue running. ' +
|
|
18
18
|
'Disabling multisite in App Router would cause 404 errors for regular page requests because the route structure requires the [site] segment. ' +
|
|
19
19
|
'Preview/Editing modes will still work. ' +
|
|
20
20
|
'For single-site setups, keep multisite enabled and configure only one site.');
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
* In App Router, we cannot skip the
|
|
23
|
+
* In App Router, we cannot skip the proxy even if enabled is false,
|
|
24
24
|
* because the route structure requires the [site] segment.
|
|
25
25
|
* @returns {boolean} always returns false (never skip) for App Router
|
|
26
26
|
*/
|
|
@@ -38,4 +38,4 @@ class AppRouterMultisiteMiddleware extends multisite_middleware_1.MultisiteMiddl
|
|
|
38
38
|
return `/${siteName}${path}`;
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
exports.
|
|
41
|
+
exports.AppRouterMultisiteProxy = AppRouterMultisiteProxy;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.debug = exports.REDIRECT_TYPE_SERVER_TRANSFER = exports.REDIRECT_TYPE_302 = exports.REDIRECT_TYPE_301 = exports.RedirectsService = exports.PersonalizeService = exports.LocaleProxy = exports.AppRouterMultisiteProxy = exports.MultisiteProxy = exports.PersonalizeProxy = exports.RedirectsProxy = exports.defineProxy = exports.ProxyHandler = exports.ProxyBase = void 0;
|
|
7
|
+
var proxy_1 = require("./proxy");
|
|
8
|
+
Object.defineProperty(exports, "ProxyBase", { enumerable: true, get: function () { return proxy_1.ProxyBase; } });
|
|
9
|
+
Object.defineProperty(exports, "ProxyHandler", { enumerable: true, get: function () { return proxy_1.ProxyHandler; } });
|
|
10
|
+
Object.defineProperty(exports, "defineProxy", { enumerable: true, get: function () { return proxy_1.defineProxy; } });
|
|
11
|
+
var redirects_proxy_1 = require("./redirects-proxy");
|
|
12
|
+
Object.defineProperty(exports, "RedirectsProxy", { enumerable: true, get: function () { return redirects_proxy_1.RedirectsProxy; } });
|
|
13
|
+
var personalize_proxy_1 = require("./personalize-proxy");
|
|
14
|
+
Object.defineProperty(exports, "PersonalizeProxy", { enumerable: true, get: function () { return personalize_proxy_1.PersonalizeProxy; } });
|
|
15
|
+
var multisite_proxy_1 = require("./multisite-proxy");
|
|
16
|
+
Object.defineProperty(exports, "MultisiteProxy", { enumerable: true, get: function () { return multisite_proxy_1.MultisiteProxy; } });
|
|
17
|
+
var app_router_multisite_proxy_1 = require("./app-router-multisite-proxy");
|
|
18
|
+
Object.defineProperty(exports, "AppRouterMultisiteProxy", { enumerable: true, get: function () { return app_router_multisite_proxy_1.AppRouterMultisiteProxy; } });
|
|
19
|
+
var locale_proxy_1 = require("./locale-proxy");
|
|
20
|
+
Object.defineProperty(exports, "LocaleProxy", { enumerable: true, get: function () { return locale_proxy_1.LocaleProxy; } });
|
|
21
|
+
var personalize_1 = require("@sitecore-content-sdk/content/personalize");
|
|
22
|
+
Object.defineProperty(exports, "PersonalizeService", { enumerable: true, get: function () { return personalize_1.PersonalizeService; } });
|
|
23
|
+
var site_1 = require("@sitecore-content-sdk/content/site");
|
|
24
|
+
Object.defineProperty(exports, "RedirectsService", { enumerable: true, get: function () { return site_1.RedirectsService; } });
|
|
25
|
+
Object.defineProperty(exports, "REDIRECT_TYPE_301", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_301; } });
|
|
26
|
+
Object.defineProperty(exports, "REDIRECT_TYPE_302", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_302; } });
|
|
27
|
+
Object.defineProperty(exports, "REDIRECT_TYPE_SERVER_TRANSFER", { enumerable: true, get: function () { return site_1.REDIRECT_TYPE_SERVER_TRANSFER; } });
|
|
28
|
+
var debug_1 = require("../debug");
|
|
29
|
+
Object.defineProperty(exports, "debug", { enumerable: true, get: function () { return __importDefault(debug_1).default; } });
|
|
@@ -9,20 +9,23 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
10
10
|
});
|
|
11
11
|
};
|
|
12
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
13
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
14
|
+
};
|
|
12
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
16
|
+
exports.LocaleProxy = void 0;
|
|
17
|
+
const i18n_1 = require("@sitecore-content-sdk/content/i18n");
|
|
18
|
+
const proxy_1 = require("./proxy");
|
|
19
|
+
const debug_1 = __importDefault(require("../debug"));
|
|
17
20
|
/**
|
|
18
|
-
*
|
|
19
|
-
* This
|
|
21
|
+
* Proxy/handler for handling locale-based routing in the Next.js App Router.
|
|
22
|
+
* This proxy is responsible for extracting the locale from the request path and rewriting it if necessary.
|
|
20
23
|
* It also sets the locale header in the response.
|
|
21
24
|
* @public
|
|
22
25
|
*/
|
|
23
|
-
class
|
|
26
|
+
class LocaleProxy extends proxy_1.ProxyBase {
|
|
24
27
|
/**
|
|
25
|
-
* @param {
|
|
28
|
+
* @param {LocaleProxyConfig} config Locale proxy config
|
|
26
29
|
*/
|
|
27
30
|
constructor(config) {
|
|
28
31
|
super(config);
|
|
@@ -32,12 +35,12 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
|
|
|
32
35
|
const { pathname } = req.nextUrl;
|
|
33
36
|
const localeFromPath = this.getLocaleFromPath(pathname);
|
|
34
37
|
const locale = localeFromPath || this.getLanguage(req, res);
|
|
35
|
-
|
|
38
|
+
debug_1.default.locale('locale proxy start: %o', {
|
|
36
39
|
pathname,
|
|
37
40
|
locale,
|
|
38
41
|
});
|
|
39
42
|
if (this.disabled(req, res)) {
|
|
40
|
-
|
|
43
|
+
debug_1.default.locale('skipped (locale proxy is disabled)');
|
|
41
44
|
return res;
|
|
42
45
|
}
|
|
43
46
|
if (!localeFromPath) {
|
|
@@ -45,7 +48,7 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
|
|
|
45
48
|
const rewritePath = (0, i18n_1.getLocaleRewrite)(pathname, locale);
|
|
46
49
|
const response = this.rewrite(rewritePath, req, res);
|
|
47
50
|
this.setLocaleHeader(response, locale);
|
|
48
|
-
|
|
51
|
+
debug_1.default.locale('locale proxy end, with rewrite: %o', {
|
|
49
52
|
pathname,
|
|
50
53
|
locale,
|
|
51
54
|
rewritePath,
|
|
@@ -53,14 +56,14 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
|
|
|
53
56
|
return response;
|
|
54
57
|
}
|
|
55
58
|
this.setLocaleHeader(res, locale);
|
|
56
|
-
|
|
59
|
+
debug_1.default.locale('locale proxy end, no rewrite: %o', {
|
|
57
60
|
pathname,
|
|
58
61
|
locale,
|
|
59
62
|
});
|
|
60
63
|
return res;
|
|
61
64
|
}
|
|
62
65
|
catch (error) {
|
|
63
|
-
console.log('Locale
|
|
66
|
+
console.log('Locale proxy failed:');
|
|
64
67
|
console.log(error);
|
|
65
68
|
return res;
|
|
66
69
|
}
|
|
@@ -79,7 +82,7 @@ class LocaleMiddleware extends middleware_1.MiddlewareBase {
|
|
|
79
82
|
return this.config.locales.find((locale) => path.includes(`/${locale}/`) || path.endsWith(`/${locale}`));
|
|
80
83
|
}
|
|
81
84
|
setLocaleHeader(res, locale) {
|
|
82
|
-
res.headers.set(
|
|
85
|
+
res.headers.set(proxy_1.LOCALE_HEADER_NAME, locale);
|
|
83
86
|
}
|
|
84
87
|
}
|
|
85
|
-
exports.
|
|
88
|
+
exports.LocaleProxy = LocaleProxy;
|