@shopify/hydrogen 1.0.1 → 1.2.0

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 (406) hide show
  1. package/dist/esnext/FileSessionStorage.d.ts +1 -1
  2. package/dist/esnext/FileSessionStorage.js +1 -1
  3. package/dist/esnext/client.d.ts +16 -16
  4. package/dist/esnext/client.js +16 -16
  5. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +5 -2
  6. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +6 -5
  7. package/dist/esnext/components/AddToCartButton/index.d.ts +1 -1
  8. package/dist/esnext/components/AddToCartButton/index.js +1 -1
  9. package/dist/esnext/components/BaseButton/BaseButton.client.d.ts +7 -5
  10. package/dist/esnext/components/BaseButton/BaseButton.client.js +5 -4
  11. package/dist/esnext/components/BaseButton/index.d.ts +1 -1
  12. package/dist/esnext/components/BaseButton/index.js +1 -1
  13. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.d.ts +3 -2
  14. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.js +2 -2
  15. package/dist/esnext/components/BuyNowButton/index.d.ts +1 -1
  16. package/dist/esnext/components/BuyNowButton/index.js +1 -1
  17. package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.js +1 -1
  18. package/dist/esnext/components/CartCheckoutButton/index.d.ts +1 -1
  19. package/dist/esnext/components/CartCheckoutButton/index.js +1 -1
  20. package/dist/esnext/components/CartCost/CartCost.client.d.ts +1 -1
  21. package/dist/esnext/components/CartCost/CartCost.client.js +2 -2
  22. package/dist/esnext/components/CartCost/index.d.ts +1 -1
  23. package/dist/esnext/components/CartCost/index.js +1 -1
  24. package/dist/esnext/components/CartLineImage/CartLineImage.client.d.ts +1 -1
  25. package/dist/esnext/components/CartLineImage/CartLineImage.client.js +2 -2
  26. package/dist/esnext/components/CartLineImage/index.d.ts +1 -1
  27. package/dist/esnext/components/CartLineImage/index.js +1 -1
  28. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +1 -1
  29. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +2 -2
  30. package/dist/esnext/components/CartLinePrice/index.d.ts +1 -1
  31. package/dist/esnext/components/CartLinePrice/index.js +1 -1
  32. package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.js +1 -1
  33. package/dist/esnext/components/CartLineProductTitle/index.d.ts +1 -1
  34. package/dist/esnext/components/CartLineProductTitle/index.js +1 -1
  35. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.d.ts +1 -1
  36. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.js +1 -1
  37. package/dist/esnext/components/CartLineProvider/context.d.ts +13 -13
  38. package/dist/esnext/components/CartLineProvider/index.d.ts +2 -2
  39. package/dist/esnext/components/CartLineProvider/index.js +2 -2
  40. package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.js +1 -1
  41. package/dist/esnext/components/CartLineQuantity/index.d.ts +1 -1
  42. package/dist/esnext/components/CartLineQuantity/index.js +1 -1
  43. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.d.ts +7 -8
  44. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.js +3 -3
  45. package/dist/esnext/components/CartLineQuantityAdjustButton/index.d.ts +1 -1
  46. package/dist/esnext/components/CartLineQuantityAdjustButton/index.js +1 -1
  47. package/dist/esnext/components/CartLines/CartLines.client.d.ts +1 -1
  48. package/dist/esnext/components/CartLines/CartLines.client.js +2 -2
  49. package/dist/esnext/components/CartLines/index.d.ts +1 -1
  50. package/dist/esnext/components/CartLines/index.js +1 -1
  51. package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +2 -2
  52. package/dist/esnext/components/CartProvider/CartProvider.client.js +7 -7
  53. package/dist/esnext/components/CartProvider/context.d.ts +1 -1
  54. package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.d.ts +1 -1
  55. package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.d.ts +1 -1
  56. package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.d.ts +1 -1
  57. package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.d.ts +1 -1
  58. package/dist/esnext/components/CartProvider/graphql/CartFragment.d.ts +1 -1
  59. package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.d.ts +1 -1
  60. package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.d.ts +1 -1
  61. package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.d.ts +1 -1
  62. package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.d.ts +1 -1
  63. package/dist/esnext/components/CartProvider/graphql/CartQuery.d.ts +1 -1
  64. package/dist/esnext/components/CartProvider/hooks.client.d.ts +2 -2
  65. package/dist/esnext/components/CartProvider/hooks.client.js +4 -4
  66. package/dist/esnext/components/CartProvider/index.d.ts +4 -4
  67. package/dist/esnext/components/CartProvider/index.js +3 -3
  68. package/dist/esnext/components/CartProvider/types.d.ts +2 -2
  69. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.d.ts +1 -1
  70. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.js +2 -2
  71. package/dist/esnext/components/CartShopPayButton/index.d.ts +1 -1
  72. package/dist/esnext/components/CartShopPayButton/index.js +1 -1
  73. package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +2 -2
  74. package/dist/esnext/components/ExternalVideo/ExternalVideo.js +1 -1
  75. package/dist/esnext/components/ExternalVideo/index.d.ts +1 -1
  76. package/dist/esnext/components/ExternalVideo/index.js +1 -1
  77. package/dist/esnext/components/Image/Image.d.ts +1 -1
  78. package/dist/esnext/components/Image/Image.js +22 -13
  79. package/dist/esnext/components/Image/index.d.ts +2 -2
  80. package/dist/esnext/components/Image/index.js +1 -1
  81. package/dist/esnext/components/Link/Link.client.js +5 -5
  82. package/dist/esnext/components/Link/index.d.ts +1 -1
  83. package/dist/esnext/components/Link/index.js +1 -1
  84. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.d.ts +1 -1
  85. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.js +1 -1
  86. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +3 -2
  87. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +9 -13
  88. package/dist/esnext/components/LocalizationProvider/index.d.ts +1 -1
  89. package/dist/esnext/components/LocalizationProvider/index.js +1 -1
  90. package/dist/esnext/components/MediaFile/MediaFile.d.ts +4 -4
  91. package/dist/esnext/components/MediaFile/MediaFile.js +4 -4
  92. package/dist/esnext/components/MediaFile/index.d.ts +1 -1
  93. package/dist/esnext/components/MediaFile/index.js +1 -1
  94. package/dist/esnext/components/Metafield/Metafield.client.d.ts +2 -2
  95. package/dist/esnext/components/Metafield/Metafield.client.js +6 -6
  96. package/dist/esnext/components/Metafield/components/StarRating/StarRating.d.ts +1 -1
  97. package/dist/esnext/components/Metafield/components/StarRating/index.d.ts +1 -1
  98. package/dist/esnext/components/Metafield/components/StarRating/index.js +1 -1
  99. package/dist/esnext/components/Metafield/components/index.d.ts +1 -1
  100. package/dist/esnext/components/Metafield/components/index.js +1 -1
  101. package/dist/esnext/components/Metafield/index.d.ts +2 -2
  102. package/dist/esnext/components/Metafield/index.js +1 -1
  103. package/dist/esnext/components/Metafield/types.d.ts +1 -1
  104. package/dist/esnext/components/ModelViewer/ModelViewer.client.d.ts +2 -2
  105. package/dist/esnext/components/ModelViewer/ModelViewer.client.js +1 -1
  106. package/dist/esnext/components/ModelViewer/index.d.ts +1 -1
  107. package/dist/esnext/components/ModelViewer/index.js +1 -1
  108. package/dist/esnext/components/Money/Money.client.d.ts +1 -1
  109. package/dist/esnext/components/Money/Money.client.js +1 -1
  110. package/dist/esnext/components/Money/index.d.ts +1 -1
  111. package/dist/esnext/components/Money/index.js +1 -1
  112. package/dist/esnext/components/ProductOptionsProvider/ProductOptionsProvider.client.d.ts +1 -1
  113. package/dist/esnext/components/ProductOptionsProvider/ProductOptionsProvider.client.js +3 -3
  114. package/dist/esnext/components/ProductOptionsProvider/context.d.ts +1 -1
  115. package/dist/esnext/components/ProductOptionsProvider/index.d.ts +1 -2
  116. package/dist/esnext/components/ProductOptionsProvider/index.js +1 -2
  117. package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +2 -2
  118. package/dist/esnext/components/ProductPrice/ProductPrice.client.js +2 -2
  119. package/dist/esnext/components/ProductPrice/index.d.ts +1 -1
  120. package/dist/esnext/components/ProductPrice/index.js +1 -1
  121. package/dist/esnext/components/Seo/CollectionSeo.client.d.ts +1 -1
  122. package/dist/esnext/components/Seo/CollectionSeo.client.js +4 -4
  123. package/dist/esnext/components/Seo/DefaultPageSeo.client.d.ts +1 -1
  124. package/dist/esnext/components/Seo/DefaultPageSeo.client.js +5 -5
  125. package/dist/esnext/components/Seo/DescriptionSeo.client.d.ts +1 -1
  126. package/dist/esnext/components/Seo/DescriptionSeo.client.js +1 -1
  127. package/dist/esnext/components/Seo/HomePageSeo.client.d.ts +1 -1
  128. package/dist/esnext/components/Seo/HomePageSeo.client.js +3 -3
  129. package/dist/esnext/components/Seo/ImageSeo.client.d.ts +1 -1
  130. package/dist/esnext/components/Seo/ImageSeo.client.js +1 -1
  131. package/dist/esnext/components/Seo/NoIndexSeo.client.d.ts +1 -1
  132. package/dist/esnext/components/Seo/NoIndexSeo.client.js +2 -2
  133. package/dist/esnext/components/Seo/PageSeo.client.d.ts +1 -1
  134. package/dist/esnext/components/Seo/PageSeo.client.js +3 -3
  135. package/dist/esnext/components/Seo/ProductSeo.client.d.ts +1 -1
  136. package/dist/esnext/components/Seo/ProductSeo.client.js +6 -6
  137. package/dist/esnext/components/Seo/Seo.client.d.ts +4 -4
  138. package/dist/esnext/components/Seo/Seo.client.js +7 -7
  139. package/dist/esnext/components/Seo/TitleSeo.client.d.ts +1 -1
  140. package/dist/esnext/components/Seo/TitleSeo.client.js +1 -1
  141. package/dist/esnext/components/Seo/TwitterSeo.client.d.ts +1 -1
  142. package/dist/esnext/components/Seo/TwitterSeo.client.js +1 -1
  143. package/dist/esnext/components/Seo/index.d.ts +1 -1
  144. package/dist/esnext/components/Seo/index.js +1 -1
  145. package/dist/esnext/components/Seo/seo-types.d.ts +1 -1
  146. package/dist/esnext/components/ShopPayButton/ShopPayButton.client.js +2 -2
  147. package/dist/esnext/components/ShopPayButton/index.d.ts +1 -1
  148. package/dist/esnext/components/ShopPayButton/index.js +1 -1
  149. package/dist/esnext/components/Video/Video.d.ts +7 -2
  150. package/dist/esnext/components/Video/Video.js +3 -3
  151. package/dist/esnext/components/Video/index.d.ts +1 -1
  152. package/dist/esnext/components/Video/index.js +1 -1
  153. package/dist/esnext/components/index.d.ts +27 -28
  154. package/dist/esnext/components/index.js +25 -26
  155. package/dist/esnext/config.d.ts +5 -5
  156. package/dist/esnext/config.js +4 -4
  157. package/dist/esnext/entry-client.d.ts +1 -1
  158. package/dist/esnext/entry-client.js +35 -14
  159. package/dist/esnext/entry-server.d.ts +1 -1
  160. package/dist/esnext/entry-server.js +76 -57
  161. package/dist/esnext/experimental.d.ts +1 -0
  162. package/dist/esnext/experimental.js +1 -0
  163. package/dist/esnext/foundation/Analytics/Analytics.client.js +1 -1
  164. package/dist/esnext/foundation/Analytics/Analytics.server.js +5 -5
  165. package/dist/esnext/foundation/Analytics/ClientAnalytics.d.ts +1 -1
  166. package/dist/esnext/foundation/Analytics/ClientAnalytics.js +4 -4
  167. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.d.ts +1 -1
  168. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.js +1 -1
  169. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetrics.client.js +7 -5
  170. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetricsDebug.client.js +1 -1
  171. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/ServerAnalyticsConnector.js +1 -1
  172. package/dist/esnext/foundation/Analytics/connectors/Shopify/ServerAnalyticsConnector.js +1 -1
  173. package/dist/esnext/foundation/Analytics/connectors/Shopify/ShopifyAnalytics.client.js +4 -4
  174. package/dist/esnext/foundation/Analytics/connectors/Shopify/ShopifyAnalytics.server.js +9 -9
  175. package/dist/esnext/foundation/Analytics/hook.js +2 -2
  176. package/dist/esnext/foundation/Analytics/index.d.ts +1 -1
  177. package/dist/esnext/foundation/Analytics/index.js +1 -1
  178. package/dist/esnext/foundation/Analytics/utils.js +1 -1
  179. package/dist/esnext/foundation/BuiltInRoutes/BuiltInRoutes.d.ts +1 -1
  180. package/dist/esnext/foundation/BuiltInRoutes/BuiltInRoutes.js +3 -3
  181. package/dist/esnext/foundation/Cache/cache-sub-request.d.ts +1 -1
  182. package/dist/esnext/foundation/Cache/cache-sub-request.js +4 -4
  183. package/dist/esnext/foundation/Cache/cache.d.ts +1 -1
  184. package/dist/esnext/foundation/Cache/cache.js +3 -3
  185. package/dist/esnext/foundation/Cache/strategies/index.d.ts +1 -1
  186. package/dist/esnext/foundation/Cookie/Cookie.js +2 -2
  187. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.d.ts +2 -2
  188. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.js +2 -1
  189. package/dist/esnext/foundation/DevTools/DevTools.client.js +1 -1
  190. package/dist/esnext/foundation/DevTools/DevTools.server.js +4 -3
  191. package/dist/esnext/foundation/DevTools/components/Heading.js +1 -1
  192. package/dist/esnext/foundation/DevTools/components/Interface.client.js +1 -1
  193. package/dist/esnext/foundation/DevTools/components/Panels.d.ts +2 -2
  194. package/dist/esnext/foundation/DevTools/components/Panels.js +28 -22
  195. package/dist/esnext/foundation/DevTools/components/Performance.client.js +1 -2
  196. package/dist/esnext/foundation/DevTools/components/Settings.client.d.ts +2 -1
  197. package/dist/esnext/foundation/DevTools/components/Settings.client.js +2 -5
  198. package/dist/esnext/foundation/DevTools/components/Table.js +3 -3
  199. package/dist/esnext/foundation/DevTools/components/index.d.ts +2 -2
  200. package/dist/esnext/foundation/DevTools/components/index.js +2 -2
  201. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.d.ts +1 -1
  202. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.js +5 -5
  203. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.d.ts +3 -3
  204. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.js +2 -2
  205. package/dist/esnext/foundation/Form/Form.client.d.ts +11 -0
  206. package/dist/esnext/foundation/Form/Form.client.js +51 -0
  207. package/dist/esnext/foundation/Head/Head.client.js +1 -1
  208. package/dist/esnext/foundation/Head/index.d.ts +1 -1
  209. package/dist/esnext/foundation/Head/index.js +1 -1
  210. package/dist/esnext/foundation/Html/Html.d.ts +1 -1
  211. package/dist/esnext/foundation/HydrogenRequest/HydrogenRequest.server.d.ts +5 -6
  212. package/dist/esnext/foundation/HydrogenRequest/HydrogenRequest.server.js +6 -8
  213. package/dist/esnext/foundation/HydrogenResponse/HydrogenResponse.server.d.ts +2 -2
  214. package/dist/esnext/foundation/HydrogenResponse/HydrogenResponse.server.js +2 -2
  215. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.d.ts +2 -2
  216. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.js +1 -1
  217. package/dist/esnext/foundation/Redirect/Redirect.client.js +1 -1
  218. package/dist/esnext/foundation/Route/Route.server.js +3 -3
  219. package/dist/esnext/foundation/Router/BrowserRouter.client.js +2 -2
  220. package/dist/esnext/foundation/Router/Router.server.js +1 -1
  221. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.d.ts +3 -1
  222. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.js +6 -4
  223. package/dist/esnext/foundation/ServerPropsProvider/index.d.ts +1 -2
  224. package/dist/esnext/foundation/ServerPropsProvider/index.js +1 -1
  225. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +2 -2
  226. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.js +3 -3
  227. package/dist/esnext/foundation/ServerRequestProvider/index.d.ts +1 -1
  228. package/dist/esnext/foundation/ServerRequestProvider/index.js +1 -1
  229. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.d.ts +4 -2
  230. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.js +4 -2
  231. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.d.ts +4 -2
  232. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.js +25 -7
  233. package/dist/esnext/foundation/ShopifyProvider/index.d.ts +1 -1
  234. package/dist/esnext/foundation/ShopifyProvider/index.js +1 -1
  235. package/dist/esnext/foundation/ShopifyProvider/types.d.ts +20 -2
  236. package/dist/esnext/foundation/fetchSync/ResponseSync.d.ts +14 -0
  237. package/dist/esnext/foundation/fetchSync/ResponseSync.js +38 -0
  238. package/dist/esnext/foundation/fetchSync/client/fetchSync.d.ts +2 -2
  239. package/dist/esnext/foundation/fetchSync/client/fetchSync.js +5 -10
  240. package/dist/esnext/foundation/fetchSync/server/fetchSync.d.ts +3 -3
  241. package/dist/esnext/foundation/fetchSync/server/fetchSync.js +7 -13
  242. package/dist/esnext/foundation/index.d.ts +3 -3
  243. package/dist/esnext/foundation/index.js +3 -3
  244. package/dist/esnext/foundation/session/session-types.d.ts +13 -0
  245. package/dist/esnext/foundation/{fetchSync/types.js → session/session-types.js} +0 -0
  246. package/dist/esnext/foundation/session/session.d.ts +4 -16
  247. package/dist/esnext/foundation/session/session.js +1 -1
  248. package/dist/esnext/foundation/ssr-interop.d.ts +2 -2
  249. package/dist/esnext/foundation/ssr-interop.js +2 -2
  250. package/dist/esnext/foundation/useNavigate/useNavigate.js +2 -2
  251. package/dist/esnext/foundation/useQuery/hooks.d.ts +1 -1
  252. package/dist/esnext/foundation/useQuery/hooks.js +4 -4
  253. package/dist/esnext/foundation/useQuery/index.d.ts +1 -1
  254. package/dist/esnext/foundation/useQuery/index.js +1 -1
  255. package/dist/esnext/foundation/useRequestContext/index.js +1 -1
  256. package/dist/esnext/foundation/useRouteParams/useRouteParams.js +2 -2
  257. package/dist/esnext/foundation/useServerProps/index.d.ts +1 -1
  258. package/dist/esnext/foundation/useServerProps/index.js +1 -1
  259. package/dist/esnext/foundation/useServerProps/use-server-props.d.ts +1 -1
  260. package/dist/esnext/foundation/useServerProps/use-server-props.js +1 -1
  261. package/dist/esnext/foundation/useSession/useSession.js +1 -1
  262. package/dist/esnext/foundation/useShop/index.d.ts +1 -1
  263. package/dist/esnext/foundation/useShop/index.js +1 -1
  264. package/dist/esnext/foundation/useShop/use-shop.d.ts +1 -1
  265. package/dist/esnext/foundation/useShop/use-shop.js +2 -2
  266. package/dist/esnext/foundation/useUrl/index.d.ts +1 -1
  267. package/dist/esnext/foundation/useUrl/index.js +1 -1
  268. package/dist/esnext/foundation/useUrl/useUrl.js +4 -4
  269. package/dist/esnext/framework/graphiql.js +26 -30
  270. package/dist/esnext/framework/load-config.js +2 -2
  271. package/dist/esnext/framework/middleware.d.ts +1 -1
  272. package/dist/esnext/framework/middleware.js +2 -2
  273. package/dist/esnext/framework/plugin.d.ts +1 -1
  274. package/dist/esnext/framework/plugin.js +14 -13
  275. package/dist/esnext/framework/plugins/vite-plugin-css-modules-rsc.js +1 -1
  276. package/dist/esnext/framework/plugins/vite-plugin-css-rsc.d.ts +2 -0
  277. package/dist/esnext/framework/plugins/vite-plugin-css-rsc.js +113 -0
  278. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +1 -1
  279. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.js +3 -3
  280. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -1
  281. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.js +2 -2
  282. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-virtual-files.d.ts +1 -1
  283. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-virtual-files.js +11 -1
  284. package/dist/esnext/framework/plugins/vite-plugin-platform-entry.js +36 -7
  285. package/dist/esnext/framework/types.d.ts +13 -0
  286. package/dist/esnext/hooks/index.d.ts +6 -5
  287. package/dist/esnext/hooks/index.js +6 -5
  288. package/dist/esnext/hooks/useCart/index.d.ts +1 -1
  289. package/dist/esnext/hooks/useCart/index.js +1 -1
  290. package/dist/esnext/hooks/useCart/useCart.d.ts +1 -1
  291. package/dist/esnext/hooks/useCart/useCart.js +1 -1
  292. package/dist/esnext/hooks/useCartLine/index.d.ts +1 -1
  293. package/dist/esnext/hooks/useCartLine/index.js +1 -1
  294. package/dist/esnext/hooks/useCartLine/useCartLine.d.ts +13 -13
  295. package/dist/esnext/hooks/useCartLine/useCartLine.js +1 -1
  296. package/dist/esnext/hooks/useLoadScript/index.d.ts +1 -1
  297. package/dist/esnext/hooks/useLoadScript/index.js +1 -1
  298. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.d.ts +1 -1
  299. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.js +1 -1
  300. package/dist/esnext/hooks/useLocalization/useLocalization.d.ts +2 -2
  301. package/dist/esnext/hooks/useLocalization/useLocalization.js +3 -8
  302. package/dist/esnext/hooks/useMeasurement/hooks.d.ts +1 -1
  303. package/dist/esnext/hooks/useMeasurement/hooks.js +2 -2
  304. package/dist/esnext/hooks/useMeasurement/index.d.ts +1 -1
  305. package/dist/esnext/hooks/useMeasurement/index.js +1 -1
  306. package/dist/esnext/hooks/useMoney/hooks.d.ts +1 -1
  307. package/dist/esnext/hooks/useMoney/hooks.js +1 -1
  308. package/dist/esnext/hooks/useMoney/index.d.ts +1 -1
  309. package/dist/esnext/hooks/useMoney/index.js +1 -1
  310. package/dist/esnext/hooks/useProductOptions/helpers.d.ts +2 -2
  311. package/dist/esnext/hooks/useProductOptions/helpers.js +1 -1
  312. package/dist/esnext/hooks/useProductOptions/index.d.ts +2 -2
  313. package/dist/esnext/hooks/useProductOptions/index.js +2 -2
  314. package/dist/esnext/hooks/useProductOptions/types.d.ts +1 -1
  315. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.d.ts +1 -1
  316. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.js +1 -1
  317. package/dist/esnext/hooks/useShopQuery/hooks.d.ts +1 -1
  318. package/dist/esnext/hooks/useShopQuery/hooks.js +25 -17
  319. package/dist/esnext/hooks/useShopQuery/index.d.ts +1 -1
  320. package/dist/esnext/hooks/useShopQuery/index.js +1 -1
  321. package/dist/esnext/index.d.ts +26 -25
  322. package/dist/esnext/index.js +22 -21
  323. package/dist/esnext/node.d.ts +1 -1
  324. package/dist/esnext/node.js +1 -1
  325. package/dist/esnext/platforms/index.d.ts +1 -0
  326. package/dist/esnext/platforms/index.js +1 -0
  327. package/dist/esnext/platforms/node.d.ts +1 -1
  328. package/dist/esnext/platforms/node.js +5 -11
  329. package/dist/esnext/platforms/virtual.d.ts +8 -0
  330. package/dist/esnext/platforms/virtual.js +12 -0
  331. package/dist/esnext/platforms/worker-event.js +1 -1
  332. package/dist/esnext/platforms/worker.js +7 -7
  333. package/dist/esnext/shared-types.d.ts +3 -0
  334. package/dist/esnext/types.d.ts +8 -7
  335. package/dist/esnext/types.js +1 -1
  336. package/dist/esnext/utilities/apiRoutes.d.ts +4 -4
  337. package/dist/esnext/utilities/apiRoutes.js +41 -6
  338. package/dist/esnext/utilities/error.js +1 -1
  339. package/dist/esnext/utilities/fetch.js +1 -1
  340. package/dist/esnext/utilities/flattenConnection/flattenConnection.d.ts +1 -1
  341. package/dist/esnext/utilities/flattenConnection/index.d.ts +1 -1
  342. package/dist/esnext/utilities/flattenConnection/index.js +1 -1
  343. package/dist/esnext/utilities/hash.d.ts +1 -1
  344. package/dist/esnext/utilities/hash.js +1 -1
  345. package/dist/esnext/utilities/image_size.d.ts +2 -1
  346. package/dist/esnext/utilities/image_size.js +27 -26
  347. package/dist/esnext/utilities/index.d.ts +12 -12
  348. package/dist/esnext/utilities/index.js +12 -12
  349. package/dist/esnext/utilities/isBrowser/index.d.ts +1 -1
  350. package/dist/esnext/utilities/isBrowser/index.js +1 -1
  351. package/dist/esnext/utilities/isServer/index.d.ts +1 -1
  352. package/dist/esnext/utilities/isServer/index.js +1 -1
  353. package/dist/esnext/utilities/isServer/isServer.js +1 -1
  354. package/dist/esnext/utilities/load_script.d.ts +1 -0
  355. package/dist/esnext/utilities/load_script.js +6 -1
  356. package/dist/esnext/utilities/locale/index.d.ts +1 -0
  357. package/dist/esnext/utilities/locale/index.js +1 -0
  358. package/dist/esnext/utilities/locale/locale.d.ts +7 -0
  359. package/dist/esnext/utilities/locale/locale.js +22 -0
  360. package/dist/esnext/utilities/log/index.d.ts +4 -4
  361. package/dist/esnext/utilities/log/index.js +4 -4
  362. package/dist/esnext/utilities/log/log-cache-api-status.js +1 -1
  363. package/dist/esnext/utilities/log/log-cache-header.d.ts +4 -4
  364. package/dist/esnext/utilities/log/log-cache-header.js +3 -3
  365. package/dist/esnext/utilities/log/log-query-timeline.d.ts +3 -3
  366. package/dist/esnext/utilities/log/log-query-timeline.js +13 -10
  367. package/dist/esnext/utilities/log/log.d.ts +1 -1
  368. package/dist/esnext/utilities/log/log.js +2 -2
  369. package/dist/esnext/utilities/log/utils.d.ts +1 -1
  370. package/dist/esnext/utilities/measurement.d.ts +1 -1
  371. package/dist/esnext/utilities/parseMetafield/index.d.ts +1 -1
  372. package/dist/esnext/utilities/parseMetafield/index.js +1 -1
  373. package/dist/esnext/utilities/parseMetafield/parseMetafield.d.ts +2 -2
  374. package/dist/esnext/utilities/parseMetafield/parseMetafield.js +1 -1
  375. package/dist/esnext/utilities/storefrontApi.js +1 -1
  376. package/dist/esnext/utilities/suspense.d.ts +1 -1
  377. package/dist/esnext/utilities/suspense.js +1 -1
  378. package/dist/esnext/version.d.ts +1 -1
  379. package/dist/esnext/version.js +1 -1
  380. package/dist/node/foundation/session/session-types.d.ts +13 -0
  381. package/dist/node/foundation/session/session-types.js +2 -0
  382. package/dist/node/framework/graphiql.js +26 -30
  383. package/dist/node/framework/load-config.js +3 -3
  384. package/dist/node/framework/middleware.d.ts +1 -1
  385. package/dist/node/framework/middleware.js +3 -3
  386. package/dist/node/framework/plugin.d.ts +1 -1
  387. package/dist/node/framework/plugin.js +25 -24
  388. package/dist/node/framework/plugins/vite-plugin-css-modules-rsc.js +3 -3
  389. package/dist/node/framework/plugins/vite-plugin-css-rsc.d.ts +2 -0
  390. package/dist/node/framework/plugins/vite-plugin-css-rsc.js +119 -0
  391. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +1 -1
  392. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.js +7 -7
  393. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -1
  394. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.js +5 -5
  395. package/dist/node/framework/plugins/vite-plugin-hydrogen-virtual-files.d.ts +1 -1
  396. package/dist/node/framework/plugins/vite-plugin-hydrogen-virtual-files.js +12 -2
  397. package/dist/node/framework/plugins/vite-plugin-platform-entry.js +36 -7
  398. package/dist/node/framework/types.d.ts +13 -0
  399. package/dist/node/shared-types.d.ts +3 -0
  400. package/package.json +20 -4
  401. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-plugin.js +33 -12
  402. package/vendor/react-server-dom-vite/esm/react-server-dom-vite-plugin.js +33 -12
  403. package/CHANGELOG.md +0 -2206
  404. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.d.ts +0 -9
  405. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.js +0 -2
  406. package/dist/esnext/foundation/fetchSync/types.d.ts +0 -5
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const path_1 = __importDefault(require("path"));
7
+ const magic_string_1 = __importDefault(require("magic-string"));
8
+ const vite_1 = require("vite");
9
+ const VITE_CSS_CHUNK_NAME = 'style.css';
10
+ const INJECT_STYLES_COMMENT = '<!--__INJECT_STYLES__-->';
11
+ // Keep this in the outer scope to share it
12
+ // across client <> server builds.
13
+ let clientBuildPath;
14
+ function cssRsc() {
15
+ let config;
16
+ return {
17
+ name: 'hydrogen:css-rsc',
18
+ enforce: 'post',
19
+ config() {
20
+ // Disable CSS code split to avoid preloading styles
21
+ // that are already included in index.html
22
+ return { build: { cssCodeSplit: false } };
23
+ },
24
+ configResolved(_config) {
25
+ config = _config;
26
+ },
27
+ transform(code, id, options) {
28
+ if (options?.ssr && id.includes('index.html?raw')) {
29
+ // Mark the client build index.html to inject styles later
30
+ const s = new magic_string_1.default(code);
31
+ s.replace('</head>', INJECT_STYLES_COMMENT + '</head>');
32
+ return {
33
+ code: s.toString(),
34
+ map: s.generateMap({ file: id, source: id }),
35
+ };
36
+ }
37
+ },
38
+ transformIndexHtml(html, { server }) {
39
+ // Add discovered styles during dev
40
+ if (server) {
41
+ const tags = [];
42
+ const foundCssFiles = new Set();
43
+ const { browserHash = '' } = server._optimizedDeps?.metadata || {};
44
+ for (const [key, value] of server.moduleGraph.idToModuleMap.entries()) {
45
+ if (
46
+ // Note: Some CSS-in-JS libraries use `.css.js`
47
+ // extension and we should match it here:
48
+ /\.(css|sass|scss|stylus|less)(\.|\?|$)/.test((0, vite_1.normalizePath)(key).split('/').pop())) {
49
+ let { url, file, lastHMRTimestamp, importers } = value;
50
+ if (!foundCssFiles.has(file) &&
51
+ !Array.from(importers).some((importer) => foundCssFiles.has(importer.file))) {
52
+ foundCssFiles.add(file);
53
+ // Vite is adding hash and timestamp to the CSS files downloaded
54
+ // from client components. Adding the same query string params
55
+ // here prevents this file from being downloaded twice.
56
+ if (lastHMRTimestamp) {
57
+ const timestampQuery = `?t=${lastHMRTimestamp}`;
58
+ // The timestamp needs to be the first query string param.
59
+ url = url.includes('?')
60
+ ? url.replace('?', timestampQuery + '&')
61
+ : url + timestampQuery;
62
+ }
63
+ if (browserHash && !url.includes('v=')) {
64
+ // Append the hash at the end
65
+ url += (url.includes('?') ? '&' : '?') + `v=${browserHash}`;
66
+ }
67
+ tags.push(value.type === 'css'
68
+ ? { tag: 'link', attrs: { rel: 'stylesheet', href: url } }
69
+ : { tag: 'script', attrs: { type: 'module', src: url } });
70
+ }
71
+ }
72
+ }
73
+ return tags;
74
+ }
75
+ },
76
+ generateBundle(options, bundle, isWrite) {
77
+ if (config.build?.ssr) {
78
+ // -- Server build
79
+ if (!clientBuildPath) {
80
+ // Default value
81
+ clientBuildPath = (0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir, '..', 'client'));
82
+ }
83
+ const relativeClientPath = (0, vite_1.normalizePath)(path_1.default.relative((0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir)), clientBuildPath));
84
+ let cssAssetFileName = '';
85
+ const cssAsset = Object.values(bundle).find((file) => file.type === 'asset' && file.name === VITE_CSS_CHUNK_NAME);
86
+ const outputChunk = Object.values(bundle).find((file) => file.type === 'chunk' && file.isEntry);
87
+ if (cssAsset) {
88
+ cssAssetFileName = cssAsset.fileName;
89
+ // Move the CSS file to the client build assets
90
+ cssAsset.fileName = (0, vite_1.normalizePath)(path_1.default.join(relativeClientPath, cssAsset.fileName));
91
+ }
92
+ let assetPrefix = process.env.HYDROGEN_ASSET_BASE_URL || '/';
93
+ if (!assetPrefix.endsWith('/'))
94
+ assetPrefix += '/';
95
+ // Add a reference to the CSS file in indexTemplate
96
+ outputChunk.code = outputChunk.code.replace(INJECT_STYLES_COMMENT, cssAssetFileName &&
97
+ `<link rel="stylesheet" href="${assetPrefix + cssAssetFileName}">`);
98
+ }
99
+ else {
100
+ // -- Client build
101
+ // Save outDir from client build in the outer scope
102
+ // to read it during the server build. The CLI runs Vite in
103
+ // the same process so the scope is shared across builds.
104
+ clientBuildPath = (0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir));
105
+ const indexHtml = bundle['index.html'];
106
+ const cssAsset = Object.values(bundle).find((file) => file.type === 'asset' && file.name === VITE_CSS_CHUNK_NAME);
107
+ if (cssAsset) {
108
+ // The client build CSS is incomplete because it only includes
109
+ // CSS imported in client components (server components are not
110
+ // discovered in this build). Remove it from this build and
111
+ // let it be added by the server build after this.
112
+ delete bundle[cssAsset.fileName];
113
+ indexHtml.source = indexHtml.source.replace(new RegExp(`\\s*<link[^<>]+${cssAsset.fileName.replace('.', '\\.')}.*?>`, ''), '');
114
+ }
115
+ }
116
+ },
117
+ };
118
+ }
119
+ exports.default = cssRsc;
@@ -1,5 +1,5 @@
1
1
  import { Plugin } from 'vite';
2
- import type { HydrogenVitePluginOptions } from '../types';
2
+ import type { HydrogenVitePluginOptions } from '../types.js';
3
3
  export declare const HYDROGEN_DEFAULT_SERVER_ENTRY: string;
4
4
  declare const _default: (pluginOptions: HydrogenVitePluginOptions) => Plugin;
5
5
  export default _default;
@@ -8,9 +8,9 @@ const vite_1 = require("vite");
8
8
  const body_parser_1 = __importDefault(require("body-parser"));
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const fs_1 = require("fs");
11
- const middleware_1 = require("../middleware");
12
- const in_memory_1 = require("../cache/in-memory");
13
- const vite_plugin_hydrogen_virtual_files_1 = require("./vite-plugin-hydrogen-virtual-files");
11
+ const middleware_js_1 = require("../middleware.js");
12
+ const in_memory_js_1 = require("../cache/in-memory.js");
13
+ const vite_plugin_hydrogen_virtual_files_js_1 = require("./vite-plugin-hydrogen-virtual-files.js");
14
14
  exports.HYDROGEN_DEFAULT_SERVER_ENTRY = process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server';
15
15
  exports.default = (pluginOptions) => {
16
16
  return {
@@ -30,10 +30,10 @@ exports.default = (pluginOptions) => {
30
30
  await polyfillOxygenEnv(server.config);
31
31
  // The default vite middleware rewrites the URL `/graphqil` to `/index.html`
32
32
  // By running this middleware first, we avoid that.
33
- server.middlewares.use((0, middleware_1.graphiqlMiddleware)({
33
+ server.middlewares.use((0, middleware_js_1.graphiqlMiddleware)({
34
34
  dev: true,
35
35
  getShopifyConfig: async (incomingMessage) => {
36
- const { default: hydrogenConfig } = await server.ssrLoadModule(vite_plugin_hydrogen_virtual_files_1.VIRTUAL_PROXY_HYDROGEN_CONFIG_ID);
36
+ const { default: hydrogenConfig } = await server.ssrLoadModule(vite_plugin_hydrogen_virtual_files_js_1.VIRTUAL_PROXY_HYDROGEN_CONFIG_ID);
37
37
  // @ts-ignore
38
38
  const { address = 'localhost', port = '3000' } = server.httpServer?.address() || {};
39
39
  const url = new URL(`http://${address}:${port}${incomingMessage.url}`);
@@ -48,13 +48,13 @@ exports.default = (pluginOptions) => {
48
48
  },
49
49
  }));
50
50
  server.middlewares.use(body_parser_1.default.raw({ type: '*/*' }));
51
- return () => server.middlewares.use((0, middleware_1.hydrogenMiddleware)({
51
+ return () => server.middlewares.use((0, middleware_js_1.hydrogenMiddleware)({
52
52
  dev: true,
53
53
  indexTemplate: getIndexTemplate,
54
54
  getServerEntrypoint: () => server.ssrLoadModule(exports.HYDROGEN_DEFAULT_SERVER_ENTRY),
55
55
  devServer: server,
56
56
  cache: pluginOptions?.devCache
57
- ? new in_memory_1.InMemoryCache()
57
+ ? new in_memory_js_1.InMemoryCache()
58
58
  : undefined,
59
59
  }));
60
60
  },
@@ -1,2 +1,2 @@
1
- import { HydrogenVitePluginOptions } from '../types';
1
+ import { HydrogenVitePluginOptions } from '../types.js';
2
2
  export default function (options?: HydrogenVitePluginOptions): any;
@@ -5,19 +5,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  // @ts-ignore
7
7
  const plugin_js_1 = __importDefault(require("@shopify/hydrogen/vendor/react-server-dom-vite/plugin.js"));
8
- const vite_plugin_hydrogen_middleware_1 = require("./vite-plugin-hydrogen-middleware");
9
- const vite_plugin_hydrogen_virtual_files_1 = require("./vite-plugin-hydrogen-virtual-files");
8
+ const vite_plugin_hydrogen_middleware_js_1 = require("./vite-plugin-hydrogen-middleware.js");
9
+ const vite_plugin_hydrogen_virtual_files_js_1 = require("./vite-plugin-hydrogen-virtual-files.js");
10
10
  function default_1(options) {
11
11
  return (0, plugin_js_1.default)({
12
12
  serverBuildEntries: [
13
- vite_plugin_hydrogen_middleware_1.HYDROGEN_DEFAULT_SERVER_ENTRY,
14
- vite_plugin_hydrogen_virtual_files_1.VIRTUAL_PROXY_HYDROGEN_ROUTES_ID,
13
+ vite_plugin_hydrogen_middleware_js_1.HYDROGEN_DEFAULT_SERVER_ENTRY,
14
+ vite_plugin_hydrogen_virtual_files_js_1.VIRTUAL_PROXY_HYDROGEN_ROUTES_ID,
15
15
  ],
16
16
  isServerComponentImporterAllowed(importer, source) {
17
17
  return (
18
18
  // Always allow the entry server (e.g. App.server.jsx) to be imported
19
19
  // in other files such as worker.js or server.js.
20
- source.includes(vite_plugin_hydrogen_middleware_1.HYDROGEN_DEFAULT_SERVER_ENTRY) ||
20
+ source.includes(vite_plugin_hydrogen_middleware_js_1.HYDROGEN_DEFAULT_SERVER_ENTRY) ||
21
21
  /(index|entry-server|hydrogen\.config)\.[jt]s/.test(importer) ||
22
22
  // Support importing server components for testing
23
23
  // TODO: revisit this when RSC splits into two bundles
@@ -1,5 +1,5 @@
1
1
  import { Plugin } from 'vite';
2
- import type { HydrogenVitePluginOptions } from '../types';
2
+ import type { HydrogenVitePluginOptions } from '../types.js';
3
3
  export declare const HYDROGEN_DEFAULT_SERVER_ENTRY: string;
4
4
  export declare const VIRTUAL_PROXY_HYDROGEN_CONFIG_ID: string;
5
5
  export declare const VIRTUAL_PROXY_HYDROGEN_ROUTES_ID: string;
@@ -7,11 +7,13 @@ exports.VIRTUAL_PROXY_HYDROGEN_ROUTES_ID = exports.VIRTUAL_PROXY_HYDROGEN_CONFIG
7
7
  const vite_1 = require("vite");
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const fs_1 = require("fs");
10
- const viteception_1 = require("../viteception");
10
+ const viteception_js_1 = require("../viteception.js");
11
11
  exports.HYDROGEN_DEFAULT_SERVER_ENTRY = process.env.HYDROGEN_SERVER_ENTRY || '/src/App.server';
12
12
  // The character ":" breaks Vite with Node >= 16.15. Use "_" instead
13
13
  const VIRTUAL_PREFIX = 'virtual__';
14
14
  const PROXY_PREFIX = 'proxy__';
15
+ const ERROR_FILE = 'error.jsx';
16
+ const VIRTUAL_ERROR_FILE = VIRTUAL_PREFIX + ERROR_FILE;
15
17
  const HYDROGEN_CONFIG_ID = 'hydrogen.config.ts';
16
18
  const VIRTUAL_HYDROGEN_CONFIG_ID = VIRTUAL_PREFIX + HYDROGEN_CONFIG_ID;
17
19
  exports.VIRTUAL_PROXY_HYDROGEN_CONFIG_ID = VIRTUAL_PREFIX + PROXY_PREFIX + HYDROGEN_CONFIG_ID;
@@ -40,6 +42,7 @@ exports.default = (pluginOptions) => {
40
42
  exports.VIRTUAL_PROXY_HYDROGEN_CONFIG_ID,
41
43
  exports.VIRTUAL_PROXY_HYDROGEN_ROUTES_ID,
42
44
  VIRTUAL_HYDROGEN_ROUTES_ID,
45
+ VIRTUAL_ERROR_FILE,
43
46
  ].includes(source)) {
44
47
  // Virtual modules convention
45
48
  // https://vitejs.dev/guide/api-plugin.html#virtual-modules-convention
@@ -77,6 +80,13 @@ exports.default = (pluginOptions) => {
77
80
  return { code };
78
81
  });
79
82
  }
83
+ if (id === '\0' + VIRTUAL_ERROR_FILE) {
84
+ return importHydrogenConfig().then((hc) => {
85
+ const errorPath = hc.serverErrorPage ?? '/src/Error.{jsx,tsx}';
86
+ const code = `const errorPage = import.meta.glob("${errorPath}");\n export default Object.values(errorPage)[0];`;
87
+ return { code };
88
+ });
89
+ }
80
90
  },
81
91
  };
82
92
  async function importHydrogenConfig() {
@@ -84,7 +94,7 @@ exports.default = (pluginOptions) => {
84
94
  const loaded = await server.ssrLoadModule(exports.VIRTUAL_PROXY_HYDROGEN_CONFIG_ID);
85
95
  return loaded.default;
86
96
  }
87
- const { loaded } = await (0, viteception_1.viteception)([exports.VIRTUAL_PROXY_HYDROGEN_CONFIG_ID]);
97
+ const { loaded } = await (0, viteception_js_1.viteception)([exports.VIRTUAL_PROXY_HYDROGEN_CONFIG_ID]);
88
98
  return loaded[0].default;
89
99
  }
90
100
  };
@@ -4,16 +4,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const vite_1 = require("vite");
7
- const vite_plugin_hydrogen_middleware_1 = require("./vite-plugin-hydrogen-middleware");
7
+ const vite_plugin_hydrogen_middleware_js_1 = require("./vite-plugin-hydrogen-middleware.js");
8
8
  const magic_string_1 = __importDefault(require("magic-string"));
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const fs_1 = __importDefault(require("fs"));
11
+ const fast_glob_1 = __importDefault(require("fast-glob"));
11
12
  const SSR_BUNDLE_NAME = 'index.js';
13
+ // Keep this in the outer scope to share it
14
+ // across client <> server builds.
15
+ let clientBuildPath;
12
16
  exports.default = () => {
13
17
  let config;
14
18
  let isESM;
15
19
  return {
16
- name: 'vite-plugin-platform-entry',
20
+ name: 'hydrogen:platform-entry',
17
21
  enforce: 'pre',
18
22
  configResolved(_config) {
19
23
  config = _config;
@@ -34,18 +38,43 @@ exports.default = () => {
34
38
  }
35
39
  return null;
36
40
  },
37
- transform(code, id) {
38
- if ((0, vite_1.normalizePath)(id).includes('/hydrogen/dist/esnext/platforms/')) {
41
+ async transform(code, id, options) {
42
+ if (config.command === 'build' &&
43
+ options?.ssr &&
44
+ /@shopify\/hydrogen\/.+platforms\/virtual\./.test((0, vite_1.normalizePath)(id))) {
39
45
  const ms = new magic_string_1.default(code);
40
- ms.replace('__SERVER_ENTRY__', vite_plugin_hydrogen_middleware_1.HYDROGEN_DEFAULT_SERVER_ENTRY);
41
- const indexTemplatePath = (0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir, '..', 'client', 'index.html'));
42
- ms.replace('__INDEX_TEMPLATE__', indexTemplatePath);
46
+ ms.replace('__HYDROGEN_ENTRY__', vite_plugin_hydrogen_middleware_js_1.HYDROGEN_DEFAULT_SERVER_ENTRY);
47
+ if (!clientBuildPath) {
48
+ // Default value
49
+ clientBuildPath = (0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir, '..', 'client'));
50
+ }
51
+ ms.replace('__HYDROGEN_HTML_TEMPLATE__', (0, vite_1.normalizePath)(path_1.default.resolve(clientBuildPath, 'index.html')));
52
+ ms.replace('__HYDROGEN_RELATIVE_CLIENT_BUILD__', (0, vite_1.normalizePath)(path_1.default.relative((0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir)), clientBuildPath)));
53
+ const files = clientBuildPath
54
+ ? (await (0, fast_glob_1.default)('**/*', {
55
+ cwd: clientBuildPath,
56
+ ignore: ['**/index.html', `**/${config.build.assetsDir}/**`],
57
+ })).map((file) => '/' + file)
58
+ : [];
59
+ ms.replace("\\['__HYDROGEN_ASSETS__'\\]", JSON.stringify(files));
60
+ ms.replace('__HYDROGEN_ASSETS_DIR__', config.build.assetsDir);
61
+ ms.replace('__HYDROGEN_ASSETS_BASE_URL__', (process.env.HYDROGEN_ASSET_BASE_URL || '').replace(/\/$/, ''));
62
+ // Remove the poison pill
63
+ ms.replace('throw', '//');
43
64
  return {
44
65
  code: ms.toString(),
45
66
  map: ms.generateMap({ file: id, source: id }),
46
67
  };
47
68
  }
48
69
  },
70
+ buildEnd(err) {
71
+ if (!err && !config.build.ssr && config.command === 'build') {
72
+ // Save outDir from client build in the outer scope in order
73
+ // to read it during the server build. The CLI runs Vite in
74
+ // the same process so the scope is shared across builds.
75
+ clientBuildPath = (0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir));
76
+ }
77
+ },
49
78
  generateBundle(options, bundle) {
50
79
  if (config.build.ssr) {
51
80
  const [key, value] = Object.entries(bundle).find(([, value]) => value.type === 'chunk' && value.isEntry);
@@ -3,4 +3,17 @@ export interface HydrogenVitePluginOptions {
3
3
  purgeQueryCacheOnBuild?: boolean;
4
4
  configPath?: string;
5
5
  optimizeBoundaries?: boolean | 'build';
6
+ /**
7
+ * Experimental features
8
+ */
9
+ experimental?: {
10
+ /**
11
+ * CSS compatibility with React Server Components.
12
+ * - `global` inlines all the styles in the DOM and works for all types of CSS.
13
+ * - `modules-only` inlines the styles in RSC responses and only works for CSS Modules.
14
+ * @defaultValue `modules-only`
15
+ * @experimental
16
+ */
17
+ css: 'global' | 'modules-only';
18
+ };
6
19
  }
@@ -1,5 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import type { IncomingMessage, ServerResponse } from 'http';
3
+ import type { SessionStorageAdapter } from './foundation/session/session-types';
3
4
  export interface RuntimeContext {
4
5
  waitUntil: (fn: Promise<any>) => void;
5
6
  }
@@ -13,6 +14,8 @@ export interface RequestHandlerOptions {
13
14
  context?: RuntimeContext;
14
15
  nonce?: string;
15
16
  buyerIpHeader?: string;
17
+ sessionApi?: SessionStorageAdapter;
18
+ headers?: Headers;
16
19
  }
17
20
  export interface RequestHandler {
18
21
  (request: Request | IncomingMessage, options: RequestHandlerOptions): Promise<Response | undefined>;
package/package.json CHANGED
@@ -7,12 +7,16 @@
7
7
  "engines": {
8
8
  "node": ">=14"
9
9
  },
10
- "version": "1.0.1",
10
+ "version": "1.2.0",
11
11
  "description": "Modern custom Shopify storefronts",
12
12
  "license": "MIT",
13
13
  "main": "dist/esnext/index.js",
14
14
  "exports": {
15
15
  ".": "./dist/esnext/index.js",
16
+ "./experimental": {
17
+ "import": "./dist/esnext/experimental.js",
18
+ "require": "./dist/node/experimental.js"
19
+ },
16
20
  "./plugin": {
17
21
  "import": "./dist/esnext/framework/plugin.js",
18
22
  "require": "./dist/node/framework/plugin.js"
@@ -35,6 +39,11 @@
35
39
  "import": "./dist/esnext/framework/cache/*.js",
36
40
  "require": "./dist/node/framework/cache/*.js"
37
41
  },
42
+ "./platforms": {
43
+ "types": "./dist/esnext/platforms/virtual.d.ts",
44
+ "import": "./dist/esnext/platforms/virtual.js",
45
+ "require": "./dist/node/platforms/virtual.js"
46
+ },
38
47
  "./package.json": "./package.json",
39
48
  "./*": "./dist/esnext/*.js"
40
49
  },
@@ -57,7 +66,9 @@
57
66
  "lint": "eslint --ext .ts src/** --no-error-on-unmatched-pattern",
58
67
  "format": "prettier --write --parser typescript \"src/**/*.ts\"",
59
68
  "graphql-types": "graphql-codegen --config codegen.yml && yarn format",
60
- "prepack": "yarn build"
69
+ "prepack": "yarn build",
70
+ "test:vitest": "vitest",
71
+ "test:vitest:ci": "vitest run --coverage"
61
72
  },
62
73
  "repository": {
63
74
  "type": "git",
@@ -78,6 +89,8 @@
78
89
  "@graphql-codegen/typescript-operations": "2.3.2",
79
90
  "@graphql-typed-document-node/core": "^3.1.0",
80
91
  "@rollup/plugin-graphql": "^1.0.0",
92
+ "@testing-library/jest-dom": "^5.16.4",
93
+ "@testing-library/react": "^13.3.0",
81
94
  "@types/body-parser": "^1.19.2",
82
95
  "@types/connect": "^3.4.34",
83
96
  "@types/graphql": "^14.5.0",
@@ -90,11 +103,14 @@
90
103
  "@types/ws": "^8.2.0",
91
104
  "babel-loader": "^8.2.2",
92
105
  "cpy-cli": "^3.1.0",
106
+ "eslint-plugin-import": "^2.26.0",
107
+ "happy-dom": "^6.0.3",
93
108
  "mkdirp": "^1.0.4",
94
109
  "npm-run-all": "^4.1.5",
95
110
  "postcss": "^8",
96
111
  "raw-loader": "^4.0.2",
97
- "rimraf": "^3.0.2"
112
+ "rimraf": "^3.0.2",
113
+ "vitest": "^0.18.0"
98
114
  },
99
115
  "peerDependencies": {
100
116
  "body-parser": "^1.20.0",
@@ -131,7 +147,7 @@
131
147
  "node-fetch": "^2.6.7",
132
148
  "path-to-regexp": "^6.2.0",
133
149
  "react-error-boundary": "^3.1.3",
134
- "react-helmet-async": "^1.2.3",
150
+ "react-helmet-async": "^1.3.0",
135
151
  "serve-static": "^1.15.0",
136
152
  "set-cookie-parser": "^2.5.0",
137
153
  "undici": "^5.5.1",
@@ -126,6 +126,13 @@ function ReactFlightVitePlugin() {
126
126
  return {
127
127
  name: 'vite-plugin-react-server-components',
128
128
  enforce: 'pre',
129
+ buildStart: function () {
130
+ // Let other plugins differentiate between pure SSR and RSC builds
131
+ if (config?.build?.ssr) process.env.RSC_BUILD = 'true';
132
+ },
133
+ buildEnd: function () {
134
+ if (config?.build?.ssr) delete process.env.RSC_BUILD;
135
+ },
129
136
  configureServer: function (_server) {
130
137
  server = _server;
131
138
  var seenModules = {};
@@ -297,6 +304,19 @@ function ReactFlightVitePlugin() {
297
304
 
298
305
  return findClientBoundariesForClientBuild(serverBuildEntries, optimizeBoundaries !== false).then(injectGlobs);
299
306
  }
307
+ },
308
+ handleHotUpdate: function (_ref2) {
309
+ var modules = _ref2.modules;
310
+
311
+ if (modules.some(function (mod) {
312
+ return mod.meta && mod.meta.isClientComponent;
313
+ })) {
314
+ return modules.filter(function (mod) {
315
+ return !mod.meta || !mod.meta.ssr;
316
+ });
317
+ }
318
+
319
+ return modules;
300
320
  }
301
321
  };
302
322
  }
@@ -466,9 +486,9 @@ function isDirectImportInServer(originalMod, currentMod, accModInfo) {
466
486
  exports: []
467
487
  };
468
488
  lastModImports.forEach(function (mod) {
469
- mod.variables.forEach(function (_ref2) {
470
- var name = _ref2[0],
471
- alias = _ref2[1];
489
+ mod.variables.forEach(function (_ref3) {
490
+ var name = _ref3[0],
491
+ alias = _ref3[1];
472
492
 
473
493
  if (name === '*' && !alias) {
474
494
  var _accModInfo$exports;
@@ -501,8 +521,8 @@ function isDirectImportInServer(originalMod, currentMod, accModInfo) {
501
521
  // the original module before marking it as client boundary.
502
522
 
503
523
  return currentMod.meta.imports.some(function (imp) {
504
- return imp.from === accModInfo.file && (imp.variables || []).some(function (_ref3) {
505
- var name = _ref3[0];
524
+ return imp.from === accModInfo.file && (imp.variables || []).some(function (_ref4) {
525
+ var name = _ref4[0];
506
526
  return accModInfo.exports.includes(name);
507
527
  });
508
528
  });
@@ -540,12 +560,12 @@ function augmentModuleGraph(moduleGraph, id, code, root, resolveAlias) {
540
560
 
541
561
 
542
562
  var imports = [];
543
- rawImports.forEach(function (_ref4) {
544
- var startMod = _ref4.s,
545
- endMod = _ref4.e,
546
- dynamicImportIndex = _ref4.d,
547
- startStatement = _ref4.ss,
548
- endStatement = _ref4.se;
563
+ rawImports.forEach(function (_ref5) {
564
+ var startMod = _ref5.s,
565
+ endMod = _ref5.e,
566
+ dynamicImportIndex = _ref5.d,
567
+ startStatement = _ref5.ss,
568
+ endStatement = _ref5.se;
549
569
  if (dynamicImportIndex !== -1) return; // Skip dynamic imports for now
550
570
 
551
571
  var rawModPath = code.slice(startMod, endMod);
@@ -593,7 +613,8 @@ function augmentModuleGraph(moduleGraph, id, code, root, resolveAlias) {
593
613
  assign(currentModule.meta, {
594
614
  isFacade: isFacade,
595
615
  namedExports: namedExports,
596
- imports: imports
616
+ imports: imports,
617
+ ssr: true
597
618
  });
598
619
  }
599
620
 
@@ -122,6 +122,13 @@ function ReactFlightVitePlugin() {
122
122
  return {
123
123
  name: 'vite-plugin-react-server-components',
124
124
  enforce: 'pre',
125
+ buildStart: function () {
126
+ // Let other plugins differentiate between pure SSR and RSC builds
127
+ if (config?.build?.ssr) process.env.RSC_BUILD = 'true';
128
+ },
129
+ buildEnd: function () {
130
+ if (config?.build?.ssr) delete process.env.RSC_BUILD;
131
+ },
125
132
  configureServer: function (_server) {
126
133
  server = _server;
127
134
  var seenModules = {};
@@ -293,6 +300,19 @@ function ReactFlightVitePlugin() {
293
300
 
294
301
  return findClientBoundariesForClientBuild(serverBuildEntries, optimizeBoundaries !== false).then(injectGlobs);
295
302
  }
303
+ },
304
+ handleHotUpdate: function (_ref2) {
305
+ var modules = _ref2.modules;
306
+
307
+ if (modules.some(function (mod) {
308
+ return mod.meta && mod.meta.isClientComponent;
309
+ })) {
310
+ return modules.filter(function (mod) {
311
+ return !mod.meta || !mod.meta.ssr;
312
+ });
313
+ }
314
+
315
+ return modules;
296
316
  }
297
317
  };
298
318
  }
@@ -462,9 +482,9 @@ function isDirectImportInServer(originalMod, currentMod, accModInfo) {
462
482
  exports: []
463
483
  };
464
484
  lastModImports.forEach(function (mod) {
465
- mod.variables.forEach(function (_ref2) {
466
- var name = _ref2[0],
467
- alias = _ref2[1];
485
+ mod.variables.forEach(function (_ref3) {
486
+ var name = _ref3[0],
487
+ alias = _ref3[1];
468
488
 
469
489
  if (name === '*' && !alias) {
470
490
  var _accModInfo$exports;
@@ -497,8 +517,8 @@ function isDirectImportInServer(originalMod, currentMod, accModInfo) {
497
517
  // the original module before marking it as client boundary.
498
518
 
499
519
  return currentMod.meta.imports.some(function (imp) {
500
- return imp.from === accModInfo.file && (imp.variables || []).some(function (_ref3) {
501
- var name = _ref3[0];
520
+ return imp.from === accModInfo.file && (imp.variables || []).some(function (_ref4) {
521
+ var name = _ref4[0];
502
522
  return accModInfo.exports.includes(name);
503
523
  });
504
524
  });
@@ -536,12 +556,12 @@ function augmentModuleGraph(moduleGraph, id, code, root, resolveAlias) {
536
556
 
537
557
 
538
558
  var imports = [];
539
- rawImports.forEach(function (_ref4) {
540
- var startMod = _ref4.s,
541
- endMod = _ref4.e,
542
- dynamicImportIndex = _ref4.d,
543
- startStatement = _ref4.ss,
544
- endStatement = _ref4.se;
559
+ rawImports.forEach(function (_ref5) {
560
+ var startMod = _ref5.s,
561
+ endMod = _ref5.e,
562
+ dynamicImportIndex = _ref5.d,
563
+ startStatement = _ref5.ss,
564
+ endStatement = _ref5.se;
545
565
  if (dynamicImportIndex !== -1) return; // Skip dynamic imports for now
546
566
 
547
567
  var rawModPath = code.slice(startMod, endMod);
@@ -589,7 +609,8 @@ function augmentModuleGraph(moduleGraph, id, code, root, resolveAlias) {
589
609
  assign(currentModule.meta, {
590
610
  isFacade: isFacade,
591
611
  namedExports: namedExports,
592
- imports: imports
612
+ imports: imports,
613
+ ssr: true
593
614
  });
594
615
  }
595
616