@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,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
+ };
@@ -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
  };