@akinon/next 2.0.87-rc.0 → 2.0.88-beta.0
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 +4 -28
- package/bin/pz-generate-routes.js +1 -4
- package/components/plugin-module.tsx +1 -0
- package/data/client/checkout.ts +1 -0
- package/data/client/wishlist.ts +0 -22
- package/data/server/category.ts +2 -14
- package/data/server/list.ts +1 -13
- package/data/server/product.ts +0 -10
- package/data/server/special-page.ts +1 -14
- package/data/server/widget.ts +0 -10
- package/data/urls.ts +4 -13
- package/hooks/index.ts +0 -1
- package/hooks/use-captcha.tsx +1 -1
- package/middlewares/default.ts +247 -254
- package/middlewares/pretty-url.ts +1 -3
- package/package.json +2 -2
- package/plugins.d.ts +0 -10
- package/plugins.js +0 -1
- package/redux/middlewares/checkout.ts +3 -45
- package/redux/middlewares/pre-order/installment-option.ts +1 -9
- package/types/index.ts +9 -20
- package/utils/csrf.ts +1 -1
- package/with-pz-config.js +1 -6
- package/api/client-env.ts +0 -78
- package/hooks/use-client-env.ts +0 -265
- package/utils/payload-optimizer.ts +0 -481
package/middlewares/default.ts
CHANGED
|
@@ -18,11 +18,7 @@ import {
|
|
|
18
18
|
withBfcacheHeaders
|
|
19
19
|
} from '.';
|
|
20
20
|
import { getCsrfCookieFlags, urlLocaleMatcherRegex } from '../utils';
|
|
21
|
-
import {
|
|
22
|
-
getPzSegmentsConfig,
|
|
23
|
-
encodePzValue,
|
|
24
|
-
isLegacyMode
|
|
25
|
-
} from '../utils/pz-segments';
|
|
21
|
+
import { getPzSegmentsConfig, encodePzValue, isLegacyMode } from '../utils/pz-segments';
|
|
26
22
|
import withCurrency from './currency';
|
|
27
23
|
import withLocale from './locale';
|
|
28
24
|
import logger from '../utils/log';
|
|
@@ -336,98 +332,98 @@ const withPzDefault =
|
|
|
336
332
|
req: PzNextRequest,
|
|
337
333
|
event: NextFetchEvent
|
|
338
334
|
) => {
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
middlewareResult = (await middleware(
|
|
355
|
-
req,
|
|
356
|
-
event
|
|
357
|
-
)) as NextResponse | void;
|
|
358
|
-
|
|
359
|
-
let customRewriteUrlDiff = '';
|
|
335
|
+
let middlewareResult: NextResponse | void =
|
|
336
|
+
NextResponse.next();
|
|
337
|
+
|
|
338
|
+
try {
|
|
339
|
+
const { locale, prettyUrl, currency } =
|
|
340
|
+
req.middlewareParams.rewrites;
|
|
341
|
+
const { defaultLocaleValue } =
|
|
342
|
+
Settings.localization;
|
|
343
|
+
const url = req.nextUrl.clone();
|
|
344
|
+
const pathnameWithoutLocale =
|
|
345
|
+
url.pathname.replace(
|
|
346
|
+
urlLocaleMatcherRegex,
|
|
347
|
+
''
|
|
348
|
+
);
|
|
360
349
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
350
|
+
middlewareResult = (await middleware(
|
|
351
|
+
req,
|
|
352
|
+
event
|
|
353
|
+
)) as NextResponse | void;
|
|
354
|
+
|
|
355
|
+
let customRewriteUrlDiff = '';
|
|
356
|
+
|
|
357
|
+
if (
|
|
358
|
+
middlewareResult instanceof
|
|
359
|
+
NextResponse &&
|
|
360
|
+
middlewareResult.headers.get(
|
|
361
|
+
'pz-override-response'
|
|
362
|
+
) &&
|
|
363
|
+
middlewareResult.headers.get(
|
|
364
|
+
'x-middleware-rewrite'
|
|
365
|
+
)
|
|
366
|
+
) {
|
|
367
|
+
const rewriteUrl = new URL(
|
|
367
368
|
middlewareResult.headers.get(
|
|
368
369
|
'x-middleware-rewrite'
|
|
369
370
|
)
|
|
370
|
-
)
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
371
|
+
);
|
|
372
|
+
const originalUrl = new URL(req.url);
|
|
373
|
+
customRewriteUrlDiff =
|
|
374
|
+
rewriteUrl.pathname.replace(
|
|
375
|
+
originalUrl.pathname,
|
|
376
|
+
''
|
|
375
377
|
);
|
|
376
|
-
|
|
377
|
-
customRewriteUrlDiff =
|
|
378
|
-
rewriteUrl.pathname.replace(
|
|
379
|
-
originalUrl.pathname,
|
|
380
|
-
''
|
|
381
|
-
);
|
|
382
|
-
}
|
|
378
|
+
}
|
|
383
379
|
|
|
384
|
-
|
|
380
|
+
let ordersPrefix: string;
|
|
385
381
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
382
|
+
if (isLegacyMode(Settings)) {
|
|
383
|
+
url.basePath = `/${commerceUrl}`;
|
|
384
|
+
url.pathname =
|
|
385
|
+
`/${locale.length ? `${locale}/` : ''}${currency}/${customRewriteUrlDiff}${
|
|
386
|
+
prettyUrl ?? pathnameWithoutLocale
|
|
387
|
+
}`.replace(/\/+/g, '/');
|
|
388
|
+
ordersPrefix = `/${currency}/orders`;
|
|
389
|
+
} else {
|
|
390
|
+
const pzConfig =
|
|
391
|
+
getPzSegmentsConfig(Settings);
|
|
392
|
+
const fullUrlPath =
|
|
393
|
+
`${customRewriteUrlDiff}${
|
|
391
394
|
prettyUrl ?? pathnameWithoutLocale
|
|
392
395
|
}`.replace(/\/+/g, '/');
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
string
|
|
425
|
-
> = {
|
|
426
|
-
locale: resolvedLocale,
|
|
427
|
-
currency,
|
|
428
|
-
url: encodeURIComponent(fullUrl),
|
|
429
|
-
...Object.fromEntries(
|
|
430
|
-
customSegments.map((seg) => [
|
|
396
|
+
const fullUrl = `${req.nextUrl.origin}${fullUrlPath}`;
|
|
397
|
+
const resolvedLocale =
|
|
398
|
+
locale?.length > 0
|
|
399
|
+
? locale
|
|
400
|
+
: Settings.localization
|
|
401
|
+
.defaultLocaleValue;
|
|
402
|
+
const resolveContext = {
|
|
403
|
+
req,
|
|
404
|
+
event,
|
|
405
|
+
url,
|
|
406
|
+
locale: resolvedLocale,
|
|
407
|
+
currency,
|
|
408
|
+
pathname: pathnameWithoutLocale
|
|
409
|
+
};
|
|
410
|
+
const customSegments = pzConfig.segments
|
|
411
|
+
.filter(
|
|
412
|
+
(seg) =>
|
|
413
|
+
seg.name !== 'locale' &&
|
|
414
|
+
seg.name !== 'currency' &&
|
|
415
|
+
seg.name !== 'url'
|
|
416
|
+
);
|
|
417
|
+
const segmentValues: Record<
|
|
418
|
+
string,
|
|
419
|
+
string
|
|
420
|
+
> = {
|
|
421
|
+
locale: resolvedLocale,
|
|
422
|
+
currency,
|
|
423
|
+
url: encodeURIComponent(fullUrl),
|
|
424
|
+
...Object.fromEntries(
|
|
425
|
+
customSegments
|
|
426
|
+
.map((seg) => [
|
|
431
427
|
seg.name,
|
|
432
428
|
req.middlewareParams.rewrites[
|
|
433
429
|
seg.name
|
|
@@ -436,121 +432,105 @@ const withPzDefault =
|
|
|
436
432
|
? seg.resolve(resolveContext)
|
|
437
433
|
: '')
|
|
438
434
|
])
|
|
439
|
-
|
|
440
|
-
|
|
435
|
+
)
|
|
436
|
+
};
|
|
441
437
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
438
|
+
const pzValue = encodePzValue(
|
|
439
|
+
segmentValues,
|
|
440
|
+
pzConfig
|
|
441
|
+
);
|
|
442
|
+
|
|
443
|
+
url.pathname =
|
|
444
|
+
`/${pzValue}/${fullUrlPath}`.replace(
|
|
445
|
+
/\/+/g,
|
|
446
|
+
'/'
|
|
445
447
|
);
|
|
448
|
+
ordersPrefix = `/${pzValue}/orders`;
|
|
449
|
+
}
|
|
446
450
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
451
|
+
if (
|
|
452
|
+
Settings.usePrettyUrlRoute &&
|
|
453
|
+
url.searchParams.toString().length > 0 &&
|
|
454
|
+
!Object.entries(ROUTES).find(
|
|
455
|
+
([, value]) =>
|
|
456
|
+
new RegExp(`^${value}/?$`).test(
|
|
457
|
+
pathnameWithoutLocale
|
|
458
|
+
)
|
|
459
|
+
)
|
|
460
|
+
) {
|
|
461
|
+
url.pathname =
|
|
462
|
+
url.pathname +
|
|
463
|
+
(/\/$/.test(url.pathname) ? '' : '/') +
|
|
464
|
+
`searchparams|${encodeURIComponent(
|
|
465
|
+
url.searchParams.toString()
|
|
466
|
+
)}`;
|
|
467
|
+
}
|
|
454
468
|
|
|
469
|
+
Settings.rewrites.forEach((rewrite) => {
|
|
470
|
+
url.pathname = url.pathname.replace(
|
|
471
|
+
rewrite.source,
|
|
472
|
+
rewrite.destination
|
|
473
|
+
);
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
// if middleware.ts has a return value for current url
|
|
477
|
+
if (
|
|
478
|
+
middlewareResult instanceof NextResponse
|
|
479
|
+
) {
|
|
480
|
+
// pz-override-response header is used to prevent 404 page for custom responses.
|
|
455
481
|
if (
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
!Object.entries(ROUTES).find(
|
|
460
|
-
([, value]) =>
|
|
461
|
-
new RegExp(`^${value}/?$`).test(
|
|
462
|
-
pathnameWithoutLocale
|
|
463
|
-
)
|
|
464
|
-
)
|
|
482
|
+
middlewareResult.headers.get(
|
|
483
|
+
'pz-override-response'
|
|
484
|
+
) !== 'true'
|
|
465
485
|
) {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
? ''
|
|
470
|
-
: '/') +
|
|
471
|
-
`searchparams|${encodeURIComponent(
|
|
472
|
-
url.searchParams.toString()
|
|
473
|
-
)}`;
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
Settings.rewrites.forEach((rewrite) => {
|
|
477
|
-
url.pathname = url.pathname.replace(
|
|
478
|
-
rewrite.source,
|
|
479
|
-
rewrite.destination
|
|
486
|
+
middlewareResult.headers.set(
|
|
487
|
+
'x-middleware-rewrite',
|
|
488
|
+
url.href
|
|
480
489
|
);
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
middlewareResult
|
|
490
|
+
} else if (
|
|
491
|
+
middlewareResult.headers.get(
|
|
492
|
+
'x-middleware-rewrite'
|
|
493
|
+
) &&
|
|
494
|
+
middlewareResult.headers.get(
|
|
495
|
+
'pz-override-response'
|
|
496
|
+
) === 'true'
|
|
486
497
|
) {
|
|
487
|
-
// pz-override-response header is used to prevent 404 page for custom responses.
|
|
488
|
-
if (
|
|
489
|
-
middlewareResult.headers.get(
|
|
490
|
-
'pz-override-response'
|
|
491
|
-
) !== 'true'
|
|
492
|
-
) {
|
|
493
|
-
middlewareResult.headers.set(
|
|
494
|
-
'x-middleware-rewrite',
|
|
495
|
-
url.href
|
|
496
|
-
);
|
|
497
|
-
} else if (
|
|
498
|
-
middlewareResult.headers.get(
|
|
499
|
-
'x-middleware-rewrite'
|
|
500
|
-
) &&
|
|
501
|
-
middlewareResult.headers.get(
|
|
502
|
-
'pz-override-response'
|
|
503
|
-
) === 'true'
|
|
504
|
-
) {
|
|
505
|
-
middlewareResult =
|
|
506
|
-
NextResponse.rewrite(url);
|
|
507
|
-
}
|
|
508
|
-
} else {
|
|
509
|
-
// if middleware.ts doesn't have a return value.
|
|
510
|
-
// e.g. NextResponse.next() doesn't exist in middleware.ts
|
|
511
|
-
|
|
512
498
|
middlewareResult =
|
|
513
499
|
NextResponse.rewrite(url);
|
|
514
500
|
}
|
|
501
|
+
} else {
|
|
502
|
+
// if middleware.ts doesn't have a return value.
|
|
503
|
+
// e.g. NextResponse.next() doesn't exist in middleware.ts
|
|
515
504
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
const fallbackHost =
|
|
520
|
-
req.headers.get('x-forwarded-host') ||
|
|
521
|
-
req.headers.get('host');
|
|
522
|
-
const hostname =
|
|
523
|
-
process.env.NEXT_PUBLIC_URL ||
|
|
524
|
-
`https://${fallbackHost}`;
|
|
525
|
-
const rootHostname =
|
|
526
|
-
localeUrlStrategy ===
|
|
527
|
-
LocaleUrlStrategy.Subdomain
|
|
528
|
-
? getRootHostname(hostname)
|
|
529
|
-
: null;
|
|
530
|
-
|
|
531
|
-
if (
|
|
532
|
-
!url.pathname.startsWith(ordersPrefix)
|
|
533
|
-
) {
|
|
534
|
-
middlewareResult.cookies.set(
|
|
535
|
-
'pz-locale',
|
|
536
|
-
locale?.length > 0
|
|
537
|
-
? locale
|
|
538
|
-
: defaultLocaleValue,
|
|
539
|
-
{
|
|
540
|
-
domain: rootHostname,
|
|
541
|
-
sameSite: 'none',
|
|
542
|
-
secure: true,
|
|
543
|
-
expires: new Date(
|
|
544
|
-
Date.now() +
|
|
545
|
-
1000 * 60 * 60 * 24 * 7
|
|
546
|
-
) // 7 days
|
|
547
|
-
}
|
|
548
|
-
);
|
|
549
|
-
}
|
|
505
|
+
middlewareResult =
|
|
506
|
+
NextResponse.rewrite(url);
|
|
507
|
+
}
|
|
550
508
|
|
|
509
|
+
const { localeUrlStrategy } =
|
|
510
|
+
Settings.localization;
|
|
511
|
+
|
|
512
|
+
const fallbackHost =
|
|
513
|
+
req.headers.get('x-forwarded-host') ||
|
|
514
|
+
req.headers.get('host');
|
|
515
|
+
const hostname =
|
|
516
|
+
process.env.NEXT_PUBLIC_URL ||
|
|
517
|
+
`https://${fallbackHost}`;
|
|
518
|
+
const rootHostname =
|
|
519
|
+
localeUrlStrategy ===
|
|
520
|
+
LocaleUrlStrategy.Subdomain
|
|
521
|
+
? getRootHostname(hostname)
|
|
522
|
+
: null;
|
|
523
|
+
|
|
524
|
+
if (
|
|
525
|
+
!url.pathname.startsWith(
|
|
526
|
+
ordersPrefix
|
|
527
|
+
)
|
|
528
|
+
) {
|
|
551
529
|
middlewareResult.cookies.set(
|
|
552
|
-
'pz-
|
|
553
|
-
|
|
530
|
+
'pz-locale',
|
|
531
|
+
locale?.length > 0
|
|
532
|
+
? locale
|
|
533
|
+
: defaultLocaleValue,
|
|
554
534
|
{
|
|
555
535
|
domain: rootHostname,
|
|
556
536
|
sameSite: 'none',
|
|
@@ -560,89 +540,102 @@ const withPzDefault =
|
|
|
560
540
|
) // 7 days
|
|
561
541
|
}
|
|
562
542
|
);
|
|
543
|
+
}
|
|
563
544
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
});
|
|
545
|
+
middlewareResult.cookies.set(
|
|
546
|
+
'pz-currency',
|
|
547
|
+
currency,
|
|
548
|
+
{
|
|
549
|
+
domain: rootHostname,
|
|
550
|
+
sameSite: 'none',
|
|
551
|
+
secure: true,
|
|
552
|
+
expires: new Date(
|
|
553
|
+
Date.now() + 1000 * 60 * 60 * 24 * 7
|
|
554
|
+
) // 7 days
|
|
575
555
|
}
|
|
556
|
+
);
|
|
557
|
+
|
|
558
|
+
if (
|
|
559
|
+
req.cookies.get('pz-locale') &&
|
|
560
|
+
req.cookies.get('pz-locale').value !==
|
|
561
|
+
locale
|
|
562
|
+
) {
|
|
563
|
+
logger.debug('Locale changed', {
|
|
564
|
+
locale,
|
|
565
|
+
oldLocale:
|
|
566
|
+
req.cookies.get('pz-locale')?.value,
|
|
567
|
+
ip
|
|
568
|
+
});
|
|
569
|
+
}
|
|
576
570
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
571
|
+
middlewareResult.headers.set(
|
|
572
|
+
'pz-url',
|
|
573
|
+
req.nextUrl.toString()
|
|
574
|
+
);
|
|
575
|
+
|
|
576
|
+
if (req.cookies.get('pz-set-currency')) {
|
|
577
|
+
middlewareResult.cookies.delete(
|
|
578
|
+
'pz-set-currency'
|
|
580
579
|
);
|
|
580
|
+
}
|
|
581
581
|
|
|
582
|
-
|
|
582
|
+
if (
|
|
583
|
+
req.cookies.get('pz-post-checkout-flow')
|
|
584
|
+
) {
|
|
585
|
+
if (
|
|
586
|
+
pathnameWithoutLocale.startsWith(
|
|
587
|
+
'/orders/completed/'
|
|
588
|
+
) ||
|
|
589
|
+
pathnameWithoutLocale.startsWith(
|
|
590
|
+
'/basket'
|
|
591
|
+
)
|
|
592
|
+
) {
|
|
583
593
|
middlewareResult.cookies.delete(
|
|
584
|
-
'pz-
|
|
594
|
+
'pz-post-checkout-flow'
|
|
585
595
|
);
|
|
586
596
|
}
|
|
597
|
+
}
|
|
587
598
|
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
) ||
|
|
595
|
-
pathnameWithoutLocale.startsWith(
|
|
596
|
-
'/basket'
|
|
597
|
-
)
|
|
598
|
-
) {
|
|
599
|
-
middlewareResult.cookies.delete(
|
|
600
|
-
'pz-post-checkout-flow'
|
|
601
|
-
);
|
|
602
|
-
}
|
|
603
|
-
}
|
|
599
|
+
if (process.env.ACC_APP_VERSION) {
|
|
600
|
+
middlewareResult.headers.set(
|
|
601
|
+
'acc-app-version',
|
|
602
|
+
process.env.ACC_APP_VERSION
|
|
603
|
+
);
|
|
604
|
+
}
|
|
604
605
|
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
process.env.ACC_APP_VERSION
|
|
609
|
-
);
|
|
610
|
-
}
|
|
606
|
+
// Set CSRF token if not set
|
|
607
|
+
try {
|
|
608
|
+
const url = `${Settings.commerceUrl}${user.csrfToken}`;
|
|
611
609
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
domain: rootHostname,
|
|
626
|
-
...getCsrfCookieFlags()
|
|
627
|
-
}
|
|
628
|
-
);
|
|
629
|
-
}
|
|
630
|
-
} catch (error) {
|
|
631
|
-
logger.error('CSRF Error', {
|
|
632
|
-
error,
|
|
633
|
-
ip
|
|
634
|
-
});
|
|
610
|
+
if (!req.cookies.get('csrftoken')) {
|
|
611
|
+
const { csrf_token } = await (
|
|
612
|
+
await fetch(url)
|
|
613
|
+
).json();
|
|
614
|
+
middlewareResult.cookies.set(
|
|
615
|
+
'csrftoken',
|
|
616
|
+
csrf_token,
|
|
617
|
+
{
|
|
618
|
+
path: '/',
|
|
619
|
+
domain: rootHostname,
|
|
620
|
+
...getCsrfCookieFlags()
|
|
621
|
+
}
|
|
622
|
+
);
|
|
635
623
|
}
|
|
636
624
|
} catch (error) {
|
|
637
|
-
logger.error('
|
|
625
|
+
logger.error('CSRF Error', {
|
|
638
626
|
error,
|
|
639
627
|
ip
|
|
640
628
|
});
|
|
641
629
|
}
|
|
642
|
-
|
|
643
|
-
|
|
630
|
+
} catch (error) {
|
|
631
|
+
logger.error('withPzDefault Error', {
|
|
632
|
+
error,
|
|
633
|
+
ip
|
|
634
|
+
});
|
|
644
635
|
}
|
|
645
|
-
|
|
636
|
+
|
|
637
|
+
return middlewareResult;
|
|
638
|
+
})
|
|
646
639
|
)
|
|
647
640
|
)
|
|
648
641
|
)
|
|
@@ -86,9 +86,7 @@ const withPrettyUrl =
|
|
|
86
86
|
const matchedLanguagePrefix = url.pathname.match(
|
|
87
87
|
urlLocaleMatcherRegex
|
|
88
88
|
)?.[0];
|
|
89
|
-
const prettyUrlPathname = matchedLanguagePrefix
|
|
90
|
-
? url.pathname.replace(matchedLanguagePrefix, '')
|
|
91
|
-
: url.pathname;
|
|
89
|
+
const prettyUrlPathname = url.pathname.replace(matchedLanguagePrefix, '');
|
|
92
90
|
const isValidPrettyUrlPath = (pathname: string) => {
|
|
93
91
|
return (
|
|
94
92
|
new RegExp(/^\/[a-zA-Z0-9/]+(?:-[a-zA-Z0-9/]+)*$/).test(pathname) &&
|
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": "2.0.
|
|
4
|
+
"version": "2.0.88-beta.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"set-cookie-parser": "2.6.0"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@akinon/eslint-plugin-projectzero": "2.0.
|
|
39
|
+
"@akinon/eslint-plugin-projectzero": "2.0.88-beta.0",
|
|
40
40
|
"@babel/core": "7.26.10",
|
|
41
41
|
"@babel/preset-env": "7.26.9",
|
|
42
42
|
"@babel/preset-typescript": "7.27.0",
|
package/plugins.d.ts
CHANGED
|
@@ -37,16 +37,6 @@ declare module '@akinon/pz-cybersource-uc/src/redux/middleware' {
|
|
|
37
37
|
export default middleware as any;
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
declare module '@akinon/pz-apple-pay' {}
|
|
41
|
-
|
|
42
|
-
declare module '@akinon/pz-similar-products' {
|
|
43
|
-
export const SimilarProductsModal: any;
|
|
44
|
-
export const SimilarProductsFilterSidebar: any;
|
|
45
|
-
export const SimilarProductsResultsGrid: any;
|
|
46
|
-
export const SimilarProductsPlugin: any;
|
|
47
|
-
export const SimilarProductsButtonPlugin: any;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
40
|
declare module '@akinon/pz-cybersource-uc/src/redux/reducer' {
|
|
51
41
|
export default reducer as any;
|
|
52
42
|
}
|