@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,22 +1,22 @@
1
1
  enum ColorNames {
2
- TextPrimary = 'text-primary',
3
- TextSecondary = 'text-secondary',
4
- TextAccent = 'text-accent',
5
- TextLink = 'text-link',
6
- TextLight = 'text-light',
7
- BackgroundPrimary = 'background-primary',
8
- BackgroundSecondary = 'background-secondary',
9
- BackgroundSecondaryDark = 'background-secondary-dark',
10
- BackgroundTertiary = 'background-tertiary',
11
- BackgroundDark = 'background-dark',
12
- BackgroundLight = 'background-light',
13
- BackgroundSaturated = 'background-saturated',
14
- BorderLight = 'border-light',
15
- BorderMedium = 'border-medium',
16
- BorderDark = 'border-dark',
17
- BorderOutline = 'border-outline',
18
- AccentPrimary = 'accent-primary',
19
- AccentSecondary = 'accent-secondary',
2
+ TextPrimary = "text-primary",
3
+ TextSecondary = "text-secondary",
4
+ TextAccent = "text-accent",
5
+ TextLink = "text-link",
6
+ TextLight = "text-light",
7
+ BackgroundPrimary = "background-primary",
8
+ BackgroundSecondary = "background-secondary",
9
+ BackgroundSecondaryDark = "background-secondary-dark",
10
+ BackgroundTertiary = "background-tertiary",
11
+ BackgroundDark = "background-dark",
12
+ BackgroundLight = "background-light",
13
+ BackgroundSaturated = "background-saturated",
14
+ BorderLight = "border-light",
15
+ BorderMedium = "border-medium",
16
+ BorderDark = "border-dark",
17
+ BorderOutline = "border-outline",
18
+ AccentPrimary = "accent-primary",
19
+ AccentSecondary = "accent-secondary",
20
20
  }
21
21
 
22
22
  type ColorMapping = {
@@ -3,12 +3,12 @@ import {
3
3
  WidgetMountingConfig,
4
4
  WidgetConfig,
5
5
  OrgUIConfig,
6
- } from 'src/contexts/types';
6
+ } from "src/contexts/types";
7
7
 
8
8
  export interface FrontendConfig {
9
- merchantOverrideCss?: string;
9
+ merchant_override_css?: string;
10
10
  pageVariants?: PageVariantConfig[];
11
11
  mountingConfigs?: Record<string, WidgetMountingConfig>;
12
12
  widgetConfigs?: Record<string, WidgetConfig>;
13
- uiConfigs?: Omit<OrgUIConfig, 'merchantOverrideCss'>;
13
+ uiConfigs?: Omit<OrgUIConfig, "merchantOverrideCss">;
14
14
  }
@@ -1,4 +1,4 @@
1
- import { configVersion } from 'src/adapters/spiffy/commerce/graphql';
1
+ import { configVersion } from "src/types/config-versions";
2
2
 
3
3
  const getMerchantColorsQuery = () => `
4
4
  query ($version: "${configVersion()}") {
@@ -1,4 +1,4 @@
1
- import { configVersion } from 'src/adapters/spiffy/commerce/graphql';
1
+ import { configVersion } from "src/types/config-versions";
2
2
 
3
3
  const getMerchantFrontendConfigQuery = () => `
4
4
  query ($version: "${configVersion()}") {
@@ -5,8 +5,6 @@ export * from "./clientDetails";
5
5
  export * from "./colorsConfig";
6
6
  export * from "./conversationalSearchIds";
7
7
  export * from "./dataLayer";
8
- export * from "./domMutationContinuation";
9
- export * from "./domObservationStrategy";
10
8
  export * from "./events";
11
9
  export * from "./featureGates";
12
10
  export * from "./frontendConfig";
@@ -1,4 +1,4 @@
1
- type LocalStorageEventListener = {
1
+ export type LocalStorageEventListener = {
2
2
  storageKey: string;
3
3
  listener: (event: StorageEvent) => void;
4
- }
4
+ };
@@ -15,7 +15,7 @@ export type BasicOrgInfoType = {
15
15
  };
16
16
 
17
17
  export const getOrgInfo = async (
18
- orgShortName: string
18
+ orgShortName?: string
19
19
  ): Promise<BasicOrgInfoType> => {
20
20
  switch (orgShortName) {
21
21
  case OrgShortName.Bandolier:
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  // List of acronyms that should be preserved as uppercase in camelCase and lowercase in snake_case
7
- const PRESERVED_ACRONYMS = ['PLP', 'PDP', 'SVG'];
7
+ const PRESERVED_ACRONYMS = ["PLP", "PDP", "SVG"];
8
8
 
9
9
  /**
10
10
  * Converts a snake_case string to camelCase
@@ -14,11 +14,11 @@ const toCamelCase = (str: string): string => {
14
14
  // Pre-process: convert all words that match the PRESERVED_ACRONYMS regex to uppercase
15
15
  let processedStr = str;
16
16
  for (const acronym of PRESERVED_ACRONYMS) {
17
- const regex = new RegExp(`_${acronym}_?`, 'gi');
17
+ const regex = new RegExp(`_${acronym}_?`, "gi");
18
18
 
19
19
  if (processedStr.match(regex)) {
20
20
  processedStr = processedStr.replace(regex, (v) =>
21
- v.endsWith('_') ? `${acronym}_` : `${acronym}`,
21
+ v.endsWith("_") ? `${acronym}_` : `${acronym}`
22
22
  );
23
23
  }
24
24
  }
@@ -32,10 +32,10 @@ const toCamelCase = (str: string): string => {
32
32
  */
33
33
  const toSnakeCase = (str: string) =>
34
34
  str
35
- .replace(/([A-Z])(?=[a-z])/g, '_$1')
36
- .replace(/([a-z])([A-Z])/g, '$1_$2')
35
+ .replace(/([A-Z])(?=[a-z])/g, "_$1")
36
+ .replace(/([a-z])([A-Z])/g, "$1_$2")
37
37
  .toLowerCase()
38
- .replace(/^_/, '');
38
+ .replace(/^_/, "");
39
39
 
40
40
  /**
41
41
  * Recursively transforms all object keys from snake_case to camelCase
@@ -49,7 +49,7 @@ export const transformSnakeToCamel = (obj: unknown): unknown => {
49
49
  return obj.map((val) => transformSnakeToCamel(val));
50
50
  }
51
51
 
52
- if (typeof obj === 'object') {
52
+ if (typeof obj === "object") {
53
53
  const result: Record<string, unknown> = {};
54
54
 
55
55
  for (const [key, value] of Object.entries(obj)) {
@@ -75,7 +75,7 @@ export const transformCamelToSnake = (obj: unknown): unknown => {
75
75
  return obj.map(transformCamelToSnake);
76
76
  }
77
77
 
78
- if (typeof obj === 'object') {
78
+ if (typeof obj === "object") {
79
79
  const result: Record<string, unknown> = {};
80
80
 
81
81
  for (const [key, value] of Object.entries(obj)) {
@@ -7,25 +7,4 @@ export const validateGraphQLColorsConfig = (
7
7
  if (!isGraphQLColorsConfig(data)) {
8
8
  return undefined;
9
9
  }
10
-
11
- return {
12
- [ColorNames.TextPrimary]: "#000000",
13
- [ColorNames.TextSecondary]: "#666666",
14
- [ColorNames.TextAccent]: "#808080",
15
- [ColorNames.TextLink]: "#4D4D4D",
16
- [ColorNames.TextLight]: "#FFFFFF",
17
- [ColorNames.BackgroundPrimary]: "#999999",
18
- [ColorNames.BackgroundSecondary]: "#F2F2F2",
19
- [ColorNames.BackgroundSecondaryDark]: "#E5E5E5",
20
- [ColorNames.BackgroundTertiary]: "#E5E5E5",
21
- [ColorNames.BackgroundDark]: "#000000",
22
- [ColorNames.BackgroundLight]: "#FFFFFF",
23
- [ColorNames.BackgroundSaturated]: "#CCCCCC",
24
- [ColorNames.BorderLight]: "#E5E5E5",
25
- [ColorNames.BorderMedium]: "#B2B2B2",
26
- [ColorNames.BorderDark]: "#4D4D4D",
27
- [ColorNames.BorderOutline]: "#4D4D4D",
28
- [ColorNames.AccentPrimary]: "#999999",
29
- [ColorNames.AccentSecondary]: "#B2B2B2",
30
- };
31
10
  };
@@ -6,8 +6,8 @@ import {
6
6
  PageVariantTestType,
7
7
  WidgetMountingConfig,
8
8
  } from 'src/contexts/types';
9
- import { DOMInsertionType } from 'src/application/service/domMutations/domInsertionService';
10
- import { GridInsertionType } from 'src/application/service/domMutations/GridInsertionService';
9
+ import { DOMInsertionType } from 'src/merchants/domInsertion';
10
+ import { GridInsertionType } from 'src/merchants/gridInsertion';
11
11
  import Logger from 'src/application/logging/logger';
12
12
 
13
13
  // Helper function to validate and transform PageVariantQueryData to PageVariantConfig
@@ -1,13 +1,19 @@
1
- import Logger from 'src/application/logging/logger';
2
- import { AmplitudeAdapter, SpiffyMetricsEventName } from 'src/adapters/amplitude';
1
+ import Logger from "src/application/logging/logger";
3
2
  import {
4
3
  isLegacyUAEcommerceEvent,
5
4
  isGA4EcommerceEvent,
6
5
  isBaseEcommerceEvent,
7
6
  BaseEcommerceEvent,
8
- } from 'src/application/models';
7
+ } from "src/application/models";
8
+ import { SpiffyMetricsEventName } from "src/contexts/amplitudeContext";
9
9
 
10
- const NORMALIZED_ADD_TO_CART_EVENT_NAMES = ['addtocart', 'addedtocart'];
10
+ declare global {
11
+ interface Window {
12
+ dataLayer: any[];
13
+ }
14
+ }
15
+
16
+ const NORMALIZED_ADD_TO_CART_EVENT_NAMES = ["addtocart", "addedtocart"];
11
17
  const CHECK_DATA_LAYER_INTERVAL_MS = 500;
12
18
  const CHECK_DATA_LAYER_MAX_ATTEMPTS = 10;
13
19
 
@@ -19,8 +25,10 @@ const CHECK_DATA_LAYER_MAX_ATTEMPTS = 10;
19
25
  * @returns True if the event is an add_to_cart event, false otherwise.
20
26
  */
21
27
  const isAddToCartEvent = (event: string): boolean => {
22
- const normalizedEvent = event.replace(/[-_]/g, '').toLowerCase();
23
- return NORMALIZED_ADD_TO_CART_EVENT_NAMES.some((name) => normalizedEvent.includes(name));
28
+ const normalizedEvent = event.replace(/[-_]/g, "").toLowerCase();
29
+ return NORMALIZED_ADD_TO_CART_EVENT_NAMES.some((name) =>
30
+ normalizedEvent.includes(name)
31
+ );
24
32
  };
25
33
 
26
34
  /**
@@ -28,7 +36,13 @@ const isAddToCartEvent = (event: string): boolean => {
28
36
  *
29
37
  * @param event The event to track.
30
38
  */
31
- const handleAddToCartEvent = (event: BaseEcommerceEvent) => {
39
+ const handleAddToCartEvent = (
40
+ event: BaseEcommerceEvent,
41
+ track: (
42
+ eventName: SpiffyMetricsEventName,
43
+ eventProps?: Record<string, unknown>
44
+ ) => void
45
+ ) => {
32
46
  let eventProps: Record<string, unknown>;
33
47
 
34
48
  if (isLegacyUAEcommerceEvent(event)) {
@@ -40,7 +54,7 @@ const handleAddToCartEvent = (event: BaseEcommerceEvent) => {
40
54
  quantity: product.quantity,
41
55
  })),
42
56
  currency: event.ecommerce.add.currencyCode,
43
- event_format_version: 'legacy_universal_analytics',
57
+ event_format_version: "legacy_universal_analytics",
44
58
  };
45
59
  } else if (isGA4EcommerceEvent(event)) {
46
60
  eventProps = {
@@ -51,17 +65,16 @@ const handleAddToCartEvent = (event: BaseEcommerceEvent) => {
51
65
  quantity: item.quantity,
52
66
  })),
53
67
  currency: event.ecommerce.currency,
54
- event_format_version: 'google_analytics_4',
68
+ event_format_version: "google_analytics_4",
55
69
  };
56
70
  } else {
57
71
  eventProps = {
58
72
  event_properties: { ...event },
59
- event_format_version: 'unknown',
73
+ event_format_version: "unknown",
60
74
  };
61
75
  }
62
76
 
63
- AmplitudeAdapter.trackEvent({
64
- eventName: SpiffyMetricsEventName.AddToCartClicked,
77
+ track(SpiffyMetricsEventName.AddToCartClicked, {
65
78
  eventProps,
66
79
  });
67
80
  };
@@ -70,18 +83,23 @@ const handleAddToCartEvent = (event: BaseEcommerceEvent) => {
70
83
  * Wraps the window.dataLayer.push method to intercept add_to_cart events and send them to Amplitude.
71
84
  * This function runs on an interval until the dataLayer is available.
72
85
  */
73
- export const initDataLayerWrapper = () => {
86
+ export const initDataLayerWrapper = (
87
+ track: (
88
+ eventName: SpiffyMetricsEventName,
89
+ eventProps?: Record<string, unknown>
90
+ ) => void
91
+ ) => {
74
92
  let attempts = 0;
75
93
 
76
94
  // currently, our bundle is always loaded after GTM has initialized GA/dataLayer
77
95
  // we'll need this check here if/when we load spiffy before/outside of GTM
78
96
  const checkAndInitialize = () => {
79
- if (!window.dataLayer || !window.dataLayer.push) {
97
+ if (!window.dataLayer || !(window.dataLayer as any).push) {
80
98
  attempts += 1;
81
99
 
82
100
  if (attempts >= CHECK_DATA_LAYER_MAX_ATTEMPTS) {
83
101
  Logger.logDebug(
84
- `[spiffy-ai] dataLayer not available after ${CHECK_DATA_LAYER_MAX_ATTEMPTS} attempts`,
102
+ `[spiffy-ai] dataLayer not available after ${CHECK_DATA_LAYER_MAX_ATTEMPTS} attempts`
85
103
  );
86
104
  return;
87
105
  }
@@ -90,21 +108,34 @@ export const initDataLayerWrapper = () => {
90
108
  return;
91
109
  }
92
110
 
93
- Logger.logDebug('[spiffy-ai] dataLayer is available, wrapping push function...');
111
+ Logger.logDebug(
112
+ "[spiffy-ai] dataLayer is available, wrapping push function..."
113
+ );
94
114
  const originalPush = window.dataLayer.push;
95
- window.dataLayer.push = (args: unknown) => {
96
- if (isBaseEcommerceEvent(args) && isAddToCartEvent(args.event)) {
97
- handleAddToCartEvent(args);
115
+ window.dataLayer.push = (...args: unknown[]) => {
116
+ if (
117
+ isBaseEcommerceEvent(args[0]) &&
118
+ isAddToCartEvent((args[0] as any).event)
119
+ ) {
120
+ handleAddToCartEvent(args[0] as BaseEcommerceEvent, track);
98
121
  }
99
122
 
100
123
  // IMPORTANT: call the original push method so that the event is still logged to GA
101
- originalPush.apply(window.dataLayer, [args]);
124
+ return originalPush.apply(window.dataLayer, args);
102
125
  };
103
126
  };
104
127
 
105
128
  checkAndInitialize();
106
129
  };
107
130
 
108
- export const initAmplitude = () => {
109
- AmplitudeAdapter.getSingletonInstanceOf();
131
+ export const initAmplitude = (
132
+ track: (
133
+ eventName: SpiffyMetricsEventName,
134
+ eventProps?: Record<string, unknown>
135
+ ) => void
136
+ ) => {
137
+ // This function might not be needed anymore if Amplitude is initialized via context.
138
+ // For now, we'll keep it and pass the track function.
139
+ // If it's truly redundant, it can be removed later.
140
+ track(SpiffyMetricsEventName.BundleLoaded); // Example usage, adjust as needed
110
141
  };
@@ -0,0 +1,11 @@
1
+ import { getAtomStore } from "src/atoms/atomStore/atomStore";
2
+ import { cdnUrlAtom } from "src/atoms/envive/enviveConfig";
3
+
4
+ export const getCdnAssetURL = (
5
+ assetName: string,
6
+ orgShortName: string
7
+ ): string => {
8
+ const atomStore = getAtomStore();
9
+ const cdnUrl = atomStore.get(cdnUrlAtom) || "https://cdn.spiffy.ai/other";
10
+ return `${cdnUrl}/assets/${orgShortName}/${assetName}`;
11
+ };
@@ -0,0 +1,15 @@
1
+ import { atom } from "jotai";
2
+ import { SpiffyMetricsEventName } from "src/contexts/amplitudeContext";
3
+
4
+ interface TrackEventParams {
5
+ eventName: SpiffyMetricsEventName;
6
+ eventProps?: Record<string, unknown>;
7
+ eventGroups?: Record<string, unknown>;
8
+ alsoSendToGoogleAnalytics?: boolean;
9
+ }
10
+
11
+ // This atom will hold the trackEvent function from the Amplitude context.
12
+ // It needs to be initialized by a React component that has access to the useAmplitude hook.
13
+ export const amplitudeTrackEventAtom = atom<
14
+ ((params: TrackEventParams) => Promise<void>) | null
15
+ >(null);
@@ -5,9 +5,8 @@ import {
5
5
  import { atom } from "jotai";
6
6
  import { atomWithStorage } from "jotai/utils";
7
7
  import { VariantInfo } from "src/application/models";
8
- import { UserIdentityService } from "src/application/service/userIdentityService";
8
+ import { UserIdentityContextType } from "src/contexts/userIdentityContext";
9
9
  import { variantInfoAtom } from "src/atoms/app/variant";
10
- import { orgIdAtom, orgShortNameAtom } from "src/atoms/org/org";
11
10
  import { v4 as uuid } from "uuid";
12
11
  import { contextSourceAtom } from "../envive/enviveConfig";
13
12
 
@@ -33,16 +32,20 @@ export const userIdAtom = atom(
33
32
  return maybeUserId;
34
33
  }
35
34
 
36
- return UserIdentityService.getUserIdOrDefault();
35
+ return get(userIdentityAtom)?.getUserIdOrDefault() ?? "";
37
36
  },
38
37
  (_, set, value: string | undefined) => {
39
38
  set(internalUserIdAtom, value);
40
39
  }
41
40
  );
41
+
42
+ export const userIdentityAtom = atom<UserIdentityContextType | undefined>(
43
+ undefined
44
+ );
45
+
42
46
  export const appSourceAtom = atom<ContextSourceEnum>(
43
47
  (get): ContextSourceEnum => get(contextSourceAtom) ?? ContextSourceEnum.App
44
48
  );
45
- export const envAtom = atom<ContextEnvEnum>(ContextEnvEnum.Dev);
46
49
  export const chatIdAtom = atomWithStorage<string>(
47
50
  "v1-spiffy-chat-session-id",
48
51
  uuid(),
@@ -51,16 +54,3 @@ export const chatIdAtom = atomWithStorage<string>(
51
54
  getOnInit: true,
52
55
  }
53
56
  );
54
-
55
- export const appDetailsAtom = atom(
56
- (get): AppDetails => ({
57
- orgId: get(orgIdAtom) ?? "",
58
- // TODO: orgShortName should be available when this atom is created
59
- orgShortName: get(orgShortNameAtom) ?? "spiffy-ai",
60
- chatId: get(chatIdAtom),
61
- userId: get(userIdAtom),
62
- source: get(appSourceAtom),
63
- env: get(envAtom),
64
- variantInfo: get(variantInfoAtom),
65
- })
66
- );
@@ -14,7 +14,7 @@ import {
14
14
  OrgShortName,
15
15
  } from "src/application/models";
16
16
  import { sessionStorageUtil } from "src/atoms/atomStore/atomStore";
17
- import { featureFlagServiceAtom, orgShortNameAtom } from "src/atoms/org/org";
17
+ import { enviveConfigAtom } from "src/atoms/envive/enviveConfig";
18
18
 
19
19
  export interface SupportedEvent
20
20
  extends Pick<
@@ -149,6 +149,14 @@ const internalStorageSupportedEventAtom = atomWithStorage<string | undefined>(
149
149
  );
150
150
  const internalSupportedEventAtom = atom<SupportedEvent | undefined>(undefined);
151
151
 
152
+ const featureFlagServiceAtom = atom((get) => {
153
+ const config = get(enviveConfigAtom);
154
+ const featureOverrides = config?.featureOverrides;
155
+ return {
156
+ isFeatureGateEnabled: (gate: string) => featureOverrides?.[gate] || false,
157
+ };
158
+ });
159
+
152
160
  export const supportedEventAtom = atom(
153
161
  (get): SupportedEvent | undefined => {
154
162
  const maybeSupportedEvent = get(internalStorageSupportedEventAtom);
@@ -170,7 +178,8 @@ export const supportedEventAtom = atom(
170
178
  const featureFlagService = get(featureFlagServiceAtom);
171
179
  const maybeSupportedEvent = get(internalSupportedEventAtom);
172
180
  const variantCategory = maybeSupportedEvent?.category;
173
- const shortName = get(orgShortNameAtom);
181
+ const config = get(enviveConfigAtom);
182
+ const orgShortName = config?.orgShortName;
174
183
 
175
184
  // TODO: clean up this logic & the feature gate when we've fully rolled out
176
185
  if (
@@ -180,8 +189,8 @@ export const supportedEventAtom = atom(
180
189
  ) &&
181
190
  variantCategory &&
182
191
  variantCategory !== SupportedEventProductCategory.Shapewear &&
183
- (shortName === OrgShortName.Spanx ||
184
- shortName === OrgShortName.SpanxStaging)
192
+ (orgShortName === OrgShortName.Spanx ||
193
+ orgShortName === OrgShortName.SpanxStaging)
185
194
  ) {
186
195
  const modifiedSupportedEvent = {
187
196
  supported: false,
@@ -1,12 +1,19 @@
1
- import { UserEventCategory } from '@spiffy-ai/commerce-api-client/dist/models/UserEventCategory';
2
- import { atom } from 'jotai';
3
- import { AmplitudeAdapter, SpiffyMetricsEventName } from 'src/adapters/amplitude';
4
- import { FormSubmittedAttributes, Message, Suggestion, UserEvent } from 'src/application/models';
5
- import { ChatElementDisplayLocation } from 'src/application/models/chatElementDisplayLocation';
6
- import { SpiffyEventName } from 'src/application/models/events';
1
+ import { UserEventCategory } from "@spiffy-ai/commerce-api-client/dist/models/UserEventCategory";
2
+ import { atom } from "jotai";
3
+ import { SpiffyMetricsEventName } from "src/contexts/amplitudeContext";
4
+ import {
5
+ FormSubmittedAttributes,
6
+ Message,
7
+ Suggestion,
8
+ UserEvent,
9
+ } from "src/application/models";
10
+ import { ChatElementDisplayLocation } from "src/application/models/chatElementDisplayLocation";
11
+ import { SpiffyEventName } from "src/application/models/events";
7
12
 
8
13
  export const userHasRepliedAtom = atom<boolean>(false);
9
- export const replyEventCategoryAtom = atom<UserEventCategory>(UserEventCategory.AppLoaded);
14
+ export const replyEventCategoryAtom = atom<UserEventCategory>(
15
+ UserEventCategory.AppLoaded
16
+ );
10
17
  export const userQueryAtom = atom<string>();
11
18
  export const suggestionAtom = atom<Suggestion | undefined>(undefined);
12
19
  export const askQuestionBtnClickedAtom = atom<boolean>(false);
@@ -20,25 +27,28 @@ export const requestFailureAtom = atom<boolean>(false);
20
27
  export const formSubmitAtom = atom<FormSubmittedAttributes>();
21
28
  export const chatOnToggleAtom = atom(
22
29
  null,
23
- (get, set, triggerLocation?: ChatElementDisplayLocation) => {
30
+ (
31
+ get,
32
+ set,
33
+ triggerLocation?: ChatElementDisplayLocation,
34
+ track?: (
35
+ eventName: SpiffyMetricsEventName,
36
+ eventProps?: Record<string, unknown>
37
+ ) => void
38
+ ) => {
24
39
  const isOpen = get(chatIsOpenAtom);
25
40
  set(chatIsOpenAtom, !isOpen);
26
41
 
27
42
  if (!isOpen) {
28
43
  window.dispatchEvent(new CustomEvent(SpiffyEventName.WidgetOpen));
29
- AmplitudeAdapter.trackEvent({
30
- eventName: SpiffyMetricsEventName.ChatComponentExpanded,
31
- eventProps: {
32
- message_metadata: {
33
- trigger_location: triggerLocation,
34
- },
44
+ track?.(SpiffyMetricsEventName.ChatComponentExpanded, {
45
+ message_metadata: {
46
+ trigger_location: triggerLocation,
35
47
  },
36
48
  });
37
49
  } else {
38
50
  window.dispatchEvent(new CustomEvent(SpiffyEventName.WidgetClose));
39
- AmplitudeAdapter.trackEvent({
40
- eventName: SpiffyMetricsEventName.ChatComponentCollapsed,
41
- });
51
+ track?.(SpiffyMetricsEventName.ChatComponentCollapsed);
42
52
  }
43
- },
53
+ }
44
54
  );
@@ -6,8 +6,13 @@ import {
6
6
  UserEvent,
7
7
  } from "src/application/models";
8
8
  import { getAtomStore } from "src/atoms/atomStore/atomStore";
9
- import { appDetailsAtom } from "src/atoms/app";
10
- import { featureFlagServiceAtom } from "src/atoms/org/org";
9
+ import { userIdAtom, chatIdAtom } from "src/atoms/app";
10
+ import {
11
+ orgShortNameAtom,
12
+ contextSourceAtom,
13
+ envAtom,
14
+ } from "src/atoms/envive/enviveConfig";
15
+ import { orgIdAtom, featureFlagServiceAtom } from "src/atoms/org/graphqlConfig";
11
16
 
12
17
  const internalUserEventQueueAtom = atom<UserEvent[]>([]);
13
18
 
@@ -61,6 +66,12 @@ export const userQueueEventCountAtom = atom(
61
66
  (get) => get(userEventQueueAtom).length
62
67
  );
63
68
 
69
+ import {
70
+ ContextSourceEnum,
71
+ ContextEnvEnum,
72
+ } from "@spiffy-ai/commerce-api-client"; // Import necessary enums
73
+ // import type { Context } from "@spiffy-ai/commerce-api-client/dist/models/Context"; // Import Context type
74
+
64
75
  export const createResponsePayload = ({
65
76
  userEvents,
66
77
  generationParams,
@@ -69,14 +80,34 @@ export const createResponsePayload = ({
69
80
  generationParams?: GenerationParams;
70
81
  }): NextMessageRequest => {
71
82
  const atomStore = getAtomStore();
72
- const context = atomStore.get(appDetailsAtom);
83
+ const orgShortName = atomStore.get(orgShortNameAtom);
84
+ const orgId = atomStore.get(orgIdAtom);
85
+ const userId = atomStore.get(userIdAtom);
86
+ const chatId = atomStore.get(chatIdAtom);
87
+ const source = atomStore.get(contextSourceAtom);
88
+ const env = atomStore.get(envAtom);
89
+
73
90
  const featureFlagService = atomStore.get(featureFlagServiceAtom);
74
- const featureFlags = featureFlagService?.getFeatureFlags() || {};
91
+
92
+ const context = {
93
+ userId: userId ?? "",
94
+ org_id: orgId ?? "",
95
+ org_short_name: orgShortName ?? "",
96
+ chat_id: chatId ?? "",
97
+ source: source ?? ContextSourceEnum.App,
98
+ env: (env as ContextEnvEnum) ?? ContextEnvEnum.Dev,
99
+ };
100
+
101
+ const featureFlags =
102
+ featureFlagService?.featureFlagService?.getFeatureFlags() || {};
103
+
75
104
  return {
76
105
  id: uuid(),
77
106
  context,
78
107
  userEvents,
79
- featureFlags,
108
+ featureFlags: Object.fromEntries(
109
+ Object.entries(featureFlags).filter(([, isEnabled]) => isEnabled)
110
+ ), // Convert back to Record<string, boolean>
80
111
  generationParams,
81
112
  };
82
113
  };