@meeovi/layer-commerce 1.0.6 → 1.0.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.
Files changed (323) hide show
  1. package/package.json +9 -2
  2. package/app/components/catalog/product/ProductAccordion/ProductAccordion.vue +0 -39
  3. package/app/components/catalog/product/ProductAccordion/__tests__/ProductAccordion.spec.ts +0 -15
  4. package/app/components/catalog/product/ProductAccordion/types.ts +0 -5
  5. package/app/components/catalog/product/ProductProperties/ProductProperties.vue +0 -50
  6. package/app/components/catalog/product/ProductProperties/__tests__/ProductProperties.spec.ts +0 -15
  7. package/app/components/catalog/product/ProductProperties/types.ts +0 -5
  8. package/app/components/catalog/product/ProductSlider/ProductSlider.vue +0 -28
  9. package/app/components/catalog/product/ProductSlider/__tests__/ProductSlider.spec.ts +0 -14
  10. package/app/components/catalog/product/ProductSlider/types.ts +0 -7
  11. package/app/components/catalog/product/RecommendedProducts/RecommendedProducts.vue +0 -12
  12. package/app/components/catalog/product/RecommendedProducts/types.ts +0 -5
  13. package/app/components/catalog/product/RenderContentProductSlider/RenderContentProductSlider.vue +0 -11
  14. package/app/components/catalog/product/add-attribute.vue +0 -54
  15. package/app/components/catalog/product/add-product-type.vue +0 -54
  16. package/app/components/catalog/product/add-product.vue +0 -53
  17. package/app/components/catalog/product/add-showcase.vue +0 -52
  18. package/app/components/catalog/product/add-station.vue +0 -54
  19. package/app/components/catalog/product/bestsellers.vue +0 -57
  20. package/app/components/catalog/product/bidding.vue +0 -93
  21. package/app/components/catalog/product/colorOptions.vue +0 -58
  22. package/app/components/catalog/product/deals.vue +0 -46
  23. package/app/components/catalog/product/exclusives.vue +0 -56
  24. package/app/components/catalog/product/featuredproducts.vue +0 -57
  25. package/app/components/catalog/product/giftCard.vue +0 -63
  26. package/app/components/catalog/product/latestproducts.vue +0 -46
  27. package/app/components/catalog/product/productCard.vue +0 -105
  28. package/app/components/catalog/product/productCompare.vue +0 -60
  29. package/app/components/catalog/product/productCompareTable.vue +0 -441
  30. package/app/components/catalog/product/productDetails.vue +0 -126
  31. package/app/components/catalog/product/productFaqs.vue +0 -17
  32. package/app/components/catalog/product/productGallery.vue +0 -16
  33. package/app/components/catalog/product/productQty.vue +0 -54
  34. package/app/components/catalog/product/productReviews.vue +0 -56
  35. package/app/components/catalog/product/productSpecs.vue +0 -116
  36. package/app/components/catalog/product/radiostation.vue +0 -36
  37. package/app/components/catalog/product/recentlyviewed.vue +0 -43
  38. package/app/components/catalog/product/relatedbrands.vue +0 -54
  39. package/app/components/catalog/product/relatedproducts.vue +0 -43
  40. package/app/components/catalog/product/relatedstations.vue +0 -40
  41. package/app/components/catalog/product/shippingOptions.vue +0 -41
  42. package/app/components/catalog/product/sizeOptions.vue +0 -42
  43. package/app/components/catalog/product/update-attribute-set.vue +0 -209
  44. package/app/components/catalog/product/update-attribute.vue +0 -118
  45. package/app/components/catalog/product/update-product.vue +0 -372
  46. package/app/components/catalog/product/update-showcase.vue +0 -153
  47. package/app/components/catalog/shops/relatedstores.vue +0 -37
  48. package/app/components/catalog/shops/restaurant.vue +0 -66
  49. package/app/components/catalog/shops/stores.vue +0 -44
  50. package/app/components/catalog/vendor/README.md +0 -3
  51. package/app/components/catalog/vendor/blocks/biggestcustomers.vue +0 -33
  52. package/app/components/catalog/vendor/blocks/lowestselling.vue +0 -33
  53. package/app/components/catalog/vendor/blocks/topcategories.vue +0 -33
  54. package/app/components/catalog/vendor/blocks/topproducts.vue +0 -27
  55. package/app/components/catalog/vendor/pages/attributes.vue +0 -43
  56. package/app/components/catalog/vendor/pages/commissions.vue +0 -43
  57. package/app/components/catalog/vendor/pages/crm.vue +0 -67
  58. package/app/components/catalog/vendor/pages/dashboard.vue +0 -46
  59. package/app/components/catalog/vendor/pages/emails.vue +0 -43
  60. package/app/components/catalog/vendor/pages/enquiries.vue +0 -43
  61. package/app/components/catalog/vendor/pages/invoices.vue +0 -43
  62. package/app/components/catalog/vendor/pages/orders.vue +0 -68
  63. package/app/components/catalog/vendor/pages/products.vue +0 -55
  64. package/app/components/catalog/vendor/pages/reviews.vue +0 -48
  65. package/app/components/catalog/vendor/pages/shipments.vue +0 -43
  66. package/app/components/catalog/vendor/pages/stores.vue +0 -43
  67. package/app/components/categories/chart/[id].vue +0 -200
  68. package/app/components/categories/chart/add-chart.vue +0 -142
  69. package/app/components/categories/chart/chart.vue +0 -82
  70. package/app/components/categories/chart/monthlyChart.vue +0 -46
  71. package/app/components/categories/chart/weeklyChart.vue +0 -46
  72. package/app/components/categories/chart/yearlyChart.vue +0 -46
  73. package/app/components/categories/charts.vue +0 -118
  74. package/app/components/categories/deals.vue +0 -101
  75. package/app/components/categories/eats.vue +0 -49
  76. package/app/components/categories/restaurants.vue +0 -26
  77. package/app/components/categories/station/[id].vue +0 -72
  78. package/app/components/categories/stations.vue +0 -124
  79. package/app/components/categories/time/time.vue +0 -63
  80. package/app/components/categories/travel.vue +0 -75
  81. package/app/components/categories/weather/weather.vue +0 -44
  82. package/app/components/content/blocks/breadcrumbs.vue +0 -0
  83. package/app/components/content/blocks/currencySwitcher.vue +0 -0
  84. package/app/components/content/blocks/languageSwitcher.vue +0 -0
  85. package/app/components/content/blocks/videoproduct.vue +0 -9
  86. package/app/components/content/pages/checkout.vue +0 -118
  87. package/app/components/content/pages/meeoviGlobal.vue +0 -68
  88. package/app/components/content/pages/pickup-locations.vue +0 -238
  89. package/app/components/content/pages/showcases.vue +0 -90
  90. package/app/components/content/pages/success.vue +0 -60
  91. package/app/components/marketing/add-brand.vue +0 -54
  92. package/app/components/marketing/add-incentive.vue +0 -54
  93. package/app/components/marketing/promotions/giftcards.vue +0 -102
  94. package/app/components/marketing/promotions/subscriptions.vue +0 -121
  95. package/app/components/marketing/update-incentive.vue +0 -326
  96. package/app/components/menus/lowernav.vue +0 -78
  97. package/app/components/partials/LocaleSelector.vue +0 -24
  98. package/app/components/partials/ShoppingCart.vue +0 -128
  99. package/app/components/partials/StripePayment.vue +0 -149
  100. package/app/components/partials/addToCartBtn.vue +0 -40
  101. package/app/components/partials/cartItem.vue +0 -124
  102. package/app/components/partials/checkoutButton.vue +0 -44
  103. package/app/components/partials/compareBtn.vue +0 -68
  104. package/app/components/partials/ratings.vue +0 -13
  105. package/app/components/partials/store/CurrencySelector.vue +0 -133
  106. package/app/components/partials/store/StoreSwitcher.vue +0 -13
  107. package/app/components/placeholders/Comments.vue +0 -15
  108. package/app/components/placeholders/CreateListBtn.vue +0 -7
  109. package/app/components/placeholders/Event.vue +0 -9
  110. package/app/components/placeholders/ListShowcases.vue +0 -9
  111. package/app/components/placeholders/Short.vue +0 -9
  112. package/app/components/placeholders/Space.vue +0 -9
  113. package/app/components/placeholders/Tag.vue +0 -7
  114. package/app/components/related/brandCard.vue +0 -41
  115. package/app/components/related/incentiveCard.vue +0 -44
  116. package/app/components/related/invoiceCard.vue +0 -43
  117. package/app/components/related/orderCard.vue +0 -43
  118. package/app/components/related/relatedproducts.vue +0 -17
  119. package/app/components/sales/CartPageContent/CartPageContent.vue +0 -37
  120. package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +0 -50
  121. package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +0 -16
  122. package/app/components/sales/CheckoutAddress/types.ts +0 -16
  123. package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +0 -68
  124. package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +0 -14
  125. package/app/components/sales/CheckoutPayment/types.ts +0 -12
  126. package/app/components/sales/OrderSummary/OrderSummary.vue +0 -57
  127. package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +0 -52
  128. package/app/components/sales/OrderSummary/types.ts +0 -5
  129. package/app/components/sales/incentives.vue +0 -223
  130. package/app/components/sales/invoices.vue +0 -107
  131. package/app/components/sales/orders.vue +0 -378
  132. package/app/components/sales/shipments.vue +0 -65
  133. package/app/components/sales/transactions.vue +0 -109
  134. package/app/components/shop/add-shop.vue +0 -54
  135. package/app/components/shop/cart/cartItem.vue +0 -182
  136. package/app/components/shop/cart/checkout.vue +0 -415
  137. package/app/components/shop/checkout/StripeCardElement.vue +0 -206
  138. package/app/components/shop/checkout/StripeCheckout.vue +0 -49
  139. package/app/components/shop/checkout/addressBilling.vue +0 -263
  140. package/app/components/shop/checkout/addressShipping.vue +0 -175
  141. package/app/components/shop/checkout/cart/ProductItem.vue +0 -56
  142. package/app/components/shop/checkout/cart/PromotionItem.vue +0 -53
  143. package/app/composables/_types.ts +0 -18
  144. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  145. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  146. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  147. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  148. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  149. package/app/composables/adapters/abstract/productAdapter.ts +0 -7
  150. package/app/composables/cart/registry.ts +0 -20
  151. package/app/composables/cart/types.ts +0 -18
  152. package/app/composables/cart/useCart.ts +0 -15
  153. package/app/composables/config.ts +0 -19
  154. package/app/composables/defs/apiDefinitions.ts +0 -55
  155. package/app/composables/defs/extension.feature +0 -40
  156. package/app/composables/defs/extension.mocks.ts +0 -39
  157. package/app/composables/defs/extension.test.ts +0 -280
  158. package/app/composables/defs/extension.ts +0 -236
  159. package/app/composables/defs/index.ts +0 -3
  160. package/app/composables/defs/types.ts +0 -136
  161. package/app/composables/domain/cart.ts +0 -0
  162. package/app/composables/domain/category.ts +0 -0
  163. package/app/composables/domain/order.ts +0 -0
  164. package/app/composables/domain/price.ts +0 -0
  165. package/app/composables/domain/product.ts +0 -8
  166. package/app/composables/domain/reward.ts +0 -0
  167. package/app/composables/domain/transactions.ts +0 -0
  168. package/app/composables/helpers/contextualizedNormalizers.feature +0 -14
  169. package/app/composables/helpers/contextualizedNormalizers.test.ts +0 -85
  170. package/app/composables/helpers/contextualizedNormalizers.ts +0 -20
  171. package/app/composables/helpers/index.ts +0 -1
  172. package/app/composables/index.ts +0 -6
  173. package/app/composables/methods/auth.ts +0 -83
  174. package/app/composables/methods/cart.ts +0 -119
  175. package/app/composables/methods/category.ts +0 -27
  176. package/app/composables/methods/checkout.ts +0 -54
  177. package/app/composables/methods/customer.ts +0 -52
  178. package/app/composables/methods/helpers.ts +0 -5
  179. package/app/composables/methods/index.ts +0 -75
  180. package/app/composables/methods/order.ts +0 -39
  181. package/app/composables/methods/product.ts +0 -95
  182. package/app/composables/methods/settings.ts +0 -16
  183. package/app/composables/models/cart.ts +0 -95
  184. package/app/composables/models/category.ts +0 -13
  185. package/app/composables/models/checkout.ts +0 -17
  186. package/app/composables/models/customer.ts +0 -16
  187. package/app/composables/models/facets.ts +0 -25
  188. package/app/composables/models/index.ts +0 -94
  189. package/app/composables/models/order.ts +0 -43
  190. package/app/composables/models/product.ts +0 -73
  191. package/app/composables/models/shared.ts +0 -75
  192. package/app/composables/products/registry.ts +0 -20
  193. package/app/composables/products/types.ts +0 -13
  194. package/app/composables/products/useEvents.ts +0 -0
  195. package/app/composables/products/useGiftCards.ts +0 -0
  196. package/app/composables/products/useProducts.ts +0 -12
  197. package/app/composables/products/useSubscriptions.ts +0 -0
  198. package/app/composables/registry.ts +0 -21
  199. package/app/composables/stores/cart.ts +0 -218
  200. package/app/composables/stores/cartStore.ts +0 -300
  201. package/app/composables/stores/checkout.ts +0 -19
  202. package/app/composables/stores/compare.ts +0 -65
  203. package/app/composables/stores/currency.js +0 -29
  204. package/app/composables/stores/digital-products.js +0 -11
  205. package/app/composables/stores/index.js +0 -0
  206. package/app/composables/stores/orders.ts +0 -161
  207. package/app/composables/stores/product.ts +0 -26
  208. package/app/composables/stores/productList.ts +0 -0
  209. package/app/composables/stores/productListInfo.ts +0 -0
  210. package/app/composables/stores/products.ts +0 -112
  211. package/app/composables/stores/recentlyViewedProducts.ts +0 -0
  212. package/app/composables/stores/review.ts +0 -25
  213. package/app/composables/stores/storeInPickUp.ts +0 -22
  214. package/app/composables/stores/user.ts +0 -20
  215. package/app/composables/stores/wishlist.ts +0 -19
  216. package/app/composables/types/Order.type.ts +0 -181
  217. package/app/composables/types/index.ts +0 -285
  218. package/app/composables/types/product.ts +0 -14
  219. package/app/composables/useBreakpoints/index.ts +0 -1
  220. package/app/composables/useBreakpoints/useBreakpoints.ts +0 -28
  221. package/app/composables/useCart/__tests__/useCart.spec.ts +0 -11
  222. package/app/composables/useCart/index.ts +0 -1
  223. package/app/composables/useCart/types.ts +0 -17
  224. package/app/composables/useCart/useCart.ts +0 -46
  225. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +0 -11
  226. package/app/composables/useCartShippingMethods/index.ts +0 -1
  227. package/app/composables/useCartShippingMethods/types.ts +0 -17
  228. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +0 -47
  229. package/app/composables/useCatalog.ts +0 -64
  230. package/app/composables/useContent/index.ts +0 -1
  231. package/app/composables/useContent/types.ts +0 -44
  232. package/app/composables/useContent/useContent.ts +0 -45
  233. package/app/composables/useContent.ts +0 -57
  234. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +0 -25
  235. package/app/composables/useCustomer/index.ts +0 -2
  236. package/app/composables/useCustomer/types.ts +0 -17
  237. package/app/composables/useCustomer/useCustomer.ts +0 -40
  238. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +0 -11
  239. package/app/composables/useCustomerAddress/index.ts +0 -2
  240. package/app/composables/useCustomerAddress/types.ts +0 -17
  241. package/app/composables/useCustomerAddress/useCustomerAddress.ts +0 -55
  242. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +0 -11
  243. package/app/composables/useCustomerOrder/adress.ts +0 -10
  244. package/app/composables/useCustomerOrder/index.ts +0 -2
  245. package/app/composables/useCustomerOrder/product.ts +0 -37
  246. package/app/composables/useCustomerOrder/types.ts +0 -40
  247. package/app/composables/useCustomerOrder/useCustomerOrder.ts +0 -63
  248. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +0 -11
  249. package/app/composables/useCustomerOrders/index.ts +0 -2
  250. package/app/composables/useCustomerOrders/types.ts +0 -20
  251. package/app/composables/useCustomerOrders/useCustomerOrders.ts +0 -56
  252. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +0 -11
  253. package/app/composables/useCustomerReturns/index.ts +0 -2
  254. package/app/composables/useCustomerReturns/types.ts +0 -17
  255. package/app/composables/useCustomerReturns/useCustomerReturns.ts +0 -41
  256. package/app/composables/useHandleError/index.ts +0 -1
  257. package/app/composables/useHandleError/types.ts +0 -11
  258. package/app/composables/useHandleError/useHandleError.ts +0 -27
  259. package/app/composables/usePageTitle.ts +0 -16
  260. package/app/composables/useProduct/index.ts +0 -2
  261. package/app/composables/useProduct/types.ts +0 -17
  262. package/app/composables/useProduct/useProduct.ts +0 -42
  263. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +0 -31
  264. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +0 -14
  265. package/app/composables/useProductAttribute/index.ts +0 -1
  266. package/app/composables/useProductAttribute/useProductAttribute.ts +0 -37
  267. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +0 -12
  268. package/app/composables/useProductRecommended/index.ts +0 -1
  269. package/app/composables/useProductRecommended/types.ts +0 -17
  270. package/app/composables/useProductRecommended/useProductRecommended.ts +0 -43
  271. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +0 -20
  272. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +0 -22
  273. package/app/composables/useProductReviews/index.ts +0 -2
  274. package/app/composables/useProductReviews/types.ts +0 -17
  275. package/app/composables/useProductReviews/useProductReviews.ts +0 -46
  276. package/app/composables/useProducts/__tests__/useProducts.spec.ts +0 -11
  277. package/app/composables/useProducts/types.ts +0 -22
  278. package/app/composables/useProducts/useProducts.ts +0 -41
  279. package/app/composables/utils/countryList.ts +0 -14
  280. package/app/composables/utils/currency.js +0 -56
  281. package/app/composables/utils/glossary.ts +0 -0
  282. package/app/composables/utils/importExport.ts +0 -0
  283. package/app/composables/utils/index.js +0 -0
  284. package/app/composables/utils/print.ts +0 -0
  285. package/app/composables/utils/shopThemes.ts +0 -0
  286. package/app/composables/utils/statistics.ts +0 -0
  287. package/app/composables/utils/stock.ts +0 -0
  288. package/app/composables/utils/stripe.ts +0 -16
  289. package/app/composables/utils/taxation.ts +0 -0
  290. package/app/composables/utils/tellFriends.ts +0 -0
  291. package/app/composables/validationRules/index.ts +0 -1
  292. package/app/composables/validationRules/password.feature +0 -67
  293. package/app/composables/validationRules/password.test.ts +0 -89
  294. package/app/composables/validationRules/password.ts +0 -25
  295. package/app/composables/vendors/index.ts +0 -0
  296. package/app/composables/vendors/registry.ts +0 -0
  297. package/app/composables/vendors/useAffiliates.ts +0 -0
  298. package/app/composables/vendors/useCommission.ts +0 -0
  299. package/app/modules/vue-head/composables/useHead.ts +0 -3
  300. package/app/pages/brand/[...slug].vue +0 -92
  301. package/app/pages/brands.vue +0 -90
  302. package/app/pages/cart.vue +0 -142
  303. package/app/pages/compare.vue +0 -166
  304. package/app/pages/departments/[...slug].vue +0 -385
  305. package/app/pages/departments/category/[...slug].vue +0 -135
  306. package/app/pages/incentive/[...id].vue +0 -66
  307. package/app/pages/invoice/[id].vue +0 -309
  308. package/app/pages/order/[id].vue +0 -327
  309. package/app/pages/product/[...id].vue +0 -309
  310. package/app/pages/product/showcases/index.vue +0 -86
  311. package/app/pages/shipment/[...id].vue +0 -176
  312. package/app/pages/shop/[...slug].vue +0 -158
  313. package/app/pages/shops.vue +0 -76
  314. package/app/pages/subscription/[...id].vue +0 -147
  315. package/app/pages/transaction/[...id].vue +0 -74
  316. package/app/types/shims-imports.d.ts +0 -13
  317. package/app/utils/client.ts +0 -26
  318. package/app/utils/index.ts +0 -53
  319. package/app/utils/normalizer.ts +0 -23
  320. package/app/utils/normalizers/magento.ts +0 -29
  321. package/app/utils/normalizers/shopify.ts +0 -29
  322. package/global.d.ts +0 -149
  323. package/tsconfig.json +0 -31
@@ -1,236 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- type ApiMethods = Record<string, (...args: any[]) => any>;
3
-
4
- interface ApiClientExtension {
5
- name: string;
6
- extendApiMethods?: Record<string, (...args: any[]) => any>;
7
- hooks?: (req: any, res: any) => any;
8
- isNamespaced?: boolean;
9
- }
10
- import { mergeDeepRight } from "ramda";
11
- import { toContextualizedNormalizers } from "../helpers";
12
- const Logger: any = console;
13
- import type {
14
- BaseNormalizerContext,
15
- CreateUnifiedExtensionParams,
16
- DefineAddCustomFields,
17
- GetAdditionalNormalizerContextConstraint,
18
- GetAdditionalNormalizerContextParams,
19
- NormalizersConstraint,
20
- UnifiedCmsConfig,
21
- UnifiedConfig,
22
- UnifiedExtensionContextConstraint,
23
- UnifiedExtensionFactoryParams,
24
- } from "./types";
25
-
26
- const CURRENCY_COOKIE = "vsf-currency";
27
- const LOCALE_COOKIE = "vsf-locale";
28
-
29
- /**
30
- * @description A factory function which builds the default normalizers and default API methods into unified extension.
31
- * It expects the type of the API methods, normalizers, and config as generics.
32
- *
33
- * @returns A `createUnifiedExtension` function which can be used by the user to create a unified extension.
34
- *
35
- * @example
36
- * ```ts
37
- * export const createUnifiedExtension = unifiedExtensionFactory<
38
- * typeof apiMethods,
39
- * Normalizers,
40
- * Config
41
- * >({
42
- * extendApiMethods: apiMethods,
43
- * normalizers,
44
- * });
45
- * ```
46
- */
47
- export function unifiedExtensionFactory<
48
- TApiMethods extends ApiMethods,
49
- TNormalizers extends NormalizersConstraint,
50
- TConfig extends UnifiedConfig,
51
- >(factoryParams: UnifiedExtensionFactoryParams<TApiMethods, TNormalizers>) {
52
- return function createUnifiedExtension<
53
- TAddCustomFieldsArray extends [
54
- DefineAddCustomFields<TNormalizers>,
55
- ...DefineAddCustomFields<TNormalizers>[],
56
- ],
57
- >(
58
- params: CreateUnifiedExtensionParams<TConfig, TApiMethods, TNormalizers, TAddCustomFieldsArray>,
59
- ) {
60
- const {
61
- extendApiMethods: defaultApiMethods,
62
- normalizers: defaultNormalizers,
63
- getAdditionalNormalizerContext,
64
- } = factoryParams;
65
- const baseNormalizers = { ...defaultNormalizers, ...params.normalizers.override };
66
- const normalizers = mergeNormalizers(baseNormalizers, params.normalizers.addCustomFields);
67
- const { config: extensionConfig, methods, isNamespaced = factoryParams.isNamespaced } = params;
68
-
69
- return {
70
- name: "unified",
71
- extendApiMethods: {
72
- ...defaultApiMethods,
73
- ...methods?.override,
74
- } as TApiMethods,
75
- hooks(req: any, res: any) {
76
- return {
77
- beforeCall({ args, configuration }: { args: any; configuration: any }) {
78
- if (!req.cookies[CURRENCY_COOKIE] && extensionConfig) {
79
- req.cookies[CURRENCY_COOKIE] = extensionConfig.defaultCurrency;
80
- }
81
- configuration.unified = extensionConfig;
82
- if (!configuration.normalizerContext) {
83
- configuration.normalizerContext = createNormalizerContext(
84
- normalizers,
85
- getAdditionalNormalizerContext,
86
- { req, res, config: configuration },
87
- );
88
- configuration.normalizerContext.currency =
89
- req.cookies?.[CURRENCY_COOKIE] ?? extensionConfig.defaultCurrency ?? "USD";
90
- }
91
-
92
- return args;
93
- },
94
- };
95
- },
96
- isNamespaced,
97
- normalizers,
98
- /**
99
- * @internal You shouldn't use this field. It's present only to infer the type of addCustomFields
100
- */
101
- _addCustomFields: {} as TAddCustomFieldsArray,
102
- } satisfies ApiClientExtension & Record<string, any>;
103
- };
104
- }
105
-
106
- /**
107
- * @description A factory function which builds the default normalizers and default API methods into unified extension.
108
- * It expects the type of the API methods, normalizers, and config as generics.
109
- *
110
- * @returns A Middleware extension which can be registered in the API client.
111
- *
112
- * @example
113
- * ```ts
114
- * export const createUnifiedExtension = createUnifiedCmsExtension({
115
- * extendApiMethods: {
116
- * getPage,
117
- * },
118
- * normalizers,
119
- * getAdditionalNormalizerContext: () => ({
120
- * documentToHtmlString,
121
- * }),
122
- * });
123
- * ```
124
- */
125
- export function createUnifiedCmsExtension<
126
- TApiMethods extends ApiMethods,
127
- TNormalizers extends NormalizersConstraint,
128
- >(params: UnifiedExtensionFactoryParams<TApiMethods, TNormalizers>) {
129
- const {
130
- extendApiMethods,
131
- normalizers: defaultNormalizers,
132
- getAdditionalNormalizerContext,
133
- isNamespaced = true,
134
- } = params;
135
-
136
- return {
137
- name: "unified",
138
- extendApiMethods,
139
- isNamespaced,
140
- hooks(req: any, res: any) {
141
- return {
142
- beforeCall({ args, configuration }: { args: any; configuration: any }) {
143
- if (!configuration.normalizerContext) {
144
- const unifiedConfig = configuration?.unified ?? ({} as UnifiedCmsConfig<TNormalizers>);
145
- const baseNormalizers = {
146
- ...defaultNormalizers,
147
- ...unifiedConfig.normalizers?.override,
148
- };
149
- const normalizers = mergeNormalizers(
150
- baseNormalizers,
151
- unifiedConfig.normalizers?.addCustomFields ?? [],
152
- );
153
-
154
- configuration.normalizerContext = createNormalizerContext(
155
- normalizers,
156
- getAdditionalNormalizerContext,
157
- { req, res, config: configuration },
158
- );
159
- }
160
- return args;
161
- },
162
- };
163
- },
164
- } satisfies ApiClientExtension;
165
- }
166
-
167
- /**
168
- * A helper function to get the normalizers from the context.
169
- * @param context Context passed to the API method
170
- * @returns normalizers
171
- *
172
- * @example
173
- * ```ts
174
- * const { normalizeProduct } = getNormalizers(context);
175
- * ```
176
- */
177
- export function getNormalizers<TContext extends UnifiedExtensionContextConstraint>(
178
- context: TContext,
179
- ): TContext["config"]["normalizerContext"]["normalizers"] {
180
- return context.config.normalizerContext.normalizers;
181
- }
182
-
183
- /**
184
- * A helper function to assign values to the normalizer context.
185
- * @param context Context passed to the API method
186
- * @param overrides Object with the values to override in the normalizer context
187
- * @returns void - it mutates the context
188
- *
189
- * @example
190
- * ```ts
191
- * assignToNormalizerContext(context, { locale: "de" });
192
- * ```
193
- */
194
- export function assignToNormalizerContext<TContext extends UnifiedExtensionContextConstraint>(
195
- context: TContext,
196
- overrides: Partial<TContext["config"]["normalizerContext"]>,
197
- ) {
198
- Object.assign(context.config.normalizerContext, overrides);
199
- }
200
-
201
- function createNormalizerContext<TNormalizers extends NormalizersConstraint>(
202
- normalizers: TNormalizers,
203
- getAdditionalNormalizerContext: GetAdditionalNormalizerContextConstraint,
204
- { req, res, config }: GetAdditionalNormalizerContextParams,
205
- ) {
206
- const logger = Logger;
207
- const normalizerContext: BaseNormalizerContext<TNormalizers> = {
208
- locale: req.cookies?.[LOCALE_COOKIE] ?? "en",
209
- ...getAdditionalNormalizerContext({ req, res, config }),
210
- logger,
211
- };
212
- normalizerContext.normalizers = toContextualizedNormalizers(normalizers, () => normalizerContext);
213
-
214
- return normalizerContext;
215
- }
216
-
217
- export function mergeNormalizers<TNormalizers extends NormalizersConstraint>(
218
- baseNormalizers: TNormalizers,
219
- addCustomFields: DefineAddCustomFields<TNormalizers>[],
220
- ): TNormalizers {
221
- const normalizers: any = { ...baseNormalizers };
222
-
223
- addCustomFields.forEach((customFieldsNormalizers) => {
224
- Object.entries(customFieldsNormalizers).forEach(([name, customFields]) => {
225
- const currentNormalizer = normalizers[name]!;
226
- if (normalizers[name] && customFields) {
227
- normalizers[name] = (input: any, context: any) =>
228
- mergeDeepRight(currentNormalizer(input, context), {
229
- $custom: customFields(input, context),
230
- });
231
- }
232
- });
233
- });
234
-
235
- return normalizers;
236
- }
@@ -1,3 +0,0 @@
1
- export * from "./apiDefinitions";
2
- export * from "./extension";
3
- export * from "./types";
@@ -1,136 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable no-use-before-define */
3
- type ApiMethods = Record<string, (...args: any[]) => any>;
4
- import type { MergeDeep } from "type-fest";
5
- import type { ContextualizedNormalizers } from "../helpers";
6
- import type { Maybe, SfCurrency, SfFacetType } from "../models";
7
-
8
- // Minimal local IntegrationContext replacement
9
- export interface IntegrationContext<CLIENT = any, CONFIG = any, API = any> {
10
- client: CLIENT;
11
- config: CONFIG;
12
- api: API;
13
- req?: any;
14
- res?: any;
15
- [x: string]: any;
16
- }
17
-
18
- export interface VSFLogger {
19
- debug(message?: any, ...args: any[]): void;
20
- info(message?: any, ...args: any[]): void;
21
- warn(message?: any, ...args: any[]): void;
22
- error(message?: any, ...args: any[]): void;
23
- }
24
- export interface UnifiedConfig {
25
- currencies?: SfCurrency[];
26
- defaultCurrency: SfCurrency;
27
- }
28
-
29
- export interface BaseNormalizerContext<TNormalizers extends NormalizersConstraint = any> {
30
- locale: string;
31
- currency: string;
32
- normalizers: ContextualizedNormalizers<TNormalizers>;
33
- logger: VSFLogger;
34
- }
35
-
36
- export type NormalizerConstraint<
37
- TNormalizerContext extends BaseNormalizerContext = BaseNormalizerContext,
38
- > = (rawData: any, context: TNormalizerContext) => any;
39
-
40
- export type NormalizersConstraint<TNormalizerContext extends BaseNormalizerContext = any> = Record<
41
- string,
42
- NormalizerConstraint<TNormalizerContext>
43
- >;
44
-
45
- export type UnifiedExtensionContextConstraint<
46
- TNormalizerContext extends BaseNormalizerContext = any,
47
- > = IntegrationContext & { config: { normalizerContext: TNormalizerContext } };
48
-
49
- export type GetFacetTypeFn<TInput> = (input: TInput) => Maybe<SfFacetType | string>;
50
- export type FilterFacetsFn<TInput> = (input: TInput) => boolean;
51
-
52
- export type GetAdditionalNormalizerContextParams<TConfig extends Record<string, any> = any> = {
53
- req: IntegrationContext["req"];
54
- res: IntegrationContext["res"];
55
- config: TConfig;
56
- };
57
-
58
- export type GetAdditionalNormalizerContextConstraint = (
59
- params: GetAdditionalNormalizerContextParams,
60
- ) => any;
61
-
62
- export type GetAdditionalNormalizerContext<
63
- TIntegrationContext extends IntegrationContext,
64
- TNormalizerContext extends BaseNormalizerContext,
65
- > = (
66
- params: GetAdditionalNormalizerContextParams<TIntegrationContext["config"]>,
67
- ) => Omit<TNormalizerContext, keyof BaseNormalizerContext>;
68
-
69
- export interface AddCustomFields {}
70
-
71
- export type InferAddCustomFieldsFromArray<
72
- TArray extends Record<string, (...args: any) => any>[],
73
- TResult = {},
74
- > = TArray extends [
75
- infer THead extends Record<string, (...args: any) => any>,
76
- ...infer TTail extends Record<string, (...args: any) => any>[],
77
- ]
78
- ? InferAddCustomFieldsFromArray<
79
- TTail,
80
- MergeDeep<
81
- TResult,
82
- {
83
- [TKey in keyof THead]: Exclude<ReturnType<THead[TKey]>, null | undefined>;
84
- }
85
- >
86
- >
87
- : TResult;
88
-
89
- export type InferAddCustomFields<TUnifiedExtension extends { _addCustomFields: any }> =
90
- InferAddCustomFieldsFromArray<TUnifiedExtension["_addCustomFields"]>;
91
-
92
- export type InferCustom<TNormalizer extends string> =
93
- AddCustomFields extends Record<TNormalizer, infer TCustom> ? TCustom : object;
94
-
95
- export type DefineAddCustomFields<TNormalizers extends NormalizersConstraint> = {
96
- [Key in keyof TNormalizers]?: (...args: Parameters<TNormalizers[Key]>) => any;
97
- };
98
-
99
- export interface NormalizersConfig<
100
- TNormalizers extends NormalizersConstraint,
101
- TAddCustomFieldsArray,
102
- > {
103
- override?: Partial<TNormalizers>;
104
- addCustomFields: TAddCustomFieldsArray;
105
- }
106
-
107
- export interface UnifiedExtensionFactoryParams<
108
- TApiMethods extends ApiMethods,
109
- TNormalizers extends NormalizersConstraint,
110
- > {
111
- normalizers: TNormalizers;
112
- extendApiMethods: TApiMethods;
113
- getAdditionalNormalizerContext: GetAdditionalNormalizerContextConstraint;
114
- isNamespaced?: boolean;
115
- }
116
-
117
- export interface CreateUnifiedExtensionParams<
118
- TConfig extends Record<string, any>,
119
- TApiMethods extends ApiMethods,
120
- TNormalizers extends NormalizersConstraint,
121
- TAddCustomFieldsArray extends DefineAddCustomFields<TNormalizers>[],
122
- > {
123
- config: TConfig;
124
- normalizers: NormalizersConfig<TNormalizers, TAddCustomFieldsArray>;
125
- methods?: {
126
- override?: Partial<TApiMethods>;
127
- };
128
- isNamespaced?: boolean;
129
- }
130
-
131
- export interface UnifiedCmsConfig<
132
- TNormalizers extends NormalizersConstraint,
133
- TAddCustomFieldsArray = DefineAddCustomFields<TNormalizers>[],
134
- > {
135
- normalizers?: NormalizersConfig<TNormalizers, TAddCustomFieldsArray>;
136
- }
File without changes
File without changes
File without changes
File without changes
@@ -1,8 +0,0 @@
1
- export interface Product {
2
- id: string
3
- title: string
4
- description: string
5
- images: string[]
6
- price: Price
7
- variants?: ProductVariant[]
8
- }
File without changes
File without changes
@@ -1,14 +0,0 @@
1
- Feature: Contextualized normalizers
2
-
3
- Scenario: Context is passed to normalizers
4
- Given a normalizer that requires a context as a second argument
5
- When toContextualizedNormalizers function is called
6
- And the normalizer is called with just an input
7
- Then the normalizer should also receive the context
8
-
9
- Scenario: Context changes
10
- Given a normalizer that requires a context as a second argument
11
- When toContextualizedNormalizers function is called
12
- And the context changes
13
- And the normalizer is called with just an input
14
- Then the normalizer should use the recent version of the context
@@ -1,85 +0,0 @@
1
- import { defineFeature, loadFeature } from "jest-cucumber";
2
- import type { ContextualizedNormalizers } from "./contextualizedNormalizers";
3
- import { toContextualizedNormalizers } from "./contextualizedNormalizers";
4
- import type { SfMoney } from "../models";
5
- import { beforeEach, expect, vi } from "vitest";
6
-
7
- const feature = loadFeature("./contextualizedNormalizers.feature", { loadRelativePath: true });
8
-
9
- defineFeature(feature, (test) => {
10
- type TestContext = {
11
- locale: string;
12
- currency: string;
13
- };
14
- type Normalizers = {
15
- normalizeMoney(context: TestContext, input: number): SfMoney;
16
- };
17
- let testNormalizers: Normalizers;
18
- let output: ContextualizedNormalizers<Normalizers>;
19
- let context: TestContext;
20
-
21
- beforeEach(() => {
22
- context = {
23
- currency: "USD",
24
- locale: "en",
25
- };
26
- });
27
-
28
- test("Context is passed to normalizers", ({ given, when, and, then }) => {
29
- given("a normalizer that requires a context as a second argument", () => {
30
- testNormalizers = {
31
- normalizeMoney: vi.fn((context, input) => {
32
- return {
33
- amount: input,
34
- currency: context.currency,
35
- precisionAmount: input.toFixed(2),
36
- };
37
- }),
38
- };
39
- });
40
-
41
- when("toContextualizedNormalizers function is called", () => {
42
- output = toContextualizedNormalizers(testNormalizers, () => context);
43
- });
44
-
45
- and("the normalizer is called with just an input", () => {
46
- output.normalizeMoney(100);
47
- });
48
-
49
- then("the normalizer should also receive the context", () => {
50
- expect(testNormalizers.normalizeMoney).toHaveBeenCalledWith(context, 100);
51
- });
52
- });
53
- test("Context changes", ({ given, when, and, then }) => {
54
- given("a normalizer that requires a context as a second argument", () => {
55
- testNormalizers = {
56
- normalizeMoney: vi.fn((context, input) => {
57
- return {
58
- amount: input,
59
- currency: context.currency,
60
- precisionAmount: input.toFixed(2),
61
- };
62
- }),
63
- };
64
- });
65
-
66
- when("toContextualizedNormalizers function is called", () => {
67
- output = toContextualizedNormalizers(testNormalizers, () => context);
68
- });
69
-
70
- and("the context changes", () => {
71
- context.currency = "EUR";
72
- });
73
-
74
- and("the normalizer is called with just an input", () => {
75
- output.normalizeMoney(100);
76
- });
77
-
78
- then("the normalizer should use the recent version of the context", () => {
79
- expect(testNormalizers.normalizeMoney).toHaveBeenCalledWith(
80
- expect.objectContaining({ currency: "EUR" }),
81
- expect.anything(),
82
- );
83
- });
84
- });
85
- });
@@ -1,20 +0,0 @@
1
- import type { NormalizersConstraint } from "../defs";
2
-
3
- export type ContextualizedNormalizers<TNormalizers extends NormalizersConstraint> = {
4
- [TKey in keyof TNormalizers]: (
5
- input: Parameters<TNormalizers[TKey]>[1],
6
- ) => ReturnType<TNormalizers[TKey]>;
7
- };
8
-
9
- export function toContextualizedNormalizers<
10
- TNormalizers extends NormalizersConstraint,
11
- TNormalizerContext extends Record<string, any>,
12
- >(
13
- normalizers: TNormalizers,
14
- getContext: () => TNormalizerContext,
15
- ): ContextualizedNormalizers<TNormalizers> {
16
- return Object.keys(normalizers).reduce((acc: any, key) => {
17
- acc[key] = (input: any) => normalizers[key]!(getContext(), input);
18
- return { ...acc };
19
- }, {});
20
- }
@@ -1 +0,0 @@
1
- export * from "./contextualizedNormalizers";
@@ -1,6 +0,0 @@
1
- export * from "./defs";
2
- export * from "./helpers";
3
- export * from "./methods";
4
- export * from "./models";
5
- export * from "./validationRules";
6
- export * from "./registry";
@@ -1,83 +0,0 @@
1
- import type { Simplify } from "type-fest";
2
- import type { Maybe, SfCustomer } from "../models";
3
-
4
- export interface RegisterCustomerExtendedArgs {}
5
- export interface RegisterCustomerCustomArgs {}
6
-
7
- export type RegisterCustomerArgs = {
8
- email: string;
9
- firstName: string;
10
- lastName: string;
11
- password: string;
12
- //$extended?: RegisterCustomerExtendedArgs;
13
- //$custom?: RegisterCustomerCustomArgs;
14
- };
15
-
16
- export type RegisterCustomer = (args: Simplify<RegisterCustomerArgs>) => Promise<{
17
- customer: SfCustomer;
18
- }>;
19
-
20
- export interface LoginCustomerExtendedArgs {}
21
- export interface LoginCustomerCustomArgs {}
22
-
23
- export type LoginCustomerArgs = {
24
- email: string;
25
- password: string;
26
- //$extended?: LoginCustomerExtendedArgs;
27
- //$custom?: LoginCustomerCustomArgs;
28
- };
29
-
30
- export type LoginCustomer = (args: Simplify<LoginCustomerArgs>) => Promise<{
31
- customer: SfCustomer;
32
- }>;
33
-
34
- export interface GetCustomerExtendedArgs {}
35
- export interface GetCustomerCustomArgs {}
36
-
37
- export type GetCustomerArgs = {
38
- //$extended?: GetCustomerExtendedArgs;
39
- //$custom?: GetCustomerCustomArgs;
40
- };
41
-
42
- export type GetCustomer = (args?: Simplify<GetCustomerArgs>) => Promise<{
43
- customer: Maybe<SfCustomer>;
44
- }>;
45
-
46
- export interface LogoutCustomerExtendedArgs {}
47
- export interface LogoutCustomerCustomArgs {}
48
-
49
- export type LogoutCustomerArgs = {
50
- //$extended?: LogoutCustomerExtendedArgs;
51
- //$custom?: LogoutCustomerCustomArgs;
52
- };
53
-
54
- export type LogoutCustomer = (args?: Simplify<LogoutCustomerArgs>) => Promise<void>;
55
-
56
- export interface UpdateCustomerExtendedArgs {}
57
- export interface UpdateCustomerCustomArgs {}
58
-
59
- export type UpdateCustomerArgs = {
60
- email?: string;
61
- firstName?: string;
62
- lastName?: string;
63
- //$extended?: UpdateCustomerExtendedArgs;
64
- //$custom?: UpdateCustomerCustomArgs;
65
- };
66
-
67
- export type UpdateCustomer = (args: Simplify<UpdateCustomerArgs>) => Promise<{
68
- customer: SfCustomer;
69
- }>;
70
-
71
- export interface ChangeCustomerPasswordExtendedArgs {}
72
- export interface ChangeCustomerPasswordCustomArgs {}
73
-
74
- export type ChangeCustomerPasswordArgs = {
75
- currentPassword: string;
76
- // eslint-disable-next-line unicorn/no-keyword-prefix
77
- newPassword: string;
78
- confirmPassword: string;
79
- //$extended?: ChangeCustomerPasswordExtendedArgs;
80
- //$custom?: ChangeCustomerPasswordCustomArgs;
81
- };
82
-
83
- export type ChangeCustomerPassword = (args: Simplify<ChangeCustomerPasswordArgs>) => Promise<void>;