@evenicanpm/storefront-core 1.8.4 → 2.0.1

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 (471) hide show
  1. package/.storybook/main.ts +2 -3
  2. package/.storybook/preview.tsx +0 -2
  3. package/__mocks__/create-mutation.ts +16 -8
  4. package/__mocks__/next-image.tsx +12 -3
  5. package/docs.tsconfig.json +5 -5
  6. package/package.json +3 -3
  7. package/src/api-manager/datasources/d365/d365-cart.datasource.ts +13 -8
  8. package/src/api-manager/datasources/d365/d365-categories.datasource.ts +2 -3
  9. package/src/api-manager/datasources/d365/d365-order.datasource.ts +4 -4
  10. package/src/api-manager/datasources/d365/d365-organization.datasource.ts +15 -8
  11. package/src/api-manager/datasources/d365/d365-product.datasource.ts +34 -19
  12. package/src/api-manager/datasources/d365/d365-user.datasource.ts +47 -19
  13. package/src/api-manager/datasources/e4/address/e4-address.remaps.ts +2 -2
  14. package/src/api-manager/datasources/e4/cart/e4-cart.datasource.ts +7 -5
  15. package/src/api-manager/datasources/e4/cart/e4-cart.remaps.ts +1 -1
  16. package/src/api-manager/datasources/e4/categories/e4-categories.translator.ts +3 -3
  17. package/src/api-manager/datasources/e4/product/e4-product.remaps.ts +3 -3
  18. package/src/api-manager/datasources/e4/product/e4-product.translator.ts +3 -1
  19. package/src/api-manager/datasources/e4/user/e4-user.datasource.ts +4 -8
  20. package/src/api-manager/index.ts +10 -128
  21. package/src/api-manager/lib/category-helpers.ts +1 -1
  22. package/src/api-manager/lib/get-graphql-client.ts +2 -2
  23. package/src/api-manager/schemas/product.schema.ts +9 -0
  24. package/src/api-manager/services/create-extension-query.ts +1 -1
  25. package/src/api-manager/services/create-query.ts +106 -266
  26. package/src/api-manager/types/Datasource.ts +0 -3
  27. package/src/auth/auth-options.test.ts +1 -1
  28. package/src/auth/msal.ts +1 -1
  29. package/src/auth/providers/entra-external-id-provider.ts +1 -1
  30. package/src/auth/providers/index.ts +1 -1
  31. package/src/cms/blocks/components/category-card.tsx +0 -1
  32. package/src/cms/blocks/components/category-carousel/index.tsx +3 -4
  33. package/src/cms/blocks/components/featured-categories.tsx +1 -2
  34. package/src/cms/blocks/components/featured-products.tsx +1 -2
  35. package/src/cms/blocks/components/footer/index.tsx +1 -2
  36. package/src/cms/blocks/components/footer/sections/footer-app-store.tsx +2 -2
  37. package/src/cms/blocks/components/footer/sections/footer-contact.tsx +1 -2
  38. package/src/cms/blocks/components/footer/sections/footer-links.tsx +1 -1
  39. package/src/cms/blocks/components/footer/sections/footer-logo.tsx +2 -3
  40. package/src/cms/blocks/components/footer/sections/footer-social-links.tsx +7 -3
  41. package/src/cms/blocks/components/footer.tsx +0 -1
  42. package/src/cms/blocks/components/hero-carousel/index.tsx +2 -3
  43. package/src/cms/blocks/components/hero.tsx +0 -1
  44. package/src/cms/blocks/components/image.tsx +0 -1
  45. package/src/cms/blocks/components/media-card.tsx +0 -1
  46. package/src/cms/blocks/components/product-carousel/index.tsx +3 -4
  47. package/src/cms/blocks/components/product-section-fullwidth/index.tsx +4 -5
  48. package/src/cms/blocks/components/rich-text.tsx +0 -1
  49. package/src/cms/blocks/components/seo/index.tsx +1 -2
  50. package/src/cms/blocks/components/services/index.tsx +0 -1
  51. package/src/cms/blocks/components/services/service-card.tsx +1 -2
  52. package/src/cms/blocks/components/shared/featured-product-card.tsx +3 -4
  53. package/src/cms/blocks/components/shared/product-category-item.tsx +4 -4
  54. package/src/cms/blocks/components/shared/product-grid.tsx +2 -3
  55. package/src/cms/blocks/components/shared/top-categories-card.tsx +2 -3
  56. package/src/cms/blocks/components/shared/top-rating-product-card.tsx +4 -5
  57. package/src/cms/blocks/icons/components/category.tsx +1 -1
  58. package/src/cms/blocks/icons/components/dotted-star.tsx +1 -1
  59. package/src/cms/blocks/icons/components/fallback-icon.tsx +0 -1
  60. package/src/cms/blocks/icons/components/gift-box.tsx +1 -1
  61. package/src/cms/blocks/icons/components/light.tsx +1 -1
  62. package/src/cms/blocks/icons/components/new-arrival.tsx +1 -1
  63. package/src/cms/blocks/icons/components/rank-badge.tsx +1 -1
  64. package/src/cms/blocks/icons/index.ts +1 -6
  65. package/src/{components-v2 → components}/BazaarTextField.tsx +8 -8
  66. package/src/{components-v2 → components}/CountryInput.stories.tsx +4 -2
  67. package/src/{components-v2 → components}/DropZone.tsx +1 -1
  68. package/src/{components-v2 → components}/ImageWithFallback.tsx +1 -1
  69. package/src/{components-v2 → components}/T/__tests__/T.test.tsx +9 -13
  70. package/src/{components-v2 → components}/T/index.tsx +0 -1
  71. package/src/{components-v2 → components}/Typography.tsx +0 -1
  72. package/src/components/_tests_/BazaarCard.test.tsx +16 -0
  73. package/src/components/_tests_/BazaarImage.test.tsx +18 -0
  74. package/src/components/_tests_/BazaarMenu.test.tsx +46 -0
  75. package/src/components/_tests_/BazaarSwitch.test.tsx +17 -0
  76. package/src/components/_tests_/BazaarTextField.test.tsx +22 -0
  77. package/src/components/_tests_/BoxShadowCard.test.tsx +14 -0
  78. package/src/components/_tests_/DropZone.test.tsx +51 -0
  79. package/src/components/_tests_/HoverBox.test.tsx +9 -0
  80. package/src/components/_tests_/Image.test.tsx +12 -0
  81. package/src/components/_tests_/ImageWithFallback.test.tsx +76 -0
  82. package/src/components/_tests_/LazyImage.test.tsx +32 -0
  83. package/src/components/_tests_/Loading.test.tsx +15 -0
  84. package/src/components/_tests_/SearchInput.test.tsx +14 -0
  85. package/src/components/_tests_/SnackbarProvider.test.tsx +22 -0
  86. package/src/components/_tests_/Typography.test.tsx +53 -0
  87. package/src/components/_tests_/WhiteButton.test.tsx +20 -0
  88. package/src/components/_tests_/countries-input.test.tsx +39 -0
  89. package/src/components/_tests_/no-records.test.tsx +14 -0
  90. package/src/components/_tests_/site-logo.test.tsx +28 -0
  91. package/src/{components-v2 → components}/accordion/accordion-header.tsx +1 -1
  92. package/src/{components-v2 → components}/accordion/index.ts +1 -1
  93. package/src/{components-v2 → components}/carousel/carousel.tsx +3 -3
  94. package/src/{components-v2 → components}/carousel/components/carousel-arrows.tsx +1 -1
  95. package/src/{components-v2 → components}/carousel/components/carousel-dots.tsx +1 -1
  96. package/src/{components-v2 → components}/carousel/index.ts +1 -1
  97. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/carousel-card-1.tsx +3 -3
  98. package/src/components/carousel-cards/carousel-card-1/index.ts +1 -0
  99. package/src/{components-v2 → components}/categories/Categories.stories.tsx +1 -1
  100. package/src/{components-v2 → components}/categories/__tests__/category-menu.test.tsx +1 -1
  101. package/src/{components-v2 → components}/categories/category-list/category-list.tsx +5 -5
  102. package/src/{components-v2/navbar/mega-menu → components/categories/category-list}/index.ts +1 -1
  103. package/src/{components-v2 → components}/categories/category-list/styles.ts +1 -1
  104. package/src/{components-v2 → components}/categories/category-list-item/category-menu-item.tsx +1 -1
  105. package/src/components/categories/category-list-item/index.ts +1 -0
  106. package/src/{components-v2 → components}/categories/category-menu.tsx +1 -1
  107. package/src/{components-v2 → components}/categories/mega-menu/banner.tsx +3 -3
  108. package/src/{components-v2 → components}/categories/mega-menu/column-list.tsx +4 -4
  109. package/src/{components-v2 → components}/categories/mega-menu/mega-menu-1.tsx +3 -3
  110. package/src/{components-v2 → components}/categories/mega-menu/mega-menu-2.tsx +4 -4
  111. package/src/{components-v2 → components}/countries-input.tsx +1 -1
  112. package/src/{components-v2 → components}/flex-box/__tests__/flex-box.test.tsx +6 -8
  113. package/src/components/flex-box/index.ts +5 -0
  114. package/src/{components-v2 → components}/header/__tests__/header.test.tsx +8 -4
  115. package/src/{components-v2 → components}/header/__tests__/user.test.tsx +1 -1
  116. package/src/{components-v2 → components}/header/components/categories-menu.tsx +3 -3
  117. package/src/{components-v2 → components}/header/components/mobile-header.tsx +11 -11
  118. package/src/{components-v2 → components}/header/components/user.tsx +3 -3
  119. package/src/{components-v2 → components}/header/header.tsx +6 -6
  120. package/src/{components-v2 → components}/header/index.ts +1 -1
  121. package/src/{components-v2 → components}/header/sticky-header.tsx +3 -3
  122. package/src/{components-v2 → components}/icons/cart-bag.tsx +1 -0
  123. package/src/{components-v2 → components}/icons/category-outline.tsx +1 -0
  124. package/src/{components-v2 → components}/icons/category.tsx +1 -0
  125. package/src/{components-v2 → components}/icons/home.tsx +1 -0
  126. package/src/{components-v2 → components}/icons/search.tsx +1 -0
  127. package/src/{components-v2 → components}/icons/shopping-bag-outlined.tsx +1 -0
  128. package/src/{components-v2 → components}/icons/up-down.tsx +1 -0
  129. package/src/{components-v2 → components}/icons/user.tsx +1 -0
  130. package/src/{components-v2 → components}/icons/user2.tsx +1 -0
  131. package/src/{components-v2 → components}/mini-cart/components/cart-item.tsx +2 -2
  132. package/src/{components-v2 → components}/mini-cart/components/empty-view.tsx +2 -2
  133. package/src/{components-v2 → components}/mini-cart/components/top-header.tsx +2 -2
  134. package/src/{components-v2 → components}/mini-cart/index.ts +1 -1
  135. package/src/{components-v2 → components}/mini-cart/mini-cart-trigger.tsx +3 -5
  136. package/src/{components-v2 → components}/mini-cart/mini-cart.tsx +5 -5
  137. package/src/{components-v2 → components}/mobile-navigation/MobileNavigationBar.stories.tsx +2 -2
  138. package/src/{components-v2 → components}/mobile-navigation/index.ts +1 -1
  139. package/src/{components-v2 → components}/mobile-navigation/mobile-navigation-bar.tsx +5 -5
  140. package/src/{components-v2 → components}/mobile-navigation/styles/index.ts +2 -2
  141. package/src/{components-v2 → components}/nav-link/__tests__/nav-link.test.tsx +2 -1
  142. package/src/{components-v2 → components}/nav-link/index.ts +3 -3
  143. package/src/{components-v2 → components}/nav-link/nav-link-2.tsx +1 -1
  144. package/src/{components-v2 → components}/nav-link/nav-link-3.tsx +1 -1
  145. package/src/{components-v2 → components}/nav-link/nav-link.tsx +20 -10
  146. package/src/{components-v2 → components}/navbar/__tests__/navbar.test.tsx +4 -7
  147. package/src/{components-v2 → components}/navbar/categories.tsx +4 -4
  148. package/src/{components-v2 → components}/navbar/category-based-menu/category-based-menu.tsx +5 -5
  149. package/src/components/navbar/category-based-menu/index.ts +1 -0
  150. package/src/{components-v2 → components}/navbar/category-based-menu/styles.ts +4 -4
  151. package/src/{components-v2 → components}/navbar/index.ts +1 -1
  152. package/src/components/navbar/mega-menu/index.ts +1 -0
  153. package/src/{components-v2 → components}/navbar/mega-menu/mega-menu.tsx +10 -4
  154. package/src/{components-v2 → components}/navbar/mega-menu/styles.ts +1 -1
  155. package/src/{components-v2 → components}/navbar/mobile-menu/index.ts +1 -1
  156. package/src/{components-v2 → components}/navbar/mobile-menu/mobile-menu.test.tsx +4 -3
  157. package/src/{components-v2 → components}/navbar/mobile-menu/mobile-menu.tsx +4 -4
  158. package/src/{components-v2 → components}/navbar/nav-list/cms-nav.test.tsx +1 -2
  159. package/src/components/navbar/nav-list/index.ts +1 -0
  160. package/src/{components-v2 → components}/navbar/nav-list/nav-item-child.tsx +4 -4
  161. package/src/{components-v2 → components}/navbar/nav-list/nav-list.tsx +8 -8
  162. package/src/{components-v2 → components}/navbar/navbar.tsx +3 -3
  163. package/src/{components-v2 → components}/navbar/styles.ts +2 -2
  164. package/src/{components-v2 → components}/navbar/utils/transform-nav.test.ts +1 -1
  165. package/src/{components-v2 → components}/no-records.tsx +1 -2
  166. package/src/{components-v2 → components}/product-cards/favorite-button.tsx +0 -1
  167. package/src/{components-v2/navbar/nav-list → components/product-cards/product-card}/index.ts +1 -1
  168. package/src/{components-v2 → components}/product-cards/product-card/product-card.tsx +11 -11
  169. package/src/{components-v2 → components}/product-cards/product-card/styles/index.ts +3 -3
  170. package/src/{components-v2/categories/category-list → components/product-cards/product-card-plp}/index.ts +1 -1
  171. package/src/{components-v2 → components}/product-cards/product-card-plp/product-card.tsx +9 -9
  172. package/src/{components-v2 → components}/product-cards/product-card-plp-list/ProductCardPlpList.stories.tsx +0 -1
  173. package/src/components/product-cards/product-card-plp-list/index.ts +1 -0
  174. package/src/{components-v2 → components}/product-cards/product-card-plp-list/product-card.tsx +9 -9
  175. package/src/{components-v2 → components}/product-cards/product-card-search/ProductCardSearch.stories.tsx +0 -1
  176. package/src/components/product-cards/product-card-search/index.ts +1 -0
  177. package/src/{components-v2 → components}/product-cards/product-card-search/product-card.tsx +7 -7
  178. package/src/{components-v2 → components}/product-cards/product-price.tsx +2 -2
  179. package/src/{components-v2 → components}/product-cards/product-rating.tsx +2 -2
  180. package/src/{components-v2 → components}/product-cards/product-title.tsx +1 -1
  181. package/src/{components-v2 → components}/product-cards/quantity-buttons.tsx +2 -2
  182. package/src/{components-v2 → components}/product-dialog/__tests__/product-dialog.test.tsx +1 -1
  183. package/src/{components-v2 → components}/product-dialog/compound/product-dialog.tsx +5 -5
  184. package/src/{components-v2 → components}/product-dialog/index.tsx +1 -1
  185. package/src/{components-v2 → components}/product-dimensions/Dimensions.stories.tsx +2 -4
  186. package/src/{components-v2 → components}/product-dimensions/__tests__/product-dimensions.test.tsx +2 -2
  187. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-error.tsx +4 -4
  188. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-label.tsx +2 -2
  189. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-list-chip.tsx +2 -2
  190. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group-list.tsx +2 -2
  191. package/src/{components-v2 → components}/product-dimensions/compound/dimensions-group.tsx +3 -3
  192. package/src/{components-v2 → components}/product-dimensions/compound/dimensions.tsx +2 -2
  193. package/src/{components-v2 → components}/product-dimensions/index.tsx +1 -1
  194. package/src/{components-v2 → components}/product-quantity-buttons/ProductQuantity.stories.tsx +1 -3
  195. package/src/{components-v2 → components}/product-quantity-buttons/__tests__/product-quantity-buttons.test.tsx +12 -2
  196. package/src/{components-v2 → components}/product-quantity-buttons/compound/quantity-buttons-root.tsx +3 -3
  197. package/src/{components-v2 → components}/product-quantity-buttons/index.tsx +1 -2
  198. package/src/{components-v2 → components}/product-quantity-variants/ProductQuantity.stories.tsx +1 -3
  199. package/src/{components-v2 → components}/product-quantity-variants/__tests__/product-quantity-variants.test.tsx +6 -4
  200. package/src/{components-v2 → components}/product-quantity-variants/index.tsx +2 -2
  201. package/src/{components-v2 → components}/products-view/ProductsGrid.stories.tsx +1 -3
  202. package/src/{components-v2 → components}/products-view/ProductsList.stories.tsx +1 -3
  203. package/src/{components-v2 → components}/products-view/__tests__/products-view.test.tsx +31 -12
  204. package/src/{components-v2 → components}/products-view/compound/products-grid-view.tsx +7 -7
  205. package/src/{components-v2 → components}/products-view/compound/products-list-view.tsx +4 -4
  206. package/src/{components-v2 → components}/products-view/compound/types.ts +1 -1
  207. package/src/{components-v2 → components}/products-view/index.tsx +3 -3
  208. package/src/{components-v2/side-nav → components/progress}/index.ts +1 -1
  209. package/src/{components-v2 → components}/progress/progress.tsx +3 -3
  210. package/src/{components-v2 → components}/scrollbar/Scrollbar.stories.tsx +1 -3
  211. package/src/{components-v2 → components}/scrollbar/__tests__/scrollbar.test.tsx +7 -1
  212. package/src/{components-v2/progress → components/scrollbar}/index.ts +1 -1
  213. package/src/{components-v2 → components}/scrollbar/scrollbar.tsx +1 -1
  214. package/src/{components-v2 → components}/search-bar/SearchBarLarge.stories.tsx +1 -3
  215. package/src/{components-v2 → components}/search-bar/__tests__/search-bar.test.tsx +7 -1
  216. package/src/{components-v2 → components}/search-bar/compound/results-item-lg.tsx +2 -3
  217. package/src/{components-v2 → components}/search-bar/compound/results-item-sm.tsx +4 -5
  218. package/src/{components-v2 → components}/search-bar/compound/results-suspense.tsx +5 -5
  219. package/src/{components-v2 → components}/search-bar/compound/results.tsx +2 -2
  220. package/src/{components-v2 → components}/search-bar/compound/search-bar-root.tsx +5 -5
  221. package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-category.tsx +3 -4
  222. package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-search-icon.tsx +1 -1
  223. package/src/{components-v2 → components}/search-bar/compound/textfield.tsx +5 -6
  224. package/src/{components-v2 → components}/search-bar/index.tsx +1 -1
  225. package/src/{components-v2 → components}/search-bar/utils/findCategoryNameById.ts +3 -3
  226. package/src/{components-v2 → components}/section/__tests__/section.test.tsx +14 -7
  227. package/src/{components-v2 → components}/section/compound/section-header.tsx +2 -2
  228. package/src/{components-v2 → components}/section/compound/section.tsx +1 -1
  229. package/src/{components-v2 → components}/section/index.ts +1 -1
  230. package/src/{components-v2 → components}/side-nav/SideNav.stories.tsx +1 -1
  231. package/src/{components-v2 → components}/side-nav/__tests__/side-nav.test.tsx +17 -14
  232. package/src/{components-v2/scrollbar → components/side-nav}/index.ts +1 -1
  233. package/src/{components-v2 → components}/side-nav/side-nav.tsx +1 -1
  234. package/src/{components-v2 → components}/site-logo.tsx +8 -1
  235. package/src/{components-v2 → components}/wishlist-dialogs/__tests__/create-new-list.test.tsx +1 -1
  236. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/add-to-wishlist-button.tsx +3 -3
  237. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-bottom-ui.tsx +2 -2
  238. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-dialog.tsx +4 -4
  239. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/add-to-wishlist-list.tsx +3 -3
  240. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-header.tsx +3 -4
  241. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/wishlist-dialog-item.tsx +4 -4
  242. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/index.tsx +1 -1
  243. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-bottom-ui.tsx +2 -2
  244. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-dialog.tsx +2 -2
  245. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/compound/create-wishlist-form.tsx +2 -2
  246. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/create-wishlist-button.tsx +2 -2
  247. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/index.tsx +1 -1
  248. package/src/{components-v2 → components}/wishlist-dialogs/styles.ts +1 -1
  249. package/src/hooks/use-nextauth-session.ts +4 -1
  250. package/src/hooks/use-overflow-detect.ts +4 -4
  251. package/src/lib/cart-cookie-handler.ts +2 -2
  252. package/src/lib/category-helpers.ts +1 -1
  253. package/src/lib/lib.ts +2 -2
  254. package/src/lib/page-slugs.ts +0 -2
  255. package/src/lib/refiner-utils.ts +5 -5
  256. package/src/{pages-v2 → pages}/account/account-navigation.tsx +20 -23
  257. package/src/{pages-v2 → pages}/account/addresses/address-form.tsx +15 -7
  258. package/src/{pages-v2 → pages}/account/addresses/address-item.tsx +2 -2
  259. package/src/{pages-v2 → pages}/account/dashboard-header.tsx +5 -5
  260. package/src/{pages-v2 → pages}/account/orders/icons/delivery.tsx +1 -0
  261. package/src/{pages-v2 → pages}/account/orders/icons/package-box.tsx +1 -0
  262. package/src/{pages-v2 → pages}/account/orders/icons/truck-filled.tsx +1 -0
  263. package/src/{pages-v2 → pages}/account/orders/order-progress.tsx +5 -5
  264. package/src/{pages-v2 → pages}/account/orders/order-row.tsx +2 -2
  265. package/src/{pages-v2 → pages}/account/orders/order-summary.tsx +4 -4
  266. package/src/{pages-v2 → pages}/account/orders/ordered-products.tsx +2 -2
  267. package/src/{pages-v2 → pages}/account/profile/profile-button.test.tsx +2 -2
  268. package/src/{pages-v2 → pages}/account/profile/profile-button.tsx +1 -1
  269. package/src/{pages-v2 → pages}/account/profile/user-info.tsx +2 -2
  270. package/src/{pages-v2 → pages}/account/styles.ts +1 -1
  271. package/src/{pages-v2 → pages}/account/wishlist/create-new-list.tsx +2 -2
  272. package/src/{pages-v2 → pages}/account/wishlist/create-wishlist-button.tsx +2 -2
  273. package/src/{pages-v2 → pages}/account/wishlist/wishlist-item.tsx +3 -3
  274. package/src/{pages-v2 → pages}/blog/blog-card.tsx +4 -4
  275. package/src/{pages-v2 → pages}/cart/__tests__/cart-item.test.tsx +1 -1
  276. package/src/{pages-v2 → pages}/cart/__tests__/checkout-form.test.tsx +1 -1
  277. package/src/{pages-v2 → pages}/cart/__tests__/estimate-shipping.test.tsx +11 -11
  278. package/src/{pages-v2 → pages}/cart/cart-item.tsx +50 -22
  279. package/src/{pages-v2 → pages}/cart/checkout-form.tsx +5 -5
  280. package/src/{pages-v2 → pages}/cart/coupon-entry.tsx +2 -2
  281. package/src/{pages-v2 → pages}/cart/estimate-shipping.tsx +2 -2
  282. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/checkout-form.tsx +2 -2
  283. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/checkout-step.tsx +5 -5
  284. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/index.ts +1 -1
  285. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/step-heading.tsx +4 -4
  286. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/address-card.tsx +2 -2
  287. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/delivery-address.tsx +25 -21
  288. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/new-address-form.tsx +3 -3
  289. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/customer-info/customer-information.tsx +2 -2
  290. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/payment/payment-details.tsx +36 -16
  291. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/shipping/delivery-date.tsx +2 -2
  292. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/shipping/delivery-options.tsx +3 -3
  293. package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/cart-item.tsx +3 -3
  294. package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/checkout-alt-summary.tsx +4 -4
  295. package/src/pages/checkout/checkout-alt-summary/index.ts +1 -0
  296. package/src/{pages-v2 → pages}/checkout/checkout-alt-summary/list-item.tsx +2 -2
  297. package/src/{pages-v2 → pages}/confirmation/address.tsx +2 -2
  298. package/src/{pages-v2 → pages}/confirmation/confirmation-summary.tsx +3 -3
  299. package/src/{pages-v2 → pages}/confirmation/ordered-products.tsx +2 -2
  300. package/src/{pages-v2 → pages}/product-details/available-shops.tsx +2 -5
  301. package/src/{pages-v2 → pages}/product-details/bopis/find-in-store-button.tsx +1 -2
  302. package/src/{pages-v2 → pages}/product-details/bopis/find-in-store-modal.tsx +4 -8
  303. package/src/{pages-v2 → pages}/product-details/bopis/pickup-option-select.tsx +1 -1
  304. package/src/pages/product-details/bopis/store-card/index.ts +1 -0
  305. package/src/{pages-v2 → pages}/product-details/bopis/store-card/shop-card.tsx +5 -5
  306. package/src/{pages-v2 → pages}/product-details/currency.ts +2 -2
  307. package/src/{pages-v2 → pages}/product-details/frequently-bought.tsx +3 -3
  308. package/src/{pages-v2 → pages}/product-details/frequently-product-card.tsx +5 -5
  309. package/src/{pages-v2 → pages}/product-details/product-comment.tsx +2 -2
  310. package/src/{pages-v2 → pages}/product-details/product-description.tsx +4 -2
  311. package/src/{pages-v2 → pages}/product-details/product-filter-card.tsx +5 -5
  312. package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-info.tsx +8 -9
  313. package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-intro-images.tsx +4 -4
  314. package/src/{pages-v2 → pages}/product-details/product-intro/compound/product-intro.tsx +3 -3
  315. package/src/{pages-v2 → pages}/product-details/product-intro/compound/thumbnail-with-skeleton.tsx +4 -1
  316. package/src/{pages-v2 → pages}/product-details/product-review.tsx +3 -6
  317. package/src/{pages-v2 → pages}/product-details/product-tabs.tsx +1 -1
  318. package/src/{pages-v2 → pages}/product-details/related-products.tsx +2 -2
  319. package/src/{pages-v2 → pages}/product-list/breadcrumbs.tsx +0 -1
  320. package/src/{pages-v2 → pages}/product-list/facet-group.tsx +1 -1
  321. package/src/{pages-v2 → pages}/product-list/list-filter.tsx +2 -3
  322. package/src/{pages-v2 → pages}/product-list/pagination.tsx +1 -1
  323. package/src/{pages-v2 → pages}/product-list/product-list-context.tsx +4 -4
  324. package/src/{pages-v2 → pages}/product-list/product-list-view.tsx +6 -6
  325. package/src/{pages-v2 → pages}/product-list/quick-view-dialog-content.tsx +6 -11
  326. package/src/{pages-v2 → pages}/product-list/selected-facets.tsx +2 -2
  327. package/src/{pages-v2 → pages}/product-list/utils/search-for-category.ts +3 -3
  328. package/src/{pages-v2 → pages}/quickorder/context.ts +8 -2
  329. package/src/{pages-v2 → pages}/quickorder/order-upload.tsx +31 -10
  330. package/src/{pages-v2 → pages}/quickorder/provider.tsx +16 -17
  331. package/src/{pages-v2 → pages}/quickorder/quick-order-header.tsx +3 -3
  332. package/src/{pages-v2 → pages}/quickorder/quick-order-row.tsx +1 -1
  333. package/src/{pages-v2 → pages}/quickorder/quick-order-table.tsx +1 -1
  334. package/src/{pages-v2 → pages}/quickorder/quick-order.tsx +27 -21
  335. package/src/providers/nav-provider/index.tsx +1 -1
  336. package/src/providers/notifications/README.md +1 -1
  337. package/src/providers/notifications/notification-context.tsx +10 -4
  338. package/tsconfig.json +1 -2
  339. package/typedoc.js +1 -1
  340. package/src/components-v2/carousel-cards/carousel-card-1/index.ts +0 -1
  341. package/src/components-v2/categories/category-list-item/index.ts +0 -1
  342. package/src/components-v2/flex-box/index.ts +0 -5
  343. package/src/components-v2/navbar/category-based-menu/index.ts +0 -1
  344. package/src/components-v2/product-cards/product-card/index.ts +0 -1
  345. package/src/components-v2/product-cards/product-card-plp/index.ts +0 -1
  346. package/src/components-v2/product-cards/product-card-plp-list/index.ts +0 -1
  347. package/src/components-v2/product-cards/product-card-search/index.ts +0 -1
  348. package/src/pages-v2/checkout/checkout-alt-summary/index.ts +0 -1
  349. package/src/pages-v2/product-details/bopis/store-card/index.ts +0 -1
  350. package/src/{components-v2 → components}/BazaarCard.stories.tsx +0 -0
  351. package/src/{components-v2 → components}/BazaarCard.tsx +0 -0
  352. package/src/{components-v2 → components}/BazaarImage.tsx +0 -0
  353. package/src/{components-v2 → components}/BazaarMenu.stories.tsx +0 -0
  354. package/src/{components-v2 → components}/BazaarMenu.tsx +0 -0
  355. package/src/{components-v2 → components}/BazaarSwitch.stories.tsx +0 -0
  356. package/src/{components-v2 → components}/BazaarSwitch.tsx +0 -0
  357. package/src/{components-v2 → components}/BazaarTextField.stories.tsx +0 -0
  358. package/src/{components-v2 → components}/BorderShadowCard.stories.tsx +0 -0
  359. package/src/{components-v2 → components}/BoxShadowCard.tsx +0 -0
  360. package/src/{components-v2 → components}/DropZone.stories.tsx +0 -0
  361. package/src/{components-v2 → components}/HoverBox.stories.tsx +0 -0
  362. package/src/{components-v2 → components}/HoverBox.tsx +0 -0
  363. package/src/{components-v2 → components}/Image.tsx +0 -0
  364. package/src/{components-v2 → components}/LazyImage.tsx +0 -0
  365. package/src/{components-v2 → components}/Loading.stories.tsx +0 -0
  366. package/src/{components-v2 → components}/Loading.tsx +0 -0
  367. package/src/{components-v2 → components}/NoRecords.stories.tsx +0 -0
  368. package/src/{components-v2 → components}/README.md +0 -0
  369. package/src/{components-v2 → components}/SearchInput.stories.tsx +0 -0
  370. package/src/{components-v2 → components}/SearchInput.tsx +0 -0
  371. package/src/{components-v2 → components}/SiteLogo.stories.tsx +0 -0
  372. package/src/{components-v2 → components}/SnackbarProvider.tsx +0 -0
  373. package/src/{components-v2 → components}/Typography.stories.tsx +0 -0
  374. package/src/{components-v2 → components}/WhiteButton.stories.tsx +0 -0
  375. package/src/{components-v2 → components}/WhiteButton.tsx +0 -0
  376. package/src/{components-v2 → components}/accordion/AccordionHeader.stories.tsx +0 -0
  377. package/src/{components-v2 → components}/accordion/__tests__/accordion-header.test.tsx +0 -0
  378. package/src/{components-v2 → components}/carousel/Carousel.stories.tsx +0 -0
  379. package/src/{components-v2 → components}/carousel/__tests__/carousel.test.tsx +0 -0
  380. package/src/{components-v2 → components}/carousel/styles/index.ts +0 -0
  381. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/CarouselCard1.stories.tsx +0 -0
  382. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/__tests__/carousel-card-1.test.tsx +0 -0
  383. package/src/{components-v2 → components}/carousel-cards/carousel-card-1/styles.ts +0 -0
  384. package/src/{components-v2 → components}/categories/category-list/types.ts +0 -0
  385. package/src/{components-v2 → components}/categories/category-list-item/styles.ts +0 -0
  386. package/src/{components-v2 → components}/categories/mega-menu/styles.ts +0 -0
  387. package/src/{components-v2 → components}/categories/types.ts +0 -0
  388. package/src/{components-v2 → components}/flex-box/Flex.stories.tsx +0 -0
  389. package/src/{components-v2 → components}/flex-box/flex-between.tsx +0 -0
  390. package/src/{components-v2 → components}/flex-box/flex-box.tsx +0 -0
  391. package/src/{components-v2 → components}/flex-box/flex-row-center.tsx +0 -0
  392. package/src/{components-v2 → components}/header/Header.stories.tsx +0 -0
  393. package/src/{components-v2 → components}/header/hooks/use-header.ts +0 -0
  394. package/src/{components-v2 → components}/header/styles/index.ts +0 -0
  395. package/src/{components-v2 → components}/icons/__tests__/icons.test.tsx +1 -1
  396. package/src/{components-v2 → components}/mini-cart/__tests__/cart-item.test.tsx +0 -0
  397. package/src/{components-v2 → components}/mini-cart/__tests__/mini-cart.test.tsx +0 -0
  398. package/src/{components-v2 → components}/mini-cart/__tests__/test-cart-empty.json +0 -0
  399. package/src/{components-v2 → components}/mini-cart/__tests__/test-cart-with-item.json +0 -0
  400. package/src/{components-v2 → components}/mini-cart/components/bottom-actions.tsx +0 -0
  401. package/src/{components-v2 → components}/mobile-navigation/__tests__/mobile-navigation-bar.test.tsx +2 -2
  402. package/src/{components-v2 → components}/nav-link/NavLink.stories.tsx +0 -0
  403. package/src/{components-v2 → components}/nav-link/NavLink2.stories.tsx +0 -0
  404. package/src/{components-v2 → components}/nav-link/NavLink3.stories.tsx +0 -0
  405. package/src/{components-v2 → components}/navbar/category-based-menu/types.ts +0 -0
  406. package/src/{components-v2 → components}/navbar/utils/transform-nav.ts +0 -0
  407. package/src/{components-v2 → components}/product-cards/__tests__/product-cards.test.tsx +0 -0
  408. package/src/{components-v2 → components}/product-cards/discount-chip.tsx +0 -0
  409. package/src/{components-v2 → components}/product-cards/product-card/ProductCard.stories.tsx +0 -0
  410. package/src/{components-v2 → components}/product-cards/product-card-plp/ProductCardPlp.stories.tsx +0 -0
  411. package/src/{components-v2 → components}/product-cards/product-card-plp/styles/index.ts +0 -0
  412. package/src/{components-v2 → components}/product-cards/product-card-plp-list/components/tags.tsx +0 -0
  413. package/src/{components-v2 → components}/product-cards/product-card-search/styles/index.ts +0 -0
  414. package/src/{components-v2 → components}/product-dialog/ProductDialog.stories.tsx +0 -0
  415. package/src/{components-v2 → components}/product-dimensions/__mocks__/data.ts +0 -0
  416. package/src/{components-v2 → components}/product-dimensions/utils/has-selected-dimension.ts +0 -0
  417. package/src/{components-v2 → components}/products-view/compound/context.ts +0 -0
  418. package/src/{components-v2 → components}/progress/ProgressBar.stories.tsx +0 -0
  419. package/src/{components-v2 → components}/progress/__tests__/progress.test.tsx +0 -0
  420. package/src/{components-v2 → components}/scrollbar/styles.ts +0 -0
  421. package/src/{components-v2 → components}/search-bar/compound/context.ts +0 -0
  422. package/src/{components-v2 → components}/search-bar/compound/textfield-adornment-button.tsx +0 -0
  423. package/src/{components-v2 → components}/search-bar/hooks/use-click-outside.ts +0 -0
  424. package/src/{components-v2 → components}/search-bar/hooks/use-search.ts +0 -0
  425. package/src/{components-v2 → components}/search-bar/styles/index.ts +0 -0
  426. package/src/{components-v2 → components}/section/Section.stories.tsx +0 -0
  427. package/src/{components-v2 → components}/wishlist-dialogs/__tests__/wishlistDetailData.json +0 -0
  428. package/src/{components-v2 → components}/wishlist-dialogs/__tests__/wishlistsData.json +0 -0
  429. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/AddToWishlist.stories.tsx +0 -0
  430. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/compound/context.ts +0 -0
  431. package/src/{components-v2 → components}/wishlist-dialogs/add-to-wishlist/hooks/use-add-to-wishlist.ts +0 -0
  432. package/src/{components-v2 → components}/wishlist-dialogs/create-wishlist/CreateWishlistButton.stories.tsx +0 -0
  433. package/src/{pages-v2 → pages}/README.md +0 -0
  434. package/src/{pages-v2 → pages}/account/table-row.tsx +0 -0
  435. package/src/{pages-v2 → pages}/blog/pagination.tsx +0 -0
  436. package/src/{pages-v2 → pages}/cart/__tests__/cart-with-items.json +0 -0
  437. package/src/{pages-v2 → pages}/cart/__tests__/conutries.json +0 -0
  438. package/src/{pages-v2 → pages}/cart/__tests__/countries.json +0 -0
  439. package/src/{pages-v2 → pages}/cart/wrapper.tsx +0 -0
  440. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/node.tsx +0 -0
  441. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/address/styles.ts +0 -0
  442. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/steps/payment/safe-card-preview-data.tsx +0 -0
  443. package/src/{pages-v2 → pages}/checkout/checkout-alt-form/types.ts +0 -0
  444. package/src/{pages-v2 → pages}/product-details/bopis/search-header.tsx +0 -0
  445. package/src/{pages-v2 → pages}/product-details/bopis/store-card/styles.ts +0 -0
  446. package/src/{pages-v2 → pages}/product-details/bopis/store-card/utils/convertSecondsToTime.ts +0 -0
  447. package/src/{pages-v2 → pages}/product-details/bopis/store-card/utils/getDaysResources.ts +0 -0
  448. package/src/{pages-v2 → pages}/product-details/checkbox-label.tsx +0 -0
  449. package/src/{pages-v2 → pages}/product-details/product-intro/compound/context.ts +0 -0
  450. package/src/{pages-v2 → pages}/product-details/product-intro/utils.ts +0 -0
  451. package/src/{pages-v2 → pages}/product-details/types.ts +0 -0
  452. package/src/{pages-v2 → pages}/product-list/checkbox-label.tsx +0 -0
  453. package/src/{pages-v2 → pages}/product-list/facet.tsx +0 -0
  454. package/src/{pages-v2 → pages}/product-list/product-list-state.ts +0 -0
  455. package/src/{pages-v2 → pages}/product-list/product-rating.tsx +0 -0
  456. package/src/{pages-v2 → pages}/product-list/quick-view-dialog.tsx +4 -4
  457. package/src/{pages-v2 → pages}/product-list/range-filter.tsx +0 -0
  458. package/src/{pages-v2 → pages}/product-list/scrollbar.tsx +0 -0
  459. package/src/{pages-v2 → pages}/product-list/search-bar.tsx +0 -0
  460. package/src/{pages-v2 → pages}/product-list/side-nav.tsx +0 -0
  461. package/src/{pages-v2 → pages}/product-list/swatch.tsx +0 -0
  462. package/src/{pages-v2 → pages}/product-list/types.ts +0 -0
  463. package/src/{pages-v2 → pages}/product-list/use-product-list.ts +0 -0
  464. package/src/{pages-v2 → pages}/product-list/useCategoryFilter.tsx +0 -0
  465. package/src/{pages-v2 → pages}/product-list/utils/facet-helpers.ts +0 -0
  466. package/src/{pages-v2 → pages}/product-list/utils/generate-breadcrumbs.ts +0 -0
  467. package/src/{pages-v2 → pages}/product-list/utils/getCategoryFilterFromSlug.ts +0 -0
  468. package/src/{pages-v2 → pages}/product-list/utils/product-list-helper.ts +4 -4
  469. /package/src/{pages-v2 → pages}/product-list/utils/product-list-types.ts +0 -0
  470. /package/src/{pages-v2 → pages}/product-list/utils/sort-options.ts +0 -0
  471. /package/src/{pages-v2 → pages}/product-list/utils/use-previous-refiners.ts +0 -0
@@ -102,7 +102,7 @@ const cart: CartApi = {
102
102
  const e4Api = await getGraphqlClient();
103
103
 
104
104
  const { cartLine } = input;
105
- let cart;
105
+ let cart: E4Cart | undefined;
106
106
 
107
107
  for (const cl of cartLine) {
108
108
  const { data, errors } = await e4Api.e4UpdateCartLineMD({
@@ -118,12 +118,14 @@ const cart: CartApi = {
118
118
  throw new Error("Error updating cart lines");
119
119
  }
120
120
 
121
- cart = data.updateCartLine;
121
+ cart = data?.updateCartLine?.cart as E4Cart | undefined;
122
122
  }
123
123
 
124
- const transformedData = cartTranslator.cartTransformValidate(
125
- cart?.cart as E4Cart,
126
- );
124
+ if (!cart) {
125
+ throw new Error("Failed to update cart lines - no cart returned");
126
+ }
127
+
128
+ const transformedData = cartTranslator.cartTransformValidate(cart);
127
129
  return transformedData;
128
130
  },
129
131
 
@@ -44,7 +44,7 @@ export const cartLineMap = {
44
44
  "[].product.id": {
45
45
  key: "[].ProductId",
46
46
  transform: (id: string) => {
47
- if (id !== null) return Number.parseInt(id);
47
+ if (id !== null) return Number.parseInt(id, 10);
48
48
  },
49
49
  },
50
50
  "[].product.code": "[].ItemId",
@@ -146,9 +146,9 @@ export const categoryTransformValidate = (
146
146
  }
147
147
  });
148
148
 
149
- rootNodes.forEach((rootNode: TransformedCategoryNode) =>
150
- calculateUrls(rootNode, "", urlPrefix),
151
- );
149
+ for (const rootNode of rootNodes as TransformedCategoryNode[]) {
150
+ calculateUrls(rootNode, "", urlPrefix);
151
+ }
152
152
  rootNodes.sort(
153
153
  (a, b) =>
154
154
  (a.DisplayOrder ?? 0) - (b.DisplayOrder ?? 0) ||
@@ -34,7 +34,7 @@ export const productMap = {
34
34
  {
35
35
  key: "RecordId",
36
36
  transform: (id: string) => {
37
- if (id !== null) return Number.parseInt(id);
37
+ if (id !== null) return Number.parseInt(id, 10);
38
38
  },
39
39
  },
40
40
  ],
@@ -54,13 +54,13 @@ export const productPricesMap = {
54
54
  {
55
55
  key: "ProductId",
56
56
  transform: (id: string) => {
57
- if (id !== null) return Number.parseInt(id);
57
+ if (id !== null) return Number.parseInt(id, 10);
58
58
  },
59
59
  },
60
60
  {
61
61
  key: "ListingId",
62
62
  transform: (id: string) => {
63
- if (id !== null) return Number.parseInt(id);
63
+ if (id !== null) return Number.parseInt(id, 10);
64
64
  },
65
65
  },
66
66
  ],
@@ -305,7 +305,9 @@ export const productPricesTransformValidate = (
305
305
  (p) => merge(p, productPricesMap) as ProductPrice,
306
306
  );
307
307
  try {
308
- translatedData.forEach((pp: ProductPrice) => productPriceSchema.parse(pp));
308
+ for (const pp of translatedData) {
309
+ productPriceSchema.parse(pp);
310
+ }
309
311
  } catch (e) {
310
312
  console.warn("ProductPrice data does not match retail-proxy schema", e);
311
313
  }
@@ -123,23 +123,19 @@ const user: UserApi = {
123
123
  throw new Error("Error creating wishlist");
124
124
  }
125
125
  },
126
- // @ts-expect-error
127
- async updateWishlist(input: WishlistLinesInput): Promise<Wishlist> {
126
+ async updateWishlist(_input: WishlistLinesInput): Promise<Wishlist> {
128
127
  throw new Error("updateWishlist not implemented");
129
128
  },
130
129
 
131
- // @ts-expect-error
132
- async addProductsToWishlist(input: WishlistLinesInput): Promise<Wishlist> {
130
+ async addProductsToWishlist(_input: WishlistLinesInput): Promise<Wishlist> {
133
131
  throw new Error("addProductsToWishlist not implemented");
134
132
  },
135
133
 
136
- // @ts-expect-error
137
- async removeProductsFromWishlist(input: WishlistLinesInput): Promise<void> {
134
+ async removeProductsFromWishlist(_input: WishlistLinesInput): Promise<void> {
138
135
  throw new Error("removeProductsFromWishlist not implemented");
139
136
  },
140
137
 
141
- // @ts-expect-error
142
- async copyCartToWishlist(input: CopyCartToWishlistInput): Promise<Wishlist> {
138
+ async copyCartToWishlist(_input: CopyCartToWishlistInput): Promise<Wishlist> {
143
139
  throw new Error("copyCartToWishlist not implemented");
144
140
  },
145
141
  };
@@ -1,141 +1,23 @@
1
- // @ts-expect-error - this will be picked up by webpack
2
- import rawConfig from "@api-manager-config";
3
1
  import { D365Datasource } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/index";
4
2
  import { getContextFromCookie } from "@evenicanpm/storefront-core/src/api-manager/datasources/d365/utils/get-context-cookie";
5
3
  import E4Datasource from "@evenicanpm/storefront-core/src/api-manager/datasources/e4/e4.datasource";
6
- import type {
7
- Datasource,
8
- DatasourceApis,
9
- } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
10
- import { z } from "zod";
11
-
12
- type EntityNames = keyof DatasourceApis;
13
-
14
- interface Config {
15
- primary: string;
16
- secondary: string[];
17
- overrides?: Partial<Record<EntityNames, string>>;
18
- }
19
-
20
- const Config = z.object({
21
- primary: z.string(),
22
- secondary: z.array(z.string()),
23
- overrides: z.record(z.string(), z.string()),
24
- });
25
-
26
- const OVERRIDES_FILE = "./overrides.datasource.ts";
27
- const CORE_DATASOURCES = [
28
- "user",
29
- "session",
30
- "cart",
31
- "product",
32
- "categories",
33
- "order",
34
- "address",
35
- "organization",
36
- ];
4
+ import type { Datasource } from "@evenicanpm/storefront-core/src/api-manager/types/Datasource";
37
5
 
38
6
  /**
39
- * Loads up all specified apis/datasources based on parsed config
40
- * and returns the ApiManager object. Also handles "project" overrides
41
- * by checking inside a specific folder for API's. Will grab default export
42
- * from specified folder, validate the API schema and then prioritize returning
43
- * that from api-manager.
7
+ * Returns the active commerce datasource based on the API_MANAGER_PRIMARY
8
+ * environment variable. Defaults to "e4" when the variable is not set.
44
9
  *
45
- * In this way, we have two levels of configuration of the api-manager.
46
- * 1. actual JSON config
47
- * 2. overrides from storefront
48
- *
49
- * @returns ApiManager object.
10
+ * Supported values: "e4" | "d365"
50
11
  */
51
- async function createApiManager() {
52
- try {
53
- Config.parse(rawConfig);
54
- } catch (error) {
55
- if (error instanceof z.ZodError) {
56
- console.error("Config validation failed:", error.issues);
57
- }
58
- }
12
+ async function createApiManager(): Promise<Datasource> {
13
+ const primary = process.env.API_MANAGER_PRIMARY ?? "e4";
59
14
 
60
- const storefrontOverrides: { [key: string]: any } = {};
61
-
62
- // @ts-expect-error
63
- function importAll(r) {
64
- r.keys().forEach(
65
- (key: keyof typeof storefrontOverrides) =>
66
- (storefrontOverrides[key] = r(key)),
67
- );
15
+ if (primary === "d365") {
16
+ const context = await getContextFromCookie();
17
+ return new D365Datasource("d365", context);
68
18
  }
69
19
 
70
- // Arguments must be literals not variables.
71
- importAll(
72
- // @ts-expect-error
73
- require.context(
74
- "@storefront/extensions/api-manager-overrides",
75
- true,
76
- /overrides\.datasource\.ts/,
77
- ),
78
- );
79
-
80
- const context = await getContextFromCookie();
81
- const datasourceMap: Record<string, Datasource> = {
82
- d365: new D365Datasource("d365", context),
83
- e4: E4Datasource,
84
- // Add more datasources here as needed
85
- };
86
-
87
- const config = rawConfig as Config;
88
- const primaryDatasource = datasourceMap[config.primary];
89
- const secondaryDatasources = config.secondary.map(
90
- (name) => datasourceMap[name],
91
- );
92
-
93
- const getDatasource = (entityName: EntityNames) => {
94
- // Project-Level Overrides
95
- let projectOverrides: { [key: string]: any } = {};
96
- if (storefrontOverrides?.[OVERRIDES_FILE]?.["default"]?.[entityName]) {
97
- projectOverrides =
98
- storefrontOverrides[OVERRIDES_FILE]["default"][entityName];
99
- }
100
-
101
- // Config-Level Overrides
102
- const override = config?.overrides?.[entityName];
103
-
104
- // Build the base entity from api-manager config settings
105
- let baseEntity: { [key: string]: any } = {};
106
- if (override) {
107
- baseEntity =
108
- secondaryDatasources.find((ds) => ds.name === override) ??
109
- primaryDatasource;
110
- } else {
111
- baseEntity = primaryDatasource;
112
- }
113
-
114
- // Attach Project Overrides to Entity
115
- for (const key in projectOverrides) {
116
- baseEntity[entityName][key] = projectOverrides[key];
117
- }
118
-
119
- return baseEntity;
120
- };
121
-
122
- const datasources: { [key: string]: any } = {};
123
-
124
- CORE_DATASOURCES.forEach((entityName) => {
125
- const datasource = getDatasource(entityName as EntityNames);
126
- datasources[entityName] = datasource[entityName as keyof Datasource];
127
- });
128
-
129
- storefrontOverrides[OVERRIDES_FILE]?.default &&
130
- Object.keys(storefrontOverrides[OVERRIDES_FILE]["default"]).forEach(
131
- (key) => {
132
- if (!CORE_DATASOURCES.includes(key)) {
133
- datasources[key as keyof Datasource] =
134
- storefrontOverrides[OVERRIDES_FILE]["default"][key];
135
- }
136
- },
137
- );
138
- return datasources;
20
+ return E4Datasource;
139
21
  }
140
22
 
141
23
  export default createApiManager;
@@ -107,8 +107,8 @@ const normalizeCategoryName = (string_: string) =>
107
107
  string_.toLowerCase().replaceAll(" ", "-");
108
108
 
109
109
  export {
110
- mapCategoryToHierarchy,
111
110
  generateUrl,
112
111
  getFriendlyName,
112
+ mapCategoryToHierarchy,
113
113
  normalizeCategoryName,
114
114
  };
@@ -24,13 +24,13 @@ const getGraphQLClient = async (withAuth = false) => {
24
24
  // This session cookie solution only works when all api calls are through server actions.
25
25
  // If not we need to route all e4 client api calls through an custom api route.
26
26
  if (sessionCookie) {
27
- headers["Cookie"] = `storefront=${sessionCookie.value}`;
27
+ headers.Cookie = `storefront=${sessionCookie.value}`;
28
28
  }
29
29
 
30
30
  if (withAuth) {
31
31
  const session = await getServerSession(authOptions());
32
32
  if (session?.accessToken) {
33
- headers["Authorization"] = `Bearer ${session.accessToken}`;
33
+ headers.Authorization = `Bearer ${session.accessToken}`;
34
34
  }
35
35
  }
36
36
 
@@ -43,6 +43,7 @@ export const productSchema = z.object({
43
43
  Name: z.string(),
44
44
  Price: z.number().optional(),
45
45
  BasePrice: z.number().optional(),
46
+ AdjustedPrice: z.number().optional(),
46
47
  Description: z.string().optional(),
47
48
  PrimaryImageUrl: z.string().or(z.null()).optional(), // adding a null for nextjs/image component
48
49
  Variants: z.array(z.any()).optional(),
@@ -52,6 +53,14 @@ export const productSchema = z.object({
52
53
  Reviews: z.array(reviewSchema).optional(),
53
54
  categoryFilter: z.string().optional(),
54
55
  ExtensionProperties: z.array(commercePropertySchema).optional(),
56
+ /** From merge(productData, productDetailsMap); must be kept through .parse() or Zod strips unknown keys. */
57
+ MasterProductId: z.union([z.number(), z.string()]).optional(),
58
+ Dimensions: z.array(z.any()).default([]),
59
+ DimensionValues: z
60
+ .array(z.array(z.custom<ProductDimensionValueInventoryAvailability>()))
61
+ .default([]),
62
+ Images: z.array(z.string()).optional(),
63
+ Attributes: z.array(z.custom<AttributeValue>()).default([]),
55
64
  });
56
65
 
57
66
  export const productWCategorySchema = productSchema.extend({
@@ -15,7 +15,7 @@ import type { QueryFunction } from "@tanstack/react-query";
15
15
  * @param queryFn
16
16
  * @returns
17
17
  */
18
- const buildQueryData = <TQueryFnData = unknown, TQueryFnInput = unknown>(
18
+ const buildQueryData = <TQueryFnData = unknown, _TQueryFnInput = unknown>(
19
19
  queryKey: string,
20
20
  queryFn: QueryFunction<TQueryFnData>,
21
21
  ) => {