@shopify/hydrogen 0.11.0-experimental.1 → 0.11.1-experimental.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 (264) hide show
  1. package/CHANGELOG.md +504 -0
  2. package/dist/esnext/client.d.ts +1 -1
  3. package/dist/esnext/client.js +1 -1
  4. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +1 -1
  5. package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +11 -2
  6. package/dist/esnext/components/CartEstimatedCost/CartEstimatedCost.client.js +1 -1
  7. package/dist/esnext/components/CartLineImage/CartLineImage.client.js +2 -2
  8. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +1 -1
  9. package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +1 -1
  10. package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +2 -2
  11. package/dist/esnext/components/CartProvider/CartProvider.client.js +1 -1
  12. package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +1 -1
  13. package/dist/esnext/components/ExternalVideo/ExternalVideo.js +2 -2
  14. package/dist/esnext/components/Image/Image.d.ts +1 -1
  15. package/dist/esnext/components/Image/Image.js +9 -9
  16. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +13 -4
  17. package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +5 -3
  18. package/dist/esnext/components/MediaFile/MediaFile.d.ts +8 -6
  19. package/dist/esnext/components/MediaFile/MediaFile.js +6 -6
  20. package/dist/esnext/components/Metafield/Metafield.client.d.ts +1 -1
  21. package/dist/esnext/components/Metafield/Metafield.client.js +16 -16
  22. package/dist/esnext/components/ModelViewer/ModelViewer.client.d.ts +1 -1
  23. package/dist/esnext/components/ModelViewer/ModelViewer.client.js +1 -1
  24. package/dist/esnext/components/Money/Money.client.d.ts +1 -1
  25. package/dist/esnext/components/Money/Money.client.js +2 -2
  26. package/dist/esnext/components/ProductMetafield/ProductMetafield.client.d.ts +3 -1
  27. package/dist/esnext/components/ProductMetafield/ProductMetafield.client.js +21 -4
  28. package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +5 -3
  29. package/dist/esnext/components/ProductPrice/ProductPrice.client.js +30 -9
  30. package/dist/esnext/components/ProductProvider/ProductOptionsProvider.client.d.ts +8 -0
  31. package/dist/esnext/components/ProductProvider/ProductOptionsProvider.client.js +12 -0
  32. package/dist/esnext/components/ProductProvider/ProductProvider.client.d.ts +8 -7
  33. package/dist/esnext/components/ProductProvider/ProductProvider.client.js +9 -35
  34. package/dist/esnext/components/ProductProvider/context.d.ts +10 -6
  35. package/dist/esnext/components/ProductProvider/context.js +1 -0
  36. package/dist/esnext/components/Seo/DefaultPageSeo.client.js +2 -2
  37. package/dist/esnext/components/Seo/DescriptionSeo.client.js +2 -2
  38. package/dist/esnext/components/Seo/HomePageSeo.client.js +2 -2
  39. package/dist/esnext/components/Seo/ImageSeo.client.js +2 -2
  40. package/dist/esnext/components/Seo/ProductSeo.client.js +5 -3
  41. package/dist/esnext/components/Seo/TitleSeo.client.js +2 -2
  42. package/dist/esnext/components/Seo/TwitterSeo.client.js +2 -2
  43. package/dist/esnext/components/Seo/types.d.ts +1 -1
  44. package/dist/esnext/components/UnitPrice/UnitPrice.client.d.ts +2 -2
  45. package/dist/esnext/components/UnitPrice/UnitPrice.client.js +3 -3
  46. package/dist/esnext/components/Video/Video.d.ts +1 -1
  47. package/dist/esnext/components/Video/Video.js +3 -3
  48. package/dist/esnext/components/index.d.ts +0 -8
  49. package/dist/esnext/components/index.js +0 -8
  50. package/dist/esnext/entry-client.js +1 -1
  51. package/dist/esnext/entry-server.d.ts +18 -2
  52. package/dist/esnext/entry-server.js +347 -329
  53. package/dist/esnext/foundation/Head/Head.client.d.ts +5 -0
  54. package/dist/esnext/foundation/Head/Head.client.js +10 -0
  55. package/dist/esnext/foundation/Head/index.d.ts +1 -0
  56. package/dist/esnext/foundation/Head/index.js +1 -0
  57. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +2 -1
  58. package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.js +43 -4
  59. package/dist/esnext/foundation/useQuery/hooks.d.ts +11 -3
  60. package/dist/esnext/foundation/useQuery/hooks.js +21 -5
  61. package/dist/esnext/framework/CachingStrategy/index.d.ts +10 -0
  62. package/dist/esnext/framework/CachingStrategy/index.js +96 -0
  63. package/dist/esnext/framework/Hydration/Html.js +5 -12
  64. package/dist/esnext/framework/Hydration/ServerComponentRequest.server.d.ts +20 -2
  65. package/dist/esnext/framework/Hydration/ServerComponentRequest.server.js +51 -2
  66. package/dist/esnext/framework/Hydration/ServerComponentResponse.server.d.ts +2 -2
  67. package/dist/esnext/framework/Hydration/ServerComponentResponse.server.js +2 -11
  68. package/dist/esnext/framework/cache/in-memory.js +6 -5
  69. package/dist/esnext/framework/cache.d.ts +3 -3
  70. package/dist/esnext/framework/cache.js +4 -18
  71. package/dist/esnext/framework/middleware.d.ts +7 -7
  72. package/dist/esnext/framework/middleware.js +15 -43
  73. package/dist/esnext/framework/plugin.js +14 -3
  74. package/dist/esnext/framework/plugins/vite-plugin-hydration-auto-import.d.ts +3 -0
  75. package/dist/esnext/framework/plugins/vite-plugin-hydration-auto-import.js +38 -0
  76. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-client-middleware.d.ts +9 -0
  77. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-client-middleware.js +37 -0
  78. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +2 -1
  79. package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.js +3 -1
  80. package/dist/esnext/framework/plugins/vite-plugin-platform-entry.d.ts +3 -0
  81. package/dist/esnext/framework/plugins/vite-plugin-platform-entry.js +70 -0
  82. package/dist/esnext/hooks/useProduct/useProduct.d.ts +150 -1
  83. package/dist/esnext/hooks/useProduct/useProduct.js +36 -3
  84. package/dist/esnext/hooks/useProductOptions/types.d.ts +1 -1
  85. package/dist/esnext/hooks/useProductOptions/useProductOptions.d.ts +1 -1
  86. package/dist/esnext/hooks/useProductOptions/useProductOptions.js +6 -6
  87. package/dist/esnext/hooks/useShopQuery/hooks.d.ts +11 -4
  88. package/dist/esnext/hooks/useShopQuery/hooks.js +6 -3
  89. package/dist/esnext/index.d.ts +2 -1
  90. package/dist/esnext/index.js +2 -1
  91. package/dist/esnext/platforms/node.d.ts +10 -0
  92. package/dist/esnext/platforms/node.js +38 -0
  93. package/dist/esnext/platforms/worker-event.d.ts +9 -0
  94. package/dist/esnext/platforms/worker-event.js +24 -0
  95. package/dist/esnext/streaming.server.d.ts +17 -7
  96. package/dist/esnext/streaming.server.js +44 -0
  97. package/dist/esnext/types.d.ts +25 -25
  98. package/dist/esnext/utilities/apiRoutes.d.ts +1 -2
  99. package/dist/esnext/utilities/apiRoutes.js +4 -3
  100. package/dist/esnext/utilities/bot-ua.d.ts +4 -0
  101. package/dist/esnext/utilities/bot-ua.js +54 -0
  102. package/dist/esnext/utilities/fetch.js +1 -26
  103. package/dist/esnext/utilities/log/index.d.ts +4 -1
  104. package/dist/esnext/utilities/log/index.js +4 -1
  105. package/dist/esnext/utilities/log/log-cache-api-status.d.ts +1 -0
  106. package/dist/esnext/utilities/log/log-cache-api-status.js +9 -0
  107. package/dist/esnext/utilities/log/log-cache-header.d.ts +10 -0
  108. package/dist/esnext/utilities/log/log-cache-header.js +30 -0
  109. package/dist/esnext/utilities/log/log-query-timeline.d.ts +12 -0
  110. package/dist/esnext/utilities/log/log-query-timeline.js +83 -0
  111. package/dist/esnext/utilities/log/log.d.ts +11 -8
  112. package/dist/esnext/utilities/log/log.js +24 -35
  113. package/dist/esnext/utilities/log/utils.d.ts +3 -0
  114. package/dist/esnext/utilities/log/utils.js +13 -0
  115. package/dist/esnext/utilities/template.d.ts +9 -0
  116. package/dist/esnext/utilities/template.js +23 -0
  117. package/dist/{worker/foundation/ShopifyProvider/types.js → esnext/utilities/web-api-polyfill.d.ts} +0 -0
  118. package/dist/esnext/utilities/web-api-polyfill.js +19 -0
  119. package/dist/esnext/version.d.ts +1 -1
  120. package/dist/esnext/version.js +1 -1
  121. package/dist/node/entry-server.d.ts +22 -0
  122. package/dist/node/entry-server.js +581 -0
  123. package/dist/node/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +23 -0
  124. package/dist/node/foundation/ServerRequestProvider/ServerRequestProvider.js +132 -0
  125. package/dist/node/foundation/ServerRequestProvider/index.d.ts +1 -0
  126. package/dist/node/foundation/ServerRequestProvider/index.js +13 -0
  127. package/dist/node/foundation/ServerStateProvider/ServerStateProvider.client.d.ts +25 -0
  128. package/dist/node/foundation/ServerStateProvider/ServerStateProvider.client.js +68 -0
  129. package/dist/node/foundation/ServerStateProvider/index.d.ts +2 -0
  130. package/dist/node/foundation/ServerStateProvider/index.js +6 -0
  131. package/dist/node/framework/CachingStrategy/index.d.ts +10 -0
  132. package/dist/node/framework/CachingStrategy/index.js +108 -0
  133. package/dist/node/framework/Hydration/Html.js +5 -12
  134. package/dist/node/framework/Hydration/ServerComponentRequest.server.d.ts +20 -2
  135. package/dist/node/framework/Hydration/ServerComponentRequest.server.js +50 -1
  136. package/dist/node/framework/Hydration/ServerComponentResponse.server.d.ts +2 -2
  137. package/dist/node/framework/Hydration/ServerComponentResponse.server.js +2 -11
  138. package/dist/node/framework/cache/in-memory.js +6 -5
  139. package/dist/node/framework/cache.d.ts +3 -3
  140. package/dist/node/framework/cache.js +6 -20
  141. package/dist/node/framework/middleware.d.ts +7 -7
  142. package/dist/node/framework/middleware.js +14 -46
  143. package/dist/node/framework/plugin.js +33 -3
  144. package/dist/node/framework/plugins/vite-plugin-hydration-auto-import.d.ts +3 -0
  145. package/dist/node/framework/plugins/vite-plugin-hydration-auto-import.js +43 -0
  146. package/dist/node/framework/plugins/vite-plugin-hydrogen-client-middleware.d.ts +9 -0
  147. package/dist/node/framework/plugins/vite-plugin-hydrogen-client-middleware.js +39 -0
  148. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +2 -1
  149. package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.js +4 -1
  150. package/dist/node/framework/plugins/vite-plugin-platform-entry.d.ts +3 -0
  151. package/dist/node/framework/plugins/vite-plugin-platform-entry.js +75 -0
  152. package/dist/node/streaming.server.d.ts +21 -0
  153. package/dist/node/streaming.server.js +59 -0
  154. package/dist/node/types.d.ts +25 -25
  155. package/dist/node/utilities/apiRoutes.d.ts +1 -2
  156. package/dist/node/utilities/apiRoutes.js +4 -3
  157. package/dist/node/utilities/bot-ua.d.ts +4 -0
  158. package/dist/node/utilities/bot-ua.js +58 -0
  159. package/dist/node/utilities/defer.d.ts +6 -0
  160. package/dist/node/utilities/defer.js +18 -0
  161. package/dist/node/utilities/error.d.ts +1 -0
  162. package/dist/node/utilities/error.js +10 -0
  163. package/dist/node/utilities/log/index.d.ts +4 -0
  164. package/dist/node/utilities/log/index.js +18 -0
  165. package/dist/node/utilities/log/log-cache-api-status.d.ts +1 -0
  166. package/dist/node/utilities/log/log-cache-api-status.js +13 -0
  167. package/dist/node/utilities/log/log-cache-header.d.ts +10 -0
  168. package/dist/node/utilities/log/log-cache-header.js +35 -0
  169. package/dist/node/utilities/log/log-query-timeline.d.ts +12 -0
  170. package/dist/node/utilities/log/log-query-timeline.js +88 -0
  171. package/dist/node/utilities/log/log.d.ts +11 -8
  172. package/dist/node/utilities/log/log.js +27 -37
  173. package/dist/node/utilities/log/utils.d.ts +3 -0
  174. package/dist/node/utilities/log/utils.js +18 -0
  175. package/dist/node/utilities/template.d.ts +9 -0
  176. package/dist/node/utilities/template.js +27 -0
  177. package/dist/{worker/types.js → node/utilities/web-api-polyfill.d.ts} +0 -0
  178. package/dist/node/utilities/web-api-polyfill.js +43 -0
  179. package/package.json +20 -10
  180. package/web-polyfills.js +1 -0
  181. package/LICENSE.md +0 -7
  182. package/dist/esnext/components/CartLineAttributes/CartLineAttributes.client.d.ts +0 -22
  183. package/dist/esnext/components/CartLineAttributes/CartLineAttributes.client.js +0 -13
  184. package/dist/esnext/components/CartLineAttributes/index.d.ts +0 -1
  185. package/dist/esnext/components/CartLineAttributes/index.js +0 -1
  186. package/dist/esnext/components/CartLineSelectedOptions/CartLineSelectedOptions.client.d.ts +0 -21
  187. package/dist/esnext/components/CartLineSelectedOptions/CartLineSelectedOptions.client.js +0 -13
  188. package/dist/esnext/components/CartLineSelectedOptions/index.d.ts +0 -1
  189. package/dist/esnext/components/CartLineSelectedOptions/index.js +0 -1
  190. package/dist/esnext/components/SelectedVariantAddToCartButton/SelectedVariantAddToCartButton.client.d.ts +0 -11
  191. package/dist/esnext/components/SelectedVariantAddToCartButton/SelectedVariantAddToCartButton.client.js +0 -17
  192. package/dist/esnext/components/SelectedVariantAddToCartButton/index.d.ts +0 -1
  193. package/dist/esnext/components/SelectedVariantAddToCartButton/index.js +0 -1
  194. package/dist/esnext/components/SelectedVariantBuyNowButton/SelectedVariantBuyNowButton.d.ts +0 -9
  195. package/dist/esnext/components/SelectedVariantBuyNowButton/SelectedVariantBuyNowButton.js +0 -17
  196. package/dist/esnext/components/SelectedVariantBuyNowButton/index.d.ts +0 -1
  197. package/dist/esnext/components/SelectedVariantBuyNowButton/index.js +0 -1
  198. package/dist/esnext/components/SelectedVariantImage/SelectedVariantImage.client.d.ts +0 -10
  199. package/dist/esnext/components/SelectedVariantImage/SelectedVariantImage.client.js +0 -16
  200. package/dist/esnext/components/SelectedVariantImage/index.d.ts +0 -1
  201. package/dist/esnext/components/SelectedVariantImage/index.js +0 -1
  202. package/dist/esnext/components/SelectedVariantMetafield/SelectedVariantMetafield.client.d.ts +0 -15
  203. package/dist/esnext/components/SelectedVariantMetafield/SelectedVariantMetafield.client.js +0 -24
  204. package/dist/esnext/components/SelectedVariantMetafield/index.d.ts +0 -1
  205. package/dist/esnext/components/SelectedVariantMetafield/index.js +0 -1
  206. package/dist/esnext/components/SelectedVariantPrice/SelectedVariantPrice.client.d.ts +0 -12
  207. package/dist/esnext/components/SelectedVariantPrice/SelectedVariantPrice.client.js +0 -22
  208. package/dist/esnext/components/SelectedVariantPrice/index.d.ts +0 -1
  209. package/dist/esnext/components/SelectedVariantPrice/index.js +0 -1
  210. package/dist/esnext/components/SelectedVariantShopPayButton/SelectedVariantShopPayButton.client.d.ts +0 -8
  211. package/dist/esnext/components/SelectedVariantShopPayButton/SelectedVariantShopPayButton.client.js +0 -18
  212. package/dist/esnext/components/SelectedVariantShopPayButton/index.d.ts +0 -1
  213. package/dist/esnext/components/SelectedVariantShopPayButton/index.js +0 -1
  214. package/dist/esnext/components/SelectedVariantUnitPrice/SelectedVariantUnitPrice.client.d.ts +0 -7
  215. package/dist/esnext/components/SelectedVariantUnitPrice/SelectedVariantUnitPrice.client.js +0 -16
  216. package/dist/esnext/components/SelectedVariantUnitPrice/index.d.ts +0 -1
  217. package/dist/esnext/components/SelectedVariantUnitPrice/index.js +0 -1
  218. package/dist/esnext/foundation/Helmet/Helmet.client.d.ts +0 -10
  219. package/dist/esnext/foundation/Helmet/Helmet.client.js +0 -10
  220. package/dist/esnext/foundation/Helmet/index.d.ts +0 -1
  221. package/dist/esnext/foundation/Helmet/index.js +0 -1
  222. package/dist/esnext/handle-event.d.ts +0 -23
  223. package/dist/esnext/handle-event.js +0 -132
  224. package/dist/esnext/handle-worker-event.d.ts +0 -11
  225. package/dist/esnext/handle-worker-event.js +0 -14
  226. package/dist/node/foundation/Helmet/Helmet.client.d.ts +0 -10
  227. package/dist/node/foundation/Helmet/Helmet.client.js +0 -17
  228. package/dist/node/foundation/Helmet/index.d.ts +0 -1
  229. package/dist/node/foundation/Helmet/index.js +0 -5
  230. package/dist/node/foundation/ssr-interop.d.ts +0 -29
  231. package/dist/node/foundation/ssr-interop.js +0 -39
  232. package/dist/node/handle-event.d.ts +0 -23
  233. package/dist/node/handle-event.js +0 -135
  234. package/dist/worker/constants.d.ts +0 -1
  235. package/dist/worker/constants.js +0 -1
  236. package/dist/worker/foundation/Helmet/Helmet.client.d.ts +0 -10
  237. package/dist/worker/foundation/Helmet/Helmet.client.js +0 -10
  238. package/dist/worker/foundation/Helmet/index.d.ts +0 -1
  239. package/dist/worker/foundation/Helmet/index.js +0 -1
  240. package/dist/worker/foundation/ShopifyProvider/types.d.ts +0 -15
  241. package/dist/worker/foundation/ssr-interop.d.ts +0 -29
  242. package/dist/worker/foundation/ssr-interop.js +0 -35
  243. package/dist/worker/framework/Hydration/ServerComponentRequest.server.d.ts +0 -23
  244. package/dist/worker/framework/Hydration/ServerComponentRequest.server.js +0 -57
  245. package/dist/worker/framework/config.d.ts +0 -6
  246. package/dist/worker/framework/config.js +0 -6
  247. package/dist/worker/framework/runtime.d.ts +0 -13
  248. package/dist/worker/framework/runtime.js +0 -27
  249. package/dist/worker/graphql/types/types.d.ts +0 -5761
  250. package/dist/worker/graphql/types/types.js +0 -1436
  251. package/dist/worker/handle-event.d.ts +0 -23
  252. package/dist/worker/handle-event.js +0 -132
  253. package/dist/worker/handle-worker-event.d.ts +0 -11
  254. package/dist/worker/handle-worker-event.js +0 -14
  255. package/dist/worker/types.d.ts +0 -96
  256. package/dist/worker/utilities/apiRoutes.d.ts +0 -21
  257. package/dist/worker/utilities/apiRoutes.js +0 -87
  258. package/dist/worker/utilities/log/log.d.ts +0 -18
  259. package/dist/worker/utilities/log/log.js +0 -77
  260. package/dist/worker/utilities/matchPath.d.ts +0 -10
  261. package/dist/worker/utilities/matchPath.js +0 -54
  262. package/dist/worker/utilities/timing.d.ts +0 -7
  263. package/dist/worker/utilities/timing.js +0 -14
  264. package/worker.js +0 -1
@@ -1,22 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isStale = exports.deleteItemFromCache = exports.setItemInCache = exports.getItemFromCache = exports.hashKey = exports.getCacheControlHeader = exports.generateCacheControlHeader = void 0;
3
+ exports.isStale = exports.deleteItemFromCache = exports.setItemInCache = exports.getItemFromCache = exports.hashKey = exports.getCacheControlHeader = exports.generateSubRequestCacheControlHeader = void 0;
4
4
  const runtime_1 = require("./runtime");
5
- const DEFAULT_SUBREQUEST_CACHE_OPTIONS = {
6
- maxAge: 1,
7
- staleWhileRevalidate: 9,
8
- };
9
- function generateCacheControlHeader(options) {
10
- if (options.noStore) {
11
- return 'no-store';
12
- }
13
- return [
14
- options.private ? 'private' : 'public',
15
- `max-age=${options.maxAge}`,
16
- `stale-while-revalidate=${options.staleWhileRevalidate}`,
17
- ].join(', ');
5
+ const CachingStrategy_1 = require("../framework/CachingStrategy");
6
+ function generateSubRequestCacheControlHeader(userCacheOptions) {
7
+ return (0, CachingStrategy_1.generateCacheControlHeader)(userCacheOptions || (0, CachingStrategy_1.CacheSeconds)());
18
8
  }
19
- exports.generateCacheControlHeader = generateCacheControlHeader;
9
+ exports.generateSubRequestCacheControlHeader = generateSubRequestCacheControlHeader;
20
10
  /**
21
11
  * Use a preview header during development.
22
12
  * TODO: Support an override of this to force the cache
@@ -68,12 +58,8 @@ async function setItemInCache(key, value, userCacheOptions) {
68
58
  }
69
59
  const url = getKeyUrl(hashKey(key));
70
60
  const request = new Request(url);
71
- const cacheOptions = {
72
- ...DEFAULT_SUBREQUEST_CACHE_OPTIONS,
73
- ...(userCacheOptions !== null && userCacheOptions !== void 0 ? userCacheOptions : {}),
74
- };
75
61
  const headers = new Headers({
76
- 'cache-control': generateCacheControlHeader(cacheOptions),
62
+ 'cache-control': generateSubRequestCacheControlHeader(userCacheOptions),
77
63
  });
78
64
  const response = new Response(JSON.stringify(value), { headers });
79
65
  /**
@@ -1,22 +1,22 @@
1
- import { IncomingMessage, NextFunction } from 'connect';
2
- import http from 'http';
3
- import { ViteDevServer } from 'vite';
4
- import { ShopifyConfig } from '../types';
1
+ import type { IncomingMessage, NextFunction } from 'connect';
2
+ import type { ServerResponse } from 'http';
3
+ import type { ViteDevServer } from 'vite';
4
+ import type { ShopifyConfig } from '../types';
5
5
  declare type HydrogenMiddlewareArgs = {
6
6
  dev?: boolean;
7
7
  shopifyConfig?: ShopifyConfig;
8
8
  indexTemplate: string | ((url: string) => Promise<string>);
9
- getServerEntrypoint: () => Record<string, any> | Promise<Record<string, any>>;
9
+ getServerEntrypoint: () => any;
10
10
  devServer?: ViteDevServer;
11
11
  cache?: Cache;
12
12
  };
13
13
  export declare function graphiqlMiddleware({ shopifyConfig, dev, }: {
14
14
  shopifyConfig: ShopifyConfig;
15
15
  dev: boolean;
16
- }): (request: IncomingMessage, response: http.ServerResponse, next: NextFunction) => Promise<void>;
16
+ }): (request: IncomingMessage, response: ServerResponse, next: NextFunction) => Promise<void>;
17
17
  /**
18
18
  * Provides middleware to Node.js Express-like servers. Used by the Hydrogen
19
19
  * Vite dev server plugin as well as production Node.js implementation.
20
20
  */
21
- export declare function hydrogenMiddleware({ dev, cache, indexTemplate, getServerEntrypoint, devServer, }: HydrogenMiddlewareArgs): (request: IncomingMessage, response: http.ServerResponse, next: NextFunction) => Promise<void>;
21
+ export declare function hydrogenMiddleware({ dev, cache, indexTemplate, getServerEntrypoint, devServer, }: HydrogenMiddlewareArgs): (request: IncomingMessage, response: ServerResponse, next: NextFunction) => Promise<void>;
22
22
  export {};
@@ -18,13 +18,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
18
18
  __setModuleDefault(result, mod);
19
19
  return result;
20
20
  };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
21
  Object.defineProperty(exports, "__esModule", { value: true });
25
22
  exports.hydrogenMiddleware = exports.graphiqlMiddleware = void 0;
26
23
  const graphiql_1 = require("./graphiql");
27
- const handle_event_1 = __importDefault(require("../handle-event"));
28
24
  function graphiqlMiddleware({ shopifyConfig, dev, }) {
29
25
  return async function (request, response, next) {
30
26
  const graphiqlRequest = dev && isGraphiqlRequest(request);
@@ -40,51 +36,23 @@ exports.graphiqlMiddleware = graphiqlMiddleware;
40
36
  * Vite dev server plugin as well as production Node.js implementation.
41
37
  */
42
38
  function hydrogenMiddleware({ dev, cache, indexTemplate, getServerEntrypoint, devServer, }) {
39
+ /**
40
+ * We're running in the Node.js runtime without access to `fetch`,
41
+ * which is needed for proxy requests and server-side API requests.
42
+ */
43
+ const webPolyfills = !globalThis.fetch || !globalThis.ReadableStream
44
+ ? Promise.resolve().then(() => __importStar(require('../utilities/web-api-polyfill'))) : undefined;
43
45
  return async function (request, response, next) {
44
- const url = new URL('http://' + request.headers.host + request.originalUrl);
46
+ var _a, _b, _c;
45
47
  try {
46
- /**
47
- * We're running in the Node.js runtime without access to `fetch`,
48
- * which is needed for proxy requests and server-side API requests.
49
- */
50
- if (!globalThis.fetch) {
51
- const fetch = await Promise.resolve().then(() => __importStar(require('node-fetch')));
52
- const { default: AbortController } = await Promise.resolve().then(() => __importStar(require('abort-controller')));
53
- // @ts-ignore
54
- globalThis.fetch = fetch;
55
- // @ts-ignore
56
- globalThis.Request = fetch.Request;
57
- // @ts-ignore
58
- globalThis.Response = fetch.Response;
59
- // @ts-ignore
60
- globalThis.Headers = fetch.Headers;
61
- // @ts-ignore
62
- globalThis.AbortController = AbortController;
63
- }
64
- if (!globalThis.ReadableStream) {
65
- const { ReadableStream, WritableStream, TransformStream } = await Promise.resolve().then(() => __importStar(require('web-streams-polyfill/ponyfill')));
66
- Object.assign(globalThis, {
67
- ReadableStream,
68
- WritableStream,
69
- TransformStream,
70
- });
71
- }
72
- /**
73
- * Dynamically import ServerComponentResponse after the `fetch`
74
- * polyfill has loaded above.
75
- */
76
- const { ServerComponentRequest } = await Promise.resolve().then(() => __importStar(require('./Hydration/ServerComponentRequest.server')));
77
- const eventResponse = await (0, handle_event_1.default)(
78
- /**
79
- * Mimic a `FetchEvent`
80
- */
81
- {}, {
82
- request: new ServerComponentRequest(request),
83
- entrypoint: await getServerEntrypoint(),
84
- indexTemplate,
85
- streamableResponse: response,
48
+ await webPolyfills;
49
+ const entrypoint = await getServerEntrypoint();
50
+ const handleRequest = (_a = entrypoint.default) !== null && _a !== void 0 ? _a : entrypoint;
51
+ const eventResponse = await handleRequest(request, {
86
52
  dev,
87
53
  cache,
54
+ indexTemplate,
55
+ streamableResponse: response,
88
56
  });
89
57
  /**
90
58
  * If a `Response` was returned, that means it was not streamed.
@@ -114,7 +82,7 @@ function hydrogenMiddleware({ dev, cache, indexTemplate, getServerEntrypoint, de
114
82
  */
115
83
  try {
116
84
  const template = typeof indexTemplate === 'function'
117
- ? await indexTemplate(url.toString())
85
+ ? await indexTemplate((_c = (_b = request.originalUrl) !== null && _b !== void 0 ? _b : request.url) !== null && _c !== void 0 ? _c : '')
118
86
  : indexTemplate;
119
87
  const html = template.replace(`<div id="root"></div>`, `<div id="root"><pre><code>${e.stack}</code></pre></div>`);
120
88
  response.write(html);
@@ -1,14 +1,36 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
22
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
23
  };
5
24
  Object.defineProperty(exports, "__esModule", { value: true });
6
25
  const vite_plugin_hydrogen_config_1 = __importDefault(require("./plugins/vite-plugin-hydrogen-config"));
7
- const vite_plugin_hydrogen_middleware_1 = __importDefault(require("./plugins/vite-plugin-hydrogen-middleware"));
26
+ const vite_plugin_hydrogen_middleware_1 = __importStar(require("./plugins/vite-plugin-hydrogen-middleware"));
27
+ const vite_plugin_hydrogen_client_middleware_1 = __importDefault(require("./plugins/vite-plugin-hydrogen-client-middleware"));
28
+ const vite_plugin_platform_entry_1 = __importDefault(require("./plugins/vite-plugin-platform-entry"));
8
29
  // @ts-ignore
9
30
  const plugin_1 = __importDefault(require("@shopify/hydrogen/vendor/react-server-dom-vite/plugin"));
10
31
  const vite_plugin_ssr_interop_1 = __importDefault(require("./plugins/vite-plugin-ssr-interop"));
11
32
  const vite_plugin_purge_query_cache_1 = __importDefault(require("./plugins/vite-plugin-purge-query-cache"));
33
+ const vite_plugin_hydration_auto_import_1 = __importDefault(require("./plugins/vite-plugin-hydration-auto-import"));
12
34
  const vite_plugin_inspect_1 = __importDefault(require("vite-plugin-inspect"));
13
35
  const plugin_react_1 = __importDefault(require("@vitejs/plugin-react"));
14
36
  const path_1 = __importDefault(require("path"));
@@ -16,17 +38,25 @@ exports.default = (shopifyConfig, pluginOptions = {}) => {
16
38
  return [
17
39
  process.env.VITE_INSPECT && (0, vite_plugin_inspect_1.default)(),
18
40
  (0, vite_plugin_hydrogen_config_1.default)(),
41
+ (0, vite_plugin_hydrogen_client_middleware_1.default)(),
19
42
  (0, vite_plugin_hydrogen_middleware_1.default)(shopifyConfig, pluginOptions),
20
43
  (0, plugin_react_1.default)(),
44
+ (0, vite_plugin_hydration_auto_import_1.default)(),
21
45
  (0, vite_plugin_ssr_interop_1.default)(),
22
46
  (0, plugin_1.default)({
23
47
  clientComponentPaths: [
24
48
  path_1.default.join(path_1.default.dirname(require.resolve('@shopify/hydrogen/package.json'))),
25
49
  ],
26
- isServerComponentImporterAllowed(importer) {
27
- return /(handle-worker-event|index)\.js/.test(importer);
50
+ isServerComponentImporterAllowed(importer, source) {
51
+ // Always allow the entry server (e.g. App.server.jsx) to be imported
52
+ // in other files such as worker.js or server.js.
53
+ const entryServer = process.env.HYDROGEN_SERVER_ENTRY || vite_plugin_hydrogen_middleware_1.HYDROGEN_DEFAULT_SERVER_ENTRY;
54
+ return (source.includes(entryServer) ||
55
+ // TODO update this after handleEvent is replaced with handleRequest
56
+ /(handle-worker-event|index|entry-server)\.js/.test(importer));
28
57
  },
29
58
  }),
59
+ (0, vite_plugin_platform_entry_1.default)(),
30
60
  pluginOptions.purgeQueryCacheOnBuild && (0, vite_plugin_purge_query_cache_1.default)(),
31
61
  ];
32
62
  };
@@ -0,0 +1,3 @@
1
+ import { Plugin } from 'vite';
2
+ declare const _default: () => Plugin;
3
+ export default _default;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vite_1 = require("vite");
7
+ const path_1 = __importDefault(require("path"));
8
+ const magic_string_1 = __importDefault(require("magic-string"));
9
+ const HYDROGEN_ENTRY_FILE = 'hydrogen-entry-client.jsx';
10
+ exports.default = () => {
11
+ let config;
12
+ return {
13
+ name: 'vite-plugin-hydration-auto-import',
14
+ enforce: 'pre',
15
+ configResolved(_config) {
16
+ config = _config;
17
+ },
18
+ resolveId(id, importer) {
19
+ if ((/^\/?@shopify\/hydrogen\/entry-client$/.test(id) ||
20
+ id.endsWith(path_1.default.sep + HYDROGEN_ENTRY_FILE)) &&
21
+ (0, vite_1.normalizePath)(importer || '').endsWith('/index.html')) {
22
+ // Make this virtual import look like a local project file
23
+ // to enable React Refresh normally.
24
+ return path_1.default.join(config.root, HYDROGEN_ENTRY_FILE + '?virtual');
25
+ }
26
+ return null;
27
+ },
28
+ load(id) {
29
+ if (id.includes(HYDROGEN_ENTRY_FILE + '?virtual')) {
30
+ const code = new magic_string_1.default(`import renderHydrogen from '@shopify/hydrogen/entry-client';\n` +
31
+ `export default renderHydrogen((props) => props.children);`);
32
+ return {
33
+ code: code.toString(),
34
+ map: code.generateMap({
35
+ file: HYDROGEN_ENTRY_FILE,
36
+ source: HYDROGEN_ENTRY_FILE,
37
+ }),
38
+ };
39
+ }
40
+ return null;
41
+ },
42
+ };
43
+ };
@@ -0,0 +1,9 @@
1
+ import { type Plugin } from 'vite';
2
+ declare const _default: () => Plugin;
3
+ /**
4
+ * This dev server middleware prevents Vite from applying immutable cache control headers to client
5
+ * components. These client components are part of the user's local source, but since they are
6
+ * referenced via import globs in the `react-dom-server-vite` NPM package, Vite assumes they
7
+ * are 3P deps that can be cached. This middleware responds to the requests early with `no-cache`.
8
+ */
9
+ export default _default;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vite_1 = require("vite");
4
+ /**
5
+ * This dev server middleware prevents Vite from applying immutable cache control headers to client
6
+ * components. These client components are part of the user's local source, but since they are
7
+ * referenced via import globs in the `react-dom-server-vite` NPM package, Vite assumes they
8
+ * are 3P deps that can be cached. This middleware responds to the requests early with `no-cache`.
9
+ */
10
+ exports.default = () => {
11
+ return {
12
+ name: 'vite-plugin-hydrogen-client-middleware',
13
+ enforce: 'pre',
14
+ configureServer(server) {
15
+ server.middlewares.use(async (req, res, next) => {
16
+ const url = req.url;
17
+ try {
18
+ if (url.includes('.client.js') &&
19
+ url.includes('?v=') &&
20
+ !url.includes('node_modules')) {
21
+ const result = await server.transformRequest(url, { html: false });
22
+ if (result) {
23
+ return (0, vite_1.send)(req, res, result.code, 'js', {
24
+ etag: result.etag,
25
+ cacheControl: 'no-cache',
26
+ headers: server.config.server.headers,
27
+ map: result.map,
28
+ });
29
+ }
30
+ }
31
+ }
32
+ catch (e) {
33
+ next(e);
34
+ }
35
+ next();
36
+ });
37
+ },
38
+ };
39
+ };
@@ -1,10 +1,11 @@
1
1
  import { Plugin } from 'vite';
2
2
  import type { HydrogenVitePluginOptions, ShopifyConfig } from '../../types';
3
+ export declare const HYDROGEN_DEFAULT_SERVER_ENTRY = "/src/App.server";
3
4
  declare const _default: (shopifyConfig: ShopifyConfig, pluginOptions: HydrogenVitePluginOptions) => Plugin;
4
5
  export default _default;
5
6
  declare global {
6
7
  var Oxygen: {
7
- env: Record<string, string | undefined>;
8
+ env: any;
8
9
  [key: string]: any;
9
10
  };
10
11
  }
@@ -3,12 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HYDROGEN_DEFAULT_SERVER_ENTRY = void 0;
6
7
  const vite_1 = require("vite");
7
8
  const body_parser_1 = __importDefault(require("body-parser"));
8
9
  const path_1 = __importDefault(require("path"));
9
10
  const fs_1 = require("fs");
10
11
  const middleware_1 = require("../middleware");
11
12
  const in_memory_1 = require("../cache/in-memory");
13
+ exports.HYDROGEN_DEFAULT_SERVER_ENTRY = '/src/App.server';
12
14
  exports.default = (shopifyConfig, pluginOptions) => {
13
15
  return {
14
16
  name: 'vite-plugin-hydrogen-middleware',
@@ -36,7 +38,8 @@ exports.default = (shopifyConfig, pluginOptions) => {
36
38
  dev: true,
37
39
  shopifyConfig,
38
40
  indexTemplate: getIndexTemplate,
39
- getServerEntrypoint: async () => await server.ssrLoadModule(process.env.HYDROGEN_SERVER_ENTRY || '/src/entry-server'),
41
+ getServerEntrypoint: () => server.ssrLoadModule(process.env.HYDROGEN_SERVER_ENTRY ||
42
+ exports.HYDROGEN_DEFAULT_SERVER_ENTRY),
40
43
  devServer: server,
41
44
  cache: (pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.devCache)
42
45
  ? new in_memory_1.InMemoryCache()
@@ -0,0 +1,3 @@
1
+ import { Plugin } from 'vite';
2
+ declare const _default: () => Plugin;
3
+ export default _default;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vite_1 = require("vite");
7
+ const vite_plugin_hydrogen_middleware_1 = require("./vite-plugin-hydrogen-middleware");
8
+ const magic_string_1 = __importDefault(require("magic-string"));
9
+ const path_1 = __importDefault(require("path"));
10
+ const fs_1 = __importDefault(require("fs"));
11
+ const SSR_BUNDLE_NAME = 'index.js';
12
+ exports.default = () => {
13
+ let config;
14
+ let isESM;
15
+ return {
16
+ name: 'vite-plugin-platform-entry',
17
+ enforce: 'pre',
18
+ configResolved(_config) {
19
+ config = _config;
20
+ if (config.build.ssr) {
21
+ const { output = {} } = config.build.rollupOptions || {};
22
+ const { format = '' } = (Array.isArray(output) ? output[0] : output) || {};
23
+ isESM = Boolean(process.env.WORKER) || ['es', 'esm'].includes(format);
24
+ }
25
+ },
26
+ resolveId(source, importer) {
27
+ if ((0, vite_1.normalizePath)(source).includes('@shopify/hydrogen/platforms/')) {
28
+ const hydrogenPath = path_1.default.dirname(require.resolve('@shopify/hydrogen/package.json'));
29
+ const platformEntryName = source.split(path_1.default.sep).pop() || '';
30
+ const platformEntryPath = path_1.default.resolve(hydrogenPath, 'dist', 'esnext', 'platforms', platformEntryName);
31
+ return this.resolve(platformEntryPath, importer, {
32
+ skipSelf: true,
33
+ });
34
+ }
35
+ return null;
36
+ },
37
+ transform(code, id) {
38
+ if ((0, vite_1.normalizePath)(id).includes('@shopify/hydrogen/dist/esnext/platforms/')) {
39
+ code = code
40
+ .replace('__SERVER_ENTRY__', process.env.HYDROGEN_SERVER_ENTRY || vite_plugin_hydrogen_middleware_1.HYDROGEN_DEFAULT_SERVER_ENTRY)
41
+ .replace('__INDEX_TEMPLATE__', (0, vite_1.normalizePath)(path_1.default.resolve(config.root, config.build.outDir, '..', 'client', 'index.html')));
42
+ const ms = new magic_string_1.default(code);
43
+ return {
44
+ code: ms.toString(),
45
+ map: ms.generateMap({ file: id, source: id }),
46
+ };
47
+ }
48
+ },
49
+ generateBundle(options, bundle) {
50
+ if (config.build.ssr) {
51
+ const [[key, value]] = Object.entries(bundle);
52
+ delete bundle[key];
53
+ value.fileName = SSR_BUNDLE_NAME;
54
+ bundle[SSR_BUNDLE_NAME] = value;
55
+ // This ensures the file has a proper
56
+ // default export instead of exporting an
57
+ // object containing a 'default' property.
58
+ if (value.type === 'chunk' && !isESM) {
59
+ value.code = value.code.replace(/((^|;)[\s]*)exports\[['"]default['"]\]\s*=/m, '$1module.exports =');
60
+ }
61
+ }
62
+ },
63
+ writeBundle(options) {
64
+ if (config.build.ssr && options.dir) {
65
+ const mainFile = `./${SSR_BUNDLE_NAME}`;
66
+ const packageJson = {
67
+ type: isESM ? 'module' : 'commonjs',
68
+ main: mainFile,
69
+ exports: { '.': mainFile, mainFile },
70
+ };
71
+ fs_1.default.writeFileSync(path_1.default.join(options.dir, 'package.json'), JSON.stringify(packageJson, null, 2), 'utf-8');
72
+ }
73
+ },
74
+ };
75
+ };
@@ -0,0 +1,21 @@
1
+ import type { Writable } from 'stream';
2
+ export declare const rscRenderToReadableStream: (App: JSX.Element) => ReadableStream<Uint8Array>;
3
+ export declare const createFromReadableStream: (rs: ReadableStream<Uint8Array>) => {
4
+ readRoot: () => JSX.Element;
5
+ };
6
+ declare type StreamOptions = {
7
+ nonce?: string;
8
+ onCompleteShell?: () => void;
9
+ onCompleteAll?: () => void;
10
+ onError?: (error: Error) => void;
11
+ bootstrapScripts?: string[];
12
+ bootstrapModules?: string[];
13
+ };
14
+ export declare const ssrRenderToPipeableStream: (App: JSX.Element, options: StreamOptions) => {
15
+ pipe: Writable['pipe'];
16
+ };
17
+ export declare const ssrRenderToReadableStream: (App: JSX.Element, options: StreamOptions) => ReadableStream<Uint8Array>;
18
+ export declare function supportsReadableStream(): boolean;
19
+ export declare function isStreamingSupported(): Promise<boolean>;
20
+ export declare function bufferReadableStream(reader: ReadableStreamDefaultReader, cb?: (chunk: string) => void): Promise<string>;
21
+ export {};
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bufferReadableStream = exports.isStreamingSupported = exports.supportsReadableStream = exports.ssrRenderToReadableStream = exports.ssrRenderToPipeableStream = exports.createFromReadableStream = exports.rscRenderToReadableStream = void 0;
4
+ const server_1 = require("react-dom/server");
5
+ // @ts-ignore
6
+ const writer_browser_server_1 = require("@shopify/hydrogen/vendor/react-server-dom-vite/writer.browser.server");
7
+ // @ts-ignore
8
+ const react_server_dom_vite_1 = require("@shopify/hydrogen/vendor/react-server-dom-vite");
9
+ exports.rscRenderToReadableStream = writer_browser_server_1.renderToReadableStream;
10
+ exports.createFromReadableStream = react_server_dom_vite_1.createFromReadableStream;
11
+ exports.ssrRenderToPipeableStream = server_1.renderToPipeableStream;
12
+ exports.ssrRenderToReadableStream = server_1.renderToReadableStream;
13
+ function supportsReadableStream() {
14
+ try {
15
+ new ReadableStream();
16
+ return true;
17
+ }
18
+ catch (_) {
19
+ return false;
20
+ }
21
+ }
22
+ exports.supportsReadableStream = supportsReadableStream;
23
+ let cachedStreamingSupport;
24
+ async function isStreamingSupported() {
25
+ if (cachedStreamingSupport === undefined) {
26
+ try {
27
+ const rs = new ReadableStream({
28
+ start(controller) {
29
+ controller.close();
30
+ },
31
+ });
32
+ // This will throw in CFW until streaming
33
+ // is supported. It works in Miniflare.
34
+ await new Response(rs).text();
35
+ cachedStreamingSupport = true;
36
+ }
37
+ catch (_) {
38
+ cachedStreamingSupport = false;
39
+ }
40
+ }
41
+ return cachedStreamingSupport;
42
+ }
43
+ exports.isStreamingSupported = isStreamingSupported;
44
+ async function bufferReadableStream(reader, cb) {
45
+ const decoder = new TextDecoder();
46
+ let result = '';
47
+ while (true) {
48
+ const { done, value } = await reader.read();
49
+ if (done)
50
+ break;
51
+ const stringValue = typeof value === 'string' ? value : decoder.decode(value);
52
+ result += stringValue;
53
+ if (cb) {
54
+ cb(stringValue);
55
+ }
56
+ }
57
+ return result;
58
+ }
59
+ exports.bufferReadableStream = bufferReadableStream;
@@ -1,34 +1,29 @@
1
1
  /// <reference types="node" />
2
- import { ServerResponse } from 'http';
2
+ import type { ServerResponse } from 'http';
3
+ import type { Logger } from './utilities/log/log';
3
4
  import type { ServerComponentRequest } from './framework/Hydration/ServerComponentRequest.server';
5
+ import type { ServerComponentResponse } from './framework/Hydration/ServerComponentResponse.server';
4
6
  import type { Metafield, Image, MediaContentType } from './graphql/types/types';
5
- import { ApiRouteMatch } from './utilities/apiRoutes';
6
- import { Logger } from './utilities/log/log';
7
- export declare type Renderer = (url: URL, options: {
7
+ declare type CommonOptions = {
8
+ App: any;
9
+ pages?: ImportGlobEagerOutput;
8
10
  request: ServerComponentRequest;
11
+ componentResponse: ServerComponentResponse;
12
+ log: Logger;
13
+ dev?: boolean;
14
+ };
15
+ export declare type RendererOptions = CommonOptions & {
9
16
  template: string;
10
17
  nonce?: string;
11
- dev?: boolean;
12
- }) => Promise<Response>;
13
- export declare type Streamer = (url: URL, options: {
14
- request: ServerComponentRequest;
18
+ };
19
+ export declare type StreamerOptions = CommonOptions & {
15
20
  response?: ServerResponse;
16
21
  template: string;
17
22
  nonce?: string;
18
- dev?: boolean;
19
- }) => void;
20
- export declare type Hydrator = (url: URL, options: {
21
- request: ServerComponentRequest;
23
+ };
24
+ export declare type HydratorOptions = CommonOptions & {
22
25
  response?: ServerResponse;
23
26
  isStreamable: boolean;
24
- dev?: boolean;
25
- }) => void;
26
- export declare type EntryServerHandler = {
27
- render: Renderer;
28
- stream: Streamer;
29
- hydrate: Hydrator;
30
- getApiRoute: (url: URL) => ApiRouteMatch | null;
31
- log: Logger;
32
27
  };
33
28
  export declare type ShopifyConfig = {
34
29
  defaultLocale?: string;
@@ -47,7 +42,6 @@ export declare type ServerHandlerConfig = {
47
42
  export declare type ClientHandlerConfig = {
48
43
  shopifyConfig: ShopifyConfig;
49
44
  };
50
- export declare type ServerHandler = (App: any, config: ServerHandlerConfig) => EntryServerHandler;
51
45
  export declare type ClientHandler = (App: any, config: ClientHandlerConfig) => Promise<void>;
52
46
  export interface GraphQLConnection<T> {
53
47
  edges?: {
@@ -58,7 +52,7 @@ export interface MediaImage {
58
52
  __typename?: string;
59
53
  id?: string;
60
54
  mediaContentType?: MediaContentType;
61
- image?: Pick<Image, 'altText' | 'url' | 'id' | 'width' | 'height'>;
55
+ data?: Pick<Image, 'altText' | 'url' | 'id' | 'width' | 'height'>;
62
56
  }
63
57
  interface ProductVariant {
64
58
  __typename?: string;
@@ -83,14 +77,20 @@ export interface Measurement {
83
77
  value: number;
84
78
  }
85
79
  export declare type QueryKey = string | readonly unknown[];
86
- export interface CacheOptions {
87
- private?: boolean;
80
+ export declare type NoStoreStrategy = {
81
+ mode: string;
82
+ };
83
+ export interface AllCacheOptions {
84
+ mode?: string;
88
85
  maxAge?: number;
89
86
  staleWhileRevalidate?: number;
90
- noStore?: boolean;
87
+ sMaxAge?: number;
88
+ staleIfError?: number;
91
89
  }
90
+ export declare type CachingStrategy = NoStoreStrategy | AllCacheOptions;
92
91
  export interface HydrogenVitePluginOptions {
93
92
  devCache?: boolean;
94
93
  purgeQueryCacheOnBuild?: boolean;
95
94
  }
95
+ export declare type PreloadOptions = boolean | string;
96
96
  export {};
@@ -1,5 +1,4 @@
1
1
  import { ImportGlobEagerOutput } from '../types';
2
- import { Logger } from '../utilities/log/log';
3
2
  declare type RouteParams = Record<string, string>;
4
3
  declare type RequestOptions = {
5
4
  params: RouteParams;
@@ -17,5 +16,5 @@ export declare type ApiRouteMatch = {
17
16
  };
18
17
  export declare function getApiRoutesFromPages(pages: ImportGlobEagerOutput | undefined, topLevelPath?: string): Array<HydrogenApiRoute>;
19
18
  export declare function getApiRouteFromURL(url: URL, routes: Array<HydrogenApiRoute>): ApiRouteMatch | null;
20
- export declare function renderApiRoute(request: Request, route: ApiRouteMatch, log: Logger): Promise<Response>;
19
+ export declare function renderApiRoute(request: Request, route: ApiRouteMatch): Promise<Response>;
21
20
  export {};