@sitecore-jss/sitecore-jss-nextjs 21.7.0-canary.59 → 21.7.0-canary.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/editing/editing-render-middleware.js +3 -16
- package/dist/cjs/editing/feaas-render-middleware.js +87 -0
- package/dist/cjs/editing/index.js +3 -1
- package/dist/cjs/editing/render-middleware.js +27 -0
- package/dist/esm/editing/editing-render-middleware.js +4 -17
- package/dist/esm/editing/feaas-render-middleware.js +83 -0
- package/dist/esm/editing/index.js +1 -0
- package/dist/esm/editing/render-middleware.js +23 -0
- package/package.json +5 -5
- package/types/editing/editing-render-middleware.d.ts +2 -11
- package/types/editing/feaas-render-middleware.d.ts +32 -0
- package/types/editing/index.d.ts +1 -0
- package/types/editing/render-middleware.d.ts +15 -0
|
@@ -17,31 +17,18 @@ const node_html_parser_1 = require("node-html-parser");
|
|
|
17
17
|
const editing_data_service_1 = require("./editing-data-service");
|
|
18
18
|
const constants_2 = require("./constants");
|
|
19
19
|
const utils_1 = require("../utils/utils");
|
|
20
|
+
const render_middleware_1 = require("./render-middleware");
|
|
20
21
|
/**
|
|
21
22
|
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
22
23
|
* which is required for Sitecore editing support.
|
|
23
24
|
*/
|
|
24
|
-
class EditingRenderMiddleware {
|
|
25
|
+
class EditingRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
25
26
|
/**
|
|
26
27
|
* @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
|
|
27
28
|
*/
|
|
28
29
|
constructor(config) {
|
|
29
30
|
var _a, _b, _c, _d;
|
|
30
|
-
|
|
31
|
-
* Gets query parameters that should be passed along to subsequent requests
|
|
32
|
-
* @param {Object} query Object of query parameters from incoming URL
|
|
33
|
-
* @returns Object of approved query parameters
|
|
34
|
-
*/
|
|
35
|
-
this.getQueryParamsForPropagation = (query) => {
|
|
36
|
-
const params = {};
|
|
37
|
-
if (query[constants_2.QUERY_PARAM_PROTECTION_BYPASS_SITECORE]) {
|
|
38
|
-
params[constants_2.QUERY_PARAM_PROTECTION_BYPASS_SITECORE] = query[constants_2.QUERY_PARAM_PROTECTION_BYPASS_SITECORE];
|
|
39
|
-
}
|
|
40
|
-
if (query[constants_2.QUERY_PARAM_PROTECTION_BYPASS_VERCEL]) {
|
|
41
|
-
params[constants_2.QUERY_PARAM_PROTECTION_BYPASS_VERCEL] = query[constants_2.QUERY_PARAM_PROTECTION_BYPASS_VERCEL];
|
|
42
|
-
}
|
|
43
|
-
return params;
|
|
44
|
-
};
|
|
31
|
+
super();
|
|
45
32
|
this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
46
33
|
var _e, _f;
|
|
47
34
|
const { method, query, body, headers } = req;
|
|
@@ -0,0 +1,87 @@
|
|
|
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 sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
14
|
+
const constants_1 = require("./constants");
|
|
15
|
+
const utils_1 = require("../utils/utils");
|
|
16
|
+
const render_middleware_1 = require("./render-middleware");
|
|
17
|
+
/**
|
|
18
|
+
* Middleware / handler for use in the feaas render Next.js API route (e.g. '/api/editing/feaas/render')
|
|
19
|
+
* which is required for Sitecore editing support.
|
|
20
|
+
*/
|
|
21
|
+
class FEAASRenderMiddleware extends render_middleware_1.RenderMiddlewareBase {
|
|
22
|
+
/**
|
|
23
|
+
* @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
|
|
24
|
+
*/
|
|
25
|
+
constructor(config) {
|
|
26
|
+
var _a;
|
|
27
|
+
super();
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.defaultPageUrl = '/feaas/render';
|
|
30
|
+
this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
const { method, query, headers } = req;
|
|
32
|
+
const startTimestamp = Date.now();
|
|
33
|
+
sitecore_jss_1.debug.editing('feaas render middleware start: %o', {
|
|
34
|
+
method,
|
|
35
|
+
query,
|
|
36
|
+
headers,
|
|
37
|
+
});
|
|
38
|
+
if (method !== 'GET') {
|
|
39
|
+
sitecore_jss_1.debug.editing('invalid method - sent %s expected GET', method);
|
|
40
|
+
res.setHeader('Allow', 'GET');
|
|
41
|
+
return res.status(405).send(`<html><body>Invalid request method '${method}'</body></html>`);
|
|
42
|
+
}
|
|
43
|
+
// Validate secret
|
|
44
|
+
const secret = query[constants_1.QUERY_PARAM_EDITING_SECRET];
|
|
45
|
+
if (secret !== (0, utils_1.getJssEditingSecret)()) {
|
|
46
|
+
sitecore_jss_1.debug.editing('invalid editing secret - sent "%s" expected "%s"', secret, (0, utils_1.getJssEditingSecret)());
|
|
47
|
+
return res.status(401).send('<html><body>Missing or invalid secret</body></html>');
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
// Get query string parameters to propagate on subsequent requests (e.g. for deployment protection bypass)
|
|
51
|
+
const params = this.getQueryParamsForPropagation(query);
|
|
52
|
+
// Enable Next.js Preview Mode
|
|
53
|
+
res.setPreviewData({});
|
|
54
|
+
const queryParams = new URLSearchParams();
|
|
55
|
+
for (const key in params) {
|
|
56
|
+
if ({}.hasOwnProperty.call(params, key)) {
|
|
57
|
+
queryParams.append(key, params[key]);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Pass "feaasSrc" in case a FEAASComponent is being requested
|
|
61
|
+
if (query.feaasSrc) {
|
|
62
|
+
queryParams.append('feaasSrc', query.feaasSrc);
|
|
63
|
+
}
|
|
64
|
+
const redirectUrl = this.pageUrl + (queryParams.toString() ? `?${queryParams.toString()}` : '');
|
|
65
|
+
sitecore_jss_1.debug.editing('redirecting to page route %s', redirectUrl);
|
|
66
|
+
sitecore_jss_1.debug.editing('feaas render middleware end in %dms', Date.now() - startTimestamp);
|
|
67
|
+
res.redirect(redirectUrl);
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
const error = err;
|
|
71
|
+
console.info(
|
|
72
|
+
// eslint-disable-next-line quotes
|
|
73
|
+
"Hint: for non-standard server or Next.js route configurations, you may need to override the 'pageUrl' available on the 'FEAASRenderMiddleware' config.");
|
|
74
|
+
res.status(500).send(`<html><body>${error}</body></html>`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
this.pageUrl = (_a = config === null || config === void 0 ? void 0 : config.pageUrl) !== null && _a !== void 0 ? _a : this.defaultPageUrl;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Gets the Next.js API route handler
|
|
81
|
+
* @returns route handler
|
|
82
|
+
*/
|
|
83
|
+
getHandler() {
|
|
84
|
+
return this.handler;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.FEAASRenderMiddleware = FEAASRenderMiddleware;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EditingConfigMiddleware = exports.VercelEditingDataCache = exports.editingDataService = exports.ServerlessEditingDataService = exports.BasicEditingDataService = exports.EditingRenderMiddleware = exports.EditingDataMiddleware = exports.EditingDataDiskCache = void 0;
|
|
3
|
+
exports.EditingConfigMiddleware = exports.FEAASRenderMiddleware = exports.VercelEditingDataCache = exports.editingDataService = exports.ServerlessEditingDataService = exports.BasicEditingDataService = exports.EditingRenderMiddleware = exports.EditingDataMiddleware = exports.EditingDataDiskCache = void 0;
|
|
4
4
|
var editing_data_cache_1 = require("./editing-data-cache");
|
|
5
5
|
Object.defineProperty(exports, "EditingDataDiskCache", { enumerable: true, get: function () { return editing_data_cache_1.EditingDataDiskCache; } });
|
|
6
6
|
var editing_data_middleware_1 = require("./editing-data-middleware");
|
|
@@ -13,5 +13,7 @@ Object.defineProperty(exports, "ServerlessEditingDataService", { enumerable: tru
|
|
|
13
13
|
Object.defineProperty(exports, "editingDataService", { enumerable: true, get: function () { return editing_data_service_1.editingDataService; } });
|
|
14
14
|
var vercel_editing_data_cache_1 = require("./vercel-editing-data-cache");
|
|
15
15
|
Object.defineProperty(exports, "VercelEditingDataCache", { enumerable: true, get: function () { return vercel_editing_data_cache_1.VercelEditingDataCache; } });
|
|
16
|
+
var feaas_render_middleware_1 = require("./feaas-render-middleware");
|
|
17
|
+
Object.defineProperty(exports, "FEAASRenderMiddleware", { enumerable: true, get: function () { return feaas_render_middleware_1.FEAASRenderMiddleware; } });
|
|
16
18
|
var editing_config_middleware_1 = require("./editing-config-middleware");
|
|
17
19
|
Object.defineProperty(exports, "EditingConfigMiddleware", { enumerable: true, get: function () { return editing_config_middleware_1.EditingConfigMiddleware; } });
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenderMiddlewareBase = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
/**
|
|
6
|
+
* Base class for middleware that handles pages and components rendering in Sitecore Editors.
|
|
7
|
+
*/
|
|
8
|
+
class RenderMiddlewareBase {
|
|
9
|
+
constructor() {
|
|
10
|
+
/**
|
|
11
|
+
* Gets query parameters that should be passed along to subsequent requests (e.g. for deployment protection bypass)
|
|
12
|
+
* @param {Object} query Object of query parameters from incoming URL
|
|
13
|
+
* @returns Object of approved query parameters
|
|
14
|
+
*/
|
|
15
|
+
this.getQueryParamsForPropagation = (query) => {
|
|
16
|
+
const params = {};
|
|
17
|
+
if (query[constants_1.QUERY_PARAM_PROTECTION_BYPASS_SITECORE]) {
|
|
18
|
+
params[constants_1.QUERY_PARAM_PROTECTION_BYPASS_SITECORE] = query[constants_1.QUERY_PARAM_PROTECTION_BYPASS_SITECORE];
|
|
19
|
+
}
|
|
20
|
+
if (query[constants_1.QUERY_PARAM_PROTECTION_BYPASS_VERCEL]) {
|
|
21
|
+
params[constants_1.QUERY_PARAM_PROTECTION_BYPASS_VERCEL] = query[constants_1.QUERY_PARAM_PROTECTION_BYPASS_VERCEL];
|
|
22
|
+
}
|
|
23
|
+
return params;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.RenderMiddlewareBase = RenderMiddlewareBase;
|
|
@@ -12,33 +12,20 @@ import { AxiosDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
|
|
|
12
12
|
import { EDITING_COMPONENT_ID, RenderingType } from '@sitecore-jss/sitecore-jss/layout';
|
|
13
13
|
import { parse } from 'node-html-parser';
|
|
14
14
|
import { editingDataService } from './editing-data-service';
|
|
15
|
-
import { QUERY_PARAM_EDITING_SECRET
|
|
15
|
+
import { QUERY_PARAM_EDITING_SECRET } from './constants';
|
|
16
16
|
import { getJssEditingSecret } from '../utils/utils';
|
|
17
|
+
import { RenderMiddlewareBase } from './render-middleware';
|
|
17
18
|
/**
|
|
18
19
|
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
19
20
|
* which is required for Sitecore editing support.
|
|
20
21
|
*/
|
|
21
|
-
export class EditingRenderMiddleware {
|
|
22
|
+
export class EditingRenderMiddleware extends RenderMiddlewareBase {
|
|
22
23
|
/**
|
|
23
24
|
* @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
|
|
24
25
|
*/
|
|
25
26
|
constructor(config) {
|
|
26
27
|
var _a, _b, _c, _d;
|
|
27
|
-
|
|
28
|
-
* Gets query parameters that should be passed along to subsequent requests
|
|
29
|
-
* @param {Object} query Object of query parameters from incoming URL
|
|
30
|
-
* @returns Object of approved query parameters
|
|
31
|
-
*/
|
|
32
|
-
this.getQueryParamsForPropagation = (query) => {
|
|
33
|
-
const params = {};
|
|
34
|
-
if (query[QUERY_PARAM_PROTECTION_BYPASS_SITECORE]) {
|
|
35
|
-
params[QUERY_PARAM_PROTECTION_BYPASS_SITECORE] = query[QUERY_PARAM_PROTECTION_BYPASS_SITECORE];
|
|
36
|
-
}
|
|
37
|
-
if (query[QUERY_PARAM_PROTECTION_BYPASS_VERCEL]) {
|
|
38
|
-
params[QUERY_PARAM_PROTECTION_BYPASS_VERCEL] = query[QUERY_PARAM_PROTECTION_BYPASS_VERCEL];
|
|
39
|
-
}
|
|
40
|
-
return params;
|
|
41
|
-
};
|
|
28
|
+
super();
|
|
42
29
|
this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
43
30
|
var _e, _f;
|
|
44
31
|
const { method, query, body, headers } = req;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { debug } from '@sitecore-jss/sitecore-jss';
|
|
11
|
+
import { QUERY_PARAM_EDITING_SECRET } from './constants';
|
|
12
|
+
import { getJssEditingSecret } from '../utils/utils';
|
|
13
|
+
import { RenderMiddlewareBase } from './render-middleware';
|
|
14
|
+
/**
|
|
15
|
+
* Middleware / handler for use in the feaas render Next.js API route (e.g. '/api/editing/feaas/render')
|
|
16
|
+
* which is required for Sitecore editing support.
|
|
17
|
+
*/
|
|
18
|
+
export class FEAASRenderMiddleware extends RenderMiddlewareBase {
|
|
19
|
+
/**
|
|
20
|
+
* @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
|
|
21
|
+
*/
|
|
22
|
+
constructor(config) {
|
|
23
|
+
var _a;
|
|
24
|
+
super();
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.defaultPageUrl = '/feaas/render';
|
|
27
|
+
this.handler = (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
const { method, query, headers } = req;
|
|
29
|
+
const startTimestamp = Date.now();
|
|
30
|
+
debug.editing('feaas render middleware start: %o', {
|
|
31
|
+
method,
|
|
32
|
+
query,
|
|
33
|
+
headers,
|
|
34
|
+
});
|
|
35
|
+
if (method !== 'GET') {
|
|
36
|
+
debug.editing('invalid method - sent %s expected GET', method);
|
|
37
|
+
res.setHeader('Allow', 'GET');
|
|
38
|
+
return res.status(405).send(`<html><body>Invalid request method '${method}'</body></html>`);
|
|
39
|
+
}
|
|
40
|
+
// Validate secret
|
|
41
|
+
const secret = query[QUERY_PARAM_EDITING_SECRET];
|
|
42
|
+
if (secret !== getJssEditingSecret()) {
|
|
43
|
+
debug.editing('invalid editing secret - sent "%s" expected "%s"', secret, getJssEditingSecret());
|
|
44
|
+
return res.status(401).send('<html><body>Missing or invalid secret</body></html>');
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
// Get query string parameters to propagate on subsequent requests (e.g. for deployment protection bypass)
|
|
48
|
+
const params = this.getQueryParamsForPropagation(query);
|
|
49
|
+
// Enable Next.js Preview Mode
|
|
50
|
+
res.setPreviewData({});
|
|
51
|
+
const queryParams = new URLSearchParams();
|
|
52
|
+
for (const key in params) {
|
|
53
|
+
if ({}.hasOwnProperty.call(params, key)) {
|
|
54
|
+
queryParams.append(key, params[key]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// Pass "feaasSrc" in case a FEAASComponent is being requested
|
|
58
|
+
if (query.feaasSrc) {
|
|
59
|
+
queryParams.append('feaasSrc', query.feaasSrc);
|
|
60
|
+
}
|
|
61
|
+
const redirectUrl = this.pageUrl + (queryParams.toString() ? `?${queryParams.toString()}` : '');
|
|
62
|
+
debug.editing('redirecting to page route %s', redirectUrl);
|
|
63
|
+
debug.editing('feaas render middleware end in %dms', Date.now() - startTimestamp);
|
|
64
|
+
res.redirect(redirectUrl);
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
const error = err;
|
|
68
|
+
console.info(
|
|
69
|
+
// eslint-disable-next-line quotes
|
|
70
|
+
"Hint: for non-standard server or Next.js route configurations, you may need to override the 'pageUrl' available on the 'FEAASRenderMiddleware' config.");
|
|
71
|
+
res.status(500).send(`<html><body>${error}</body></html>`);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
this.pageUrl = (_a = config === null || config === void 0 ? void 0 : config.pageUrl) !== null && _a !== void 0 ? _a : this.defaultPageUrl;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Gets the Next.js API route handler
|
|
78
|
+
* @returns route handler
|
|
79
|
+
*/
|
|
80
|
+
getHandler() {
|
|
81
|
+
return this.handler;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -3,4 +3,5 @@ export { EditingDataMiddleware } from './editing-data-middleware';
|
|
|
3
3
|
export { EditingRenderMiddleware, } from './editing-render-middleware';
|
|
4
4
|
export { BasicEditingDataService, ServerlessEditingDataService, editingDataService, } from './editing-data-service';
|
|
5
5
|
export { VercelEditingDataCache } from './vercel-editing-data-cache';
|
|
6
|
+
export { FEAASRenderMiddleware } from './feaas-render-middleware';
|
|
6
7
|
export { EditingConfigMiddleware, } from './editing-config-middleware';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { QUERY_PARAM_PROTECTION_BYPASS_SITECORE, QUERY_PARAM_PROTECTION_BYPASS_VERCEL, } from './constants';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for middleware that handles pages and components rendering in Sitecore Editors.
|
|
4
|
+
*/
|
|
5
|
+
export class RenderMiddlewareBase {
|
|
6
|
+
constructor() {
|
|
7
|
+
/**
|
|
8
|
+
* Gets query parameters that should be passed along to subsequent requests (e.g. for deployment protection bypass)
|
|
9
|
+
* @param {Object} query Object of query parameters from incoming URL
|
|
10
|
+
* @returns Object of approved query parameters
|
|
11
|
+
*/
|
|
12
|
+
this.getQueryParamsForPropagation = (query) => {
|
|
13
|
+
const params = {};
|
|
14
|
+
if (query[QUERY_PARAM_PROTECTION_BYPASS_SITECORE]) {
|
|
15
|
+
params[QUERY_PARAM_PROTECTION_BYPASS_SITECORE] = query[QUERY_PARAM_PROTECTION_BYPASS_SITECORE];
|
|
16
|
+
}
|
|
17
|
+
if (query[QUERY_PARAM_PROTECTION_BYPASS_VERCEL]) {
|
|
18
|
+
params[QUERY_PARAM_PROTECTION_BYPASS_VERCEL] = query[QUERY_PARAM_PROTECTION_BYPASS_VERCEL];
|
|
19
|
+
}
|
|
20
|
+
return params;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sitecore-jss/sitecore-jss-nextjs",
|
|
3
|
-
"version": "21.7.0-canary.
|
|
3
|
+
"version": "21.7.0-canary.60",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -72,9 +72,9 @@
|
|
|
72
72
|
"react-dom": "^18.2.0"
|
|
73
73
|
},
|
|
74
74
|
"dependencies": {
|
|
75
|
-
"@sitecore-jss/sitecore-jss": "^21.7.0-canary.
|
|
76
|
-
"@sitecore-jss/sitecore-jss-dev-tools": "^21.7.0-canary.
|
|
77
|
-
"@sitecore-jss/sitecore-jss-react": "^21.7.0-canary.
|
|
75
|
+
"@sitecore-jss/sitecore-jss": "^21.7.0-canary.60",
|
|
76
|
+
"@sitecore-jss/sitecore-jss-dev-tools": "^21.7.0-canary.60",
|
|
77
|
+
"@sitecore-jss/sitecore-jss-react": "^21.7.0-canary.60",
|
|
78
78
|
"@vercel/kv": "^0.2.1",
|
|
79
79
|
"node-html-parser": "^6.1.4",
|
|
80
80
|
"prop-types": "^15.8.1",
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
},
|
|
84
84
|
"description": "",
|
|
85
85
|
"types": "types/index.d.ts",
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "fb0236009d4f1896999a3ecd69df6a6eae8462b4",
|
|
87
87
|
"files": [
|
|
88
88
|
"dist",
|
|
89
89
|
"types",
|
|
@@ -2,6 +2,7 @@ import { NextApiRequest, NextApiResponse } from 'next';
|
|
|
2
2
|
import { AxiosDataFetcher } from '@sitecore-jss/sitecore-jss';
|
|
3
3
|
import { EditingData } from './editing-data';
|
|
4
4
|
import { EditingDataService } from './editing-data-service';
|
|
5
|
+
import { RenderMiddlewareBase } from './render-middleware';
|
|
5
6
|
export interface EditingRenderMiddlewareConfig {
|
|
6
7
|
/**
|
|
7
8
|
* The `AxiosDataFetcher` instance to use for API requests.
|
|
@@ -41,7 +42,7 @@ export interface EditingRenderMiddlewareConfig {
|
|
|
41
42
|
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
42
43
|
* which is required for Sitecore editing support.
|
|
43
44
|
*/
|
|
44
|
-
export declare class EditingRenderMiddleware {
|
|
45
|
+
export declare class EditingRenderMiddleware extends RenderMiddlewareBase {
|
|
45
46
|
private editingDataService;
|
|
46
47
|
private dataFetcher;
|
|
47
48
|
private resolvePageUrl;
|
|
@@ -55,16 +56,6 @@ export declare class EditingRenderMiddleware {
|
|
|
55
56
|
* @returns route handler
|
|
56
57
|
*/
|
|
57
58
|
getHandler(): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
|
|
58
|
-
/**
|
|
59
|
-
* Gets query parameters that should be passed along to subsequent requests
|
|
60
|
-
* @param {Object} query Object of query parameters from incoming URL
|
|
61
|
-
* @returns Object of approved query parameters
|
|
62
|
-
*/
|
|
63
|
-
protected getQueryParamsForPropagation: (query: Partial<{
|
|
64
|
-
[key: string]: string | string[];
|
|
65
|
-
}>) => {
|
|
66
|
-
[key: string]: string;
|
|
67
|
-
};
|
|
68
59
|
private handler;
|
|
69
60
|
/**
|
|
70
61
|
* Default page URL resolution.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { NextApiRequest, NextApiResponse } from 'next';
|
|
2
|
+
import { RenderMiddlewareBase } from './render-middleware';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for `FEAASRenderMiddleware`.
|
|
5
|
+
*/
|
|
6
|
+
export interface FEAASRenderMiddlewareConfig {
|
|
7
|
+
/**
|
|
8
|
+
* Defines FEAAS page route to render.
|
|
9
|
+
* This may be necessary for certain custom Next.js routing configurations.
|
|
10
|
+
* @default /feaas/render
|
|
11
|
+
*/
|
|
12
|
+
pageUrl?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Middleware / handler for use in the feaas render Next.js API route (e.g. '/api/editing/feaas/render')
|
|
16
|
+
* which is required for Sitecore editing support.
|
|
17
|
+
*/
|
|
18
|
+
export declare class FEAASRenderMiddleware extends RenderMiddlewareBase {
|
|
19
|
+
protected config?: FEAASRenderMiddlewareConfig | undefined;
|
|
20
|
+
private pageUrl;
|
|
21
|
+
private defaultPageUrl;
|
|
22
|
+
/**
|
|
23
|
+
* @param {EditingRenderMiddlewareConfig} [config] Editing render middleware config
|
|
24
|
+
*/
|
|
25
|
+
constructor(config?: FEAASRenderMiddlewareConfig | undefined);
|
|
26
|
+
/**
|
|
27
|
+
* Gets the Next.js API route handler
|
|
28
|
+
* @returns route handler
|
|
29
|
+
*/
|
|
30
|
+
getHandler(): (req: NextApiRequest, res: NextApiResponse) => Promise<void>;
|
|
31
|
+
private handler;
|
|
32
|
+
}
|
package/types/editing/index.d.ts
CHANGED
|
@@ -4,4 +4,5 @@ export { EditingDataMiddleware, EditingDataMiddlewareConfig } from './editing-da
|
|
|
4
4
|
export { EditingRenderMiddleware, EditingRenderMiddlewareConfig, } from './editing-render-middleware';
|
|
5
5
|
export { EditingPreviewData, EditingDataService, BasicEditingDataService, BasicEditingDataServiceConfig, ServerlessEditingDataService, ServerlessEditingDataServiceConfig, editingDataService, } from './editing-data-service';
|
|
6
6
|
export { VercelEditingDataCache } from './vercel-editing-data-cache';
|
|
7
|
+
export { FEAASRenderMiddleware, FEAASRenderMiddlewareConfig } from './feaas-render-middleware';
|
|
7
8
|
export { EditingConfigMiddleware, EditingConfigMiddlewareConfig, } from './editing-config-middleware';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base class for middleware that handles pages and components rendering in Sitecore Editors.
|
|
3
|
+
*/
|
|
4
|
+
export declare abstract class RenderMiddlewareBase {
|
|
5
|
+
/**
|
|
6
|
+
* Gets query parameters that should be passed along to subsequent requests (e.g. for deployment protection bypass)
|
|
7
|
+
* @param {Object} query Object of query parameters from incoming URL
|
|
8
|
+
* @returns Object of approved query parameters
|
|
9
|
+
*/
|
|
10
|
+
protected getQueryParamsForPropagation: (query: Partial<{
|
|
11
|
+
[key: string]: string | string[];
|
|
12
|
+
}>) => {
|
|
13
|
+
[key: string]: string;
|
|
14
|
+
};
|
|
15
|
+
}
|