@envive-ai/react-hooks 0.1.5 → 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 (491) 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 +19 -15
  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 +24 -2
  41. package/dist/atoms/atomStore/index.d.ts +24 -2
  42. package/dist/atoms/atomStore/index.js +2 -1
  43. package/dist/atoms/chat/index.cjs +44 -40
  44. package/dist/atoms/chat/index.d.cts +35 -36
  45. package/dist/atoms/chat/index.d.ts +35 -36
  46. package/dist/atoms/chat/index.js +14 -10
  47. package/dist/atoms/globalSearch/index.cjs +1 -1
  48. package/dist/atoms/globalSearch/index.d.cts +5 -5
  49. package/dist/atoms/globalSearch/index.d.ts +6 -6
  50. package/dist/atoms/globalSearch/index.js +1 -1
  51. package/dist/atoms/org/index.cjs +26 -38
  52. package/dist/atoms/org/index.d.cts +35 -48
  53. package/dist/atoms/org/index.d.ts +35 -48
  54. package/dist/atoms/org/index.js +11 -11
  55. package/dist/atoms/search/index.cjs +47 -41
  56. package/dist/atoms/search/index.d.cts +7 -9
  57. package/dist/atoms/search/index.d.ts +7 -9
  58. package/dist/atoms/search/index.js +16 -10
  59. package/dist/bandolier-DYEz4-8C.js +1229 -0
  60. package/dist/bandolier-o_-xrbOV.cjs +1229 -0
  61. package/dist/carpe-CsG5jCcl.cjs +607 -0
  62. package/dist/carpe-DONk00bZ.js +605 -0
  63. package/dist/cdnUtils-32v8bDX9.cjs +16 -0
  64. package/dist/cdnUtils-E4tLBt2g.js +11 -0
  65. package/dist/{chat-_NzpO_Hn.cjs → chat-BubCW1as.cjs} +1 -1
  66. package/dist/chat-CO7cRkaq.cjs +506 -0
  67. package/dist/{chat-CHmD79E1.js → chat-CV6MXeID.js} +1 -1
  68. package/dist/chat-hcRc4RRd.js +285 -0
  69. package/dist/{components-Dl-TMD9k.js → components-B4T3Uzth.js} +1 -1
  70. package/dist/{components-D0XDRcaN.cjs → components-Cw9WjA6g.cjs} +1 -1
  71. package/dist/config/locators/components/chat/index.cjs +1 -1
  72. package/dist/config/locators/components/chat/index.d.cts +1 -1
  73. package/dist/config/locators/components/chat/index.d.ts +1 -1
  74. package/dist/config/locators/components/chat/index.js +1 -1
  75. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  76. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  77. package/dist/config/locators/components/index.cjs +1 -1
  78. package/dist/config/locators/components/index.d.cts +1 -1
  79. package/dist/config/locators/components/index.d.ts +1 -1
  80. package/dist/config/locators/components/index.js +1 -1
  81. package/dist/config/locators/components/search/index.d.ts +1 -1
  82. package/dist/config/locators/index.cjs +4 -4
  83. package/dist/config/locators/index.d.cts +2 -2
  84. package/dist/config/locators/index.d.ts +2 -2
  85. package/dist/config/locators/index.js +4 -4
  86. package/dist/contexts/index.cjs +45 -14
  87. package/dist/contexts/index.d.cts +10 -10
  88. package/dist/contexts/index.d.ts +10 -10
  89. package/dist/contexts/index.js +22 -11
  90. package/dist/contexts-B4ihTBsV.cjs +2980 -0
  91. package/dist/contexts-DGlr7M1o.js +2596 -0
  92. package/dist/coterie-CKB93qfz.cjs +239 -0
  93. package/dist/{coterie--MGvWeVh.cjs → coterie-DHcj2fRE.js} +64 -65
  94. package/dist/{custservice-types-C8-9vKWb.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
  95. package/dist/{custservice-types-CamCiXjq.js → custservice-types-mnIunabv.js} +1 -1
  96. package/dist/default-BnB4p0Se.cjs +234 -0
  97. package/dist/default-D6f5Dyt7.js +199 -0
  98. package/dist/default-ZKkE5zT4.cjs +4 -0
  99. package/dist/default-legGZJwI.js +4 -0
  100. package/dist/{divIds-CjceLRD9.cjs → divIds-2dJlU3z8.cjs} +1 -15
  101. package/dist/{divIds-0Vj9g-fM.js → divIds-BUrN2vY-.js} +2 -4
  102. package/dist/dreamlandBaby-BiRYYFav.js +346 -0
  103. package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
  104. package/dist/{embedded-_cLpd6FK.js → embedded-BJLWIriJ.js} +1 -1
  105. package/dist/{embedded-B5Wi9g0T.cjs → embedded-Dl79TJLC.cjs} +1 -1
  106. package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
  107. package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
  108. package/dist/enviveConfig-BccuzS2a.cjs +240 -0
  109. package/dist/enviveConfig-CzhTz8Aa.js +152 -0
  110. package/dist/events/index.cjs +1 -1
  111. package/dist/events/index.js +1 -1
  112. package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
  113. package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
  114. package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
  115. package/dist/fiveCbd-Dz2NouOF.js +613 -0
  116. package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
  117. package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
  118. package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
  119. package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
  120. package/dist/graphql-BNW60InJ.cjs +128 -0
  121. package/dist/graphql-CjB8wHzm.js +74 -0
  122. package/dist/graphqlConfig-CYt6tWII.js +30 -0
  123. package/dist/graphqlConfig-DicykC-o.cjs +61 -0
  124. package/dist/greenpan-B_EbPkSP.js +397 -0
  125. package/dist/greenpan-kPE4fJgd.cjs +397 -0
  126. package/dist/grooveLife-Ckuir319.js +342 -0
  127. package/dist/grooveLife-DKSEQp1F.cjs +342 -0
  128. package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
  129. package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
  130. package/dist/hooks/index.cjs +39 -13
  131. package/dist/hooks/index.d.cts +127 -45
  132. package/dist/hooks/index.d.ts +124 -42
  133. package/dist/hooks/index.js +22 -11
  134. package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
  135. package/dist/{index-BdNKc2ix.d.cts → index-BDPWBU3h.d.cts} +1 -1
  136. package/dist/index-BMPtlgac.d.ts +191 -0
  137. package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
  138. package/dist/{index-BrXuc_Ck.d.cts → index-Byb45OPg.d.cts} +1 -1
  139. package/dist/{index-CSIOQD-A.d.ts → index-C6KdON7d.d.ts} +1 -1
  140. package/dist/index-C7pGDl1A.d.ts +1609 -0
  141. package/dist/{index-K2kNsOTw.d.cts → index-C9lgsCWp.d.cts} +32 -32
  142. package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
  143. package/dist/{index-CbJZOEU4.d.ts → index-Cc-wBCn6.d.ts} +32 -32
  144. package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
  145. package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
  146. package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
  147. package/dist/{index-Cr2y08f1.d.ts → index-DOii3C6b.d.ts} +1 -1
  148. package/dist/index-DTu2X-YS.d.cts +1609 -0
  149. package/dist/index-OEifcBsm.d.cts +191 -0
  150. package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
  151. package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
  152. package/dist/interceptors/index.cjs +2 -12
  153. package/dist/interceptors/index.d.cts +8 -13
  154. package/dist/interceptors/index.d.ts +8 -13
  155. package/dist/interceptors/index.js +2 -11
  156. package/dist/jackArcher-B39OEIj6.cjs +727 -0
  157. package/dist/{jackArcher-sO9EbgrZ.js → jackArcher-BwkWGybC.js} +24 -25
  158. package/dist/jordanCraig-CxRH_jLi.js +1786 -0
  159. package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
  160. package/dist/kindredBravely-D78VwL20.cjs +490 -0
  161. package/dist/kindredBravely-DQDpAzdl.js +490 -0
  162. package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
  163. package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
  164. package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
  165. package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
  166. package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
  167. package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
  168. package/dist/longevityrx-DdV3v26F.cjs +320 -0
  169. package/dist/longevityrx-DfPDfvAt.js +320 -0
  170. package/dist/lookOptic-DgXFGBPP.cjs +282 -0
  171. package/dist/{lookOptic-Jwf7EAU8.js → lookOptic-FgVW1afF.js} +19 -20
  172. package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
  173. package/dist/{mantraBrand-DoaVj837.js → mantraBrand-uV8HCDR8.js} +22 -23
  174. package/dist/medterra-BtDpr1Hw.cjs +583 -0
  175. package/dist/medterra-DgzE7-mj.js +583 -0
  176. package/dist/modells-CJjsxOIR.js +484 -0
  177. package/dist/modells-Ck5KbRFj.cjs +484 -0
  178. package/dist/models-BkXg5eIP.cjs +1534 -0
  179. package/dist/models-UZ6HszfZ.js +1281 -0
  180. package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
  181. package/dist/{nodeSelector-vKB44CDB.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
  182. package/dist/org-C2RrBVQR.cjs +81 -0
  183. package/dist/org-xMytX--e.js +38 -0
  184. package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
  185. package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
  186. package/dist/pressedFloral-Bteoboms.js +661 -0
  187. package/dist/pressedFloral-CexgV-xy.cjs +661 -0
  188. package/dist/search-BMOAmrmY.js +459 -0
  189. package/dist/search-Df0Ifneg.cjs +672 -0
  190. package/dist/{search-filter-types-9rTb3jMj.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
  191. package/dist/{search-filter-types-C-zZSpGo.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
  192. package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
  193. package/dist/skinPerfection-BlvcEcUE.js +334 -0
  194. package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
  195. package/dist/snapSupplements-kcsPAOm9.js +285 -0
  196. package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
  197. package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
  198. package/dist/spanx-B4WFA_rI.js +661 -0
  199. package/dist/spanx-BWoE4F8b.cjs +663 -0
  200. package/dist/spanxStaging-BOrOjhXn.js +845 -0
  201. package/dist/spanxStaging-BfdfIug4.cjs +848 -0
  202. package/dist/{suggestionBarV2-types-Penx3Y67.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
  203. package/dist/{suggestionBarV2-types-B3lwrENK.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
  204. package/dist/supergoop-22dd5_BS.js +323 -0
  205. package/dist/supergoop-B-a4cku2.cjs +323 -0
  206. package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
  207. package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
  208. package/dist/types/index.cjs +2 -2
  209. package/dist/types/index.d.cts +2 -2
  210. package/dist/types/index.d.ts +2 -2
  211. package/dist/types/index.js +2 -2
  212. package/dist/types--pr1GQQx.js +154 -0
  213. package/dist/types-BVSyY3Hk.cjs +196 -0
  214. package/dist/{uniqueVintage-BWkDgt1z.js → uniqueVintage-CJXiNNe7.js} +19 -20
  215. package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
  216. package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
  217. package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
  218. package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
  219. package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
  220. package/dist/utils-C9ZSCx12.js +888 -0
  221. package/dist/utils-D5HO61hG.cjs +1016 -0
  222. package/dist/variantInfo-DbVxA1yE.js +1 -0
  223. package/dist/variantInfo-orXoPBCU.cjs +0 -0
  224. package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
  225. package/dist/venaCbd-CanovPS_.js +365 -0
  226. package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
  227. package/dist/{westonJonBoucher-BAGXegsX.js → westonJonBoucher-BUu1_wP1.js} +19 -20
  228. package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
  229. package/dist/{wineEnthusiast-EJbhMeKQ.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
  230. package/dist/wolfMattress-D9Mjq-HP.js +372 -0
  231. package/dist/wolfMattress-JssghhC-.cjs +372 -0
  232. package/dist/wolfTactical-C6exYhL7.cjs +349 -0
  233. package/dist/wolfTactical-CnV3KQdI.js +349 -0
  234. package/package.json +100 -19
  235. package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
  236. package/src/application/models/colorsConfig.ts +18 -18
  237. package/src/application/models/frontendConfig.ts +3 -3
  238. package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
  239. package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
  240. package/src/application/models/index.ts +0 -2
  241. package/src/application/models/localStorageEventListener.ts +2 -2
  242. package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
  243. package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
  244. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
  245. package/src/application/utils/analyticsUtils.ts +53 -22
  246. package/src/application/utils/cdnUtils.ts +11 -0
  247. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
  248. package/src/atoms/app/index.ts +7 -17
  249. package/src/atoms/app/variant.ts +13 -4
  250. package/src/atoms/chat/chatState.ts +28 -18
  251. package/src/atoms/chat/messageQueue.ts +36 -5
  252. package/src/atoms/chat/replies.ts +45 -37
  253. package/src/atoms/envive/enviveConfig.ts +10 -6
  254. package/src/atoms/org/graphqlConfig.ts +7 -1
  255. package/src/atoms/org/index.ts +3 -3
  256. package/src/atoms/org/newOrgConfigAtom.ts +8 -0
  257. package/src/atoms/org/orgPageConfig.ts +6 -5
  258. package/src/atoms/search/chatSearch.ts +11 -5
  259. package/src/atoms/search/searchAPI.ts +22 -12
  260. package/src/atoms/search/searchServiceAdapter.ts +25 -0
  261. package/src/contexts/amplitudeContext.tsx +466 -0
  262. package/src/contexts/cdnContext.tsx +48 -0
  263. package/src/contexts/chatContext.tsx +15 -12
  264. package/src/contexts/enviveConfigContext.tsx +22 -17
  265. package/src/contexts/enviveCssContext.tsx +34 -5
  266. package/src/contexts/featureFlagContext.tsx +193 -0
  267. package/src/contexts/featureFlagServiceContext.tsx +87 -0
  268. package/src/contexts/graphqlContext.tsx +165 -0
  269. package/src/contexts/index.ts +13 -3
  270. package/src/contexts/localStorageContext.tsx +159 -0
  271. package/src/contexts/newOrgConfigContext.tsx +104 -0
  272. package/src/contexts/orgConfigContext.tsx +92 -92
  273. package/src/contexts/searchContext.tsx +187 -0
  274. package/src/contexts/sessionStorageContext.tsx +80 -0
  275. package/src/contexts/shopifyUrlContext.tsx +97 -0
  276. package/src/contexts/types.ts +12 -8
  277. package/src/contexts/userIdentityContext.tsx +197 -0
  278. package/src/events/registerAnalyticsListeners.ts +32 -38
  279. package/src/hooks/index.ts +10 -4
  280. package/src/hooks/useAmplitudeOperations.ts +35 -0
  281. package/src/hooks/useAppDetails.ts +49 -0
  282. package/src/hooks/useCdnOperations.ts +16 -0
  283. package/src/hooks/useChatToggle.ts +5 -4
  284. package/src/hooks/useChatToggleAnalytics.ts +15 -0
  285. package/src/hooks/useGraphQLConfig.ts +63 -0
  286. package/src/hooks/useIdentifyUser.ts +33 -0
  287. package/src/hooks/useImageResolver.ts +7 -7
  288. package/src/hooks/useLocalStorageOperations.ts +92 -0
  289. package/src/hooks/useNewOrgConfig.ts +3 -76
  290. package/src/hooks/useSearch.tsx +21 -18
  291. package/src/hooks/useSearchOperations.ts +97 -0
  292. package/src/hooks/useSessionStorageOperations.ts +28 -0
  293. package/src/hooks/useShopifyUrlOperations.ts +45 -0
  294. package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
  295. package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
  296. package/src/interceptors/index.ts +0 -1
  297. package/src/interceptors/useMessageInterceptor.ts +5 -8
  298. package/src/merchants/bandolier/bandolier.ts +10 -28
  299. package/src/merchants/carpe/carpe.ts +5 -8
  300. package/src/merchants/coterie/coterie.ts +3 -6
  301. package/src/merchants/default.ts +73 -70
  302. package/src/merchants/domInsertion.ts +30 -0
  303. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
  304. package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
  305. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
  306. package/src/merchants/greenpan/greenpan.ts +6 -12
  307. package/src/merchants/gridInsertion.ts +19 -0
  308. package/src/merchants/grooveLife/grooveLife.ts +13 -7
  309. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
  310. package/src/merchants/jackArcher/jackArcher.ts +26 -11
  311. package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
  312. package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
  313. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
  314. package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
  315. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
  316. package/src/merchants/longevityrx/longevityrx.ts +14 -8
  317. package/src/merchants/lookOptic/lookOptic.ts +6 -6
  318. package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
  319. package/src/merchants/medterra/medterra.ts +14 -11
  320. package/src/merchants/modells/modells.ts +6 -9
  321. package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
  322. package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
  323. package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
  324. package/src/merchants/spanx/spanx.ts +6 -6
  325. package/src/merchants/spanx/spanxStaging.ts +6 -12
  326. package/src/merchants/supergoop/supergoop.ts +11 -12
  327. package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
  328. package/src/merchants/venaCbd/venaCbd.ts +6 -9
  329. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
  330. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
  331. package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
  332. package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
  333. package/src/types/config-versions.ts +6 -0
  334. package/src/types.ts +0 -53
  335. package/dist/adapters/amplitude/index.cjs +0 -14
  336. package/dist/adapters/amplitude/index.d.cts +0 -6
  337. package/dist/adapters/amplitude/index.d.ts +0 -6
  338. package/dist/adapters/amplitude/index.js +0 -12
  339. package/dist/api-B2euFL-5.cjs +0 -269
  340. package/dist/api-XRr_lAG6.js +0 -190
  341. package/dist/application/config/index.cjs +0 -43
  342. package/dist/application/config/index.d.cts +0 -15
  343. package/dist/application/config/index.d.ts +0 -15
  344. package/dist/application/config/index.js +0 -41
  345. package/dist/application/service/customerService/index.cjs +0 -4
  346. package/dist/application/service/customerService/index.d.cts +0 -3
  347. package/dist/application/service/customerService/index.d.ts +0 -3
  348. package/dist/application/service/customerService/index.js +0 -4
  349. package/dist/application/service/index.cjs +0 -42
  350. package/dist/application/service/index.d.cts +0 -413
  351. package/dist/application/service/index.d.ts +0 -413
  352. package/dist/application/service/index.js +0 -12
  353. package/dist/atomStore-ONYy0XuA.d.cts +0 -24
  354. package/dist/atomStore-kOKiEcNl.d.ts +0 -24
  355. package/dist/bandolier-Da4wt6sm.cjs +0 -1230
  356. package/dist/bandolier-DzEmYWcz.js +0 -1230
  357. package/dist/carpe-AXipz0Xl.cjs +0 -608
  358. package/dist/carpe-CaUKwcEa.js +0 -606
  359. package/dist/contexts-CtRlNXaS.js +0 -7674
  360. package/dist/contexts-CtgmnYNn.cjs +0 -9088
  361. package/dist/coterie-oKHAT0lx.js +0 -240
  362. package/dist/customerService-BG1uNZZ1.cjs +0 -36
  363. package/dist/customerService-BHQRnLhC.js +0 -23
  364. package/dist/default-B4fINY5_.cjs +0 -4
  365. package/dist/default-BrTQxA0c.js +0 -4
  366. package/dist/default-C3LrcbZB.cjs +0 -199
  367. package/dist/default-CXkYrLEr.js +0 -176
  368. package/dist/dreamlandBaby-BEqt0eKF.js +0 -347
  369. package/dist/dreamlandBaby-DBDjEJCc.cjs +0 -347
  370. package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
  371. package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
  372. package/dist/fiveCbd-CdqNt16h.cjs +0 -614
  373. package/dist/fiveCbd-D6B-sgnX.js +0 -614
  374. package/dist/forLoveAndLemons-C7GsJG7f.cjs +0 -668
  375. package/dist/forLoveAndLemons-gNDlMtPR.js +0 -666
  376. package/dist/greenpan-B5AaW4M_.js +0 -398
  377. package/dist/greenpan-DrORpYms.cjs +0 -398
  378. package/dist/grooveLife-BJqsfH2H.cjs +0 -343
  379. package/dist/grooveLife-xIUmDM8s.js +0 -343
  380. package/dist/homegrownCannabis-8TZ21u6L.cjs +0 -411
  381. package/dist/homegrownCannabis-BtMuEvbZ.js +0 -411
  382. package/dist/index-CKUpnyJQ.d.ts +0 -72
  383. package/dist/index-DFL1dIT_.d.ts +0 -7
  384. package/dist/index-DXpgMVpp.d.ts +0 -749
  385. package/dist/index-MFbPQ8Ji.d.ts +0 -95
  386. package/dist/index-VHFMGkO-.d.cts +0 -72
  387. package/dist/index-VSFakgAI.d.cts +0 -95
  388. package/dist/index-aNW5V9fh.d.cts +0 -749
  389. package/dist/index-zZjcds15.d.cts +0 -7
  390. package/dist/jackArcher-WtkbLBZj.cjs +0 -728
  391. package/dist/jordanCraig-471FcgqF.cjs +0 -1787
  392. package/dist/jordanCraig-DNOncplU.js +0 -1787
  393. package/dist/kindredBravely-BlLyHGMX.cjs +0 -491
  394. package/dist/kindredBravely-cqZ4OvXp.js +0 -491
  395. package/dist/kutFromTheKloth-3mOIryvt.cjs +0 -370
  396. package/dist/kutFromTheKloth-DtVNCMKa.js +0 -370
  397. package/dist/larryAndSerges-88Bvq-Us.cjs +0 -262
  398. package/dist/larryAndSerges-cvak6May.js +0 -262
  399. package/dist/leapsAndRebounds-Dmf8eUPq.js +0 -361
  400. package/dist/leapsAndRebounds-iWKc923H.cjs +0 -361
  401. package/dist/logger-Dln20ans.cjs +0 -26
  402. package/dist/logger-pdEEY8T2.js +0 -20
  403. package/dist/longevityrx-BTMI9vn-.js +0 -321
  404. package/dist/longevityrx-CobPyigd.cjs +0 -321
  405. package/dist/lookOptic-C4H_c0JZ.cjs +0 -283
  406. package/dist/mantraBrand-CySGqbn6.cjs +0 -751
  407. package/dist/medterra-BnZ5p27n.cjs +0 -584
  408. package/dist/medterra-DaICcPPp.js +0 -584
  409. package/dist/modells-CZ1L6dD_.js +0 -485
  410. package/dist/modells-DF0SndHr.cjs +0 -485
  411. package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
  412. package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
  413. package/dist/pressedFloral-B3t2cYzs.cjs +0 -662
  414. package/dist/pressedFloral-Dsws2Kfb.js +0 -662
  415. package/dist/skinPerfection-CILQM2bR.cjs +0 -335
  416. package/dist/skinPerfection-DmQCntRf.js +0 -335
  417. package/dist/snapSupplements--X_v0KRM.js +0 -286
  418. package/dist/snapSupplements-Djuzl0Ed.cjs +0 -286
  419. package/dist/spanx-Bo81yXSF.cjs +0 -664
  420. package/dist/spanx-DauxB8KE.js +0 -662
  421. package/dist/spanxStaging-BucYQvR1.cjs +0 -849
  422. package/dist/spanxStaging-CfXUukdP.js +0 -846
  423. package/dist/supergoop-8qa_NV3F.cjs +0 -338
  424. package/dist/supergoop-DOaui-A6.js +0 -336
  425. package/dist/types-CD4LFta-.d.cts +0 -33
  426. package/dist/types-CGC6Oozp.cjs +0 -231
  427. package/dist/types-CnTCkyvK.js +0 -177
  428. package/dist/types-DBdI0j89.d.ts +0 -33
  429. package/dist/uniqueVintage-DAne8XcL.cjs +0 -1214
  430. package/dist/variant-CC1nrywd.d.ts +0 -13
  431. package/dist/variant-CQTuQQSq.d.cts +0 -13
  432. package/dist/venaCbd-B1HO_Pkr.cjs +0 -366
  433. package/dist/venaCbd-CnByO-5R.js +0 -366
  434. package/dist/westonJonBoucher-BRfHWMbs.cjs +0 -423
  435. package/dist/wineEnthusiast-DW8JVwV8.cjs +0 -941
  436. package/dist/wolfMattress-B6INZNRJ.cjs +0 -373
  437. package/dist/wolfMattress-D9P7ErH_.js +0 -373
  438. package/dist/wolfTactical-C5Pupi3J.js +0 -350
  439. package/dist/wolfTactical-TMthZM93.cjs +0 -350
  440. package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
  441. package/src/adapters/amplitude/index.ts +0 -2
  442. package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
  443. package/src/adapters/spiffy/commerce/graphql.ts +0 -219
  444. package/src/application/config/generalStaticConfig.ts +0 -40
  445. package/src/application/config/index.ts +0 -1
  446. package/src/application/models/domMutationContinuation.ts +0 -7
  447. package/src/application/models/domObservationStrategy.ts +0 -9
  448. package/src/application/service/cachingService.ts +0 -84
  449. package/src/application/service/cdnService.ts +0 -20
  450. package/src/application/service/customerService/index.ts +0 -8
  451. package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
  452. package/src/application/service/domMutationObserver.ts +0 -320
  453. package/src/application/service/domMutations/GridInsertionService.ts +0 -123
  454. package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
  455. package/src/application/service/domMutations/domInsertionService.ts +0 -90
  456. package/src/application/service/domMutations/domMutationListener.ts +0 -15
  457. package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
  458. package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
  459. package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
  460. package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
  461. package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
  462. package/src/application/service/featureFlagService.ts +0 -130
  463. package/src/application/service/graphqlConfigService.ts +0 -59
  464. package/src/application/service/index.ts +0 -32
  465. package/src/application/service/kustomerIntegrationService.ts +0 -111
  466. package/src/application/service/localStorageService.ts +0 -77
  467. package/src/application/service/pageVariantService.ts +0 -866
  468. package/src/application/service/searchService.ts +0 -147
  469. package/src/application/service/sessionStorageService.ts +0 -27
  470. package/src/application/service/shopifyUrlService.ts +0 -63
  471. package/src/application/service/userIdentityService.ts +0 -114
  472. package/src/application/service/windowChatToggleService.ts +0 -80
  473. package/src/application/service/windowDataLayerService.ts +0 -181
  474. package/src/application/service/windowFrontendConfigService.ts +0 -129
  475. package/src/atoms/org/merchantCss.ts +0 -161
  476. package/src/atoms/org/org.ts +0 -251
  477. package/src/atoms/org/orgUIConfig.ts +0 -142
  478. package/src/enabled-features.ts +0 -83
  479. package/src/hooks/useDynamicVariants.ts +0 -226
  480. package/src/hooks/useFileUpload.ts +0 -63
  481. package/src/hooks/useHideElements.ts +0 -85
  482. package/src/interceptors/useFormEscalation.ts +0 -57
  483. /package/dist/{locators-DnKpajbY.js → atomStore-CZnUUsrr.js} +0 -0
  484. /package/dist/{locators-CugndTUM.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
  485. /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
  486. /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
  487. /package/dist/{variantInfo-CzhR5W6h.js → utilityTypes-8sETsYPk.js} +0 -0
  488. /package/dist/{variantInfo-CNRTY0gH.cjs → utilityTypes-COShxVir.cjs} +0 -0
  489. /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
  490. /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
  491. /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
- }