@akinon/next 1.14.0 → 1.14.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.
Files changed (119) hide show
  1. package/.eslintrc.js +40 -40
  2. package/.prettierrc +13 -13
  3. package/CHANGELOG.md +6 -0
  4. package/api/auth.ts +231 -231
  5. package/api/cache.ts +44 -44
  6. package/api/client.ts +174 -174
  7. package/api/logout.ts +42 -42
  8. package/bin/pz-check-dependencies.js +98 -98
  9. package/bin/pz-install-plugins.js +33 -33
  10. package/bin/pz-install-theme.js +58 -58
  11. package/bin/pz-postbuild.js +1 -1
  12. package/bin/pz-postdev.js +1 -1
  13. package/bin/pz-postinstall.js +6 -6
  14. package/bin/pz-poststart.js +1 -1
  15. package/bin/pz-prebuild.js +4 -4
  16. package/bin/pz-predev.js +4 -4
  17. package/bin/pz-prestart.js +1 -1
  18. package/bin/run-script.js +44 -44
  19. package/components/accordion.tsx +52 -52
  20. package/components/button.tsx +46 -46
  21. package/components/client-root.tsx +19 -19
  22. package/components/icon.tsx +18 -18
  23. package/components/image.tsx +133 -133
  24. package/components/index.ts +17 -17
  25. package/components/input.tsx +110 -110
  26. package/components/lazy-component.tsx +33 -33
  27. package/components/loader-spinner.tsx +23 -23
  28. package/components/mobile-app-toggler.tsx +26 -26
  29. package/components/oauth-login.tsx +24 -24
  30. package/components/price.tsx +55 -55
  31. package/components/pz-providers.tsx +24 -24
  32. package/components/pz-root.tsx +21 -21
  33. package/components/radio.tsx +18 -18
  34. package/components/react-portal.tsx +45 -45
  35. package/components/redirect-three-d/content/index.tsx +74 -74
  36. package/components/redirect-three-d/index.tsx +17 -17
  37. package/components/trans.tsx +39 -39
  38. package/data/client/account.ts +208 -208
  39. package/data/client/api.ts +85 -85
  40. package/data/client/basket.ts +82 -82
  41. package/data/client/misc.ts +101 -101
  42. package/data/client/product.ts +89 -89
  43. package/data/client/user.ts +99 -99
  44. package/data/client/wishlist.ts +118 -118
  45. package/data/server/category.ts +132 -132
  46. package/data/server/flatpage.ts +21 -21
  47. package/data/server/form.ts +22 -22
  48. package/data/server/index.ts +10 -10
  49. package/data/server/landingpage.ts +24 -24
  50. package/data/server/list.ts +67 -67
  51. package/data/server/menu.ts +35 -35
  52. package/data/server/product.ts +86 -86
  53. package/data/server/seo.ts +48 -48
  54. package/data/server/special-page.ts +47 -47
  55. package/data/server/widget.ts +27 -27
  56. package/data/urls.ts +221 -221
  57. package/hocs/client/index.ts +1 -1
  58. package/hocs/client/with-segment-defaults.tsx +25 -25
  59. package/hocs/server/index.ts +1 -1
  60. package/hocs/server/with-segment-defaults.tsx +85 -85
  61. package/hooks/index.ts +10 -10
  62. package/hooks/use-captcha.tsx +76 -76
  63. package/hooks/use-common-product-attributes.ts +36 -36
  64. package/hooks/use-debounce.ts +20 -20
  65. package/hooks/use-localization.ts +78 -78
  66. package/hooks/use-media-query.ts +36 -36
  67. package/hooks/use-mobile-iframe-handler.ts +23 -23
  68. package/hooks/use-on-click-outside.tsx +28 -28
  69. package/hooks/use-router.ts +45 -45
  70. package/hooks/use-translation.ts +14 -14
  71. package/lib/cache.ts +215 -215
  72. package/localization/index.ts +5 -5
  73. package/localization/provider.tsx +58 -58
  74. package/middlewares/currency.ts +100 -100
  75. package/middlewares/default.ts +256 -256
  76. package/middlewares/index.ts +29 -29
  77. package/middlewares/locale.ts +68 -68
  78. package/middlewares/oauth-login.ts +79 -79
  79. package/middlewares/pretty-url.ts +104 -104
  80. package/middlewares/redirection-payment.ts +160 -160
  81. package/middlewares/three-d-redirection.ts +159 -159
  82. package/middlewares/url-redirection.ts +65 -65
  83. package/package.json +2 -2
  84. package/redux/hooks.ts +7 -7
  85. package/redux/middlewares/index.ts +50 -50
  86. package/redux/reducers/checkout.ts +184 -184
  87. package/redux/reducers/config.ts +28 -28
  88. package/redux/reducers/header.ts +59 -59
  89. package/redux/reducers/root.ts +61 -61
  90. package/sentry/index.ts +27 -27
  91. package/tailwind/rtl.js +137 -137
  92. package/types/commerce/account.ts +64 -64
  93. package/types/commerce/address.ts +94 -94
  94. package/types/commerce/basket.ts +43 -43
  95. package/types/commerce/category.ts +114 -114
  96. package/types/commerce/checkout.ts +143 -143
  97. package/types/commerce/flatpage.ts +7 -7
  98. package/types/commerce/form.ts +66 -66
  99. package/types/commerce/index.ts +12 -12
  100. package/types/commerce/landingpage.ts +7 -7
  101. package/types/commerce/misc.ts +127 -127
  102. package/types/commerce/order.ts +119 -119
  103. package/types/commerce/product.ts +109 -109
  104. package/types/commerce/widget.ts +28 -28
  105. package/types/gtm.ts +16 -16
  106. package/types/index.ts +274 -274
  107. package/types/metadata.ts +7 -7
  108. package/types/next-auth.d.ts +24 -24
  109. package/utils/app-fetch.ts +69 -69
  110. package/utils/deep-merge.js +24 -24
  111. package/utils/image-loader.ts +31 -31
  112. package/utils/index.ts +150 -150
  113. package/utils/localization.ts +29 -29
  114. package/utils/log.ts +138 -138
  115. package/utils/menu-generator.ts +27 -27
  116. package/utils/mobile-3d-iframe.ts +77 -77
  117. package/utils/server-translation.ts +57 -57
  118. package/utils/server-variables.ts +9 -9
  119. package/with-pz-config.js +94 -94
@@ -1,82 +1,82 @@
1
- import { api } from './api';
2
- import { Basket } from '../../types';
3
- import { buildClientRequestUrl } from '../../utils';
4
- import { basket } from '../urls';
5
-
6
- export type UpdateQuantityResponse = {
7
- basket: Basket;
8
- osessionid: string;
9
- };
10
-
11
- export type UpdateQuantityRequest = {
12
- product: number;
13
- quantity: number;
14
- attributes: any;
15
- };
16
-
17
- export const basketApi = api.injectEndpoints({
18
- endpoints: (build) => ({
19
- getBasket: build.query<Basket, void>({
20
- query: () =>
21
- buildClientRequestUrl(basket.getBasket, {
22
- contentType: 'application/json'
23
- }),
24
- transformResponse: (response: { basket: Basket }) => response.basket,
25
- providesTags: ['Basket']
26
- }),
27
- updateQuantity: build.mutation<
28
- UpdateQuantityResponse,
29
- UpdateQuantityRequest
30
- >({
31
- query: (body) => ({
32
- url: buildClientRequestUrl(basket.getBasket, {
33
- contentType: 'application/json'
34
- }),
35
- method: 'PUT',
36
- body
37
- })
38
- }),
39
- clearBasket: build.mutation<Basket, void>({
40
- query: (body) => ({
41
- url: buildClientRequestUrl(basket.getBasket, {
42
- contentType: 'application/json'
43
- }),
44
- method: 'DELETE',
45
- body
46
- }),
47
- transformResponse: (response: { basket: Basket }) => response.basket,
48
- invalidatesTags: ['Basket']
49
- }),
50
- applyVoucherCode: build.mutation<Basket, { voucher_code: string }>({
51
- query: (body) => ({
52
- url: buildClientRequestUrl(basket.getBasket, {
53
- contentType: 'application/json'
54
- }),
55
- method: 'PATCH',
56
- body
57
- }),
58
- transformResponse: (response: { basket: Basket }) => response.basket
59
- }),
60
- removeVoucherCode: build.mutation<Basket, void>({
61
- query: () => ({
62
- url: buildClientRequestUrl(basket.getBasket, {
63
- contentType: 'application/json'
64
- }),
65
- method: 'PATCH',
66
- body: {
67
- remove_voucher_code: true
68
- }
69
- }),
70
- transformResponse: (response: { basket: Basket }) => response.basket
71
- })
72
- }),
73
- overrideExisting: true
74
- });
75
-
76
- export const {
77
- useGetBasketQuery,
78
- useUpdateQuantityMutation,
79
- useClearBasketMutation,
80
- useApplyVoucherCodeMutation,
81
- useRemoveVoucherCodeMutation
82
- } = basketApi;
1
+ import { api } from './api';
2
+ import { Basket } from '../../types';
3
+ import { buildClientRequestUrl } from '../../utils';
4
+ import { basket } from '../urls';
5
+
6
+ export type UpdateQuantityResponse = {
7
+ basket: Basket;
8
+ osessionid: string;
9
+ };
10
+
11
+ export type UpdateQuantityRequest = {
12
+ product: number;
13
+ quantity: number;
14
+ attributes: any;
15
+ };
16
+
17
+ export const basketApi = api.injectEndpoints({
18
+ endpoints: (build) => ({
19
+ getBasket: build.query<Basket, void>({
20
+ query: () =>
21
+ buildClientRequestUrl(basket.getBasket, {
22
+ contentType: 'application/json'
23
+ }),
24
+ transformResponse: (response: { basket: Basket }) => response.basket,
25
+ providesTags: ['Basket']
26
+ }),
27
+ updateQuantity: build.mutation<
28
+ UpdateQuantityResponse,
29
+ UpdateQuantityRequest
30
+ >({
31
+ query: (body) => ({
32
+ url: buildClientRequestUrl(basket.getBasket, {
33
+ contentType: 'application/json'
34
+ }),
35
+ method: 'PUT',
36
+ body
37
+ })
38
+ }),
39
+ clearBasket: build.mutation<Basket, void>({
40
+ query: (body) => ({
41
+ url: buildClientRequestUrl(basket.getBasket, {
42
+ contentType: 'application/json'
43
+ }),
44
+ method: 'DELETE',
45
+ body
46
+ }),
47
+ transformResponse: (response: { basket: Basket }) => response.basket,
48
+ invalidatesTags: ['Basket']
49
+ }),
50
+ applyVoucherCode: build.mutation<Basket, { voucher_code: string }>({
51
+ query: (body) => ({
52
+ url: buildClientRequestUrl(basket.getBasket, {
53
+ contentType: 'application/json'
54
+ }),
55
+ method: 'PATCH',
56
+ body
57
+ }),
58
+ transformResponse: (response: { basket: Basket }) => response.basket
59
+ }),
60
+ removeVoucherCode: build.mutation<Basket, void>({
61
+ query: () => ({
62
+ url: buildClientRequestUrl(basket.getBasket, {
63
+ contentType: 'application/json'
64
+ }),
65
+ method: 'PATCH',
66
+ body: {
67
+ remove_voucher_code: true
68
+ }
69
+ }),
70
+ transformResponse: (response: { basket: Basket }) => response.basket
71
+ })
72
+ }),
73
+ overrideExisting: true
74
+ });
75
+
76
+ export const {
77
+ useGetBasketQuery,
78
+ useUpdateQuantityMutation,
79
+ useClearBasketMutation,
80
+ useApplyVoucherCodeMutation,
81
+ useRemoveVoucherCodeMutation
82
+ } = basketApi;
@@ -1,101 +1,101 @@
1
- import {
2
- EmailSubscriptionType,
3
- MenuItemType,
4
- WidgetResultType
5
- } from '../../types';
6
- import { buildClientRequestUrl } from '../../utils';
7
- import { misc, widgets } from '../urls';
8
- import { api } from './api';
9
-
10
- type CategoryExtraType = {
11
- category_id: number;
12
- parent_categories: Array<string>;
13
- };
14
-
15
- type ProductExtraType = {
16
- image: string;
17
- price: number;
18
- product_type: string;
19
- retail_price: number;
20
- };
21
-
22
- export interface AutocompleteResponse {
23
- groups: Array<{
24
- entries: Array<{
25
- extra: CategoryExtraType & ProductExtraType;
26
- label: string;
27
- suggestion_type: string;
28
- url: string;
29
- }>;
30
- suggestion_type: 'Category' | 'Product';
31
- }>;
32
- }
33
-
34
- export interface GetLanguageResponse {
35
- active_language: string;
36
- default_language: string;
37
- available_languages: {
38
- [key: string]: string;
39
- };
40
- }
41
-
42
- export interface SetLanguageResponse {
43
- success: boolean;
44
- }
45
-
46
- export const miscApi = api.injectEndpoints({
47
- endpoints: (builder) => ({
48
- autocomplete: builder.query<AutocompleteResponse, string>({
49
- query: (query: string) => ({
50
- url: buildClientRequestUrl(`${misc.autocomplete}?search_text=${query}`)
51
- })
52
- }),
53
- emailSubscription: builder.mutation<void, EmailSubscriptionType>({
54
- query: (body) => ({
55
- url: buildClientRequestUrl(misc.emailSubscription, {
56
- contentType: 'application/json'
57
- }),
58
- method: 'POST',
59
- body
60
- })
61
- }),
62
- setLanguage: builder.mutation<any, { language: string }>({
63
- query: (body) => ({
64
- url: buildClientRequestUrl('/i18n/setlang', {
65
- useFormData: true,
66
- responseType: 'text'
67
- }),
68
- method: 'POST',
69
- body
70
- }),
71
- transformResponse: (response, meta) => {
72
- return {
73
- success: meta.response.status === 200,
74
- osessionid: meta.response.headers.get('osessionid')
75
- };
76
- }
77
- }),
78
- getWidget: builder.query<WidgetResultType<any>, string>({
79
- query: (slug: string) => ({
80
- url: buildClientRequestUrl(widgets.getWidget(slug))
81
- })
82
- }),
83
- getMenu: builder.query<MenuItemType[], number>({
84
- query: (depth) => ({
85
- url: buildClientRequestUrl(misc.menus(depth))
86
- }),
87
- transformResponse: (response: { menu: MenuItemType[] }) => {
88
- return response.menu;
89
- }
90
- })
91
- }),
92
- overrideExisting: true
93
- });
94
-
95
- export const {
96
- useAutocompleteQuery,
97
- useEmailSubscriptionMutation,
98
- useSetLanguageMutation,
99
- useGetWidgetQuery,
100
- useGetMenuQuery
101
- } = miscApi;
1
+ import {
2
+ EmailSubscriptionType,
3
+ MenuItemType,
4
+ WidgetResultType
5
+ } from '../../types';
6
+ import { buildClientRequestUrl } from '../../utils';
7
+ import { misc, widgets } from '../urls';
8
+ import { api } from './api';
9
+
10
+ type CategoryExtraType = {
11
+ category_id: number;
12
+ parent_categories: Array<string>;
13
+ };
14
+
15
+ type ProductExtraType = {
16
+ image: string;
17
+ price: number;
18
+ product_type: string;
19
+ retail_price: number;
20
+ };
21
+
22
+ export interface AutocompleteResponse {
23
+ groups: Array<{
24
+ entries: Array<{
25
+ extra: CategoryExtraType & ProductExtraType;
26
+ label: string;
27
+ suggestion_type: string;
28
+ url: string;
29
+ }>;
30
+ suggestion_type: 'Category' | 'Product';
31
+ }>;
32
+ }
33
+
34
+ export interface GetLanguageResponse {
35
+ active_language: string;
36
+ default_language: string;
37
+ available_languages: {
38
+ [key: string]: string;
39
+ };
40
+ }
41
+
42
+ export interface SetLanguageResponse {
43
+ success: boolean;
44
+ }
45
+
46
+ export const miscApi = api.injectEndpoints({
47
+ endpoints: (builder) => ({
48
+ autocomplete: builder.query<AutocompleteResponse, string>({
49
+ query: (query: string) => ({
50
+ url: buildClientRequestUrl(`${misc.autocomplete}?search_text=${query}`)
51
+ })
52
+ }),
53
+ emailSubscription: builder.mutation<void, EmailSubscriptionType>({
54
+ query: (body) => ({
55
+ url: buildClientRequestUrl(misc.emailSubscription, {
56
+ contentType: 'application/json'
57
+ }),
58
+ method: 'POST',
59
+ body
60
+ })
61
+ }),
62
+ setLanguage: builder.mutation<any, { language: string }>({
63
+ query: (body) => ({
64
+ url: buildClientRequestUrl('/i18n/setlang', {
65
+ useFormData: true,
66
+ responseType: 'text'
67
+ }),
68
+ method: 'POST',
69
+ body
70
+ }),
71
+ transformResponse: (response, meta) => {
72
+ return {
73
+ success: meta.response.status === 200,
74
+ osessionid: meta.response.headers.get('osessionid')
75
+ };
76
+ }
77
+ }),
78
+ getWidget: builder.query<WidgetResultType<any>, string>({
79
+ query: (slug: string) => ({
80
+ url: buildClientRequestUrl(widgets.getWidget(slug))
81
+ })
82
+ }),
83
+ getMenu: builder.query<MenuItemType[], number>({
84
+ query: (depth) => ({
85
+ url: buildClientRequestUrl(misc.menus(depth))
86
+ }),
87
+ transformResponse: (response: { menu: MenuItemType[] }) => {
88
+ return response.menu;
89
+ }
90
+ })
91
+ }),
92
+ overrideExisting: true
93
+ });
94
+
95
+ export const {
96
+ useAutocompleteQuery,
97
+ useEmailSubscriptionMutation,
98
+ useSetLanguageMutation,
99
+ useGetWidgetQuery,
100
+ useGetMenuQuery
101
+ } = miscApi;
@@ -1,89 +1,89 @@
1
- import {
2
- Basket,
3
- FindInStoreFormType,
4
- ProductResult,
5
- StockResultType
6
- } from '../../types';
7
- import { buildClientRequestUrl } from '../../utils';
8
- import { api } from './api';
9
- import { product } from '../urls';
10
-
11
- export type AddProductResponse = {
12
- basket: Basket;
13
- osessionid: string;
14
- };
15
-
16
- export type AddProductRequest = {
17
- product: number;
18
- quantity: number;
19
- attributes: any;
20
- };
21
-
22
- type GetProduct = {
23
- pk: number;
24
- searchParams?: URLSearchParams;
25
- groupProduct?: boolean;
26
- [key: string]: any;
27
- };
28
-
29
- export const productApi = api.injectEndpoints({
30
- endpoints: (build) => ({
31
- getProductByPk: build.query<ProductResult, number>({
32
- query: (pk) => ({
33
- url: buildClientRequestUrl(product.getProductByPk(pk))
34
- })
35
- }),
36
- getProductByParams: build.query<ProductResult, GetProduct>({
37
- query: ({ pk, searchParams, groupProduct, ...params }) => {
38
- let url = groupProduct
39
- ? product.getGroupProductByPk(pk)
40
- : product.getProductByPk(pk);
41
-
42
- if (params) {
43
- url = `${url}?${new URLSearchParams(params).toString()}`;
44
- }
45
-
46
- return {
47
- url: buildClientRequestUrl(url)
48
- };
49
- }
50
- }),
51
- getRetailStoreStock: build.mutation<StockResultType, FindInStoreFormType>({
52
- query: (body) => {
53
- const { productPk, queryString } = body;
54
- return {
55
- url: buildClientRequestUrl(
56
- product.getRetailStoreStock(productPk, queryString),
57
- {
58
- contentType: 'application/json'
59
- }
60
- ),
61
- method: 'GET'
62
- };
63
- }
64
- }),
65
- addProduct: build.mutation<AddProductResponse, AddProductRequest>({
66
- query: (body) => ({
67
- url: buildClientRequestUrl(product.addProduct, {
68
- contentType: 'application/json'
69
- }),
70
- method: 'POST',
71
- body
72
- })
73
- }),
74
- getInstallments: build.query<any, any>({
75
- query: (productPk) => ({
76
- url: buildClientRequestUrl(product.installments(productPk))
77
- })
78
- })
79
- }),
80
- overrideExisting: true
81
- });
82
-
83
- export const {
84
- useAddProductMutation,
85
- useGetProductByPkQuery,
86
- useGetRetailStoreStockMutation,
87
- useGetInstallmentsQuery,
88
- useGetProductByParamsQuery
89
- } = productApi;
1
+ import {
2
+ Basket,
3
+ FindInStoreFormType,
4
+ ProductResult,
5
+ StockResultType
6
+ } from '../../types';
7
+ import { buildClientRequestUrl } from '../../utils';
8
+ import { api } from './api';
9
+ import { product } from '../urls';
10
+
11
+ export type AddProductResponse = {
12
+ basket: Basket;
13
+ osessionid: string;
14
+ };
15
+
16
+ export type AddProductRequest = {
17
+ product: number;
18
+ quantity: number;
19
+ attributes: any;
20
+ };
21
+
22
+ type GetProduct = {
23
+ pk: number;
24
+ searchParams?: URLSearchParams;
25
+ groupProduct?: boolean;
26
+ [key: string]: any;
27
+ };
28
+
29
+ export const productApi = api.injectEndpoints({
30
+ endpoints: (build) => ({
31
+ getProductByPk: build.query<ProductResult, number>({
32
+ query: (pk) => ({
33
+ url: buildClientRequestUrl(product.getProductByPk(pk))
34
+ })
35
+ }),
36
+ getProductByParams: build.query<ProductResult, GetProduct>({
37
+ query: ({ pk, searchParams, groupProduct, ...params }) => {
38
+ let url = groupProduct
39
+ ? product.getGroupProductByPk(pk)
40
+ : product.getProductByPk(pk);
41
+
42
+ if (params) {
43
+ url = `${url}?${new URLSearchParams(params).toString()}`;
44
+ }
45
+
46
+ return {
47
+ url: buildClientRequestUrl(url)
48
+ };
49
+ }
50
+ }),
51
+ getRetailStoreStock: build.mutation<StockResultType, FindInStoreFormType>({
52
+ query: (body) => {
53
+ const { productPk, queryString } = body;
54
+ return {
55
+ url: buildClientRequestUrl(
56
+ product.getRetailStoreStock(productPk, queryString),
57
+ {
58
+ contentType: 'application/json'
59
+ }
60
+ ),
61
+ method: 'GET'
62
+ };
63
+ }
64
+ }),
65
+ addProduct: build.mutation<AddProductResponse, AddProductRequest>({
66
+ query: (body) => ({
67
+ url: buildClientRequestUrl(product.addProduct, {
68
+ contentType: 'application/json'
69
+ }),
70
+ method: 'POST',
71
+ body
72
+ })
73
+ }),
74
+ getInstallments: build.query<any, any>({
75
+ query: (productPk) => ({
76
+ url: buildClientRequestUrl(product.installments(productPk))
77
+ })
78
+ })
79
+ }),
80
+ overrideExisting: true
81
+ });
82
+
83
+ export const {
84
+ useAddProductMutation,
85
+ useGetProductByPkQuery,
86
+ useGetRetailStoreStockMutation,
87
+ useGetInstallmentsQuery,
88
+ useGetProductByParamsQuery
89
+ } = productApi;