@shopify/hydrogen-react 2022.10.8 → 2023.1.4

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 (612) 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 +18 -0
  13. package/dist/browser-dev/CartLinePrice.mjs.map +1 -0
  14. package/dist/browser-dev/CartLineProvider.mjs +19 -0
  15. package/dist/browser-dev/CartLineProvider.mjs.map +1 -0
  16. package/dist/browser-dev/CartProvider.mjs +73 -67
  17. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  18. package/dist/browser-dev/ExternalVideo.mjs +13 -11
  19. package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
  20. package/dist/browser-dev/Image.mjs +41 -30
  21. package/dist/browser-dev/Image.mjs.map +1 -1
  22. package/dist/browser-dev/MediaFile.mjs +29 -21
  23. package/dist/browser-dev/MediaFile.mjs.map +1 -1
  24. package/dist/browser-dev/ModelViewer.mjs +138 -76
  25. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  26. package/dist/browser-dev/Money.mjs +12 -9
  27. package/dist/browser-dev/Money.mjs.map +1 -1
  28. package/dist/browser-dev/ProductPrice.mjs +12 -17
  29. package/dist/browser-dev/ProductPrice.mjs.map +1 -1
  30. package/dist/browser-dev/ProductProvider.mjs +102 -73
  31. package/dist/browser-dev/ProductProvider.mjs.map +1 -1
  32. package/dist/browser-dev/ShopPayButton.mjs +14 -24
  33. package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
  34. package/dist/browser-dev/ShopifyProvider.mjs +22 -38
  35. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
  36. package/dist/browser-dev/Video.mjs +30 -21
  37. package/dist/browser-dev/Video.mjs.map +1 -1
  38. package/dist/browser-dev/_virtual/index.mjs +11 -2
  39. package/dist/browser-dev/_virtual/index.mjs.map +1 -1
  40. package/dist/browser-dev/_virtual/with-selector.mjs +11 -2
  41. package/dist/browser-dev/_virtual/with-selector.mjs.map +1 -1
  42. package/dist/browser-dev/analytics-constants.mjs +43 -0
  43. package/dist/browser-dev/analytics-constants.mjs.map +1 -0
  44. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  45. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  46. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  47. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  48. package/dist/browser-dev/analytics-utils.mjs +49 -0
  49. package/dist/browser-dev/analytics-utils.mjs.map +1 -0
  50. package/dist/browser-dev/analytics.mjs +159 -0
  51. package/dist/browser-dev/analytics.mjs.map +1 -0
  52. package/dist/browser-dev/cart-hooks.mjs +29 -34
  53. package/dist/browser-dev/cart-hooks.mjs.map +1 -1
  54. package/dist/browser-dev/cart-queries.mjs +50 -28
  55. package/dist/browser-dev/cart-queries.mjs.map +1 -1
  56. package/dist/browser-dev/codegen.helpers.mjs +1 -0
  57. package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
  58. package/dist/browser-dev/cookies-utils.mjs +50 -0
  59. package/dist/browser-dev/cookies-utils.mjs.map +1 -0
  60. package/dist/browser-dev/flatten-connection.mjs +7 -5
  61. package/dist/browser-dev/flatten-connection.mjs.map +1 -1
  62. package/dist/browser-dev/image-size.mjs +8 -8
  63. package/dist/browser-dev/image-size.mjs.map +1 -1
  64. package/dist/browser-dev/index.mjs +20 -6
  65. package/dist/browser-dev/index.mjs.map +1 -1
  66. package/dist/browser-dev/load-script.mjs.map +1 -1
  67. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  68. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  69. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  70. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  71. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  72. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  73. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  74. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  75. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  76. package/dist/browser-dev/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  77. package/dist/browser-dev/parse-metafield.mjs.map +1 -0
  78. package/dist/browser-dev/storefront-api-constants.mjs +1 -1
  79. package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
  80. package/dist/browser-dev/storefront-client.mjs +19 -20
  81. package/dist/browser-dev/storefront-client.mjs.map +1 -1
  82. package/dist/browser-dev/useCartAPIStateMachine.mjs +111 -80
  83. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  84. package/dist/browser-dev/useCartActions.mjs +150 -109
  85. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  86. package/dist/browser-dev/useMoney.mjs +62 -36
  87. package/dist/browser-dev/useMoney.mjs.map +1 -1
  88. package/dist/browser-dev/useShopifyCookies.mjs +41 -0
  89. package/dist/browser-dev/useShopifyCookies.mjs.map +1 -0
  90. package/dist/browser-prod/AddToCartButton.mjs +43 -40
  91. package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
  92. package/dist/browser-prod/BaseButton.mjs +13 -15
  93. package/dist/browser-prod/BaseButton.mjs.map +1 -1
  94. package/dist/browser-prod/BuyNowButton.mjs +19 -17
  95. package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
  96. package/dist/browser-prod/CartCheckoutButton.mjs +12 -15
  97. package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
  98. package/dist/browser-prod/CartCost.mjs +25 -0
  99. package/dist/browser-prod/CartCost.mjs.map +1 -0
  100. package/dist/browser-prod/CartLinePrice.mjs +18 -0
  101. package/dist/browser-prod/CartLinePrice.mjs.map +1 -0
  102. package/dist/browser-prod/CartLineProvider.mjs +19 -0
  103. package/dist/browser-prod/CartLineProvider.mjs.map +1 -0
  104. package/dist/browser-prod/CartProvider.mjs +73 -67
  105. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  106. package/dist/browser-prod/ExternalVideo.mjs +13 -11
  107. package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
  108. package/dist/browser-prod/Image.mjs +35 -28
  109. package/dist/browser-prod/Image.mjs.map +1 -1
  110. package/dist/browser-prod/MediaFile.mjs +29 -21
  111. package/dist/browser-prod/MediaFile.mjs.map +1 -1
  112. package/dist/browser-prod/ModelViewer.mjs +135 -75
  113. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  114. package/dist/browser-prod/Money.mjs +12 -9
  115. package/dist/browser-prod/Money.mjs.map +1 -1
  116. package/dist/browser-prod/ProductPrice.mjs +12 -17
  117. package/dist/browser-prod/ProductPrice.mjs.map +1 -1
  118. package/dist/browser-prod/ProductProvider.mjs +102 -73
  119. package/dist/browser-prod/ProductProvider.mjs.map +1 -1
  120. package/dist/browser-prod/ShopPayButton.mjs +14 -24
  121. package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
  122. package/dist/browser-prod/ShopifyProvider.mjs +22 -32
  123. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
  124. package/dist/browser-prod/Video.mjs +30 -21
  125. package/dist/browser-prod/Video.mjs.map +1 -1
  126. package/dist/browser-prod/_virtual/index.mjs +11 -2
  127. package/dist/browser-prod/_virtual/index.mjs.map +1 -1
  128. package/dist/browser-prod/_virtual/with-selector.mjs +11 -2
  129. package/dist/browser-prod/_virtual/with-selector.mjs.map +1 -1
  130. package/dist/browser-prod/analytics-constants.mjs +43 -0
  131. package/dist/browser-prod/analytics-constants.mjs.map +1 -0
  132. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  133. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  134. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  135. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  136. package/dist/browser-prod/analytics-utils.mjs +49 -0
  137. package/dist/browser-prod/analytics-utils.mjs.map +1 -0
  138. package/dist/browser-prod/analytics.mjs +158 -0
  139. package/dist/browser-prod/analytics.mjs.map +1 -0
  140. package/dist/browser-prod/cart-hooks.mjs +29 -34
  141. package/dist/browser-prod/cart-hooks.mjs.map +1 -1
  142. package/dist/browser-prod/cart-queries.mjs +50 -28
  143. package/dist/browser-prod/cart-queries.mjs.map +1 -1
  144. package/dist/browser-prod/codegen.helpers.mjs +1 -0
  145. package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
  146. package/dist/browser-prod/cookies-utils.mjs +50 -0
  147. package/dist/browser-prod/cookies-utils.mjs.map +1 -0
  148. package/dist/browser-prod/flatten-connection.mjs +7 -5
  149. package/dist/browser-prod/flatten-connection.mjs.map +1 -1
  150. package/dist/browser-prod/image-size.mjs +8 -8
  151. package/dist/browser-prod/image-size.mjs.map +1 -1
  152. package/dist/browser-prod/index.mjs +20 -6
  153. package/dist/browser-prod/index.mjs.map +1 -1
  154. package/dist/browser-prod/load-script.mjs.map +1 -1
  155. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  156. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  157. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  158. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  159. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  160. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  161. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  162. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  163. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  164. package/dist/browser-prod/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  165. package/dist/browser-prod/parse-metafield.mjs.map +1 -0
  166. package/dist/browser-prod/storefront-api-constants.mjs +1 -1
  167. package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
  168. package/dist/browser-prod/storefront-client.mjs +19 -20
  169. package/dist/browser-prod/storefront-client.mjs.map +1 -1
  170. package/dist/browser-prod/useCartAPIStateMachine.mjs +111 -80
  171. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  172. package/dist/browser-prod/useCartActions.mjs +150 -109
  173. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  174. package/dist/browser-prod/useMoney.mjs +62 -36
  175. package/dist/browser-prod/useMoney.mjs.map +1 -1
  176. package/dist/browser-prod/useShopifyCookies.mjs +41 -0
  177. package/dist/browser-prod/useShopifyCookies.mjs.map +1 -0
  178. package/dist/node-dev/AddToCartButton.js +44 -41
  179. package/dist/node-dev/AddToCartButton.js.map +1 -1
  180. package/dist/node-dev/AddToCartButton.mjs +43 -40
  181. package/dist/node-dev/AddToCartButton.mjs.map +1 -1
  182. package/dist/node-dev/BaseButton.js +14 -16
  183. package/dist/node-dev/BaseButton.js.map +1 -1
  184. package/dist/node-dev/BaseButton.mjs +13 -15
  185. package/dist/node-dev/BaseButton.mjs.map +1 -1
  186. package/dist/node-dev/BuyNowButton.js +20 -18
  187. package/dist/node-dev/BuyNowButton.js.map +1 -1
  188. package/dist/node-dev/BuyNowButton.mjs +19 -17
  189. package/dist/node-dev/BuyNowButton.mjs.map +1 -1
  190. package/dist/node-dev/CartCheckoutButton.js +13 -16
  191. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  192. package/dist/node-dev/CartCheckoutButton.mjs +12 -15
  193. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
  194. package/dist/node-dev/CartCost.js +25 -0
  195. package/dist/node-dev/CartCost.js.map +1 -0
  196. package/dist/node-dev/CartCost.mjs +25 -0
  197. package/dist/node-dev/CartCost.mjs.map +1 -0
  198. package/dist/node-dev/CartLinePrice.js +18 -0
  199. package/dist/node-dev/CartLinePrice.js.map +1 -0
  200. package/dist/node-dev/CartLinePrice.mjs +18 -0
  201. package/dist/node-dev/CartLinePrice.mjs.map +1 -0
  202. package/dist/node-dev/CartLineProvider.js +19 -0
  203. package/dist/node-dev/CartLineProvider.js.map +1 -0
  204. package/dist/node-dev/CartLineProvider.mjs +19 -0
  205. package/dist/node-dev/CartLineProvider.mjs.map +1 -0
  206. package/dist/node-dev/CartProvider.js +74 -68
  207. package/dist/node-dev/CartProvider.js.map +1 -1
  208. package/dist/node-dev/CartProvider.mjs +73 -67
  209. package/dist/node-dev/CartProvider.mjs.map +1 -1
  210. package/dist/node-dev/ExternalVideo.js +14 -12
  211. package/dist/node-dev/ExternalVideo.js.map +1 -1
  212. package/dist/node-dev/ExternalVideo.mjs +13 -11
  213. package/dist/node-dev/ExternalVideo.mjs.map +1 -1
  214. package/dist/node-dev/Image.js +42 -31
  215. package/dist/node-dev/Image.js.map +1 -1
  216. package/dist/node-dev/Image.mjs +41 -30
  217. package/dist/node-dev/Image.mjs.map +1 -1
  218. package/dist/node-dev/MediaFile.js +30 -22
  219. package/dist/node-dev/MediaFile.js.map +1 -1
  220. package/dist/node-dev/MediaFile.mjs +29 -21
  221. package/dist/node-dev/MediaFile.mjs.map +1 -1
  222. package/dist/node-dev/ModelViewer.js +139 -77
  223. package/dist/node-dev/ModelViewer.js.map +1 -1
  224. package/dist/node-dev/ModelViewer.mjs +138 -76
  225. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  226. package/dist/node-dev/Money.js +13 -10
  227. package/dist/node-dev/Money.js.map +1 -1
  228. package/dist/node-dev/Money.mjs +12 -9
  229. package/dist/node-dev/Money.mjs.map +1 -1
  230. package/dist/node-dev/ProductPrice.js +13 -18
  231. package/dist/node-dev/ProductPrice.js.map +1 -1
  232. package/dist/node-dev/ProductPrice.mjs +12 -17
  233. package/dist/node-dev/ProductPrice.mjs.map +1 -1
  234. package/dist/node-dev/ProductProvider.js +103 -74
  235. package/dist/node-dev/ProductProvider.js.map +1 -1
  236. package/dist/node-dev/ProductProvider.mjs +102 -73
  237. package/dist/node-dev/ProductProvider.mjs.map +1 -1
  238. package/dist/node-dev/ShopPayButton.js +14 -24
  239. package/dist/node-dev/ShopPayButton.js.map +1 -1
  240. package/dist/node-dev/ShopPayButton.mjs +14 -24
  241. package/dist/node-dev/ShopPayButton.mjs.map +1 -1
  242. package/dist/node-dev/ShopifyProvider.js +23 -39
  243. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  244. package/dist/node-dev/ShopifyProvider.mjs +22 -38
  245. package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
  246. package/dist/node-dev/Video.js +31 -22
  247. package/dist/node-dev/Video.js.map +1 -1
  248. package/dist/node-dev/Video.mjs +30 -21
  249. package/dist/node-dev/Video.mjs.map +1 -1
  250. package/dist/node-dev/_virtual/index.js +11 -3
  251. package/dist/node-dev/_virtual/index.js.map +1 -1
  252. package/dist/node-dev/_virtual/index.mjs +11 -2
  253. package/dist/node-dev/_virtual/index.mjs.map +1 -1
  254. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.js +1 -1
  255. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  256. package/dist/node-dev/_virtual/with-selector.development.js +1 -1
  257. package/dist/node-dev/_virtual/with-selector.js +11 -3
  258. package/dist/node-dev/_virtual/with-selector.js.map +1 -1
  259. package/dist/node-dev/_virtual/with-selector.mjs +11 -2
  260. package/dist/node-dev/_virtual/with-selector.mjs.map +1 -1
  261. package/dist/node-dev/_virtual/with-selector.production.min.js +1 -1
  262. package/dist/node-dev/analytics-constants.js +43 -0
  263. package/dist/node-dev/analytics-constants.js.map +1 -0
  264. package/dist/node-dev/analytics-constants.mjs +43 -0
  265. package/dist/node-dev/analytics-constants.mjs.map +1 -0
  266. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +145 -0
  267. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
  268. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  269. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  270. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js +58 -0
  271. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
  272. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  273. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  274. package/dist/node-dev/analytics-utils.js +49 -0
  275. package/dist/node-dev/analytics-utils.js.map +1 -0
  276. package/dist/node-dev/analytics-utils.mjs +49 -0
  277. package/dist/node-dev/analytics-utils.mjs.map +1 -0
  278. package/dist/node-dev/analytics.js +159 -0
  279. package/dist/node-dev/analytics.js.map +1 -0
  280. package/dist/node-dev/analytics.mjs +159 -0
  281. package/dist/node-dev/analytics.mjs.map +1 -0
  282. package/dist/node-dev/cart-constants.js +1 -1
  283. package/dist/node-dev/cart-hooks.js +29 -34
  284. package/dist/node-dev/cart-hooks.js.map +1 -1
  285. package/dist/node-dev/cart-hooks.mjs +29 -34
  286. package/dist/node-dev/cart-hooks.mjs.map +1 -1
  287. package/dist/node-dev/cart-queries.js +51 -29
  288. package/dist/node-dev/cart-queries.js.map +1 -1
  289. package/dist/node-dev/cart-queries.mjs +50 -28
  290. package/dist/node-dev/cart-queries.mjs.map +1 -1
  291. package/dist/node-dev/codegen.helpers.js +2 -1
  292. package/dist/node-dev/codegen.helpers.js.map +1 -1
  293. package/dist/node-dev/codegen.helpers.mjs +1 -0
  294. package/dist/node-dev/codegen.helpers.mjs.map +1 -1
  295. package/dist/node-dev/cookies-utils.js +50 -0
  296. package/dist/node-dev/cookies-utils.js.map +1 -0
  297. package/dist/node-dev/cookies-utils.mjs +50 -0
  298. package/dist/node-dev/cookies-utils.mjs.map +1 -0
  299. package/dist/node-dev/flatten-connection.js +8 -6
  300. package/dist/node-dev/flatten-connection.js.map +1 -1
  301. package/dist/node-dev/flatten-connection.mjs +7 -5
  302. package/dist/node-dev/flatten-connection.mjs.map +1 -1
  303. package/dist/node-dev/image-size.js +9 -9
  304. package/dist/node-dev/image-size.js.map +1 -1
  305. package/dist/node-dev/image-size.mjs +8 -8
  306. package/dist/node-dev/image-size.mjs.map +1 -1
  307. package/dist/node-dev/index.js +21 -7
  308. package/dist/node-dev/index.js.map +1 -1
  309. package/dist/node-dev/index.mjs +20 -6
  310. package/dist/node-dev/index.mjs.map +1 -1
  311. package/dist/node-dev/load-script.js +1 -1
  312. package/dist/node-dev/load-script.js.map +1 -1
  313. package/dist/node-dev/load-script.mjs.map +1 -1
  314. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +1 -1
  315. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
  316. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  317. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +2 -2
  318. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
  319. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  320. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  321. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js +2 -4
  322. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  323. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  324. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  325. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  326. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  327. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  328. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  329. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  330. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  331. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  332. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  333. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  334. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  335. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js +4 -4
  336. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  337. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  338. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  339. package/dist/node-dev/{metafield-parser.js → parse-metafield.js} +21 -13
  340. package/dist/node-dev/parse-metafield.js.map +1 -0
  341. package/dist/node-dev/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  342. package/dist/node-dev/parse-metafield.mjs.map +1 -0
  343. package/dist/node-dev/storefront-api-constants.js +2 -2
  344. package/dist/node-dev/storefront-api-constants.js.map +1 -1
  345. package/dist/node-dev/storefront-api-constants.mjs +1 -1
  346. package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
  347. package/dist/node-dev/storefront-client.js +20 -21
  348. package/dist/node-dev/storefront-client.js.map +1 -1
  349. package/dist/node-dev/storefront-client.mjs +19 -20
  350. package/dist/node-dev/storefront-client.mjs.map +1 -1
  351. package/dist/node-dev/useCartAPIStateMachine.js +112 -81
  352. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  353. package/dist/node-dev/useCartAPIStateMachine.mjs +111 -80
  354. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  355. package/dist/node-dev/useCartActions.js +151 -110
  356. package/dist/node-dev/useCartActions.js.map +1 -1
  357. package/dist/node-dev/useCartActions.mjs +150 -109
  358. package/dist/node-dev/useCartActions.mjs.map +1 -1
  359. package/dist/node-dev/useMoney.js +63 -37
  360. package/dist/node-dev/useMoney.js.map +1 -1
  361. package/dist/node-dev/useMoney.mjs +62 -36
  362. package/dist/node-dev/useMoney.mjs.map +1 -1
  363. package/dist/node-dev/useShopifyCookies.js +41 -0
  364. package/dist/node-dev/useShopifyCookies.js.map +1 -0
  365. package/dist/node-dev/useShopifyCookies.mjs +41 -0
  366. package/dist/node-dev/useShopifyCookies.mjs.map +1 -0
  367. package/dist/node-prod/AddToCartButton.js +44 -41
  368. package/dist/node-prod/AddToCartButton.js.map +1 -1
  369. package/dist/node-prod/AddToCartButton.mjs +43 -40
  370. package/dist/node-prod/AddToCartButton.mjs.map +1 -1
  371. package/dist/node-prod/BaseButton.js +14 -16
  372. package/dist/node-prod/BaseButton.js.map +1 -1
  373. package/dist/node-prod/BaseButton.mjs +13 -15
  374. package/dist/node-prod/BaseButton.mjs.map +1 -1
  375. package/dist/node-prod/BuyNowButton.js +20 -18
  376. package/dist/node-prod/BuyNowButton.js.map +1 -1
  377. package/dist/node-prod/BuyNowButton.mjs +19 -17
  378. package/dist/node-prod/BuyNowButton.mjs.map +1 -1
  379. package/dist/node-prod/CartCheckoutButton.js +13 -16
  380. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  381. package/dist/node-prod/CartCheckoutButton.mjs +12 -15
  382. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
  383. package/dist/node-prod/CartCost.js +25 -0
  384. package/dist/node-prod/CartCost.js.map +1 -0
  385. package/dist/node-prod/CartCost.mjs +25 -0
  386. package/dist/node-prod/CartCost.mjs.map +1 -0
  387. package/dist/node-prod/CartLinePrice.js +18 -0
  388. package/dist/node-prod/CartLinePrice.js.map +1 -0
  389. package/dist/node-prod/CartLinePrice.mjs +18 -0
  390. package/dist/node-prod/CartLinePrice.mjs.map +1 -0
  391. package/dist/node-prod/CartLineProvider.js +19 -0
  392. package/dist/node-prod/CartLineProvider.js.map +1 -0
  393. package/dist/node-prod/CartLineProvider.mjs +19 -0
  394. package/dist/node-prod/CartLineProvider.mjs.map +1 -0
  395. package/dist/node-prod/CartProvider.js +74 -68
  396. package/dist/node-prod/CartProvider.js.map +1 -1
  397. package/dist/node-prod/CartProvider.mjs +73 -67
  398. package/dist/node-prod/CartProvider.mjs.map +1 -1
  399. package/dist/node-prod/ExternalVideo.js +14 -12
  400. package/dist/node-prod/ExternalVideo.js.map +1 -1
  401. package/dist/node-prod/ExternalVideo.mjs +13 -11
  402. package/dist/node-prod/ExternalVideo.mjs.map +1 -1
  403. package/dist/node-prod/Image.js +36 -29
  404. package/dist/node-prod/Image.js.map +1 -1
  405. package/dist/node-prod/Image.mjs +35 -28
  406. package/dist/node-prod/Image.mjs.map +1 -1
  407. package/dist/node-prod/MediaFile.js +30 -22
  408. package/dist/node-prod/MediaFile.js.map +1 -1
  409. package/dist/node-prod/MediaFile.mjs +29 -21
  410. package/dist/node-prod/MediaFile.mjs.map +1 -1
  411. package/dist/node-prod/ModelViewer.js +136 -76
  412. package/dist/node-prod/ModelViewer.js.map +1 -1
  413. package/dist/node-prod/ModelViewer.mjs +135 -75
  414. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  415. package/dist/node-prod/Money.js +13 -10
  416. package/dist/node-prod/Money.js.map +1 -1
  417. package/dist/node-prod/Money.mjs +12 -9
  418. package/dist/node-prod/Money.mjs.map +1 -1
  419. package/dist/node-prod/ProductPrice.js +13 -18
  420. package/dist/node-prod/ProductPrice.js.map +1 -1
  421. package/dist/node-prod/ProductPrice.mjs +12 -17
  422. package/dist/node-prod/ProductPrice.mjs.map +1 -1
  423. package/dist/node-prod/ProductProvider.js +103 -74
  424. package/dist/node-prod/ProductProvider.js.map +1 -1
  425. package/dist/node-prod/ProductProvider.mjs +102 -73
  426. package/dist/node-prod/ProductProvider.mjs.map +1 -1
  427. package/dist/node-prod/ShopPayButton.js +14 -24
  428. package/dist/node-prod/ShopPayButton.js.map +1 -1
  429. package/dist/node-prod/ShopPayButton.mjs +14 -24
  430. package/dist/node-prod/ShopPayButton.mjs.map +1 -1
  431. package/dist/node-prod/ShopifyProvider.js +23 -33
  432. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  433. package/dist/node-prod/ShopifyProvider.mjs +22 -32
  434. package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
  435. package/dist/node-prod/Video.js +31 -22
  436. package/dist/node-prod/Video.js.map +1 -1
  437. package/dist/node-prod/Video.mjs +30 -21
  438. package/dist/node-prod/Video.mjs.map +1 -1
  439. package/dist/node-prod/_virtual/index.js +11 -3
  440. package/dist/node-prod/_virtual/index.js.map +1 -1
  441. package/dist/node-prod/_virtual/index.mjs +11 -2
  442. package/dist/node-prod/_virtual/index.mjs.map +1 -1
  443. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.js +1 -1
  444. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  445. package/dist/node-prod/_virtual/with-selector.development.js +1 -1
  446. package/dist/node-prod/_virtual/with-selector.js +11 -3
  447. package/dist/node-prod/_virtual/with-selector.js.map +1 -1
  448. package/dist/node-prod/_virtual/with-selector.mjs +11 -2
  449. package/dist/node-prod/_virtual/with-selector.mjs.map +1 -1
  450. package/dist/node-prod/_virtual/with-selector.production.min.js +1 -1
  451. package/dist/node-prod/analytics-constants.js +43 -0
  452. package/dist/node-prod/analytics-constants.js.map +1 -0
  453. package/dist/node-prod/analytics-constants.mjs +43 -0
  454. package/dist/node-prod/analytics-constants.mjs.map +1 -0
  455. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +145 -0
  456. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
  457. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  458. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  459. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js +58 -0
  460. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
  461. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  462. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  463. package/dist/node-prod/analytics-utils.js +49 -0
  464. package/dist/node-prod/analytics-utils.js.map +1 -0
  465. package/dist/node-prod/analytics-utils.mjs +49 -0
  466. package/dist/node-prod/analytics-utils.mjs.map +1 -0
  467. package/dist/node-prod/analytics.js +158 -0
  468. package/dist/node-prod/analytics.js.map +1 -0
  469. package/dist/node-prod/analytics.mjs +158 -0
  470. package/dist/node-prod/analytics.mjs.map +1 -0
  471. package/dist/node-prod/cart-constants.js +1 -1
  472. package/dist/node-prod/cart-hooks.js +29 -34
  473. package/dist/node-prod/cart-hooks.js.map +1 -1
  474. package/dist/node-prod/cart-hooks.mjs +29 -34
  475. package/dist/node-prod/cart-hooks.mjs.map +1 -1
  476. package/dist/node-prod/cart-queries.js +51 -29
  477. package/dist/node-prod/cart-queries.js.map +1 -1
  478. package/dist/node-prod/cart-queries.mjs +50 -28
  479. package/dist/node-prod/cart-queries.mjs.map +1 -1
  480. package/dist/node-prod/codegen.helpers.js +2 -1
  481. package/dist/node-prod/codegen.helpers.js.map +1 -1
  482. package/dist/node-prod/codegen.helpers.mjs +1 -0
  483. package/dist/node-prod/codegen.helpers.mjs.map +1 -1
  484. package/dist/node-prod/cookies-utils.js +50 -0
  485. package/dist/node-prod/cookies-utils.js.map +1 -0
  486. package/dist/node-prod/cookies-utils.mjs +50 -0
  487. package/dist/node-prod/cookies-utils.mjs.map +1 -0
  488. package/dist/node-prod/flatten-connection.js +8 -6
  489. package/dist/node-prod/flatten-connection.js.map +1 -1
  490. package/dist/node-prod/flatten-connection.mjs +7 -5
  491. package/dist/node-prod/flatten-connection.mjs.map +1 -1
  492. package/dist/node-prod/image-size.js +9 -9
  493. package/dist/node-prod/image-size.js.map +1 -1
  494. package/dist/node-prod/image-size.mjs +8 -8
  495. package/dist/node-prod/image-size.mjs.map +1 -1
  496. package/dist/node-prod/index.js +21 -7
  497. package/dist/node-prod/index.js.map +1 -1
  498. package/dist/node-prod/index.mjs +20 -6
  499. package/dist/node-prod/index.mjs.map +1 -1
  500. package/dist/node-prod/load-script.js +1 -1
  501. package/dist/node-prod/load-script.js.map +1 -1
  502. package/dist/node-prod/load-script.mjs.map +1 -1
  503. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +1 -1
  504. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
  505. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  506. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +2 -2
  507. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
  508. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  509. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  510. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js +2 -4
  511. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  512. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  513. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  514. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  515. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  516. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  517. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  518. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  519. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  520. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  521. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  522. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  523. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  524. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js +4 -4
  525. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  526. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  527. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  528. package/dist/node-prod/{metafield-parser.js → parse-metafield.js} +21 -13
  529. package/dist/node-prod/parse-metafield.js.map +1 -0
  530. package/dist/node-prod/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  531. package/dist/node-prod/parse-metafield.mjs.map +1 -0
  532. package/dist/node-prod/storefront-api-constants.js +2 -2
  533. package/dist/node-prod/storefront-api-constants.js.map +1 -1
  534. package/dist/node-prod/storefront-api-constants.mjs +1 -1
  535. package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
  536. package/dist/node-prod/storefront-client.js +20 -21
  537. package/dist/node-prod/storefront-client.js.map +1 -1
  538. package/dist/node-prod/storefront-client.mjs +19 -20
  539. package/dist/node-prod/storefront-client.mjs.map +1 -1
  540. package/dist/node-prod/useCartAPIStateMachine.js +112 -81
  541. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  542. package/dist/node-prod/useCartAPIStateMachine.mjs +111 -80
  543. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  544. package/dist/node-prod/useCartActions.js +151 -110
  545. package/dist/node-prod/useCartActions.js.map +1 -1
  546. package/dist/node-prod/useCartActions.mjs +150 -109
  547. package/dist/node-prod/useCartActions.mjs.map +1 -1
  548. package/dist/node-prod/useMoney.js +63 -37
  549. package/dist/node-prod/useMoney.js.map +1 -1
  550. package/dist/node-prod/useMoney.mjs +62 -36
  551. package/dist/node-prod/useMoney.mjs.map +1 -1
  552. package/dist/node-prod/useShopifyCookies.js +41 -0
  553. package/dist/node-prod/useShopifyCookies.js.map +1 -0
  554. package/dist/node-prod/useShopifyCookies.mjs +41 -0
  555. package/dist/node-prod/useShopifyCookies.mjs.map +1 -0
  556. package/dist/types/AddToCartButton.d.ts +3 -2
  557. package/dist/types/BuyNowButton.d.ts +7 -3
  558. package/dist/types/CartCheckoutButton.d.ts +6 -5
  559. package/dist/types/CartCost.d.ts +7 -5
  560. package/dist/types/CartLinePrice.d.ts +4 -4
  561. package/dist/types/CartLineProvider.d.ts +8 -6
  562. package/dist/types/CartProvider.d.ts +12 -2
  563. package/dist/types/ExternalVideo.d.ts +1 -2
  564. package/dist/types/Image.d.ts +5 -3
  565. package/dist/types/MediaFile.d.ts +12 -11
  566. package/dist/types/ModelViewer.d.ts +2 -2
  567. package/dist/types/ProductPrice.d.ts +1 -1
  568. package/dist/types/ProductProvider.d.ts +1 -1
  569. package/dist/types/ShopPayButton.d.ts +10 -10
  570. package/dist/types/ShopifyProvider.d.ts +36 -40
  571. package/dist/types/analytics-constants.d.ts +48 -0
  572. package/dist/types/analytics-schema-custom-storefront-customer-tracking.d.ts +3 -0
  573. package/dist/types/analytics-schema-trekkie-storefront-page-view.d.ts +2 -0
  574. package/dist/types/analytics-types.d.ts +108 -0
  575. package/dist/types/analytics-utils.d.ts +36 -0
  576. package/dist/types/analytics.d.ts +9 -0
  577. package/dist/types/cart-queries.d.ts +1 -1
  578. package/dist/types/cookies-utils.d.ts +4 -0
  579. package/dist/types/flatten-connection.d.ts +29 -9
  580. package/dist/types/index.d.cts +11 -4
  581. package/dist/types/index.d.ts +11 -4
  582. package/dist/types/{metafield-parser.d.ts → parse-metafield.d.ts} +11 -9
  583. package/dist/types/storefront-api-constants.d.ts +1 -1
  584. package/dist/types/storefront-api-types.d.ts +121 -2
  585. package/dist/types/storefront-client.d.ts +14 -14
  586. package/dist/types/useCartActions.d.ts +1 -1
  587. package/dist/types/useShopifyCookies.d.ts +14 -0
  588. package/dist/umd/hydrogen-react.dev.js +1634 -1371
  589. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  590. package/dist/umd/hydrogen-react.prod.js +18 -25
  591. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  592. package/package.json +24 -19
  593. package/storefront.schema.json +1 -1
  594. package/dist/browser-dev/Metafield.mjs +0 -301
  595. package/dist/browser-dev/Metafield.mjs.map +0 -1
  596. package/dist/browser-dev/metafield-parser.mjs.map +0 -1
  597. package/dist/browser-prod/Metafield.mjs +0 -288
  598. package/dist/browser-prod/Metafield.mjs.map +0 -1
  599. package/dist/browser-prod/metafield-parser.mjs.map +0 -1
  600. package/dist/node-dev/Metafield.js +0 -301
  601. package/dist/node-dev/Metafield.js.map +0 -1
  602. package/dist/node-dev/Metafield.mjs +0 -301
  603. package/dist/node-dev/Metafield.mjs.map +0 -1
  604. package/dist/node-dev/metafield-parser.js.map +0 -1
  605. package/dist/node-dev/metafield-parser.mjs.map +0 -1
  606. package/dist/node-prod/Metafield.js +0 -288
  607. package/dist/node-prod/Metafield.js.map +0 -1
  608. package/dist/node-prod/Metafield.mjs +0 -288
  609. package/dist/node-prod/Metafield.mjs.map +0 -1
  610. package/dist/node-prod/metafield-parser.js.map +0 -1
  611. package/dist/node-prod/metafield-parser.mjs.map +0 -1
  612. package/dist/types/Metafield.d.ts +0 -61
@@ -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":"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"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const analyticsConstants = require("./analytics-constants.js");
4
+ const analyticsUtils = require("./analytics-utils.js");
5
+ const cookiesUtils = require("./cookies-utils.js");
6
+ const SCHEMA_ID = "trekkie_storefront_page_view/1.4";
7
+ const OXYGEN_DOMAIN = "myshopify.dev";
8
+ function pageView(payload) {
9
+ const pageViewPayload = payload;
10
+ const { id, resource } = analyticsUtils.parseGid(pageViewPayload.resourceId);
11
+ const resourceType = resource ? resource.toLowerCase() : void 0;
12
+ return [
13
+ analyticsUtils.schemaWrapper(
14
+ SCHEMA_ID,
15
+ analyticsUtils.addDataIf(
16
+ {
17
+ pageType: pageViewPayload.pageType,
18
+ customerId: pageViewPayload.customerId,
19
+ resourceType,
20
+ resourceId: parseInt(id)
21
+ },
22
+ formatPayload(pageViewPayload)
23
+ )
24
+ )
25
+ ];
26
+ }
27
+ function formatPayload(payload) {
28
+ return {
29
+ appClientId: payload.shopifySalesChannel ? analyticsConstants.ShopifyAppId[payload.shopifySalesChannel] : analyticsConstants.ShopifyAppId.headless,
30
+ isMerchantRequest: isMerchantRequest(payload.url),
31
+ hydrogenSubchannelId: payload.storefrontId || "0",
32
+ isPersistentCookie: payload.hasUserConsent,
33
+ uniqToken: payload.uniqueToken,
34
+ visitToken: payload.visitToken,
35
+ microSessionId: cookiesUtils.buildUUID(),
36
+ microSessionCount: 1,
37
+ url: payload.url,
38
+ path: payload.path,
39
+ search: payload.search,
40
+ referrer: payload.referrer,
41
+ title: payload.title,
42
+ shopId: parseInt(analyticsUtils.parseGid(payload.shopId).id),
43
+ currency: payload.currency,
44
+ contentLanguage: payload.acceptedLanguage || "en"
45
+ };
46
+ }
47
+ function isMerchantRequest(url) {
48
+ if (typeof url !== "string") {
49
+ return false;
50
+ }
51
+ const hostname = new URL(url).hostname;
52
+ if (hostname.indexOf(OXYGEN_DOMAIN) !== -1 || hostname === "localhost") {
53
+ return true;
54
+ }
55
+ return false;
56
+ }
57
+ exports.pageView = pageView;
58
+ //# sourceMappingURL=analytics-schema-trekkie-storefront-page-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-schema-trekkie-storefront-page-view.js","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":["parseGid","schemaWrapper","addDataIf","ShopifyAppId","buildUUID"],"mappings":";;;;;AASA,MAAM,YAAY;AAClB,MAAM,gBAAgB;AAEf,SAAS,SACd,SACwB;AACxB,QAAM,kBAAkB;AACxB,QAAM,EAAC,IAAI,SAAA,IAAYA,eAAAA,SAAS,gBAAgB,UAAU;AAC1D,QAAM,eAAe,WAAW,SAAS,YAAgB,IAAA;AAClD,SAAA;AAAA,IACLC,eAAA;AAAA,MACE;AAAA,MACAC,eAAA;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,sBACjBC,mBAAAA,aAAa,QAAQ,mBAAmB,IACxCA,mBAAAA,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,gBAAgBC,aAAAA,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,SAASJ,eAAA,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,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
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ function schemaWrapper(schemaId, payload) {
4
+ return {
5
+ schema_id: schemaId,
6
+ payload,
7
+ metadata: {
8
+ event_created_at_ms: Date.now()
9
+ }
10
+ };
11
+ }
12
+ function parseGid(gid) {
13
+ const defaultReturn = { id: "", resource: null };
14
+ if (typeof gid !== "string") {
15
+ return defaultReturn;
16
+ }
17
+ const matches = gid.match(/^gid:\/\/shopify\/(\w+)\/([a-z0-9]+)/);
18
+ if (!matches || matches.length === 1) {
19
+ return defaultReturn;
20
+ }
21
+ const id = matches[2] ?? null;
22
+ const resource = matches[1] ?? null;
23
+ return { id, resource };
24
+ }
25
+ function addDataIf(keyValuePairs, formattedData) {
26
+ if (typeof keyValuePairs !== "object") {
27
+ return {};
28
+ }
29
+ Object.entries(keyValuePairs).forEach(([key, value]) => {
30
+ if (value) {
31
+ formattedData[key] = value;
32
+ }
33
+ });
34
+ return formattedData;
35
+ }
36
+ function errorIfServer(fnName) {
37
+ if (typeof document === "undefined") {
38
+ console.error(
39
+ `${fnName} should only be used within the useEffect callback or event handlers`
40
+ );
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ exports.addDataIf = addDataIf;
46
+ exports.errorIfServer = errorIfServer;
47
+ exports.parseGid = parseGid;
48
+ exports.schemaWrapper = schemaWrapper;
49
+ //# sourceMappingURL=analytics-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-utils.js","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;;;;;"}
@@ -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;"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const cartConstants = require("./cart-constants.js");
4
+ const analyticsConstants = require("./analytics-constants.js");
5
+ const analyticsUtils = require("./analytics-utils.js");
6
+ const cookiesUtils = require("./cookies-utils.js");
7
+ const analyticsSchemaTrekkieStorefrontPageView = require("./analytics-schema-trekkie-storefront-page-view.js");
8
+ const analyticsSchemaCustomStorefrontCustomerTracking = require("./analytics-schema-custom-storefront-customer-tracking.js");
9
+ function sendShopifyAnalytics(event, shopDomain) {
10
+ const { eventName, payload } = event;
11
+ if (!payload.hasUserConsent)
12
+ return Promise.resolve();
13
+ let events = [];
14
+ if (eventName === analyticsConstants.AnalyticsEventName.PAGE_VIEW) {
15
+ const pageViewPayload = payload;
16
+ events = events.concat(
17
+ analyticsSchemaTrekkieStorefrontPageView.pageView(pageViewPayload),
18
+ analyticsSchemaCustomStorefrontCustomerTracking.pageView(pageViewPayload)
19
+ );
20
+ } else if (eventName === analyticsConstants.AnalyticsEventName.ADD_TO_CART) {
21
+ events = events.concat(
22
+ analyticsSchemaCustomStorefrontCustomerTracking.addToCart(payload)
23
+ );
24
+ }
25
+ if (events.length) {
26
+ return sendToShopify(events, shopDomain);
27
+ } else {
28
+ return Promise.resolve();
29
+ }
30
+ }
31
+ const ERROR_MESSAGE = "sendShopifyAnalytics request is unsuccessful";
32
+ function sendToShopify(events, shopDomain) {
33
+ const eventsToBeSent = {
34
+ events,
35
+ metadata: {
36
+ event_sent_at_ms: Date.now()
37
+ }
38
+ };
39
+ try {
40
+ return fetch(
41
+ shopDomain ? `https://${shopDomain}/.well-known/shopify/monorail/unstable/produce_batch` : "https://monorail-edge.shopifysvc.com/unstable/produce_batch",
42
+ {
43
+ method: "post",
44
+ headers: {
45
+ "content-type": "text/plain"
46
+ },
47
+ body: JSON.stringify(eventsToBeSent)
48
+ }
49
+ ).then((response) => {
50
+ if (!response.ok) {
51
+ throw new Error("Response failed");
52
+ }
53
+ return response.text();
54
+ }).then((data) => {
55
+ if (data) {
56
+ const jsonResponse = JSON.parse(data);
57
+ jsonResponse.result.forEach((eventResponse) => {
58
+ if (eventResponse.status !== 200) {
59
+ console.error(ERROR_MESSAGE, "\n\n", eventResponse.message);
60
+ }
61
+ });
62
+ }
63
+ }).catch((err) => {
64
+ console.error(ERROR_MESSAGE, err);
65
+ if (false)
66
+ ;
67
+ });
68
+ } catch (error) {
69
+ return Promise.resolve();
70
+ }
71
+ }
72
+ function getClientBrowserParameters() {
73
+ if (analyticsUtils.errorIfServer("getClientBrowserParameters")) {
74
+ return {
75
+ uniqueToken: "",
76
+ visitToken: "",
77
+ url: "",
78
+ path: "",
79
+ search: "",
80
+ referrer: "",
81
+ title: "",
82
+ userAgent: "",
83
+ navigationType: "",
84
+ navigationApi: ""
85
+ };
86
+ }
87
+ const [navigationType, navigationApi] = getNavigationType();
88
+ const cookies = cookiesUtils.getShopifyCookies(document.cookie);
89
+ return {
90
+ uniqueToken: cookies[cartConstants.SHOPIFY_Y],
91
+ visitToken: cookies[cartConstants.SHOPIFY_S],
92
+ url: location.href,
93
+ path: location.pathname,
94
+ search: location.search,
95
+ referrer: document.referrer,
96
+ title: document.title,
97
+ userAgent: navigator.userAgent,
98
+ navigationType,
99
+ navigationApi
100
+ };
101
+ }
102
+ function getNavigationTypeExperimental() {
103
+ try {
104
+ const navigationEntries = (performance == null ? void 0 : performance.getEntriesByType) && (performance == null ? void 0 : performance.getEntriesByType("navigation"));
105
+ if (navigationEntries && navigationEntries[0]) {
106
+ const rawType = window.performance.getEntriesByType(
107
+ "navigation"
108
+ )[0]["type"];
109
+ const navType = rawType && rawType.toString();
110
+ return navType;
111
+ }
112
+ } catch (err) {
113
+ }
114
+ return void 0;
115
+ }
116
+ function getNavigationTypeLegacy() {
117
+ var _a, _b;
118
+ try {
119
+ if (PerformanceNavigation && ((_a = performance == null ? void 0 : performance.navigation) == null ? void 0 : _a.type) !== null && ((_b = performance == null ? void 0 : performance.navigation) == null ? void 0 : _b.type) !== void 0) {
120
+ const rawType = performance.navigation.type;
121
+ switch (rawType) {
122
+ case PerformanceNavigation.TYPE_NAVIGATE:
123
+ return "navigate";
124
+ break;
125
+ case PerformanceNavigation.TYPE_RELOAD:
126
+ return "reload";
127
+ break;
128
+ case PerformanceNavigation.TYPE_BACK_FORWARD:
129
+ return "back_forward";
130
+ break;
131
+ default:
132
+ return `unknown: ${rawType}`;
133
+ }
134
+ }
135
+ } catch (err) {
136
+ }
137
+ return void 0;
138
+ }
139
+ function getNavigationType() {
140
+ try {
141
+ let navApi = "PerformanceNavigationTiming";
142
+ let navType = getNavigationTypeExperimental();
143
+ if (!navType) {
144
+ navType = getNavigationTypeLegacy();
145
+ navApi = "performance.navigation";
146
+ }
147
+ if (navType) {
148
+ return [navType, navApi];
149
+ } else {
150
+ return ["unknown", "unknown"];
151
+ }
152
+ } catch (err) {
153
+ }
154
+ return ["error", "error"];
155
+ }
156
+ exports.getClientBrowserParameters = getClientBrowserParameters;
157
+ exports.sendShopifyAnalytics = sendShopifyAnalytics;
158
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sources":["../../src/analytics.ts"],"sourcesContent":["import {SHOPIFY_S, SHOPIFY_Y} from './cart-constants.js';\nimport type {\n ClientBrowserParameters,\n ShopifyAddToCartPayload,\n ShopifyAnalytics,\n ShopifyPageViewPayload,\n ShopifyMonorailEvent,\n} from './analytics-types.js';\nimport {AnalyticsEventName} from './analytics-constants.js';\nimport {errorIfServer} from './analytics-utils.js';\nimport {getShopifyCookies} from './cookies-utils.js';\n\nimport {pageView as trekkiePageView} from './analytics-schema-trekkie-storefront-page-view.js';\nimport {\n pageView as customerPageView,\n addToCart as customerAddToCart,\n} from './analytics-schema-custom-storefront-customer-tracking.js';\n\n/**\n * Set user and session cookies and refresh the expiry time\n * @param event - The analytics event.\n * @param shopDomain - The Online Store domain to sent Shopify analytics under the same\n * top level domain.\n */\nexport function sendShopifyAnalytics(\n event: ShopifyAnalytics,\n shopDomain?: string\n): Promise<void> {\n const {eventName, payload} = event;\n if (!payload.hasUserConsent) return Promise.resolve();\n\n let events: ShopifyMonorailEvent[] = [];\n\n if (eventName === AnalyticsEventName.PAGE_VIEW) {\n const pageViewPayload = payload as ShopifyPageViewPayload;\n events = events.concat(\n trekkiePageView(pageViewPayload),\n customerPageView(pageViewPayload)\n );\n } else if (eventName === AnalyticsEventName.ADD_TO_CART) {\n events = events.concat(\n customerAddToCart(payload as ShopifyAddToCartPayload)\n );\n }\n\n if (events.length) {\n return sendToShopify(events, shopDomain);\n } else {\n return Promise.resolve();\n }\n}\n\ntype MonorailResponse = {\n status: number;\n message: string;\n};\n\nconst ERROR_MESSAGE = 'sendShopifyAnalytics request is unsuccessful';\n\nfunction sendToShopify(\n events: ShopifyMonorailEvent[],\n shopDomain?: string\n): Promise<void> {\n const eventsToBeSent = {\n events,\n metadata: {\n event_sent_at_ms: Date.now(),\n },\n };\n\n try {\n return fetch(\n shopDomain\n ? `https://${shopDomain}/.well-known/shopify/monorail/unstable/produce_batch`\n : 'https://monorail-edge.shopifysvc.com/unstable/produce_batch',\n {\n method: 'post',\n headers: {\n 'content-type': 'text/plain',\n },\n body: JSON.stringify(eventsToBeSent),\n }\n )\n .then((response) => {\n if (!response.ok) {\n throw new Error('Response failed');\n }\n return response.text();\n })\n .then((data) => {\n if (data) {\n const jsonResponse = JSON.parse(data);\n jsonResponse.result.forEach((eventResponse: MonorailResponse) => {\n if (eventResponse.status !== 200) {\n console.error(ERROR_MESSAGE, '\\n\\n', eventResponse.message);\n }\n });\n }\n })\n .catch((err) => {\n console.error(ERROR_MESSAGE, err);\n if (__HYDROGEN_DEV__) {\n throw new Error(ERROR_MESSAGE);\n }\n });\n } catch (error) {\n // Do nothing\n return Promise.resolve();\n }\n}\n\nexport function getClientBrowserParameters(): ClientBrowserParameters {\n if (errorIfServer('getClientBrowserParameters')) {\n return {\n uniqueToken: '',\n visitToken: '',\n url: '',\n path: '',\n search: '',\n referrer: '',\n title: '',\n userAgent: '',\n navigationType: '',\n navigationApi: '',\n };\n }\n\n const [navigationType, navigationApi] = getNavigationType();\n const cookies = getShopifyCookies(document.cookie);\n\n return {\n uniqueToken: cookies[SHOPIFY_Y],\n visitToken: cookies[SHOPIFY_S],\n url: location.href,\n path: location.pathname,\n search: location.search,\n referrer: document.referrer,\n title: document.title,\n userAgent: navigator.userAgent,\n navigationType,\n navigationApi,\n };\n}\n\nfunction getNavigationTypeExperimental(): string | undefined {\n try {\n const navigationEntries =\n performance?.getEntriesByType &&\n performance?.getEntriesByType('navigation');\n\n if (navigationEntries && navigationEntries[0]) {\n // https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigationTiming\n const rawType = (\n window.performance.getEntriesByType(\n 'navigation'\n )[0] as PerformanceNavigationTiming\n )['type'];\n const navType = rawType && rawType.toString();\n\n return navType;\n }\n } catch (err) {\n // Do nothing\n }\n return undefined;\n}\n\nfunction getNavigationTypeLegacy(): string | undefined {\n try {\n if (\n PerformanceNavigation &&\n performance?.navigation?.type !== null &&\n performance?.navigation?.type !== undefined\n ) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Performance/navigation\n const rawType = performance.navigation.type;\n switch (rawType) {\n case PerformanceNavigation.TYPE_NAVIGATE:\n return 'navigate';\n break;\n case PerformanceNavigation.TYPE_RELOAD:\n return 'reload';\n break;\n case PerformanceNavigation.TYPE_BACK_FORWARD:\n return 'back_forward';\n break;\n default:\n return `unknown: ${rawType}`;\n }\n }\n } catch (err) {\n // do nothing\n }\n return undefined;\n}\n\nfunction getNavigationType(): [string, string] {\n try {\n let navApi = 'PerformanceNavigationTiming';\n let navType = getNavigationTypeExperimental();\n if (!navType) {\n navType = getNavigationTypeLegacy();\n navApi = 'performance.navigation';\n }\n if (navType) {\n return [navType, navApi];\n } else {\n return ['unknown', 'unknown'];\n }\n } catch (err) {\n // do nothing\n }\n return ['error', 'error'];\n}\n"],"names":["AnalyticsEventName","trekkiePageView","customerPageView","customerAddToCart","errorIfServer","getShopifyCookies","SHOPIFY_Y","SHOPIFY_S"],"mappings":"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"}