@shopify/hydrogen 0.0.0-experimental-20220526194818

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 (692) hide show
  1. package/CHANGELOG.md +1643 -0
  2. package/README.md +29 -0
  3. package/client.d.ts +1 -0
  4. package/client.js +1 -0
  5. package/config.d.ts +1 -0
  6. package/config.js +1 -0
  7. package/dist/esnext/FileSessionStorage.d.ts +1 -0
  8. package/dist/esnext/FileSessionStorage.js +1 -0
  9. package/dist/esnext/client.d.ts +16 -0
  10. package/dist/esnext/client.js +16 -0
  11. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +23 -0
  12. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +47 -0
  13. package/dist/esnext/components/AddToCartButton/index.d.ts +1 -0
  14. package/dist/esnext/components/AddToCartButton/index.js +1 -0
  15. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.d.ts +18 -0
  16. package/dist/esnext/components/BuyNowButton/BuyNowButton.client.js +26 -0
  17. package/dist/esnext/components/BuyNowButton/index.d.ts +1 -0
  18. package/dist/esnext/components/BuyNowButton/index.js +1 -0
  19. package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.d.ts +11 -0
  20. package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.js +17 -0
  21. package/dist/esnext/components/CartCheckoutButton/index.d.ts +1 -0
  22. package/dist/esnext/components/CartCheckoutButton/index.js +1 -0
  23. package/dist/esnext/components/CartEstimatedCost/CartEstimatedCost.client.d.ts +14 -0
  24. package/dist/esnext/components/CartEstimatedCost/CartEstimatedCost.client.js +29 -0
  25. package/dist/esnext/components/CartEstimatedCost/index.d.ts +1 -0
  26. package/dist/esnext/components/CartEstimatedCost/index.js +1 -0
  27. package/dist/esnext/components/CartLineImage/CartLineImage.client.d.ts +9 -0
  28. package/dist/esnext/components/CartLineImage/CartLineImage.client.js +11 -0
  29. package/dist/esnext/components/CartLineImage/index.d.ts +1 -0
  30. package/dist/esnext/components/CartLineImage/index.js +1 -0
  31. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +12 -0
  32. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +21 -0
  33. package/dist/esnext/components/CartLinePrice/index.d.ts +1 -0
  34. package/dist/esnext/components/CartLinePrice/index.js +1 -0
  35. package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.d.ts +8 -0
  36. package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.js +12 -0
  37. package/dist/esnext/components/CartLineProductTitle/index.d.ts +1 -0
  38. package/dist/esnext/components/CartLineProductTitle/index.js +1 -0
  39. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.d.ts +11 -0
  40. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.js +8 -0
  41. package/dist/esnext/components/CartLineProvider/context.d.ts +26 -0
  42. package/dist/esnext/components/CartLineProvider/context.js +2 -0
  43. package/dist/esnext/components/CartLineProvider/index.d.ts +2 -0
  44. package/dist/esnext/components/CartLineProvider/index.js +2 -0
  45. package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.d.ts +8 -0
  46. package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.js +12 -0
  47. package/dist/esnext/components/CartLineQuantity/index.d.ts +1 -0
  48. package/dist/esnext/components/CartLineQuantity/index.js +1 -0
  49. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.d.ts +14 -0
  50. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.js +24 -0
  51. package/dist/esnext/components/CartLineQuantityAdjustButton/index.d.ts +1 -0
  52. package/dist/esnext/components/CartLineQuantityAdjustButton/index.js +1 -0
  53. package/dist/esnext/components/CartLines/CartLines.d.ts +15 -0
  54. package/dist/esnext/components/CartLines/CartLines.js +17 -0
  55. package/dist/esnext/components/CartLines/index.d.ts +1 -0
  56. package/dist/esnext/components/CartLines/index.js +1 -0
  57. package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +41 -0
  58. package/dist/esnext/components/CartProvider/CartProvider.client.js +523 -0
  59. package/dist/esnext/components/CartProvider/cart-queries.d.ts +10 -0
  60. package/dist/esnext/components/CartProvider/cart-queries.js +191 -0
  61. package/dist/esnext/components/CartProvider/constants.d.ts +2 -0
  62. package/dist/esnext/components/CartProvider/constants.js +2 -0
  63. package/dist/esnext/components/CartProvider/context.d.ts +2 -0
  64. package/dist/esnext/components/CartProvider/context.js +2 -0
  65. package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.d.ts +86 -0
  66. package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.js +1 -0
  67. package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.d.ts +86 -0
  68. package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.js +1 -0
  69. package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.d.ts +85 -0
  70. package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.js +1 -0
  71. package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.d.ts +86 -0
  72. package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.js +1 -0
  73. package/dist/esnext/components/CartProvider/graphql/CartFragment.d.ts +72 -0
  74. package/dist/esnext/components/CartProvider/graphql/CartFragment.js +1 -0
  75. package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.d.ts +86 -0
  76. package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.js +1 -0
  77. package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.d.ts +86 -0
  78. package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.js +1 -0
  79. package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.d.ts +86 -0
  80. package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.js +1 -0
  81. package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.d.ts +86 -0
  82. package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.js +1 -0
  83. package/dist/esnext/components/CartProvider/graphql/CartQuery.d.ts +81 -0
  84. package/dist/esnext/components/CartProvider/graphql/CartQuery.js +1 -0
  85. package/dist/esnext/components/CartProvider/hooks.client.d.ts +15 -0
  86. package/dist/esnext/components/CartProvider/hooks.client.js +62 -0
  87. package/dist/esnext/components/CartProvider/index.d.ts +4 -0
  88. package/dist/esnext/components/CartProvider/index.js +3 -0
  89. package/dist/esnext/components/CartProvider/types.d.ts +102 -0
  90. package/dist/esnext/components/CartProvider/types.js +1 -0
  91. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.d.ts +9 -0
  92. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.js +19 -0
  93. package/dist/esnext/components/CartShopPayButton/index.d.ts +1 -0
  94. package/dist/esnext/components/CartShopPayButton/index.js +1 -0
  95. package/dist/esnext/components/DevTools.client.d.ts +1 -0
  96. package/dist/esnext/components/DevTools.client.js +129 -0
  97. package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +21 -0
  98. package/dist/esnext/components/ExternalVideo/ExternalVideo.js +14 -0
  99. package/dist/esnext/components/ExternalVideo/index.d.ts +1 -0
  100. package/dist/esnext/components/ExternalVideo/index.js +1 -0
  101. package/dist/esnext/components/Image/Image.d.ts +84 -0
  102. package/dist/esnext/components/Image/Image.js +59 -0
  103. package/dist/esnext/components/Image/index.d.ts +2 -0
  104. package/dist/esnext/components/Image/index.js +1 -0
  105. package/dist/esnext/components/Link/Link.client.d.ts +23 -0
  106. package/dist/esnext/components/Link/Link.client.js +135 -0
  107. package/dist/esnext/components/Link/index.d.ts +1 -0
  108. package/dist/esnext/components/Link/index.js +1 -0
  109. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.d.ts +6 -0
  110. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.js +5 -0
  111. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.d.ts +6 -0
  112. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.js +2 -0
  113. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +33 -0
  114. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +44 -0
  115. package/dist/esnext/components/LocalizationProvider/index.d.ts +2 -0
  116. package/dist/esnext/components/LocalizationProvider/index.js +2 -0
  117. package/dist/esnext/components/MediaFile/MediaFile.d.ts +19 -0
  118. package/dist/esnext/components/MediaFile/MediaFile.js +31 -0
  119. package/dist/esnext/components/MediaFile/index.d.ts +1 -0
  120. package/dist/esnext/components/MediaFile/index.js +1 -0
  121. package/dist/esnext/components/Metafield/Metafield.client.d.ts +21 -0
  122. package/dist/esnext/components/Metafield/Metafield.client.js +68 -0
  123. package/dist/esnext/components/Metafield/components/StarRating/StarRating.d.ts +12 -0
  124. package/dist/esnext/components/Metafield/components/StarRating/StarRating.js +48 -0
  125. package/dist/esnext/components/Metafield/components/StarRating/index.d.ts +1 -0
  126. package/dist/esnext/components/Metafield/components/StarRating/index.js +1 -0
  127. package/dist/esnext/components/Metafield/components/index.d.ts +1 -0
  128. package/dist/esnext/components/Metafield/components/index.js +1 -0
  129. package/dist/esnext/components/Metafield/index.d.ts +2 -0
  130. package/dist/esnext/components/Metafield/index.js +1 -0
  131. package/dist/esnext/components/Metafield/types.d.ts +4 -0
  132. package/dist/esnext/components/Metafield/types.js +1 -0
  133. package/dist/esnext/components/ModelViewer/ModelViewer.client.d.ts +128 -0
  134. package/dist/esnext/components/ModelViewer/ModelViewer.client.js +105 -0
  135. package/dist/esnext/components/ModelViewer/index.d.ts +1 -0
  136. package/dist/esnext/components/ModelViewer/index.js +1 -0
  137. package/dist/esnext/components/Money/Money.client.d.ts +25 -0
  138. package/dist/esnext/components/Money/Money.client.js +39 -0
  139. package/dist/esnext/components/Money/index.d.ts +1 -0
  140. package/dist/esnext/components/Money/index.js +1 -0
  141. package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +15 -0
  142. package/dist/esnext/components/ProductPrice/ProductPrice.client.js +56 -0
  143. package/dist/esnext/components/ProductPrice/index.d.ts +1 -0
  144. package/dist/esnext/components/ProductPrice/index.js +1 -0
  145. package/dist/esnext/components/ProductProvider/ProductOptionsProvider.client.d.ts +8 -0
  146. package/dist/esnext/components/ProductProvider/ProductOptionsProvider.client.js +12 -0
  147. package/dist/esnext/components/ProductProvider/ProductProvider.client.d.ts +24 -0
  148. package/dist/esnext/components/ProductProvider/ProductProvider.client.js +34 -0
  149. package/dist/esnext/components/ProductProvider/context.d.ts +29 -0
  150. package/dist/esnext/components/ProductProvider/context.js +3 -0
  151. package/dist/esnext/components/ProductProvider/index.d.ts +2 -0
  152. package/dist/esnext/components/ProductProvider/index.js +2 -0
  153. package/dist/esnext/components/Seo/CollectionSeo.client.d.ts +3 -0
  154. package/dist/esnext/components/Seo/CollectionSeo.client.js +15 -0
  155. package/dist/esnext/components/Seo/DefaultPageSeo.client.d.ts +3 -0
  156. package/dist/esnext/components/Seo/DefaultPageSeo.client.js +18 -0
  157. package/dist/esnext/components/Seo/DescriptionSeo.client.d.ts +4 -0
  158. package/dist/esnext/components/Seo/DescriptionSeo.client.js +10 -0
  159. package/dist/esnext/components/Seo/HomePageSeo.client.d.ts +2 -0
  160. package/dist/esnext/components/Seo/HomePageSeo.client.js +25 -0
  161. package/dist/esnext/components/Seo/ImageSeo.client.d.ts +3 -0
  162. package/dist/esnext/components/Seo/ImageSeo.client.js +10 -0
  163. package/dist/esnext/components/Seo/NoIndexSeo.client.d.ts +3 -0
  164. package/dist/esnext/components/Seo/NoIndexSeo.client.js +10 -0
  165. package/dist/esnext/components/Seo/PageSeo.client.d.ts +3 -0
  166. package/dist/esnext/components/Seo/PageSeo.client.js +13 -0
  167. package/dist/esnext/components/Seo/ProductSeo.client.d.ts +5 -0
  168. package/dist/esnext/components/Seo/ProductSeo.client.js +63 -0
  169. package/dist/esnext/components/Seo/Seo.client.d.ts +30 -0
  170. package/dist/esnext/components/Seo/Seo.client.js +31 -0
  171. package/dist/esnext/components/Seo/TitleSeo.client.d.ts +3 -0
  172. package/dist/esnext/components/Seo/TitleSeo.client.js +10 -0
  173. package/dist/esnext/components/Seo/TwitterSeo.client.d.ts +2 -0
  174. package/dist/esnext/components/Seo/TwitterSeo.client.js +9 -0
  175. package/dist/esnext/components/Seo/index.d.ts +1 -0
  176. package/dist/esnext/components/Seo/index.js +1 -0
  177. package/dist/esnext/components/Seo/seo-types.d.ts +17 -0
  178. package/dist/esnext/components/Seo/seo-types.js +1 -0
  179. package/dist/esnext/components/ShopPayButton/ShopPayButton.client.d.ts +38 -0
  180. package/dist/esnext/components/ShopPayButton/ShopPayButton.client.js +52 -0
  181. package/dist/esnext/components/ShopPayButton/index.d.ts +1 -0
  182. package/dist/esnext/components/ShopPayButton/index.js +1 -0
  183. package/dist/esnext/components/Video/Video.d.ts +14 -0
  184. package/dist/esnext/components/Video/Video.js +24 -0
  185. package/dist/esnext/components/Video/index.d.ts +1 -0
  186. package/dist/esnext/components/Video/index.js +1 -0
  187. package/dist/esnext/components/index.d.ts +28 -0
  188. package/dist/esnext/components/index.js +26 -0
  189. package/dist/esnext/components/types.d.ts +71 -0
  190. package/dist/esnext/components/types.js +10 -0
  191. package/dist/esnext/config.d.ts +3 -0
  192. package/dist/esnext/config.js +1 -0
  193. package/dist/esnext/constants.d.ts +7 -0
  194. package/dist/esnext/constants.js +7 -0
  195. package/dist/esnext/entry-client.d.ts +3 -0
  196. package/dist/esnext/entry-client.js +73 -0
  197. package/dist/esnext/entry-server.d.ts +35 -0
  198. package/dist/esnext/entry-server.js +529 -0
  199. package/dist/esnext/foundation/Analytics/Analytics.client.d.ts +3 -0
  200. package/dist/esnext/foundation/Analytics/Analytics.client.js +28 -0
  201. package/dist/esnext/foundation/Analytics/Analytics.server.d.ts +1 -0
  202. package/dist/esnext/foundation/Analytics/Analytics.server.js +40 -0
  203. package/dist/esnext/foundation/Analytics/ClientAnalytics.d.ts +25 -0
  204. package/dist/esnext/foundation/Analytics/ClientAnalytics.js +97 -0
  205. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.server.d.ts +2 -0
  206. package/dist/esnext/foundation/Analytics/ServerAnalyticsRoute.server.js +33 -0
  207. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetrics.client.d.ts +7 -0
  208. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetrics.client.js +64 -0
  209. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetrics.server.d.ts +1 -0
  210. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetrics.server.js +24 -0
  211. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetricsDebug.client.d.ts +1 -0
  212. package/dist/esnext/foundation/Analytics/connectors/PerformanceMetrics/PerformanceMetricsDebug.client.js +23 -0
  213. package/dist/esnext/foundation/Analytics/const.d.ts +9 -0
  214. package/dist/esnext/foundation/Analytics/const.js +9 -0
  215. package/dist/esnext/foundation/Analytics/hook.d.ts +1 -0
  216. package/dist/esnext/foundation/Analytics/hook.js +7 -0
  217. package/dist/esnext/foundation/Analytics/index.d.ts +2 -0
  218. package/dist/esnext/foundation/Analytics/index.js +2 -0
  219. package/dist/esnext/foundation/Analytics/types.d.ts +5 -0
  220. package/dist/esnext/foundation/Analytics/types.js +1 -0
  221. package/dist/esnext/foundation/Analytics/utils.d.ts +1 -0
  222. package/dist/esnext/foundation/Analytics/utils.js +8 -0
  223. package/dist/esnext/foundation/AnalyticsErrorBoundary.client.d.ts +4 -0
  224. package/dist/esnext/foundation/AnalyticsErrorBoundary.client.js +8 -0
  225. package/dist/esnext/foundation/Cookie/Cookie.d.ts +48 -0
  226. package/dist/esnext/foundation/Cookie/Cookie.js +67 -0
  227. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.d.ts +5 -0
  228. package/dist/esnext/foundation/CookieSessionStorage/CookieSessionStorage.js +31 -0
  229. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.d.ts +22 -0
  230. package/dist/esnext/foundation/FileRoutes/FileRoutes.server.js +74 -0
  231. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.d.ts +6 -0
  232. package/dist/esnext/foundation/FileSessionStorage/FileSessionStorage.js +149 -0
  233. package/dist/esnext/foundation/Head/Head.client.d.ts +5 -0
  234. package/dist/esnext/foundation/Head/Head.client.js +10 -0
  235. package/dist/esnext/foundation/Head/index.d.ts +1 -0
  236. package/dist/esnext/foundation/Head/index.js +1 -0
  237. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.d.ts +5 -0
  238. package/dist/esnext/foundation/MemorySessionStorage/MemorySessionStorage.js +53 -0
  239. package/dist/esnext/foundation/Redirect/Redirect.client.d.ts +5 -0
  240. package/dist/esnext/foundation/Redirect/Redirect.client.js +15 -0
  241. package/dist/esnext/foundation/Route/Route.server.d.ts +12 -0
  242. package/dist/esnext/foundation/Route/Route.server.js +28 -0
  243. package/dist/esnext/foundation/Router/BrowserRouter.client.d.ts +13 -0
  244. package/dist/esnext/foundation/Router/BrowserRouter.client.js +130 -0
  245. package/dist/esnext/foundation/Router/Router.server.d.ts +10 -0
  246. package/dist/esnext/foundation/Router/Router.server.js +8 -0
  247. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.d.ts +40 -0
  248. package/dist/esnext/foundation/ServerPropsProvider/ServerPropsProvider.js +67 -0
  249. package/dist/esnext/foundation/ServerPropsProvider/index.d.ts +2 -0
  250. package/dist/esnext/foundation/ServerPropsProvider/index.js +1 -0
  251. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +23 -0
  252. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.js +128 -0
  253. package/dist/esnext/foundation/ServerRequestProvider/index.d.ts +1 -0
  254. package/dist/esnext/foundation/ServerRequestProvider/index.js +1 -0
  255. package/dist/esnext/foundation/ServerStateProvider/ServerStateProvider.d.ts +30 -0
  256. package/dist/esnext/foundation/ServerStateProvider/ServerStateProvider.js +59 -0
  257. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.d.ts +7 -0
  258. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.js +8 -0
  259. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.d.ts +16 -0
  260. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.js +58 -0
  261. package/dist/esnext/foundation/ShopifyProvider/index.d.ts +1 -0
  262. package/dist/esnext/foundation/ShopifyProvider/index.js +1 -0
  263. package/dist/esnext/foundation/ShopifyProvider/types.d.ts +13 -0
  264. package/dist/esnext/foundation/ShopifyProvider/types.js +1 -0
  265. package/dist/esnext/foundation/constants.d.ts +1 -0
  266. package/dist/esnext/foundation/constants.js +3 -0
  267. package/dist/esnext/foundation/fetchSync/client/fetchSync.d.ts +10 -0
  268. package/dist/esnext/foundation/fetchSync/client/fetchSync.js +28 -0
  269. package/dist/esnext/foundation/fetchSync/server/fetchSync.d.ts +8 -0
  270. package/dist/esnext/foundation/fetchSync/server/fetchSync.js +29 -0
  271. package/dist/esnext/foundation/fetchSync/types.d.ts +5 -0
  272. package/dist/esnext/foundation/fetchSync/types.js +1 -0
  273. package/dist/esnext/foundation/index.d.ts +3 -0
  274. package/dist/esnext/foundation/index.js +3 -0
  275. package/dist/esnext/foundation/session/session.d.ts +27 -0
  276. package/dist/esnext/foundation/session/session.js +37 -0
  277. package/dist/esnext/foundation/ssr-interop.d.ts +29 -0
  278. package/dist/esnext/foundation/ssr-interop.js +35 -0
  279. package/dist/esnext/foundation/useNavigate/useNavigate.d.ts +13 -0
  280. package/dist/esnext/foundation/useNavigate/useNavigate.js +14 -0
  281. package/dist/esnext/foundation/useQuery/hooks.d.ts +36 -0
  282. package/dist/esnext/foundation/useQuery/hooks.js +97 -0
  283. package/dist/esnext/foundation/useQuery/index.d.ts +1 -0
  284. package/dist/esnext/foundation/useQuery/index.js +1 -0
  285. package/dist/esnext/foundation/useRouteParams/RouteParamsProvider.client.d.ts +9 -0
  286. package/dist/esnext/foundation/useRouteParams/RouteParamsProvider.client.js +7 -0
  287. package/dist/esnext/foundation/useRouteParams/useRouteParams.d.ts +4 -0
  288. package/dist/esnext/foundation/useRouteParams/useRouteParams.js +9 -0
  289. package/dist/esnext/foundation/useServerProps/index.d.ts +1 -0
  290. package/dist/esnext/foundation/useServerProps/index.js +1 -0
  291. package/dist/esnext/foundation/useServerProps/use-server-props.d.ts +21 -0
  292. package/dist/esnext/foundation/useServerProps/use-server-props.js +35 -0
  293. package/dist/esnext/foundation/useSession/useSession.d.ts +2 -0
  294. package/dist/esnext/foundation/useSession/useSession.js +8 -0
  295. package/dist/esnext/foundation/useShop/index.d.ts +1 -0
  296. package/dist/esnext/foundation/useShop/index.js +1 -0
  297. package/dist/esnext/foundation/useShop/use-shop.d.ts +6 -0
  298. package/dist/esnext/foundation/useShop/use-shop.js +14 -0
  299. package/dist/esnext/foundation/useUrl/index.d.ts +1 -0
  300. package/dist/esnext/foundation/useUrl/index.js +1 -0
  301. package/dist/esnext/foundation/useUrl/useUrl.d.ts +4 -0
  302. package/dist/esnext/foundation/useUrl/useUrl.js +28 -0
  303. package/dist/esnext/framework/CachingStrategy/index.d.ts +10 -0
  304. package/dist/esnext/framework/CachingStrategy/index.js +96 -0
  305. package/dist/esnext/framework/Hydration/Html.d.ts +11 -0
  306. package/dist/esnext/framework/Hydration/Html.js +86 -0
  307. package/dist/esnext/framework/Hydration/ServerComponentRequest.server.d.ts +58 -0
  308. package/dist/esnext/framework/Hydration/ServerComponentRequest.server.js +146 -0
  309. package/dist/esnext/framework/Hydration/ServerComponentResponse.server.d.ts +26 -0
  310. package/dist/esnext/framework/Hydration/ServerComponentResponse.server.js +42 -0
  311. package/dist/esnext/framework/Hydration/rsc.d.ts +8 -0
  312. package/dist/esnext/framework/Hydration/rsc.js +100 -0
  313. package/dist/esnext/framework/cache/in-memory.d.ts +12 -0
  314. package/dist/esnext/framework/cache/in-memory.js +52 -0
  315. package/dist/esnext/framework/cache-sub-request.d.ts +17 -0
  316. package/dist/esnext/framework/cache-sub-request.js +64 -0
  317. package/dist/esnext/framework/cache.d.ts +17 -0
  318. package/dist/esnext/framework/cache.js +127 -0
  319. package/dist/esnext/framework/config.d.ts +6 -0
  320. package/dist/esnext/framework/config.js +6 -0
  321. package/dist/esnext/framework/graphiql.d.ts +1 -0
  322. package/dist/esnext/framework/graphiql.js +38 -0
  323. package/dist/esnext/framework/middleware.d.ts +21 -0
  324. package/dist/esnext/framework/middleware.js +98 -0
  325. package/dist/esnext/framework/plugin.d.ts +4 -0
  326. package/dist/esnext/framework/plugin.js +28 -0
  327. package/dist/esnext/framework/plugins/vite-plugin-client-imports.d.ts +2 -0
  328. package/dist/esnext/framework/plugins/vite-plugin-client-imports.js +25 -0
  329. package/dist/esnext/framework/plugins/vite-plugin-css-modules-rsc.d.ts +2 -0
  330. package/dist/esnext/framework/plugins/vite-plugin-css-modules-rsc.js +98 -0
  331. package/dist/esnext/framework/plugins/vite-plugin-hydration-auto-import.d.ts +3 -0
  332. package/dist/esnext/framework/plugins/vite-plugin-hydration-auto-import.js +35 -0
  333. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-client-middleware.d.ts +9 -0
  334. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-client-middleware.js +37 -0
  335. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-config.d.ts +3 -0
  336. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-config.js +96 -0
  337. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +11 -0
  338. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.js +110 -0
  339. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -0
  340. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-rsc.js +35 -0
  341. package/dist/esnext/framework/plugins/vite-plugin-platform-entry.d.ts +3 -0
  342. package/dist/esnext/framework/plugins/vite-plugin-platform-entry.js +70 -0
  343. package/dist/esnext/framework/plugins/vite-plugin-purge-query-cache.d.ts +3 -0
  344. package/dist/esnext/framework/plugins/vite-plugin-purge-query-cache.js +11 -0
  345. package/dist/esnext/framework/plugins/vite-plugin-ssr-interop.d.ts +3 -0
  346. package/dist/esnext/framework/plugins/vite-plugin-ssr-interop.js +16 -0
  347. package/dist/esnext/framework/runtime.d.ts +13 -0
  348. package/dist/esnext/framework/runtime.js +27 -0
  349. package/dist/esnext/hooks/index.d.ts +6 -0
  350. package/dist/esnext/hooks/index.js +6 -0
  351. package/dist/esnext/hooks/useCart/index.d.ts +1 -0
  352. package/dist/esnext/hooks/useCart/index.js +1 -0
  353. package/dist/esnext/hooks/useCart/useCart.d.ts +4 -0
  354. package/dist/esnext/hooks/useCart/useCart.js +12 -0
  355. package/dist/esnext/hooks/useCartLine/index.d.ts +1 -0
  356. package/dist/esnext/hooks/useCartLine/index.js +1 -0
  357. package/dist/esnext/hooks/useCartLine/useCartLine.d.ts +29 -0
  358. package/dist/esnext/hooks/useCartLine/useCartLine.js +12 -0
  359. package/dist/esnext/hooks/useCountry/index.d.ts +1 -0
  360. package/dist/esnext/hooks/useCountry/index.js +1 -0
  361. package/dist/esnext/hooks/useCountry/useCountry.d.ts +7 -0
  362. package/dist/esnext/hooks/useCountry/useCountry.js +17 -0
  363. package/dist/esnext/hooks/useLoadScript/index.d.ts +1 -0
  364. package/dist/esnext/hooks/useLoadScript/index.js +1 -0
  365. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.d.ts +8 -0
  366. package/dist/esnext/hooks/useLoadScript/useLoadScript.client.js +23 -0
  367. package/dist/esnext/hooks/useMeasurement/hooks.d.ts +9 -0
  368. package/dist/esnext/hooks/useMeasurement/hooks.js +13 -0
  369. package/dist/esnext/hooks/useMeasurement/index.d.ts +1 -0
  370. package/dist/esnext/hooks/useMeasurement/index.js +1 -0
  371. package/dist/esnext/hooks/useMoney/hooks.d.ts +54 -0
  372. package/dist/esnext/hooks/useMoney/hooks.js +66 -0
  373. package/dist/esnext/hooks/useMoney/index.d.ts +1 -0
  374. package/dist/esnext/hooks/useMoney/index.js +1 -0
  375. package/dist/esnext/hooks/useParsedMetafields/index.d.ts +1 -0
  376. package/dist/esnext/hooks/useParsedMetafields/index.js +1 -0
  377. package/dist/esnext/hooks/useParsedMetafields/useParsedMetafields.d.ts +21 -0
  378. package/dist/esnext/hooks/useParsedMetafields/useParsedMetafields.js +21 -0
  379. package/dist/esnext/hooks/useProduct/index.d.ts +1 -0
  380. package/dist/esnext/hooks/useProduct/index.js +1 -0
  381. package/dist/esnext/hooks/useProduct/useProduct.d.ts +52 -0
  382. package/dist/esnext/hooks/useProduct/useProduct.js +43 -0
  383. package/dist/esnext/hooks/useProductOptions/helpers.d.ts +6 -0
  384. package/dist/esnext/hooks/useProductOptions/helpers.js +40 -0
  385. package/dist/esnext/hooks/useProductOptions/index.d.ts +2 -0
  386. package/dist/esnext/hooks/useProductOptions/index.js +2 -0
  387. package/dist/esnext/hooks/useProductOptions/types.d.ts +42 -0
  388. package/dist/esnext/hooks/useProductOptions/types.js +1 -0
  389. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.d.ts +15 -0
  390. package/dist/esnext/hooks/useProductOptions/useProductOptions.client.js +108 -0
  391. package/dist/esnext/hooks/useShopQuery/hooks.d.ts +28 -0
  392. package/dist/esnext/hooks/useShopQuery/hooks.js +161 -0
  393. package/dist/esnext/hooks/useShopQuery/index.d.ts +1 -0
  394. package/dist/esnext/hooks/useShopQuery/index.js +1 -0
  395. package/dist/esnext/index.d.ts +27 -0
  396. package/dist/esnext/index.js +31 -0
  397. package/dist/esnext/node.d.ts +1 -0
  398. package/dist/esnext/node.js +1 -0
  399. package/dist/esnext/platforms/node.d.ts +9 -0
  400. package/dist/esnext/platforms/node.js +40 -0
  401. package/dist/esnext/platforms/worker-event.d.ts +1 -0
  402. package/dist/esnext/platforms/worker-event.js +3 -0
  403. package/dist/esnext/platforms/worker.d.ts +14 -0
  404. package/dist/esnext/platforms/worker.js +25 -0
  405. package/dist/esnext/storefront-api-types.d.ts +6405 -0
  406. package/dist/esnext/storefront-api-types.js +1763 -0
  407. package/dist/esnext/streaming.server.d.ts +24 -0
  408. package/dist/esnext/streaming.server.js +33 -0
  409. package/dist/esnext/types.d.ts +98 -0
  410. package/dist/esnext/types.js +1 -0
  411. package/dist/esnext/utilities/apiRoutes.d.ts +37 -0
  412. package/dist/esnext/utilities/apiRoutes.js +156 -0
  413. package/dist/esnext/utilities/bot-ua.d.ts +4 -0
  414. package/dist/esnext/utilities/bot-ua.js +61 -0
  415. package/dist/esnext/utilities/defer.d.ts +6 -0
  416. package/dist/esnext/utilities/defer.js +14 -0
  417. package/dist/esnext/utilities/devtools.d.ts +11 -0
  418. package/dist/esnext/utilities/devtools.js +11 -0
  419. package/dist/esnext/utilities/empty-hydrogen-config.d.ts +2 -0
  420. package/dist/esnext/utilities/empty-hydrogen-config.js +2 -0
  421. package/dist/esnext/utilities/error.d.ts +1 -0
  422. package/dist/esnext/utilities/error.js +6 -0
  423. package/dist/esnext/utilities/fetch.d.ts +9 -0
  424. package/dist/esnext/utilities/fetch.js +31 -0
  425. package/dist/esnext/utilities/findRoutePrefix.d.ts +1 -0
  426. package/dist/esnext/utilities/findRoutePrefix.js +17 -0
  427. package/dist/esnext/utilities/flattenConnection/flattenConnection.d.ts +6 -0
  428. package/dist/esnext/utilities/flattenConnection/flattenConnection.js +11 -0
  429. package/dist/esnext/utilities/flattenConnection/index.d.ts +1 -0
  430. package/dist/esnext/utilities/flattenConnection/index.js +1 -0
  431. package/dist/esnext/utilities/graphql-tag.d.ts +1 -0
  432. package/dist/esnext/utilities/graphql-tag.js +6 -0
  433. package/dist/esnext/utilities/graphql-tracker.d.ts +17 -0
  434. package/dist/esnext/utilities/graphql-tracker.js +123 -0
  435. package/dist/esnext/utilities/hash.d.ts +2 -0
  436. package/dist/esnext/utilities/hash.js +7 -0
  437. package/dist/esnext/utilities/html-encoding.d.ts +2 -0
  438. package/dist/esnext/utilities/html-encoding.js +16 -0
  439. package/dist/esnext/utilities/image_size.d.ts +12 -0
  440. package/dist/esnext/utilities/image_size.js +62 -0
  441. package/dist/esnext/utilities/index.d.ts +12 -0
  442. package/dist/esnext/utilities/index.js +12 -0
  443. package/dist/esnext/utilities/isClient/index.d.ts +1 -0
  444. package/dist/esnext/utilities/isClient/index.js +1 -0
  445. package/dist/esnext/utilities/isClient/isClient.d.ts +4 -0
  446. package/dist/esnext/utilities/isClient/isClient.js +6 -0
  447. package/dist/esnext/utilities/isServer/index.d.ts +1 -0
  448. package/dist/esnext/utilities/isServer/index.js +1 -0
  449. package/dist/esnext/utilities/isServer/isServer.d.ts +4 -0
  450. package/dist/esnext/utilities/isServer/isServer.js +7 -0
  451. package/dist/esnext/utilities/load_script.d.ts +3 -0
  452. package/dist/esnext/utilities/load_script.js +23 -0
  453. package/dist/esnext/utilities/log/index.d.ts +4 -0
  454. package/dist/esnext/utilities/log/index.js +4 -0
  455. package/dist/esnext/utilities/log/log-cache-api-status.d.ts +1 -0
  456. package/dist/esnext/utilities/log/log-cache-api-status.js +13 -0
  457. package/dist/esnext/utilities/log/log-cache-header.d.ts +10 -0
  458. package/dist/esnext/utilities/log/log-cache-header.js +30 -0
  459. package/dist/esnext/utilities/log/log-query-timeline.d.ts +12 -0
  460. package/dist/esnext/utilities/log/log-query-timeline.js +83 -0
  461. package/dist/esnext/utilities/log/log.d.ts +22 -0
  462. package/dist/esnext/utilities/log/log.js +66 -0
  463. package/dist/esnext/utilities/log/utils.d.ts +3 -0
  464. package/dist/esnext/utilities/log/utils.js +16 -0
  465. package/dist/esnext/utilities/matchPath.d.ts +10 -0
  466. package/dist/esnext/utilities/matchPath.js +54 -0
  467. package/dist/esnext/utilities/measurement.d.ts +3 -0
  468. package/dist/esnext/utilities/measurement.js +98 -0
  469. package/dist/esnext/utilities/object.d.ts +5 -0
  470. package/dist/esnext/utilities/object.js +7 -0
  471. package/dist/esnext/utilities/parse.d.ts +1 -0
  472. package/dist/esnext/utilities/parse.js +9 -0
  473. package/dist/esnext/utilities/parseMetafieldValue/index.d.ts +1 -0
  474. package/dist/esnext/utilities/parseMetafieldValue/index.js +1 -0
  475. package/dist/esnext/utilities/parseMetafieldValue/parseMetafieldValue.d.ts +6 -0
  476. package/dist/esnext/utilities/parseMetafieldValue/parseMetafieldValue.js +36 -0
  477. package/dist/esnext/utilities/storefrontApi.d.ts +4 -0
  478. package/dist/esnext/utilities/storefrontApi.js +22 -0
  479. package/dist/esnext/utilities/suspense.d.ts +12 -0
  480. package/dist/esnext/utilities/suspense.js +58 -0
  481. package/dist/esnext/utilities/template.d.ts +9 -0
  482. package/dist/esnext/utilities/template.js +23 -0
  483. package/dist/esnext/utilities/timing.d.ts +7 -0
  484. package/dist/esnext/utilities/timing.js +14 -0
  485. package/dist/esnext/utilities/video_parameters.d.ts +47 -0
  486. package/dist/esnext/utilities/video_parameters.js +22 -0
  487. package/dist/esnext/utilities/web-api-polyfill.d.ts +1 -0
  488. package/dist/esnext/utilities/web-api-polyfill.js +19 -0
  489. package/dist/esnext/version.d.ts +1 -0
  490. package/dist/esnext/version.js +1 -0
  491. package/dist/node/components/Image/Image.d.ts +84 -0
  492. package/dist/node/components/Image/Image.js +86 -0
  493. package/dist/node/components/Image/index.d.ts +2 -0
  494. package/dist/node/components/Image/index.js +5 -0
  495. package/dist/node/constants.d.ts +7 -0
  496. package/dist/node/constants.js +10 -0
  497. package/dist/node/entry-server.d.ts +35 -0
  498. package/dist/node/entry-server.js +556 -0
  499. package/dist/node/foundation/Analytics/Analytics.client.d.ts +3 -0
  500. package/dist/node/foundation/Analytics/Analytics.client.js +32 -0
  501. package/dist/node/foundation/Analytics/Analytics.server.d.ts +1 -0
  502. package/dist/node/foundation/Analytics/Analytics.server.js +70 -0
  503. package/dist/node/foundation/Analytics/ClientAnalytics.d.ts +25 -0
  504. package/dist/node/foundation/Analytics/ClientAnalytics.js +100 -0
  505. package/dist/node/foundation/Analytics/ServerAnalyticsRoute.server.d.ts +2 -0
  506. package/dist/node/foundation/Analytics/ServerAnalyticsRoute.server.js +37 -0
  507. package/dist/node/foundation/Analytics/const.d.ts +9 -0
  508. package/dist/node/foundation/Analytics/const.js +12 -0
  509. package/dist/node/foundation/Analytics/hook.d.ts +1 -0
  510. package/dist/node/foundation/Analytics/hook.js +11 -0
  511. package/dist/node/foundation/Analytics/index.d.ts +2 -0
  512. package/dist/node/foundation/Analytics/index.js +7 -0
  513. package/dist/node/foundation/Analytics/types.d.ts +5 -0
  514. package/dist/node/foundation/Analytics/types.js +2 -0
  515. package/dist/node/foundation/Analytics/utils.d.ts +1 -0
  516. package/dist/node/foundation/Analytics/utils.js +12 -0
  517. package/dist/node/foundation/AnalyticsErrorBoundary.client.d.ts +4 -0
  518. package/dist/node/foundation/AnalyticsErrorBoundary.client.js +14 -0
  519. package/dist/node/foundation/Redirect/Redirect.client.d.ts +5 -0
  520. package/dist/node/foundation/Redirect/Redirect.client.js +18 -0
  521. package/dist/node/foundation/Router/BrowserRouter.client.d.ts +13 -0
  522. package/dist/node/foundation/Router/BrowserRouter.client.js +159 -0
  523. package/dist/node/foundation/ServerPropsProvider/ServerPropsProvider.d.ts +40 -0
  524. package/dist/node/foundation/ServerPropsProvider/ServerPropsProvider.js +92 -0
  525. package/dist/node/foundation/ServerPropsProvider/index.d.ts +2 -0
  526. package/dist/node/foundation/ServerPropsProvider/index.js +6 -0
  527. package/dist/node/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +23 -0
  528. package/dist/node/foundation/ServerRequestProvider/ServerRequestProvider.js +158 -0
  529. package/dist/node/foundation/ServerRequestProvider/index.d.ts +1 -0
  530. package/dist/node/foundation/ServerRequestProvider/index.js +17 -0
  531. package/dist/node/foundation/ShopifyProvider/types.d.ts +13 -0
  532. package/dist/node/foundation/ShopifyProvider/types.js +2 -0
  533. package/dist/node/foundation/session/session.d.ts +27 -0
  534. package/dist/node/foundation/session/session.js +43 -0
  535. package/dist/node/foundation/ssr-interop.d.ts +29 -0
  536. package/dist/node/foundation/ssr-interop.js +39 -0
  537. package/dist/node/foundation/useNavigate/useNavigate.d.ts +13 -0
  538. package/dist/node/foundation/useNavigate/useNavigate.js +18 -0
  539. package/dist/node/foundation/useServerProps/use-server-props.d.ts +21 -0
  540. package/dist/node/foundation/useServerProps/use-server-props.js +40 -0
  541. package/dist/node/framework/CachingStrategy/index.d.ts +10 -0
  542. package/dist/node/framework/CachingStrategy/index.js +108 -0
  543. package/dist/node/framework/Hydration/Html.d.ts +11 -0
  544. package/dist/node/framework/Hydration/Html.js +94 -0
  545. package/dist/node/framework/Hydration/ServerComponentRequest.server.d.ts +58 -0
  546. package/dist/node/framework/Hydration/ServerComponentRequest.server.js +150 -0
  547. package/dist/node/framework/Hydration/ServerComponentResponse.server.d.ts +26 -0
  548. package/dist/node/framework/Hydration/ServerComponentResponse.server.js +49 -0
  549. package/dist/node/framework/Hydration/rsc.d.ts +8 -0
  550. package/dist/node/framework/Hydration/rsc.js +103 -0
  551. package/dist/node/framework/cache/in-memory.d.ts +12 -0
  552. package/dist/node/framework/cache/in-memory.js +56 -0
  553. package/dist/node/framework/cache-sub-request.d.ts +17 -0
  554. package/dist/node/framework/cache-sub-request.js +95 -0
  555. package/dist/node/framework/cache.d.ts +17 -0
  556. package/dist/node/framework/cache.js +135 -0
  557. package/dist/node/framework/config.d.ts +6 -0
  558. package/dist/node/framework/config.js +11 -0
  559. package/dist/node/framework/graphiql.d.ts +1 -0
  560. package/dist/node/framework/graphiql.js +42 -0
  561. package/dist/node/framework/middleware.d.ts +21 -0
  562. package/dist/node/framework/middleware.js +125 -0
  563. package/dist/node/framework/plugin.d.ts +4 -0
  564. package/dist/node/framework/plugin.js +33 -0
  565. package/dist/node/framework/plugins/vite-plugin-client-imports.d.ts +2 -0
  566. package/dist/node/framework/plugins/vite-plugin-client-imports.js +28 -0
  567. package/dist/node/framework/plugins/vite-plugin-css-modules-rsc.d.ts +2 -0
  568. package/dist/node/framework/plugins/vite-plugin-css-modules-rsc.js +104 -0
  569. package/dist/node/framework/plugins/vite-plugin-hydration-auto-import.d.ts +3 -0
  570. package/dist/node/framework/plugins/vite-plugin-hydration-auto-import.js +40 -0
  571. package/dist/node/framework/plugins/vite-plugin-hydrogen-client-middleware.d.ts +9 -0
  572. package/dist/node/framework/plugins/vite-plugin-hydrogen-client-middleware.js +39 -0
  573. package/dist/node/framework/plugins/vite-plugin-hydrogen-config.d.ts +3 -0
  574. package/dist/node/framework/plugins/vite-plugin-hydrogen-config.js +98 -0
  575. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +11 -0
  576. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.js +116 -0
  577. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.d.ts +1 -0
  578. package/dist/node/framework/plugins/vite-plugin-hydrogen-rsc.js +41 -0
  579. package/dist/node/framework/plugins/vite-plugin-platform-entry.d.ts +3 -0
  580. package/dist/node/framework/plugins/vite-plugin-platform-entry.js +75 -0
  581. package/dist/node/framework/plugins/vite-plugin-purge-query-cache.d.ts +3 -0
  582. package/dist/node/framework/plugins/vite-plugin-purge-query-cache.js +16 -0
  583. package/dist/node/framework/plugins/vite-plugin-ssr-interop.d.ts +3 -0
  584. package/dist/node/framework/plugins/vite-plugin-ssr-interop.js +18 -0
  585. package/dist/node/framework/runtime.d.ts +13 -0
  586. package/dist/node/framework/runtime.js +35 -0
  587. package/dist/node/storefront-api-types.d.ts +6405 -0
  588. package/dist/node/storefront-api-types.js +1766 -0
  589. package/dist/node/streaming.server.d.ts +24 -0
  590. package/dist/node/streaming.server.js +33 -0
  591. package/dist/node/types.d.ts +98 -0
  592. package/dist/node/types.js +2 -0
  593. package/dist/node/utilities/apiRoutes.d.ts +37 -0
  594. package/dist/node/utilities/apiRoutes.js +163 -0
  595. package/dist/node/utilities/bot-ua.d.ts +4 -0
  596. package/dist/node/utilities/bot-ua.js +65 -0
  597. package/dist/node/utilities/defer.d.ts +6 -0
  598. package/dist/node/utilities/defer.js +18 -0
  599. package/dist/node/utilities/error.d.ts +1 -0
  600. package/dist/node/utilities/error.js +10 -0
  601. package/dist/node/utilities/fetch.d.ts +9 -0
  602. package/dist/node/utilities/fetch.js +37 -0
  603. package/dist/node/utilities/findRoutePrefix.d.ts +1 -0
  604. package/dist/node/utilities/findRoutePrefix.js +21 -0
  605. package/dist/node/utilities/flattenConnection/flattenConnection.d.ts +6 -0
  606. package/dist/node/utilities/flattenConnection/flattenConnection.js +15 -0
  607. package/dist/node/utilities/flattenConnection/index.d.ts +1 -0
  608. package/dist/node/utilities/flattenConnection/index.js +5 -0
  609. package/dist/node/utilities/hash.d.ts +2 -0
  610. package/dist/node/utilities/hash.js +11 -0
  611. package/dist/node/utilities/html-encoding.d.ts +2 -0
  612. package/dist/node/utilities/html-encoding.js +21 -0
  613. package/dist/node/utilities/image_size.d.ts +12 -0
  614. package/dist/node/utilities/image_size.js +68 -0
  615. package/dist/node/utilities/index.d.ts +12 -0
  616. package/dist/node/utilities/index.js +34 -0
  617. package/dist/node/utilities/isClient/index.d.ts +1 -0
  618. package/dist/node/utilities/isClient/index.js +5 -0
  619. package/dist/node/utilities/isClient/isClient.d.ts +4 -0
  620. package/dist/node/utilities/isClient/isClient.js +10 -0
  621. package/dist/node/utilities/isServer/index.d.ts +1 -0
  622. package/dist/node/utilities/isServer/index.js +5 -0
  623. package/dist/node/utilities/isServer/isServer.d.ts +4 -0
  624. package/dist/node/utilities/isServer/isServer.js +11 -0
  625. package/dist/node/utilities/load_script.d.ts +3 -0
  626. package/dist/node/utilities/load_script.js +27 -0
  627. package/dist/node/utilities/log/index.d.ts +4 -0
  628. package/dist/node/utilities/log/index.js +18 -0
  629. package/dist/node/utilities/log/log-cache-api-status.d.ts +1 -0
  630. package/dist/node/utilities/log/log-cache-api-status.js +17 -0
  631. package/dist/node/utilities/log/log-cache-header.d.ts +10 -0
  632. package/dist/node/utilities/log/log-cache-header.js +35 -0
  633. package/dist/node/utilities/log/log-query-timeline.d.ts +12 -0
  634. package/dist/node/utilities/log/log-query-timeline.js +88 -0
  635. package/dist/node/utilities/log/log.d.ts +22 -0
  636. package/dist/node/utilities/log/log.js +74 -0
  637. package/dist/node/utilities/log/utils.d.ts +3 -0
  638. package/dist/node/utilities/log/utils.js +21 -0
  639. package/dist/node/utilities/matchPath.d.ts +10 -0
  640. package/dist/node/utilities/matchPath.js +58 -0
  641. package/dist/node/utilities/measurement.d.ts +3 -0
  642. package/dist/node/utilities/measurement.js +103 -0
  643. package/dist/node/utilities/parse.d.ts +1 -0
  644. package/dist/node/utilities/parse.js +13 -0
  645. package/dist/node/utilities/parseMetafieldValue/index.d.ts +1 -0
  646. package/dist/node/utilities/parseMetafieldValue/index.js +5 -0
  647. package/dist/node/utilities/parseMetafieldValue/parseMetafieldValue.d.ts +6 -0
  648. package/dist/node/utilities/parseMetafieldValue/parseMetafieldValue.js +40 -0
  649. package/dist/node/utilities/storefrontApi.d.ts +4 -0
  650. package/dist/node/utilities/storefrontApi.js +26 -0
  651. package/dist/node/utilities/suspense.d.ts +12 -0
  652. package/dist/node/utilities/suspense.js +64 -0
  653. package/dist/node/utilities/template.d.ts +9 -0
  654. package/dist/node/utilities/template.js +27 -0
  655. package/dist/node/utilities/timing.d.ts +7 -0
  656. package/dist/node/utilities/timing.js +18 -0
  657. package/dist/node/utilities/video_parameters.d.ts +47 -0
  658. package/dist/node/utilities/video_parameters.js +27 -0
  659. package/dist/node/utilities/web-api-polyfill.d.ts +1 -0
  660. package/dist/node/utilities/web-api-polyfill.js +47 -0
  661. package/dist/node/version.d.ts +1 -0
  662. package/dist/node/version.js +4 -0
  663. package/entry-client.d.ts +1 -0
  664. package/entry-client.js +1 -0
  665. package/entry-server.d.ts +1 -0
  666. package/entry-server.js +1 -0
  667. package/middleware.d.ts +1 -0
  668. package/middleware.js +1 -0
  669. package/package.json +125 -0
  670. package/plugin.d.ts +1 -0
  671. package/plugin.js +1 -0
  672. package/vendor/react-server-dom-vite/LICENSE +21 -0
  673. package/vendor/react-server-dom-vite/README.md +5 -0
  674. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-plugin.js +356 -0
  675. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.browser.development.server.js +1753 -0
  676. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.browser.production.min.server.js +46 -0
  677. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.node.development.server.js +1716 -0
  678. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.node.production.min.server.js +44 -0
  679. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite.development.js +613 -0
  680. package/vendor/react-server-dom-vite/cjs/react-server-dom-vite.production.min.js +19 -0
  681. package/vendor/react-server-dom-vite/esm/package.json +3 -0
  682. package/vendor/react-server-dom-vite/esm/react-server-dom-vite-client-proxy.js +88 -0
  683. package/vendor/react-server-dom-vite/esm/react-server-dom-vite-plugin.js +352 -0
  684. package/vendor/react-server-dom-vite/esm/react-server-dom-vite-writer.browser.server.js +1745 -0
  685. package/vendor/react-server-dom-vite/esm/react-server-dom-vite-writer.node.server.js +1708 -0
  686. package/vendor/react-server-dom-vite/esm/react-server-dom-vite.js +603 -0
  687. package/vendor/react-server-dom-vite/index.js +7 -0
  688. package/vendor/react-server-dom-vite/package.json +67 -0
  689. package/vendor/react-server-dom-vite/plugin.js +3 -0
  690. package/vendor/react-server-dom-vite/writer.browser.server.js +7 -0
  691. package/vendor/react-server-dom-vite/writer.node.server.js +7 -0
  692. package/web-polyfills.js +1 -0
@@ -0,0 +1,146 @@
1
+ import { getTime } from '../../utilities/timing';
2
+ import { hashKey } from '../../utilities/hash';
3
+ import { HelmetData as HeadData } from 'react-helmet-async';
4
+ import { RSC_PATHNAME } from '../../constants';
5
+ import { parseJSON } from '../../utilities/parse';
6
+ let reqCounter = 0; // For debugging
7
+ const generateId = typeof crypto !== 'undefined' &&
8
+ // @ts-ignore
9
+ !!crypto.randomUUID
10
+ ? // @ts-ignore
11
+ () => crypto.randomUUID()
12
+ : () => `req${++reqCounter}`;
13
+ // Stores queries by url or '*'
14
+ const preloadCache = new Map();
15
+ const PRELOAD_ALL = '*';
16
+ /**
17
+ * This augments the `Request` object from the Fetch API:
18
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Request
19
+ *
20
+ * - Adds a `cookies` map for easy access
21
+ * - Adds a static constructor to convert a Node.js `IncomingMessage` to a Request.
22
+ */
23
+ export class ServerComponentRequest extends Request {
24
+ constructor(input, init) {
25
+ if (input instanceof Request) {
26
+ super(input, init);
27
+ }
28
+ else {
29
+ super(getUrlFromNodeRequest(input), getInitFromNodeRequest(input));
30
+ }
31
+ this.time = getTime();
32
+ this.id = generateId();
33
+ this.normalizedUrl = this.isRscRequest()
34
+ ? normalizeUrl(this.url)
35
+ : this.url;
36
+ this.ctx = {
37
+ cache: new Map(),
38
+ head: new HeadData({}),
39
+ router: {
40
+ routeRendered: false,
41
+ serverProps: {},
42
+ routeParams: {},
43
+ },
44
+ queryCacheControl: [],
45
+ queryTimings: [],
46
+ analyticsData: {
47
+ url: this.url,
48
+ normalizedRscUrl: this.normalizedUrl,
49
+ },
50
+ preloadQueries: new Map(),
51
+ };
52
+ this.cookies = this.parseCookies();
53
+ }
54
+ parseCookies() {
55
+ const cookieString = this.headers.get('cookie') || '';
56
+ return new Map(cookieString
57
+ .split(';')
58
+ .map((chunk) => chunk.trim())
59
+ .filter((chunk) => chunk !== '')
60
+ .map((chunk) => chunk.split(/=(.+)/)));
61
+ }
62
+ isRscRequest() {
63
+ const url = new URL(this.url);
64
+ return url.pathname === RSC_PATHNAME;
65
+ }
66
+ savePreloadQuery(query) {
67
+ if (typeof query.preload === 'string' && query.preload === PRELOAD_ALL) {
68
+ saveToPreloadAllPreload(query);
69
+ }
70
+ else if (query.preload) {
71
+ this.ctx.preloadQueries.set(hashKey(query.key), query);
72
+ }
73
+ }
74
+ getPreloadQueries() {
75
+ if (preloadCache.has(this.normalizedUrl)) {
76
+ const combinedPreloadQueries = new Map();
77
+ const urlPreloadCache = preloadCache.get(this.normalizedUrl);
78
+ mergeMapEntries(combinedPreloadQueries, urlPreloadCache);
79
+ mergeMapEntries(combinedPreloadQueries, preloadCache.get(PRELOAD_ALL));
80
+ return combinedPreloadQueries;
81
+ }
82
+ else if (preloadCache.has(PRELOAD_ALL)) {
83
+ return preloadCache.get(PRELOAD_ALL);
84
+ }
85
+ }
86
+ savePreloadQueries() {
87
+ preloadCache.set(this.normalizedUrl, this.ctx.preloadQueries);
88
+ }
89
+ /**
90
+ * Buyer IP varies by hosting provider and runtime. The developer should provide this
91
+ * as an argument to the `handleRequest` function for their runtime.
92
+ * Defaults to `x-forwarded-for` header value.
93
+ */
94
+ getBuyerIp() {
95
+ var _a;
96
+ return this.headers.get((_a = this.ctx.buyerIpHeader) !== null && _a !== void 0 ? _a : 'x-forwarded-for');
97
+ }
98
+ }
99
+ function mergeMapEntries(map1, map2) {
100
+ map2 && map2.forEach((v, k) => map1.set(k, v));
101
+ }
102
+ function saveToPreloadAllPreload(query) {
103
+ let setCache = preloadCache.get(PRELOAD_ALL);
104
+ if (!setCache) {
105
+ setCache = new Map();
106
+ }
107
+ setCache === null || setCache === void 0 ? void 0 : setCache.set(hashKey(query.key), query);
108
+ preloadCache.set(PRELOAD_ALL, setCache);
109
+ }
110
+ /**
111
+ * @see https://github.com/frandiox/vitedge/blob/17f3cd943e86d7c0c71a862985ddd6caa2899425/src/node/utils.js#L19-L24
112
+ *
113
+ * Note: Request can sometimes be an instance of Express request, where `originalUrl` is the true source of what the
114
+ * URL pathname is. We want to use that if it's present, so we union type this to `any`.
115
+ */
116
+ function getUrlFromNodeRequest(request) {
117
+ var _a;
118
+ const url = (_a = request.originalUrl) !== null && _a !== void 0 ? _a : request.url;
119
+ if (url && !url.startsWith('/'))
120
+ return url;
121
+ // TODO: Find out how to determine https from `request` object without forwarded proto
122
+ const secure = request.headers['x-forwarded-proto'] === 'https';
123
+ return new URL(`${secure ? 'https' : 'http'}://${request.headers.host + url}`).toString();
124
+ }
125
+ function getInitFromNodeRequest(request) {
126
+ const init = {
127
+ headers: new Headers(request.headers),
128
+ method: request.method,
129
+ body: request.method !== 'GET' && request.method !== 'HEAD'
130
+ ? request.body
131
+ : undefined,
132
+ };
133
+ const remoteAddress = request.socket.remoteAddress;
134
+ if (!init.headers.has('x-forwarded-for') && remoteAddress) {
135
+ init.headers.set('x-forwarded-for', remoteAddress);
136
+ }
137
+ return init;
138
+ }
139
+ function normalizeUrl(rawUrl) {
140
+ var _a, _b;
141
+ const url = new URL(rawUrl);
142
+ const state = parseJSON((_a = url.searchParams.get('state')) !== null && _a !== void 0 ? _a : '');
143
+ const normalizedUrl = new URL((_b = state === null || state === void 0 ? void 0 : state.pathname) !== null && _b !== void 0 ? _b : '', url.origin);
144
+ normalizedUrl.search = state === null || state === void 0 ? void 0 : state.search;
145
+ return normalizedUrl.toString();
146
+ }
@@ -0,0 +1,26 @@
1
+ import type { CachingStrategy } from '../../types';
2
+ import React from 'react';
3
+ export declare class ServerComponentResponse extends Response {
4
+ private wait;
5
+ private cacheOptions;
6
+ customStatus?: {
7
+ code?: number;
8
+ text?: string;
9
+ };
10
+ /**
11
+ * Buffer the current response until all queries have resolved,
12
+ * and prevent it from streaming back early.
13
+ */
14
+ doNotStream(): void;
15
+ canStream(): boolean;
16
+ cache(options: CachingStrategy): void;
17
+ get cacheControlHeader(): string;
18
+ writeHead({ status, statusText, headers, }?: {
19
+ status?: number;
20
+ statusText?: string;
21
+ headers?: Record<string, any>;
22
+ }): void;
23
+ redirect(location: string, status?: number): React.FunctionComponentElement<{
24
+ to: string;
25
+ }>;
26
+ }
@@ -0,0 +1,42 @@
1
+ import { CacheSeconds, generateCacheControlHeader } from '../CachingStrategy';
2
+ import Redirect from '../../foundation/Redirect/Redirect.client';
3
+ import React from 'react';
4
+ export class ServerComponentResponse extends Response {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.wait = false;
8
+ this.cacheOptions = CacheSeconds();
9
+ }
10
+ /**
11
+ * Buffer the current response until all queries have resolved,
12
+ * and prevent it from streaming back early.
13
+ */
14
+ doNotStream() {
15
+ this.wait = true;
16
+ }
17
+ canStream() {
18
+ return !this.wait;
19
+ }
20
+ cache(options) {
21
+ this.cacheOptions = options;
22
+ }
23
+ get cacheControlHeader() {
24
+ return generateCacheControlHeader(this.cacheOptions);
25
+ }
26
+ writeHead({ status, statusText, headers, } = {}) {
27
+ if (status || statusText) {
28
+ this.customStatus = { code: status, text: statusText };
29
+ }
30
+ if (headers) {
31
+ for (const [key, value] of Object.entries(headers)) {
32
+ this.headers.set(key, value);
33
+ }
34
+ }
35
+ }
36
+ redirect(location, status = 307) {
37
+ // writeHead is used for SSR, so that the server responds with a redirect
38
+ this.writeHead({ status, headers: { location } });
39
+ // in the case of an RSC request, instead render a client component that will redirect
40
+ return React.createElement(Redirect, { to: location });
41
+ }
42
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Much of this is borrowed from React's demo implementation:
3
+ * @see https://github.com/reactjs/server-components-demo/blob/main/src/Cache.client.js
4
+ *
5
+ * Note that we'd want to add some other constraints and controls around caching here.
6
+ */
7
+ export declare function useServerResponse(state: any): any;
8
+ export declare function useRefresh(): void;
@@ -0,0 +1,100 @@
1
+ // TODO should we move this file to src/foundation
2
+ // so it is considered ESM instead of CJS?
3
+ import { createFromFetch, createFromReadableStream,
4
+ // @ts-ignore
5
+ } from '@shopify/hydrogen/vendor/react-server-dom-vite';
6
+ import { RSC_PATHNAME } from '../../constants';
7
+ import { htmlDecode } from '../../utilities';
8
+ let rscReader;
9
+ // Hydrate an SSR response from <meta> tags placed in the DOM.
10
+ const flightChunks = [];
11
+ const FLIGHT_ATTRIBUTE = 'data-flight';
12
+ function addElementToFlightChunks(el) {
13
+ const chunk = el.getAttribute(FLIGHT_ATTRIBUTE);
14
+ if (chunk) {
15
+ flightChunks.push(htmlDecode(chunk));
16
+ }
17
+ }
18
+ // Get initial payload
19
+ document
20
+ .querySelectorAll('[' + FLIGHT_ATTRIBUTE + ']')
21
+ .forEach(addElementToFlightChunks);
22
+ // Create a mutation observer on the document to detect when new
23
+ // <meta data-flight> tags are added, and add them to the array.
24
+ const observer = new MutationObserver((mutations) => {
25
+ mutations.forEach((mutation) => {
26
+ mutation.addedNodes.forEach((node) => {
27
+ if (node instanceof HTMLElement &&
28
+ node.tagName === 'META' &&
29
+ node.hasAttribute(FLIGHT_ATTRIBUTE)) {
30
+ addElementToFlightChunks(node);
31
+ }
32
+ });
33
+ });
34
+ });
35
+ observer.observe(document.documentElement, {
36
+ childList: true,
37
+ subtree: true,
38
+ });
39
+ if (flightChunks.length > 0) {
40
+ const contentLoaded = new Promise((resolve) => document.addEventListener('DOMContentLoaded', resolve));
41
+ try {
42
+ rscReader = new ReadableStream({
43
+ start(controller) {
44
+ const encoder = new TextEncoder();
45
+ const write = (chunk) => {
46
+ controller.enqueue(encoder.encode(chunk));
47
+ return 0;
48
+ };
49
+ flightChunks.forEach(write);
50
+ flightChunks.push = write;
51
+ contentLoaded.then(() => {
52
+ controller.close();
53
+ observer.disconnect();
54
+ });
55
+ },
56
+ });
57
+ }
58
+ catch (_) {
59
+ // Old browser, will try a new hydration request later
60
+ }
61
+ }
62
+ const cache = new Map();
63
+ /**
64
+ * Much of this is borrowed from React's demo implementation:
65
+ * @see https://github.com/reactjs/server-components-demo/blob/main/src/Cache.client.js
66
+ *
67
+ * Note that we'd want to add some other constraints and controls around caching here.
68
+ */
69
+ export function useServerResponse(state) {
70
+ const key = JSON.stringify(state);
71
+ let response = cache.get(key);
72
+ if (response) {
73
+ return response;
74
+ }
75
+ if (rscReader) {
76
+ // The flight response was inlined during SSR, use it directly.
77
+ response = createFromReadableStream(rscReader);
78
+ rscReader = null;
79
+ }
80
+ else {
81
+ if (
82
+ /* @ts-ignore */
83
+ window.BOOMR &&
84
+ /* @ts-ignore */
85
+ window.BOOMR.plugins &&
86
+ /* @ts-ignore */
87
+ window.BOOMR.plugins.Hydrogen) {
88
+ /* @ts-ignore */
89
+ window.BOOMR.plugins.Hydrogen.trackSubPageLoadPerformance();
90
+ }
91
+ // Request a new flight response.
92
+ response = createFromFetch(fetch(`${RSC_PATHNAME}?state=` + encodeURIComponent(key)));
93
+ }
94
+ cache.clear();
95
+ cache.set(key, response);
96
+ return response;
97
+ }
98
+ export function useRefresh() {
99
+ cache.clear();
100
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * This is an in-memory implementation of `Cache` that *barely*
3
+ * works and is only meant to be used during development.
4
+ */
5
+ export declare class InMemoryCache {
6
+ private store;
7
+ constructor();
8
+ put(request: Request, response: Response): void;
9
+ match(request: Request): Response | undefined;
10
+ delete(request: Request): void;
11
+ keys(request?: Request): Promise<Request[]>;
12
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * This is an in-memory implementation of `Cache` that *barely*
3
+ * works and is only meant to be used during development.
4
+ */
5
+ export class InMemoryCache {
6
+ constructor() {
7
+ this.store = new Map();
8
+ }
9
+ put(request, response) {
10
+ this.store.set(request.url, {
11
+ value: response,
12
+ date: new Date(),
13
+ });
14
+ }
15
+ match(request) {
16
+ var _a, _b;
17
+ const match = this.store.get(request.url);
18
+ if (!match) {
19
+ return;
20
+ }
21
+ const { value, date } = match;
22
+ const cacheControl = value.headers.get('cache-control') || '';
23
+ const maxAge = parseInt(((_a = cacheControl.match(/max-age=(\d+)/)) === null || _a === void 0 ? void 0 : _a[1]) || '0', 10);
24
+ const swr = parseInt(((_b = cacheControl.match(/stale-while-revalidate=(\d+)/)) === null || _b === void 0 ? void 0 : _b[1]) || '0', 10);
25
+ const age = (new Date().valueOf() - date.valueOf()) / 1000;
26
+ const isMiss = age > maxAge + swr;
27
+ if (isMiss) {
28
+ this.store.delete(request.url);
29
+ return;
30
+ }
31
+ const isStale = age > maxAge;
32
+ const headers = new Headers(value.headers);
33
+ headers.set('cache', isStale ? 'STALE' : 'HIT');
34
+ headers.set('date', date.toUTCString());
35
+ const response = new Response(value.body, {
36
+ headers,
37
+ });
38
+ return response;
39
+ }
40
+ delete(request) {
41
+ this.store.delete(request.url);
42
+ }
43
+ keys(request) {
44
+ const cacheKeys = [];
45
+ for (const url of this.store.keys()) {
46
+ if (!request || request.url === url) {
47
+ cacheKeys.push(new Request(url));
48
+ }
49
+ }
50
+ return Promise.resolve(cacheKeys);
51
+ }
52
+ }
@@ -0,0 +1,17 @@
1
+ import type { QueryKey, CachingStrategy } from '../types';
2
+ export declare function generateSubRequestCacheControlHeader(userCacheOptions?: CachingStrategy): string;
3
+ /**
4
+ * Get an item from the cache. If a match is found, returns a tuple
5
+ * containing the `JSON.parse` version of the response as well
6
+ * as the response itself so it can be checked for staleness.
7
+ */
8
+ export declare function getItemFromCache(key: QueryKey): Promise<undefined | [any, Response]>;
9
+ /**
10
+ * Put an item into the cache.
11
+ */
12
+ export declare function setItemInCache(key: QueryKey, value: any, userCacheOptions?: CachingStrategy): Promise<void>;
13
+ export declare function deleteItemFromCache(key: QueryKey): Promise<void>;
14
+ /**
15
+ * Manually check the response to see if it's stale.
16
+ */
17
+ export declare function isStale(key: QueryKey, response: Response): boolean;
@@ -0,0 +1,64 @@
1
+ import { getCache } from './runtime';
2
+ import { hashKey } from '../utilities/hash';
3
+ import * as CacheApi from './cache';
4
+ import { CacheSeconds } from './CachingStrategy';
5
+ /**
6
+ * Wrapper Cache functions for sub queries
7
+ */
8
+ /**
9
+ * Cache API is weird. We just need a full URL, so we make one up.
10
+ */
11
+ function getKeyUrl(key) {
12
+ return `https://shopify.dev/?${key}`;
13
+ }
14
+ function getCacheOption(userCacheOptions) {
15
+ return userCacheOptions || CacheSeconds();
16
+ }
17
+ export function generateSubRequestCacheControlHeader(userCacheOptions) {
18
+ return CacheApi.generateDefaultCacheControlHeader(getCacheOption(userCacheOptions));
19
+ }
20
+ /**
21
+ * Get an item from the cache. If a match is found, returns a tuple
22
+ * containing the `JSON.parse` version of the response as well
23
+ * as the response itself so it can be checked for staleness.
24
+ */
25
+ export async function getItemFromCache(key) {
26
+ const cache = getCache();
27
+ if (!cache) {
28
+ return;
29
+ }
30
+ const url = getKeyUrl(hashKey(key));
31
+ const request = new Request(url);
32
+ const response = await CacheApi.getItemFromCache(request);
33
+ if (!response) {
34
+ return;
35
+ }
36
+ return [await response.json(), response];
37
+ }
38
+ /**
39
+ * Put an item into the cache.
40
+ */
41
+ export async function setItemInCache(key, value, userCacheOptions) {
42
+ const cache = getCache();
43
+ if (!cache) {
44
+ return;
45
+ }
46
+ const url = getKeyUrl(hashKey(key));
47
+ const request = new Request(url);
48
+ const response = new Response(JSON.stringify(value));
49
+ await CacheApi.setItemInCache(request, response, getCacheOption(userCacheOptions));
50
+ }
51
+ export async function deleteItemFromCache(key) {
52
+ const cache = getCache();
53
+ if (!cache)
54
+ return;
55
+ const url = getKeyUrl(hashKey(key));
56
+ const request = new Request(url);
57
+ await CacheApi.deleteItemFromCache(request);
58
+ }
59
+ /**
60
+ * Manually check the response to see if it's stale.
61
+ */
62
+ export function isStale(key, response) {
63
+ return CacheApi.isStale(new Request(getKeyUrl(hashKey(key))), response);
64
+ }
@@ -0,0 +1,17 @@
1
+ import type { CachingStrategy } from '../types';
2
+ export declare function generateDefaultCacheControlHeader(userCacheOptions?: CachingStrategy): string;
3
+ /**
4
+ * Get an item from the cache. If a match is found, returns a tuple
5
+ * containing the `JSON.parse` version of the response as well
6
+ * as the response itself so it can be checked for staleness.
7
+ */
8
+ export declare function getItemFromCache(request: Request): Promise<Response | undefined>;
9
+ /**
10
+ * Put an item into the cache.
11
+ */
12
+ export declare function setItemInCache(request: Request, response: Response, userCacheOptions: CachingStrategy): Promise<void>;
13
+ export declare function deleteItemFromCache(request: Request): Promise<void>;
14
+ /**
15
+ * Manually check the response to see if it's stale.
16
+ */
17
+ export declare function isStale(request: Request, response: Response): boolean;
@@ -0,0 +1,127 @@
1
+ import { getCache } from './runtime';
2
+ import { CacheSeconds, generateCacheControlHeader, } from '../framework/CachingStrategy';
3
+ import { logCacheApiStatus } from '../utilities/log';
4
+ function getCacheControlSetting(userCacheOptions, options) {
5
+ if (userCacheOptions && options) {
6
+ return {
7
+ ...userCacheOptions,
8
+ ...options,
9
+ };
10
+ }
11
+ else {
12
+ return userCacheOptions || CacheSeconds();
13
+ }
14
+ }
15
+ export function generateDefaultCacheControlHeader(userCacheOptions) {
16
+ return generateCacheControlHeader(getCacheControlSetting(userCacheOptions));
17
+ }
18
+ /**
19
+ * Get an item from the cache. If a match is found, returns a tuple
20
+ * containing the `JSON.parse` version of the response as well
21
+ * as the response itself so it can be checked for staleness.
22
+ */
23
+ export async function getItemFromCache(request) {
24
+ const cache = getCache();
25
+ if (!cache) {
26
+ return;
27
+ }
28
+ const response = await cache.match(request);
29
+ if (!response) {
30
+ logCacheApiStatus('MISS', request.url);
31
+ return;
32
+ }
33
+ logCacheApiStatus('HIT', request.url);
34
+ return response;
35
+ }
36
+ /**
37
+ * Put an item into the cache.
38
+ */
39
+ export async function setItemInCache(request, response, userCacheOptions) {
40
+ const cache = getCache();
41
+ if (!cache) {
42
+ return;
43
+ }
44
+ /**
45
+ * We are manually managing staled request by adding this workaround.
46
+ * Why? cache control header support is dependent on hosting platform
47
+ *
48
+ * For example:
49
+ *
50
+ * Cloudflare's Cache API does not support `stale-while-revalidate`.
51
+ * Cloudflare cache control header has a very odd behaviour.
52
+ * Say we have the following cache control header on a request:
53
+ *
54
+ * public, max-age=15, stale-while-revalidate=30
55
+ *
56
+ * When there is a cache.match HIT, the cache control header would become
57
+ *
58
+ * public, max-age=14400, stale-while-revalidate=30
59
+ *
60
+ * == `stale-while-revalidate` workaround ==
61
+ * Update response max-age so that:
62
+ *
63
+ * max-age = max-age + stale-while-revalidate
64
+ *
65
+ * For example:
66
+ *
67
+ * public, max-age=1, stale-while-revalidate=9
68
+ * |
69
+ * V
70
+ * public, max-age=10, stale-while-revalidate=9
71
+ *
72
+ * Store the following information in the response header:
73
+ *
74
+ * cache-put-date - UTC time string of when this request is PUT into cache
75
+ *
76
+ * Note on `cache-put-date`: The `response.headers.get('date')` isn't static. I am
77
+ * not positive what date this is returning but it is never over 500 ms
78
+ * after subtracting from the current timestamp.
79
+ *
80
+ * `isStale` function will use the above information to test for stale-ness of a cached response
81
+ */
82
+ const cacheControl = getCacheControlSetting(userCacheOptions);
83
+ // The padded cache-control to mimic stale-while-revalidate
84
+ request.headers.set('cache-control', generateDefaultCacheControlHeader(getCacheControlSetting(cacheControl, {
85
+ maxAge: (cacheControl.maxAge || 0) + (cacheControl.staleWhileRevalidate || 0),
86
+ })));
87
+ // The cache-control we want to set on response
88
+ const cacheControlString = generateDefaultCacheControlHeader(getCacheControlSetting(cacheControl));
89
+ // CF will override cache-control, so we need to keep a
90
+ // non-modified real-cache-control
91
+ response.headers.set('cache-control', cacheControlString);
92
+ response.headers.set('real-cache-control', cacheControlString);
93
+ response.headers.set('cache-put-date', new Date().toUTCString());
94
+ logCacheApiStatus('PUT', request.url);
95
+ await cache.put(request, response);
96
+ }
97
+ export async function deleteItemFromCache(request) {
98
+ const cache = getCache();
99
+ if (!cache)
100
+ return;
101
+ logCacheApiStatus('DELETE', request.url);
102
+ await cache.delete(request);
103
+ }
104
+ /**
105
+ * Manually check the response to see if it's stale.
106
+ */
107
+ export function isStale(request, response) {
108
+ const responseDate = response.headers.get('cache-put-date');
109
+ const cacheControl = response.headers.get('real-cache-control');
110
+ let responseMaxAge = 0;
111
+ if (cacheControl) {
112
+ const maxAgeMatch = cacheControl.match(/max-age=(\d*)/);
113
+ if (maxAgeMatch && maxAgeMatch.length > 1) {
114
+ responseMaxAge = parseFloat(maxAgeMatch[1]);
115
+ }
116
+ }
117
+ if (!responseDate) {
118
+ return false;
119
+ }
120
+ const ageInMs = new Date().valueOf() - new Date(responseDate).valueOf();
121
+ const age = ageInMs / 1000;
122
+ const result = age > responseMaxAge;
123
+ if (result) {
124
+ logCacheApiStatus('STALE', request.url);
125
+ }
126
+ return result;
127
+ }
@@ -0,0 +1,6 @@
1
+ declare type HydrogenConfig = {
2
+ dev?: boolean;
3
+ };
4
+ export declare function setConfig(config: HydrogenConfig): void;
5
+ export declare function getConfig(): HydrogenConfig;
6
+ export {};
@@ -0,0 +1,6 @@
1
+ export function setConfig(config) {
2
+ globalThis.__config = config;
3
+ }
4
+ export function getConfig() {
5
+ return globalThis.__config || {};
6
+ }
@@ -0,0 +1 @@
1
+ export declare function graphiqlHtml(shop: string, token: string, apiVersion: string): string;
@@ -0,0 +1,38 @@
1
+ export function graphiqlHtml(shop, token, apiVersion) {
2
+ return `<html>
3
+ <head>
4
+ <title>Shopify Storefront API</title>
5
+ <link href="https://unpkg.com/graphiql/graphiql.min.css" rel="stylesheet" />
6
+ </head>
7
+ <body style="margin: 0;">
8
+ <div id="graphiql" style="height: 100vh;"></div>
9
+ <script
10
+ crossorigin
11
+ src="https://unpkg.com/react/umd/react.production.min.js"
12
+ ></script>
13
+ <script
14
+ crossorigin
15
+ src="https://unpkg.com/react-dom/umd/react-dom.production.min.js"
16
+ ></script>
17
+ <script
18
+ crossorigin
19
+ src="https://unpkg.com/graphiql/graphiql.min.js"
20
+ ></script>
21
+ <script>
22
+ const fetcher = GraphiQL.createFetcher({
23
+ url: 'https://${shop}/api/${apiVersion}/graphql.json',
24
+ headers: {
25
+ Accept: 'application/json',
26
+ 'Content-Type': 'application/graphql',
27
+ 'X-Shopify-Storefront-Access-Token': '${token}'
28
+ }
29
+ });
30
+ ReactDOM.render(
31
+ React.createElement(GraphiQL, { fetcher: fetcher }),
32
+ document.getElementById('graphiql'),
33
+ );
34
+ </script>
35
+ </body>
36
+ </html>
37
+ `;
38
+ }