@mframework/layer-commerce 0.0.3

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 (355) hide show
  1. package/README.md +101 -0
  2. package/app/cart/useCart.ts +1 -0
  3. package/app/components/ChevronIcon/ChevronIcon.config.ts +17 -0
  4. package/app/components/DateSelect/DateSelect.config.ts +15 -0
  5. package/app/components/Field/Field.config.ts +14 -0
  6. package/app/components/FieldDate/FieldDate.config.ts +16 -0
  7. package/app/components/Form/Form.type.ts +8 -0
  8. package/app/components/Product/Product.config.ts +19 -0
  9. package/app/components/Product/Stock.config.ts +15 -0
  10. package/app/components/ProductCustomizableOption/ProductCustomizableOption.config.ts +5 -0
  11. package/app/components/ProductGallery/ProductGallery.config.ts +15 -0
  12. package/app/components/ProductReviews/ProductReviews.config.ts +8 -0
  13. package/app/composables/_types.ts +18 -0
  14. package/app/composables/adapters/abstract/cartAdapter.ts +0 -0
  15. package/app/composables/adapters/abstract/categoryAdapter.ts +0 -0
  16. package/app/composables/adapters/abstract/customerAdapter.ts +0 -0
  17. package/app/composables/adapters/abstract/inventoryAdapter.ts +0 -0
  18. package/app/composables/adapters/abstract/orderAdapter.ts +0 -0
  19. package/app/composables/adapters/abstract/productAdapter.ts +7 -0
  20. package/app/composables/cart/registry.ts +20 -0
  21. package/app/composables/cart/types.ts +18 -0
  22. package/app/composables/cart/useCart.ts +15 -0
  23. package/app/composables/config.ts +19 -0
  24. package/app/composables/defs/apiDefinitions.ts +55 -0
  25. package/app/composables/defs/extension.feature +40 -0
  26. package/app/composables/defs/extension.mocks.ts +39 -0
  27. package/app/composables/defs/extension.test.ts +280 -0
  28. package/app/composables/defs/extension.ts +236 -0
  29. package/app/composables/defs/index.ts +3 -0
  30. package/app/composables/defs/typeHelpers.ts +8 -0
  31. package/app/composables/defs/types.ts +136 -0
  32. package/app/composables/domain/product.ts +12 -0
  33. package/app/composables/featured-products.ts +20 -0
  34. package/app/composables/helpers/contextualizedNormalizers.feature +14 -0
  35. package/app/composables/helpers/contextualizedNormalizers.test.ts +85 -0
  36. package/app/composables/helpers/contextualizedNormalizers.ts +20 -0
  37. package/app/composables/helpers/index.ts +1 -0
  38. package/app/composables/index.ts +9 -0
  39. package/app/composables/methods/auth.ts +83 -0
  40. package/app/composables/methods/cart.ts +119 -0
  41. package/app/composables/methods/category.ts +27 -0
  42. package/app/composables/methods/checkout.ts +54 -0
  43. package/app/composables/methods/customer.ts +52 -0
  44. package/app/composables/methods/helpers.ts +5 -0
  45. package/app/composables/methods/index.ts +75 -0
  46. package/app/composables/methods/order.ts +39 -0
  47. package/app/composables/methods/product.ts +95 -0
  48. package/app/composables/methods/settings.ts +16 -0
  49. package/app/composables/models/cart.ts +95 -0
  50. package/app/composables/models/category.ts +13 -0
  51. package/app/composables/models/checkout.ts +17 -0
  52. package/app/composables/models/customer.ts +16 -0
  53. package/app/composables/models/facets.ts +25 -0
  54. package/app/composables/models/index.ts +94 -0
  55. package/app/composables/models/order.ts +43 -0
  56. package/app/composables/models/product.ts +73 -0
  57. package/app/composables/models/shared.ts +75 -0
  58. package/app/composables/orders.ts +69 -0
  59. package/app/composables/products/registry.ts +86 -0
  60. package/app/composables/products/types.ts +8 -0
  61. package/app/composables/products/useEvents.ts +26 -0
  62. package/app/composables/products/useGiftCards.ts +29 -0
  63. package/app/composables/products/useProducts.ts +12 -0
  64. package/app/composables/products/useSubscriptions.ts +29 -0
  65. package/app/composables/products.ts +30 -0
  66. package/app/composables/registry.ts +24 -0
  67. package/app/composables/useAuth.ts +43 -0
  68. package/app/composables/useBreakpoints/index.ts +1 -0
  69. package/app/composables/useBreakpoints/useBreakpoints.ts +28 -0
  70. package/app/composables/useCache.ts +38 -0
  71. package/app/composables/useCart/__tests__/useCart.spec.ts +11 -0
  72. package/app/composables/useCart/index.ts +1 -0
  73. package/app/composables/useCart/types.ts +17 -0
  74. package/app/composables/useCart/useCart.ts +46 -0
  75. package/app/composables/useCartShippingMethods/__tests__/useCartShippingMethods.spec.ts +11 -0
  76. package/app/composables/useCartShippingMethods/index.ts +1 -0
  77. package/app/composables/useCartShippingMethods/types.ts +17 -0
  78. package/app/composables/useCartShippingMethods/useCartShippingMethods.ts +47 -0
  79. package/app/composables/useCatalog.ts +26 -0
  80. package/app/composables/useContent.ts +26 -0
  81. package/app/composables/useCustomer/__tests__/useCustomer.spec.ts +25 -0
  82. package/app/composables/useCustomer/index.ts +2 -0
  83. package/app/composables/useCustomer/types.ts +17 -0
  84. package/app/composables/useCustomer/useCustomer.ts +40 -0
  85. package/app/composables/useCustomerAddress/__tests__/useCustomerAddress.spec.ts +11 -0
  86. package/app/composables/useCustomerAddress/index.ts +2 -0
  87. package/app/composables/useCustomerAddress/types.ts +17 -0
  88. package/app/composables/useCustomerAddress/useCustomerAddress.ts +55 -0
  89. package/app/composables/useCustomerOrder/__tests__/useCustomerOrder.spec.ts +11 -0
  90. package/app/composables/useCustomerOrder/adress.ts +10 -0
  91. package/app/composables/useCustomerOrder/index.ts +2 -0
  92. package/app/composables/useCustomerOrder/product.ts +37 -0
  93. package/app/composables/useCustomerOrder/types.ts +40 -0
  94. package/app/composables/useCustomerOrder/useCustomerOrder.ts +63 -0
  95. package/app/composables/useCustomerOrders/__tests__/useCustomerOrders.spec.ts +11 -0
  96. package/app/composables/useCustomerOrders/index.ts +2 -0
  97. package/app/composables/useCustomerOrders/types.ts +20 -0
  98. package/app/composables/useCustomerOrders/useCustomerOrders.ts +56 -0
  99. package/app/composables/useCustomerReturns/__tests__/useCustomerReturns.spec.ts +11 -0
  100. package/app/composables/useCustomerReturns/index.ts +2 -0
  101. package/app/composables/useCustomerReturns/types.ts +17 -0
  102. package/app/composables/useCustomerReturns/useCustomerReturns.ts +41 -0
  103. package/app/composables/useHandleError/index.ts +1 -0
  104. package/app/composables/useHandleError/types.ts +11 -0
  105. package/app/composables/useHandleError/useHandleError.ts +27 -0
  106. package/app/composables/useInventory.ts +29 -0
  107. package/app/composables/useLoading.ts +21 -0
  108. package/app/composables/useNotification.ts +21 -0
  109. package/app/composables/usePageTitle.ts +20 -0
  110. package/app/composables/useProduct/index.ts +2 -0
  111. package/app/composables/useProduct/types.ts +17 -0
  112. package/app/composables/useProduct/useProduct.ts +42 -0
  113. package/app/composables/useProductAttribute/__tests__/useProduct.mock.ts +31 -0
  114. package/app/composables/useProductAttribute/__tests__/useProductAttribute.spec.ts +14 -0
  115. package/app/composables/useProductAttribute/index.ts +1 -0
  116. package/app/composables/useProductAttribute/useProductAttribute.ts +37 -0
  117. package/app/composables/useProductRecommended/__tests__/useProductRecommended.spec.ts +12 -0
  118. package/app/composables/useProductRecommended/index.ts +1 -0
  119. package/app/composables/useProductRecommended/types.ts +17 -0
  120. package/app/composables/useProductRecommended/useProductRecommended.ts +43 -0
  121. package/app/composables/useProductReviews/__tests__/productReviews.mock.ts +20 -0
  122. package/app/composables/useProductReviews/__tests__/useProductReviews.spec.ts +22 -0
  123. package/app/composables/useProductReviews/index.ts +2 -0
  124. package/app/composables/useProductReviews/types.ts +17 -0
  125. package/app/composables/useProductReviews/useProductReviews.ts +46 -0
  126. package/app/composables/useProducts/__tests__/useProducts.spec.ts +11 -0
  127. package/app/composables/useProducts/types.ts +22 -0
  128. package/app/composables/useProducts/useProducts.ts +41 -0
  129. package/app/composables/useTax.ts +27 -0
  130. package/app/composables/validationRules/index.ts +1 -0
  131. package/app/composables/validationRules/password.feature +67 -0
  132. package/app/composables/validationRules/password.test.ts +89 -0
  133. package/app/composables/validationRules/password.ts +25 -0
  134. package/app/normalizers/Cart.query.ts +729 -0
  135. package/app/normalizers/Cart.type.ts +285 -0
  136. package/app/normalizers/Category.query.ts +146 -0
  137. package/app/normalizers/Category.type.ts +55 -0
  138. package/app/normalizers/CheckEmail.query.ts +28 -0
  139. package/app/normalizers/Checkout.query.ts +253 -0
  140. package/app/normalizers/Checkout.type.ts +77 -0
  141. package/app/normalizers/CmsBlock.query.ts +57 -0
  142. package/app/normalizers/CmsBlock.type.ts +25 -0
  143. package/app/normalizers/CmsPage.query.ts +59 -0
  144. package/app/normalizers/CmsPage.type.ts +26 -0
  145. package/app/normalizers/Config.query.ts +224 -0
  146. package/app/normalizers/Config.type.ts +196 -0
  147. package/app/normalizers/ContactForm.query.ts +49 -0
  148. package/app/normalizers/CreditMemo.type.ts +49 -0
  149. package/app/normalizers/GiftCard.type.ts +24 -0
  150. package/app/normalizers/Invoice.type.ts +58 -0
  151. package/app/normalizers/Menu.query.ts +54 -0
  152. package/app/normalizers/Menu.type.ts +22 -0
  153. package/app/normalizers/MyAccount.query.ts +268 -0
  154. package/app/normalizers/MyAccount.type.ts +129 -0
  155. package/app/normalizers/NewsletterSubscription.query.ts +38 -0
  156. package/app/normalizers/Order.query.ts +741 -0
  157. package/app/normalizers/Order.type.ts +268 -0
  158. package/app/normalizers/Payment.type.ts +28 -0
  159. package/app/normalizers/ProductAlerts.query.ts +23 -0
  160. package/app/normalizers/ProductCompare.query.ts +226 -0
  161. package/app/normalizers/ProductCompare.type.ts +90 -0
  162. package/app/normalizers/ProductList.query.ts +1620 -0
  163. package/app/normalizers/ProductList.type.ts +726 -0
  164. package/app/normalizers/Region.query.ts +58 -0
  165. package/app/normalizers/Region.type.ts +23 -0
  166. package/app/normalizers/Return.type.ts +50 -0
  167. package/app/normalizers/Review.query.ts +81 -0
  168. package/app/normalizers/Review.type.ts +42 -0
  169. package/app/normalizers/Slider.query.ts +72 -0
  170. package/app/normalizers/Slider.type.ts +26 -0
  171. package/app/normalizers/StoreInPickUp.query.ts +54 -0
  172. package/app/normalizers/StoreInPickUp.type.ts +59 -0
  173. package/app/normalizers/Subscription.type.ts +25 -0
  174. package/app/normalizers/Transaction.type.ts +20 -0
  175. package/app/normalizers/UrlRewrites.query.ts +55 -0
  176. package/app/normalizers/UrlRewrites.type.ts +25 -0
  177. package/app/normalizers/Wishlist.query.ts +202 -0
  178. package/app/normalizers/Wishlist.type.ts +42 -0
  179. package/app/pages/brand/[...slug].vue +76 -0
  180. package/app/pages/brands.vue +67 -0
  181. package/app/pages/cart.vue +142 -0
  182. package/app/pages/compare.vue +166 -0
  183. package/app/pages/departments/[...slug].vue +353 -0
  184. package/app/pages/departments/category/[...slug].vue +114 -0
  185. package/app/pages/incentive/[...id].vue +66 -0
  186. package/app/pages/invoice/[id].vue +309 -0
  187. package/app/pages/order/[id].vue +327 -0
  188. package/app/pages/product/[...id].vue +309 -0
  189. package/app/pages/product/showcases/index.vue +86 -0
  190. package/app/pages/shipment/[...id].vue +176 -0
  191. package/app/pages/shop/[...slug].vue +158 -0
  192. package/app/pages/shops.vue +76 -0
  193. package/app/pages/subscription/[...id].vue +147 -0
  194. package/app/pages/transaction/[...id].vue +74 -0
  195. package/app/routes/CategoryPage/CategoryPage.config.ts +28 -0
  196. package/app/routes/CategoryPage/CategoryPage.type.ts +8 -0
  197. package/app/routes/Checkout/Checkout.config.ts +3 -0
  198. package/app/routes/Checkout/Checkout.type.ts +14 -0
  199. package/app/routes/MyAccount/MyAccount.config.ts +1 -0
  200. package/app/routes/SearchPage/SearchPage.config.ts +1 -0
  201. package/app/routes/UrlRewrites/UrlRewrites.config.ts +5 -0
  202. package/app/stores/Cart/Cart.type.ts +26 -0
  203. package/app/stores/MyAccount/MyAccount.action.ts +7 -0
  204. package/app/stores/Notification/Notification.action.ts +40 -0
  205. package/app/stores/Notification/Notification.type.ts +16 -0
  206. package/app/stores/Popup/Popup.action.ts +30 -0
  207. package/app/stores/Product/Product.dispatcher.ts +53 -0
  208. package/app/stores/Product/Product.reducer.ts +12 -0
  209. package/app/stores/ProductList/ProductList.dispatcher.ts +35 -0
  210. package/app/stores/ProductList/ProductList.reducer.ts +13 -0
  211. package/app/stores/Store.type.ts +31 -0
  212. package/app/stores/Wishlist/Wishlist.type.ts +12 -0
  213. package/app/stores/cart.ts +218 -0
  214. package/app/stores/cartStore.ts +224 -0
  215. package/app/stores/checkout.ts +18 -0
  216. package/app/stores/compare.ts +65 -0
  217. package/app/stores/currency.js +29 -0
  218. package/app/stores/digital-products.js +11 -0
  219. package/app/stores/orders.ts +172 -0
  220. package/app/stores/product.ts +34 -0
  221. package/app/stores/productList.ts +35 -0
  222. package/app/stores/productListInfo.ts +0 -0
  223. package/app/stores/products.ts +118 -0
  224. package/app/stores/recentlyViewedProducts.ts +56 -0
  225. package/app/stores/review.ts +33 -0
  226. package/app/stores/storeInPickUp.ts +21 -0
  227. package/app/stores/user.ts +20 -0
  228. package/app/stores/wishlist.ts +46 -0
  229. package/app/types/Account.type.ts +141 -0
  230. package/app/types/Breadcrumbs.type.ts +23 -0
  231. package/app/types/CMS.type.ts +33 -0
  232. package/app/types/Category.type.ts +67 -0
  233. package/app/types/Checkout.type.ts +58 -0
  234. package/app/types/Common.type.ts +77 -0
  235. package/app/types/Config.type.ts +47 -0
  236. package/app/types/Device.type.ts +37 -0
  237. package/app/types/Direction.type.ts +23 -0
  238. package/app/types/Downloadable.type.ts +24 -0
  239. package/app/types/Error.type.ts +22 -0
  240. package/app/types/Field.type.ts +151 -0
  241. package/app/types/Global.type.ts +156 -0
  242. package/app/types/Graphql.type.ts +4497 -0
  243. package/app/types/Layout.type.ts +18 -0
  244. package/app/types/Menu.type.ts +39 -0
  245. package/app/types/MiniCart.type.ts +61 -0
  246. package/app/types/NotificationList.type.ts +34 -0
  247. package/app/types/Order.type.ts +174 -0
  248. package/app/types/Price.type.ts +72 -0
  249. package/app/types/ProductCompare.type.ts +24 -0
  250. package/app/types/ProductList.type.ts +351 -0
  251. package/app/types/Rating.type.ts +42 -0
  252. package/app/types/Router.type.ts +67 -0
  253. package/app/types/Slider.type.ts +25 -0
  254. package/app/types/StockStatus.type.ts +21 -0
  255. package/app/types/domain/index.ts +94 -0
  256. package/app/types/index.ts +33 -0
  257. package/app/types/shims.d.ts +52 -0
  258. package/app/types/tilework-opus.d.ts +48 -0
  259. package/app/utils/Address/Address.type.ts +28 -0
  260. package/app/utils/Address/index.ts +325 -0
  261. package/app/utils/Auth/IsSignedIn.ts +4 -0
  262. package/app/utils/Auth/Token.ts +9 -0
  263. package/app/utils/Base64/Base64.ts +16 -0
  264. package/app/utils/Base64/index.ts +12 -0
  265. package/app/utils/Browser/Browser.ts +29 -0
  266. package/app/utils/Browser/index.ts +12 -0
  267. package/app/utils/BrowserDatabase/BrowserDatabase.ts +70 -0
  268. package/app/utils/BrowserDatabase/index.ts +12 -0
  269. package/app/utils/CSS/CSS.ts +65 -0
  270. package/app/utils/CSS/index.ts +12 -0
  271. package/app/utils/Cache/Cache.ts +99 -0
  272. package/app/utils/Cart/Cart.ts +300 -0
  273. package/app/utils/Cart/Cart.type.ts +76 -0
  274. package/app/utils/Cart/Token.ts +59 -0
  275. package/app/utils/Cart/index.ts +13 -0
  276. package/app/utils/Category/Filters.ts +39 -0
  277. package/app/utils/Category/index.ts +12 -0
  278. package/app/utils/Common/index.ts +32 -0
  279. package/app/utils/Compare/Compare.ts +89 -0
  280. package/app/utils/Compare/index.ts +12 -0
  281. package/app/utils/Currency/Currency.ts +84 -0
  282. package/app/utils/Currency/index.ts +12 -0
  283. package/app/utils/DynamicReducer/DynamicReducer.type.ts +14 -0
  284. package/app/utils/DynamicReducer/Helper.ts +30 -0
  285. package/app/utils/DynamicReducer/index.tsx +35 -0
  286. package/app/utils/ElementTransition/ElementTransition.ts +100 -0
  287. package/app/utils/Form/Extract.ts +316 -0
  288. package/app/utils/Form/Form.ts +46 -0
  289. package/app/utils/Form/Form.type.ts +60 -0
  290. package/app/utils/Form/Transform.ts +33 -0
  291. package/app/utils/FormPortalCollector/index.ts +45 -0
  292. package/app/utils/History/History.type.ts +31 -0
  293. package/app/utils/History/index.ts +17 -0
  294. package/app/utils/Manipulations/Array.ts +18 -0
  295. package/app/utils/Manipulations/Date.ts +36 -0
  296. package/app/utils/Manipulations/index.ts +14 -0
  297. package/app/utils/Media/Media.ts +27 -0
  298. package/app/utils/Media/index.ts +13 -0
  299. package/app/utils/Menu/Menu.ts +116 -0
  300. package/app/utils/Menu/Menu.type.ts +37 -0
  301. package/app/utils/Menu/index.ts +12 -0
  302. package/app/utils/Mobile/index.ts +13 -0
  303. package/app/utils/Mobile/isMobile.ts +34 -0
  304. package/app/utils/Orders/Orders.ts +71 -0
  305. package/app/utils/Orders/Orders.type.ts +19 -0
  306. package/app/utils/Orders/index.ts +13 -0
  307. package/app/utils/Polyfill/index.ts +336 -0
  308. package/app/utils/Preload/CategoryPreload.ts +74 -0
  309. package/app/utils/Preload/ProductPreload.ts +28 -0
  310. package/app/utils/Preload/index.ts +75 -0
  311. package/app/utils/Price/Price.config.ts +189 -0
  312. package/app/utils/Price/Price.ts +63 -0
  313. package/app/utils/Price/index.ts +12 -0
  314. package/app/utils/Product/Extract.ts +652 -0
  315. package/app/utils/Product/Product.ts +575 -0
  316. package/app/utils/Product/Product.type.ts +260 -0
  317. package/app/utils/Product/Transform.ts +382 -0
  318. package/app/utils/Product/index.ts +12 -0
  319. package/app/utils/Promise/MakeCancelable.ts +44 -0
  320. package/app/utils/Promise/Promise.type.ts +15 -0
  321. package/app/utils/Promise/index.ts +13 -0
  322. package/app/utils/Query/Field.ts +71 -0
  323. package/app/utils/Query/Fragment.ts +22 -0
  324. package/app/utils/Query/PrepareDocument.ts +119 -0
  325. package/app/utils/Query/Query.type.ts +26 -0
  326. package/app/utils/Query/index.ts +15 -0
  327. package/app/utils/Request/Config.ts +21 -0
  328. package/app/utils/Request/DataContainer.ts +102 -0
  329. package/app/utils/Request/Debounce.ts +48 -0
  330. package/app/utils/Request/Error.ts +31 -0
  331. package/app/utils/Request/Hash.ts +88 -0
  332. package/app/utils/Request/LowPriorityLoad.ts +32 -0
  333. package/app/utils/Request/LowPriorityRender.ts +55 -0
  334. package/app/utils/Request/Mutation.ts +25 -0
  335. package/app/utils/Request/Query.ts +25 -0
  336. package/app/utils/Request/QueryDispatcher.ts +135 -0
  337. package/app/utils/Request/Request.ts +310 -0
  338. package/app/utils/Store/Store.type.ts +26 -0
  339. package/app/utils/Store/index.ts +71 -0
  340. package/app/utils/Url/Url.ts +297 -0
  341. package/app/utils/Url/index.ts +12 -0
  342. package/app/utils/Validator/Config.ts +96 -0
  343. package/app/utils/Validator/Validator.ts +268 -0
  344. package/app/utils/Validator/Validator.type.ts +47 -0
  345. package/app/utils/Validator/index.ts +12 -0
  346. package/app/utils/Wishlist/Wishlist.ts +65 -0
  347. package/app/utils/Wishlist/index.ts +12 -0
  348. package/app/utils/client.ts +280 -0
  349. package/app/utils/index.ts +53 -0
  350. package/app/utils/normalizer.ts +23 -0
  351. package/app/utils/normalizers/magento.ts +29 -0
  352. package/app/utils/normalizers/shopify.ts +29 -0
  353. package/nuxt.config.ts +11 -0
  354. package/package.json +43 -0
  355. package/tsconfig.json +45 -0
@@ -0,0 +1,16 @@
1
+ import type { Simplify } from '../defs/typeHelpers';
2
+ import type { SfCurrency } from "../models";
3
+
4
+ export interface GetCurrenciesExtendedArgs {}
5
+ export interface GetCurrenciesCustomArgs {}
6
+
7
+ export type GetCurrenciesArgs = {
8
+ //$extended?: GetCurrenciesExtendedArgs;
9
+ //$custom?: GetCurrenciesCustomArgs;
10
+ };
11
+
12
+ export type GetCurrencies = (args?: Simplify<GetCurrenciesArgs>) => Promise<{
13
+ currencies: SfCurrency[];
14
+ defaultCurrency: SfCurrency;
15
+ currentCurrency: SfCurrency;
16
+ }>;
@@ -0,0 +1,95 @@
1
+ import type { InferCustom } from "../defs";
2
+ import type { SfShippingMethod } from "./checkout";
3
+ import type {
4
+ Maybe,
5
+ SfAddress,
6
+ SfAttribute,
7
+ SfDiscountablePrice,
8
+ SfId,
9
+ SfImage,
10
+ SfMoney,
11
+ } from "./shared";
12
+
13
+ export interface SfCartLineItemCustom extends InferCustom<"normalizeCartLineItem"> {}
14
+
15
+ export interface SfCartLineItem {
16
+ attributes: SfAttribute[];
17
+ productId: SfId;
18
+ /**
19
+ * ID of the cart's line item
20
+ */
21
+ id: SfId;
22
+ image: Maybe<SfImage>;
23
+ name: Maybe<string>;
24
+ quantity: number;
25
+ sku: Maybe<string>;
26
+ slug: string;
27
+ /**
28
+ * Product of quantity and unitPrice
29
+ */
30
+ totalPrice: Maybe<SfMoney>;
31
+ unitPrice: Maybe<SfDiscountablePrice>;
32
+ quantityLimit: Maybe<number>;
33
+ $custom?: SfCartLineItemCustom;
34
+ }
35
+
36
+ export interface SfCartCouponCustom extends InferCustom<"normalizeCartCoupon"> {}
37
+
38
+ export interface SfCartCoupon {
39
+ code: string;
40
+ id: string;
41
+ name: Maybe<string>;
42
+ $custom?: SfCartCouponCustom;
43
+ }
44
+
45
+ export interface SfCartCustom extends InferCustom<"normalizeCart"> {}
46
+
47
+ export interface SfCart {
48
+ appliedCoupons: SfCartCoupon[];
49
+ /**
50
+ * @default null
51
+ */
52
+ billingAddress: Maybe<SfAddress>;
53
+ /**
54
+ * Active customer's email. Required to complete the checkout
55
+ * @default null
56
+ */
57
+ customerEmail: Maybe<string>;
58
+ id: SfId;
59
+ /**
60
+ * Shipping address is required to get available shipping methods
61
+ * @default null
62
+ */
63
+ lineItems: SfCartLineItem[];
64
+ shippingAddress: Maybe<SfAddress>;
65
+ /**
66
+ * Required to complete the checkout. To get available methods use `getAvailableShippingMethods`
67
+ * @default null
68
+ */
69
+ shippingMethod: Maybe<SfShippingMethod>;
70
+ /**
71
+ * Difference of `subtotalRegularPrice` and discounts applied to line items before providing coupons.
72
+ * If none of the products are discounted, price will be equal to `subtotalRegularPrice`
73
+ */
74
+ subtotalDiscountedPrice: SfMoney;
75
+ /**
76
+ * Total regular price of all line items (coupons, taxes, shipping excluded)
77
+ */
78
+ subtotalRegularPrice: SfMoney;
79
+ totalCouponDiscounts: SfMoney;
80
+ /**
81
+ * Total count of all line items and their's quantities in cart
82
+ */
83
+ totalItems: number;
84
+ /**
85
+ * Total cart price (discounts, taxes, shipping included)
86
+ */
87
+ totalPrice: SfMoney;
88
+ /**
89
+ * Calculated after applying shipping method
90
+ * @default null
91
+ */
92
+ totalShippingPrice: Maybe<SfMoney>;
93
+ totalTax: SfMoney;
94
+ $custom?: SfCartCustom;
95
+ }
@@ -0,0 +1,13 @@
1
+ import type { InferCustom } from "../defs";
2
+ import type { Maybe, SfId } from "./shared";
3
+
4
+ export interface SfCategoryCustom extends InferCustom<"normalizeCartCoupon"> {}
5
+
6
+ export interface SfCategory {
7
+ id: SfId;
8
+ name: string;
9
+ slug: string;
10
+ subcategories: Maybe<SfCategory[]>;
11
+ parentCategoryId: Maybe<SfId>;
12
+ $custom?: SfCategoryCustom;
13
+ }
@@ -0,0 +1,17 @@
1
+ import type { InferCustom } from "../defs";
2
+ import type { Maybe, SfMoney } from "./shared";
3
+
4
+ export interface SfShippingMethodCustom extends InferCustom<"normalizeCartCoupon"> {}
5
+
6
+ export interface SfShippingMethod {
7
+ description: Maybe<string>;
8
+ estimatedDelivery: Maybe<string>;
9
+ id: string;
10
+ name: string;
11
+ price: SfMoney;
12
+ $custom?: SfShippingMethodCustom;
13
+ }
14
+
15
+ export interface SfShippingMethods {
16
+ methods: SfShippingMethod[];
17
+ }
@@ -0,0 +1,16 @@
1
+ import type { InferCustom } from "../defs";
2
+ import type { SfAddress, SfId } from "./shared";
3
+
4
+ export interface SfCustomerCustom extends InferCustom<"normalizeCustomer"> {}
5
+
6
+ export interface SfCustomer {
7
+ id: SfId;
8
+ email: string;
9
+ firstName: string;
10
+ lastName: string;
11
+ $custom?: SfCustomerCustom;
12
+ }
13
+
14
+ export interface SfCustomerAddress extends SfAddress {
15
+ id: SfId;
16
+ }
@@ -0,0 +1,25 @@
1
+ import type { InferCustom } from "../defs";
2
+ import type { Maybe } from "./shared";
3
+
4
+ export enum SfFacetTypes {
5
+ MULTI_SELECT = "MULTI_SELECT",
6
+ SINGLE_SELECT = "SINGLE_SELECT",
7
+ }
8
+
9
+ export type SfFacetType = `${SfFacetTypes}`;
10
+
11
+ export interface SfFacetItem {
12
+ label: string;
13
+ value: string;
14
+ productCount: Maybe<number>;
15
+ }
16
+
17
+ export interface SfFacetCustom extends InferCustom<"normalizeFacet"> {}
18
+
19
+ export interface SfFacet {
20
+ label: string;
21
+ name: string;
22
+ values: SfFacetItem[];
23
+ type: Maybe<SfFacetType | (string & Record<never, never>)>;
24
+ $custom?: SfFacetCustom;
25
+ }
@@ -0,0 +1,94 @@
1
+ import type { SfCart, SfCartCoupon, SfCartCouponCustom, SfCartLineItemCustom } from "./cart";
2
+ import type { SfCategory, SfCategoryCustom } from "./category";
3
+ import type { SfShippingMethod, SfShippingMethodCustom, SfShippingMethods } from "./checkout";
4
+ import type { SfCustomer, SfCustomerAddress, SfCustomerCustom } from "./customer";
5
+ import type { SfFacet, SfFacetCustom, SfFacetItem, SfFacetType, SfFacetTypes } from "./facets";
6
+ import type {
7
+ SfOrder,
8
+ SfOrderCustom,
9
+ SfOrderLineItem,
10
+ SfOrderLineItemCustom,
11
+ SfOrderListItem,
12
+ SfOrderListItemCustom,
13
+ } from "./order";
14
+ import type {
15
+ SfPagination,
16
+ SfPaginationCustom,
17
+ SfProduct,
18
+ SfProductCatalogItem,
19
+ SfProductCatalogItemCustom,
20
+ SfProductCustom,
21
+ SfProductReview,
22
+ SfProductReviewCustom,
23
+ SfProductVariant,
24
+ } from "./product";
25
+ import type {
26
+ SfAddress,
27
+ SfAddressCustom,
28
+ SfAttribute,
29
+ SfAttributeCustom,
30
+ SfCreateAddressBody,
31
+ SfCurrency,
32
+ SfDiscountablePrice,
33
+ SfDiscountablePriceCustom,
34
+ SfImage,
35
+ SfImageCustom,
36
+ SfMoney,
37
+ SfMoneyCustom,
38
+ } from "./shared";
39
+
40
+ export * from "./cart";
41
+ export * from "./category";
42
+ export * from "./checkout";
43
+ export * from "./customer";
44
+ export * from "./facets";
45
+ export * from "./product";
46
+ export * from "./shared";
47
+ export * from "./order";
48
+
49
+ export interface SfContract {
50
+ SfCartLineItemCustom: SfCartLineItemCustom;
51
+ SfCartCouponCustom: SfCartCouponCustom;
52
+ SfCartCoupon: SfCartCoupon;
53
+ SfCart: SfCart;
54
+ SfCategoryCustom: SfCategoryCustom;
55
+ SfCategory: SfCategory;
56
+ SfShippingMethodCustom: SfShippingMethodCustom;
57
+ SfShippingMethod: SfShippingMethod;
58
+ SfShippingMethods: SfShippingMethods;
59
+ SfCustomerCustom: SfCustomerCustom;
60
+ SfCustomer: SfCustomer;
61
+ SfCustomerAddress: SfCustomerAddress;
62
+ SfFacetTypes: SfFacetTypes;
63
+ SfFacetType: SfFacetType;
64
+ SfFacetItem: SfFacetItem;
65
+ SfFacetCustom: SfFacetCustom;
66
+ SfFacet: SfFacet;
67
+ SfOrderLineItemCustom: SfOrderLineItemCustom;
68
+ SfOrderLineItem: SfOrderLineItem;
69
+ SfOrderCustom: SfOrderCustom;
70
+ SfOrder: SfOrder;
71
+ SfOrderListItemCustom: SfOrderListItemCustom;
72
+ SfOrderListItem: SfOrderListItem;
73
+ SfProductVariant: SfProductVariant;
74
+ SfProductReviewCustom: SfProductReviewCustom;
75
+ SfProductReview: SfProductReview;
76
+ SfProductCustom: SfProductCustom;
77
+ SfProduct: SfProduct;
78
+ SfProductCatalogItemCustom: SfProductCatalogItemCustom;
79
+ SfProductCatalogItem: SfProductCatalogItem;
80
+ SfPaginationCustom: SfPaginationCustom;
81
+ SfPagination: SfPagination;
82
+ SfMoneyCustom: SfMoneyCustom;
83
+ SfMoney: SfMoney;
84
+ SfDiscountablePriceCustom: SfDiscountablePriceCustom;
85
+ SfDiscountablePrice: SfDiscountablePrice;
86
+ SfImageCustom: SfImageCustom;
87
+ SfImage: SfImage;
88
+ SfAttributeCustom: SfAttributeCustom;
89
+ SfAttribute: SfAttribute;
90
+ SfCreateAddressBody: SfCreateAddressBody;
91
+ SfAddressCustom: SfAddressCustom;
92
+ SfAddress: SfAddress;
93
+ SfCurrency: SfCurrency;
94
+ }
@@ -0,0 +1,43 @@
1
+ import type { InferCustom } from "../defs";
2
+ import type { SfShippingMethod } from "./checkout";
3
+ import type { Maybe, SfAddress, SfAttribute, SfId, SfImage, SfMoney } from "./shared";
4
+
5
+ export interface SfOrderLineItemCustom extends InferCustom<"normalizeOrderLineItem"> {}
6
+
7
+ export interface SfOrderLineItem {
8
+ id: SfId;
9
+ attributes: SfAttribute[];
10
+ unitPrice: SfMoney;
11
+ totalPrice: SfMoney;
12
+ quantity: number;
13
+ image: Maybe<SfImage>;
14
+ productId: SfId;
15
+ productName: string;
16
+ sku: Maybe<string>;
17
+ $custom?: SfOrderLineItemCustom;
18
+ }
19
+
20
+ export interface SfOrderCustom extends InferCustom<"normalizeOrder"> {}
21
+
22
+ export interface SfOrder {
23
+ id: SfId;
24
+ orderDate: string;
25
+ status: string;
26
+ lineItems: SfOrderLineItem[];
27
+ subtotalPrice: SfMoney;
28
+ totalShippingPrice: SfMoney;
29
+ totalTax: SfMoney;
30
+ totalPrice: SfMoney;
31
+ shippingAddress: SfAddress;
32
+ billingAddress: Maybe<SfAddress>;
33
+ shippingMethod: SfShippingMethod;
34
+ paymentMethod: string;
35
+ $custom?: SfOrderCustom;
36
+ }
37
+
38
+ export interface SfOrderListItemCustom extends InferCustom<"normalizeOrder"> {}
39
+
40
+ export interface SfOrderListItem
41
+ extends Pick<SfOrder, "id" | "orderDate" | "totalPrice" | "status"> {
42
+ $custom?: SfOrderListItemCustom;
43
+ }
@@ -0,0 +1,73 @@
1
+ import type { InferCustom } from "../defs";
2
+ import type { Maybe, SfAttribute, SfDiscountablePrice, SfId, SfImage } from "./shared";
3
+
4
+ export interface SfProductVariant {
5
+ id: SfId;
6
+ slug: string;
7
+ sku: Maybe<string>;
8
+ name: Maybe<string>;
9
+ /*
10
+ * Maximum available quantity for variant, null if unlimited
11
+ */
12
+ quantityLimit: Maybe<number>;
13
+ attributes: SfAttribute[];
14
+ }
15
+
16
+ export interface SfProductReviewCustom extends InferCustom<"normalizeProductReview"> {}
17
+
18
+ export interface SfProductReview {
19
+ id: SfId;
20
+ title: Maybe<string>;
21
+ text: Maybe<string>;
22
+ rating: Maybe<number>;
23
+ /*
24
+ * Name of the reviewer (Full name or nickname)
25
+ */
26
+ reviewer: Maybe<string>;
27
+ /*
28
+ * Creation date in ISO 8601 format
29
+ */
30
+ createdAt: string;
31
+ $custom?: SfProductReviewCustom;
32
+ }
33
+
34
+ export interface SfProductCustom extends InferCustom<"normalizeProduct"> {}
35
+
36
+ export interface SfProduct {
37
+ id: SfId;
38
+ sku: Maybe<string>;
39
+ name: Maybe<string>;
40
+ slug: string;
41
+ description: Maybe<string>;
42
+ price: Maybe<SfDiscountablePrice>;
43
+ primaryImage: Maybe<SfImage>;
44
+ gallery: SfImage[];
45
+ rating: Maybe<{
46
+ average: number;
47
+ count: number;
48
+ }>;
49
+ variants: SfProductVariant[];
50
+ attributes: SfAttribute[];
51
+ /*
52
+ * Maximum available quantity for product, null if unlimited
53
+ */
54
+ quantityLimit: Maybe<number>;
55
+ $custom?: SfProductCustom;
56
+ }
57
+
58
+ export interface SfProductCatalogItemCustom extends InferCustom<"normalizeProductCatalogItem"> {}
59
+
60
+ export interface SfProductCatalogItem
61
+ extends Omit<SfProduct, "variants" | "gallery" | "description" | "attributes"> {
62
+ $custom?: SfProductCatalogItemCustom;
63
+ }
64
+
65
+ export interface SfPaginationCustom extends InferCustom<"normalizePagination"> {}
66
+
67
+ export interface SfPagination {
68
+ currentPage: number;
69
+ pageSize: Maybe<number>;
70
+ totalResults: number;
71
+ totalPages: number;
72
+ $custom?: SfPaginationCustom;
73
+ }
@@ -0,0 +1,75 @@
1
+ import type { InferCustom } from "../defs";
2
+
3
+ export type Maybe<TType> = TType | null;
4
+
5
+ export type SfId = string;
6
+
7
+ export interface SfMoneyCustom extends InferCustom<"normalizeMoney"> {}
8
+
9
+ export interface SfMoney {
10
+ currency: string;
11
+ amount: number;
12
+ precisionAmount: string;
13
+ $custom?: SfMoneyCustom;
14
+ }
15
+
16
+ export interface SfDiscountablePriceCustom extends InferCustom<"normalizeDiscountablePrice"> {}
17
+
18
+ export interface SfDiscountablePrice {
19
+ isDiscounted: boolean;
20
+ regularPrice: SfMoney;
21
+ /**
22
+ * Price with discounts. If there is no discount, it will be the same as regularPrice
23
+ */
24
+ value: SfMoney;
25
+ $custom?: SfDiscountablePriceCustom;
26
+ }
27
+
28
+ export interface SfImageCustom extends InferCustom<"normalizeImage"> {}
29
+
30
+ export interface SfImage {
31
+ alt: Maybe<string>;
32
+ url: string;
33
+ $custom?: SfImageCustom;
34
+ }
35
+
36
+ export interface SfAttributeCustom extends InferCustom<"normalizeAttribute"> {}
37
+
38
+ export interface SfAttribute {
39
+ label: string;
40
+ name: string;
41
+ value: string;
42
+ valueLabel: string;
43
+ $custom?: SfAttributeCustom;
44
+ }
45
+
46
+ export interface SfCreateAddressBody {
47
+ address1: string;
48
+ address2?: Maybe<string>;
49
+ city: string;
50
+ country: string;
51
+ firstName: string;
52
+ lastName: string;
53
+ phoneNumber: string;
54
+ postalCode: string;
55
+ state: string;
56
+ titleCode: string;
57
+ }
58
+
59
+ export interface SfAddressCustom extends InferCustom<"normalizeAddress"> {}
60
+
61
+ export interface SfAddress {
62
+ address1: Maybe<string>;
63
+ address2?: Maybe<string>;
64
+ city: Maybe<string>;
65
+ country: Maybe<string>;
66
+ firstName: Maybe<string>;
67
+ lastName: Maybe<string>;
68
+ phoneNumber: Maybe<string>;
69
+ postalCode: Maybe<string>;
70
+ state: Maybe<string>;
71
+ titleCode: Maybe<string>;
72
+ $custom?: SfAddressCustom;
73
+ }
74
+
75
+ export type SfCurrency = string;
@@ -0,0 +1,69 @@
1
+ import { getCommerceClient } from '../utils/client'
2
+
3
+ function clientOrNull() {
4
+ try {
5
+ return getCommerceClient()
6
+ } catch (e) {
7
+ return null
8
+ }
9
+ }
10
+
11
+ export function useOrders() {
12
+ const client = clientOrNull()
13
+ return {
14
+ async getOrders(filters: any = {}) {
15
+ if (client && typeof client.listOrders === 'function') return client.listOrders(filters)
16
+ return []
17
+ },
18
+ async getOrderById(id: string) {
19
+ if (client && typeof client.getOrder === 'function') return client.getOrder(id)
20
+ return null
21
+ }
22
+ }
23
+ }
24
+
25
+ export function useReturns() {
26
+ const client = clientOrNull()
27
+ return {
28
+ async getReturns(opts: any = {}) {
29
+ if (client && typeof client.listReturns === 'function') return client.listReturns(opts)
30
+ return []
31
+ },
32
+ async createReturn(data: any) {
33
+ if (client && typeof client.createReturn === 'function') return client.createReturn(data)
34
+ return null
35
+ }
36
+ }
37
+ }
38
+
39
+ export function useTransactions() {
40
+ const client = clientOrNull()
41
+ return {
42
+ async getTransactions(opts: any = {}) {
43
+ if (client && typeof client.listTransactions === 'function') return client.listTransactions(opts)
44
+ return []
45
+ }
46
+ }
47
+ }
48
+
49
+ export function useInvoices() {
50
+ const client = clientOrNull()
51
+ return {
52
+ async getInvoices(opts: any = {}) {
53
+ if (client && typeof client.listInvoices === 'function') return client.listInvoices(opts)
54
+ return []
55
+ }
56
+ }
57
+ }
58
+
59
+ export function useCreditMemos() {
60
+ const client = clientOrNull()
61
+ return {
62
+ async getCreditMemos(opts: any = {}) {
63
+ if (client && typeof client.listCreditMemos === 'function') return client.listCreditMemos(opts)
64
+ return []
65
+ }
66
+ }
67
+ }
68
+
69
+ export default useOrders
@@ -0,0 +1,86 @@
1
+ import { ProductProvider } from "./types"
2
+
3
+ // Product providers
4
+ const providers: Record<string, ProductProvider> = {}
5
+
6
+ export function registerProductProvider(name: string, provider: ProductProvider) {
7
+ providers[name] = provider
8
+ }
9
+
10
+ export function getProductProvider(name: string) {
11
+ const provider = providers[name]
12
+ if (!provider) throw new Error(`Product provider "${name}" not found`)
13
+ return provider
14
+ }
15
+
16
+ export function registerProductProviderRuntime(name: string, provider: ProductProvider) {
17
+ registerProductProvider(name, provider)
18
+ }
19
+
20
+ // Event providers (optional domain)
21
+ type EventProvider = {
22
+ getEvent?(id: string): Promise<any>
23
+ listEvents?(params?: Record<string, any>): Promise<any[]>
24
+ }
25
+
26
+ const eventProviders: Record<string, EventProvider> = {}
27
+
28
+ export function registerEventProvider(name: string, provider: EventProvider) {
29
+ eventProviders[name] = provider
30
+ }
31
+
32
+ export function getEventProvider(name: string) {
33
+ const provider = eventProviders[name]
34
+ if (!provider) throw new Error(`Event provider "${name}" not found`)
35
+ return provider
36
+ }
37
+
38
+ export function registerEventProviderRuntime(name: string, provider: EventProvider) {
39
+ registerEventProvider(name, provider)
40
+ }
41
+
42
+ // Gift card providers (optional domain)
43
+ type GiftCardProvider = {
44
+ getGiftCard?(id: string): Promise<any>
45
+ listGiftCards?(params?: Record<string, any>): Promise<any[]>
46
+ redeemGiftCard?(code: string): Promise<any>
47
+ }
48
+
49
+ const giftCardProviders: Record<string, GiftCardProvider> = {}
50
+
51
+ export function registerGiftCardProvider(name: string, provider: GiftCardProvider) {
52
+ giftCardProviders[name] = provider
53
+ }
54
+
55
+ export function getGiftCardProvider(name: string) {
56
+ const provider = giftCardProviders[name]
57
+ if (!provider) throw new Error(`Gift card provider "${name}" not found`)
58
+ return provider
59
+ }
60
+
61
+ export function registerGiftCardProviderRuntime(name: string, provider: GiftCardProvider) {
62
+ registerGiftCardProvider(name, provider)
63
+ }
64
+
65
+ // Subscription providers (optional domain)
66
+ type SubscriptionProvider = {
67
+ getSubscription?(id: string): Promise<any>
68
+ listSubscriptions?(params?: Record<string, any>): Promise<any[]>
69
+ subscribe?(payload: Record<string, any>): Promise<any>
70
+ }
71
+
72
+ const subscriptionProviders: Record<string, SubscriptionProvider> = {}
73
+
74
+ export function registerSubscriptionProvider(name: string, provider: SubscriptionProvider) {
75
+ subscriptionProviders[name] = provider
76
+ }
77
+
78
+ export function getSubscriptionProvider(name: string) {
79
+ const provider = subscriptionProviders[name]
80
+ if (!provider) throw new Error(`Subscription provider "${name}" not found`)
81
+ return provider
82
+ }
83
+
84
+ export function registerSubscriptionProviderRuntime(name: string, provider: SubscriptionProvider) {
85
+ registerSubscriptionProvider(name, provider)
86
+ }
@@ -0,0 +1,8 @@
1
+ import { Product } from '../../types/domain'
2
+
3
+ export type { Product }
4
+
5
+ export interface ProductProvider {
6
+ getProduct(id: string): Promise<Product>
7
+ listProducts(params?: Record<string, any>): Promise<Product[]>
8
+ }
@@ -0,0 +1,26 @@
1
+
2
+ import { getCommerceConfig } from '../config'
3
+ import { getEventProvider } from './registry'
4
+
5
+ export function useEvents() {
6
+ const cfg = getCommerceConfig() as any
7
+ const providerName = cfg.eventsProvider || cfg.productProvider
8
+
9
+ let provider: any
10
+ try {
11
+ provider = getEventProvider(providerName)
12
+ } catch (e) {
13
+ provider = {
14
+ getEvent: async () => null,
15
+ listEvents: async () => []
16
+ }
17
+ }
18
+
19
+ return {
20
+ getEvent: provider.getEvent ?? (async (id: string) => null),
21
+ listEvents: provider.listEvents ?? (async (params?: Record<string, any>) => [])
22
+ }
23
+ }
24
+
25
+ export default useEvents
26
+
@@ -0,0 +1,29 @@
1
+
2
+ import { getCommerceConfig } from '../config'
3
+ import { getGiftCardProvider } from './registry'
4
+
5
+ export function useGiftCards() {
6
+ const cfg = getCommerceConfig() as any
7
+ const providerName = cfg.giftCardsProvider || cfg.productProvider
8
+
9
+ let provider: any
10
+ try {
11
+ provider = getGiftCardProvider(providerName)
12
+ } catch (e) {
13
+ provider = {
14
+ getGiftCard: async () => null,
15
+ listGiftCards: async () => [],
16
+ redeemGiftCard: async () => ({ success: false })
17
+ }
18
+ }
19
+
20
+ return {
21
+ getGiftCard: provider.getGiftCard ?? (async (id: string) => null),
22
+ listGiftCards: provider.listGiftCards ?? (async (params?: Record<string, any>) => []),
23
+ redeemGiftCard: provider.redeemGiftCard ?? (async (code: string) => ({ success: false }))
24
+ }
25
+ }
26
+
27
+ export default useGiftCards
28
+
29
+