@envive-ai/react-hooks 0.1.4 → 0.1.6

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 (488) hide show
  1. package/dist/amplitudeContext-CHzas7Cf.d.cts +52 -0
  2. package/dist/amplitudeContext-D-7fmVh1.cjs +356 -0
  3. package/dist/amplitudeContext-hY3caPC6.js +322 -0
  4. package/dist/amplitudeContext-tJ4y-SzX.d.ts +52 -0
  5. package/dist/api-DjeZXxl_.js +207 -0
  6. package/dist/api-_JaUnIUj.cjs +292 -0
  7. package/dist/app-CjsQ2_n-.js +132 -0
  8. package/dist/app-CnKRZ9RW.cjs +178 -0
  9. package/dist/application/models/graphql/index.cjs +3 -12
  10. package/dist/application/models/graphql/index.d.cts +1 -1
  11. package/dist/application/models/graphql/index.d.ts +1 -1
  12. package/dist/application/models/graphql/index.js +1 -10
  13. package/dist/application/models/guards/api/index.cjs +1 -2
  14. package/dist/application/models/guards/api/index.d.cts +2 -2
  15. package/dist/application/models/guards/api/index.d.ts +2 -2
  16. package/dist/application/models/guards/api/index.js +1 -2
  17. package/dist/application/models/index.cjs +48 -54
  18. package/dist/application/models/index.d.cts +7 -9
  19. package/dist/application/models/index.d.ts +7 -9
  20. package/dist/application/models/index.js +7 -11
  21. package/dist/application/models/utilityTypes/index.cjs +1 -1
  22. package/dist/application/models/utilityTypes/index.d.cts +1 -1
  23. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  24. package/dist/application/models/utilityTypes/index.js +1 -1
  25. package/dist/application/models/variantInfo/index.cjs +1 -1
  26. package/dist/application/models/variantInfo/index.d.cts +1 -1
  27. package/dist/application/models/variantInfo/index.d.ts +1 -1
  28. package/dist/application/models/variantInfo/index.js +1 -1
  29. package/dist/application/utils/index.cjs +40 -37
  30. package/dist/application/utils/index.d.cts +18 -14
  31. package/dist/application/utils/index.d.ts +17 -13
  32. package/dist/application/utils/index.js +13 -10
  33. package/dist/{atomStore-JwGb7pcy.cjs → atomStore-B4jIaDPd.cjs} +1 -1
  34. package/dist/{atomStore-B1cgmbP0.js → atomStore-D8pjE1vL.js} +1 -1
  35. package/dist/atoms/app/index.cjs +14 -16
  36. package/dist/atoms/app/index.d.cts +20 -19
  37. package/dist/atoms/app/index.d.ts +20 -19
  38. package/dist/atoms/app/index.js +10 -11
  39. package/dist/atoms/atomStore/index.cjs +2 -1
  40. package/dist/atoms/atomStore/index.d.cts +1 -1
  41. package/dist/atoms/atomStore/index.js +2 -1
  42. package/dist/atoms/chat/index.cjs +44 -40
  43. package/dist/atoms/chat/index.d.cts +35 -36
  44. package/dist/atoms/chat/index.d.ts +35 -36
  45. package/dist/atoms/chat/index.js +14 -10
  46. package/dist/atoms/globalSearch/index.cjs +1 -1
  47. package/dist/atoms/globalSearch/index.d.cts +5 -5
  48. package/dist/atoms/globalSearch/index.d.ts +5 -5
  49. package/dist/atoms/globalSearch/index.js +1 -1
  50. package/dist/atoms/org/index.cjs +26 -37
  51. package/dist/atoms/org/index.d.cts +37 -47
  52. package/dist/atoms/org/index.d.ts +37 -47
  53. package/dist/atoms/org/index.js +11 -11
  54. package/dist/atoms/search/index.cjs +47 -41
  55. package/dist/atoms/search/index.d.cts +7 -9
  56. package/dist/atoms/search/index.d.ts +7 -9
  57. package/dist/atoms/search/index.js +16 -10
  58. package/dist/bandolier-DYEz4-8C.js +1229 -0
  59. package/dist/bandolier-o_-xrbOV.cjs +1229 -0
  60. package/dist/carpe-CsG5jCcl.cjs +607 -0
  61. package/dist/carpe-DONk00bZ.js +605 -0
  62. package/dist/cdnUtils-32v8bDX9.cjs +16 -0
  63. package/dist/cdnUtils-E4tLBt2g.js +11 -0
  64. package/dist/{chat-BgONoYU7.cjs → chat-BubCW1as.cjs} +1 -1
  65. package/dist/chat-CO7cRkaq.cjs +506 -0
  66. package/dist/{chat-CLJ4NWcN.js → chat-CV6MXeID.js} +1 -1
  67. package/dist/chat-hcRc4RRd.js +285 -0
  68. package/dist/{components-CV1fhAkj.js → components-B4T3Uzth.js} +1 -1
  69. package/dist/{components-BKZbet67.cjs → components-Cw9WjA6g.cjs} +1 -1
  70. package/dist/config/locators/components/chat/index.cjs +1 -1
  71. package/dist/config/locators/components/chat/index.d.cts +1 -1
  72. package/dist/config/locators/components/chat/index.d.ts +1 -1
  73. package/dist/config/locators/components/chat/index.js +1 -1
  74. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  75. package/dist/config/locators/components/index.cjs +1 -1
  76. package/dist/config/locators/components/index.d.cts +1 -1
  77. package/dist/config/locators/components/index.d.ts +1 -1
  78. package/dist/config/locators/components/index.js +1 -1
  79. package/dist/config/locators/index.cjs +4 -4
  80. package/dist/config/locators/index.d.cts +2 -2
  81. package/dist/config/locators/index.d.ts +3 -3
  82. package/dist/config/locators/index.js +4 -4
  83. package/dist/contexts/index.cjs +45 -14
  84. package/dist/contexts/index.d.cts +10 -78
  85. package/dist/contexts/index.d.ts +10 -78
  86. package/dist/contexts/index.js +22 -11
  87. package/dist/contexts-B4ihTBsV.cjs +2980 -0
  88. package/dist/contexts-DGlr7M1o.js +2596 -0
  89. package/dist/coterie-CKB93qfz.cjs +239 -0
  90. package/dist/{coterie-yQ-_JXSw.cjs → coterie-DHcj2fRE.js} +64 -65
  91. package/dist/{custservice-types-C83itZmy.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
  92. package/dist/{custservice-types-DPQ-4TI6.js → custservice-types-mnIunabv.js} +1 -1
  93. package/dist/default-BnB4p0Se.cjs +234 -0
  94. package/dist/default-D6f5Dyt7.js +199 -0
  95. package/dist/default-ZKkE5zT4.cjs +4 -0
  96. package/dist/default-legGZJwI.js +4 -0
  97. package/dist/{divIds-DEL_-qU0.cjs → divIds-2dJlU3z8.cjs} +1 -15
  98. package/dist/{divIds-CWkntTsx.js → divIds-BUrN2vY-.js} +2 -4
  99. package/dist/dreamlandBaby-BiRYYFav.js +346 -0
  100. package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
  101. package/dist/{embedded-C5uJqmuD.js → embedded-BJLWIriJ.js} +1 -1
  102. package/dist/{embedded--2L0F4b5.cjs → embedded-Dl79TJLC.cjs} +1 -1
  103. package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
  104. package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
  105. package/dist/enviveConfig-BccuzS2a.cjs +240 -0
  106. package/dist/enviveConfig-CzhTz8Aa.js +152 -0
  107. package/dist/events/index.cjs +1 -1
  108. package/dist/events/index.d.cts +1 -1
  109. package/dist/events/index.js +1 -1
  110. package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
  111. package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
  112. package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
  113. package/dist/fiveCbd-Dz2NouOF.js +613 -0
  114. package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
  115. package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
  116. package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
  117. package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
  118. package/dist/graphql-BNW60InJ.cjs +128 -0
  119. package/dist/graphql-CjB8wHzm.js +74 -0
  120. package/dist/graphqlConfig-CYt6tWII.js +30 -0
  121. package/dist/graphqlConfig-DicykC-o.cjs +61 -0
  122. package/dist/greenpan-B_EbPkSP.js +397 -0
  123. package/dist/greenpan-kPE4fJgd.cjs +397 -0
  124. package/dist/grooveLife-Ckuir319.js +342 -0
  125. package/dist/grooveLife-DKSEQp1F.cjs +342 -0
  126. package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
  127. package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
  128. package/dist/hooks/index.cjs +40 -16
  129. package/dist/hooks/index.d.cts +122 -95
  130. package/dist/hooks/index.d.ts +122 -95
  131. package/dist/hooks/index.js +22 -11
  132. package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
  133. package/dist/{index-jBATkcc_.d.cts → index-BDPWBU3h.d.cts} +1 -1
  134. package/dist/index-BMPtlgac.d.ts +191 -0
  135. package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
  136. package/dist/{index-C62lPpy4.d.cts → index-Byb45OPg.d.cts} +1 -1
  137. package/dist/{index-DPx8s5YH.d.ts → index-C6KdON7d.d.ts} +1 -1
  138. package/dist/index-C7pGDl1A.d.ts +1609 -0
  139. package/dist/{index-CYtsPztZ.d.cts → index-C9lgsCWp.d.cts} +32 -32
  140. package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
  141. package/dist/{index-C_C0tLeD.d.ts → index-Cc-wBCn6.d.ts} +32 -32
  142. package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
  143. package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
  144. package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
  145. package/dist/{index-CExtydIH.d.ts → index-DOii3C6b.d.ts} +1 -1
  146. package/dist/index-DTu2X-YS.d.cts +1609 -0
  147. package/dist/index-OEifcBsm.d.cts +191 -0
  148. package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
  149. package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
  150. package/dist/interceptors/index.cjs +2 -12
  151. package/dist/interceptors/index.d.cts +8 -13
  152. package/dist/interceptors/index.d.ts +8 -13
  153. package/dist/interceptors/index.js +2 -11
  154. package/dist/jackArcher-B39OEIj6.cjs +727 -0
  155. package/dist/{jackArcher-CXf_IAmC.js → jackArcher-BwkWGybC.js} +24 -25
  156. package/dist/jordanCraig-CxRH_jLi.js +1786 -0
  157. package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
  158. package/dist/kindredBravely-D78VwL20.cjs +490 -0
  159. package/dist/kindredBravely-DQDpAzdl.js +490 -0
  160. package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
  161. package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
  162. package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
  163. package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
  164. package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
  165. package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
  166. package/dist/longevityrx-DdV3v26F.cjs +320 -0
  167. package/dist/longevityrx-DfPDfvAt.js +320 -0
  168. package/dist/lookOptic-DgXFGBPP.cjs +282 -0
  169. package/dist/{lookOptic-BGhU4910.js → lookOptic-FgVW1afF.js} +19 -20
  170. package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
  171. package/dist/{mantraBrand-DrqG9uqO.js → mantraBrand-uV8HCDR8.js} +22 -23
  172. package/dist/medterra-BtDpr1Hw.cjs +583 -0
  173. package/dist/medterra-DgzE7-mj.js +583 -0
  174. package/dist/modells-CJjsxOIR.js +484 -0
  175. package/dist/modells-Ck5KbRFj.cjs +484 -0
  176. package/dist/models-BkXg5eIP.cjs +1534 -0
  177. package/dist/models-UZ6HszfZ.js +1281 -0
  178. package/dist/{nodeSelector-BiCDowlK.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
  179. package/dist/{nodeSelector-B3bPtEjX.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
  180. package/dist/org-C2RrBVQR.cjs +81 -0
  181. package/dist/org-xMytX--e.js +38 -0
  182. package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
  183. package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
  184. package/dist/pressedFloral-Bteoboms.js +661 -0
  185. package/dist/pressedFloral-CexgV-xy.cjs +661 -0
  186. package/dist/search-BMOAmrmY.js +459 -0
  187. package/dist/search-Df0Ifneg.cjs +672 -0
  188. package/dist/{search-filter-types-BNTLVXqQ.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
  189. package/dist/{search-filter-types-DkmH1TxJ.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
  190. package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
  191. package/dist/skinPerfection-BlvcEcUE.js +334 -0
  192. package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
  193. package/dist/snapSupplements-kcsPAOm9.js +285 -0
  194. package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
  195. package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
  196. package/dist/spanx-B4WFA_rI.js +661 -0
  197. package/dist/spanx-BWoE4F8b.cjs +663 -0
  198. package/dist/spanxStaging-BOrOjhXn.js +845 -0
  199. package/dist/spanxStaging-BfdfIug4.cjs +848 -0
  200. package/dist/{suggestionBarV2-types-CwOXzIKq.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
  201. package/dist/{suggestionBarV2-types-Dc4-zJlV.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
  202. package/dist/supergoop-22dd5_BS.js +323 -0
  203. package/dist/supergoop-B-a4cku2.cjs +323 -0
  204. package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
  205. package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
  206. package/dist/types/index.cjs +2 -2
  207. package/dist/types/index.d.cts +2 -2
  208. package/dist/types/index.d.ts +2 -2
  209. package/dist/types/index.js +2 -2
  210. package/dist/types--pr1GQQx.js +154 -0
  211. package/dist/types-BVSyY3Hk.cjs +196 -0
  212. package/dist/{uniqueVintage-Cui74mlJ.js → uniqueVintage-CJXiNNe7.js} +19 -20
  213. package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
  214. package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
  215. package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
  216. package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
  217. package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
  218. package/dist/utils-C9ZSCx12.js +888 -0
  219. package/dist/utils-D5HO61hG.cjs +1016 -0
  220. package/dist/variantInfo-DbVxA1yE.js +1 -0
  221. package/dist/variantInfo-orXoPBCU.cjs +0 -0
  222. package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
  223. package/dist/venaCbd-CanovPS_.js +365 -0
  224. package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
  225. package/dist/{westonJonBoucher-C95EuCl-.js → westonJonBoucher-BUu1_wP1.js} +19 -20
  226. package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
  227. package/dist/{wineEnthusiast-DeTFY8Gm.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
  228. package/dist/wolfMattress-D9Mjq-HP.js +372 -0
  229. package/dist/wolfMattress-JssghhC-.cjs +372 -0
  230. package/dist/wolfTactical-C6exYhL7.cjs +349 -0
  231. package/dist/wolfTactical-CnV3KQdI.js +349 -0
  232. package/package.json +101 -19
  233. package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
  234. package/src/application/models/colorsConfig.ts +18 -18
  235. package/src/application/models/frontendConfig.ts +3 -3
  236. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
  237. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
  238. package/src/application/models/index.ts +0 -2
  239. package/src/application/models/localStorageEventListener.ts +2 -2
  240. package/src/application/models/supportedOrgs.ts +1 -1
  241. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  242. package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
  243. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
  244. package/src/application/utils/analyticsUtils.ts +53 -22
  245. package/src/application/utils/cdnUtils.ts +11 -0
  246. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
  247. package/src/atoms/app/index.ts +7 -17
  248. package/src/atoms/app/variant.ts +13 -4
  249. package/src/atoms/chat/chatState.ts +28 -18
  250. package/src/atoms/chat/messageQueue.ts +36 -5
  251. package/src/atoms/chat/replies.ts +45 -37
  252. package/src/atoms/envive/enviveConfig.ts +10 -6
  253. package/src/atoms/org/graphqlConfig.ts +21 -4
  254. package/src/atoms/org/index.ts +7 -7
  255. package/src/atoms/org/newOrgConfigAtom.ts +8 -0
  256. package/src/atoms/org/orgPageConfig.ts +6 -5
  257. package/src/atoms/search/chatSearch.ts +11 -5
  258. package/src/atoms/search/searchAPI.ts +68 -48
  259. package/src/atoms/search/searchServiceAdapter.ts +25 -0
  260. package/src/contexts/amplitudeContext.tsx +466 -0
  261. package/src/contexts/cdnContext.tsx +48 -0
  262. package/src/contexts/chatContext.tsx +15 -12
  263. package/src/contexts/enviveConfigContext.tsx +22 -17
  264. package/src/contexts/enviveCssContext.tsx +34 -5
  265. package/src/contexts/featureFlagContext.tsx +193 -0
  266. package/src/contexts/featureFlagServiceContext.tsx +87 -0
  267. package/src/contexts/graphqlContext.tsx +165 -0
  268. package/src/contexts/index.ts +13 -3
  269. package/src/contexts/localStorageContext.tsx +159 -0
  270. package/src/contexts/newOrgConfigContext.tsx +104 -0
  271. package/src/contexts/orgConfigContext.tsx +92 -92
  272. package/src/contexts/searchContext.tsx +187 -0
  273. package/src/contexts/sessionStorageContext.tsx +80 -0
  274. package/src/contexts/shopifyUrlContext.tsx +97 -0
  275. package/src/contexts/types.ts +12 -8
  276. package/src/contexts/userIdentityContext.tsx +197 -0
  277. package/src/events/registerAnalyticsListeners.ts +32 -38
  278. package/src/hooks/index.ts +10 -6
  279. package/src/hooks/useAmplitudeOperations.ts +35 -0
  280. package/src/hooks/useAppDetails.ts +49 -0
  281. package/src/hooks/useCdnOperations.ts +16 -0
  282. package/src/hooks/useChatToggle.ts +5 -4
  283. package/src/hooks/useChatToggleAnalytics.ts +15 -0
  284. package/src/hooks/useGraphQLConfig.ts +63 -0
  285. package/src/hooks/useIdentifyUser.ts +33 -0
  286. package/src/hooks/useImageResolver.ts +18 -10
  287. package/src/hooks/useLocalStorageOperations.ts +92 -0
  288. package/src/hooks/useNewOrgConfig.ts +7 -0
  289. package/src/hooks/useSearch.tsx +21 -18
  290. package/src/hooks/useSearchOperations.ts +97 -0
  291. package/src/hooks/useSessionStorageOperations.ts +28 -0
  292. package/src/hooks/useShopifyUrlOperations.ts +45 -0
  293. package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
  294. package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
  295. package/src/interceptors/index.ts +0 -1
  296. package/src/interceptors/useMessageInterceptor.ts +5 -8
  297. package/src/merchants/bandolier/bandolier.ts +10 -28
  298. package/src/merchants/carpe/carpe.ts +5 -8
  299. package/src/merchants/coterie/coterie.ts +3 -6
  300. package/src/merchants/default.ts +73 -70
  301. package/src/merchants/domInsertion.ts +30 -0
  302. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
  303. package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
  304. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
  305. package/src/merchants/greenpan/greenpan.ts +6 -12
  306. package/src/merchants/gridInsertion.ts +19 -0
  307. package/src/merchants/grooveLife/grooveLife.ts +13 -7
  308. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
  309. package/src/merchants/jackArcher/jackArcher.ts +26 -11
  310. package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
  311. package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
  312. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
  313. package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
  314. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
  315. package/src/merchants/longevityrx/longevityrx.ts +14 -8
  316. package/src/merchants/lookOptic/lookOptic.ts +6 -6
  317. package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
  318. package/src/merchants/medterra/medterra.ts +14 -11
  319. package/src/merchants/modells/modells.ts +6 -9
  320. package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
  321. package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
  322. package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
  323. package/src/merchants/spanx/spanx.ts +6 -6
  324. package/src/merchants/spanx/spanxStaging.ts +6 -12
  325. package/src/merchants/supergoop/supergoop.ts +11 -12
  326. package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
  327. package/src/merchants/venaCbd/venaCbd.ts +6 -9
  328. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
  329. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
  330. package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
  331. package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
  332. package/src/types/config-versions.ts +6 -0
  333. package/src/types.ts +0 -53
  334. package/dist/adapters/amplitude/index.cjs +0 -14
  335. package/dist/adapters/amplitude/index.d.cts +0 -6
  336. package/dist/adapters/amplitude/index.d.ts +0 -6
  337. package/dist/adapters/amplitude/index.js +0 -12
  338. package/dist/api-B2euFL-5.cjs +0 -269
  339. package/dist/api-XRr_lAG6.js +0 -190
  340. package/dist/application/config/index.cjs +0 -43
  341. package/dist/application/config/index.d.cts +0 -15
  342. package/dist/application/config/index.d.ts +0 -15
  343. package/dist/application/config/index.js +0 -41
  344. package/dist/application/service/customerService/index.cjs +0 -4
  345. package/dist/application/service/customerService/index.d.cts +0 -3
  346. package/dist/application/service/customerService/index.d.ts +0 -3
  347. package/dist/application/service/customerService/index.js +0 -4
  348. package/dist/application/service/index.cjs +0 -41
  349. package/dist/application/service/index.d.cts +0 -399
  350. package/dist/application/service/index.d.ts +0 -399
  351. package/dist/application/service/index.js +0 -12
  352. package/dist/bandolier-B76-OE75.cjs +0 -1230
  353. package/dist/bandolier-DRn_x1g1.js +0 -1230
  354. package/dist/carpe-kHi4RLB5.cjs +0 -608
  355. package/dist/carpe-qrSU99gq.js +0 -606
  356. package/dist/contexts-CQDwe3rK.cjs +0 -14333
  357. package/dist/contexts-e2sM-B9g.js +0 -12919
  358. package/dist/coterie-mMirPcHP.js +0 -240
  359. package/dist/customerService-BG1uNZZ1.cjs +0 -36
  360. package/dist/customerService-BHQRnLhC.js +0 -23
  361. package/dist/default-8Jfv8ehQ.cjs +0 -199
  362. package/dist/default-C8PQf-38.js +0 -176
  363. package/dist/default-LukSiCz1.js +0 -4
  364. package/dist/default-rJSJ887P.cjs +0 -4
  365. package/dist/dreamlandBaby-DHltv12Z.cjs +0 -347
  366. package/dist/dreamlandBaby-cG0HM9bt.js +0 -347
  367. package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
  368. package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
  369. package/dist/fiveCbd-Cvnwh03g.cjs +0 -614
  370. package/dist/fiveCbd-DhYMlsf9.js +0 -614
  371. package/dist/forLoveAndLemons-C8DuUexW.js +0 -666
  372. package/dist/forLoveAndLemons-DR6a1zjJ.cjs +0 -668
  373. package/dist/greenpan-B4Pu65kV.js +0 -398
  374. package/dist/greenpan-BL5p6j7f.cjs +0 -398
  375. package/dist/grooveLife-DjKWHoN3.cjs +0 -343
  376. package/dist/grooveLife-JK0TyaPz.js +0 -343
  377. package/dist/homegrownCannabis-DxqSDkmS.js +0 -411
  378. package/dist/homegrownCannabis-ZnfCqW-m.cjs +0 -411
  379. package/dist/index-BfuO9b0Q.d.ts +0 -749
  380. package/dist/index-CNsGWfS6.d.cts +0 -749
  381. package/dist/index-DFL1dIT_.d.ts +0 -7
  382. package/dist/index-MFbPQ8Ji.d.ts +0 -95
  383. package/dist/index-VSFakgAI.d.cts +0 -95
  384. package/dist/index-zZjcds15.d.cts +0 -7
  385. package/dist/jackArcher-mGkojXek.cjs +0 -728
  386. package/dist/jordanCraig-BvCvPRoR.js +0 -1787
  387. package/dist/jordanCraig-Dv8pVCiS.cjs +0 -1787
  388. package/dist/kindredBravely-UQP7wiNu.cjs +0 -491
  389. package/dist/kindredBravely-X8F_LNph.js +0 -491
  390. package/dist/kutFromTheKloth-BhYKk3CN.cjs +0 -370
  391. package/dist/kutFromTheKloth-D1xsTSJr.js +0 -370
  392. package/dist/larryAndSerges-1411NuZa.cjs +0 -262
  393. package/dist/larryAndSerges-DVIRLItu.js +0 -262
  394. package/dist/leapsAndRebounds-BJ8mwr33.js +0 -361
  395. package/dist/leapsAndRebounds-UcP9EJVO.cjs +0 -361
  396. package/dist/logger-Dln20ans.cjs +0 -26
  397. package/dist/logger-pdEEY8T2.js +0 -20
  398. package/dist/longevityrx-BFSv9GF5.cjs +0 -321
  399. package/dist/longevityrx-Cp6wleWr.js +0 -321
  400. package/dist/lookOptic-KieSqskd.cjs +0 -283
  401. package/dist/mantraBrand-CHQw-0nw.cjs +0 -751
  402. package/dist/medterra-CLG6Co1C.cjs +0 -584
  403. package/dist/medterra-D8ZX9NZC.js +0 -584
  404. package/dist/modells-BzyPwN2m.cjs +0 -485
  405. package/dist/modells-CAfqOCW4.js +0 -485
  406. package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
  407. package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
  408. package/dist/pressedFloral-DULBuQwR.cjs +0 -662
  409. package/dist/pressedFloral-Dp-7Fk3S.js +0 -662
  410. package/dist/skinPerfection-BxuYCeJX.js +0 -335
  411. package/dist/skinPerfection-Cd3XZ6By.cjs +0 -335
  412. package/dist/snapSupplements-Bf6htPM0.js +0 -286
  413. package/dist/snapSupplements-ZFnXyMuZ.cjs +0 -286
  414. package/dist/spanx-CwDPQaGj.js +0 -662
  415. package/dist/spanx-Cyd4qDlK.cjs +0 -664
  416. package/dist/spanxStaging-D43nyAGy.js +0 -846
  417. package/dist/spanxStaging-ijbYnHzr.cjs +0 -849
  418. package/dist/supergoop-BnbFG7hm.cjs +0 -338
  419. package/dist/supergoop-CY043wIg.js +0 -336
  420. package/dist/types-BF_CJeck.js +0 -177
  421. package/dist/types-CD4LFta-.d.cts +0 -33
  422. package/dist/types-CNH4sfF-.cjs +0 -231
  423. package/dist/types-DBdI0j89.d.ts +0 -33
  424. package/dist/uniqueVintage-R2Jcu1y1.cjs +0 -1214
  425. package/dist/variant-CKVRF2-W.d.ts +0 -13
  426. package/dist/variant-raYuOP4L.d.cts +0 -13
  427. package/dist/venaCbd-o5_vOp4e.js +0 -366
  428. package/dist/venaCbd-r-IxEVc1.cjs +0 -366
  429. package/dist/westonJonBoucher-DjGEW3ZB.cjs +0 -423
  430. package/dist/wineEnthusiast-DvfcV5B3.cjs +0 -941
  431. package/dist/wolfMattress-6xPfOJt3.js +0 -373
  432. package/dist/wolfMattress-BjGnGKjP.cjs +0 -373
  433. package/dist/wolfTactical-Bi3WZu0m.cjs +0 -350
  434. package/dist/wolfTactical-C_F9-oPX.js +0 -350
  435. package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
  436. package/src/adapters/amplitude/index.ts +0 -2
  437. package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
  438. package/src/adapters/spiffy/commerce/graphql.ts +0 -219
  439. package/src/application/config/generalStaticConfig.ts +0 -40
  440. package/src/application/config/index.ts +0 -1
  441. package/src/application/models/domMutationContinuation.ts +0 -7
  442. package/src/application/models/domObservationStrategy.ts +0 -9
  443. package/src/application/service/cachingService.ts +0 -84
  444. package/src/application/service/cdnService.ts +0 -20
  445. package/src/application/service/customerService/index.ts +0 -8
  446. package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
  447. package/src/application/service/domMutationObserver.ts +0 -320
  448. package/src/application/service/domMutations/GridInsertionService.ts +0 -123
  449. package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
  450. package/src/application/service/domMutations/domInsertionService.ts +0 -90
  451. package/src/application/service/domMutations/domMutationListener.ts +0 -15
  452. package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
  453. package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
  454. package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
  455. package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
  456. package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
  457. package/src/application/service/featureFlagService.ts +0 -130
  458. package/src/application/service/index.ts +0 -31
  459. package/src/application/service/kustomerIntegrationService.ts +0 -111
  460. package/src/application/service/localStorageService.ts +0 -77
  461. package/src/application/service/pageVariantService.ts +0 -866
  462. package/src/application/service/searchService.ts +0 -147
  463. package/src/application/service/sessionStorageService.ts +0 -27
  464. package/src/application/service/shopifyUrlService.ts +0 -63
  465. package/src/application/service/userIdentityService.ts +0 -114
  466. package/src/application/service/windowChatToggleService.ts +0 -80
  467. package/src/application/service/windowDataLayerService.ts +0 -181
  468. package/src/application/service/windowFrontendConfigService.ts +0 -129
  469. package/src/atoms/org/merchantCss.ts +0 -158
  470. package/src/atoms/org/org.ts +0 -291
  471. package/src/atoms/org/orgUIConfig.ts +0 -142
  472. package/src/enabled-features.ts +0 -83
  473. package/src/hooks/useDynamicVariants.ts +0 -210
  474. package/src/hooks/useFileUpload.ts +0 -63
  475. package/src/hooks/useHideElements.ts +0 -82
  476. package/src/hooks/useHorizontalScrollAnimation.ts +0 -115
  477. package/src/hooks/useReducedMotionWithOverride.ts +0 -15
  478. package/src/hooks/useSnapControl.ts +0 -155
  479. package/src/interceptors/useFormEscalation.ts +0 -57
  480. /package/dist/{variantInfo-CzhR5W6h.js → atomStore-CZnUUsrr.js} +0 -0
  481. /package/dist/{variantInfo-CNRTY0gH.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
  482. /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
  483. /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
  484. /package/dist/{locators-Dc5ZT0aF.js → utilityTypes-8sETsYPk.js} +0 -0
  485. /package/dist/{locators-lQMJj830.cjs → utilityTypes-COShxVir.cjs} +0 -0
  486. /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
  487. /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
  488. /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
@@ -1,477 +0,0 @@
1
- import Logger from "src/application/logging/logger";
2
- import { createInstance } from "@amplitude/analytics-browser";
3
- // import { sessionReplayPlugin } from '@amplitude/plugin-session-replay-browser';
4
- import { FeatureGates } from "src/application/models/featureGates";
5
- import { OrgConfig } from "src/application/models/api/orgConfigResults";
6
- import { OrgShortName } from "src/application/models";
7
- import { FeatureFlagService } from "src/application/service/featureFlagService";
8
- import { envAtom, userIdAtom } from "src/atoms/app";
9
- import { getAtomStore } from "src/atoms/atomStore/atomStore";
10
- import { featureFlagServiceAtom, orgConfigAtom } from "src/atoms/org/org";
11
- import { WindowDataLayerService } from "src/application/service/windowDataLayerService";
12
- import { orgAnalyticsGoogleAnalyticsConfigAtom } from "src/atoms/org/orgAnalyticsConfig";
13
- import { OrgAnalyticsGoogleAnalyticsConfig } from "src/application/models/api/orgAnalyticsConfig";
14
- import {
15
- LocalStorageKeys,
16
- LocalStorageService,
17
- } from "src/application/service/localStorageService";
18
- import { StubAmplitudeAdapter } from "src/adapters/amplitude";
19
- import { ContextSourceEnum } from "@spiffy-ai/commerce-api-client";
20
-
21
- import type {
22
- BrowserClient,
23
- EnrichmentPlugin,
24
- Event,
25
- ServerZoneType,
26
- } from "@amplitude/analytics-types";
27
- import { EnabledFeatures } from "src/enabled-features";
28
- import { EventsDispatcher, SpiffyEvent } from "src/events";
29
- import {
30
- amplitudeApiKeyAtom,
31
- contextSourceAtom,
32
- dataResidencyAtom,
33
- identifyingPrefixAtom,
34
- } from "src/atoms/envive/enviveConfig";
35
-
36
- export enum SpiffyMetricsEventName {
37
- BundleLoaded = "Bundle Loaded",
38
- ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
39
- ChatFloatingButtonVisible = "Chat Floating Button Visible",
40
- ChatComponentVisible = "Chat Component Visible",
41
- ChatComponentExpanded = "Chat Component Expanded",
42
- ChatComponentCollapsed = "Chat Component Collapsed",
43
- ChatUserMessageInput = "Chat User Message Input",
44
- ChatSuggestionClicked = "Chat Suggestion Clicked",
45
- ChatAssistantResponse = "Chat Assistant Response",
46
- ProductCardClicked = "Product Card Clicked",
47
- ProductReviewCardClicked = "Product Review Card Clicked",
48
- AddToCartClicked = "Add to Cart Clicked",
49
- PromptCardClicked = "Prompt Card Clicked",
50
- SupportedEvent = "Supported Event",
51
- SearchBackToResponseClicked = "Search Back to Response Clicked",
52
- PerformanceMetrics = "Performance Metrics",
53
- SearchBarClicked = "Search Bar Clicked",
54
- OrderLookupStarted = "Order Lookup Started",
55
- OrderLookupFormSubmitted = "Order Lookup Form Submitted",
56
- SearchComponentVisible = "Search Component Visible",
57
- GlobalSearchPromptClicked = "Global Search Prompt Clicked", // This is the scrolling list of suggestion buttons in global search
58
- SearchInputStarted = "Search Input Started",
59
- SearchQuerySubmitted = "Search Query Submitted",
60
- // SearchAutocompleteViewed = 'Search Autocomplete Viewed', // TODO: add this when autocomplete is added
61
- // SearchAutocompleteClicked = 'Search Autocomplete Clicked', // TODO: add this when autocomplete is added
62
- SearchResultsViewed = "Search Results Viewed",
63
- SearchTimeToFirstClick = "Search Time to First Click",
64
- SearchZeroResultsRate = "Search Zero Results Rate",
65
- SearchFilterClicked = "Search Filter Clicked",
66
- SearchSortClicked = "Search Sort Clicked",
67
- }
68
-
69
- class AmplitudeAdapter {
70
- private underlyingAmplitudeClient: BrowserClient | undefined = undefined;
71
-
72
- private internalEventTrackingEnrichment: EnrichmentPlugin | undefined =
73
- undefined;
74
-
75
- private supplementalDefaultProps: Record<string, unknown>;
76
-
77
- constructor(
78
- private readonly userId: string,
79
- private readonly orgConfig: OrgConfig,
80
- private readonly featureFlagService: FeatureFlagService,
81
- private readonly orgGaConfig?: OrgAnalyticsGoogleAnalyticsConfig
82
- ) {
83
- this.supplementalDefaultProps = {};
84
- }
85
-
86
- init(): void {
87
- this.underlyingAmplitudeClient = this.createUnderlyingClient();
88
- }
89
-
90
- getUnderlyingAmplitudeClient(): BrowserClient | undefined {
91
- return this.underlyingAmplitudeClient;
92
- }
93
-
94
- getSupplementalDefaultProps(): Record<string, unknown> {
95
- return this.supplementalDefaultProps;
96
- }
97
-
98
- setSupplementalDefaultProps(
99
- supplementalDefaultProps: Record<string, unknown>
100
- ): void {
101
- this.supplementalDefaultProps = supplementalDefaultProps;
102
- }
103
-
104
- getEventTrackingEnrichment(): EnrichmentPlugin {
105
- if (this.internalEventTrackingEnrichment !== undefined) {
106
- return this.internalEventTrackingEnrichment;
107
- }
108
-
109
- this.internalEventTrackingEnrichment = {
110
- name: "page-view-tracking-enrichment",
111
- type: "enrichment",
112
- setup: async () => undefined,
113
- execute: async (event: Event): Promise<Event> => {
114
- let enrichedEvent: Event;
115
-
116
- const eventsToEnrich = [
117
- "[Amplitude] Page Viewed",
118
- `[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`,
119
- ];
120
-
121
- if (eventsToEnrich.includes(event.event_type)) {
122
- const windowProps = window._spiffy ? { ...window._spiffy } : {};
123
-
124
- if (windowProps.publicKey) {
125
- delete windowProps.publicKey;
126
- }
127
-
128
- const globalProperties = Object.entries(windowProps).reduce<
129
- Record<string, string>
130
- >(
131
- (acc, [key, value]) => ({
132
- ...acc,
133
- [`globalProperties.${key}`]: `${value}`,
134
- }),
135
- {}
136
- );
137
-
138
- const enabledFeatures = await EnabledFeatures.get(
139
- this.orgConfig,
140
- this.featureFlagService
141
- );
142
- const enabledFeaturesProperties = Object.entries(
143
- enabledFeatures
144
- ).reduce<Record<string, string>>(
145
- (acc, [key, value]) => ({
146
- ...acc,
147
- [`enabledFeatures.${key}`]: `${value}`,
148
- }),
149
- {}
150
- );
151
-
152
- const timingProperties = {
153
- // This property can be useful to detect bias in A/B testing.
154
- //
155
- // It is a proxy metric for the value of "Started" (in Dev Tools > Network > Timing)
156
- // for the network request to send the Page Viewed event to Amplitude.
157
- //
158
- // If the value is higher for one group, visitors in that group are subject to
159
- // a higher likelihood that the page fails to send the event to Amplitude before
160
- // they navigate away, leading to relative underreporting of page views for that group.
161
- "timing.enriched_at_ms": window.performance?.now(),
162
- };
163
-
164
- enrichedEvent = {
165
- ...event,
166
- event_properties: {
167
- ...event.event_properties,
168
- ...this.getDefaultTrackingProps(),
169
- ...globalProperties,
170
- ...enabledFeaturesProperties,
171
- ...timingProperties,
172
- },
173
- };
174
- } else {
175
- enrichedEvent = event;
176
- }
177
-
178
- EventsDispatcher.dispatch(SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
179
-
180
- return enrichedEvent;
181
- },
182
- };
183
-
184
- return this.internalEventTrackingEnrichment;
185
- }
186
-
187
- amplitudeSessionReplayInit(): boolean {
188
- // TODO: enable session replay only for UV so we can triage issues with search analytics
189
- // remove when we can easily do this through AI Studio or no longer needed for UV
190
- const orgShortName = this.orgConfig.org.org.shortName;
191
- const isEnabled =
192
- orgShortName === OrgShortName.UniqueVintage &&
193
- this.featureFlagService.isClientSessionEnabled() &&
194
- this.featureFlagService.isFeatureGateEnabled(
195
- FeatureGates.IsNewFeatureEnabled
196
- );
197
- const sampleRate = 1;
198
-
199
- try {
200
- Logger.logDebug(
201
- `[spiffy-ai] amplitude session-replay initializing isEnabled=${isEnabled} sampleRate=${sampleRate}`
202
- );
203
-
204
- if (!isEnabled) {
205
- return isEnabled;
206
- }
207
-
208
- // amplitudeInstance.add(sessionReplayPlugin({ sampleRate }));
209
-
210
- return isEnabled;
211
- } catch (e) {
212
- Logger.logError(
213
- "[spiffy-ai] Error initializing amplitude session-replay",
214
- e
215
- );
216
- return false;
217
- }
218
- }
219
-
220
- createUnderlyingClient(): BrowserClient {
221
- const atomStore = getAtomStore();
222
- const amplitudeApiKey = atomStore.get(amplitudeApiKeyAtom);
223
- const dataResidency = atomStore.get(dataResidencyAtom);
224
-
225
- if (!amplitudeApiKey) {
226
- throw new Error(
227
- `amplitudeApiKey is undefined, make sure you have added a value for it in the EnviveConfigProvider`
228
- );
229
- }
230
-
231
- const currentAmplitudeInstance: BrowserClient = createInstance();
232
- const isSessionsEnabled = this.amplitudeSessionReplayInit();
233
- currentAmplitudeInstance.add(this.getEventTrackingEnrichment());
234
- currentAmplitudeInstance.init(amplitudeApiKey, this.userId, {
235
- serverZone: dataResidency as ServerZoneType,
236
- trackingOptions: {
237
- ipAddress: true,
238
- },
239
- autocapture: {
240
- // Amplitude tracks marketing attribution by default.
241
- // Browser SDK 2 captures UTM parameters, referrer information,
242
- // and click IDs as user properties.
243
- attribution: true,
244
- // Amplitude tracks page view events by default.
245
- // The default behavior sends a page view event on initialization.
246
- // The event type for this event is [Amplitude] Page Viewed.
247
- pageViews: {
248
- trackHistoryChanges: "pathOnly",
249
- },
250
- // Amplitude tracks session events by default.
251
- // A session is the period of time a user has your website open.
252
- sessions: isSessionsEnabled,
253
- // Amplitude tracks form interaction events by default.
254
- // The SDK tracks [Amplitude] Form Started when the user initially
255
- // interacts with the form element. An initial interaction can be the
256
- // first change to a text input, radio button, or dropdown.
257
- formInteractions: false,
258
- // Amplitude tracks file download events by default.
259
- // The SDK tracks [Amplitude] File Downloaded when the user clicks an anchor
260
- // or <a> tag linked to a file
261
- fileDownloads: false,
262
- },
263
- });
264
-
265
- return currentAmplitudeInstance;
266
- }
267
-
268
- getDefaultTrackingProps(): Record<string, unknown> {
269
- const atomStore = getAtomStore();
270
- const env = atomStore.get(envAtom);
271
- const contextSource = atomStore.get(contextSourceAtom);
272
- const gatesProps = this.orgConfig.gates
273
- ? this.orgConfig.gates.reduce<Record<string, boolean>>((acc, curr) => {
274
- if (curr.name && curr.value != null) {
275
- return { ...acc, [`feature_gate.${curr.name}`]: curr.value };
276
- }
277
-
278
- return acc;
279
- }, {})
280
- : {};
281
- const experimentProps = this.orgConfig.experiments
282
- ? this.orgConfig.experiments.reduce<Record<string, unknown>>(
283
- (acc, curr) => {
284
- if (curr.name && curr.value != null) {
285
- return {
286
- ...acc,
287
- [`product_experiment.${curr.name}`]: curr.value,
288
- };
289
- }
290
-
291
- return acc;
292
- },
293
- {}
294
- )
295
- : {};
296
- const orgLevelAmplitudeTrackingProps = {
297
- ...gatesProps,
298
- ...experimentProps,
299
- };
300
-
301
- // Keep these name value/pairs consistent with server side tracking events sent to amplitude
302
- // Consult pymono for the latest list of properties. The "null" values are placeholders and
303
- // left here for reference and documentation purposes.
304
- return {
305
- ...orgLevelAmplitudeTrackingProps,
306
- ...this.supplementalDefaultProps,
307
- org_id: this.orgConfig.org?.org.id,
308
- app_id: "commerce-chat-react-component", // This is the app id of the current app
309
- chat_id: LocalStorageService.getItem(LocalStorageKeys.ChatId),
310
- env: env || "unknown",
311
- app_source: contextSource,
312
- "org.short_name": this.orgConfig.org?.org.shortName,
313
- "user.id": this.userId, // This is the user id of the current user (aka "spiffy user id")
314
- "cdp.user_id": null, // Not applicable, left here for future use
315
- "cdp.provider": null, // Not applicable, left here for future use
316
- "event.source": "web-browser",
317
- "event.type": "user-activity",
318
- "event.id": null, // Not applicable, left here for future use
319
- "event.channel": "web",
320
- "event.timestamp": null, // Implicitly set by amplitude
321
- };
322
- }
323
-
324
- /**
325
- * Prefixes the event properties sent to Amplitude with the event name to prevent event-level
326
- * property names from clashing with app-level property names. Event properties will be in the
327
- * format of `event_name.property_name`.
328
- *
329
- * @param eventName - The name of the event to prefix the properties for.
330
- * @param eventProps - The event properties to prefix.
331
- *
332
- * @returns The prefixed properties.
333
- */
334
- private eventPropsToPrefixedEventProps = (
335
- eventName: SpiffyMetricsEventName,
336
- eventProps: Record<string, unknown>
337
- ): Record<string, unknown> => {
338
- // replaces all spaces in the event name with underscores
339
- const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
340
-
341
- return Object.entries(eventProps).reduce((acc, [key, value]) => {
342
- acc[`${prefix}.${key}`] = value;
343
- return acc;
344
- }, {} as Record<string, unknown>);
345
- };
346
-
347
- static trackEvent = async ({
348
- eventName,
349
- eventProps,
350
- eventGroups,
351
- alsoSendToGoogleAnalytics = false,
352
- }: {
353
- eventName: SpiffyMetricsEventName;
354
- eventProps?: Record<string, unknown>;
355
- eventGroups?: Record<string, unknown>;
356
- alsoSendToGoogleAnalytics?: boolean;
357
- }): Promise<void> => {
358
- try {
359
- const decoratedEventName = `[Spiffy] ${eventName}`;
360
- const amplitudeInstance = AmplitudeAdapter.getSingletonInstanceOf();
361
- const amplitudeClient = amplitudeInstance.getUnderlyingAmplitudeClient();
362
-
363
- if (!amplitudeClient) {
364
- Logger.logWarn("amplitude instance undefined", undefined, {
365
- event_name: decoratedEventName,
366
- });
367
- return;
368
- }
369
-
370
- const eventData = JSON.stringify({
371
- eventName,
372
- eventProps,
373
- created_at: new Date().toISOString(),
374
- });
375
- const encoder = new TextEncoder();
376
- const data = encoder.encode(eventData);
377
- // calculate a hash of the event properties to use as the insert_id so that duplicate events
378
- // are automatically dropped by Amplitude
379
- const hashBuffer = await crypto.subtle.digest("SHA-256", data);
380
- const hashArray = Array.from(new Uint8Array(hashBuffer));
381
- const currentInsertId = hashArray
382
- .map((b) => b.toString(16).padStart(2, "0"))
383
- .join("");
384
-
385
- Logger.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
386
- event_name: decoratedEventName,
387
- props: eventProps,
388
- });
389
-
390
- amplitudeClient.track(
391
- decoratedEventName,
392
- {
393
- ...amplitudeInstance.getDefaultTrackingProps(),
394
- ...eventProps,
395
- ...(eventProps
396
- ? AmplitudeAdapter.getSingletonInstanceOf().eventPropsToPrefixedEventProps(
397
- eventName,
398
- eventProps
399
- )
400
- : {}),
401
- },
402
- {
403
- ...eventGroups,
404
- insert_id: currentInsertId,
405
- }
406
- );
407
-
408
- if (alsoSendToGoogleAnalytics && amplitudeInstance.orgGaConfig) {
409
- const dataLayer = WindowDataLayerService.getSingletonInstanceOf(
410
- amplitudeInstance.orgGaConfig
411
- );
412
- Logger.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
413
- dataLayer.sendToGoogleAnalyticsCircularEventsSafe(
414
- decoratedEventName,
415
- eventProps
416
- );
417
- }
418
- } catch (err) {
419
- Logger.logError("[spiffy-ai] Error tracking event", err, {
420
- eventName,
421
- eventProps,
422
- });
423
- }
424
- };
425
-
426
- // All string values, like user_id, event, or user property values, have a character limit of 1024 characters.
427
- // https://amplitude.com/docs/apis/analytics/http-v2
428
- static amplitudeSafeString(input: string | undefined) {
429
- if (!input) {
430
- return null;
431
- }
432
- if (input.length > 1024) {
433
- return input.slice(0, 1024);
434
- }
435
- return input;
436
- }
437
-
438
- static getSingletonInstanceOf(): AmplitudeAdapter {
439
- const atomStore = getAtomStore();
440
- const contextSource = atomStore.get(contextSourceAtom);
441
- const identifyingPrefix = atomStore.get(identifyingPrefixAtom);
442
- if (contextSource === ContextSourceEnum.Test) {
443
- return new StubAmplitudeAdapter();
444
- }
445
-
446
- if (!window[identifyingPrefix]) {
447
- window[identifyingPrefix] = {} as Window[typeof identifyingPrefix];
448
- }
449
-
450
- if (!window[identifyingPrefix]._amplitudeAdapter) {
451
- const atomStore = getAtomStore();
452
- const userId = atomStore.get(userIdAtom);
453
- const orgConfig = atomStore.get(orgConfigAtom);
454
- const orgGaConfig = atomStore.get(orgAnalyticsGoogleAnalyticsConfigAtom);
455
- const featureFlagService = atomStore.get(featureFlagServiceAtom);
456
-
457
- // Only create the adapter if we have the required config
458
- if (!orgConfig || !featureFlagService) {
459
- throw new Error(
460
- "AmplitudeAdapter requires orgConfig and featureFlagService to be initialized"
461
- );
462
- }
463
-
464
- window[identifyingPrefix]._amplitudeAdapter = new AmplitudeAdapter(
465
- userId,
466
- orgConfig,
467
- featureFlagService,
468
- orgGaConfig
469
- );
470
- window[identifyingPrefix]._amplitudeAdapter?.init();
471
- }
472
-
473
- return window[identifyingPrefix]._amplitudeAdapter as AmplitudeAdapter;
474
- }
475
- }
476
-
477
- export { AmplitudeAdapter };
@@ -1,2 +0,0 @@
1
- export * from './amplitudeAdapter';
2
- export * from './stubAmplitudeAdapter';
@@ -1,34 +0,0 @@
1
- import { AmplitudeAdapter } from 'src/adapters/amplitude';
2
- import { OrgConfig } from 'src/application/models/api/orgConfigResults';
3
- import { FeatureFlagService } from 'src/application/service/featureFlagService';
4
-
5
- import type { BrowserClient, EnrichmentPlugin, Event } from '@amplitude/analytics-types';
6
-
7
- export class StubAmplitudeAdapter extends AmplitudeAdapter {
8
- constructor() {
9
- super('test', {} as OrgConfig, {} as FeatureFlagService );
10
- }
11
-
12
- init = (): void => {};
13
-
14
- getUnderlyingAmplitudeClient = (): BrowserClient | undefined => undefined;
15
-
16
- getSupplementalDefaultProps = (): Record<string, unknown> => ({});
17
-
18
- setSupplementalDefaultProps = (): void => {};
19
-
20
- getEventTrackingEnrichment = (): EnrichmentPlugin => ({
21
- name: 'stub-enrichment',
22
- type: 'enrichment',
23
- setup: async () => undefined,
24
- execute: async (event: Event) => event,
25
- });
26
-
27
- amplitudeSessionReplayInit = (): boolean => false;
28
-
29
- createUnderlyingClient = (): BrowserClient => ({}) as BrowserClient;
30
-
31
- getDefaultTrackingProps = (): Record<string, unknown> => ({});
32
-
33
- trackEvent = (): Promise<void> => Promise.resolve();
34
- }