@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
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.renderApiRoute = exports.getApiRouteFromURL = exports.getApiRoutesFromPages = void 0;
4
4
  const matchPath_1 = require("./matchPath");
5
- const log_1 = require("../utilities/log/log");
5
+ const log_1 = require("../utilities/log/");
6
6
  let memoizedRoutes = [];
7
7
  let memoizedPages = {};
8
8
  function getApiRoutesFromPages(pages, topLevelPath = '*') {
@@ -66,8 +66,9 @@ function getApiRouteFromURL(url, routes) {
66
66
  };
67
67
  }
68
68
  exports.getApiRouteFromURL = getApiRouteFromURL;
69
- async function renderApiRoute(request, route, log) {
69
+ async function renderApiRoute(request, route) {
70
70
  let response;
71
+ const log = (0, log_1.getLoggerWithContext)(request);
71
72
  try {
72
73
  response = await route.resource(request, { params: route.params });
73
74
  if (!(response instanceof Response)) {
@@ -87,7 +88,7 @@ async function renderApiRoute(request, route, log) {
87
88
  log.error(e);
88
89
  response = new Response('Error processing: ' + request.url, { status: 500 });
89
90
  }
90
- (0, log_1.logServerResponse)('api', log, request, response.status);
91
+ (0, log_1.logServerResponse)('api', request, response.status);
91
92
  return response;
92
93
  }
93
94
  exports.renderApiRoute = renderApiRoute;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Determines if the request is from a bot, using the URL and User Agent
3
+ */
4
+ export declare function isBotUA(url: URL, userAgent: string | null): boolean;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBotUA = void 0;
4
+ /**
5
+ * An alphabetized list of User Agents of known bots, combined from lists found at:
6
+ * https://github.com/vercel/next.js/blob/d87dc2b5a0b3fdbc0f6806a47be72bad59564bd0/packages/next/server/utils.ts#L18-L22
7
+ * https://github.com/GoogleChrome/rendertron/blob/6f681688737846b28754fbfdf5db173846a826df/middleware/src/middleware.ts#L24-L41
8
+ */
9
+ const botUserAgents = [
10
+ 'AdsBot-Google',
11
+ 'applebot',
12
+ 'Baiduspider',
13
+ 'baiduspider',
14
+ 'bingbot',
15
+ 'Bingbot',
16
+ 'BingPreview',
17
+ 'bitlybot',
18
+ 'Discordbot',
19
+ 'DuckDuckBot',
20
+ 'Embedly',
21
+ 'facebookcatalog',
22
+ 'facebookexternalhit',
23
+ 'Google-PageRenderer',
24
+ 'Googlebot',
25
+ 'googleweblight',
26
+ 'ia_archive',
27
+ 'LinkedInBot',
28
+ 'Mediapartners-Google',
29
+ 'outbrain',
30
+ 'pinterest',
31
+ 'quora link preview',
32
+ 'redditbot',
33
+ 'rogerbot',
34
+ 'showyoubot',
35
+ 'SkypeUriPreview',
36
+ 'Slackbot',
37
+ 'Slurp',
38
+ 'sogou',
39
+ 'Storebot-Google',
40
+ 'TelegramBot',
41
+ 'tumblr',
42
+ 'Twitterbot',
43
+ 'vkShare',
44
+ 'W3C_Validator',
45
+ 'WhatsApp',
46
+ 'yandex',
47
+ ];
48
+ /**
49
+ * Creates a regex based on the botUserAgents array
50
+ */
51
+ const botUARegex = new RegExp(botUserAgents.join('|'), 'i');
52
+ /**
53
+ * Determines if the request is from a bot, using the URL and User Agent
54
+ */
55
+ function isBotUA(url, userAgent) {
56
+ return (url.searchParams.has('_bot') || (!!userAgent && botUARegex.test(userAgent)));
57
+ }
58
+ exports.isBotUA = isBotUA;
@@ -0,0 +1,6 @@
1
+ export declare function defer<T = unknown | undefined>(): {
2
+ promise: Promise<T>;
3
+ status: 'pending' | 'resolved' | 'rejected';
4
+ resolve: (value: T) => void;
5
+ reject: (reason?: any) => void;
6
+ };
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defer = void 0;
4
+ function defer() {
5
+ const deferred = { status: 'pending' };
6
+ deferred.promise = new Promise((resolve, reject) => {
7
+ deferred.resolve = (value) => {
8
+ deferred.status = 'resolved';
9
+ return resolve(value);
10
+ };
11
+ deferred.reject = (error) => {
12
+ deferred.status = 'rejected';
13
+ return reject(error);
14
+ };
15
+ });
16
+ return deferred;
17
+ }
18
+ exports.defer = defer;
@@ -0,0 +1 @@
1
+ export declare function getErrorMarkup(error: Error): string;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getErrorMarkup = void 0;
4
+ function getErrorMarkup(error) {
5
+ return `<script type="module">
6
+ import {ErrorOverlay} from '/@vite/client';
7
+ document.body.appendChild(new ErrorOverlay(${JSON.stringify(error, Object.getOwnPropertyNames(error)).replace(/</g, '\\u003c')}));
8
+ </script>`;
9
+ }
10
+ exports.getErrorMarkup = getErrorMarkup;
@@ -0,0 +1,4 @@
1
+ export { log, setLogger, setLoggerOptions, getLoggerWithContext, Logger, logServerResponse, resetLogger, } from './log';
2
+ export { collectQueryCacheControlHeaders, logCacheControlHeaders, } from './log-cache-header';
3
+ export { logCacheApiStatus } from './log-cache-api-status';
4
+ export { collectQueryTimings, logQueryTimings } from './log-query-timeline';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logQueryTimings = exports.collectQueryTimings = exports.logCacheApiStatus = exports.logCacheControlHeaders = exports.collectQueryCacheControlHeaders = exports.resetLogger = exports.logServerResponse = exports.getLoggerWithContext = exports.setLoggerOptions = exports.setLogger = exports.log = void 0;
4
+ var log_1 = require("./log");
5
+ Object.defineProperty(exports, "log", { enumerable: true, get: function () { return log_1.log; } });
6
+ Object.defineProperty(exports, "setLogger", { enumerable: true, get: function () { return log_1.setLogger; } });
7
+ Object.defineProperty(exports, "setLoggerOptions", { enumerable: true, get: function () { return log_1.setLoggerOptions; } });
8
+ Object.defineProperty(exports, "getLoggerWithContext", { enumerable: true, get: function () { return log_1.getLoggerWithContext; } });
9
+ Object.defineProperty(exports, "logServerResponse", { enumerable: true, get: function () { return log_1.logServerResponse; } });
10
+ Object.defineProperty(exports, "resetLogger", { enumerable: true, get: function () { return log_1.resetLogger; } });
11
+ var log_cache_header_1 = require("./log-cache-header");
12
+ Object.defineProperty(exports, "collectQueryCacheControlHeaders", { enumerable: true, get: function () { return log_cache_header_1.collectQueryCacheControlHeaders; } });
13
+ Object.defineProperty(exports, "logCacheControlHeaders", { enumerable: true, get: function () { return log_cache_header_1.logCacheControlHeaders; } });
14
+ var log_cache_api_status_1 = require("./log-cache-api-status");
15
+ Object.defineProperty(exports, "logCacheApiStatus", { enumerable: true, get: function () { return log_cache_api_status_1.logCacheApiStatus; } });
16
+ var log_query_timeline_1 = require("./log-query-timeline");
17
+ Object.defineProperty(exports, "collectQueryTimings", { enumerable: true, get: function () { return log_query_timeline_1.collectQueryTimings; } });
18
+ Object.defineProperty(exports, "logQueryTimings", { enumerable: true, get: function () { return log_query_timeline_1.logQueryTimings; } });
@@ -0,0 +1 @@
1
+ export declare function logCacheApiStatus(status: string | null, url: string): void;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logCacheApiStatus = void 0;
4
+ const utils_1 = require("./utils");
5
+ const kolorist_1 = require("kolorist");
6
+ const _1 = require(".");
7
+ function logCacheApiStatus(status, url) {
8
+ if (!_1.log.options().showCacheApiStatus) {
9
+ return;
10
+ }
11
+ _1.log.debug((0, kolorist_1.gray)(`[Cache] ${status === null || status === void 0 ? void 0 : status.padEnd(6)} query ${(0, utils_1.findQueryName)(url)}`));
12
+ }
13
+ exports.logCacheApiStatus = logCacheApiStatus;
@@ -0,0 +1,10 @@
1
+ import { ServerComponentRequest } from '../../framework/Hydration/ServerComponentRequest.server';
2
+ import { ServerComponentResponse } from '../../framework/Hydration/ServerComponentResponse.server';
3
+ import { QueryKey } from '../../types';
4
+ import type { RenderType } from './log';
5
+ export declare type QueryCacheControlHeaders = {
6
+ name: string;
7
+ header: string | null;
8
+ };
9
+ export declare function collectQueryCacheControlHeaders(request: ServerComponentRequest, queryKey: QueryKey, cacheControlHeader: string | null): void;
10
+ export declare function logCacheControlHeaders(type: RenderType, request: ServerComponentRequest, response?: ServerComponentResponse): void;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logCacheControlHeaders = exports.collectQueryCacheControlHeaders = void 0;
4
+ const cache_1 = require("../../framework/cache");
5
+ const utils_1 = require("./utils");
6
+ const kolorist_1 = require("kolorist");
7
+ const log_1 = require("./log");
8
+ const color = kolorist_1.gray;
9
+ function collectQueryCacheControlHeaders(request, queryKey, cacheControlHeader) {
10
+ request.ctx.queryCacheControl.push({
11
+ name: (0, utils_1.findQueryName)((0, cache_1.hashKey)(queryKey)),
12
+ header: cacheControlHeader,
13
+ });
14
+ }
15
+ exports.collectQueryCacheControlHeaders = collectQueryCacheControlHeaders;
16
+ function logCacheControlHeaders(type, request, response) {
17
+ const log = (0, log_1.getLoggerWithContext)(request);
18
+ if (!log.options().showCacheControlHeader) {
19
+ return;
20
+ }
21
+ log.debug(color(`┌── Cache control header for ${(0, utils_1.parseUrl)(type, request.url)}`));
22
+ if (response) {
23
+ log.debug(color(`│ ${response.cacheControlHeader}`));
24
+ }
25
+ const queryList = request.ctx.queryCacheControl;
26
+ const longestQueryNameLength = queryList.reduce((max, query) => Math.max(max, query.name.length), 0);
27
+ if (queryList.length > 0) {
28
+ log.debug(color('│'));
29
+ queryList.forEach((query) => {
30
+ log.debug(color(`│ query ${query.name.padEnd(longestQueryNameLength + 1)}${query.header}`));
31
+ });
32
+ }
33
+ log.debug(color('└──'));
34
+ }
35
+ exports.logCacheControlHeaders = logCacheControlHeaders;
@@ -0,0 +1,12 @@
1
+ import { ServerComponentRequest } from '../../framework/Hydration/ServerComponentRequest.server';
2
+ import { QueryKey } from '../../types';
3
+ import type { RenderType } from './log';
4
+ export declare type TimingType = 'requested' | 'resolved' | 'rendered' | 'preload';
5
+ export declare type QueryTiming = {
6
+ name: string;
7
+ timingType: TimingType;
8
+ timestamp: number;
9
+ duration?: number;
10
+ };
11
+ export declare function collectQueryTimings(request: ServerComponentRequest, queryKey: QueryKey, timingType: TimingType, duration?: number): void;
12
+ export declare function logQueryTimings(type: RenderType, request: ServerComponentRequest): void;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.logQueryTimings = exports.collectQueryTimings = void 0;
4
+ const cache_1 = require("../../framework/cache");
5
+ const utils_1 = require("./utils");
6
+ const kolorist_1 = require("kolorist");
7
+ const log_1 = require("./log");
8
+ const timing_1 = require("../timing");
9
+ const color = kolorist_1.gray;
10
+ const TIMING_MAPPING = {
11
+ requested: 'Requested',
12
+ rendered: 'Rendered',
13
+ resolved: 'Resolved',
14
+ preload: 'Preload',
15
+ };
16
+ function collectQueryTimings(request, queryKey, timingType, duration) {
17
+ request.ctx.queryTimings.push({
18
+ name: (0, utils_1.findQueryName)((0, cache_1.hashKey)(queryKey)),
19
+ timingType,
20
+ timestamp: (0, timing_1.getTime)(),
21
+ duration,
22
+ });
23
+ }
24
+ exports.collectQueryTimings = collectQueryTimings;
25
+ function logQueryTimings(type, request) {
26
+ const log = (0, log_1.getLoggerWithContext)(request);
27
+ if (!log.options().showQueryTiming) {
28
+ return;
29
+ }
30
+ log.debug(color(`┌── Query timings for ${(0, utils_1.parseUrl)(type, request.url)}`));
31
+ const queryList = request.ctx.queryTimings;
32
+ if (queryList.length > 0) {
33
+ const requestStartTime = request.time;
34
+ const detectSuspenseWaterfall = {};
35
+ const detectMultipleDataLoad = {};
36
+ let suspenseWaterfallDetectedCount = 0;
37
+ queryList.forEach((query, index) => {
38
+ var _a;
39
+ if (query.timingType === 'requested' || query.timingType === 'preload') {
40
+ detectSuspenseWaterfall[query.name] = true;
41
+ }
42
+ else if (query.timingType === 'rendered') {
43
+ delete detectSuspenseWaterfall[query.name];
44
+ }
45
+ else if (query.timingType === 'resolved') {
46
+ detectMultipleDataLoad[query.name] = detectMultipleDataLoad[query.name]
47
+ ? detectMultipleDataLoad[query.name] + 1
48
+ : 1;
49
+ }
50
+ const loadColor = query.timingType === 'preload' ? kolorist_1.green : color;
51
+ log.debug(color(`│ ${`${(query.timestamp - requestStartTime).toFixed(2)}ms`.padEnd(10)} ${loadColor(TIMING_MAPPING[query.timingType].padEnd(10))} ${query.name}${query.timingType === 'resolved'
52
+ ? ` (Took ${(_a = query.duration) === null || _a === void 0 ? void 0 : _a.toFixed(2)}ms)`
53
+ : ''}`));
54
+ // SSR + RSC render path generates 2 `load` and `render` for each query
55
+ // We want to avoid falsely identifying a suspense waterfall near the end
56
+ // of the query list
57
+ //
58
+ // The (index + 4) is detecting that near the end of list.
59
+ // A complete set of events for a given query is 4 entries
60
+ // │ (639.62ms) Requested Localization
61
+ // │ (993.33ms) Resolved Localization (Took 353.66ms)
62
+ // │ (993.96ms) Requested Localization <-- second time React tries to load
63
+ // │ (994.03ms) Rendered Localization
64
+ //
65
+ // so the end of list index range is 3 (one less from a set entry) + 1 (zero index)
66
+ if (queryList.length >= index + 4 &&
67
+ Object.keys(detectSuspenseWaterfall).length === 0) {
68
+ suspenseWaterfallDetectedCount++;
69
+ const warningColor = suspenseWaterfallDetectedCount === 1 ? kolorist_1.yellow : kolorist_1.red;
70
+ log.debug(`${color(`│ `)}${warningColor(`Suspense waterfall detected`)}`);
71
+ }
72
+ });
73
+ const unusedQueries = Object.keys(detectSuspenseWaterfall);
74
+ if (unusedQueries.length > 0) {
75
+ unusedQueries.forEach((queryName) => {
76
+ log.debug(`${color(`│ `)}${(0, kolorist_1.yellow)(`Unused query detected: ${queryName}`)}`);
77
+ });
78
+ }
79
+ Object.keys(detectMultipleDataLoad).forEach((queryName) => {
80
+ const count = detectMultipleDataLoad[queryName];
81
+ if (count > 1) {
82
+ log.debug(`${color(`│ `)}${(0, kolorist_1.yellow)(`Multiple data loads detected: ${queryName}`)}`);
83
+ }
84
+ });
85
+ }
86
+ log.debug(color('└──'));
87
+ }
88
+ exports.logQueryTimings = logQueryTimings;
@@ -1,18 +1,21 @@
1
1
  import { ServerComponentRequest } from '../../framework/Hydration/ServerComponentRequest.server';
2
- /** The `log` utility is a function that's used for logging debugging, warning, and error information about the application.
3
- * Use this utility by importing `log` from `@shopify/hydrogen`, or by using a `log` prop passed to each page
4
- * component. We recommend using the `log` prop passed to each page because it will associated your log to the
5
- * current request in progress.
6
- */
7
2
  export interface Logger {
8
3
  trace: (...args: Array<any>) => void;
9
4
  debug: (...args: Array<any>) => void;
10
5
  warn: (...args: Array<any>) => void;
11
6
  error: (...args: Array<any>) => void;
12
7
  fatal: (...args: Array<any>) => void;
8
+ options: () => LoggerOptions;
13
9
  }
14
- export declare function getLoggerFromContext(context: any): Logger;
10
+ export declare type LoggerOptions = {
11
+ showCacheControlHeader?: boolean;
12
+ showCacheApiStatus?: boolean;
13
+ showQueryTiming?: boolean;
14
+ };
15
+ export declare type RenderType = 'str' | 'rsc' | 'ssr' | 'api';
16
+ export declare const log: Logger;
17
+ export declare function getLoggerWithContext(context?: any): Logger;
15
18
  export declare function setLogger(newLogger: Logger): void;
19
+ export declare function setLoggerOptions(options: LoggerOptions): void;
16
20
  export declare function resetLogger(): void;
17
- export declare const log: Logger;
18
- export declare function logServerResponse(type: 'str' | 'rsc' | 'ssr' | 'api', log: Logger, request: ServerComponentRequest, responseStatus: number): void;
21
+ export declare function logServerResponse(type: RenderType, request: ServerComponentRequest, responseStatus: number): void;
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.logServerResponse = exports.log = exports.resetLogger = exports.setLogger = exports.getLoggerFromContext = void 0;
3
+ exports.logServerResponse = exports.resetLogger = exports.setLoggerOptions = exports.setLogger = exports.getLoggerWithContext = exports.log = void 0;
4
4
  const kolorist_1 = require("kolorist");
5
5
  const timing_1 = require("../timing");
6
+ const utils_1 = require("./utils");
6
7
  const defaultLogger = {
7
8
  trace(context, ...args) {
8
9
  // Re-enable following line to show trace debugging information
@@ -20,49 +21,43 @@ const defaultLogger = {
20
21
  fatal(context, ...args) {
21
22
  console.error((0, kolorist_1.red)('FATAL: '), ...args);
22
23
  },
24
+ options: () => ({}),
23
25
  };
24
- let logger = defaultLogger;
25
- function getLoggerFromContext(context) {
26
+ globalThis.__logger = defaultLogger;
27
+ function buildLogger() {
26
28
  return {
27
- trace: (...args) => logger.trace(context, ...args),
28
- debug: (...args) => logger.debug(context, ...args),
29
- warn: (...args) => logger.warn(context, ...args),
30
- error: (...args) => logger.error(context, ...args),
31
- fatal: (...args) => logger.fatal(context, ...args),
29
+ trace: (...args) => globalThis.__logger.trace(this, ...args),
30
+ debug: (...args) => globalThis.__logger.debug(this, ...args),
31
+ warn: (...args) => globalThis.__logger.warn(this, ...args),
32
+ error: (...args) => globalThis.__logger.error(this, ...args),
33
+ fatal: (...args) => globalThis.__logger.fatal(this, ...args),
34
+ options: () => globalThis.__logger.options(),
32
35
  };
33
36
  }
34
- exports.getLoggerFromContext = getLoggerFromContext;
37
+ exports.log = buildLogger.call({});
38
+ function getLoggerWithContext(context = {}) {
39
+ return buildLogger.call(context);
40
+ }
41
+ exports.getLoggerWithContext = getLoggerWithContext;
35
42
  function setLogger(newLogger) {
36
- logger = newLogger;
43
+ globalThis.__logger = newLogger;
37
44
  }
38
45
  exports.setLogger = setLogger;
46
+ function setLoggerOptions(options) {
47
+ globalThis.__logger.options = () => options;
48
+ }
49
+ exports.setLoggerOptions = setLoggerOptions;
39
50
  function resetLogger() {
40
- logger = defaultLogger;
51
+ globalThis.__logger = defaultLogger;
41
52
  }
42
53
  exports.resetLogger = resetLogger;
43
- exports.log = {
44
- trace(...args) {
45
- return logger.trace({}, ...args);
46
- },
47
- debug(...args) {
48
- return logger.debug({}, ...args);
49
- },
50
- warn(...args) {
51
- return logger.warn({}, ...args);
52
- },
53
- error(...args) {
54
- return logger.error({}, ...args);
55
- },
56
- fatal(...args) {
57
- return logger.fatal({}, ...args);
58
- },
59
- };
60
54
  const SERVER_RESPONSE_MAP = {
61
55
  str: 'streaming SSR',
62
56
  rsc: 'Server Components',
63
57
  ssr: 'buffered SSR',
64
58
  };
65
- function logServerResponse(type, log, request, responseStatus) {
59
+ function logServerResponse(type, request, responseStatus) {
60
+ const log = getLoggerWithContext(request);
66
61
  const coloredResponseStatus = responseStatus >= 500
67
62
  ? (0, kolorist_1.red)(responseStatus)
68
63
  : responseStatus >= 400
@@ -71,14 +66,9 @@ function logServerResponse(type, log, request, responseStatus) {
71
66
  ? (0, kolorist_1.lightBlue)(responseStatus)
72
67
  : (0, kolorist_1.green)(responseStatus);
73
68
  const fullType = SERVER_RESPONSE_MAP[type] || type;
74
- const styledType = (0, kolorist_1.italic)(pad(fullType, ' '));
75
- const paddedTiming = pad(((0, timing_1.getTime)() - request.time).toFixed(2) + ' ms', ' ');
76
- const url = type === 'rsc'
77
- ? decodeURIComponent(request.url.substring(request.url.indexOf('=') + 1))
78
- : request.url;
69
+ const styledType = (0, kolorist_1.italic)(fullType.padEnd(17));
70
+ const paddedTiming = (((0, timing_1.getTime)() - request.time).toFixed(2) + ' ms').padEnd(10);
71
+ const url = (0, utils_1.parseUrl)(type, request.url);
79
72
  log.debug(`${request.method} ${styledType} ${coloredResponseStatus} ${paddedTiming} ${url}`);
80
73
  }
81
74
  exports.logServerResponse = logServerResponse;
82
- function pad(str, _pad) {
83
- return (str + _pad).substring(0, _pad.length);
84
- }
@@ -0,0 +1,3 @@
1
+ import type { RenderType } from './log';
2
+ export declare function findQueryName(key: string): string;
3
+ export declare function parseUrl(type: RenderType, url: string): string;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseUrl = exports.findQueryName = void 0;
4
+ function findQueryName(key) {
5
+ const decodeKey = decodeURIComponent(key);
6
+ const match = decodeKey.match(/query ([^\s\()]*)\s?(|\(\{)/);
7
+ if (match && match.length > 1) {
8
+ return match[1];
9
+ }
10
+ return '<unknown>';
11
+ }
12
+ exports.findQueryName = findQueryName;
13
+ function parseUrl(type, url) {
14
+ return type === 'rsc'
15
+ ? decodeURIComponent(url.substring(url.indexOf('=') + 1))
16
+ : url;
17
+ }
18
+ exports.parseUrl = parseUrl;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Strip out script `src` values from <script> tags in a given HTML template.
3
+ * Returns two lists of scripts, split based on whether they are `type="module"`.
4
+ */
5
+ export declare function stripScriptsFromTemplate(template: string): {
6
+ noScriptTemplate: string;
7
+ bootstrapScripts: string[];
8
+ bootstrapModules: string[];
9
+ };
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stripScriptsFromTemplate = void 0;
4
+ /**
5
+ * Strip out script `src` values from <script> tags in a given HTML template.
6
+ * Returns two lists of scripts, split based on whether they are `type="module"`.
7
+ */
8
+ function stripScriptsFromTemplate(template) {
9
+ var _a;
10
+ const bootstrapScripts = [];
11
+ const bootstrapModules = [];
12
+ const scripts = template.matchAll(/<script.+?src="(?<script>([^"]+?))".*?><\/script>/g);
13
+ for (const match of scripts) {
14
+ const scriptName = (_a = match.groups) === null || _a === void 0 ? void 0 : _a.script;
15
+ if (!scriptName)
16
+ continue;
17
+ if (match[0].includes(`type="module"`)) {
18
+ bootstrapModules.push(scriptName);
19
+ }
20
+ else {
21
+ bootstrapScripts.push(scriptName);
22
+ }
23
+ template = template.replace(match[0], '');
24
+ }
25
+ return { noScriptTemplate: template, bootstrapScripts, bootstrapModules };
26
+ }
27
+ exports.stripScriptsFromTemplate = stripScriptsFromTemplate;
@@ -0,0 +1,43 @@
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
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const node_fetch_1 = __importStar(require("node-fetch"));
26
+ const abort_controller_1 = __importDefault(require("abort-controller"));
27
+ const ponyfill_1 = require("web-streams-polyfill/ponyfill");
28
+ if (!globalThis.fetch) {
29
+ Object.assign(globalThis, {
30
+ fetch: node_fetch_1.default,
31
+ Request: node_fetch_1.Request,
32
+ Response: node_fetch_1.Response,
33
+ Headers: node_fetch_1.Headers,
34
+ AbortController: abort_controller_1.default,
35
+ });
36
+ }
37
+ if (!globalThis.ReadableStream) {
38
+ Object.assign(globalThis, {
39
+ ReadableStream: ponyfill_1.ReadableStream,
40
+ WritableStream: ponyfill_1.WritableStream,
41
+ TransformStream: ponyfill_1.TransformStream,
42
+ });
43
+ }
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "engines": {
8
8
  "node": ">=14"
9
9
  },
10
- "version": "0.11.0-experimental.1",
10
+ "version": "0.11.1-experimental.0",
11
11
  "description": "Modern custom Shopify storefronts",
12
12
  "license": "MIT",
13
13
  "main": "dist/esnext/index.js",
@@ -26,20 +26,17 @@
26
26
  "marker.js",
27
27
  "middleware.js",
28
28
  "middleware.d.ts",
29
- "worker.js"
29
+ "web-polyfills.js"
30
30
  ],
31
31
  "scripts": {
32
- "predev": "rimraf ./dist ../../examples/template-hydrogen-default/node_modules/@shopify/hydrogen ../../node_modules/@shopify/hydrogen && mkdirp ../../node_modules/@shopify/hydrogen",
33
- "dev": "run-p dev-copy \"dev-esnext {@}/esnext\" \"dev-node {@}/node\" \"dev-worker {@}/worker\" -- --outDir ../../node_modules/@shopify/hydrogen/dist",
32
+ "dev": "run-p dev-copy \"dev-esnext {@}/esnext\" \"dev-node {@}/node\" -- --outDir ../../node_modules/@shopify/hydrogen/dist",
34
33
  "dev-esnext": "tsc -w --incremental --p tsconfig.build.json",
35
34
  "dev-node": "tsc -w --incremental --p tsconfig.cjs.json",
36
- "dev-worker": "tsc -w --incremental --p tsconfig.worker.json",
37
35
  "dev-copy": "cpy --parents *.[jt]s *.json vendor ../../node_modules/@shopify/hydrogen",
38
36
  "prebuild": "rimraf dist ../../node_modules/@shopify/hydrogen && mkdirp ../../node_modules/@shopify/hydrogen",
39
- "build": "run-p build-esnext build-node build-worker && yarn build-copy",
37
+ "build": "run-p build-esnext build-node && yarn build-copy",
40
38
  "build-esnext": "tsc --p tsconfig.build.json",
41
39
  "build-node": "tsc --p tsconfig.cjs.json",
42
- "build-worker": "tsc --p tsconfig.worker.json",
43
40
  "build-copy": "cpy --parents *.[jt]s *.json dist vendor ../../node_modules/@shopify/hydrogen",
44
41
  "lint": "eslint --ext .ts src/** --no-error-on-unmatched-pattern",
45
42
  "format": "prettier --write --parser typescript \"src/**/*.ts\"",
@@ -82,10 +79,24 @@
82
79
  "rimraf": "^3.0.2"
83
80
  },
84
81
  "peerDependencies": {
82
+ "body-parser": "^1.19.1",
83
+ "compression": "^1.7.4",
85
84
  "react": "0.0.0-experimental-529dc3ce8-20220124",
86
85
  "react-dom": "0.0.0-experimental-529dc3ce8-20220124",
86
+ "serve-static": "^1.14.1",
87
87
  "vite": "^2.8.0"
88
88
  },
89
+ "peerDependenciesMeta": {
90
+ "body-parser": {
91
+ "optional": true
92
+ },
93
+ "compression": {
94
+ "optional": true
95
+ },
96
+ "serve-static": {
97
+ "optional": true
98
+ }
99
+ },
89
100
  "dependencies": {
90
101
  "@vitejs/plugin-react": "^1.1.1",
91
102
  "abort-controller": "^3.0.0",
@@ -101,9 +112,8 @@
101
112
  "node-fetch": "^2.6.7",
102
113
  "path-to-regexp": "^6.2.0",
103
114
  "react-error-boundary": "^3.1.3",
104
- "react-helmet-async": "^1.2.2",
115
+ "react-helmet-async": "^1.2.3",
105
116
  "vite-plugin-inspect": "^0.3.6",
106
117
  "web-streams-polyfill": "^3.2.0"
107
- },
108
- "gitHead": "8ea40b5e119883ca380406edc123d9cb10ca8650"
118
+ }
109
119
  }
@@ -0,0 +1 @@
1
+ require('./dist/node/utilities/web-api-polyfill');