@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,89 @@
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 { isSignedIn } from '../../utils/Auth/IsSignedIn';
13
+ import { TokensByWebsite } from '../Auth/Token';
14
+
15
+ // Fallback constants (original project expects these in Auth/Config)
16
+ const ONE_HOUR = 3600;
17
+ const ONE_HOUR_IN_SECONDS = 3600;
18
+ const TOKEN_REFRESH_DELAY = 3000;
19
+ import BrowserDatabase from '../../utils/BrowserDatabase';
20
+ import { debounce } from '../../utils/Request/Debounce';
21
+ import { getStoreState } from '../../utils/Store';
22
+
23
+ /**
24
+ *
25
+ * @type {string}
26
+ */
27
+ export const COMPARE_UID = 'compare_uid';
28
+
29
+ /**
30
+ *
31
+ * @type {number}
32
+ */
33
+ export const ONE_DAY = 86400;
34
+
35
+ /**
36
+ *
37
+ * @param {string} uid
38
+ * @returns {void}
39
+ * @namespace ../../utils/Compare/setUid
40
+ */
41
+ export const setUid = (uid: string | null): void => {
42
+ const { website_code } = window;
43
+ const tokens: TokensByWebsite = BrowserDatabase.getItem(COMPARE_UID) || {};
44
+ const state = getStoreState();
45
+ const {
46
+ access_token_lifetime = ONE_HOUR,
47
+ } = state.ConfigReducer || {};
48
+
49
+ const uidExpirationTimeInStorage = isSignedIn()
50
+ ? parseInt(String(access_token_lifetime), 10) * ONE_HOUR_IN_SECONDS
51
+ : ONE_DAY;
52
+
53
+ tokens[website_code] = uid as any;
54
+
55
+ BrowserDatabase.setItem(tokens, COMPARE_UID, uidExpirationTimeInStorage);
56
+ };
57
+
58
+ /**
59
+ *
60
+ * @returns {string|boolean} uid
61
+ * @namespace ../../utils/Compare/getUid
62
+ */
63
+ export const getUid = (): string | null => {
64
+ const { website_code } = window;
65
+
66
+ const tokens: TokensByWebsite = BrowserDatabase.getItem(COMPARE_UID) || {};
67
+ const uid = tokens[website_code];
68
+
69
+ return (typeof uid === 'string') ? uid : null;
70
+ };
71
+
72
+ /**
73
+ *
74
+ * @namespace ../../utils/Compare/removeUid
75
+ */
76
+ export const removeUid = (): void => {
77
+ const { website_code } = window;
78
+ const uids: Record<string, string | null | undefined> = BrowserDatabase.getItem(COMPARE_UID) || {};
79
+
80
+ uids[website_code] = undefined;
81
+
82
+ BrowserDatabase.setItem(uids, COMPARE_UID);
83
+ };
84
+
85
+ /** @namespace ../../utils/Compare/refreshUid */
86
+ export const refreshUid = debounce(
87
+ () => setUid(getUid()),
88
+ TOKEN_REFRESH_DELAY,
89
+ );
@@ -0,0 +1,12 @@
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
+ export * from './Compare';
@@ -0,0 +1,84 @@
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 { Currencies, CurrencyData } from '../../normalizers/Config.type';
13
+ import BrowserDatabase from '../../utils/BrowserDatabase';
14
+ import { getStoreState } from '../../utils/Store';
15
+
16
+ /**
17
+ *
18
+ * @type {string}
19
+ */
20
+ export const CUR_CURRENCY = 'current_currency';
21
+
22
+ /**
23
+ *
24
+ * @type {number}
25
+ */
26
+ export const ONE_HOUR = 3600;
27
+
28
+ /**
29
+ *
30
+ * @param {Any} currency
31
+ * @returns {void}
32
+ * @namespace ../../utils/Currency/setCurrency
33
+ */
34
+ export const setCurrency = (currency: string): void => {
35
+ BrowserDatabase.setItem(currency, CUR_CURRENCY, ONE_HOUR);
36
+ };
37
+
38
+ /**
39
+ *
40
+ * @returns {String} currency
41
+ * @namespace ../../utils/Currency/getCurrency
42
+ */
43
+ export const getCurrency = (): string => {
44
+ const {
45
+ ConfigReducer: {
46
+ default_display_currency_code = window.storeCurrency,
47
+ } = {},
48
+ } = getStoreState();
49
+
50
+ const currency = BrowserDatabase.getItem(CUR_CURRENCY);
51
+
52
+ return (typeof currency === 'string') ? currency : default_display_currency_code;
53
+ };
54
+
55
+ /**
56
+ *
57
+ * @param {object} currencyData
58
+ * @param {object} currencyRates
59
+ * @returns {object} filtered currencyData object and currency (rates) object
60
+ * @namespace ../../utils/Currency/returnFilteredCurrencies
61
+ */
62
+ export const returnFilteredCurrencies = (
63
+ currencyData: CurrencyData,
64
+ currencyRates: Currencies,
65
+ ): { currencyData: CurrencyData; currencyRates?: Currencies; currency?: Currencies } => {
66
+ if (
67
+ currencyData?.available_currencies_data?.length < 1 || currencyRates?.exchange_rates?.length < 1) {
68
+ return ({ currencyData, currencyRates });
69
+ }
70
+
71
+ const { available_currencies_data: availableCurrencies = [] } = currencyData;
72
+ const { base_currency_code: base, exchange_rates: rates = [] } = currencyRates;
73
+
74
+ return ({
75
+ currencyData: {
76
+ ...currencyData,
77
+ available_currencies_data:
78
+ availableCurrencies.filter(({ value }) => (
79
+ value === base || Number(rates?.find(({ currency_to }) => currency_to === value)?.rate || 0) > 0
80
+ )),
81
+ },
82
+ currency: currencyRates,
83
+ });
84
+ };
@@ -0,0 +1,12 @@
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
+ export * from './Currency';
@@ -0,0 +1,14 @@
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-theme
9
+ * @link https://github.com/meeovi/mframework
10
+ */
11
+
12
+ export type Props = Record<string, unknown>;
13
+
14
+ export type WithReducersResult = (props: Props) => JSX.Element;
@@ -0,0 +1,30 @@
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
+ // Minimal reducer type alias for compatibility with legacy code.
13
+ type Reducer = (state: any, action?: any) => any;
14
+
15
+ /**
16
+ * @param store
17
+ * @param reducers
18
+ */
19
+ export default function injectToReducers(
20
+ store: any,
21
+ reducers: Record<string, Reducer>,
22
+ ): void {
23
+ Object.keys(reducers).forEach((key) => {
24
+ if (store.asyncReducers && store.injectReducer && !Reflect.has(store.asyncReducers, key)) {
25
+ // eslint-disable-next-line no-param-reassign
26
+ store.asyncReducers[key] = reducers[key];
27
+ store.injectReducer(key, reducers[key]);
28
+ }
29
+ });
30
+ }
@@ -0,0 +1,35 @@
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 { ElementType } from 'react';
13
+ // Minimal reducer type alias for compatibility with legacy code.
14
+ type Reducer = (state: any, action?: any) => any;
15
+
16
+ import injectReducers from '../../utils/DynamicReducer/Helper';
17
+ import { getStore } from '../../utils/Store';
18
+
19
+ import { Props, WithReducersResult } from './DynamicReducer.type';
20
+
21
+ /** @namespace ../../utils/DynamicReducer/Index/withReducers */
22
+ export const withReducers = (reducers: Record<string, Reducer>) => (
23
+ WrappedComponent: ElementType,
24
+ ): WithReducersResult => {
25
+ const injectAndExecute = (props: Props) => {
26
+ injectReducers(getStore(), reducers);
27
+
28
+ // eslint-disable-next-line @mframework/mframework-guidelines/jsx-no-props-destruction
29
+ return <WrappedComponent { ...props } />;
30
+ };
31
+
32
+ return injectAndExecute;
33
+ };
34
+
35
+ export default { withReducers };
@@ -0,0 +1,100 @@
1
+ /** @namespace ../../utils/ElementTransition/transitionElementFromTo */
2
+ /**
3
+ * M Framework - Flexible backend agnostic framework.
4
+ *
5
+ * Copyright © Meeovi, LTD. All rights reserved.
6
+ * See LICENSE for license details.
7
+ *
8
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
9
+ * @package mframework/mframework
10
+ * @link https://github.com/meeovi/mframework
11
+ */
12
+ export const transitionElementFromTo = async ({
13
+ elFrom,
14
+ elToCallback,
15
+ isCopyCssProperties,
16
+ }: any) => {
17
+ if (!elFrom || !elToCallback) {
18
+ return;
19
+ }
20
+
21
+ const {
22
+ top: st, left: sl, width: sw, height: sh,
23
+ } = elFrom.getBoundingClientRect();
24
+
25
+ const transitionWrapper = document.createElement('div');
26
+ transitionWrapper.id = 'transition-wrapper';
27
+ transitionWrapper.classList.add('element-transition');
28
+
29
+ const clonedElement = elFrom.cloneNode(true);
30
+
31
+ if (isCopyCssProperties) {
32
+ const styles = window.getComputedStyle(elFrom);
33
+
34
+ ['font', 'background', 'outline', 'border', 'color'].forEach((key) => {
35
+ clonedElement.style.setProperty(key, styles.getPropertyValue(key));
36
+ });
37
+ }
38
+
39
+ clonedElement.style.top = `${ st }px`;
40
+ clonedElement.style.left = `${ sl }px`;
41
+ clonedElement.style.width = `${ sw }px`;
42
+ clonedElement.style.height = `${ sh }px`;
43
+
44
+ transitionWrapper.appendChild(clonedElement);
45
+ document.body.appendChild(transitionWrapper);
46
+
47
+ // wait until condition is met
48
+ await new Promise((resolve, reject) => {
49
+ // eslint-disable-next-line fp/no-let
50
+ let maxTries = 100;
51
+
52
+ const interval = setInterval(() => {
53
+ if (maxTries <= 0) {
54
+ clearInterval(interval);
55
+ reject();
56
+ }
57
+
58
+ const condition = elToCallback();
59
+
60
+ if (condition) {
61
+ clearInterval(interval);
62
+ resolve(true);
63
+ }
64
+
65
+ maxTries -= 1;
66
+ // eslint-disable-next-line no-magic-numbers
67
+ }, 100);
68
+ });
69
+
70
+ const imageTo = elToCallback();
71
+
72
+ const {
73
+ top: tt, left: tl, width: tw, height: th,
74
+ } = imageTo.getBoundingClientRect();
75
+
76
+ const newHeight = (th / tw) * sh;
77
+ const translateYCorrection = (newHeight - sh) / 2;
78
+ const newSt = st - translateYCorrection;
79
+
80
+ const translateX = tl - sl;
81
+ const translateY = tt - newSt;
82
+ const scale = tw / sw;
83
+ const scaleY = th / newHeight;
84
+
85
+ // Top is changed to get correct top location after transform
86
+ clonedElement.style.top = `${ newSt }px`;
87
+ // Height is changed to get correct aspect ratio before tranform
88
+ clonedElement.style.height = `${ newHeight }px`;
89
+ clonedElement.style.transform = `translate3d(${ translateX }px, ${ translateY }px, 0) scale(${ scale }, ${ scaleY })`;
90
+
91
+ setTimeout(() => {
92
+ transitionWrapper.classList.add('element-transition--active');
93
+ // eslint-disable-next-line no-magic-numbers
94
+ }, 150);
95
+
96
+ setTimeout(() => {
97
+ transitionWrapper.remove();
98
+ // eslint-disable-next-line no-magic-numbers
99
+ }, 300);
100
+ };
@@ -0,0 +1,316 @@
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 { DateFieldAttr, HourFormat } from 'Component/DateSelect/DateSelect.config';
13
+ import { FieldType } from 'Component/Field/Field.config';
14
+ import {
15
+ DATE_FIELDS_COUNT,
16
+ FieldDateType,
17
+ TimeFormat,
18
+ } from 'Component/FieldDate/FieldDate.config';
19
+ import { GetYearRangeAttributes } from '../../utils/Product/Product.type';
20
+
21
+ import {
22
+ DateMap,
23
+ DateObject,
24
+ DatesData,
25
+ FieldData,
26
+ GetFieldsData,
27
+ YearRangeAttribute,
28
+ } from './Form.type';
29
+
30
+ /**
31
+ * Appends 0 to value if its less than passed attribute;
32
+ * @param value
33
+ * @param lessThan
34
+ * @returns {string|*}
35
+ * @namespace ../../utils/Form/Extract/zeroBasedValue
36
+ */
37
+ // eslint-disable-next-line no-magic-numbers
38
+ export const zeroBasedValue = (value: number, lessThan = 10): string => (
39
+ (+value < lessThan) ? `0${value}` : String(value)
40
+ );
41
+
42
+ /** @namespace ../../utils/Form/Extract/adjustHours */
43
+ export const adjustHours = (hours: number, timeFormat: string): number => {
44
+ if (timeFormat === TimeFormat.H12) {
45
+ if (hours > HourFormat.H12) {
46
+ return hours % HourFormat.H12;
47
+ }
48
+
49
+ if (hours === 0) {
50
+ return HourFormat.H12;
51
+ }
52
+ }
53
+
54
+ return hours;
55
+ };
56
+
57
+ /**
58
+ * Converts date to magento supported format
59
+ * @returns {string|*}
60
+ * @namespace ../../utils/Form/Extract/getDateValue
61
+ */
62
+ export const getDateValue = (dateValue: number | string | Date): number | string | Date => {
63
+ try {
64
+ const date = new Date(dateValue);
65
+ const day = zeroBasedValue(date.getDate());
66
+ const month = zeroBasedValue(date.getMonth() + 1);
67
+ const year = date.getFullYear();
68
+ const hours = zeroBasedValue(date.getHours());
69
+ const minutes = zeroBasedValue(date.getMinutes());
70
+ const seconds = zeroBasedValue(date.getSeconds());
71
+
72
+ return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
73
+ } catch {
74
+ return dateValue;
75
+ }
76
+ };
77
+
78
+ /** @namespace ../../utils/Form/Extract/calcYearRangeAttributes */
79
+ export const calcYearRangeAttributes = (startYear: number, endYear: number): YearRangeAttribute => {
80
+ const currentYear = new Date().getFullYear();
81
+
82
+ // https://docs.magento.com/user-guide/stores/attribute-date-time-options.html
83
+ // blank year range defaults to current year
84
+ if (!startYear && !endYear) {
85
+ return { minYear: currentYear, maxYear: currentYear };
86
+ }
87
+
88
+ // if start or end date is empty it defaults to current year
89
+ // if it creates an invalid range, the only filled in year is used both as start and end of the range
90
+ // e.g. `2020,` => `2020,2021`, `,2022` => `2021,2022`, `,2020` => `2020,2020`, `2022,` => `2022,2022`
91
+ const minYear = startYear || (endYear && currentYear <= endYear ? currentYear : endYear);
92
+ const maxYear = endYear || (startYear && currentYear >= startYear ? currentYear : startYear);
93
+
94
+ return { minYear, maxYear };
95
+ };
96
+
97
+ /** @namespace ../../utils/Form/Extract/getYearRangeAttributes */
98
+ export const getYearRangeAttributes = <IsYear extends boolean = false>(
99
+ yearRange: string | undefined, isYear: IsYear,
100
+ ): GetYearRangeAttributes<IsYear> => {
101
+ const [startYear, endYear] = (yearRange || ',').split(',');
102
+
103
+ const { minYear, maxYear } = calcYearRangeAttributes(Number(startYear), Number(endYear));
104
+
105
+ if (isYear) {
106
+ return <GetYearRangeAttributes<IsYear>>{ minYear, maxYear };
107
+ }
108
+
109
+ return <GetYearRangeAttributes<IsYear>>{
110
+ minDate: new Date(`${minYear}-01-01T00:00:00.000`),
111
+ maxDate: new Date(`${maxYear}-12-31T23:59:59.999`),
112
+ };
113
+ };
114
+
115
+ /** @namespace ../../utils/Form/Extract/isMagentoDateFormatValid */
116
+ export const isMagentoDateFormatValid = (dateFieldsOrder: string): boolean => new RegExp(Array(DATE_FIELDS_COUNT)
117
+ .fill('[dmy]').join(','))
118
+ .test(dateFieldsOrder);
119
+
120
+ /** @namespace ../../utils/Form/Extract/getTimeFormat */
121
+ export const getTimeFormat = (timeFormat: string): string => (timeFormat === TimeFormat.H12 ? 'h:mm aa' : 'HH:mm');
122
+
123
+ /** @namespace ../../utils/Form/Extract/getDateFormat */
124
+ export const getDateFormat = (dateFieldsOrder: string): string => {
125
+ if (!isMagentoDateFormatValid(dateFieldsOrder)) {
126
+ return 'dd/MM/yyyy';
127
+ }
128
+
129
+ const dateMap: DateMap = {
130
+ d: 'dd',
131
+ m: 'MM',
132
+ y: 'yyyy',
133
+ };
134
+
135
+ return dateFieldsOrder
136
+ .split(',')
137
+ .map((field) => dateMap[<keyof DateMap>field])
138
+ .join('/');
139
+ };
140
+
141
+ /** @namespace ../../utils/Form/Extract/getDateTimeFormat */
142
+ export const getDateTimeFormat = (type: string, dateFieldsOrder: string, timeFormat: string): string => {
143
+ const timePart = type === FieldDateType.TIME || type === FieldDateType.DATETIME
144
+ ? getTimeFormat(timeFormat)
145
+ : '';
146
+
147
+ const datePart = type === FieldDateType.DATE || type === FieldDateType.DATETIME
148
+ ? getDateFormat(dateFieldsOrder)
149
+ : '';
150
+
151
+ return `${datePart } ${ timePart}`.trim();
152
+ };
153
+
154
+ /** @namespace ../../utils/Form/Extract/adjustAmpmHours */
155
+ export const adjustAmpmHours = (hours: number, ampm?: string): number => {
156
+ if (ampm === 'PM') {
157
+ return (hours % HourFormat.H12) + HourFormat.H12;
158
+ }
159
+
160
+ if (ampm === 'AM') {
161
+ return hours % HourFormat.H12;
162
+ }
163
+
164
+ return hours;
165
+ };
166
+
167
+ /** @namespace ../../utils/Form/Extract/transformDateFieldsData */
168
+ export const transformDateFieldsData = (
169
+ datesData: Record<string, DatesData>,
170
+ ): DateObject[] => Object.entries(datesData).reduce((
171
+ prev: DateObject[],
172
+ [name, data],
173
+ ) => {
174
+ const {
175
+ type,
176
+ year,
177
+ month,
178
+ day,
179
+ hours,
180
+ minutes,
181
+ ampm,
182
+ } = data;
183
+
184
+ const hoursAdjusted = adjustAmpmHours(Number(hours), ampm);
185
+
186
+ if (type === FieldDateType.DATE && year && month && day) {
187
+ return [...prev, {
188
+ name,
189
+ type,
190
+ value: `${year}-${month}-${day} 00:00:00`,
191
+ }];
192
+ }
193
+
194
+ if (type === FieldDateType.DATETIME && year && month && day && hours && minutes) {
195
+ return [...prev, {
196
+ name,
197
+ type,
198
+ value: `${year}-${month}-${day} ${hoursAdjusted}:${minutes}:00`,
199
+ }];
200
+ }
201
+
202
+ if (type === FieldDateType.TIME && hours && minutes) {
203
+ return [...prev, {
204
+ name,
205
+ type,
206
+ value: `2000-01-01 ${hoursAdjusted}:${minutes}:00`,
207
+ }];
208
+ }
209
+
210
+ return prev;
211
+ }, []);
212
+
213
+ /** @namespace ../../utils/Form/Extract/groupDateFieldsData */
214
+ export const groupDateFieldsData = (
215
+ fields: NodeListOf<HTMLSelectElement | HTMLInputElement>,
216
+ ): Record<string, DatesData> => Array.from(fields)
217
+ .reduce((prev: Record<string, DatesData>, field) => {
218
+ const dataType = field.getAttribute(DateFieldAttr.TYPE) || '';
219
+
220
+ if (!Object.values<string>(FieldDateType).includes(dataType)) {
221
+ return prev;
222
+ }
223
+
224
+ const { name, value } = field;
225
+ const fieldName = field.getAttribute(DateFieldAttr.NAME) || '';
226
+ const { [name]: prevData } = prev;
227
+
228
+ return {
229
+ ...prev,
230
+ [name]: {
231
+ ...prevData,
232
+ type: <FieldDateType>dataType,
233
+ [fieldName]: value,
234
+ },
235
+ };
236
+ }, {});
237
+
238
+ /**
239
+ * Returns fields values from DOM/Form
240
+ * @param DOM
241
+ * @param excludeEmpty
242
+ * @param ignoreTypes
243
+ * @param asObject
244
+ * @returns {{}|*[]}
245
+ * @namespace ../../utils/Form/Extract/getFieldsData
246
+ */
247
+ export const getFieldsData = <AsObject extends boolean = false>(
248
+ DOM: Document | HTMLElement | null,
249
+ excludeEmpty = false,
250
+ ignoreTypes: string[] = [],
251
+ asObject?: AsObject,
252
+ ): GetFieldsData<AsObject> | null => {
253
+ if (!DOM) {
254
+ return null;
255
+ }
256
+
257
+ const fields: NodeListOf<HTMLSelectElement | HTMLInputElement> = DOM.querySelectorAll('input, textarea, select');
258
+ const output: Array<DateObject | FieldData> = [];
259
+
260
+ const dateFieldsGrouped = groupDateFieldsData(fields);
261
+
262
+ output.push(...transformDateFieldsData(dateFieldsGrouped));
263
+
264
+ fields.forEach((field) => {
265
+ if (Object.values<string>(FieldDateType).includes(field.getAttribute(DateFieldAttr.TYPE) || '')) {
266
+ return;
267
+ }
268
+
269
+ const { tagName } = field;
270
+ const tag = tagName.toLowerCase();
271
+ const type = tag === FieldType.TEXTAREA || tag === FieldType.SELECT || tag === FieldType.BUTTON
272
+ ? tag
273
+ : field.type;
274
+
275
+ if (ignoreTypes.some((ignoreType) => ignoreType === type)) {
276
+ return;
277
+ }
278
+
279
+ // eslint-disable-next-line no-nested-ternary
280
+ const value = field instanceof HTMLInputElement
281
+ && (type === FieldType.CHECKBOX || type === FieldType.RADIO)
282
+ // eslint-disable-next-line no-nested-ternary
283
+ ? (field.checked ? field.value === 'on' ? true : field.value : false)
284
+ : field instanceof HTMLInputElement && type === FieldType.FILE
285
+ ? field.fileData
286
+ : field.value;
287
+
288
+ const dateValue = field.getAttribute('data-date');
289
+ const formattedValue = dateValue ? getDateValue(dateValue) : value;
290
+
291
+ if (!excludeEmpty || value) {
292
+ output.push({
293
+ name: field.name,
294
+ type,
295
+ value: formattedValue,
296
+ field: (field as HTMLInputElement),
297
+ });
298
+ }
299
+ });
300
+
301
+ if (asObject) {
302
+ const objectOutput: Record<string, DateObject | FieldData> = {};
303
+
304
+ output.forEach((field) => {
305
+ const { name } = field;
306
+
307
+ objectOutput[name] = field;
308
+ });
309
+
310
+ return <GetFieldsData<AsObject>>objectOutput;
311
+ }
312
+
313
+ return <GetFieldsData<AsObject>>output;
314
+ };
315
+
316
+ export default getFieldsData;