@shopify/hydrogen-react 2025.5.0 → 2025.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/customer-account.schema.json +1 -1
  2. package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
  3. package/dist/browser-dev/BaseButton.mjs.map +1 -1
  4. package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
  5. package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
  6. package/dist/browser-dev/CartCost.mjs.map +1 -1
  7. package/dist/browser-dev/CartLineProvider.mjs.map +1 -1
  8. package/dist/browser-dev/CartLineQuantity.mjs.map +1 -1
  9. package/dist/browser-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
  10. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  11. package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
  12. package/dist/browser-dev/Image.mjs.map +1 -1
  13. package/dist/browser-dev/MediaFile.mjs.map +1 -1
  14. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  15. package/dist/browser-dev/Money.mjs.map +1 -1
  16. package/dist/browser-dev/ProductPrice.mjs.map +1 -1
  17. package/dist/browser-dev/ProductProvider.mjs.map +1 -1
  18. package/dist/browser-dev/RichText.components.mjs.map +1 -1
  19. package/dist/browser-dev/RichText.mjs.map +1 -1
  20. package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
  21. package/dist/browser-dev/ShopifyProvider.mjs +18 -1
  22. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
  23. package/dist/browser-dev/Video.mjs.map +1 -1
  24. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
  25. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  26. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  27. package/dist/browser-dev/analytics-utils.mjs.map +1 -1
  28. package/dist/browser-dev/analytics.mjs +4 -5
  29. package/dist/browser-dev/analytics.mjs.map +1 -1
  30. package/dist/browser-dev/cart-hooks.mjs +25 -7
  31. package/dist/browser-dev/cart-hooks.mjs.map +1 -1
  32. package/dist/browser-dev/cart-queries.mjs.map +1 -1
  33. package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
  34. package/dist/browser-dev/cookies-utils.mjs +4 -4
  35. package/dist/browser-dev/cookies-utils.mjs.map +1 -1
  36. package/dist/browser-dev/flatten-connection.mjs.map +1 -1
  37. package/dist/browser-dev/getProductOptions.mjs.map +1 -1
  38. package/dist/browser-dev/index.mjs +4 -0
  39. package/dist/browser-dev/index.mjs.map +1 -1
  40. package/dist/browser-dev/load-script.mjs.map +1 -1
  41. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs +17 -17
  42. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  43. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  44. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  45. package/dist/browser-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  46. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  47. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  48. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  49. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  50. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  51. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  52. package/dist/browser-dev/optionValueDecoder.mjs.map +1 -1
  53. package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +1 -1
  54. package/dist/browser-dev/parse-metafield.mjs +26 -1
  55. package/dist/browser-dev/parse-metafield.mjs.map +1 -1
  56. package/dist/browser-dev/storefront-api-constants.mjs +1 -1
  57. package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
  58. package/dist/browser-dev/storefront-client.mjs.map +1 -1
  59. package/dist/browser-dev/tracking-utils.mjs +92 -0
  60. package/dist/browser-dev/tracking-utils.mjs.map +1 -0
  61. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  62. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  63. package/dist/browser-dev/useMoney.mjs +53 -7
  64. package/dist/browser-dev/useMoney.mjs.map +1 -1
  65. package/dist/browser-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
  66. package/dist/browser-dev/useShopifyCookies.mjs +96 -9
  67. package/dist/browser-dev/useShopifyCookies.mjs.map +1 -1
  68. package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
  69. package/dist/browser-prod/BaseButton.mjs.map +1 -1
  70. package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
  71. package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
  72. package/dist/browser-prod/CartCost.mjs.map +1 -1
  73. package/dist/browser-prod/CartLineProvider.mjs.map +1 -1
  74. package/dist/browser-prod/CartLineQuantity.mjs.map +1 -1
  75. package/dist/browser-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
  76. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  77. package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
  78. package/dist/browser-prod/Image.mjs.map +1 -1
  79. package/dist/browser-prod/MediaFile.mjs.map +1 -1
  80. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  81. package/dist/browser-prod/Money.mjs.map +1 -1
  82. package/dist/browser-prod/ProductPrice.mjs.map +1 -1
  83. package/dist/browser-prod/ProductProvider.mjs.map +1 -1
  84. package/dist/browser-prod/RichText.components.mjs.map +1 -1
  85. package/dist/browser-prod/RichText.mjs.map +1 -1
  86. package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
  87. package/dist/browser-prod/ShopifyProvider.mjs +18 -1
  88. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
  89. package/dist/browser-prod/Video.mjs.map +1 -1
  90. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
  91. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  92. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  93. package/dist/browser-prod/analytics-utils.mjs.map +1 -1
  94. package/dist/browser-prod/analytics.mjs +4 -5
  95. package/dist/browser-prod/analytics.mjs.map +1 -1
  96. package/dist/browser-prod/cart-hooks.mjs +25 -7
  97. package/dist/browser-prod/cart-hooks.mjs.map +1 -1
  98. package/dist/browser-prod/cart-queries.mjs.map +1 -1
  99. package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
  100. package/dist/browser-prod/cookies-utils.mjs +4 -4
  101. package/dist/browser-prod/cookies-utils.mjs.map +1 -1
  102. package/dist/browser-prod/flatten-connection.mjs.map +1 -1
  103. package/dist/browser-prod/getProductOptions.mjs.map +1 -1
  104. package/dist/browser-prod/index.mjs +4 -0
  105. package/dist/browser-prod/index.mjs.map +1 -1
  106. package/dist/browser-prod/load-script.mjs.map +1 -1
  107. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs +17 -17
  108. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  109. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  110. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  111. package/dist/browser-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  112. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  113. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  114. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  115. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  116. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  117. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  118. package/dist/browser-prod/optionValueDecoder.mjs.map +1 -1
  119. package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +1 -1
  120. package/dist/browser-prod/parse-metafield.mjs +27 -1
  121. package/dist/browser-prod/parse-metafield.mjs.map +1 -1
  122. package/dist/browser-prod/storefront-api-constants.mjs +1 -1
  123. package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
  124. package/dist/browser-prod/storefront-client.mjs.map +1 -1
  125. package/dist/browser-prod/tracking-utils.mjs +92 -0
  126. package/dist/browser-prod/tracking-utils.mjs.map +1 -0
  127. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  128. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  129. package/dist/browser-prod/useMoney.mjs +53 -7
  130. package/dist/browser-prod/useMoney.mjs.map +1 -1
  131. package/dist/browser-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
  132. package/dist/browser-prod/useShopifyCookies.mjs +96 -9
  133. package/dist/browser-prod/useShopifyCookies.mjs.map +1 -1
  134. package/dist/node-dev/AddToCartButton.js.map +1 -1
  135. package/dist/node-dev/AddToCartButton.mjs.map +1 -1
  136. package/dist/node-dev/BaseButton.js.map +1 -1
  137. package/dist/node-dev/BaseButton.mjs.map +1 -1
  138. package/dist/node-dev/BuyNowButton.js.map +1 -1
  139. package/dist/node-dev/BuyNowButton.mjs.map +1 -1
  140. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  141. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
  142. package/dist/node-dev/CartCost.js.map +1 -1
  143. package/dist/node-dev/CartCost.mjs.map +1 -1
  144. package/dist/node-dev/CartLineProvider.js.map +1 -1
  145. package/dist/node-dev/CartLineProvider.mjs.map +1 -1
  146. package/dist/node-dev/CartLineQuantity.js.map +1 -1
  147. package/dist/node-dev/CartLineQuantity.mjs.map +1 -1
  148. package/dist/node-dev/CartLineQuantityAdjustButton.js.map +1 -1
  149. package/dist/node-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
  150. package/dist/node-dev/CartProvider.js.map +1 -1
  151. package/dist/node-dev/CartProvider.mjs.map +1 -1
  152. package/dist/node-dev/ExternalVideo.js.map +1 -1
  153. package/dist/node-dev/ExternalVideo.mjs.map +1 -1
  154. package/dist/node-dev/Image.js.map +1 -1
  155. package/dist/node-dev/Image.mjs.map +1 -1
  156. package/dist/node-dev/MediaFile.js.map +1 -1
  157. package/dist/node-dev/MediaFile.mjs.map +1 -1
  158. package/dist/node-dev/ModelViewer.js.map +1 -1
  159. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  160. package/dist/node-dev/Money.js.map +1 -1
  161. package/dist/node-dev/Money.mjs.map +1 -1
  162. package/dist/node-dev/ProductPrice.js.map +1 -1
  163. package/dist/node-dev/ProductPrice.mjs.map +1 -1
  164. package/dist/node-dev/ProductProvider.js.map +1 -1
  165. package/dist/node-dev/ProductProvider.mjs.map +1 -1
  166. package/dist/node-dev/RichText.components.js.map +1 -1
  167. package/dist/node-dev/RichText.components.mjs.map +1 -1
  168. package/dist/node-dev/RichText.js.map +1 -1
  169. package/dist/node-dev/RichText.mjs.map +1 -1
  170. package/dist/node-dev/ShopPayButton.js.map +1 -1
  171. package/dist/node-dev/ShopPayButton.mjs.map +1 -1
  172. package/dist/node-dev/ShopifyProvider.js +18 -1
  173. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  174. package/dist/node-dev/ShopifyProvider.mjs +18 -1
  175. package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
  176. package/dist/node-dev/Video.js.map +1 -1
  177. package/dist/node-dev/Video.mjs.map +1 -1
  178. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +4 -3
  179. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
  180. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
  181. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  182. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
  183. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  184. package/dist/node-dev/analytics-utils.js.map +1 -1
  185. package/dist/node-dev/analytics-utils.mjs.map +1 -1
  186. package/dist/node-dev/analytics.js +4 -5
  187. package/dist/node-dev/analytics.js.map +1 -1
  188. package/dist/node-dev/analytics.mjs +4 -5
  189. package/dist/node-dev/analytics.mjs.map +1 -1
  190. package/dist/node-dev/cart-hooks.js +24 -6
  191. package/dist/node-dev/cart-hooks.js.map +1 -1
  192. package/dist/node-dev/cart-hooks.mjs +25 -7
  193. package/dist/node-dev/cart-hooks.mjs.map +1 -1
  194. package/dist/node-dev/cart-queries.js.map +1 -1
  195. package/dist/node-dev/cart-queries.mjs.map +1 -1
  196. package/dist/node-dev/codegen.helpers.js.map +1 -1
  197. package/dist/node-dev/codegen.helpers.mjs.map +1 -1
  198. package/dist/node-dev/cookies-utils.js +4 -4
  199. package/dist/node-dev/cookies-utils.js.map +1 -1
  200. package/dist/node-dev/cookies-utils.mjs +4 -4
  201. package/dist/node-dev/cookies-utils.mjs.map +1 -1
  202. package/dist/node-dev/flatten-connection.js.map +1 -1
  203. package/dist/node-dev/flatten-connection.mjs.map +1 -1
  204. package/dist/node-dev/getProductOptions.js.map +1 -1
  205. package/dist/node-dev/getProductOptions.mjs.map +1 -1
  206. package/dist/node-dev/index.js +4 -0
  207. package/dist/node-dev/index.js.map +1 -1
  208. package/dist/node-dev/index.mjs +4 -0
  209. package/dist/node-dev/index.mjs.map +1 -1
  210. package/dist/node-dev/load-script.js.map +1 -1
  211. package/dist/node-dev/load-script.mjs.map +1 -1
  212. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +17 -17
  213. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
  214. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs +17 -17
  215. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  216. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +2 -2
  217. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
  218. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  219. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  220. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  221. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  222. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  223. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  224. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  225. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  226. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  227. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  228. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  229. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  230. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  231. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  232. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  233. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  234. package/dist/node-dev/optionValueDecoder.js.map +1 -1
  235. package/dist/node-dev/optionValueDecoder.mjs.map +1 -1
  236. package/dist/node-dev/packages/hydrogen-react/package.json.js +1 -1
  237. package/dist/node-dev/packages/hydrogen-react/package.json.mjs +1 -1
  238. package/dist/node-dev/parse-metafield.js +26 -1
  239. package/dist/node-dev/parse-metafield.js.map +1 -1
  240. package/dist/node-dev/parse-metafield.mjs +26 -1
  241. package/dist/node-dev/parse-metafield.mjs.map +1 -1
  242. package/dist/node-dev/storefront-api-constants.js +1 -1
  243. package/dist/node-dev/storefront-api-constants.js.map +1 -1
  244. package/dist/node-dev/storefront-api-constants.mjs +1 -1
  245. package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
  246. package/dist/node-dev/storefront-client.js.map +1 -1
  247. package/dist/node-dev/storefront-client.mjs.map +1 -1
  248. package/dist/node-dev/tracking-utils.js +92 -0
  249. package/dist/node-dev/tracking-utils.js.map +1 -0
  250. package/dist/node-dev/tracking-utils.mjs +92 -0
  251. package/dist/node-dev/tracking-utils.mjs.map +1 -0
  252. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  253. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  254. package/dist/node-dev/useCartActions.js.map +1 -1
  255. package/dist/node-dev/useCartActions.mjs.map +1 -1
  256. package/dist/node-dev/useMoney.js +53 -7
  257. package/dist/node-dev/useMoney.js.map +1 -1
  258. package/dist/node-dev/useMoney.mjs +53 -7
  259. package/dist/node-dev/useMoney.mjs.map +1 -1
  260. package/dist/node-dev/useSelectedOptionInUrlParam.js.map +1 -1
  261. package/dist/node-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
  262. package/dist/node-dev/useShopifyCookies.js +94 -7
  263. package/dist/node-dev/useShopifyCookies.js.map +1 -1
  264. package/dist/node-dev/useShopifyCookies.mjs +96 -9
  265. package/dist/node-dev/useShopifyCookies.mjs.map +1 -1
  266. package/dist/node-prod/AddToCartButton.js.map +1 -1
  267. package/dist/node-prod/AddToCartButton.mjs.map +1 -1
  268. package/dist/node-prod/BaseButton.js.map +1 -1
  269. package/dist/node-prod/BaseButton.mjs.map +1 -1
  270. package/dist/node-prod/BuyNowButton.js.map +1 -1
  271. package/dist/node-prod/BuyNowButton.mjs.map +1 -1
  272. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  273. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
  274. package/dist/node-prod/CartCost.js.map +1 -1
  275. package/dist/node-prod/CartCost.mjs.map +1 -1
  276. package/dist/node-prod/CartLineProvider.js.map +1 -1
  277. package/dist/node-prod/CartLineProvider.mjs.map +1 -1
  278. package/dist/node-prod/CartLineQuantity.js.map +1 -1
  279. package/dist/node-prod/CartLineQuantity.mjs.map +1 -1
  280. package/dist/node-prod/CartLineQuantityAdjustButton.js.map +1 -1
  281. package/dist/node-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
  282. package/dist/node-prod/CartProvider.js.map +1 -1
  283. package/dist/node-prod/CartProvider.mjs.map +1 -1
  284. package/dist/node-prod/ExternalVideo.js.map +1 -1
  285. package/dist/node-prod/ExternalVideo.mjs.map +1 -1
  286. package/dist/node-prod/Image.js.map +1 -1
  287. package/dist/node-prod/Image.mjs.map +1 -1
  288. package/dist/node-prod/MediaFile.js.map +1 -1
  289. package/dist/node-prod/MediaFile.mjs.map +1 -1
  290. package/dist/node-prod/ModelViewer.js.map +1 -1
  291. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  292. package/dist/node-prod/Money.js.map +1 -1
  293. package/dist/node-prod/Money.mjs.map +1 -1
  294. package/dist/node-prod/ProductPrice.js.map +1 -1
  295. package/dist/node-prod/ProductPrice.mjs.map +1 -1
  296. package/dist/node-prod/ProductProvider.js.map +1 -1
  297. package/dist/node-prod/ProductProvider.mjs.map +1 -1
  298. package/dist/node-prod/RichText.components.js.map +1 -1
  299. package/dist/node-prod/RichText.components.mjs.map +1 -1
  300. package/dist/node-prod/RichText.js.map +1 -1
  301. package/dist/node-prod/RichText.mjs.map +1 -1
  302. package/dist/node-prod/ShopPayButton.js.map +1 -1
  303. package/dist/node-prod/ShopPayButton.mjs.map +1 -1
  304. package/dist/node-prod/ShopifyProvider.js +18 -1
  305. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  306. package/dist/node-prod/ShopifyProvider.mjs +18 -1
  307. package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
  308. package/dist/node-prod/Video.js.map +1 -1
  309. package/dist/node-prod/Video.mjs.map +1 -1
  310. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +4 -3
  311. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
  312. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
  313. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  314. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
  315. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  316. package/dist/node-prod/analytics-utils.js.map +1 -1
  317. package/dist/node-prod/analytics-utils.mjs.map +1 -1
  318. package/dist/node-prod/analytics.js +4 -5
  319. package/dist/node-prod/analytics.js.map +1 -1
  320. package/dist/node-prod/analytics.mjs +4 -5
  321. package/dist/node-prod/analytics.mjs.map +1 -1
  322. package/dist/node-prod/cart-hooks.js +24 -6
  323. package/dist/node-prod/cart-hooks.js.map +1 -1
  324. package/dist/node-prod/cart-hooks.mjs +25 -7
  325. package/dist/node-prod/cart-hooks.mjs.map +1 -1
  326. package/dist/node-prod/cart-queries.js.map +1 -1
  327. package/dist/node-prod/cart-queries.mjs.map +1 -1
  328. package/dist/node-prod/codegen.helpers.js.map +1 -1
  329. package/dist/node-prod/codegen.helpers.mjs.map +1 -1
  330. package/dist/node-prod/cookies-utils.js +4 -4
  331. package/dist/node-prod/cookies-utils.js.map +1 -1
  332. package/dist/node-prod/cookies-utils.mjs +4 -4
  333. package/dist/node-prod/cookies-utils.mjs.map +1 -1
  334. package/dist/node-prod/flatten-connection.js.map +1 -1
  335. package/dist/node-prod/flatten-connection.mjs.map +1 -1
  336. package/dist/node-prod/getProductOptions.js.map +1 -1
  337. package/dist/node-prod/getProductOptions.mjs.map +1 -1
  338. package/dist/node-prod/index.js +4 -0
  339. package/dist/node-prod/index.js.map +1 -1
  340. package/dist/node-prod/index.mjs +4 -0
  341. package/dist/node-prod/index.mjs.map +1 -1
  342. package/dist/node-prod/load-script.js.map +1 -1
  343. package/dist/node-prod/load-script.mjs.map +1 -1
  344. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +17 -17
  345. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
  346. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs +17 -17
  347. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  348. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +2 -2
  349. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
  350. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  351. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  352. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  353. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  354. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  355. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  356. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  357. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  358. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  359. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  360. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  361. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  362. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  363. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  364. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  365. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  366. package/dist/node-prod/optionValueDecoder.js.map +1 -1
  367. package/dist/node-prod/optionValueDecoder.mjs.map +1 -1
  368. package/dist/node-prod/packages/hydrogen-react/package.json.js +1 -1
  369. package/dist/node-prod/packages/hydrogen-react/package.json.mjs +1 -1
  370. package/dist/node-prod/parse-metafield.js +27 -1
  371. package/dist/node-prod/parse-metafield.js.map +1 -1
  372. package/dist/node-prod/parse-metafield.mjs +27 -1
  373. package/dist/node-prod/parse-metafield.mjs.map +1 -1
  374. package/dist/node-prod/storefront-api-constants.js +1 -1
  375. package/dist/node-prod/storefront-api-constants.js.map +1 -1
  376. package/dist/node-prod/storefront-api-constants.mjs +1 -1
  377. package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
  378. package/dist/node-prod/storefront-client.js.map +1 -1
  379. package/dist/node-prod/storefront-client.mjs.map +1 -1
  380. package/dist/node-prod/tracking-utils.js +92 -0
  381. package/dist/node-prod/tracking-utils.js.map +1 -0
  382. package/dist/node-prod/tracking-utils.mjs +92 -0
  383. package/dist/node-prod/tracking-utils.mjs.map +1 -0
  384. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  385. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  386. package/dist/node-prod/useCartActions.js.map +1 -1
  387. package/dist/node-prod/useCartActions.mjs.map +1 -1
  388. package/dist/node-prod/useMoney.js +53 -7
  389. package/dist/node-prod/useMoney.js.map +1 -1
  390. package/dist/node-prod/useMoney.mjs +53 -7
  391. package/dist/node-prod/useMoney.mjs.map +1 -1
  392. package/dist/node-prod/useSelectedOptionInUrlParam.js.map +1 -1
  393. package/dist/node-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
  394. package/dist/node-prod/useShopifyCookies.js +94 -7
  395. package/dist/node-prod/useShopifyCookies.js.map +1 -1
  396. package/dist/node-prod/useShopifyCookies.mjs +96 -9
  397. package/dist/node-prod/useShopifyCookies.mjs.map +1 -1
  398. package/dist/types/CartLineProvider.d.ts +1 -1
  399. package/dist/types/CartProvider.d.ts +2 -2
  400. package/dist/types/Image.d.ts +1 -1
  401. package/dist/types/ModelViewer.d.ts +1 -1
  402. package/dist/types/Money.d.ts +13 -5
  403. package/dist/types/ShopifyProvider.d.ts +5 -0
  404. package/dist/types/Video.d.ts +1 -1
  405. package/dist/types/analytics-schema-custom-storefront-customer-tracking.d.ts +3 -3
  406. package/dist/types/analytics-types.d.ts +24 -4
  407. package/dist/types/cart-hooks.d.ts +3 -4
  408. package/dist/types/codegen.helpers.d.ts +2 -2
  409. package/dist/types/cookies-utils.d.ts +4 -0
  410. package/dist/types/customer-account-api-types.d.ts +9386 -0
  411. package/dist/types/index.d.cts +1 -0
  412. package/dist/types/index.d.ts +1 -0
  413. package/dist/types/optionValueDecoder.d.ts +2 -2
  414. package/dist/types/storefront-api-constants.d.ts +1 -1
  415. package/dist/types/storefront-api-types.d.ts +143 -8
  416. package/dist/types/tracking-utils.d.ts +21 -0
  417. package/dist/types/useCartAPIStateMachine.d.ts +2 -2
  418. package/dist/types/useCartActions.d.ts +2 -2
  419. package/dist/types/useMoney.d.ts +16 -2
  420. package/dist/types/useShopifyCookies.d.ts +28 -2
  421. package/dist/umd/hydrogen-react.dev.js +376 -118
  422. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  423. package/dist/umd/hydrogen-react.prod.js +18 -18
  424. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  425. package/package.json +26 -25
  426. package/storefront.schema.json +1 -1
  427. package/dist/browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -6
  428. package/dist/browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
  429. package/dist/browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -6
  430. package/dist/browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
  431. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +0 -5
  432. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +0 -1
  433. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +0 -6
  434. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +0 -1
  435. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +0 -5
  436. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +0 -1
  437. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +0 -6
  438. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +0 -1
@@ -1,6 +1,6 @@
1
1
  (function(global, factory) {
2
2
  typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("react")) : typeof define === "function" && define.amd ? define(["exports", "react"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.hydrogenreact = {}, global.React));
3
- })(this, function(exports2, React$1) {
3
+ })(this, (function(exports2, React$1) {
4
4
  "use strict";
5
5
  function _interopNamespaceDefault(e2) {
6
6
  const n2 = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -51,9 +51,9 @@
51
51
  return a2;
52
52
  }
53
53
  var n;
54
- !function(t2) {
54
+ !(function(t2) {
55
55
  t2[t2.NotStarted = 0] = "NotStarted", t2[t2.Running = 1] = "Running", t2[t2.Stopped = 2] = "Stopped";
56
- }(n || (n = {}));
56
+ })(n || (n = {}));
57
57
  var e = { type: "xstate.init" };
58
58
  function r(t2) {
59
59
  return void 0 === t2 ? [] : [].concat(t2);
@@ -69,7 +69,7 @@
69
69
  return t2 === n2;
70
70
  };
71
71
  }
72
- function u$1(t2) {
72
+ function u(t2) {
73
73
  return "string" == typeof t2 ? { type: t2 } : t2;
74
74
  }
75
75
  function c(t2, n2) {
@@ -77,45 +77,45 @@
77
77
  }
78
78
  function f(t2, n2, e2) {
79
79
  var r2 = n2, i2 = false;
80
- return [t2.filter(function(t3) {
80
+ return [t2.filter((function(t3) {
81
81
  if ("xstate.assign" === t3.type) {
82
82
  i2 = true;
83
83
  var n3 = Object.assign({}, r2);
84
- return "function" == typeof t3.assignment ? n3 = t3.assignment(r2, e2) : Object.keys(t3.assignment).forEach(function(i3) {
84
+ return "function" == typeof t3.assignment ? n3 = t3.assignment(r2, e2) : Object.keys(t3.assignment).forEach((function(i3) {
85
85
  n3[i3] = "function" == typeof t3.assignment[i3] ? t3.assignment[i3](r2, e2) : t3.assignment[i3];
86
- }), r2 = n3, false;
86
+ })), r2 = n3, false;
87
87
  }
88
88
  return true;
89
- }), r2, i2];
89
+ })), r2, i2];
90
90
  }
91
91
  function s(n2, i2) {
92
92
  void 0 === i2 && (i2 = {});
93
- var s2 = t(f(r(n2.states[n2.initial].entry).map(function(t2) {
93
+ var s2 = t(f(r(n2.states[n2.initial].entry).map((function(t2) {
94
94
  return o(t2, i2.actions);
95
- }), n2.context, e), 2), l2 = s2[0], v2 = s2[1], y = { config: n2, _options: i2, initialState: { value: n2.initial, actions: l2, context: v2, matches: a(n2.initial) }, transition: function(e2, i3) {
96
- var s3, l3, v3 = "string" == typeof e2 ? { value: e2, context: n2.context } : e2, p = v3.value, g2 = v3.context, d = u$1(i3), x = n2.states[p];
95
+ })), n2.context, e), 2), l2 = s2[0], v2 = s2[1], y = { config: n2, _options: i2, initialState: { value: n2.initial, actions: l2, context: v2, matches: a(n2.initial) }, transition: function(e2, i3) {
96
+ var s3, l3, v3 = "string" == typeof e2 ? { value: e2, context: n2.context } : e2, p = v3.value, g = v3.context, d = u(i3), x = n2.states[p];
97
97
  if (x.on) {
98
98
  var m = r(x.on[d.type]);
99
99
  try {
100
- for (var h = function(t2) {
100
+ for (var h = (function(t2) {
101
101
  var n3 = "function" == typeof Symbol && Symbol.iterator, e3 = n3 && t2[n3], r2 = 0;
102
102
  if (e3) return e3.call(t2);
103
103
  if (t2 && "number" == typeof t2.length) return { next: function() {
104
104
  return t2 && r2 >= t2.length && (t2 = void 0), { value: t2 && t2[r2++], done: !t2 };
105
105
  } };
106
106
  throw new TypeError(n3 ? "Object is not iterable." : "Symbol.iterator is not defined.");
107
- }(m), b = h.next(); !b.done; b = h.next()) {
107
+ })(m), b = h.next(); !b.done; b = h.next()) {
108
108
  var S = b.value;
109
- if (void 0 === S) return c(p, g2);
109
+ if (void 0 === S) return c(p, g);
110
110
  var w = "string" == typeof S ? { target: S } : S, j = w.target, E = w.actions, R = void 0 === E ? [] : E, N = w.cond, O = void 0 === N ? function() {
111
111
  return true;
112
112
  } : N, _ = void 0 === j, k = null != j ? j : p, T = n2.states[k];
113
- if (O(g2, d)) {
114
- var q = t(f((_ ? r(R) : [].concat(x.exit, R, T.entry).filter(function(t2) {
113
+ if (O(g, d)) {
114
+ var q = t(f((_ ? r(R) : [].concat(x.exit, R, T.entry).filter((function(t2) {
115
115
  return t2;
116
- })).map(function(t2) {
116
+ }))).map((function(t2) {
117
117
  return o(t2, y._options.actions);
118
- }), g2, d), 3), z = q[0], A = q[1], B = q[2], C = null != j ? j : p;
118
+ })), g, d), 3), z = q[0], A = q[1], B = q[2], C = null != j ? j : p;
119
119
  return { value: C, context: A, actions: z, changed: j !== p || z.length > 0 || B, matches: a(C) };
120
120
  }
121
121
  }
@@ -129,21 +129,21 @@
129
129
  }
130
130
  }
131
131
  }
132
- return c(p, g2);
132
+ return c(p, g);
133
133
  } };
134
134
  return y;
135
135
  }
136
136
  var l$1 = function(t2, n2) {
137
- return t2.actions.forEach(function(e2) {
137
+ return t2.actions.forEach((function(e2) {
138
138
  var r2 = e2.exec;
139
139
  return r2 && r2(t2.context, n2);
140
- });
140
+ }));
141
141
  };
142
142
  function v(t2) {
143
143
  var r2 = t2.initialState, i2 = n.NotStarted, o2 = /* @__PURE__ */ new Set(), c2 = { _machine: t2, send: function(e2) {
144
- i2 === n.Running && (r2 = t2.transition(r2, e2), l$1(r2, u$1(e2)), o2.forEach(function(t3) {
144
+ i2 === n.Running && (r2 = t2.transition(r2, e2), l$1(r2, u(e2)), o2.forEach((function(t3) {
145
145
  return t3(r2);
146
- }));
146
+ })));
147
147
  }, subscribe: function(t3) {
148
148
  return o2.add(t3), t3(r2), { unsubscribe: function() {
149
149
  return o2.delete(t3);
@@ -807,7 +807,7 @@
807
807
  }
808
808
  `
809
809
  );
810
- const SFAPI_VERSION = "2025-04";
810
+ const SFAPI_VERSION = "2025-07";
811
811
  const MOCK_SHOP_DOMAIN = "mock.shop";
812
812
  const isMockShop = (domain) => domain.includes(MOCK_SHOP_DOMAIN);
813
813
  function createStorefrontClient({
@@ -929,6 +929,21 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
929
929
  const ShopifyContext = React$1.createContext(
930
930
  defaultShopifyContext
931
931
  );
932
+ function isSfapiProxyEnabled() {
933
+ var _a, _b, _c;
934
+ if (typeof window === "undefined") return false;
935
+ try {
936
+ const navigationEntry = (_b = (_a = window.performance) == null ? void 0 : _a.getEntriesByType) == null ? void 0 : _b.call(
937
+ _a,
938
+ "navigation"
939
+ )[0];
940
+ return !!((_c = navigationEntry == null ? void 0 : navigationEntry.serverTiming) == null ? void 0 : _c.some(
941
+ (entry) => entry.name === "_sfapi_proxy"
942
+ ));
943
+ } catch (e2) {
944
+ return false;
945
+ }
946
+ }
932
947
  function ShopifyProvider({
933
948
  children,
934
949
  ...shopifyConfig
@@ -944,12 +959,14 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
944
959
  );
945
960
  }
946
961
  const finalConfig = React$1.useMemo(() => {
962
+ const sameDomainForStorefrontApi = shopifyConfig.sameDomainForStorefrontApi ?? isSfapiProxyEnabled();
947
963
  function getShopifyDomain(overrideProps) {
948
964
  const domain = (overrideProps == null ? void 0 : overrideProps.storeDomain) ?? shopifyConfig.storeDomain;
949
965
  return domain.includes("://") ? domain : `https://${domain}`;
950
966
  }
951
967
  return {
952
968
  ...shopifyConfig,
969
+ sameDomainForStorefrontApi,
953
970
  getPublicTokenHeaders(overrideProps) {
954
971
  return getPublicTokenHeadersRaw(
955
972
  overrideProps.contentType,
@@ -959,7 +976,7 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
959
976
  },
960
977
  getShopifyDomain,
961
978
  getStorefrontApiUrl(overrideProps) {
962
- const finalDomainUrl = getShopifyDomain({
979
+ const finalDomainUrl = sameDomainForStorefrontApi && typeof window !== "undefined" ? window.location.origin : getShopifyDomain({
963
980
  storeDomain: (overrideProps == null ? void 0 : overrideProps.storeDomain) ?? shopifyConfig.storeDomain
964
981
  });
965
982
  return `${finalDomainUrl}${finalDomainUrl.endsWith("/") ? "" : "/"}api/${(overrideProps == null ? void 0 : overrideProps.storefrontApiVersion) ?? shopifyConfig.storefrontApiVersion}/graphql.json`;
@@ -981,77 +998,98 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
981
998
  const SHOPIFY_STOREFRONT_S_HEADER = "Shopify-Storefront-S";
982
999
  const SHOPIFY_Y = "_shopify_y";
983
1000
  const SHOPIFY_S = "_shopify_s";
984
- var g = /* @__PURE__ */ new Set([
985
- "domain",
986
- "path",
987
- "max-age",
988
- "expires",
989
- "samesite",
990
- "secure",
991
- "httponly"
992
- ]);
993
- function u(a2) {
994
- let r2 = {}, e2, t2, n2 = 0, m = a2.split(/;\s*/g), s2, i2;
995
- for (; n2 < m.length; n2++)
996
- if (t2 = m[n2], e2 = t2.indexOf("="), ~e2) {
997
- if (s2 = t2.substring(0, e2++).trim(), i2 = t2.substring(e2).trim(), i2[0] === '"' && (i2 = i2.substring(1, i2.length - 1)), ~i2.indexOf("%"))
998
- try {
999
- i2 = decodeURIComponent(i2);
1000
- } catch (f2) {
1001
+ const SHOPIFY_VISIT_TOKEN_HEADER = "X-Shopify-VisitToken";
1002
+ const SHOPIFY_UNIQUE_TOKEN_HEADER = "X-Shopify-UniqueToken";
1003
+ const cachedTrackingValues = { current: null };
1004
+ function getTrackingValues() {
1005
+ var _a, _b, _c;
1006
+ let trackingValues;
1007
+ if (typeof window !== "undefined" && typeof window.performance !== "undefined") {
1008
+ try {
1009
+ const resourceRE = /^https?:\/\/([^/]+)(\/api\/(?:unstable|2\d{3}-\d{2})\/graphql\.json(?=$|\?))?/;
1010
+ const entries = performance.getEntriesByType(
1011
+ "resource"
1012
+ );
1013
+ let matchedValues;
1014
+ for (let i2 = entries.length - 1; i2 >= 0; i2--) {
1015
+ const entry = entries[i2];
1016
+ if (entry.initiatorType !== "fetch") continue;
1017
+ const currentHost = window.location.host;
1018
+ const match = entry.name.match(resourceRE);
1019
+ if (!match) continue;
1020
+ const [, matchedHost, sfapiPath] = match;
1021
+ const isMatch = (
1022
+ // Same origin (exact host match)
1023
+ matchedHost === currentHost || // Subdomain with SFAPI path
1024
+ sfapiPath && (matchedHost == null ? void 0 : matchedHost.endsWith(`.${currentHost}`))
1025
+ );
1026
+ if (isMatch) {
1027
+ const values = extractFromPerformanceEntry(entry);
1028
+ if (values) {
1029
+ matchedValues = values;
1030
+ break;
1031
+ }
1001
1032
  }
1002
- g.has(t2 = s2.toLowerCase()) ? t2 === "expires" ? r2.expires = new Date(i2) : t2 === "max-age" ? r2.maxage = +i2 : r2[t2] = i2 : r2[s2] = i2;
1003
- } else
1004
- (s2 = t2.trim().toLowerCase()) && (s2 === "httponly" || s2 === "secure") && (r2[s2] = true);
1005
- return r2;
1006
- }
1007
- function l(a2, r2, e2 = {}) {
1008
- let t2 = a2 + "=" + encodeURIComponent(r2);
1009
- return e2.expires && (t2 += "; Expires=" + new Date(e2.expires).toUTCString()), e2.maxage != null && e2.maxage >= 0 && (t2 += "; Max-Age=" + (e2.maxage | 0)), e2.domain && (t2 += "; Domain=" + e2.domain), e2.path && (t2 += "; Path=" + e2.path), e2.samesite && (t2 += "; SameSite=" + e2.samesite), (e2.secure || e2.samesite === "None") && (t2 += "; Secure"), e2.httponly && (t2 += "; HttpOnly"), t2;
1010
- }
1011
- const tokenHash = "xxxx-4xxx-xxxx-xxxxxxxxxxxx";
1012
- function buildUUID() {
1013
- let hash = "";
1014
- try {
1015
- const crypto = window.crypto;
1016
- const randomValuesArray = new Uint16Array(31);
1017
- crypto.getRandomValues(randomValuesArray);
1018
- let i2 = 0;
1019
- hash = tokenHash.replace(/[x]/g, (c2) => {
1020
- const r2 = randomValuesArray[i2] % 16;
1021
- const v2 = c2 === "x" ? r2 : r2 & 3 | 8;
1022
- i2++;
1023
- return v2.toString(16);
1024
- }).toUpperCase();
1025
- } catch (err) {
1026
- hash = tokenHash.replace(/[x]/g, (c2) => {
1027
- const r2 = Math.random() * 16 | 0;
1028
- const v2 = c2 === "x" ? r2 : r2 & 3 | 8;
1029
- return v2.toString(16);
1030
- }).toUpperCase();
1033
+ }
1034
+ if (matchedValues) {
1035
+ trackingValues = matchedValues;
1036
+ }
1037
+ if (trackingValues) {
1038
+ cachedTrackingValues.current = trackingValues;
1039
+ } else if (cachedTrackingValues.current) {
1040
+ trackingValues = cachedTrackingValues.current;
1041
+ }
1042
+ if (!trackingValues) {
1043
+ const navigationEntries = performance.getEntriesByType(
1044
+ "navigation"
1045
+ )[0];
1046
+ trackingValues = extractFromPerformanceEntry(navigationEntries, false);
1047
+ }
1048
+ } catch {
1049
+ }
1031
1050
  }
1032
- return `${hexTime()}-${hash}`;
1033
- }
1034
- function hexTime() {
1035
- let dateNumber = 0;
1036
- let perfNumber = 0;
1037
- dateNumber = (/* @__PURE__ */ new Date()).getTime() >>> 0;
1038
- try {
1039
- perfNumber = performance.now() >>> 0;
1040
- } catch (err) {
1041
- perfNumber = 0;
1051
+ if (!trackingValues) {
1052
+ const cookie = (
1053
+ // Read from arguments to avoid declaring parameters in this function signature.
1054
+ // This logic is only used internally from `getShopifyCookies` and will be deprecated.
1055
+ typeof arguments[0] === "string" ? arguments[0] : typeof document !== "undefined" ? document.cookie : ""
1056
+ );
1057
+ trackingValues = {
1058
+ uniqueToken: ((_a = cookie.match(/\b_shopify_y=([^;]+)/)) == null ? void 0 : _a[1]) || "",
1059
+ visitToken: ((_b = cookie.match(/\b_shopify_s=([^;]+)/)) == null ? void 0 : _b[1]) || "",
1060
+ consent: ((_c = cookie.match(/\b_tracking_consent=([^;]+)/)) == null ? void 0 : _c[1]) || ""
1061
+ };
1042
1062
  }
1043
- const output = Math.abs(dateNumber + perfNumber).toString(16).toLowerCase();
1044
- return output.padStart(8, "0");
1045
- }
1046
- function getShopifyCookies(cookies) {
1047
- const cookieData = u(cookies);
1048
- return {
1049
- [SHOPIFY_Y]: cookieData[SHOPIFY_Y] || "",
1050
- [SHOPIFY_S]: cookieData[SHOPIFY_S] || ""
1051
- };
1063
+ return trackingValues;
1064
+ }
1065
+ function extractFromPerformanceEntry(entry, isConsentRequired = true) {
1066
+ let uniqueToken = "";
1067
+ let visitToken = "";
1068
+ let consent = "";
1069
+ const serverTiming = entry.serverTiming;
1070
+ if (serverTiming && serverTiming.length >= 3) {
1071
+ for (let i2 = serverTiming.length - 1; i2 >= 0; i2--) {
1072
+ const { name, description } = serverTiming[i2];
1073
+ if (!name || !description) continue;
1074
+ if (name === "_y") {
1075
+ uniqueToken = description;
1076
+ } else if (name === "_s") {
1077
+ visitToken = description;
1078
+ } else if (name === "_cmp") {
1079
+ consent = description;
1080
+ }
1081
+ if (uniqueToken && visitToken && consent) break;
1082
+ }
1083
+ }
1084
+ return uniqueToken && visitToken && (isConsentRequired ? consent : true) ? { uniqueToken, visitToken, consent } : void 0;
1052
1085
  }
1053
1086
  function useCartFetch() {
1054
- const { storefrontId, getPublicTokenHeaders, getStorefrontApiUrl } = useShop();
1087
+ const {
1088
+ storefrontId,
1089
+ getPublicTokenHeaders,
1090
+ getStorefrontApiUrl,
1091
+ sameDomainForStorefrontApi
1092
+ } = useShop();
1055
1093
  return React$1.useCallback(
1056
1094
  ({
1057
1095
  query,
@@ -1061,9 +1099,17 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
1061
1099
  if (storefrontId) {
1062
1100
  headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;
1063
1101
  }
1064
- const cookieData = getShopifyCookies(document.cookie);
1065
- headers[SHOPIFY_STOREFRONT_Y_HEADER] = cookieData[SHOPIFY_Y];
1066
- headers[SHOPIFY_STOREFRONT_S_HEADER] = cookieData[SHOPIFY_S];
1102
+ if (!sameDomainForStorefrontApi) {
1103
+ const { uniqueToken, visitToken } = getTrackingValues();
1104
+ if (uniqueToken) {
1105
+ headers[SHOPIFY_STOREFRONT_Y_HEADER] = uniqueToken;
1106
+ headers[SHOPIFY_UNIQUE_TOKEN_HEADER] = uniqueToken;
1107
+ }
1108
+ if (visitToken) {
1109
+ headers[SHOPIFY_STOREFRONT_S_HEADER] = visitToken;
1110
+ headers[SHOPIFY_VISIT_TOKEN_HEADER] = visitToken;
1111
+ }
1112
+ }
1067
1113
  return fetch(getStorefrontApiUrl(), {
1068
1114
  method: "POST",
1069
1115
  headers,
@@ -1081,7 +1127,12 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
1081
1127
  };
1082
1128
  });
1083
1129
  },
1084
- [getPublicTokenHeaders, storefrontId, getStorefrontApiUrl]
1130
+ [
1131
+ getPublicTokenHeaders,
1132
+ storefrontId,
1133
+ getStorefrontApiUrl,
1134
+ sameDomainForStorefrontApi
1135
+ ]
1085
1136
  );
1086
1137
  }
1087
1138
  function useCartActions({
@@ -2358,6 +2409,48 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2358
2409
  }
2359
2410
  return false;
2360
2411
  }
2412
+ const tokenHash = "xxxx-4xxx-xxxx-xxxxxxxxxxxx";
2413
+ function buildUUID() {
2414
+ let hash = "";
2415
+ try {
2416
+ const crypto = window.crypto;
2417
+ const randomValuesArray = new Uint16Array(31);
2418
+ crypto.getRandomValues(randomValuesArray);
2419
+ let i2 = 0;
2420
+ hash = tokenHash.replace(/[x]/g, (c2) => {
2421
+ const r2 = randomValuesArray[i2] % 16;
2422
+ const v2 = c2 === "x" ? r2 : r2 & 3 | 8;
2423
+ i2++;
2424
+ return v2.toString(16);
2425
+ }).toUpperCase();
2426
+ } catch (err) {
2427
+ hash = tokenHash.replace(/[x]/g, (c2) => {
2428
+ const r2 = Math.random() * 16 | 0;
2429
+ const v2 = c2 === "x" ? r2 : r2 & 3 | 8;
2430
+ return v2.toString(16);
2431
+ }).toUpperCase();
2432
+ }
2433
+ return `${hexTime()}-${hash}`;
2434
+ }
2435
+ function hexTime() {
2436
+ let dateNumber = 0;
2437
+ let perfNumber = 0;
2438
+ dateNumber = (/* @__PURE__ */ new Date()).getTime() >>> 0;
2439
+ try {
2440
+ perfNumber = performance.now() >>> 0;
2441
+ } catch (err) {
2442
+ perfNumber = 0;
2443
+ }
2444
+ const output = Math.abs(dateNumber + perfNumber).toString(16).toLowerCase();
2445
+ return output.padStart(8, "0");
2446
+ }
2447
+ function getShopifyCookies(cookies) {
2448
+ const trackingValues = getTrackingValues(cookies);
2449
+ return {
2450
+ [SHOPIFY_Y]: trackingValues.uniqueToken,
2451
+ [SHOPIFY_S]: trackingValues.visitToken
2452
+ };
2453
+ }
2361
2454
  const SCHEMA_ID$1 = "trekkie_storefront_page_view/1.4";
2362
2455
  const OXYGEN_DOMAIN = "myshopify.dev";
2363
2456
  function pageView$1(payload) {
@@ -2409,7 +2502,7 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2409
2502
  }
2410
2503
  return false;
2411
2504
  }
2412
- const version = "2025.5.0";
2505
+ const version = "2025.7.1";
2413
2506
  const SCHEMA_ID = "custom_storefront_customer_tracking/1.2";
2414
2507
  const PAGE_RENDERED_EVENT_NAME = "page_rendered";
2415
2508
  const COLLECTION_PAGE_RENDERED_EVENT_NAME = "collection_page_rendered";
@@ -2584,6 +2677,7 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2584
2677
  ];
2585
2678
  }
2586
2679
  function formatPayload(payload) {
2680
+ const payloadWithPrivacy = payload;
2587
2681
  return {
2588
2682
  source: payload.shopifySalesChannel || ShopifySalesChannel.headless,
2589
2683
  asset_version_id: payload.assetVersionId || version,
@@ -2600,9 +2694,9 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2600
2694
  navigation_api: payload.navigationApi,
2601
2695
  shop_id: parseInt(parseGid(payload.shopId).id),
2602
2696
  currency: payload.currency,
2603
- ccpa_enforced: payload.ccpaEnforced || false,
2604
- gdpr_enforced: payload.gdprEnforced || false,
2605
- gdpr_enforced_as_string: payload.gdprEnforced ? "true" : "false",
2697
+ ccpa_enforced: payloadWithPrivacy.ccpaEnforced || false,
2698
+ gdpr_enforced: payloadWithPrivacy.gdprEnforced || false,
2699
+ gdpr_enforced_as_string: payloadWithPrivacy.gdprEnforced ? "true" : "false",
2606
2700
  analytics_allowed: payload.analyticsAllowed || false,
2607
2701
  marketing_allowed: payload.marketingAllowed || false,
2608
2702
  sale_of_data_allowed: payload.saleOfDataAllowed || false
@@ -2727,10 +2821,10 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2727
2821
  };
2728
2822
  }
2729
2823
  const [navigationType, navigationApi] = getNavigationType();
2730
- const cookies = getShopifyCookies(document.cookie);
2824
+ const trackingValues = getTrackingValues();
2731
2825
  return {
2732
- uniqueToken: cookies[SHOPIFY_Y],
2733
- visitToken: cookies[SHOPIFY_S],
2826
+ uniqueToken: trackingValues.uniqueToken,
2827
+ visitToken: trackingValues.visitToken,
2734
2828
  url: location.href,
2735
2829
  path: location.pathname,
2736
2830
  search: location.search,
@@ -2861,6 +2955,17 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2861
2955
  );
2862
2956
  }
2863
2957
  const amount = parseFloat(money.amount);
2958
+ let isCurrencySupported = true;
2959
+ try {
2960
+ new Intl.NumberFormat(locale, {
2961
+ style: "currency",
2962
+ currency: money.currencyCode
2963
+ });
2964
+ } catch (e2) {
2965
+ if (e2 instanceof RangeError && e2.message.includes("currency")) {
2966
+ isCurrencySupported = false;
2967
+ }
2968
+ }
2864
2969
  const {
2865
2970
  defaultFormatter,
2866
2971
  nameFormatter,
@@ -2869,9 +2974,13 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2869
2974
  withoutCurrencyFormatter,
2870
2975
  withoutTrailingZerosOrCurrencyFormatter
2871
2976
  } = React$1.useMemo(() => {
2872
- const options = {
2977
+ const options = isCurrencySupported ? {
2873
2978
  style: "currency",
2874
2979
  currency: money.currencyCode
2980
+ } : {
2981
+ style: "decimal",
2982
+ minimumFractionDigits: 2,
2983
+ maximumFractionDigits: 2
2875
2984
  };
2876
2985
  return {
2877
2986
  defaultFormatter: getLazyFormatter(locale, options),
@@ -2888,21 +2997,39 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2888
2997
  minimumFractionDigits: 0,
2889
2998
  maximumFractionDigits: 0
2890
2999
  }),
2891
- withoutCurrencyFormatter: getLazyFormatter(locale),
3000
+ withoutCurrencyFormatter: getLazyFormatter(locale, {
3001
+ minimumFractionDigits: 2,
3002
+ maximumFractionDigits: 2
3003
+ }),
2892
3004
  withoutTrailingZerosOrCurrencyFormatter: getLazyFormatter(locale, {
2893
3005
  minimumFractionDigits: 0,
2894
3006
  maximumFractionDigits: 0
2895
3007
  })
2896
3008
  };
2897
- }, [money.currencyCode, locale]);
3009
+ }, [money.currencyCode, locale, isCurrencySupported]);
2898
3010
  const isPartCurrency = (part) => part.type === "currency";
2899
3011
  const lazyFormatters = React$1.useMemo(
2900
3012
  () => ({
2901
3013
  original: () => money,
2902
3014
  currencyCode: () => money.currencyCode,
2903
- localizedString: () => defaultFormatter().format(amount),
2904
- parts: () => defaultFormatter().formatToParts(amount),
2905
- withoutTrailingZeros: () => amount % 1 === 0 ? withoutTrailingZerosFormatter().format(amount) : defaultFormatter().format(amount),
3015
+ localizedString: () => {
3016
+ const formatted = defaultFormatter().format(amount);
3017
+ return isCurrencySupported ? formatted : `${formatted} ${money.currencyCode}`;
3018
+ },
3019
+ parts: () => {
3020
+ const parts = defaultFormatter().formatToParts(amount);
3021
+ if (!isCurrencySupported) {
3022
+ parts.push(
3023
+ { type: "literal", value: " " },
3024
+ { type: "currency", value: money.currencyCode }
3025
+ );
3026
+ }
3027
+ return parts;
3028
+ },
3029
+ withoutTrailingZeros: () => {
3030
+ const formatted = amount % 1 === 0 ? withoutTrailingZerosFormatter().format(amount) : defaultFormatter().format(amount);
3031
+ return isCurrencySupported ? formatted : `${formatted} ${money.currencyCode}`;
3032
+ },
2906
3033
  withoutTrailingZerosAndCurrency: () => amount % 1 === 0 ? withoutTrailingZerosOrCurrencyFormatter().format(amount) : withoutCurrencyFormatter().format(amount),
2907
3034
  currencyName: () => {
2908
3035
  var _a;
@@ -2928,6 +3055,7 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2928
3055
  [
2929
3056
  money,
2930
3057
  amount,
3058
+ isCurrencySupported,
2931
3059
  nameFormatter,
2932
3060
  defaultFormatter,
2933
3061
  narrowSymbolFormatter,
@@ -2953,7 +3081,19 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
2953
3081
  return function() {
2954
3082
  let formatter = formatterCache.get(key);
2955
3083
  if (!formatter) {
2956
- formatter = new Intl.NumberFormat(locale, options);
3084
+ try {
3085
+ formatter = new Intl.NumberFormat(locale, options);
3086
+ } catch (error) {
3087
+ if (error instanceof RangeError && error.message.includes("currency")) {
3088
+ const fallbackOptions = { ...options };
3089
+ delete fallbackOptions.currency;
3090
+ delete fallbackOptions.currencyDisplay;
3091
+ delete fallbackOptions.currencySign;
3092
+ formatter = new Intl.NumberFormat(locale, fallbackOptions);
3093
+ } else {
3094
+ throw error;
3095
+ }
3096
+ }
2957
3097
  formatterCache.set(key, formatter);
2958
3098
  }
2959
3099
  return formatter;
@@ -4127,8 +4267,33 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4127
4267
  parsedValue: metafield.value
4128
4268
  };
4129
4269
  // TODO: 'money' should probably be parsed even further to like `useMoney()`, but that logic needs to be extracted first so it's not a hook
4270
+ case "money": {
4271
+ let parsedValue = null;
4272
+ try {
4273
+ const parsed = parseJSON(metafield.value ?? "");
4274
+ if (parsed && typeof parsed === "object" && "currency_code" in parsed) {
4275
+ const moneyData = parsed;
4276
+ parsedValue = {
4277
+ amount: moneyData.amount,
4278
+ currencyCode: moneyData.currency_code
4279
+ };
4280
+ } else if (parsed && typeof parsed === "object" && "currencyCode" in parsed) {
4281
+ parsedValue = parsed;
4282
+ } else {
4283
+ parsedValue = parsed;
4284
+ }
4285
+ } catch (err) {
4286
+ const parseError = `parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed.`;
4287
+ {
4288
+ throw new Error(parseError);
4289
+ }
4290
+ }
4291
+ return {
4292
+ ...metafield,
4293
+ parsedValue
4294
+ };
4295
+ }
4130
4296
  case "dimension":
4131
- case "money":
4132
4297
  case "json":
4133
4298
  case "rating":
4134
4299
  case "volume":
@@ -4557,17 +4722,29 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4557
4722
  }, [JSON.stringify(selectedOptions)]);
4558
4723
  return null;
4559
4724
  }
4725
+ function l(a2, r2, e2 = {}) {
4726
+ let t2 = a2 + "=" + encodeURIComponent(r2);
4727
+ return e2.expires && (t2 += "; Expires=" + new Date(e2.expires).toUTCString()), e2.maxage != null && e2.maxage >= 0 && (t2 += "; Max-Age=" + (e2.maxage | 0)), e2.domain && (t2 += "; Domain=" + e2.domain), e2.path && (t2 += "; Path=" + e2.path), e2.samesite && (t2 += "; SameSite=" + e2.samesite), (e2.secure || e2.samesite === "None") && (t2 += "; Secure"), e2.httponly && (t2 += "; HttpOnly"), t2;
4728
+ }
4560
4729
  const longTermLength = 60 * 60 * 24 * 360 * 1;
4561
4730
  const shortTermLength = 60 * 30;
4562
4731
  function useShopifyCookies(options) {
4563
4732
  const {
4564
- hasUserConsent = false,
4733
+ hasUserConsent,
4565
4734
  domain = "",
4566
- checkoutDomain = ""
4735
+ checkoutDomain = "",
4736
+ storefrontAccessToken,
4737
+ fetchTrackingValues,
4738
+ ignoreDeprecatedCookies = false
4567
4739
  } = options || {};
4740
+ const coreCookiesReady = useCoreShopifyCookies({
4741
+ storefrontAccessToken,
4742
+ fetchTrackingValues,
4743
+ checkoutDomain
4744
+ });
4568
4745
  React$1.useEffect(() => {
4569
- const cookies = getShopifyCookies(document.cookie);
4570
- let currentDomain = domain || window.document.location.host;
4746
+ if (ignoreDeprecatedCookies || !coreCookiesReady) return;
4747
+ let currentDomain = domain || window.location.host;
4571
4748
  if (checkoutDomain) {
4572
4749
  const checkoutDomainParts = checkoutDomain.split(".").reverse();
4573
4750
  const currentDomainParts = currentDomain.split(".").reverse();
@@ -4582,15 +4759,19 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4582
4759
  if (/^localhost/.test(currentDomain)) currentDomain = "";
4583
4760
  const domainWithLeadingDot = currentDomain ? /^\./.test(currentDomain) ? currentDomain : `.${currentDomain}` : "";
4584
4761
  if (hasUserConsent) {
4762
+ const trackingValues = getTrackingValues();
4763
+ if ((trackingValues.uniqueToken || trackingValues.visitToken || "").startsWith("00000000-")) {
4764
+ return;
4765
+ }
4585
4766
  setCookie(
4586
4767
  SHOPIFY_Y,
4587
- cookies[SHOPIFY_Y] || buildUUID(),
4768
+ trackingValues.uniqueToken || buildUUID(),
4588
4769
  longTermLength,
4589
4770
  domainWithLeadingDot
4590
4771
  );
4591
4772
  setCookie(
4592
4773
  SHOPIFY_S,
4593
- cookies[SHOPIFY_S] || buildUUID(),
4774
+ trackingValues.visitToken || buildUUID(),
4594
4775
  shortTermLength,
4595
4776
  domainWithLeadingDot
4596
4777
  );
@@ -4598,7 +4779,14 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4598
4779
  setCookie(SHOPIFY_Y, "", 0, domainWithLeadingDot);
4599
4780
  setCookie(SHOPIFY_S, "", 0, domainWithLeadingDot);
4600
4781
  }
4601
- }, [options, hasUserConsent, domain, checkoutDomain]);
4782
+ }, [
4783
+ coreCookiesReady,
4784
+ hasUserConsent,
4785
+ domain,
4786
+ checkoutDomain,
4787
+ ignoreDeprecatedCookies
4788
+ ]);
4789
+ return coreCookiesReady;
4602
4790
  }
4603
4791
  function setCookie(name, value, maxage, domain) {
4604
4792
  document.cookie = l(name, value, {
@@ -4608,6 +4796,73 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4608
4796
  path: "/"
4609
4797
  });
4610
4798
  }
4799
+ async function fetchTrackingValuesFromBrowser(storefrontAccessToken, storefrontApiDomain = "") {
4800
+ const { uniqueToken, visitToken } = getTrackingValues();
4801
+ const response = await fetch(
4802
+ // TODO: update this endpoint when it becomes stable
4803
+ `${storefrontApiDomain.replace(/\/+$/, "")}/api/unstable/graphql.json`,
4804
+ {
4805
+ method: "POST",
4806
+ headers: {
4807
+ "Content-Type": "application/json",
4808
+ ...storefrontAccessToken && {
4809
+ "X-Shopify-Storefront-Access-Token": storefrontAccessToken
4810
+ },
4811
+ ...visitToken || uniqueToken ? {
4812
+ [SHOPIFY_VISIT_TOKEN_HEADER]: visitToken,
4813
+ [SHOPIFY_UNIQUE_TOKEN_HEADER]: uniqueToken
4814
+ } : void 0
4815
+ },
4816
+ body: JSON.stringify({
4817
+ query: (
4818
+ // This query ensures we get _cmp (consent) server-timing header, which is not available in other queries.
4819
+ // This value can be passed later to consent-tracking-api and privacy-banner scripts to avoid extra requests.
4820
+ "query ensureCookies { consentManagement { cookies(visitorConsent:{}) { cookieDomain } } }"
4821
+ )
4822
+ })
4823
+ }
4824
+ );
4825
+ if (!response.ok) {
4826
+ throw new Error(
4827
+ `Failed to fetch consent from browser: ${response.status} ${response.statusText}`
4828
+ );
4829
+ }
4830
+ await response.json();
4831
+ getTrackingValues();
4832
+ }
4833
+ function useCoreShopifyCookies({
4834
+ checkoutDomain,
4835
+ storefrontAccessToken,
4836
+ fetchTrackingValues = false
4837
+ }) {
4838
+ const [cookiesReady, setCookiesReady] = React$1.useState(!fetchTrackingValues);
4839
+ const hasFetchedTrackingValues = React$1.useRef(false);
4840
+ React$1.useEffect(() => {
4841
+ if (!fetchTrackingValues) {
4842
+ setCookiesReady(true);
4843
+ return;
4844
+ }
4845
+ if (hasFetchedTrackingValues.current) return;
4846
+ hasFetchedTrackingValues.current = true;
4847
+ fetchTrackingValuesFromBrowser(storefrontAccessToken).catch(
4848
+ (error) => checkoutDomain ? (
4849
+ // Retry with checkout domain if available to at least
4850
+ // get the server-timing values for tracking.
4851
+ fetchTrackingValuesFromBrowser(
4852
+ storefrontAccessToken,
4853
+ checkoutDomain
4854
+ )
4855
+ ) : Promise.reject(error)
4856
+ ).catch((error) => {
4857
+ console.warn(
4858
+ "[h2:warn:useShopifyCookies] Failed to fetch tracking values from browser: " + (error instanceof Error ? error.message : String(error))
4859
+ );
4860
+ }).finally(() => {
4861
+ setCookiesReady(true);
4862
+ });
4863
+ }, [checkoutDomain, fetchTrackingValues, storefrontAccessToken]);
4864
+ return cookiesReady;
4865
+ }
4611
4866
  exports2.AddToCartButton = AddToCartButton;
4612
4867
  exports2.AnalyticsEventName = AnalyticsEventName;
4613
4868
  exports2.AnalyticsPageType = AnalyticsPageType;
@@ -4631,6 +4886,8 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4631
4886
  exports2.SHOPIFY_STOREFRONT_ID_HEADER = SHOPIFY_STOREFRONT_ID_HEADER;
4632
4887
  exports2.SHOPIFY_STOREFRONT_S_HEADER = SHOPIFY_STOREFRONT_S_HEADER;
4633
4888
  exports2.SHOPIFY_STOREFRONT_Y_HEADER = SHOPIFY_STOREFRONT_Y_HEADER;
4889
+ exports2.SHOPIFY_UNIQUE_TOKEN_HEADER = SHOPIFY_UNIQUE_TOKEN_HEADER;
4890
+ exports2.SHOPIFY_VISIT_TOKEN_HEADER = SHOPIFY_VISIT_TOKEN_HEADER;
4634
4891
  exports2.SHOPIFY_Y = SHOPIFY_Y;
4635
4892
  exports2.ShopPayButton = ShopPayButton;
4636
4893
  exports2.ShopifyProvider = ShopifyProvider;
@@ -4644,6 +4901,7 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4644
4901
  exports2.getClientBrowserParameters = getClientBrowserParameters;
4645
4902
  exports2.getProductOptions = getProductOptions;
4646
4903
  exports2.getShopifyCookies = getShopifyCookies;
4904
+ exports2.getTrackingValues = getTrackingValues;
4647
4905
  exports2.isOptionValueCombinationInEncodedVariant = isOptionValueCombinationInEncodedVariant;
4648
4906
  exports2.mapSelectedProductOptionToObject = mapSelectedProductOptionToObject;
4649
4907
  exports2.parseGid = parseGid;
@@ -4659,5 +4917,5 @@ Refer to the authentication https://shopify.dev/api/storefront#authentication do
4659
4917
  exports2.useShop = useShop;
4660
4918
  exports2.useShopifyCookies = useShopifyCookies;
4661
4919
  Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
4662
- });
4920
+ }));
4663
4921
  //# sourceMappingURL=hydrogen-react.dev.js.map