@akinon/next 2.0.14-rc.0 → 2.0.14-rc.1

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
+ ## 2.0.14-rc.1
4
+
5
+ ### Patch Changes
6
+
7
+ - d51fa68e: ZERO-4399: add card rewards to pz-masterpass-rest
8
+
3
9
  ## 2.0.14-rc.0
4
10
 
5
11
  ### Patch Changes
@@ -7,111 +7,111 @@ import { getCheckoutPath } from '../utils';
7
7
 
8
8
  const withMasterpassRestCallback =
9
9
  (middleware: NextMiddleware) =>
10
- async (req: PzNextRequest, event: NextFetchEvent) => {
11
- const url = req.nextUrl.clone();
12
- const ip = req.headers.get('x-forwarded-for') ?? '';
13
-
14
- const isMasterpassCompletePage =
15
- url.pathname.includes('/orders/checkout') &&
16
- url.searchParams.get('page') === 'MasterpassRestCompletePage';
17
-
18
- if (!isMasterpassCompletePage) {
19
- return middleware(req, event);
20
- }
21
-
22
- try {
23
- const isPostCheckout = req.cookies.get('pz-post-checkout-flow')?.value === 'true';
24
- const requestUrl = new URL(getCheckoutPath(isPostCheckout), Settings.commerceUrl);
25
-
26
- url.searchParams.forEach((value, key) => {
27
- requestUrl.searchParams.set(key, value);
28
- });
29
-
30
- const formData = await req.formData();
31
- const body: Record<string, string> = {};
32
-
33
- Array.from(formData.entries()).forEach(([key, value]) => {
34
- body[key] = value.toString();
35
- });
36
-
37
- const requestHeaders = {
38
- 'Content-Type': 'application/x-www-form-urlencoded',
39
- 'X-Requested-With': 'XMLHttpRequest',
40
- Cookie: req.headers.get('cookie') ?? '',
41
- 'x-currency': req.cookies.get('pz-currency')?.value ?? '',
42
- 'x-forwarded-for': ip,
43
- 'User-Agent': req.headers.get('user-agent') ?? ''
44
- };
45
-
46
- const request = await fetch(requestUrl.toString(), {
47
- method: 'POST',
48
- headers: requestHeaders,
49
- body: new URLSearchParams(body)
50
- });
51
-
52
- const response = await request.json();
53
- const { errors } = response;
54
-
55
- if (errors && Object.keys(errors).length) {
56
- logger.error('Error while processing MasterpassRestCompletePage', {
57
- middleware: 'masterpass-rest-callback',
58
- errors,
59
- ip
10
+ async (req: PzNextRequest, event: NextFetchEvent) => {
11
+ const url = req.nextUrl.clone();
12
+ const ip = req.headers.get('x-forwarded-for') ?? '';
13
+
14
+ const isMasterpassCompletePage =
15
+ url.pathname.includes('/orders/checkout') &&
16
+ url.searchParams.get('page') === 'MasterpassRestCompletePage';
17
+
18
+ if (!isMasterpassCompletePage) {
19
+ return middleware(req, event);
20
+ }
21
+
22
+ try {
23
+ const isPostCheckout = req.cookies.get('pz-post-checkout-flow')?.value === 'true';
24
+ const requestUrl = new URL(getCheckoutPath(isPostCheckout), Settings.commerceUrl);
25
+
26
+ url.searchParams.forEach((value, key) => {
27
+ requestUrl.searchParams.set(key, value);
60
28
  });
61
29
 
62
- const errorResponse = NextResponse.redirect(
63
- `${url.origin}${getUrlPathWithLocale(
64
- '/orders/checkout/',
65
- req.cookies.get('pz-locale')?.value
66
- )}`,
67
- 303
68
- );
30
+ const formData = await req.formData();
31
+ const body: Record<string, string> = {};
69
32
 
70
- // Add error cookie
71
- errorResponse.cookies.set('pz-pos-error', JSON.stringify(errors), {
72
- path: '/'
33
+ Array.from(formData.entries()).forEach(([key, value]) => {
34
+ body[key] = value.toString();
73
35
  });
74
36
 
75
- return errorResponse;
76
- }
37
+ const requestHeaders = {
38
+ 'Content-Type': 'application/x-www-form-urlencoded',
39
+ 'X-Requested-With': 'XMLHttpRequest',
40
+ Cookie: req.headers.get('cookie') ?? '',
41
+ 'x-currency': req.cookies.get('pz-currency')?.value ?? '',
42
+ 'x-forwarded-for': ip,
43
+ 'User-Agent': req.headers.get('user-agent') ?? ''
44
+ };
45
+
46
+ const request = await fetch(requestUrl.toString(), {
47
+ method: 'POST',
48
+ headers: requestHeaders,
49
+ body: new URLSearchParams(body)
50
+ });
77
51
 
78
- const redirectUrl =
79
- response.redirect_url ||
80
- response.context_list?.[0]?.page_context?.redirect_url;
52
+ const response = await request.json();
53
+ const { errors } = response;
81
54
 
82
- if (redirectUrl) {
83
- const nextResponse = NextResponse.redirect(
84
- `${url.origin}${getUrlPathWithLocale(redirectUrl, req.cookies.get('pz-locale')?.value)}`,
85
- 303
86
- );
55
+ if (errors && Object.keys(errors).length) {
56
+ logger.error('Error while processing MasterpassRestCompletePage', {
57
+ middleware: 'masterpass-rest-callback',
58
+ errors,
59
+ ip
60
+ });
87
61
 
88
- // Forward set-cookie headers from the upstream response
89
- const setCookieHeader = request.headers.get('set-cookie');
90
- if (setCookieHeader) {
91
- setCookieHeader.split(',').forEach((cookie) => {
92
- nextResponse.headers.append('Set-Cookie', cookie.trim());
62
+ const errorResponse = NextResponse.redirect(
63
+ `${url.origin}${getUrlPathWithLocale(
64
+ '/orders/checkout/',
65
+ req.cookies.get('pz-locale')?.value
66
+ )}`,
67
+ 303
68
+ );
69
+
70
+ // Add error cookie
71
+ errorResponse.cookies.set('pz-pos-error', JSON.stringify(errors), {
72
+ path: '/'
93
73
  });
74
+
75
+ return errorResponse;
94
76
  }
95
77
 
96
- return nextResponse;
97
- }
78
+ const redirectUrl =
79
+ response.redirect_url ||
80
+ response.context_list?.[0]?.page_context?.redirect_url;
81
+
82
+ if (redirectUrl) {
83
+ const nextResponse = NextResponse.redirect(
84
+ `${url.origin}${getUrlPathWithLocale(redirectUrl, req.cookies.get('pz-locale')?.value)}`,
85
+ 303
86
+ );
87
+
88
+ // Forward set-cookie headers from the upstream response
89
+ const setCookieHeader = request.headers.get('set-cookie');
90
+ if (setCookieHeader) {
91
+ setCookieHeader.split(',').forEach((cookie) => {
92
+ nextResponse.headers.append('Set-Cookie', cookie.trim());
93
+ });
94
+ }
95
+
96
+ return nextResponse;
97
+ }
98
+
99
+ return NextResponse.redirect(
100
+ `${url.origin}${getUrlPathWithLocale('/orders/checkout/', req.cookies.get('pz-locale')?.value)}`,
101
+ 303
102
+ );
103
+ } catch (error) {
104
+ logger.error('Error while processing MasterpassRestCompletePage', {
105
+ middleware: 'masterpass-rest-callback',
106
+ error,
107
+ ip
108
+ });
98
109
 
99
- return NextResponse.redirect(
100
- `${url.origin}${getUrlPathWithLocale('/orders/checkout/', req.cookies.get('pz-locale')?.value)}`,
101
- 303
102
- );
103
- } catch (error) {
104
- logger.error('Error while processing MasterpassRestCompletePage', {
105
- middleware: 'masterpass-rest-callback',
106
- error,
107
- ip
108
- });
109
-
110
- return NextResponse.redirect(
111
- `${url.origin}${getUrlPathWithLocale('/orders/checkout/', req.cookies.get('pz-locale')?.value)}`,
112
- 303
113
- );
114
- }
115
- };
110
+ return NextResponse.redirect(
111
+ `${url.origin}${getUrlPathWithLocale('/orders/checkout/', req.cookies.get('pz-locale')?.value)}`,
112
+ 303
113
+ );
114
+ }
115
+ };
116
116
 
117
117
  export default withMasterpassRestCallback;
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.14-rc.0",
4
+ "version": "2.0.14-rc.1",
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.14-rc.0",
39
+ "@akinon/eslint-plugin-projectzero": "2.0.14-rc.1",
40
40
  "@babel/core": "7.26.10",
41
41
  "@babel/preset-env": "7.26.9",
42
42
  "@babel/preset-typescript": "7.27.0",