@sitecore-jss/sitecore-jss-nextjs 21.1.1 → 21.2.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/README.md +5 -5
- package/dist/cjs/components/Link.js +4 -0
- package/dist/cjs/editing/editing-data-middleware.js +1 -1
- package/dist/cjs/editing/editing-data-service.js +1 -1
- package/dist/cjs/editing/editing-render-middleware.js +1 -1
- package/dist/cjs/index.js +22 -10
- package/dist/cjs/middleware/index.js +1 -5
- package/dist/cjs/middleware/redirects-middleware.js +23 -6
- package/dist/cjs/site/index.js +5 -0
- package/dist/cjs/utils/index.js +11 -0
- package/dist/esm/components/Link.js +4 -0
- package/dist/esm/editing/editing-data-middleware.js +1 -1
- package/dist/esm/editing/editing-data-service.js +1 -1
- package/dist/esm/editing/editing-render-middleware.js +1 -1
- package/dist/esm/index.js +16 -3
- package/dist/esm/middleware/index.js +0 -2
- package/dist/esm/middleware/redirects-middleware.js +23 -6
- package/dist/esm/site/index.js +1 -0
- package/dist/esm/utils/index.js +2 -0
- package/package.json +5 -5
- package/site.d.ts +1 -0
- package/site.js +1 -0
- package/types/index.d.ts +7 -4
- package/types/middleware/index.d.ts +0 -2
- package/types/middleware/redirects-middleware.d.ts +1 -1
- package/types/site/index.d.ts +1 -0
- package/types/utils/index.d.ts +2 -0
- package/utils.d.ts +1 -0
- package/utils.js +1 -0
- /package/dist/cjs/{utils.js → utils/utils.js} +0 -0
- /package/dist/esm/{utils.js → utils/utils.js} +0 -0
- /package/types/{utils.d.ts → utils/utils.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
This module is provided as a part of Sitecore JavaScript Rendering SDK. It contains Next.js components and integration for JSS.
|
|
4
4
|
|
|
5
|
+
<!---
|
|
6
|
+
@TODO: Update to version 20.0.0 docs before release
|
|
7
|
+
-->
|
|
8
|
+
[Documentation](https://doc.sitecore.com/xp/en/developers/hd/190/sitecore-headless-development/sitecore-javascript-rendering-sdk--jss--for-next-js.html)
|
|
5
9
|
|
|
6
|
-
[
|
|
7
|
-
|
|
8
|
-
[Documentation (XM Cloud)](https://doc.sitecore.com/xmc/en/developers/xm-cloud/sitecore-javascript-rendering-sdk--jss--for-next-js.html)
|
|
9
|
-
|
|
10
|
-
[API reference documentation](/ref-docs/sitecore-jss-nextjs/)
|
|
10
|
+
[API reference documentation](/ref-docs/sitecore-jss-nextjs/).
|
|
@@ -44,6 +44,10 @@ const link_1 = __importDefault(require("next/link"));
|
|
|
44
44
|
const sitecore_jss_react_1 = require("@sitecore-jss/sitecore-jss-react");
|
|
45
45
|
exports.Link = (0, react_1.forwardRef)((props, ref) => {
|
|
46
46
|
const { field, editable, children, internalLinkMatcher = /^\//g, showLinkTextWithChildrenPresent } = props, htmlLinkProps = __rest(props, ["field", "editable", "children", "internalLinkMatcher", "showLinkTextWithChildrenPresent"]);
|
|
47
|
+
if (!field ||
|
|
48
|
+
(!field.editable && !field.value && !field.href)) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
47
51
|
const value = (field.href
|
|
48
52
|
? field
|
|
49
53
|
: field.value);
|
|
@@ -13,7 +13,7 @@ exports.EditingDataMiddleware = void 0;
|
|
|
13
13
|
const editing_data_cache_1 = require("./editing-data-cache");
|
|
14
14
|
const editing_data_1 = require("./editing-data");
|
|
15
15
|
const editing_data_service_1 = require("./editing-data-service");
|
|
16
|
-
const utils_1 = require("../utils");
|
|
16
|
+
const utils_1 = require("../utils/utils");
|
|
17
17
|
/**
|
|
18
18
|
* Middleware / handler for use in the editing data Next.js API dynamic route (e.g. '/api/editing/data/[key]')
|
|
19
19
|
* which is required for Sitecore editing support.
|
|
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.editingDataService = exports.ServerlessEditingDataService = exports.BasicEditingDataService = exports.generateKey = exports.QUERY_PARAM_EDITING_SECRET = void 0;
|
|
13
13
|
const sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
14
14
|
const editing_data_cache_1 = require("./editing-data-cache");
|
|
15
|
-
const utils_1 = require("../utils");
|
|
15
|
+
const utils_1 = require("../utils/utils");
|
|
16
16
|
exports.QUERY_PARAM_EDITING_SECRET = 'secret';
|
|
17
17
|
/**
|
|
18
18
|
* Unique key generator.
|
|
@@ -15,7 +15,7 @@ const sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
|
15
15
|
const layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
16
16
|
const node_html_parser_1 = require("node-html-parser");
|
|
17
17
|
const editing_data_service_1 = require("./editing-data-service");
|
|
18
|
-
const utils_1 = require("../utils");
|
|
18
|
+
const utils_1 = require("../utils/utils");
|
|
19
19
|
/**
|
|
20
20
|
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
21
21
|
* which is required for Sitecore editing support.
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,17 +1,31 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Image = exports.NextImage = exports.EditingComponentPlaceholder = exports.Placeholder = exports.RichText = exports.Link = exports.
|
|
4
|
-
exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.File = exports.FEaaSComponent = exports.EditFrame = exports.DateField = exports.Text = void 0;
|
|
3
|
+
exports.Image = exports.NextImage = exports.EditingComponentPlaceholder = exports.Placeholder = exports.RichText = exports.Link = exports.useComponentProps = exports.ComponentPropsContext = exports.ComponentPropsReactContext = exports.normalizeSiteRewrite = exports.getSiteRewriteData = exports.getSiteRewrite = exports.GraphQLSiteInfoService = exports.SiteResolver = exports.GraphQLRobotsService = exports.GraphQLErrorPagesService = exports.GraphQLSitemapXmlService = exports.MultisiteGraphQLSitemapService = exports.GraphQLSitemapService = exports.DisconnectedSitemapService = exports.ComponentPropsService = exports.GraphQLRequestClient = exports.PosResolver = exports.CdpHelper = exports.normalizePersonalizedRewrite = exports.getPersonalizedRewriteData = exports.getPersonalizedRewrite = exports.personalizeLayout = exports.RestDictionaryService = exports.GraphQLDictionaryService = exports.trackingApi = exports.mediaApi = exports.EDITING_COMPONENT_ID = exports.EDITING_COMPONENT_PLACEHOLDER = exports.RenderingType = exports.getFieldValue = exports.getChildPlaceholder = exports.RestLayoutService = exports.GraphQLLayoutService = exports.LayoutServicePageState = exports.tryParseEnvValue = exports.resolveUrl = exports.resetEditorChromes = exports.isEditorActive = exports.getPublicUrl = exports.handleEditorFastRefresh = exports.enableDebug = exports.NativeDataFetcher = exports.AxiosDataFetcher = exports.constants = void 0;
|
|
4
|
+
exports.withDatasourceCheck = exports.withPlaceholder = exports.withEditorChromes = exports.useSitecoreContext = exports.withSitecoreContext = exports.SitecoreContextReactContext = exports.SitecoreContext = exports.VisitorIdentification = exports.File = exports.fetchFEaaSComponentServerProps = exports.FEaaSComponent = exports.EditFrame = exports.DateField = exports.Text = void 0;
|
|
5
5
|
var sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
6
6
|
Object.defineProperty(exports, "constants", { enumerable: true, get: function () { return sitecore_jss_1.constants; } });
|
|
7
7
|
Object.defineProperty(exports, "AxiosDataFetcher", { enumerable: true, get: function () { return sitecore_jss_1.AxiosDataFetcher; } });
|
|
8
8
|
Object.defineProperty(exports, "NativeDataFetcher", { enumerable: true, get: function () { return sitecore_jss_1.NativeDataFetcher; } });
|
|
9
9
|
Object.defineProperty(exports, "enableDebug", { enumerable: true, get: function () { return sitecore_jss_1.enableDebug; } });
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
// we will remove the root exports for these later
|
|
11
|
+
// we cannot mark exports as deprected directly, so we're using this hack instead
|
|
12
|
+
const utils_1 = require("@sitecore-jss/sitecore-jss/utils");
|
|
13
|
+
const utils_2 = require("./utils");
|
|
14
|
+
/** @deprecated use import from '@sitecore-jss/sitecore-jss-nextjs/utils' instead */
|
|
15
|
+
const { isEditorActiveDep: isEditorActive, resetEditorChromesDep: resetEditorChromes, resolveUrlDep: resolveUrl, tryParseEnvValueDep: tryParseEnvValue, handleEditorFastRefreshDep: handleEditorFastRefresh, getPublicUrlDep: getPublicUrl, } = {
|
|
16
|
+
isEditorActiveDep: utils_1.isEditorActive,
|
|
17
|
+
resetEditorChromesDep: utils_1.resetEditorChromes,
|
|
18
|
+
resolveUrlDep: utils_1.resolveUrl,
|
|
19
|
+
tryParseEnvValueDep: utils_1.tryParseEnvValue,
|
|
20
|
+
handleEditorFastRefreshDep: utils_2.handleEditorFastRefresh,
|
|
21
|
+
getPublicUrlDep: utils_2.getPublicUrl,
|
|
22
|
+
};
|
|
23
|
+
exports.isEditorActive = isEditorActive;
|
|
24
|
+
exports.resetEditorChromes = resetEditorChromes;
|
|
25
|
+
exports.resolveUrl = resolveUrl;
|
|
26
|
+
exports.tryParseEnvValue = tryParseEnvValue;
|
|
27
|
+
exports.handleEditorFastRefresh = handleEditorFastRefresh;
|
|
28
|
+
exports.getPublicUrl = getPublicUrl;
|
|
15
29
|
var layout_1 = require("@sitecore-jss/sitecore-jss/layout");
|
|
16
30
|
Object.defineProperty(exports, "LayoutServicePageState", { enumerable: true, get: function () { return layout_1.LayoutServicePageState; } });
|
|
17
31
|
Object.defineProperty(exports, "GraphQLLayoutService", { enumerable: true, get: function () { return layout_1.GraphQLLayoutService; } });
|
|
@@ -58,9 +72,6 @@ var ComponentPropsContext_1 = require("./components/ComponentPropsContext");
|
|
|
58
72
|
Object.defineProperty(exports, "ComponentPropsReactContext", { enumerable: true, get: function () { return ComponentPropsContext_1.ComponentPropsReactContext; } });
|
|
59
73
|
Object.defineProperty(exports, "ComponentPropsContext", { enumerable: true, get: function () { return ComponentPropsContext_1.ComponentPropsContext; } });
|
|
60
74
|
Object.defineProperty(exports, "useComponentProps", { enumerable: true, get: function () { return ComponentPropsContext_1.useComponentProps; } });
|
|
61
|
-
var utils_2 = require("./utils");
|
|
62
|
-
Object.defineProperty(exports, "handleEditorFastRefresh", { enumerable: true, get: function () { return utils_2.handleEditorFastRefresh; } });
|
|
63
|
-
Object.defineProperty(exports, "getPublicUrl", { enumerable: true, get: function () { return utils_2.getPublicUrl; } });
|
|
64
75
|
var Link_1 = require("./components/Link");
|
|
65
76
|
Object.defineProperty(exports, "Link", { enumerable: true, get: function () { return Link_1.Link; } });
|
|
66
77
|
var RichText_1 = require("./components/RichText");
|
|
@@ -77,6 +88,7 @@ Object.defineProperty(exports, "Text", { enumerable: true, get: function () { re
|
|
|
77
88
|
Object.defineProperty(exports, "DateField", { enumerable: true, get: function () { return sitecore_jss_react_1.DateField; } });
|
|
78
89
|
Object.defineProperty(exports, "EditFrame", { enumerable: true, get: function () { return sitecore_jss_react_1.EditFrame; } });
|
|
79
90
|
Object.defineProperty(exports, "FEaaSComponent", { enumerable: true, get: function () { return sitecore_jss_react_1.FEaaSComponent; } });
|
|
91
|
+
Object.defineProperty(exports, "fetchFEaaSComponentServerProps", { enumerable: true, get: function () { return sitecore_jss_react_1.fetchFEaaSComponentServerProps; } });
|
|
80
92
|
Object.defineProperty(exports, "File", { enumerable: true, get: function () { return sitecore_jss_react_1.File; } });
|
|
81
93
|
Object.defineProperty(exports, "VisitorIdentification", { enumerable: true, get: function () { return sitecore_jss_react_1.VisitorIdentification; } });
|
|
82
94
|
Object.defineProperty(exports, "SitecoreContext", { enumerable: true, get: function () { return sitecore_jss_react_1.SitecoreContext; } });
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.MultisiteMiddleware = exports.PersonalizeMiddleware = exports.RedirectsMiddleware = void 0;
|
|
4
4
|
var redirects_middleware_1 = require("./redirects-middleware");
|
|
5
5
|
Object.defineProperty(exports, "RedirectsMiddleware", { enumerable: true, get: function () { return redirects_middleware_1.RedirectsMiddleware; } });
|
|
6
6
|
var personalize_middleware_1 = require("./personalize-middleware");
|
|
7
7
|
Object.defineProperty(exports, "PersonalizeMiddleware", { enumerable: true, get: function () { return personalize_middleware_1.PersonalizeMiddleware; } });
|
|
8
8
|
var multisite_middleware_1 = require("./multisite-middleware");
|
|
9
9
|
Object.defineProperty(exports, "MultisiteMiddleware", { enumerable: true, get: function () { return multisite_middleware_1.MultisiteMiddleware; } });
|
|
10
|
-
var site_1 = require("@sitecore-jss/sitecore-jss/site");
|
|
11
|
-
Object.defineProperty(exports, "SiteResolver", { enumerable: true, get: function () { return site_1.SiteResolver; } });
|
|
12
|
-
var utils_1 = require("@sitecore-jss/sitecore-jss/utils");
|
|
13
|
-
Object.defineProperty(exports, "tryParseEnvValue", { enumerable: true, get: function () { return utils_1.tryParseEnvValue; } });
|
|
@@ -18,6 +18,7 @@ const server_1 = require("next/server");
|
|
|
18
18
|
const site_1 = require("@sitecore-jss/sitecore-jss/site");
|
|
19
19
|
const sitecore_jss_1 = require("@sitecore-jss/sitecore-jss");
|
|
20
20
|
const middleware_1 = require("./middleware");
|
|
21
|
+
const REGEXP_CONTEXT_SITE_LANG = new RegExp(/\$siteLang/, 'gi');
|
|
21
22
|
/**
|
|
22
23
|
* Middleware / handler fetches all redirects from Sitecore instance by grapqhl service
|
|
23
24
|
* compares with current url and redirects to target url
|
|
@@ -55,6 +56,10 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
|
|
|
55
56
|
sitecore_jss_1.debug.redirects('skipped (redirect does not exist)');
|
|
56
57
|
return res || server_1.NextResponse.next();
|
|
57
58
|
}
|
|
59
|
+
// Find context site language and replace token
|
|
60
|
+
if (REGEXP_CONTEXT_SITE_LANG.test(existsRedirect.target)) {
|
|
61
|
+
existsRedirect.target = existsRedirect.target.replace(REGEXP_CONTEXT_SITE_LANG, site.language);
|
|
62
|
+
}
|
|
58
63
|
const url = req.nextUrl.clone();
|
|
59
64
|
const absoluteUrlRegex = new RegExp('^(?:[a-z]+:)?//', 'i');
|
|
60
65
|
if (absoluteUrlRegex.test(existsRedirect.target)) {
|
|
@@ -103,11 +108,20 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
|
|
|
103
108
|
this.locales = config.locales;
|
|
104
109
|
}
|
|
105
110
|
/**
|
|
106
|
-
* Gets the Next.js
|
|
111
|
+
* Gets the Next.js middleware handler with error handling
|
|
107
112
|
* @returns route handler
|
|
108
113
|
*/
|
|
109
114
|
getHandler() {
|
|
110
|
-
return this
|
|
115
|
+
return (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
116
|
+
try {
|
|
117
|
+
return yield this.handler(req, res);
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
console.log('Redirect middleware failed:');
|
|
121
|
+
console.log(error);
|
|
122
|
+
return res || server_1.NextResponse.next();
|
|
123
|
+
}
|
|
124
|
+
});
|
|
111
125
|
}
|
|
112
126
|
/**
|
|
113
127
|
* Method returns RedirectInfo when matches
|
|
@@ -119,14 +133,17 @@ class RedirectsMiddleware extends middleware_1.MiddlewareBase {
|
|
|
119
133
|
getExistsRedirect(req, siteName) {
|
|
120
134
|
return __awaiter(this, void 0, void 0, function* () {
|
|
121
135
|
const redirects = yield this.redirectsService.fetchRedirects(siteName);
|
|
136
|
+
const tragetURL = req.nextUrl.pathname;
|
|
137
|
+
const targetQS = req.nextUrl.search || '';
|
|
122
138
|
return redirects.length
|
|
123
139
|
? redirects.find((redirect) => {
|
|
124
140
|
const pattern = `/^/${redirect.pattern
|
|
125
|
-
.toLowerCase()
|
|
126
141
|
.replace(/^\/|\/$/g, '')
|
|
127
|
-
.replace(/^\^|\$$/g, '')}
|
|
128
|
-
return (((0, regex_parser_1.default)(pattern).test(
|
|
129
|
-
(0, regex_parser_1.default)(pattern).test(
|
|
142
|
+
.replace(/^\^|\$$/g, '')}$/gi`;
|
|
143
|
+
return (((0, regex_parser_1.default)(pattern).test(tragetURL) ||
|
|
144
|
+
(0, regex_parser_1.default)(pattern).test(`${tragetURL}${targetQS}`) ||
|
|
145
|
+
(0, regex_parser_1.default)(pattern).test(`/${req.nextUrl.locale}${tragetURL}`) ||
|
|
146
|
+
(0, regex_parser_1.default)(pattern).test(`/${req.nextUrl.locale}${tragetURL}${targetQS}`)) &&
|
|
130
147
|
(redirect.locale
|
|
131
148
|
? redirect.locale.toLowerCase() === req.nextUrl.locale.toLowerCase()
|
|
132
149
|
: true));
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SiteResolver = void 0;
|
|
4
|
+
var site_1 = require("@sitecore-jss/sitecore-jss/site");
|
|
5
|
+
Object.defineProperty(exports, "SiteResolver", { enumerable: true, get: function () { return site_1.SiteResolver; } });
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveUrl = exports.resetEditorChromes = exports.isEditorActive = exports.tryParseEnvValue = exports.handleEditorFastRefresh = exports.getPublicUrl = void 0;
|
|
4
|
+
var utils_1 = require("./utils");
|
|
5
|
+
Object.defineProperty(exports, "getPublicUrl", { enumerable: true, get: function () { return utils_1.getPublicUrl; } });
|
|
6
|
+
Object.defineProperty(exports, "handleEditorFastRefresh", { enumerable: true, get: function () { return utils_1.handleEditorFastRefresh; } });
|
|
7
|
+
var utils_2 = require("@sitecore-jss/sitecore-jss/utils");
|
|
8
|
+
Object.defineProperty(exports, "tryParseEnvValue", { enumerable: true, get: function () { return utils_2.tryParseEnvValue; } });
|
|
9
|
+
Object.defineProperty(exports, "isEditorActive", { enumerable: true, get: function () { return utils_2.isEditorActive; } });
|
|
10
|
+
Object.defineProperty(exports, "resetEditorChromes", { enumerable: true, get: function () { return utils_2.resetEditorChromes; } });
|
|
11
|
+
Object.defineProperty(exports, "resolveUrl", { enumerable: true, get: function () { return utils_2.resolveUrl; } });
|
|
@@ -15,6 +15,10 @@ import NextLink from 'next/link';
|
|
|
15
15
|
import { Link as ReactLink, LinkPropTypes, } from '@sitecore-jss/sitecore-jss-react';
|
|
16
16
|
export const Link = forwardRef((props, ref) => {
|
|
17
17
|
const { field, editable, children, internalLinkMatcher = /^\//g, showLinkTextWithChildrenPresent } = props, htmlLinkProps = __rest(props, ["field", "editable", "children", "internalLinkMatcher", "showLinkTextWithChildrenPresent"]);
|
|
18
|
+
if (!field ||
|
|
19
|
+
(!field.editable && !field.value && !field.href)) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
18
22
|
const value = (field.href
|
|
19
23
|
? field
|
|
20
24
|
: field.value);
|
|
@@ -10,7 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
import { editingDataDiskCache } from './editing-data-cache';
|
|
11
11
|
import { isEditingData } from './editing-data';
|
|
12
12
|
import { QUERY_PARAM_EDITING_SECRET } from './editing-data-service';
|
|
13
|
-
import { getJssEditingSecret } from '../utils';
|
|
13
|
+
import { getJssEditingSecret } from '../utils/utils';
|
|
14
14
|
/**
|
|
15
15
|
* Middleware / handler for use in the editing data Next.js API dynamic route (e.g. '/api/editing/data/[key]')
|
|
16
16
|
* which is required for Sitecore editing support.
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { AxiosDataFetcher, debug } from '@sitecore-jss/sitecore-jss';
|
|
11
11
|
import { editingDataDiskCache } from './editing-data-cache';
|
|
12
|
-
import { getJssEditingSecret } from '../utils';
|
|
12
|
+
import { getJssEditingSecret } from '../utils/utils';
|
|
13
13
|
export const QUERY_PARAM_EDITING_SECRET = 'secret';
|
|
14
14
|
/**
|
|
15
15
|
* Unique key generator.
|
|
@@ -12,7 +12,7 @@ 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, QUERY_PARAM_EDITING_SECRET, } from './editing-data-service';
|
|
15
|
-
import { getJssEditingSecret } from '../utils';
|
|
15
|
+
import { getJssEditingSecret } from '../utils/utils';
|
|
16
16
|
/**
|
|
17
17
|
* Middleware / handler for use in the editing render Next.js API route (e.g. '/api/editing/render')
|
|
18
18
|
* which is required for Sitecore editing support.
|
package/dist/esm/index.js
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
export { constants, AxiosDataFetcher, NativeDataFetcher, enableDebug, } from '@sitecore-jss/sitecore-jss';
|
|
2
|
-
|
|
2
|
+
// we will remove the root exports for these later
|
|
3
|
+
// we cannot mark exports as deprected directly, so we're using this hack instead
|
|
4
|
+
import { isEditorActive as isEditorActiveDep, resetEditorChromes as resetEditorChromesDep, resolveUrl as resolveUrlDep, tryParseEnvValue as tryParseEnvValueDep, } from '@sitecore-jss/sitecore-jss/utils';
|
|
5
|
+
import { handleEditorFastRefresh as handleEditorFastRefreshDep, getPublicUrl as getPublicUrlDep, } from './utils';
|
|
6
|
+
/** @deprecated use import from '@sitecore-jss/sitecore-jss-nextjs/utils' instead */
|
|
7
|
+
const { isEditorActiveDep: isEditorActive, resetEditorChromesDep: resetEditorChromes, resolveUrlDep: resolveUrl, tryParseEnvValueDep: tryParseEnvValue, handleEditorFastRefreshDep: handleEditorFastRefresh, getPublicUrlDep: getPublicUrl, } = {
|
|
8
|
+
isEditorActiveDep,
|
|
9
|
+
resetEditorChromesDep,
|
|
10
|
+
resolveUrlDep,
|
|
11
|
+
tryParseEnvValueDep,
|
|
12
|
+
handleEditorFastRefreshDep,
|
|
13
|
+
getPublicUrlDep,
|
|
14
|
+
};
|
|
15
|
+
export { handleEditorFastRefresh, getPublicUrl };
|
|
16
|
+
export { isEditorActive, resetEditorChromes, resolveUrl, tryParseEnvValue };
|
|
3
17
|
export { LayoutServicePageState, GraphQLLayoutService, RestLayoutService, getChildPlaceholder, getFieldValue, RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from '@sitecore-jss/sitecore-jss/layout';
|
|
4
18
|
export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
|
|
5
19
|
export { trackingApi, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
@@ -12,10 +26,9 @@ export { GraphQLSitemapService, } from './services/graphql-sitemap-service';
|
|
|
12
26
|
export { MultisiteGraphQLSitemapService, } from './services/mutisite-graphql-sitemap-service';
|
|
13
27
|
export { GraphQLSitemapXmlService, GraphQLErrorPagesService, GraphQLRobotsService, SiteResolver, GraphQLSiteInfoService, getSiteRewrite, getSiteRewriteData, normalizeSiteRewrite, } from '@sitecore-jss/sitecore-jss/site';
|
|
14
28
|
export { ComponentPropsReactContext, ComponentPropsContext, useComponentProps, } from './components/ComponentPropsContext';
|
|
15
|
-
export { handleEditorFastRefresh, getPublicUrl } from './utils';
|
|
16
29
|
export { Link } from './components/Link';
|
|
17
30
|
export { RichText } from './components/RichText';
|
|
18
31
|
export { Placeholder } from './components/Placeholder';
|
|
19
32
|
export { EditingComponentPlaceholder } from './components/EditingComponentPlaceholder';
|
|
20
33
|
export { NextImage } from './components/NextImage';
|
|
21
|
-
export { Image, Text, DateField, EditFrame, FEaaSComponent, File, VisitorIdentification, SitecoreContext, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, } from '@sitecore-jss/sitecore-jss-react';
|
|
34
|
+
export { Image, Text, DateField, EditFrame, FEaaSComponent, fetchFEaaSComponentServerProps, File, VisitorIdentification, SitecoreContext, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, } from '@sitecore-jss/sitecore-jss-react';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { RedirectsMiddleware } from './redirects-middleware';
|
|
2
2
|
export { PersonalizeMiddleware } from './personalize-middleware';
|
|
3
3
|
export { MultisiteMiddleware } from './multisite-middleware';
|
|
4
|
-
export { SiteResolver } from '@sitecore-jss/sitecore-jss/site';
|
|
5
|
-
export { tryParseEnvValue } from '@sitecore-jss/sitecore-jss/utils';
|
|
@@ -12,6 +12,7 @@ import { NextResponse } from 'next/server';
|
|
|
12
12
|
import { GraphQLRedirectsService, REDIRECT_TYPE_301, REDIRECT_TYPE_302, REDIRECT_TYPE_SERVER_TRANSFER, } from '@sitecore-jss/sitecore-jss/site';
|
|
13
13
|
import { debug } from '@sitecore-jss/sitecore-jss';
|
|
14
14
|
import { MiddlewareBase } from './middleware';
|
|
15
|
+
const REGEXP_CONTEXT_SITE_LANG = new RegExp(/\$siteLang/, 'gi');
|
|
15
16
|
/**
|
|
16
17
|
* Middleware / handler fetches all redirects from Sitecore instance by grapqhl service
|
|
17
18
|
* compares with current url and redirects to target url
|
|
@@ -49,6 +50,10 @@ export class RedirectsMiddleware extends MiddlewareBase {
|
|
|
49
50
|
debug.redirects('skipped (redirect does not exist)');
|
|
50
51
|
return res || NextResponse.next();
|
|
51
52
|
}
|
|
53
|
+
// Find context site language and replace token
|
|
54
|
+
if (REGEXP_CONTEXT_SITE_LANG.test(existsRedirect.target)) {
|
|
55
|
+
existsRedirect.target = existsRedirect.target.replace(REGEXP_CONTEXT_SITE_LANG, site.language);
|
|
56
|
+
}
|
|
52
57
|
const url = req.nextUrl.clone();
|
|
53
58
|
const absoluteUrlRegex = new RegExp('^(?:[a-z]+:)?//', 'i');
|
|
54
59
|
if (absoluteUrlRegex.test(existsRedirect.target)) {
|
|
@@ -97,11 +102,20 @@ export class RedirectsMiddleware extends MiddlewareBase {
|
|
|
97
102
|
this.locales = config.locales;
|
|
98
103
|
}
|
|
99
104
|
/**
|
|
100
|
-
* Gets the Next.js
|
|
105
|
+
* Gets the Next.js middleware handler with error handling
|
|
101
106
|
* @returns route handler
|
|
102
107
|
*/
|
|
103
108
|
getHandler() {
|
|
104
|
-
return this
|
|
109
|
+
return (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
110
|
+
try {
|
|
111
|
+
return yield this.handler(req, res);
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.log('Redirect middleware failed:');
|
|
115
|
+
console.log(error);
|
|
116
|
+
return res || NextResponse.next();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
105
119
|
}
|
|
106
120
|
/**
|
|
107
121
|
* Method returns RedirectInfo when matches
|
|
@@ -113,14 +127,17 @@ export class RedirectsMiddleware extends MiddlewareBase {
|
|
|
113
127
|
getExistsRedirect(req, siteName) {
|
|
114
128
|
return __awaiter(this, void 0, void 0, function* () {
|
|
115
129
|
const redirects = yield this.redirectsService.fetchRedirects(siteName);
|
|
130
|
+
const tragetURL = req.nextUrl.pathname;
|
|
131
|
+
const targetQS = req.nextUrl.search || '';
|
|
116
132
|
return redirects.length
|
|
117
133
|
? redirects.find((redirect) => {
|
|
118
134
|
const pattern = `/^/${redirect.pattern
|
|
119
|
-
.toLowerCase()
|
|
120
135
|
.replace(/^\/|\/$/g, '')
|
|
121
|
-
.replace(/^\^|\$$/g, '')}
|
|
122
|
-
return ((regexParser(pattern).test(
|
|
123
|
-
regexParser(pattern).test(
|
|
136
|
+
.replace(/^\^|\$$/g, '')}$/gi`;
|
|
137
|
+
return ((regexParser(pattern).test(tragetURL) ||
|
|
138
|
+
regexParser(pattern).test(`${tragetURL}${targetQS}`) ||
|
|
139
|
+
regexParser(pattern).test(`/${req.nextUrl.locale}${tragetURL}`) ||
|
|
140
|
+
regexParser(pattern).test(`/${req.nextUrl.locale}${tragetURL}${targetQS}`)) &&
|
|
124
141
|
(redirect.locale
|
|
125
142
|
? redirect.locale.toLowerCase() === req.nextUrl.locale.toLowerCase()
|
|
126
143
|
: true));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SiteResolver } from '@sitecore-jss/sitecore-jss/site';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sitecore-jss/sitecore-jss-nextjs",
|
|
3
|
-
"version": "21.
|
|
3
|
+
"version": "21.2.0-canary.10",
|
|
4
4
|
"main": "dist/cjs/index.js",
|
|
5
5
|
"module": "dist/esm/index.js",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
"react-dom": "^18.2.0"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@sitecore-jss/sitecore-jss": "^21.
|
|
74
|
-
"@sitecore-jss/sitecore-jss-dev-tools": "^21.
|
|
75
|
-
"@sitecore-jss/sitecore-jss-react": "^21.
|
|
73
|
+
"@sitecore-jss/sitecore-jss": "^21.2.0-canary.10",
|
|
74
|
+
"@sitecore-jss/sitecore-jss-dev-tools": "^21.2.0-canary.10",
|
|
75
|
+
"@sitecore-jss/sitecore-jss-react": "^21.2.0-canary.10",
|
|
76
76
|
"node-html-parser": "^6.1.4",
|
|
77
77
|
"prop-types": "^15.8.1",
|
|
78
78
|
"regex-parser": "^2.2.11",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
},
|
|
81
81
|
"description": "",
|
|
82
82
|
"types": "types/index.d.ts",
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "653c646a4c337f604587a9cf8141dd8707bdb7b5",
|
|
84
84
|
"files": [
|
|
85
85
|
"dist",
|
|
86
86
|
"types",
|
package/site.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types/site/index';
|
package/site.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/cjs/site/index');
|
package/types/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
export { constants, HttpDataFetcher, HttpResponse, AxiosResponse, AxiosDataFetcher, AxiosDataFetcherConfig, NativeDataFetcher, NativeDataFetcherConfig, enableDebug, } from '@sitecore-jss/sitecore-jss';
|
|
2
|
-
|
|
1
|
+
export { constants, HttpDataFetcher, HttpResponse, AxiosResponse, AxiosDataFetcher, AxiosDataFetcherConfig, NativeDataFetcher, NativeDataFetcherConfig, HTMLLink, enableDebug, } from '@sitecore-jss/sitecore-jss';
|
|
2
|
+
import { resolveUrl as resolveUrlDep } from '@sitecore-jss/sitecore-jss/utils';
|
|
3
|
+
/** @deprecated use import from '@sitecore-jss/sitecore-jss-nextjs/utils' instead */
|
|
4
|
+
declare const isEditorActive: () => boolean, resetEditorChromes: () => void, resolveUrl: typeof resolveUrlDep, tryParseEnvValue: <T>(envValue: string | undefined, defaultValue: T) => T, handleEditorFastRefresh: (forceReload?: boolean) => void, getPublicUrl: () => string;
|
|
5
|
+
export { handleEditorFastRefresh, getPublicUrl };
|
|
6
|
+
export { isEditorActive, resetEditorChromes, resolveUrl, tryParseEnvValue };
|
|
3
7
|
export { LayoutService, LayoutServiceData, LayoutServicePageState, LayoutServiceContext, LayoutServiceContextData, GraphQLLayoutService, GraphQLLayoutServiceConfig, RestLayoutService, RestLayoutServiceConfig, PlaceholderData, PlaceholdersData, RouteData, Field, Item, HtmlElementRendering, getChildPlaceholder, getFieldValue, ComponentRendering, ComponentFields, ComponentParams, RenderingType, EDITING_COMPONENT_PLACEHOLDER, EDITING_COMPONENT_ID, } from '@sitecore-jss/sitecore-jss/layout';
|
|
4
8
|
export { mediaApi } from '@sitecore-jss/sitecore-jss/media';
|
|
5
9
|
export { trackingApi, TrackingRequestOptions, CampaignInstance, GoalInstance, OutcomeInstance, EventInstance, PageViewInstance, } from '@sitecore-jss/sitecore-jss/tracking';
|
|
@@ -15,10 +19,9 @@ export { MultisiteGraphQLSitemapService, MultisiteGraphQLSitemapServiceConfig, }
|
|
|
15
19
|
export { GraphQLSitemapXmlService, GraphQLSitemapXmlServiceConfig, GraphQLErrorPagesService, GraphQLErrorPagesServiceConfig, RobotsQueryResult, GraphQLRobotsService, GraphQLRobotsServiceConfig, ErrorPages, SiteInfo, SiteResolver, GraphQLSiteInfoService, GraphQLSiteInfoServiceConfig, getSiteRewrite, getSiteRewriteData, normalizeSiteRewrite, } from '@sitecore-jss/sitecore-jss/site';
|
|
16
20
|
export { StaticPath } from './services/graphql-sitemap-service';
|
|
17
21
|
export { ComponentPropsReactContext, ComponentPropsContextProps, ComponentPropsContext, useComponentProps, } from './components/ComponentPropsContext';
|
|
18
|
-
export { handleEditorFastRefresh, getPublicUrl } from './utils';
|
|
19
22
|
export { Link, LinkProps } from './components/Link';
|
|
20
23
|
export { RichText, RichTextProps } from './components/RichText';
|
|
21
24
|
export { Placeholder } from './components/Placeholder';
|
|
22
25
|
export { EditingComponentPlaceholder } from './components/EditingComponentPlaceholder';
|
|
23
26
|
export { NextImage } from './components/NextImage';
|
|
24
|
-
export { ComponentFactory, Image, ImageField, ImageFieldValue, ImageProps, LinkField, LinkFieldValue, Text, TextField, DateField, EditFrame, FEaaSComponent, FEaaSComponentProps, File, FileField, RichTextField, VisitorIdentification, PlaceholderComponentProps, SitecoreContext, SitecoreContextState, SitecoreContextValue, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, ImageSizeParameters, ComponentConsumerProps, WithSitecoreContextOptions, WithSitecoreContextProps, } from '@sitecore-jss/sitecore-jss-react';
|
|
27
|
+
export { ComponentFactory, Image, ImageField, ImageFieldValue, ImageProps, LinkField, LinkFieldValue, Text, TextField, DateField, EditFrame, FEaaSComponent, FEaaSComponentProps, FEaaSComponentParams, fetchFEaaSComponentServerProps, File, FileField, RichTextField, VisitorIdentification, PlaceholderComponentProps, SitecoreContext, SitecoreContextState, SitecoreContextValue, SitecoreContextReactContext, withSitecoreContext, useSitecoreContext, withEditorChromes, withPlaceholder, withDatasourceCheck, ImageSizeParameters, ComponentConsumerProps, WithSitecoreContextOptions, WithSitecoreContextProps, } from '@sitecore-jss/sitecore-jss-react';
|
|
@@ -1,5 +1,3 @@
|
|
|
1
1
|
export { RedirectsMiddleware, RedirectsMiddlewareConfig } from './redirects-middleware';
|
|
2
2
|
export { PersonalizeMiddleware, PersonalizeMiddlewareConfig } from './personalize-middleware';
|
|
3
3
|
export { MultisiteMiddleware, MultisiteMiddlewareConfig } from './multisite-middleware';
|
|
4
|
-
export { SiteResolver, SiteInfo } from '@sitecore-jss/sitecore-jss/site';
|
|
5
|
-
export { tryParseEnvValue } from '@sitecore-jss/sitecore-jss/utils';
|
|
@@ -24,7 +24,7 @@ export declare class RedirectsMiddleware extends MiddlewareBase {
|
|
|
24
24
|
*/
|
|
25
25
|
constructor(config: RedirectsMiddlewareConfig);
|
|
26
26
|
/**
|
|
27
|
-
* Gets the Next.js
|
|
27
|
+
* Gets the Next.js middleware handler with error handling
|
|
28
28
|
* @returns route handler
|
|
29
29
|
*/
|
|
30
30
|
getHandler(): (req: NextRequest, res?: NextResponse) => Promise<NextResponse>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SiteResolver, SiteInfo } from '@sitecore-jss/sitecore-jss/site';
|
package/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './types/utils/index';
|
package/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./dist/cjs/utils/index');
|
|
File without changes
|
|
File without changes
|
|
File without changes
|