@akinon/next 1.47.0-rc.7 → 1.47.0-rc.8

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/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @akinon/next
2
2
 
3
+ ## 1.47.0-rc.8
4
+
5
+ ### Minor Changes
6
+
7
+ - d93a507: ZERO-2900: Fix pretty url rewrite
8
+
3
9
  ## 1.47.0-rc.7
4
10
 
5
11
  ### Minor Changes
@@ -219,10 +219,41 @@ const withPzDefault =
219
219
  ''
220
220
  );
221
221
 
222
+ middlewareResult = (await middleware(
223
+ req,
224
+ event
225
+ )) as NextResponse | void;
226
+
227
+ let customRewriteUrlDiff = '';
228
+
229
+ if (
230
+ middlewareResult instanceof NextResponse &&
231
+ middlewareResult.headers.get(
232
+ 'pz-override-response'
233
+ ) &&
234
+ middlewareResult.headers.get(
235
+ 'x-middleware-rewrite'
236
+ )
237
+ ) {
238
+ const rewriteUrl = new URL(
239
+ middlewareResult.headers.get(
240
+ 'x-middleware-rewrite'
241
+ )
242
+ );
243
+ const originalUrl = new URL(req.url);
244
+ customRewriteUrlDiff =
245
+ rewriteUrl.pathname.replace(
246
+ originalUrl.pathname,
247
+ ''
248
+ );
249
+ }
250
+
222
251
  url.basePath = `/${commerceUrl}`;
223
252
  url.pathname = `/${
224
253
  locale.length ? `${locale}/` : ''
225
- }${currency}${prettyUrl ?? pathnameWithoutLocale}`;
254
+ }${currency}/${customRewriteUrlDiff}${
255
+ prettyUrl ?? pathnameWithoutLocale
256
+ }`.replace(/\/+/g, '/');
226
257
 
227
258
  if (
228
259
  !req.middlewareParams.found &&
@@ -258,41 +289,27 @@ const withPzDefault =
258
289
  );
259
290
  });
260
291
 
261
- middlewareResult = (await middleware(
262
- req,
263
- event
264
- )) as NextResponse | void;
265
-
266
292
  // if middleware.ts has a return value for current url
267
293
  if (middlewareResult instanceof NextResponse) {
268
294
  // pz-override-response header is used to prevent 404 page for custom responses.
269
295
  if (
270
296
  middlewareResult.headers.get(
271
297
  'pz-override-response'
272
- ) === 'true'
298
+ ) !== 'true'
273
299
  ) {
274
- if (
275
- middlewareResult.headers.get(
276
- 'x-middleware-rewrite'
277
- )
278
- ) {
279
- const rewriteUrl = new URL(
280
- middlewareResult.headers.get(
281
- 'x-middleware-rewrite'
282
- )
283
- );
284
-
285
- url.pathname = (
286
- url.pathname + rewriteUrl.pathname
287
- ).replace(/\/\//g, '/');
288
-
289
- return NextResponse.rewrite(url);
290
- }
291
- } else {
292
300
  middlewareResult.headers.set(
293
301
  'x-middleware-rewrite',
294
302
  url.href
295
303
  );
304
+ } else if (
305
+ middlewareResult.headers.get(
306
+ 'x-middleware-rewrite'
307
+ ) &&
308
+ middlewareResult.headers.get(
309
+ 'pz-override-response'
310
+ ) === 'true'
311
+ ) {
312
+ middlewareResult = NextResponse.rewrite(url);
296
313
  }
297
314
  } else {
298
315
  // if middleware.ts doesn't have a return value.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@akinon/next",
3
3
  "description": "Core package for Project Zero Next",
4
- "version": "1.47.0-rc.7",
4
+ "version": "1.47.0-rc.8",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -30,7 +30,7 @@
30
30
  "set-cookie-parser": "2.6.0"
31
31
  },
32
32
  "devDependencies": {
33
- "@akinon/eslint-plugin-projectzero": "1.47.0-rc.7",
33
+ "@akinon/eslint-plugin-projectzero": "1.47.0-rc.8",
34
34
  "@types/react-redux": "7.1.30",
35
35
  "@types/set-cookie-parser": "2.4.7",
36
36
  "@typescript-eslint/eslint-plugin": "6.7.4",