@shopify/hydrogen 1.1.0 → 1.3.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 (415) hide show
  1. package/README.md +1 -1
  2. package/dist/esnext/FileSessionStorage.d.ts +1 -1
  3. package/dist/esnext/FileSessionStorage.js +1 -1
  4. package/dist/esnext/client.d.ts +16 -16
  5. package/dist/esnext/client.js +16 -16
  6. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +5 -2
  7. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +6 -5
  8. package/dist/esnext/components/AddToCartButton/index.d.ts +1 -1
  9. package/dist/esnext/components/AddToCartButton/index.js +1 -1
  10. package/dist/esnext/components/BaseButton/BaseButton.client.d.ts +7 -5
  11. package/dist/esnext/components/BaseButton/BaseButton.client.js +5 -4
  12. package/dist/esnext/components/BaseButton/index.d.ts +1 -1
  13. package/dist/esnext/components/BaseButton/index.js +1 -1
  14. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.d.ts +3 -2
  15. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.js +2 -2
  16. package/dist/esnext/components/BuyNowButton/index.d.ts +1 -1
  17. package/dist/esnext/components/BuyNowButton/index.js +1 -1
  18. package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.js +1 -1
  19. package/dist/esnext/components/CartCheckoutButton/index.d.ts +1 -1
  20. package/dist/esnext/components/CartCheckoutButton/index.js +1 -1
  21. package/dist/esnext/components/CartCost/CartCost.client.d.ts +1 -1
  22. package/dist/esnext/components/CartCost/CartCost.client.js +2 -2
  23. package/dist/esnext/components/CartCost/index.d.ts +1 -1
  24. package/dist/esnext/components/CartCost/index.js +1 -1
  25. package/dist/esnext/components/CartLineImage/CartLineImage.client.d.ts +1 -1
  26. package/dist/esnext/components/CartLineImage/CartLineImage.client.js +2 -2
  27. package/dist/esnext/components/CartLineImage/index.d.ts +1 -1
  28. package/dist/esnext/components/CartLineImage/index.js +1 -1
  29. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +1 -1
  30. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +2 -2
  31. package/dist/esnext/components/CartLinePrice/index.d.ts +1 -1
  32. package/dist/esnext/components/CartLinePrice/index.js +1 -1
  33. package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.js +1 -1
  34. package/dist/esnext/components/CartLineProductTitle/index.d.ts +1 -1
  35. package/dist/esnext/components/CartLineProductTitle/index.js +1 -1
  36. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.d.ts +1 -1
  37. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.js +1 -1
  38. package/dist/esnext/components/CartLineProvider/context.d.ts +13 -13
  39. package/dist/esnext/components/CartLineProvider/index.d.ts +2 -2
  40. package/dist/esnext/components/CartLineProvider/index.js +2 -2
  41. package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.js +1 -1
  42. package/dist/esnext/components/CartLineQuantity/index.d.ts +1 -1
  43. package/dist/esnext/components/CartLineQuantity/index.js +1 -1
  44. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.d.ts +7 -8
  45. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.js +3 -3
  46. package/dist/esnext/components/CartLineQuantityAdjustButton/index.d.ts +1 -1
  47. package/dist/esnext/components/CartLineQuantityAdjustButton/index.js +1 -1
  48. package/dist/esnext/components/CartLines/CartLines.client.d.ts +1 -1
  49. package/dist/esnext/components/CartLines/CartLines.client.js +2 -2
  50. package/dist/esnext/components/CartLines/index.d.ts +1 -1
  51. package/dist/esnext/components/CartLines/index.js +1 -1
  52. package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +2 -2
  53. package/dist/esnext/components/CartProvider/CartProvider.client.js +13 -7
  54. package/dist/esnext/components/CartProvider/cart-queries.d.ts +1 -1
  55. package/dist/esnext/components/CartProvider/cart-queries.js +1 -0
  56. package/dist/esnext/components/CartProvider/context.d.ts +1 -1
  57. package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.d.ts +1 -1
  58. package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.d.ts +1 -1
  59. package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.d.ts +1 -1
  60. package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.d.ts +1 -1
  61. package/dist/esnext/components/CartProvider/graphql/CartFragment.d.ts +1 -1
  62. package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.d.ts +1 -1
  63. package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.d.ts +1 -1
  64. package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.d.ts +1 -1
  65. package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.d.ts +1 -1
  66. package/dist/esnext/components/CartProvider/graphql/CartQuery.d.ts +1 -1
  67. package/dist/esnext/components/CartProvider/hooks.client.d.ts +2 -2
  68. package/dist/esnext/components/CartProvider/hooks.client.js +4 -4
  69. package/dist/esnext/components/CartProvider/index.d.ts +4 -4
  70. package/dist/esnext/components/CartProvider/index.js +3 -3
  71. package/dist/esnext/components/CartProvider/types.d.ts +2 -2
  72. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.d.ts +1 -1
  73. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.js +2 -2
  74. package/dist/esnext/components/CartShopPayButton/index.d.ts +1 -1
  75. package/dist/esnext/components/CartShopPayButton/index.js +1 -1
  76. package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +2 -2
  77. package/dist/esnext/components/ExternalVideo/ExternalVideo.js +3 -3
  78. package/dist/esnext/components/ExternalVideo/index.d.ts +1 -1
  79. package/dist/esnext/components/ExternalVideo/index.js +1 -1
  80. package/dist/esnext/components/Image/Image.d.ts +2 -2
  81. package/dist/esnext/components/Image/Image.js +5 -5
  82. package/dist/esnext/components/Image/index.d.ts +2 -2
  83. package/dist/esnext/components/Image/index.js +1 -1
  84. package/dist/esnext/components/Link/Link.client.js +5 -5
  85. package/dist/esnext/components/Link/index.d.ts +1 -1
  86. package/dist/esnext/components/Link/index.js +1 -1
  87. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.d.ts +1 -1
  88. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.js +1 -1
  89. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +1 -1
  90. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +5 -5
  91. package/dist/esnext/components/LocalizationProvider/index.d.ts +1 -1
  92. package/dist/esnext/components/LocalizationProvider/index.js +1 -1
  93. package/dist/esnext/components/MediaFile/MediaFile.d.ts +4 -4
  94. package/dist/esnext/components/MediaFile/MediaFile.js +4 -4
  95. package/dist/esnext/components/MediaFile/index.d.ts +1 -1
  96. package/dist/esnext/components/MediaFile/index.js +1 -1
  97. package/dist/esnext/components/Metafield/Metafield.client.d.ts +2 -2
  98. package/dist/esnext/components/Metafield/Metafield.client.js +6 -6
  99. package/dist/esnext/components/Metafield/components/StarRating/StarRating.d.ts +1 -1
  100. package/dist/esnext/components/Metafield/components/StarRating/index.d.ts +1 -1
  101. package/dist/esnext/components/Metafield/components/StarRating/index.js +1 -1
  102. package/dist/esnext/components/Metafield/components/index.d.ts +1 -1
  103. package/dist/esnext/components/Metafield/components/index.js +1 -1
  104. package/dist/esnext/components/Metafield/index.d.ts +2 -2
  105. package/dist/esnext/components/Metafield/index.js +1 -1
  106. package/dist/esnext/components/Metafield/types.d.ts +1 -1
  107. package/dist/esnext/components/ModelViewer/ModelViewer.client.d.ts +2 -2
  108. package/dist/esnext/components/ModelViewer/ModelViewer.client.js +1 -1
  109. package/dist/esnext/components/ModelViewer/index.d.ts +1 -1
  110. package/dist/esnext/components/ModelViewer/index.js +1 -1
  111. package/dist/esnext/components/Money/Money.client.d.ts +1 -1
  112. package/dist/esnext/components/Money/Money.client.js +1 -1
  113. package/dist/esnext/components/Money/index.d.ts +1 -1
  114. package/dist/esnext/components/Money/index.js +1 -1
  115. package/dist/esnext/components/ProductOptionsProvider/ProductOptionsProvider.client.d.ts +1 -1
  116. package/dist/esnext/components/ProductOptionsProvider/ProductOptionsProvider.client.js +3 -3
  117. package/dist/esnext/components/ProductOptionsProvider/context.d.ts +1 -1
  118. package/dist/esnext/components/ProductOptionsProvider/index.d.ts +1 -1
  119. package/dist/esnext/components/ProductOptionsProvider/index.js +1 -1
  120. package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +2 -2
  121. package/dist/esnext/components/ProductPrice/ProductPrice.client.js +2 -2
  122. package/dist/esnext/components/ProductPrice/index.d.ts +1 -1
  123. package/dist/esnext/components/ProductPrice/index.js +1 -1
  124. package/dist/esnext/components/Seo/CollectionSeo.client.d.ts +1 -1
  125. package/dist/esnext/components/Seo/CollectionSeo.client.js +4 -4
  126. package/dist/esnext/components/Seo/DefaultPageSeo.client.d.ts +1 -1
  127. package/dist/esnext/components/Seo/DefaultPageSeo.client.js +5 -5
  128. package/dist/esnext/components/Seo/DescriptionSeo.client.d.ts +1 -1
  129. package/dist/esnext/components/Seo/DescriptionSeo.client.js +1 -1
  130. package/dist/esnext/components/Seo/HomePageSeo.client.d.ts +1 -1
  131. package/dist/esnext/components/Seo/HomePageSeo.client.js +3 -3
  132. package/dist/esnext/components/Seo/ImageSeo.client.d.ts +1 -1
  133. package/dist/esnext/components/Seo/ImageSeo.client.js +1 -1
  134. package/dist/esnext/components/Seo/NoIndexSeo.client.d.ts +1 -1
  135. package/dist/esnext/components/Seo/NoIndexSeo.client.js +2 -2
  136. package/dist/esnext/components/Seo/PageSeo.client.d.ts +1 -1
  137. package/dist/esnext/components/Seo/PageSeo.client.js +3 -3
  138. package/dist/esnext/components/Seo/ProductSeo.client.d.ts +1 -1
  139. package/dist/esnext/components/Seo/ProductSeo.client.js +6 -6
  140. package/dist/esnext/components/Seo/Seo.client.d.ts +4 -4
  141. package/dist/esnext/components/Seo/Seo.client.js +7 -7
  142. package/dist/esnext/components/Seo/TitleSeo.client.d.ts +1 -1
  143. package/dist/esnext/components/Seo/TitleSeo.client.js +1 -1
  144. package/dist/esnext/components/Seo/TwitterSeo.client.d.ts +1 -1
  145. package/dist/esnext/components/Seo/TwitterSeo.client.js +1 -1
  146. package/dist/esnext/components/Seo/index.d.ts +1 -1
  147. package/dist/esnext/components/Seo/index.js +1 -1
  148. package/dist/esnext/components/Seo/seo-types.d.ts +1 -1
  149. package/dist/esnext/components/ShopPayButton/ShopPayButton.client.js +2 -2
  150. package/dist/esnext/components/ShopPayButton/index.d.ts +1 -1
  151. package/dist/esnext/components/ShopPayButton/index.js +1 -1
  152. package/dist/esnext/components/Video/Video.d.ts +7 -2
  153. package/dist/esnext/components/Video/Video.js +3 -3
  154. package/dist/esnext/components/Video/index.d.ts +1 -1
  155. package/dist/esnext/components/Video/index.js +1 -1
  156. package/dist/esnext/components/index.d.ts +27 -27
  157. package/dist/esnext/components/index.js +25 -25
  158. package/dist/esnext/config.d.ts +5 -5
  159. package/dist/esnext/config.js +4 -4
  160. package/dist/esnext/constants.d.ts +1 -0
  161. package/dist/esnext/constants.js +1 -0
  162. package/dist/esnext/entry-client.d.ts +1 -1
  163. package/dist/esnext/entry-client.js +35 -14
  164. package/dist/esnext/entry-server.d.ts +1 -1
  165. package/dist/esnext/entry-server.js +76 -51
  166. package/dist/esnext/experimental.d.ts +2 -0
  167. package/dist/esnext/experimental.js +2 -0
  168. package/dist/esnext/foundation/Analytics/Analytics.client.js +1 -1
  169. package/dist/esnext/foundation/Analytics/Analytics.server.js +5 -5
  170. package/dist/esnext/foundation/Analytics/ClientAnalytics.d.ts +1 -1
  171. package/dist/esnext/foundation/Analytics/ClientAnalytics.js +4 -4
  172. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.d.ts +1 -1
  173. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.js +1 -1
  174. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetrics.client.js +3 -3
  175. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetricsDebug.client.js +1 -1
  176. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/ServerAnalyticsConnector.js +1 -1
  177. package/dist/esnext/foundation/Analytics/connectors/Shopify/ServerAnalyticsConnector.js +1 -1
  178. package/dist/esnext/foundation/Analytics/connectors/Shopify/ShopifyAnalytics.client.js +3 -3
  179. package/dist/esnext/foundation/Analytics/connectors/Shopify/ShopifyAnalytics.server.js +9 -9
  180. package/dist/esnext/foundation/Analytics/hook.js +2 -2
  181. package/dist/esnext/foundation/Analytics/index.d.ts +1 -1
  182. package/dist/esnext/foundation/Analytics/index.js +1 -1
  183. package/dist/esnext/foundation/Analytics/utils.js +1 -1
  184. package/dist/esnext/foundation/BuiltInRoutes/BuiltInRoutes.d.ts +1 -1
  185. package/dist/esnext/foundation/BuiltInRoutes/BuiltInRoutes.js +3 -3
  186. package/dist/esnext/foundation/Cache/cache-sub-request.d.ts +1 -1
  187. package/dist/esnext/foundation/Cache/cache-sub-request.js +4 -4
  188. package/dist/esnext/foundation/Cache/cache.d.ts +1 -1
  189. package/dist/esnext/foundation/Cache/cache.js +3 -4
  190. package/dist/esnext/foundation/Cache/strategies/index.d.ts +1 -1
  191. package/dist/esnext/foundation/Cookie/Cookie.js +2 -2
  192. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.d.ts +2 -2
  193. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.js +2 -1
  194. package/dist/esnext/foundation/DevTools/DevTools.client.js +1 -1
  195. package/dist/esnext/foundation/DevTools/DevTools.server.js +4 -3
  196. package/dist/esnext/foundation/DevTools/components/Interface.client.js +1 -1
  197. package/dist/esnext/foundation/DevTools/components/Panels.d.ts +2 -2
  198. package/dist/esnext/foundation/DevTools/components/Panels.js +3 -3
  199. package/dist/esnext/foundation/DevTools/components/Performance.client.js +1 -1
  200. package/dist/esnext/foundation/DevTools/components/Settings.client.d.ts +2 -1
  201. package/dist/esnext/foundation/DevTools/components/Settings.client.js +1 -1
  202. package/dist/esnext/foundation/DevTools/components/index.d.ts +2 -2
  203. package/dist/esnext/foundation/DevTools/components/index.js +2 -2
  204. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.d.ts +1 -1
  205. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.js +5 -5
  206. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.d.ts +3 -3
  207. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.js +2 -2
  208. package/dist/esnext/foundation/Form/Form.client.d.ts +11 -0
  209. package/dist/esnext/foundation/Form/Form.client.js +51 -0
  210. package/dist/esnext/foundation/Head/Head.client.js +1 -1
  211. package/dist/esnext/foundation/Head/index.d.ts +1 -1
  212. package/dist/esnext/foundation/Head/index.js +1 -1
  213. package/dist/esnext/foundation/Html/Html.d.ts +1 -1
  214. package/dist/esnext/foundation/HydrogenRequest/HydrogenRequest.server.d.ts +6 -5
  215. package/dist/esnext/foundation/HydrogenRequest/HydrogenRequest.server.js +5 -4
  216. package/dist/esnext/foundation/HydrogenResponse/HydrogenResponse.server.d.ts +2 -4
  217. package/dist/esnext/foundation/HydrogenResponse/HydrogenResponse.server.js +4 -18
  218. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.d.ts +2 -2
  219. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.js +1 -1
  220. package/dist/esnext/foundation/Redirect/Redirect.client.js +1 -1
  221. package/dist/esnext/foundation/Route/Route.server.js +3 -3
  222. package/dist/esnext/foundation/Router/BrowserRouter.client.js +2 -2
  223. package/dist/esnext/foundation/Router/Router.server.js +1 -1
  224. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.d.ts +3 -1
  225. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.js +4 -4
  226. package/dist/esnext/foundation/ServerPropsProvider/index.d.ts +1 -1
  227. package/dist/esnext/foundation/ServerPropsProvider/index.js +1 -1
  228. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +2 -2
  229. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.js +3 -3
  230. package/dist/esnext/foundation/ServerRequestProvider/index.d.ts +1 -1
  231. package/dist/esnext/foundation/ServerRequestProvider/index.js +1 -1
  232. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.d.ts +1 -1
  233. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.d.ts +2 -2
  234. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.js +7 -6
  235. package/dist/esnext/foundation/ShopifyProvider/index.d.ts +1 -1
  236. package/dist/esnext/foundation/ShopifyProvider/index.js +1 -1
  237. package/dist/esnext/foundation/ShopifyProvider/types.d.ts +4 -3
  238. package/dist/esnext/foundation/fetchSync/ResponseSync.js +2 -2
  239. package/dist/esnext/foundation/fetchSync/client/fetchSync.d.ts +1 -1
  240. package/dist/esnext/foundation/fetchSync/client/fetchSync.js +2 -2
  241. package/dist/esnext/foundation/fetchSync/server/fetchSync.d.ts +2 -2
  242. package/dist/esnext/foundation/fetchSync/server/fetchSync.js +3 -3
  243. package/dist/esnext/foundation/index.d.ts +3 -3
  244. package/dist/esnext/foundation/index.js +3 -3
  245. package/dist/esnext/foundation/session/session-types.d.ts +15 -0
  246. package/dist/esnext/foundation/session/session-types.js +1 -0
  247. package/dist/esnext/foundation/session/session.d.ts +7 -16
  248. package/dist/esnext/foundation/session/session.js +17 -1
  249. package/dist/esnext/foundation/ssr-interop.d.ts +2 -2
  250. package/dist/esnext/foundation/ssr-interop.js +2 -2
  251. package/dist/esnext/foundation/useNavigate/useNavigate.js +2 -2
  252. package/dist/esnext/foundation/useQuery/hooks.d.ts +4 -1
  253. package/dist/esnext/foundation/useQuery/hooks.js +5 -5
  254. package/dist/esnext/foundation/useQuery/index.d.ts +1 -1
  255. package/dist/esnext/foundation/useQuery/index.js +1 -1
  256. package/dist/esnext/foundation/useRequestContext/index.js +1 -1
  257. package/dist/esnext/foundation/useRouteParams/useRouteParams.js +2 -2
  258. package/dist/esnext/foundation/useServerProps/index.d.ts +1 -1
  259. package/dist/esnext/foundation/useServerProps/index.js +1 -1
  260. package/dist/esnext/foundation/useServerProps/use-server-props.d.ts +1 -1
  261. package/dist/esnext/foundation/useServerProps/use-server-props.js +1 -1
  262. package/dist/esnext/foundation/useSession/useSession.d.ts +1 -0
  263. package/dist/esnext/foundation/useSession/useSession.js +14 -1
  264. package/dist/esnext/foundation/useShop/index.d.ts +1 -1
  265. package/dist/esnext/foundation/useShop/index.js +1 -1
  266. package/dist/esnext/foundation/useShop/use-shop.d.ts +1 -1
  267. package/dist/esnext/foundation/useShop/use-shop.js +2 -2
  268. package/dist/esnext/foundation/useUrl/index.d.ts +1 -1
  269. package/dist/esnext/foundation/useUrl/index.js +1 -1
  270. package/dist/esnext/foundation/useUrl/useUrl.js +4 -4
  271. package/dist/esnext/framework/load-config.js +2 -2
  272. package/dist/esnext/framework/middleware.d.ts +1 -1
  273. package/dist/esnext/framework/middleware.js +2 -2
  274. package/dist/esnext/framework/plugin.d.ts +1 -1
  275. package/dist/esnext/framework/plugin.js +17 -15
  276. package/dist/esnext/framework/plugins/vite-plugin-assets-version.d.ts +2 -0
  277. package/dist/esnext/framework/plugins/vite-plugin-assets-version.js +8 -0
  278. package/dist/esnext/framework/plugins/vite-plugin-css-modules-rsc.js +1 -1
  279. package/dist/esnext/framework/plugins/vite-plugin-css-rsc.d.ts +2 -0
  280. package/dist/esnext/framework/plugins/vite-plugin-css-rsc.js +108 -0
  281. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-config.d.ts +2 -1
  282. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-config.js +8 -4
  283. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +1 -1
  284. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.js +3 -3
  285. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -1
  286. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.js +2 -2
  287. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-virtual-files.d.ts +1 -1
  288. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-virtual-files.js +35 -7
  289. package/dist/esnext/framework/plugins/vite-plugin-platform-entry.js +1 -1
  290. package/dist/esnext/framework/types.d.ts +14 -0
  291. package/dist/esnext/hooks/index.d.ts +6 -6
  292. package/dist/esnext/hooks/index.js +6 -6
  293. package/dist/esnext/hooks/useCart/index.d.ts +1 -1
  294. package/dist/esnext/hooks/useCart/index.js +1 -1
  295. package/dist/esnext/hooks/useCart/useCart.d.ts +1 -1
  296. package/dist/esnext/hooks/useCart/useCart.js +1 -1
  297. package/dist/esnext/hooks/useCartLine/index.d.ts +1 -1
  298. package/dist/esnext/hooks/useCartLine/index.js +1 -1
  299. package/dist/esnext/hooks/useCartLine/useCartLine.d.ts +13 -13
  300. package/dist/esnext/hooks/useCartLine/useCartLine.js +1 -1
  301. package/dist/esnext/hooks/useLoadScript/index.d.ts +1 -1
  302. package/dist/esnext/hooks/useLoadScript/index.js +1 -1
  303. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.d.ts +1 -1
  304. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.js +1 -1
  305. package/dist/esnext/hooks/useLocalization/useLocalization.d.ts +2 -3
  306. package/dist/esnext/hooks/useLocalization/useLocalization.js +2 -2
  307. package/dist/esnext/hooks/useMeasurement/hooks.d.ts +1 -1
  308. package/dist/esnext/hooks/useMeasurement/hooks.js +2 -2
  309. package/dist/esnext/hooks/useMeasurement/index.d.ts +1 -1
  310. package/dist/esnext/hooks/useMeasurement/index.js +1 -1
  311. package/dist/esnext/hooks/useMoney/hooks.d.ts +1 -1
  312. package/dist/esnext/hooks/useMoney/hooks.js +1 -1
  313. package/dist/esnext/hooks/useMoney/index.d.ts +1 -1
  314. package/dist/esnext/hooks/useMoney/index.js +1 -1
  315. package/dist/esnext/hooks/useProductOptions/helpers.d.ts +2 -2
  316. package/dist/esnext/hooks/useProductOptions/index.d.ts +2 -2
  317. package/dist/esnext/hooks/useProductOptions/index.js +2 -2
  318. package/dist/esnext/hooks/useProductOptions/types.d.ts +1 -1
  319. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.d.ts +1 -1
  320. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.js +1 -1
  321. package/dist/esnext/hooks/useShopQuery/hooks.d.ts +1 -1
  322. package/dist/esnext/hooks/useShopQuery/hooks.js +16 -11
  323. package/dist/esnext/hooks/useShopQuery/index.d.ts +1 -1
  324. package/dist/esnext/hooks/useShopQuery/index.js +1 -1
  325. package/dist/esnext/index.d.ts +26 -26
  326. package/dist/esnext/index.js +22 -22
  327. package/dist/esnext/node.d.ts +1 -1
  328. package/dist/esnext/node.js +1 -1
  329. package/dist/esnext/platforms/index.d.ts +1 -1
  330. package/dist/esnext/platforms/index.js +1 -1
  331. package/dist/esnext/platforms/node.d.ts +1 -1
  332. package/dist/esnext/platforms/node.js +4 -4
  333. package/dist/esnext/platforms/virtual.d.ts +1 -1
  334. package/dist/esnext/platforms/virtual.js +0 -2
  335. package/dist/esnext/platforms/worker-event.js +1 -1
  336. package/dist/esnext/platforms/worker.js +1 -1
  337. package/dist/esnext/shared-types.d.ts +3 -0
  338. package/dist/esnext/storefront-api-types.d.ts +38 -31
  339. package/dist/esnext/storefront-api-types.js +4 -2
  340. package/dist/esnext/types.d.ts +8 -7
  341. package/dist/esnext/types.js +1 -1
  342. package/dist/esnext/utilities/apiRoutes.d.ts +4 -4
  343. package/dist/esnext/utilities/apiRoutes.js +51 -6
  344. package/dist/esnext/utilities/error.js +1 -1
  345. package/dist/esnext/utilities/fetch.js +5 -2
  346. package/dist/esnext/utilities/flattenConnection/flattenConnection.d.ts +1 -1
  347. package/dist/esnext/utilities/flattenConnection/index.d.ts +1 -1
  348. package/dist/esnext/utilities/flattenConnection/index.js +1 -1
  349. package/dist/esnext/utilities/hash.d.ts +1 -1
  350. package/dist/esnext/utilities/hash.js +1 -1
  351. package/dist/esnext/utilities/image_size.d.ts +1 -1
  352. package/dist/esnext/utilities/index.d.ts +12 -12
  353. package/dist/esnext/utilities/index.js +12 -12
  354. package/dist/esnext/utilities/isBrowser/index.d.ts +1 -1
  355. package/dist/esnext/utilities/isBrowser/index.js +1 -1
  356. package/dist/esnext/utilities/isServer/index.d.ts +1 -1
  357. package/dist/esnext/utilities/isServer/index.js +1 -1
  358. package/dist/esnext/utilities/isServer/isServer.js +1 -1
  359. package/dist/esnext/utilities/load_script.d.ts +1 -0
  360. package/dist/esnext/utilities/load_script.js +6 -1
  361. package/dist/esnext/utilities/locale/index.d.ts +1 -0
  362. package/dist/esnext/utilities/locale/index.js +1 -0
  363. package/dist/esnext/utilities/locale/locale.d.ts +7 -0
  364. package/dist/esnext/utilities/locale/locale.js +22 -0
  365. package/dist/esnext/utilities/log/index.d.ts +4 -4
  366. package/dist/esnext/utilities/log/index.js +4 -4
  367. package/dist/esnext/utilities/log/log-cache-api-status.js +1 -1
  368. package/dist/esnext/utilities/log/log-cache-header.d.ts +4 -4
  369. package/dist/esnext/utilities/log/log-cache-header.js +3 -3
  370. package/dist/esnext/utilities/log/log-query-timeline.d.ts +3 -3
  371. package/dist/esnext/utilities/log/log-query-timeline.js +13 -10
  372. package/dist/esnext/utilities/log/log.d.ts +1 -1
  373. package/dist/esnext/utilities/log/log.js +10 -4
  374. package/dist/esnext/utilities/log/utils.d.ts +1 -1
  375. package/dist/esnext/utilities/log/utils.js +1 -1
  376. package/dist/esnext/utilities/measurement.d.ts +1 -1
  377. package/dist/esnext/utilities/parseMetafield/index.d.ts +1 -1
  378. package/dist/esnext/utilities/parseMetafield/index.js +1 -1
  379. package/dist/esnext/utilities/parseMetafield/parseMetafield.d.ts +2 -2
  380. package/dist/esnext/utilities/parseMetafield/parseMetafield.js +1 -1
  381. package/dist/esnext/utilities/storefrontApi.js +1 -1
  382. package/dist/esnext/utilities/suspense.d.ts +1 -1
  383. package/dist/esnext/utilities/suspense.js +1 -1
  384. package/dist/esnext/version.d.ts +1 -1
  385. package/dist/esnext/version.js +1 -1
  386. package/dist/node/foundation/session/session-types.d.ts +15 -0
  387. package/dist/node/foundation/session/session-types.js +2 -0
  388. package/dist/node/framework/load-config.js +3 -3
  389. package/dist/node/framework/middleware.d.ts +1 -1
  390. package/dist/node/framework/middleware.js +3 -3
  391. package/dist/node/framework/plugin.d.ts +1 -1
  392. package/dist/node/framework/plugin.js +26 -24
  393. package/dist/node/framework/plugins/vite-plugin-assets-version.d.ts +2 -0
  394. package/dist/node/framework/plugins/vite-plugin-assets-version.js +11 -0
  395. package/dist/node/framework/plugins/vite-plugin-css-modules-rsc.js +3 -3
  396. package/dist/node/framework/plugins/vite-plugin-css-rsc.d.ts +2 -0
  397. package/dist/node/framework/plugins/vite-plugin-css-rsc.js +114 -0
  398. package/dist/node/framework/plugins/vite-plugin-hydrogen-config.d.ts +2 -1
  399. package/dist/node/framework/plugins/vite-plugin-hydrogen-config.js +11 -4
  400. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +1 -1
  401. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.js +7 -7
  402. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -1
  403. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.js +5 -5
  404. package/dist/node/framework/plugins/vite-plugin-hydrogen-virtual-files.d.ts +1 -1
  405. package/dist/node/framework/plugins/vite-plugin-hydrogen-virtual-files.js +35 -7
  406. package/dist/node/framework/plugins/vite-plugin-platform-entry.js +2 -2
  407. package/dist/node/framework/types.d.ts +14 -0
  408. package/dist/node/shared-types.d.ts +3 -0
  409. package/package.json +15 -3
  410. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-plugin.js +10 -2
  411. package/vendor/react-server-dom-vite/esm/react-server-dom-vite-plugin.js +10 -2
  412. package/dist/esnext/framework/plugins/vite-plugin-purge-query-cache.d.ts +0 -3
  413. package/dist/esnext/framework/plugins/vite-plugin-purge-query-cache.js +0 -11
  414. package/dist/node/framework/plugins/vite-plugin-purge-query-cache.d.ts +0 -3
  415. package/dist/node/framework/plugins/vite-plugin-purge-query-cache.js +0 -16
@@ -1,6 +1,6 @@
1
- import type { SessionStorageAdapter } from '../session/session';
2
- import type { CookieOptions } from '../Cookie/Cookie';
3
- import { Logger } from '../../utilities/log';
1
+ import type { SessionStorageAdapter } from '../session/session-types.js';
2
+ import type { CookieOptions } from '../Cookie/Cookie.js';
3
+ import { Logger } from '../../utilities/log/index.js';
4
4
  /** The `FileSessionStorage` component persists session data to the file system.
5
5
  */
6
6
  export declare const FileSessionStorage: (name: string, dir: string, cookieOptions: CookieOptions) => (log: Logger) => SessionStorageAdapter;
@@ -1,8 +1,8 @@
1
- import { Cookie } from '../Cookie/Cookie';
1
+ import { Cookie } from '../Cookie/Cookie.js';
2
2
  import { v4 as uid } from 'uuid';
3
3
  import path from 'path';
4
4
  import { promises as fsp } from 'fs';
5
- import { parseJSON } from '../../utilities/parse';
5
+ import { parseJSON } from '../../utilities/parse.js';
6
6
  async function wait() {
7
7
  return new Promise((resolve) => setTimeout(resolve));
8
8
  }
@@ -0,0 +1,11 @@
1
+ import React, { FormEvent } from 'react';
2
+ interface FormProps {
3
+ action: string;
4
+ method?: string;
5
+ children?: Array<React.ReactNode>;
6
+ onSubmit?: (e: FormEvent<HTMLFormElement>) => void;
7
+ encType?: string;
8
+ noValidate?: boolean;
9
+ }
10
+ export declare function Form({ action, method, children, onSubmit, encType, noValidate, ...props }: FormProps): JSX.Element;
11
+ export {};
@@ -0,0 +1,51 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ // @ts-ignore
3
+ import { createFromFetch } from '@shopify/hydrogen/vendor/react-server-dom-vite';
4
+ import { useInternalServerProps } from '../useServerProps/use-server-props.js';
5
+ export function Form({ action, method, children, onSubmit, encType = 'application/x-www-form-urlencoded', noValidate, ...props }) {
6
+ const { setRscResponseFromApiRoute } = useInternalServerProps();
7
+ const [_, startTransition] = React.useTransition();
8
+ const [loading, setLoading] = useState(false);
9
+ const [error, setError] = useState(null);
10
+ const submit = useCallback(async (e) => {
11
+ onSubmit && onSubmit(e);
12
+ if (e.defaultPrevented)
13
+ return;
14
+ setLoading(true);
15
+ e.preventDefault();
16
+ const formData = new FormData(e.target);
17
+ // @ts-expect-error
18
+ // It's valid to pass a FormData instance to a URLSearchParams constructor
19
+ // @todo - support multipart forms
20
+ const formBody = new URLSearchParams(formData);
21
+ startTransition(() => {
22
+ fetch(action, {
23
+ method,
24
+ headers: {
25
+ 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
26
+ 'Hydrogen-Client': 'Form-Action',
27
+ },
28
+ body: formBody.toString(),
29
+ })
30
+ .then((fetchResponse) => {
31
+ const rscPathname = fetchResponse.headers.get('Hydrogen-RSC-Pathname');
32
+ if (!rscPathname)
33
+ throw new Error(`The component's \`action\` attribute must point to an API route that responds with a new Request()\nRead more at https://shopify.dev/custom-storefronts/hydrogen/framework/forms`);
34
+ if (rscPathname !== window.location.pathname) {
35
+ window.history.pushState(null, '', rscPathname);
36
+ }
37
+ const rscResponse = createFromFetch(Promise.resolve(fetchResponse));
38
+ setRscResponseFromApiRoute({
39
+ url: method + action,
40
+ response: rscResponse,
41
+ });
42
+ setLoading(false);
43
+ })
44
+ .catch((error) => {
45
+ setError(error);
46
+ setLoading(false);
47
+ });
48
+ });
49
+ }, [onSubmit, startTransition, action, method, setRscResponseFromApiRoute]);
50
+ return (React.createElement("form", { action: action, method: method, onSubmit: submit, encType: "application/x-www-form-urlencoded", noValidate: noValidate, ...props }, children instanceof Function ? children({ loading, error }) : children));
51
+ }
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Helmet, HelmetData as HeadData, } from 'react-helmet-async';
3
- import { useEnvContext } from '../ssr-interop';
3
+ import { useEnvContext } from '../ssr-interop.js';
4
4
  const clientHeadData = new HeadData({});
5
5
  export function Head({ children, ...props }) {
6
6
  const headData = useEnvContext((req) => req.ctx.head, clientHeadData);
@@ -1 +1 @@
1
- export { Head } from './Head.client';
1
+ export { Head } from './Head.client.js';
@@ -1 +1 @@
1
- export { Head } from './Head.client';
1
+ export { Head } from './Head.client.js';
@@ -1,6 +1,6 @@
1
1
  import { ReactNode } from 'react';
2
2
  import type { HelmetData as HeadData } from 'react-helmet-async';
3
- import { ResolvedHydrogenConfig } from '../../types';
3
+ import { ResolvedHydrogenConfig } from '../../types.js';
4
4
  declare type HtmlOptions = {
5
5
  children: ReactNode;
6
6
  template: string;
@@ -1,9 +1,9 @@
1
- import type { ShopifyContextValue, LocalizationContextValue } from '../ShopifyProvider/types';
2
- import type { QueryCacheControlHeaders } from '../../utilities/log/log-cache-header';
3
- import type { QueryTiming } from '../../utilities/log/log-query-timeline';
4
- import type { ResolvedHydrogenConfig, PreloadOptions, QueryKey, RuntimeContext } from '../../types';
1
+ import type { ShopifyContextValue, LocalizationContextValue } from '../ShopifyProvider/types.js';
2
+ import type { QueryCacheControlHeaders } from '../../utilities/log/log-cache-header.js';
3
+ import type { QueryTiming } from '../../utilities/log/log-query-timeline.js';
4
+ import type { ResolvedHydrogenConfig, PreloadOptions, QueryKey, RuntimeContext } from '../../types.js';
5
5
  import { HelmetData as HeadData } from 'react-helmet-async';
6
- import { SessionSyncApi } from '../session/session';
6
+ import type { SessionSyncApi } from '../session/session-types.js';
7
7
  export declare type PreloadQueryEntry = {
8
8
  key: QueryKey;
9
9
  fetcher: (request: HydrogenRequest) => Promise<unknown>;
@@ -46,6 +46,7 @@ export declare class HydrogenRequest extends Request {
46
46
  router: RouterContextData;
47
47
  buyerIpHeader?: string;
48
48
  session?: SessionSyncApi;
49
+ flashSession: Record<string, any>;
49
50
  runtime?: RuntimeContext;
50
51
  scopes: Map<string, Record<string, any>>;
51
52
  localization?: LocalizationContextValue;
@@ -1,8 +1,8 @@
1
- import { getTime } from '../../utilities/timing';
2
- import { hashKey } from '../../utilities/hash';
1
+ import { getTime } from '../../utilities/timing.js';
2
+ import { hashKey } from '../../utilities/hash.js';
3
3
  import { HelmetData as HeadData } from 'react-helmet-async';
4
- import { RSC_PATHNAME } from '../../constants';
5
- import { parseJSON } from '../../utilities/parse';
4
+ import { RSC_PATHNAME } from '../../constants.js';
5
+ import { parseJSON } from '../../utilities/parse.js';
6
6
  let reqCounter = 0; // For debugging
7
7
  const generateId = typeof crypto !== 'undefined' &&
8
8
  // @ts-ignore
@@ -60,6 +60,7 @@ export class HydrogenRequest extends Request {
60
60
  },
61
61
  preloadQueries: new Map(),
62
62
  scopes: new Map(),
63
+ flashSession: {},
63
64
  };
64
65
  this.cookies = this.parseCookies();
65
66
  }
@@ -1,19 +1,17 @@
1
- import type { CachingStrategy } from '../../types';
1
+ import type { CachingStrategy } from '../../types.js';
2
2
  import React from 'react';
3
3
  export declare class HydrogenResponse extends Response {
4
4
  private wait;
5
5
  private cacheOptions;
6
- private proxy;
7
6
  status: number;
8
7
  statusText: string;
9
- constructor(...args: ConstructorParameters<typeof Response>);
10
8
  /**
11
9
  * Buffer the current response until all queries have resolved,
12
10
  * and prevent it from streaming back early.
13
11
  */
14
12
  doNotStream(): void;
15
13
  canStream(): boolean;
16
- cache(options?: CachingStrategy): import("../../types").AllCacheOptions;
14
+ cache(options?: CachingStrategy): import("../../types.js").AllCacheOptions;
17
15
  get cacheControlHeader(): string;
18
16
  redirect(location: string, status?: number): React.FunctionComponentElement<{
19
17
  to: string;
@@ -1,25 +1,11 @@
1
- import { CacheShort, generateCacheControlHeader } from '../Cache/strategies';
2
- import Redirect from '../Redirect/Redirect.client';
1
+ import { CacheShort, generateCacheControlHeader, } from '../Cache/strategies/index.js';
2
+ import Redirect from '../Redirect/Redirect.client.js';
3
3
  import React from 'react';
4
4
  export class HydrogenResponse extends Response {
5
5
  wait = false;
6
6
  cacheOptions = CacheShort();
7
- proxy = Object.defineProperties(Object.create(null), {
8
- // Default values:
9
- status: { value: 200, writable: true },
10
- statusText: { value: '', writable: true },
11
- });
12
- // @ts-ignore
13
- status;
14
- // @ts-ignore
15
- statusText;
16
- constructor(...args) {
17
- super(...args);
18
- return new Proxy(this, {
19
- get: (target, key) => target.proxy[key] ?? Reflect.get(target, key),
20
- set: (target, key, value) => Reflect.set(key in target.proxy ? target.proxy : target, key, value),
21
- });
22
- }
7
+ status = 200;
8
+ statusText = '';
23
9
  /**
24
10
  * Buffer the current response until all queries have resolved,
25
11
  * and prevent it from streaming back early.
@@ -1,5 +1,5 @@
1
- import type { SessionStorageAdapter } from '../session/session';
2
- import type { CookieOptions } from '../Cookie/Cookie';
1
+ import type { SessionStorageAdapter } from '../session/session-types.js';
2
+ import type { CookieOptions } from '../Cookie/Cookie.js';
3
3
  /** The `MemorySessionStorage` component stores session data within Hydrogen runtime memory.
4
4
  */
5
5
  export declare const MemorySessionStorage: (name: string, options: CookieOptions) => () => SessionStorageAdapter;
@@ -1,4 +1,4 @@
1
- import { Cookie } from '../Cookie/Cookie';
1
+ import { Cookie } from '../Cookie/Cookie.js';
2
2
  import { v4 as uid } from 'uuid';
3
3
  /** The `MemorySessionStorage` component stores session data within Hydrogen runtime memory.
4
4
  */
@@ -1,5 +1,5 @@
1
1
  import { useEffect } from 'react';
2
- import { useNavigate } from '../../foundation/useNavigate/useNavigate';
2
+ import { useNavigate } from '../../foundation/useNavigate/useNavigate.js';
3
3
  export default function Redirect({ to }) {
4
4
  const navigate = useNavigate();
5
5
  useEffect(() => {
@@ -1,7 +1,7 @@
1
1
  import React, { cloneElement } from 'react';
2
- import { useServerRequest } from '../ServerRequestProvider';
3
- import { matchPath } from '../../utilities/matchPath';
4
- import { RouteParamsProvider } from '../useRouteParams/RouteParamsProvider.client';
2
+ import { useServerRequest } from '../ServerRequestProvider/index.js';
3
+ import { matchPath } from '../../utilities/matchPath.js';
4
+ import { RouteParamsProvider } from '../useRouteParams/RouteParamsProvider.client.js';
5
5
  /**
6
6
  * The `Route` component is used to set up a route in Hydrogen that's independent of the file system. Routes are
7
7
  * matched in the order that they're defined.
@@ -1,7 +1,7 @@
1
1
  import { createBrowserHistory } from 'history';
2
2
  import React, { createContext, useContext, useMemo, useState, useEffect, useLayoutEffect, useCallback, } from 'react';
3
- import { META_ENV_SSR } from '../ssr-interop';
4
- import { useInternalServerProps } from '../useServerProps/use-server-props';
3
+ import { META_ENV_SSR } from '../ssr-interop.js';
4
+ import { useInternalServerProps } from '../useServerProps/use-server-props.js';
5
5
  export const RouterContext = createContext(undefined);
6
6
  let isFirstLoad = true;
7
7
  const positions = {};
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { BrowserRouter } from './BrowserRouter.client';
2
+ import { BrowserRouter } from './BrowserRouter.client.js';
3
3
  /**
4
4
  * The `Router` component provides the context for routing in your Hydrogen app.
5
5
  */
@@ -26,6 +26,7 @@ export interface InternalServerPropsContextValue extends BaseServerPropsContextV
26
26
  serverProps: ServerProps;
27
27
  locationServerProps: LocationServerProps;
28
28
  getProposedLocationServerProps: ProposedServerPropsSetter;
29
+ setRscResponseFromApiRoute: (response: any) => void;
29
30
  }
30
31
  export interface ServerPropsContextValue extends BaseServerPropsContextValue {
31
32
  serverProps: ServerProps;
@@ -35,7 +36,8 @@ export declare const ServerPropsContext: React.Context<InternalServerPropsContex
35
36
  interface ServerPropsProviderProps {
36
37
  initialServerProps: LocationServerProps;
37
38
  setServerPropsForRsc: React.Dispatch<React.SetStateAction<LocationServerProps>>;
39
+ setRscResponseFromApiRoute: (response: any) => void;
38
40
  children: ReactNode;
39
41
  }
40
- export declare function ServerPropsProvider({ initialServerProps, setServerPropsForRsc, children, }: ServerPropsProviderProps): JSX.Element;
42
+ export declare function ServerPropsProvider({ initialServerProps, setServerPropsForRsc, setRscResponseFromApiRoute, children, }: ServerPropsProviderProps): JSX.Element;
41
43
  export {};
@@ -1,9 +1,7 @@
1
- import React, { createContext, useMemo, useCallback,
2
- // @ts-ignore
3
- useTransition, useState, } from 'react';
1
+ import React, { createContext, useMemo, useCallback, useTransition, useState, } from 'react';
4
2
  const PRIVATE_PROPS = ['request', 'response'];
5
3
  export const ServerPropsContext = createContext(null);
6
- export function ServerPropsProvider({ initialServerProps, setServerPropsForRsc, children, }) {
4
+ export function ServerPropsProvider({ initialServerProps, setServerPropsForRsc, setRscResponseFromApiRoute, children, }) {
7
5
  const [locationServerProps, setLocationServerProps] = useState(initialServerProps);
8
6
  const [serverProps, setServerProps] = useState({});
9
7
  const [pending, startTransition] = useTransition();
@@ -53,6 +51,7 @@ export function ServerPropsProvider({ initialServerProps, setServerPropsForRsc,
53
51
  setServerProps: setServerPropsCallback,
54
52
  setLocationServerProps: setLocationServerPropsCallback,
55
53
  getProposedLocationServerProps: getProposedLocationServerPropsCallback,
54
+ setRscResponseFromApiRoute,
56
55
  }), [
57
56
  pending,
58
57
  locationServerProps,
@@ -60,6 +59,7 @@ export function ServerPropsProvider({ initialServerProps, setServerPropsForRsc,
60
59
  setServerPropsCallback,
61
60
  setLocationServerPropsCallback,
62
61
  getProposedLocationServerPropsCallback,
62
+ setRscResponseFromApiRoute,
63
63
  ]);
64
64
  return (React.createElement(ServerPropsContext.Provider, { value: value }, children));
65
65
  }
@@ -1 +1 @@
1
- export { ServerPropsProvider, ServerPropsContext, type ServerProps, type ServerPropsContextValue, } from './ServerPropsProvider';
1
+ export { ServerPropsProvider, ServerPropsContext, type ServerProps, type ServerPropsContextValue, } from './ServerPropsProvider.js';
@@ -1 +1 @@
1
- export { ServerPropsProvider, ServerPropsContext, } from './ServerPropsProvider';
1
+ export { ServerPropsProvider, ServerPropsContext, } from './ServerPropsProvider.js';
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import type { HydrogenRequest } from '../HydrogenRequest/HydrogenRequest.server';
3
- import type { QueryKey } from '../../types';
2
+ import type { HydrogenRequest } from '../HydrogenRequest/HydrogenRequest.server.js';
3
+ import type { QueryKey } from '../../types.js';
4
4
  declare type ServerRequestProviderProps = {
5
5
  request: HydrogenRequest;
6
6
  children: React.ReactNode;
@@ -1,7 +1,7 @@
1
1
  import React, { createContext, useContext } from 'react';
2
- import { getTime } from '../../utilities/timing';
3
- import { hashKey } from '../../utilities/hash';
4
- import { collectQueryTimings } from '../../utilities/log';
2
+ import { getTime } from '../../utilities/timing.js';
3
+ import { hashKey } from '../../utilities/hash.js';
4
+ import { collectQueryTimings } from '../../utilities/log/index.js';
5
5
  // Context to inject current request in SSR
6
6
  const RequestContextSSR = createContext(null);
7
7
  // Cache to inject current request in RSC
@@ -1 +1 @@
1
- export * from './ServerRequestProvider';
1
+ export * from './ServerRequestProvider.js';
@@ -1 +1 @@
1
- export * from './ServerRequestProvider';
1
+ export * from './ServerRequestProvider.js';
@@ -1,4 +1,4 @@
1
- import type { ShopifyContextValue, LocalizationContextValue } from './types';
1
+ import type { ShopifyContextValue, LocalizationContextValue } from './types.js';
2
2
  import React, { ReactNode } from 'react';
3
3
  export declare const ShopifyContext: React.Context<ShopifyContextValue | null>;
4
4
  export declare const LocalizationContext: React.Context<LocalizationContextValue | null>;
@@ -1,5 +1,5 @@
1
- import type { ShopifyProviderProps, LocalizationContextValue } from './types';
2
- import type { CountryCode, LanguageCode } from '../../storefront-api-types';
1
+ import type { ShopifyProviderProps, LocalizationContextValue } from './types.js';
2
+ import type { CountryCode, LanguageCode } from '../../storefront-api-types.js';
3
3
  export declare const SHOPIFY_PROVIDER_CONTEXT_KEY: unique symbol;
4
4
  /**
5
5
  * The `ShopifyProvider` component wraps your entire app and provides support for hooks.
@@ -1,9 +1,10 @@
1
1
  import React, { useMemo } from 'react';
2
- import { ShopifyProviderClient } from './ShopifyProvider.client';
3
- import { DEFAULT_COUNTRY, DEFAULT_LANGUAGE } from '../constants';
4
- import { useRequestCacheData, useServerRequest } from '../ServerRequestProvider';
5
- import { getOxygenVariable } from '../../utilities/storefrontApi';
6
- import { SHOPIFY_STOREFRONT_ID_VARIABLE } from '../../constants';
2
+ import { ShopifyProviderClient } from './ShopifyProvider.client.js';
3
+ import { DEFAULT_COUNTRY, DEFAULT_LANGUAGE } from '../constants.js';
4
+ import { useRequestCacheData, useServerRequest, } from '../ServerRequestProvider/index.js';
5
+ import { getOxygenVariable } from '../../utilities/storefrontApi.js';
6
+ import { SHOPIFY_STOREFRONT_ID_VARIABLE } from '../../constants.js';
7
+ import { getLocale } from '../../utilities/locale/index.js';
7
8
  function makeShopifyContext(shopifyConfig) {
8
9
  const countryCode = shopifyConfig.defaultCountryCode ?? DEFAULT_COUNTRY;
9
10
  const languageCode = shopifyConfig.defaultLanguageCode ?? DEFAULT_LANGUAGE;
@@ -71,7 +72,7 @@ export function getLocalizationContextValue(defaultLanguageCode, defaultCountryC
71
72
  language: {
72
73
  isoCode: runtimeLanguageCode,
73
74
  },
74
- locale: `${runtimeLanguageCode}-${runtimeCountryCode}`,
75
+ locale: getLocale(runtimeLanguageCode, runtimeCountryCode),
75
76
  };
76
77
  }, [defaultLanguageCode, defaultCountryCode, countryCode, languageCode]);
77
78
  }
@@ -1 +1 @@
1
- export { ShopifyContext } from './ShopifyProvider.client';
1
+ export { ShopifyContext } from './ShopifyProvider.client.js';
@@ -1 +1 @@
1
- export { ShopifyContext } from './ShopifyProvider.client';
1
+ export { ShopifyContext } from './ShopifyProvider.client.js';
@@ -1,11 +1,12 @@
1
- import type { CountryCode, LanguageCode } from '../../storefront-api-types';
1
+ import type { CountryCode, LanguageCode } from '../../storefront-api-types.js';
2
2
  import type { ReactNode } from 'react';
3
- import type { ShopifyConfigFetcher, ShopifyConfig } from '../../types';
3
+ import type { ShopifyConfigFetcher, ShopifyConfig } from '../../types.js';
4
4
  export interface ShopifyContextValue extends Omit<ShopifyConfig, 'defaultLanguageCode' | 'defaultCountryCode'> {
5
5
  defaultLanguageCode: `${LanguageCode}`;
6
6
  defaultCountryCode: `${CountryCode}`;
7
7
  storefrontId: string | null;
8
8
  }
9
+ export declare type Locale = string;
9
10
  export interface LocalizationContextValue {
10
11
  country: {
11
12
  isoCode: `${CountryCode}`;
@@ -13,7 +14,7 @@ export interface LocalizationContextValue {
13
14
  language: {
14
15
  isoCode: `${LanguageCode}`;
15
16
  };
16
- locale: `${LanguageCode}-${CountryCode}`;
17
+ locale: Locale;
17
18
  }
18
19
  export declare type ShopifyProviderProps = {
19
20
  /** Shopify connection information. Defaults to the `shopify` property in the `hydrogen.config.js` file. */
@@ -1,5 +1,5 @@
1
- import { parseJSON } from '../../utilities/parse';
2
- import { log } from '../../utilities/log';
1
+ import { parseJSON } from '../../utilities/parse.js';
2
+ import { log } from '../../utilities/log/index.js';
3
3
  export class ResponseSync extends Response {
4
4
  bodyUsed = true;
5
5
  #text;
@@ -1,4 +1,4 @@
1
- import { ResponseSync } from '../ResponseSync';
1
+ import { ResponseSync } from '../ResponseSync.js';
2
2
  /**
3
3
  * Fetch a URL for use in a client component Suspense boundary.
4
4
  */
@@ -1,5 +1,5 @@
1
- import { suspendFunction, preloadFunction } from '../../../utilities/suspense';
2
- import { ResponseSync } from '../ResponseSync';
1
+ import { suspendFunction, preloadFunction } from '../../../utilities/suspense.js';
2
+ import { ResponseSync } from '../ResponseSync.js';
3
3
  /**
4
4
  * Fetch a URL for use in a client component Suspense boundary.
5
5
  */
@@ -1,5 +1,5 @@
1
- import { type HydrogenUseQueryOptions } from '../../useQuery/hooks';
2
- import { ResponseSync } from '../ResponseSync';
1
+ import { type HydrogenUseQueryOptions } from '../../useQuery/index.js';
2
+ import { ResponseSync } from '../ResponseSync.js';
3
3
  /**
4
4
  * The `fetchSync` hook makes API requests and is the recommended way to make simple fetch calls on the server and the client.
5
5
  * It's designed similar to the [Web API's `fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch), only in a way
@@ -1,6 +1,6 @@
1
- import { useQuery } from '../../useQuery/hooks';
2
- import { useUrl } from '../../useUrl';
3
- import { ResponseSync } from '../ResponseSync';
1
+ import { useQuery } from '../../useQuery/index.js';
2
+ import { useUrl } from '../../useUrl/index.js';
3
+ import { ResponseSync } from '../ResponseSync.js';
4
4
  /**
5
5
  * The `fetchSync` hook makes API requests and is the recommended way to make simple fetch calls on the server and the client.
6
6
  * It's designed similar to the [Web API's `fetch`](https://developer.mozilla.org/en-US/docs/Web/API/fetch), only in a way
@@ -1,3 +1,3 @@
1
- export { ServerPropsProvider, ServerPropsContext, type ServerProps, type ServerPropsContextValue, } from './ServerPropsProvider';
2
- export { useShop } from './useShop';
3
- export { useUrl } from './useUrl';
1
+ export { ServerPropsProvider, ServerPropsContext, type ServerProps, type ServerPropsContextValue, } from './ServerPropsProvider/index.js';
2
+ export { useShop } from './useShop/index.js';
3
+ export { useUrl } from './useUrl/index.js';
@@ -1,3 +1,3 @@
1
- export { ServerPropsProvider, ServerPropsContext, } from './ServerPropsProvider';
2
- export { useShop } from './useShop';
3
- export { useUrl } from './useUrl';
1
+ export { ServerPropsProvider, ServerPropsContext, } from './ServerPropsProvider/index.js';
2
+ export { useShop } from './useShop/index.js';
3
+ export { useUrl } from './useUrl/index.js';
@@ -0,0 +1,15 @@
1
+ export declare type SessionSyncApi = {
2
+ get: () => Record<string, string>;
3
+ set: (data: Record<string, any>) => any;
4
+ };
5
+ export declare type SessionApi = {
6
+ get: () => Promise<Record<string, string>>;
7
+ set: (key: string, value: string) => Promise<void>;
8
+ destroy: () => Promise<void>;
9
+ getFlash: (key: string) => any;
10
+ };
11
+ export declare type SessionStorageAdapter = {
12
+ get: (request: Request) => Promise<Record<string, string>>;
13
+ set: (request: Request, value: Record<string, string>) => Promise<string>;
14
+ destroy: (request: Request) => Promise<string>;
15
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -1,27 +1,18 @@
1
- import { Logger } from '../../utilities/log';
2
- import type { HydrogenResponse } from '../HydrogenResponse/HydrogenResponse.server';
3
- import type { HydrogenRequest } from '../HydrogenRequest/HydrogenRequest.server';
4
- export declare type SessionSyncApi = {
5
- get: () => Record<string, string>;
6
- };
7
- export declare type SessionApi = {
8
- get: () => Promise<Record<string, string>>;
9
- set: (key: string, value: string) => Promise<void>;
10
- destroy: () => Promise<void>;
11
- };
12
- export declare type SessionStorageAdapter = {
13
- get: (request: Request) => Promise<Record<string, string>>;
14
- set: (request: Request, value: Record<string, string>) => Promise<string>;
15
- destroy: (request: Request) => Promise<string>;
16
- };
1
+ import { Logger } from '../../utilities/log/index.js';
2
+ import type { HydrogenResponse } from '../HydrogenResponse/HydrogenResponse.server.js';
3
+ import type { HydrogenRequest } from '../HydrogenRequest/HydrogenRequest.server.js';
4
+ import type { SessionStorageAdapter } from './session-types.js';
17
5
  export declare function getSyncSessionApi(request: HydrogenRequest, componentResponse: HydrogenResponse, log: Logger, session?: SessionStorageAdapter): {
18
6
  get(): any;
7
+ set(data: Record<string, any>): any;
19
8
  };
20
9
  export declare const emptySessionImplementation: (log: Logger) => {
10
+ getFlash(key: string): Promise<null>;
21
11
  get(): Promise<{}>;
22
12
  set(key: string, value: string): Promise<void>;
23
13
  destroy(): Promise<void>;
24
14
  };
25
15
  export declare const emptySyncSessionImplementation: (log: Logger) => {
26
16
  get(): {};
17
+ set(data: Record<string, any>): null;
27
18
  };
@@ -1,4 +1,4 @@
1
- import { wrapPromise } from '../../utilities/suspense';
1
+ import { wrapPromise } from '../../utilities/suspense.js';
2
2
  export function getSyncSessionApi(request, componentResponse, log, session) {
3
3
  const sessionPromises = {};
4
4
  return session
@@ -9,11 +9,23 @@ export function getSyncSessionApi(request, componentResponse, log, session) {
9
9
  }
10
10
  return sessionPromises.getPromise.read();
11
11
  },
12
+ set(data) {
13
+ if (!sessionPromises.setPromise) {
14
+ sessionPromises.setPromise = wrapPromise(session.set(request, data));
15
+ }
16
+ const cookie = sessionPromises.setPromise.read();
17
+ componentResponse.headers.set('Set-Cookie', cookie);
18
+ return cookie;
19
+ },
12
20
  }
13
21
  : emptySyncSessionImplementation(log);
14
22
  }
15
23
  export const emptySessionImplementation = function (log) {
16
24
  return {
25
+ async getFlash(key) {
26
+ log.warn('No session adapter has been configured!');
27
+ return null;
28
+ },
17
29
  async get() {
18
30
  log.warn('No session adapter has been configured!');
19
31
  return {};
@@ -33,5 +45,9 @@ export const emptySyncSessionImplementation = function (log) {
33
45
  log.warn('No session adapter has been configured!');
34
46
  return {};
35
47
  },
48
+ set(data) {
49
+ log.warn('No session adapter has been configured!');
50
+ return null;
51
+ },
36
52
  };
37
53
  };
@@ -4,7 +4,7 @@
4
4
  * In the server, this file is transformed by Vite to inject server logic.
5
5
  * NOTE: Do not remove SSR-prefixed comments in this file.
6
6
  */
7
- import type { HydrogenRequest } from './HydrogenRequest/HydrogenRequest.server';
7
+ import type { HydrogenRequest } from './HydrogenRequest/HydrogenRequest.server.js';
8
8
  export declare const META_ENV_SSR = false;
9
9
  declare type ServerGetter<T> = (request: HydrogenRequest) => T;
10
10
  /**
@@ -21,7 +21,7 @@ declare type ServerGetter<T> = (request: HydrogenRequest) => T;
21
21
  * The returned type depends on what the server getter returns.
22
22
  * @example
23
23
  * ```js
24
- * import {MyClientContext} from './my-client-react-context-provider';
24
+ * import {MyClientContext} from './my-client-react-context-provider.js';
25
25
  * useEnvContext(req => req.ctx.myServerContext, MyClientContext)
26
26
  * ```
27
27
  */