@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
@@ -0,0 +1,132 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.preloadRequestCacheData = exports.useRequestCacheData = exports.useServerRequest = exports.ServerRequestProvider = void 0;
23
+ const react_1 = __importStar(require("react"));
24
+ const timing_1 = require("../../utilities/timing");
25
+ const cache_1 = require("../../framework/cache");
26
+ const log_1 = require("../../utilities/log");
27
+ // Context to inject current request in SSR
28
+ const RequestContextSSR = (0, react_1.createContext)(null);
29
+ // Cache to inject current request in RSC
30
+ function requestCacheRSC() {
31
+ return new Map();
32
+ }
33
+ requestCacheRSC.key = Symbol.for('HYDROGEN_REQUEST');
34
+ function ServerRequestProvider({ isRSC, request, children, }) {
35
+ if (isRSC) {
36
+ // Save the request object in a React cache that is
37
+ // scoped to this current rendering.
38
+ // @ts-ignore
39
+ const requestCache = react_1.default.unstable_getCacheForType(requestCacheRSC);
40
+ requestCache.set(requestCacheRSC.key, request);
41
+ return children;
42
+ }
43
+ // Use a normal provider in SSR to make the request object
44
+ // available in the current rendering.
45
+ return (react_1.default.createElement(RequestContextSSR.Provider, { value: request }, children));
46
+ }
47
+ exports.ServerRequestProvider = ServerRequestProvider;
48
+ function useServerRequest() {
49
+ let request;
50
+ try {
51
+ // Context only works in SSR rendering
52
+ request = (0, react_1.useContext)(RequestContextSSR);
53
+ }
54
+ catch (error) {
55
+ // If normal context failed it means this is not an SSR request.
56
+ // Try getting RSC cache instead:
57
+ // @ts-ignore
58
+ const cache = react_1.default.unstable_getCacheForType(requestCacheRSC);
59
+ request = cache ? cache.get(requestCacheRSC.key) : null;
60
+ }
61
+ if (!request) {
62
+ // @ts-ignore
63
+ if (__DEV__ && typeof jest !== 'undefined') {
64
+ // Unit tests are not wrapped in ServerRequestProvider.
65
+ // This mocks it, instead of providing it in every test.
66
+ return { ctx: {} };
67
+ }
68
+ throw new Error('No ServerRequest Context found');
69
+ }
70
+ return request;
71
+ }
72
+ exports.useServerRequest = useServerRequest;
73
+ /**
74
+ * Returns data stored in the request cache.
75
+ * It will throw the promise if data is not ready.
76
+ */
77
+ function useRequestCacheData(key, fetcher) {
78
+ const request = useServerRequest();
79
+ const cache = request.ctx.cache;
80
+ const cacheKey = (0, cache_1.hashKey)(key);
81
+ if (!cache.has(cacheKey)) {
82
+ let data;
83
+ let promise;
84
+ cache.set(cacheKey, () => {
85
+ if (data !== undefined) {
86
+ (0, log_1.collectQueryTimings)(request, key, 'rendered');
87
+ return data;
88
+ }
89
+ if (!promise) {
90
+ const startApiTime = (0, timing_1.getTime)();
91
+ promise = fetcher().then((r) => {
92
+ data = { data: r };
93
+ (0, log_1.collectQueryTimings)(request, key, 'resolved', (0, timing_1.getTime)() - startApiTime);
94
+ }, (e) => (data = { error: e }));
95
+ }
96
+ throw promise;
97
+ });
98
+ }
99
+ // Making sure the promise has returned data because it can be initated by a preload request,
100
+ // otherwise, we throw the promise
101
+ const result = cache.get(cacheKey).call();
102
+ if (result instanceof Promise)
103
+ throw result;
104
+ return result;
105
+ }
106
+ exports.useRequestCacheData = useRequestCacheData;
107
+ function preloadRequestCacheData(request, preloadQueries) {
108
+ const cache = request.ctx.cache;
109
+ preloadQueries === null || preloadQueries === void 0 ? void 0 : preloadQueries.forEach((preloadQuery, cacheKey) => {
110
+ (0, log_1.collectQueryTimings)(request, preloadQuery.key, 'preload');
111
+ if (!cache.has(cacheKey)) {
112
+ let data;
113
+ let promise;
114
+ cache.set(cacheKey, () => {
115
+ if (data !== undefined) {
116
+ (0, log_1.collectQueryTimings)(request, preloadQuery.key, 'rendered');
117
+ return data;
118
+ }
119
+ if (!promise) {
120
+ const startApiTime = (0, timing_1.getTime)();
121
+ promise = preloadQuery.fetcher().then((r) => {
122
+ data = { data: r };
123
+ (0, log_1.collectQueryTimings)(request, preloadQuery.key, 'resolved', (0, timing_1.getTime)() - startApiTime);
124
+ }, (e) => (data = { error: e }));
125
+ }
126
+ return promise;
127
+ });
128
+ }
129
+ cache.get(cacheKey).call();
130
+ });
131
+ }
132
+ exports.preloadRequestCacheData = preloadRequestCacheData;
@@ -0,0 +1 @@
1
+ export * from './ServerRequestProvider';
@@ -0,0 +1,13 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./ServerRequestProvider"), exports);
@@ -0,0 +1,25 @@
1
+ import React, { ReactNode } from 'react';
2
+ declare global {
3
+ var __DEV__: boolean;
4
+ }
5
+ export interface ServerState {
6
+ pathname: string;
7
+ search: string;
8
+ [key: string]: any;
9
+ }
10
+ export interface ServerStateSetter {
11
+ (input: ((prev: ServerState) => Partial<ServerState>) | Partial<ServerState> | string, propValue?: any): void;
12
+ }
13
+ export interface ServerStateContextValue {
14
+ pending: boolean;
15
+ serverState: ServerState;
16
+ setServerState: ServerStateSetter;
17
+ }
18
+ export declare const ServerStateContext: React.Context<ServerStateContextValue>;
19
+ interface ServerStateProviderProps {
20
+ serverState: ServerState;
21
+ setServerState: React.Dispatch<React.SetStateAction<ServerState>>;
22
+ children: ReactNode;
23
+ }
24
+ export declare function ServerStateProvider({ serverState, setServerState, children, }: ServerStateProviderProps): JSX.Element;
25
+ export {};
@@ -0,0 +1,68 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.ServerStateProvider = exports.ServerStateContext = void 0;
23
+ const react_1 = __importStar(require("react"));
24
+ const PRIVATE_PROPS = ['request', 'response'];
25
+ exports.ServerStateContext = (0, react_1.createContext)(null);
26
+ function ServerStateProvider({ serverState, setServerState, children, }) {
27
+ const [pending, startTransition] = (0, react_1.useTransition)();
28
+ const setServerStateCallback = (0, react_1.useCallback)((input, propValue) => {
29
+ /**
30
+ * By wrapping this state change in a transition, React renders the new state
31
+ * concurrently in a new "tree" instead of Suspending and showing the (blank)
32
+ * fallback. This is preferred behavior, though we may want to revisit how
33
+ * we make this decision globally for the developer - and consider providing
34
+ * the `pending` flag also provided by the hook to display in the UI.
35
+ */
36
+ startTransition(() => {
37
+ return setServerState((prev) => {
38
+ let newValue;
39
+ if (typeof input === 'function') {
40
+ newValue = input(prev);
41
+ }
42
+ else if (typeof input === 'string') {
43
+ newValue = { [input]: propValue };
44
+ }
45
+ else {
46
+ newValue = input;
47
+ }
48
+ if (__DEV__) {
49
+ const privateProp = PRIVATE_PROPS.find((prop) => prop in newValue);
50
+ if (privateProp) {
51
+ console.warn(`Custom "${privateProp}" property in server state is ignored. Use a different name.`);
52
+ }
53
+ }
54
+ return {
55
+ ...prev,
56
+ ...newValue,
57
+ };
58
+ });
59
+ });
60
+ }, [setServerState, startTransition]);
61
+ const value = (0, react_1.useMemo)(() => ({
62
+ pending,
63
+ serverState,
64
+ setServerState: setServerStateCallback,
65
+ }), [serverState, setServerStateCallback, pending]);
66
+ return (react_1.default.createElement(exports.ServerStateContext.Provider, { value: value }, children));
67
+ }
68
+ exports.ServerStateProvider = ServerStateProvider;
@@ -0,0 +1,2 @@
1
+ export { ServerStateProvider, ServerStateContext, } from './ServerStateProvider.client';
2
+ export type { ServerState, ServerStateContextValue, } from './ServerStateProvider.client';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ServerStateContext = exports.ServerStateProvider = void 0;
4
+ var ServerStateProvider_client_1 = require("./ServerStateProvider.client");
5
+ Object.defineProperty(exports, "ServerStateProvider", { enumerable: true, get: function () { return ServerStateProvider_client_1.ServerStateProvider; } });
6
+ Object.defineProperty(exports, "ServerStateContext", { enumerable: true, get: function () { return ServerStateProvider_client_1.ServerStateContext; } });
@@ -0,0 +1,10 @@
1
+ import type { CachingStrategy, AllCacheOptions, NoStoreStrategy } from '../../types';
2
+ export declare function generateCacheControlHeader(cacheOptions: CachingStrategy): string;
3
+ export declare function NoStore(): NoStoreStrategy;
4
+ export declare function CacheSeconds(overrideOptions?: CachingStrategy): AllCacheOptions;
5
+ export declare function CacheMinutes(overrideOptions?: CachingStrategy): AllCacheOptions;
6
+ export declare function CacheHours(overrideOptions?: CachingStrategy): AllCacheOptions;
7
+ export declare function CacheDays(overrideOptions?: CachingStrategy): AllCacheOptions;
8
+ export declare function CacheWeeks(overrideOptions?: CachingStrategy): AllCacheOptions;
9
+ export declare function CacheMonths(overrideOptions?: CachingStrategy): AllCacheOptions;
10
+ export declare function CacheCustom(overrideOptions: CachingStrategy): AllCacheOptions;
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheCustom = exports.CacheMonths = exports.CacheWeeks = exports.CacheDays = exports.CacheHours = exports.CacheMinutes = exports.CacheSeconds = exports.NoStore = exports.generateCacheControlHeader = void 0;
4
+ const PUBLIC = 'public';
5
+ const PRIVATE = 'private';
6
+ const NO_STORE = 'no-store';
7
+ const optionMapping = {
8
+ maxAge: 'max-age',
9
+ staleWhileRevalidate: 'stale-while-revalidate',
10
+ sMaxAge: 's-maxage',
11
+ staleIfError: 'stale-if-error',
12
+ };
13
+ function generateCacheControlHeader(cacheOptions) {
14
+ const cacheControl = [];
15
+ Object.keys(cacheOptions).forEach((key) => {
16
+ if (key === 'mode') {
17
+ cacheControl.push(cacheOptions[key]);
18
+ }
19
+ else if (optionMapping[key]) {
20
+ cacheControl.push(`${optionMapping[key]}=${cacheOptions[key]}`);
21
+ }
22
+ });
23
+ return cacheControl.join(', ');
24
+ }
25
+ exports.generateCacheControlHeader = generateCacheControlHeader;
26
+ function NoStore() {
27
+ return {
28
+ mode: NO_STORE,
29
+ };
30
+ }
31
+ exports.NoStore = NoStore;
32
+ function guardExpirableModeType(overrideOptions) {
33
+ if ((overrideOptions === null || overrideOptions === void 0 ? void 0 : overrideOptions.mode) &&
34
+ (overrideOptions === null || overrideOptions === void 0 ? void 0 : overrideOptions.mode) !== PUBLIC &&
35
+ (overrideOptions === null || overrideOptions === void 0 ? void 0 : overrideOptions.mode) !== PRIVATE) {
36
+ throw Error("'mode' must be either 'public' or 'private'");
37
+ }
38
+ }
39
+ // 10 seconds
40
+ function CacheSeconds(overrideOptions) {
41
+ guardExpirableModeType(overrideOptions);
42
+ return {
43
+ mode: PUBLIC,
44
+ maxAge: 1,
45
+ staleWhileRevalidate: 9,
46
+ ...overrideOptions,
47
+ };
48
+ }
49
+ exports.CacheSeconds = CacheSeconds;
50
+ // 30 minutes
51
+ function CacheMinutes(overrideOptions) {
52
+ guardExpirableModeType(overrideOptions);
53
+ return {
54
+ mode: PUBLIC,
55
+ maxAge: 900,
56
+ staleWhileRevalidate: 900,
57
+ ...overrideOptions,
58
+ };
59
+ }
60
+ exports.CacheMinutes = CacheMinutes;
61
+ // 1 hour
62
+ function CacheHours(overrideOptions) {
63
+ guardExpirableModeType(overrideOptions);
64
+ return {
65
+ mode: PUBLIC,
66
+ maxAge: 1800,
67
+ staleWhileRevalidate: 1800,
68
+ ...overrideOptions,
69
+ };
70
+ }
71
+ exports.CacheHours = CacheHours;
72
+ // 1 day
73
+ function CacheDays(overrideOptions) {
74
+ guardExpirableModeType(overrideOptions);
75
+ return {
76
+ mode: PUBLIC,
77
+ maxAge: 3600,
78
+ staleWhileRevalidate: 82800,
79
+ ...overrideOptions,
80
+ };
81
+ }
82
+ exports.CacheDays = CacheDays;
83
+ // 2 weeks
84
+ function CacheWeeks(overrideOptions) {
85
+ guardExpirableModeType(overrideOptions);
86
+ return {
87
+ mode: PUBLIC,
88
+ maxAge: 604800,
89
+ staleWhileRevalidate: 604800,
90
+ ...overrideOptions,
91
+ };
92
+ }
93
+ exports.CacheWeeks = CacheWeeks;
94
+ // 1 month
95
+ function CacheMonths(overrideOptions) {
96
+ guardExpirableModeType(overrideOptions);
97
+ return {
98
+ mode: PUBLIC,
99
+ maxAge: 1296000,
100
+ staleWhileRevalidate: 1296000,
101
+ ...overrideOptions,
102
+ };
103
+ }
104
+ exports.CacheMonths = CacheMonths;
105
+ function CacheCustom(overrideOptions) {
106
+ return overrideOptions;
107
+ }
108
+ exports.CacheCustom = CacheCustom;
@@ -7,23 +7,16 @@ exports.Html = void 0;
7
7
  /// <reference types="vite/client" />
8
8
  const react_1 = __importDefault(require("react"));
9
9
  function Html({ children, template, htmlAttrs, bodyAttrs }) {
10
- var _a;
11
- const head = template.match(/<head>(.+?)<\/head>/s)[1] || '';
12
- let devEntryPoint = '';
10
+ let head = template.match(/<head>(.+?)<\/head>/s)[1] || '';
13
11
  // @ts-ignore
14
12
  if (import.meta.env.DEV) {
15
- devEntryPoint =
16
- ((_a = template
17
- .substring(template.lastIndexOf('<script type="module"'))
18
- .match(/src="(.*?)">/i)) === null || _a === void 0 ? void 0 : _a[1]) || '';
19
- if (!devEntryPoint) {
20
- throw new Error('Could not find entry-client module in index.html');
21
- }
13
+ // Fix React Refresh for async scripts.
14
+ // https://github.com/vitejs/vite/issues/6759
15
+ head = head.replace(/>(\s*?import[\s\w]+?['"]\/@react-refresh)/, ' async="">$1');
22
16
  }
23
17
  return (react_1.default.createElement("html", { ...htmlAttrs },
24
18
  react_1.default.createElement("head", { dangerouslySetInnerHTML: { __html: head } }),
25
19
  react_1.default.createElement("body", { ...bodyAttrs },
26
- react_1.default.createElement("div", { id: "root" }, children),
27
- import.meta.env.DEV && (react_1.default.createElement("script", { type: "module", src: devEntryPoint })))));
20
+ react_1.default.createElement("div", { id: "root" }, children))));
28
21
  }
29
22
  exports.Html = Html;
@@ -1,5 +1,15 @@
1
1
  import type { ShopifyContextValue } from '../../foundation/ShopifyProvider/types';
2
- import type { RealHelmetData } from '../../foundation/Helmet';
2
+ import type { QueryCacheControlHeaders } from '../../utilities/log/log-cache-header';
3
+ import type { QueryTiming } from '../../utilities/log/log-query-timeline';
4
+ import type { PreloadOptions, QueryKey } from '../../types';
5
+ import { HelmetData as HeadData } from 'react-helmet-async';
6
+ export declare type PreloadQueryEntry = {
7
+ key: QueryKey;
8
+ fetcher: () => Promise<unknown>;
9
+ preload?: PreloadOptions;
10
+ };
11
+ export declare type PreloadQueriesByURL = Map<string, PreloadQueryEntry>;
12
+ export declare type AllPreloadQueries = Map<string, PreloadQueriesByURL>;
3
13
  /**
4
14
  * This augments the `Request` object from the Fetch API:
5
15
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Request
@@ -11,13 +21,21 @@ export declare class ServerComponentRequest extends Request {
11
21
  cookies: Map<string, string>;
12
22
  id: string;
13
23
  time: number;
24
+ preloadURL: string;
14
25
  ctx: {
15
26
  cache: Map<string, any>;
16
- helmet: RealHelmetData;
27
+ head: HeadData;
17
28
  shopifyConfig?: ShopifyContextValue;
29
+ queryCacheControl: Array<QueryCacheControlHeaders>;
30
+ queryTimings: Array<QueryTiming>;
31
+ preloadQueries: PreloadQueriesByURL;
18
32
  [key: string]: any;
19
33
  };
20
34
  constructor(input: any);
21
35
  constructor(input: RequestInfo, init?: RequestInit);
22
36
  private parseCookies;
37
+ isRscRequest(): boolean;
38
+ savePreloadQuery(query: PreloadQueryEntry): void;
39
+ getPreloadQueries(): PreloadQueriesByURL | undefined;
40
+ savePreloadQueries(): void;
23
41
  }
@@ -2,7 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServerComponentRequest = void 0;
4
4
  const timing_1 = require("../../utilities/timing");
5
+ const cache_1 = require("../cache");
5
6
  const react_helmet_async_1 = require("react-helmet-async");
7
+ const constants_1 = require("../../constants");
6
8
  let reqCounter = 0; // For debugging
7
9
  const generateId = typeof crypto !== 'undefined' &&
8
10
  // @ts-ignore
@@ -10,6 +12,9 @@ const generateId = typeof crypto !== 'undefined' &&
10
12
  ? // @ts-ignore
11
13
  () => crypto.randomUUID()
12
14
  : () => `req${++reqCounter}`;
15
+ // Stores queries by url or '*'
16
+ const preloadCache = new Map();
17
+ const PRELOAD_ALL = '*';
13
18
  /**
14
19
  * This augments the `Request` object from the Fetch API:
15
20
  * @see https://developer.mozilla.org/en-US/docs/Web/API/Request
@@ -35,9 +40,15 @@ class ServerComponentRequest extends Request {
35
40
  this.id = generateId();
36
41
  this.ctx = {
37
42
  cache: new Map(),
38
- helmet: new react_helmet_async_1.HelmetData({}),
43
+ head: new react_helmet_async_1.HelmetData({}),
44
+ queryCacheControl: [],
45
+ queryTimings: [],
46
+ preloadQueries: new Map(),
39
47
  };
40
48
  this.cookies = this.parseCookies();
49
+ const referer = this.headers.get('referer');
50
+ this.preloadURL =
51
+ this.isRscRequest() && referer && referer !== '' ? referer : this.url;
41
52
  }
42
53
  parseCookies() {
43
54
  const cookieString = this.headers.get('cookie') || '';
@@ -45,8 +56,46 @@ class ServerComponentRequest extends Request {
45
56
  .split(';')
46
57
  .map((chunk) => chunk.trim().split(/=(.+)/)));
47
58
  }
59
+ isRscRequest() {
60
+ const url = new URL(this.url);
61
+ return url.pathname === constants_1.RSC_PATHNAME;
62
+ }
63
+ savePreloadQuery(query) {
64
+ if (typeof query.preload === 'string' && query.preload === PRELOAD_ALL) {
65
+ saveToPreloadAllPreload(query);
66
+ }
67
+ else if (query.preload) {
68
+ this.ctx.preloadQueries.set((0, cache_1.hashKey)(query.key), query);
69
+ }
70
+ }
71
+ getPreloadQueries() {
72
+ if (preloadCache.has(this.preloadURL)) {
73
+ const combinedPreloadQueries = new Map();
74
+ const urlPreloadCache = preloadCache.get(this.preloadURL);
75
+ mergeMapEntries(combinedPreloadQueries, urlPreloadCache);
76
+ mergeMapEntries(combinedPreloadQueries, preloadCache.get(PRELOAD_ALL));
77
+ return combinedPreloadQueries;
78
+ }
79
+ else if (preloadCache.has(PRELOAD_ALL)) {
80
+ return preloadCache.get(PRELOAD_ALL);
81
+ }
82
+ }
83
+ savePreloadQueries() {
84
+ preloadCache.set(this.preloadURL, this.ctx.preloadQueries);
85
+ }
48
86
  }
49
87
  exports.ServerComponentRequest = ServerComponentRequest;
88
+ function mergeMapEntries(map1, map2) {
89
+ map2 && map2.forEach((v, k) => map1.set(k, v));
90
+ }
91
+ function saveToPreloadAllPreload(query) {
92
+ let setCache = preloadCache.get(PRELOAD_ALL);
93
+ if (!setCache) {
94
+ setCache = new Map();
95
+ }
96
+ setCache === null || setCache === void 0 ? void 0 : setCache.set((0, cache_1.hashKey)(query.key), query);
97
+ preloadCache.set(PRELOAD_ALL, setCache);
98
+ }
50
99
  /**
51
100
  * @see https://github.com/frandiox/vitedge/blob/17f3cd943e86d7c0c71a862985ddd6caa2899425/src/node/utils.js#L19-L24
52
101
  *
@@ -1,4 +1,4 @@
1
- import { CacheOptions } from '../../types';
1
+ import type { CachingStrategy } from '../../types';
2
2
  export declare class ServerComponentResponse extends Response {
3
3
  private wait;
4
4
  private cacheOptions?;
@@ -16,7 +16,7 @@ export declare class ServerComponentResponse extends Response {
16
16
  */
17
17
  doNotStream(): void;
18
18
  canStream(): boolean;
19
- cache(options: CacheOptions): void;
19
+ cache(options: CachingStrategy): void;
20
20
  get cacheControlHeader(): string;
21
21
  writeHead({ status, statusText, headers, }?: {
22
22
  status?: number;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServerComponentResponse = void 0;
4
4
  const server_1 = require("react-dom/server");
5
- const cache_1 = require("../cache");
5
+ const CachingStrategy_1 = require("../CachingStrategy");
6
6
  class ServerComponentResponse extends Response {
7
7
  constructor() {
8
8
  super(...arguments);
@@ -26,12 +26,7 @@ class ServerComponentResponse extends Response {
26
26
  this.cacheOptions = options;
27
27
  }
28
28
  get cacheControlHeader() {
29
- var _a;
30
- const options = {
31
- ...DEFAULT_CACHE_OPTIONS,
32
- ...((_a = this.cacheOptions) !== null && _a !== void 0 ? _a : {}),
33
- };
34
- return (0, cache_1.generateCacheControlHeader)(options);
29
+ return (0, CachingStrategy_1.generateCacheControlHeader)(this.cacheOptions || (0, CachingStrategy_1.CacheSeconds)());
35
30
  }
36
31
  writeHead({ status, statusText, headers, } = {}) {
37
32
  if (status || statusText) {
@@ -62,7 +57,3 @@ class ServerComponentResponse extends Response {
62
57
  }
63
58
  }
64
59
  exports.ServerComponentResponse = ServerComponentResponse;
65
- const DEFAULT_CACHE_OPTIONS = {
66
- maxAge: 60 * 60,
67
- staleWhileRevalidate: 23 * 60 * 60,
68
- };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.InMemoryCache = void 0;
4
+ const log_1 = require("../../utilities/log");
4
5
  /**
5
6
  * This is an in-memory implementation of `Cache` that *barely*
6
7
  * works and is only meant to be used during development.
@@ -10,7 +11,7 @@ class InMemoryCache {
10
11
  this.store = new Map();
11
12
  }
12
13
  put(request, response) {
13
- console.log(`[Cache] PUT ${request.url.slice(0, 100)}`);
14
+ (0, log_1.logCacheApiStatus)('PUT', request.url);
14
15
  this.store.set(request.url, {
15
16
  value: response,
16
17
  date: new Date(),
@@ -19,7 +20,7 @@ class InMemoryCache {
19
20
  match(request) {
20
21
  const match = this.store.get(request.url);
21
22
  if (!match) {
22
- console.log(`[Cache] MISS ${request.url.slice(0, 100)}`);
23
+ (0, log_1.logCacheApiStatus)('MISS', request.url);
23
24
  return;
24
25
  }
25
26
  const { value, date } = match;
@@ -29,7 +30,7 @@ class InMemoryCache {
29
30
  const age = (new Date().valueOf() - date) / 1000;
30
31
  const isMiss = age > maxAge + swr;
31
32
  if (isMiss) {
32
- console.log(`[Cache] MISS ${request.url.slice(0, 100)}`);
33
+ (0, log_1.logCacheApiStatus)('MISS', request.url);
33
34
  this.store.delete(request.url);
34
35
  return;
35
36
  }
@@ -37,7 +38,7 @@ class InMemoryCache {
37
38
  const headers = new Headers(value.headers);
38
39
  headers.set('cache', isStale ? 'STALE' : 'HIT');
39
40
  headers.set('date', date.toGMTString());
40
- console.log(`[Cache] ${headers.get('cache')} ${request.url.slice(0, 100)}`);
41
+ (0, log_1.logCacheApiStatus)(headers.get('cache'), request.url);
41
42
  const response = new Response(value.body, {
42
43
  headers,
43
44
  });
@@ -45,7 +46,7 @@ class InMemoryCache {
45
46
  }
46
47
  delete(request) {
47
48
  this.store.delete(request.url);
48
- console.log(`[Cache] DELETE ${request.url.slice(0, 100)}`);
49
+ (0, log_1.logCacheApiStatus)('DELETE', request.url);
49
50
  }
50
51
  }
51
52
  exports.InMemoryCache = InMemoryCache;
@@ -1,5 +1,5 @@
1
- import type { CacheOptions, QueryKey } from '../types';
2
- export declare function generateCacheControlHeader(options: CacheOptions): string;
1
+ import type { QueryKey, CachingStrategy } from '../types';
2
+ export declare function generateSubRequestCacheControlHeader(userCacheOptions?: CachingStrategy): string;
3
3
  /**
4
4
  * Use a preview header during development.
5
5
  * TODO: Support an override of this to force the cache
@@ -18,7 +18,7 @@ export declare function getItemFromCache(key: QueryKey): Promise<undefined | [an
18
18
  /**
19
19
  * Put an item into the cache.
20
20
  */
21
- export declare function setItemInCache(key: QueryKey, value: any, userCacheOptions?: CacheOptions): Promise<void>;
21
+ export declare function setItemInCache(key: QueryKey, value: any, userCacheOptions?: CachingStrategy): Promise<void>;
22
22
  export declare function deleteItemFromCache(key: QueryKey): Promise<void>;
23
23
  /**
24
24
  * Manually check the response to see if it's stale.