@sitecore-jss/sitecore-jss-nextjs 22.0.0-canary.37 → 22.0.0-canary.38
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.
|
@@ -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,13 @@ 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);
|
|
122
|
-
const tragetURL =
|
|
123
|
-
const targetQS = `?${req.nextUrl.search || ''}
|
|
136
|
+
const tragetURL = req.nextUrl.pathname;
|
|
137
|
+
const targetQS = `?${req.nextUrl.search || ''}`;
|
|
124
138
|
return redirects.length
|
|
125
139
|
? redirects.find((redirect) => {
|
|
126
140
|
const pattern = `/^/${redirect.pattern
|
|
127
|
-
.toLowerCase()
|
|
128
141
|
.replace(/^\/|\/$/g, '')
|
|
129
|
-
.replace(/^\^|\$$/g, '')}
|
|
142
|
+
.replace(/^\^|\$$/g, '')}$/gi`;
|
|
130
143
|
return (((0, regex_parser_1.default)(pattern).test(tragetURL) ||
|
|
131
144
|
(0, regex_parser_1.default)(pattern).test(`${tragetURL}${targetQS}`) ||
|
|
132
145
|
(0, regex_parser_1.default)(pattern).test(`/${req.nextUrl.locale}${tragetURL}`.toLowerCase())) &&
|
|
@@ -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,13 @@ 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);
|
|
116
|
-
const tragetURL =
|
|
117
|
-
const targetQS = `?${req.nextUrl.search || ''}
|
|
130
|
+
const tragetURL = req.nextUrl.pathname;
|
|
131
|
+
const targetQS = `?${req.nextUrl.search || ''}`;
|
|
118
132
|
return redirects.length
|
|
119
133
|
? redirects.find((redirect) => {
|
|
120
134
|
const pattern = `/^/${redirect.pattern
|
|
121
|
-
.toLowerCase()
|
|
122
135
|
.replace(/^\/|\/$/g, '')
|
|
123
|
-
.replace(/^\^|\$$/g, '')}
|
|
136
|
+
.replace(/^\^|\$$/g, '')}$/gi`;
|
|
124
137
|
return ((regexParser(pattern).test(tragetURL) ||
|
|
125
138
|
regexParser(pattern).test(`${tragetURL}${targetQS}`) ||
|
|
126
139
|
regexParser(pattern).test(`/${req.nextUrl.locale}${tragetURL}`.toLowerCase())) &&
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sitecore-jss/sitecore-jss-nextjs",
|
|
3
|
-
"version": "22.0.0-canary.
|
|
3
|
+
"version": "22.0.0-canary.38",
|
|
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": "^22.0.0-canary.
|
|
74
|
-
"@sitecore-jss/sitecore-jss-dev-tools": "^22.0.0-canary.
|
|
75
|
-
"@sitecore-jss/sitecore-jss-react": "^22.0.0-canary.
|
|
73
|
+
"@sitecore-jss/sitecore-jss": "^22.0.0-canary.38",
|
|
74
|
+
"@sitecore-jss/sitecore-jss-dev-tools": "^22.0.0-canary.38",
|
|
75
|
+
"@sitecore-jss/sitecore-jss-react": "^22.0.0-canary.38",
|
|
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": "7fd4d56d0513e9a2e0d516f92de3e77cb7457fe3",
|
|
84
84
|
"files": [
|
|
85
85
|
"dist",
|
|
86
86
|
"types",
|
|
@@ -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>;
|