@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.
- package/CHANGELOG.md +504 -0
- package/dist/esnext/client.d.ts +1 -1
- package/dist/esnext/client.js +1 -1
- package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +1 -1
- package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +11 -2
- package/dist/esnext/components/CartEstimatedCost/CartEstimatedCost.client.js +1 -1
- package/dist/esnext/components/CartLineImage/CartLineImage.client.js +2 -2
- package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +1 -1
- package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +1 -1
- package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +2 -2
- package/dist/esnext/components/CartProvider/CartProvider.client.js +1 -1
- package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +1 -1
- package/dist/esnext/components/ExternalVideo/ExternalVideo.js +2 -2
- package/dist/esnext/components/Image/Image.d.ts +1 -1
- package/dist/esnext/components/Image/Image.js +9 -9
- package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +13 -4
- package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +5 -3
- package/dist/esnext/components/MediaFile/MediaFile.d.ts +8 -6
- package/dist/esnext/components/MediaFile/MediaFile.js +6 -6
- package/dist/esnext/components/Metafield/Metafield.client.d.ts +1 -1
- package/dist/esnext/components/Metafield/Metafield.client.js +16 -16
- package/dist/esnext/components/ModelViewer/ModelViewer.client.d.ts +1 -1
- package/dist/esnext/components/ModelViewer/ModelViewer.client.js +1 -1
- package/dist/esnext/components/Money/Money.client.d.ts +1 -1
- package/dist/esnext/components/Money/Money.client.js +2 -2
- package/dist/esnext/components/ProductMetafield/ProductMetafield.client.d.ts +3 -1
- package/dist/esnext/components/ProductMetafield/ProductMetafield.client.js +21 -4
- package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +5 -3
- package/dist/esnext/components/ProductPrice/ProductPrice.client.js +30 -9
- package/dist/esnext/components/ProductProvider/ProductOptionsProvider.client.d.ts +8 -0
- package/dist/esnext/components/ProductProvider/ProductOptionsProvider.client.js +12 -0
- package/dist/esnext/components/ProductProvider/ProductProvider.client.d.ts +8 -7
- package/dist/esnext/components/ProductProvider/ProductProvider.client.js +9 -35
- package/dist/esnext/components/ProductProvider/context.d.ts +10 -6
- package/dist/esnext/components/ProductProvider/context.js +1 -0
- package/dist/esnext/components/Seo/DefaultPageSeo.client.js +2 -2
- package/dist/esnext/components/Seo/DescriptionSeo.client.js +2 -2
- package/dist/esnext/components/Seo/HomePageSeo.client.js +2 -2
- package/dist/esnext/components/Seo/ImageSeo.client.js +2 -2
- package/dist/esnext/components/Seo/ProductSeo.client.js +5 -3
- package/dist/esnext/components/Seo/TitleSeo.client.js +2 -2
- package/dist/esnext/components/Seo/TwitterSeo.client.js +2 -2
- package/dist/esnext/components/Seo/types.d.ts +1 -1
- package/dist/esnext/components/UnitPrice/UnitPrice.client.d.ts +2 -2
- package/dist/esnext/components/UnitPrice/UnitPrice.client.js +3 -3
- package/dist/esnext/components/Video/Video.d.ts +1 -1
- package/dist/esnext/components/Video/Video.js +3 -3
- package/dist/esnext/components/index.d.ts +0 -8
- package/dist/esnext/components/index.js +0 -8
- package/dist/esnext/entry-client.js +1 -1
- package/dist/esnext/entry-server.d.ts +18 -2
- package/dist/esnext/entry-server.js +347 -329
- package/dist/esnext/foundation/Head/Head.client.d.ts +5 -0
- package/dist/esnext/foundation/Head/Head.client.js +10 -0
- package/dist/esnext/foundation/Head/index.d.ts +1 -0
- package/dist/esnext/foundation/Head/index.js +1 -0
- package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +2 -1
- package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.js +43 -4
- package/dist/esnext/foundation/useQuery/hooks.d.ts +11 -3
- package/dist/esnext/foundation/useQuery/hooks.js +21 -5
- package/dist/esnext/framework/CachingStrategy/index.d.ts +10 -0
- package/dist/esnext/framework/CachingStrategy/index.js +96 -0
- package/dist/esnext/framework/Hydration/Html.js +5 -12
- package/dist/esnext/framework/Hydration/ServerComponentRequest.server.d.ts +20 -2
- package/dist/esnext/framework/Hydration/ServerComponentRequest.server.js +51 -2
- package/dist/esnext/framework/Hydration/ServerComponentResponse.server.d.ts +2 -2
- package/dist/esnext/framework/Hydration/ServerComponentResponse.server.js +2 -11
- package/dist/esnext/framework/cache/in-memory.js +6 -5
- package/dist/esnext/framework/cache.d.ts +3 -3
- package/dist/esnext/framework/cache.js +4 -18
- package/dist/esnext/framework/middleware.d.ts +7 -7
- package/dist/esnext/framework/middleware.js +15 -43
- package/dist/esnext/framework/plugin.js +14 -3
- package/dist/esnext/framework/plugins/vite-plugin-hydration-auto-import.d.ts +3 -0
- package/dist/esnext/framework/plugins/vite-plugin-hydration-auto-import.js +38 -0
- package/dist/esnext/framework/plugins/vite-plugin-hydrogen-client-middleware.d.ts +9 -0
- package/dist/esnext/framework/plugins/vite-plugin-hydrogen-client-middleware.js +37 -0
- package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +2 -1
- package/dist/esnext/framework/plugins/vite-plugin-hydrogen-middleware.js +3 -1
- package/dist/esnext/framework/plugins/vite-plugin-platform-entry.d.ts +3 -0
- package/dist/esnext/framework/plugins/vite-plugin-platform-entry.js +70 -0
- package/dist/esnext/hooks/useProduct/useProduct.d.ts +150 -1
- package/dist/esnext/hooks/useProduct/useProduct.js +36 -3
- package/dist/esnext/hooks/useProductOptions/types.d.ts +1 -1
- package/dist/esnext/hooks/useProductOptions/useProductOptions.d.ts +1 -1
- package/dist/esnext/hooks/useProductOptions/useProductOptions.js +6 -6
- package/dist/esnext/hooks/useShopQuery/hooks.d.ts +11 -4
- package/dist/esnext/hooks/useShopQuery/hooks.js +6 -3
- package/dist/esnext/index.d.ts +2 -1
- package/dist/esnext/index.js +2 -1
- package/dist/esnext/platforms/node.d.ts +10 -0
- package/dist/esnext/platforms/node.js +38 -0
- package/dist/esnext/platforms/worker-event.d.ts +9 -0
- package/dist/esnext/platforms/worker-event.js +24 -0
- package/dist/esnext/streaming.server.d.ts +17 -7
- package/dist/esnext/streaming.server.js +44 -0
- package/dist/esnext/types.d.ts +25 -25
- package/dist/esnext/utilities/apiRoutes.d.ts +1 -2
- package/dist/esnext/utilities/apiRoutes.js +4 -3
- package/dist/esnext/utilities/bot-ua.d.ts +4 -0
- package/dist/esnext/utilities/bot-ua.js +54 -0
- package/dist/esnext/utilities/fetch.js +1 -26
- package/dist/esnext/utilities/log/index.d.ts +4 -1
- package/dist/esnext/utilities/log/index.js +4 -1
- package/dist/esnext/utilities/log/log-cache-api-status.d.ts +1 -0
- package/dist/esnext/utilities/log/log-cache-api-status.js +9 -0
- package/dist/esnext/utilities/log/log-cache-header.d.ts +10 -0
- package/dist/esnext/utilities/log/log-cache-header.js +30 -0
- package/dist/esnext/utilities/log/log-query-timeline.d.ts +12 -0
- package/dist/esnext/utilities/log/log-query-timeline.js +83 -0
- package/dist/esnext/utilities/log/log.d.ts +11 -8
- package/dist/esnext/utilities/log/log.js +24 -35
- package/dist/esnext/utilities/log/utils.d.ts +3 -0
- package/dist/esnext/utilities/log/utils.js +13 -0
- package/dist/esnext/utilities/template.d.ts +9 -0
- package/dist/esnext/utilities/template.js +23 -0
- package/dist/{worker/foundation/ShopifyProvider/types.js → esnext/utilities/web-api-polyfill.d.ts} +0 -0
- package/dist/esnext/utilities/web-api-polyfill.js +19 -0
- package/dist/esnext/version.d.ts +1 -1
- package/dist/esnext/version.js +1 -1
- package/dist/node/entry-server.d.ts +22 -0
- package/dist/node/entry-server.js +581 -0
- package/dist/node/foundation/ServerRequestProvider/ServerRequestProvider.d.ts +23 -0
- package/dist/node/foundation/ServerRequestProvider/ServerRequestProvider.js +132 -0
- package/dist/node/foundation/ServerRequestProvider/index.d.ts +1 -0
- package/dist/node/foundation/ServerRequestProvider/index.js +13 -0
- package/dist/node/foundation/ServerStateProvider/ServerStateProvider.client.d.ts +25 -0
- package/dist/node/foundation/ServerStateProvider/ServerStateProvider.client.js +68 -0
- package/dist/node/foundation/ServerStateProvider/index.d.ts +2 -0
- package/dist/node/foundation/ServerStateProvider/index.js +6 -0
- package/dist/node/framework/CachingStrategy/index.d.ts +10 -0
- package/dist/node/framework/CachingStrategy/index.js +108 -0
- package/dist/node/framework/Hydration/Html.js +5 -12
- package/dist/node/framework/Hydration/ServerComponentRequest.server.d.ts +20 -2
- package/dist/node/framework/Hydration/ServerComponentRequest.server.js +50 -1
- package/dist/node/framework/Hydration/ServerComponentResponse.server.d.ts +2 -2
- package/dist/node/framework/Hydration/ServerComponentResponse.server.js +2 -11
- package/dist/node/framework/cache/in-memory.js +6 -5
- package/dist/node/framework/cache.d.ts +3 -3
- package/dist/node/framework/cache.js +6 -20
- package/dist/node/framework/middleware.d.ts +7 -7
- package/dist/node/framework/middleware.js +14 -46
- package/dist/node/framework/plugin.js +33 -3
- package/dist/node/framework/plugins/vite-plugin-hydration-auto-import.d.ts +3 -0
- package/dist/node/framework/plugins/vite-plugin-hydration-auto-import.js +43 -0
- package/dist/node/framework/plugins/vite-plugin-hydrogen-client-middleware.d.ts +9 -0
- package/dist/node/framework/plugins/vite-plugin-hydrogen-client-middleware.js +39 -0
- package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.d.ts +2 -1
- package/dist/node/framework/plugins/vite-plugin-hydrogen-middleware.js +4 -1
- package/dist/node/framework/plugins/vite-plugin-platform-entry.d.ts +3 -0
- package/dist/node/framework/plugins/vite-plugin-platform-entry.js +75 -0
- package/dist/node/streaming.server.d.ts +21 -0
- package/dist/node/streaming.server.js +59 -0
- package/dist/node/types.d.ts +25 -25
- package/dist/node/utilities/apiRoutes.d.ts +1 -2
- package/dist/node/utilities/apiRoutes.js +4 -3
- package/dist/node/utilities/bot-ua.d.ts +4 -0
- package/dist/node/utilities/bot-ua.js +58 -0
- package/dist/node/utilities/defer.d.ts +6 -0
- package/dist/node/utilities/defer.js +18 -0
- package/dist/node/utilities/error.d.ts +1 -0
- package/dist/node/utilities/error.js +10 -0
- package/dist/node/utilities/log/index.d.ts +4 -0
- package/dist/node/utilities/log/index.js +18 -0
- package/dist/node/utilities/log/log-cache-api-status.d.ts +1 -0
- package/dist/node/utilities/log/log-cache-api-status.js +13 -0
- package/dist/node/utilities/log/log-cache-header.d.ts +10 -0
- package/dist/node/utilities/log/log-cache-header.js +35 -0
- package/dist/node/utilities/log/log-query-timeline.d.ts +12 -0
- package/dist/node/utilities/log/log-query-timeline.js +88 -0
- package/dist/node/utilities/log/log.d.ts +11 -8
- package/dist/node/utilities/log/log.js +27 -37
- package/dist/node/utilities/log/utils.d.ts +3 -0
- package/dist/node/utilities/log/utils.js +18 -0
- package/dist/node/utilities/template.d.ts +9 -0
- package/dist/node/utilities/template.js +27 -0
- package/dist/{worker/types.js → node/utilities/web-api-polyfill.d.ts} +0 -0
- package/dist/node/utilities/web-api-polyfill.js +43 -0
- package/package.json +20 -10
- package/web-polyfills.js +1 -0
- package/LICENSE.md +0 -7
- package/dist/esnext/components/CartLineAttributes/CartLineAttributes.client.d.ts +0 -22
- package/dist/esnext/components/CartLineAttributes/CartLineAttributes.client.js +0 -13
- package/dist/esnext/components/CartLineAttributes/index.d.ts +0 -1
- package/dist/esnext/components/CartLineAttributes/index.js +0 -1
- package/dist/esnext/components/CartLineSelectedOptions/CartLineSelectedOptions.client.d.ts +0 -21
- package/dist/esnext/components/CartLineSelectedOptions/CartLineSelectedOptions.client.js +0 -13
- package/dist/esnext/components/CartLineSelectedOptions/index.d.ts +0 -1
- package/dist/esnext/components/CartLineSelectedOptions/index.js +0 -1
- package/dist/esnext/components/SelectedVariantAddToCartButton/SelectedVariantAddToCartButton.client.d.ts +0 -11
- package/dist/esnext/components/SelectedVariantAddToCartButton/SelectedVariantAddToCartButton.client.js +0 -17
- package/dist/esnext/components/SelectedVariantAddToCartButton/index.d.ts +0 -1
- package/dist/esnext/components/SelectedVariantAddToCartButton/index.js +0 -1
- package/dist/esnext/components/SelectedVariantBuyNowButton/SelectedVariantBuyNowButton.d.ts +0 -9
- package/dist/esnext/components/SelectedVariantBuyNowButton/SelectedVariantBuyNowButton.js +0 -17
- package/dist/esnext/components/SelectedVariantBuyNowButton/index.d.ts +0 -1
- package/dist/esnext/components/SelectedVariantBuyNowButton/index.js +0 -1
- package/dist/esnext/components/SelectedVariantImage/SelectedVariantImage.client.d.ts +0 -10
- package/dist/esnext/components/SelectedVariantImage/SelectedVariantImage.client.js +0 -16
- package/dist/esnext/components/SelectedVariantImage/index.d.ts +0 -1
- package/dist/esnext/components/SelectedVariantImage/index.js +0 -1
- package/dist/esnext/components/SelectedVariantMetafield/SelectedVariantMetafield.client.d.ts +0 -15
- package/dist/esnext/components/SelectedVariantMetafield/SelectedVariantMetafield.client.js +0 -24
- package/dist/esnext/components/SelectedVariantMetafield/index.d.ts +0 -1
- package/dist/esnext/components/SelectedVariantMetafield/index.js +0 -1
- package/dist/esnext/components/SelectedVariantPrice/SelectedVariantPrice.client.d.ts +0 -12
- package/dist/esnext/components/SelectedVariantPrice/SelectedVariantPrice.client.js +0 -22
- package/dist/esnext/components/SelectedVariantPrice/index.d.ts +0 -1
- package/dist/esnext/components/SelectedVariantPrice/index.js +0 -1
- package/dist/esnext/components/SelectedVariantShopPayButton/SelectedVariantShopPayButton.client.d.ts +0 -8
- package/dist/esnext/components/SelectedVariantShopPayButton/SelectedVariantShopPayButton.client.js +0 -18
- package/dist/esnext/components/SelectedVariantShopPayButton/index.d.ts +0 -1
- package/dist/esnext/components/SelectedVariantShopPayButton/index.js +0 -1
- package/dist/esnext/components/SelectedVariantUnitPrice/SelectedVariantUnitPrice.client.d.ts +0 -7
- package/dist/esnext/components/SelectedVariantUnitPrice/SelectedVariantUnitPrice.client.js +0 -16
- package/dist/esnext/components/SelectedVariantUnitPrice/index.d.ts +0 -1
- package/dist/esnext/components/SelectedVariantUnitPrice/index.js +0 -1
- package/dist/esnext/foundation/Helmet/Helmet.client.d.ts +0 -10
- package/dist/esnext/foundation/Helmet/Helmet.client.js +0 -10
- package/dist/esnext/foundation/Helmet/index.d.ts +0 -1
- package/dist/esnext/foundation/Helmet/index.js +0 -1
- package/dist/esnext/handle-event.d.ts +0 -23
- package/dist/esnext/handle-event.js +0 -132
- package/dist/esnext/handle-worker-event.d.ts +0 -11
- package/dist/esnext/handle-worker-event.js +0 -14
- package/dist/node/foundation/Helmet/Helmet.client.d.ts +0 -10
- package/dist/node/foundation/Helmet/Helmet.client.js +0 -17
- package/dist/node/foundation/Helmet/index.d.ts +0 -1
- package/dist/node/foundation/Helmet/index.js +0 -5
- package/dist/node/foundation/ssr-interop.d.ts +0 -29
- package/dist/node/foundation/ssr-interop.js +0 -39
- package/dist/node/handle-event.d.ts +0 -23
- package/dist/node/handle-event.js +0 -135
- package/dist/worker/constants.d.ts +0 -1
- package/dist/worker/constants.js +0 -1
- package/dist/worker/foundation/Helmet/Helmet.client.d.ts +0 -10
- package/dist/worker/foundation/Helmet/Helmet.client.js +0 -10
- package/dist/worker/foundation/Helmet/index.d.ts +0 -1
- package/dist/worker/foundation/Helmet/index.js +0 -1
- package/dist/worker/foundation/ShopifyProvider/types.d.ts +0 -15
- package/dist/worker/foundation/ssr-interop.d.ts +0 -29
- package/dist/worker/foundation/ssr-interop.js +0 -35
- package/dist/worker/framework/Hydration/ServerComponentRequest.server.d.ts +0 -23
- package/dist/worker/framework/Hydration/ServerComponentRequest.server.js +0 -57
- package/dist/worker/framework/config.d.ts +0 -6
- package/dist/worker/framework/config.js +0 -6
- package/dist/worker/framework/runtime.d.ts +0 -13
- package/dist/worker/framework/runtime.js +0 -27
- package/dist/worker/graphql/types/types.d.ts +0 -5761
- package/dist/worker/graphql/types/types.js +0 -1436
- package/dist/worker/handle-event.d.ts +0 -23
- package/dist/worker/handle-event.js +0 -132
- package/dist/worker/handle-worker-event.d.ts +0 -11
- package/dist/worker/handle-worker-event.js +0 -14
- package/dist/worker/types.d.ts +0 -96
- package/dist/worker/utilities/apiRoutes.d.ts +0 -21
- package/dist/worker/utilities/apiRoutes.js +0 -87
- package/dist/worker/utilities/log/log.d.ts +0 -18
- package/dist/worker/utilities/log/log.js +0 -77
- package/dist/worker/utilities/matchPath.d.ts +0 -10
- package/dist/worker/utilities/matchPath.js +0 -54
- package/dist/worker/utilities/timing.d.ts +0 -7
- package/dist/worker/utilities/timing.js +0 -14
- 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/
|
|
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
|
|
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',
|
|
91
|
+
(0, log_1.logServerResponse)('api', request, response.status);
|
|
91
92
|
return response;
|
|
92
93
|
}
|
|
93
94
|
exports.renderApiRoute = renderApiRoute;
|
|
@@ -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,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
|
|
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
|
|
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.
|
|
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
|
-
|
|
25
|
-
function
|
|
26
|
+
globalThis.__logger = defaultLogger;
|
|
27
|
+
function buildLogger() {
|
|
26
28
|
return {
|
|
27
|
-
trace: (...args) =>
|
|
28
|
-
debug: (...args) =>
|
|
29
|
-
warn: (...args) =>
|
|
30
|
-
error: (...args) =>
|
|
31
|
-
fatal: (...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.
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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)(
|
|
75
|
-
const paddedTiming =
|
|
76
|
-
const url = type
|
|
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,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;
|
|
File without changes
|
|
@@ -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.
|
|
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
|
-
"
|
|
29
|
+
"web-polyfills.js"
|
|
30
30
|
],
|
|
31
31
|
"scripts": {
|
|
32
|
-
"
|
|
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
|
|
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.
|
|
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
|
}
|
package/web-polyfills.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require('./dist/node/utilities/web-api-polyfill');
|