@shopify/hydrogen 0.11.1 → 0.13.1
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 +500 -3
- package/dist/esnext/client.d.ts +2 -0
- package/dist/esnext/client.js +2 -0
- package/dist/esnext/components/AddToCartButton/AddToCartButton.client.d.ts +3 -4
- package/dist/esnext/components/AddToCartButton/AddToCartButton.client.js +9 -22
- package/dist/esnext/components/AddToCartButton/index.d.ts +1 -1
- package/dist/esnext/components/BuyNowButton/BuyNowButton.client.d.ts +4 -5
- package/dist/esnext/components/BuyNowButton/index.d.ts +1 -1
- package/dist/esnext/components/BuyNowButton/index.js +1 -1
- package/dist/esnext/components/CartCheckoutButton/CartCheckoutButton.client.d.ts +2 -3
- package/dist/esnext/components/CartEstimatedCost/CartEstimatedCost.client.d.ts +3 -3
- package/dist/esnext/components/CartLineImage/CartLineImage.client.d.ts +5 -3
- package/dist/esnext/components/CartLinePrice/CartLinePrice.client.d.ts +5 -5
- package/dist/esnext/components/CartLinePrice/CartLinePrice.client.js +1 -1
- package/dist/esnext/components/CartLineProductTitle/CartLineProductTitle.client.d.ts +1 -3
- package/dist/esnext/components/CartLineProvider/context.d.ts +10 -16
- package/dist/esnext/components/CartLineQuantity/CartLineQuantity.client.d.ts +1 -3
- package/dist/esnext/components/CartProvider/CartProvider.client.d.ts +1 -1
- package/dist/esnext/components/CartProvider/CartProvider.client.js +8 -2
- package/dist/esnext/components/CartProvider/cart-queries.d.ts +9 -0
- package/dist/esnext/components/CartProvider/cart-queries.js +876 -0
- package/dist/esnext/components/CartProvider/graphql/CartAttributesUpdateMutation.d.ts +72 -5
- package/dist/esnext/components/CartProvider/graphql/CartBuyerIdentityUpdateMutation.d.ts +72 -5
- package/dist/esnext/components/CartProvider/graphql/CartCreateMutation.d.ts +72 -5
- package/dist/esnext/components/CartProvider/graphql/CartDiscountCodesUpdateMutation.d.ts +73 -6
- package/dist/esnext/components/CartProvider/graphql/CartFragment.d.ts +13 -11
- package/dist/esnext/components/CartProvider/graphql/CartLineAddMutation.d.ts +72 -5
- package/dist/esnext/components/CartProvider/graphql/CartLineRemoveMutation.d.ts +72 -5
- package/dist/esnext/components/CartProvider/graphql/CartLineUpdateMutation.d.ts +72 -5
- package/dist/esnext/components/CartProvider/graphql/CartNoteUpdateMutation.d.ts +73 -6
- package/dist/esnext/components/CartProvider/graphql/CartQuery.d.ts +72 -5
- package/dist/esnext/components/CartProvider/hooks.d.ts +1 -1
- package/dist/esnext/components/CartProvider/hooks.js +4 -1
- package/dist/esnext/components/CartProvider/types.d.ts +1 -1
- package/dist/esnext/components/CartShopPayButton/CartShopPayButton.client.d.ts +3 -2
- package/dist/esnext/components/ExternalVideo/ExternalVideo.d.ts +8 -13
- package/dist/esnext/components/ExternalVideo/ExternalVideo.js +7 -7
- package/dist/esnext/components/ExternalVideo/index.d.ts +1 -1
- package/dist/esnext/components/ExternalVideo/index.js +1 -1
- package/dist/esnext/components/Image/Image.d.ts +14 -16
- package/dist/esnext/components/Image/Image.js +17 -17
- package/dist/esnext/components/Image/index.d.ts +1 -1
- package/dist/esnext/components/Image/index.js +1 -1
- package/dist/esnext/components/Link/Link.client.d.ts +4 -5
- package/dist/esnext/components/Link/Link.client.js +5 -4
- package/dist/esnext/components/LocalizationProvider/LocalizationClientProvider.client.js +1 -3
- package/dist/esnext/components/LocalizationProvider/LocalizationContext.client.d.ts +0 -1
- package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.d.ts +4 -5
- package/dist/esnext/components/LocalizationProvider/LocalizationProvider.server.js +15 -4
- package/dist/esnext/components/LocalizationProvider/LocalizationQuery.d.ts +5 -8
- package/dist/esnext/components/LocalizationProvider/index.d.ts +0 -1
- package/dist/esnext/components/LocalizationProvider/index.js +0 -1
- package/dist/esnext/components/MediaFile/MediaFile.d.ts +10 -21
- package/dist/esnext/components/MediaFile/MediaFile.js +7 -5
- package/dist/esnext/components/MediaFile/index.d.ts +1 -1
- package/dist/esnext/components/MediaFile/index.js +1 -1
- package/dist/esnext/components/Metafield/Metafield.client.d.ts +2 -6
- package/dist/esnext/components/Metafield/Metafield.client.js +8 -8
- package/dist/esnext/components/Metafield/components/StarRating/StarRating.d.ts +1 -3
- package/dist/esnext/components/Metafield/index.d.ts +1 -2
- package/dist/esnext/components/Metafield/index.js +1 -1
- package/dist/esnext/components/Metafield/types.d.ts +1 -1
- package/dist/esnext/components/ModelViewer/ModelViewer.client.d.ts +58 -66
- package/dist/esnext/components/ModelViewer/ModelViewer.client.js +10 -7
- package/dist/esnext/components/ModelViewer/index.d.ts +1 -1
- package/dist/esnext/components/Money/Money.client.d.ts +8 -12
- package/dist/esnext/components/Money/Money.client.js +1 -4
- package/dist/esnext/components/Money/index.d.ts +1 -1
- package/dist/esnext/components/Money/index.js +1 -1
- package/dist/esnext/components/ProductDescription/ProductDescription.client.d.ts +7 -2
- package/dist/esnext/components/ProductDescription/ProductDescription.client.js +4 -3
- package/dist/esnext/components/ProductMetafield/ProductMetafield.client.js +3 -3
- package/dist/esnext/components/ProductPrice/ProductPrice.client.d.ts +5 -5
- package/dist/esnext/components/ProductPrice/ProductPrice.client.js +2 -2
- package/dist/esnext/components/ProductProvider/ProductProvider.client.d.ts +8 -8
- package/dist/esnext/components/ProductProvider/ProductProvider.client.js +2 -4
- package/dist/esnext/components/ProductProvider/context.d.ts +23 -14
- package/dist/esnext/components/ProductProvider/index.d.ts +1 -1
- package/dist/esnext/components/ProductProvider/index.js +1 -1
- package/dist/esnext/components/Seo/CollectionSeo.client.d.ts +3 -2
- package/dist/esnext/components/Seo/CollectionSeo.client.js +3 -3
- package/dist/esnext/components/Seo/DefaultPageSeo.client.d.ts +3 -2
- package/dist/esnext/components/Seo/DefaultPageSeo.client.js +2 -2
- package/dist/esnext/components/Seo/DescriptionSeo.client.d.ts +3 -3
- package/dist/esnext/components/Seo/DescriptionSeo.client.js +1 -1
- package/dist/esnext/components/Seo/HomePageSeo.client.d.ts +1 -1
- package/dist/esnext/components/Seo/ImageSeo.client.d.ts +3 -2
- package/dist/esnext/components/Seo/PageSeo.client.d.ts +3 -2
- package/dist/esnext/components/Seo/PageSeo.client.js +2 -2
- package/dist/esnext/components/Seo/ProductSeo.client.d.ts +5 -2
- package/dist/esnext/components/Seo/ProductSeo.client.js +10 -5
- package/dist/esnext/components/Seo/Seo.client.d.ts +11 -7
- package/dist/esnext/components/Seo/Seo.client.js +8 -14
- package/dist/esnext/components/Seo/TitleSeo.client.d.ts +3 -4
- package/dist/esnext/components/Seo/TwitterSeo.client.d.ts +1 -1
- package/dist/esnext/components/Seo/seo-types.d.ts +17 -0
- package/dist/esnext/components/{ExternalVideo/ExternalVideoFragment.js → Seo/seo-types.js} +0 -0
- package/dist/esnext/components/ShopPayButton/ShopPayButton.client.d.ts +2 -1
- package/dist/esnext/components/ShopPayButton/ShopPayButton.client.js +1 -9
- package/dist/esnext/components/ShopPayButton/index.d.ts +1 -1
- package/dist/esnext/components/UnitPrice/UnitPrice.client.d.ts +8 -13
- package/dist/esnext/components/UnitPrice/UnitPrice.client.js +9 -4
- package/dist/esnext/components/UnitPrice/index.d.ts +1 -1
- package/dist/esnext/components/UnitPrice/index.js +1 -1
- package/dist/esnext/components/Video/Video.d.ts +8 -16
- package/dist/esnext/components/Video/Video.js +11 -6
- package/dist/esnext/components/Video/index.d.ts +1 -2
- package/dist/esnext/components/Video/index.js +1 -1
- package/dist/esnext/components/index.d.ts +3 -16
- package/dist/esnext/components/index.js +2 -5
- package/dist/esnext/entry-client.js +27 -8
- package/dist/esnext/entry-server.d.ts +2 -1
- package/dist/esnext/entry-server.js +127 -160
- package/dist/esnext/foundation/Boomerang/Boomerang.client.d.ts +3 -1
- package/dist/esnext/foundation/Boomerang/Boomerang.client.js +17 -3
- package/dist/esnext/foundation/FileRoutes/FileRoutes.server.d.ts +22 -0
- package/dist/esnext/foundation/{Router/DefaultRoutes.js → FileRoutes/FileRoutes.server.js} +24 -23
- package/dist/esnext/foundation/Redirect/Redirect.client.d.ts +5 -0
- package/dist/esnext/foundation/Redirect/Redirect.client.js +14 -0
- package/dist/esnext/foundation/Route/Route.server.d.ts +12 -0
- package/dist/esnext/foundation/Route/Route.server.js +33 -0
- package/dist/esnext/foundation/Router/{Router.client.d.ts → BrowserRouter.client.d.ts} +3 -2
- package/dist/esnext/foundation/Router/{Router.client.js → BrowserRouter.client.js} +11 -7
- package/dist/esnext/foundation/Router/Router.server.d.ts +10 -0
- package/dist/esnext/foundation/Router/Router.server.js +8 -0
- package/dist/esnext/foundation/ServerRequestProvider/ServerRequestProvider.js +19 -24
- package/dist/esnext/foundation/ServerStateProvider/{ServerStateProvider.client.d.ts → ServerStateProvider.d.ts} +0 -0
- package/dist/esnext/foundation/ServerStateProvider/{ServerStateProvider.client.js → ServerStateProvider.js} +0 -0
- package/dist/esnext/foundation/ServerStateProvider/index.d.ts +2 -2
- package/dist/esnext/foundation/ServerStateProvider/index.js +1 -1
- package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.client.js +3 -0
- package/dist/esnext/foundation/ShopifyProvider/ShopifyProvider.server.js +3 -0
- package/dist/esnext/foundation/ShopifyProvider/index.d.ts +0 -1
- package/dist/esnext/foundation/ShopifyProvider/index.js +0 -1
- package/dist/esnext/foundation/index.d.ts +0 -2
- package/dist/esnext/foundation/index.js +0 -2
- package/dist/esnext/{hooks → foundation}/useNavigate/useNavigate.d.ts +6 -3
- package/dist/esnext/{hooks → foundation}/useNavigate/useNavigate.js +4 -1
- package/dist/esnext/foundation/useQuery/hooks.d.ts +5 -4
- package/dist/esnext/foundation/useQuery/hooks.js +13 -4
- package/dist/esnext/foundation/useRouteParams/RouteParamsProvider.client.d.ts +9 -0
- package/dist/esnext/foundation/useRouteParams/RouteParamsProvider.client.js +7 -0
- package/dist/esnext/foundation/useRouteParams/useRouteParams.d.ts +4 -0
- package/dist/esnext/foundation/useRouteParams/useRouteParams.js +9 -0
- package/dist/esnext/foundation/useUrl/useUrl.js +1 -1
- package/dist/esnext/framework/Hydration/Html.d.ts +2 -0
- package/dist/esnext/framework/Hydration/Html.js +71 -2
- package/dist/esnext/framework/Hydration/ServerComponentRequest.server.d.ts +13 -0
- package/dist/esnext/framework/Hydration/ServerComponentRequest.server.js +28 -7
- package/dist/esnext/framework/Hydration/ServerComponentResponse.server.d.ts +4 -1
- package/dist/esnext/framework/Hydration/ServerComponentResponse.server.js +5 -0
- package/dist/esnext/framework/Hydration/rsc.js +1 -1
- package/dist/esnext/framework/cache/in-memory.d.ts +1 -0
- package/dist/esnext/framework/cache/in-memory.js +15 -5
- package/dist/esnext/framework/middleware.js +25 -3
- package/dist/esnext/framework/plugin.js +6 -1
- package/dist/esnext/framework/plugins/vite-plugin-css-modules-rsc.d.ts +2 -0
- package/dist/esnext/framework/plugins/vite-plugin-css-modules-rsc.js +28 -0
- package/dist/esnext/framework/plugins/vite-plugin-hydrogen-config.js +61 -77
- package/dist/esnext/framework/plugins/vite-plugin-platform-entry.js +1 -1
- package/dist/esnext/hooks/index.d.ts +0 -1
- package/dist/esnext/hooks/index.js +0 -1
- package/dist/esnext/hooks/useCartLine/useCartLine.d.ts +10 -18
- package/dist/esnext/hooks/useCountry/useCountry.d.ts +4 -4
- package/dist/esnext/hooks/useMoney/hooks.d.ts +3 -3
- package/dist/esnext/hooks/useMoney/hooks.js +2 -2
- package/dist/esnext/hooks/useParsedMetafields/useParsedMetafields.d.ts +17 -2
- package/dist/esnext/hooks/useParsedMetafields/useParsedMetafields.js +7 -3
- package/dist/esnext/hooks/useProduct/useProduct.d.ts +36 -138
- package/dist/esnext/hooks/useProductOptions/helpers.d.ts +6 -4
- package/dist/esnext/hooks/useProductOptions/helpers.js +13 -6
- package/dist/esnext/hooks/useProductOptions/types.d.ts +15 -35
- package/dist/esnext/hooks/useProductOptions/useProductOptions.d.ts +6 -5
- package/dist/esnext/hooks/useProductOptions/useProductOptions.js +13 -3
- package/dist/esnext/hooks/useShopQuery/hooks.js +79 -21
- package/dist/esnext/index.d.ts +8 -2
- package/dist/esnext/index.js +8 -2
- package/dist/esnext/platforms/node.d.ts +2 -3
- package/dist/esnext/platforms/node.js +5 -3
- package/dist/esnext/platforms/worker-event.d.ts +0 -8
- package/dist/esnext/platforms/worker-event.js +2 -23
- package/dist/esnext/platforms/worker.d.ts +14 -0
- package/dist/esnext/platforms/worker.js +25 -0
- package/dist/esnext/{graphql/types/types.d.ts → storefront-api-types.d.ts} +2016 -1593
- package/dist/esnext/{graphql/types/types.js → storefront-api-types.js} +1025 -732
- package/dist/esnext/streaming.server.d.ts +9 -6
- package/dist/esnext/streaming.server.js +2 -27
- package/dist/esnext/types.d.ts +3 -18
- package/dist/esnext/utilities/apiRoutes.d.ts +19 -3
- package/dist/esnext/utilities/apiRoutes.js +27 -5
- package/dist/esnext/utilities/devtools.d.ts +11 -0
- package/dist/esnext/utilities/devtools.js +11 -0
- package/dist/esnext/utilities/fetch.d.ts +7 -1
- package/dist/esnext/utilities/fetch.js +9 -18
- package/dist/esnext/utilities/flattenConnection/flattenConnection.d.ts +3 -2
- package/dist/esnext/utilities/flattenConnection/flattenConnection.js +6 -2
- package/dist/esnext/utilities/graphql-tracker.d.ts +17 -0
- package/dist/esnext/utilities/graphql-tracker.js +119 -0
- package/dist/esnext/utilities/image_size.d.ts +5 -4
- package/dist/esnext/utilities/log/log-query-timeline.d.ts +1 -1
- package/dist/esnext/utilities/log/log-query-timeline.js +1 -2
- package/dist/esnext/utilities/log/log.d.ts +1 -0
- package/dist/esnext/utilities/log/utils.js +3 -0
- package/dist/esnext/utilities/parseMetafieldValue/parseMetafieldValue.d.ts +3 -2
- package/dist/esnext/utilities/video_parameters.js +0 -4
- package/dist/esnext/version.d.ts +1 -1
- package/dist/esnext/version.js +1 -1
- package/dist/node/entry-server.d.ts +2 -1
- package/dist/node/entry-server.js +129 -158
- package/dist/node/foundation/Redirect/Redirect.client.d.ts +5 -0
- package/dist/node/foundation/Redirect/Redirect.client.js +17 -0
- package/dist/node/foundation/Router/BrowserRouter.client.d.ts +13 -0
- package/dist/node/foundation/Router/BrowserRouter.client.js +77 -0
- package/dist/node/foundation/ServerRequestProvider/ServerRequestProvider.js +24 -25
- package/dist/node/foundation/ServerRequestProvider/index.js +5 -1
- package/dist/node/foundation/ServerStateProvider/{ServerStateProvider.client.d.ts → ServerStateProvider.d.ts} +0 -0
- package/dist/node/foundation/ServerStateProvider/{ServerStateProvider.client.js → ServerStateProvider.js} +5 -1
- package/dist/node/foundation/ServerStateProvider/index.d.ts +2 -2
- package/dist/node/foundation/ServerStateProvider/index.js +3 -3
- package/dist/node/foundation/ssr-interop.d.ts +29 -0
- package/dist/node/foundation/ssr-interop.js +39 -0
- package/dist/node/foundation/useNavigate/useNavigate.d.ts +13 -0
- package/dist/node/foundation/useNavigate/useNavigate.js +18 -0
- package/dist/node/foundation/useServerState/index.d.ts +1 -0
- package/dist/node/foundation/useServerState/index.js +5 -0
- package/dist/node/foundation/useServerState/use-server-state.d.ts +16 -0
- package/dist/node/foundation/useServerState/use-server-state.js +24 -0
- package/dist/node/framework/Hydration/Html.d.ts +2 -0
- package/dist/node/framework/Hydration/Html.js +73 -3
- package/dist/node/framework/Hydration/ServerComponentRequest.server.d.ts +13 -0
- package/dist/node/framework/Hydration/ServerComponentRequest.server.js +28 -7
- package/dist/node/framework/Hydration/ServerComponentResponse.server.d.ts +4 -1
- package/dist/node/framework/Hydration/ServerComponentResponse.server.js +8 -0
- package/dist/node/framework/Hydration/rsc.js +1 -1
- package/dist/node/framework/cache/in-memory.d.ts +1 -0
- package/dist/node/framework/cache/in-memory.js +15 -5
- package/dist/node/framework/middleware.js +30 -4
- package/dist/node/framework/plugin.js +11 -2
- package/dist/node/framework/plugins/vite-plugin-css-modules-rsc.d.ts +2 -0
- package/dist/node/framework/plugins/vite-plugin-css-modules-rsc.js +31 -0
- package/dist/node/framework/plugins/vite-plugin-hydrogen-config.js +61 -77
- package/dist/node/framework/plugins/vite-plugin-platform-entry.js +1 -1
- package/dist/node/{graphql/types/types.d.ts → storefront-api-types.d.ts} +2016 -1593
- package/dist/node/{graphql/types/types.js → storefront-api-types.js} +1026 -733
- package/dist/node/streaming.server.d.ts +9 -6
- package/dist/node/streaming.server.js +3 -29
- package/dist/node/types.d.ts +3 -18
- package/dist/node/utilities/apiRoutes.d.ts +19 -3
- package/dist/node/utilities/apiRoutes.js +29 -7
- package/dist/node/utilities/fetch.d.ts +10 -0
- package/dist/node/utilities/fetch.js +39 -0
- package/dist/node/utilities/log/log-query-timeline.d.ts +1 -1
- package/dist/node/utilities/log/log-query-timeline.js +1 -2
- package/dist/node/utilities/log/log.d.ts +1 -0
- package/dist/node/utilities/log/utils.js +3 -0
- package/dist/node/utilities/web-api-polyfill.js +5 -1
- package/dist/node/version.d.ts +1 -0
- package/dist/node/version.js +4 -0
- package/package.json +21 -21
- package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-plugin.js +43 -104
- package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.browser.development.server.js +1566 -848
- package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.browser.production.min.server.js +36 -421
- package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.node.development.server.js +1523 -864
- package/vendor/react-server-dom-vite/cjs/react-server-dom-vite-writer.node.production.min.server.js +35 -437
- package/vendor/react-server-dom-vite/cjs/react-server-dom-vite.development.js +507 -517
- package/vendor/react-server-dom-vite/cjs/react-server-dom-vite.production.min.js +10 -246
- package/vendor/react-server-dom-vite/esm/react-server-dom-vite-client-proxy.js +18 -25
- package/vendor/react-server-dom-vite/esm/react-server-dom-vite-plugin.js +47 -108
- package/vendor/react-server-dom-vite/esm/react-server-dom-vite-writer.browser.server.js +1033 -306
- package/vendor/react-server-dom-vite/esm/react-server-dom-vite-writer.node.server.js +965 -293
- package/vendor/react-server-dom-vite/esm/react-server-dom-vite.js +98 -108
- package/vendor/react-server-dom-vite/package.json +0 -2
- package/dist/esnext/components/ExternalVideo/ExternalVideoFragment.d.ts +0 -4
- package/dist/esnext/components/Image/ImageFragment.d.ts +0 -4
- package/dist/esnext/components/Image/ImageFragment.js +0 -1
- package/dist/esnext/components/MediaFile/MediaFileFragment.d.ts +0 -22
- package/dist/esnext/components/MediaFile/MediaFileFragment.js +0 -1
- package/dist/esnext/components/Metafield/MetafieldFragment.d.ts +0 -19
- package/dist/esnext/components/Metafield/MetafieldFragment.js +0 -1
- package/dist/esnext/components/ModelViewer/Model3DFragment.d.ts +0 -11
- package/dist/esnext/components/ModelViewer/Model3DFragment.js +0 -1
- package/dist/esnext/components/Money/MoneyFragment.d.ts +0 -4
- package/dist/esnext/components/Money/MoneyFragment.js +0 -1
- package/dist/esnext/components/ProductProvider/ProductProviderFragment.d.ts +0 -80
- package/dist/esnext/components/ProductProvider/ProductProviderFragment.js +0 -1
- package/dist/esnext/components/ProductProvider/types.d.ts +0 -19
- package/dist/esnext/components/ProductProvider/types.js +0 -1
- package/dist/esnext/components/RawHtml/RawHtml.d.ts +0 -19
- package/dist/esnext/components/RawHtml/RawHtml.js +0 -21
- package/dist/esnext/components/RawHtml/index.d.ts +0 -1
- package/dist/esnext/components/RawHtml/index.js +0 -1
- package/dist/esnext/components/Router/index.d.ts +0 -1
- package/dist/esnext/components/Router/index.js +0 -1
- package/dist/esnext/components/Seo/types.d.ts +0 -67
- package/dist/esnext/components/Seo/types.js +0 -1
- package/dist/esnext/components/UnitPrice/UnitPriceFragment.d.ts +0 -12
- package/dist/esnext/components/UnitPrice/UnitPriceFragment.js +0 -1
- package/dist/esnext/components/Video/VideoFragment.d.ts +0 -11
- package/dist/esnext/components/Video/VideoFragment.js +0 -1
- package/dist/esnext/foundation/Boomerang/BoomerangPageTemplate.client.d.ts +0 -3
- package/dist/esnext/foundation/Boomerang/BoomerangPageTemplate.client.js +0 -14
- package/dist/esnext/foundation/Router/DefaultRoutes.d.ts +0 -22
- package/dist/esnext/foundation/Router/index.d.ts +0 -1
- package/dist/esnext/foundation/Router/index.js +0 -1
- package/dist/esnext/graphql/graphql-constants.d.ts +0 -1751
- package/dist/esnext/graphql/graphql-constants.js +0 -3364
- package/dist/esnext/hooks/useAvailableCountries/index.d.ts +0 -1
- package/dist/esnext/hooks/useAvailableCountries/index.js +0 -1
- package/dist/esnext/hooks/useAvailableCountries/useAvailableCountries.d.ts +0 -11
- package/dist/esnext/hooks/useAvailableCountries/useAvailableCountries.js +0 -17
- package/dist/esnext/hooks/useNavigate/index.d.ts +0 -1
- package/dist/esnext/hooks/useNavigate/index.js +0 -1
- package/dist/esnext/hooks/useProductOptions/SellingPlanFragment.d.ts +0 -28
- package/dist/esnext/hooks/useProductOptions/SellingPlanFragment.js +0 -1
- package/dist/esnext/hooks/useProductOptions/SellingPlanGroupsFragment.d.ts +0 -20
- package/dist/esnext/hooks/useProductOptions/SellingPlanGroupsFragment.js +0 -1
- package/dist/esnext/hooks/useProductOptions/VariantFragment.d.ts +0 -64
- package/dist/esnext/hooks/useProductOptions/VariantFragment.js +0 -1
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -40,10 +44,13 @@ const config_1 = require("./framework/config");
|
|
|
40
44
|
const streaming_server_1 = require("./streaming.server");
|
|
41
45
|
const constants_1 = require("./constants");
|
|
42
46
|
const template_1 = require("./utilities/template");
|
|
47
|
+
const DOCTYPE = '<!DOCTYPE html>';
|
|
48
|
+
const CONTENT_TYPE = 'Content-Type';
|
|
43
49
|
const HTML_CONTENT_TYPE = 'text/html; charset=UTF-8';
|
|
44
|
-
const renderHydrogen = (App, {
|
|
45
|
-
const handleRequest = async function (rawRequest, { indexTemplate, streamableResponse, dev, cache, context, nonce }) {
|
|
50
|
+
const renderHydrogen = (App, { shopifyConfig, routes }) => {
|
|
51
|
+
const handleRequest = async function (rawRequest, { indexTemplate, streamableResponse, dev, cache, context, nonce, buyerIpHeader, }) {
|
|
46
52
|
const request = new ServerComponentRequest_server_1.ServerComponentRequest(rawRequest);
|
|
53
|
+
request.ctx.buyerIpHeader = buyerIpHeader;
|
|
47
54
|
const url = new URL(request.url);
|
|
48
55
|
const log = (0, log_1.getLoggerWithContext)(request);
|
|
49
56
|
const componentResponse = new ServerComponentResponse_server_1.ServerComponentResponse();
|
|
@@ -60,22 +67,22 @@ const renderHydrogen = (App, { pages }) => {
|
|
|
60
67
|
if (template && typeof template !== 'string') {
|
|
61
68
|
template = template.default;
|
|
62
69
|
}
|
|
63
|
-
if (!isReactHydrationRequest &&
|
|
64
|
-
const apiRoute = getApiRoute(url, {
|
|
70
|
+
if (!isReactHydrationRequest && routes) {
|
|
71
|
+
const apiRoute = getApiRoute(url, { routes });
|
|
65
72
|
// The API Route might have a default export, making it also a server component
|
|
66
73
|
// If it does, only render the API route if the request method is GET
|
|
67
74
|
if (apiRoute &&
|
|
68
75
|
(!apiRoute.hasServerComponent || request.method !== 'GET')) {
|
|
69
|
-
return (0, apiRoutes_1.renderApiRoute)(request, apiRoute);
|
|
76
|
+
return (0, apiRoutes_1.renderApiRoute)(request, apiRoute, shopifyConfig);
|
|
70
77
|
}
|
|
71
78
|
}
|
|
72
79
|
const isStreamable = !(0, bot_ua_1.isBotUA)(url, request.headers.get('user-agent')) &&
|
|
73
|
-
(!!streamableResponse || (0, streaming_server_1.
|
|
80
|
+
(!!streamableResponse || (await (0, streaming_server_1.isStreamingSupported)()));
|
|
74
81
|
const params = {
|
|
75
82
|
App,
|
|
76
83
|
log,
|
|
77
84
|
dev,
|
|
78
|
-
|
|
85
|
+
routes,
|
|
79
86
|
nonce,
|
|
80
87
|
request,
|
|
81
88
|
template,
|
|
@@ -99,28 +106,33 @@ const renderHydrogen = (App, { pages }) => {
|
|
|
99
106
|
return handleRequest;
|
|
100
107
|
};
|
|
101
108
|
exports.renderHydrogen = renderHydrogen;
|
|
102
|
-
function getApiRoute(url, {
|
|
103
|
-
const
|
|
104
|
-
return (0, apiRoutes_1.getApiRouteFromURL)(url,
|
|
109
|
+
function getApiRoute(url, { routes }) {
|
|
110
|
+
const apiRoutes = (0, apiRoutes_1.getApiRoutes)(routes);
|
|
111
|
+
return (0, apiRoutes_1.getApiRouteFromURL)(url, apiRoutes);
|
|
105
112
|
}
|
|
106
113
|
/**
|
|
107
114
|
* The render function is responsible for turning the provided `App` into an HTML string,
|
|
108
115
|
* and returning any initial state that needs to be hydrated into the client version of the app.
|
|
109
116
|
* NOTE: This is currently only used for SEO bots or Worker runtime (where Stream is not yet supported).
|
|
110
117
|
*/
|
|
111
|
-
async function render(url, { App,
|
|
118
|
+
async function render(url, { App, routes, request, componentResponse, log, template, nonce, dev, }) {
|
|
112
119
|
const state = { pathname: url.pathname, search: url.search };
|
|
113
120
|
const { AppSSR, rscReadable } = buildAppSSR({
|
|
114
121
|
App,
|
|
115
122
|
state,
|
|
116
123
|
request,
|
|
117
124
|
response: componentResponse,
|
|
118
|
-
|
|
125
|
+
routes,
|
|
119
126
|
log,
|
|
120
127
|
}, { template });
|
|
128
|
+
function onErrorShell(error) {
|
|
129
|
+
log.error(error);
|
|
130
|
+
componentResponse.writeHead({ status: 500 });
|
|
131
|
+
return template;
|
|
132
|
+
}
|
|
121
133
|
let [html, flight] = await Promise.all([
|
|
122
|
-
renderToBufferedString(AppSSR, { log, nonce }),
|
|
123
|
-
(0, streaming_server_1.bufferReadableStream)(rscReadable.getReader()),
|
|
134
|
+
renderToBufferedString(AppSSR, { log, nonce }).catch(onErrorShell),
|
|
135
|
+
(0, streaming_server_1.bufferReadableStream)(rscReadable.getReader()).catch(() => null),
|
|
124
136
|
]);
|
|
125
137
|
const { headers, status, statusText } = getResponseOptions(componentResponse);
|
|
126
138
|
/**
|
|
@@ -137,15 +149,11 @@ async function render(url, { App, pages, request, componentResponse, log, templa
|
|
|
137
149
|
headers,
|
|
138
150
|
});
|
|
139
151
|
}
|
|
140
|
-
headers[
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
.replace(
|
|
144
|
-
|
|
145
|
-
.replace('<body', bodyAttributes ? `<body ${bodyAttributes}` : '$&')
|
|
146
|
-
.replace('</body>', flight
|
|
147
|
-
? `${flightContainer({ init: true, nonce, chunk: flight })}</body>`
|
|
148
|
-
: '$&');
|
|
152
|
+
headers[CONTENT_TYPE] = HTML_CONTENT_TYPE;
|
|
153
|
+
html = (0, Html_1.applyHtmlHead)(html, request.ctx.head, template);
|
|
154
|
+
if (flight) {
|
|
155
|
+
html = html.replace('</body>', `${flightContainer({ init: true, nonce, chunk: flight })}</body>`);
|
|
156
|
+
}
|
|
149
157
|
postRequestTasks('ssr', status, request, componentResponse);
|
|
150
158
|
return new Response(html, {
|
|
151
159
|
status,
|
|
@@ -157,7 +165,8 @@ async function render(url, { App, pages, request, componentResponse, log, templa
|
|
|
157
165
|
* Stream a response to the client. NOTE: This omits custom `<head>`
|
|
158
166
|
* information, so this method should not be used by crawlers.
|
|
159
167
|
*/
|
|
160
|
-
async function stream(url, { App,
|
|
168
|
+
async function stream(url, { App, routes, request, response, componentResponse, log, template, nonce, dev, }) {
|
|
169
|
+
var _a;
|
|
161
170
|
const state = { pathname: url.pathname, search: url.search };
|
|
162
171
|
log.trace('start stream');
|
|
163
172
|
const { noScriptTemplate, bootstrapScripts, bootstrapModules } = (0, template_1.stripScriptsFromTemplate)(template);
|
|
@@ -167,11 +176,8 @@ async function stream(url, { App, pages, request, response, componentResponse, l
|
|
|
167
176
|
request,
|
|
168
177
|
response: componentResponse,
|
|
169
178
|
log,
|
|
170
|
-
|
|
171
|
-
}, {
|
|
172
|
-
template: noScriptTemplate,
|
|
173
|
-
htmlAttrs: { lang: 'en' },
|
|
174
|
-
});
|
|
179
|
+
routes,
|
|
180
|
+
}, { template: noScriptTemplate });
|
|
175
181
|
const rscToScriptTagReadable = new ReadableStream({
|
|
176
182
|
start(controller) {
|
|
177
183
|
log.trace('rsc start chunks');
|
|
@@ -189,59 +195,66 @@ async function stream(url, { App, pages, request, response, componentResponse, l
|
|
|
189
195
|
});
|
|
190
196
|
let didError;
|
|
191
197
|
if (__WORKER__) {
|
|
192
|
-
const
|
|
198
|
+
const onCompleteAll = (0, defer_1.defer)();
|
|
193
199
|
const encoder = new TextEncoder();
|
|
194
200
|
const transform = new TransformStream();
|
|
195
201
|
const writable = transform.writable.getWriter();
|
|
196
202
|
const responseOptions = {};
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
203
|
+
let ssrReadable;
|
|
204
|
+
try {
|
|
205
|
+
ssrReadable = await (0, streaming_server_1.ssrRenderToReadableStream)(AppSSR, {
|
|
206
|
+
nonce,
|
|
207
|
+
bootstrapScripts,
|
|
208
|
+
bootstrapModules,
|
|
209
|
+
onError(error) {
|
|
210
|
+
didError = error;
|
|
211
|
+
if (dev && !writable.closed && !!responseOptions.status) {
|
|
212
|
+
writable.write((0, error_1.getErrorMarkup)(error));
|
|
213
|
+
}
|
|
214
|
+
log.error(error);
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
log.error(error);
|
|
220
|
+
return new Response(template + (dev ? (0, error_1.getErrorMarkup)(error) : ''), {
|
|
221
|
+
status: 500,
|
|
222
|
+
headers: { [CONTENT_TYPE]: HTML_CONTENT_TYPE },
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
log.trace('worker ready to stream');
|
|
226
|
+
ssrReadable.allReady.then(() => {
|
|
227
|
+
log.trace('worker complete stream');
|
|
228
|
+
onCompleteAll.resolve(true);
|
|
229
|
+
});
|
|
230
|
+
async function prepareForStreaming(flush) {
|
|
231
|
+
Object.assign(responseOptions, getResponseOptions(componentResponse, didError));
|
|
232
|
+
/**
|
|
233
|
+
* TODO: This assumes `response.cache()` has been called _before_ any
|
|
234
|
+
* queries which might be caught behind Suspense. Clarify this or add
|
|
235
|
+
* additional checks downstream?
|
|
236
|
+
*/
|
|
237
|
+
responseOptions.headers[(0, cache_1.getCacheControlHeader)({ dev })] =
|
|
238
|
+
componentResponse.cacheControlHeader;
|
|
239
|
+
if (isRedirect(responseOptions)) {
|
|
240
|
+
return false;
|
|
241
|
+
}
|
|
242
|
+
if (flush) {
|
|
229
243
|
if (componentResponse.customBody) {
|
|
230
244
|
writable.write(encoder.encode(await componentResponse.customBody));
|
|
231
|
-
return
|
|
245
|
+
return false;
|
|
232
246
|
}
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
if (dev && deferredShouldReturnApp.status === 'pending') {
|
|
239
|
-
writable.write((0, error_1.getErrorMarkup)(error));
|
|
247
|
+
responseOptions.headers[CONTENT_TYPE] = HTML_CONTENT_TYPE;
|
|
248
|
+
writable.write(encoder.encode(DOCTYPE));
|
|
249
|
+
if (didError) {
|
|
250
|
+
// This error was delayed until the headers were properly sent.
|
|
251
|
+
writable.write(encoder.encode((0, error_1.getErrorMarkup)(didError)));
|
|
240
252
|
}
|
|
241
|
-
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
const shouldReturnApp = (_a = (await prepareForStreaming(componentResponse.canStream()))) !== null && _a !== void 0 ? _a : (await onCompleteAll.promise.then(prepareForStreaming));
|
|
257
|
+
if (shouldReturnApp) {
|
|
245
258
|
let bufferedSsr = '';
|
|
246
259
|
let isPendingSsrWrite = false;
|
|
247
260
|
const writingSSR = (0, streaming_server_1.bufferReadableStream)(ssrReadable.getReader(), (chunk) => {
|
|
@@ -278,12 +291,11 @@ async function stream(url, { App, pages, request, response, componentResponse, l
|
|
|
278
291
|
return new Response(bufferedBody, responseOptions);
|
|
279
292
|
}
|
|
280
293
|
else if (response) {
|
|
281
|
-
response.socket.on('error', log.fatal);
|
|
282
294
|
const { pipe } = (0, streaming_server_1.ssrRenderToPipeableStream)(AppSSR, {
|
|
283
295
|
nonce,
|
|
284
296
|
bootstrapScripts,
|
|
285
297
|
bootstrapModules,
|
|
286
|
-
|
|
298
|
+
onShellReady() {
|
|
287
299
|
log.trace('node ready to stream');
|
|
288
300
|
/**
|
|
289
301
|
* TODO: This assumes `response.cache()` has been called _before_ any
|
|
@@ -292,7 +304,6 @@ async function stream(url, { App, pages, request, response, componentResponse, l
|
|
|
292
304
|
*/
|
|
293
305
|
response.setHeader((0, cache_1.getCacheControlHeader)({ dev }), componentResponse.cacheControlHeader);
|
|
294
306
|
writeHeadToServerResponse(response, componentResponse, log, didError);
|
|
295
|
-
(0, log_1.logServerResponse)('str', request, response.statusCode);
|
|
296
307
|
if (isRedirect(response)) {
|
|
297
308
|
// Return redirects early without further rendering/streaming
|
|
298
309
|
return response.end();
|
|
@@ -309,7 +320,7 @@ async function stream(url, { App, pages, request, response, componentResponse, l
|
|
|
309
320
|
return response.write(chunk);
|
|
310
321
|
});
|
|
311
322
|
},
|
|
312
|
-
async
|
|
323
|
+
async onAllReady() {
|
|
313
324
|
log.trace('node complete stream');
|
|
314
325
|
if (componentResponse.canStream() || response.writableEnded) {
|
|
315
326
|
postRequestTasks('str', response.statusCode, request, componentResponse);
|
|
@@ -332,6 +343,15 @@ async function stream(url, { App, pages, request, response, componentResponse, l
|
|
|
332
343
|
pipe(response);
|
|
333
344
|
});
|
|
334
345
|
},
|
|
346
|
+
onShellError(error) {
|
|
347
|
+
log.error(error);
|
|
348
|
+
if (!response.writableEnded) {
|
|
349
|
+
writeHeadToServerResponse(response, componentResponse, log, error);
|
|
350
|
+
startWritingHtmlToServerResponse(response, dev ? error : undefined);
|
|
351
|
+
response.write(template);
|
|
352
|
+
response.end();
|
|
353
|
+
}
|
|
354
|
+
},
|
|
335
355
|
onError(error) {
|
|
336
356
|
didError = error;
|
|
337
357
|
if (dev && response.headersSent) {
|
|
@@ -347,7 +367,7 @@ async function stream(url, { App, pages, request, response, componentResponse, l
|
|
|
347
367
|
/**
|
|
348
368
|
* Stream a hydration response to the client.
|
|
349
369
|
*/
|
|
350
|
-
async function hydrate(url, { App,
|
|
370
|
+
async function hydrate(url, { App, routes, request, response, componentResponse, isStreamable, log, }) {
|
|
351
371
|
const state = JSON.parse(url.searchParams.get('state') || '{}');
|
|
352
372
|
const { AppRSC } = buildAppRSC({
|
|
353
373
|
App,
|
|
@@ -355,7 +375,7 @@ async function hydrate(url, { App, pages, request, response, componentResponse,
|
|
|
355
375
|
request,
|
|
356
376
|
response: componentResponse,
|
|
357
377
|
log,
|
|
358
|
-
|
|
378
|
+
routes,
|
|
359
379
|
});
|
|
360
380
|
if (__WORKER__) {
|
|
361
381
|
const rscReadable = (0, streaming_server_1.rscRenderToReadableStream)(AppRSC);
|
|
@@ -369,7 +389,6 @@ async function hydrate(url, { App, pages, request, response, componentResponse,
|
|
|
369
389
|
return new Response(bufferedBody);
|
|
370
390
|
}
|
|
371
391
|
else if (response) {
|
|
372
|
-
response.socket.on('error', log.fatal);
|
|
373
392
|
const rscWriter = await Promise.resolve().then(() => __importStar(require(
|
|
374
393
|
// @ts-ignore
|
|
375
394
|
'@shopify/hydrogen/vendor/react-server-dom-vite/writer.node.server')));
|
|
@@ -381,21 +400,23 @@ async function hydrate(url, { App, pages, request, response, componentResponse,
|
|
|
381
400
|
});
|
|
382
401
|
}
|
|
383
402
|
}
|
|
384
|
-
function buildAppRSC({ App, state, request, response, log,
|
|
403
|
+
function buildAppRSC({ App, state, request, response, log, routes, }) {
|
|
385
404
|
const hydrogenServerProps = { request, response, log };
|
|
405
|
+
const serverProps = { ...state, ...hydrogenServerProps, routes };
|
|
406
|
+
request.ctx.router.serverProps = serverProps;
|
|
386
407
|
const AppRSC = (react_1.default.createElement(ServerRequestProvider_1.ServerRequestProvider, { request: request, isRSC: true },
|
|
387
408
|
react_1.default.createElement(PreloadQueries, { request: request },
|
|
388
|
-
react_1.default.createElement(App, { ...
|
|
409
|
+
react_1.default.createElement(App, { ...serverProps }))));
|
|
389
410
|
return { AppRSC };
|
|
390
411
|
}
|
|
391
|
-
function buildAppSSR({ App, state, request, response, log,
|
|
412
|
+
function buildAppSSR({ App, state, request, response, log, routes }, htmlOptions) {
|
|
392
413
|
const { AppRSC } = buildAppRSC({
|
|
393
414
|
App,
|
|
394
415
|
state,
|
|
395
416
|
request,
|
|
396
417
|
response,
|
|
397
418
|
log,
|
|
398
|
-
|
|
419
|
+
routes,
|
|
399
420
|
});
|
|
400
421
|
const [rscReadableForFizz, rscReadableForFlight] = (0, streaming_server_1.rscRenderToReadableStream)(AppRSC).tee();
|
|
401
422
|
const rscResponse = (0, streaming_server_1.createFromReadableStream)(rscReadableForFizz);
|
|
@@ -413,43 +434,26 @@ function PreloadQueries({ request, children, }) {
|
|
|
413
434
|
(0, ServerRequestProvider_1.preloadRequestCacheData)(request, preloadQueries);
|
|
414
435
|
return children;
|
|
415
436
|
}
|
|
416
|
-
function extractHeadElements({ context: { helmet } }) {
|
|
417
|
-
return helmet
|
|
418
|
-
? {
|
|
419
|
-
base: helmet.base.toString(),
|
|
420
|
-
bodyAttributes: helmet.bodyAttributes.toString(),
|
|
421
|
-
htmlAttributes: helmet.htmlAttributes.toString(),
|
|
422
|
-
link: helmet.link.toString(),
|
|
423
|
-
meta: helmet.meta.toString(),
|
|
424
|
-
noscript: helmet.noscript.toString(),
|
|
425
|
-
script: helmet.script.toString(),
|
|
426
|
-
style: helmet.style.toString(),
|
|
427
|
-
title: helmet.title.toString(),
|
|
428
|
-
}
|
|
429
|
-
: {};
|
|
430
|
-
}
|
|
431
437
|
async function renderToBufferedString(ReactApp, { log, nonce }) {
|
|
432
438
|
return new Promise(async (resolve, reject) => {
|
|
433
439
|
if (__WORKER__) {
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
}
|
|
451
|
-
await deferred.promise.catch(reject);
|
|
452
|
-
resolve(await (0, streaming_server_1.bufferReadableStream)(readable.getReader()));
|
|
440
|
+
try {
|
|
441
|
+
const ssrReadable = await (0, streaming_server_1.ssrRenderToReadableStream)(ReactApp, {
|
|
442
|
+
nonce,
|
|
443
|
+
onError: (error) => log.error(error),
|
|
444
|
+
});
|
|
445
|
+
/**
|
|
446
|
+
* We want to wait until `allReady` resolves before fetching the
|
|
447
|
+
* stream body. Otherwise, React 18's streaming JS script/template tags
|
|
448
|
+
* will be included in the output and cause issues when loading
|
|
449
|
+
* the Client Components in the browser.
|
|
450
|
+
*/
|
|
451
|
+
await ssrReadable.allReady;
|
|
452
|
+
resolve((0, streaming_server_1.bufferReadableStream)(ssrReadable.getReader()));
|
|
453
|
+
}
|
|
454
|
+
catch (error) {
|
|
455
|
+
reject(error);
|
|
456
|
+
}
|
|
453
457
|
}
|
|
454
458
|
else {
|
|
455
459
|
const writer = await createNodeWriter();
|
|
@@ -459,7 +463,7 @@ async function renderToBufferedString(ReactApp, { log, nonce }) {
|
|
|
459
463
|
* When hydrating, we have to wait until `onCompleteAll` to avoid having
|
|
460
464
|
* `template` and `script` tags inserted and rendered as part of the hydration response.
|
|
461
465
|
*/
|
|
462
|
-
|
|
466
|
+
onAllReady() {
|
|
463
467
|
let data = '';
|
|
464
468
|
writer.on('data', (chunk) => (data += chunk.toString()));
|
|
465
469
|
writer.once('error', reject);
|
|
@@ -467,10 +471,8 @@ async function renderToBufferedString(ReactApp, { log, nonce }) {
|
|
|
467
471
|
// Tell React to start writing to the writer
|
|
468
472
|
pipe(writer);
|
|
469
473
|
},
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
reject(error);
|
|
473
|
-
},
|
|
474
|
+
onShellError: reject,
|
|
475
|
+
onError: (error) => log.error(error),
|
|
474
476
|
});
|
|
475
477
|
}
|
|
476
478
|
});
|
|
@@ -478,22 +480,14 @@ async function renderToBufferedString(ReactApp, { log, nonce }) {
|
|
|
478
480
|
exports.default = exports.renderHydrogen;
|
|
479
481
|
function startWritingHtmlToServerResponse(response, error) {
|
|
480
482
|
if (!response.headersSent) {
|
|
481
|
-
response.setHeader(
|
|
482
|
-
response.write(
|
|
483
|
+
response.setHeader(CONTENT_TYPE, HTML_CONTENT_TYPE);
|
|
484
|
+
response.write(DOCTYPE);
|
|
483
485
|
}
|
|
484
486
|
if (error) {
|
|
485
487
|
// This error was delayed until the headers were properly sent.
|
|
486
488
|
response.write((0, error_1.getErrorMarkup)(error));
|
|
487
489
|
}
|
|
488
490
|
}
|
|
489
|
-
function startWritingHtmlToStream(responseOptions, writable, encoder, error) {
|
|
490
|
-
responseOptions.headers['Content-type'] = HTML_CONTENT_TYPE;
|
|
491
|
-
writable.write(encoder.encode('<!DOCTYPE html>'));
|
|
492
|
-
if (error) {
|
|
493
|
-
// This error was delayed until the headers were properly sent.
|
|
494
|
-
writable.write(encoder.encode((0, error_1.getErrorMarkup)(error)));
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
491
|
function getResponseOptions({ headers, status, customStatus }, error) {
|
|
498
492
|
var _a, _b;
|
|
499
493
|
const responseInit = {};
|
|
@@ -526,29 +520,6 @@ function isRedirect(response) {
|
|
|
526
520
|
const status = (_b = (_a = response.status) !== null && _a !== void 0 ? _a : response.statusCode) !== null && _b !== void 0 ? _b : 0;
|
|
527
521
|
return status >= 300 && status < 400;
|
|
528
522
|
}
|
|
529
|
-
/**
|
|
530
|
-
* Generate the contents of the `head` tag, and update the existing `<title>` tag
|
|
531
|
-
* if one exists, and if a title is passed.
|
|
532
|
-
*/
|
|
533
|
-
function generateHeadTag({ title, ...rest }) {
|
|
534
|
-
const headProps = ['base', 'meta', 'style', 'noscript', 'script', 'link'];
|
|
535
|
-
const otherHeadProps = headProps
|
|
536
|
-
.map((prop) => rest[prop])
|
|
537
|
-
.filter(Boolean)
|
|
538
|
-
.join('\n');
|
|
539
|
-
return (_outerHtml, innerHtml) => {
|
|
540
|
-
let headHtml = otherHeadProps + innerHtml;
|
|
541
|
-
if (title) {
|
|
542
|
-
if (headHtml.includes('<title>')) {
|
|
543
|
-
headHtml = headHtml.replace(/(<title>(?:.|\n)*?<\/title>)/, title);
|
|
544
|
-
}
|
|
545
|
-
else {
|
|
546
|
-
headHtml += title;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
return `<head>${headHtml}</head>`;
|
|
550
|
-
};
|
|
551
|
-
}
|
|
552
523
|
async function createNodeWriter() {
|
|
553
524
|
// Importing 'stream' directly breaks Vite resolve
|
|
554
525
|
// when building for workers, even though this code
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const react_1 = require("react");
|
|
4
|
+
const useNavigate_1 = require("../../foundation/useNavigate/useNavigate");
|
|
5
|
+
function Redirect({ to }) {
|
|
6
|
+
const navigate = (0, useNavigate_1.useNavigate)();
|
|
7
|
+
(0, react_1.useEffect)(() => {
|
|
8
|
+
if (to.startsWith('http')) {
|
|
9
|
+
window.location.href = to;
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
navigate(to);
|
|
13
|
+
}
|
|
14
|
+
}, []);
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
exports.default = Redirect;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BrowserHistory, Location } from 'history';
|
|
2
|
+
import React, { FC } from 'react';
|
|
3
|
+
declare type RouterContextValue = {
|
|
4
|
+
history: BrowserHistory;
|
|
5
|
+
location: Location;
|
|
6
|
+
};
|
|
7
|
+
export declare const RouterContext: React.Context<{} | RouterContextValue>;
|
|
8
|
+
export declare const BrowserRouter: FC<{
|
|
9
|
+
history?: BrowserHistory;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function useRouter(): RouterContextValue;
|
|
12
|
+
export declare function useLocation(): Location;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.useLocation = exports.useRouter = exports.BrowserRouter = exports.RouterContext = void 0;
|
|
27
|
+
const history_1 = require("history");
|
|
28
|
+
const react_1 = __importStar(require("react"));
|
|
29
|
+
const ssr_interop_1 = require("../ssr-interop");
|
|
30
|
+
const useServerState_1 = require("../useServerState");
|
|
31
|
+
exports.RouterContext = (0, react_1.createContext)({});
|
|
32
|
+
let currentPath = '';
|
|
33
|
+
let isFirstLoad = true;
|
|
34
|
+
const BrowserRouter = ({ history: pHistory, children, }) => {
|
|
35
|
+
if (ssr_interop_1.META_ENV_SSR)
|
|
36
|
+
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
|
37
|
+
const history = (0, react_1.useMemo)(() => pHistory || (0, history_1.createBrowserHistory)(), [pHistory]);
|
|
38
|
+
const [location, setLocation] = (0, react_1.useState)(history.location);
|
|
39
|
+
const { pending, serverState, setServerState } = (0, useServerState_1.useServerState)();
|
|
40
|
+
(0, react_1.useEffect)(() => {
|
|
41
|
+
// The app has just loaded
|
|
42
|
+
if (isFirstLoad)
|
|
43
|
+
isFirstLoad = false;
|
|
44
|
+
// A navigation event has just happened
|
|
45
|
+
else if (!pending && currentPath !== serverState.pathname) {
|
|
46
|
+
window.scrollTo(0, 0);
|
|
47
|
+
}
|
|
48
|
+
currentPath = serverState.pathname;
|
|
49
|
+
}, [pending]);
|
|
50
|
+
(0, react_1.useEffect)(() => {
|
|
51
|
+
const unlisten = history.listen(({ location: newLocation }) => {
|
|
52
|
+
setServerState({
|
|
53
|
+
pathname: newLocation.pathname,
|
|
54
|
+
search: location.search || undefined,
|
|
55
|
+
});
|
|
56
|
+
setLocation(newLocation);
|
|
57
|
+
});
|
|
58
|
+
return () => unlisten();
|
|
59
|
+
}, [history]);
|
|
60
|
+
return (react_1.default.createElement(exports.RouterContext.Provider, { value: {
|
|
61
|
+
history,
|
|
62
|
+
location,
|
|
63
|
+
} }, children));
|
|
64
|
+
};
|
|
65
|
+
exports.BrowserRouter = BrowserRouter;
|
|
66
|
+
function useRouter() {
|
|
67
|
+
const router = (0, react_1.useContext)(exports.RouterContext);
|
|
68
|
+
if (!router && ssr_interop_1.META_ENV_SSR) {
|
|
69
|
+
throw new Error('useRouter must be used within a <Router> component');
|
|
70
|
+
}
|
|
71
|
+
return router;
|
|
72
|
+
}
|
|
73
|
+
exports.useRouter = useRouter;
|
|
74
|
+
function useLocation() {
|
|
75
|
+
return useRouter().location;
|
|
76
|
+
}
|
|
77
|
+
exports.useLocation = useLocation;
|