@shopify/hydrogen-react 2022.10.8 → 2023.1.5

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 (646) hide show
  1. package/README.md +41 -47
  2. package/dist/browser-dev/AddToCartButton.mjs +43 -40
  3. package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
  4. package/dist/browser-dev/BaseButton.mjs +13 -15
  5. package/dist/browser-dev/BaseButton.mjs.map +1 -1
  6. package/dist/browser-dev/BuyNowButton.mjs +19 -17
  7. package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
  8. package/dist/browser-dev/CartCheckoutButton.mjs +12 -15
  9. package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
  10. package/dist/browser-dev/CartCost.mjs +25 -0
  11. package/dist/browser-dev/CartCost.mjs.map +1 -0
  12. package/dist/browser-dev/CartLinePrice.mjs +21 -0
  13. package/dist/browser-dev/CartLinePrice.mjs.map +1 -0
  14. package/dist/browser-dev/CartLineProvider.mjs +22 -0
  15. package/dist/browser-dev/CartLineProvider.mjs.map +1 -0
  16. package/dist/browser-dev/CartLineQuantity.mjs +12 -0
  17. package/dist/browser-dev/CartLineQuantity.mjs.map +1 -0
  18. package/dist/browser-dev/CartLineQuantityAdjustButton.mjs +48 -0
  19. package/dist/browser-dev/CartLineQuantityAdjustButton.mjs.map +1 -0
  20. package/dist/browser-dev/CartProvider.mjs +74 -68
  21. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  22. package/dist/browser-dev/ExternalVideo.mjs +13 -11
  23. package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
  24. package/dist/browser-dev/Image.mjs +41 -30
  25. package/dist/browser-dev/Image.mjs.map +1 -1
  26. package/dist/browser-dev/MediaFile.mjs +29 -21
  27. package/dist/browser-dev/MediaFile.mjs.map +1 -1
  28. package/dist/browser-dev/ModelViewer.mjs +138 -76
  29. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  30. package/dist/browser-dev/Money.mjs +12 -9
  31. package/dist/browser-dev/Money.mjs.map +1 -1
  32. package/dist/browser-dev/ProductPrice.mjs +12 -17
  33. package/dist/browser-dev/ProductPrice.mjs.map +1 -1
  34. package/dist/browser-dev/ProductProvider.mjs +102 -73
  35. package/dist/browser-dev/ProductProvider.mjs.map +1 -1
  36. package/dist/browser-dev/ShopPayButton.mjs +14 -24
  37. package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
  38. package/dist/browser-dev/ShopifyProvider.mjs +22 -38
  39. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
  40. package/dist/browser-dev/Video.mjs +30 -21
  41. package/dist/browser-dev/Video.mjs.map +1 -1
  42. package/dist/browser-dev/_virtual/index.mjs +11 -2
  43. package/dist/browser-dev/_virtual/index.mjs.map +1 -1
  44. package/dist/browser-dev/_virtual/with-selector.mjs +11 -2
  45. package/dist/browser-dev/_virtual/with-selector.mjs.map +1 -1
  46. package/dist/browser-dev/analytics-constants.mjs +43 -0
  47. package/dist/browser-dev/analytics-constants.mjs.map +1 -0
  48. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  49. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  50. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  51. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  52. package/dist/browser-dev/analytics-utils.mjs +49 -0
  53. package/dist/browser-dev/analytics-utils.mjs.map +1 -0
  54. package/dist/browser-dev/analytics.mjs +159 -0
  55. package/dist/browser-dev/analytics.mjs.map +1 -0
  56. package/dist/browser-dev/cart-hooks.mjs +32 -34
  57. package/dist/browser-dev/cart-hooks.mjs.map +1 -1
  58. package/dist/browser-dev/cart-queries.mjs +50 -28
  59. package/dist/browser-dev/cart-queries.mjs.map +1 -1
  60. package/dist/browser-dev/codegen.helpers.mjs +1 -0
  61. package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
  62. package/dist/browser-dev/cookies-utils.mjs +50 -0
  63. package/dist/browser-dev/cookies-utils.mjs.map +1 -0
  64. package/dist/browser-dev/flatten-connection.mjs +7 -5
  65. package/dist/browser-dev/flatten-connection.mjs.map +1 -1
  66. package/dist/browser-dev/image-size.mjs +8 -8
  67. package/dist/browser-dev/image-size.mjs.map +1 -1
  68. package/dist/browser-dev/index.mjs +24 -6
  69. package/dist/browser-dev/index.mjs.map +1 -1
  70. package/dist/browser-dev/load-script.mjs +3 -1
  71. package/dist/browser-dev/load-script.mjs.map +1 -1
  72. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  73. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  74. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  75. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  76. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  77. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  78. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  79. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  80. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  81. package/dist/browser-dev/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  82. package/dist/browser-dev/parse-metafield.mjs.map +1 -0
  83. package/dist/browser-dev/storefront-api-constants.mjs +1 -1
  84. package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
  85. package/dist/browser-dev/storefront-client.mjs +27 -27
  86. package/dist/browser-dev/storefront-client.mjs.map +1 -1
  87. package/dist/browser-dev/useCartAPIStateMachine.mjs +120 -80
  88. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  89. package/dist/browser-dev/useCartActions.mjs +150 -109
  90. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  91. package/dist/browser-dev/useMoney.mjs +63 -36
  92. package/dist/browser-dev/useMoney.mjs.map +1 -1
  93. package/dist/browser-dev/useShopifyCookies.mjs +41 -0
  94. package/dist/browser-dev/useShopifyCookies.mjs.map +1 -0
  95. package/dist/browser-prod/AddToCartButton.mjs +43 -40
  96. package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
  97. package/dist/browser-prod/BaseButton.mjs +13 -15
  98. package/dist/browser-prod/BaseButton.mjs.map +1 -1
  99. package/dist/browser-prod/BuyNowButton.mjs +19 -17
  100. package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
  101. package/dist/browser-prod/CartCheckoutButton.mjs +12 -15
  102. package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
  103. package/dist/browser-prod/CartCost.mjs +25 -0
  104. package/dist/browser-prod/CartCost.mjs.map +1 -0
  105. package/dist/browser-prod/CartLinePrice.mjs +18 -0
  106. package/dist/browser-prod/CartLinePrice.mjs.map +1 -0
  107. package/dist/browser-prod/CartLineProvider.mjs +22 -0
  108. package/dist/browser-prod/CartLineProvider.mjs.map +1 -0
  109. package/dist/browser-prod/CartLineQuantity.mjs +12 -0
  110. package/dist/browser-prod/CartLineQuantity.mjs.map +1 -0
  111. package/dist/browser-prod/CartLineQuantityAdjustButton.mjs +48 -0
  112. package/dist/browser-prod/CartLineQuantityAdjustButton.mjs.map +1 -0
  113. package/dist/browser-prod/CartProvider.mjs +74 -68
  114. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  115. package/dist/browser-prod/ExternalVideo.mjs +13 -11
  116. package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
  117. package/dist/browser-prod/Image.mjs +35 -28
  118. package/dist/browser-prod/Image.mjs.map +1 -1
  119. package/dist/browser-prod/MediaFile.mjs +29 -21
  120. package/dist/browser-prod/MediaFile.mjs.map +1 -1
  121. package/dist/browser-prod/ModelViewer.mjs +135 -75
  122. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  123. package/dist/browser-prod/Money.mjs +12 -9
  124. package/dist/browser-prod/Money.mjs.map +1 -1
  125. package/dist/browser-prod/ProductPrice.mjs +12 -17
  126. package/dist/browser-prod/ProductPrice.mjs.map +1 -1
  127. package/dist/browser-prod/ProductProvider.mjs +102 -73
  128. package/dist/browser-prod/ProductProvider.mjs.map +1 -1
  129. package/dist/browser-prod/ShopPayButton.mjs +14 -24
  130. package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
  131. package/dist/browser-prod/ShopifyProvider.mjs +22 -32
  132. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
  133. package/dist/browser-prod/Video.mjs +30 -21
  134. package/dist/browser-prod/Video.mjs.map +1 -1
  135. package/dist/browser-prod/_virtual/index.mjs +11 -2
  136. package/dist/browser-prod/_virtual/index.mjs.map +1 -1
  137. package/dist/browser-prod/_virtual/with-selector.mjs +11 -2
  138. package/dist/browser-prod/_virtual/with-selector.mjs.map +1 -1
  139. package/dist/browser-prod/analytics-constants.mjs +43 -0
  140. package/dist/browser-prod/analytics-constants.mjs.map +1 -0
  141. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  142. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  143. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  144. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  145. package/dist/browser-prod/analytics-utils.mjs +49 -0
  146. package/dist/browser-prod/analytics-utils.mjs.map +1 -0
  147. package/dist/browser-prod/analytics.mjs +158 -0
  148. package/dist/browser-prod/analytics.mjs.map +1 -0
  149. package/dist/browser-prod/cart-hooks.mjs +32 -34
  150. package/dist/browser-prod/cart-hooks.mjs.map +1 -1
  151. package/dist/browser-prod/cart-queries.mjs +50 -28
  152. package/dist/browser-prod/cart-queries.mjs.map +1 -1
  153. package/dist/browser-prod/codegen.helpers.mjs +1 -0
  154. package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
  155. package/dist/browser-prod/cookies-utils.mjs +50 -0
  156. package/dist/browser-prod/cookies-utils.mjs.map +1 -0
  157. package/dist/browser-prod/flatten-connection.mjs +7 -5
  158. package/dist/browser-prod/flatten-connection.mjs.map +1 -1
  159. package/dist/browser-prod/image-size.mjs +8 -8
  160. package/dist/browser-prod/image-size.mjs.map +1 -1
  161. package/dist/browser-prod/index.mjs +24 -6
  162. package/dist/browser-prod/index.mjs.map +1 -1
  163. package/dist/browser-prod/load-script.mjs +3 -1
  164. package/dist/browser-prod/load-script.mjs.map +1 -1
  165. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  166. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  167. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  168. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  169. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  170. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  171. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  172. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  173. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  174. package/dist/browser-prod/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  175. package/dist/browser-prod/parse-metafield.mjs.map +1 -0
  176. package/dist/browser-prod/storefront-api-constants.mjs +1 -1
  177. package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
  178. package/dist/browser-prod/storefront-client.mjs +27 -27
  179. package/dist/browser-prod/storefront-client.mjs.map +1 -1
  180. package/dist/browser-prod/useCartAPIStateMachine.mjs +120 -80
  181. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  182. package/dist/browser-prod/useCartActions.mjs +150 -109
  183. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  184. package/dist/browser-prod/useMoney.mjs +63 -36
  185. package/dist/browser-prod/useMoney.mjs.map +1 -1
  186. package/dist/browser-prod/useShopifyCookies.mjs +41 -0
  187. package/dist/browser-prod/useShopifyCookies.mjs.map +1 -0
  188. package/dist/node-dev/AddToCartButton.js +44 -41
  189. package/dist/node-dev/AddToCartButton.js.map +1 -1
  190. package/dist/node-dev/AddToCartButton.mjs +43 -40
  191. package/dist/node-dev/AddToCartButton.mjs.map +1 -1
  192. package/dist/node-dev/BaseButton.js +14 -16
  193. package/dist/node-dev/BaseButton.js.map +1 -1
  194. package/dist/node-dev/BaseButton.mjs +13 -15
  195. package/dist/node-dev/BaseButton.mjs.map +1 -1
  196. package/dist/node-dev/BuyNowButton.js +20 -18
  197. package/dist/node-dev/BuyNowButton.js.map +1 -1
  198. package/dist/node-dev/BuyNowButton.mjs +19 -17
  199. package/dist/node-dev/BuyNowButton.mjs.map +1 -1
  200. package/dist/node-dev/CartCheckoutButton.js +13 -16
  201. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  202. package/dist/node-dev/CartCheckoutButton.mjs +12 -15
  203. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
  204. package/dist/node-dev/CartCost.js +25 -0
  205. package/dist/node-dev/CartCost.js.map +1 -0
  206. package/dist/node-dev/CartCost.mjs +25 -0
  207. package/dist/node-dev/CartCost.mjs.map +1 -0
  208. package/dist/node-dev/CartLinePrice.js +21 -0
  209. package/dist/node-dev/CartLinePrice.js.map +1 -0
  210. package/dist/node-dev/CartLinePrice.mjs +21 -0
  211. package/dist/node-dev/CartLinePrice.mjs.map +1 -0
  212. package/dist/node-dev/CartLineProvider.js +22 -0
  213. package/dist/node-dev/CartLineProvider.js.map +1 -0
  214. package/dist/node-dev/CartLineProvider.mjs +22 -0
  215. package/dist/node-dev/CartLineProvider.mjs.map +1 -0
  216. package/dist/node-dev/CartLineQuantity.js +12 -0
  217. package/dist/node-dev/CartLineQuantity.js.map +1 -0
  218. package/dist/node-dev/CartLineQuantity.mjs +12 -0
  219. package/dist/node-dev/CartLineQuantity.mjs.map +1 -0
  220. package/dist/node-dev/CartLineQuantityAdjustButton.js +48 -0
  221. package/dist/node-dev/CartLineQuantityAdjustButton.js.map +1 -0
  222. package/dist/node-dev/CartLineQuantityAdjustButton.mjs +48 -0
  223. package/dist/node-dev/CartLineQuantityAdjustButton.mjs.map +1 -0
  224. package/dist/node-dev/CartProvider.js +75 -69
  225. package/dist/node-dev/CartProvider.js.map +1 -1
  226. package/dist/node-dev/CartProvider.mjs +74 -68
  227. package/dist/node-dev/CartProvider.mjs.map +1 -1
  228. package/dist/node-dev/ExternalVideo.js +14 -12
  229. package/dist/node-dev/ExternalVideo.js.map +1 -1
  230. package/dist/node-dev/ExternalVideo.mjs +13 -11
  231. package/dist/node-dev/ExternalVideo.mjs.map +1 -1
  232. package/dist/node-dev/Image.js +42 -31
  233. package/dist/node-dev/Image.js.map +1 -1
  234. package/dist/node-dev/Image.mjs +41 -30
  235. package/dist/node-dev/Image.mjs.map +1 -1
  236. package/dist/node-dev/MediaFile.js +30 -22
  237. package/dist/node-dev/MediaFile.js.map +1 -1
  238. package/dist/node-dev/MediaFile.mjs +29 -21
  239. package/dist/node-dev/MediaFile.mjs.map +1 -1
  240. package/dist/node-dev/ModelViewer.js +139 -77
  241. package/dist/node-dev/ModelViewer.js.map +1 -1
  242. package/dist/node-dev/ModelViewer.mjs +138 -76
  243. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  244. package/dist/node-dev/Money.js +13 -10
  245. package/dist/node-dev/Money.js.map +1 -1
  246. package/dist/node-dev/Money.mjs +12 -9
  247. package/dist/node-dev/Money.mjs.map +1 -1
  248. package/dist/node-dev/ProductPrice.js +13 -18
  249. package/dist/node-dev/ProductPrice.js.map +1 -1
  250. package/dist/node-dev/ProductPrice.mjs +12 -17
  251. package/dist/node-dev/ProductPrice.mjs.map +1 -1
  252. package/dist/node-dev/ProductProvider.js +103 -74
  253. package/dist/node-dev/ProductProvider.js.map +1 -1
  254. package/dist/node-dev/ProductProvider.mjs +102 -73
  255. package/dist/node-dev/ProductProvider.mjs.map +1 -1
  256. package/dist/node-dev/ShopPayButton.js +14 -24
  257. package/dist/node-dev/ShopPayButton.js.map +1 -1
  258. package/dist/node-dev/ShopPayButton.mjs +14 -24
  259. package/dist/node-dev/ShopPayButton.mjs.map +1 -1
  260. package/dist/node-dev/ShopifyProvider.js +23 -39
  261. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  262. package/dist/node-dev/ShopifyProvider.mjs +22 -38
  263. package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
  264. package/dist/node-dev/Video.js +31 -22
  265. package/dist/node-dev/Video.js.map +1 -1
  266. package/dist/node-dev/Video.mjs +30 -21
  267. package/dist/node-dev/Video.mjs.map +1 -1
  268. package/dist/node-dev/_virtual/index.js +11 -3
  269. package/dist/node-dev/_virtual/index.js.map +1 -1
  270. package/dist/node-dev/_virtual/index.mjs +11 -2
  271. package/dist/node-dev/_virtual/index.mjs.map +1 -1
  272. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.js +1 -1
  273. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  274. package/dist/node-dev/_virtual/with-selector.development.js +1 -1
  275. package/dist/node-dev/_virtual/with-selector.js +11 -3
  276. package/dist/node-dev/_virtual/with-selector.js.map +1 -1
  277. package/dist/node-dev/_virtual/with-selector.mjs +11 -2
  278. package/dist/node-dev/_virtual/with-selector.mjs.map +1 -1
  279. package/dist/node-dev/_virtual/with-selector.production.min.js +1 -1
  280. package/dist/node-dev/analytics-constants.js +43 -0
  281. package/dist/node-dev/analytics-constants.js.map +1 -0
  282. package/dist/node-dev/analytics-constants.mjs +43 -0
  283. package/dist/node-dev/analytics-constants.mjs.map +1 -0
  284. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +145 -0
  285. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
  286. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  287. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  288. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js +58 -0
  289. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
  290. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  291. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  292. package/dist/node-dev/analytics-utils.js +49 -0
  293. package/dist/node-dev/analytics-utils.js.map +1 -0
  294. package/dist/node-dev/analytics-utils.mjs +49 -0
  295. package/dist/node-dev/analytics-utils.mjs.map +1 -0
  296. package/dist/node-dev/analytics.js +159 -0
  297. package/dist/node-dev/analytics.js.map +1 -0
  298. package/dist/node-dev/analytics.mjs +159 -0
  299. package/dist/node-dev/analytics.mjs.map +1 -0
  300. package/dist/node-dev/cart-constants.js +1 -1
  301. package/dist/node-dev/cart-hooks.js +32 -34
  302. package/dist/node-dev/cart-hooks.js.map +1 -1
  303. package/dist/node-dev/cart-hooks.mjs +32 -34
  304. package/dist/node-dev/cart-hooks.mjs.map +1 -1
  305. package/dist/node-dev/cart-queries.js +51 -29
  306. package/dist/node-dev/cart-queries.js.map +1 -1
  307. package/dist/node-dev/cart-queries.mjs +50 -28
  308. package/dist/node-dev/cart-queries.mjs.map +1 -1
  309. package/dist/node-dev/codegen.helpers.js +2 -1
  310. package/dist/node-dev/codegen.helpers.js.map +1 -1
  311. package/dist/node-dev/codegen.helpers.mjs +1 -0
  312. package/dist/node-dev/codegen.helpers.mjs.map +1 -1
  313. package/dist/node-dev/cookies-utils.js +50 -0
  314. package/dist/node-dev/cookies-utils.js.map +1 -0
  315. package/dist/node-dev/cookies-utils.mjs +50 -0
  316. package/dist/node-dev/cookies-utils.mjs.map +1 -0
  317. package/dist/node-dev/flatten-connection.js +8 -6
  318. package/dist/node-dev/flatten-connection.js.map +1 -1
  319. package/dist/node-dev/flatten-connection.mjs +7 -5
  320. package/dist/node-dev/flatten-connection.mjs.map +1 -1
  321. package/dist/node-dev/image-size.js +9 -9
  322. package/dist/node-dev/image-size.js.map +1 -1
  323. package/dist/node-dev/image-size.mjs +8 -8
  324. package/dist/node-dev/image-size.mjs.map +1 -1
  325. package/dist/node-dev/index.js +25 -7
  326. package/dist/node-dev/index.js.map +1 -1
  327. package/dist/node-dev/index.mjs +24 -6
  328. package/dist/node-dev/index.mjs.map +1 -1
  329. package/dist/node-dev/load-script.js +4 -2
  330. package/dist/node-dev/load-script.js.map +1 -1
  331. package/dist/node-dev/load-script.mjs +3 -1
  332. package/dist/node-dev/load-script.mjs.map +1 -1
  333. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +1 -1
  334. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
  335. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  336. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +2 -2
  337. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
  338. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  339. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  340. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js +2 -4
  341. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  342. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  343. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  344. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  345. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  346. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  347. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  348. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  349. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  350. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  351. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  352. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  353. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  354. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js +4 -4
  355. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  356. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  357. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  358. package/dist/node-dev/{metafield-parser.js → parse-metafield.js} +21 -13
  359. package/dist/node-dev/parse-metafield.js.map +1 -0
  360. package/dist/node-dev/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  361. package/dist/node-dev/parse-metafield.mjs.map +1 -0
  362. package/dist/node-dev/storefront-api-constants.js +2 -2
  363. package/dist/node-dev/storefront-api-constants.js.map +1 -1
  364. package/dist/node-dev/storefront-api-constants.mjs +1 -1
  365. package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
  366. package/dist/node-dev/storefront-client.js +28 -28
  367. package/dist/node-dev/storefront-client.js.map +1 -1
  368. package/dist/node-dev/storefront-client.mjs +27 -27
  369. package/dist/node-dev/storefront-client.mjs.map +1 -1
  370. package/dist/node-dev/useCartAPIStateMachine.js +121 -81
  371. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  372. package/dist/node-dev/useCartAPIStateMachine.mjs +120 -80
  373. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  374. package/dist/node-dev/useCartActions.js +151 -110
  375. package/dist/node-dev/useCartActions.js.map +1 -1
  376. package/dist/node-dev/useCartActions.mjs +150 -109
  377. package/dist/node-dev/useCartActions.mjs.map +1 -1
  378. package/dist/node-dev/useMoney.js +64 -37
  379. package/dist/node-dev/useMoney.js.map +1 -1
  380. package/dist/node-dev/useMoney.mjs +63 -36
  381. package/dist/node-dev/useMoney.mjs.map +1 -1
  382. package/dist/node-dev/useShopifyCookies.js +41 -0
  383. package/dist/node-dev/useShopifyCookies.js.map +1 -0
  384. package/dist/node-dev/useShopifyCookies.mjs +41 -0
  385. package/dist/node-dev/useShopifyCookies.mjs.map +1 -0
  386. package/dist/node-prod/AddToCartButton.js +44 -41
  387. package/dist/node-prod/AddToCartButton.js.map +1 -1
  388. package/dist/node-prod/AddToCartButton.mjs +43 -40
  389. package/dist/node-prod/AddToCartButton.mjs.map +1 -1
  390. package/dist/node-prod/BaseButton.js +14 -16
  391. package/dist/node-prod/BaseButton.js.map +1 -1
  392. package/dist/node-prod/BaseButton.mjs +13 -15
  393. package/dist/node-prod/BaseButton.mjs.map +1 -1
  394. package/dist/node-prod/BuyNowButton.js +20 -18
  395. package/dist/node-prod/BuyNowButton.js.map +1 -1
  396. package/dist/node-prod/BuyNowButton.mjs +19 -17
  397. package/dist/node-prod/BuyNowButton.mjs.map +1 -1
  398. package/dist/node-prod/CartCheckoutButton.js +13 -16
  399. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  400. package/dist/node-prod/CartCheckoutButton.mjs +12 -15
  401. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
  402. package/dist/node-prod/CartCost.js +25 -0
  403. package/dist/node-prod/CartCost.js.map +1 -0
  404. package/dist/node-prod/CartCost.mjs +25 -0
  405. package/dist/node-prod/CartCost.mjs.map +1 -0
  406. package/dist/node-prod/CartLinePrice.js +18 -0
  407. package/dist/node-prod/CartLinePrice.js.map +1 -0
  408. package/dist/node-prod/CartLinePrice.mjs +18 -0
  409. package/dist/node-prod/CartLinePrice.mjs.map +1 -0
  410. package/dist/node-prod/CartLineProvider.js +22 -0
  411. package/dist/node-prod/CartLineProvider.js.map +1 -0
  412. package/dist/node-prod/CartLineProvider.mjs +22 -0
  413. package/dist/node-prod/CartLineProvider.mjs.map +1 -0
  414. package/dist/node-prod/CartLineQuantity.js +12 -0
  415. package/dist/node-prod/CartLineQuantity.js.map +1 -0
  416. package/dist/node-prod/CartLineQuantity.mjs +12 -0
  417. package/dist/node-prod/CartLineQuantity.mjs.map +1 -0
  418. package/dist/node-prod/CartLineQuantityAdjustButton.js +48 -0
  419. package/dist/node-prod/CartLineQuantityAdjustButton.js.map +1 -0
  420. package/dist/node-prod/CartLineQuantityAdjustButton.mjs +48 -0
  421. package/dist/node-prod/CartLineQuantityAdjustButton.mjs.map +1 -0
  422. package/dist/node-prod/CartProvider.js +75 -69
  423. package/dist/node-prod/CartProvider.js.map +1 -1
  424. package/dist/node-prod/CartProvider.mjs +74 -68
  425. package/dist/node-prod/CartProvider.mjs.map +1 -1
  426. package/dist/node-prod/ExternalVideo.js +14 -12
  427. package/dist/node-prod/ExternalVideo.js.map +1 -1
  428. package/dist/node-prod/ExternalVideo.mjs +13 -11
  429. package/dist/node-prod/ExternalVideo.mjs.map +1 -1
  430. package/dist/node-prod/Image.js +36 -29
  431. package/dist/node-prod/Image.js.map +1 -1
  432. package/dist/node-prod/Image.mjs +35 -28
  433. package/dist/node-prod/Image.mjs.map +1 -1
  434. package/dist/node-prod/MediaFile.js +30 -22
  435. package/dist/node-prod/MediaFile.js.map +1 -1
  436. package/dist/node-prod/MediaFile.mjs +29 -21
  437. package/dist/node-prod/MediaFile.mjs.map +1 -1
  438. package/dist/node-prod/ModelViewer.js +136 -76
  439. package/dist/node-prod/ModelViewer.js.map +1 -1
  440. package/dist/node-prod/ModelViewer.mjs +135 -75
  441. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  442. package/dist/node-prod/Money.js +13 -10
  443. package/dist/node-prod/Money.js.map +1 -1
  444. package/dist/node-prod/Money.mjs +12 -9
  445. package/dist/node-prod/Money.mjs.map +1 -1
  446. package/dist/node-prod/ProductPrice.js +13 -18
  447. package/dist/node-prod/ProductPrice.js.map +1 -1
  448. package/dist/node-prod/ProductPrice.mjs +12 -17
  449. package/dist/node-prod/ProductPrice.mjs.map +1 -1
  450. package/dist/node-prod/ProductProvider.js +103 -74
  451. package/dist/node-prod/ProductProvider.js.map +1 -1
  452. package/dist/node-prod/ProductProvider.mjs +102 -73
  453. package/dist/node-prod/ProductProvider.mjs.map +1 -1
  454. package/dist/node-prod/ShopPayButton.js +14 -24
  455. package/dist/node-prod/ShopPayButton.js.map +1 -1
  456. package/dist/node-prod/ShopPayButton.mjs +14 -24
  457. package/dist/node-prod/ShopPayButton.mjs.map +1 -1
  458. package/dist/node-prod/ShopifyProvider.js +23 -33
  459. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  460. package/dist/node-prod/ShopifyProvider.mjs +22 -32
  461. package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
  462. package/dist/node-prod/Video.js +31 -22
  463. package/dist/node-prod/Video.js.map +1 -1
  464. package/dist/node-prod/Video.mjs +30 -21
  465. package/dist/node-prod/Video.mjs.map +1 -1
  466. package/dist/node-prod/_virtual/index.js +11 -3
  467. package/dist/node-prod/_virtual/index.js.map +1 -1
  468. package/dist/node-prod/_virtual/index.mjs +11 -2
  469. package/dist/node-prod/_virtual/index.mjs.map +1 -1
  470. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.js +1 -1
  471. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  472. package/dist/node-prod/_virtual/with-selector.development.js +1 -1
  473. package/dist/node-prod/_virtual/with-selector.js +11 -3
  474. package/dist/node-prod/_virtual/with-selector.js.map +1 -1
  475. package/dist/node-prod/_virtual/with-selector.mjs +11 -2
  476. package/dist/node-prod/_virtual/with-selector.mjs.map +1 -1
  477. package/dist/node-prod/_virtual/with-selector.production.min.js +1 -1
  478. package/dist/node-prod/analytics-constants.js +43 -0
  479. package/dist/node-prod/analytics-constants.js.map +1 -0
  480. package/dist/node-prod/analytics-constants.mjs +43 -0
  481. package/dist/node-prod/analytics-constants.mjs.map +1 -0
  482. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +145 -0
  483. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
  484. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  485. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  486. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js +58 -0
  487. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
  488. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  489. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  490. package/dist/node-prod/analytics-utils.js +49 -0
  491. package/dist/node-prod/analytics-utils.js.map +1 -0
  492. package/dist/node-prod/analytics-utils.mjs +49 -0
  493. package/dist/node-prod/analytics-utils.mjs.map +1 -0
  494. package/dist/node-prod/analytics.js +158 -0
  495. package/dist/node-prod/analytics.js.map +1 -0
  496. package/dist/node-prod/analytics.mjs +158 -0
  497. package/dist/node-prod/analytics.mjs.map +1 -0
  498. package/dist/node-prod/cart-constants.js +1 -1
  499. package/dist/node-prod/cart-hooks.js +32 -34
  500. package/dist/node-prod/cart-hooks.js.map +1 -1
  501. package/dist/node-prod/cart-hooks.mjs +32 -34
  502. package/dist/node-prod/cart-hooks.mjs.map +1 -1
  503. package/dist/node-prod/cart-queries.js +51 -29
  504. package/dist/node-prod/cart-queries.js.map +1 -1
  505. package/dist/node-prod/cart-queries.mjs +50 -28
  506. package/dist/node-prod/cart-queries.mjs.map +1 -1
  507. package/dist/node-prod/codegen.helpers.js +2 -1
  508. package/dist/node-prod/codegen.helpers.js.map +1 -1
  509. package/dist/node-prod/codegen.helpers.mjs +1 -0
  510. package/dist/node-prod/codegen.helpers.mjs.map +1 -1
  511. package/dist/node-prod/cookies-utils.js +50 -0
  512. package/dist/node-prod/cookies-utils.js.map +1 -0
  513. package/dist/node-prod/cookies-utils.mjs +50 -0
  514. package/dist/node-prod/cookies-utils.mjs.map +1 -0
  515. package/dist/node-prod/flatten-connection.js +8 -6
  516. package/dist/node-prod/flatten-connection.js.map +1 -1
  517. package/dist/node-prod/flatten-connection.mjs +7 -5
  518. package/dist/node-prod/flatten-connection.mjs.map +1 -1
  519. package/dist/node-prod/image-size.js +9 -9
  520. package/dist/node-prod/image-size.js.map +1 -1
  521. package/dist/node-prod/image-size.mjs +8 -8
  522. package/dist/node-prod/image-size.mjs.map +1 -1
  523. package/dist/node-prod/index.js +25 -7
  524. package/dist/node-prod/index.js.map +1 -1
  525. package/dist/node-prod/index.mjs +24 -6
  526. package/dist/node-prod/index.mjs.map +1 -1
  527. package/dist/node-prod/load-script.js +4 -2
  528. package/dist/node-prod/load-script.js.map +1 -1
  529. package/dist/node-prod/load-script.mjs +3 -1
  530. package/dist/node-prod/load-script.mjs.map +1 -1
  531. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +1 -1
  532. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
  533. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  534. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +2 -2
  535. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
  536. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  537. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  538. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js +2 -4
  539. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  540. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  541. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  542. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  543. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  544. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  545. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  546. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  547. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  548. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  549. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  550. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  551. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  552. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js +4 -4
  553. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  554. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  555. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  556. package/dist/node-prod/{metafield-parser.js → parse-metafield.js} +21 -13
  557. package/dist/node-prod/parse-metafield.js.map +1 -0
  558. package/dist/node-prod/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  559. package/dist/node-prod/parse-metafield.mjs.map +1 -0
  560. package/dist/node-prod/storefront-api-constants.js +2 -2
  561. package/dist/node-prod/storefront-api-constants.js.map +1 -1
  562. package/dist/node-prod/storefront-api-constants.mjs +1 -1
  563. package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
  564. package/dist/node-prod/storefront-client.js +28 -28
  565. package/dist/node-prod/storefront-client.js.map +1 -1
  566. package/dist/node-prod/storefront-client.mjs +27 -27
  567. package/dist/node-prod/storefront-client.mjs.map +1 -1
  568. package/dist/node-prod/useCartAPIStateMachine.js +121 -81
  569. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  570. package/dist/node-prod/useCartAPIStateMachine.mjs +120 -80
  571. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  572. package/dist/node-prod/useCartActions.js +151 -110
  573. package/dist/node-prod/useCartActions.js.map +1 -1
  574. package/dist/node-prod/useCartActions.mjs +150 -109
  575. package/dist/node-prod/useCartActions.mjs.map +1 -1
  576. package/dist/node-prod/useMoney.js +64 -37
  577. package/dist/node-prod/useMoney.js.map +1 -1
  578. package/dist/node-prod/useMoney.mjs +63 -36
  579. package/dist/node-prod/useMoney.mjs.map +1 -1
  580. package/dist/node-prod/useShopifyCookies.js +41 -0
  581. package/dist/node-prod/useShopifyCookies.js.map +1 -0
  582. package/dist/node-prod/useShopifyCookies.mjs +41 -0
  583. package/dist/node-prod/useShopifyCookies.mjs.map +1 -0
  584. package/dist/types/AddToCartButton.d.ts +7 -3
  585. package/dist/types/BaseButton.d.ts +2 -2
  586. package/dist/types/BuyNowButton.d.ts +10 -4
  587. package/dist/types/CartCheckoutButton.d.ts +9 -6
  588. package/dist/types/CartCost.d.ts +10 -6
  589. package/dist/types/CartLinePrice.d.ts +19 -5
  590. package/dist/types/CartLineProvider.d.ts +18 -10
  591. package/dist/types/CartLineQuantity.d.ts +13 -0
  592. package/dist/types/CartLineQuantityAdjustButton.d.ts +13 -0
  593. package/dist/types/CartProvider.d.ts +13 -3
  594. package/dist/types/ExternalVideo.d.ts +2 -3
  595. package/dist/types/Image.d.ts +5 -3
  596. package/dist/types/MediaFile.d.ts +12 -11
  597. package/dist/types/ModelViewer.d.ts +2 -2
  598. package/dist/types/Money.d.ts +2 -3
  599. package/dist/types/ProductPrice.d.ts +4 -2
  600. package/dist/types/ProductProvider.d.ts +1 -1
  601. package/dist/types/ShopPayButton.d.ts +10 -10
  602. package/dist/types/ShopifyProvider.d.ts +42 -43
  603. package/dist/types/analytics-constants.d.ts +48 -0
  604. package/dist/types/analytics-schema-custom-storefront-customer-tracking.d.ts +3 -0
  605. package/dist/types/analytics-schema-trekkie-storefront-page-view.d.ts +2 -0
  606. package/dist/types/analytics-types.d.ts +157 -0
  607. package/dist/types/analytics-utils.d.ts +36 -0
  608. package/dist/types/analytics.d.ts +9 -0
  609. package/dist/types/cart-queries.d.ts +1 -1
  610. package/dist/types/cookies-utils.d.ts +4 -0
  611. package/dist/types/flatten-connection.d.ts +32 -8
  612. package/dist/types/image-size.d.ts +1 -1
  613. package/dist/types/index.d.cts +13 -4
  614. package/dist/types/index.d.ts +13 -4
  615. package/dist/types/{metafield-parser.d.ts → parse-metafield.d.ts} +11 -9
  616. package/dist/types/storefront-api-constants.d.ts +1 -1
  617. package/dist/types/storefront-api-response.types.d.ts +1 -1
  618. package/dist/types/storefront-api-types.d.ts +121 -2
  619. package/dist/types/storefront-client.d.ts +14 -14
  620. package/dist/types/useCartActions.d.ts +1 -1
  621. package/dist/types/useShopifyCookies.d.ts +14 -0
  622. package/dist/umd/hydrogen-react.dev.js +1714 -1382
  623. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  624. package/dist/umd/hydrogen-react.prod.js +18 -25
  625. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  626. package/package.json +34 -19
  627. package/storefront.schema.json +1 -1
  628. package/dist/browser-dev/Metafield.mjs +0 -301
  629. package/dist/browser-dev/Metafield.mjs.map +0 -1
  630. package/dist/browser-dev/metafield-parser.mjs.map +0 -1
  631. package/dist/browser-prod/Metafield.mjs +0 -288
  632. package/dist/browser-prod/Metafield.mjs.map +0 -1
  633. package/dist/browser-prod/metafield-parser.mjs.map +0 -1
  634. package/dist/node-dev/Metafield.js +0 -301
  635. package/dist/node-dev/Metafield.js.map +0 -1
  636. package/dist/node-dev/Metafield.mjs +0 -301
  637. package/dist/node-dev/Metafield.mjs.map +0 -1
  638. package/dist/node-dev/metafield-parser.js.map +0 -1
  639. package/dist/node-dev/metafield-parser.mjs.map +0 -1
  640. package/dist/node-prod/Metafield.js +0 -288
  641. package/dist/node-prod/Metafield.js.map +0 -1
  642. package/dist/node-prod/Metafield.mjs +0 -288
  643. package/dist/node-prod/Metafield.mjs.map +0 -1
  644. package/dist/node-prod/metafield-parser.js.map +0 -1
  645. package/dist/node-prod/metafield-parser.mjs.map +0 -1
  646. package/dist/types/Metafield.d.ts +0 -61
@@ -1 +1 @@
1
- {"version":3,"file":"ShopifyProvider.mjs","sources":["../../src/ShopifyProvider.tsx"],"sourcesContent":["import {createContext, useContext, useMemo, type ReactNode} from 'react';\nimport type {LanguageCode, CountryCode} from './storefront-api-types.js';\nimport {SFAPI_VERSION} from './storefront-api-constants.js';\nimport {getPublicTokenHeadersRaw} from './storefront-client.js';\n\nconst ShopifyContext = createContext<ShopifyContextValue>({\n storeDomain: 'test',\n storefrontToken: 'abc123',\n storefrontApiVersion: SFAPI_VERSION,\n country: {\n isoCode: 'US',\n },\n language: {\n isoCode: 'EN',\n },\n locale: 'EN-US',\n getStorefrontApiUrl() {\n return '';\n },\n getPublicTokenHeaders() {\n return {};\n },\n getShopifyDomain() {\n return '';\n },\n});\n\n/**\n * The `<ShopifyProvider/>` component enables use of the `useShop()` hook. The component should wrap your app.\n */\nexport function ShopifyProvider({\n children,\n shopifyConfig,\n}: {\n children: ReactNode;\n shopifyConfig: ShopifyContextProps;\n}) {\n if (!shopifyConfig) {\n throw new Error(\n `The 'shopifyConfig' prop must be passed to '<ShopifyProvider/>'`\n );\n }\n\n if (shopifyConfig.storefrontApiVersion !== SFAPI_VERSION) {\n console.warn(\n `<ShopifyProvider/>: This version of Hydrogen-UI is built for Shopify's Storefront API version ${SFAPI_VERSION}, but it looks like you're using version ${shopifyConfig.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen-UI and the Storefront API.`\n );\n }\n\n const finalConfig = useMemo<ShopifyContextValue>(() => {\n const storeDomain = shopifyConfig.storeDomain.replace(/^https?:\\/\\//, '');\n\n // @deprecated remove the ability to pass in '.myshopify.com' strings in the future\n if (storeDomain.includes('.myshopify.com')) {\n if (__HYDROGEN_DEV__) {\n console.warn(\n `<ShopifyProvider/>: passing a 'storeDomain' prop that includes '.myshopify.com' will be unsupported in the future. Passing only the subdomain (for example, if the URL is 'test.myshopify.com', passing in 'test') will be the supported way going forward.`\n );\n }\n }\n\n function getShopifyDomain(overrideProps?: {storeDomain?: string}) {\n let subDomain = overrideProps?.storeDomain ?? storeDomain;\n subDomain = subDomain.replace('.myshopify.com', '');\n\n return `https://${subDomain}.myshopify.com`;\n }\n\n return {\n ...shopifyConfig,\n storeDomain,\n getPublicTokenHeaders(overrideProps) {\n return getPublicTokenHeadersRaw(\n overrideProps.contentType,\n shopifyConfig.storefrontApiVersion,\n overrideProps.storefrontToken ?? shopifyConfig.storefrontToken\n );\n },\n getShopifyDomain,\n getStorefrontApiUrl(overrideProps) {\n if (overrideProps?.storeDomain?.includes('.myshopify.com')) {\n if (__HYDROGEN_DEV__) {\n console.warn(\n `<ShopifyProvider/>: passing a 'storeDomain' prop that includes '.myshopify.com' will be unsupported in the future. Passing only the subdomain (for example, if the URL is 'test.myshopify.com', passing in 'test') will be the supported way going forward.`\n );\n }\n }\n return `${getShopifyDomain({\n storeDomain: overrideProps?.storeDomain ?? storeDomain,\n })}/api/${\n overrideProps?.storefrontApiVersion ??\n shopifyConfig.storefrontApiVersion\n }/graphql.json`;\n },\n };\n }, [shopifyConfig]);\n\n return (\n <ShopifyContext.Provider value={finalConfig}>\n {children}\n </ShopifyContext.Provider>\n );\n}\n\n/**\n * Provides access to the `shopifyConfig` prop of `<ShopifyProvider/>`. Must be a descendent of `<ShopifyProvider/>`.\n */\nexport function useShop() {\n const shopContext = useContext(ShopifyContext);\n if (!shopContext) {\n throw new Error(`'useShop()' must be a descendent of <ShopifyProvider/>`);\n }\n return shopContext;\n}\n\n/**\n * Shopify-specific values that are used in various Hydrogen-UI components and hooks.\n */\nexport type ShopifyContextProps = {\n /** The globally-unique identifier for the Shop */\n storefrontId?: string;\n /** The subdomain of your Shopify storefront URL (eg: `{subdomain}.myshopify.com`). */\n storeDomain: string;\n /** The Storefront API public access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen-UI was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion: string;\n country?: {\n /**\n * The code designating a country, which generally follows ISO 3166-1 alpha-2 guidelines. If a territory doesn't have a country code value in the `CountryCode` enum, it might be considered a subdivision of another country. For example, the territories associated with Spain are represented by the country code `ES`, and the territories associated with the United States of America are represented by the country code `US`.\n */\n isoCode: CountryCode;\n };\n language?: {\n /**\n * `ISO 369` language codes supported by Shopify.\n */\n isoCode: LanguageCode;\n };\n /**\n * The locale string based on `country` and `language`.\n */\n locale?: string;\n};\n\nexport type ShopifyContextValue = ShopifyContextProps & {\n /**\n * Creates the fully-qualified URL to your store's GraphQL endpoint.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getStorefrontApiUrl({...})`:\n *\n * - `storeDomain`\n * - `storefrontApiVersion`\n */\n getStorefrontApiUrl: (props?: {\n /** The host name of the domain (eg: `{shop}.myshopify.com`). */\n storeDomain?: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen-UI was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion?: string;\n }) => string;\n /**\n * Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. This uses the public Storefront API token.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getPublicTokenHeaders({...})`:\n *\n * - `contentType`\n * - `storefrontToken`\n *\n */\n getPublicTokenHeaders: (props: {\n /**\n * Customizes which `\"content-type\"` header is added when using `getPrivateTokenHeaders()` and `getPublicTokenHeaders()`. When fetching with a `JSON.stringify()`-ed `body`, use `\"json\"`. When fetching with a `body` that is a plain string, use `\"graphql\"`. Defaults to `\"json\"`\n */\n contentType: 'json' | 'graphql';\n /** The Storefront API access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken?: string;\n }) => Record<string, string>;\n /**\n * Creates the fully-qualified URL to your myshopify.com domain.\n *\n * By default, it will use the config you passed in when calling `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getShopifyDomain({...})`:\n *\n * - `storeDomain`\n */\n getShopifyDomain: (props?: {storeDomain?: string}) => string;\n};\n"],"names":["ShopifyContext","createContext","storeDomain","storefrontToken","storefrontApiVersion","SFAPI_VERSION","country","isoCode","language","locale","getStorefrontApiUrl","getPublicTokenHeaders","getShopifyDomain","ShopifyProvider","children","shopifyConfig","Error","console","warn","finalConfig","useMemo","replace","includes","overrideProps","subDomain","getPublicTokenHeadersRaw","contentType","_jsx","useShop","shopContext","useContext"],"mappings":";;;;AAKA,MAAMA,iBAAiBC,cAAmC;AAAA,EACxDC,aAAa;AAAA,EACbC,iBAAiB;AAAA,EACjBC,sBAAsBC;AAAAA,EACtBC,SAAS;AAAA,IACPC,SAAS;AAAA,EACX;AAAA,EACAC,UAAU;AAAA,IACRD,SAAS;AAAA,EACX;AAAA,EACAE,QAAQ;AAAA,EACRC,sBAAsB;AACb,WAAA;AAAA,EACT;AAAA,EACAC,wBAAwB;AACtB,WAAO;EACT;AAAA,EACAC,mBAAmB;AACV,WAAA;AAAA,EACT;AACF,CAAC;AAKM,SAASC,gBAAgB;AAAA,EAC9BC;AAAAA,EACAC;AAIF,GAAG;AACD,MAAI,CAACA,eAAe;AACZ,UAAA,IAAIC,MACP,iEAAgE;AAAA,EAErE;AAEID,MAAAA,cAAcX,yBAAyBC,eAAe;AACxDY,YAAQC,KACL,iGAAgGb,yDAAyDU,cAAcX,0HAA0H;AAAA,EAEtS;AAEMe,QAAAA,cAAcC,QAA6B,MAAM;AACrD,UAAMlB,cAAca,cAAcb,YAAYmB,QAAQ,gBAAgB,EAAE;AAGpEnB,QAAAA,YAAYoB,SAAS,gBAAgB,GAAG;AACpB;AACpBL,gBAAQC,KACL,6PAA4P;AAAA,MAEjQ;AAAA,IACF;AAEA,aAASN,iBAAiBW,eAAwC;;AAC5DC,UAAAA,aAAYD,oDAAerB,gBAAfqB,YAA8BrB;AAClCsB,kBAAAA,UAAUH,QAAQ,kBAAkB,EAAE;AAElD,aAAQ,WAAUG;AAAAA,IACpB;AAEO,WAAA;AAAA,MACL,GAAGT;AAAAA,MACHb;AAAAA,MACAS,sBAAsBY,eAAe;;AAC5BE,eAAAA,yBACLF,cAAcG,aACdX,cAAcX,uBACdmB,mBAAcpB,oBAAdoB,YAAiCR,cAAcZ,eAAe;AAAA,MAElE;AAAA,MACAS;AAAAA,MACAF,oBAAoBa,eAAe;;AACjC,aAAIA,oDAAerB,gBAAfqB,mBAA4BD,SAAS,mBAAmB;AACpC;AACpBL,oBAAQC,KACL,6PAA4P;AAAA,UAEjQ;AAAA,QACF;AACA,eAAQ,GAAEN,iBAAiB;AAAA,UACzBV,cAAaqB,oDAAerB,gBAAfqB,YAA8BrB;AAAAA,QAAAA,CAC5C,UACCqB,oDAAenB,yBAAfmB,YACAR,cAAcX;AAAAA,MAElB;AAAA,IAAA;AAAA,EACF,GACC,CAACW,aAAa,CAAC;AAGhB,SAAAY,oBAAC,eAAe,UAAQ;AAAA,IAAC,OAAOR;AAAAA,IAAY;AAAA,EAAA,CAElB;AAE9B;AAKO,SAASS,UAAU;AAClBC,QAAAA,cAAcC,WAAW9B,cAAc;AAC7C,MAAI,CAAC6B,aAAa;AACV,UAAA,IAAIb,MAAO,wDAAuD;AAAA,EAC1E;AACOa,SAAAA;AACT;"}
1
+ {"version":3,"file":"ShopifyProvider.mjs","sources":["../../src/ShopifyProvider.tsx"],"sourcesContent":["import {createContext, useContext, useMemo, type ReactNode} from 'react';\nimport type {LanguageCode, CountryCode} from './storefront-api-types.js';\nimport {SFAPI_VERSION} from './storefront-api-constants.js';\nimport {getPublicTokenHeadersRaw} from './storefront-client.js';\n\nconst ShopifyContext = createContext<ShopifyContextValue>({\n storeDomain: 'test',\n storefrontToken: 'abc123',\n storefrontApiVersion: SFAPI_VERSION,\n countryIsoCode: 'US',\n languageIsoCode: 'EN',\n getStorefrontApiUrl() {\n return '';\n },\n getPublicTokenHeaders() {\n return {};\n },\n getShopifyDomain() {\n return '';\n },\n});\n\n/**\n * The `<ShopifyProvider/>` component enables use of the `useShop()` hook. The component should wrap your app.\n */\nexport function ShopifyProvider({\n children,\n ...shopifyConfig\n}: ShopifyProviderProps): JSX.Element {\n if (\n !shopifyConfig.countryIsoCode ||\n !shopifyConfig.languageIsoCode ||\n !shopifyConfig.storeDomain ||\n !shopifyConfig.storefrontToken ||\n !shopifyConfig.storefrontApiVersion\n ) {\n throw new Error(\n `Please provide the necessary props to '<ShopifyProvider/>'`\n );\n }\n\n if (shopifyConfig.storefrontApiVersion !== SFAPI_VERSION) {\n console.warn(\n `<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${SFAPI_VERSION}, but it looks like you're using version ${shopifyConfig.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`\n );\n }\n\n const finalConfig = useMemo<ShopifyContextValue>(() => {\n function getShopifyDomain(overrideProps?: {storeDomain?: string}): string {\n return overrideProps?.storeDomain ?? shopifyConfig.storeDomain;\n }\n\n return {\n ...shopifyConfig,\n getPublicTokenHeaders(overrideProps): Record<string, string> {\n return getPublicTokenHeadersRaw(\n overrideProps.contentType,\n shopifyConfig.storefrontApiVersion,\n overrideProps.storefrontToken ?? shopifyConfig.storefrontToken\n );\n },\n getShopifyDomain,\n getStorefrontApiUrl(overrideProps): string {\n const finalDomainUrl = getShopifyDomain({\n storeDomain: overrideProps?.storeDomain ?? shopifyConfig.storeDomain,\n });\n return `${finalDomainUrl}${\n finalDomainUrl.endsWith('/') ? '' : '/'\n }api/${\n overrideProps?.storefrontApiVersion ??\n shopifyConfig.storefrontApiVersion\n }/graphql.json`;\n },\n };\n }, [shopifyConfig]);\n\n return (\n <ShopifyContext.Provider value={finalConfig}>\n {children}\n </ShopifyContext.Provider>\n );\n}\n\n/**\n * Provides access to the `shopifyConfig` prop of `<ShopifyProvider/>`. Must be a descendent of `<ShopifyProvider/>`.\n */\nexport function useShop(): ShopifyContextValue {\n const shopContext = useContext(ShopifyContext);\n if (!shopContext) {\n throw new Error(`'useShop()' must be a descendent of <ShopifyProvider/>`);\n }\n return shopContext;\n}\n\nexport interface ShopifyProviderBase {\n /** The globally-unique identifier for the Shop */\n storefrontId?: string;\n /** The full domain of your Shopify storefront URL (eg: the complete string of `{subdomain}.myshopify.com`). */\n storeDomain: string;\n /** The Storefront API public access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen React was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion: string;\n /**\n * The code designating a country, which generally follows ISO 3166-1 alpha-2 guidelines. If a territory doesn't have a country code value in the `CountryCode` enum, it might be considered a subdivision of another country. For example, the territories associated with Spain are represented by the country code `ES`, and the territories associated with the United States of America are represented by the country code `US`.\n */\n countryIsoCode: CountryCode;\n /**\n * `ISO 369` language codes supported by Shopify.\n */\n languageIsoCode: LanguageCode;\n}\n\n/**\n * Shopify-specific values that are used in various Hydrogen React components and hooks.\n */\nexport interface ShopifyProviderProps extends ShopifyProviderBase {\n /** React children to render. */\n children?: ReactNode;\n}\n\nexport interface ShopifyContextValue\n extends ShopifyProviderBase,\n ShopifyContextReturn {}\n\ntype ShopifyContextReturn = {\n /**\n * Creates the fully-qualified URL to your store's GraphQL endpoint.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getStorefrontApiUrl({...})`:\n *\n * - `storeDomain`\n * - `storefrontApiVersion`\n */\n getStorefrontApiUrl: (props?: GetStorefrontApiUrlProps) => string;\n /**\n * Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. This uses the public Storefront API token.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getPublicTokenHeaders({...})`:\n *\n * - `contentType`\n * - `storefrontToken`\n *\n */\n getPublicTokenHeaders: (\n props: GetPublicTokenHeadersProps\n ) => Record<string, string>;\n /**\n * Creates the fully-qualified URL to your myshopify.com domain.\n *\n * By default, it will use the config you passed in when calling `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getShopifyDomain({...})`:\n *\n * - `storeDomain`\n */\n getShopifyDomain: (props?: GetShopifyDomainProps) => string;\n};\n\ntype GetStorefrontApiUrlProps = {\n /** The host name of the domain (eg: `{shop}.myshopify.com`). */\n storeDomain?: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen-UI was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion?: string;\n};\n\ntype GetPublicTokenHeadersProps = {\n /**\n * Customizes which `\"content-type\"` header is added when using `getPrivateTokenHeaders()` and `getPublicTokenHeaders()`. When fetching with a `JSON.stringify()`-ed `body`, use `\"json\"`. When fetching with a `body` that is a plain string, use `\"graphql\"`. Defaults to `\"json\"`\n */\n contentType: 'json' | 'graphql';\n /** The Storefront API access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken?: string;\n};\n\ntype GetShopifyDomainProps = {storeDomain?: string};\n"],"names":[],"mappings":";;;;AAKA,MAAM,iBAAiB,cAAmC;AAAA,EACxD,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,sBAAsB;AACb,WAAA;AAAA,EACT;AAAA,EACA,wBAAwB;AACtB,WAAO;EACT;AAAA,EACA,mBAAmB;AACV,WAAA;AAAA,EACT;AACF,CAAC;AAKM,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAsC;AACpC,MACE,CAAC,cAAc,kBACf,CAAC,cAAc,mBACf,CAAC,cAAc,eACf,CAAC,cAAc,mBACf,CAAC,cAAc,sBACf;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEI,MAAA,cAAc,yBAAyB,eAAe;AAChD,YAAA;AAAA,MACN,oGAAoG,yDAAyD,cAAc;AAAA,IAAA;AAAA,EAE/K;AAEM,QAAA,cAAc,QAA6B,MAAM;AACrD,aAAS,iBAAiB,eAAgD;AACjE,cAAA,+CAAe,gBAAe,cAAc;AAAA,IACrD;AAEO,WAAA;AAAA,MACL,GAAG;AAAA,MACH,sBAAsB,eAAuC;AACpD,eAAA;AAAA,UACL,cAAc;AAAA,UACd,cAAc;AAAA,UACd,cAAc,mBAAmB,cAAc;AAAA,QAAA;AAAA,MAEnD;AAAA,MACA;AAAA,MACA,oBAAoB,eAAuB;AACzC,cAAM,iBAAiB,iBAAiB;AAAA,UACtC,cAAa,+CAAe,gBAAe,cAAc;AAAA,QAAA,CAC1D;AACM,eAAA,GAAG,iBACR,eAAe,SAAS,GAAG,IAAI,KAAK,WAEpC,+CAAe,yBACf,cAAc;AAAA,MAElB;AAAA,IAAA;AAAA,EACF,GACC,CAAC,aAAa,CAAC;AAElB,6BACG,eAAe,UAAf,EAAwB,OAAO,aAC7B,SACH,CAAA;AAEJ;AAKO,SAAS,UAA+B;AACvC,QAAA,cAAc,WAAW,cAAc;AAC7C,MAAI,CAAC,aAAa;AACV,UAAA,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACO,SAAA;AACT;"}
@@ -1,8 +1,8 @@
1
- import { shopifyImageLoader } from "./image-size.mjs";
2
- import { createElement } from "react";
3
1
  import { jsx } from "react/jsx-runtime";
2
+ import { createElement } from "react";
3
+ import { shopifyImageLoader } from "./image-size.mjs";
4
4
  function Video(props) {
5
- var _a, _b;
5
+ var _a;
6
6
  const {
7
7
  data,
8
8
  previewImageOptions,
@@ -13,30 +13,39 @@ function Video(props) {
13
13
  ...passthroughProps
14
14
  } = props;
15
15
  const posterUrl = shopifyImageLoader({
16
- src: (_b = (_a = data.previewImage) == null ? void 0 : _a.url) != null ? _b : "",
16
+ src: ((_a = data.previewImage) == null ? void 0 : _a.url) ?? "",
17
17
  ...previewImageOptions
18
18
  });
19
19
  if (!data.sources) {
20
20
  throw new Error(`<Video/> requires a 'data.sources' array`);
21
21
  }
22
- return /* @__PURE__ */ jsx("video", {
23
- ...passthroughProps,
24
- id,
25
- playsInline,
26
- controls,
27
- poster: posterUrl,
28
- children: data.sources.map((source) => {
29
- if (!((source == null ? void 0 : source.url) && (source == null ? void 0 : source.mimeType))) {
30
- throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);
22
+ return (
23
+ // eslint-disable-next-line jsx-a11y/media-has-caption
24
+ /* @__PURE__ */ jsx(
25
+ "video",
26
+ {
27
+ ...passthroughProps,
28
+ id,
29
+ playsInline,
30
+ controls,
31
+ poster: posterUrl,
32
+ children: data.sources.map((source) => {
33
+ if (!((source == null ? void 0 : source.url) && (source == null ? void 0 : source.mimeType))) {
34
+ throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);
35
+ }
36
+ return /* @__PURE__ */ createElement(
37
+ "source",
38
+ {
39
+ ...sourceProps,
40
+ key: source.url,
41
+ src: source.url,
42
+ type: source.mimeType
43
+ }
44
+ );
45
+ })
31
46
  }
32
- return /* @__PURE__ */ createElement("source", {
33
- ...sourceProps,
34
- key: source.url,
35
- src: source.url,
36
- type: source.mimeType
37
- });
38
- })
39
- });
47
+ )
48
+ );
40
49
  }
41
50
  export {
42
51
  Video
@@ -1 +1 @@
1
- {"version":3,"file":"Video.mjs","sources":["../../src/Video.tsx"],"sourcesContent":["import {type HTMLAttributes} from 'react';\nimport {shopifyImageLoader} from './image-size.js';\nimport type {Video as VideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nexport interface VideoProps {\n /** An object with fields that correspond to the Storefront API's [Video object](https://shopify.dev/api/storefront/latest/objects/video). */\n data: PartialDeep<VideoType, {recurseIntoArrays: true}>;\n /** An object of image size options for the video's `previewImage`. Uses `shopifyImageLoader` to generate the `poster` URL. */\n previewImageOptions?: Parameters<typeof shopifyImageLoader>[0];\n /** Props that will be passed to the `video` element's `source` children elements. */\n sourceProps?: HTMLAttributes<HTMLSourceElement> & {\n 'data-testid'?: string;\n };\n}\n\n/**\n * The `Video` component renders a `video` for the Storefront API's [Video object](https://shopify.dev/api/storefront/reference/products/video).\n */\nexport function Video(props: JSX.IntrinsicElements['video'] & VideoProps) {\n const {\n data,\n previewImageOptions,\n id = data.id,\n playsInline = true,\n controls = true,\n sourceProps = {},\n ...passthroughProps\n } = props;\n\n const posterUrl = shopifyImageLoader({\n src: data.previewImage?.url ?? '',\n ...previewImageOptions,\n });\n\n if (!data.sources) {\n throw new Error(`<Video/> requires a 'data.sources' array`);\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n {...passthroughProps}\n id={id}\n playsInline={playsInline}\n controls={controls}\n poster={posterUrl}\n >\n {data.sources.map((source) => {\n if (!(source?.url && source?.mimeType)) {\n throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);\n }\n return (\n <source\n {...sourceProps}\n key={source.url}\n src={source.url}\n type={source.mimeType}\n />\n );\n })}\n </video>\n );\n}\n"],"names":["Video","props","data","previewImageOptions","id","playsInline","controls","sourceProps","passthroughProps","posterUrl","shopifyImageLoader","src","previewImage","url","sources","Error","map","source","mimeType"],"mappings":";;;AAmBO,SAASA,MAAMC,OAAoD;;AAClE,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,KAAKF,KAAKE;AAAAA,IACVC,cAAc;AAAA,IACdC,WAAW;AAAA,IACXC,cAAc,CAAC;AAAA,OACZC;AAAAA,EACDP,IAAAA;AAEJ,QAAMQ,YAAYC,mBAAmB;AAAA,IACnCC,MAAKT,gBAAKU,iBAALV,mBAAmBW,QAAnBX,YAA0B;AAAA,IAC/B,GAAGC;AAAAA,EAAAA,CACJ;AAEG,MAAA,CAACD,KAAKY,SAAS;AACX,UAAA,IAAIC,MAAO,0CAAyC;AAAA,EAC5D;AAEA,6BAEE,SAAA;AAAA,IAAA,GACMP;AAAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQC;AAAAA,IAAU,UAEjBP,KAAKY,QAAQE,IAAKC,CAAW,WAAA;AAC5B,UAAI,GAAEA,iCAAQJ,SAAOI,iCAAQC,YAAW;AAChC,cAAA,IAAIH,MAAO,mDAAkD;AAAA,MACrE;AACA,2CACE,UAAA;AAAA,QAAA,GACMR;AAAAA,QACJ,KAAKU,OAAOJ;AAAAA,QACZ,KAAKI,OAAOJ;AAAAA,QACZ,MAAMI,OAAOC;AAAAA,MAAAA,CACb;AAAA,IAAA,CAEL;AAAA,EAAA,CAAC;AAGR;"}
1
+ {"version":3,"file":"Video.mjs","sources":["../../src/Video.tsx"],"sourcesContent":["import {type HTMLAttributes} from 'react';\nimport {shopifyImageLoader} from './image-size.js';\nimport type {Video as VideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nexport interface VideoProps {\n /** An object with fields that correspond to the Storefront API's [Video object](https://shopify.dev/api/storefront/latest/objects/video). */\n data: PartialDeep<VideoType, {recurseIntoArrays: true}>;\n /** An object of image size options for the video's `previewImage`. Uses `shopifyImageLoader` to generate the `poster` URL. */\n previewImageOptions?: Parameters<typeof shopifyImageLoader>[0];\n /** Props that will be passed to the `video` element's `source` children elements. */\n sourceProps?: HTMLAttributes<HTMLSourceElement> & {\n 'data-testid'?: string;\n };\n}\n\n/**\n * The `Video` component renders a `video` for the Storefront API's [Video object](https://shopify.dev/api/storefront/reference/products/video).\n */\nexport function Video(\n props: JSX.IntrinsicElements['video'] & VideoProps\n): JSX.Element {\n const {\n data,\n previewImageOptions,\n id = data.id,\n playsInline = true,\n controls = true,\n sourceProps = {},\n ...passthroughProps\n } = props;\n\n const posterUrl = shopifyImageLoader({\n src: data.previewImage?.url ?? '',\n ...previewImageOptions,\n });\n\n if (!data.sources) {\n throw new Error(`<Video/> requires a 'data.sources' array`);\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n {...passthroughProps}\n id={id}\n playsInline={playsInline}\n controls={controls}\n poster={posterUrl}\n >\n {data.sources.map((source) => {\n if (!(source?.url && source?.mimeType)) {\n throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);\n }\n return (\n <source\n {...sourceProps}\n key={source.url}\n src={source.url}\n type={source.mimeType}\n />\n );\n })}\n </video>\n );\n}\n"],"names":[],"mappings":";;;AAmBO,SAAS,MACd,OACa;;AACP,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,KAAK,KAAK;AAAA,IACV,cAAc;AAAA,IACd,WAAW;AAAA,IACX,cAAc,CAAC;AAAA,IACf,GAAG;AAAA,EACD,IAAA;AAEJ,QAAM,YAAY,mBAAmB;AAAA,IACnC,OAAK,UAAK,iBAAL,mBAAmB,QAAO;AAAA,IAC/B,GAAG;AAAA,EAAA,CACJ;AAEG,MAAA,CAAC,KAAK,SAAS;AACX,UAAA,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAEA;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QAEP,UAAK,KAAA,QAAQ,IAAI,CAAC,WAAW;AAC5B,cAAI,GAAE,iCAAQ,SAAO,iCAAQ,YAAW;AAChC,kBAAA,IAAI,MAAM,mDAAmD;AAAA,UACrE;AAEE,iBAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAG;AAAA,cACJ,KAAK,OAAO;AAAA,cACZ,KAAK,OAAO;AAAA,cACZ,MAAM,OAAO;AAAA,YAAA;AAAA,UAAA;AAAA,QACf,CAEH;AAAA,MAAA;AAAA,IACH;AAAA;AAEJ;"}
@@ -1,5 +1,14 @@
1
- var shim = { exports: {} };
1
+ var shimExports = {};
2
+ var shim = {
3
+ get exports() {
4
+ return shimExports;
5
+ },
6
+ set exports(v) {
7
+ shimExports = v;
8
+ }
9
+ };
2
10
  export {
3
- shim as s
11
+ shim as __module,
12
+ shimExports as exports
4
13
  };
5
14
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,5 +1,14 @@
1
- var withSelector = { exports: {} };
1
+ var withSelectorExports = {};
2
+ var withSelector = {
3
+ get exports() {
4
+ return withSelectorExports;
5
+ },
6
+ set exports(v) {
7
+ withSelectorExports = v;
8
+ }
9
+ };
2
10
  export {
3
- withSelector as w
11
+ withSelector as __module,
12
+ withSelectorExports as exports
4
13
  };
5
14
  //# sourceMappingURL=with-selector.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-selector.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"with-selector.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,43 @@
1
+ const AnalyticsEventName = {
2
+ PAGE_VIEW: "PAGE_VIEW",
3
+ ADD_TO_CART: "ADD_TO_CART"
4
+ };
5
+ const AnalyticsPageType = {
6
+ article: "article",
7
+ blog: "blog",
8
+ captcha: "captcha",
9
+ cart: "cart",
10
+ collection: "collection",
11
+ customersAccount: "customers/account",
12
+ customersActivateAccount: "customers/activate_account",
13
+ customersAddresses: "customers/addresses",
14
+ customersLogin: "customers/login",
15
+ customersOrder: "customers/order",
16
+ customersRegister: "customers/register",
17
+ customersResetPassword: "customers/reset_password",
18
+ giftCard: "gift_card",
19
+ home: "index",
20
+ listCollections: "list-collections",
21
+ forbidden: "403",
22
+ notFound: "404",
23
+ page: "page",
24
+ password: "password",
25
+ product: "product",
26
+ policy: "policy",
27
+ search: "search"
28
+ };
29
+ const ShopifySalesChannel = {
30
+ hydrogen: "hydrogen",
31
+ headless: "headless"
32
+ };
33
+ const ShopifyAppId = {
34
+ hydrogen: "6167201",
35
+ headless: "12875497473"
36
+ };
37
+ export {
38
+ AnalyticsEventName,
39
+ AnalyticsPageType,
40
+ ShopifyAppId,
41
+ ShopifySalesChannel
42
+ };
43
+ //# sourceMappingURL=analytics-constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-constants.mjs","sources":["../../src/analytics-constants.ts"],"sourcesContent":["export const AnalyticsEventName: AnalyticsEventName = {\n PAGE_VIEW: 'PAGE_VIEW',\n ADD_TO_CART: 'ADD_TO_CART',\n} as const;\n\nexport const AnalyticsPageType: AnalyticsPageType = {\n article: 'article',\n blog: 'blog',\n captcha: 'captcha',\n cart: 'cart',\n collection: 'collection',\n customersAccount: 'customers/account',\n customersActivateAccount: 'customers/activate_account',\n customersAddresses: 'customers/addresses',\n customersLogin: 'customers/login',\n customersOrder: 'customers/order',\n customersRegister: 'customers/register',\n customersResetPassword: 'customers/reset_password',\n giftCard: 'gift_card',\n home: 'index',\n listCollections: 'list-collections',\n forbidden: '403',\n notFound: '404',\n page: 'page',\n password: 'password',\n product: 'product',\n policy: 'policy',\n search: 'search',\n} as const;\n\nexport const ShopifySalesChannel: ShopifySalesChannel = {\n hydrogen: 'hydrogen',\n headless: 'headless',\n} as const;\n\nexport const ShopifyAppId = {\n hydrogen: '6167201',\n headless: '12875497473',\n} as const;\n\n/**\n * These duplicated interface declaration is so that we can generate proper documentation\n * for these public facing constants\n */\ninterface AnalyticsEventName {\n /** Page view */\n PAGE_VIEW: 'PAGE_VIEW';\n /** Add to cart */\n ADD_TO_CART: 'ADD_TO_CART';\n}\n\ninterface AnalyticsPageType {\n article: 'article';\n blog: 'blog';\n captcha: 'captcha';\n cart: 'cart';\n collection: 'collection';\n customersAccount: 'customers/account';\n customersActivateAccount: 'customers/activate_account';\n customersAddresses: 'customers/addresses';\n customersLogin: 'customers/login';\n customersOrder: 'customers/order';\n customersRegister: 'customers/register';\n customersResetPassword: 'customers/reset_password';\n giftCard: 'gift_card';\n home: 'index';\n listCollections: 'list-collections';\n forbidden: '403';\n notFound: '404';\n page: 'page';\n password: 'password';\n product: 'product';\n policy: 'policy';\n search: 'search';\n}\n\ninterface ShopifySalesChannel {\n /** Shopify Hydrogen sales channel */\n hydrogen: 'hydrogen';\n /** Shopify Headless sales channel */\n headless: 'headless';\n}\n"],"names":[],"mappings":"AAAO,MAAM,qBAAyC;AAAA,EACpD,WAAW;AAAA,EACX,aAAa;AACf;AAEO,MAAM,oBAAuC;AAAA,EAClD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,MAAM,sBAA2C;AAAA,EACtD,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,MAAM,eAAe;AAAA,EAC1B,UAAU;AAAA,EACV,UAAU;AACZ;"}
@@ -0,0 +1,145 @@
1
+ import { AnalyticsPageType, ShopifySalesChannel } from "./analytics-constants.mjs";
2
+ import { schemaWrapper, addDataIf, parseGid } from "./analytics-utils.mjs";
3
+ import { buildUUID } from "./cookies-utils.mjs";
4
+ const SCHEMA_ID = "custom_storefront_customer_tracking/1.0";
5
+ const PAGE_RENDERED_EVENT_NAME = "page_rendered";
6
+ const COLLECTION_PAGE_RENDERED_EVENT_NAME = "collection_page_rendered";
7
+ const PRODUCT_PAGE_RENDERED_EVENT_NAME = "product_page_rendered";
8
+ const PRODUCT_ADDED_TO_CART_EVENT_NAME = "product_added_to_cart";
9
+ const SEARCH_SUBMITTED_EVENT_NAME = "search_submitted";
10
+ function pageView(payload) {
11
+ const pageViewPayload = payload;
12
+ const additionalPayload = {
13
+ canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,
14
+ customer_id: pageViewPayload.customerId
15
+ };
16
+ const pageType = pageViewPayload.pageType;
17
+ const pageViewEvents = [];
18
+ pageViewEvents.push(
19
+ schemaWrapper(
20
+ SCHEMA_ID,
21
+ addDataIf(
22
+ {
23
+ event_name: PAGE_RENDERED_EVENT_NAME,
24
+ ...additionalPayload
25
+ },
26
+ formatPayload(pageViewPayload)
27
+ )
28
+ )
29
+ );
30
+ switch (pageType) {
31
+ case AnalyticsPageType.collection:
32
+ pageViewEvents.push(
33
+ schemaWrapper(
34
+ SCHEMA_ID,
35
+ addDataIf(
36
+ {
37
+ event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,
38
+ ...additionalPayload,
39
+ collection_name: pageViewPayload.collectionHandle
40
+ },
41
+ formatPayload(pageViewPayload)
42
+ )
43
+ )
44
+ );
45
+ break;
46
+ case AnalyticsPageType.product:
47
+ pageViewEvents.push(
48
+ schemaWrapper(
49
+ SCHEMA_ID,
50
+ addDataIf(
51
+ {
52
+ event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,
53
+ ...additionalPayload,
54
+ products: formatProductPayload(pageViewPayload.products),
55
+ total_value: pageViewPayload.totalValue
56
+ },
57
+ formatPayload(pageViewPayload)
58
+ )
59
+ )
60
+ );
61
+ break;
62
+ case AnalyticsPageType.search:
63
+ pageViewEvents.push(
64
+ schemaWrapper(
65
+ SCHEMA_ID,
66
+ addDataIf(
67
+ {
68
+ event_name: SEARCH_SUBMITTED_EVENT_NAME,
69
+ ...additionalPayload,
70
+ search_string: pageViewPayload.searchString
71
+ },
72
+ formatPayload(pageViewPayload)
73
+ )
74
+ )
75
+ );
76
+ break;
77
+ }
78
+ return pageViewEvents;
79
+ }
80
+ function addToCart(payload) {
81
+ const addToCartPayload = payload;
82
+ const cartToken = parseGid(addToCartPayload.cartId);
83
+ const cart_token = (cartToken == null ? void 0 : cartToken.id) ? `${cartToken.id}` : null;
84
+ return [
85
+ schemaWrapper(
86
+ SCHEMA_ID,
87
+ addDataIf(
88
+ {
89
+ event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,
90
+ customerId: addToCartPayload.customerId,
91
+ cart_token,
92
+ total_value: addToCartPayload.totalValue,
93
+ products: formatProductPayload(addToCartPayload.products)
94
+ },
95
+ formatPayload(addToCartPayload)
96
+ )
97
+ )
98
+ ];
99
+ }
100
+ function formatPayload(payload) {
101
+ return {
102
+ source: payload.shopifySalesChannel || ShopifySalesChannel.headless,
103
+ hydrogenSubchannelId: payload.storefrontId || "0",
104
+ is_persistent_cookie: payload.hasUserConsent,
105
+ ccpa_enforced: false,
106
+ gdpr_enforced: false,
107
+ unique_token: payload.uniqueToken,
108
+ event_time: Date.now(),
109
+ event_id: buildUUID(),
110
+ event_source_url: payload.url,
111
+ referrer: payload.referrer,
112
+ user_agent: payload.userAgent,
113
+ navigation_type: payload.navigationType,
114
+ navigation_api: payload.navigationApi,
115
+ shop_id: parseInt(parseGid(payload.shopId).id),
116
+ currency: payload.currency
117
+ };
118
+ }
119
+ function formatProductPayload(products) {
120
+ return products ? products.map((p) => {
121
+ const product = addDataIf(
122
+ {
123
+ variant_gid: p.variantGid,
124
+ category: p.category,
125
+ sku: p.sku,
126
+ product_id: parseInt(parseGid(p.productGid).id),
127
+ variant_id: parseInt(parseGid(p.variantGid).id)
128
+ },
129
+ {
130
+ product_gid: p.productGid,
131
+ name: p.name,
132
+ variant: p.variantName || "",
133
+ brand: p.brand,
134
+ price: p.price,
135
+ quantity: Number(p.quantity || 0)
136
+ }
137
+ );
138
+ return JSON.stringify(product);
139
+ }) : [];
140
+ }
141
+ export {
142
+ addToCart,
143
+ pageView
144
+ };
145
+ //# sourceMappingURL=analytics-schema-custom-storefront-customer-tracking.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-schema-custom-storefront-customer-tracking.mjs","sources":["../../src/analytics-schema-custom-storefront-customer-tracking.ts"],"sourcesContent":["import {\n ShopifyAnalyticsPayload,\n ShopifyPageViewPayload,\n ShopifyAddToCartPayload,\n ShopifyMonorailPayload,\n ShopifyAnalyticsProduct,\n ShopifyMonorailEvent,\n} from './analytics-types.js';\nimport {AnalyticsPageType, ShopifySalesChannel} from './analytics-constants.js';\nimport {addDataIf, schemaWrapper, parseGid} from './analytics-utils.js';\nimport {buildUUID} from './cookies-utils.js';\n\nconst SCHEMA_ID = 'custom_storefront_customer_tracking/1.0';\nconst PAGE_RENDERED_EVENT_NAME = 'page_rendered';\nconst COLLECTION_PAGE_RENDERED_EVENT_NAME = 'collection_page_rendered';\nconst PRODUCT_PAGE_RENDERED_EVENT_NAME = 'product_page_rendered';\nconst PRODUCT_ADDED_TO_CART_EVENT_NAME = 'product_added_to_cart';\nconst SEARCH_SUBMITTED_EVENT_NAME = 'search_submitted';\n\nexport function pageView(\n payload: ShopifyPageViewPayload\n): ShopifyMonorailEvent[] {\n const pageViewPayload = payload;\n const additionalPayload = {\n canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,\n customer_id: pageViewPayload.customerId,\n };\n const pageType = pageViewPayload.pageType;\n const pageViewEvents = [];\n\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n\n switch (pageType) {\n case AnalyticsPageType.collection:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n collection_name: pageViewPayload.collectionHandle,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.product:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n products: formatProductPayload(pageViewPayload.products),\n total_value: pageViewPayload.totalValue,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.search:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: SEARCH_SUBMITTED_EVENT_NAME,\n ...additionalPayload,\n search_string: pageViewPayload.searchString,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n }\n\n return pageViewEvents;\n}\n\nexport function addToCart(\n payload: ShopifyAddToCartPayload\n): ShopifyMonorailEvent[] {\n const addToCartPayload = payload;\n const cartToken = parseGid(addToCartPayload.cartId);\n const cart_token = cartToken?.id ? `${cartToken.id}` : null;\n return [\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,\n customerId: addToCartPayload.customerId,\n cart_token,\n total_value: addToCartPayload.totalValue,\n products: formatProductPayload(addToCartPayload.products),\n },\n formatPayload(addToCartPayload)\n )\n ),\n ];\n}\n\nfunction formatPayload(\n payload: ShopifyAnalyticsPayload\n): ShopifyMonorailPayload {\n return {\n source: payload.shopifySalesChannel || ShopifySalesChannel.headless,\n hydrogenSubchannelId: payload.storefrontId || '0',\n\n is_persistent_cookie: payload.hasUserConsent,\n ccpa_enforced: false,\n gdpr_enforced: false,\n unique_token: payload.uniqueToken,\n event_time: Date.now(),\n event_id: buildUUID(),\n\n event_source_url: payload.url,\n referrer: payload.referrer,\n user_agent: payload.userAgent,\n navigation_type: payload.navigationType,\n navigation_api: payload.navigationApi,\n\n shop_id: parseInt(parseGid(payload.shopId).id),\n currency: payload.currency,\n };\n}\n\nfunction formatProductPayload(products?: ShopifyAnalyticsProduct[]): string[] {\n return products\n ? products.map((p: ShopifyAnalyticsProduct) => {\n const product = addDataIf(\n {\n variant_gid: p.variantGid,\n category: p.category,\n sku: p.sku,\n product_id: parseInt(parseGid(p.productGid).id),\n variant_id: parseInt(parseGid(p.variantGid).id),\n },\n {\n product_gid: p.productGid,\n name: p.name,\n variant: p.variantName || '',\n brand: p.brand,\n price: p.price,\n quantity: Number(p.quantity || 0),\n }\n );\n return JSON.stringify(product);\n })\n : [];\n}\n"],"names":[],"mappings":";;;AAYA,MAAM,YAAY;AAClB,MAAM,2BAA2B;AACjC,MAAM,sCAAsC;AAC5C,MAAM,mCAAmC;AACzC,MAAM,mCAAmC;AACzC,MAAM,8BAA8B;AAE7B,SAAS,SACd,SACwB;AACxB,QAAM,kBAAkB;AACxB,QAAM,oBAAoB;AAAA,IACxB,eAAe,gBAAgB,gBAAgB,gBAAgB;AAAA,IAC/D,aAAa,gBAAgB;AAAA,EAAA;AAE/B,QAAM,WAAW,gBAAgB;AACjC,QAAM,iBAAiB,CAAA;AAER,iBAAA;AAAA,IACb;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,YAAY;AAAA,UACZ,GAAG;AAAA,QACL;AAAA,QACA,cAAc,eAAe;AAAA,MAC/B;AAAA,IACF;AAAA,EAAA;AAGF,UAAQ,UAAU;AAAA,IAChB,KAAK,kBAAkB;AACN,qBAAA;AAAA,QACb;AAAA,UACE;AAAA,UACA;AAAA,YACE;AAAA,cACE,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,iBAAiB,gBAAgB;AAAA,YACnC;AAAA,YACA,cAAc,eAAe;AAAA,UAC/B;AAAA,QACF;AAAA,MAAA;AAEF;AAAA,IACF,KAAK,kBAAkB;AACN,qBAAA;AAAA,QACb;AAAA,UACE;AAAA,UACA;AAAA,YACE;AAAA,cACE,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,UAAU,qBAAqB,gBAAgB,QAAQ;AAAA,cACvD,aAAa,gBAAgB;AAAA,YAC/B;AAAA,YACA,cAAc,eAAe;AAAA,UAC/B;AAAA,QACF;AAAA,MAAA;AAEF;AAAA,IACF,KAAK,kBAAkB;AACN,qBAAA;AAAA,QACb;AAAA,UACE;AAAA,UACA;AAAA,YACE;AAAA,cACE,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,eAAe,gBAAgB;AAAA,YACjC;AAAA,YACA,cAAc,eAAe;AAAA,UAC/B;AAAA,QACF;AAAA,MAAA;AAEF;AAAA,EACJ;AAEO,SAAA;AACT;AAEO,SAAS,UACd,SACwB;AACxB,QAAM,mBAAmB;AACnB,QAAA,YAAY,SAAS,iBAAiB,MAAM;AAClD,QAAM,cAAa,uCAAW,MAAK,GAAG,UAAU,OAAO;AAChD,SAAA;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,YAAY;AAAA,UACZ,YAAY,iBAAiB;AAAA,UAC7B;AAAA,UACA,aAAa,iBAAiB;AAAA,UAC9B,UAAU,qBAAqB,iBAAiB,QAAQ;AAAA,QAC1D;AAAA,QACA,cAAc,gBAAgB;AAAA,MAChC;AAAA,IACF;AAAA,EAAA;AAEJ;AAEA,SAAS,cACP,SACwB;AACjB,SAAA;AAAA,IACL,QAAQ,QAAQ,uBAAuB,oBAAoB;AAAA,IAC3D,sBAAsB,QAAQ,gBAAgB;AAAA,IAE9C,sBAAsB,QAAQ;AAAA,IAC9B,eAAe;AAAA,IACf,eAAe;AAAA,IACf,cAAc,QAAQ;AAAA,IACtB,YAAY,KAAK,IAAI;AAAA,IACrB,UAAU,UAAU;AAAA,IAEpB,kBAAkB,QAAQ;AAAA,IAC1B,UAAU,QAAQ;AAAA,IAClB,YAAY,QAAQ;AAAA,IACpB,iBAAiB,QAAQ;AAAA,IACzB,gBAAgB,QAAQ;AAAA,IAExB,SAAS,SAAS,SAAS,QAAQ,MAAM,EAAE,EAAE;AAAA,IAC7C,UAAU,QAAQ;AAAA,EAAA;AAEtB;AAEA,SAAS,qBAAqB,UAAgD;AAC5E,SAAO,WACH,SAAS,IAAI,CAAC,MAA+B;AAC3C,UAAM,UAAU;AAAA,MACd;AAAA,QACE,aAAa,EAAE;AAAA,QACf,UAAU,EAAE;AAAA,QACZ,KAAK,EAAE;AAAA,QACP,YAAY,SAAS,SAAS,EAAE,UAAU,EAAE,EAAE;AAAA,QAC9C,YAAY,SAAS,SAAS,EAAE,UAAU,EAAE,EAAE;AAAA,MAChD;AAAA,MACA;AAAA,QACE,aAAa,EAAE;AAAA,QACf,MAAM,EAAE;AAAA,QACR,SAAS,EAAE,eAAe;AAAA,QAC1B,OAAO,EAAE;AAAA,QACT,OAAO,EAAE;AAAA,QACT,UAAU,OAAO,EAAE,YAAY,CAAC;AAAA,MAClC;AAAA,IAAA;AAEK,WAAA,KAAK,UAAU,OAAO;AAAA,EAC9B,CAAA,IACD,CAAA;AACN;"}
@@ -0,0 +1,58 @@
1
+ import { ShopifyAppId } from "./analytics-constants.mjs";
2
+ import { parseGid, schemaWrapper, addDataIf } from "./analytics-utils.mjs";
3
+ import { buildUUID } from "./cookies-utils.mjs";
4
+ const SCHEMA_ID = "trekkie_storefront_page_view/1.4";
5
+ const OXYGEN_DOMAIN = "myshopify.dev";
6
+ function pageView(payload) {
7
+ const pageViewPayload = payload;
8
+ const { id, resource } = parseGid(pageViewPayload.resourceId);
9
+ const resourceType = resource ? resource.toLowerCase() : void 0;
10
+ return [
11
+ schemaWrapper(
12
+ SCHEMA_ID,
13
+ addDataIf(
14
+ {
15
+ pageType: pageViewPayload.pageType,
16
+ customerId: pageViewPayload.customerId,
17
+ resourceType,
18
+ resourceId: parseInt(id)
19
+ },
20
+ formatPayload(pageViewPayload)
21
+ )
22
+ )
23
+ ];
24
+ }
25
+ function formatPayload(payload) {
26
+ return {
27
+ appClientId: payload.shopifySalesChannel ? ShopifyAppId[payload.shopifySalesChannel] : ShopifyAppId.headless,
28
+ isMerchantRequest: isMerchantRequest(payload.url),
29
+ hydrogenSubchannelId: payload.storefrontId || "0",
30
+ isPersistentCookie: payload.hasUserConsent,
31
+ uniqToken: payload.uniqueToken,
32
+ visitToken: payload.visitToken,
33
+ microSessionId: buildUUID(),
34
+ microSessionCount: 1,
35
+ url: payload.url,
36
+ path: payload.path,
37
+ search: payload.search,
38
+ referrer: payload.referrer,
39
+ title: payload.title,
40
+ shopId: parseInt(parseGid(payload.shopId).id),
41
+ currency: payload.currency,
42
+ contentLanguage: payload.acceptedLanguage || "en"
43
+ };
44
+ }
45
+ function isMerchantRequest(url) {
46
+ if (typeof url !== "string") {
47
+ return false;
48
+ }
49
+ const hostname = new URL(url).hostname;
50
+ if (hostname.indexOf(OXYGEN_DOMAIN) !== -1 || hostname === "localhost") {
51
+ return true;
52
+ }
53
+ return false;
54
+ }
55
+ export {
56
+ pageView
57
+ };
58
+ //# sourceMappingURL=analytics-schema-trekkie-storefront-page-view.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-schema-trekkie-storefront-page-view.mjs","sources":["../../src/analytics-schema-trekkie-storefront-page-view.ts"],"sourcesContent":["import {\n ShopifyPageViewPayload,\n ShopifyMonorailPayload,\n ShopifyMonorailEvent,\n} from './analytics-types.js';\nimport {ShopifyAppId} from './analytics-constants.js';\nimport {addDataIf, schemaWrapper, parseGid} from './analytics-utils.js';\nimport {buildUUID} from './cookies-utils.js';\n\nconst SCHEMA_ID = 'trekkie_storefront_page_view/1.4';\nconst OXYGEN_DOMAIN = 'myshopify.dev';\n\nexport function pageView(\n payload: ShopifyPageViewPayload\n): ShopifyMonorailEvent[] {\n const pageViewPayload = payload;\n const {id, resource} = parseGid(pageViewPayload.resourceId);\n const resourceType = resource ? resource.toLowerCase() : undefined;\n return [\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n pageType: pageViewPayload.pageType,\n customerId: pageViewPayload.customerId,\n resourceType,\n resourceId: parseInt(id),\n },\n formatPayload(pageViewPayload)\n )\n ),\n ];\n}\n\nfunction formatPayload(\n payload: ShopifyPageViewPayload\n): ShopifyMonorailPayload {\n return {\n appClientId: payload.shopifySalesChannel\n ? ShopifyAppId[payload.shopifySalesChannel]\n : ShopifyAppId.headless,\n isMerchantRequest: isMerchantRequest(payload.url),\n hydrogenSubchannelId: payload.storefrontId || '0',\n\n isPersistentCookie: payload.hasUserConsent,\n uniqToken: payload.uniqueToken,\n visitToken: payload.visitToken,\n microSessionId: buildUUID(),\n microSessionCount: 1,\n\n url: payload.url,\n path: payload.path,\n search: payload.search,\n referrer: payload.referrer,\n title: payload.title,\n\n shopId: parseInt(parseGid(payload.shopId).id),\n currency: payload.currency,\n contentLanguage: payload.acceptedLanguage || 'en',\n };\n}\n\nfunction isMerchantRequest(url: string): boolean {\n if (typeof url !== 'string') {\n return false;\n }\n const hostname = new URL(url).hostname;\n if (hostname.indexOf(OXYGEN_DOMAIN) !== -1 || hostname === 'localhost') {\n return true;\n }\n return false;\n}\n"],"names":[],"mappings":";;;AASA,MAAM,YAAY;AAClB,MAAM,gBAAgB;AAEf,SAAS,SACd,SACwB;AACxB,QAAM,kBAAkB;AACxB,QAAM,EAAC,IAAI,SAAA,IAAY,SAAS,gBAAgB,UAAU;AAC1D,QAAM,eAAe,WAAW,SAAS,YAAgB,IAAA;AAClD,SAAA;AAAA,IACL;AAAA,MACE;AAAA,MACA;AAAA,QACE;AAAA,UACE,UAAU,gBAAgB;AAAA,UAC1B,YAAY,gBAAgB;AAAA,UAC5B;AAAA,UACA,YAAY,SAAS,EAAE;AAAA,QACzB;AAAA,QACA,cAAc,eAAe;AAAA,MAC/B;AAAA,IACF;AAAA,EAAA;AAEJ;AAEA,SAAS,cACP,SACwB;AACjB,SAAA;AAAA,IACL,aAAa,QAAQ,sBACjB,aAAa,QAAQ,mBAAmB,IACxC,aAAa;AAAA,IACjB,mBAAmB,kBAAkB,QAAQ,GAAG;AAAA,IAChD,sBAAsB,QAAQ,gBAAgB;AAAA,IAE9C,oBAAoB,QAAQ;AAAA,IAC5B,WAAW,QAAQ;AAAA,IACnB,YAAY,QAAQ;AAAA,IACpB,gBAAgB,UAAU;AAAA,IAC1B,mBAAmB;AAAA,IAEnB,KAAK,QAAQ;AAAA,IACb,MAAM,QAAQ;AAAA,IACd,QAAQ,QAAQ;AAAA,IAChB,UAAU,QAAQ;AAAA,IAClB,OAAO,QAAQ;AAAA,IAEf,QAAQ,SAAS,SAAS,QAAQ,MAAM,EAAE,EAAE;AAAA,IAC5C,UAAU,QAAQ;AAAA,IAClB,iBAAiB,QAAQ,oBAAoB;AAAA,EAAA;AAEjD;AAEA,SAAS,kBAAkB,KAAsB;AAC3C,MAAA,OAAO,QAAQ,UAAU;AACpB,WAAA;AAAA,EACT;AACA,QAAM,WAAW,IAAI,IAAI,GAAG,EAAE;AAC9B,MAAI,SAAS,QAAQ,aAAa,MAAM,MAAM,aAAa,aAAa;AAC/D,WAAA;AAAA,EACT;AACO,SAAA;AACT;"}
@@ -0,0 +1,49 @@
1
+ function schemaWrapper(schemaId, payload) {
2
+ return {
3
+ schema_id: schemaId,
4
+ payload,
5
+ metadata: {
6
+ event_created_at_ms: Date.now()
7
+ }
8
+ };
9
+ }
10
+ function parseGid(gid) {
11
+ const defaultReturn = { id: "", resource: null };
12
+ if (typeof gid !== "string") {
13
+ return defaultReturn;
14
+ }
15
+ const matches = gid.match(/^gid:\/\/shopify\/(\w+)\/([a-z0-9]+)/);
16
+ if (!matches || matches.length === 1) {
17
+ return defaultReturn;
18
+ }
19
+ const id = matches[2] ?? null;
20
+ const resource = matches[1] ?? null;
21
+ return { id, resource };
22
+ }
23
+ function addDataIf(keyValuePairs, formattedData) {
24
+ if (typeof keyValuePairs !== "object") {
25
+ return {};
26
+ }
27
+ Object.entries(keyValuePairs).forEach(([key, value]) => {
28
+ if (value) {
29
+ formattedData[key] = value;
30
+ }
31
+ });
32
+ return formattedData;
33
+ }
34
+ function errorIfServer(fnName) {
35
+ if (typeof document === "undefined") {
36
+ console.error(
37
+ `${fnName} should only be used within the useEffect callback or event handlers`
38
+ );
39
+ return true;
40
+ }
41
+ return false;
42
+ }
43
+ export {
44
+ addDataIf,
45
+ errorIfServer,
46
+ parseGid,
47
+ schemaWrapper
48
+ };
49
+ //# sourceMappingURL=analytics-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-utils.mjs","sources":["../../src/analytics-utils.ts"],"sourcesContent":["import type {\n ShopifyMonorailPayload,\n ShopifyMonorailEvent,\n ShopifyGId,\n} from './analytics-types.js';\n\n/**\n * Builds a Shopify Monorail event from a Shopify Monorail payload and a schema ID.\n * @param payload - The Monorail payload\n * @param schemaId - The schema ID to use\n * @returns The formatted payload\n **/\nexport function schemaWrapper(\n schemaId: string,\n payload: ShopifyMonorailPayload\n): ShopifyMonorailEvent {\n return {\n schema_id: schemaId,\n payload,\n metadata: {\n event_created_at_ms: Date.now(),\n },\n };\n}\n\n/**\n * Parses global id (gid) and returns the resource type and id.\n * @see https://shopify.dev/api/usage/gids\n * @param gid - A shopify GID (string)\n *\n * @example\n * ```ts\n * const {id, resource} = parseGid('gid://shopify/Order/123')\n * // => id = \"123\", resource = 'Order'\n *\n * * const {id, resource} = parseGid('gid://shopify/Cart/abc123')\n * // => id = \"abc123\", resource = 'Cart'\n * ```\n **/\nexport function parseGid(gid: string | undefined): ShopifyGId {\n const defaultReturn = {id: '', resource: null};\n\n if (typeof gid !== 'string') {\n return defaultReturn;\n }\n\n // TODO: add support for parsing query parameters on complex gids\n // Reference: https://shopify.dev/api/usage/gids\n const matches = gid.match(/^gid:\\/\\/shopify\\/(\\w+)\\/([a-z0-9]+)/);\n\n if (!matches || matches.length === 1) {\n return defaultReturn;\n }\n const id = matches[2] ?? null;\n const resource = matches[1] ?? null;\n\n return {id, resource};\n}\n\n/**\n * Filters properties from an object and returns a new object with only the properties that have a truthy value.\n * @param keyValuePairs - An object of key-value pairs\n * @param formattedData - An object which will hold the truthy values\n * @returns The formatted object\n **/\nexport function addDataIf(\n keyValuePairs: ShopifyMonorailPayload,\n formattedData: ShopifyMonorailPayload\n): ShopifyMonorailPayload {\n if (typeof keyValuePairs !== 'object') {\n return {};\n }\n Object.entries(keyValuePairs).forEach(([key, value]) => {\n if (value) {\n formattedData[key] = value;\n }\n });\n return formattedData;\n}\n\n/**\n * Utility that errors if a function is called on the server.\n * @param fnName - The name of the function\n * @returns A boolean\n **/\nexport function errorIfServer(fnName: string): boolean {\n if (typeof document === 'undefined') {\n console.error(\n `${fnName} should only be used within the useEffect callback or event handlers`\n );\n return true;\n }\n return false;\n}\n"],"names":[],"mappings":"AAYgB,SAAA,cACd,UACA,SACsB;AACf,SAAA;AAAA,IACL,WAAW;AAAA,IACX;AAAA,IACA,UAAU;AAAA,MACR,qBAAqB,KAAK,IAAI;AAAA,IAChC;AAAA,EAAA;AAEJ;AAgBO,SAAS,SAAS,KAAqC;AAC5D,QAAM,gBAAgB,EAAC,IAAI,IAAI,UAAU,KAAI;AAEzC,MAAA,OAAO,QAAQ,UAAU;AACpB,WAAA;AAAA,EACT;AAIM,QAAA,UAAU,IAAI,MAAM,sCAAsC;AAEhE,MAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AAC7B,WAAA;AAAA,EACT;AACM,QAAA,KAAK,QAAQ,CAAC,KAAK;AACnB,QAAA,WAAW,QAAQ,CAAC,KAAK;AAExB,SAAA,EAAC,IAAI;AACd;AAQgB,SAAA,UACd,eACA,eACwB;AACpB,MAAA,OAAO,kBAAkB,UAAU;AACrC,WAAO;EACT;AACO,SAAA,QAAQ,aAAa,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACtD,QAAI,OAAO;AACT,oBAAc,GAAG,IAAI;AAAA,IACvB;AAAA,EAAA,CACD;AACM,SAAA;AACT;AAOO,SAAS,cAAc,QAAyB;AACjD,MAAA,OAAO,aAAa,aAAa;AAC3B,YAAA;AAAA,MACN,GAAG;AAAA,IAAA;AAEE,WAAA;AAAA,EACT;AACO,SAAA;AACT;"}