@meeovi/layer-commerce 1.0.11 → 1.0.14

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 (360) hide show
  1. package/app/cart/useCart.ts +1 -0
  2. package/app/components/catalog/product/ProductAccordion/ProductAccordion.vue +39 -0
  3. package/app/components/catalog/product/ProductAccordion/__tests__/ProductAccordion.spec.ts +15 -0
  4. package/app/components/catalog/product/ProductAccordion/types.ts +5 -0
  5. package/app/components/catalog/product/ProductProperties/ProductProperties.vue +50 -0
  6. package/app/components/catalog/product/ProductProperties/__tests__/ProductProperties.spec.ts +15 -0
  7. package/app/components/catalog/product/ProductProperties/types.ts +5 -0
  8. package/app/components/catalog/product/ProductSlider/ProductSlider.vue +28 -0
  9. package/app/components/catalog/product/ProductSlider/__tests__/ProductSlider.spec.ts +14 -0
  10. package/app/components/catalog/product/ProductSlider/types.ts +7 -0
  11. package/app/components/catalog/product/RecommendedProducts/RecommendedProducts.vue +12 -0
  12. package/app/components/catalog/product/RecommendedProducts/types.ts +5 -0
  13. package/app/components/catalog/product/RenderContentProductSlider/RenderContentProductSlider.vue +11 -0
  14. package/app/components/catalog/product/add-attribute.vue +54 -0
  15. package/app/components/catalog/product/add-product-type.vue +54 -0
  16. package/app/components/catalog/product/add-product.vue +53 -0
  17. package/app/components/catalog/product/add-showcase.vue +52 -0
  18. package/app/components/catalog/product/add-station.vue +54 -0
  19. package/app/components/catalog/product/bestsellers.vue +57 -0
  20. package/app/components/catalog/product/bidding.vue +93 -0
  21. package/app/components/catalog/product/colorOptions.vue +58 -0
  22. package/app/components/catalog/product/deals.vue +46 -0
  23. package/app/components/catalog/product/exclusives.vue +56 -0
  24. package/app/components/catalog/product/featuredproducts.vue +57 -0
  25. package/app/components/catalog/product/giftCard.vue +63 -0
  26. package/app/components/catalog/product/latestproducts.vue +46 -0
  27. package/app/components/catalog/product/productCard.vue +105 -0
  28. package/app/components/catalog/product/productCompare.vue +60 -0
  29. package/app/components/catalog/product/productCompareTable.vue +441 -0
  30. package/app/components/catalog/product/productDetails.vue +126 -0
  31. package/app/components/catalog/product/productFaqs.vue +17 -0
  32. package/app/components/catalog/product/productGallery.vue +16 -0
  33. package/app/components/catalog/product/productQty.vue +54 -0
  34. package/app/components/catalog/product/productReviews.vue +56 -0
  35. package/app/components/catalog/product/productSpecs.vue +116 -0
  36. package/app/components/catalog/product/radiostation.vue +36 -0
  37. package/app/components/catalog/product/recentlyviewed.vue +43 -0
  38. package/app/components/catalog/product/relatedbrands.vue +54 -0
  39. package/app/components/catalog/product/relatedproducts.vue +43 -0
  40. package/app/components/catalog/product/relatedstations.vue +40 -0
  41. package/app/components/catalog/product/shippingOptions.vue +41 -0
  42. package/app/components/catalog/product/sizeOptions.vue +42 -0
  43. package/app/components/catalog/product/update-attribute-set.vue +209 -0
  44. package/app/components/catalog/product/update-attribute.vue +118 -0
  45. package/app/components/catalog/product/update-product.vue +372 -0
  46. package/app/components/catalog/product/update-showcase.vue +153 -0
  47. package/app/components/catalog/shops/relatedstores.vue +37 -0
  48. package/app/components/catalog/shops/restaurant.vue +66 -0
  49. package/app/components/catalog/shops/stores.vue +44 -0
  50. package/app/components/catalog/vendor/README.md +3 -0
  51. package/app/components/catalog/vendor/blocks/biggestcustomers.vue +33 -0
  52. package/app/components/catalog/vendor/blocks/lowestselling.vue +33 -0
  53. package/app/components/catalog/vendor/blocks/topcategories.vue +33 -0
  54. package/app/components/catalog/vendor/blocks/topproducts.vue +27 -0
  55. package/app/components/catalog/vendor/pages/attributes.vue +43 -0
  56. package/app/components/catalog/vendor/pages/commissions.vue +43 -0
  57. package/app/components/catalog/vendor/pages/crm.vue +67 -0
  58. package/app/components/catalog/vendor/pages/dashboard.vue +46 -0
  59. package/app/components/catalog/vendor/pages/emails.vue +43 -0
  60. package/app/components/catalog/vendor/pages/enquiries.vue +43 -0
  61. package/app/components/catalog/vendor/pages/invoices.vue +43 -0
  62. package/app/components/catalog/vendor/pages/orders.vue +68 -0
  63. package/app/components/catalog/vendor/pages/products.vue +55 -0
  64. package/app/components/catalog/vendor/pages/reviews.vue +48 -0
  65. package/app/components/catalog/vendor/pages/shipments.vue +43 -0
  66. package/app/components/catalog/vendor/pages/stores.vue +43 -0
  67. package/app/components/categories/chart/[id].vue +200 -0
  68. package/app/components/categories/chart/add-chart.vue +142 -0
  69. package/app/components/categories/chart/chart.vue +82 -0
  70. package/app/components/categories/chart/monthlyChart.vue +46 -0
  71. package/app/components/categories/chart/weeklyChart.vue +46 -0
  72. package/app/components/categories/chart/yearlyChart.vue +46 -0
  73. package/app/components/categories/charts.vue +118 -0
  74. package/app/components/categories/deals.vue +101 -0
  75. package/app/components/categories/eats.vue +49 -0
  76. package/app/components/categories/restaurants.vue +26 -0
  77. package/app/components/categories/station/[id].vue +72 -0
  78. package/app/components/categories/stations.vue +124 -0
  79. package/app/components/categories/time/time.vue +63 -0
  80. package/app/components/categories/travel.vue +75 -0
  81. package/app/components/categories/weather/weather.vue +44 -0
  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 +9 -0
  86. package/app/components/content/pages/checkout.vue +118 -0
  87. package/app/components/content/pages/meeoviGlobal.vue +68 -0
  88. package/app/components/content/pages/pickup-locations.vue +238 -0
  89. package/app/components/content/pages/showcases.vue +90 -0
  90. package/app/components/content/pages/success.vue +60 -0
  91. package/app/components/marketing/add-brand.vue +54 -0
  92. package/app/components/marketing/add-incentive.vue +54 -0
  93. package/app/components/marketing/promotions/giftcards.vue +102 -0
  94. package/app/components/marketing/promotions/subscriptions.vue +121 -0
  95. package/app/components/marketing/update-incentive.vue +326 -0
  96. package/app/components/menus/lowernav.vue +78 -0
  97. package/app/components/partials/LocaleSelector.vue +24 -0
  98. package/app/components/partials/ShoppingCart.vue +128 -0
  99. package/app/components/partials/StripePayment.vue +149 -0
  100. package/app/components/partials/addToCartBtn.vue +40 -0
  101. package/app/components/partials/cartItem.vue +124 -0
  102. package/app/components/partials/checkoutButton.vue +44 -0
  103. package/app/components/partials/compareBtn.vue +68 -0
  104. package/app/components/partials/ratings.vue +13 -0
  105. package/app/components/partials/store/CurrencySelector.vue +133 -0
  106. package/app/components/partials/store/StoreSwitcher.vue +13 -0
  107. package/app/components/placeholders/Comments.vue +15 -0
  108. package/app/components/placeholders/CreateListBtn.vue +7 -0
  109. package/app/components/placeholders/Event.vue +9 -0
  110. package/app/components/placeholders/ListShowcases.vue +9 -0
  111. package/app/components/placeholders/Short.vue +9 -0
  112. package/app/components/placeholders/Space.vue +9 -0
  113. package/app/components/placeholders/Tag.vue +7 -0
  114. package/app/components/related/brandCard.vue +41 -0
  115. package/app/components/related/incentiveCard.vue +44 -0
  116. package/app/components/related/invoiceCard.vue +43 -0
  117. package/app/components/related/orderCard.vue +43 -0
  118. package/app/components/related/relatedproducts.vue +17 -0
  119. package/app/components/sales/CartPageContent/CartPageContent.vue +37 -0
  120. package/app/components/sales/CheckoutAddress/CheckoutAddress.vue +50 -0
  121. package/app/components/sales/CheckoutAddress/__tests__/CheckoutAddress.spec.ts +16 -0
  122. package/app/components/sales/CheckoutAddress/types.ts +16 -0
  123. package/app/components/sales/CheckoutPayment/CheckoutPayment.vue +68 -0
  124. package/app/components/sales/CheckoutPayment/__tests__/CheckoutPayment.spec.ts +14 -0
  125. package/app/components/sales/CheckoutPayment/types.ts +12 -0
  126. package/app/components/sales/OrderSummary/OrderSummary.vue +57 -0
  127. package/app/components/sales/OrderSummary/__tests__/ContactInformation.spec.ts +52 -0
  128. package/app/components/sales/OrderSummary/types.ts +5 -0
  129. package/app/components/sales/incentives.vue +223 -0
  130. package/app/components/sales/invoices.vue +107 -0
  131. package/app/components/sales/orders.vue +378 -0
  132. package/app/components/sales/shipments.vue +65 -0
  133. package/app/components/sales/transactions.vue +109 -0
  134. package/app/components/shop/add-shop.vue +54 -0
  135. package/app/components/shop/cart/cartItem.vue +182 -0
  136. package/app/components/shop/cart/checkout.vue +415 -0
  137. package/app/components/shop/checkout/StripeCardElement.vue +206 -0
  138. package/app/components/shop/checkout/StripeCheckout.vue +49 -0
  139. package/app/components/shop/checkout/addressBilling.vue +263 -0
  140. package/app/components/shop/checkout/addressShipping.vue +175 -0
  141. package/app/components/shop/checkout/cart/ProductItem.vue +56 -0
  142. package/app/components/shop/checkout/cart/PromotionItem.vue +53 -0
  143. package/app/composables/_types.ts +18 -0
  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 +7 -0
  150. package/app/composables/cart/registry.ts +20 -0
  151. package/app/composables/cart/types.ts +18 -0
  152. package/app/composables/cart/useCart.ts +15 -0
  153. package/app/composables/config.ts +19 -0
  154. package/app/composables/defs/apiDefinitions.ts +55 -0
  155. package/app/composables/defs/extension.feature +40 -0
  156. package/app/composables/defs/extension.mocks.ts +39 -0
  157. package/app/composables/defs/extension.test.ts +280 -0
  158. package/app/composables/defs/extension.ts +236 -0
  159. package/app/composables/defs/index.ts +3 -0
  160. package/app/composables/defs/types.ts +136 -0
  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 +10 -0
  166. package/app/composables/domain/reward.ts +0 -0
  167. package/app/composables/domain/transactions.ts +0 -0
  168. package/app/composables/featured-products.ts +20 -0
  169. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  170. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  171. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  172. package/app/composables/helpers/index.ts +1 -0
  173. package/app/composables/index.ts +6 -0
  174. package/app/composables/methods/auth.ts +83 -0
  175. package/app/composables/methods/cart.ts +119 -0
  176. package/app/composables/methods/category.ts +27 -0
  177. package/app/composables/methods/checkout.ts +54 -0
  178. package/app/composables/methods/customer.ts +52 -0
  179. package/app/composables/methods/helpers.ts +5 -0
  180. package/app/composables/methods/index.ts +75 -0
  181. package/app/composables/methods/order.ts +39 -0
  182. package/app/composables/methods/product.ts +95 -0
  183. package/app/composables/methods/settings.ts +16 -0
  184. package/app/composables/models/cart.ts +95 -0
  185. package/app/composables/models/category.ts +13 -0
  186. package/app/composables/models/checkout.ts +17 -0
  187. package/app/composables/models/customer.ts +16 -0
  188. package/app/composables/models/facets.ts +25 -0
  189. package/app/composables/models/index.ts +94 -0
  190. package/app/composables/models/order.ts +43 -0
  191. package/app/composables/models/product.ts +73 -0
  192. package/app/composables/models/shared.ts +75 -0
  193. package/app/composables/orders.ts +69 -0
  194. package/app/composables/products/registry.ts +20 -0
  195. package/app/composables/products/types.ts +13 -0
  196. package/app/composables/products/useEvents.ts +0 -0
  197. package/app/composables/products/useGiftCards.ts +0 -0
  198. package/app/composables/products/useProducts.ts +12 -0
  199. package/app/composables/products/useSubscriptions.ts +0 -0
  200. package/app/composables/products.ts +30 -0
  201. package/app/composables/registry.ts +21 -0
  202. package/app/composables/useAuth.ts +43 -0
  203. package/app/composables/useBreakpoints/index.ts +1 -0
  204. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  205. package/app/composables/useCache.ts +38 -0
  206. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  207. package/app/composables/useCart/index.ts +1 -0
  208. package/app/composables/useCart/types.ts +17 -0
  209. package/app/composables/useCart/useCart.ts +46 -0
  210. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  211. package/app/composables/useCartShippingMethods/index.ts +1 -0
  212. package/app/composables/useCartShippingMethods/types.ts +17 -0
  213. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  214. package/app/composables/useCatalog.ts +64 -0
  215. package/app/composables/useContent.ts +57 -0
  216. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  217. package/app/composables/useCustomer/index.ts +2 -0
  218. package/app/composables/useCustomer/types.ts +17 -0
  219. package/app/composables/useCustomer/useCustomer.ts +40 -0
  220. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  221. package/app/composables/useCustomerAddress/index.ts +2 -0
  222. package/app/composables/useCustomerAddress/types.ts +17 -0
  223. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  224. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  225. package/app/composables/useCustomerOrder/adress.ts +10 -0
  226. package/app/composables/useCustomerOrder/index.ts +2 -0
  227. package/app/composables/useCustomerOrder/product.ts +37 -0
  228. package/app/composables/useCustomerOrder/types.ts +40 -0
  229. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  230. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  231. package/app/composables/useCustomerOrders/index.ts +2 -0
  232. package/app/composables/useCustomerOrders/types.ts +20 -0
  233. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  234. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  235. package/app/composables/useCustomerReturns/index.ts +2 -0
  236. package/app/composables/useCustomerReturns/types.ts +17 -0
  237. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  238. package/app/composables/useHandleError/index.ts +1 -0
  239. package/app/composables/useHandleError/types.ts +11 -0
  240. package/app/composables/useHandleError/useHandleError.ts +27 -0
  241. package/app/composables/useInventory.ts +21 -0
  242. package/app/composables/useLoading.ts +21 -0
  243. package/app/composables/useNotification.ts +21 -0
  244. package/app/composables/usePageTitle.ts +16 -0
  245. package/app/composables/useProduct/index.ts +2 -0
  246. package/app/composables/useProduct/types.ts +17 -0
  247. package/app/composables/useProduct/useProduct.ts +42 -0
  248. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  249. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  250. package/app/composables/useProductAttribute/index.ts +1 -0
  251. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  252. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  253. package/app/composables/useProductRecommended/index.ts +1 -0
  254. package/app/composables/useProductRecommended/types.ts +17 -0
  255. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  256. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  257. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  258. package/app/composables/useProductReviews/index.ts +2 -0
  259. package/app/composables/useProductReviews/types.ts +17 -0
  260. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  261. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  262. package/app/composables/useProducts/types.ts +22 -0
  263. package/app/composables/useProducts/useProducts.ts +41 -0
  264. package/app/composables/useTax.ts +17 -0
  265. package/app/composables/validationRules/index.ts +1 -0
  266. package/app/composables/validationRules/password.feature +67 -0
  267. package/app/composables/validationRules/password.test.ts +89 -0
  268. package/app/composables/validationRules/password.ts +25 -0
  269. package/app/composables/vendors/index.ts +0 -0
  270. package/app/composables/vendors/registry.ts +0 -0
  271. package/app/composables/vendors/useAffiliates.ts +0 -0
  272. package/app/composables/vendors/useCommission.ts +0 -0
  273. package/app/modules/vue-head/composables/useHead.ts +22 -0
  274. package/app/pages/brand/[...slug].vue +92 -0
  275. package/app/pages/brands.vue +90 -0
  276. package/app/pages/cart.vue +142 -0
  277. package/app/pages/compare.vue +166 -0
  278. package/app/pages/departments/[...slug].vue +385 -0
  279. package/app/pages/departments/category/[...slug].vue +135 -0
  280. package/app/pages/incentive/[...id].vue +66 -0
  281. package/app/pages/invoice/[id].vue +309 -0
  282. package/app/pages/order/[id].vue +327 -0
  283. package/app/pages/product/[...id].vue +309 -0
  284. package/app/pages/product/showcases/index.vue +86 -0
  285. package/app/pages/shipment/[...id].vue +176 -0
  286. package/app/pages/shop/[...slug].vue +158 -0
  287. package/app/pages/shops.vue +76 -0
  288. package/app/pages/subscription/[...id].vue +147 -0
  289. package/app/pages/transaction/[...id].vue +74 -0
  290. package/app/services/magento.ts +49 -0
  291. package/app/stores/cart.ts +218 -0
  292. package/app/stores/cartStore.ts +316 -0
  293. package/app/stores/checkout.ts +19 -0
  294. package/app/stores/compare.ts +65 -0
  295. package/app/stores/currency.js +29 -0
  296. package/app/stores/digital-products.js +11 -0
  297. package/app/stores/index.js +0 -0
  298. package/app/stores/orders.ts +161 -0
  299. package/app/stores/product.ts +26 -0
  300. package/app/stores/productList.ts +0 -0
  301. package/app/stores/productListInfo.ts +0 -0
  302. package/app/stores/products.ts +116 -0
  303. package/app/stores/recentlyViewedProducts.ts +0 -0
  304. package/app/stores/review.ts +25 -0
  305. package/app/stores/storeInPickUp.ts +22 -0
  306. package/app/stores/user.ts +20 -0
  307. package/app/stores/wishlist.ts +19 -0
  308. package/app/types/Order.type.ts +181 -0
  309. package/app/types/checkout.ts +6 -0
  310. package/app/types/imports.d.ts +28 -0
  311. package/app/types/index.ts +291 -0
  312. package/app/types/nuxt-imports.d.ts +5 -0
  313. package/app/types/product-state.ts +8 -0
  314. package/app/types/product.ts +22 -0
  315. package/app/types/review-state.ts +7 -0
  316. package/app/types/review.ts +2 -0
  317. package/app/types/storeInPickUp.ts +2 -0
  318. package/app/types/storePickup-state.ts +5 -0
  319. package/app/types/vue-globals.d.ts +9 -0
  320. package/app/types/wishlist-state.ts +5 -0
  321. package/app/types/wishlist.ts +2 -0
  322. package/app/utils/client.ts +26 -0
  323. package/app/utils/countryList.ts +14 -0
  324. package/app/utils/currency.js +56 -0
  325. package/app/utils/errorHandler.ts +16 -0
  326. package/app/utils/glossary.ts +0 -0
  327. package/app/utils/importExport.ts +0 -0
  328. package/app/utils/index.ts +53 -0
  329. package/app/utils/normalizer.ts +23 -0
  330. package/app/utils/normalizers/magento.ts +29 -0
  331. package/app/utils/normalizers/shopify.ts +29 -0
  332. package/app/utils/print.ts +0 -0
  333. package/app/utils/shopThemes.ts +0 -0
  334. package/app/utils/statistics.ts +0 -0
  335. package/app/utils/stock.ts +0 -0
  336. package/app/utils/stripe.ts +16 -0
  337. package/app/utils/taxation.ts +0 -0
  338. package/app/utils/tellFriends.ts +0 -0
  339. package/composables/useAuth.ts +2 -0
  340. package/composables/useCache.ts +2 -0
  341. package/composables/useInventory.ts +2 -0
  342. package/composables/useLoading.ts +2 -0
  343. package/composables/useNotification.ts +2 -0
  344. package/composables/useTax.ts +2 -0
  345. package/graphql/queries-mutations_subscriptions/types/ProductCompare.type.ts +20 -0
  346. package/package.json +5 -12
  347. package/services/magento.ts +2 -0
  348. package/tsconfig.json +36 -0
  349. package/types/checkout.d.ts +6 -0
  350. package/types/checkout.ts +6 -0
  351. package/types/nuxt-imports.d.ts +5 -0
  352. package/types/product.d.ts +5 -0
  353. package/types/product.ts +3 -0
  354. package/types/review.d.ts +1 -0
  355. package/types/review.ts +1 -0
  356. package/types/storeInPickUp.d.ts +1 -0
  357. package/types/storeInPickUp.ts +1 -0
  358. package/types/wishlist.d.ts +1 -0
  359. package/types/wishlist.ts +1 -0
  360. package/utils/errorHandler.ts +2 -0
@@ -0,0 +1,17 @@
1
+ import { SfShippingMethods, Maybe } from '../_types';
2
+ import type { Ref } from 'vue';
3
+
4
+ export interface UseCartShippingMethodsState {
5
+ data: Maybe<SfShippingMethods>;
6
+ loading: boolean;
7
+ }
8
+
9
+ export type GetShippingMethods = () => Promise<Ref<Maybe<SfShippingMethods>>>;
10
+
11
+ export interface UseCartShippingMethods {
12
+ data: Readonly<Ref<UseCartShippingMethodsState['data']>>;
13
+ loading: Readonly<Ref<boolean>>;
14
+ getShippingMethods: GetShippingMethods;
15
+ }
16
+
17
+ export type UseCartShippingMethodsReturn = () => UseCartShippingMethods;
@@ -0,0 +1,47 @@
1
+ import { toRefs } from '@vueuse/shared';
2
+ import { computed } from 'vue';
3
+ import type { Ref } from 'vue';
4
+ import type { Maybe, SfShippingMethods } from '../_types';
5
+ import type {
6
+ UseCartShippingMethodsState,
7
+ UseCartShippingMethodsReturn,
8
+ GetShippingMethods,
9
+ } from './types';
10
+ import { getCommerceClient } from '../../utils/client';
11
+ import { useAsyncData, useState } from 'nuxt/app';
12
+ import { useHandleError } from '../useHandleError';
13
+
14
+ /**
15
+ * @description Composable for getting shipping methods.
16
+ * @example
17
+ * const { data, loading, getShippingMethods } = useCartShippingMethods();
18
+ */
19
+
20
+ export const useCartShippingMethods: UseCartShippingMethodsReturn = () => {
21
+ const state = useState<UseCartShippingMethodsState>('useCartSippingMethods', () => ({
22
+ data: null,
23
+ loading: false,
24
+ }));
25
+
26
+ /**
27
+ * @description Function for fetching shipping methods.
28
+ * @example
29
+ * getShippingMethods();
30
+ */
31
+
32
+ const getShippingMethods: GetShippingMethods = async () => {
33
+ state.value.loading = true;
34
+ const client = getCommerceClient();
35
+ const { data, error } = await useAsyncData<any>(() => client.listShippingMethods?.());
36
+ useHandleError(error.value);
37
+ const result = (data.value && (data.value as any).methods) ? data.value : { methods: [] };
38
+ state.value.data = result as any;
39
+ state.value.loading = false;
40
+ return computed(() => state.value.data) as unknown as Ref<Maybe<SfShippingMethods>>;
41
+ };
42
+
43
+ return {
44
+ getShippingMethods,
45
+ ...toRefs(state.value),
46
+ };
47
+ };
@@ -0,0 +1,64 @@
1
+ import { ref, watchEffect } from 'vue'
2
+ import { useAlternateContext } from '@meeovi/core'
3
+
4
+ export function useCatalogFallback() {
5
+ // Attempt to use core runtime adapter if present
6
+ try {
7
+ const ctx = useAlternateContext() as any
8
+ const adapter = ctx.getAdapter('catalog')
9
+ if (adapter) {
10
+ return {
11
+ adapter,
12
+ async getProductById(id: string) {
13
+ return adapter.getProductById(id)
14
+ },
15
+ async getProductBySlug(slug: string) {
16
+ return adapter.getProductBySlug(slug)
17
+ },
18
+ async listProducts(params?: Record<string, unknown>) {
19
+ return adapter.listProducts(params)
20
+ }
21
+ }
22
+ }
23
+ } catch (e) {
24
+ // runtime context not available
25
+ }
26
+
27
+ // Fallback to Directus via Nuxt app runtime (assumes component calling runs in Vue context)
28
+ return {
29
+ adapter: null,
30
+ async getProductById(_id: string) {
31
+ const nuxtApp = useNuxtApp() as any
32
+ if (nuxtApp?.$directus && nuxtApp.$readItem) {
33
+ const res = await nuxtApp.$directus.request(nuxtApp.$readItem('products', { filter: { id: { _eq: _id } }, limit: 1 }))
34
+ return res?.[0] || null
35
+ }
36
+ return null
37
+ },
38
+ async getProductBySlug(slug: string) {
39
+ const nuxtApp = useNuxtApp() as any
40
+ if (nuxtApp?.$directus && nuxtApp.$readItem) {
41
+ const res = await nuxtApp.$directus.request(nuxtApp.$readItem('products', { filter: { slug: { _eq: slug } }, limit: 1 }))
42
+ return res?.[0] || null
43
+ }
44
+ return null
45
+ },
46
+ async listProducts(params?: Record<string, unknown>) {
47
+ const nuxtApp = useNuxtApp() as any
48
+ if (nuxtApp?.$directus && nuxtApp.$readItems) {
49
+ const res = await nuxtApp.$directus.request(nuxtApp.$readItems('products', params || {}))
50
+ return res || []
51
+ }
52
+ return []
53
+ }
54
+ ,
55
+ async listAttributes(filter?: Record<string, unknown>) {
56
+ const nuxtApp = useNuxtApp() as any
57
+ if (nuxtApp?.$directus && nuxtApp.$readItems) {
58
+ const res = await nuxtApp.$directus.request(nuxtApp.$readItems('attributes', filter || {}))
59
+ return res || []
60
+ }
61
+ return []
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,57 @@
1
+ import { useAlternateContext } from '@meeovi/core'
2
+
3
+ export function useContentFallback() {
4
+ try {
5
+ const ctx = useAlternateContext() as any
6
+ const adapter = ctx.getAdapter('catalog')
7
+ // If a content-capable adapter is available and exposes methods, use it
8
+ if (adapter && typeof adapter.listShops === 'function') {
9
+ return {
10
+ adapter,
11
+ listShops: (opts?: any) => adapter.listShops(opts),
12
+ getBrandBySlug: (slug: string) => adapter.getBrandBySlug?.(slug),
13
+ getPage: (id: string) => adapter.getPage?.(id)
14
+ }
15
+ }
16
+ } catch (e) {
17
+ // ignore
18
+ }
19
+
20
+ // Fallback to Directus via Nuxt runtime
21
+ return {
22
+ adapter: null,
23
+ async listShops(params?: Record<string, unknown>) {
24
+ const nuxtApp = useNuxtApp() as any
25
+ if (nuxtApp?.$directus && nuxtApp.$readItems) {
26
+ const res = await nuxtApp.$directus.request(nuxtApp.$readItems('shops', params || {}))
27
+ return res || []
28
+ }
29
+ return []
30
+ },
31
+ async listBrands(params?: Record<string, unknown>) {
32
+ const nuxtApp = useNuxtApp() as any
33
+ if (nuxtApp?.$directus && nuxtApp.$readItems) {
34
+ const res = await nuxtApp.$directus.request(nuxtApp.$readItems('brands', params || {}))
35
+ return res || []
36
+ }
37
+ return []
38
+ },
39
+ async getBrandBySlug(slug: string) {
40
+ const nuxtApp = useNuxtApp() as any
41
+ if (nuxtApp?.$directus && nuxtApp.$readItems) {
42
+ const res = await nuxtApp.$directus.request(nuxtApp.$readItems('brands', { filter: { slug: { _eq: slug } }, limit: 1 }))
43
+ return res?.[0] || null
44
+ }
45
+ return null
46
+ },
47
+ async getPage(id: string) {
48
+ const nuxtApp = useNuxtApp() as any
49
+ if (nuxtApp?.$directus && nuxtApp.$readItem) {
50
+ return await nuxtApp.$directus.request(nuxtApp.$readItem('pages', id))
51
+ }
52
+ return null
53
+ }
54
+ }
55
+ }
56
+
57
+ export default useContentFallback
@@ -0,0 +1,25 @@
1
+ import { useCustomer } from '~/composables/useCustomer/useCustomer';
2
+
3
+ vi.mock('@meeovi/sdk', () => ({
4
+ sdk: {
5
+ commerce: {
6
+ getCustomer: vi.fn(() => ({
7
+ id: 'SfId',
8
+ email: 'hieronim.anonim@gmail.com',
9
+ firstName: 'hieronim',
10
+ lastName: 'anonim'
11
+ })),
12
+ },
13
+ },
14
+ }));
15
+
16
+
17
+ describe('useCustomer', () => {
18
+ it('should return account data', async () => {
19
+ const { fetchCustomer, data } = useCustomer();
20
+
21
+ await fetchCustomer();
22
+
23
+ expect(data.value).not.toBeUndefined();
24
+ });
25
+ });
@@ -0,0 +1,2 @@
1
+ export * from './useCustomer';
2
+ export * from './types';
@@ -0,0 +1,17 @@
1
+ import type { Ref } from 'vue';
2
+ import type { Maybe, SfCustomer } from '../_types';
3
+
4
+ export interface UseCustomerState {
5
+ data: Maybe<SfCustomer>;
6
+ loading: boolean;
7
+ }
8
+
9
+ export type FetchCustomer = () => Promise<Ref<Maybe<SfCustomer>>>;
10
+
11
+ export interface UseCustomer {
12
+ data: Readonly<Ref<UseCustomerState['data']>>;
13
+ loading: Readonly<Ref<boolean>>;
14
+ fetchCustomer: FetchCustomer;
15
+ }
16
+
17
+ export type UseCustomerReturn = () => UseCustomer;
@@ -0,0 +1,40 @@
1
+ import { toRefs } from '@vueuse/shared';
2
+ import { computed } from 'vue';
3
+ import type { Ref } from 'vue';
4
+ import type { Maybe, SfCustomer } from '../_types';
5
+ import type { UseCustomerReturn, UseCustomerState, FetchCustomer } from './types';
6
+ import { getCommerceClient } from '../../utils/client';
7
+ import { useAsyncData, useState } from 'nuxt/app';
8
+ import { useHandleError } from '../useHandleError';
9
+
10
+ /**
11
+ * @description Composable managing customer data
12
+ * @returns {@link UseCustomerReturn}
13
+ * @example
14
+ * const { data, loading, fetchCustomer } = useCustomer();
15
+ */
16
+ export const useCustomer: UseCustomerReturn = () => {
17
+ const state = useState<UseCustomerState>('useCustomer', () => ({
18
+ data: null,
19
+ loading: false,
20
+ }));
21
+
22
+ /** Function for fetching customer data
23
+ * @example
24
+ * fetchCustomer();
25
+ */
26
+ const fetchCustomer: FetchCustomer = async () => {
27
+ state.value.loading = true;
28
+ const client = getCommerceClient();
29
+ const { data, error } = await useAsyncData<UseCustomerState['data']>(() => client.getCustomer?.());
30
+ useHandleError(error.value);
31
+ state.value.data = data.value;
32
+ state.value.loading = false;
33
+ return computed(() => state.value.data) as unknown as Ref<Maybe<SfCustomer>>;
34
+ };
35
+
36
+ return {
37
+ fetchCustomer,
38
+ ...toRefs(state.value),
39
+ };
40
+ };
@@ -0,0 +1,11 @@
1
+ import { useCustomerAddress } from '~/composables/useCustomerAddress/useCustomerAddress';
2
+
3
+ describe('useCustomerAddress', () => {
4
+ it('should return account data', async () => {
5
+ const { fetchCustomerAddress, data } = useCustomerAddress();
6
+
7
+ await fetchCustomerAddress();
8
+
9
+ expect(data.value).not.toBeUndefined();
10
+ });
11
+ });
@@ -0,0 +1,2 @@
1
+ export * from './useCustomerAddress';
2
+ export * from './types';
@@ -0,0 +1,17 @@
1
+ import type { Ref } from 'vue';
2
+ import type { Maybe, SfAddress } from '../_types';
3
+
4
+ export interface UseCustomerAddressState {
5
+ data: Maybe<SfAddress>;
6
+ loading: boolean;
7
+ }
8
+
9
+ export type FetchCustomerAddress = () => Promise<Ref<Maybe<SfAddress>>>;
10
+
11
+ export interface UseCustomerAddress {
12
+ data: Readonly<Ref<UseCustomerAddressState['data']>>;
13
+ loading: Readonly<Ref<boolean>>;
14
+ fetchCustomerAddress: FetchCustomerAddress;
15
+ }
16
+
17
+ export type UseCustomerAddressReturn = () => UseCustomerAddress;
@@ -0,0 +1,55 @@
1
+ import { toRefs } from '@vueuse/shared';
2
+ import { computed } from 'vue';
3
+ import type { Ref } from 'vue';
4
+ import type { Maybe, SfAddress } from '../_types';
5
+ import type {
6
+ UseCustomerAddressReturn,
7
+ UseCustomerAddressState,
8
+ FetchCustomerAddress,
9
+ } from './types';
10
+ import { useAsyncData, useState } from 'nuxt/app';
11
+ import { useHandleError } from '../useHandleError';
12
+
13
+ /**
14
+ * @description Composable managing address data
15
+ * @returns {@link UseCustomerAddressReturn}
16
+ * @example
17
+ * const { data, loading, fetchCustomerAddress } = useCustomerAddress();
18
+ */
19
+ export const useCustomerAddress: UseCustomerAddressReturn = () => {
20
+ const state = useState<UseCustomerAddressState>(`useCustomerAddress`, () => ({
21
+ data: null,
22
+ loading: false,
23
+ }));
24
+
25
+ /** Function for fetching address data
26
+ * @example
27
+ * fetchCustomerAddress();
28
+ */
29
+ const fetchCustomerAddress: FetchCustomerAddress = async () => {
30
+ state.value.loading = true;
31
+ const { data, error } = await useAsyncData(() =>
32
+ Promise.resolve({
33
+ firstName: 'Hieronim',
34
+ lastName: 'Anonim',
35
+ address1: 'Oak Drive',
36
+ address2: '3633',
37
+ city: 'Colonie',
38
+ country: 'US',
39
+ phoneNumber: '+1 321 765 0987',
40
+ postalCode: '12205',
41
+ state: 'NY',
42
+ titleCode: '',
43
+ }),
44
+ );
45
+ useHandleError(error.value);
46
+ state.value.data = data.value;
47
+ state.value.loading = false;
48
+ return computed(() => state.value.data) as unknown as Ref<Maybe<SfAddress>>;
49
+ };
50
+
51
+ return {
52
+ fetchCustomerAddress,
53
+ ...toRefs(state.value),
54
+ };
55
+ };
@@ -0,0 +1,11 @@
1
+ import { useCustomerOrder } from '~/composables/useCustomerOrder/useCustomerOrder';
2
+
3
+ describe('useCustomerOrder', () => {
4
+ it('should return customer order data', async () => {
5
+ const { fetchCustomerOrder, data } = useCustomerOrder('1');
6
+
7
+ await fetchCustomerOrder('1');
8
+
9
+ expect(data.value).not.toBeUndefined();
10
+ });
11
+ });
@@ -0,0 +1,10 @@
1
+ export default {
2
+ firstName: 'Hieronim',
3
+ lastName: 'Anonim',
4
+ phoneNumber: '+1 321 765 0987',
5
+ address1: '3633',
6
+ address2: 'Oak Drive',
7
+ city: 'Colonie',
8
+ state: 'NY',
9
+ postalCode: '12205',
10
+ };
@@ -0,0 +1,2 @@
1
+ export * from './useCustomerOrder';
2
+ export * from './types';
@@ -0,0 +1,37 @@
1
+ export default {
2
+ name: 'Smartwatch Fitness Tracker',
3
+ quantity: 1,
4
+ price: {
5
+ value: {
6
+ currency: 'Dollar',
7
+ amount: 295.87,
8
+ precisionAmount: '295.87',
9
+ },
10
+ isDiscounted: false,
11
+ regularPrice: {
12
+ currency: 'Dollar',
13
+ amount: 295.87,
14
+ precisionAmount: '295.87',
15
+ },
16
+ },
17
+ gallery: [
18
+ {
19
+ alt: 'Smartwatch Fitness Tracker',
20
+ url: '/images/watch.png',
21
+ },
22
+ ],
23
+ attributes: [
24
+ {
25
+ label: 'Size',
26
+ name: 'Size',
27
+ value: '1.9″',
28
+ valueLabel: 'value',
29
+ },
30
+ {
31
+ name: 'Color',
32
+ label: 'color',
33
+ value: 'Black',
34
+ valueLabel: 'value',
35
+ },
36
+ ],
37
+ };
@@ -0,0 +1,40 @@
1
+ import type { Ref } from 'vue';
2
+ import type { Maybe, SfAddress, SfProduct } from '../_types';
3
+
4
+ export type OrderData = {
5
+ id: string;
6
+ date: string; //probably should be number in ms
7
+ paymentAmount: number;
8
+ status: 'Completed' | 'Shipped' | 'Open' | 'Cancelled';
9
+ products: Array<
10
+ Omit<
11
+ SfProduct,
12
+ 'id' | 'sku' | 'slug' | 'description' | 'primaryImage' | 'rating' | 'variants' | 'quantityLimit'
13
+ > & { quantity: number }
14
+ >;
15
+ summary: {
16
+ subtotal: number;
17
+ delivery: number;
18
+ estimatedTax: number;
19
+ total: number;
20
+ };
21
+ billingAddress: Partial<SfAddress>;
22
+ shippingAddress: Partial<SfAddress>;
23
+ paymentMethod: string;
24
+ shipping: string;
25
+ };
26
+
27
+ export interface UseCustomerOrderState {
28
+ data: Maybe<OrderData>;
29
+ loading: boolean;
30
+ }
31
+
32
+ export type FetchCustomerOrder = (id: string) => Promise<Ref<Maybe<OrderData>>>;
33
+
34
+ export interface UseCustomerOrder {
35
+ data: Readonly<Ref<UseCustomerOrderState['data']>>;
36
+ loading: Readonly<Ref<boolean>>;
37
+ fetchCustomerOrder: FetchCustomerOrder;
38
+ }
39
+
40
+ export type UseCustomerOrderReturn = (id: string) => UseCustomerOrder;
@@ -0,0 +1,63 @@
1
+ import { toRefs } from '@vueuse/shared';
2
+ import addressData from './adress';
3
+ import productData from './product';
4
+ import type {
5
+ UseCustomerOrderReturn,
6
+ UseCustomerOrderState,
7
+ FetchCustomerOrder,
8
+ OrderData,
9
+ } from './types';
10
+ import { useAsyncData, useState } from 'nuxt/app';
11
+ import { useHandleError } from '../useHandleError';
12
+
13
+ const order: OrderData = {
14
+ id: '0e4fec5a-61e6-48b8-94cc-d5f77687e2b0',
15
+ date: '2022-08-11',
16
+ paymentAmount: 295.87,
17
+ paymentMethod: 'Credit Card',
18
+ shipping: 'Standard (FREE)',
19
+ summary: {
20
+ subtotal: 7037.99,
21
+ delivery: 0,
22
+ estimatedTax: 457.47,
23
+ total: 295.87,
24
+ },
25
+ billingAddress: addressData,
26
+ shippingAddress: addressData,
27
+ status: 'Completed',
28
+ products: [productData, productData],
29
+ };
30
+
31
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars, unused-imports/no-unused-vars
32
+ const getCustomerOrder = (id: string) => order;
33
+
34
+ /**
35
+ * @description Composable managing customer order data
36
+ * @returns {@link UseCustomerOrderReturn}
37
+ * @example
38
+ * const { data, loading, fetchCustomerOrder } = useCustomerOrder();
39
+ */
40
+ export const useCustomerOrder: UseCustomerOrderReturn = (id) => {
41
+ const state = useState<UseCustomerOrderState>(`useCustomerOrder-${id}`, () => ({
42
+ data: null,
43
+ loading: false,
44
+ }));
45
+
46
+ /** Function for fetching customer order data
47
+ * @example
48
+ * fetchCustomerOrder();
49
+ */
50
+ const fetchCustomerOrder: FetchCustomerOrder = async (id) => {
51
+ state.value.loading = true;
52
+ const { data, error } = await useAsyncData(() => Promise.resolve(getCustomerOrder(id)));
53
+ useHandleError(error.value);
54
+ state.value.data = data.value;
55
+ state.value.loading = false;
56
+ return data as unknown as ReturnType<FetchCustomerOrder>;
57
+ };
58
+
59
+ return {
60
+ fetchCustomerOrder,
61
+ ...toRefs(state.value),
62
+ };
63
+ };
@@ -0,0 +1,11 @@
1
+ import { useCustomerOrders } from '~/composables/useCustomerOrders/useCustomerOrders';
2
+
3
+ describe('useCustomerOrders', () => {
4
+ it('should return customer orders data', async () => {
5
+ const { fetchCustomerOrders, data } = useCustomerOrders();
6
+
7
+ await fetchCustomerOrders();
8
+
9
+ expect(data.value).not.toBeUndefined();
10
+ });
11
+ });
@@ -0,0 +1,2 @@
1
+ export * from './useCustomerOrders';
2
+ export * from './types';
@@ -0,0 +1,20 @@
1
+ import type { Ref } from 'vue';
2
+ import type { Maybe } from '../_types';
3
+ import type { OrderData } from '../useCustomerOrder/types';
4
+
5
+ export type OrdersData = Pick<OrderData, 'id' | 'date' | 'paymentAmount' | 'status'>[];
6
+
7
+ export interface UseCustomerOrdersState {
8
+ data: Maybe<OrdersData>;
9
+ loading: boolean;
10
+ }
11
+
12
+ export type FetchCustomerOrders = () => Promise<Ref<Maybe<OrdersData>>>;
13
+
14
+ export interface UseCustomerOrders {
15
+ data: Readonly<Ref<UseCustomerOrdersState['data']>>;
16
+ loading: Readonly<Ref<boolean>>;
17
+ fetchCustomerOrders: FetchCustomerOrders;
18
+ }
19
+
20
+ export type UseCustomerOrdersReturn = () => UseCustomerOrders;
@@ -0,0 +1,56 @@
1
+ import { toRefs } from '@vueuse/shared';
2
+ import { computed } from 'vue';
3
+ import type { Ref } from 'vue';
4
+ import type { Maybe } from '../_types';
5
+ import type { OrderData } from '../useCustomerOrder/types';
6
+ import type {
7
+ UseCustomerOrdersReturn,
8
+ UseCustomerOrdersState,
9
+ FetchCustomerOrders,
10
+ OrdersData,
11
+ } from './types';
12
+ import { useAsyncData, useState } from 'nuxt/app';
13
+ import { useHandleError } from '../useHandleError';
14
+
15
+ const order: Pick<OrderData, 'id' | 'date' | 'paymentAmount'> = {
16
+ id: '0e4fec5a-61e6-48b8-94cc-d5f77687e2b0',
17
+ date: '2022-08-11',
18
+ paymentAmount: 295.87,
19
+ };
20
+ /**
21
+ * @description Composable managing customer orders data
22
+ * @returns {@link UseCustomerOrdersReturn}
23
+ * @example
24
+ * const { data, loading, fetchCustomerOrders } = useCustomerOrders();
25
+ */
26
+ export const useCustomerOrders: UseCustomerOrdersReturn = () => {
27
+ const state = useState<UseCustomerOrdersState>('useCustomerOrders', () => ({
28
+ data: null,
29
+ loading: false,
30
+ }));
31
+
32
+ /** Function for fetching customer orders data
33
+ * @example
34
+ * fetchCustomerOrders();
35
+ */
36
+ const fetchCustomerOrders: FetchCustomerOrders = async () => {
37
+ state.value.loading = true;
38
+ const { data, error } = await useAsyncData(() =>
39
+ Promise.resolve([
40
+ { ...order, status: 'Completed' },
41
+ { ...order, status: 'Shipped' },
42
+ { ...order, status: 'Open' },
43
+ { ...order, status: 'Cancelled' },
44
+ ] as OrderData[]),
45
+ );
46
+ useHandleError(error.value);
47
+ state.value.data = data.value;
48
+ state.value.loading = false;
49
+ return computed(() => state.value.data) as unknown as Ref<Maybe<OrdersData>>;
50
+ };
51
+
52
+ return {
53
+ fetchCustomerOrders,
54
+ ...toRefs(state.value),
55
+ };
56
+ };
@@ -0,0 +1,11 @@
1
+ import { useCustomerReturns } from '~/composables/useCustomerReturns/useCustomerReturns';
2
+
3
+ describe('useCustomerReturns', () => {
4
+ it('should return account data', async () => {
5
+ const { fetchCustomerReturns, data } = useCustomerReturns();
6
+
7
+ await fetchCustomerReturns();
8
+
9
+ expect(data.value).not.toBeUndefined();
10
+ });
11
+ });
@@ -0,0 +1,2 @@
1
+ export * from './useCustomerReturns';
2
+ export * from './types';
@@ -0,0 +1,17 @@
1
+ import type { Ref } from 'vue';
2
+ import { Maybe } from '../_types';
3
+
4
+ export interface UseCustomerReturnsState {
5
+ data: Maybe<unknown[]>;
6
+ loading: boolean;
7
+ }
8
+
9
+ export type FetchCustomerReturns = () => Promise<Ref<unknown[] | null>>;
10
+
11
+ export interface UseCustomerReturns {
12
+ data: Readonly<Ref<UseCustomerReturnsState['data']>>;
13
+ loading: Readonly<Ref<boolean>>;
14
+ fetchCustomerReturns: FetchCustomerReturns;
15
+ }
16
+
17
+ export type UseCustomerReturnsReturn = () => UseCustomerReturns;