@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,58 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa-theme
10
+ */
11
+
12
+ import { Field, Query } from '@tilework/opus';
13
+
14
+ import { Country, Region } from './Region.type';
15
+
16
+ /**
17
+ * RegionQuery Mutations
18
+ * @class RegionQuery
19
+ * @namespace ../../normalizers/Region/Query */
20
+ export class RegionQuery {
21
+ getCountriesQuery(): Query<'countries', Country, true> {
22
+ return new Query<'countries', Country, true>('countries', true)
23
+ .addFieldList(this._getCountryFields());
24
+ }
25
+
26
+ _getCountryFields(): Array<
27
+ Field<'id', number>
28
+ | Field<'is_state_required', boolean>
29
+ | Field<'available_regions', Region, true>
30
+ | Field<'label', string>
31
+ > {
32
+ return [
33
+ new Field<'id', number>('id'),
34
+ new Field<'is_state_required', boolean>('is_state_required'),
35
+ this._getAvailableRegionsField(),
36
+ new Field<'full_name_locale', string>('full_name_locale').setAlias('label'),
37
+ ];
38
+ }
39
+
40
+ _getAvailableRegionFields(): Array<
41
+ Field<'code', string>
42
+ | Field<'name', string>
43
+ | Field<'id', number>
44
+ > {
45
+ return [
46
+ new Field<'code', string>('code'),
47
+ new Field<'name', string>('name'),
48
+ new Field<'id', number>('id'),
49
+ ];
50
+ }
51
+
52
+ _getAvailableRegionsField(): Field<'available_regions', Region, true> {
53
+ return new Field<'available_regions', Region, true>('available_regions', true)
54
+ .addFieldList(this._getAvailableRegionFields());
55
+ }
56
+ }
57
+
58
+ export default new RegionQuery();
@@ -0,0 +1,23 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa
10
+ */
11
+
12
+ export interface Region {
13
+ code: string;
14
+ name: string;
15
+ id: number;
16
+ }
17
+
18
+ export interface Country {
19
+ id: string;
20
+ is_state_required: boolean;
21
+ available_regions: Region[];
22
+ label: string;
23
+ }
@@ -0,0 +1,50 @@
1
+ import { normalizeOrder } from './Order.type';
2
+ import type { Order as DomainOrder } from '../types/domain';
3
+
4
+ // Normalize return objects (customer returns / RMA) into a stable shape.
5
+ // Returns frequently contain returned items and refund-related totals.
6
+ export function normalizeReturn(raw: any): DomainOrder {
7
+ if (!raw) return raw;
8
+
9
+ const id = raw?.id ?? raw?.return_id ?? raw?.increment_id ?? '';
10
+ const number = raw?.increment_id ?? raw?.number ?? raw?.return_number ?? '';
11
+ const created_at = raw?.created_at ?? raw?.requested_at ?? raw?.date;
12
+ const status = raw?.status ?? raw?.state ?? raw?.return_status;
13
+
14
+ const items = Array.isArray(raw?.items)
15
+ ? raw.items.map((it: any) => ({
16
+ id: String(it?.id ?? it?.item_id ?? ''),
17
+ sku: it?.sku ?? it?.product_sku ?? it?.product?.sku,
18
+ quantity: it?.quantity_returned ?? it?.qty ?? it?.qty_returned ?? 0,
19
+ price: it?.price ?? it?.row_subtotal ?? undefined,
20
+ product: it?.product ? {
21
+ id: String(it.product?.id ?? it.product?.sku ?? ''),
22
+ sku: it.product?.sku,
23
+ title: it.product?.name ?? it.product?.title,
24
+ } : undefined,
25
+ reason: it?.reason ?? it?.return_reason,
26
+ raw: it,
27
+ }))
28
+ : [];
29
+
30
+ const total = raw?.total ?? raw?.refund_amount ?? raw?.grand_total ?? raw?.amount;
31
+
32
+ if (!id && !number && !Array.isArray(raw?.items)) return normalizeOrder(raw);
33
+
34
+ return {
35
+ id: String(id),
36
+ number,
37
+ created_at,
38
+ status,
39
+ items,
40
+ total,
41
+ raw,
42
+ };
43
+ }
44
+
45
+ export const normalizeReturns = (raw: any): DomainOrder[] => {
46
+ if (!raw) return [];
47
+ if (Array.isArray(raw)) return raw.map(normalizeReturn);
48
+ if (Array.isArray(raw.items)) return raw.items.map(normalizeReturn);
49
+ return [];
50
+ };
@@ -0,0 +1,81 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa-theme
10
+ */
11
+
12
+ import { Field, Mutation, Query } from '@tilework/opus';
13
+
14
+ import { GQLCreateProductReviewInput } from '../types/Graphql.type';
15
+
16
+ import {
17
+ CreateProductReviewOutput,
18
+ ReviewRatingItem,
19
+ ReviewRatingValue,
20
+ } from './Review.type';
21
+
22
+ /** @namespace ../../normalizers/Review/Query */
23
+ export class ReviewQuery {
24
+ getAddProductReviewMutation(
25
+ reviewItem: GQLCreateProductReviewInput,
26
+ ): Mutation<'addProductReview', CreateProductReviewOutput> {
27
+ return new Mutation<'createProductReview', CreateProductReviewOutput>('createProductReview')
28
+ .setAlias('addProductReview')
29
+ .addArgument('input', 'CreateProductReviewInput!', reviewItem)
30
+ .addField(new Field('review').addField('nickname'));
31
+ }
32
+
33
+ getRatingQuery(): Query<'reviewRatings', { items: ReviewRatingItem[] }> {
34
+ return new Query<'productReviewRatingsMetadata', { items: ReviewRatingItem[] }>(
35
+ 'productReviewRatingsMetadata',
36
+ )
37
+ .setAlias('reviewRatings')
38
+ .addFieldList(this._getRatingFields());
39
+ }
40
+
41
+ _getRatingFields(): Field<'items', ReviewRatingItem, true>[] {
42
+ return [
43
+ this._getRatingItemsField(),
44
+ ];
45
+ }
46
+
47
+ _getRatingItemsField(): Field<'items', ReviewRatingItem, true> {
48
+ return new Field<'items', ReviewRatingItem, true>('items', true)
49
+ .addFieldList(this._getRatingItemsFields());
50
+ }
51
+
52
+ _getRatingItemsFields(): Array<
53
+ Field<'rating_id', number>
54
+ | Field<'rating_code', string>
55
+ | Field<'rating_options', ReviewRatingValue, true>
56
+ > {
57
+ return [
58
+ new Field<'id', number>('id').setAlias('rating_id'),
59
+ new Field<'name', string>('name').setAlias('rating_code'),
60
+ this._getRatingOptionsField(),
61
+ ];
62
+ }
63
+
64
+ _getRatingOptionFields(): Array<
65
+ Field<'option_id', string>
66
+ | Field<'value', string>
67
+ > {
68
+ return [
69
+ new Field<'value_id', string>('value_id').setAlias('option_id'),
70
+ new Field<'value', string>('value'),
71
+ ];
72
+ }
73
+
74
+ _getRatingOptionsField(): Field<'rating_options', ReviewRatingValue, true> {
75
+ return new Field<'values', ReviewRatingValue, true>('values', true)
76
+ .setAlias('rating_options')
77
+ .addFieldList(this._getRatingOptionFields());
78
+ }
79
+ }
80
+
81
+ export default new ReviewQuery();
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa
10
+ */
11
+
12
+ export interface ReviewRatingValue {
13
+ option_id: string;
14
+ value: string;
15
+ }
16
+
17
+ export interface ReviewRatingItem {
18
+ rating_id: number;
19
+ rating_code: string;
20
+ rating_options: ReviewRatingValue[];
21
+ }
22
+
23
+ export interface CreateProductReviewOutput {
24
+ review: {
25
+ nickname: string;
26
+ };
27
+ }
28
+
29
+ import type { Review as DomainReview } from '../types/domain';
30
+
31
+ export function normalizeReview(raw: any): DomainReview {
32
+ if (!raw) return raw;
33
+ return {
34
+ id: String(raw?.id ?? raw?.review_id ?? raw?.uid ?? ''),
35
+ title: raw?.title ?? raw?.nickname ?? '',
36
+ detail: raw?.detail ?? raw?.text ?? raw?.comment ?? '',
37
+ rating: (raw?.rating ?? raw?.rating_summary ?? raw?.average_rating) as number | undefined,
38
+ created_at: raw?.created_at ?? raw?.createdAt ?? raw?.date,
39
+ author: raw?.author ?? raw?.nickname ?? undefined,
40
+ raw,
41
+ } as DomainReview;
42
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa-theme
10
+ */
11
+
12
+ import { Field, Query } from '@tilework/opus';
13
+
14
+ import { Slide, Slider } from './Slider.type';
15
+
16
+ /**
17
+ * Slider Query
18
+ * @class Slider
19
+ * @namespace ../../normalizers/Slider/Query */
20
+ export class SliderQuery {
21
+ getQuery(options: { sliderId: string }): Query<'slider', Slider> {
22
+ const { sliderId } = options;
23
+
24
+ return new Query<'scandiwebSlider', Slider>('scandiwebSlider')
25
+ .addArgument('id', 'ID!', sliderId)
26
+ .addFieldList(this._getSliderFields())
27
+ .setAlias('slider');
28
+ }
29
+
30
+ _getSliderFields(): Array<
31
+ Field<'slides', Slide, true>
32
+ | Field<'slide_speed', number>
33
+ | Field<'slider_id', number>
34
+ | Field<'title', string>
35
+ > {
36
+ return [
37
+ this._getSlidesField(),
38
+ this._getSlideSpeedField(),
39
+ new Field<'slider_id', number>('slider_id'),
40
+ new Field<'title', string>('title'),
41
+ ];
42
+ }
43
+
44
+ _getSlideFields(): Array<
45
+ Field<'slide_text', string>
46
+ | Field<'slide_id', number>
47
+ | Field<'mobile_image', string>
48
+ | Field<'desktop_image', string>
49
+ | Field<'title', string>
50
+ | Field<'is_active', boolean>
51
+ > {
52
+ return [
53
+ new Field<'slide_text', string>('slide_text'),
54
+ new Field<'slide_id', number>('slide_id'),
55
+ new Field<'mobile_image', string>('mobile_image'),
56
+ new Field<'desktop_image', string>('desktop_image'),
57
+ new Field<'title', string>('title'),
58
+ new Field<'is_active', boolean>('is_active'),
59
+ ];
60
+ }
61
+
62
+ _getSlidesField(): Field<'slides', Slide, true> {
63
+ return new Field<'slides', Slide, true>('slides', true)
64
+ .addFieldList(this._getSlideFields());
65
+ }
66
+
67
+ _getSlideSpeedField(): Field<'slide_speed', number> {
68
+ return new Field<'slide_speed', number>('slide_speed');
69
+ }
70
+ }
71
+
72
+ export default new SliderQuery();
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa
10
+ */
11
+
12
+ export interface Slide {
13
+ slide_text: string;
14
+ slide_id: number;
15
+ mobile_image: string;
16
+ desktop_image: string;
17
+ title: string;
18
+ is_active: boolean;
19
+ }
20
+
21
+ export interface Slider {
22
+ slides: Slide[];
23
+ slide_speed: number;
24
+ slider_id: number;
25
+ title: string;
26
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa-theme
10
+ */
11
+
12
+ import { Field, Query } from '@tilework/opus';
13
+
14
+ import { GQLProductInfoInput } from '../types/Graphql.type';
15
+
16
+ import { Store, normalizeStore } from './StoreInPickUp.type';
17
+
18
+ /** @namespace ../../normalizers/StoreInPickUp/Query */
19
+ export class StoreInPickUpQuery {
20
+ getStores(
21
+ country: string,
22
+ search = '',
23
+ productsInfo?: GQLProductInfoInput[],
24
+ ): Query<'getStores', { stores: Store[] }> {
25
+ return new Query<'getStores', { stores: Store[] }>('getStores')
26
+ .addFieldList([this.getStoreFields()])
27
+ .addArgument('search', 'String', search)
28
+ .addArgument('country', 'String', country)
29
+ .addArgument('productsInfo', '[ProductInfoInput]', productsInfo);
30
+ }
31
+
32
+ getStoreFields(): Field<'stores', Store, true> {
33
+ return new Field<'stores', Store, true>('stores', true)
34
+ .addFieldList([
35
+ new Field<'city', string>('city'),
36
+ new Field<'country', string>('country'),
37
+ new Field<'description', string>('description'),
38
+ new Field<'name', string>('name'),
39
+ new Field<'phone', string>('phone'),
40
+ new Field<'pickup_location_code', string>('pickup_location_code'),
41
+ new Field<'postcode', string>('postcode'),
42
+ new Field<'region', string>('region'),
43
+ new Field<'street', string>('street'),
44
+ ]);
45
+ }
46
+ }
47
+
48
+ export default new StoreInPickUpQuery();
49
+
50
+ export function normalizeStoresResponse(raw: any) {
51
+ if (!raw) return [];
52
+ const list = Array.isArray(raw?.stores) ? raw.stores : (Array.isArray(raw) ? raw : raw?.items ?? []);
53
+ return Array.isArray(list) ? list.map((s: any) => normalizeStore(s)) : [];
54
+ }
@@ -0,0 +1,59 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa
10
+ */
11
+
12
+ export interface Store {
13
+ city: string;
14
+ country: string;
15
+ description: string;
16
+ name: string;
17
+ phone: string;
18
+ pickup_location_code: string;
19
+ postcode: string;
20
+ region: string;
21
+ street: string[];
22
+ extension_attributes?: {
23
+ attribute_code: string;
24
+ value: string;
25
+ }[];
26
+ }
27
+
28
+ export interface DomainStore {
29
+ id?: string;
30
+ name: string;
31
+ address: {
32
+ street: string[];
33
+ city?: string;
34
+ region?: string;
35
+ postcode?: string;
36
+ country?: string;
37
+ };
38
+ phone?: string;
39
+ code?: string;
40
+ raw?: any;
41
+ }
42
+
43
+ export function normalizeStore(raw: any): DomainStore {
44
+ if (!raw) return raw;
45
+ return {
46
+ id: raw?.id ?? raw?.pickup_location_code ?? raw?.code ?? undefined,
47
+ name: raw?.name ?? raw?.store_name ?? '',
48
+ address: {
49
+ street: Array.isArray(raw?.street) ? raw.street : (raw?.address?.street ? (Array.isArray(raw.address.street) ? raw.address.street : [raw.address.street]) : []),
50
+ city: raw?.city ?? raw?.address?.city,
51
+ region: raw?.region ?? raw?.address?.region,
52
+ postcode: raw?.postcode ?? raw?.address?.postcode,
53
+ country: raw?.country ?? raw?.address?.country,
54
+ },
55
+ phone: raw?.phone ?? raw?.telephone,
56
+ code: raw?.pickup_location_code ?? raw?.code,
57
+ raw,
58
+ } as DomainStore;
59
+ }
@@ -0,0 +1,25 @@
1
+ import { Subscription as DomainSubscription } from '../types/domain';
2
+
3
+ export interface SubscriptionFragment {
4
+ id: string;
5
+ product_id?: string;
6
+ status?: string;
7
+ }
8
+
9
+ export function normalizeSubscription(raw: any): DomainSubscription {
10
+ if (!raw) return raw;
11
+ return {
12
+ id: String(raw?.id ?? raw?.subscription_id ?? raw?.uid ?? ''),
13
+ productId: raw?.product_id ?? raw?.product?.id ?? raw?.product_sku,
14
+ status: raw?.status ?? raw?.state,
15
+ schedule: raw?.schedule ?? raw?.delivery_schedule,
16
+ raw,
17
+ } as DomainSubscription;
18
+ }
19
+
20
+ export function normalizeSubscriptions(raw: any): DomainSubscription[] {
21
+ if (!raw) return [];
22
+ if (Array.isArray(raw)) return raw.map(normalizeSubscription);
23
+ if (Array.isArray(raw?.items)) return raw.items.map(normalizeSubscription);
24
+ return [];
25
+ }
@@ -0,0 +1,20 @@
1
+ import { PaymentIntent as DomainPaymentIntent } from '../types/domain';
2
+
3
+ export function normalizeTransaction(raw: any): DomainPaymentIntent {
4
+ if (!raw) return raw;
5
+ return {
6
+ id: String(raw?.id ?? raw?.transaction_id ?? raw?.uid ?? ''),
7
+ status: raw?.status ?? raw?.state,
8
+ amount: raw?.amount ?? raw?.total ?? raw?.value,
9
+ currency: raw?.currency ?? raw?.currency_code ?? raw?.currencyCode,
10
+ method: raw?.method ?? raw?.payment_method ?? raw?.method_type,
11
+ raw,
12
+ } as DomainPaymentIntent;
13
+ }
14
+
15
+ export function normalizeTransactions(raw: any): DomainPaymentIntent[] {
16
+ if (!raw) return [];
17
+ if (Array.isArray(raw)) return raw.map(normalizeTransaction);
18
+ if (Array.isArray(raw.items)) return raw.items.map(normalizeTransaction);
19
+ return [];
20
+ }
@@ -0,0 +1,55 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa-theme
10
+ */
11
+ import { Field, Query } from '@tilework/opus';
12
+
13
+ import { CategoryDisplayMode } from '../routes/CategoryPage/CategoryPage.config';
14
+ import { GQLUrlRewriteEntityTypeEnum } from '../types/Graphql.type';
15
+
16
+ import {
17
+ UrlRewritesOutput,
18
+ UrlRewritesQueryOptions,
19
+ } from './UrlRewrites.type';
20
+
21
+ /**
22
+ * UrlRewrites Query
23
+ * @class UrlRewritesQuery
24
+ * @namespace ../../normalizers/UrlRewrites/Query */
25
+ export class UrlRewritesQuery {
26
+ getQuery({ urlParam }: UrlRewritesQueryOptions): Query<'urlResolver', {
27
+ sku: string;
28
+ type: GQLUrlRewriteEntityTypeEnum;
29
+ id: number;
30
+ display_mode: CategoryDisplayMode;
31
+ sort_by: string;
32
+ }> {
33
+ return new Query<'urlResolver', UrlRewritesOutput>('urlResolver')
34
+ .addArgument('url', 'String!', urlParam)
35
+ .addFieldList(this._getUrlResolverFields());
36
+ }
37
+
38
+ _getUrlResolverFields(): Array<
39
+ Field<'sku', string>
40
+ | Field<'type', GQLUrlRewriteEntityTypeEnum>
41
+ | Field<'id', number>
42
+ | Field<'display_mode', CategoryDisplayMode>
43
+ | Field<'sort_by', string>
44
+ > {
45
+ return [
46
+ new Field<'sku', string>('sku'),
47
+ new Field<'type', GQLUrlRewriteEntityTypeEnum>('type'),
48
+ new Field<'id', number>('id'),
49
+ new Field<'display_mode', CategoryDisplayMode>('display_mode'),
50
+ new Field<'sort_by', string>('sort_by'),
51
+ ];
52
+ }
53
+ }
54
+
55
+ export default new UrlRewritesQuery();
@@ -0,0 +1,25 @@
1
+ /**
2
+ * ScandiPWA - Progressive Web App for Magento
3
+ *
4
+ * Copyright © Scandiweb, Inc. All rights reserved.
5
+ * See LICENSE for license details.
6
+ *
7
+ * @license OSL-3.0 (Open Software License ("OSL") v. 3.0)
8
+ * @package scandipwa/scandipwa-theme
9
+ * @link https://github.com/scandipwa/scandipwa
10
+ */
11
+
12
+ import { CategoryDisplayMode } from '../routes/CategoryPage/CategoryPage.config';
13
+ import { GQLUrlRewriteEntityTypeEnum } from '../types/Graphql.type';
14
+
15
+ export interface UrlRewritesOutput {
16
+ sku: string;
17
+ type: GQLUrlRewriteEntityTypeEnum;
18
+ id: number;
19
+ display_mode: CategoryDisplayMode;
20
+ sort_by: string;
21
+ }
22
+
23
+ export interface UrlRewritesQueryOptions {
24
+ urlParam: string;
25
+ }