@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 API route handler
111
+ * Gets the Next.js middleware handler with error handling
107
112
  * @returns route handler
108
113
  */
109
114
  getHandler() {
110
- return this.handler;
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 = `${req.nextUrl.pathname}`.toLowerCase();
123
- const targetQS = `?${req.nextUrl.search || ''}`.toLowerCase();
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 API route handler
105
+ * Gets the Next.js middleware handler with error handling
101
106
  * @returns route handler
102
107
  */
103
108
  getHandler() {
104
- return this.handler;
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 = `${req.nextUrl.pathname}`.toLowerCase();
117
- const targetQS = `?${req.nextUrl.search || ''}`.toLowerCase();
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.37",
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.37",
74
- "@sitecore-jss/sitecore-jss-dev-tools": "^22.0.0-canary.37",
75
- "@sitecore-jss/sitecore-jss-react": "^22.0.0-canary.37",
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": "b90f16a0dd687cf2ac426fb9955bd23903ddd402",
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 API route handler
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>;