@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,351 @@
1
+ /**
2
+ * M Framework - Flexible backend agnostic framework.
3
+ *
4
+ * Copyright © Meeovi, LTD. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package mframework/mframework
9
+ * @link https://github.com/meeovi/mframework
10
+ */
11
+
12
+ import PropTypes from 'prop-types';
13
+
14
+ import { MetaTitleType } from './Common.type';
15
+ import { PriceType } from './Price.type';
16
+ import { UrlRewriteType } from './Router.type';
17
+ import { StockStatusType } from './StockStatus.type';
18
+
19
+ // Support for comtabilitiy
20
+
21
+ export const AttributeType = PropTypes.shape({
22
+ attribute_code: PropTypes.string,
23
+ attribute_type: PropTypes.string,
24
+ attribute_value: PropTypes.string,
25
+ attribute_label: PropTypes.string,
26
+ attribute_options: PropTypes.objectOf(PropTypes.shape({
27
+ label: PropTypes.string,
28
+ value: PropTypes.string,
29
+ })),
30
+ has_swatch: PropTypes.bool,
31
+ is_boolean: PropTypes.bool,
32
+ });
33
+
34
+ export const AttributesType = PropTypes.oneOfType([
35
+ PropTypes.objectOf(AttributeType),
36
+ PropTypes.arrayOf(PropTypes.objectOf(AttributeType)),
37
+ ]);
38
+
39
+ export const FilterAttributeType = PropTypes.shape({
40
+ attribute_code: PropTypes.string,
41
+ attribute_label: PropTypes.string,
42
+ attribute_position: PropTypes.number,
43
+ attribute_values: PropTypes.arrayOf(PropTypes.string),
44
+ attribute_type: PropTypes.string,
45
+ attribute_options: PropTypes.objectOf(PropTypes.shape({
46
+ label: PropTypes.string,
47
+ count: PropTypes.number,
48
+ value_string: PropTypes.string,
49
+ swatch_data: PropTypes.shape({ type: PropTypes.string, value: PropTypes.string }),
50
+ })),
51
+ is_boolean: PropTypes.bool,
52
+ has_swatch: PropTypes.bool,
53
+ });
54
+
55
+ export const BreadcrumbsType = PropTypes.arrayOf(
56
+ PropTypes.shape({
57
+ name: PropTypes.string,
58
+ url_path: PropTypes.string,
59
+ }),
60
+ );
61
+
62
+ export const ImageType = PropTypes.shape({
63
+ path: PropTypes.string,
64
+ url: PropTypes.string,
65
+ });
66
+
67
+ export const CategoryType = PropTypes.shape({
68
+ name: PropTypes.string,
69
+ url_path: PropTypes.string,
70
+ breadcrumbs: BreadcrumbsType,
71
+ });
72
+
73
+ export const CategoriesType = PropTypes.arrayOf(CategoryType);
74
+
75
+ export const ThumbnailType = PropTypes.shape({
76
+ height: PropTypes.string,
77
+ type: PropTypes.string,
78
+ url: PropTypes.string,
79
+ width: PropTypes.string,
80
+ });
81
+
82
+ export const MediaItemType = PropTypes.shape({
83
+ thumbnail: ThumbnailType,
84
+ file: PropTypes.string,
85
+ video_content: PropTypes.shape({
86
+ media_type: PropTypes.string,
87
+ video_description: PropTypes.string,
88
+ video_metadata: PropTypes.string,
89
+ video_provider: PropTypes.string,
90
+ video_title: PropTypes.string,
91
+ video_url: PropTypes.string,
92
+ }),
93
+ id: PropTypes.number,
94
+ media_type: PropTypes.string,
95
+ label: PropTypes.string,
96
+ });
97
+
98
+ export const MediaType = PropTypes.arrayOf(MediaItemType);
99
+
100
+ export const ProductLinksType = PropTypes.arrayOf(
101
+ PropTypes.shape({
102
+ link_type: PropTypes.string,
103
+ linked_product_sku: PropTypes.string,
104
+ position: PropTypes.number,
105
+ }),
106
+ );
107
+
108
+ export const ReviewSummaryShape = {
109
+ rating_summary: PropTypes.number,
110
+ review_count: PropTypes.number,
111
+ };
112
+
113
+ export const RatingVoteType = PropTypes.shape({
114
+ vote_id: PropTypes.number,
115
+ rating_code: PropTypes.string,
116
+ percent: PropTypes.number,
117
+ });
118
+
119
+ export const ReviewsType = PropTypes.arrayOf(
120
+ PropTypes.shape({
121
+ review_id: PropTypes.number,
122
+ nickname: PropTypes.string,
123
+ title: PropTypes.string,
124
+ detail: PropTypes.string,
125
+ created_at: PropTypes.string,
126
+ rating_votes: PropTypes.arrayOf(RatingVoteType),
127
+ }),
128
+ );
129
+
130
+ export const DescriptionType = PropTypes.shape({ html: PropTypes.string });
131
+
132
+ export const StockItemType = PropTypes.shape({
133
+ in_stock: PropTypes.bool,
134
+ min_sale_qty: PropTypes.number,
135
+ max_sale_qty: PropTypes.number,
136
+ qty_increments: PropTypes.number,
137
+ });
138
+
139
+ export const OptionValueType = PropTypes.shape({
140
+ option_type_id: PropTypes.number,
141
+ price: PropTypes.number,
142
+ price_type: PropTypes.string,
143
+ sku: PropTypes.string,
144
+ sort_order: PropTypes.number,
145
+ title: PropTypes.string,
146
+ });
147
+
148
+ export const OptionsType = PropTypes.arrayOf(
149
+ PropTypes.shape({
150
+ option_id: PropTypes.number,
151
+ required: PropTypes.bool,
152
+ sort_order: PropTypes.number,
153
+ title: PropTypes.string,
154
+ values: PropTypes.arrayOf(OptionValueType),
155
+ }),
156
+ );
157
+
158
+ export const ValueType = PropTypes.shape({
159
+ uid: PropTypes.string,
160
+ option_type_id: PropTypes.number,
161
+ price: PropTypes.number,
162
+ priceInclTax: PropTypes.number,
163
+ priceExclTax: PropTypes.number,
164
+ price_type: PropTypes.string,
165
+ currency: PropTypes.string,
166
+ sku: PropTypes.string,
167
+ title: PropTypes.string,
168
+ sort_order: PropTypes.number,
169
+ });
170
+
171
+ export const PriceTierType = PropTypes.shape({
172
+ discount: PropTypes.shape({ amount_off: PropTypes.number, percent_off: PropTypes.number }),
173
+ final_price: PropTypes.shape({ currency: PropTypes.string, value: PropTypes.number }),
174
+ quantity: PropTypes.number,
175
+ });
176
+
177
+ export const CustomizableOptionShape = {
178
+ price: PropTypes.number,
179
+ priceInclTax: PropTypes.number,
180
+ priceExclTax: PropTypes.number,
181
+ price_type: PropTypes.string,
182
+ currency: PropTypes.string,
183
+ sku: PropTypes.string,
184
+ };
185
+
186
+ export const CustomizableOptionType = PropTypes.shape({
187
+ ...CustomizableOptionShape,
188
+ uid: PropTypes.string,
189
+ option_type_id: PropTypes.number,
190
+ title: PropTypes.string,
191
+ sort_order: PropTypes.number,
192
+ });
193
+
194
+ export const InputOptionType = PropTypes.shape({
195
+ ...CustomizableOptionShape,
196
+ max_characters: PropTypes.number,
197
+ });
198
+
199
+ export const FileOptionType = PropTypes.shape({
200
+ ...CustomizableOptionShape,
201
+ file_extension: PropTypes.string,
202
+ });
203
+
204
+ export const CustomizableOptionsType = PropTypes.oneOfType([
205
+ FileOptionType,
206
+ InputOptionType,
207
+ PropTypes.arrayOf(CustomizableOptionType),
208
+ ]);
209
+
210
+ export const ItemShape = {
211
+ attributes: AttributesType,
212
+ configurable_options: AttributesType,
213
+ id: PropTypes.number,
214
+ image: ImageType,
215
+ name: PropTypes.string,
216
+ options: CustomizableOptionsType,
217
+ price_range: PriceType,
218
+ price_tiers: PropTypes.arrayOf(PriceTierType),
219
+ ...ReviewSummaryShape,
220
+ review_summary: PropTypes.shape(ReviewSummaryShape),
221
+ short_description: DescriptionType,
222
+ sku: PropTypes.string,
223
+ small_image: ImageType,
224
+ special_from_date: PropTypes.string,
225
+ special_to_date: PropTypes.string,
226
+ stock_item: StockItemType,
227
+ stock_status: StockStatusType,
228
+ thumbnail: ImageType,
229
+ type_id: PropTypes.string,
230
+ uid: PropTypes.string,
231
+ url: PropTypes.string,
232
+ url_rewrites: PropTypes.arrayOf(UrlRewriteType),
233
+ };
234
+ export const ItemType = PropTypes.shape(ItemShape);
235
+
236
+ export const ItemsType = PropTypes.arrayOf(ItemType);
237
+
238
+ // @ts-ignore
239
+ ItemType.variants = ItemsType;
240
+
241
+ export const PagesType = PropTypes.objectOf(ItemsType);
242
+
243
+ export const QuantityType = PropTypes.oneOfType([
244
+ PropTypes.number,
245
+ PropTypes.shape({
246
+ // @ts-ignore
247
+ [PropTypes.string]: PropTypes.number,
248
+ }),
249
+ ]);
250
+
251
+ export const ItemOptionsType = PropTypes.arrayOf(
252
+ PropTypes.shape({
253
+ can_change_quantity: PropTypes.bool,
254
+ id: PropTypes.number,
255
+ is_default: PropTypes.bool,
256
+ label: PropTypes.string,
257
+ position: PropTypes.number,
258
+ price: PropTypes.number,
259
+ price_type: PropTypes.string,
260
+ quantity: QuantityType,
261
+ uid: PropTypes.string,
262
+ product: PropTypes.shape({
263
+ name: PropTypes.string,
264
+ stock_status: PropTypes.string,
265
+ price_range: PriceType,
266
+ }),
267
+ regularOptionPrice: PropTypes.number,
268
+ regularOptionPriceExclTax: PropTypes.number,
269
+ finalOptionPrice: PropTypes.number,
270
+ finalOptionPriceExclTax: PropTypes.number,
271
+ }),
272
+ );
273
+
274
+ export const ProductItemsType = PropTypes.arrayOf(
275
+ PropTypes.shape({
276
+ option_id: PropTypes.number,
277
+ options: ItemOptionsType,
278
+ position: PropTypes.number,
279
+ required: PropTypes.bool,
280
+ sku: PropTypes.string,
281
+ title: PropTypes.string,
282
+ type: PropTypes.string,
283
+ }),
284
+ );
285
+
286
+ export const ProductType = PropTypes.shape({
287
+ canonical_url: PropTypes.string,
288
+ categories: CategoriesType,
289
+ description: DescriptionType,
290
+ media_gallery_entries: MediaType,
291
+ meta_description: PropTypes.string,
292
+ meta_keyword: PropTypes.string,
293
+ meta_title: MetaTitleType,
294
+ product_links: ProductLinksType,
295
+ special_price: PropTypes.number,
296
+ url_key: PropTypes.string,
297
+ quantity: PropTypes.number,
298
+ items: ProductItemsType,
299
+ reviews: ReviewsType,
300
+ ...ItemShape,
301
+ });
302
+
303
+ export const DownloadableSamplesType = PropTypes.arrayOf(
304
+ PropTypes.shape({
305
+ sample_url: PropTypes.oneOfType([ProductType, PropTypes.string]),
306
+ sort_order: PropTypes.number,
307
+ title: PropTypes.string,
308
+ }),
309
+ );
310
+
311
+ export const PriceConfiguration = PropTypes.shape({
312
+ containsOptions: PropTypes.bool,
313
+ containsOptionsWithPrice: PropTypes.bool,
314
+ containsRequiredOptions: PropTypes.bool,
315
+ containsRequiredOptionsWithPrice: PropTypes.bool,
316
+ });
317
+
318
+ export const MagentoProductType = PropTypes.shape({
319
+ entered_options: PropTypes.arrayOf(PropTypes.shape({
320
+ uid: PropTypes.string,
321
+ value: PropTypes.string,
322
+ })),
323
+ quantity: QuantityType,
324
+ selected_options: PropTypes.arrayOf(PropTypes.string),
325
+ sku: PropTypes.string,
326
+ });
327
+
328
+ export const ProductCardPropsType = PropTypes.shape({
329
+ siblingsHaveBrands: PropTypes.bool,
330
+ siblingsHavePriceBadge: PropTypes.bool,
331
+ siblingsHaveTierPrice: PropTypes.bool,
332
+ siblingsHaveConfigurableOptions: PropTypes.bool,
333
+ });
334
+
335
+ export const OptionsListType = PropTypes.arrayOf(
336
+ PropTypes.shape({
337
+ value: CustomizableOptionsType,
338
+ title: PropTypes.string,
339
+ required: PropTypes.bool,
340
+ sort_order: PropTypes.number,
341
+ type: PropTypes.string,
342
+ uid: PropTypes.string,
343
+ }),
344
+ );
345
+
346
+ export const LinkedProductsType = PropTypes.objectOf(
347
+ PropTypes.shape({
348
+ items: PropTypes.arrayOf(ProductType),
349
+ total_count: PropTypes.number,
350
+ }),
351
+ );
@@ -0,0 +1,42 @@
1
+ /**
2
+ * M Framework - Flexible backend agnostic framework.
3
+ *
4
+ * Copyright © Meeovi, LTD. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package mframework/mframework
9
+ * @link https://github.com/meeovi/mframework
10
+ */
11
+
12
+ import PropTypes from 'prop-types';
13
+
14
+ // Support for comtabilitiy
15
+
16
+ export const RatingOptionItemType = PropTypes.shape({
17
+ option_id: PropTypes.string,
18
+ value: PropTypes.string,
19
+ });
20
+
21
+ export const RatingItemsType = PropTypes.arrayOf(
22
+ PropTypes.shape({
23
+ rating_id: PropTypes.string,
24
+ rating_code: PropTypes.string,
25
+ rating_options: PropTypes.arrayOf(RatingOptionItemType),
26
+ }),
27
+ );
28
+
29
+ export const VoteType = PropTypes.shape({
30
+ rating_code: PropTypes.string,
31
+ value: PropTypes.string,
32
+ percent: PropTypes.number,
33
+ });
34
+
35
+ export const ReviewItemType = PropTypes.shape({
36
+ average_rating: PropTypes.number,
37
+ nickname: PropTypes.string,
38
+ title: PropTypes.string,
39
+ detail: PropTypes.string,
40
+ created_at: PropTypes.string,
41
+ rating_votes: PropTypes.arrayOf(VoteType),
42
+ });
@@ -0,0 +1,67 @@
1
+ export type LinkType = string;
2
+ export type LocationType = string;
3
+ export type UrlRewriteType = string;
4
+ // Runtime PropTypes are defined below; keep file as a module for compatibility
5
+ /**
6
+ * M Framework - Flexible backend agnostic framework.
7
+ *
8
+ * Copyright © Meeovi, LTD. All rights reserved.
9
+ * See LICENSE for license details.
10
+ *
11
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
12
+ * @package mframework/mframework
13
+ * @link https://github.com/meeovi/mframework
14
+ */
15
+
16
+ import PropTypes from 'prop-types';
17
+
18
+ // Support for comtabilitiy
19
+
20
+ export const LocationType = PropTypes.shape({
21
+ pathname: PropTypes.string,
22
+ search: PropTypes.string,
23
+ // eslint-disable-next-line react/forbid-prop-types
24
+ state: PropTypes.object,
25
+ hash: PropTypes.string,
26
+ key: PropTypes.string,
27
+ });
28
+
29
+ export const HistoryType = PropTypes.shape({
30
+ length: PropTypes.number,
31
+ action: PropTypes.string,
32
+ location: LocationType,
33
+ });
34
+
35
+ export const MatchType = PropTypes.shape({
36
+ path: PropTypes.string,
37
+ url: PropTypes.string,
38
+ // eslint-disable-next-line react/forbid-prop-types
39
+ params: PropTypes.object,
40
+ isExact: PropTypes.bool,
41
+ });
42
+
43
+ export const UrlRewriteType = PropTypes.shape({
44
+ id: PropTypes.number,
45
+ type: PropTypes.string,
46
+ sku: PropTypes.string,
47
+ notFound: PropTypes.bool,
48
+ });
49
+
50
+ export const LinkType = PropTypes.oneOfType([
51
+ PropTypes.string,
52
+ PropTypes.shape({
53
+ pathname: PropTypes.string,
54
+ }),
55
+ ]);
56
+
57
+ export const NavigationStateType = PropTypes.shape(
58
+ {
59
+ name: PropTypes.string.isRequired,
60
+ title: PropTypes.string,
61
+ },
62
+ );
63
+
64
+ export const NavigationStateHistoryType = PropTypes.shape({
65
+ navigationStateHistory: PropTypes.arrayOf(NavigationStateType),
66
+ navigationState: NavigationStateType,
67
+ });
@@ -0,0 +1,25 @@
1
+ /**
2
+ * M Framework - Flexible backend agnostic framework.
3
+ *
4
+ * Copyright © Meeovi, LTD. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package mframework/mframework
9
+ * @link https://github.com/meeovi/mframework
10
+ */
11
+
12
+ import PropTypes from 'prop-types';
13
+
14
+ // Support for comtabilitiy
15
+
16
+ export const SlideType = PropTypes.shape({
17
+ slide_id: PropTypes.string,
18
+ image: PropTypes.string,
19
+ slide_text: PropTypes.string,
20
+ });
21
+
22
+ export const SliderType = PropTypes.shape({
23
+ slider_id: PropTypes.string,
24
+ slides: PropTypes.arrayOf(SlideType),
25
+ });
@@ -0,0 +1,21 @@
1
+ export type StockStatusType = string;
2
+ // Keep runtime PropTypes implementation below; avoid duplicate TS declarations
3
+ /**
4
+ * M Framework - Flexible backend agnostic framework.
5
+ *
6
+ * Copyright © Meeovi, LTD. All rights reserved.
7
+ * See LICENSE for license details.
8
+ *
9
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
10
+ * @package mframework/mframework
11
+ * @link https://github.com/meeovi/mframework
12
+ */
13
+
14
+ import PropTypes from 'prop-types';
15
+
16
+ import { StockStatus } from 'Component/Product/Stock.config';
17
+
18
+ // Support for comtabilitiy
19
+
20
+ // eslint-disable-next-line import/prefer-default-export
21
+ export const StockStatusType = PropTypes.oneOf(Object.values(StockStatus));
@@ -0,0 +1,94 @@
1
+ export type Price = {
2
+ value: number
3
+ currency?: string
4
+ }
5
+
6
+ export type Image = {
7
+ url: string
8
+ alt?: string
9
+ width?: number
10
+ height?: number
11
+ }
12
+
13
+ export interface Product {
14
+ id: string
15
+ sku?: string
16
+ title: string
17
+ description?: string
18
+ price: number | Price
19
+ images?: Image[]
20
+ variants?: any[]
21
+ attributes?: Record<string, any>
22
+ [key: string]: any
23
+ }
24
+
25
+ export interface CartItem {
26
+ id: string
27
+ sku?: string
28
+ quantity: number
29
+ product?: Product
30
+ [key: string]: any
31
+ }
32
+
33
+ export interface Cart {
34
+ id: string
35
+ email?: string
36
+ items: CartItem[]
37
+ total_quantity?: number
38
+ prices?: Record<string, any>
39
+ raw?: any
40
+ }
41
+
42
+ export interface Order {
43
+ id: string
44
+ number?: string
45
+ items?: CartItem[]
46
+ total?: Price | number
47
+ status?: string
48
+ created_at?: string
49
+ raw?: any
50
+ }
51
+
52
+ export interface Customer {
53
+ id: string
54
+ email?: string
55
+ firstName?: string
56
+ lastName?: string
57
+ [key: string]: any
58
+ }
59
+
60
+ export interface GiftCard {
61
+ code: string
62
+ balance?: Price | number
63
+ currency?: string
64
+ raw?: any
65
+ }
66
+
67
+ export interface Subscription {
68
+ id: string
69
+ productId?: string
70
+ status?: string
71
+ schedule?: any
72
+ raw?: any
73
+ }
74
+
75
+ export interface PaymentIntent {
76
+ id: string
77
+ status?: string
78
+ amount?: Price | number
79
+ currency?: string
80
+ method?: string
81
+ raw?: any
82
+ }
83
+
84
+ export interface Review {
85
+ id: string
86
+ title?: string
87
+ detail?: string
88
+ rating?: number
89
+ created_at?: string
90
+ author?: string
91
+ raw?: any
92
+ }
93
+
94
+
@@ -0,0 +1,33 @@
1
+ // Minimal JSX namespace for legacy React/JSX type references used in the
2
+ // commerce layer's migrated code. Kept permissive to avoid introducing
3
+ // runtime changes; this only provides compile-time types.
4
+ declare global {
5
+ namespace JSX {
6
+ interface Element {}
7
+ interface IntrinsicElements { [elemName: string]: any }
8
+ }
9
+ }
10
+
11
+ import { sdk } from '@mframework/sdk'
12
+
13
+ export function createClient(provider?: string, config?: any) {
14
+ // Prefer provider-specific client creation if available on the SDK.
15
+ // Fall back to the SDK's commerce client.
16
+ try {
17
+ // some adapters expose a createClient/init API — delegate when present
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ const anySdk: any = sdk
20
+ if (typeof anySdk.createClient === 'function') return anySdk.createClient(provider, config)
21
+ if (typeof anySdk.init === 'function') return anySdk.init(config)
22
+ } catch (e) {
23
+ // swallow and fallback
24
+ }
25
+
26
+ return sdk.commerce
27
+ }
28
+
29
+ export function init(config?: any) {
30
+ return createClient(undefined, config)
31
+ }
32
+
33
+ export default { createClient, init }
@@ -0,0 +1,52 @@
1
+ declare module 'prop-types' {
2
+ const PropTypes: any;
3
+ export default PropTypes;
4
+ }
5
+
6
+ declare module 'Component/*' {
7
+ export type ProductType = any;
8
+ export const ProductType: any;
9
+ export type FieldType = any;
10
+ export const FieldType: any;
11
+ export type StockStatus = any;
12
+ export const StockStatus: any;
13
+ export type ImageType = any;
14
+ export const ImageType: any;
15
+ export const REVIEW_POPUP_ID: any;
16
+ export const NONE_RADIO_OPTION: any;
17
+ export const DATE_FIELDS_COUNT: any;
18
+ export type FieldDateType = any;
19
+ export const FieldDateType: any;
20
+ export const TimeFormat: any;
21
+ export type FormFields = any;
22
+ export const FormFields: any;
23
+ export type DateFieldAttr = any;
24
+ export const DateFieldAttr: any;
25
+ export const HourFormat: any;
26
+ export type Directions = any;
27
+ export const Directions: any;
28
+ const whatever: any;
29
+ export default whatever;
30
+ }
31
+
32
+ declare module 'Component/*/*' {
33
+ const whatever: any;
34
+ export = whatever;
35
+ }
36
+
37
+ declare module 'Component/*/*/*' {
38
+ const whatever: any;
39
+ export = whatever;
40
+ }
41
+
42
+ declare module 'Component/Product/Product.config' {
43
+ export const ProductType: any;
44
+ const cfg: any;
45
+ export default cfg;
46
+ }
47
+
48
+ declare module 'Component/Field/Field.config' {
49
+ export const FieldType: any;
50
+ const cfg: any;
51
+ export default cfg;
52
+ }