@shopify/hydrogen 0.1.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 (454) hide show
  1. package/README.md +29 -0
  2. package/client.d.ts +1 -0
  3. package/client.js +1 -0
  4. package/dist/esnext/client.d.ts +7 -0
  5. package/dist/esnext/client.js +7 -0
  6. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +15 -0
  7. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +44 -0
  8. package/dist/esnext/components/AddToCartButton/index.d.ts +1 -0
  9. package/dist/esnext/components/AddToCartButton/index.js +1 -0
  10. package/dist/esnext/components/BuyNowButton/BuyNowButton.d.ts +12 -0
  11. package/dist/esnext/components/BuyNowButton/BuyNowButton.js +29 -0
  12. package/dist/esnext/components/BuyNowButton/index.d.ts +1 -0
  13. package/dist/esnext/components/BuyNowButton/index.js +1 -0
  14. package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.d.ts +7 -0
  15. package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.js +14 -0
  16. package/dist/esnext/components/CartCheckoutButton/index.d.ts +1 -0
  17. package/dist/esnext/components/CartCheckoutButton/index.js +1 -0
  18. package/dist/esnext/components/CartContainer/CartContainer.client.d.ts +9 -0
  19. package/dist/esnext/components/CartContainer/CartContainer.client.js +24 -0
  20. package/dist/esnext/components/CartContainer/index.d.ts +1 -0
  21. package/dist/esnext/components/CartContainer/index.js +1 -0
  22. package/dist/esnext/components/CartLineAttributes/CartLineAttributes.client.d.ts +10 -0
  23. package/dist/esnext/components/CartLineAttributes/CartLineAttributes.client.js +9 -0
  24. package/dist/esnext/components/CartLineAttributes/index.d.ts +1 -0
  25. package/dist/esnext/components/CartLineAttributes/index.js +1 -0
  26. package/dist/esnext/components/CartLineImage/CartLineImage.client.d.ts +6 -0
  27. package/dist/esnext/components/CartLineImage/CartLineImage.client.js +8 -0
  28. package/dist/esnext/components/CartLineImage/index.d.ts +1 -0
  29. package/dist/esnext/components/CartLineImage/index.js +1 -0
  30. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +6 -0
  31. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +17 -0
  32. package/dist/esnext/components/CartLinePrice/index.d.ts +1 -0
  33. package/dist/esnext/components/CartLinePrice/index.js +1 -0
  34. package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.d.ts +3 -0
  35. package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.js +8 -0
  36. package/dist/esnext/components/CartLineProductTitle/index.d.ts +1 -0
  37. package/dist/esnext/components/CartLineProductTitle/index.js +1 -0
  38. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.d.ts +6 -0
  39. package/dist/esnext/components/CartLineProvider/CartLineProvider.client.js +5 -0
  40. package/dist/esnext/components/CartLineProvider/context.d.ts +26 -0
  41. package/dist/esnext/components/CartLineProvider/context.js +2 -0
  42. package/dist/esnext/components/CartLineProvider/hooks.d.ts +26 -0
  43. package/dist/esnext/components/CartLineProvider/hooks.js +9 -0
  44. package/dist/esnext/components/CartLineProvider/index.d.ts +2 -0
  45. package/dist/esnext/components/CartLineProvider/index.js +2 -0
  46. package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.d.ts +3 -0
  47. package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.js +8 -0
  48. package/dist/esnext/components/CartLineQuantity/index.d.ts +1 -0
  49. package/dist/esnext/components/CartLineQuantity/index.js +1 -0
  50. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.d.ts +8 -0
  51. package/dist/esnext/components/CartLineQuantityAdjustButton/CartLineQuantityAdjustButton.js +17 -0
  52. package/dist/esnext/components/CartLineQuantityAdjustButton/index.d.ts +1 -0
  53. package/dist/esnext/components/CartLineQuantityAdjustButton/index.js +1 -0
  54. package/dist/esnext/components/CartLineSelectedOptions/CartLineSelectedOptions.client.d.ts +10 -0
  55. package/dist/esnext/components/CartLineSelectedOptions/CartLineSelectedOptions.client.js +9 -0
  56. package/dist/esnext/components/CartLineSelectedOptions/index.d.ts +1 -0
  57. package/dist/esnext/components/CartLineSelectedOptions/index.js +1 -0
  58. package/dist/esnext/components/CartLines/CartLines.d.ts +7 -0
  59. package/dist/esnext/components/CartLines/CartLines.js +15 -0
  60. package/dist/esnext/components/CartLines/index.d.ts +1 -0
  61. package/dist/esnext/components/CartLines/index.js +1 -0
  62. package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +7 -0
  63. package/dist/esnext/components/CartProvider/CartProvider.client.js +422 -0
  64. package/dist/esnext/components/CartProvider/CartServerProvider.server.d.ts +11 -0
  65. package/dist/esnext/components/CartProvider/CartServerProvider.server.js +20 -0
  66. package/dist/esnext/components/CartProvider/constants.d.ts +2 -0
  67. package/dist/esnext/components/CartProvider/constants.js +2 -0
  68. package/dist/esnext/components/CartProvider/context.d.ts +2 -0
  69. package/dist/esnext/components/CartProvider/context.js +2 -0
  70. package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.d.ts +18 -0
  71. package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.js +1 -0
  72. package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.d.ts +18 -0
  73. package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.js +1 -0
  74. package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.d.ts +17 -0
  75. package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.js +1 -0
  76. package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.d.ts +18 -0
  77. package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.js +1 -0
  78. package/dist/esnext/components/CartProvider/graphql/CartFragment.d.ts +68 -0
  79. package/dist/esnext/components/CartProvider/graphql/CartFragment.js +1 -0
  80. package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.d.ts +18 -0
  81. package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.js +1 -0
  82. package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.d.ts +18 -0
  83. package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.js +1 -0
  84. package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.d.ts +18 -0
  85. package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.js +1 -0
  86. package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.d.ts +18 -0
  87. package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.js +1 -0
  88. package/dist/esnext/components/CartProvider/graphql/CartQuery.d.ts +13 -0
  89. package/dist/esnext/components/CartProvider/graphql/CartQuery.js +1 -0
  90. package/dist/esnext/components/CartProvider/hooks.d.ts +18 -0
  91. package/dist/esnext/components/CartProvider/hooks.js +79 -0
  92. package/dist/esnext/components/CartProvider/index.d.ts +4 -0
  93. package/dist/esnext/components/CartProvider/index.js +4 -0
  94. package/dist/esnext/components/CartProvider/types.d.ts +105 -0
  95. package/dist/esnext/components/CartProvider/types.js +1 -0
  96. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.d.ts +2 -0
  97. package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.js +10 -0
  98. package/dist/esnext/components/CartShopPayButton/index.d.ts +1 -0
  99. package/dist/esnext/components/CartShopPayButton/index.js +1 -0
  100. package/dist/esnext/components/CartToggle/CartToggle.client.d.ts +8 -0
  101. package/dist/esnext/components/CartToggle/CartToggle.client.js +11 -0
  102. package/dist/esnext/components/CartToggle/index.d.ts +1 -0
  103. package/dist/esnext/components/CartToggle/index.js +1 -0
  104. package/dist/esnext/components/CartTotal/CartTotal.client.d.ts +3 -0
  105. package/dist/esnext/components/CartTotal/CartTotal.client.js +8 -0
  106. package/dist/esnext/components/CartTotal/index.d.ts +1 -0
  107. package/dist/esnext/components/CartTotal/index.js +1 -0
  108. package/dist/esnext/components/CartUIProvider/CartUIProvider.client.d.ts +5 -0
  109. package/dist/esnext/components/CartUIProvider/CartUIProvider.client.js +26 -0
  110. package/dist/esnext/components/CartUIProvider/context.d.ts +9 -0
  111. package/dist/esnext/components/CartUIProvider/context.js +2 -0
  112. package/dist/esnext/components/CartUIProvider/hooks.d.ts +1 -0
  113. package/dist/esnext/components/CartUIProvider/hooks.js +9 -0
  114. package/dist/esnext/components/CartUIProvider/index.d.ts +2 -0
  115. package/dist/esnext/components/CartUIProvider/index.js +2 -0
  116. package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +14 -0
  117. package/dist/esnext/components/ExternalVideo/ExternalVideo.js +9 -0
  118. package/dist/esnext/components/ExternalVideo/ExternalVideoFragment.d.ts +4 -0
  119. package/dist/esnext/components/ExternalVideo/ExternalVideoFragment.js +1 -0
  120. package/dist/esnext/components/ExternalVideo/index.d.ts +1 -0
  121. package/dist/esnext/components/ExternalVideo/index.js +1 -0
  122. package/dist/esnext/components/Image/Image.d.ts +14 -0
  123. package/dist/esnext/components/Image/Image.js +10 -0
  124. package/dist/esnext/components/Image/ImageFragment.d.ts +4 -0
  125. package/dist/esnext/components/Image/ImageFragment.js +1 -0
  126. package/dist/esnext/components/Image/index.d.ts +1 -0
  127. package/dist/esnext/components/Image/index.js +1 -0
  128. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.d.ts +6 -0
  129. package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.js +14 -0
  130. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.d.ts +8 -0
  131. package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.js +2 -0
  132. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +4 -0
  133. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +8 -0
  134. package/dist/esnext/components/LocalizationProvider/LocalizationQuery.d.ts +18 -0
  135. package/dist/esnext/components/LocalizationProvider/LocalizationQuery.js +1 -0
  136. package/dist/esnext/components/LocalizationProvider/hooks.d.ts +8 -0
  137. package/dist/esnext/components/LocalizationProvider/hooks.js +17 -0
  138. package/dist/esnext/components/LocalizationProvider/index.d.ts +2 -0
  139. package/dist/esnext/components/LocalizationProvider/index.js +2 -0
  140. package/dist/esnext/components/MediaFile/MediaFile.d.ts +19 -0
  141. package/dist/esnext/components/MediaFile/MediaFile.js +22 -0
  142. package/dist/esnext/components/MediaFile/MediaFileFragment.d.ts +22 -0
  143. package/dist/esnext/components/MediaFile/MediaFileFragment.js +1 -0
  144. package/dist/esnext/components/MediaFile/index.d.ts +1 -0
  145. package/dist/esnext/components/MediaFile/index.js +1 -0
  146. package/dist/esnext/components/Metafield/Metafield.client.d.ts +8 -0
  147. package/dist/esnext/components/Metafield/Metafield.client.js +50 -0
  148. package/dist/esnext/components/Metafield/MetafieldFragment.d.ts +4 -0
  149. package/dist/esnext/components/Metafield/MetafieldFragment.js +1 -0
  150. package/dist/esnext/components/Metafield/components/StarRating/StarRating.d.ts +12 -0
  151. package/dist/esnext/components/Metafield/components/StarRating/StarRating.js +48 -0
  152. package/dist/esnext/components/Metafield/components/StarRating/index.d.ts +1 -0
  153. package/dist/esnext/components/Metafield/components/StarRating/index.js +1 -0
  154. package/dist/esnext/components/Metafield/components/index.d.ts +1 -0
  155. package/dist/esnext/components/Metafield/components/index.js +1 -0
  156. package/dist/esnext/components/Metafield/index.d.ts +3 -0
  157. package/dist/esnext/components/Metafield/index.js +1 -0
  158. package/dist/esnext/components/Metafield/types.d.ts +4 -0
  159. package/dist/esnext/components/Metafield/types.js +1 -0
  160. package/dist/esnext/components/Model3D/Model3D.client.d.ts +25 -0
  161. package/dist/esnext/components/Model3D/Model3D.client.js +30 -0
  162. package/dist/esnext/components/Model3D/Model3DFragment.d.ts +11 -0
  163. package/dist/esnext/components/Model3D/Model3DFragment.js +1 -0
  164. package/dist/esnext/components/Model3D/index.d.ts +1 -0
  165. package/dist/esnext/components/Model3D/index.js +1 -0
  166. package/dist/esnext/components/Money/Money.client.d.ts +7 -0
  167. package/dist/esnext/components/Money/Money.client.js +10 -0
  168. package/dist/esnext/components/Money/index.d.ts +1 -0
  169. package/dist/esnext/components/Money/index.js +1 -0
  170. package/dist/esnext/components/ProductDescription/ProductDescription.client.d.ts +3 -0
  171. package/dist/esnext/components/ProductDescription/ProductDescription.client.js +10 -0
  172. package/dist/esnext/components/ProductDescription/index.d.ts +1 -0
  173. package/dist/esnext/components/ProductDescription/index.js +1 -0
  174. package/dist/esnext/components/ProductMetafield/ProductMetafield.client.d.ts +7 -0
  175. package/dist/esnext/components/ProductMetafield/ProductMetafield.client.js +16 -0
  176. package/dist/esnext/components/ProductMetafield/index.d.ts +1 -0
  177. package/dist/esnext/components/ProductMetafield/index.js +1 -0
  178. package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +7 -0
  179. package/dist/esnext/components/ProductPrice/ProductPrice.client.js +32 -0
  180. package/dist/esnext/components/ProductPrice/index.d.ts +1 -0
  181. package/dist/esnext/components/ProductPrice/index.js +1 -0
  182. package/dist/esnext/components/ProductProvider/ProductProvider.client.d.ts +7 -0
  183. package/dist/esnext/components/ProductProvider/ProductProvider.client.js +35 -0
  184. package/dist/esnext/components/ProductProvider/ProductProviderFragment.d.ts +96 -0
  185. package/dist/esnext/components/ProductProvider/ProductProviderFragment.js +1 -0
  186. package/dist/esnext/components/ProductProvider/context.d.ts +13 -0
  187. package/dist/esnext/components/ProductProvider/context.js +2 -0
  188. package/dist/esnext/components/ProductProvider/hooks.d.ts +1 -0
  189. package/dist/esnext/components/ProductProvider/hooks.js +6 -0
  190. package/dist/esnext/components/ProductProvider/index.d.ts +2 -0
  191. package/dist/esnext/components/ProductProvider/index.js +2 -0
  192. package/dist/esnext/components/ProductProvider/types.d.ts +5 -0
  193. package/dist/esnext/components/ProductProvider/types.js +1 -0
  194. package/dist/esnext/components/ProductTitle/ProductTitle.client.d.ts +3 -0
  195. package/dist/esnext/components/ProductTitle/ProductTitle.client.js +11 -0
  196. package/dist/esnext/components/ProductTitle/index.d.ts +1 -0
  197. package/dist/esnext/components/ProductTitle/index.js +1 -0
  198. package/dist/esnext/components/RawHtml/RawHtml.d.ts +7 -0
  199. package/dist/esnext/components/RawHtml/RawHtml.js +13 -0
  200. package/dist/esnext/components/RawHtml/index.d.ts +1 -0
  201. package/dist/esnext/components/RawHtml/index.js +1 -0
  202. package/dist/esnext/components/SelectedVariantAddToCartButton/SelectedVariantAddToCartButton.client.d.ts +6 -0
  203. package/dist/esnext/components/SelectedVariantAddToCartButton/SelectedVariantAddToCartButton.client.js +12 -0
  204. package/dist/esnext/components/SelectedVariantAddToCartButton/index.d.ts +1 -0
  205. package/dist/esnext/components/SelectedVariantAddToCartButton/index.js +1 -0
  206. package/dist/esnext/components/SelectedVariantBuyNowButton/SelectedVariantBuyNowButton.d.ts +4 -0
  207. package/dist/esnext/components/SelectedVariantBuyNowButton/SelectedVariantBuyNowButton.js +12 -0
  208. package/dist/esnext/components/SelectedVariantBuyNowButton/index.d.ts +1 -0
  209. package/dist/esnext/components/SelectedVariantBuyNowButton/index.js +1 -0
  210. package/dist/esnext/components/SelectedVariantImage/SelectedVariantImage.client.d.ts +6 -0
  211. package/dist/esnext/components/SelectedVariantImage/SelectedVariantImage.client.js +12 -0
  212. package/dist/esnext/components/SelectedVariantImage/index.d.ts +1 -0
  213. package/dist/esnext/components/SelectedVariantImage/index.js +1 -0
  214. package/dist/esnext/components/SelectedVariantMetafield/SelectedVariantMetafield.client.d.ts +7 -0
  215. package/dist/esnext/components/SelectedVariantMetafield/SelectedVariantMetafield.client.js +15 -0
  216. package/dist/esnext/components/SelectedVariantMetafield/index.d.ts +1 -0
  217. package/dist/esnext/components/SelectedVariantMetafield/index.js +1 -0
  218. package/dist/esnext/components/SelectedVariantPrice/SelectedVariantPrice.client.d.ts +6 -0
  219. package/dist/esnext/components/SelectedVariantPrice/SelectedVariantPrice.client.js +18 -0
  220. package/dist/esnext/components/SelectedVariantPrice/index.d.ts +1 -0
  221. package/dist/esnext/components/SelectedVariantPrice/index.js +1 -0
  222. package/dist/esnext/components/SelectedVariantShopPayButton/SelectedVariantShopPayButton.client.d.ts +2 -0
  223. package/dist/esnext/components/SelectedVariantShopPayButton/SelectedVariantShopPayButton.client.js +12 -0
  224. package/dist/esnext/components/SelectedVariantShopPayButton/index.d.ts +1 -0
  225. package/dist/esnext/components/SelectedVariantShopPayButton/index.js +1 -0
  226. package/dist/esnext/components/SelectedVariantUnitPrice/SelectedVariantUnitPrice.client.d.ts +3 -0
  227. package/dist/esnext/components/SelectedVariantUnitPrice/SelectedVariantUnitPrice.client.js +12 -0
  228. package/dist/esnext/components/SelectedVariantUnitPrice/index.d.ts +1 -0
  229. package/dist/esnext/components/SelectedVariantUnitPrice/index.js +1 -0
  230. package/dist/esnext/components/ShopPayButton/ShopPayButton.client.d.ts +15 -0
  231. package/dist/esnext/components/ShopPayButton/ShopPayButton.client.js +32 -0
  232. package/dist/esnext/components/ShopPayButton/index.d.ts +1 -0
  233. package/dist/esnext/components/ShopPayButton/index.js +1 -0
  234. package/dist/esnext/components/UnitPrice/UnitPrice.client.d.ts +8 -0
  235. package/dist/esnext/components/UnitPrice/UnitPrice.client.js +16 -0
  236. package/dist/esnext/components/UnitPrice/index.d.ts +1 -0
  237. package/dist/esnext/components/UnitPrice/index.js +1 -0
  238. package/dist/esnext/components/Video/Video.d.ts +13 -0
  239. package/dist/esnext/components/Video/Video.js +8 -0
  240. package/dist/esnext/components/Video/VideoFragment.d.ts +11 -0
  241. package/dist/esnext/components/Video/VideoFragment.js +1 -0
  242. package/dist/esnext/components/Video/index.d.ts +1 -0
  243. package/dist/esnext/components/Video/index.js +1 -0
  244. package/dist/esnext/components/index.d.ts +41 -0
  245. package/dist/esnext/components/index.js +87 -0
  246. package/dist/esnext/components/types.d.ts +73 -0
  247. package/dist/esnext/components/types.js +10 -0
  248. package/dist/esnext/entry-client.d.ts +3 -0
  249. package/dist/esnext/entry-client.js +36 -0
  250. package/dist/esnext/entry-server.d.ts +3 -0
  251. package/dist/esnext/entry-server.js +286 -0
  252. package/dist/esnext/foundation/ClientMarker/ClientMarker.d.ts +10 -0
  253. package/dist/esnext/foundation/ClientMarker/ClientMarker.js +25 -0
  254. package/dist/esnext/foundation/ClientMarker/index.d.ts +1 -0
  255. package/dist/esnext/foundation/ClientMarker/index.js +1 -0
  256. package/dist/esnext/foundation/Hydration/Cache.client.d.ts +9 -0
  257. package/dist/esnext/foundation/Hydration/Cache.client.js +131 -0
  258. package/dist/esnext/foundation/Hydration/ClientComponents.server.d.ts +13 -0
  259. package/dist/esnext/foundation/Hydration/ClientComponents.server.js +18 -0
  260. package/dist/esnext/foundation/Hydration/Html.d.ts +5 -0
  261. package/dist/esnext/foundation/Hydration/Html.js +9 -0
  262. package/dist/esnext/foundation/Hydration/HydrationContext.server.d.ts +1 -0
  263. package/dist/esnext/foundation/Hydration/HydrationContext.server.js +2 -0
  264. package/dist/esnext/foundation/Hydration/ServerComponentRequest.server.d.ts +13 -0
  265. package/dist/esnext/foundation/Hydration/ServerComponentRequest.server.js +39 -0
  266. package/dist/esnext/foundation/Hydration/ServerComponentResponse.server.d.ts +18 -0
  267. package/dist/esnext/foundation/Hydration/ServerComponentResponse.server.js +35 -0
  268. package/dist/esnext/foundation/Hydration/react-utils.d.ts +5 -0
  269. package/dist/esnext/foundation/Hydration/react-utils.js +55 -0
  270. package/dist/esnext/foundation/Hydration/wire.server.d.ts +4 -0
  271. package/dist/esnext/foundation/Hydration/wire.server.js +75 -0
  272. package/dist/esnext/foundation/Hydration/writer.server.d.ts +14 -0
  273. package/dist/esnext/foundation/Hydration/writer.server.js +29 -0
  274. package/dist/esnext/foundation/Router/DefaultRoutes.d.ts +20 -0
  275. package/dist/esnext/foundation/Router/DefaultRoutes.js +54 -0
  276. package/dist/esnext/foundation/Router/ServerStateRouter.client.d.ts +6 -0
  277. package/dist/esnext/foundation/Router/ServerStateRouter.client.js +27 -0
  278. package/dist/esnext/foundation/Router/index.d.ts +1 -0
  279. package/dist/esnext/foundation/Router/index.js +1 -0
  280. package/dist/esnext/foundation/ServerStateProvider/ServerStateProvider.client.d.ts +11 -0
  281. package/dist/esnext/foundation/ServerStateProvider/ServerStateProvider.client.js +48 -0
  282. package/dist/esnext/foundation/ServerStateProvider/index.d.ts +1 -0
  283. package/dist/esnext/foundation/ServerStateProvider/index.js +1 -0
  284. package/dist/esnext/foundation/ShopifyProvider/ShopifyContext.d.ts +1 -0
  285. package/dist/esnext/foundation/ShopifyProvider/ShopifyContext.js +2 -0
  286. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.d.ts +3 -0
  287. package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.js +11 -0
  288. package/dist/esnext/foundation/ShopifyProvider/ShopifyServerProvider.server.d.ts +8 -0
  289. package/dist/esnext/foundation/ShopifyProvider/ShopifyServerProvider.server.js +7 -0
  290. package/dist/esnext/foundation/ShopifyProvider/hooks.d.ts +2 -0
  291. package/dist/esnext/foundation/ShopifyProvider/hooks.js +9 -0
  292. package/dist/esnext/foundation/ShopifyProvider/index.d.ts +2 -0
  293. package/dist/esnext/foundation/ShopifyProvider/index.js +2 -0
  294. package/dist/esnext/foundation/ShopifyProvider/types.d.ts +12 -0
  295. package/dist/esnext/foundation/ShopifyProvider/types.js +1 -0
  296. package/dist/esnext/foundation/index.d.ts +4 -0
  297. package/dist/esnext/foundation/index.js +4 -0
  298. package/dist/esnext/framework/graphiql.d.ts +1 -0
  299. package/dist/esnext/framework/graphiql.js +39 -0
  300. package/dist/esnext/framework/middleware.d.ts +17 -0
  301. package/dist/esnext/framework/middleware.js +116 -0
  302. package/dist/esnext/framework/plugin.d.ts +3 -0
  303. package/dist/esnext/framework/plugin.js +14 -0
  304. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-config.d.ts +3 -0
  305. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-config.js +43 -0
  306. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +4 -0
  307. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.js +28 -0
  308. package/dist/esnext/framework/plugins/vite-plugin-react-server-components-shim.d.ts +3 -0
  309. package/dist/esnext/framework/plugins/vite-plugin-react-server-components-shim.js +123 -0
  310. package/dist/esnext/framework/server-components.d.ts +12 -0
  311. package/dist/esnext/framework/server-components.js +72 -0
  312. package/dist/esnext/graphql/graphql-constants.d.ts +1295 -0
  313. package/dist/esnext/graphql/graphql-constants.js +2482 -0
  314. package/dist/esnext/graphql/types/types.d.ts +5583 -0
  315. package/dist/esnext/graphql/types/types.js +1414 -0
  316. package/dist/esnext/handle-event.d.ts +20 -0
  317. package/dist/esnext/handle-event.js +140 -0
  318. package/dist/esnext/handle-worker-event.d.ts +11 -0
  319. package/dist/esnext/handle-worker-event.js +14 -0
  320. package/dist/esnext/hooks/index.d.ts +5 -0
  321. package/dist/esnext/hooks/index.js +5 -0
  322. package/dist/esnext/hooks/useMeasurement/hooks.d.ts +9 -0
  323. package/dist/esnext/hooks/useMeasurement/hooks.js +13 -0
  324. package/dist/esnext/hooks/useMeasurement/index.d.ts +1 -0
  325. package/dist/esnext/hooks/useMeasurement/index.js +1 -0
  326. package/dist/esnext/hooks/useMoney/hooks.d.ts +11 -0
  327. package/dist/esnext/hooks/useMoney/hooks.js +33 -0
  328. package/dist/esnext/hooks/useMoney/index.d.ts +1 -0
  329. package/dist/esnext/hooks/useMoney/index.js +1 -0
  330. package/dist/esnext/hooks/useParsedMetafields/hooks.d.ts +3 -0
  331. package/dist/esnext/hooks/useParsedMetafields/hooks.js +15 -0
  332. package/dist/esnext/hooks/useParsedMetafields/index.d.ts +1 -0
  333. package/dist/esnext/hooks/useParsedMetafields/index.js +1 -0
  334. package/dist/esnext/hooks/useProductOptions/helpers.d.ts +4 -0
  335. package/dist/esnext/hooks/useProductOptions/helpers.js +33 -0
  336. package/dist/esnext/hooks/useProductOptions/index.d.ts +2 -0
  337. package/dist/esnext/hooks/useProductOptions/index.js +2 -0
  338. package/dist/esnext/hooks/useProductOptions/types.d.ts +50 -0
  339. package/dist/esnext/hooks/useProductOptions/types.js +1 -0
  340. package/dist/esnext/hooks/useProductOptions/useProductOptions.d.ts +23 -0
  341. package/dist/esnext/hooks/useProductOptions/useProductOptions.js +84 -0
  342. package/dist/esnext/hooks/useQuery/QueryProvider.d.ts +6 -0
  343. package/dist/esnext/hooks/useQuery/QueryProvider.js +13 -0
  344. package/dist/esnext/hooks/useQuery/hooks.d.ts +12 -0
  345. package/dist/esnext/hooks/useQuery/hooks.js +28 -0
  346. package/dist/esnext/hooks/useQuery/index.d.ts +2 -0
  347. package/dist/esnext/hooks/useQuery/index.js +2 -0
  348. package/dist/esnext/hooks/useShopQuery/hooks.d.ts +9 -0
  349. package/dist/esnext/hooks/useShopQuery/hooks.js +34 -0
  350. package/dist/esnext/hooks/useShopQuery/index.d.ts +1 -0
  351. package/dist/esnext/hooks/useShopQuery/index.js +1 -0
  352. package/dist/esnext/index.d.ts +9 -0
  353. package/dist/esnext/index.js +11 -0
  354. package/dist/esnext/types.d.ts +62 -0
  355. package/dist/esnext/types.js +1 -0
  356. package/dist/esnext/utilities/connections.d.ts +2 -0
  357. package/dist/esnext/utilities/connections.js +4 -0
  358. package/dist/esnext/utilities/environment.d.ts +2 -0
  359. package/dist/esnext/utilities/environment.js +2 -0
  360. package/dist/esnext/utilities/image_size.d.ts +17 -0
  361. package/dist/esnext/utilities/image_size.js +45 -0
  362. package/dist/esnext/utilities/index.d.ts +8 -0
  363. package/dist/esnext/utilities/index.js +8 -0
  364. package/dist/esnext/utilities/meaurement.d.ts +3 -0
  365. package/dist/esnext/utilities/meaurement.js +98 -0
  366. package/dist/esnext/utilities/metafields.d.ts +2 -0
  367. package/dist/esnext/utilities/metafields.js +32 -0
  368. package/dist/esnext/utilities/script_loader.d.ts +3 -0
  369. package/dist/esnext/utilities/script_loader.js +23 -0
  370. package/dist/esnext/utilities/suspense.d.ts +7 -0
  371. package/dist/esnext/utilities/suspense.js +32 -0
  372. package/dist/esnext/utilities/video_parameters.d.ts +47 -0
  373. package/dist/esnext/utilities/video_parameters.js +22 -0
  374. package/dist/esnext/version.d.ts +1 -0
  375. package/dist/esnext/version.js +1 -0
  376. package/dist/node/foundation/ClientMarker/ClientMarker.d.ts +10 -0
  377. package/dist/node/foundation/ClientMarker/ClientMarker.js +48 -0
  378. package/dist/node/foundation/ClientMarker/index.d.ts +1 -0
  379. package/dist/node/foundation/ClientMarker/index.js +13 -0
  380. package/dist/node/foundation/Hydration/HydrationContext.server.d.ts +1 -0
  381. package/dist/node/foundation/Hydration/HydrationContext.server.js +5 -0
  382. package/dist/node/foundation/Hydration/ServerComponentRequest.server.d.ts +13 -0
  383. package/dist/node/foundation/Hydration/ServerComponentRequest.server.js +43 -0
  384. package/dist/node/foundation/Hydration/ServerComponentResponse.server.d.ts +18 -0
  385. package/dist/node/foundation/Hydration/ServerComponentResponse.server.js +39 -0
  386. package/dist/node/foundation/Hydration/react-utils.d.ts +5 -0
  387. package/dist/node/foundation/Hydration/react-utils.js +63 -0
  388. package/dist/node/foundation/Router/DefaultRoutes.d.ts +20 -0
  389. package/dist/node/foundation/Router/DefaultRoutes.js +78 -0
  390. package/dist/node/foundation/Router/index.d.ts +1 -0
  391. package/dist/node/foundation/Router/index.js +5 -0
  392. package/dist/node/foundation/ShopifyProvider/ShopifyContext.d.ts +1 -0
  393. package/dist/node/foundation/ShopifyProvider/ShopifyContext.js +5 -0
  394. package/dist/node/foundation/ShopifyProvider/ShopifyProvider.d.ts +3 -0
  395. package/dist/node/foundation/ShopifyProvider/ShopifyProvider.js +34 -0
  396. package/dist/node/foundation/ShopifyProvider/ShopifyServerProvider.server.d.ts +8 -0
  397. package/dist/node/foundation/ShopifyProvider/ShopifyServerProvider.server.js +14 -0
  398. package/dist/node/foundation/ShopifyProvider/hooks.d.ts +2 -0
  399. package/dist/node/foundation/ShopifyProvider/hooks.js +13 -0
  400. package/dist/node/foundation/ShopifyProvider/index.d.ts +2 -0
  401. package/dist/node/foundation/ShopifyProvider/index.js +8 -0
  402. package/dist/node/foundation/ShopifyProvider/types.d.ts +12 -0
  403. package/dist/node/foundation/ShopifyProvider/types.js +2 -0
  404. package/dist/node/foundation/index.d.ts +4 -0
  405. package/dist/node/foundation/index.js +13 -0
  406. package/dist/node/framework/graphiql.d.ts +1 -0
  407. package/dist/node/framework/graphiql.js +43 -0
  408. package/dist/node/framework/middleware.d.ts +17 -0
  409. package/dist/node/framework/middleware.js +141 -0
  410. package/dist/node/framework/plugin.d.ts +3 -0
  411. package/dist/node/framework/plugin.js +19 -0
  412. package/dist/node/framework/plugins/vite-plugin-hydrogen-config.d.ts +3 -0
  413. package/dist/node/framework/plugins/vite-plugin-hydrogen-config.js +45 -0
  414. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +4 -0
  415. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.js +33 -0
  416. package/dist/node/framework/plugins/vite-plugin-react-server-components-shim.d.ts +3 -0
  417. package/dist/node/framework/plugins/vite-plugin-react-server-components-shim.js +128 -0
  418. package/dist/node/framework/server-components.d.ts +12 -0
  419. package/dist/node/framework/server-components.js +77 -0
  420. package/dist/node/graphql/types/types.d.ts +5583 -0
  421. package/dist/node/graphql/types/types.js +1417 -0
  422. package/dist/node/handle-event.d.ts +20 -0
  423. package/dist/node/handle-event.js +143 -0
  424. package/dist/node/hooks/useQuery/QueryProvider.d.ts +6 -0
  425. package/dist/node/hooks/useQuery/QueryProvider.js +20 -0
  426. package/dist/node/hooks/useQuery/hooks.d.ts +12 -0
  427. package/dist/node/hooks/useQuery/hooks.js +32 -0
  428. package/dist/node/hooks/useQuery/index.d.ts +2 -0
  429. package/dist/node/hooks/useQuery/index.js +14 -0
  430. package/dist/node/types.d.ts +62 -0
  431. package/dist/node/types.js +2 -0
  432. package/dist/worker/foundation/Hydration/ServerComponentRequest.server.d.ts +13 -0
  433. package/dist/worker/foundation/Hydration/ServerComponentRequest.server.js +39 -0
  434. package/dist/worker/foundation/Hydration/ServerComponentResponse.server.d.ts +18 -0
  435. package/dist/worker/foundation/Hydration/ServerComponentResponse.server.js +35 -0
  436. package/dist/worker/graphql/types/types.d.ts +5583 -0
  437. package/dist/worker/graphql/types/types.js +1414 -0
  438. package/dist/worker/handle-event.d.ts +20 -0
  439. package/dist/worker/handle-event.js +140 -0
  440. package/dist/worker/handle-worker-event.d.ts +11 -0
  441. package/dist/worker/handle-worker-event.js +14 -0
  442. package/dist/worker/types.d.ts +62 -0
  443. package/dist/worker/types.js +1 -0
  444. package/entry-client.d.ts +1 -0
  445. package/entry-client.js +1 -0
  446. package/entry-server.d.ts +1 -0
  447. package/entry-server.js +1 -0
  448. package/marker.js +1 -0
  449. package/middleware.d.ts +1 -0
  450. package/middleware.js +1 -0
  451. package/package.json +98 -0
  452. package/plugin.d.ts +1 -0
  453. package/plugin.js +1 -0
  454. package/worker.js +1 -0
@@ -0,0 +1,35 @@
1
+ import { renderToString } from 'react-dom/server';
2
+ export class ServerComponentResponse extends Response {
3
+ constructor() {
4
+ super(...arguments);
5
+ this.wait = false;
6
+ /**
7
+ * Allow custom body to be a string or a Promise.
8
+ */
9
+ this.customBody = '';
10
+ }
11
+ /**
12
+ * Buffer the current response until all queries have resolved,
13
+ * and prevent it from streaming back early.
14
+ */
15
+ doNotStream() {
16
+ this.wait = true;
17
+ }
18
+ canStream() {
19
+ return !this.wait;
20
+ }
21
+ /**
22
+ * Send the response from a Server Component. Renders React components to string,
23
+ * and returns `null` to make React happy.
24
+ */
25
+ send(body) {
26
+ if (typeof body === 'object' &&
27
+ body.$$typeof === Symbol.for('react.element')) {
28
+ this.customBody = renderToString(body);
29
+ }
30
+ else {
31
+ this.customBody = body;
32
+ }
33
+ return null;
34
+ }
35
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Iterate through each prop in an object and render it to an object.
3
+ */
4
+ export declare function renderReactProps(props: any): Record<string, any>;
5
+ export declare function parseReactFromString(input: string, options?: any): string | JSX.Element | JSX.Element[];
@@ -0,0 +1,55 @@
1
+ import { renderToString } from 'react-dom/server';
2
+ /**
3
+ * Load `domToReact` from within the library so it doesn't try to load `htmlToDom`
4
+ * which seems to always resolve to the client version, even though we want server.
5
+ */
6
+ import domToReact from 'html-react-parser/lib/dom-to-react';
7
+ import htmlToDOM from 'html-dom-parser';
8
+ /**
9
+ * Iterate through each prop in an object and render it to an object.
10
+ */
11
+ export function renderReactProps(props) {
12
+ return Object.entries(props).reduce((memo, [key, prop]) => {
13
+ if (prop instanceof Array) {
14
+ memo[key] = prop.map((p) => renderReactProp(p));
15
+ }
16
+ else {
17
+ memo[key] = renderReactProp(prop);
18
+ }
19
+ return memo;
20
+ }, {});
21
+ }
22
+ /**
23
+ * If a prop is a React element (determined by the `$$typeof` property),
24
+ * check to see if it's a Function and call it. Otherwise, recursively
25
+ * render React props to support nested components.
26
+ */
27
+ function renderReactProp(prop) {
28
+ if (typeof prop === 'object' &&
29
+ prop['$$typeof'] === Symbol.for('react.element')) {
30
+ if (prop.type instanceof Function) {
31
+ /**
32
+ * We can't simply call prop.type(), since this does funky things
33
+ * with hooks, etc. Instead, we render it to string and convert
34
+ * it to a React object. This *still* isn't a perfect approach
35
+ * because the component isn't wrapped in the same context
36
+ * that the developer may have intended. However, we can
37
+ * set expectations as thus when passing components as
38
+ * props within Server Components.
39
+ */
40
+ return parseReactFromString(renderToString(prop));
41
+ }
42
+ else {
43
+ return {
44
+ ...prop,
45
+ props: renderReactProps(prop.props),
46
+ };
47
+ }
48
+ }
49
+ return prop;
50
+ }
51
+ export function parseReactFromString(input, options = {}) {
52
+ return domToReact(
53
+ // @ts-ignore
54
+ htmlToDOM(input, { lowerCaseAttributeNames: false }), options);
55
+ }
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Parse the HTML and convert it to wire syntax model.
3
+ */
4
+ export declare function generateWireSyntaxFromRenderedHtml(html: string): string;
@@ -0,0 +1,75 @@
1
+ import { ClientComponents } from './ClientComponents.server';
2
+ import { parseReactFromString } from './react-utils';
3
+ /**
4
+ * Parse the HTML and convert it to wire syntax model.
5
+ */
6
+ export function generateWireSyntaxFromRenderedHtml(html) {
7
+ const clientComponents = new ClientComponents();
8
+ const wireModel = parseReactFromString(html, {
9
+ library: {
10
+ // @ts-ignore
11
+ createElement: convertToWireSyntax,
12
+ },
13
+ });
14
+ /**
15
+ * Converts each DOM element to React's "wire" syntax. (I came up with this name; not sure what it's called).
16
+ * This is a terse syntax that records the model tree as an array of tuples. It also lists the client
17
+ * components used with their corresponding IDs to import dynamically.
18
+ */
19
+ function convertToWireSyntax(type, props, children) {
20
+ let componentType = type;
21
+ let componentProps = props;
22
+ if (props && props['data-client-component']) {
23
+ const component = {
24
+ name: props['data-client-component'],
25
+ id: props['data-id'],
26
+ named: props['data-named'] === 'true',
27
+ };
28
+ const index = clientComponents.indexOf(component) > 0
29
+ ? clientComponents.indexOf(component)
30
+ : clientComponents.add(component);
31
+ componentType = `@${index}`;
32
+ componentProps = JSON.parse(props['data-props']);
33
+ }
34
+ convertComponentPropsToWireSyntax(componentProps !== null && componentProps !== void 0 ? componentProps : {});
35
+ if (isDomNode(children) ||
36
+ (children instanceof Array && children.some(isDomNode))) {
37
+ if (children instanceof Array) {
38
+ children = children.map((child) => {
39
+ if (typeof child === 'string') {
40
+ return child;
41
+ }
42
+ const { children, ...props } = child.props;
43
+ return convertToWireSyntax(child.type, props, children);
44
+ });
45
+ }
46
+ else {
47
+ const { children: childrenChildren, ...childrenProps } = children.props;
48
+ children = convertToWireSyntax(children.type, childrenProps, childrenChildren);
49
+ }
50
+ }
51
+ /**
52
+ * TODO: The third position is actually supposed to be `key` I think.
53
+ * It's usually `null` which is what confused me. Find a way to pass
54
+ * through `key` here if we have one in `props`.
55
+ */
56
+ return ['$', componentType, null, { ...componentProps, children }];
57
+ }
58
+ function convertComponentPropsToWireSyntax(componentProps) {
59
+ Object.entries(componentProps).forEach(([key, prop]) => {
60
+ if (isDomNode(prop)) {
61
+ const { children, ...props } = prop.props;
62
+ componentProps[key] = convertToWireSyntax(prop.type, props, children);
63
+ }
64
+ });
65
+ }
66
+ return (clientComponents
67
+ .all()
68
+ .map((component, idx) => {
69
+ return `M${idx + 1}:${JSON.stringify(component)}`;
70
+ })
71
+ .join('\n') + `\nJ0:${JSON.stringify(wireModel)}`);
72
+ }
73
+ function isDomNode(item) {
74
+ return item !== null && typeof item === 'object' && '_owner' in item;
75
+ }
@@ -0,0 +1,14 @@
1
+ /**
2
+ * HydrationWriter is an implementation of `WritableStream` which
3
+ * keeps track of chunks emitted from React's `pipeToNodeWritable`.
4
+ */
5
+ export declare class HydrationWriter {
6
+ private chunks;
7
+ drainCallback: () => any;
8
+ write(chunk: any): void;
9
+ on(event: string, callback: any): void;
10
+ drain(): void;
11
+ destroy(): void;
12
+ end(): void;
13
+ toString(): string;
14
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * HydrationWriter is an implementation of `WritableStream` which
3
+ * keeps track of chunks emitted from React's `pipeToNodeWritable`.
4
+ */
5
+ export class HydrationWriter {
6
+ constructor() {
7
+ this.chunks = [];
8
+ this.drainCallback = () => { };
9
+ }
10
+ write(chunk) {
11
+ this.chunks.push(chunk.toString());
12
+ }
13
+ on(event, callback) {
14
+ if (event === Events.drain) {
15
+ this.drainCallback = callback;
16
+ }
17
+ }
18
+ drain() {
19
+ this.drainCallback();
20
+ }
21
+ destroy() { }
22
+ end() { }
23
+ toString() {
24
+ return this.chunks.join('');
25
+ }
26
+ }
27
+ const Events = {
28
+ drain: 'drain',
29
+ };
@@ -0,0 +1,20 @@
1
+ import { ReactElement } from 'react';
2
+ export declare type ImportGlobEagerOutput = Record<string, Record<'default', any>>;
3
+ /**
4
+ * Build a set of default Hydrogen routes based on the output provided by Vite's
5
+ * import.meta.globEager method.
6
+ *
7
+ * @see https://vitejs.dev/guide/features.html#glob-import
8
+ */
9
+ export declare function DefaultRoutes({ pages, serverState, fallback, }: {
10
+ pages: ImportGlobEagerOutput;
11
+ serverState: Record<string, any>;
12
+ fallback?: ReactElement;
13
+ }): JSX.Element;
14
+ interface HydrogenRoute {
15
+ component: any;
16
+ path: string;
17
+ exact: boolean;
18
+ }
19
+ export declare function createRoutesFromPages(pages: ImportGlobEagerOutput, topLevelPath?: string): HydrogenRoute[];
20
+ export {};
@@ -0,0 +1,54 @@
1
+ import React, { useMemo } from 'react';
2
+ import { Route, Switch, useRouteMatch } from 'react-router-dom';
3
+ /**
4
+ * Build a set of default Hydrogen routes based on the output provided by Vite's
5
+ * import.meta.globEager method.
6
+ *
7
+ * @see https://vitejs.dev/guide/features.html#glob-import
8
+ */
9
+ export function DefaultRoutes({ pages, serverState, fallback, }) {
10
+ const { path } = useRouteMatch();
11
+ const routes = useMemo(() => createRoutesFromPages(pages, path), [pages, path]);
12
+ return (React.createElement(Switch, null,
13
+ routes.map((route) => (React.createElement(Route, { key: route.path, exact: route.exact, path: route.path },
14
+ React.createElement(route.component, { ...serverState })))),
15
+ fallback && React.createElement(Route, { path: "*" }, fallback)));
16
+ }
17
+ export function createRoutesFromPages(pages, topLevelPath = '*') {
18
+ const topLevelPrefix = topLevelPath.replace('*', '').replace(/\/$/, '');
19
+ const routes = Object.keys(pages).map((key) => {
20
+ const path = key
21
+ .replace('./pages', '')
22
+ .replace(/\.server\.(t|j)sx?$/, '')
23
+ /**
24
+ * Replace /index with /
25
+ */
26
+ .replace(/\/index$/i, '/')
27
+ /**
28
+ * Only lowercase the first letter. This allows the developer to use camelCase
29
+ * dynamic paths while ensuring their standard routes are normalized to lowercase.
30
+ */
31
+ .replace(/\b[A-Z]/, (firstLetter) => firstLetter.toLowerCase())
32
+ /**
33
+ * Convert /[handle].jsx and /[...handle].jsx to /:handle.jsx for react-router-dom
34
+ */
35
+ .replace(/\[(?:[.]{3})?(\w+?)\]/g, (_match, param) => `:${param}`);
36
+ /**
37
+ * Catch-all routes [...handle].jsx don't need an exact match
38
+ * https://reactrouter.com/core/api/Route/exact-bool
39
+ */
40
+ const exact = !/\[(?:[.]{3})(\w+?)\]/.test(key);
41
+ return {
42
+ path: topLevelPrefix + path,
43
+ component: pages[key].default,
44
+ exact,
45
+ };
46
+ });
47
+ /**
48
+ * Place static paths BEFORE dynamic paths to grant priority.
49
+ */
50
+ return [
51
+ ...routes.filter((route) => !route.path.includes(':')),
52
+ ...routes.filter((route) => route.path.includes(':')),
53
+ ];
54
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Since we don't render each <Route> on the client like React Router expects,
3
+ * this listens for changes to `location` and proxies the new pathname to
4
+ * server state, which in turn fetches the correct server component.
5
+ */
6
+ export declare function ServerStateRouter(): null;
@@ -0,0 +1,27 @@
1
+ import { useEffect, useState } from 'react';
2
+ import { useLocation } from 'react-router-dom';
3
+ import { useServerState } from '../ServerStateProvider';
4
+ /**
5
+ * Since we don't render each <Route> on the client like React Router expects,
6
+ * this listens for changes to `location` and proxies the new pathname to
7
+ * server state, which in turn fetches the correct server component.
8
+ */
9
+ export function ServerStateRouter() {
10
+ const { setServerState, pending } = useServerState();
11
+ const [isNavigating, setIsNavigating] = useState(false);
12
+ const location = useLocation();
13
+ useEffect(() => {
14
+ setIsNavigating(true);
15
+ setServerState('page', location.pathname);
16
+ }, [location.pathname, setServerState]);
17
+ useEffect(() => {
18
+ /**
19
+ * Indicates navigation has occurred
20
+ */
21
+ if (isNavigating && !pending) {
22
+ window.scrollTo(0, 0);
23
+ setIsNavigating(false);
24
+ }
25
+ }, [isNavigating, pending]);
26
+ return null;
27
+ }
@@ -0,0 +1 @@
1
+ export { DefaultRoutes } from './DefaultRoutes';
@@ -0,0 +1 @@
1
+ export { DefaultRoutes } from './DefaultRoutes';
@@ -0,0 +1,11 @@
1
+ import React, { ReactNode } from 'react';
2
+ interface Props {
3
+ serverState: Record<string, any>;
4
+ setServerState: React.Dispatch<React.SetStateAction<{
5
+ page: string;
6
+ }>>;
7
+ children: ReactNode;
8
+ }
9
+ export declare function ServerStateProvider({ serverState, setServerState, children, }: Props): JSX.Element;
10
+ export declare function useServerState(): any;
11
+ export {};
@@ -0,0 +1,48 @@
1
+ import React, { createContext, useContext, useMemo, useCallback,
2
+ // @ts-ignore
3
+ useTransition, } from 'react';
4
+ const ServerStateContext = createContext(null);
5
+ export function ServerStateProvider({ serverState, setServerState, children, }) {
6
+ const [pending, startTransition] = useTransition();
7
+ const setServerStateCallback = useCallback((input, value) => {
8
+ /**
9
+ * By wrapping this state change in a transition, React renders the new state
10
+ * concurrently in a new "tree" instead of Suspending and showing the (blank)
11
+ * fallback. This is preferred behavior, though we may want to revisit how
12
+ * we make this decision globally for the developer - and consider providing
13
+ * the `pending` flag also provided by the hook to display in the UI.
14
+ */
15
+ startTransition(() => {
16
+ // Support callback-style setState
17
+ if (typeof input === 'function') {
18
+ // @ts-ignore
19
+ return setServerState(input);
20
+ }
21
+ // Support a simple object, and spread it into the existing object.
22
+ if (typeof input === 'object') {
23
+ return setServerState((prev) => ({
24
+ ...prev,
25
+ // @ts-ignore
26
+ ...input,
27
+ }));
28
+ }
29
+ // Support a key, value as well.
30
+ if (typeof input === 'string') {
31
+ return setServerState((prev) => ({
32
+ ...prev,
33
+ [input]: value,
34
+ }));
35
+ }
36
+ });
37
+ }, [setServerState, startTransition]);
38
+ const value = useMemo(() => ({
39
+ pending,
40
+ serverState,
41
+ setServerState: setServerStateCallback,
42
+ }), [serverState, setServerStateCallback, pending]);
43
+ return (React.createElement(ServerStateContext.Provider, { value: value }, children));
44
+ }
45
+ export function useServerState() {
46
+ var _a;
47
+ return (_a = useContext(ServerStateContext)) !== null && _a !== void 0 ? _a : {};
48
+ }
@@ -0,0 +1 @@
1
+ export * from './ServerStateProvider.client';
@@ -0,0 +1 @@
1
+ export * from './ServerStateProvider.client';
@@ -0,0 +1 @@
1
+ export declare const ShopifyContext: import("react").Context<import("../../types").ShopifyConfig | null>;
@@ -0,0 +1,2 @@
1
+ import { createContext } from 'react';
2
+ export const ShopifyContext = createContext(null);
@@ -0,0 +1,3 @@
1
+ import { ShopifyProviderProps } from './types';
2
+ export declare const DEFAULT_API_VERSION = "2021-10";
3
+ export declare function ShopifyProvider({ shopifyConfig, children, }: ShopifyProviderProps): JSX.Element;
@@ -0,0 +1,11 @@
1
+ import React, { useMemo } from 'react';
2
+ import { ShopifyContext } from './ShopifyContext';
3
+ export const DEFAULT_API_VERSION = '2021-10';
4
+ export function ShopifyProvider({ shopifyConfig, children, }) {
5
+ const shopifyProviderValue = useMemo(() => ({
6
+ locale: 'en-us',
7
+ graphqlApiVersion: DEFAULT_API_VERSION,
8
+ ...shopifyConfig,
9
+ }), [shopifyConfig]);
10
+ return (React.createElement(ShopifyContext.Provider, { value: shopifyProviderValue }, children));
11
+ }
@@ -0,0 +1,8 @@
1
+ import { ReactElement } from 'react';
2
+ import { ShopifyConfig } from '../../types';
3
+ import { ReactQueryHydrationContext } from './types';
4
+ export declare function ShopifyServerProvider({ children, shopifyConfig, hydrationContext, }: {
5
+ children: ReactElement;
6
+ shopifyConfig: ShopifyConfig;
7
+ hydrationContext: ReactQueryHydrationContext;
8
+ }): JSX.Element;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { ShopifyProvider } from './ShopifyProvider';
3
+ import { QueryProvider } from '../../hooks/useQuery';
4
+ export function ShopifyServerProvider({ children, shopifyConfig, hydrationContext, }) {
5
+ return (React.createElement(ShopifyProvider, { shopifyConfig: shopifyConfig },
6
+ React.createElement(QueryProvider, { hydrationContext: hydrationContext }, children)));
7
+ }
@@ -0,0 +1,2 @@
1
+ import { ShopifyProviderValue } from './types';
2
+ export declare function useShop(): ShopifyProviderValue;
@@ -0,0 +1,9 @@
1
+ import { useContext } from 'react';
2
+ import { ShopifyContext } from './ShopifyContext';
3
+ export function useShop() {
4
+ const context = useContext(ShopifyContext);
5
+ if (!context) {
6
+ throw new Error('No Shopify Context found');
7
+ }
8
+ return context;
9
+ }
@@ -0,0 +1,2 @@
1
+ export { ShopifyProvider, DEFAULT_API_VERSION } from './ShopifyProvider';
2
+ export { useShop } from './hooks';
@@ -0,0 +1,2 @@
1
+ export { ShopifyProvider, DEFAULT_API_VERSION } from './ShopifyProvider';
2
+ export { useShop } from './hooks';
@@ -0,0 +1,12 @@
1
+ import type { QueryClient } from 'react-query';
2
+ import { ShopifyConfig } from '../../types';
3
+ export declare type ShopifyProviderValue = ShopifyConfig;
4
+ export declare type ShopifyProviderProps = {
5
+ shopifyConfig: ShopifyConfig;
6
+ children?: React.ReactNode;
7
+ manager?: any;
8
+ };
9
+ export interface ReactQueryHydrationContext {
10
+ queryClient?: QueryClient;
11
+ dehydratedState?: any;
12
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ export { ShopifyProvider, useShop, DEFAULT_API_VERSION } from './ShopifyProvider';
2
+ export { ShopifyServerProvider } from './ShopifyProvider/ShopifyServerProvider.server';
3
+ export { DefaultRoutes } from './Router';
4
+ export { ClientMarker } from './ClientMarker';
@@ -0,0 +1,4 @@
1
+ export { ShopifyProvider, useShop, DEFAULT_API_VERSION } from './ShopifyProvider';
2
+ export { ShopifyServerProvider } from './ShopifyProvider/ShopifyServerProvider.server';
3
+ export { DefaultRoutes } from './Router';
4
+ export { ClientMarker } from './ClientMarker';
@@ -0,0 +1 @@
1
+ export declare function graphiqlHtml(shop: string, token: string, apiVersion?: string): string;
@@ -0,0 +1,39 @@
1
+ import { DEFAULT_API_VERSION } from '../foundation';
2
+ export function graphiqlHtml(shop, token, apiVersion = DEFAULT_API_VERSION) {
3
+ return `<html>
4
+ <head>
5
+ <title>Shopify Storefront API</title>
6
+ <link href="https://unpkg.com/graphiql/graphiql.min.css" rel="stylesheet" />
7
+ </head>
8
+ <body style="margin: 0;">
9
+ <div id="graphiql" style="height: 100vh;"></div>
10
+ <script
11
+ crossorigin
12
+ src="https://unpkg.com/react/umd/react.production.min.js"
13
+ ></script>
14
+ <script
15
+ crossorigin
16
+ src="https://unpkg.com/react-dom/umd/react-dom.production.min.js"
17
+ ></script>
18
+ <script
19
+ crossorigin
20
+ src="https://unpkg.com/graphiql/graphiql.min.js"
21
+ ></script>
22
+ <script>
23
+ const fetcher = GraphiQL.createFetcher({
24
+ url: 'https://${shop}/api/${apiVersion}/graphql.json',
25
+ headers: {
26
+ Accept: 'application/json',
27
+ 'Content-Type': 'application/graphql',
28
+ 'X-Shopify-Storefront-Access-Token': '${token}'
29
+ }
30
+ });
31
+ ReactDOM.render(
32
+ React.createElement(GraphiQL, { fetcher: fetcher }),
33
+ document.getElementById('graphiql'),
34
+ );
35
+ </script>
36
+ </body>
37
+ </html>
38
+ `;
39
+ }
@@ -0,0 +1,17 @@
1
+ import { IncomingMessage, NextFunction } from 'connect';
2
+ import http from 'http';
3
+ import { ViteDevServer } from 'vite';
4
+ import { ShopifyConfig } from '../types';
5
+ declare type HydrogenMiddlewareArgs = {
6
+ dev?: boolean;
7
+ shopifyConfig?: ShopifyConfig;
8
+ indexTemplate: string | ((url: string) => Promise<string>);
9
+ getServerEntrypoint: () => Record<string, any> | Promise<Record<string, any>>;
10
+ devServer?: ViteDevServer;
11
+ };
12
+ /**
13
+ * Provides middleware to Node.js Express-like servers. Used by the Hydrogen
14
+ * Vite dev server plugin as well as production Node.js implementation.
15
+ */
16
+ export default function hydrogenMiddleware({ dev, shopifyConfig, indexTemplate, getServerEntrypoint, devServer, }: HydrogenMiddlewareArgs): (request: IncomingMessage, response: http.ServerResponse, next: NextFunction) => Promise<void>;
17
+ export {};