@shopify/hydrogen 2026.4.5 → 2026.10.0-preview.2
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/README.md +73 -13
- package/bin/hydrogen.mjs +7 -0
- package/dist/cli/index.mjs +647 -0
- package/dist/client/client.d.mts +34 -0
- package/dist/client/client.mjs +206 -0
- package/dist/client/client.mjs.map +1 -0
- package/dist/client/errors.d.mts +48 -0
- package/dist/client/errors.mjs +52 -0
- package/dist/client/errors.mjs.map +1 -0
- package/dist/client/index.d.mts +4 -0
- package/dist/client/types.d.mts +147 -0
- package/dist/core/analytics/cart-tracker.d.mts +8 -0
- package/dist/core/analytics/cart-tracker.mjs +144 -0
- package/dist/core/analytics/cart-tracker.mjs.map +1 -0
- package/dist/core/analytics/events.d.mts +15 -0
- package/dist/core/analytics/events.mjs +15 -0
- package/dist/core/analytics/events.mjs.map +1 -0
- package/dist/core/analytics/index.d.mts +3 -0
- package/dist/core/analytics/types.d.mts +143 -0
- package/dist/core/analytics/utils/flatten-connection.d.mts +19 -0
- package/dist/core/analytics/utils/flatten-connection.mjs +25 -0
- package/dist/core/analytics/utils/flatten-connection.mjs.map +1 -0
- package/dist/core/cache/cache-status.mjs +17 -0
- package/dist/core/cache/cache-status.mjs.map +1 -0
- package/dist/core/cache/fetch-with-cache.d.mts +43 -0
- package/dist/core/cache/fetch-with-cache.mjs +188 -0
- package/dist/core/cache/fetch-with-cache.mjs.map +1 -0
- package/dist/core/cache/key.d.mts +6 -0
- package/dist/core/cache/key.mjs +27 -0
- package/dist/core/cache/key.mjs.map +1 -0
- package/dist/core/cache/run-with-cache.d.mts +36 -0
- package/dist/core/cache/run-with-cache.mjs +114 -0
- package/dist/core/cache/run-with-cache.mjs.map +1 -0
- package/dist/core/cache/store.d.mts +19 -0
- package/dist/core/cache/store.mjs +62 -0
- package/dist/core/cache/store.mjs.map +1 -0
- package/dist/core/cache/strategies.d.mts +39 -0
- package/dist/core/cache/strategies.mjs +70 -0
- package/dist/core/cache/strategies.mjs.map +1 -0
- package/dist/core/cart/actions.d.mts +50 -0
- package/dist/core/cart/actions.mjs +240 -0
- package/dist/core/cart/actions.mjs.map +1 -0
- package/dist/core/cart/attach-quantity-input.d.mts +5 -0
- package/dist/core/cart/attach-quantity-input.mjs +17 -0
- package/dist/core/cart/attach-quantity-input.mjs.map +1 -0
- package/dist/core/cart/buyer-identity-sync.d.mts +23 -0
- package/dist/core/cart/buyer-identity-sync.mjs +9 -0
- package/dist/core/cart/buyer-identity-sync.mjs.map +1 -0
- package/dist/core/cart/cart.d.mts +37 -0
- package/dist/core/cart/cart.mjs +1707 -0
- package/dist/core/cart/cart.mjs.map +1 -0
- package/dist/core/cart/cookie.d.mts +5 -0
- package/dist/core/cart/cookie.mjs +28 -0
- package/dist/core/cart/cookie.mjs.map +1 -0
- package/dist/core/cart/form.d.mts +130 -0
- package/dist/core/cart/form.mjs +75 -0
- package/dist/core/cart/form.mjs.map +1 -0
- package/dist/core/cart/get-cart.d.mts +25 -0
- package/dist/core/cart/get-cart.mjs +32 -0
- package/dist/core/cart/get-cart.mjs.map +1 -0
- package/dist/core/cart/index.d.mts +10 -0
- package/dist/core/cart/quantity.d.mts +10 -0
- package/dist/core/cart/quantity.mjs +14 -0
- package/dist/core/cart/quantity.mjs.map +1 -0
- package/dist/core/cart/queries.d.mts +4296 -0
- package/dist/core/cart/queries.mjs +70 -0
- package/dist/core/cart/queries.mjs.map +1 -0
- package/dist/core/cart/server-handlers.d.mts +82 -0
- package/dist/core/cart/server-handlers.mjs +322 -0
- package/dist/core/cart/server-handlers.mjs.map +1 -0
- package/dist/core/cart/state.d.mts +137 -0
- package/dist/core/cart/state.mjs +76 -0
- package/dist/core/cart/state.mjs.map +1 -0
- package/dist/core/cart/sync-quantity-inputs.mjs +16 -0
- package/dist/core/cart/sync-quantity-inputs.mjs.map +1 -0
- package/dist/core/collection/collection.d.mts +134 -0
- package/dist/core/collection/collection.mjs +170 -0
- package/dist/core/collection/collection.mjs.map +1 -0
- package/dist/core/collection/index.d.mts +6 -0
- package/dist/core/collection/reconciler.d.mts +32 -0
- package/dist/core/collection/reconciler.mjs +89 -0
- package/dist/core/collection/reconciler.mjs.map +1 -0
- package/dist/core/collection/state.d.mts +66 -0
- package/dist/core/collection/state.mjs +20 -0
- package/dist/core/collection/state.mjs.map +1 -0
- package/dist/core/collection/url.d.mts +71 -0
- package/dist/core/collection/url.mjs +376 -0
- package/dist/core/collection/url.mjs.map +1 -0
- package/dist/core/constants.d.mts +5 -0
- package/dist/core/constants.mjs +8 -0
- package/dist/core/constants.mjs.map +1 -0
- package/dist/core/headers.mjs +43 -0
- package/dist/core/headers.mjs.map +1 -0
- package/dist/core/index.d.mts +56 -0
- package/dist/core/index.mjs +45 -0
- package/dist/core/logging/logging.d.mts +21 -0
- package/dist/core/logging/logging.mjs +99 -0
- package/dist/core/logging/logging.mjs.map +1 -0
- package/dist/core/logging/types.d.mts +40 -0
- package/dist/core/logging/types.mjs +18 -0
- package/dist/core/logging/types.mjs.map +1 -0
- package/dist/core/money/cache.mjs +25 -0
- package/dist/core/money/cache.mjs.map +1 -0
- package/dist/core/money/format.d.mts +15 -0
- package/dist/core/money/format.mjs +243 -0
- package/dist/core/money/format.mjs.map +1 -0
- package/dist/core/money/types.d.mts +47 -0
- package/dist/core/observable.mjs +46 -0
- package/dist/core/observable.mjs.map +1 -0
- package/dist/core/predictive-search/constants.d.mts +5 -0
- package/dist/core/predictive-search/constants.mjs +6 -0
- package/dist/core/predictive-search/constants.mjs.map +1 -0
- package/dist/core/predictive-search/form.d.mts +31 -0
- package/dist/core/predictive-search/form.mjs +31 -0
- package/dist/core/predictive-search/form.mjs.map +1 -0
- package/dist/core/predictive-search/index.d.mts +6 -0
- package/dist/core/predictive-search/queries.d.mts +118 -0
- package/dist/core/predictive-search/queries.mjs +81 -0
- package/dist/core/predictive-search/queries.mjs.map +1 -0
- package/dist/core/predictive-search/search.d.mts +32 -0
- package/dist/core/predictive-search/search.mjs +74 -0
- package/dist/core/predictive-search/search.mjs.map +1 -0
- package/dist/core/predictive-search/server-handlers.d.mts +36 -0
- package/dist/core/predictive-search/server-handlers.mjs +113 -0
- package/dist/core/predictive-search/server-handlers.mjs.map +1 -0
- package/dist/core/predictive-search/store.d.mts +44 -0
- package/dist/core/predictive-search/store.mjs +224 -0
- package/dist/core/predictive-search/store.mjs.map +1 -0
- package/dist/core/predictive-search/url.d.mts +41 -0
- package/dist/core/predictive-search/url.mjs +71 -0
- package/dist/core/predictive-search/url.mjs.map +1 -0
- package/dist/core/product/accept-variant-id.mjs +98 -0
- package/dist/core/product/accept-variant-id.mjs.map +1 -0
- package/dist/core/product/form.d.mts +63 -0
- package/dist/core/product/form.mjs +44 -0
- package/dist/core/product/form.mjs.map +1 -0
- package/dist/core/product/index.d.mts +5 -0
- package/dist/core/product/options.d.mts +43 -0
- package/dist/core/product/options.mjs +296 -0
- package/dist/core/product/options.mjs.map +1 -0
- package/dist/core/product/product-form.d.mts +72 -0
- package/dist/core/product/product-form.mjs +158 -0
- package/dist/core/product/product-form.mjs.map +1 -0
- package/dist/core/product/state.d.mts +68 -0
- package/dist/core/product/url.d.mts +47 -0
- package/dist/core/product/url.mjs +69 -0
- package/dist/core/product/url.mjs.map +1 -0
- package/dist/core/request-context.d.mts +75 -0
- package/dist/core/request-context.mjs +141 -0
- package/dist/core/request-context.mjs.map +1 -0
- package/dist/core/request-routing/handle-shopify-redirects.d.mts +17 -0
- package/dist/core/request-routing/handle-shopify-redirects.mjs +31 -0
- package/dist/core/request-routing/handle-shopify-redirects.mjs.map +1 -0
- package/dist/core/request-routing/handle-shopify-routes.d.mts +14 -0
- package/dist/core/request-routing/handle-shopify-routes.mjs +42 -0
- package/dist/core/request-routing/handle-shopify-routes.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/admin-redirect.mjs +12 -0
- package/dist/core/request-routing/interceptors/admin-redirect.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/ajax-api.mjs +16 -0
- package/dist/core/request-routing/interceptors/ajax-api.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/api-proxy.mjs +20 -0
- package/dist/core/request-routing/interceptors/api-proxy.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/checkout.mjs +58 -0
- package/dist/core/request-routing/interceptors/checkout.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/mcp-proxy.mjs +23 -0
- package/dist/core/request-routing/interceptors/mcp-proxy.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/proxy.mjs +73 -0
- package/dist/core/request-routing/interceptors/proxy.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/query-param-redirect.mjs +22 -0
- package/dist/core/request-routing/interceptors/query-param-redirect.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/sfapi-proxy.mjs +27 -0
- package/dist/core/request-routing/interceptors/sfapi-proxy.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/standard-routes.mjs +19 -0
- package/dist/core/request-routing/interceptors/standard-routes.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/url-redirects.mjs +27 -0
- package/dist/core/request-routing/interceptors/url-redirects.mjs.map +1 -0
- package/dist/core/request-routing/interceptors/well-known.mjs +22 -0
- package/dist/core/request-routing/interceptors/well-known.mjs.map +1 -0
- package/dist/core/request-routing/registered-routes.d.mts +7 -0
- package/dist/core/request-routing/registered-routes.mjs +72 -0
- package/dist/core/request-routing/registered-routes.mjs.map +1 -0
- package/dist/core/request-routing/route-types.d.mts +56 -0
- package/dist/core/request-routing/safe-apply-response-headers.mjs +16 -0
- package/dist/core/request-routing/safe-apply-response-headers.mjs.map +1 -0
- package/dist/core/shop-pay/shop-pay.d.mts +102 -0
- package/dist/core/shop-pay/shop-pay.mjs +289 -0
- package/dist/core/shop-pay/shop-pay.mjs.map +1 -0
- package/dist/core/shopify-scripts/analytics.mjs +26 -0
- package/dist/core/shopify-scripts/analytics.mjs.map +1 -0
- package/dist/core/shopify-scripts/consent.mjs +17 -0
- package/dist/core/shopify-scripts/consent.mjs.map +1 -0
- package/dist/core/shopify-scripts/constants.mjs +19 -0
- package/dist/core/shopify-scripts/constants.mjs.map +1 -0
- package/dist/core/shopify-scripts/deprecated-cookies.mjs +97 -0
- package/dist/core/shopify-scripts/deprecated-cookies.mjs.map +1 -0
- package/dist/core/shopify-scripts/global.d.mts +1 -0
- package/dist/core/shopify-scripts/global.mjs +86 -0
- package/dist/core/shopify-scripts/global.mjs.map +1 -0
- package/dist/core/shopify-scripts/index.d.mts +27 -0
- package/dist/core/shopify-scripts/index.mjs +135 -0
- package/dist/core/shopify-scripts/index.mjs.map +1 -0
- package/dist/core/shopify-scripts/initialize.d.mts +18 -0
- package/dist/core/shopify-scripts/initialize.mjs +27 -0
- package/dist/core/shopify-scripts/initialize.mjs.map +1 -0
- package/dist/core/shopify-scripts/page-view.mjs +49 -0
- package/dist/core/shopify-scripts/page-view.mjs.map +1 -0
- package/dist/core/shopify-scripts/perfkit.mjs +33 -0
- package/dist/core/shopify-scripts/perfkit.mjs.map +1 -0
- package/dist/core/shopify-scripts/render.d.mts +1 -0
- package/dist/core/shopify-scripts/render.mjs +23 -0
- package/dist/core/shopify-scripts/render.mjs.map +1 -0
- package/dist/core/shopify-scripts/types.d.mts +76 -0
- package/dist/core/shopify-scripts/utils/cookie-domain.mjs +43 -0
- package/dist/core/shopify-scripts/utils/cookie-domain.mjs.map +1 -0
- package/dist/core/shopify-scripts/utils/inline-script.mjs +8 -0
- package/dist/core/shopify-scripts/utils/inline-script.mjs.map +1 -0
- package/dist/core/shopify-scripts/utils/navigation.mjs +46 -0
- package/dist/core/shopify-scripts/utils/navigation.mjs.map +1 -0
- package/dist/core/shopify-scripts/utils/tracking-values.mjs +65 -0
- package/dist/core/shopify-scripts/utils/tracking-values.mjs.map +1 -0
- package/dist/core/shopify-scripts/utils/uuid.mjs +17 -0
- package/dist/core/shopify-scripts/utils/uuid.mjs.map +1 -0
- package/dist/core/shopify-scripts/webmcp.mjs +22 -0
- package/dist/core/shopify-scripts/webmcp.mjs.map +1 -0
- package/dist/core/standard-routes/build.d.mts +34 -0
- package/dist/core/standard-routes/build.mjs +54 -0
- package/dist/core/standard-routes/build.mjs.map +1 -0
- package/dist/core/standard-routes/defaults.mjs +31 -0
- package/dist/core/standard-routes/defaults.mjs.map +1 -0
- package/dist/core/standard-routes/match.mjs +108 -0
- package/dist/core/standard-routes/match.mjs.map +1 -0
- package/dist/core/standard-routes/path.mjs +58 -0
- package/dist/core/standard-routes/path.mjs.map +1 -0
- package/dist/core/standard-routes/redirects.mjs +51 -0
- package/dist/core/standard-routes/redirects.mjs.map +1 -0
- package/dist/core/standard-routes/types.d.mts +95 -0
- package/dist/core/url.mjs +42 -0
- package/dist/core/url.mjs.map +1 -0
- package/dist/core/utils/load-script.mjs +34 -0
- package/dist/core/utils/load-script.mjs.map +1 -0
- package/dist/core/utils/parse-gid.mjs +33 -0
- package/dist/core/utils/parse-gid.mjs.map +1 -0
- package/dist/core/utils/record.mjs +8 -0
- package/dist/core/utils/record.mjs.map +1 -0
- package/dist/customer-account/client.d.mts +50 -0
- package/dist/customer-account/client.mjs +239 -0
- package/dist/customer-account/client.mjs.map +1 -0
- package/dist/customer-account/errors.d.mts +28 -0
- package/dist/customer-account/errors.mjs +39 -0
- package/dist/customer-account/errors.mjs.map +1 -0
- package/dist/customer-account/graphql.d.mts +29 -0
- package/dist/customer-account/graphql.mjs +39 -0
- package/dist/customer-account/graphql.mjs.map +1 -0
- package/dist/customer-account/index.d.mts +7 -0
- package/dist/customer-account/index.mjs +7 -0
- package/dist/customer-account/session.d.mts +117 -0
- package/dist/customer-account/session.mjs +733 -0
- package/dist/customer-account/session.mjs.map +1 -0
- package/dist/customer-account/type-resolver.d.mts +11 -0
- package/dist/customer-account-api-types.d.ts +3269 -3270
- package/dist/customer-account.schema.json +50753 -1
- package/dist/development/_virtual/_@oxc-project_runtime@0.127.0/helpers/taggedTemplateLiteral.mjs +7 -0
- package/dist/development/client/client.d.mts +34 -0
- package/dist/development/client/client.mjs +206 -0
- package/dist/development/client/client.mjs.map +1 -0
- package/dist/development/client/errors.d.mts +48 -0
- package/dist/development/client/errors.mjs +57 -0
- package/dist/development/client/errors.mjs.map +1 -0
- package/dist/development/client/index.d.mts +4 -0
- package/dist/development/client/types.d.mts +147 -0
- package/dist/development/core/analytics/cart-tracker.d.mts +8 -0
- package/dist/development/core/analytics/cart-tracker.mjs +144 -0
- package/dist/development/core/analytics/cart-tracker.mjs.map +1 -0
- package/dist/development/core/analytics/events.d.mts +15 -0
- package/dist/development/core/analytics/events.mjs +15 -0
- package/dist/development/core/analytics/events.mjs.map +1 -0
- package/dist/development/core/analytics/index.d.mts +3 -0
- package/dist/development/core/analytics/types.d.mts +143 -0
- package/dist/development/core/analytics/utils/flatten-connection.d.mts +19 -0
- package/dist/development/core/analytics/utils/flatten-connection.mjs +25 -0
- package/dist/development/core/analytics/utils/flatten-connection.mjs.map +1 -0
- package/dist/development/core/cache/cache-status.mjs +17 -0
- package/dist/development/core/cache/cache-status.mjs.map +1 -0
- package/dist/development/core/cache/fetch-with-cache.d.mts +43 -0
- package/dist/development/core/cache/fetch-with-cache.mjs +188 -0
- package/dist/development/core/cache/fetch-with-cache.mjs.map +1 -0
- package/dist/development/core/cache/key.d.mts +6 -0
- package/dist/development/core/cache/key.mjs +27 -0
- package/dist/development/core/cache/key.mjs.map +1 -0
- package/dist/development/core/cache/run-with-cache.d.mts +36 -0
- package/dist/development/core/cache/run-with-cache.mjs +114 -0
- package/dist/development/core/cache/run-with-cache.mjs.map +1 -0
- package/dist/development/core/cache/store.d.mts +19 -0
- package/dist/development/core/cache/store.mjs +62 -0
- package/dist/development/core/cache/store.mjs.map +1 -0
- package/dist/development/core/cache/strategies.d.mts +39 -0
- package/dist/development/core/cache/strategies.mjs +70 -0
- package/dist/development/core/cache/strategies.mjs.map +1 -0
- package/dist/development/core/cart/actions.d.mts +50 -0
- package/dist/development/core/cart/actions.mjs +240 -0
- package/dist/development/core/cart/actions.mjs.map +1 -0
- package/dist/development/core/cart/attach-quantity-input.d.mts +5 -0
- package/dist/development/core/cart/attach-quantity-input.mjs +17 -0
- package/dist/development/core/cart/attach-quantity-input.mjs.map +1 -0
- package/dist/development/core/cart/buyer-identity-sync.d.mts +19 -0
- package/dist/development/core/cart/buyer-identity-sync.mjs +6 -0
- package/dist/development/core/cart/buyer-identity-sync.mjs.map +1 -0
- package/dist/development/core/cart/cart.d.mts +37 -0
- package/dist/development/core/cart/cart.mjs +1707 -0
- package/dist/development/core/cart/cart.mjs.map +1 -0
- package/dist/development/core/cart/cookie.d.mts +5 -0
- package/dist/development/core/cart/cookie.mjs +28 -0
- package/dist/development/core/cart/cookie.mjs.map +1 -0
- package/dist/development/core/cart/form.d.mts +130 -0
- package/dist/development/core/cart/form.mjs +75 -0
- package/dist/development/core/cart/form.mjs.map +1 -0
- package/dist/development/core/cart/get-cart.d.mts +25 -0
- package/dist/development/core/cart/get-cart.mjs +32 -0
- package/dist/development/core/cart/get-cart.mjs.map +1 -0
- package/dist/development/core/cart/index.d.mts +10 -0
- package/dist/development/core/cart/quantity.d.mts +10 -0
- package/dist/development/core/cart/quantity.mjs +14 -0
- package/dist/development/core/cart/quantity.mjs.map +1 -0
- package/dist/development/core/cart/queries.d.mts +4296 -0
- package/dist/development/core/cart/queries.mjs +70 -0
- package/dist/development/core/cart/queries.mjs.map +1 -0
- package/dist/development/core/cart/server-handlers.d.mts +82 -0
- package/dist/development/core/cart/server-handlers.mjs +322 -0
- package/dist/development/core/cart/server-handlers.mjs.map +1 -0
- package/dist/development/core/cart/state.d.mts +137 -0
- package/dist/development/core/cart/state.mjs +76 -0
- package/dist/development/core/cart/state.mjs.map +1 -0
- package/dist/development/core/cart/sync-quantity-inputs.mjs +16 -0
- package/dist/development/core/cart/sync-quantity-inputs.mjs.map +1 -0
- package/dist/development/core/collection/collection.d.mts +134 -0
- package/dist/development/core/collection/collection.mjs +170 -0
- package/dist/development/core/collection/collection.mjs.map +1 -0
- package/dist/development/core/collection/index.d.mts +6 -0
- package/dist/development/core/collection/reconciler.d.mts +32 -0
- package/dist/development/core/collection/reconciler.mjs +89 -0
- package/dist/development/core/collection/reconciler.mjs.map +1 -0
- package/dist/development/core/collection/state.d.mts +66 -0
- package/dist/development/core/collection/state.mjs +20 -0
- package/dist/development/core/collection/state.mjs.map +1 -0
- package/dist/development/core/collection/url.d.mts +71 -0
- package/dist/development/core/collection/url.mjs +376 -0
- package/dist/development/core/collection/url.mjs.map +1 -0
- package/dist/development/core/constants.mjs +7 -0
- package/dist/development/core/constants.mjs.map +1 -0
- package/dist/development/core/development.d.mts +56 -0
- package/dist/development/core/development.mjs +45 -0
- package/dist/development/core/headers.mjs +43 -0
- package/dist/development/core/headers.mjs.map +1 -0
- package/dist/development/core/index.d.mts +54 -0
- package/dist/development/core/logging/logging.d.mts +21 -0
- package/dist/development/core/logging/logging.mjs +99 -0
- package/dist/development/core/logging/logging.mjs.map +1 -0
- package/dist/development/core/logging/types.d.mts +40 -0
- package/dist/development/core/logging/types.mjs +18 -0
- package/dist/development/core/logging/types.mjs.map +1 -0
- package/dist/development/core/money/cache.mjs +25 -0
- package/dist/development/core/money/cache.mjs.map +1 -0
- package/dist/development/core/money/format.d.mts +15 -0
- package/dist/development/core/money/format.mjs +243 -0
- package/dist/development/core/money/format.mjs.map +1 -0
- package/dist/development/core/money/types.d.mts +47 -0
- package/dist/development/core/observable.mjs +46 -0
- package/dist/development/core/observable.mjs.map +1 -0
- package/dist/development/core/predictive-search/constants.d.mts +5 -0
- package/dist/development/core/predictive-search/constants.mjs +6 -0
- package/dist/development/core/predictive-search/constants.mjs.map +1 -0
- package/dist/development/core/predictive-search/form.d.mts +31 -0
- package/dist/development/core/predictive-search/form.mjs +31 -0
- package/dist/development/core/predictive-search/form.mjs.map +1 -0
- package/dist/development/core/predictive-search/index.d.mts +6 -0
- package/dist/development/core/predictive-search/queries.d.mts +118 -0
- package/dist/development/core/predictive-search/queries.mjs +81 -0
- package/dist/development/core/predictive-search/queries.mjs.map +1 -0
- package/dist/development/core/predictive-search/search.d.mts +32 -0
- package/dist/development/core/predictive-search/search.mjs +74 -0
- package/dist/development/core/predictive-search/search.mjs.map +1 -0
- package/dist/development/core/predictive-search/server-handlers.d.mts +36 -0
- package/dist/development/core/predictive-search/server-handlers.mjs +113 -0
- package/dist/development/core/predictive-search/server-handlers.mjs.map +1 -0
- package/dist/development/core/predictive-search/store.d.mts +44 -0
- package/dist/development/core/predictive-search/store.mjs +224 -0
- package/dist/development/core/predictive-search/store.mjs.map +1 -0
- package/dist/development/core/predictive-search/url.d.mts +41 -0
- package/dist/development/core/predictive-search/url.mjs +71 -0
- package/dist/development/core/predictive-search/url.mjs.map +1 -0
- package/dist/development/core/product/accept-variant-id.mjs +98 -0
- package/dist/development/core/product/accept-variant-id.mjs.map +1 -0
- package/dist/development/core/product/form.d.mts +63 -0
- package/dist/development/core/product/form.mjs +44 -0
- package/dist/development/core/product/form.mjs.map +1 -0
- package/dist/development/core/product/index.d.mts +5 -0
- package/dist/development/core/product/options.d.mts +43 -0
- package/dist/development/core/product/options.mjs +296 -0
- package/dist/development/core/product/options.mjs.map +1 -0
- package/dist/development/core/product/product-form.d.mts +72 -0
- package/dist/development/core/product/product-form.mjs +158 -0
- package/dist/development/core/product/product-form.mjs.map +1 -0
- package/dist/development/core/product/state.d.mts +68 -0
- package/dist/development/core/product/url.d.mts +47 -0
- package/dist/development/core/product/url.mjs +69 -0
- package/dist/development/core/product/url.mjs.map +1 -0
- package/dist/development/core/request-context.d.mts +75 -0
- package/dist/development/core/request-context.mjs +141 -0
- package/dist/development/core/request-context.mjs.map +1 -0
- package/dist/development/core/request-routing/handle-shopify-redirects.d.mts +17 -0
- package/dist/development/core/request-routing/handle-shopify-redirects.mjs +31 -0
- package/dist/development/core/request-routing/handle-shopify-redirects.mjs.map +1 -0
- package/dist/development/core/request-routing/handle-shopify-routes.d.mts +1 -0
- package/dist/development/core/request-routing/handle-shopify-routes.development.d.mts +11 -0
- package/dist/development/core/request-routing/handle-shopify-routes.development.mjs +16 -0
- package/dist/development/core/request-routing/handle-shopify-routes.development.mjs.map +1 -0
- package/dist/development/core/request-routing/handle-shopify-routes.mjs +42 -0
- package/dist/development/core/request-routing/handle-shopify-routes.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/admin-redirect.mjs +12 -0
- package/dist/development/core/request-routing/interceptors/admin-redirect.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/ajax-api.mjs +16 -0
- package/dist/development/core/request-routing/interceptors/ajax-api.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/api-proxy.mjs +20 -0
- package/dist/development/core/request-routing/interceptors/api-proxy.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/checkout.mjs +58 -0
- package/dist/development/core/request-routing/interceptors/checkout.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/graphiql.mjs +46 -0
- package/dist/development/core/request-routing/interceptors/graphiql.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/mcp-proxy.mjs +23 -0
- package/dist/development/core/request-routing/interceptors/mcp-proxy.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/proxy.mjs +73 -0
- package/dist/development/core/request-routing/interceptors/proxy.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/query-param-redirect.mjs +22 -0
- package/dist/development/core/request-routing/interceptors/query-param-redirect.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/sfapi-proxy.mjs +27 -0
- package/dist/development/core/request-routing/interceptors/sfapi-proxy.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/standard-routes.mjs +19 -0
- package/dist/development/core/request-routing/interceptors/standard-routes.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/url-redirects.mjs +27 -0
- package/dist/development/core/request-routing/interceptors/url-redirects.mjs.map +1 -0
- package/dist/development/core/request-routing/interceptors/well-known.mjs +22 -0
- package/dist/development/core/request-routing/interceptors/well-known.mjs.map +1 -0
- package/dist/development/core/request-routing/registered-routes.d.mts +7 -0
- package/dist/development/core/request-routing/registered-routes.mjs +72 -0
- package/dist/development/core/request-routing/registered-routes.mjs.map +1 -0
- package/dist/development/core/request-routing/route-types.d.mts +56 -0
- package/dist/development/core/request-routing/safe-apply-response-headers.mjs +16 -0
- package/dist/development/core/request-routing/safe-apply-response-headers.mjs.map +1 -0
- package/dist/development/core/shop-pay/shop-pay.d.mts +102 -0
- package/dist/development/core/shop-pay/shop-pay.mjs +289 -0
- package/dist/development/core/shop-pay/shop-pay.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/analytics.mjs +26 -0
- package/dist/development/core/shopify-scripts/analytics.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/consent.mjs +17 -0
- package/dist/development/core/shopify-scripts/consent.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/constants.mjs +19 -0
- package/dist/development/core/shopify-scripts/constants.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/deprecated-cookies.mjs +97 -0
- package/dist/development/core/shopify-scripts/deprecated-cookies.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/global.d.mts +1 -0
- package/dist/development/core/shopify-scripts/global.mjs +86 -0
- package/dist/development/core/shopify-scripts/global.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/index.d.mts +27 -0
- package/dist/development/core/shopify-scripts/index.mjs +145 -0
- package/dist/development/core/shopify-scripts/index.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/initialize.d.mts +18 -0
- package/dist/development/core/shopify-scripts/initialize.mjs +27 -0
- package/dist/development/core/shopify-scripts/initialize.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/page-view.mjs +49 -0
- package/dist/development/core/shopify-scripts/page-view.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/perfkit.mjs +33 -0
- package/dist/development/core/shopify-scripts/perfkit.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/render.d.mts +1 -0
- package/dist/development/core/shopify-scripts/render.mjs +23 -0
- package/dist/development/core/shopify-scripts/render.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/types.d.mts +76 -0
- package/dist/development/core/shopify-scripts/utils/cookie-domain.mjs +43 -0
- package/dist/development/core/shopify-scripts/utils/cookie-domain.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/utils/inline-script.mjs +8 -0
- package/dist/development/core/shopify-scripts/utils/inline-script.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/utils/navigation.mjs +46 -0
- package/dist/development/core/shopify-scripts/utils/navigation.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/utils/tracking-values.mjs +65 -0
- package/dist/development/core/shopify-scripts/utils/tracking-values.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/utils/uuid.mjs +17 -0
- package/dist/development/core/shopify-scripts/utils/uuid.mjs.map +1 -0
- package/dist/development/core/shopify-scripts/webmcp.mjs +22 -0
- package/dist/development/core/shopify-scripts/webmcp.mjs.map +1 -0
- package/dist/development/core/standard-routes/build.d.mts +34 -0
- package/dist/development/core/standard-routes/build.mjs +54 -0
- package/dist/development/core/standard-routes/build.mjs.map +1 -0
- package/dist/development/core/standard-routes/defaults.mjs +31 -0
- package/dist/development/core/standard-routes/defaults.mjs.map +1 -0
- package/dist/development/core/standard-routes/match.mjs +108 -0
- package/dist/development/core/standard-routes/match.mjs.map +1 -0
- package/dist/development/core/standard-routes/path.mjs +58 -0
- package/dist/development/core/standard-routes/path.mjs.map +1 -0
- package/dist/development/core/standard-routes/redirects.mjs +51 -0
- package/dist/development/core/standard-routes/redirects.mjs.map +1 -0
- package/dist/development/core/standard-routes/types.d.mts +95 -0
- package/dist/development/core/types.d.mts +11 -0
- package/dist/development/core/url.mjs +42 -0
- package/dist/development/core/url.mjs.map +1 -0
- package/dist/development/core/utils/load-script.mjs +34 -0
- package/dist/development/core/utils/load-script.mjs.map +1 -0
- package/dist/development/core/utils/parse-gid.mjs +33 -0
- package/dist/development/core/utils/parse-gid.mjs.map +1 -0
- package/dist/development/customer-account/session.d.mts +46 -0
- package/dist/development/customer-account/session.mjs +21 -0
- package/dist/development/customer-account/session.mjs.map +1 -0
- package/dist/development/globals.d.mts +64 -0
- package/dist/development/graphql/generated/customer-account-api-types.d.mts +13 -0
- package/dist/development/graphql/generated/graphql-env.d.mts +19280 -0
- package/dist/development/graphql/generated/storefront-api-types.d.mts +47 -0
- package/dist/development/graphql/graphql.d.mts +40 -0
- package/dist/development/graphql/graphql.mjs +16 -0
- package/dist/development/graphql/graphql.mjs.map +1 -0
- package/dist/development/graphql/index.d.mts +2 -0
- package/dist/development/graphql/scalars.d.mts +15 -0
- package/dist/development/graphql/type-resolver.d.mts +229 -0
- package/dist/development/react/cart.d.mts +44 -0
- package/dist/development/react/cart.mjs +155 -0
- package/dist/development/react/cart.mjs.map +1 -0
- package/dist/development/react/collection.d.mts +91 -0
- package/dist/development/react/collection.mjs +129 -0
- package/dist/development/react/collection.mjs.map +1 -0
- package/dist/development/react/index.d.mts +13 -0
- package/dist/development/react/index.mjs +10 -0
- package/dist/development/react/predictive-search.d.mts +49 -0
- package/dist/development/react/predictive-search.mjs +133 -0
- package/dist/development/react/predictive-search.mjs.map +1 -0
- package/dist/development/react/product.d.mts +72 -0
- package/dist/development/react/product.mjs +127 -0
- package/dist/development/react/product.mjs.map +1 -0
- package/dist/development/react/shop-pay.d.mts +9 -0
- package/dist/development/react/shop-pay.mjs +16 -0
- package/dist/development/react/shop-pay.mjs.map +1 -0
- package/dist/development/react/shopify-scripts.d.mts +20 -0
- package/dist/development/react/shopify-scripts.mjs +39 -0
- package/dist/development/react/shopify-scripts.mjs.map +1 -0
- package/dist/development/vendor/standard-actions.d.mts +134 -0
- package/dist/development/vendor/standard-events.d.mts +1107 -0
- package/dist/development/vue/cart.d.mts +46 -0
- package/dist/development/vue/cart.mjs +122 -0
- package/dist/development/vue/cart.mjs.map +1 -0
- package/dist/development/vue/collection.d.mts +46 -0
- package/dist/development/vue/collection.mjs +108 -0
- package/dist/development/vue/collection.mjs.map +1 -0
- package/dist/development/vue/index.d.mts +11 -0
- package/dist/development/vue/index.mjs +8 -0
- package/dist/development/vue/predictive-search.d.mts +124 -0
- package/dist/development/vue/predictive-search.mjs +171 -0
- package/dist/development/vue/predictive-search.mjs.map +1 -0
- package/dist/development/vue/product.d.mts +57 -0
- package/dist/development/vue/product.mjs +167 -0
- package/dist/development/vue/product.mjs.map +1 -0
- package/dist/development/vue/shop-pay.d.mts +25 -0
- package/dist/development/vue/shop-pay.mjs +35 -0
- package/dist/development/vue/shop-pay.mjs.map +1 -0
- package/dist/development/vue/shopify-scripts.d.mts +127 -0
- package/dist/development/vue/shopify-scripts.mjs +79 -0
- package/dist/development/vue/shopify-scripts.mjs.map +1 -0
- package/dist/globals.d.mts +64 -0
- package/dist/graphql/generated/customer-account-api-types.d.mts +13 -0
- package/dist/graphql/generated/customer-account-graphql-env.d.mts +22170 -0
- package/dist/graphql/generated/graphql-env.d.mts +19280 -0
- package/dist/graphql/generated/storefront-api-types.d.mts +47 -0
- package/dist/graphql/graphql.d.mts +40 -0
- package/dist/graphql/graphql.mjs +16 -0
- package/dist/graphql/graphql.mjs.map +1 -0
- package/dist/graphql/index.d.mts +2 -0
- package/dist/graphql/scalars.d.mts +26 -0
- package/dist/graphql/type-resolver.d.mts +229 -0
- package/dist/react/cart.d.mts +44 -0
- package/dist/react/cart.mjs +155 -0
- package/dist/react/cart.mjs.map +1 -0
- package/dist/react/collection.d.mts +91 -0
- package/dist/react/collection.mjs +129 -0
- package/dist/react/collection.mjs.map +1 -0
- package/dist/react/index.d.mts +13 -0
- package/dist/react/index.mjs +10 -0
- package/dist/react/predictive-search.d.mts +49 -0
- package/dist/react/predictive-search.mjs +133 -0
- package/dist/react/predictive-search.mjs.map +1 -0
- package/dist/react/product.d.mts +72 -0
- package/dist/react/product.mjs +127 -0
- package/dist/react/product.mjs.map +1 -0
- package/dist/react/shop-pay.d.mts +9 -0
- package/dist/react/shop-pay.mjs +16 -0
- package/dist/react/shop-pay.mjs.map +1 -0
- package/dist/react/shopify-scripts.d.mts +20 -0
- package/dist/react/shopify-scripts.mjs +39 -0
- package/dist/react/shopify-scripts.mjs.map +1 -0
- package/dist/storefront-api-types.d.ts +2351 -2390
- package/dist/storefront.schema.json +41534 -1
- package/dist/ts-plugin/index.cjs +68 -0
- package/dist/ts-plugin/index.cjs.map +1 -0
- package/dist/ts-plugin/index.d.cts +4 -0
- package/dist/vendor/standard-actions.d.mts +134 -0
- package/dist/vendor/standard-events.d.mts +1107 -0
- package/dist/vite/certificate-prompt.mjs +24 -0
- package/dist/vite/certificate-prompt.mjs.map +1 -0
- package/dist/vite/index.d.mts +2 -0
- package/dist/vite/index.mjs +3 -0
- package/dist/vite/local-https.d.mts +47 -0
- package/dist/vite/local-https.mjs +276 -0
- package/dist/vite/local-https.mjs.map +1 -0
- package/dist/vite/mkcert.mjs +141 -0
- package/dist/vite/mkcert.mjs.map +1 -0
- package/dist/vue/cart.d.mts +46 -0
- package/dist/vue/cart.mjs +122 -0
- package/dist/vue/cart.mjs.map +1 -0
- package/dist/vue/collection.d.mts +46 -0
- package/dist/vue/collection.mjs +108 -0
- package/dist/vue/collection.mjs.map +1 -0
- package/dist/vue/index.d.mts +11 -0
- package/dist/vue/index.mjs +8 -0
- package/dist/vue/predictive-search.d.mts +124 -0
- package/dist/vue/predictive-search.mjs +171 -0
- package/dist/vue/predictive-search.mjs.map +1 -0
- package/dist/vue/product.d.mts +57 -0
- package/dist/vue/product.mjs +167 -0
- package/dist/vue/product.mjs.map +1 -0
- package/dist/vue/shop-pay.d.mts +25 -0
- package/dist/vue/shop-pay.mjs +35 -0
- package/dist/vue/shop-pay.mjs.map +1 -0
- package/dist/vue/shopify-scripts.d.mts +127 -0
- package/dist/vue/shopify-scripts.mjs +79 -0
- package/dist/vue/shopify-scripts.mjs.map +1 -0
- package/package.json +116 -86
- package/skills/hydrogen-analytics/SKILL.md +80 -0
- package/skills/hydrogen-analytics/references/react.md +160 -0
- package/skills/hydrogen-analytics/references/vue.md +80 -0
- package/skills/hydrogen-cart-drawer/SKILL.md +248 -0
- package/skills/hydrogen-cart-drawer/references/accessibility.md +109 -0
- package/skills/hydrogen-cart-drawer/references/css.md +67 -0
- package/skills/hydrogen-cart-ui/SKILL.md +224 -0
- package/skills/hydrogen-cart-ui/references/nextjs.md +89 -0
- package/skills/hydrogen-cart-ui/references/react.md +285 -0
- package/skills/hydrogen-cart-ui/references/vue.md +228 -0
- package/skills/hydrogen-collection-browser/SKILL.md +83 -0
- package/skills/hydrogen-collection-browser/references/nextjs.md +118 -0
- package/skills/hydrogen-collection-browser/references/nuxt.md +108 -0
- package/skills/hydrogen-collection-browser/references/react.md +301 -0
- package/skills/hydrogen-customer-account/SKILL.md +107 -0
- package/skills/hydrogen-image/SKILL.md +65 -0
- package/skills/hydrogen-local-https/SKILL.md +142 -0
- package/skills/hydrogen-markets/SKILL.md +221 -0
- package/skills/hydrogen-markets/references/nextjs.md +157 -0
- package/skills/hydrogen-money/SKILL.md +67 -0
- package/skills/hydrogen-oxygen/SKILL.md +245 -0
- package/skills/hydrogen-oxygen/references/react-router.md +230 -0
- package/skills/hydrogen-predictive-search/SKILL.md +130 -0
- package/skills/hydrogen-predictive-search/references/react.md +32 -0
- package/skills/hydrogen-predictive-search/references/vue.md +40 -0
- package/skills/hydrogen-request-handlers/SKILL.md +107 -0
- package/skills/hydrogen-request-handlers/references/frameworks.md +179 -0
- package/skills/hydrogen-request-handlers/references/nextjs.md +137 -0
- package/skills/hydrogen-request-handlers/references/nuxt.md +215 -0
- package/skills/hydrogen-routing/SKILL.md +171 -0
- package/skills/hydrogen-setup/SKILL.md +50 -0
- package/skills/hydrogen-setup/references/analytics.md +624 -0
- package/skills/hydrogen-setup/steps/1-inspect-app.md +62 -0
- package/skills/hydrogen-setup/steps/10-analytics.md +10 -0
- package/skills/hydrogen-setup/steps/11-verify.md +31 -0
- package/skills/hydrogen-setup/steps/2-scaffold.md +86 -0
- package/skills/hydrogen-setup/steps/3-build-home-page.md +37 -0
- package/skills/hydrogen-setup/steps/4-collection-and-search.md +14 -0
- package/skills/hydrogen-setup/steps/5-cart.md +10 -0
- package/skills/hydrogen-setup/steps/6-product-detail-page.md +416 -0
- package/skills/hydrogen-setup/steps/7-shopify-runtime-scripts.md +69 -0
- package/skills/hydrogen-setup/steps/8-cart-drawer-and-navbar.md +35 -0
- package/skills/hydrogen-setup/steps/9-account-page.md +54 -0
- package/skills/hydrogen-shop-pay/SKILL.md +79 -0
- package/skills/hydrogen-shop-pay/references/core.md +66 -0
- package/skills/hydrogen-shop-pay/references/react.md +50 -0
- package/skills/hydrogen-shop-pay/references/vue.md +39 -0
- package/skills/hydrogen-smoke-test/SKILL.md +205 -0
- package/skills/hydrogen-storefront-client/SKILL.md +322 -0
- package/skills/hydrogen-storefront-client/references/astro.md +125 -0
- package/skills/hydrogen-storefront-client/references/caching.md +25 -0
- package/skills/hydrogen-storefront-client/references/nextjs.md +121 -0
- package/skills/hydrogen-storefront-client/references/nuxt.md +121 -0
- package/skills/hydrogen-storefront-client/references/query-validation.md +95 -0
- package/skills/hydrogen-storefront-client/references/react-router.md +81 -0
- package/skills/hydrogen-storefront-client/references/solidstart.md +131 -0
- package/skills/hydrogen-storefront-client/references/sveltekit.md +169 -0
- package/skills/hydrogen-variant-form/SKILL.md +267 -0
- package/skills/hydrogen-variant-form/references/nextjs.md +207 -0
- package/skills/hydrogen-variant-form/references/nuxt.md +95 -0
- package/skills/hydrogen-variant-form/references/react.md +71 -0
- package/dist/dev/get-virtual-routes-H72465VB.js +0 -74
- package/dist/dev/hydrogen-routes.d.ts +0 -5
- package/dist/dev/hydrogen-routes.js +0 -25
- package/dist/development/get-virtual-routes-ACFZHU42.js +0 -71
- package/dist/development/get-virtual-routes-ACFZHU42.js.map +0 -1
- package/dist/development/index.cjs +0 -6978
- package/dist/development/index.cjs.map +0 -1
- package/dist/development/index.js +0 -6631
- package/dist/development/index.js.map +0 -1
- package/dist/development/log-seo-tags-IG37ONQ2.js +0 -74
- package/dist/development/log-seo-tags-IG37ONQ2.js.map +0 -1
- package/dist/development/react-router-preset.d.ts +0 -45
- package/dist/development/react-router-preset.js +0 -49
- package/dist/development/react-router-preset.js.map +0 -1
- package/dist/index.cjs +0 -1
- package/dist/oxygen/index.d.ts +0 -197
- package/dist/oxygen/index.js +0 -107
- package/dist/production/get-virtual-routes-ZZEGQQDV.js +0 -3
- package/dist/production/get-virtual-routes-ZZEGQQDV.js.map +0 -1
- package/dist/production/index.cjs +0 -1019
- package/dist/production/index.cjs.map +0 -1
- package/dist/production/index.d.cts +0 -3260
- package/dist/production/index.d.ts +0 -3260
- package/dist/production/index.js +0 -1019
- package/dist/production/index.js.map +0 -1
- package/dist/production/log-seo-tags-TY72EQWZ.js +0 -2
- package/dist/production/log-seo-tags-TY72EQWZ.js.map +0 -1
- package/dist/production/react-router-preset.d.ts +0 -45
- package/dist/production/react-router-preset.js +0 -11
- package/dist/react-router.d.ts +0 -75
- package/dist/vite/chunk-4O5OI3OO.js +0 -127
- package/dist/vite/chunk-FAQ7TVHC.js +0 -9
- package/dist/vite/chunk-QXBQVDMY.js +0 -68
- package/dist/vite/compat-date.d.ts +0 -3
- package/dist/vite/compat-date.js +0 -6
- package/dist/vite/get-virtual-routes.d.ts +0 -21
- package/dist/vite/get-virtual-routes.js +0 -74
- package/dist/vite/hydrogen-middleware.d.ts +0 -9
- package/dist/vite/hydrogen-middleware.js +0 -7
- package/dist/vite/plugin.d.ts +0 -22
- package/dist/vite/plugin.js +0 -171
- package/dist/vite/request-events.d.ts +0 -144
- package/dist/vite/request-events.js +0 -10
- package/dist/vite/types.d.ts +0 -5
- package/dist/vite/types.js +0 -0
- package/dist/vite/virtual-routes/assets/debug-network.css +0 -609
- package/dist/vite/virtual-routes/assets/favicon-dark.svg +0 -20
- package/dist/vite/virtual-routes/assets/favicon.svg +0 -28
- package/dist/vite/virtual-routes/assets/inter-variable-font.woff2 +0 -0
- package/dist/vite/virtual-routes/assets/jetbrainsmono-variable-font.woff2 +0 -0
- package/dist/vite/virtual-routes/assets/styles.css +0 -249
- package/dist/vite/virtual-routes/components/FlameChartWrapper.jsx +0 -123
- package/dist/vite/virtual-routes/components/HydrogenLogoBaseBW.jsx +0 -32
- package/dist/vite/virtual-routes/components/HydrogenLogoBaseColor.jsx +0 -47
- package/dist/vite/virtual-routes/components/IconBanner.jsx +0 -292
- package/dist/vite/virtual-routes/components/IconClose.jsx +0 -38
- package/dist/vite/virtual-routes/components/IconDiscard.jsx +0 -44
- package/dist/vite/virtual-routes/components/IconError.jsx +0 -61
- package/dist/vite/virtual-routes/components/IconGithub.jsx +0 -23
- package/dist/vite/virtual-routes/components/IconTwitter.jsx +0 -21
- package/dist/vite/virtual-routes/components/Layout.jsx +0 -7
- package/dist/vite/virtual-routes/components/RequestDetails.jsx +0 -171
- package/dist/vite/virtual-routes/components/RequestTable.jsx +0 -91
- package/dist/vite/virtual-routes/components/RequestWaterfall.jsx +0 -151
- package/dist/vite/virtual-routes/layout.jsx +0 -33
- package/dist/vite/virtual-routes/lib/useDebugNetworkServer.jsx +0 -178
- package/dist/vite/virtual-routes/routes/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.jsx +0 -37
- package/dist/vite/virtual-routes/routes/[.]well-known.appspecific.com[.]chrome[.]devtools[.]json.tsx +0 -79
- package/dist/vite/virtual-routes/routes/graphiql.jsx +0 -5
- package/dist/vite/virtual-routes/routes/index.jsx +0 -265
- package/dist/vite/virtual-routes/routes/subrequest-profiler.jsx +0 -243
- package/dist/vite/virtual-routes/virtual-root-with-layout.jsx +0 -63
- package/dist/vite/virtual-routes/virtual-root.jsx +0 -67
package/dist/production/index.js
DELETED
|
@@ -1,1019 +0,0 @@
|
|
|
1
|
-
import {createContext,forwardRef,lazy,useContext,useMemo,useEffect,useRef,useState,createElement,Fragment as Fragment$1,Suspense}from'react';import {createContext as createContext$1,useRevalidator,useFetcher,useFetchers,RouterContextProvider,createRequestHandler,useNavigation,useLocation,useNavigate,Link,useMatches}from'react-router';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {useLoadScript,useShopifyCookies,getTrackingValues,createStorefrontClient,SHOPIFY_STOREFRONT_ID_HEADER,SHOPIFY_STOREFRONT_Y_HEADER,SHOPIFY_STOREFRONT_S_HEADER,SHOPIFY_UNIQUE_TOKEN_HEADER,SHOPIFY_VISIT_TOKEN_HEADER,flattenConnection,RichText,ShopPayButton,parseGid,sendShopifyAnalytics,AnalyticsEventName,AnalyticsPageType,getClientBrowserParameters}from'@shopify/hydrogen-react';export{AnalyticsEventName,AnalyticsPageType,ExternalVideo,IMAGE_FRAGMENT,Image,MediaFile,ModelViewer,Money,ShopifySalesChannel,Video,customerAccountApiCustomScalars,decodeEncodedVariant,flattenConnection,getAdjacentAndFirstAvailableVariants,getClientBrowserParameters,getProductOptions,getShopifyCookies,getTrackingValues,isOptionValueCombinationInEncodedVariant,mapSelectedProductOptionToObject,parseGid,parseMetafield,sendShopifyAnalytics,storefrontApiCustomScalars,useLoadScript,useMoney,useSelectedOptionInUrlParam,useShopifyCookies}from'@shopify/hydrogen-react';import {useLoadScript as useLoadScript$1}from'@shopify/hydrogen-react/load-script';import {createGraphQLClient}from'@shopify/graphql-client';import {parse,stringify}from'worktop/cookie';import is from'content-security-policy-builder';function Ce(e){let{type:t,data:r={},customData:o}=e,n=useLocation(),{publish:a,cart:s,prevCart:i,shop:c,customData:u}=ee(),d=n.pathname+n.search,y={...r,customData:{...u,...o},cart:s,prevCart:i,shop:c};return useEffect(()=>{c?.shopId&&(y={...y,url:window.location.href},a(t,y));},[a,d,c?.shopId]),null}function br(e){return jsx(Ce,{...e,type:"page_viewed"})}function wr(e){return jsx(Ce,{...e,type:"product_viewed"})}function Dr(e){return jsx(Ce,{...e,type:"collection_viewed"})}function xr(e){return jsx(Ce,{...e,type:"cart_viewed"})}function Or(e){return jsx(Ce,{...e,type:"search_viewed"})}function _r(e){return jsx(Ce,{...e})}var B={PAGE_VIEWED:"page_viewed",PRODUCT_VIEWED:"product_viewed",COLLECTION_VIEWED:"collection_viewed",CART_VIEWED:"cart_viewed",SEARCH_VIEWED:"search_viewed",CART_UPDATED:"cart_updated",PRODUCT_ADD_TO_CART:"product_added_to_cart",PRODUCT_REMOVED_FROM_CART:"product_removed_from_cart",CUSTOM_EVENT:"custom_"};var be="Custom-Storefront-Request-Group-ID",we="X-Shopify-Storefront-Access-Token",Tt="X-SDK-Variant",St="X-SDK-Variant-Source",Pt="X-SDK-Version",je="X-Shopify-Client-IP",he="X-Shopify-Client-IP-Sig",Ke="_sfapi_proxy",Ye="_server_tracking";function cn(e){return Object.entries(e).map(([t,r])=>r?`${t};desc=${r}`:void 0).filter(Boolean).join(", ")}function De(e,t){let r=typeof t=="string"?t:cn(t);r&&e.headers.append("Server-Timing",r);}var un=["_y","_s","_cmp"];function Ur(e){let t={};if(!e)return t;let r=new RegExp(`\\b(${un.join("|")});desc="?([^",]+)"?`,"g"),o;for(;(o=r.exec(e))!==null;)t[o[1]]=o[2];return t}function Lr(e){if(typeof window>"u")return false;try{return !!window.performance.getEntriesByType("navigation")[0]?.serverTiming?.some(r=>r.name===e)}catch{return false}}function kr(){return Lr(Ke)}function Vr(){return Lr(Ye)}var mn="https://cdn.shopify.com/shopifycloud/consent-tracking-api/v0.2/consent-tracking-api.js",Cn="https://cdn.shopify.com/shopifycloud/privacy-banner/storefront-banner.js";function vt(e){console.error(`[h2:error:useCustomerPrivacy] Unable to setup Customer Privacy API: Missing consent.${e} configuration.`);}function It(e){let{withPrivacyBanner:t=false,onVisitorConsentCollected:r,onReady:o,checkoutDomain:n,storefrontAccessToken:a,country:s,locale:i,sameDomainForStorefrontApi:c}=e,u=useMemo(()=>c??kr(),[c]),d=useMemo(()=>u&&!Vr(),[u]),y=useShopifyCookies({fetchTrackingValues:d,storefrontAccessToken:a,ignoreDeprecatedCookies:true}),m=useMemo(getTrackingValues,[y]),{revalidate:C}=useRevalidator();useLoadScript$1(t?Cn:mn,{attributes:{id:"customer-privacy-api"}});let{observing:p,setLoaded:l,apisLoaded:S}=hn({withPrivacyBanner:t}),f=useMemo(()=>{n||vt("checkoutDomain"),a||vt("storefrontAccessToken"),(a.startsWith("shpat_")||a.length!==32)&&console.error("[h2:error:useCustomerPrivacy] It looks like you passed a private access token, make sure to use the public token");let h=An(n);return {checkoutRootDomain:u&&typeof window<"u"?window.location.host:n,storefrontRootDomain:h?"."+h:void 0,storefrontAccessToken:a,country:s,locale:i}},[vt,n,a,s,i]);useEffect(()=>{let h=T=>{let g=getTrackingValues();if((m.visitToken!==g.visitToken||m.uniqueToken!==g.uniqueToken)&&C().catch(()=>{console.warn("[h2:warn:useCustomerPrivacy] Revalidation failed after consent change.");}),r){let v=se();if(v?.shouldShowBanner()){let P=v.currentVisitorConsent();if(P&&P.marketing===""&&P.analytics===""&&P.preferences==="")return}r(T.detail);}};return document.addEventListener("visitorConsentCollected",h),()=>{document.removeEventListener("visitorConsentCollected",h);}},[r]),useEffect(()=>{if(!t||p.current.privacyBanner)return;p.current.privacyBanner=true;let h=window.privacyBanner||void 0;Object.defineProperty(window,"privacyBanner",{configurable:true,get(){return h},set(g){typeof g=="object"&&g!==null&&"showPreferences"in g&&"loadBanner"in g&&(h=Fr({privacyBanner:g,config:f}),l.privacyBanner());}});},[t,f,Fr,l.privacyBanner]),useEffect(()=>{if(p.current.customerPrivacy)return;p.current.customerPrivacy=true;let h=null,T=null,g=window.Shopify||void 0;Object.defineProperty(window,"Shopify",{configurable:true,get(){return g},set(v){typeof v=="object"&&v!==null&&Object.keys(v).length===0&&(g=v,h={backendConsentEnabled:true},Object.defineProperty(window.Shopify,"customerPrivacy",{configurable:true,get(){return T??h},set(P){if(typeof P=="object"&&P!==null&&"setTrackingConsent"in P){let U=P;T={...U,setTrackingConsent:Mr({customerPrivacy:U,config:f})},g={...g,customerPrivacy:T},l.customerPrivacy();}}}));}});},[f,Mr,l.customerPrivacy]),useEffect(()=>{if(!S||!y)return;let h=se();if(h&&!h.cachedConsent){let T=getTrackingValues();T.consent&&(h.cachedConsent=T.consent);}if(t){let T=xe();T&&T.loadBanner(f);}gn(),o?.();},[S,y]);let R={customerPrivacy:se()};return t&&(R.privacyBanner=xe()),R}var Nr=false;function gn(){if(Nr)return;Nr=true;let e=new CustomEvent("shopifyCustomerPrivacyApiLoaded");document.dispatchEvent(e);}function hn({withPrivacyBanner:e}){let t=useRef({customerPrivacy:false,privacyBanner:false}),[r,o]=useState(e?[false,false]:[false]),n=r.every(Boolean);return {observing:t,setLoaded:{customerPrivacy:()=>{o(e?s=>[true,s[1]]:()=>[true]);},privacyBanner:()=>{e&&o(s=>[s[0],true]);}},apisLoaded:n}}function An(e){if(typeof window>"u")return;let t=window.location.host,r=e.split(".").reverse(),o=t.split(".").reverse(),n=[];return r.forEach((a,s)=>{a===o[s]&&n.push(a);}),n.reverse().join(".")||void 0}function Mr({customerPrivacy:e,config:t}){let r=e.setTrackingConsent,{locale:o,country:n,...a}=t;function s(i,c){r({...a,headlessStorefront:true,...i},c);}return s}function Fr({privacyBanner:e,config:t}){let r=e.loadBanner,o=e.showPreferences;function n(s){if(typeof s=="object"){r({...t,...s});return}r(t);}function a(s){if(typeof s=="object"){o({...t,...s});return}o(t);}return {loadBanner:n,showPreferences:a}}function se(){try{let e=window.Shopify?.customerPrivacy;return e&&"setTrackingConsent"in e?e:null}catch{return null}}function xe(){try{return window&&window?.privacyBanner?window.privacyBanner:null}catch{return null}}var Hr="2026.4.5";function In(){let e=se();if(!e)throw new Error("Shopify Customer Privacy API not available. Must be used within a useEffect. Make sure to load the Shopify Customer Privacy API with useCustomerPrivacy() or <AnalyticsProvider>.");return e}function $r({consent:e,onReady:t,domain:r}){let{subscribe:o,register:n,canTrack:a}=ee(),[s,i]=useState(false),[c,u]=useState(false),[d,y]=useState(""),m=useRef(false),{checkoutDomain:C,storefrontAccessToken:p,language:l}=e,{ready:S}=n("Internal_Shopify_Analytics");It({...e,locale:l,checkoutDomain:C||"mock.shop",storefrontAccessToken:p||"abcdefghijklmnopqrstuvwxyz123456",onReady:()=>!e.withPrivacyBanner&&u(true),onVisitorConsentCollected:R=>{try{y(JSON.stringify(R));}catch{}u(true);}});let f=useMemo(()=>c?a():true,[c,a,d]);return useShopifyCookies({hasUserConsent:f,domain:r,checkoutDomain:C,fetchTrackingValues:false,ignoreDeprecatedCookies:!c}),useEffect(()=>{m.current||(m.current=true,o(B.PAGE_VIEWED,bn),o(B.PRODUCT_VIEWED,wn),o(B.COLLECTION_VIEWED,Dn),o(B.SEARCH_VIEWED,xn),o(B.PRODUCT_ADD_TO_CART,On),i(true));},[o]),useEffect(()=>{s&&c&&(S(),t());},[s,c,t]),null}function Xe(e){console.error(`[h2:error:ShopifyAnalytics] Unable to send Shopify analytics: Missing shop.${e} configuration.`);}function Ue(e){let t=In(),r=t.analyticsProcessingAllowed();if(!e?.shop?.shopId){Xe("shopId");return}if(!e?.shop?.acceptedLanguage){Xe("acceptedLanguage");return}if(!e?.shop?.currency){Xe("currency");return}if(!e?.shop?.hydrogenSubchannelId){Xe("hydrogenSubchannelId");return}return {shopifySalesChannel:"hydrogen",assetVersionId:Hr,...e.shop,hasUserConsent:r,...getClientBrowserParameters(),analyticsAllowed:t.analyticsProcessingAllowed(),marketingAllowed:t.marketingAllowed(),saleOfDataAllowed:t.saleOfDataAllowed(),ccpaEnforced:!t.saleOfDataAllowed(),gdprEnforced:!(t.marketingAllowed()&&t.analyticsProcessingAllowed())}}function En(e,t){if(t===null)return;let r=Ue(e);return r?{...r,cartId:t.id}:void 0}var ie={};function bn(e){let t=Ue(e);t&&(sendShopifyAnalytics({eventName:AnalyticsEventName.PAGE_VIEW_2,payload:{...t,...ie}}),ie={});}function wn(e){let t=Ue(e);if(t&&Gr({type:"product",products:e.products})){let r=bt(e.products);ie={pageType:AnalyticsPageType.product,resourceId:r[0].productGid},t={...t,...ie,products:bt(e.products)},sendShopifyAnalytics({eventName:AnalyticsEventName.PRODUCT_VIEW,payload:t});}}function Dn(e){let t=Ue(e);t&&(ie={pageType:AnalyticsPageType.collection,resourceId:e.collection.id},t={...t,...ie,collectionHandle:e.collection.handle,collectionId:e.collection.id},sendShopifyAnalytics({eventName:AnalyticsEventName.COLLECTION_VIEW,payload:t}));}function xn(e){let t=Ue(e);t&&(ie={pageType:AnalyticsPageType.search},t={...t,...ie,searchString:e.searchTerm},sendShopifyAnalytics({eventName:AnalyticsEventName.SEARCH_VIEW,payload:t}));}function On(e){let{cart:t,currentLine:r}=e,o=En(e,t);!o||!r?.id||_n({matchedLine:r,eventPayload:o});}function _n({matchedLine:e,eventPayload:t}){let r={id:e.merchandise.product.id,variantId:e.merchandise.id,title:e.merchandise.product.title,variantTitle:e.merchandise.title,vendor:e.merchandise.product.vendor,price:e.merchandise.price.amount,quantity:e.quantity,productType:e.merchandise.product.productType,sku:e.merchandise.sku};Gr({type:"cart",products:[r]})&&sendShopifyAnalytics({eventName:AnalyticsEventName.ADD_TO_CART,payload:{...t,products:bt([r])}});}function pe(e,t,r,o){if(e==="cart"){let n=`${r?"merchandise":"merchandise.product"}.${t}`;console.error(`[h2:error:ShopifyAnalytics] Can't set up cart analytics events because the \`cart.lines[].${n}\` value is missing from your GraphQL cart query. In your project, search for where \`fragment CartLine on CartLine\` is defined and make sure \`${n}\` is part of your cart query. Check the Hydrogen Skeleton template for reference: https://github.com/Shopify/hydrogen/blob/main/templates/skeleton/app/lib/fragments.ts#L25-L56.`);}else {let n=`${o||t}`;console.error(`[h2:error:ShopifyAnalytics] Can't set up product view analytics events because the \`${n}\` is missing from your \`<Analytics.ProductView>\`. Make sure \`${n}\` is part of your products data prop. Check the Hydrogen Skeleton template for reference: https://github.com/Shopify/hydrogen/blob/main/templates/skeleton/app/routes/products.%24handle.tsx#L159-L165.`);}}function Gr({type:e,products:t}){return !t||t.length===0?(pe(e,"",false,"data.products"),false):(t.forEach(r=>{if(!r.id)return pe(e,"id",false),false;if(!r.title)return pe(e,"title",false),false;if(!r.price)return pe(e,"price.amount",true,"price"),false;if(!r.vendor)return pe(e,"vendor",false),false;if(!r.variantId)return pe(e,"id",true,"variantId"),false;if(!r.variantTitle)return pe(e,"title",true,"variantTitle"),false}),true)}function bt(e){return e.map(t=>{let r={productGid:t.id,variantGid:t.variantId,name:t.title,variantName:t.variantTitle,brand:t.vendor,price:t.price,quantity:t.quantity||1,category:t.productType};return t.sku&&(r.sku=t.sku),t.productType&&(r.category=t.productType),r})}function Wr(e){console.error(`[h2:error:CartAnalytics] Can't set up cart analytics events because the \`cart.${e}\` value is missing from your GraphQL cart query. In your project, search for where \`fragment CartApiQuery on Cart\` is defined and make sure \`${e}\` is part of your cart query. Check the Hydrogen Skeleton template for reference: https://github.com/Shopify/hydrogen/blob/main/templates/skeleton/app/lib/fragments.ts#L59.`);}function jr({cart:e,setCarts:t}){let{publish:r,shop:o,customData:n,canTrack:a,cart:s,prevCart:i}=ee(),c=useRef(null);return useEffect(()=>{if(e)return Promise.resolve(e).then(u=>{if(u&&u.lines){if(!u.id){Wr("id");return}if(!u.updatedAt){Wr("updatedAt");return}}t(({cart:d,prevCart:y})=>u?.updatedAt!==d?.updatedAt?{cart:u,prevCart:d}:{cart:d,prevCart:y});}),()=>{}},[t,e]),useEffect(()=>{if(!s||!s?.updatedAt||s?.updatedAt===i?.updatedAt)return;let u;try{u=JSON.parse(localStorage.getItem("cartLastUpdatedAt")||"");}catch{u=null;}if(s.id===u?.id&&s.updatedAt===u?.updatedAt)return;let d={eventTimestamp:Date.now(),cart:s,prevCart:i,shop:o,customData:n};if(s.updatedAt===c.current)return;c.current=s.updatedAt,r("cart_updated",d),localStorage.setItem("cartLastUpdatedAt",JSON.stringify({id:s.id,updatedAt:s.updatedAt}));let y=i?.lines?flattenConnection(i?.lines):[],m=s.lines?flattenConnection(s.lines):[];y?.forEach(C=>{let p=m.filter(l=>C.id===l.id);if(p?.length===1){let l=p[0];C.quantity<l.quantity?r("product_added_to_cart",{...d,prevLine:C,currentLine:l}):C.quantity>l.quantity&&r("product_removed_from_cart",{...d,prevLine:C,currentLine:l});}else r("product_removed_from_cart",{...d,prevLine:C});}),m?.forEach(C=>{let p=y.filter(l=>C.id===l.id);(!p||p.length===0)&&r("product_added_to_cart",{...d,currentLine:C});});},[s,i,r,o,n,a]),null}var Mn="https://cdn.shopify.com/shopifycloud/perf-kit/shopify-perf-kit-spa.min.js";function Kr({shop:e}){let t=useRef(false),{subscribe:r,register:o}=ee(),{ready:n}=o("Internal_Shopify_Perf_Kit"),a=useLoadScript(Mn,{attributes:{id:"perfkit","data-application":"hydrogen","data-shop-id":parseGid(e.shopId).id.toString(),"data-storefront-id":e.hydrogenSubchannelId,"data-monorail-region":"global","data-spa-mode":"true","data-resource-timing-sampling-rate":"10"}});return useEffect(()=>{a!=="done"||t.current||(t.current=true,r(B.PAGE_VIEWED,()=>{window.PerfKit?.navigate();}),r(B.PRODUCT_VIEWED,()=>{window.PerfKit?.setPageType("product");}),r(B.COLLECTION_VIEWED,()=>{window.PerfKit?.setPageType("collection");}),r(B.SEARCH_VIEWED,()=>{window.PerfKit?.setPageType("search");}),r(B.CART_VIEWED,()=>{window.PerfKit?.setPageType("cart");}),n());},[r,n,a]),null}var Yr=new Set,J=e=>{Yr.has(e)||(console.warn(e),Yr.add(e));},Jr=new Set,Dt=e=>{Jr.has(e)||(console.error(new Error(e)),Jr.add(e));};var Gn={canTrack:()=>false,cart:null,customData:{},prevCart:null,publish:()=>{},shop:null,subscribe:()=>{},register:()=>({ready:()=>{}}),customerPrivacy:null,privacyBanner:null},ro=createContext(Gn),et=new Map,ke={};function oo(){return Object.values(ke).every(Boolean)}function zr(e,t){et.has(e)||et.set(e,new Map),et.get(e)?.set(t.toString(),t);}var tt=new Map;function Xr(e,t){if(!oo()){tt.set(e,t);return}no(e,t);}function no(e,t){(et.get(e)??new Map).forEach((r,o)=>{try{r(t);}catch(n){typeof n=="object"&&n instanceof Error?console.error("Analytics publish error",n.message,o,n.stack):console.error("Analytics publish error",n,o);}});}function Zr(e){return ke.hasOwnProperty(e)||(ke[e]=false),{ready:()=>{ke[e]=true,oo()&&tt.size>0&&(tt.forEach((t,r)=>{no(r,t);}),tt.clear());}}}function eo(){try{return window.Shopify.customerPrivacy?.analyticsProcessingAllowed?.()??!1}catch{}return false}function to(e,t){return `[h2:error:Analytics.Provider] - ${e} is required. Make sure ${t} is defined in your environment variables. See https://h2o.fyi/analytics/consent to learn how to setup environment variables in the Shopify admin.`}function Bn({canTrack:e,cart:t,children:r,consent:o,customData:n={},shop:a=null,cookieDomain:s}){let{shop:i}=Qn(a),[c,u]=useState(!!e),[d,y]=useState(false),[m,C]=useState({cart:null,prevCart:null}),[p,l]=useState(e?()=>e:()=>eo);if(i)if(/\/68817551382$/.test(i.shopId))J("[h2:error:Analytics.Provider] - Mock shop is used. Analytics will not work properly.");else {if(!o.checkoutDomain){let f=to("consent.checkoutDomain","PUBLIC_CHECKOUT_DOMAIN");Dt(f);}if(!o.storefrontAccessToken){let f=to("consent.storefrontAccessToken","PUBLIC_STOREFRONT_API_TOKEN");Dt(f);}o?.country||(o.country="US"),o?.language||(o.language="EN"),o.withPrivacyBanner===void 0&&(o.withPrivacyBanner=false);}let S=useMemo(()=>({canTrack:p,...m,customData:n,publish:p()?Xr:()=>{},shop:i,subscribe:zr,register:Zr,customerPrivacy:se(),privacyBanner:xe()}),[c,p,m,m.cart?.updatedAt,m.prevCart,Xr,zr,n,i,Zr,JSON.stringify(ke),se,xe]);return jsxs(ro.Provider,{value:S,children:[r,!!i&&jsx(br,{}),!!i&&!!t&&jsx(jr,{cart:t,setCarts:C}),!!i&&jsx($r,{consent:o,onReady:()=>{u(true),l(e?()=>e:()=>eo),y(true);},domain:s}),!!i&&d&&jsx(Kr,{shop:i})]})}function ee(){let e=useContext(ro);if(!e)throw new Error("[h2:error:useAnalytics] 'useAnalytics()' must be a descendent of <AnalyticsProvider/>");return e}function Qn(e){let[t,r]=useState(null);return useEffect(()=>(Promise.resolve(e).then(r),()=>{}),[r,e]),{shop:t}}async function Wn({storefront:e,publicStorefrontId:t="0"}){return e.query(jn,{cache:e.CacheLong()}).then(({shop:r,localization:o})=>({shopId:r.id,acceptedLanguage:o.language.isoCode,currency:o.country.currency.isoCode,hydrogenSubchannelId:t}))}var jn=`#graphql
|
|
2
|
-
query ShopData(
|
|
3
|
-
$country: CountryCode
|
|
4
|
-
$language: LanguageCode
|
|
5
|
-
) @inContext(country: $country, language: $language) {
|
|
6
|
-
shop {
|
|
7
|
-
id
|
|
8
|
-
}
|
|
9
|
-
localization {
|
|
10
|
-
country {
|
|
11
|
-
currency {
|
|
12
|
-
isoCode
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
language {
|
|
16
|
-
isoCode
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
`,Kn={CartView:xr,CollectionView:Dr,CustomView:_r,ProductView:wr,Provider:Bn,SearchView:Or};function z(e,t){return xt(e.headers,t)}function xt(e,t){let r=e?.get?.(t)??e?.[t];return typeof r=="string"?r:null}function ce(e){return {requestId:e?z(e,"request-id"):void 0,purpose:e?z(e,"purpose"):void 0}}function ao(e){return {requestGroupId:z(e,"request-id"),buyerIp:z(e,"oxygen-buyer-ip"),buyerIpSig:z(e,he),cookie:z(e,"cookie"),purpose:z(e,"sec-purpose")||z(e,"purpose")}}var Ot=/^\/api\/(unstable|2\d{3}-\d{2})\/graphql\.json$/,so=/^\/api\/mcp$/,rt=e=>{try{return new URL(e,"http://e.c").pathname}catch{return "/"}};function Ve(e,t){return t.reduce((r,o)=>{let n=e(o);return n&&r.push([o,n]),r},[])}function Ae(e,t={}){let r=new Error,o=(n,a="Error")=>{let s=(r.stack??"").split(`
|
|
21
|
-
`).slice(3+(t.stackOffset??0)).join(`
|
|
22
|
-
`).replace(/ at loader(\d+) \(/,(i,c)=>i.replace(c,""));return `${a}: ${n}
|
|
23
|
-
`+s};return e.then(n=>{if(n?.errors&&Array.isArray(n.errors)){let a=typeof t.logErrors=="function"?t.logErrors:()=>t.logErrors??false;n.errors.forEach(s=>{s&&(s.stack=o(s.message,s.name),a(s)&&console.error(s));});}return n}).catch(n=>{throw n&&(n.stack=o(n.message,n.name)),n})}var X=void 0;var ot="public",Jn="private",_t="no-store",io={maxAge:"max-age",staleWhileRevalidate:"stale-while-revalidate",sMaxAge:"s-maxage",staleIfError:"stale-if-error"};function Ne(e){let t=[];return Object.keys(e).forEach(r=>{r==="mode"?t.push(e[r]):io[r]&&t.push(`${io[r]}=${e[r]}`);}),t.join(", ")}function Ut(){return {mode:_t}}function Lt(e){if(e?.mode&&e?.mode!==ot&&e?.mode!==Jn)throw Error("'mode' must be either 'public' or 'private'")}function le(e){return Lt(e),{mode:ot,maxAge:1,staleWhileRevalidate:9,...e}}function kt(e){return Lt(e),{mode:ot,maxAge:3600,staleWhileRevalidate:82800,...e}}function Te(e){return Lt(e),{mode:ot,maxAge:1,staleWhileRevalidate:86399,...e}}function Vt(e){return e}function te(e){return String(e).includes("__proto__")?JSON.parse(e,zn):JSON.parse(e)}function zn(e,t){if(e!=="__proto__")return t}function nt(e,t){return e&&t?{...e,...t}:e||Te()}function Nt(e){return Ne(nt(e))}async function Xn(e,t){if(!e)return;let r=await e.match(t);if(!r){return}return r}async function Zn(e,t,r,o){if(!e)return;let n=nt(o),a=Nt(nt(n,{maxAge:(n.maxAge||0)+(n.staleWhileRevalidate||0)})),s=Nt(nt(n));r.headers.set("cache-control",a),r.headers.set("real-cache-control",s),r.headers.set("cache-put-date",String(Date.now())),await e.put(t,r);}async function ea(e,t){e&&await e.delete(t);}function ta(e,t){let r=e.headers.get("real-cache-control"),o=0;if(r){let a=r.match(/max-age=(\d*)/);a&&a.length>1&&(o=parseFloat(a[1]));}return [(Date.now()-Number(t))/1e3,o]}function ra(e,t){let r=t.headers.get("cache-put-date");if(!r)return false;let[o,n]=ta(t,r),a=o>n;return a}var at={get:Xn,set:Zn,delete:ea,generateDefaultCacheControlHeader:Nt,isStale:ra};function Me(e){return `https://shopify.dev/?${e}`}function oa(e){return e||Te()}async function co(e,t){if(!e)return;let r=Me(t),o=new Request(r),n=await at.get(e,o);if(!n)return;let a=await n.text();try{return [te(a),n]}catch{return [a,n]}}async function uo(e,t,r,o){if(!e)return;let n=Me(t),a=new Request(n),s=new Response(JSON.stringify(r));await at.set(e,a,s,oa(o));}function po(e,t){return at.isStale(new Request(Me(e)),t)}function lo(e){let t=Array.isArray(e)?e:[e],r="";for(let o of t)o!=null&&(typeof o=="object"?r+=JSON.stringify(o):r+=o.toString());return encodeURIComponent(r)}var Mt=new Set;async function st(e,t,{strategy:r=le(),cacheInstance:o,shouldCacheResult:n=()=>true,waitUntil:a,debugInfo:s}){let c=lo([...typeof e=="string"?[e]:e]),y=f=>{({displayName:f.displayName,url:f.response?.url,responseInit:{status:f.response?.status||0,statusText:f.response?.statusText||"",headers:Array.from(f.response?.headers.entries()||[])}});},C=void 0;if(!o||!r||r.mode===_t){let f=await t({addDebugData:y});return f}let p=f=>uo(o,c,{value:f,debugInfo:void 0},r),l=await co(o,c);if(l&&typeof l[0]!="string"){let[{value:f,debugInfo:R},h]=l;let T=po(c,h)?"STALE":"HIT";if(!Mt.has(c)&&T==="STALE"){Mt.add(c);let g=Promise.resolve().then(async()=>{let v=Date.now();try{let P=await t({addDebugData:y});n(P)&&(await p(P),C?.({result:P,cacheStatus:"PUT",overrideStartTime:v}));}catch(P){P.message&&(P.message="SWR in sub-request failed: "+P.message),console.error(P);}finally{Mt.delete(c);}});a?.(g);}return f}let S=await t({addDebugData:y});if(n(S)){let f=Promise.resolve().then(async()=>{await p(S);});a?.(f);}return S}var aa=["set-cookie","server-timing"];function yo(e,t){return [e,{status:t.status,statusText:t.statusText,headers:[...t.headers].filter(([r])=>!aa.includes(r.toLowerCase()))}]}function fo([e,t]){return [e,new Response(e,t)]}async function it(e,t,{cacheInstance:r,cache:o,cacheKey:n=[e,t],shouldCacheResponse:a,waitUntil:s,debugInfo:i,streamConfig:c,onRawHeaders:u}){return !o&&(!t.method||t.method==="GET")&&(o=le()),st(n,async()=>{if(c){let m=null,p=await createGraphQLClient({url:e,customFetchApi:async(f,R)=>(m=await fetch(f,R),u?.(m.headers),m),headers:t.headers}).requestStream(c.query,{variables:c.variables}),l,S;for await(let f of p){let{data:R,errors:h}=f;l=R,S=h?.graphQLErrors??h;}return m?.ok?yo({data:l,errors:S},m):m}let d=await fetch(e,t);if(u?.(d.headers),!d.ok)return d;let y=await d.text().catch(()=>"");try{y&&(y=te(y));}catch{}return yo(y,d)},{cacheInstance:r,waitUntil:s,strategy:o??null,debugInfo:i,shouldCacheResult:d=>"ok"in d?!1:a(...fo(d))}).then(d=>"ok"in d?[null,d]:fo(d))}function sa(e){let{cache:t,waitUntil:r,request:o}=e;return {run:({cacheKey:n,cacheStrategy:a,shouldCacheResult:s},i)=>st(n,i,{shouldCacheResult:s,strategy:a,cacheInstance:t,waitUntil:r,debugInfo:{...ce(o),stackInfo:X?.()}}),fetch:(n,a,s)=>it(n,a??{},{waitUntil:r,cacheKey:[n,a],cacheInstance:t,debugInfo:{url:n,...ce(o),stackInfo:X?.(),displayName:s?.displayName},cache:s.cacheStrategy,...s}).then(([i,c])=>({data:i,response:c}))}}var Ft=class{#e;constructor(){this.#e=new Map;}add(t){throw new Error("Method not implemented. Use `put` instead.")}addAll(t){throw new Error("Method not implemented. Use `put` instead.")}matchAll(t,r){throw new Error("Method not implemented. Use `match` instead.")}async put(t,r){if(t.method!=="GET")throw new TypeError("Cannot cache response to non-GET request.");if(r.status===206)throw new TypeError("Cannot cache response to a range request (206 Partial Content).");if(r.headers.get("vary")?.includes("*"))throw new TypeError("Cannot cache response with 'Vary: *' header.");this.#e.set(t.url,{body:new Uint8Array(await r.arrayBuffer()),status:r.status,headers:[...r.headers],timestamp:Date.now()});}async match(t){if(t.method!=="GET")return;let r=this.#e.get(t.url);if(!r)return;let{body:o,timestamp:n,...a}=r,s=new Headers(a.headers),i=s.get("cache-control")||s.get("real-cache-control")||"",c=parseInt(i.match(/max-age=(\d+)/)?.[1]||"0",10),u=parseInt(i.match(/stale-while-revalidate=(\d+)/)?.[1]||"0",10),d=(Date.now()-n)/1e3;if(d>c+u){this.#e.delete(t.url);return}let m=d>c;return s.set("cache",m?"STALE":"HIT"),s.set("date",new Date(n).toUTCString()),new Response(o,{status:a.status??200,headers:s})}async delete(t){return this.#e.has(t.url)?(this.#e.delete(t.url),true):false}keys(t){let r=[];for(let o of this.#e.keys())(!t||t.url===o)&&r.push(new Request(o));return Promise.resolve(r)}};var mo="cartFormInput";function re({children:e,action:t,inputs:r,route:o,fetcherKey:n}){let a=useFetcher({key:n});return jsxs(a.Form,{action:o||"",method:"post",children:[(t||r)&&jsx("input",{type:"hidden",name:mo,value:JSON.stringify({action:t,inputs:r})}),typeof e=="function"?e(a):e]})}re.INPUT_NAME=mo;re.ACTIONS={AttributesUpdateInput:"AttributesUpdateInput",BuyerIdentityUpdate:"BuyerIdentityUpdate",Create:"Create",DiscountCodesUpdate:"DiscountCodesUpdate",GiftCardCodesUpdate:"GiftCardCodesUpdate",GiftCardCodesAdd:"GiftCardCodesAdd",GiftCardCodesRemove:"GiftCardCodesRemove",LinesAdd:"LinesAdd",LinesRemove:"LinesRemove",LinesUpdate:"LinesUpdate",NoteUpdate:"NoteUpdate",SelectedDeliveryOptionsUpdate:"SelectedDeliveryOptionsUpdate",MetafieldsSet:"MetafieldsSet",MetafieldDelete:"MetafieldDelete",DeliveryAddressesAdd:"DeliveryAddressesAdd",DeliveryAddressesUpdate:"DeliveryAddressesUpdate",DeliveryAddressesRemove:"DeliveryAddressesRemove",DeliveryAddressesReplace:"DeliveryAddressesReplace"};function ca(e){let t={};for(let s of e.entries()){let i=s[0],c=e.getAll(i);t[i]=c.length>1?c:s[1],t[i]==="on"?t[i]=true:t[i]==="off"&&(t[i]=false);}let{cartFormInput:r,...o}=t,{action:n,inputs:a}=r?JSON.parse(String(r)):{};return {action:n,inputs:{...a,...o}}}re.getFormInput=ca;var Ht=e=>{let t=parse(xt(e,"Cookie")||"");return ()=>t.cart?`gid://shopify/Cart/${t.cart}`:void 0};var qt=e=>t=>{let r=new Headers;return r.append("Set-Cookie",stringify("cart",t.split("/").pop()||"",{path:"/",...e})),r};function ct(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`weak-${Math.random().toString(16).substring(2)}`}var Fe="2026.4.5";function Se(e){return e.replace(/\s*#.*$/gm,"").replace(/\s+/gm," ").trim()}var ya=/(^|}\s)query[\s({]/im,fa=/(^|}\s)mutation[\s({]/im;function ut(e,t){if(!ya.test(e))throw new Error(`[h2:error:${t}] Can only execute queries`)}function dt(e,t){if(!fa.test(e))throw new Error(`[h2:error:${t}] Can only execute mutations`)}var ye=class extends Error{locations;path;extensions;constructor(t,r={}){let n=(r.clientOperation?`[h2:error:${r.clientOperation}] `:"")+t+(r.requestId?` - Request ID: ${r.requestId}`:"");super(n),this.name="GraphQLError",this.extensions=r.extensions,this.locations=r.locations,this.path=r.path,this.stack=r.stack||void 0;try{this.cause=JSON.stringify({...typeof r.cause=="object"?r.cause:{},requestId:r.requestId});}catch{r.cause&&(this.cause=r.cause);}}get[Symbol.toStringTag](){return this.name}toString(){let t=`${this.name}: ${this.message}`;if(this.path)try{t+=` | path: ${JSON.stringify(this.path)}`;}catch{}if(this.extensions)try{t+=` | extensions: ${JSON.stringify(this.extensions)}`;}catch{}return t+=`
|
|
24
|
-
`,this.stack&&(t+=`${this.stack.slice(this.stack.indexOf(`
|
|
25
|
-
`)+1)}
|
|
26
|
-
`),t}toJSON(){return {name:"Error",message:""}}};function He({url:e,response:t,errors:r,type:o,query:n,queryVariables:a,ErrorConstructor:s=Error,client:i="storefront"}){let c=(typeof r=="string"?r:r?.map?.(d=>d.message).join(`
|
|
27
|
-
`))||`URL: ${e}
|
|
28
|
-
API response error: ${t.status}`,u=new ye(c,{query:n,queryVariables:a,cause:{errors:r},clientOperation:`${i}.${o}`,requestId:t.headers.get("x-request-id")});throw new s(u.message,{cause:u.cause})}var ha={language:"EN",country:"US"};function Ao(e){let {storefrontHeaders:t,cache:r,waitUntil:o,i18n:n,storefrontId:a,logErrors:s=true,...i}=e,{getPublicTokenHeaders:u,getPrivateTokenHeaders:d,getStorefrontApiUrl:y,getShopifyDomain:m}=createStorefrontClient(i),p=(i.privateStorefrontToken?d:u)({contentType:"json",buyerIp:t?.buyerIp||""});t?.buyerIp&&(p[je]=t.buyerIp),t?.buyerIpSig&&(p[he]=t.buyerIpSig),p[be]=t?.requestGroupId||ct(),a&&(p[SHOPIFY_STOREFRONT_ID_HEADER]=a),(p["user-agent"]=`Hydrogen ${Fe}`);let l=t?.cookie??"";l&&(p.cookie=l);let S,f;if(!/\b_shopify_(analytics|marketing)=/.test(l)){let g=l.match(/\b_shopify_y=([^;]+)/)?.[1],v=l.match(/\b_shopify_s=([^;]+)/)?.[1];g&&(p[SHOPIFY_STOREFRONT_Y_HEADER]=g),v&&(p[SHOPIFY_STOREFRONT_S_HEADER]=v),S=g??ct(),f=v??ct(),p[SHOPIFY_UNIQUE_TOKEN_HEADER]=S,p[SHOPIFY_VISIT_TOKEN_HEADER]=f;}let R,h=JSON.stringify({"content-type":p["content-type"],"user-agent":p["user-agent"],[Tt]:p[Tt],[St]:p[St],[Pt]:p[Pt],[we]:p[we]});async function T({query:g,mutation:v,variables:P,cache:U,headers:M=[],storefrontApiVersion:j,displayName:ht,stackInfo:At}){let Qe=M instanceof Headers?Object.fromEntries(M.entries()):Array.isArray(M)?Object.fromEntries(M):M,K=g??v,A={...P};n&&(!P?.country&&/\$country/.test(K)&&(A.country=n.country),!P?.language&&/\$language/.test(K)&&(A.language=n.language));let E=y({storefrontApiVersion:j}),L=JSON.stringify({query:K,variables:A}),V={method:"POST",headers:{...p,...Qe},body:L},N=[E,V.method,h,V.body],Z=K.includes("@defer")?{query:K,variables:A}:void 0,[q,$]=await it(E,V,{cacheInstance:v?void 0:r,cache:U||Te(),cacheKey:N,waitUntil:o,shouldCacheResponse:G=>!G?.errors,debugInfo:{requestId:V.headers[be],displayName:ht,url:E,stackInfo:At,graphql:L,purpose:t?.purpose},streamConfig:Z,onRawHeaders:G=>{R??={setCookie:G.getSetCookie(),serverTiming:G.get("server-timing")??""};}}),ae={url:E,response:$,type:v?"mutation":"query",query:K,queryVariables:A,errors:void 0};if(!$.ok){let G,Y=q;try{Y??=await $.text(),G=te(Y);}catch{G=[{message:Y??"Could not parse Storefront API response"}];}He({...ae,errors:G});}let{data:W,errors:k}=q;k=k?Array.isArray(k)?k:[k]:void 0;let me=k?.map(({message:G,...Y})=>new ye(G,{...Y,clientOperation:`storefront.${ae.type}`,requestId:$.headers.get("x-request-id"),queryVariables:A,query:K}));return I(W,me)}return {storefront:{query(g,v){g=Se(g),ut(g,"storefront.query");let P=ho?.(g);return Ae(T({...v,query:g,stackInfo:X?.(P)}),{stackOffset:P,logErrors:s})},mutate(g,v){g=Se(g),dt(g,"storefront.mutate");let P=ho?.(g);return Ae(T({...v,mutation:g,stackInfo:X?.(P)}),{stackOffset:P,logErrors:s})},cache:r,CacheNone:Ut,CacheLong:kt,CacheShort:le,CacheCustom:Vt,generateCacheControlHeader:Ne,getPublicTokenHeaders:u,getPrivateTokenHeaders:d,getHeaders:()=>({...p}),getShopifyDomain:m,getApiUrl:y,i18n:n??ha,isStorefrontApiUrl(g){return Ot.test(rt(g.url??""))},async forward(g,v){let P=new Headers([...Ve(j=>g.headers.get(j),["accept","accept-encoding","accept-language","access-control-request-headers","access-control-request-method","content-type","content-length","cookie","origin","referer","user-agent",we,SHOPIFY_UNIQUE_TOKEN_HEADER,SHOPIFY_VISIT_TOKEN_HEADER]),...Ve(j=>p[j],[je,he,SHOPIFY_STOREFRONT_ID_HEADER,be])]);t?.buyerIp&&P.set("x-forwarded-for",t.buyerIp);let U=v?.storefrontApiVersion??rt(g.url).match(Ot)?.[1],M=await fetch(y({storefrontApiVersion:U}),{method:g.method,body:g.body,headers:P});return new Response(M.body,M)},isMcpUrl(g){return so.test(rt(g.url??""))},async forwardMcp(g){let v=new Headers([...Ve(U=>g.headers.get(U),["accept","accept-encoding","accept-language","content-type","cookie","origin","referer","user-agent"]),...Ve(U=>p[U],[je,he,we,be,SHOPIFY_STOREFRONT_ID_HEADER])]);t?.buyerIp&&v.set("x-forwarded-for",t.buyerIp);let P=`${m()}/api/mcp`;try{let U=await fetch(P,{method:g.method,body:g.body,headers:v});return new Response(U.body,U)}catch(U){let j=U instanceof Error?U.message:"Internal proxy error";return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32603,message:j},id:null}),{status:502,headers:{"content-type":"application/json"}})}},setCollectedSubrequestHeaders:g=>{if(R)for(let M of R.setCookie)g.headers.append("Set-Cookie",M);let v=Ur(R?.serverTiming),P=g.headers.get("content-type")?.startsWith("text/html");De(g,{...P?{_y:S,_s:f}:void 0,...v}),P&&R&&R.setCookie.length>1&&v?._y&&v?._s&&v?._cmp&&De(g,{[Ye]:"1"});}}}}var ho=void 0;function I(e,t){return {...e,...t&&{errors:t}}}function b(e){return e?.visitorConsent!==void 0}function w(e=false){let t=`$country: CountryCode = ZZ
|
|
29
|
-
$language: LanguageCode`;return e?`${t}
|
|
30
|
-
$visitorConsent: VisitorConsent`:t}function D(e=false){return e?"@inContext(country: $country, language: $language, visitorConsent: $visitorConsent)":"@inContext(country: $country, language: $language)"}function Gt({storefront:e,customerAccount:t,getCartId:r,cartFragment:o}){return async n=>{let a=n?.cartId??r();if(!a)return null;let s=b(n),[i,{cart:c,errors:u}]=await Promise.all([t?t.isLoggedIn():false,e.query(Aa(o,{includeVisitorConsent:s}),{variables:{cartId:a,...n},cache:e.CacheNone()})]);if(i&&c&&typeof c=="object"&&"checkoutUrl"in c&&typeof c.checkoutUrl=="string"){let d=new URL(c.checkoutUrl);d.searchParams.set("logged_in","true"),Object.assign(c,{checkoutUrl:d.toString()});}return c||u?I(c,u):null}}var Aa=(e=Ta,t={})=>`#graphql
|
|
31
|
-
query CartQuery(
|
|
32
|
-
$cartId: ID!
|
|
33
|
-
$numCartLines: Int = 100
|
|
34
|
-
${w(t.includeVisitorConsent)}
|
|
35
|
-
) ${D(t.includeVisitorConsent)} {
|
|
36
|
-
cart(id: $cartId) {
|
|
37
|
-
...CartApiQuery
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
${e}
|
|
42
|
-
`,Ta=`#graphql
|
|
43
|
-
fragment CartApiQuery on Cart {
|
|
44
|
-
updatedAt
|
|
45
|
-
id
|
|
46
|
-
checkoutUrl
|
|
47
|
-
totalQuantity
|
|
48
|
-
buyerIdentity {
|
|
49
|
-
countryCode
|
|
50
|
-
customer {
|
|
51
|
-
id
|
|
52
|
-
email
|
|
53
|
-
firstName
|
|
54
|
-
lastName
|
|
55
|
-
displayName
|
|
56
|
-
}
|
|
57
|
-
email
|
|
58
|
-
phone
|
|
59
|
-
}
|
|
60
|
-
lines(first: $numCartLines) {
|
|
61
|
-
edges {
|
|
62
|
-
node {
|
|
63
|
-
id
|
|
64
|
-
quantity
|
|
65
|
-
attributes {
|
|
66
|
-
key
|
|
67
|
-
value
|
|
68
|
-
}
|
|
69
|
-
cost {
|
|
70
|
-
totalAmount {
|
|
71
|
-
amount
|
|
72
|
-
currencyCode
|
|
73
|
-
}
|
|
74
|
-
amountPerQuantity {
|
|
75
|
-
amount
|
|
76
|
-
currencyCode
|
|
77
|
-
}
|
|
78
|
-
compareAtAmountPerQuantity {
|
|
79
|
-
amount
|
|
80
|
-
currencyCode
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
merchandise {
|
|
84
|
-
... on ProductVariant {
|
|
85
|
-
id
|
|
86
|
-
availableForSale
|
|
87
|
-
compareAtPrice {
|
|
88
|
-
...CartApiMoney
|
|
89
|
-
}
|
|
90
|
-
price {
|
|
91
|
-
...CartApiMoney
|
|
92
|
-
}
|
|
93
|
-
requiresShipping
|
|
94
|
-
title
|
|
95
|
-
image {
|
|
96
|
-
...CartApiImage
|
|
97
|
-
}
|
|
98
|
-
product {
|
|
99
|
-
handle
|
|
100
|
-
title
|
|
101
|
-
id
|
|
102
|
-
vendor
|
|
103
|
-
}
|
|
104
|
-
selectedOptions {
|
|
105
|
-
name
|
|
106
|
-
value
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
cost {
|
|
114
|
-
subtotalAmount {
|
|
115
|
-
...CartApiMoney
|
|
116
|
-
}
|
|
117
|
-
totalAmount {
|
|
118
|
-
...CartApiMoney
|
|
119
|
-
}
|
|
120
|
-
totalDutyAmount {
|
|
121
|
-
...CartApiMoney
|
|
122
|
-
}
|
|
123
|
-
totalTaxAmount {
|
|
124
|
-
...CartApiMoney
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
note
|
|
128
|
-
attributes {
|
|
129
|
-
key
|
|
130
|
-
value
|
|
131
|
-
}
|
|
132
|
-
discountCodes {
|
|
133
|
-
applicable
|
|
134
|
-
code
|
|
135
|
-
}
|
|
136
|
-
appliedGiftCards {
|
|
137
|
-
id
|
|
138
|
-
lastCharacters
|
|
139
|
-
amountUsed {
|
|
140
|
-
...CartApiMoney
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
fragment CartApiMoney on MoneyV2 {
|
|
146
|
-
currencyCode
|
|
147
|
-
amount
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
fragment CartApiImage on Image {
|
|
151
|
-
id
|
|
152
|
-
url
|
|
153
|
-
altText
|
|
154
|
-
width
|
|
155
|
-
height
|
|
156
|
-
}
|
|
157
|
-
`;var x=`#graphql
|
|
158
|
-
fragment CartApiError on CartUserError {
|
|
159
|
-
message
|
|
160
|
-
field
|
|
161
|
-
code
|
|
162
|
-
}
|
|
163
|
-
`,O=`#graphql
|
|
164
|
-
fragment CartApiMutation on Cart {
|
|
165
|
-
id
|
|
166
|
-
totalQuantity
|
|
167
|
-
checkoutUrl
|
|
168
|
-
}
|
|
169
|
-
`,_=`#graphql
|
|
170
|
-
fragment CartApiWarning on CartWarning {
|
|
171
|
-
code
|
|
172
|
-
message
|
|
173
|
-
target
|
|
174
|
-
}
|
|
175
|
-
`;function Bt(e){return async(t,r)=>{let o=e.customerAccount?await e.customerAccount.getBuyer():void 0,{cartId:n,...a}=r||{},{buyerIdentity:s,...i}=t,c=b(r),{cartCreate:u,errors:d}=await e.storefront.mutate(Sa(e.cartFragment,{includeVisitorConsent:c}),{variables:{input:{...i,buyerIdentity:{...o,...s}},...a}});return I(u,d)}}var Sa=(e=O,t={})=>`#graphql
|
|
176
|
-
mutation cartCreate(
|
|
177
|
-
$input: CartInput!
|
|
178
|
-
${w(t.includeVisitorConsent)}
|
|
179
|
-
) ${D(t.includeVisitorConsent)} {
|
|
180
|
-
cartCreate(input: $input) {
|
|
181
|
-
cart {
|
|
182
|
-
...CartApiMutation
|
|
183
|
-
checkoutUrl
|
|
184
|
-
}
|
|
185
|
-
userErrors {
|
|
186
|
-
...CartApiError
|
|
187
|
-
}
|
|
188
|
-
warnings {
|
|
189
|
-
...CartApiWarning
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
${e}
|
|
194
|
-
${x}
|
|
195
|
-
${_}
|
|
196
|
-
`;function Qt(e){return async(t,r)=>{let o=b(r),{cartLinesAdd:n,errors:a}=await e.storefront.mutate(Pa(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),lines:t,...r}});return I(n,a)}}var Pa=(e=O,t={})=>`#graphql
|
|
197
|
-
mutation cartLinesAdd(
|
|
198
|
-
$cartId: ID!
|
|
199
|
-
$lines: [CartLineInput!]!
|
|
200
|
-
${w(t.includeVisitorConsent)}
|
|
201
|
-
) ${D(t.includeVisitorConsent)} {
|
|
202
|
-
cartLinesAdd(cartId: $cartId, lines: $lines) {
|
|
203
|
-
cart {
|
|
204
|
-
...CartApiMutation
|
|
205
|
-
}
|
|
206
|
-
userErrors {
|
|
207
|
-
...CartApiError
|
|
208
|
-
}
|
|
209
|
-
warnings {
|
|
210
|
-
...CartApiWarning
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
${e}
|
|
215
|
-
${x}
|
|
216
|
-
${_}
|
|
217
|
-
`;var To="__h_pending_";function So(e){return To+e}function pt(e){return e.startsWith(To)}function lt(e,t){if(t.some(r=>pt(typeof r=="string"?r:r.id)))throw new Error(`Tried to perform an action on an optimistic line. Make sure to disable your "${e}" CartForm action when the line is optimistic.`)}function Wt(e){return async(t,r)=>{lt("updateLines",t);let o=b(r),{cartLinesUpdate:n,errors:a}=await e.storefront.mutate(Ra(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),lines:t,...r}});return I(n,a)}}var Ra=(e=O,t={})=>`#graphql
|
|
218
|
-
mutation cartLinesUpdate(
|
|
219
|
-
$cartId: ID!
|
|
220
|
-
$lines: [CartLineUpdateInput!]!
|
|
221
|
-
${w(t.includeVisitorConsent)}
|
|
222
|
-
) ${D(t.includeVisitorConsent)} {
|
|
223
|
-
cartLinesUpdate(cartId: $cartId, lines: $lines) {
|
|
224
|
-
cart {
|
|
225
|
-
...CartApiMutation
|
|
226
|
-
}
|
|
227
|
-
userErrors {
|
|
228
|
-
...CartApiError
|
|
229
|
-
}
|
|
230
|
-
warnings {
|
|
231
|
-
...CartApiWarning
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
${e}
|
|
236
|
-
${x}
|
|
237
|
-
${_}
|
|
238
|
-
`;function jt(e){return async(t,r)=>{lt("removeLines",t);let o=b(r),{cartLinesRemove:n,errors:a}=await e.storefront.mutate(va(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),lineIds:t,...r}});return I(n,a)}}var va=(e=O,t={})=>`#graphql
|
|
239
|
-
mutation cartLinesRemove(
|
|
240
|
-
$cartId: ID!
|
|
241
|
-
$lineIds: [ID!]!
|
|
242
|
-
${w(t.includeVisitorConsent)}
|
|
243
|
-
) ${D(t.includeVisitorConsent)} {
|
|
244
|
-
cartLinesRemove(cartId: $cartId, lineIds: $lineIds) {
|
|
245
|
-
cart {
|
|
246
|
-
...CartApiMutation
|
|
247
|
-
}
|
|
248
|
-
userErrors {
|
|
249
|
-
...CartApiError
|
|
250
|
-
}
|
|
251
|
-
warnings {
|
|
252
|
-
...CartApiWarning
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
${e}
|
|
257
|
-
${x}
|
|
258
|
-
${_}
|
|
259
|
-
`;function Kt(e){return async(t,r)=>{let o=t.filter((i,c,u)=>u.indexOf(i)===c),n=b(r),{cartDiscountCodesUpdate:a,errors:s}=await e.storefront.mutate(Ia(e.cartFragment,{includeVisitorConsent:n}),{variables:{cartId:e.getCartId(),discountCodes:o,...r}});return I(a,s)}}var Ia=(e=O,t={})=>`#graphql
|
|
260
|
-
mutation cartDiscountCodesUpdate(
|
|
261
|
-
$cartId: ID!
|
|
262
|
-
$discountCodes: [String!]!
|
|
263
|
-
${w(t.includeVisitorConsent)}
|
|
264
|
-
) ${D(t.includeVisitorConsent)} {
|
|
265
|
-
cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
|
|
266
|
-
... @defer {
|
|
267
|
-
cart {
|
|
268
|
-
...CartApiMutation
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
userErrors {
|
|
272
|
-
...CartApiError
|
|
273
|
-
}
|
|
274
|
-
warnings {
|
|
275
|
-
...CartApiWarning
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
${e}
|
|
280
|
-
${x}
|
|
281
|
-
${_}
|
|
282
|
-
`;function Yt(e){return async(t,r)=>{t.companyLocationId&&e.customerAccount&&e.customerAccount.setBuyer({companyLocationId:t.companyLocationId});let o=e.customerAccount?await e.customerAccount.getBuyer():void 0,n=b(r),{cartBuyerIdentityUpdate:a,errors:s}=await e.storefront.mutate(Ea(e.cartFragment,{includeVisitorConsent:n}),{variables:{cartId:e.getCartId(),buyerIdentity:{...o,...t},...r}});return I(a,s)}}var Ea=(e=O,t={})=>`#graphql
|
|
283
|
-
mutation cartBuyerIdentityUpdate(
|
|
284
|
-
$cartId: ID!
|
|
285
|
-
$buyerIdentity: CartBuyerIdentityInput!
|
|
286
|
-
${w(t.includeVisitorConsent)}
|
|
287
|
-
) ${D(t.includeVisitorConsent)} {
|
|
288
|
-
cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {
|
|
289
|
-
cart {
|
|
290
|
-
...CartApiMutation
|
|
291
|
-
}
|
|
292
|
-
userErrors {
|
|
293
|
-
...CartApiError
|
|
294
|
-
}
|
|
295
|
-
warnings {
|
|
296
|
-
...CartApiWarning
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
${e}
|
|
301
|
-
${x}
|
|
302
|
-
${_}
|
|
303
|
-
`;function Jt(e){return async(t,r)=>{let o=b(r),{cartNoteUpdate:n,errors:a}=await e.storefront.mutate(ba(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),note:t,...r}});return I(n,a)}}var ba=(e=O,t={})=>`#graphql
|
|
304
|
-
mutation cartNoteUpdate(
|
|
305
|
-
$cartId: ID!
|
|
306
|
-
$note: String!
|
|
307
|
-
${w(t.includeVisitorConsent)}
|
|
308
|
-
) ${D(t.includeVisitorConsent)} {
|
|
309
|
-
cartNoteUpdate(cartId: $cartId, note: $note) {
|
|
310
|
-
cart {
|
|
311
|
-
...CartApiMutation
|
|
312
|
-
}
|
|
313
|
-
userErrors {
|
|
314
|
-
...CartApiError
|
|
315
|
-
}
|
|
316
|
-
warnings {
|
|
317
|
-
...CartApiWarning
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
${e}
|
|
322
|
-
${x}
|
|
323
|
-
${_}
|
|
324
|
-
`;function zt(e){return async(t,r)=>{let o=b(r),{cartSelectedDeliveryOptionsUpdate:n,errors:a}=await e.storefront.mutate(wa(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),selectedDeliveryOptions:t,...r}});return I(n,a)}}var wa=(e=O,t={})=>`#graphql
|
|
325
|
-
mutation cartSelectedDeliveryOptionsUpdate(
|
|
326
|
-
$cartId: ID!
|
|
327
|
-
$selectedDeliveryOptions: [CartSelectedDeliveryOptionInput!]!
|
|
328
|
-
${w(t.includeVisitorConsent)}
|
|
329
|
-
) ${D(t.includeVisitorConsent)} {
|
|
330
|
-
cartSelectedDeliveryOptionsUpdate(cartId: $cartId, selectedDeliveryOptions: $selectedDeliveryOptions) {
|
|
331
|
-
cart {
|
|
332
|
-
...CartApiMutation
|
|
333
|
-
}
|
|
334
|
-
userErrors {
|
|
335
|
-
...CartApiError
|
|
336
|
-
}
|
|
337
|
-
warnings {
|
|
338
|
-
...CartApiWarning
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
${e}
|
|
343
|
-
${x}
|
|
344
|
-
${_}
|
|
345
|
-
`;function Xt(e){return async(t,r)=>{let o=b(r),{cartAttributesUpdate:n,errors:a}=await e.storefront.mutate(Da(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:r?.cartId||e.getCartId(),attributes:t,...r}});return I(n,a)}}var Da=(e=O,t={})=>`#graphql
|
|
346
|
-
mutation cartAttributesUpdate(
|
|
347
|
-
$cartId: ID!
|
|
348
|
-
$attributes: [AttributeInput!]!
|
|
349
|
-
${w(t.includeVisitorConsent)}
|
|
350
|
-
) ${D(t.includeVisitorConsent)} {
|
|
351
|
-
cartAttributesUpdate(cartId: $cartId, attributes: $attributes) {
|
|
352
|
-
cart {
|
|
353
|
-
...CartApiMutation
|
|
354
|
-
}
|
|
355
|
-
userErrors {
|
|
356
|
-
...CartApiError
|
|
357
|
-
}
|
|
358
|
-
warnings {
|
|
359
|
-
...CartApiWarning
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
${e}
|
|
364
|
-
${x}
|
|
365
|
-
${_}
|
|
366
|
-
`;function Zt(e){return async(t,r)=>{let o=r?.cartId||e.getCartId(),n=t.map(c=>({...c,ownerId:o})),a=b(r),{cartMetafieldsSet:s,errors:i}=await e.storefront.mutate(xa({includeVisitorConsent:a}),{variables:{metafields:n,...r}});return I({cart:{id:o},...s},i)}}var xa=(e={})=>`#graphql
|
|
367
|
-
mutation cartMetafieldsSet(
|
|
368
|
-
$metafields: [CartMetafieldsSetInput!]!
|
|
369
|
-
${w(e.includeVisitorConsent)}
|
|
370
|
-
) ${D(e.includeVisitorConsent)} {
|
|
371
|
-
cartMetafieldsSet(metafields: $metafields) {
|
|
372
|
-
userErrors {
|
|
373
|
-
code
|
|
374
|
-
elementIndex
|
|
375
|
-
field
|
|
376
|
-
message
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
`;function er(e){return async(t,r)=>{let o=r?.cartId||e.getCartId(),n=b(r),{cartMetafieldDelete:a,errors:s}=await e.storefront.mutate(Oa({includeVisitorConsent:n}),{variables:{input:{ownerId:o,key:t},...r}});return I({cart:{id:o},...a},s)}}var Oa=(e={})=>`#graphql
|
|
381
|
-
mutation cartMetafieldDelete(
|
|
382
|
-
$input: CartMetafieldDeleteInput!
|
|
383
|
-
${w(e.includeVisitorConsent)}
|
|
384
|
-
) ${D(e.includeVisitorConsent)} {
|
|
385
|
-
cartMetafieldDelete(input: $input) {
|
|
386
|
-
userErrors {
|
|
387
|
-
code
|
|
388
|
-
field
|
|
389
|
-
message
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
`;function tr(e){return async(t,r)=>{let o=b(r),{cartGiftCardCodesUpdate:n,errors:a}=await e.storefront.mutate(_a(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),giftCardCodes:t,...r}});return I(n,a)}}var _a=(e=O,t={})=>`#graphql
|
|
394
|
-
mutation cartGiftCardCodesUpdate(
|
|
395
|
-
$cartId: ID!
|
|
396
|
-
$giftCardCodes: [String!]!
|
|
397
|
-
${w(t.includeVisitorConsent)}
|
|
398
|
-
) ${D(t.includeVisitorConsent)} {
|
|
399
|
-
cartGiftCardCodesUpdate(cartId: $cartId, giftCardCodes: $giftCardCodes) {
|
|
400
|
-
cart {
|
|
401
|
-
...CartApiMutation
|
|
402
|
-
}
|
|
403
|
-
userErrors {
|
|
404
|
-
...CartApiError
|
|
405
|
-
}
|
|
406
|
-
warnings {
|
|
407
|
-
...CartApiWarning
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
${e}
|
|
412
|
-
${x}
|
|
413
|
-
${_}
|
|
414
|
-
`;function rr(e){return async(t,r)=>{let{cartGiftCardCodesAdd:o,errors:n}=await e.storefront.mutate(Ua(e.cartFragment),{variables:{cartId:e.getCartId(),giftCardCodes:t,...r}});return I(o,n)}}var Ua=(e=O)=>`#graphql
|
|
415
|
-
mutation cartGiftCardCodesAdd(
|
|
416
|
-
$cartId: ID!
|
|
417
|
-
$giftCardCodes: [String!]!
|
|
418
|
-
$language: LanguageCode
|
|
419
|
-
$country: CountryCode
|
|
420
|
-
) @inContext(country: $country, language: $language) {
|
|
421
|
-
cartGiftCardCodesAdd(cartId: $cartId, giftCardCodes: $giftCardCodes) {
|
|
422
|
-
cart {
|
|
423
|
-
...CartApiMutation
|
|
424
|
-
}
|
|
425
|
-
userErrors {
|
|
426
|
-
...CartApiError
|
|
427
|
-
}
|
|
428
|
-
warnings {
|
|
429
|
-
...CartApiWarning
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
${e}
|
|
434
|
-
${x}
|
|
435
|
-
${_}
|
|
436
|
-
`;function or(e){return async(t,r)=>{let o=b(r),{cartGiftCardCodesRemove:n,errors:a}=await e.storefront.mutate(La(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),appliedGiftCardIds:t,...r}});return I(n,a)}}var La=(e=O,t={})=>`#graphql
|
|
437
|
-
mutation cartGiftCardCodesRemove(
|
|
438
|
-
$cartId: ID!
|
|
439
|
-
$appliedGiftCardIds: [ID!]!
|
|
440
|
-
${w(t.includeVisitorConsent)}
|
|
441
|
-
) ${D(t.includeVisitorConsent)} {
|
|
442
|
-
cartGiftCardCodesRemove(cartId: $cartId, appliedGiftCardIds: $appliedGiftCardIds) {
|
|
443
|
-
cart {
|
|
444
|
-
...CartApiMutation
|
|
445
|
-
}
|
|
446
|
-
userErrors {
|
|
447
|
-
...CartApiError
|
|
448
|
-
}
|
|
449
|
-
warnings {
|
|
450
|
-
...CartApiWarning
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
${e}
|
|
455
|
-
${x}
|
|
456
|
-
${_}
|
|
457
|
-
`;function Po(e){return async(t,r)=>{let o=b(r),{cartDeliveryAddressesAdd:n,errors:a}=await e.storefront.mutate(ka(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),addresses:t,...r}});return I(n,a)}}var ka=(e=O,t={})=>`#graphql
|
|
458
|
-
mutation cartDeliveryAddressesAdd(
|
|
459
|
-
$cartId: ID!
|
|
460
|
-
$addresses: [CartSelectableAddressInput!]!,
|
|
461
|
-
${w(t.includeVisitorConsent)}
|
|
462
|
-
) ${D(t.includeVisitorConsent)} {
|
|
463
|
-
cartDeliveryAddressesAdd(addresses: $addresses, cartId: $cartId) {
|
|
464
|
-
cart {
|
|
465
|
-
...CartApiMutation
|
|
466
|
-
}
|
|
467
|
-
userErrors {
|
|
468
|
-
...CartApiError
|
|
469
|
-
}
|
|
470
|
-
warnings {
|
|
471
|
-
...CartApiWarning
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
${e}
|
|
476
|
-
${x}
|
|
477
|
-
${_}
|
|
478
|
-
`;function Ro(e){return async(t,r)=>{let o=b(r),{cartDeliveryAddressesRemove:n,errors:a}=await e.storefront.mutate(Va(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),addressIds:t,...r}});return I(n,a)}}var Va=(e=O,t={})=>`#graphql
|
|
479
|
-
mutation cartDeliveryAddressesRemove(
|
|
480
|
-
$cartId: ID!
|
|
481
|
-
$addressIds: [ID!]!,
|
|
482
|
-
${w(t.includeVisitorConsent)}
|
|
483
|
-
) ${D(t.includeVisitorConsent)} {
|
|
484
|
-
cartDeliveryAddressesRemove(addressIds: $addressIds, cartId: $cartId) {
|
|
485
|
-
cart {
|
|
486
|
-
...CartApiMutation
|
|
487
|
-
}
|
|
488
|
-
userErrors {
|
|
489
|
-
...CartApiError
|
|
490
|
-
}
|
|
491
|
-
warnings {
|
|
492
|
-
...CartApiWarning
|
|
493
|
-
}
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
${e}
|
|
497
|
-
${x}
|
|
498
|
-
${_}
|
|
499
|
-
`;function vo(e){return async(t,r)=>{let o=b(r),{cartDeliveryAddressesUpdate:n,errors:a}=await e.storefront.mutate(Na(e.cartFragment,{includeVisitorConsent:o}),{variables:{cartId:e.getCartId(),addresses:t,...r}});return I(n,a)}}var Na=(e=O,t={})=>`#graphql
|
|
500
|
-
mutation cartDeliveryAddressesUpdate(
|
|
501
|
-
$cartId: ID!
|
|
502
|
-
$addresses: [CartSelectableAddressUpdateInput!]!,
|
|
503
|
-
${w(t.includeVisitorConsent)}
|
|
504
|
-
) ${D(t.includeVisitorConsent)} {
|
|
505
|
-
cartDeliveryAddressesUpdate(addresses: $addresses, cartId: $cartId) {
|
|
506
|
-
cart {
|
|
507
|
-
...CartApiMutation
|
|
508
|
-
}
|
|
509
|
-
userErrors {
|
|
510
|
-
...CartApiError
|
|
511
|
-
}
|
|
512
|
-
warnings {
|
|
513
|
-
...CartApiWarning
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
${e}
|
|
518
|
-
${x}
|
|
519
|
-
${_}
|
|
520
|
-
`;function Io(e){return async(t,r)=>{let{cartDeliveryAddressesReplace:o,errors:n}=await e.storefront.mutate(Ma(e.cartFragment),{variables:{cartId:e.getCartId(),addresses:t,...r}});return I(o,n)}}var Ma=(e=O)=>`#graphql
|
|
521
|
-
mutation cartDeliveryAddressesReplace(
|
|
522
|
-
$cartId: ID!
|
|
523
|
-
$addresses: [CartSelectableAddressInput!]!,
|
|
524
|
-
$country: CountryCode = ZZ
|
|
525
|
-
$language: LanguageCode
|
|
526
|
-
) @inContext(country: $country, language: $language) {
|
|
527
|
-
cartDeliveryAddressesReplace(addresses: $addresses, cartId: $cartId) {
|
|
528
|
-
cart {
|
|
529
|
-
...CartApiMutation
|
|
530
|
-
}
|
|
531
|
-
userErrors {
|
|
532
|
-
...CartApiError
|
|
533
|
-
}
|
|
534
|
-
warnings {
|
|
535
|
-
...CartApiWarning
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
${e}
|
|
540
|
-
${x}
|
|
541
|
-
${_}
|
|
542
|
-
`;function nr(e){let{getCartId:t,setCartId:r,storefront:o,customerAccount:n,cartQueryFragment:a,cartMutateFragment:s,buyerIdentity:i}=e,c=t(),u=()=>c||t(),d={storefront:o,getCartId:u,cartFragment:s,customerAccount:n},y=Bt(d),m=async function(...p){p[0].buyerIdentity={...i,...p[0].buyerIdentity};let l=await y(...p);if(l?.cart&&(typeof l.cart!="object"||!("id"in l.cart)||typeof l.cart.id!="string"))throw new Error("[h2:error:createCartHandler] Cart created but response is missing a valid `id` field. Ensure your cart query fragment includes the `id` field.");return c=l?.cart&&typeof l.cart=="object"&&"id"in l.cart&&typeof l.cart.id=="string"?l.cart.id:void 0,l},C={get:Gt({storefront:o,customerAccount:n,getCartId:u,cartFragment:a}),getCartId:u,setCartId:r,create:m,addLines:async(p,l)=>{let S=p.map(f=>({attributes:f.attributes,quantity:f.quantity,merchandiseId:f.merchandiseId,sellingPlanId:f.sellingPlanId,parent:f.parent}));return c||l?.cartId?await Qt(d)(S,l):await m({lines:S,buyerIdentity:i},l)},updateLines:Wt(d),removeLines:jt(d),updateDiscountCodes:async(p,l)=>c||l?.cartId?await Kt(d)(p,l):await m({discountCodes:p},l),updateGiftCardCodes:async(p,l)=>c||l?.cartId?await tr(d)(p,l):await m({giftCardCodes:p},l),addGiftCardCodes:rr(d),removeGiftCardCodes:or(d),updateBuyerIdentity:async(p,l)=>c||l?.cartId?await Yt(d)(p,l):await m({buyerIdentity:p},l),updateNote:async(p,l)=>c||l?.cartId?await Jt(d)(p,l):await m({note:p},l),updateSelectedDeliveryOption:zt(d),updateAttributes:async(p,l)=>c||l?.cartId?await Xt(d)(p,l):await m({attributes:p},l),setMetafields:async(p,l)=>c||l?.cartId?await Zt(d)(p,l):await m({metafields:p},l),deleteMetafield:er(d),addDeliveryAddresses:Po(d),removeDeliveryAddresses:Ro(d),updateDeliveryAddresses:vo(d),replaceDeliveryAddresses:Io(d)};return "customMethods"in e?{...C,...e.customMethods??{}}:C}function Ha(e){let t=useFetchers();if(!t||!t.length)return e;let r=e?.lines?structuredClone(e):{lines:{nodes:[]}},o=r.lines.nodes,n=false;for(let{formData:a}of t){if(!a)continue;let s=re.getFormInput(a);if(s.action===re.ACTIONS.LinesAdd)for(let i of s.inputs.lines){if(!i.selectedVariant){console.error("[h2:error:useOptimisticCart] No selected variant was passed in the cart action. Make sure to pass the selected variant if you want to use an optimistic cart");continue}let c=o.find(u=>u.merchandise.id===i.selectedVariant?.id);n=true,c?(c.quantity=(c.quantity||1)+(i.quantity||1),c.isOptimistic=true):o.unshift({id:So(i.selectedVariant.id),merchandise:i.selectedVariant,isOptimistic:true,quantity:i.quantity||1});}else if(s.action===re.ACTIONS.LinesRemove)for(let i of s.inputs.lineIds){let c=o.findIndex(u=>u.id===i);if(c!==-1){if(pt(o[c].id)){console.error("[h2:error:useOptimisticCart] Tried to remove an optimistic line that has not been added to the cart yet");continue}o.splice(c,1),n=true;}else console.warn(`[h2:warn:useOptimisticCart] Tried to remove line '${i}' but it doesn't exist in the cart`);}else if(s.action===re.ACTIONS.LinesUpdate)for(let i of s.inputs.lines){let c=o.findIndex(u=>i.id===u.id);if(c>-1){if(pt(o[c].id)){console.error("[h2:error:useOptimisticCart] Tried to update an optimistic line that has not been added to the cart yet");continue}o[c].quantity=i.quantity,o[c].quantity===0&&o.splice(c,1),n=true;}else console.warn(`[h2:warn:useOptimisticCart] Tried to update line '${i.id}' but it doesn't exist in the cart`);}}return n&&(r.isOptimistic=n),r.totalQuantity=o.reduce((a,s)=>a+s.quantity,0),r}var qa="https://raw.githubusercontent.com/Shopify/hydrogen/main/docs/changelog.json";async function $a({request:e,changelogUrl:t}){new URL(e.url).searchParams;return fetch(t||qa)}var qe=createContext$1(),ar=createContext$1(),sr=createContext$1(),ir=createContext$1(),cr=createContext$1(),ur=createContext$1(),Ga={storefront:qe,cart:ar,customerAccount:sr,env:ir,session:cr,waitUntil:ur};var yt="2026-04",Re=`Shopify Hydrogen ${Fe}`,Eo="30243aa5-17c1-465a-8493-944bcc4e88aa",F="customerAccount",ve="buyer";var Q=class extends Response{constructor(t,r,o){super(`Bad request: ${t}`,{status:400,headers:o});}};function Ee(e,t={}){let r=t.headers?new Headers(t.headers):new Headers({});return r.set("location",e),new Response(null,{status:t.status||302,headers:r})}async function Ba({session:e,customerAccountId:t,customerAccountTokenExchangeUrl:r,httpsOrigin:o,debugInfo:n}){let a=new URLSearchParams,s=e.get(F),i=s?.refreshToken,c=s?.idToken;if(!i)throw Ie(e),new Q("Unauthorized","No refreshToken found in the session. Make sure your session is configured correctly and passed to `createCustomerAccountClient`.");a.append("grant_type","refresh_token"),a.append("refresh_token",i),a.append("client_id",t);let u={"content-type":"application/x-www-form-urlencoded","User-Agent":Re,Origin:o};new Date().getTime();let y=r,m=await fetch(y,{method:"POST",headers:u,body:a});if(!m.ok){let f=await m.text();throw Qa(f)==="invalid_grant"&&Ie(e),new Response(f,{status:m.status,headers:{"Content-Type":"text/html; charset=utf-8"}})}let{access_token:C,expires_in:p,refresh_token:l,error:S}=await m.json();if(!C||C.length===0)throw S==="invalid_grant"&&Ie(e),new Q("Unauthorized","Invalid access token received.");e.set(F,{accessToken:C,expiresAt:new Date(new Date().getTime()+(p-120)*1e3).getTime()+"",refreshToken:l,idToken:c});}function Ie(e){e.unset(F),e.unset(ve);}async function bo({locks:e,expiresAt:t,session:r,customerAccountId:o,customerAccountTokenExchangeUrl:n,httpsOrigin:a,debugInfo:s}){if(parseInt(t,10)-1e3<new Date().getTime())try{e.refresh||(e.refresh=Ba({session:r,customerAccountId:o,customerAccountTokenExchangeUrl:n,httpsOrigin:a,debugInfo:s})),await e.refresh,delete e.refresh;}catch(i){throw i&&i.status!==401?i:new Q("Unauthorized","Login before querying the Customer Account API.")}}function Qa(e){try{let t=JSON.parse(e);return typeof t?.error=="string"?t.error:void 0}catch{return}}function wo(){let e=xo();return dr(e)}async function Do(e){let t=await crypto.subtle.digest({name:"SHA-256"},new TextEncoder().encode(e)),r=Wa(t);return dr(r)}function xo(){let e=new Uint8Array(32);return crypto.getRandomValues(e),String.fromCharCode.apply(null,Array.from(e))}function dr(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function Wa(e){let t=new Uint8Array(e),r=Array.from(t);return String.fromCharCode(...r)}function Oo(){return dr(xo())}async function _o(e,t,r,o,n){let a=t;if(!e)throw new Q("Unauthorized","oAuth access token was not provided during token exchange.");let s=new URLSearchParams;s.append("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),s.append("client_id",a),s.append("audience",Eo),s.append("subject_token",e),s.append("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),s.append("scopes","https://api.customers.com/auth/customer.graphql");let i={"content-type":"application/x-www-form-urlencoded","User-Agent":Re,Origin:o};new Date().getTime();let u=r,d=await fetch(u,{method:"POST",headers:i,body:s});let y=await d.json();if(y.error)throw new Q(y.error_description);return y.access_token}function Uo(e){return ja(e).payload.nonce}function ja(e){let[t,r,o]=e.split("."),n=JSON.parse(atob(t)),a=JSON.parse(atob(r));return {header:n,payload:a,signature:o}}function ft(){return Ya(Ka())}function Ka(){try{return crypto.getRandomValues(new Uint8Array(16))}catch{return new Uint8Array(16).map(()=>Math.random()*255|0)}}function Ya(e){return Array.from(e,function(t){return ("0"+(t&255).toString(16)).slice(-2)}).join("")}function mt(e){if(!e)return;let{pathname:t,search:r}=new URL(e),o=t+r,n=new URLSearchParams(r),a=n.get("return_to")||n.get("redirect");if(a){if(ko(e,a))return a;console.warn(`Cross-domain redirects are not supported. Tried to redirect from ${o} to ${a}`);}}function ko(e,t){try{return new URL(e).origin===new URL(t,e).origin}catch{return false}}function pr({requestUrl:e,defaultUrl:t,redirectUrl:r}){let o=e,n=Lo(e,t),a=r?Lo(e,r):n;return ko(e,a.toString())?a.toString():(console.warn(`Cross-domain redirects are not supported. Tried to redirect from ${o} to ${a}. Default url ${n} is used instead.`),n.toString())}function Lo(e,t){return Ja(t)?new URL(t):new URL(t,new URL(e).origin)}function Ja(e){try{return new URL(e),!0}catch{return false}}function Vo(e,t){let r=`https://shopify.com/${t}`,o=`https://shopify.com/authentication/${t}`;return function(a){switch(a){case "CA_BASE_URL":return r;case "CA_BASE_AUTH_URL":return o;case "GRAPHQL":return `${r}/account/customer/api/${e}/graphql`;case "AUTH":return `${o}/oauth/authorize`;case "LOGIN_SCOPE":return t?"openid email customer-account-api:full":"openid email https://api.customers.com/auth/customer.graphql";case "TOKEN_EXCHANGE":return `${o}/oauth/token`;case "LOGOUT":return `${o}/logout`}}}var No="oauth_recovery",Mo="oauth-recovery.";function za(e,t){if(!e.url)return t;let{pathname:r}=new URL(e.url),o=r.replace(/\.data$/,"").replace(/\/_root$/,"/").replace(/(.+)\/$/,"$1"),n=t+`?${new URLSearchParams({return_to:o}).toString()}`;return Ee(n)}function yr({session:e,customerAccountId:t,shopId:r,customerApiVersion:o=yt,request:n,waitUntil:a,authUrl:s,customAuthStatusHandler:i,logErrors:c=true,loginPath:u="/account/login",authorizePath:d="/account/authorize",defaultRedirectPath:y="/account",language:m,useCustomAuthDomain:C}){if(o!==yt&&console.warn(`[h2:warn:createCustomerAccountClient] You are using Customer Account API version ${o} when this version of Hydrogen was built for ${yt}.`),e||console.warn("[h2:warn:createCustomerAccountClient] session is required to use Customer Account API. Ensure the session object passed in exist."),!n?.url)throw new Error("[h2:error:createCustomerAccountClient] The request object does not contain a URL.");let p=new URL(n.url),l=p.protocol==="http:"?p.origin.replace("http","https"):p.origin,S=pr({requestUrl:l,defaultUrl:d,redirectUrl:s}),f=A=>void 0,R=i||(()=>(f(p.hostname),za(n,u))),h=Vo(o,r),T=Xa(h,t),g=h("GRAPHQL"),v={};async function P({query:A,type:E,variables:L={}}){let V=await j();if(!V)throw R();new Date().getTime();let q=await fetch(g,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":Re,Origin:l,Authorization:V},body:JSON.stringify({query:A,variables:L})});let $=await q.text(),ae={url:g,response:q,type:E,query:A,queryVariables:L,errors:void 0,client:"customer"};if(!q.ok){if(q.status===401)throw Ie(e),R();let W;try{W=te($);}catch{W=[{message:$}];}He({...ae,errors:W});}try{let W=te($),{errors:k}=W,me=k?.map(({message:G,...Y})=>new ye(G,{...Y,clientOperation:`customerAccount.${ae.type}`,requestId:q.headers.get("x-request-id"),queryVariables:L,query:A}));return {...W,...k&&{errors:me}}}catch{He({...ae,errors:[{message:$}]});}}async function U(){if(!r)return false;let A=e.get(F),E=A?.accessToken,L=A?.expiresAt;if(!E||!L)return false;let V=X?.();try{await bo({locks:v,expiresAt:L,session:e,customerAccountId:t,customerAccountTokenExchangeUrl:h("TOKEN_EXCHANGE"),httpsOrigin:l,debugInfo:{waitUntil:a,stackInfo:V,...ce(n)}});}catch{return false}return true}async function M(){if(!await U())throw R()}async function j(){if(await U())return e.get(F)?.accessToken}async function ht(A,E){return f(p.hostname),T(),A=Se(A),dt(A,"customer.mutate"),Ae(P({query:A,type:"mutation",...E}),{logErrors:c})}async function At(A,E){return f(p.hostname),T(),A=Se(A),ut(A,"customer.query"),Ae(P({query:A,type:"query",...E}),{logErrors:c})}function Qe(A){e.set(ve,{...e.get(ve),...A});}async function K(){let A=await j();if(A)return {...e.get(ve),customerAccessToken:A}}return {i18n:{language:m??"EN"},login:async A=>{f(p.hostname),T();let E=new URL(h("AUTH")),V=`${p.searchParams.get(No)==="true"?Mo:""}${Oo()}`,N=ft();E.searchParams.set("client_id",t),E.searchParams.set("scope","openid email"),E.searchParams.append("response_type","code"),E.searchParams.append("redirect_uri",S),E.searchParams.set("scope",h("LOGIN_SCOPE")),E.searchParams.append("state",V),E.searchParams.append("nonce",N);let Z=Za({contextLanguage:m??null,localeOverride:A?.locale??null,uiLocalesOverride:A?.uiLocales??null});Z!=null&&E.searchParams.append("locale",Z),A?.countryCode&&E.searchParams.append("region_country",A.countryCode),A?.acrValues&&E.searchParams.append("acr_values",A.acrValues),A?.loginHint&&(E.searchParams.append("login_hint",A.loginHint),A?.loginHintMode&&E.searchParams.append("login_hint_mode",A.loginHintMode));let q=wo(),$=await Do(q);return e.set(F,{...e.get(F),codeVerifier:q,state:V,nonce:N,redirectPath:mt(n.url)||z(n,"Referer")||y}),E.searchParams.append("code_challenge",$),E.searchParams.append("code_challenge_method","S256"),Ee(E.toString())},logout:async A=>{f(p.hostname),T();let E=e.get(F)?.idToken,L=pr({requestUrl:l,defaultUrl:l,redirectUrl:A?.postLogoutRedirectUri}),V=E?new URL(`${h("LOGOUT")}?${new URLSearchParams([["id_token_hint",E],["post_logout_redirect_uri",L]]).toString()}`).toString():L;Ie(e);let N=A?.headers instanceof Headers?A?.headers:new Headers(A?.headers);return A?.keepSession||(e.destroy?N.set("Set-Cookie",await e.destroy()):console.warn("[h2:warn:customerAccount] session.destroy is not available on your session implementation. All session data might not be cleared on logout."),e.isPending=false),Ee(V,{headers:N})},isLoggedIn:U,handleAuthStatus:M,getAccessToken:j,getApiUrl:()=>g,mutate:ht,query:At,authorize:async()=>{f(p.hostname),T();let A=p.searchParams.get("code"),E=p.searchParams.get("state");if(!A||!E)throw new Q("Unauthorized","No code or state parameter found in the redirect URL.");let L=e.get(F);if(L?.state!==E){if(E.startsWith(Mo))throw new Q("Unable to complete sign in. Please try again.","The session state does not match the state parameter. Make sure that the session is configured correctly and passed to `createCustomerAccountClient`.");J("[h2:warn:customerAccount] OAuth callback state mismatch. Restarting customer login once.");let We=new URL(u,n.url);return We.searchParams.set("return_to",L?.redirectPath??y),We.searchParams.set(No,"true"),Ee(`${We.pathname}${We.search}`)}let V=t,N=new URLSearchParams;N.append("grant_type","authorization_code"),N.append("client_id",V),N.append("redirect_uri",S),N.append("code",A);let Z=e.get(F)?.codeVerifier;if(!Z)throw new Q("Unauthorized","No code verifier found in the session. Make sure that the session is configured correctly and passed to `createCustomerAccountClient`.");N.append("code_verifier",Z);let q={"content-type":"application/x-www-form-urlencoded","User-Agent":Re,Origin:l};new Date().getTime();let W=h("TOKEN_EXCHANGE"),k=await fetch(W,{method:"POST",headers:q,body:N});if(!k.ok)throw new Response(await k.text(),{status:k.status,headers:{"Content-Type":"text/html; charset=utf-8"}});let{access_token:me,expires_in:G,id_token:Y,refresh_token:Rr}=await k.json(),vr=e.get(F)?.nonce,Ir=await Uo(Y);if(vr!==Ir)throw new Q("Unauthorized",`Returned nonce does not match: ${vr} !== ${Ir}`);let Er=me;r||(Er=await _o(me,t,h("TOKEN_EXCHANGE"),l,{...ce(n)}));let nn=e.get(F)?.redirectPath;return e.set(F,{accessToken:Er,expiresAt:new Date(new Date().getTime()+(G-120)*1e3).getTime()+"",refreshToken:Rr,idToken:Y}),Ee(nn||y)},setBuyer:Qe,getBuyer:K,UNSTABLE_setBuyer:A=>{J("[h2:warn:customerAccount] `customerAccount.UNSTABLE_setBuyer` is deprecated. Please use `customerAccount.setBuyer`."),Qe(A);},UNSTABLE_getBuyer:()=>(J("[h2:warn:customerAccount] `customerAccount.UNSTABLE_getBuyer` is deprecated. Please use `customerAccount.getBuyer`."),K())}}function Xa(e,t){return function(){try{if(!t)throw Error();new URL(e("CA_BASE_URL")),new URL(e("CA_BASE_AUTH_URL"));}catch{console.error(new Error("[h2:error:customerAccount] You do not have the valid credential to use Customer Account API.\nRun `h2 env pull` to link your store credentials."));let o="Internal Server Error";throw new Response(o,{status:500})}}}function Za(e){return e.localeOverride!=null?lr(e.localeOverride):e.uiLocalesOverride!=null?lr(e.uiLocalesOverride):e.contextLanguage!=null?lr(e.contextLanguage):null}function lr(e){let r=e.toLowerCase().replaceAll("_","-").split("-"),o=r[0],n=r[1];return n?`${o}-${n.toUpperCase()}`:o}function ts(e,t){let{env:r,request:o,cache:n,waitUntil:a,i18n:s,session:i,logErrors:c,storefront:u={},customerAccount:d,cart:y={},buyerIdentity:m}=e;i||console.warn("[h2:warn:createHydrogenContext] A session object is required to create hydrogen context."),d?.unstableB2b&&J("[h2:warn:createHydrogenContext] `customerAccount.unstableB2b` is now stable. Please remove the `unstableB2b` option.");let{storefront:C}=Ao({cache:n,waitUntil:a,i18n:s,logErrors:c,storefrontHeaders:u.headers||ao(o),storefrontApiVersion:u.apiVersion,storefrontId:r.PUBLIC_STOREFRONT_ID,storeDomain:r.PUBLIC_STORE_DOMAIN,privateStorefrontToken:r.PRIVATE_STOREFRONT_API_TOKEN,publicStorefrontToken:r.PUBLIC_STOREFRONT_API_TOKEN}),p=yr({session:i,request:o,waitUntil:a,logErrors:c,customerApiVersion:d?.apiVersion,authUrl:d?.authUrl,customAuthStatusHandler:d?.customAuthStatusHandler,useCustomAuthDomain:d?.useCustomAuthDomain,language:s?.language,customerAccountId:r.PUBLIC_CUSTOMER_ACCOUNT_API_CLIENT_ID,shopId:r.SHOP_ID}),l=nr({getCartId:y.getId||Ht(o.headers),setCartId:y.setId||qt(),cartQueryFragment:y.queryFragment,cartMutateFragment:y.mutateFragment,...y.customMethods&&{customMethods:y.customMethods},buyerIdentity:m,storefront:C,customerAccount:p}),S=new RouterContextProvider;S.set(qe,C),S.set(ar,l),S.set(sr,p),S.set(ir,r),S.set(cr,i),a&&S.set(ur,a);let f={storefront:C,cart:l,customerAccount:p,env:r,session:i,waitUntil:a,...t||{}};return new Proxy(S,{get(h,T,g){if(T in h){let v=h[T];return typeof v=="function"?v.bind(h):v}return T in f?f[T]:Reflect.get(h,T,g)},has(h,T){return T in h||T in f},ownKeys(h){return [...Reflect.ownKeys(h),...Object.keys(f)]},getOwnPropertyDescriptor(h,T){if(T in h)return Reflect.getOwnPropertyDescriptor(h,T);if(T in f)return {enumerable:true,configurable:true,writable:false,value:f[T]}}})}function os({build:e,mode:t,poweredByHeader:r=true,getLoadContext:o,collectTrackingInformation:n=true}){let a=createRequestHandler(e,t),s=r?i=>i.headers.append("powered-by","Shopify, Hydrogen"):void 0;return async i=>{let c=i.method;if((c==="GET"||c==="HEAD")&&i.body)return new Response(`${c} requests cannot have a body`,{status:400});let u=new URL(i.url);if(u.pathname.includes("//"))return new Response(null,{status:301,headers:{location:u.pathname.replace(/\/+/g,"/")}});let d=await o?.(i),y=d?.storefront||d?.get?.(qe);if(!y)throw new Error("[h2:createRequestHandler] Storefront instance is required in the load context. Make sure to use createHydrogenContext() or provide a storefront instance via getLoadContext.");if(y.isStorefrontApiUrl(i)){let p=await y.forward(i);return s?.(p),p}if(y.isMcpUrl(i)){let p=await y.forwardMcp(i);return s?.(p),p}let m=await a(i,d);n&&y.setCollectedSubrequestHeaders(m);let C=i.headers.get("sec-fetch-dest");return (C&&C==="document"||i.headers.get("accept")?.includes("text/html"))&&De(m,{[Ke]:"1"}),s?.(m),m}}var Fo=createContext(void 0),Ho=Fo.Provider,fr=()=>useContext(Fo);function cs(e){let t=ft(),r=us(t,e);return {nonce:t,header:r,NonceProvider:({children:n})=>createElement(Ho,{value:t},n)}}function us(e,t){let{shop:r,...o}=t??{},n=`'nonce-${e}'`,a=["'self'","'unsafe-inline'","https://cdn.shopify.com"],s=["'self'","https://cdn.shopify.com/","https://monorail-edge.shopifysvc.com"];r&&r.checkoutDomain&&s.push(`https://${r.checkoutDomain}`),r&&r.storeDomain&&s.push(`https://${r.storeDomain}`);let c={baseUri:["'self'"],defaultSrc:["'self'",n,"https://cdn.shopify.com","https://shopify.com"],frameAncestors:["'none'"],styleSrc:a,connectSrc:s},u=Object.assign({},c,o);for(let d in c){let y=o[d];d&&y&&(u[d]=ds(y,c[d]));}return u.scriptSrc instanceof Array?u.scriptSrc=[...u.scriptSrc.filter(d=>!d.startsWith("'nonce")),n]:u.defaultSrc instanceof Array&&(u.defaultSrc=[...u.defaultSrc.filter(d=>!d.startsWith("'nonce")),n]),is({directives:u})}function ds(e,t){let r=typeof t=="string"?[t]:t,o=Array.isArray(e)?e:[String(e)];return Array.isArray(r)?r.every(a=>a==="'none'")?o:[...o,...r]:r}var ys=forwardRef((e,t)=>{let{waitForHydration:r,src:o,...n}=e,a=fr();return r?jsx(fs,{src:o,options:n}):jsx("script",{suppressHydrationWarning:true,...n,src:o,nonce:a,ref:t})});function fs({src:e,options:t}){if(!e)throw new Error("`waitForHydration` with the Script component requires a `src` prop");return useLoadScript(e,{attributes:t}),null}async function ms(e){return e;}function gs(e){let t=useFetchers(),r={};for(let{formData:o}of t)if(o?.get("optimistic-identifier")===e)try{if(o.has("optimistic-data")){let n=JSON.parse(String(o.get("optimistic-data")));Object.assign(r,n);}}catch{}return r}function hs({id:e,data:t}){return jsxs(Fragment,{children:[jsx("input",{type:"hidden",name:"optimistic-identifier",value:e}),jsx("input",{type:"hidden",name:"optimistic-data",value:JSON.stringify(t)})]})}function Rs({connection:e,children:t=()=>(console.warn("<Pagination> requires children to work properly"),null),namespace:r=""}){let [o,n]=useState(false),a=useNavigation(),s=useLocation();useNavigate();useEffect(()=>{a.state==="idle"&&n(false);},[a.state]);let{endCursor:c,hasNextPage:u,hasPreviousPage:d,nextPageUrl:y,nodes:m,previousPageUrl:C,startCursor:p}=vs(e,r),l=useMemo(()=>({...s.state,pagination:{...s.state?.pagination||{},[r]:{pageInfo:{endCursor:c,hasPreviousPage:d,hasNextPage:u,startCursor:p},nodes:m}}}),[c,u,d,p,m,r,s.state]),S=useMemo(()=>forwardRef(function(h,T){return u?createElement(Link,{preventScrollReset:true,...h,to:y,state:l,replace:true,ref:T,onClick:()=>n(true)}):null}),[u,y,l]),f=useMemo(()=>forwardRef(function(h,T){return d?createElement(Link,{preventScrollReset:true,...h,to:C,state:l,replace:true,ref:T,onClick:()=>n(true)}):null}),[d,C,l]);return t({state:l,hasNextPage:u,hasPreviousPage:d,isLoading:o,nextPageUrl:y,nodes:m,previousPageUrl:C,NextLink:S,PreviousLink:f})}function Ct(e,t){let r=new URLSearchParams(e);return Object.keys(t?.pagination||{}).forEach(n=>{let a=n===""?"":`${n}_`,s=`${a}cursor`,i=`${a}direction`;r.delete(s),r.delete(i);}),r.toString()}function Ge(e){throw new Error(`The Pagination component requires ${"`"+e+"`"} to be a part of your query. See the guide on how to setup your query to include ${"`"+e+"`"}: https://shopify.dev/docs/custom-storefronts/hydrogen/data-fetching/pagination#setup-the-paginated-query`)}function vs(e,t=""){e.pageInfo||Ge("pageInfo"),typeof e.pageInfo.startCursor>"u"&&Ge("pageInfo.startCursor"),typeof e.pageInfo.endCursor>"u"&&Ge("pageInfo.endCursor"),typeof e.pageInfo.hasNextPage>"u"&&Ge("pageInfo.hasNextPage"),typeof e.pageInfo.hasPreviousPage>"u"&&Ge("pageInfo.hasPreviousPage");let r=useNavigation(),o=useNavigate(),{state:n,search:a,pathname:s}=useLocation(),i=t?`${t}_cursor`:"cursor",c=t?`${t}_direction`:"direction",y=new URLSearchParams(a).get(c)==="previous",m=useMemo(()=>!globalThis?.window?.__hydrogenHydrated||!n?.pagination?.[t]?.nodes?flattenConnection(e):y?[...flattenConnection(e),...n.pagination[t].nodes||[]]:[...n.pagination[t].nodes||[],...flattenConnection(e)],[n,e,t]),C=useMemo(()=>{let f=globalThis?.window?.__hydrogenHydrated,R=n?.pagination?.[t]?.pageInfo,h=!f||R?.startCursor===void 0?e.pageInfo.startCursor:R.startCursor,T=!f||R?.endCursor===void 0?e.pageInfo.endCursor:R.endCursor,g=!f||R?.hasPreviousPage===void 0?e.pageInfo.hasPreviousPage:R.hasPreviousPage,v=!f||R?.hasNextPage===void 0?e.pageInfo.hasNextPage:R.hasNextPage;return n?.pagination?.[t]?.nodes&&(y?(h=e.pageInfo.startCursor,g=e.pageInfo.hasPreviousPage):(T=e.pageInfo.endCursor,v=e.pageInfo.hasNextPage)),{startCursor:h,endCursor:T,hasPreviousPage:g,hasNextPage:v}},[y,n,t,e.pageInfo.hasNextPage,e.pageInfo.hasPreviousPage,e.pageInfo.startCursor,e.pageInfo.endCursor]),p=useRef({params:Ct(a,n),pathname:s});useEffect(()=>{window.__hydrogenHydrated=true;},[]),useEffect(()=>{let f=Ct(a,n),R=p.current.params;(s!==p.current.pathname||f!==R)&&!(r.state==="idle"&&!r.location)&&(p.current={pathname:s,params:Ct(a,n)},o(`${s}?${Ct(a,n)}`,{replace:true,preventScrollReset:true,state:{nodes:void 0,pageInfo:void 0}}));},[s,a,n]);let l=useMemo(()=>{let f=new URLSearchParams(a);return f.set(c,"previous"),C.startCursor&&f.set(i,C.startCursor),`?${f.toString()}`},[a,C.startCursor]),S=useMemo(()=>{let f=new URLSearchParams(a);return f.set(c,"next"),C.endCursor&&f.set(i,C.endCursor),`?${f.toString()}`},[a,C.endCursor]);return {...C,previousPageUrl:l,nextPageUrl:S,nodes:m}}function Is(e,t={pageBy:20}){if(typeof e?.url>"u")throw new Error("getPaginationVariables must be called with the Request object passed to your loader function");let{pageBy:r,namespace:o=""}=t,n=new URLSearchParams(new URL(e.url).search),a=o?`${o}_cursor`:"cursor",s=o?`${o}_direction`:"direction",i=n.get(a)??void 0;return (n.get(s)==="previous"?"previous":"next")==="previous"?{last:r,startCursor:i??null}:{first:r,endCursor:i??null}}function Ds(e,t){let r=useNavigation(),[o,n]=useState([]);if(useEffect(()=>{Promise.resolve(t).then(a=>{a&&n(a instanceof Array?a:a.product?.variants?.nodes||[]);}).catch(a=>{reportError(new Error("[h2:error:useOptimisticVariant] An error occurred while resolving the variants for the optimistic product hook.",{cause:a}));});},[JSON.stringify(t)]),r.state==="loading"){let a=new URLSearchParams(r.location.search),s=false,i=o.find(c=>c.selectedOptions?c.selectedOptions.every(u=>a.get(u.name)===u.value):(s||(s=true,reportError(new Error("[h2:error:useOptimisticVariant] The optimistic product hook requires your product query to include variants with the selectedOptions field."))),false));if(i)return {...i,isOptimistic:true}}return e}function ks({handle:e,options:t=[],variants:r=[],productPath:o="products",waitForNavigation:n=false,selectedVariant:a,children:s}){let i=t;i[0]?.values&&(J("[h2:warn:VariantSelector] product.options.values is deprecated. Use product.options.optionValues instead."),i[0]&&!i[0].optionValues&&(i=t.map(p=>({...p,optionValues:p.values?.map(l=>({name:l}))||[]}))));let c=r instanceof Array?r:flattenConnection(r),{searchParams:u,path:d,alreadyOnProductPage:y}=Ns(e,o,n),m=i.filter(p=>p?.optionValues?.length===1),C=a?a?.selectedOptions?.reduce((p,l)=>(p[l.name]=l.value,p),{}):{};return createElement(Fragment$1,null,...useMemo(()=>i.map(p=>{let l,S=[];for(let f of p.optionValues){let R=new URLSearchParams(y?u:void 0);R.set(p.name,f.name),m.forEach(P=>{P.optionValues[0].name&&R.set(P.name,P.optionValues[0].name);});let h=c.find(P=>P?.selectedOptions?.every(U=>(R.get(U?.name)||C?.[U?.name])===U?.value)),T=u.get(p.name);!T&&a&&(T=C?.[p.name]||null);let g=T?T===f.name:false;g&&(l=f.name);let v="?"+R.toString();S.push({value:f.name,optionValue:f,isAvailable:h?h.availableForSale:true,to:d+v,search:v,isActive:g,variant:h});}return s({option:{name:p.name,value:l,values:S}})}),[i,c,s]))}var Vs=e=>{if(typeof e?.url>"u")throw new TypeError(`Expected a Request instance, got ${typeof e}`);let t=new URL(e.url).searchParams,r=[];return t.forEach((o,n)=>{r.push({name:n,value:o});}),r};function Ns(e,t,r){let{pathname:o,search:n}=useLocation(),a=useNavigation();return useMemo(()=>{let s=/(\/[a-zA-Z]{2}-[a-zA-Z]{2}\/)/g.exec(o),i=s&&s.length>0;t=t.startsWith("/")?t.substring(1):t;let c=i?`${s[0]}${t}/${e}`:`/${t}/${e}`;return {searchParams:new URLSearchParams(r||a.state!=="loading"?n:a.location.search),alreadyOnProductPage:c===o,path:c}},[o,n,r,e,t,a])}function Ms(){return {name:"hydrogen-2025.7.0",reactRouterConfig:()=>({appDirectory:"app",buildDirectory:"dist",ssr:true,future:{v8_middleware:true,v8_splitRouteModules:true,v8_viteEnvironmentApi:false,unstable_optimizeDeps:true},subResourceIntegrity:false}),reactRouterConfigResolved:({reactRouterConfig:e})=>{if(e.basename&&e.basename!=="/")throw new Error(`[Hydrogen Preset] basename is not supported in Hydrogen 2025.7.0.
|
|
543
|
-
Reason: Requires major CLI infrastructure modernization.
|
|
544
|
-
Workaround: Use reverse proxy or CDN path rewriting for subdirectory hosting.`);if(e.prerender)throw new Error(`[Hydrogen Preset] prerender is not supported in Hydrogen 2025.7.0.
|
|
545
|
-
Reason: React Router plugin incompatibility with Hydrogen CLI build pipeline.
|
|
546
|
-
Workaround: Use external static generation tools or server-side caching.`);if(e.serverBundles)throw new Error(`[Hydrogen Preset] serverBundles is not supported in Hydrogen 2025.7.0.
|
|
547
|
-
Reason: React Router plugin manifest incompatibility with Hydrogen CLI.
|
|
548
|
-
Alternative: Route-level code splitting via v8_splitRouteModules is enabled.`);if(e.buildEnd)throw new Error(`[Hydrogen Preset] buildEnd is not supported in Hydrogen 2025.7.0.
|
|
549
|
-
Reason: Hydrogen CLI bypasses React Router buildEnd hook execution.
|
|
550
|
-
Workaround: Use external build scripts or package.json post-build hooks.`);if(e.subResourceIntegrity===true)throw new Error(`[Hydrogen Preset] subResourceIntegrity cannot be enabled.
|
|
551
|
-
Reason: Conflicts with Hydrogen CSP nonce-based authentication.
|
|
552
|
-
Impact: Would break Content Security Policy and cause script execution failures.`)}}}var qs=function(e){return jsx(RichText,{...e,components:{link:({node:t})=>jsx(Link,{to:t.url,title:t.title,target:t.target,prefetch:"intent",children:t.children}),...e.components}})};var $s=async function({request:t,context:r}){let o=r.storefront,n=r.customerAccount,a=new URL(t.url);if(!o)throw new Error("GraphiQL: Hydrogen's storefront client must be injected in the loader context.");let s={};if(o){let u="X-Shopify-Storefront-Access-Token";s.storefront={name:"Storefront API",authHeader:u,accessToken:o.getPublicTokenHeaders()[u],apiUrl:o.getApiUrl(),icon:"SF"};}if(n){let u=await(await fetch(a.origin+"/graphiql/customer-account.schema.json")).json(),d=await n.getAccessToken();u&&(s["customer-account"]={name:"Customer Account API",value:u,authHeader:"Authorization",accessToken:d,apiUrl:n.getApiUrl(),icon:"CA"});}let i="https://avatars.githubusercontent.com/u/12972006?s=48&v=4",c=String.raw;return new Response(c`
|
|
553
|
-
<!DOCTYPE html>
|
|
554
|
-
<html lang="en">
|
|
555
|
-
<head>
|
|
556
|
-
<title>GraphiQL</title>
|
|
557
|
-
<link rel="icon" type="image/x-icon" href="${i}" />
|
|
558
|
-
<meta charset="utf-8" />
|
|
559
|
-
<style>
|
|
560
|
-
body {
|
|
561
|
-
height: 100%;
|
|
562
|
-
margin: 0;
|
|
563
|
-
width: 100%;
|
|
564
|
-
overflow: hidden;
|
|
565
|
-
background-color: hsl(219, 29%, 18%);
|
|
566
|
-
}
|
|
567
|
-
|
|
568
|
-
#graphiql {
|
|
569
|
-
height: 100vh;
|
|
570
|
-
}
|
|
571
|
-
|
|
572
|
-
#graphiql > .placeholder {
|
|
573
|
-
color: slategray;
|
|
574
|
-
width: fit-content;
|
|
575
|
-
margin: 40px auto;
|
|
576
|
-
font-family: Arial;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
.graphiql-api-toolbar-label {
|
|
580
|
-
position: absolute;
|
|
581
|
-
bottom: -6px;
|
|
582
|
-
right: -4px;
|
|
583
|
-
font-size: 8px;
|
|
584
|
-
}
|
|
585
|
-
</style>
|
|
586
|
-
|
|
587
|
-
<link
|
|
588
|
-
rel="stylesheet"
|
|
589
|
-
href="https://esm.sh/graphiql/dist/style.css"
|
|
590
|
-
/>
|
|
591
|
-
|
|
592
|
-
<link
|
|
593
|
-
rel="stylesheet"
|
|
594
|
-
href="https://esm.sh/@graphiql/plugin-explorer/dist/style.css"
|
|
595
|
-
/>
|
|
596
|
-
<script type="importmap">
|
|
597
|
-
{
|
|
598
|
-
"imports": {
|
|
599
|
-
"react": "https://esm.sh/react@19.1.0",
|
|
600
|
-
"react/jsx-runtime": "https://esm.sh/react@19.1.0/jsx-runtime",
|
|
601
|
-
"react-dom": "https://esm.sh/react-dom@19.1.0",
|
|
602
|
-
"react-dom/client": "https://esm.sh/react-dom@19.1.0/client",
|
|
603
|
-
|
|
604
|
-
"graphql": "https://esm.sh/graphql@16.11.0",
|
|
605
|
-
|
|
606
|
-
"graphiql": "https://esm.sh/graphiql?standalone&external=react,react-dom,@graphiql/react,graphql",
|
|
607
|
-
"@graphiql/plugin-explorer": "https://esm.sh/@graphiql/plugin-explorer?standalone&external=react,@graphiql/react,graphql",
|
|
608
|
-
"@graphiql/react": "https://esm.sh/@graphiql/react?standalone&external=react,react-dom,graphql",
|
|
609
|
-
"@graphiql/toolkit": "https://esm.sh/@graphiql/toolkit?standalone&external=graphql"
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
</script>
|
|
613
|
-
<script type="module">
|
|
614
|
-
// Import React and ReactDOM
|
|
615
|
-
import React from 'react';
|
|
616
|
-
import ReactDOM from 'react-dom/client';
|
|
617
|
-
|
|
618
|
-
// Import GraphiQL and the Explorer plugin
|
|
619
|
-
import {GraphiQL, HISTORY_PLUGIN} from 'graphiql';
|
|
620
|
-
import {createGraphiQLFetcher} from '@graphiql/toolkit';
|
|
621
|
-
import {explorerPlugin} from '@graphiql/plugin-explorer';
|
|
622
|
-
import {ToolbarButton} from '@graphiql/react';
|
|
623
|
-
|
|
624
|
-
import createJSONWorker from 'https://esm.sh/monaco-editor/esm/vs/language/json/json.worker.js?worker';
|
|
625
|
-
import createGraphQLWorker from 'https://esm.sh/monaco-graphql/esm/graphql.worker.js?worker';
|
|
626
|
-
import createEditorWorker from 'https://esm.sh/monaco-editor/esm/vs/editor/editor.worker.js?worker';
|
|
627
|
-
import {parse, print} from 'graphql';
|
|
628
|
-
|
|
629
|
-
globalThis.MonacoEnvironment = {
|
|
630
|
-
getWorker(_workerId, label) {
|
|
631
|
-
switch (label) {
|
|
632
|
-
case 'json':
|
|
633
|
-
return createJSONWorker();
|
|
634
|
-
case 'graphql':
|
|
635
|
-
return createGraphQLWorker();
|
|
636
|
-
}
|
|
637
|
-
return createEditorWorker();
|
|
638
|
-
},
|
|
639
|
-
};
|
|
640
|
-
|
|
641
|
-
const windowUrl = new URL(document.URL);
|
|
642
|
-
const startingSchemaKey =
|
|
643
|
-
windowUrl.searchParams.get('schema') || 'storefront';
|
|
644
|
-
|
|
645
|
-
let initialQuery = '{ shop { name } }';
|
|
646
|
-
if (windowUrl.searchParams.has('query')) {
|
|
647
|
-
initialQuery = decodeURIComponent(
|
|
648
|
-
windowUrl.searchParams.get('query') ?? query,
|
|
649
|
-
);
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
// Prettify query
|
|
653
|
-
initialQuery = print(parse(initialQuery));
|
|
654
|
-
|
|
655
|
-
let variables;
|
|
656
|
-
if (windowUrl.searchParams.has('variables')) {
|
|
657
|
-
variables = decodeURIComponent(
|
|
658
|
-
windowUrl.searchParams.get('variables') ?? '',
|
|
659
|
-
);
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
// Prettify variables
|
|
663
|
-
if (variables) {
|
|
664
|
-
variables = JSON.stringify(JSON.parse(variables), null, 2);
|
|
665
|
-
}
|
|
666
|
-
|
|
667
|
-
const schemas = ${JSON.stringify(s)};
|
|
668
|
-
|
|
669
|
-
let lastActiveTabIndex = -1;
|
|
670
|
-
let lastTabAmount = -1;
|
|
671
|
-
|
|
672
|
-
const TAB_STATE_KEY = 'graphiql:tabState';
|
|
673
|
-
const storage = {
|
|
674
|
-
getTabState: () =>
|
|
675
|
-
JSON.parse(localStorage.getItem(TAB_STATE_KEY)),
|
|
676
|
-
setTabState: (state) =>
|
|
677
|
-
localStorage.setItem(TAB_STATE_KEY, JSON.stringify(state)),
|
|
678
|
-
};
|
|
679
|
-
|
|
680
|
-
let nextSchemaKey;
|
|
681
|
-
|
|
682
|
-
function App() {
|
|
683
|
-
const [activeSchema, setActiveSchema] =
|
|
684
|
-
React.useState(startingSchemaKey);
|
|
685
|
-
|
|
686
|
-
const schema = schemas[activeSchema];
|
|
687
|
-
|
|
688
|
-
if (!schema) {
|
|
689
|
-
throw new Error('No schema found for ' + activeSchema);
|
|
690
|
-
}
|
|
691
|
-
|
|
692
|
-
const fetcher = createGraphiQLFetcher({
|
|
693
|
-
url: schema.apiUrl,
|
|
694
|
-
headers: {[schema.authHeader]: schema.accessToken},
|
|
695
|
-
enableIncrementalDelivery: false,
|
|
696
|
-
});
|
|
697
|
-
|
|
698
|
-
// We create a custom fetcher because createGraphiQLFetcher attempts to introspect the schema
|
|
699
|
-
// and the Customer Account API does not support introspection.
|
|
700
|
-
// We override the fetcher to return the schema directly only for the CAAPI introspection query.
|
|
701
|
-
function createJsonFetcher(options, httpFetch) {
|
|
702
|
-
if (activeSchema === 'storefront') {
|
|
703
|
-
return fetcher(options, httpFetch);
|
|
704
|
-
} else {
|
|
705
|
-
// CAAPI requires a custom fetcher
|
|
706
|
-
if (options.operationName === 'IntrospectionQuery') {
|
|
707
|
-
return {data: schema.value};
|
|
708
|
-
} else {
|
|
709
|
-
return fetcher(options, httpFetch);
|
|
710
|
-
}
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
|
|
714
|
-
const keys = Object.keys(schemas);
|
|
715
|
-
|
|
716
|
-
function onTabChange(state) {
|
|
717
|
-
const {activeTabIndex, tabs} = state;
|
|
718
|
-
const activeTab = tabs[activeTabIndex];
|
|
719
|
-
|
|
720
|
-
if (
|
|
721
|
-
activeTabIndex === lastActiveTabIndex &&
|
|
722
|
-
lastTabAmount === tabs.length
|
|
723
|
-
) {
|
|
724
|
-
if (
|
|
725
|
-
nextSchemaKey &&
|
|
726
|
-
activeTab &&
|
|
727
|
-
activeTab.schemaKey !== nextSchemaKey
|
|
728
|
-
) {
|
|
729
|
-
activeTab.schemaKey = nextSchemaKey;
|
|
730
|
-
nextSchemaKey = undefined;
|
|
731
|
-
|
|
732
|
-
// Sync state to localStorage. GraphiQL resets the state
|
|
733
|
-
// asynchronously, so we need to do it in a timeout.
|
|
734
|
-
storage.setTabState(state);
|
|
735
|
-
setTimeout(() => storage.setTabState(state), 500);
|
|
736
|
-
}
|
|
737
|
-
|
|
738
|
-
// React rerrendering, skip
|
|
739
|
-
return;
|
|
740
|
-
}
|
|
741
|
-
|
|
742
|
-
if (activeTab) {
|
|
743
|
-
if (!activeTab.schemaKey) {
|
|
744
|
-
// Creating a new tab
|
|
745
|
-
if (lastTabAmount < tabs.length) {
|
|
746
|
-
activeTab.schemaKey = activeSchema;
|
|
747
|
-
storage.setTabState(state);
|
|
748
|
-
}
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
const nextSchema = activeTab.schemaKey || 'storefront';
|
|
752
|
-
|
|
753
|
-
if (nextSchema !== activeSchema) {
|
|
754
|
-
setActiveSchema(nextSchema);
|
|
755
|
-
}
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
lastActiveTabIndex = activeTabIndex;
|
|
759
|
-
lastTabAmount = tabs.length;
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
const plugins = [HISTORY_PLUGIN, explorerPlugin()];
|
|
763
|
-
|
|
764
|
-
const props = {
|
|
765
|
-
fetcher: createJsonFetcher,
|
|
766
|
-
defaultEditorToolsVisibility: true,
|
|
767
|
-
initialQuery,
|
|
768
|
-
variables,
|
|
769
|
-
schema: schema.value,
|
|
770
|
-
plugins,
|
|
771
|
-
onTabChange,
|
|
772
|
-
};
|
|
773
|
-
|
|
774
|
-
function toggleSelectedApi() {
|
|
775
|
-
const activeKeyIndex = keys.indexOf(activeSchema);
|
|
776
|
-
nextSchemaKey = keys[(activeKeyIndex + 1) % keys.length];
|
|
777
|
-
|
|
778
|
-
// This triggers onTabChange
|
|
779
|
-
if (nextSchemaKey) setActiveSchema(nextSchemaKey);
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
const CustomToolbar = React.createElement(
|
|
783
|
-
GraphiQL.Toolbar,
|
|
784
|
-
{
|
|
785
|
-
key: 'Custom Toolbar',
|
|
786
|
-
},
|
|
787
|
-
[
|
|
788
|
-
React.createElement(
|
|
789
|
-
ToolbarButton,
|
|
790
|
-
{
|
|
791
|
-
key: 'api-wrapper',
|
|
792
|
-
onClick: toggleSelectedApi,
|
|
793
|
-
label: 'Toggle between different API schemas',
|
|
794
|
-
},
|
|
795
|
-
[
|
|
796
|
-
React.createElement(
|
|
797
|
-
'div',
|
|
798
|
-
{
|
|
799
|
-
key: 'icon',
|
|
800
|
-
style: {
|
|
801
|
-
textAlign: 'center',
|
|
802
|
-
},
|
|
803
|
-
},
|
|
804
|
-
[
|
|
805
|
-
schema.icon,
|
|
806
|
-
React.createElement(
|
|
807
|
-
'div',
|
|
808
|
-
{
|
|
809
|
-
key: 'icon-label',
|
|
810
|
-
className: 'graphiql-api-toolbar-label',
|
|
811
|
-
},
|
|
812
|
-
'API',
|
|
813
|
-
),
|
|
814
|
-
],
|
|
815
|
-
),
|
|
816
|
-
],
|
|
817
|
-
),
|
|
818
|
-
],
|
|
819
|
-
);
|
|
820
|
-
|
|
821
|
-
const CustomLogo = React.createElement(
|
|
822
|
-
GraphiQL.Logo,
|
|
823
|
-
{
|
|
824
|
-
key: 'Logo replacement',
|
|
825
|
-
},
|
|
826
|
-
[
|
|
827
|
-
React.createElement(
|
|
828
|
-
'div',
|
|
829
|
-
{
|
|
830
|
-
key: 'Logo wrapper',
|
|
831
|
-
style: {display: 'flex', alignItems: 'center'},
|
|
832
|
-
},
|
|
833
|
-
[
|
|
834
|
-
React.createElement(
|
|
835
|
-
'div',
|
|
836
|
-
{
|
|
837
|
-
key: 'api',
|
|
838
|
-
className: 'graphiql-logo',
|
|
839
|
-
style: {
|
|
840
|
-
paddingRight: 0,
|
|
841
|
-
whiteSpace: 'nowrap',
|
|
842
|
-
},
|
|
843
|
-
},
|
|
844
|
-
[schema.name],
|
|
845
|
-
),
|
|
846
|
-
React.createElement(GraphiQL.Logo, {key: 'logo'}),
|
|
847
|
-
],
|
|
848
|
-
),
|
|
849
|
-
],
|
|
850
|
-
);
|
|
851
|
-
|
|
852
|
-
const children = [CustomToolbar, CustomLogo];
|
|
853
|
-
|
|
854
|
-
return React.createElement(GraphiQL, props, children);
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
const container = document.getElementById('graphiql');
|
|
858
|
-
|
|
859
|
-
const root = ReactDOM.createRoot(container);
|
|
860
|
-
|
|
861
|
-
root.render(React.createElement(App));
|
|
862
|
-
</script>
|
|
863
|
-
</head>
|
|
864
|
-
|
|
865
|
-
<body>
|
|
866
|
-
<div id="graphiql">
|
|
867
|
-
<div class="placeholder">Loading GraphiQL...</div>
|
|
868
|
-
</div>
|
|
869
|
-
</body>
|
|
870
|
-
</html>
|
|
871
|
-
`,{status:200,headers:{"content-type":"text/html"}})};var zo=".data",gr="_root.data",Xo="_.data";async function Gs(e){let{storefront:t,request:r,noAdminRedirect:o,matchQueryParams:n,response:a=new Response("Not Found",{status:404})}=e,s=new URL(r.url),{searchParams:i}=s,{pathname:c,isSoftNavigation:u}=Bs(s.pathname);i.delete("redirect"),i.delete("return_to"),i.delete("_routes");let d=(n?`${c}${s.search}`:c).toLowerCase();if(c==="/admin"&&!o)return Ar(`${t.getShopifyDomain()}/admin`,u,i,n);try{let{urlRedirects:y}=await t.query(Qs,{variables:{query:"path:"+d.replace(/\/+$/,"")}}),m=y?.edges?.[0]?.node?.target;if(m)return Ar(m,u,i,n);let C=mt(r.url);if(C)return Ar(C,u,i,n)}catch(y){console.error(`Failed to fetch redirects from Storefront API for route ${d}`,y);}return a}var hr="https://example.com";function Ar(e,t,r,o){let n=new URL(e,hr);if(!o)for(let[a,s]of r)n.searchParams.append(a,s);return t?new Response(null,{status:204,headers:{"X-Remix-Redirect":n.toString().replace(hr,""),"X-Remix-Status":"301"}}):new Response(null,{status:301,headers:{location:n.toString().replace(hr,"")}})}function Bs(e){return e.endsWith(zo)?e.endsWith("/"+Xo)?{pathname:e.slice(0,-Xo.length),isSoftNavigation:true}:e==="/"+gr||e.endsWith("/"+gr)?{pathname:e.slice(0,-gr.length)||"/",isSoftNavigation:true}:{pathname:e.slice(0,-zo.length),isSoftNavigation:true}:{pathname:e,isSoftNavigation:false}}var Qs=`#graphql
|
|
872
|
-
query redirects($query: String) {
|
|
873
|
-
urlRedirects(first: 1, query: $query) {
|
|
874
|
-
edges {
|
|
875
|
-
node {
|
|
876
|
-
target
|
|
877
|
-
}
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
}
|
|
881
|
-
`;var Ws={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},js=/[&><\u2028\u2029]/g;function Zo(e){return e.replace(js,t=>Ws[t])}var ue="Error in SEO input: ",oe={title:{validate:e=>{if(typeof e!="string")throw new Error(ue.concat("`title` should be a string"));if(typeof e=="string"&&e.length>70)throw new Error(ue.concat("`title` should not be longer than 70 characters"));return e}},description:{validate:e=>{if(typeof e!="string")throw new Error(ue.concat("`description` should be a string"));if(typeof e=="string"&&e.length>155)throw new Error(ue.concat("`description` should not be longer than 160 characters"));return e}},url:{validate:e=>{if(typeof e!="string")throw new Error(ue.concat("`url` should be a string"));if(typeof e=="string"&&!e.startsWith("http"))throw new Error(ue.concat("`url` should be a valid URL"));return e}},handle:{validate:e=>{if(typeof e!="string")throw new Error(ue.concat("`handle` should be a string"));if(typeof e=="string"&&!e.startsWith("@"))throw new Error(ue.concat("`handle` should start with `@`"));return e}}};function en(e){let t=[];for(let r of Object.keys(e))switch(r){case "title":{let o=ne(oe.title,e.title),n=Sr(e?.titleTemplate,o);if(!n)break;t.push(H("title",{title:n}),H("meta",{property:"og:title",content:n}),H("meta",{name:"twitter:title",content:n}));break}case "description":{let o=ne(oe.description,e.description);if(!o)break;t.push(H("meta",{name:"description",content:o}),H("meta",{property:"og:description",content:o}),H("meta",{name:"twitter:description",content:o}));break}case "url":{let o=ne(oe.url,e.url);if(!o)break;let a=o.split("?")[0].replace(/\/$/,"");t.push(H("link",{rel:"canonical",href:a}),H("meta",{property:"og:url",content:a}));break}case "handle":{let o=ne(oe.handle,e.handle);if(!o)break;t.push(H("meta",{name:"twitter:site",content:o}),H("meta",{name:"twitter:creator",content:o}));break}case "media":{let o,n=de(e.media);for(let a of n)if(typeof a=="string"&&t.push(H("meta",{name:"og:image",content:a})),a&&typeof a=="object"){let s=a.type||"image",i=a?{url:a?.url,secure_url:a?.url,type:Pr(a.url),width:a?.width,height:a?.height,alt:a?.altText}:{};for(let c of Object.keys(i))i[c]&&(o=i[c],t.push(H("meta",{property:`og:${s}:${c}`,content:o},i.url)));}break}case "jsonLd":{let o=de(e.jsonLd),n=0;for(let a of o){if(typeof a!="object")continue;let s=H("script",{type:"application/ld+json",children:JSON.stringify(a,(i,c)=>typeof c=="string"?Zo(c):c)},`json-ld-${a?.["@type"]||a?.name||n++}`);t.push(s);}break}case "alternates":{let o=de(e.alternates);for(let n of o){if(!n)continue;let{language:a,url:s,default:i}=n,c=a?`${a}${i?"-default":""}`:void 0;t.push(H("link",{rel:"alternate",hrefLang:c,href:s}));}break}case "robots":{if(!e.robots)break;let{maxImagePreview:o,maxSnippet:n,maxVideoPreview:a,noArchive:s,noFollow:i,noImageIndex:c,noIndex:u,noSnippet:d,noTranslate:y,unavailableAfter:m}=e.robots,C=[s&&"noarchive",c&&"noimageindex",d&&"nosnippet",y&&"notranslate",o&&`max-image-preview:${o}`,n&&`max-snippet:${n}`,a&&`max-video-preview:${a}`,m&&`unavailable_after:${m}`],p=(u?"noindex":"index")+","+(i?"nofollow":"follow");for(let l of C)l&&(p+=`,${l}`);t.push(H("meta",{name:"robots",content:p}));break}}return t.flat().sort((r,o)=>r.key.localeCompare(o.key))}function H(e,t,r){let o={tag:e,props:{},key:""};return e==="title"?(o.children=t.title,o.key=Tr(o),o):e==="script"?(o.children=typeof t.children=="string"?t.children:"",o.key=Tr(o,r),delete t.children,o.props=t,o):(o.props=t,Object.keys(o.props).forEach(n=>!o.props[n]&&delete o.props[n]),o.key=Tr(o,r),o)}function Tr(e,t){let{tag:r,props:o}=e;if(r==="title")return "0-title";if(r==="meta"){let n=o.content===t&&typeof o.property=="string"&&!o.property.endsWith("secure_url")&&"0";return [r,...[t,n],o.property||o.name].filter(s=>s).join("-")}return r==="link"?[r,o.rel,o.hrefLang||o.media].filter(a=>a).join("-").replace(/\s+/g,"-"):r==="script"?`${r}-${t}`:`${r}-${o.type}`}function Sr(e,t){if(t)return e?typeof e=="function"?e(t):e.replace("%s",t??""):t}function Pr(e){switch(e&&e.split(".").pop()){case "svg":return "image/svg+xml";case "png":return "image/png";case "gif":return "image/gif";case "swf":return "application/x-shockwave-flash";case "mp3":return "audio/mpeg";default:return "image/jpeg"}}function de(e){return Array.isArray(e)?e:[e]}function ne(e,t){try{return e.validate(t)}catch(r){return console.warn(r.message),t}}function Ks(...e){let t=[],r=e.reduce((o,n)=>{if(!n)return o;Object.keys(n).forEach(s=>!n[s]&&delete n[s]);let{jsonLd:a}=n;return a?o?.jsonLd?{...o,...n,jsonLd:de(o.jsonLd).concat(a)}:{...o,...n,jsonLd:[a]}:{...o,...n}},{})||{};for(let o of Object.keys(r))switch(o){case "title":{let n=ne(oe.title,r.title),a=Sr(r?.titleTemplate,n);if(!a)break;t.push({title:a},{property:"og:title",content:a},{property:"twitter:title",content:a});break}case "description":{let n=ne(oe.description,r.description);if(!n)break;t.push({name:"description",content:n},{property:"og:description",content:n},{property:"twitter:description",content:n});break}case "url":{let n=ne(oe.url,r.url);if(!n)break;let s=n.split("?")[0].replace(/\/$/,"");t.push({tagName:"link",rel:"canonical",href:s},{property:"og:url",content:s});break}case "handle":{let n=ne(oe.handle,r.handle);if(!n)break;t.push({property:"twitter:site",content:n},{property:"twitter:creator",content:n});break}case "media":{let n,a=de(r.media);for(let s of a)if(typeof s=="string"&&t.push({property:"og:image",content:s}),s&&typeof s=="object"){let i=s.type||"image",c=s?{url:s?.url,secure_url:s?.url,type:Pr(s.url),width:s?.width,height:s?.height,alt:s?.altText}:{};for(let u of Object.keys(c))c[u]&&(n=c[u],t.push({property:`og:${i}:${u}`,content:n}));}break}case "jsonLd":{let n=de(r.jsonLd);for(let s of n)typeof s!="object"||Object.keys(s).length===0||t.push({"script:ld+json":s});break}case "alternates":{let n=de(r.alternates);for(let a of n){if(!a)continue;let{language:s,url:i,default:c}=a,u=s?`${s}${c?"-default":""}`:void 0;t.push({tagName:"link",rel:"alternate",hrefLang:u,href:i});}break}case "robots":{if(!r.robots)break;let{maxImagePreview:n,maxSnippet:a,maxVideoPreview:s,noArchive:i,noFollow:c,noImageIndex:u,noIndex:d,noSnippet:y,noTranslate:m,unavailableAfter:C}=r.robots,p=[i&&"noarchive",u&&"noimageindex",y&&"nosnippet",m&&"notranslate",n&&`max-image-preview:${n}`,a&&`max-snippet:${a}`,s&&`max-video-preview:${s}`,C&&`unavailable_after:${C}`],l=(d?"noindex":"index")+","+(c?"nofollow":"follow");for(let S of p)S&&(l+=`,${S}`);t.push({name:"robots",content:l});break}}return t}var ei=lazy(()=>import('./log-seo-tags-TY72EQWZ.js'));function ti({debug:e}){let t=useMatches(),r=useLocation();console.warn("[h2:warn:Seo] The `<Seo/>` component is deprecated. Use `getSeoMeta` instead.\nSee: https://shopify.dev/docs/api/hydrogen/utilities/getseometa");let o=useMemo(()=>t.flatMap(s=>{let{handle:i,...c}=s,u={...c,...r},d=i?.seo,y=c?.data?.seo;return !d&&!y?[]:d?gt(d,u):[y]}).reduce((s,i)=>{Object.keys(i).forEach(u=>!i[u]&&delete i[u]);let{jsonLd:c}=i;return c?s?.jsonLd?Array.isArray(c)?{...s,...i,jsonLd:[...s.jsonLd,...c]}:{...s,...i,jsonLd:[...s.jsonLd,c]}:{...s,...i,jsonLd:[c]}:{...s,...i}},{}),[t,r]),{html:n,loggerMarkup:a}=useMemo(()=>{let s=en(o),i=s.map(u=>u.tag==="script"?createElement(u.tag,{...u.props,key:u.key,dangerouslySetInnerHTML:{__html:u.children}}):createElement(u.tag,{...u.props,key:u.key},u.children)),c=createElement(Suspense,{fallback:null},createElement(ei,{headTags:s}));return {html:i,loggerMarkup:c}},[o]);return createElement(Fragment$1,null,n,e&&a)}function gt(e,...t){if(e instanceof Function)return gt(e(...t),...t);let r={};return Array.isArray(e)?(r=e.reduce((o,n)=>[...o,gt(n)],[]),r):e instanceof Object?(Object.entries(e).forEach(([n,a])=>{r[n]=gt(a,...t);}),r):e}function oi(e){return jsx(ShopPayButton,{channel:"hydrogen",...e})}var ai=`<?xml version="1.0" encoding="UTF-8"?>
|
|
882
|
-
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
|
883
|
-
`,si=`
|
|
884
|
-
</sitemapindex>`,rn=`<?xml version="1.0" encoding="UTF-8"?>
|
|
885
|
-
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">`,on="</urlset>";async function ii(e){let{storefront:t,request:r,types:o=["products","pages","collections","metaObjects","articles","blogs"],customChildSitemaps:n=[]}=e;if(!r||!r.url)throw new Error("A request object is required to generate a sitemap index");if(!t||!t.query)throw new Error("A storefront client is required to generate a sitemap index");let a=await t.query(hi);if(!a)throw console.warn("[h2:sitemap:warning] Sitemap index is available in API version 2024-10 and later"),new Response("Sitemap index not found.",{status:404});let s=new URL(r.url).origin,i=ai+o.map(c=>{if(!a[c])throw new Error(`[h2:sitemap:error] No data found for type ${c}. Check types passed to \`getSitemapIndex\``);return ui(c,a[c].pagesCount.count,s)}).join(`
|
|
886
|
-
`)+n.map(c=>" <sitemap><loc>"+(s+(c.startsWith("/")?c:"/"+c))+"</loc></sitemap>").join(`
|
|
887
|
-
`)+si;return new Response(i,{headers:{"Content-Type":"application/xml","Cache-Control":`max-age=${3600*24}`}})}async function ci(e){let{storefront:t,request:r,params:o,getLink:n,locales:a=[],getChangeFreq:s,noItemsFallback:i="/"}=e;if(!o)throw new Error("[h2:sitemap:error] Remix params object is required to generate a sitemap");if(!r||!r.url)throw new Error("A request object is required to generate a sitemap");if(!t||!t.query)throw new Error("A storefront client is required to generate a index");if(!n)throw new Error("A `getLink` function to generate each resource is required to build a sitemap");if(!o.type||!o.page)throw new Response("No data found",{status:404});let c=o.type,u=Ai[c];if(!u)throw new Response("Not found",{status:404});let d=await t.query(u,{variables:{page:parseInt(o.page,10)}});if(!d)throw console.warn("[h2:sitemap:warning] Sitemap is available in API version 2024-10 and later"),new Response("Sitemap not found.",{status:404});let y=new URL(r.url).origin,m="";return d?.sitemap?.resources?.items?.length?m=rn+d.sitemap.resources.items.map(C=>di({getChangeFreq:s,url:n({type:C.type??c,baseUrl:y,handle:C.handle}),type:c,getLink:n,updatedAt:C.updatedAt,handle:C.handle,metaobjectType:C.type,locales:a,baseUrl:y})).join(`
|
|
888
|
-
`)+on:m=rn+`
|
|
889
|
-
<url><loc>${y+i}</loc></url>
|
|
890
|
-
`+on,new Response(m,{headers:{"Content-Type":"application/xml","Cache-Control":`max-age=${3600*24}`}})}function ui(e,t,r){let o="";for(let n=1;n<=t;n++)o+=` <sitemap><loc>${r}/sitemap/${e}/${n}.xml</loc></sitemap>
|
|
891
|
-
`;return o}function di({url:e,updatedAt:t,locales:r,type:o,getLink:n,baseUrl:a,handle:s,getChangeFreq:i,metaobjectType:c}){return `<url>
|
|
892
|
-
<loc>${e}</loc>
|
|
893
|
-
<lastmod>${t}</lastmod>
|
|
894
|
-
<changefreq>${i?i({type:c??o,handle:s}):"weekly"}</changefreq>
|
|
895
|
-
${r.map(u=>pi(n({type:c??o,baseUrl:a,handle:s,locale:u}),u)).join(`
|
|
896
|
-
`)}
|
|
897
|
-
</url>
|
|
898
|
-
`.trim()}function pi(e,t){return ` <xhtml:link rel="alternate" hreflang="${t}" href="${e}" />`}var li=`#graphql
|
|
899
|
-
query SitemapProducts($page: Int!) {
|
|
900
|
-
sitemap(type: PRODUCT) {
|
|
901
|
-
resources(page: $page) {
|
|
902
|
-
items {
|
|
903
|
-
handle
|
|
904
|
-
updatedAt
|
|
905
|
-
}
|
|
906
|
-
}
|
|
907
|
-
}
|
|
908
|
-
}
|
|
909
|
-
`,yi=`#graphql
|
|
910
|
-
query SitemapCollections($page: Int!) {
|
|
911
|
-
sitemap(type: COLLECTION) {
|
|
912
|
-
resources(page: $page) {
|
|
913
|
-
items {
|
|
914
|
-
handle
|
|
915
|
-
updatedAt
|
|
916
|
-
}
|
|
917
|
-
}
|
|
918
|
-
}
|
|
919
|
-
}
|
|
920
|
-
`,fi=`#graphql
|
|
921
|
-
query SitemapArticles($page: Int!) {
|
|
922
|
-
sitemap(type: ARTICLE) {
|
|
923
|
-
resources(page: $page) {
|
|
924
|
-
items {
|
|
925
|
-
handle
|
|
926
|
-
updatedAt
|
|
927
|
-
}
|
|
928
|
-
}
|
|
929
|
-
}
|
|
930
|
-
}
|
|
931
|
-
`,mi=`#graphql
|
|
932
|
-
query SitemapPages($page: Int!) {
|
|
933
|
-
sitemap(type: PAGE) {
|
|
934
|
-
resources(page: $page) {
|
|
935
|
-
items {
|
|
936
|
-
handle
|
|
937
|
-
updatedAt
|
|
938
|
-
}
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
}
|
|
942
|
-
`,Ci=`#graphql
|
|
943
|
-
query SitemapBlogs($page: Int!) {
|
|
944
|
-
sitemap(type: BLOG) {
|
|
945
|
-
resources(page: $page) {
|
|
946
|
-
items {
|
|
947
|
-
handle
|
|
948
|
-
updatedAt
|
|
949
|
-
}
|
|
950
|
-
}
|
|
951
|
-
}
|
|
952
|
-
}
|
|
953
|
-
`,gi=`#graphql
|
|
954
|
-
query SitemapMetaobjects($page: Int!) {
|
|
955
|
-
sitemap(type: METAOBJECT) {
|
|
956
|
-
resources(page: $page) {
|
|
957
|
-
items {
|
|
958
|
-
handle
|
|
959
|
-
updatedAt
|
|
960
|
-
... on SitemapResourceMetaobject {
|
|
961
|
-
type
|
|
962
|
-
}
|
|
963
|
-
}
|
|
964
|
-
}
|
|
965
|
-
}
|
|
966
|
-
}
|
|
967
|
-
`,hi=`#graphql
|
|
968
|
-
query SitemapIndex {
|
|
969
|
-
products: sitemap(type: PRODUCT) {
|
|
970
|
-
pagesCount {
|
|
971
|
-
count
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
collections: sitemap(type: COLLECTION) {
|
|
975
|
-
pagesCount {
|
|
976
|
-
count
|
|
977
|
-
}
|
|
978
|
-
}
|
|
979
|
-
articles: sitemap(type: ARTICLE) {
|
|
980
|
-
pagesCount {
|
|
981
|
-
count
|
|
982
|
-
}
|
|
983
|
-
}
|
|
984
|
-
pages: sitemap(type: PAGE) {
|
|
985
|
-
pagesCount {
|
|
986
|
-
count
|
|
987
|
-
}
|
|
988
|
-
}
|
|
989
|
-
blogs: sitemap(type: BLOG) {
|
|
990
|
-
pagesCount {
|
|
991
|
-
count
|
|
992
|
-
}
|
|
993
|
-
}
|
|
994
|
-
metaObjects: sitemap(type: METAOBJECT) {
|
|
995
|
-
pagesCount {
|
|
996
|
-
count
|
|
997
|
-
}
|
|
998
|
-
}
|
|
999
|
-
}
|
|
1000
|
-
`,Ai={products:li,articles:fi,collections:yi,pages:mi,blogs:Ci,metaObjects:gi};//! @see https://shopify.dev/docs/api/storefront/latest/queries/cart
|
|
1001
|
-
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartCreate
|
|
1002
|
-
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesAdd
|
|
1003
|
-
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesUpdate
|
|
1004
|
-
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesRemove
|
|
1005
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartDiscountCodesUpdate
|
|
1006
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartBuyerIdentityUpdate
|
|
1007
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartNoteUpdate
|
|
1008
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartSelectedDeliveryOptionsUpdate
|
|
1009
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartMetafieldsSet
|
|
1010
|
-
//! @see https://shopify.dev/docs/api/storefront/2026-04/mutations/cartMetafieldDelete
|
|
1011
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartGiftCardCodesUpdate
|
|
1012
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartGiftCardCodesAdd
|
|
1013
|
-
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartGiftCardCodesRemove
|
|
1014
|
-
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartDeliveryAddressesAdd
|
|
1015
|
-
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartDeliveryAddressesRemove
|
|
1016
|
-
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartDeliveryAddressesUpdate
|
|
1017
|
-
//! @see: https://shopify.dev/docs/api/storefront/2026-04/mutations/cartDeliveryAddressesReplace
|
|
1018
|
-
export{Kn as Analytics,B as AnalyticsEvent,Vt as CacheCustom,kt as CacheLong,Ut as CacheNone,le as CacheShort,re as CartForm,Ft as InMemoryCache,Ho as NonceProvider,hs as OptimisticInput,Rs as Pagination,qs as RichText,ys as Script,ti as Seo,oi as ShopPayButton,ks as VariantSelector,Xt as cartAttributesUpdateDefault,Yt as cartBuyerIdentityUpdateDefault,Bt as cartCreateDefault,Kt as cartDiscountCodesUpdateDefault,Gt as cartGetDefault,Ht as cartGetIdDefault,rr as cartGiftCardCodesAddDefault,or as cartGiftCardCodesRemoveDefault,tr as cartGiftCardCodesUpdateDefault,Qt as cartLinesAddDefault,jt as cartLinesRemoveDefault,Wt as cartLinesUpdateDefault,er as cartMetafieldDeleteDefault,Zt as cartMetafieldsSetDefault,Jt as cartNoteUpdateDefault,zt as cartSelectedDeliveryOptionsUpdateDefault,qt as cartSetIdDefault,$a as changelogHandler,nr as createCartHandler,cs as createContentSecurityPolicy,yr as createCustomerAccountClient,ts as createHydrogenContext,os as createRequestHandler,Ao as createStorefrontClient,sa as createWithCache,I as formatAPIResult,Ne as generateCacheControlHeader,Is as getPaginationVariables,Vs as getSelectedProductOptions,Ks as getSeoMeta,Wn as getShopAnalytics,ci as getSitemap,ii as getSitemapIndex,$s as graphiqlLoader,Ga as hydrogenContext,Ms as hydrogenPreset,ms as hydrogenRoutes,Gs as storefrontRedirect,ee as useAnalytics,It as useCustomerPrivacy,fr as useNonce,Ha as useOptimisticCart,gs as useOptimisticData,Ds as useOptimisticVariant};//# sourceMappingURL=index.js.map
|
|
1019
|
-
//# sourceMappingURL=index.js.map
|