@sitecore-content-sdk/nextjs 1.3.0-canary.9 → 1.4.0-canary.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/dist/cjs/client/index.js +10 -10
- package/dist/cjs/client/models.js +2 -2
- package/dist/cjs/client/sitecore-nextjs-client.js +160 -156
- package/dist/cjs/components/BYOCWrapper.js +31 -30
- package/dist/cjs/components/ComponentPropsContext.js +66 -59
- package/dist/cjs/components/FEaaSWrapper.js +33 -32
- package/dist/cjs/components/Link.js +117 -90
- package/dist/cjs/components/NextImage.js +66 -62
- package/dist/cjs/components/Placeholder.js +55 -50
- package/dist/cjs/components/RichText.js +133 -128
- package/dist/cjs/config/define-config.js +26 -25
- package/dist/cjs/config/index.js +5 -5
- package/dist/cjs/config-cli/define-cli-config.js +40 -39
- package/dist/cjs/config-cli/index.js +5 -5
- package/dist/cjs/editing/codegen/import-map.js +129 -118
- package/dist/cjs/editing/codegen/index.js +6 -6
- package/dist/cjs/editing/constants.js +10 -10
- package/dist/cjs/editing/editing-config-middleware.js +70 -69
- package/dist/cjs/editing/editing-render-middleware.js +145 -144
- package/dist/cjs/editing/feaas-render-middleware.js +102 -101
- package/dist/cjs/editing/index.js +19 -19
- package/dist/cjs/editing/render-middleware.js +46 -46
- package/dist/cjs/editing/utils.js +260 -257
- package/dist/cjs/index.js +132 -131
- package/dist/cjs/middleware/app-router-multisite-middleware.js +41 -20
- package/dist/cjs/middleware/index.js +30 -30
- package/dist/cjs/middleware/locale-middleware.js +85 -84
- package/dist/cjs/middleware/middleware.js +195 -192
- package/dist/cjs/middleware/multisite-middleware.js +141 -118
- package/dist/cjs/middleware/personalize-middleware.js +240 -236
- package/dist/cjs/middleware/redirects-middleware.js +323 -297
- package/dist/cjs/middleware/robots-middleware.js +45 -44
- package/dist/cjs/middleware/sitemap-middleware.js +50 -49
- package/dist/cjs/monitoring/healthcheck-middleware.js +31 -30
- package/dist/cjs/monitoring/index.js +5 -5
- package/dist/cjs/route-handler/editing-config-route-handler.js +110 -106
- package/dist/cjs/route-handler/editing-render-route-handler.js +270 -165
- package/dist/cjs/route-handler/index.js +11 -11
- package/dist/cjs/route-handler/robots-route-handler.js +69 -68
- package/dist/cjs/route-handler/sitemap-route-handler.js +66 -65
- package/dist/cjs/search/index.js +17 -0
- package/dist/cjs/services/component-props-service.js +142 -138
- package/dist/cjs/sharedTypes/component-props.js +2 -2
- package/dist/cjs/sharedTypes/sitecore-page-props.js +2 -2
- package/dist/cjs/site/index.js +5 -5
- package/dist/cjs/tools/codegen/import-map.js +15 -0
- package/dist/cjs/tools/component-props.loader.js +95 -95
- package/dist/cjs/tools/generate-map.js +317 -317
- package/dist/cjs/tools/index.js +14 -13
- package/dist/cjs/tools/templating/byoc-component.js +36 -36
- package/dist/cjs/tools/templating/constants.js +7 -7
- package/dist/cjs/tools/templating/default-component.js +35 -35
- package/dist/cjs/tools/templating/utils.js +200 -0
- package/dist/cjs/utils/index.js +14 -14
- package/dist/cjs/utils/utils.js +82 -73
- package/dist/esm/client/index.js +2 -2
- package/dist/esm/client/models.js +1 -1
- package/dist/esm/client/sitecore-nextjs-client.js +156 -152
- package/dist/esm/components/BYOCWrapper.js +27 -26
- package/dist/esm/components/ComponentPropsContext.js +28 -21
- package/dist/esm/components/FEaaSWrapper.js +29 -28
- package/dist/esm/components/Link.js +78 -51
- package/dist/esm/components/NextImage.js +60 -56
- package/dist/esm/components/Placeholder.js +18 -13
- package/dist/esm/components/RichText.js +96 -91
- package/dist/esm/config/define-config.js +21 -20
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/config-cli/define-cli-config.js +36 -35
- package/dist/esm/config-cli/index.js +1 -1
- package/dist/esm/editing/codegen/import-map.js +92 -81
- package/dist/esm/editing/codegen/index.js +1 -1
- package/dist/esm/editing/constants.js +7 -7
- package/dist/esm/editing/editing-config-middleware.js +66 -65
- package/dist/esm/editing/editing-render-middleware.js +141 -140
- package/dist/esm/editing/feaas-render-middleware.js +98 -97
- package/dist/esm/editing/index.js +6 -6
- package/dist/esm/editing/render-middleware.js +42 -42
- package/dist/esm/editing/utils.js +246 -243
- package/dist/esm/index.js +25 -25
- package/dist/esm/middleware/app-router-multisite-middleware.js +37 -16
- package/dist/esm/middleware/index.js +11 -11
- package/dist/esm/middleware/locale-middleware.js +81 -80
- package/dist/esm/middleware/middleware.js +189 -186
- package/dist/esm/middleware/multisite-middleware.js +137 -114
- package/dist/esm/middleware/personalize-middleware.js +236 -232
- package/dist/esm/middleware/redirects-middleware.js +316 -290
- package/dist/esm/middleware/robots-middleware.js +41 -40
- package/dist/esm/middleware/sitemap-middleware.js +46 -45
- package/dist/esm/monitoring/healthcheck-middleware.js +27 -26
- package/dist/esm/monitoring/index.js +1 -1
- package/dist/esm/route-handler/editing-config-route-handler.js +106 -102
- package/dist/esm/route-handler/editing-render-route-handler.js +265 -160
- package/dist/esm/route-handler/index.js +4 -4
- package/dist/esm/route-handler/robots-route-handler.js +65 -64
- package/dist/esm/route-handler/sitemap-route-handler.js +63 -62
- package/dist/esm/search/index.js +1 -0
- package/dist/esm/services/component-props-service.js +135 -131
- package/dist/esm/sharedTypes/component-props.js +1 -1
- package/dist/esm/sharedTypes/sitecore-page-props.js +1 -1
- package/dist/esm/site/index.js +1 -1
- package/dist/esm/tools/codegen/import-map.js +11 -0
- package/dist/esm/tools/component-props.loader.js +59 -59
- package/dist/esm/tools/generate-map.js +279 -279
- package/dist/esm/tools/index.js +3 -2
- package/dist/esm/tools/templating/byoc-component.js +30 -30
- package/dist/esm/tools/templating/constants.js +4 -4
- package/dist/esm/tools/templating/default-component.js +29 -29
- package/dist/esm/tools/templating/utils.js +190 -0
- package/dist/esm/utils/index.js +3 -3
- package/dist/esm/utils/utils.js +74 -65
- package/package.json +87 -13
- package/search.d.ts +1 -0
- package/types/client/index.d.ts +3 -2
- package/types/client/index.d.ts.map +1 -0
- package/types/client/models.d.ts +9 -8
- package/types/client/models.d.ts.map +1 -0
- package/types/client/sitecore-nextjs-client.d.ts +68 -63
- package/types/client/sitecore-nextjs-client.d.ts.map +1 -0
- package/types/components/BYOCWrapper.d.ts +16 -14
- package/types/components/BYOCWrapper.d.ts.map +1 -0
- package/types/components/ComponentPropsContext.d.ts +30 -18
- package/types/components/ComponentPropsContext.d.ts.map +1 -0
- package/types/components/FEaaSWrapper.d.ts +17 -15
- package/types/components/FEaaSWrapper.d.ts.map +1 -0
- package/types/components/Link.d.ts +25 -15
- package/types/components/Link.d.ts.map +1 -0
- package/types/components/NextImage.d.ts +11 -6
- package/types/components/NextImage.d.ts.map +1 -0
- package/types/components/Placeholder.d.ts +14 -8
- package/types/components/Placeholder.d.ts.map +1 -0
- package/types/components/RichText.d.ts +35 -25
- package/types/components/RichText.d.ts.map +1 -0
- package/types/config/define-config.d.ts +42 -38
- package/types/config/define-config.d.ts.map +1 -0
- package/types/config/index.d.ts +2 -1
- package/types/config/index.d.ts.map +1 -0
- package/types/config-cli/define-cli-config.d.ts +10 -8
- package/types/config-cli/define-cli-config.d.ts.map +1 -0
- package/types/config-cli/index.d.ts +2 -1
- package/types/config-cli/index.d.ts.map +1 -0
- package/types/editing/codegen/import-map.d.ts +15 -3
- package/types/editing/codegen/import-map.d.ts.map +1 -0
- package/types/editing/codegen/index.d.ts +3 -2
- package/types/editing/codegen/index.d.ts.map +1 -0
- package/types/editing/constants.d.ts +8 -7
- package/types/editing/constants.d.ts.map +1 -0
- package/types/editing/editing-config-middleware.d.ts +37 -31
- package/types/editing/editing-config-middleware.d.ts.map +1 -0
- package/types/editing/editing-render-middleware.d.ts +47 -44
- package/types/editing/editing-render-middleware.d.ts.map +1 -0
- package/types/editing/feaas-render-middleware.d.ts +35 -32
- package/types/editing/feaas-render-middleware.d.ts.map +1 -0
- package/types/editing/index.d.ts +7 -6
- package/types/editing/index.d.ts.map +1 -0
- package/types/editing/render-middleware.d.ts +26 -25
- package/types/editing/render-middleware.d.ts.map +1 -0
- package/types/editing/utils.d.ts +110 -106
- package/types/editing/utils.d.ts.map +1 -0
- package/types/index.d.ts +25 -24
- package/types/index.d.ts.map +1 -0
- package/types/middleware/app-router-multisite-middleware.d.ts +28 -13
- package/types/middleware/app-router-multisite-middleware.d.ts.map +1 -0
- package/types/middleware/index.d.ts +12 -11
- package/types/middleware/index.d.ts.map +1 -0
- package/types/middleware/locale-middleware.d.ts +35 -32
- package/types/middleware/locale-middleware.d.ts.map +1 -0
- package/types/middleware/middleware.d.ts +135 -127
- package/types/middleware/middleware.d.ts.map +1 -0
- package/types/middleware/multisite-middleware.d.ts +54 -37
- package/types/middleware/multisite-middleware.d.ts.map +1 -0
- package/types/middleware/personalize-middleware.d.ts +81 -65
- package/types/middleware/personalize-middleware.d.ts.map +1 -0
- package/types/middleware/redirects-middleware.d.ts +68 -65
- package/types/middleware/redirects-middleware.d.ts.map +1 -0
- package/types/middleware/robots-middleware.d.ts +15 -13
- package/types/middleware/robots-middleware.d.ts.map +1 -0
- package/types/middleware/sitemap-middleware.d.ts +16 -14
- package/types/middleware/sitemap-middleware.d.ts.map +1 -0
- package/types/monitoring/healthcheck-middleware.d.ts +14 -12
- package/types/monitoring/healthcheck-middleware.d.ts.map +1 -0
- package/types/monitoring/index.d.ts +2 -1
- package/types/monitoring/index.d.ts.map +1 -0
- package/types/route-handler/editing-config-route-handler.d.ts +30 -24
- package/types/route-handler/editing-config-route-handler.d.ts.map +1 -0
- package/types/route-handler/editing-render-route-handler.d.ts +33 -25
- package/types/route-handler/editing-render-route-handler.d.ts.map +1 -0
- package/types/route-handler/index.d.ts +5 -4
- package/types/route-handler/index.d.ts.map +1 -0
- package/types/route-handler/robots-route-handler.d.ts +30 -28
- package/types/route-handler/robots-route-handler.d.ts.map +1 -0
- package/types/route-handler/sitemap-route-handler.d.ts +30 -28
- package/types/route-handler/sitemap-route-handler.d.ts.map +1 -0
- package/types/search/index.d.ts +2 -0
- package/types/search/index.d.ts.map +1 -0
- package/types/services/component-props-service.d.ts +62 -57
- package/types/services/component-props-service.d.ts.map +1 -0
- package/types/sharedTypes/component-props.d.ts +62 -47
- package/types/sharedTypes/component-props.d.ts.map +1 -0
- package/types/sharedTypes/sitecore-page-props.d.ts +14 -9
- package/types/sharedTypes/sitecore-page-props.d.ts.map +1 -0
- package/types/site/index.d.ts +2 -1
- package/types/site/index.d.ts.map +1 -0
- package/types/tools/codegen/import-map.d.ts +10 -0
- package/types/tools/codegen/import-map.d.ts.map +1 -0
- package/types/tools/component-props.loader.d.ts +8 -7
- package/types/tools/component-props.loader.d.ts.map +1 -0
- package/types/tools/generate-map.d.ts +26 -24
- package/types/tools/generate-map.d.ts.map +1 -0
- package/types/tools/index.d.ts +4 -2
- package/types/tools/index.d.ts.map +1 -0
- package/types/tools/templating/byoc-component.d.ts +3 -2
- package/types/tools/templating/byoc-component.d.ts.map +1 -0
- package/types/tools/templating/constants.d.ts +5 -4
- package/types/tools/templating/constants.d.ts.map +1 -0
- package/types/tools/templating/default-component.d.ts +3 -2
- package/types/tools/templating/default-component.d.ts.map +1 -0
- package/types/tools/templating/utils.d.ts +44 -0
- package/types/tools/templating/utils.d.ts.map +1 -0
- package/types/utils/index.d.ts +4 -3
- package/types/utils/index.d.ts.map +1 -0
- package/types/utils/utils.d.ts +34 -24
- package/types/utils/utils.d.ts.map +1 -0
- package/client.js +0 -1
- package/codegen.js +0 -1
- package/config-cli.js +0 -1
- package/config.js +0 -1
- package/editing.js +0 -1
- package/middleware.js +0 -1
- package/monitoring.js +0 -1
- package/route-handler.js +0 -1
- package/site.js +0 -1
- package/tools.js +0 -1
- package/utils.js +0 -1
|
@@ -1,144 +1,145 @@
|
|
|
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.EditingRenderMiddleware = void 0;
|
|
13
|
-
const core_1 = require("@sitecore-content-sdk/core");
|
|
14
|
-
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
15
|
-
const layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
16
|
-
const utils_1 = require("../utils/utils");
|
|
17
|
-
const render_middleware_1 = require("./render-middleware");
|
|
18
|
-
const utils_2 = require("@sitecore-content-sdk/core/utils");
|
|
19
|
-
const utils_3 = require("./utils");
|
|
20
|
-
/**
|
|
21
|
-
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
22
|
-
* which is required for Sitecore editing support.
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const
|
|
100
|
-
const
|
|
101
|
-
const
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
//
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
filteredCookies
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
*
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}
|
|
144
|
-
|
|
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.EditingRenderMiddleware = void 0;
|
|
13
|
+
const core_1 = require("@sitecore-content-sdk/core");
|
|
14
|
+
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
15
|
+
const layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
16
|
+
const utils_1 = require("../utils/utils");
|
|
17
|
+
const render_middleware_1 = require("./render-middleware");
|
|
18
|
+
const utils_2 = require("@sitecore-content-sdk/core/utils");
|
|
19
|
+
const utils_3 = require("./utils");
|
|
20
|
+
/**
|
|
21
|
+
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
22
|
+
* which is required for Sitecore editing support.
|
|
23
|
+
* @public
|
|
24
|
+
*/
|
|
25
|
+
class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
26
|
+
/**
|
|
27
|
+
* @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
|
|
28
|
+
*/
|
|
29
|
+
constructor(config) {
|
|
30
|
+
super();
|
|
31
|
+
this.config = config;
|
|
32
|
+
this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
var _a, _b, _c, _d, _e;
|
|
34
|
+
const { body, method, headers, query } = req;
|
|
35
|
+
core_1.debug.editing('editing render middleware start: %o', {
|
|
36
|
+
method,
|
|
37
|
+
query,
|
|
38
|
+
headers,
|
|
39
|
+
body,
|
|
40
|
+
});
|
|
41
|
+
const corsHeaders = (0, utils_2.getEnforcedCorsHeaders)({
|
|
42
|
+
requestMethod: req.method,
|
|
43
|
+
headers: req.headers,
|
|
44
|
+
presetCorsHeader: headers['Access-Control-Allow-Origin'],
|
|
45
|
+
allowedOrigins: editing_1.EDITING_ALLOWED_ORIGINS,
|
|
46
|
+
});
|
|
47
|
+
if (!corsHeaders) {
|
|
48
|
+
core_1.debug.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
|
|
49
|
+
return res.status(401).json({
|
|
50
|
+
html: `<html><body>Requests from origin ${(_a = req.headers) === null || _a === void 0 ? void 0 : _a.origin} not allowed</body></html>`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
Object.keys(corsHeaders).forEach((key) => {
|
|
54
|
+
res.setHeader(key, corsHeaders[key]);
|
|
55
|
+
});
|
|
56
|
+
// Validate secret
|
|
57
|
+
const secret = query[editing_1.QUERY_PARAM_EDITING_SECRET];
|
|
58
|
+
if (secret !== (0, utils_1.getEditingSecret)()) {
|
|
59
|
+
core_1.debug.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
|
|
60
|
+
return res.status(401).json({
|
|
61
|
+
html: editing_1.INVALID_SECRET_HTML_MESSAGE,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (req.method === 'OPTIONS') {
|
|
65
|
+
core_1.debug.editing('preflight request');
|
|
66
|
+
// CORS headers are set by enforceCors
|
|
67
|
+
return res.status(204).send(null);
|
|
68
|
+
}
|
|
69
|
+
if (req.method !== 'GET') {
|
|
70
|
+
core_1.debug.editing('invalid method - sent %s expected GET', req.method);
|
|
71
|
+
res.setHeader('Allow', 'GET');
|
|
72
|
+
return res.status(405).json({
|
|
73
|
+
html: `<html><body>Invalid request method '${req.method}'</body></html>`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
const startTimestamp = Date.now();
|
|
77
|
+
const mode = query.mode;
|
|
78
|
+
const requiredQueryParams = (0, utils_3.getRequiredEditingParamsList)(mode);
|
|
79
|
+
const missingQueryParams = requiredQueryParams.filter((param) => !query[param]);
|
|
80
|
+
// Validate query parameters
|
|
81
|
+
if (missingQueryParams.length) {
|
|
82
|
+
core_1.debug.editing('missing required query parameters: %o', missingQueryParams);
|
|
83
|
+
return res.status(400).json({
|
|
84
|
+
html: `<html><body>Missing required query parameters: ${missingQueryParams.join(', ')}</body></html>`,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const previewDataParams = (0, utils_3.mapEditingParams)(query);
|
|
88
|
+
res.setPreviewData(Object.assign(Object.assign({}, previewDataParams), { variantIds: (_b = previewDataParams.variantIds) === null || _b === void 0 ? void 0 : _b.split(',') }), {
|
|
89
|
+
maxAge: 3,
|
|
90
|
+
});
|
|
91
|
+
// Set Preview mode identifier cookie, if the page is rendered in Sitecore Preview mode
|
|
92
|
+
if (mode === layout_1.LayoutServicePageState.Preview) {
|
|
93
|
+
const cookies = res.getHeader('Set-Cookie');
|
|
94
|
+
const previewCookies = (0, utils_3.getPreviewCookies)(query.sc_site);
|
|
95
|
+
res.setHeader('Set-Cookie', [...cookies, ...previewCookies]);
|
|
96
|
+
}
|
|
97
|
+
// Restrict the page to be rendered only within the allowed origins
|
|
98
|
+
res.setHeader('Content-Security-Policy', (0, utils_3.getCSPHeader)());
|
|
99
|
+
const encodedRoute = encodeURI(query.route);
|
|
100
|
+
const route = ((_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.resolvePageUrl) === null || _d === void 0 ? void 0 : _d.call(_c, encodedRoute)) || encodedRoute;
|
|
101
|
+
const base = ((_e = this.config) === null || _e === void 0 ? void 0 : _e.sitecoreInternalEditingHostUrl) || (0, utils_3.resolveServerUrl)(req);
|
|
102
|
+
const requestUrl = new URL(route, base);
|
|
103
|
+
const cookies = res.getHeader('Set-Cookie');
|
|
104
|
+
// Make actual render request for page route, passing on preview cookies as well as any approved query string parameters.
|
|
105
|
+
// Note timestamp effectively disables caching the request (no amount of cache headers seemed to do it)
|
|
106
|
+
try {
|
|
107
|
+
core_1.debug.editing('fetching page route for %s', query.route);
|
|
108
|
+
// Get query string parameters to propagate on subsequent requests (e.g. for deployment protection bypass)
|
|
109
|
+
const propagatedQsParams = (0, utils_3.getQueryParamsForPropagation)(query);
|
|
110
|
+
// Get headers to propagate on subsequent requests
|
|
111
|
+
const propagatedHeaders = (0, utils_3.getHeadersForPropagation)(headers);
|
|
112
|
+
const html = yield (0, utils_3.getEditingRequestHtml)(requestUrl, propagatedQsParams, propagatedHeaders, cookies, this.dataFetcher);
|
|
113
|
+
// remove preview cookies to not leak them to the browser
|
|
114
|
+
if (cookies && Array.isArray(cookies)) {
|
|
115
|
+
const filteredCookies = (0, utils_3.cleanupNextPreviewCookies)(cookies);
|
|
116
|
+
filteredCookies && res.setHeader('Set-Cookie', filteredCookies);
|
|
117
|
+
}
|
|
118
|
+
core_1.debug.editing('editing render middleware end in %dms: %o', Date.now() - startTimestamp, {
|
|
119
|
+
status: 200,
|
|
120
|
+
route,
|
|
121
|
+
});
|
|
122
|
+
res.status(200).send(html);
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
const error = err;
|
|
126
|
+
console.error(error);
|
|
127
|
+
if (error.response) {
|
|
128
|
+
console.info(
|
|
129
|
+
// eslint-disable-next-line quotes
|
|
130
|
+
"Hint: for non-standard server or Next.js route configurations, you may need to override 'resolvePageUrl' or set the 'sitecoreInternalEditingHostUrl' (or SITECORE_INTERNAL_EDITING_HOST_URL env variable) available on the 'EditingRenderMiddleware' config.");
|
|
131
|
+
}
|
|
132
|
+
res.status(500).send(`<html><body>${error}</body></html>`);
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
this.dataFetcher = new core_1.NativeDataFetcher({ debugger: core_1.debug.editing });
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Gets the Next.js API route handler
|
|
139
|
+
* @returns route handler
|
|
140
|
+
*/
|
|
141
|
+
getHandler() {
|
|
142
|
+
return this.handler;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.EditingRenderMiddleware = EditingRenderMiddleware;
|
|
@@ -1,101 +1,102 @@
|
|
|
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.FEAASRenderMiddleware = void 0;
|
|
13
|
-
const core_1 = require("@sitecore-content-sdk/core");
|
|
14
|
-
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
15
|
-
const utils_1 = require("../utils/utils");
|
|
16
|
-
const render_middleware_1 = require("./render-middleware");
|
|
17
|
-
const utils_2 = require("@sitecore-content-sdk/core/utils");
|
|
18
|
-
/**
|
|
19
|
-
* Middleware / handler for use in the feaas render Next.js API route (e.g. '/api/editing/feaas/render')
|
|
20
|
-
* which is required for Sitecore editing support.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
core_1.debug.editing('
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
*
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
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.FEAASRenderMiddleware = void 0;
|
|
13
|
+
const core_1 = require("@sitecore-content-sdk/core");
|
|
14
|
+
const editing_1 = require("@sitecore-content-sdk/core/editing");
|
|
15
|
+
const utils_1 = require("../utils/utils");
|
|
16
|
+
const render_middleware_1 = require("./render-middleware");
|
|
17
|
+
const utils_2 = require("@sitecore-content-sdk/core/utils");
|
|
18
|
+
/**
|
|
19
|
+
* Middleware / handler for use in the feaas render Next.js API route (e.g. '/api/editing/feaas/render')
|
|
20
|
+
* which is required for Sitecore editing support.
|
|
21
|
+
* @public
|
|
22
|
+
*/
|
|
23
|
+
class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
24
|
+
/**
|
|
25
|
+
* @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
|
|
26
|
+
*/
|
|
27
|
+
constructor(config) {
|
|
28
|
+
var _a;
|
|
29
|
+
super();
|
|
30
|
+
this.config = config;
|
|
31
|
+
this.defaultPageUrl = '/feaas/render';
|
|
32
|
+
this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
var _a;
|
|
34
|
+
const { method, query, headers } = req;
|
|
35
|
+
const startTimestamp = Date.now();
|
|
36
|
+
core_1.debug.editing('feaas render middleware start: %o', {
|
|
37
|
+
method,
|
|
38
|
+
query,
|
|
39
|
+
headers,
|
|
40
|
+
});
|
|
41
|
+
if (!(0, utils_2.enforceCors)(req, res, editing_1.EDITING_ALLOWED_ORIGINS)) {
|
|
42
|
+
core_1.debug.editing('invalid origin host - set allowed origins in JSS_ALLOWED_ORIGINS environment variable');
|
|
43
|
+
return res
|
|
44
|
+
.status(401)
|
|
45
|
+
.send(`<html><body>Requests from origin ${(_a = req.headers) === null || _a === void 0 ? void 0 : _a.origin} are not allowed</body></html>`);
|
|
46
|
+
}
|
|
47
|
+
if (!method || !['GET', 'OPTIONS'].includes(method)) {
|
|
48
|
+
core_1.debug.editing('invalid method - sent %s expected GET,OPTIONS', method);
|
|
49
|
+
res.setHeader('Allow', 'GET, OPTIONS');
|
|
50
|
+
return res.status(405).send(`<html><body>Invalid request method '${method}'</body></html>`);
|
|
51
|
+
}
|
|
52
|
+
// Validate secret
|
|
53
|
+
const secret = query[editing_1.QUERY_PARAM_EDITING_SECRET];
|
|
54
|
+
if (secret !== (0, utils_1.getEditingSecret)()) {
|
|
55
|
+
core_1.debug.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getEditingSecret)());
|
|
56
|
+
return res.status(401).send(editing_1.INVALID_SECRET_HTML_MESSAGE);
|
|
57
|
+
}
|
|
58
|
+
// Handle preflight request
|
|
59
|
+
if (method === 'OPTIONS') {
|
|
60
|
+
core_1.debug.editing('preflight request');
|
|
61
|
+
// CORS headers are set by enforceCors
|
|
62
|
+
return res.status(204).send(null);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
// Get query string parameters to propagate on subsequent requests (e.g. for deployment protection bypass)
|
|
66
|
+
const params = this.getQueryParamsForPropagation(query);
|
|
67
|
+
// Enable Next.js Preview Mode
|
|
68
|
+
res.setPreviewData({});
|
|
69
|
+
const queryParams = new URLSearchParams();
|
|
70
|
+
for (const key in params) {
|
|
71
|
+
if ({}.hasOwnProperty.call(params, key)) {
|
|
72
|
+
queryParams.append(key, params[key]);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Pass "feaasSrc" in case a FEAASComponent is being requested
|
|
76
|
+
if (query.feaasSrc) {
|
|
77
|
+
queryParams.append('feaasSrc', query.feaasSrc);
|
|
78
|
+
}
|
|
79
|
+
const redirectUrl = this.pageUrl + (queryParams.toString() ? `?${queryParams.toString()}` : '');
|
|
80
|
+
core_1.debug.editing('redirecting to page route %s', redirectUrl);
|
|
81
|
+
core_1.debug.editing('feaas render middleware end in %dms', Date.now() - startTimestamp);
|
|
82
|
+
res.redirect(redirectUrl);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const error = err;
|
|
86
|
+
console.info(
|
|
87
|
+
// eslint-disable-next-line quotes
|
|
88
|
+
"Hint: for non-standard server or Next.js route configurations, you may need to override the 'pageUrl' available on the 'FEAASRenderMiddleware' config.");
|
|
89
|
+
res.status(500).send(`<html><body>${error}</body></html>`);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
this.pageUrl = (_a = config === null || config === void 0 ? void 0 : config.pageUrl) !== null && _a !== void 0 ? _a : this.defaultPageUrl;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Gets the Next.js API route handler
|
|
96
|
+
* @returns route handler
|
|
97
|
+
*/
|
|
98
|
+
getHandler() {
|
|
99
|
+
return this.handler;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.FEAASRenderMiddleware = FEAASRenderMiddleware;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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/core/editing");
|
|
5
|
-
Object.defineProperty(exports, "EditingService", { enumerable: true, get: function () { return editing_1.EditingService; } });
|
|
6
|
-
var editing_render_middleware_1 = require("./editing-render-middleware");
|
|
7
|
-
Object.defineProperty(exports, "EditingRenderMiddleware", { enumerable: true, get: function () { return editing_render_middleware_1.EditingRenderMiddleware; } });
|
|
8
|
-
var utils_1 = require("./utils");
|
|
9
|
-
Object.defineProperty(exports, "isDesignLibraryPreviewData", { enumerable: true, get: function () { return utils_1.isDesignLibraryPreviewData; } });
|
|
10
|
-
Object.defineProperty(exports, "getQueryParamsForPropagation", { enumerable: true, get: function () { return utils_1.getQueryParamsForPropagation; } });
|
|
11
|
-
Object.defineProperty(exports, "getHeadersForPropagation", { enumerable: true, get: function () { return utils_1.getHeadersForPropagation; } });
|
|
12
|
-
var feaas_render_middleware_1 = require("./feaas-render-middleware");
|
|
13
|
-
Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
|
|
14
|
-
var editing_config_middleware_1 = require("./editing-config-middleware");
|
|
15
|
-
Object.defineProperty(exports, "EditingConfigMiddleware", { enumerable: true, get: function () { return editing_config_middleware_1.EditingConfigMiddleware; } });
|
|
16
|
-
var layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
17
|
-
Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
|
|
18
|
-
Object.defineProperty(exports, "EDITING_COMPONENT_PLACEHOLDER", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_PLACEHOLDER; } });
|
|
19
|
-
Object.defineProperty(exports, "EDITING_COMPONENT_ID", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_ID; } });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
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/core/editing");
|
|
5
|
+
Object.defineProperty(exports, "EditingService", { enumerable: true, get: function () { return editing_1.EditingService; } });
|
|
6
|
+
var editing_render_middleware_1 = require("./editing-render-middleware");
|
|
7
|
+
Object.defineProperty(exports, "EditingRenderMiddleware", { enumerable: true, get: function () { return editing_render_middleware_1.EditingRenderMiddleware; } });
|
|
8
|
+
var utils_1 = require("./utils");
|
|
9
|
+
Object.defineProperty(exports, "isDesignLibraryPreviewData", { enumerable: true, get: function () { return utils_1.isDesignLibraryPreviewData; } });
|
|
10
|
+
Object.defineProperty(exports, "getQueryParamsForPropagation", { enumerable: true, get: function () { return utils_1.getQueryParamsForPropagation; } });
|
|
11
|
+
Object.defineProperty(exports, "getHeadersForPropagation", { enumerable: true, get: function () { return utils_1.getHeadersForPropagation; } });
|
|
12
|
+
var feaas_render_middleware_1 = require("./feaas-render-middleware");
|
|
13
|
+
Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
|
|
14
|
+
var editing_config_middleware_1 = require("./editing-config-middleware");
|
|
15
|
+
Object.defineProperty(exports, "EditingConfigMiddleware", { enumerable: true, get: function () { return editing_config_middleware_1.EditingConfigMiddleware; } });
|
|
16
|
+
var layout_1 = require("@sitecore-content-sdk/core/layout");
|
|
17
|
+
Object.defineProperty(exports, "RenderingType", { enumerable: true, get: function () { return layout_1.RenderingType; } });
|
|
18
|
+
Object.defineProperty(exports, "EDITING_COMPONENT_PLACEHOLDER", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_PLACEHOLDER; } });
|
|
19
|
+
Object.defineProperty(exports, "EDITING_COMPONENT_ID", { enumerable: true, get: function () { return layout_1.EDITING_COMPONENT_ID; } });
|