@shopify/hydrogen-react 2026.4.0 → 2026.4.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/dist/browser-dev/AddToCartButton.mjs +60 -71
- package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
- package/dist/browser-dev/BaseButton.mjs +20 -26
- package/dist/browser-dev/BaseButton.mjs.map +1 -1
- package/dist/browser-dev/BuyNowButton.mjs +40 -45
- package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
- package/dist/browser-dev/CartCheckoutButton.mjs +28 -23
- package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-dev/CartCost.mjs +26 -22
- package/dist/browser-dev/CartCost.mjs.map +1 -1
- package/dist/browser-dev/CartLineProvider.mjs +23 -18
- package/dist/browser-dev/CartLineProvider.mjs.map +1 -1
- package/dist/browser-dev/CartLineQuantity.mjs +18 -9
- package/dist/browser-dev/CartLineQuantity.mjs.map +1 -1
- package/dist/browser-dev/CartLineQuantityAdjustButton.mjs +48 -45
- package/dist/browser-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/browser-dev/CartProvider.mjs +315 -385
- package/dist/browser-dev/CartProvider.mjs.map +1 -1
- package/dist/browser-dev/ExternalVideo.mjs +35 -47
- package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
- package/dist/browser-dev/Image.mjs +335 -340
- package/dist/browser-dev/Image.mjs.map +1 -1
- package/dist/browser-dev/MediaFile.mjs +39 -61
- package/dist/browser-dev/MediaFile.mjs.map +1 -1
- package/dist/browser-dev/ModelViewer.mjs +115 -139
- package/dist/browser-dev/ModelViewer.mjs.map +1 -1
- package/dist/browser-dev/Money.mjs +53 -39
- package/dist/browser-dev/Money.mjs.map +1 -1
- package/dist/browser-dev/ProductPrice.mjs +44 -61
- package/dist/browser-dev/ProductPrice.mjs.map +1 -1
- package/dist/browser-dev/ProductProvider.mjs +147 -179
- package/dist/browser-dev/ProductProvider.mjs.map +1 -1
- package/dist/browser-dev/RichText.components.mjs +36 -46
- package/dist/browser-dev/RichText.components.mjs.map +1 -1
- package/dist/browser-dev/RichText.mjs +111 -154
- package/dist/browser-dev/RichText.mjs.map +1 -1
- package/dist/browser-dev/ShopPayButton.mjs +53 -81
- package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
- package/dist/browser-dev/ShopifyProvider.mjs +71 -84
- package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
- package/dist/browser-dev/Video.mjs +35 -52
- package/dist/browser-dev/Video.mjs.map +1 -1
- package/dist/browser-dev/analytics-constants.mjs +41 -43
- package/dist/browser-dev/analytics-constants.mjs.map +1 -1
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
- package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/browser-dev/analytics-utils.mjs +78 -56
- package/dist/browser-dev/analytics-utils.mjs.map +1 -1
- package/dist/browser-dev/analytics.mjs +112 -155
- package/dist/browser-dev/analytics.mjs.map +1 -1
- package/dist/browser-dev/cart-constants.mjs +11 -15
- package/dist/browser-dev/cart-constants.mjs.map +1 -1
- package/dist/browser-dev/cart-hooks.mjs +42 -57
- package/dist/browser-dev/cart-hooks.mjs.map +1 -1
- package/dist/browser-dev/cart-queries.mjs +59 -135
- package/dist/browser-dev/cart-queries.mjs.map +1 -1
- package/dist/browser-dev/codegen.helpers.mjs +31 -20
- package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
- package/dist/browser-dev/cookies-utils.mjs +44 -42
- package/dist/browser-dev/cookies-utils.mjs.map +1 -1
- package/dist/browser-dev/flatten-connection.mjs +23 -29
- package/dist/browser-dev/flatten-connection.mjs.map +1 -1
- package/dist/browser-dev/getProductOptions.mjs +248 -226
- package/dist/browser-dev/getProductOptions.mjs.map +1 -1
- package/dist/browser-dev/index.mjs +15 -70
- package/dist/browser-dev/load-script.mjs +38 -49
- package/dist/browser-dev/load-script.mjs.map +1 -1
- package/dist/browser-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
- package/dist/browser-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/browser-dev/optionValueDecoder.mjs +104 -86
- package/dist/browser-dev/optionValueDecoder.mjs.map +1 -1
- package/dist/browser-dev/packages/hydrogen-react/package.mjs +6 -0
- package/dist/browser-dev/packages/hydrogen-react/package.mjs.map +1 -0
- package/dist/browser-dev/parse-metafield.mjs +122 -134
- package/dist/browser-dev/parse-metafield.mjs.map +1 -1
- package/dist/browser-dev/storefront-api-constants.mjs +6 -5
- package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
- package/dist/browser-dev/storefront-client.mjs +62 -102
- package/dist/browser-dev/storefront-client.mjs.map +1 -1
- package/dist/browser-dev/tracking-utils.mjs +68 -88
- package/dist/browser-dev/tracking-utils.mjs.map +1 -1
- package/dist/browser-dev/useCartAPIStateMachine.mjs +188 -346
- package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/browser-dev/useCartActions.mjs +197 -172
- package/dist/browser-dev/useCartActions.mjs.map +1 -1
- package/dist/browser-dev/useMachine.mjs +50 -62
- package/dist/browser-dev/useMachine.mjs.map +1 -1
- package/dist/browser-dev/useMoney.mjs +176 -154
- package/dist/browser-dev/useMoney.mjs.map +1 -1
- package/dist/browser-dev/useSelectedOptionInUrlParam.mjs +17 -27
- package/dist/browser-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/browser-dev/useShopifyCookies.mjs +123 -138
- package/dist/browser-dev/useShopifyCookies.mjs.map +1 -1
- package/dist/browser-prod/AddToCartButton.mjs +60 -71
- package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
- package/dist/browser-prod/BaseButton.mjs +20 -26
- package/dist/browser-prod/BaseButton.mjs.map +1 -1
- package/dist/browser-prod/BuyNowButton.mjs +40 -45
- package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
- package/dist/browser-prod/CartCheckoutButton.mjs +28 -23
- package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-prod/CartCost.mjs +26 -22
- package/dist/browser-prod/CartCost.mjs.map +1 -1
- package/dist/browser-prod/CartLineProvider.mjs +23 -18
- package/dist/browser-prod/CartLineProvider.mjs.map +1 -1
- package/dist/browser-prod/CartLineQuantity.mjs +18 -9
- package/dist/browser-prod/CartLineQuantity.mjs.map +1 -1
- package/dist/browser-prod/CartLineQuantityAdjustButton.mjs +48 -45
- package/dist/browser-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/browser-prod/CartProvider.mjs +315 -385
- package/dist/browser-prod/CartProvider.mjs.map +1 -1
- package/dist/browser-prod/ExternalVideo.mjs +35 -47
- package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
- package/dist/browser-prod/Image.mjs +326 -325
- package/dist/browser-prod/Image.mjs.map +1 -1
- package/dist/browser-prod/MediaFile.mjs +44 -63
- package/dist/browser-prod/MediaFile.mjs.map +1 -1
- package/dist/browser-prod/ModelViewer.mjs +117 -135
- package/dist/browser-prod/ModelViewer.mjs.map +1 -1
- package/dist/browser-prod/Money.mjs +53 -39
- package/dist/browser-prod/Money.mjs.map +1 -1
- package/dist/browser-prod/ProductPrice.mjs +44 -61
- package/dist/browser-prod/ProductPrice.mjs.map +1 -1
- package/dist/browser-prod/ProductProvider.mjs +147 -179
- package/dist/browser-prod/ProductProvider.mjs.map +1 -1
- package/dist/browser-prod/RichText.components.mjs +36 -46
- package/dist/browser-prod/RichText.components.mjs.map +1 -1
- package/dist/browser-prod/RichText.mjs +111 -154
- package/dist/browser-prod/RichText.mjs.map +1 -1
- package/dist/browser-prod/ShopPayButton.mjs +53 -81
- package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
- package/dist/browser-prod/ShopifyProvider.mjs +71 -84
- package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
- package/dist/browser-prod/Video.mjs +35 -52
- package/dist/browser-prod/Video.mjs.map +1 -1
- package/dist/browser-prod/analytics-constants.mjs +41 -43
- package/dist/browser-prod/analytics-constants.mjs.map +1 -1
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
- package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/browser-prod/analytics-utils.mjs +78 -56
- package/dist/browser-prod/analytics-utils.mjs.map +1 -1
- package/dist/browser-prod/analytics.mjs +111 -153
- package/dist/browser-prod/analytics.mjs.map +1 -1
- package/dist/browser-prod/cart-constants.mjs +11 -15
- package/dist/browser-prod/cart-constants.mjs.map +1 -1
- package/dist/browser-prod/cart-hooks.mjs +42 -57
- package/dist/browser-prod/cart-hooks.mjs.map +1 -1
- package/dist/browser-prod/cart-queries.mjs +59 -135
- package/dist/browser-prod/cart-queries.mjs.map +1 -1
- package/dist/browser-prod/codegen.helpers.mjs +31 -20
- package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
- package/dist/browser-prod/cookies-utils.mjs +44 -42
- package/dist/browser-prod/cookies-utils.mjs.map +1 -1
- package/dist/browser-prod/flatten-connection.mjs +23 -25
- package/dist/browser-prod/flatten-connection.mjs.map +1 -1
- package/dist/browser-prod/getProductOptions.mjs +248 -226
- package/dist/browser-prod/getProductOptions.mjs.map +1 -1
- package/dist/browser-prod/index.mjs +15 -70
- package/dist/browser-prod/load-script.mjs +38 -49
- package/dist/browser-prod/load-script.mjs.map +1 -1
- package/dist/browser-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
- package/dist/browser-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/browser-prod/optionValueDecoder.mjs +104 -86
- package/dist/browser-prod/optionValueDecoder.mjs.map +1 -1
- package/dist/browser-prod/packages/hydrogen-react/package.mjs +6 -0
- package/dist/browser-prod/packages/hydrogen-react/package.mjs.map +1 -0
- package/dist/browser-prod/parse-metafield.mjs +134 -146
- package/dist/browser-prod/parse-metafield.mjs.map +1 -1
- package/dist/browser-prod/storefront-api-constants.mjs +6 -5
- package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
- package/dist/browser-prod/storefront-client.mjs +56 -84
- package/dist/browser-prod/storefront-client.mjs.map +1 -1
- package/dist/browser-prod/tracking-utils.mjs +68 -88
- package/dist/browser-prod/tracking-utils.mjs.map +1 -1
- package/dist/browser-prod/useCartAPIStateMachine.mjs +188 -346
- package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/browser-prod/useCartActions.mjs +197 -172
- package/dist/browser-prod/useCartActions.mjs.map +1 -1
- package/dist/browser-prod/useMachine.mjs +50 -62
- package/dist/browser-prod/useMachine.mjs.map +1 -1
- package/dist/browser-prod/useMoney.mjs +176 -154
- package/dist/browser-prod/useMoney.mjs.map +1 -1
- package/dist/browser-prod/useSelectedOptionInUrlParam.mjs +17 -27
- package/dist/browser-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/browser-prod/useShopifyCookies.mjs +123 -138
- package/dist/browser-prod/useShopifyCookies.mjs.map +1 -1
- package/dist/node-dev/AddToCartButton.js +64 -73
- package/dist/node-dev/AddToCartButton.js.map +1 -1
- package/dist/node-dev/AddToCartButton.mjs +60 -71
- package/dist/node-dev/AddToCartButton.mjs.map +1 -1
- package/dist/node-dev/BaseButton.js +21 -26
- package/dist/node-dev/BaseButton.js.map +1 -1
- package/dist/node-dev/BaseButton.mjs +20 -26
- package/dist/node-dev/BaseButton.mjs.map +1 -1
- package/dist/node-dev/BuyNowButton.js +42 -46
- package/dist/node-dev/BuyNowButton.js.map +1 -1
- package/dist/node-dev/BuyNowButton.mjs +40 -45
- package/dist/node-dev/BuyNowButton.mjs.map +1 -1
- package/dist/node-dev/CartCheckoutButton.js +30 -24
- package/dist/node-dev/CartCheckoutButton.js.map +1 -1
- package/dist/node-dev/CartCheckoutButton.mjs +28 -23
- package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-dev/CartCost.js +27 -22
- package/dist/node-dev/CartCost.js.map +1 -1
- package/dist/node-dev/CartCost.mjs +26 -22
- package/dist/node-dev/CartCost.mjs.map +1 -1
- package/dist/node-dev/CartLineProvider.js +24 -17
- package/dist/node-dev/CartLineProvider.js.map +1 -1
- package/dist/node-dev/CartLineProvider.mjs +23 -18
- package/dist/node-dev/CartLineProvider.mjs.map +1 -1
- package/dist/node-dev/CartLineQuantity.js +19 -9
- package/dist/node-dev/CartLineQuantity.js.map +1 -1
- package/dist/node-dev/CartLineQuantity.mjs +18 -9
- package/dist/node-dev/CartLineQuantity.mjs.map +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.js +50 -46
- package/dist/node-dev/CartLineQuantityAdjustButton.js.map +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.mjs +48 -45
- package/dist/node-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/node-dev/CartProvider.js +317 -385
- package/dist/node-dev/CartProvider.js.map +1 -1
- package/dist/node-dev/CartProvider.mjs +315 -385
- package/dist/node-dev/CartProvider.mjs.map +1 -1
- package/dist/node-dev/ExternalVideo.js +36 -47
- package/dist/node-dev/ExternalVideo.js.map +1 -1
- package/dist/node-dev/ExternalVideo.mjs +35 -47
- package/dist/node-dev/ExternalVideo.mjs.map +1 -1
- package/dist/node-dev/Image.js +337 -355
- package/dist/node-dev/Image.js.map +1 -1
- package/dist/node-dev/Image.mjs +335 -340
- package/dist/node-dev/Image.mjs.map +1 -1
- package/dist/node-dev/MediaFile.js +42 -63
- package/dist/node-dev/MediaFile.js.map +1 -1
- package/dist/node-dev/MediaFile.mjs +39 -61
- package/dist/node-dev/MediaFile.mjs.map +1 -1
- package/dist/node-dev/ModelViewer.js +116 -139
- package/dist/node-dev/ModelViewer.js.map +1 -1
- package/dist/node-dev/ModelViewer.mjs +115 -139
- package/dist/node-dev/ModelViewer.mjs.map +1 -1
- package/dist/node-dev/Money.js +54 -39
- package/dist/node-dev/Money.js.map +1 -1
- package/dist/node-dev/Money.mjs +53 -39
- package/dist/node-dev/Money.mjs.map +1 -1
- package/dist/node-dev/ProductPrice.js +45 -61
- package/dist/node-dev/ProductPrice.js.map +1 -1
- package/dist/node-dev/ProductPrice.mjs +44 -61
- package/dist/node-dev/ProductPrice.mjs.map +1 -1
- package/dist/node-dev/ProductProvider.js +148 -178
- package/dist/node-dev/ProductProvider.js.map +1 -1
- package/dist/node-dev/ProductProvider.mjs +147 -179
- package/dist/node-dev/ProductProvider.mjs.map +1 -1
- package/dist/node-dev/RichText.components.js +37 -46
- package/dist/node-dev/RichText.components.js.map +1 -1
- package/dist/node-dev/RichText.components.mjs +36 -46
- package/dist/node-dev/RichText.components.mjs.map +1 -1
- package/dist/node-dev/RichText.js +112 -154
- package/dist/node-dev/RichText.js.map +1 -1
- package/dist/node-dev/RichText.mjs +111 -154
- package/dist/node-dev/RichText.mjs.map +1 -1
- package/dist/node-dev/ShopPayButton.js +54 -81
- package/dist/node-dev/ShopPayButton.js.map +1 -1
- package/dist/node-dev/ShopPayButton.mjs +53 -81
- package/dist/node-dev/ShopPayButton.mjs.map +1 -1
- package/dist/node-dev/ShopifyProvider.js +73 -83
- package/dist/node-dev/ShopifyProvider.js.map +1 -1
- package/dist/node-dev/ShopifyProvider.mjs +71 -84
- package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
- package/dist/node-dev/Video.js +36 -52
- package/dist/node-dev/Video.js.map +1 -1
- package/dist/node-dev/Video.mjs +35 -52
- package/dist/node-dev/Video.mjs.map +1 -1
- package/dist/node-dev/_virtual/_rolldown/runtime.js +23 -0
- package/dist/node-dev/analytics-constants.js +40 -39
- package/dist/node-dev/analytics-constants.js.map +1 -1
- package/dist/node-dev/analytics-constants.mjs +41 -43
- package/dist/node-dev/analytics-constants.mjs.map +1 -1
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +128 -210
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js +40 -51
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/node-dev/analytics-utils.js +77 -52
- package/dist/node-dev/analytics-utils.js.map +1 -1
- package/dist/node-dev/analytics-utils.mjs +78 -56
- package/dist/node-dev/analytics-utils.mjs.map +1 -1
- package/dist/node-dev/analytics.js +114 -156
- package/dist/node-dev/analytics.js.map +1 -1
- package/dist/node-dev/analytics.mjs +112 -155
- package/dist/node-dev/analytics.mjs.map +1 -1
- package/dist/node-dev/cart-constants.js +10 -9
- package/dist/node-dev/cart-constants.js.map +1 -1
- package/dist/node-dev/cart-constants.mjs +11 -15
- package/dist/node-dev/cart-constants.mjs.map +1 -1
- package/dist/node-dev/cart-hooks.js +43 -57
- package/dist/node-dev/cart-hooks.js.map +1 -1
- package/dist/node-dev/cart-hooks.mjs +42 -57
- package/dist/node-dev/cart-hooks.mjs.map +1 -1
- package/dist/node-dev/cart-queries.js +58 -125
- package/dist/node-dev/cart-queries.js.map +1 -1
- package/dist/node-dev/cart-queries.mjs +59 -135
- package/dist/node-dev/cart-queries.mjs.map +1 -1
- package/dist/node-dev/codegen.helpers.js +30 -18
- package/dist/node-dev/codegen.helpers.js.map +1 -1
- package/dist/node-dev/codegen.helpers.mjs +31 -20
- package/dist/node-dev/codegen.helpers.mjs.map +1 -1
- package/dist/node-dev/cookies-utils.js +45 -42
- package/dist/node-dev/cookies-utils.js.map +1 -1
- package/dist/node-dev/cookies-utils.mjs +44 -42
- package/dist/node-dev/cookies-utils.mjs.map +1 -1
- package/dist/node-dev/flatten-connection.js +22 -28
- package/dist/node-dev/flatten-connection.js.map +1 -1
- package/dist/node-dev/flatten-connection.mjs +23 -29
- package/dist/node-dev/flatten-connection.mjs.map +1 -1
- package/dist/node-dev/getProductOptions.js +248 -224
- package/dist/node-dev/getProductOptions.js.map +1 -1
- package/dist/node-dev/getProductOptions.mjs +248 -226
- package/dist/node-dev/getProductOptions.mjs.map +1 -1
- package/dist/node-dev/index.js +88 -90
- package/dist/node-dev/index.mjs +15 -70
- package/dist/node-dev/load-script.js +38 -48
- package/dist/node-dev/load-script.js.map +1 -1
- package/dist/node-dev/load-script.mjs +38 -49
- package/dist/node-dev/load-script.mjs.map +1 -1
- package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js +185 -124
- package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js.map +1 -1
- package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
- package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/node-dev/optionValueDecoder.js +103 -84
- package/dist/node-dev/optionValueDecoder.js.map +1 -1
- package/dist/node-dev/optionValueDecoder.mjs +104 -86
- package/dist/node-dev/optionValueDecoder.mjs.map +1 -1
- package/dist/node-dev/packages/hydrogen-react/package.js +6 -0
- package/dist/node-dev/packages/hydrogen-react/package.js.map +1 -0
- package/dist/node-dev/packages/hydrogen-react/package.mjs +6 -0
- package/dist/node-dev/packages/hydrogen-react/package.mjs.map +1 -0
- package/dist/node-dev/parse-metafield.js +122 -134
- package/dist/node-dev/parse-metafield.js.map +1 -1
- package/dist/node-dev/parse-metafield.mjs +122 -134
- package/dist/node-dev/parse-metafield.mjs.map +1 -1
- package/dist/node-dev/storefront-api-constants.js +5 -4
- package/dist/node-dev/storefront-api-constants.js.map +1 -1
- package/dist/node-dev/storefront-api-constants.mjs +6 -5
- package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
- package/dist/node-dev/storefront-client.js +62 -101
- package/dist/node-dev/storefront-client.js.map +1 -1
- package/dist/node-dev/storefront-client.mjs +62 -102
- package/dist/node-dev/storefront-client.mjs.map +1 -1
- package/dist/node-dev/tracking-utils.js +67 -85
- package/dist/node-dev/tracking-utils.js.map +1 -1
- package/dist/node-dev/tracking-utils.mjs +68 -88
- package/dist/node-dev/tracking-utils.mjs.map +1 -1
- package/dist/node-dev/useCartAPIStateMachine.js +192 -349
- package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
- package/dist/node-dev/useCartAPIStateMachine.mjs +188 -346
- package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/node-dev/useCartActions.js +198 -172
- package/dist/node-dev/useCartActions.js.map +1 -1
- package/dist/node-dev/useCartActions.mjs +197 -172
- package/dist/node-dev/useCartActions.mjs.map +1 -1
- package/dist/node-dev/useMachine.js +50 -61
- package/dist/node-dev/useMachine.js.map +1 -1
- package/dist/node-dev/useMachine.mjs +50 -62
- package/dist/node-dev/useMachine.mjs.map +1 -1
- package/dist/node-dev/useMoney.js +177 -154
- package/dist/node-dev/useMoney.js.map +1 -1
- package/dist/node-dev/useMoney.mjs +176 -154
- package/dist/node-dev/useMoney.mjs.map +1 -1
- package/dist/node-dev/useSelectedOptionInUrlParam.js +18 -27
- package/dist/node-dev/useSelectedOptionInUrlParam.js.map +1 -1
- package/dist/node-dev/useSelectedOptionInUrlParam.mjs +17 -27
- package/dist/node-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/node-dev/useShopifyCookies.js +124 -138
- package/dist/node-dev/useShopifyCookies.js.map +1 -1
- package/dist/node-dev/useShopifyCookies.mjs +123 -138
- package/dist/node-dev/useShopifyCookies.mjs.map +1 -1
- package/dist/node-prod/AddToCartButton.js +64 -73
- package/dist/node-prod/AddToCartButton.js.map +1 -1
- package/dist/node-prod/AddToCartButton.mjs +60 -71
- package/dist/node-prod/AddToCartButton.mjs.map +1 -1
- package/dist/node-prod/BaseButton.js +21 -26
- package/dist/node-prod/BaseButton.js.map +1 -1
- package/dist/node-prod/BaseButton.mjs +20 -26
- package/dist/node-prod/BaseButton.mjs.map +1 -1
- package/dist/node-prod/BuyNowButton.js +42 -46
- package/dist/node-prod/BuyNowButton.js.map +1 -1
- package/dist/node-prod/BuyNowButton.mjs +40 -45
- package/dist/node-prod/BuyNowButton.mjs.map +1 -1
- package/dist/node-prod/CartCheckoutButton.js +30 -24
- package/dist/node-prod/CartCheckoutButton.js.map +1 -1
- package/dist/node-prod/CartCheckoutButton.mjs +28 -23
- package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-prod/CartCost.js +27 -22
- package/dist/node-prod/CartCost.js.map +1 -1
- package/dist/node-prod/CartCost.mjs +26 -22
- package/dist/node-prod/CartCost.mjs.map +1 -1
- package/dist/node-prod/CartLineProvider.js +24 -17
- package/dist/node-prod/CartLineProvider.js.map +1 -1
- package/dist/node-prod/CartLineProvider.mjs +23 -18
- package/dist/node-prod/CartLineProvider.mjs.map +1 -1
- package/dist/node-prod/CartLineQuantity.js +19 -9
- package/dist/node-prod/CartLineQuantity.js.map +1 -1
- package/dist/node-prod/CartLineQuantity.mjs +18 -9
- package/dist/node-prod/CartLineQuantity.mjs.map +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.js +50 -46
- package/dist/node-prod/CartLineQuantityAdjustButton.js.map +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.mjs +48 -45
- package/dist/node-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/node-prod/CartProvider.js +317 -385
- package/dist/node-prod/CartProvider.js.map +1 -1
- package/dist/node-prod/CartProvider.mjs +315 -385
- package/dist/node-prod/CartProvider.mjs.map +1 -1
- package/dist/node-prod/ExternalVideo.js +36 -47
- package/dist/node-prod/ExternalVideo.js.map +1 -1
- package/dist/node-prod/ExternalVideo.mjs +35 -47
- package/dist/node-prod/ExternalVideo.mjs.map +1 -1
- package/dist/node-prod/Image.js +328 -340
- package/dist/node-prod/Image.js.map +1 -1
- package/dist/node-prod/Image.mjs +326 -325
- package/dist/node-prod/Image.mjs.map +1 -1
- package/dist/node-prod/MediaFile.js +47 -65
- package/dist/node-prod/MediaFile.js.map +1 -1
- package/dist/node-prod/MediaFile.mjs +44 -63
- package/dist/node-prod/MediaFile.mjs.map +1 -1
- package/dist/node-prod/ModelViewer.js +118 -135
- package/dist/node-prod/ModelViewer.js.map +1 -1
- package/dist/node-prod/ModelViewer.mjs +117 -135
- package/dist/node-prod/ModelViewer.mjs.map +1 -1
- package/dist/node-prod/Money.js +54 -39
- package/dist/node-prod/Money.js.map +1 -1
- package/dist/node-prod/Money.mjs +53 -39
- package/dist/node-prod/Money.mjs.map +1 -1
- package/dist/node-prod/ProductPrice.js +45 -61
- package/dist/node-prod/ProductPrice.js.map +1 -1
- package/dist/node-prod/ProductPrice.mjs +44 -61
- package/dist/node-prod/ProductPrice.mjs.map +1 -1
- package/dist/node-prod/ProductProvider.js +148 -178
- package/dist/node-prod/ProductProvider.js.map +1 -1
- package/dist/node-prod/ProductProvider.mjs +147 -179
- package/dist/node-prod/ProductProvider.mjs.map +1 -1
- package/dist/node-prod/RichText.components.js +37 -46
- package/dist/node-prod/RichText.components.js.map +1 -1
- package/dist/node-prod/RichText.components.mjs +36 -46
- package/dist/node-prod/RichText.components.mjs.map +1 -1
- package/dist/node-prod/RichText.js +112 -154
- package/dist/node-prod/RichText.js.map +1 -1
- package/dist/node-prod/RichText.mjs +111 -154
- package/dist/node-prod/RichText.mjs.map +1 -1
- package/dist/node-prod/ShopPayButton.js +54 -81
- package/dist/node-prod/ShopPayButton.js.map +1 -1
- package/dist/node-prod/ShopPayButton.mjs +53 -81
- package/dist/node-prod/ShopPayButton.mjs.map +1 -1
- package/dist/node-prod/ShopifyProvider.js +73 -83
- package/dist/node-prod/ShopifyProvider.js.map +1 -1
- package/dist/node-prod/ShopifyProvider.mjs +71 -84
- package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
- package/dist/node-prod/Video.js +36 -52
- package/dist/node-prod/Video.js.map +1 -1
- package/dist/node-prod/Video.mjs +35 -52
- package/dist/node-prod/Video.mjs.map +1 -1
- package/dist/node-prod/_virtual/_rolldown/runtime.js +23 -0
- package/dist/node-prod/analytics-constants.js +40 -39
- package/dist/node-prod/analytics-constants.js.map +1 -1
- package/dist/node-prod/analytics-constants.mjs +41 -43
- package/dist/node-prod/analytics-constants.mjs.map +1 -1
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +128 -210
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js +40 -51
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/node-prod/analytics-utils.js +77 -52
- package/dist/node-prod/analytics-utils.js.map +1 -1
- package/dist/node-prod/analytics-utils.mjs +78 -56
- package/dist/node-prod/analytics-utils.mjs.map +1 -1
- package/dist/node-prod/analytics.js +113 -154
- package/dist/node-prod/analytics.js.map +1 -1
- package/dist/node-prod/analytics.mjs +111 -153
- package/dist/node-prod/analytics.mjs.map +1 -1
- package/dist/node-prod/cart-constants.js +10 -9
- package/dist/node-prod/cart-constants.js.map +1 -1
- package/dist/node-prod/cart-constants.mjs +11 -15
- package/dist/node-prod/cart-constants.mjs.map +1 -1
- package/dist/node-prod/cart-hooks.js +43 -57
- package/dist/node-prod/cart-hooks.js.map +1 -1
- package/dist/node-prod/cart-hooks.mjs +42 -57
- package/dist/node-prod/cart-hooks.mjs.map +1 -1
- package/dist/node-prod/cart-queries.js +58 -125
- package/dist/node-prod/cart-queries.js.map +1 -1
- package/dist/node-prod/cart-queries.mjs +59 -135
- package/dist/node-prod/cart-queries.mjs.map +1 -1
- package/dist/node-prod/codegen.helpers.js +30 -18
- package/dist/node-prod/codegen.helpers.js.map +1 -1
- package/dist/node-prod/codegen.helpers.mjs +31 -20
- package/dist/node-prod/codegen.helpers.mjs.map +1 -1
- package/dist/node-prod/cookies-utils.js +45 -42
- package/dist/node-prod/cookies-utils.js.map +1 -1
- package/dist/node-prod/cookies-utils.mjs +44 -42
- package/dist/node-prod/cookies-utils.mjs.map +1 -1
- package/dist/node-prod/flatten-connection.js +22 -24
- package/dist/node-prod/flatten-connection.js.map +1 -1
- package/dist/node-prod/flatten-connection.mjs +23 -25
- package/dist/node-prod/flatten-connection.mjs.map +1 -1
- package/dist/node-prod/getProductOptions.js +248 -224
- package/dist/node-prod/getProductOptions.js.map +1 -1
- package/dist/node-prod/getProductOptions.mjs +248 -226
- package/dist/node-prod/getProductOptions.mjs.map +1 -1
- package/dist/node-prod/index.js +88 -90
- package/dist/node-prod/index.mjs +15 -70
- package/dist/node-prod/load-script.js +38 -48
- package/dist/node-prod/load-script.js.map +1 -1
- package/dist/node-prod/load-script.mjs +38 -49
- package/dist/node-prod/load-script.mjs.map +1 -1
- package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js +185 -124
- package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js.map +1 -1
- package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
- package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/node-prod/optionValueDecoder.js +103 -84
- package/dist/node-prod/optionValueDecoder.js.map +1 -1
- package/dist/node-prod/optionValueDecoder.mjs +104 -86
- package/dist/node-prod/optionValueDecoder.mjs.map +1 -1
- package/dist/node-prod/packages/hydrogen-react/package.js +6 -0
- package/dist/node-prod/packages/hydrogen-react/package.js.map +1 -0
- package/dist/node-prod/packages/hydrogen-react/package.mjs +6 -0
- package/dist/node-prod/packages/hydrogen-react/package.mjs.map +1 -0
- package/dist/node-prod/parse-metafield.js +134 -146
- package/dist/node-prod/parse-metafield.js.map +1 -1
- package/dist/node-prod/parse-metafield.mjs +134 -146
- package/dist/node-prod/parse-metafield.mjs.map +1 -1
- package/dist/node-prod/storefront-api-constants.js +5 -4
- package/dist/node-prod/storefront-api-constants.js.map +1 -1
- package/dist/node-prod/storefront-api-constants.mjs +6 -5
- package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
- package/dist/node-prod/storefront-client.js +56 -83
- package/dist/node-prod/storefront-client.js.map +1 -1
- package/dist/node-prod/storefront-client.mjs +56 -84
- package/dist/node-prod/storefront-client.mjs.map +1 -1
- package/dist/node-prod/tracking-utils.js +67 -85
- package/dist/node-prod/tracking-utils.js.map +1 -1
- package/dist/node-prod/tracking-utils.mjs +68 -88
- package/dist/node-prod/tracking-utils.mjs.map +1 -1
- package/dist/node-prod/useCartAPIStateMachine.js +192 -349
- package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
- package/dist/node-prod/useCartAPIStateMachine.mjs +188 -346
- package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/node-prod/useCartActions.js +198 -172
- package/dist/node-prod/useCartActions.js.map +1 -1
- package/dist/node-prod/useCartActions.mjs +197 -172
- package/dist/node-prod/useCartActions.mjs.map +1 -1
- package/dist/node-prod/useMachine.js +50 -61
- package/dist/node-prod/useMachine.js.map +1 -1
- package/dist/node-prod/useMachine.mjs +50 -62
- package/dist/node-prod/useMachine.mjs.map +1 -1
- package/dist/node-prod/useMoney.js +177 -154
- package/dist/node-prod/useMoney.js.map +1 -1
- package/dist/node-prod/useMoney.mjs +176 -154
- package/dist/node-prod/useMoney.mjs.map +1 -1
- package/dist/node-prod/useSelectedOptionInUrlParam.js +18 -27
- package/dist/node-prod/useSelectedOptionInUrlParam.js.map +1 -1
- package/dist/node-prod/useSelectedOptionInUrlParam.mjs +17 -27
- package/dist/node-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/node-prod/useShopifyCookies.js +124 -138
- package/dist/node-prod/useShopifyCookies.js.map +1 -1
- package/dist/node-prod/useShopifyCookies.mjs +123 -138
- package/dist/node-prod/useShopifyCookies.mjs.map +1 -1
- package/dist/types/AddToCartButton.d.ts +2 -0
- package/dist/types/BuyNowButton.d.ts +2 -0
- package/dist/types/CartCheckoutButton.d.ts +2 -0
- package/dist/types/CartCost.d.ts +2 -0
- package/dist/types/CartLineProvider.d.ts +2 -0
- package/dist/types/CartLineQuantity.d.ts +2 -0
- package/dist/types/CartLineQuantityAdjustButton.d.ts +1 -0
- package/dist/types/CartProvider.d.ts +7 -1
- package/dist/types/ExternalVideo.d.ts +4 -0
- package/dist/types/Image.d.ts +2 -0
- package/dist/types/MediaFile.d.ts +4 -0
- package/dist/types/ModelViewer.d.ts +1 -0
- package/dist/types/Money.d.ts +1 -0
- package/dist/types/ProductPrice.d.ts +2 -0
- package/dist/types/ProductProvider.d.ts +2 -0
- package/dist/types/RichText.d.ts +2 -0
- package/dist/types/ShopPayButton.d.ts +1 -0
- package/dist/types/ShopifyProvider.d.ts +2 -0
- package/dist/types/Video.d.ts +2 -0
- package/dist/types/analytics-constants.d.ts +9 -0
- package/dist/types/analytics-types.d.ts +1 -0
- package/dist/types/analytics-utils.d.ts +1 -0
- package/dist/types/analytics.d.ts +6 -1
- package/dist/types/cart-queries.d.ts +13 -9
- package/dist/types/codegen.helpers.d.ts +2 -0
- package/dist/types/cookies-utils.d.ts +2 -1
- package/dist/types/flatten-connection.d.ts +3 -0
- package/dist/types/getProductOptions.d.ts +3 -0
- package/dist/types/load-script.d.ts +3 -1
- package/dist/types/optionValueDecoder.d.ts +3 -0
- package/dist/types/parse-metafield.d.ts +1 -0
- package/dist/types/storefront-client.d.ts +1 -0
- package/dist/types/tracking-utils.d.ts +2 -2
- package/dist/types/useMoney.d.ts +1 -0
- package/dist/types/useSelectedOptionInUrlParam.d.ts +1 -0
- package/dist/types/useShopifyCookies.d.ts +1 -0
- package/dist/umd/hydrogen-react.dev.js +3957 -4483
- package/dist/umd/hydrogen-react.dev.js.map +1 -1
- package/dist/umd/hydrogen-react.prod.js +42 -101
- package/dist/umd/hydrogen-react.prod.js.map +1 -1
- package/package.json +5 -5
- package/dist/browser-dev/index.mjs.map +0 -1
- package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +0 -5
- package/dist/browser-dev/packages/hydrogen-react/package.json.mjs.map +0 -1
- package/dist/browser-prod/index.mjs.map +0 -1
- package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +0 -5
- package/dist/browser-prod/packages/hydrogen-react/package.json.mjs.map +0 -1
- package/dist/node-dev/index.js.map +0 -1
- package/dist/node-dev/index.mjs.map +0 -1
- package/dist/node-dev/packages/hydrogen-react/package.json.js +0 -5
- package/dist/node-dev/packages/hydrogen-react/package.json.js.map +0 -1
- package/dist/node-dev/packages/hydrogen-react/package.json.mjs +0 -5
- package/dist/node-dev/packages/hydrogen-react/package.json.mjs.map +0 -1
- package/dist/node-prod/index.js.map +0 -1
- package/dist/node-prod/index.mjs.map +0 -1
- package/dist/node-prod/packages/hydrogen-react/package.json.js +0 -5
- package/dist/node-prod/packages/hydrogen-react/package.json.js.map +0 -1
- package/dist/node-prod/packages/hydrogen-react/package.json.mjs +0 -5
- package/dist/node-prod/packages/hydrogen-react/package.json.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart-hooks.mjs","sources":["../../src/cart-hooks.tsx"],"sourcesContent":["import {useState, useCallback} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {CartInput, Cart as CartType} from './storefront-api-types.js';\nimport {CartCreate, defaultCartFragment} from './cart-queries.js';\nimport {Cart} from './cart-types.js';\nimport {\n SHOPIFY_STOREFRONT_ID_HEADER,\n SHOPIFY_STOREFRONT_Y_HEADER,\n SHOPIFY_STOREFRONT_S_HEADER,\n} from './cart-constants.js';\nimport type {StorefrontApiResponseOkPartial} from './storefront-api-response.types.js';\nimport {\n getTrackingValues,\n SHOPIFY_UNIQUE_TOKEN_HEADER,\n SHOPIFY_VISIT_TOKEN_HEADER,\n} from './tracking-utils.js';\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function useCartFetch() {\n const {\n storefrontId,\n getPublicTokenHeaders,\n getStorefrontApiUrl,\n sameDomainForStorefrontApi,\n } = useShop();\n\n return useCallback(\n <ReturnDataGeneric,>({\n query,\n variables,\n }: {\n query: string;\n variables: Record<string, unknown>;\n }): Promise<StorefrontApiResponseOkPartial<ReturnDataGeneric>> => {\n const headers = getPublicTokenHeaders({contentType: 'json'});\n\n if (storefrontId) {\n headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;\n }\n\n if (!sameDomainForStorefrontApi) {\n // If we are in cross-domain mode, add tracking headers manually.\n // Otherwise, for same-domain we rely on the browser to attach cookies automatically.\n const {uniqueToken, visitToken} = getTrackingValues();\n if (uniqueToken) {\n headers[SHOPIFY_STOREFRONT_Y_HEADER] = uniqueToken;\n headers[SHOPIFY_UNIQUE_TOKEN_HEADER] = uniqueToken;\n }\n if (visitToken) {\n headers[SHOPIFY_STOREFRONT_S_HEADER] = visitToken;\n headers[SHOPIFY_VISIT_TOKEN_HEADER] = visitToken;\n }\n }\n\n return fetch(getStorefrontApiUrl(), {\n method: 'POST',\n headers,\n body: JSON.stringify({\n query: query.toString(),\n variables,\n }),\n })\n .then(\n (res) =>\n res.json() as StorefrontApiResponseOkPartial<ReturnDataGeneric>,\n )\n .catch((error) => {\n return {\n data: undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n errors: error?.toString(),\n };\n });\n },\n [\n getPublicTokenHeaders,\n storefrontId,\n getStorefrontApiUrl,\n sameDomainForStorefrontApi,\n ],\n );\n}\n\nexport function useInstantCheckout(): {\n cart: Cart | undefined;\n checkoutUrl: Cart['checkoutUrl'];\n error: string | undefined;\n createInstantCheckout: (cartInput: CartInput) => Promise<void>;\n} {\n const [cart, updateCart] = useState<Cart | undefined>();\n const [checkoutUrl, updateCheckoutUrl] = useState<Cart['checkoutUrl']>();\n const [error, updateError] = useState<string | undefined>();\n\n const fetch = useCartFetch();\n\n const createInstantCheckout = useCallback(\n async (cartInput: CartInput) => {\n const {data, errors} = await fetch<{\n cartCreate: {cart: CartType};\n }>({\n query: CartCreate(defaultCartFragment),\n variables: {\n input: cartInput,\n },\n });\n\n if (errors) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n updateError(errors.toString());\n updateCart(undefined);\n updateCheckoutUrl(undefined);\n }\n\n if (data?.cartCreate?.cart) {\n const dataCart = data.cartCreate.cart;\n updateCart({\n ...dataCart,\n lines: flattenConnection(dataCart.lines),\n note: dataCart.note ?? undefined,\n });\n updateCheckoutUrl(dataCart.checkoutUrl);\n }\n },\n [fetch],\n );\n\n return {cart, checkoutUrl, error, createInstantCheckout};\n}\n"],"
|
|
1
|
+
{"version":3,"file":"cart-hooks.mjs","names":[],"sources":["../../src/cart-hooks.tsx"],"sourcesContent":["import {useState, useCallback} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {CartInput, Cart as CartType} from './storefront-api-types.js';\nimport {CartCreate, defaultCartFragment} from './cart-queries.js';\nimport {Cart} from './cart-types.js';\nimport {\n SHOPIFY_STOREFRONT_ID_HEADER,\n SHOPIFY_STOREFRONT_Y_HEADER,\n SHOPIFY_STOREFRONT_S_HEADER,\n} from './cart-constants.js';\nimport type {StorefrontApiResponseOkPartial} from './storefront-api-response.types.js';\nimport {\n getTrackingValues,\n SHOPIFY_UNIQUE_TOKEN_HEADER,\n SHOPIFY_VISIT_TOKEN_HEADER,\n} from './tracking-utils.js';\n\n// eslint-disable-next-line @typescript-eslint/explicit-function-return-type\nexport function useCartFetch() {\n const {\n storefrontId,\n getPublicTokenHeaders,\n getStorefrontApiUrl,\n sameDomainForStorefrontApi,\n } = useShop();\n\n return useCallback(\n <ReturnDataGeneric,>({\n query,\n variables,\n }: {\n query: string;\n variables: Record<string, unknown>;\n }): Promise<StorefrontApiResponseOkPartial<ReturnDataGeneric>> => {\n const headers = getPublicTokenHeaders({contentType: 'json'});\n\n if (storefrontId) {\n headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;\n }\n\n if (!sameDomainForStorefrontApi) {\n // If we are in cross-domain mode, add tracking headers manually.\n // Otherwise, for same-domain we rely on the browser to attach cookies automatically.\n const {uniqueToken, visitToken} = getTrackingValues();\n if (uniqueToken) {\n headers[SHOPIFY_STOREFRONT_Y_HEADER] = uniqueToken;\n headers[SHOPIFY_UNIQUE_TOKEN_HEADER] = uniqueToken;\n }\n if (visitToken) {\n headers[SHOPIFY_STOREFRONT_S_HEADER] = visitToken;\n headers[SHOPIFY_VISIT_TOKEN_HEADER] = visitToken;\n }\n }\n\n return fetch(getStorefrontApiUrl(), {\n method: 'POST',\n headers,\n body: JSON.stringify({\n query: query.toString(),\n variables,\n }),\n })\n .then(\n (res) =>\n res.json() as StorefrontApiResponseOkPartial<ReturnDataGeneric>,\n )\n .catch((error) => {\n return {\n data: undefined,\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n errors: error?.toString(),\n };\n });\n },\n [\n getPublicTokenHeaders,\n storefrontId,\n getStorefrontApiUrl,\n sameDomainForStorefrontApi,\n ],\n );\n}\n\nexport function useInstantCheckout(): {\n cart: Cart | undefined;\n checkoutUrl: Cart['checkoutUrl'];\n error: string | undefined;\n createInstantCheckout: (cartInput: CartInput) => Promise<void>;\n} {\n const [cart, updateCart] = useState<Cart | undefined>();\n const [checkoutUrl, updateCheckoutUrl] = useState<Cart['checkoutUrl']>();\n const [error, updateError] = useState<string | undefined>();\n\n const fetch = useCartFetch();\n\n const createInstantCheckout = useCallback(\n async (cartInput: CartInput) => {\n const {data, errors} = await fetch<{\n cartCreate: {cart: CartType};\n }>({\n query: CartCreate(defaultCartFragment),\n variables: {\n input: cartInput,\n },\n });\n\n if (errors) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n updateError(errors.toString());\n updateCart(undefined);\n updateCheckoutUrl(undefined);\n }\n\n if (data?.cartCreate?.cart) {\n const dataCart = data.cartCreate.cart;\n updateCart({\n ...dataCart,\n lines: flattenConnection(dataCart.lines),\n note: dataCart.note ?? undefined,\n });\n updateCheckoutUrl(dataCart.checkoutUrl);\n }\n },\n [fetch],\n );\n\n return {cart, checkoutUrl, error, createInstantCheckout};\n}\n"],"mappings":";;;;;AAmBA,SAAgB,eAAe;CAC7B,MAAM,EACJ,cACA,uBACA,qBACA,+BACE,SAAS;AAEb,QAAO,aACgB,EACnB,OACA,gBAIgE;EAChE,MAAM,UAAU,sBAAsB,EAAC,aAAa,QAAO,CAAC;AAE5D,MAAI,aACF,SAAQ,gCAAgC;AAG1C,MAAI,CAAC,4BAA4B;GAG/B,MAAM,EAAC,aAAa,eAAc,mBAAmB;AACrD,OAAI,aAAa;AACf,YAAQ,+BAA+B;AACvC,YAAQ,+BAA+B;;AAEzC,OAAI,YAAY;AACd,YAAQ,+BAA+B;AACvC,YAAQ,8BAA8B;;;AAI1C,SAAO,MAAM,qBAAqB,EAAE;GAClC,QAAQ;GACR;GACA,MAAM,KAAK,UAAU;IACnB,OAAO,MAAM,UAAU;IACvB;IACD,CAAC;GACH,CAAC,CACC,MACE,QACC,IAAI,MAAM,CACb,CACA,OAAO,UAAU;AAChB,UAAO;IACL,MAAM,KAAA;IAEN,QAAQ,OAAO,UAAU;IAC1B;IACD;IAEN;EACE;EACA;EACA;EACA;EACD,CACF"}
|
|
@@ -1,19 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
//#region src/cart-queries.ts
|
|
2
|
+
function getInContextVariables(includeVisitorConsent) {
|
|
3
|
+
const base = `$country: CountryCode = ZZ
|
|
4
|
+
$language: LanguageCode`;
|
|
5
|
+
return includeVisitorConsent ? `${base}
|
|
6
|
+
$visitorConsent: VisitorConsent` : base;
|
|
7
|
+
}
|
|
8
|
+
function getInContextDirective(includeVisitorConsent) {
|
|
9
|
+
return includeVisitorConsent ? `@inContext(
|
|
10
|
+
country: $country
|
|
11
|
+
language: $language
|
|
12
|
+
visitorConsent: $visitorConsent
|
|
13
|
+
)` : `@inContext(
|
|
14
|
+
country: $country
|
|
15
|
+
language: $language
|
|
16
|
+
)`;
|
|
17
|
+
}
|
|
18
|
+
var CartLineAdd = (cartFragment, options = {}) => `
|
|
4
19
|
mutation CartLineAdd(
|
|
5
20
|
$cartId: ID!
|
|
6
21
|
$lines: [CartLineInput!]!
|
|
7
22
|
$numCartLines: Int = 250
|
|
8
|
-
$
|
|
9
|
-
$language: LanguageCode
|
|
10
|
-
$visitorConsent: VisitorConsent
|
|
23
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
11
24
|
)
|
|
12
|
-
|
|
13
|
-
country: $country
|
|
14
|
-
language: $language
|
|
15
|
-
visitorConsent: $visitorConsent
|
|
16
|
-
) {
|
|
25
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
17
26
|
cartLinesAdd(cartId: $cartId, lines: $lines) {
|
|
18
27
|
cart {
|
|
19
28
|
...CartFragment
|
|
@@ -22,23 +31,14 @@ const CartLineAdd = (cartFragment) => (
|
|
|
22
31
|
}
|
|
23
32
|
|
|
24
33
|
${cartFragment}
|
|
25
|
-
|
|
26
|
-
)
|
|
27
|
-
const CartCreate = (cartFragment) => (
|
|
28
|
-
/* GraphQL */
|
|
29
|
-
`
|
|
34
|
+
`;
|
|
35
|
+
var CartCreate = (cartFragment, options = {}) => `
|
|
30
36
|
mutation CartCreate(
|
|
31
37
|
$input: CartInput!
|
|
32
38
|
$numCartLines: Int = 250
|
|
33
|
-
$
|
|
34
|
-
$language: LanguageCode
|
|
35
|
-
$visitorConsent: VisitorConsent
|
|
39
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
36
40
|
)
|
|
37
|
-
|
|
38
|
-
country: $country
|
|
39
|
-
language: $language
|
|
40
|
-
visitorConsent: $visitorConsent
|
|
41
|
-
) {
|
|
41
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
42
42
|
cartCreate(input: $input) {
|
|
43
43
|
cart {
|
|
44
44
|
...CartFragment
|
|
@@ -47,24 +47,15 @@ const CartCreate = (cartFragment) => (
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
${cartFragment}
|
|
50
|
-
|
|
51
|
-
)
|
|
52
|
-
const CartLineRemove = (cartFragment) => (
|
|
53
|
-
/* GraphQL */
|
|
54
|
-
`
|
|
50
|
+
`;
|
|
51
|
+
var CartLineRemove = (cartFragment, options = {}) => `
|
|
55
52
|
mutation CartLineRemove(
|
|
56
53
|
$cartId: ID!
|
|
57
54
|
$lines: [ID!]!
|
|
58
55
|
$numCartLines: Int = 250
|
|
59
|
-
$
|
|
60
|
-
$language: LanguageCode
|
|
61
|
-
$visitorConsent: VisitorConsent
|
|
56
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
62
57
|
)
|
|
63
|
-
|
|
64
|
-
country: $country
|
|
65
|
-
language: $language
|
|
66
|
-
visitorConsent: $visitorConsent
|
|
67
|
-
) {
|
|
58
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
68
59
|
cartLinesRemove(cartId: $cartId, lineIds: $lines) {
|
|
69
60
|
cart {
|
|
70
61
|
...CartFragment
|
|
@@ -73,24 +64,15 @@ const CartLineRemove = (cartFragment) => (
|
|
|
73
64
|
}
|
|
74
65
|
|
|
75
66
|
${cartFragment}
|
|
76
|
-
|
|
77
|
-
)
|
|
78
|
-
const CartLineUpdate = (cartFragment) => (
|
|
79
|
-
/* GraphQL */
|
|
80
|
-
`
|
|
67
|
+
`;
|
|
68
|
+
var CartLineUpdate = (cartFragment, options = {}) => `
|
|
81
69
|
mutation CartLineUpdate(
|
|
82
70
|
$cartId: ID!
|
|
83
71
|
$lines: [CartLineUpdateInput!]!
|
|
84
72
|
$numCartLines: Int = 250
|
|
85
|
-
$
|
|
86
|
-
$language: LanguageCode
|
|
87
|
-
$visitorConsent: VisitorConsent
|
|
73
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
88
74
|
)
|
|
89
|
-
|
|
90
|
-
country: $country
|
|
91
|
-
language: $language
|
|
92
|
-
visitorConsent: $visitorConsent
|
|
93
|
-
) {
|
|
75
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
94
76
|
cartLinesUpdate(cartId: $cartId, lines: $lines) {
|
|
95
77
|
cart {
|
|
96
78
|
...CartFragment
|
|
@@ -99,24 +81,15 @@ const CartLineUpdate = (cartFragment) => (
|
|
|
99
81
|
}
|
|
100
82
|
|
|
101
83
|
${cartFragment}
|
|
102
|
-
|
|
103
|
-
)
|
|
104
|
-
const CartNoteUpdate = (cartFragment) => (
|
|
105
|
-
/* GraphQL */
|
|
106
|
-
`
|
|
84
|
+
`;
|
|
85
|
+
var CartNoteUpdate = (cartFragment, options = {}) => `
|
|
107
86
|
mutation CartNoteUpdate(
|
|
108
87
|
$cartId: ID!
|
|
109
88
|
$note: String!
|
|
110
89
|
$numCartLines: Int = 250
|
|
111
|
-
$
|
|
112
|
-
$language: LanguageCode
|
|
113
|
-
$visitorConsent: VisitorConsent
|
|
90
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
114
91
|
)
|
|
115
|
-
|
|
116
|
-
country: $country
|
|
117
|
-
language: $language
|
|
118
|
-
visitorConsent: $visitorConsent
|
|
119
|
-
) {
|
|
92
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
120
93
|
cartNoteUpdate(cartId: $cartId, note: $note) {
|
|
121
94
|
cart {
|
|
122
95
|
...CartFragment
|
|
@@ -125,24 +98,15 @@ const CartNoteUpdate = (cartFragment) => (
|
|
|
125
98
|
}
|
|
126
99
|
|
|
127
100
|
${cartFragment}
|
|
128
|
-
|
|
129
|
-
)
|
|
130
|
-
const CartBuyerIdentityUpdate = (cartFragment) => (
|
|
131
|
-
/* GraphQL */
|
|
132
|
-
`
|
|
101
|
+
`;
|
|
102
|
+
var CartBuyerIdentityUpdate = (cartFragment, options = {}) => `
|
|
133
103
|
mutation CartBuyerIdentityUpdate(
|
|
134
104
|
$cartId: ID!
|
|
135
105
|
$buyerIdentity: CartBuyerIdentityInput!
|
|
136
106
|
$numCartLines: Int = 250
|
|
137
|
-
$
|
|
138
|
-
$language: LanguageCode
|
|
139
|
-
$visitorConsent: VisitorConsent
|
|
107
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
140
108
|
)
|
|
141
|
-
|
|
142
|
-
country: $country
|
|
143
|
-
language: $language
|
|
144
|
-
visitorConsent: $visitorConsent
|
|
145
|
-
) {
|
|
109
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
146
110
|
cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {
|
|
147
111
|
cart {
|
|
148
112
|
...CartFragment
|
|
@@ -151,24 +115,15 @@ const CartBuyerIdentityUpdate = (cartFragment) => (
|
|
|
151
115
|
}
|
|
152
116
|
|
|
153
117
|
${cartFragment}
|
|
154
|
-
|
|
155
|
-
)
|
|
156
|
-
const CartAttributesUpdate = (cartFragment) => (
|
|
157
|
-
/* GraphQL */
|
|
158
|
-
`
|
|
118
|
+
`;
|
|
119
|
+
var CartAttributesUpdate = (cartFragment, options = {}) => `
|
|
159
120
|
mutation CartAttributesUpdate(
|
|
160
121
|
$attributes: [AttributeInput!]!
|
|
161
122
|
$cartId: ID!
|
|
162
123
|
$numCartLines: Int = 250
|
|
163
|
-
$
|
|
164
|
-
$language: LanguageCode
|
|
165
|
-
$visitorConsent: VisitorConsent
|
|
124
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
166
125
|
)
|
|
167
|
-
|
|
168
|
-
country: $country
|
|
169
|
-
language: $language
|
|
170
|
-
visitorConsent: $visitorConsent
|
|
171
|
-
) {
|
|
126
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
172
127
|
cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {
|
|
173
128
|
cart {
|
|
174
129
|
...CartFragment
|
|
@@ -177,24 +132,15 @@ const CartAttributesUpdate = (cartFragment) => (
|
|
|
177
132
|
}
|
|
178
133
|
|
|
179
134
|
${cartFragment}
|
|
180
|
-
|
|
181
|
-
)
|
|
182
|
-
const CartDiscountCodesUpdate = (cartFragment) => (
|
|
183
|
-
/* GraphQL */
|
|
184
|
-
`
|
|
135
|
+
`;
|
|
136
|
+
var CartDiscountCodesUpdate = (cartFragment, options = {}) => `
|
|
185
137
|
mutation CartDiscountCodesUpdate(
|
|
186
138
|
$cartId: ID!
|
|
187
139
|
$discountCodes: [String!]!
|
|
188
140
|
$numCartLines: Int = 250
|
|
189
|
-
$
|
|
190
|
-
$language: LanguageCode
|
|
191
|
-
$visitorConsent: VisitorConsent
|
|
141
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
192
142
|
)
|
|
193
|
-
|
|
194
|
-
country: $country
|
|
195
|
-
language: $language
|
|
196
|
-
visitorConsent: $visitorConsent
|
|
197
|
-
) {
|
|
143
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
198
144
|
cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
|
|
199
145
|
cart {
|
|
200
146
|
...CartFragment
|
|
@@ -203,34 +149,22 @@ const CartDiscountCodesUpdate = (cartFragment) => (
|
|
|
203
149
|
}
|
|
204
150
|
|
|
205
151
|
${cartFragment}
|
|
206
|
-
|
|
207
|
-
)
|
|
208
|
-
const CartQuery = (cartFragment) => (
|
|
209
|
-
/* GraphQL */
|
|
210
|
-
`
|
|
152
|
+
`;
|
|
153
|
+
var CartQuery = (cartFragment, options = {}) => `
|
|
211
154
|
query CartQuery(
|
|
212
155
|
$id: ID!
|
|
213
156
|
$numCartLines: Int = 250
|
|
214
|
-
$
|
|
215
|
-
$language: LanguageCode
|
|
216
|
-
$visitorConsent: VisitorConsent
|
|
157
|
+
${getInContextVariables(options.includeVisitorConsent ?? false)}
|
|
217
158
|
)
|
|
218
|
-
|
|
219
|
-
country: $country
|
|
220
|
-
language: $language
|
|
221
|
-
visitorConsent: $visitorConsent
|
|
222
|
-
) {
|
|
159
|
+
${getInContextDirective(options.includeVisitorConsent ?? false)} {
|
|
223
160
|
cart(id: $id) {
|
|
224
161
|
...CartFragment
|
|
225
162
|
}
|
|
226
163
|
}
|
|
227
164
|
|
|
228
165
|
${cartFragment}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
const defaultCartFragment = (
|
|
232
|
-
/* GraphQL */
|
|
233
|
-
`
|
|
166
|
+
`;
|
|
167
|
+
var defaultCartFragment = `
|
|
234
168
|
fragment CartFragment on Cart {
|
|
235
169
|
id
|
|
236
170
|
checkoutUrl
|
|
@@ -331,18 +265,8 @@ const defaultCartFragment = (
|
|
|
331
265
|
width
|
|
332
266
|
height
|
|
333
267
|
}
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
export {
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
CartCreate,
|
|
340
|
-
CartDiscountCodesUpdate,
|
|
341
|
-
CartLineAdd,
|
|
342
|
-
CartLineRemove,
|
|
343
|
-
CartLineUpdate,
|
|
344
|
-
CartNoteUpdate,
|
|
345
|
-
CartQuery,
|
|
346
|
-
defaultCartFragment
|
|
347
|
-
};
|
|
348
|
-
//# sourceMappingURL=cart-queries.mjs.map
|
|
268
|
+
`;
|
|
269
|
+
//#endregion
|
|
270
|
+
export { CartAttributesUpdate, CartBuyerIdentityUpdate, CartCreate, CartDiscountCodesUpdate, CartLineAdd, CartLineRemove, CartLineUpdate, CartNoteUpdate, CartQuery, defaultCartFragment };
|
|
271
|
+
|
|
272
|
+
//# sourceMappingURL=cart-queries.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart-queries.mjs","sources":["../../src/cart-queries.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"cart-queries.mjs","names":[],"sources":["../../src/cart-queries.ts"],"sourcesContent":["type CartQueryOptions = {\n includeVisitorConsent?: boolean;\n};\n\nfunction getInContextVariables(includeVisitorConsent: boolean): string {\n const base = `$country: CountryCode = ZZ\n $language: LanguageCode`;\n\n return includeVisitorConsent\n ? `${base}\n $visitorConsent: VisitorConsent`\n : base;\n}\n\nfunction getInContextDirective(includeVisitorConsent: boolean): string {\n return includeVisitorConsent\n ? `@inContext(\n country: $country\n language: $language\n visitorConsent: $visitorConsent\n )`\n : `@inContext(\n country: $country\n language: $language\n )`;\n}\n\nexport const CartLineAdd = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartLineAdd(\n $cartId: ID!\n $lines: [CartLineInput!]!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartLinesAdd(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartCreate = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartCreate(\n $input: CartInput!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartCreate(input: $input) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineRemove = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartLineRemove(\n $cartId: ID!\n $lines: [ID!]!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartLinesRemove(cartId: $cartId, lineIds: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineUpdate = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartLineUpdate(\n $cartId: ID!\n $lines: [CartLineUpdateInput!]!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartLinesUpdate(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartNoteUpdate = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartNoteUpdate(\n $cartId: ID!\n $note: String!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartNoteUpdate(cartId: $cartId, note: $note) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartBuyerIdentityUpdate = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartBuyerIdentityUpdate(\n $cartId: ID!\n $buyerIdentity: CartBuyerIdentityInput!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartAttributesUpdate = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartAttributesUpdate(\n $attributes: [AttributeInput!]!\n $cartId: ID!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartDiscountCodesUpdate = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n mutation CartDiscountCodesUpdate(\n $cartId: ID!\n $discountCodes: [String!]!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartQuery = (\n cartFragment: string,\n options: CartQueryOptions = {},\n): string => /* GraphQL */ `\n query CartQuery(\n $id: ID!\n $numCartLines: Int = 250\n ${getInContextVariables(options.includeVisitorConsent ?? false)}\n )\n ${getInContextDirective(options.includeVisitorConsent ?? false)} {\n cart(id: $id) {\n ...CartFragment\n }\n }\n\n ${cartFragment}\n`;\n\nexport const defaultCartFragment = /* GraphQL */ `\n fragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: $numCartLines) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPrice {\n ...MoneyFragment\n }\n price {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n id\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n applicable\n }\n }\n\n fragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n }\n fragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n }\n`;\n"],"mappings":";AAIA,SAAS,sBAAsB,uBAAwC;CACrE,MAAM,OAAO;;AAGb,QAAO,wBACH,GAAG,KAAK;uCAER;;AAGN,SAAS,sBAAsB,uBAAwC;AACrE,QAAO,wBACH;;;;OAKA;;;;;AAMN,IAAa,eACX,cACA,UAA4B,EAAE,KACL;;;;;MAKrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,cACX,cACA,UAA4B,EAAE,KACL;;;;MAIrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,kBACX,cACA,UAA4B,EAAE,KACL;;;;;MAKrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,kBACX,cACA,UAA4B,EAAE,KACL;;;;;MAKrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,kBACX,cACA,UAA4B,EAAE,KACL;;;;;MAKrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,2BACX,cACA,UAA4B,EAAE,KACL;;;;;MAKrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,wBACX,cACA,UAA4B,EAAE,KACL;;;;;MAKrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,2BACX,cACA,UAA4B,EAAE,KACL;;;;;MAKrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;;;IAQ9D,aAAa;;AAGjB,IAAa,aACX,cACA,UAA4B,EAAE,KACL;;;;MAIrB,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;IAEhE,sBAAsB,QAAQ,yBAAyB,MAAM,CAAC;;;;;;IAM9D,aAAa;;AAGjB,IAAa,sBAAoC"}
|
|
@@ -1,22 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
//#region src/codegen.helpers.ts
|
|
2
|
+
/**
|
|
3
|
+
* Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly.
|
|
4
|
+
* Reference for the GraphQL types: https://shopify.dev/docs/api/storefront/2026-04/scalars/HTML
|
|
5
|
+
* Note: JSON is generated as 'unknown' by default.
|
|
6
|
+
* @publicDocs
|
|
7
|
+
*/
|
|
8
|
+
var storefrontApiCustomScalars = {
|
|
9
|
+
DateTime: "string",
|
|
10
|
+
Decimal: "string",
|
|
11
|
+
HTML: "string",
|
|
12
|
+
URL: "string",
|
|
13
|
+
Color: "string",
|
|
14
|
+
UnsignedInt64: "string"
|
|
9
15
|
};
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly.
|
|
18
|
+
* Reference for the GraphQL types: https://shopify.dev/docs/api/customer/2026-04/scalars/HTML
|
|
19
|
+
* Note: JSON is generated as 'unknown' by default.
|
|
20
|
+
* @publicDocs
|
|
21
|
+
*/
|
|
22
|
+
var customerAccountApiCustomScalars = {
|
|
23
|
+
DateTime: "string",
|
|
24
|
+
Decimal: "string",
|
|
25
|
+
HTML: "string",
|
|
26
|
+
ISO8601DateTime: "string",
|
|
27
|
+
URL: "string",
|
|
28
|
+
UnsignedInt64: "string"
|
|
17
29
|
};
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
//# sourceMappingURL=codegen.helpers.mjs.map
|
|
30
|
+
//#endregion
|
|
31
|
+
export { customerAccountApiCustomScalars, storefrontApiCustomScalars };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=codegen.helpers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.helpers.mjs","sources":["../../src/codegen.helpers.ts"],"sourcesContent":["/**\n * Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly.\n * Reference for the GraphQL types: https://shopify.dev/docs/api/storefront/2026-04/scalars/HTML\n * Note: JSON is generated as 'unknown' by default.\n */\nexport const storefrontApiCustomScalars = {\n // Keep in sync with the definitions in the app/nextjs/codegen.ts!\n DateTime: 'string',\n Decimal: 'string',\n HTML: 'string',\n URL: 'string',\n Color: 'string',\n UnsignedInt64: 'string',\n};\n\n/**\n * Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly.\n * Reference for the GraphQL types: https://shopify.dev/docs/api/customer/2026-04/scalars/HTML\n * Note: JSON is generated as 'unknown' by default.\n */\nexport const customerAccountApiCustomScalars = {\n DateTime: 'string',\n Decimal: 'string',\n HTML: 'string',\n ISO8601DateTime: 'string',\n URL: 'string',\n UnsignedInt64: 'string',\n};\n"],"
|
|
1
|
+
{"version":3,"file":"codegen.helpers.mjs","names":[],"sources":["../../src/codegen.helpers.ts"],"sourcesContent":["/**\n * Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly.\n * Reference for the GraphQL types: https://shopify.dev/docs/api/storefront/2026-04/scalars/HTML\n * Note: JSON is generated as 'unknown' by default.\n * @publicDocs\n */\nexport const storefrontApiCustomScalars = {\n // Keep in sync with the definitions in the app/nextjs/codegen.ts!\n DateTime: 'string',\n Decimal: 'string',\n HTML: 'string',\n URL: 'string',\n Color: 'string',\n UnsignedInt64: 'string',\n};\n\n/**\n * Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly.\n * Reference for the GraphQL types: https://shopify.dev/docs/api/customer/2026-04/scalars/HTML\n * Note: JSON is generated as 'unknown' by default.\n * @publicDocs\n */\nexport const customerAccountApiCustomScalars = {\n DateTime: 'string',\n Decimal: 'string',\n HTML: 'string',\n ISO8601DateTime: 'string',\n URL: 'string',\n UnsignedInt64: 'string',\n};\n"],"mappings":";;;;;;;AAMA,IAAa,6BAA6B;CAExC,UAAU;CACV,SAAS;CACT,MAAM;CACN,KAAK;CACL,OAAO;CACP,eAAe;CAChB;;;;;;;AAQD,IAAa,kCAAkC;CAC7C,UAAU;CACV,SAAS;CACT,MAAM;CACN,iBAAiB;CACjB,KAAK;CACL,eAAe;CAChB"}
|
|
@@ -1,50 +1,52 @@
|
|
|
1
1
|
import { SHOPIFY_S, SHOPIFY_Y } from "./cart-constants.mjs";
|
|
2
2
|
import { getTrackingValues } from "./tracking-utils.mjs";
|
|
3
|
-
|
|
3
|
+
//#region src/cookies-utils.tsx
|
|
4
|
+
var tokenHash = "xxxx-4xxx-xxxx-xxxxxxxxxxxx";
|
|
4
5
|
function buildUUID() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
return `${hexTime()}-${hash}`;
|
|
6
|
+
let hash = "";
|
|
7
|
+
try {
|
|
8
|
+
const crypto = window.crypto;
|
|
9
|
+
const randomValuesArray = new Uint16Array(31);
|
|
10
|
+
crypto.getRandomValues(randomValuesArray);
|
|
11
|
+
let i = 0;
|
|
12
|
+
hash = tokenHash.replace(/[x]/g, (c) => {
|
|
13
|
+
const r = randomValuesArray[i] % 16;
|
|
14
|
+
const v = c === "x" ? r : r & 3 | 8;
|
|
15
|
+
i++;
|
|
16
|
+
return v.toString(16);
|
|
17
|
+
}).toUpperCase();
|
|
18
|
+
} catch (err) {
|
|
19
|
+
hash = tokenHash.replace(/[x]/g, (c) => {
|
|
20
|
+
const r = Math.random() * 16 | 0;
|
|
21
|
+
return (c === "x" ? r : r & 3 | 8).toString(16);
|
|
22
|
+
}).toUpperCase();
|
|
23
|
+
}
|
|
24
|
+
return `${hexTime()}-${hash}`;
|
|
25
25
|
}
|
|
26
26
|
function hexTime() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return output.padStart(8, "0");
|
|
27
|
+
let dateNumber = 0;
|
|
28
|
+
let perfNumber = 0;
|
|
29
|
+
dateNumber = (/* @__PURE__ */ new Date()).getTime() >>> 0;
|
|
30
|
+
try {
|
|
31
|
+
perfNumber = performance.now() >>> 0;
|
|
32
|
+
} catch (err) {
|
|
33
|
+
perfNumber = 0;
|
|
34
|
+
}
|
|
35
|
+
return Math.abs(dateNumber + perfNumber).toString(16).toLowerCase().padStart(8, "0");
|
|
37
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets the values of _shopify_y and _shopify_s cookies from the provided cookie string. If the Shopify cookies doesn't exist, this method will return an empty string for each missing cookie.
|
|
39
|
+
* @deprecated Use getTrackingValues instead.
|
|
40
|
+
* @publicDocs
|
|
41
|
+
*/
|
|
38
42
|
function getShopifyCookies(cookies) {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
const trackingValues = getTrackingValues(cookies);
|
|
44
|
+
return {
|
|
45
|
+
[SHOPIFY_Y]: trackingValues.uniqueToken,
|
|
46
|
+
[SHOPIFY_S]: trackingValues.visitToken
|
|
47
|
+
};
|
|
44
48
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
//# sourceMappingURL=cookies-utils.mjs.map
|
|
49
|
+
//#endregion
|
|
50
|
+
export { buildUUID, getShopifyCookies };
|
|
51
|
+
|
|
52
|
+
//# sourceMappingURL=cookies-utils.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookies-utils.mjs","sources":["../../src/cookies-utils.tsx"],"sourcesContent":["import {ShopifyCookies} from './analytics-types.js';\nimport {SHOPIFY_Y, SHOPIFY_S} from './cart-constants.js';\nimport {getTrackingValues} from './tracking-utils.js';\n\nconst tokenHash = 'xxxx-4xxx-xxxx-xxxxxxxxxxxx';\n\nexport function buildUUID(): string {\n let hash = '';\n\n try {\n const crypto: Crypto = window.crypto;\n const randomValuesArray = new Uint16Array(31);\n crypto.getRandomValues(randomValuesArray);\n\n // Generate a strong UUID\n let i = 0;\n hash = tokenHash\n .replace(/[x]/g, (c: string): string => {\n const r = randomValuesArray[i] % 16;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n i++;\n return v.toString(16);\n })\n .toUpperCase();\n } catch (err) {\n // crypto not available, generate weak UUID\n hash = tokenHash\n .replace(/[x]/g, (c: string): string => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n })\n .toUpperCase();\n }\n\n return `${hexTime()}-${hash}`;\n}\n\nexport function hexTime(): string {\n // 32 bit representations of new Date().getTime() and performance.now()\n let dateNumber = 0;\n let perfNumber = 0;\n\n // Result of zero-fill right shift is always positive\n dateNumber = new Date().getTime() >>> 0;\n\n try {\n perfNumber = performance.now() >>> 0;\n } catch (err) {\n perfNumber = 0;\n }\n\n const output = Math.abs(dateNumber + perfNumber)\n .toString(16)\n .toLowerCase();\n\n // Ensure the output is exactly 8 characters\n return output.padStart(8, '0');\n}\n\n/**\n * Gets the values of _shopify_y and _shopify_s cookies from the provided cookie string.\n * @deprecated Use getTrackingValues instead.\n */\nexport function getShopifyCookies(cookies: string): ShopifyCookies {\n // @ts-expect-error - Undeclared argument type\n const trackingValues = getTrackingValues(cookies);\n\n return {\n [SHOPIFY_Y]: trackingValues.uniqueToken,\n [SHOPIFY_S]: trackingValues.visitToken,\n };\n}\n"],"
|
|
1
|
+
{"version":3,"file":"cookies-utils.mjs","names":[],"sources":["../../src/cookies-utils.tsx"],"sourcesContent":["import {ShopifyCookies} from './analytics-types.js';\nimport {SHOPIFY_Y, SHOPIFY_S} from './cart-constants.js';\nimport {getTrackingValues} from './tracking-utils.js';\n\nconst tokenHash = 'xxxx-4xxx-xxxx-xxxxxxxxxxxx';\n\nexport function buildUUID(): string {\n let hash = '';\n\n try {\n const crypto: Crypto = window.crypto;\n const randomValuesArray = new Uint16Array(31);\n crypto.getRandomValues(randomValuesArray);\n\n // Generate a strong UUID\n let i = 0;\n hash = tokenHash\n .replace(/[x]/g, (c: string): string => {\n const r = randomValuesArray[i] % 16;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n i++;\n return v.toString(16);\n })\n .toUpperCase();\n } catch (err) {\n // crypto not available, generate weak UUID\n hash = tokenHash\n .replace(/[x]/g, (c: string): string => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n })\n .toUpperCase();\n }\n\n return `${hexTime()}-${hash}`;\n}\n\nexport function hexTime(): string {\n // 32 bit representations of new Date().getTime() and performance.now()\n let dateNumber = 0;\n let perfNumber = 0;\n\n // Result of zero-fill right shift is always positive\n dateNumber = new Date().getTime() >>> 0;\n\n try {\n perfNumber = performance.now() >>> 0;\n } catch (err) {\n perfNumber = 0;\n }\n\n const output = Math.abs(dateNumber + perfNumber)\n .toString(16)\n .toLowerCase();\n\n // Ensure the output is exactly 8 characters\n return output.padStart(8, '0');\n}\n\n/**\n * Gets the values of _shopify_y and _shopify_s cookies from the provided cookie string. If the Shopify cookies doesn't exist, this method will return an empty string for each missing cookie.\n * @deprecated Use getTrackingValues instead.\n * @publicDocs\n */\nexport function getShopifyCookies(cookies: string): ShopifyCookies {\n // @ts-expect-error - Undeclared argument type\n const trackingValues = getTrackingValues(cookies);\n\n return {\n [SHOPIFY_Y]: trackingValues.uniqueToken,\n [SHOPIFY_S]: trackingValues.visitToken,\n };\n}\n"],"mappings":";;;AAIA,IAAM,YAAY;AAElB,SAAgB,YAAoB;CAClC,IAAI,OAAO;AAEX,KAAI;EACF,MAAM,SAAiB,OAAO;EAC9B,MAAM,oBAAoB,IAAI,YAAY,GAAG;AAC7C,SAAO,gBAAgB,kBAAkB;EAGzC,IAAI,IAAI;AACR,SAAO,UACJ,QAAQ,SAAS,MAAsB;GACtC,MAAM,IAAI,kBAAkB,KAAK;GACjC,MAAM,IAAI,MAAM,MAAM,IAAK,IAAI,IAAO;AACtC;AACA,UAAO,EAAE,SAAS,GAAG;IACrB,CACD,aAAa;UACT,KAAK;AAEZ,SAAO,UACJ,QAAQ,SAAS,MAAsB;GACtC,MAAM,IAAK,KAAK,QAAQ,GAAG,KAAM;AAEjC,WADU,MAAM,MAAM,IAAK,IAAI,IAAO,GAC7B,SAAS,GAAG;IACrB,CACD,aAAa;;AAGlB,QAAO,GAAG,SAAS,CAAC,GAAG;;AAGzB,SAAgB,UAAkB;CAEhC,IAAI,aAAa;CACjB,IAAI,aAAa;AAGjB,+BAAa,IAAI,MAAM,EAAC,SAAS,KAAK;AAEtC,KAAI;AACF,eAAa,YAAY,KAAK,KAAK;UAC5B,KAAK;AACZ,eAAa;;AAQf,QALe,KAAK,IAAI,aAAa,WAAW,CAC7C,SAAS,GAAG,CACZ,aAAa,CAGF,SAAS,GAAG,IAAI;;;;;;;AAQhC,SAAgB,kBAAkB,SAAiC;CAEjE,MAAM,iBAAiB,kBAAkB,QAAQ;AAEjD,QAAO;GACJ,YAAY,eAAe;GAC3B,YAAY,eAAe;EAC7B"}
|
|
@@ -1,27 +1,25 @@
|
|
|
1
|
+
//#region src/flatten-connection.ts
|
|
2
|
+
/**
|
|
3
|
+
* The `flattenConnection` utility transforms a connection object from the Storefront API (for example, [Product-related connections](https://shopify.dev/api/storefront/reference/products/product)) into a flat array of nodes.
|
|
4
|
+
* The utility works with either `nodes` or `edges.node`.
|
|
5
|
+
*
|
|
6
|
+
* If `connection` is null or undefined, will return an empty array instead in production. In development, an error will be thrown.
|
|
7
|
+
* @publicDocs
|
|
8
|
+
*/
|
|
1
9
|
function flattenConnection(connection) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
return connection.edges.map((edge) => {
|
|
14
|
-
if (!(edge == null ? void 0 : edge.node)) {
|
|
15
|
-
throw new Error(
|
|
16
|
-
"flattenConnection(): Connection edges must contain nodes"
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
return edge.node;
|
|
20
|
-
});
|
|
21
|
-
}
|
|
22
|
-
return [];
|
|
10
|
+
if (!connection) {
|
|
11
|
+
const noConnectionErr = `flattenConnection(): needs a 'connection' to flatten, but received '${connection ?? ""}' instead.`;
|
|
12
|
+
console.error(noConnectionErr + ` Returning an empty array`);
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
if ("nodes" in connection) return connection.nodes;
|
|
16
|
+
if ("edges" in connection && Array.isArray(connection.edges)) return connection.edges.map((edge) => {
|
|
17
|
+
if (!edge?.node) throw new Error("flattenConnection(): Connection edges must contain nodes");
|
|
18
|
+
return edge.node;
|
|
19
|
+
});
|
|
20
|
+
return [];
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=flatten-connection.mjs.map
|
|
22
|
+
//#endregion
|
|
23
|
+
export { flattenConnection };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=flatten-connection.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flatten-connection.mjs","sources":["../../src/flatten-connection.ts"],"sourcesContent":["import type {PartialDeep} from 'type-fest';\n\n/**\n * The `flattenConnection` utility transforms a connection object from the Storefront API (for example, [Product-related connections](https://shopify.dev/api/storefront/reference/products/product)) into a flat array of nodes.\n * The utility works with either `nodes` or `edges.node`.\n *\n * If `connection` is null or undefined, will return an empty array instead in production. In development, an error will be thrown.\n */\nexport function flattenConnection<\n ConnectionGeneric extends\n | PartialDeep<ConnectionEdges, {recurseIntoArrays: true}>\n | PartialDeep<ConnectionNodes, {recurseIntoArrays: true}>\n | ConnectionEdges\n | ConnectionNodes,\n>(\n connection?: ConnectionGeneric,\n): ConnectionGeneric extends\n | {\n edges: Array<{node: infer ConnectionBaseType}>;\n }\n | {\n nodes: Array<infer ConnectionBaseType>;\n }\n ? // if it's not a PartialDeep, then return the infered type\n ConnectionBaseType[]\n : ConnectionGeneric extends\n | PartialDeep<\n {edges: {node: Array<infer ConnectionBaseType>}},\n {recurseIntoArrays: true}\n >\n | PartialDeep<\n {\n nodes: Array<infer ConnectionBaseType>;\n },\n {recurseIntoArrays: true}\n >\n ? // if it is a PartialDeep, return a PartialDeep inferred type\n PartialDeep<ConnectionBaseType[], {recurseIntoArrays: true}>\n : never {\n if (!connection) {\n const noConnectionErr = `flattenConnection(): needs a 'connection' to flatten, but received '${\n connection ?? ''\n }' instead.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noConnectionErr);\n } else {\n console.error(noConnectionErr + ` Returning an empty array`);\n // @ts-expect-error We don't want to crash prod, so return an empty array\n return [];\n }\n }\n\n if ('nodes' in connection) {\n // @ts-expect-error return type is failing\n return connection.nodes;\n }\n\n if ('edges' in connection && Array.isArray(connection.edges)) {\n // @ts-expect-error return type is failing\n return connection.edges.map((edge) => {\n if (!edge?.node) {\n throw new Error(\n 'flattenConnection(): Connection edges must contain nodes',\n );\n }\n return edge.node;\n }) as Array<unknown>;\n }\n\n if (__HYDROGEN_DEV__) {\n console.warn(\n `flattenConnection(): The connection did not contain either \"nodes\" or \"edges.node\". Returning an empty array.`,\n );\n }\n\n // @ts-expect-error We don't want to crash prod, so return an empty array\n return [];\n}\n\ntype ConnectionEdges = {\n edges: Array<{node: unknown}>;\n};\n\ntype ConnectionNodes = {\n nodes: Array<unknown>;\n};\n\n// This is only for documentation purposes, and it is not used in the code.\nexport interface ConnectionGenericForDoc {\n connection?: ConnectionEdges | ConnectionNodes;\n}\nexport type FlattenConnectionReturnForDoc = unknown[];\n"],"
|
|
1
|
+
{"version":3,"file":"flatten-connection.mjs","names":[],"sources":["../../src/flatten-connection.ts"],"sourcesContent":["import type {PartialDeep} from 'type-fest';\n\n/**\n * The `flattenConnection` utility transforms a connection object from the Storefront API (for example, [Product-related connections](https://shopify.dev/api/storefront/reference/products/product)) into a flat array of nodes.\n * The utility works with either `nodes` or `edges.node`.\n *\n * If `connection` is null or undefined, will return an empty array instead in production. In development, an error will be thrown.\n * @publicDocs\n */\nexport function flattenConnection<\n ConnectionGeneric extends\n | PartialDeep<ConnectionEdges, {recurseIntoArrays: true}>\n | PartialDeep<ConnectionNodes, {recurseIntoArrays: true}>\n | ConnectionEdges\n | ConnectionNodes,\n>(\n connection?: ConnectionGeneric,\n): ConnectionGeneric extends\n | {\n edges: Array<{node: infer ConnectionBaseType}>;\n }\n | {\n nodes: Array<infer ConnectionBaseType>;\n }\n ? // if it's not a PartialDeep, then return the infered type\n ConnectionBaseType[]\n : ConnectionGeneric extends\n | PartialDeep<\n {edges: {node: Array<infer ConnectionBaseType>}},\n {recurseIntoArrays: true}\n >\n | PartialDeep<\n {\n nodes: Array<infer ConnectionBaseType>;\n },\n {recurseIntoArrays: true}\n >\n ? // if it is a PartialDeep, return a PartialDeep inferred type\n PartialDeep<ConnectionBaseType[], {recurseIntoArrays: true}>\n : never {\n if (!connection) {\n const noConnectionErr = `flattenConnection(): needs a 'connection' to flatten, but received '${\n connection ?? ''\n }' instead.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noConnectionErr);\n } else {\n console.error(noConnectionErr + ` Returning an empty array`);\n // @ts-expect-error We don't want to crash prod, so return an empty array\n return [];\n }\n }\n\n if ('nodes' in connection) {\n // @ts-expect-error return type is failing\n return connection.nodes;\n }\n\n if ('edges' in connection && Array.isArray(connection.edges)) {\n // @ts-expect-error return type is failing\n return connection.edges.map((edge) => {\n if (!edge?.node) {\n throw new Error(\n 'flattenConnection(): Connection edges must contain nodes',\n );\n }\n return edge.node;\n }) as Array<unknown>;\n }\n\n if (__HYDROGEN_DEV__) {\n console.warn(\n `flattenConnection(): The connection did not contain either \"nodes\" or \"edges.node\". Returning an empty array.`,\n );\n }\n\n // @ts-expect-error We don't want to crash prod, so return an empty array\n return [];\n}\n\ntype ConnectionEdges = {\n edges: Array<{node: unknown}>;\n};\n\ntype ConnectionNodes = {\n nodes: Array<unknown>;\n};\n\n// This is only for documentation purposes, and it is not used in the code.\n/** @publicDocs */\nexport interface ConnectionGenericForDoc {\n connection?: ConnectionEdges | ConnectionNodes;\n}\n/** @publicDocs */\nexport type FlattenConnectionReturnForDoc = unknown[];\n"],"mappings":";;;;;;;;AASA,SAAgB,kBAOd,YAuBU;AACV,KAAI,CAAC,YAAY;EACf,MAAM,kBAAkB,uEACtB,cAAc,GACf;AAIC,UAAQ,MAAM,kBAAkB,4BAA4B;AAE5D,SAAO,EAAE;;AAIb,KAAI,WAAW,WAEb,QAAO,WAAW;AAGpB,KAAI,WAAW,cAAc,MAAM,QAAQ,WAAW,MAAM,CAE1D,QAAO,WAAW,MAAM,KAAK,SAAS;AACpC,MAAI,CAAC,MAAM,KACT,OAAM,IAAI,MACR,2DACD;AAEH,SAAO,KAAK;GACZ;AAUJ,QAAO,EAAE"}
|