@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,52 +0,0 @@
1
- import { DomMutationListener } from './domMutationListener';
2
- import { DomMutationObserverContinuation } from '../../models/domMutationContinuation';
3
-
4
- class DomMutationListenerState {
5
-
6
- private readonly listener: DomMutationListener;
7
-
8
- private currentState: DomMutationObserverContinuation;
9
-
10
- private attached: boolean;
11
-
12
- private currentTryCount: number;
13
-
14
- constructor(listener: DomMutationListener) {
15
- this.listener = listener;
16
- this.currentState = DomMutationObserverContinuation.CONTINUE;
17
- this.attached = false;
18
- this.currentTryCount = 0;
19
- }
20
-
21
- getListener(): DomMutationListener {
22
- return this.listener;
23
- }
24
-
25
- setCurrentState(state: DomMutationObserverContinuation): void {
26
- this.currentState = state;
27
- }
28
-
29
- getCurrentState(): DomMutationObserverContinuation {
30
- return this.currentState;
31
- }
32
-
33
- getIsAttached(): boolean {
34
- return this.attached;
35
- }
36
-
37
- setIsAttached(attached: boolean): void {
38
- this.attached = attached;
39
- }
40
-
41
- getCurrentTryCount(): number {
42
- return this.currentTryCount;
43
- }
44
-
45
- incrementCurrentTryCount(): void {
46
- this.currentTryCount++;
47
- }
48
- }
49
-
50
- export {
51
- DomMutationListenerState
52
- }
@@ -1,41 +0,0 @@
1
- import { DomMutationListener } from '../domMutationListener';
2
- import { DomMutationObserverContinuation } from '../../../models/domMutationContinuation';
3
- import Logger from '../../../logging/logger';
4
-
5
- class EmbeddedChatsPlacementsListener implements DomMutationListener {
6
-
7
- private readonly findPlacementNodes: () => DomMutationObserverContinuation;
8
-
9
- constructor(
10
- findPlacementNodes: () => DomMutationObserverContinuation
11
- ) {
12
- Logger.logDebug('[spiffy-ai] EmbeddedChatsPlacementsListener created', undefined);
13
- this.findPlacementNodes = findPlacementNodes;
14
- }
15
-
16
- runOnceImmediately(): boolean {
17
- return true;
18
- }
19
-
20
- onDomChange(): DomMutationObserverContinuation {
21
- // Too verbose - Logger.logDebug('[spiffy-ai] EmbeddedChatsPlacementsListener onDomChange', undefined);
22
- const continuation = this.findPlacementNodes();
23
- if (continuation === DomMutationObserverContinuation.STOP) {
24
- Logger.logDebug('[spiffy-ai] EmbeddedChatsPlacementsListener [STOP requested]', undefined);
25
- }
26
- return continuation;
27
- }
28
-
29
- getName(): string {
30
- return 'EmbeddedChatsPlacementsListener';
31
- }
32
-
33
- triesMax(): number {
34
- return -1;
35
- }
36
- }
37
-
38
-
39
- export {
40
- EmbeddedChatsPlacementsListener,
41
- };
@@ -1,61 +0,0 @@
1
- import Logger from '../../../logging/logger';
2
- import { DomMutationObserverContinuation } from '../../../models/domMutationContinuation';
3
- import { DomMutationListener } from '../domMutationListener';
4
-
5
- declare global {
6
- interface Window {
7
- Gladly: {
8
- show: () => void;
9
- getUser: () => { identity: string } | undefined;
10
- getAvailability: () => string;
11
- on: (eventName: string, callback: () => void) => void;
12
- };
13
- }
14
- }
15
-
16
- class GladlyListener implements DomMutationListener {
17
- private readonly onGladlyAvailable: () => void;
18
-
19
- private static readonly GLADLY_RETRIES_MAX = 25;
20
-
21
- private static readonly GLADLY_CONVERSATION_STARTED_EVENT_NAME = 'conversation:started';
22
-
23
- constructor(onGladlyAvailable: () => void) {
24
- Logger.logDebug('[spiffy-ai] GladlyListener created', undefined);
25
- this.onGladlyAvailable = onGladlyAvailable;
26
- }
27
-
28
- runOnceImmediately(): boolean {
29
- return false;
30
- }
31
-
32
- triesMax(): number {
33
- return GladlyListener.GLADLY_RETRIES_MAX;
34
- }
35
-
36
- onDomChange(): DomMutationObserverContinuation {
37
- if (
38
- window.Gladly &&
39
- window.Gladly.getUser != null &&
40
- window.Gladly.on != null &&
41
- window.Gladly.show != null
42
- ) {
43
- Logger.logDebug(
44
- `[spiffy-ai] subscribing to Gladly ${GladlyListener.GLADLY_CONVERSATION_STARTED_EVENT_NAME} event`,
45
- );
46
- window.Gladly.on(
47
- GladlyListener.GLADLY_CONVERSATION_STARTED_EVENT_NAME,
48
- this.onGladlyAvailable,
49
- );
50
- return DomMutationObserverContinuation.STOP;
51
- }
52
-
53
- return DomMutationObserverContinuation.CONTINUE;
54
- }
55
-
56
- getName(): string {
57
- return 'GladlyListener';
58
- }
59
- }
60
-
61
- export { GladlyListener };
@@ -1,41 +0,0 @@
1
- import Logger from 'src/application/logging/logger';
2
- import { DomMutationObserverContinuation } from 'src/application/models/domMutationContinuation';
3
- import { DomMutationListener } from 'src/application/service/domMutations/domMutationListener';
4
- import { KustomerIntegrationService } from 'src/application/service/kustomerIntegrationService';
5
-
6
- class KustomerVisibilityListener implements DomMutationListener {
7
- kustomerIntegrationService: KustomerIntegrationService;
8
-
9
- constructor() {
10
- Logger.logDebug('[spiffy-ai] KustomerVisibilityListener created');
11
- this.kustomerIntegrationService = new KustomerIntegrationService();
12
- }
13
-
14
- runOnceImmediately(): boolean {
15
- return true;
16
- }
17
-
18
- triesMax(): number {
19
- return -1;
20
- }
21
-
22
- disconnect(): void {
23
- this.kustomerIntegrationService.disconnect();
24
- }
25
-
26
- onDomChange(): DomMutationObserverContinuation {
27
- this.kustomerIntegrationService.initOnce();
28
-
29
- if (this.kustomerIntegrationService.updateVisibility()) {
30
- return DomMutationObserverContinuation.STOP;
31
- }
32
-
33
- return DomMutationObserverContinuation.CONTINUE;
34
- }
35
-
36
- getName(): string {
37
- return 'KustomerVisibilityListener';
38
- }
39
- }
40
-
41
- export { KustomerVisibilityListener };
@@ -1,119 +0,0 @@
1
- import Logger from 'src/application/logging/logger';
2
- import { OrgAnalyticsConfig } from 'src/application/models/api/orgAnalyticsConfig';
3
- import { DataLayerEventsListener } from 'src/application/service/domMutations/dataLayer/dataLayerEventsListener';
4
- import { ChatElementDisplayLocation } from 'src/application/models/chatElementDisplayLocation';
5
- import { GoogleAnalyticsEvents } from 'src/application/models/googleAnalyticsEvents';
6
- import { AmplitudeAdapter, SpiffyMetricsEventName } from 'src/adapters/amplitude';
7
-
8
- /*
9
- Event Example:
10
- {
11
- "event":"add_to_cart",
12
- "ecommerce":{
13
- "currency":"USD",
14
- "value":196,
15
- "items":[
16
- {
17
- "item_name":"OnCore Open-Bust Mid-Thigh Bodysuit",
18
- "price":98,
19
- "item_brand":"Spanx",
20
- "item_variant":"Very Black / Regular / M",
21
- "index":0,
22
- "item_id":39773564534995,
23
- "quantity":2,
24
- "item_category":"Shapewear",
25
- "item_list_name":"Shapewear",
26
- "item_list_id":"",
27
- "item_colors":"Very Black",
28
- "item_inseam_length":"",
29
- "item_size":"M",
30
- "item_band_size":"",
31
- "item_cup_size":""
32
- }
33
- ]
34
- },
35
- "gtm.uniqueEventId":379
36
- }
37
- */
38
- class OrgsCommonDataLayerListener {
39
- private static dataLayerCache: { [p: string]: DataLayerEventsListener } = {};
40
-
41
- static resetDataLayerCache() {
42
- OrgsCommonDataLayerListener.dataLayerCache = {};
43
- }
44
-
45
- static getSingletonDataLayerListenerCallbackCombo(
46
- orgShortName: string,
47
- orgAnalyticsConfig: OrgAnalyticsConfig,
48
- ) {
49
- // dataLayer event listener and the onMetricsContextInit are tightly coupled to each other. So
50
- // repeated calls to this function MUST return the same instance of the listener and the callback
51
- // combo. PM 01/27/2024
52
-
53
- if (!orgAnalyticsConfig.googleAnalytics) {
54
- Logger.logError(
55
- `[spiffy-ai] Google Analytics config is required for dataLayer event listener`,
56
- orgAnalyticsConfig,
57
- );
58
- return undefined;
59
- }
60
-
61
- const allCachedDataLayerListeners = Object.keys(
62
- OrgsCommonDataLayerListener.dataLayerCache,
63
- )?.length;
64
- if (allCachedDataLayerListeners > 1) {
65
- // This is expected to be always == 1 max. If it is more than 1, then there is a bug in the code.
66
- Logger.logError(
67
- `[spiffy-ai] dataLayer listeners cache size: ${allCachedDataLayerListeners}`,
68
- OrgsCommonDataLayerListener.dataLayerCache,
69
- );
70
- }
71
-
72
- if (OrgsCommonDataLayerListener.dataLayerCache[orgShortName]) {
73
- const dataLayerListener = OrgsCommonDataLayerListener.dataLayerCache[orgShortName];
74
- return { dataLayerListener };
75
- }
76
-
77
- const callback = (event: object) => {
78
- Logger.logDebug(`[spiffy-ai] dataLayer event:`, event);
79
- if (
80
- // @ts-expect-error: event is not typed
81
- event?.event !== GoogleAnalyticsEvents.ADD_TO_CART_v1 &&
82
- // @ts-expect-error: event is not typed
83
- event?.event !== GoogleAnalyticsEvents.ADD_TO_CART_v2
84
- ) {
85
- Logger.logDebug(`[spiffy-ai] dataLayer [pass-through] event. event_not_captured=`, event);
86
- return;
87
- }
88
-
89
- // @ts-expect-error: event is not typed
90
- const items = event?.ecommerce?.items || event?.items;
91
- const itemIdList = items?.map((item: any) => item?.item_id).filter((id: any) => id);
92
- const itemCategoryList = items
93
- ?.map((item: any) => item?.item_category)
94
- .filter((category: any) => category);
95
- const eventProps = {
96
- 'ecommerce.item_id_list': itemIdList,
97
- 'ecommerce.item_category_list': itemCategoryList,
98
- display_location: ChatElementDisplayLocation.UNSPECIFIED,
99
- };
100
- AmplitudeAdapter.trackEvent({
101
- eventName: SpiffyMetricsEventName.AddToCartClicked,
102
- eventProps,
103
- alsoSendToGoogleAnalytics: true,
104
- });
105
- };
106
-
107
- const dataLayerListener = new DataLayerEventsListener(
108
- callback,
109
- [GoogleAnalyticsEvents.ADD_TO_CART_v1, GoogleAnalyticsEvents.ADD_TO_CART_v2],
110
- orgAnalyticsConfig.googleAnalytics,
111
- );
112
-
113
- OrgsCommonDataLayerListener.dataLayerCache[orgShortName] = dataLayerListener;
114
-
115
- return { dataLayerListener };
116
- }
117
- }
118
-
119
- export { OrgsCommonDataLayerListener };
@@ -1,130 +0,0 @@
1
- import Logger from 'src/application/logging/logger';
2
- import { StatsigFeatureGate } from '@spiffy-ai/commerce-api-client';
3
- import { FeatureGates } from 'src/application/models/featureGates';
4
- import { SessionStorageService } from 'src/application/service/sessionStorageService';
5
- import { OrgConfigFeatureGate } from 'src/application/models/api/orgConfigResults';
6
-
7
- const FEATURE_FLAGS_STORAGE_KEY = 'spiffy-feature-flags';
8
-
9
- class FeatureFlagService {
10
- constructor(private readonly featureGates: OrgConfigFeatureGate[]) {}
11
-
12
- private getQueryParamFeatureGateOverrides = (featureGate: FeatureGates): boolean | undefined => {
13
- const urlObj = new URL(window.location.href);
14
- const params = new URLSearchParams(urlObj.search);
15
- const paramsObj = Object.fromEntries(params.entries());
16
- const value = paramsObj[featureGate];
17
-
18
- if (value != null) {
19
- return value === 'true';
20
- }
21
-
22
- return undefined;
23
- };
24
-
25
- private getWindowFeatureGateOverrides = (featureGate: FeatureGates): boolean | undefined => {
26
- const value = window._spiffy?.featureOverrides?.[String(featureGate)];
27
- if (value != null) {
28
- return value;
29
- }
30
-
31
- return undefined;
32
- };
33
-
34
- private getStoredFeatureGateOverrides = (featureGate: FeatureGates): boolean | undefined => {
35
- const featureFlags = SessionStorageService.getItem(FEATURE_FLAGS_STORAGE_KEY);
36
-
37
- if (featureFlags) {
38
- try {
39
- const featureFlagsObj = JSON.parse(featureFlags);
40
- return featureFlagsObj[featureGate];
41
- } catch (err) {
42
- Logger.logError(
43
- '[spiffy-ai] getStoredFeatureGateOverrides: error parsing feature flags',
44
- err,
45
- );
46
- }
47
- }
48
-
49
- return undefined;
50
- };
51
-
52
- public persistFeatureGateOverrides() {
53
- const featureFlags = Object.values(FeatureGates)
54
- .map((featureGate) => ({
55
- [featureGate]: this.getFeatureFlagOverride(featureGate),
56
- }))
57
- .filter((_, val) => val !== undefined)
58
- .reduce((acc, curr) => ({ ...acc, ...curr }), {});
59
- SessionStorageService.setItem(FEATURE_FLAGS_STORAGE_KEY, JSON.stringify(featureFlags));
60
- }
61
-
62
- private getFeatureFlagOverride(featureGate: FeatureGates): boolean | undefined {
63
- const queryOverride = this.getQueryParamFeatureGateOverrides(featureGate);
64
- if (queryOverride != null) {
65
- Logger.logDebug(
66
- `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by URL param. New value: ${queryOverride}`,
67
- );
68
- return queryOverride;
69
- }
70
-
71
- const windowOverride = this.getWindowFeatureGateOverrides(featureGate);
72
- if (windowOverride != null) {
73
- Logger.logDebug(
74
- `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by window param. New value: ${windowOverride}`,
75
- );
76
- return windowOverride;
77
- }
78
-
79
- const storedOverride = this.getStoredFeatureGateOverrides(featureGate);
80
- if (storedOverride != null) {
81
- Logger.logDebug(
82
- `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} overridden by stored value. New value: ${storedOverride}`,
83
- );
84
- return storedOverride;
85
- }
86
-
87
- return undefined;
88
- }
89
-
90
- public isFeatureGateEnabled(featureGate: FeatureGates): boolean {
91
- const gateValue = this.featureGates.find((gate) => gate.name === featureGate);
92
-
93
- const featureFlagOverride = this.getFeatureFlagOverride(featureGate);
94
- if (featureFlagOverride !== undefined) {
95
- return featureFlagOverride;
96
- }
97
-
98
- if (gateValue == null || gateValue.value == null) {
99
- Logger.logDebug(
100
- `[spiffy-ai] isFeatureGateEnabled featureGate:${featureGate} value is undefined - returning false`,
101
- );
102
-
103
- return false;
104
- }
105
-
106
- return gateValue.value;
107
- }
108
-
109
- public isClientSessionEnabled(): boolean {
110
- const gates: Array<StatsigFeatureGate> | undefined = this.featureGates;
111
- const isEnabled =
112
- gates == null ||
113
- gates?.filter(
114
- (gate) => gate.name === FeatureGates.IsClientSessionEnabled && gate.value === true,
115
- ).length > 0;
116
-
117
- return isEnabled;
118
- }
119
-
120
- public getFeatureFlags(): Record<string, boolean> {
121
- return Object.fromEntries(
122
- Object.values(FeatureGates).map((featureGate: FeatureGates) => [
123
- featureGate,
124
- this.isFeatureGateEnabled(featureGate),
125
- ]),
126
- );
127
- }
128
- }
129
-
130
- export { FeatureFlagService };
@@ -1,59 +0,0 @@
1
- import Logger from "src/application/logging/logger";
2
- import { GraphQLClient } from "src/adapters/spiffy/commerce/graphql";
3
- import { AtomStore } from "src/atoms/atomStore/atomStore";
4
- import {
5
- internalGraphQLColorsConfigAtom,
6
- frontendConfigAtom,
7
- } from "src/atoms/org/graphqlConfig";
8
- import { getOrgUIConfig } from "src/atoms/org/orgUIConfig";
9
-
10
- /**
11
- * Service for handling GraphQL configuration fetching and management
12
- * This service is separated to avoid circular dependencies between atoms
13
- */
14
- export class GraphQLConfigService {
15
- /**
16
- * Fetches GraphQL configuration and updates the relevant atoms
17
- * @param atomStore - The atom store instance to use for setting values
18
- */
19
- static async fetchAndSetGraphQLConfig(atomStore: AtomStore): Promise<void> {
20
- try {
21
- Logger.logDebug("GraphQLConfigService: Starting GraphQL client fetch");
22
-
23
- const { colorsConfig, frontendConfig } =
24
- (await GraphQLClient.getColorsAndFrontendConfig()) ?? {};
25
-
26
- Logger.logDebug("GraphQLConfigService: GraphQL fetch completed", {
27
- hasColorsConfig: !!colorsConfig,
28
- hasFrontendConfig: !!frontendConfig,
29
- frontendConfigKeys: frontendConfig ? Object.keys(frontendConfig) : [],
30
- });
31
-
32
- // Get the current frontend config from the atom store
33
- const rawFrontendConfig = atomStore.get(frontendConfigAtom);
34
-
35
- // Update the atoms with the fetched data
36
- atomStore.set(internalGraphQLColorsConfigAtom, colorsConfig);
37
-
38
- atomStore.set(frontendConfigAtom, {
39
- ...rawFrontendConfig,
40
- pageVariants: frontendConfig?.pageVariants,
41
- mountingConfigs: frontendConfig?.mountingConfigs,
42
- widgetConfigs: frontendConfig?.widgetConfigs,
43
- });
44
-
45
- Logger.logDebug("GraphQLConfigService: Starting UI config fetch");
46
- await getOrgUIConfig(
47
- frontendConfig?.uiConfigs,
48
- frontendConfig?.merchantOverrideCss
49
- );
50
- Logger.logDebug("GraphQLConfigService: UI config fetch completed");
51
- } catch (error) {
52
- Logger.logError(
53
- "GraphQLConfigService: Error during GraphQL config fetch",
54
- error
55
- );
56
- throw error; // Re-throw to be caught by the caller
57
- }
58
- }
59
- }
@@ -1,32 +0,0 @@
1
- // services
2
- export * from "./cachingService";
3
- export * from "./cdnService";
4
- export * from "./domMutationObserver";
5
- export * from "./featureFlagService";
6
- export * from "./graphqlConfigService";
7
- export * from "./kustomerIntegrationService";
8
- export * from "./localStorageService";
9
- export * from "./pageVariantService";
10
- export * from "./searchService";
11
- export * from "./sessionStorageService";
12
- export * from "./shopifyUrlService";
13
- export * from "./userIdentityService";
14
- export * from "./windowChatToggleService";
15
- export * from "./windowDataLayerService";
16
- export * from "./windowFrontendConfigService";
17
-
18
- // customerService
19
- export * from "./customerService";
20
- export * from "./customerService/types";
21
- export * from "./customerService/providers/UnsupportedCustomerService";
22
-
23
- // domMutations
24
- export * from "./domMutations/domInsertionService";
25
- export * from "./domMutations/domMutationListener";
26
- export * from "./domMutations/domMutationListenerState";
27
- export * from "./domMutations/GridInsertionService";
28
- export * from "./domMutations/dataLayer/dataLayerEventsListener";
29
- export * from "./domMutations/floatingChat/embeddedChatsPlacementsListener";
30
- export * from "./domMutations/gladly/gladlyListener";
31
- export * from "./domMutations/spiffy/orgs/common/kustomerVisibilityListener";
32
- export * from "./domMutations/spiffy/orgs/common/orgsCommonDataLayerListener";
@@ -1,111 +0,0 @@
1
- import { LocalStorageService } from './localStorageService';
2
- import Logger from '../logging/logger';
3
-
4
- interface KustomerState {
5
- wasWidgetOpen: boolean;
6
- }
7
-
8
- class KustomerIntegrationService {
9
- static KUSTOMER_LOCAL_STORAGE_KEY = 'kustomerState';
10
-
11
- static KUSTOMER_IFRAME_ID = 'kustomer-ui-sdk-iframe';
12
-
13
- initialized: boolean;
14
-
15
- constructor() {
16
- Logger.logDebug('[spiffy-ai] KustomerIntegrationService created', undefined);
17
- this.initialized = false;
18
- }
19
-
20
- initOnce(): void {
21
- if (this.initialized) {
22
- return;
23
- }
24
- const This = this;
25
- LocalStorageService.attachListener({
26
- storageKey: KustomerIntegrationService.KUSTOMER_LOCAL_STORAGE_KEY,
27
- listener: (event) => This.onCustomerStateChange(event),
28
- });
29
- this.initialized = true;
30
- }
31
-
32
- disconnect(): void {
33
- Logger.logDebug('[spiffy-ai] Disconnecting KustomerIntegrationService');
34
- const This = this;
35
- LocalStorageService.detachListener({
36
- storageKey: KustomerIntegrationService.KUSTOMER_LOCAL_STORAGE_KEY,
37
- listener: (event) => This.onCustomerStateChange(event),
38
- });
39
- const elementRef = this.findKustomerButton();
40
- if (elementRef == null) {
41
- Logger.logDebug('[spiffy-ai] Kustomer iFrame element not found');
42
- return;
43
- }
44
- elementRef.style.visibility = 'visible';
45
- }
46
-
47
- /**
48
- * Updates the visibility of the Kustomer chat icon.
49
- */
50
- updateVisibility(): boolean {
51
- const elementRef = this.findKustomerButton();
52
- if (elementRef == null) {
53
- Logger.logDebug('[spiffy-ai] Kustomer iFrame element not found');
54
- return false;
55
- }
56
-
57
- let kustomerStateStorageItem = LocalStorageService.getItem(
58
- KustomerIntegrationService.KUSTOMER_LOCAL_STORAGE_KEY,
59
- );
60
- if (kustomerStateStorageItem == null) {
61
- Logger.logDebug('[spiffy-ai] Kustomer state not found in local storage (defaulting)');
62
- kustomerStateStorageItem = JSON.stringify({ wasWidgetOpen: false });
63
- }
64
-
65
- const kustomerState: KustomerState = JSON.parse(kustomerStateStorageItem);
66
- const visibility = kustomerState.wasWidgetOpen ? 'visible' : 'hidden';
67
- elementRef.style.visibility = visibility;
68
- Logger.logDebug(
69
- `[spiffy-ai] Kustomer widget was ${kustomerState.wasWidgetOpen ? 'open' : 'closed'}, setting visibility to ${visibility}`,
70
- );
71
- return true;
72
- }
73
-
74
- /**
75
- * Queries the document body for the Kustomer SDK iframe. This function is to be run in a
76
- * MutationObserver.
77
- * @returns the iframe element if it exists, else undefine.
78
- */
79
- findKustomerButton(): HTMLIFrameElement | undefined {
80
- Logger.logDebug('[spiffy-ai] Finding Kustomer button');
81
- const parentDocument = window.document;
82
- const kustomerElement =
83
- parentDocument.getElementById(KustomerIntegrationService.KUSTOMER_IFRAME_ID) ?? undefined;
84
-
85
- if (kustomerElement != null && kustomerElement instanceof HTMLIFrameElement) {
86
- return kustomerElement;
87
- }
88
-
89
- Logger.logDebug('[spiffy-ai] Kustomer iFrame element not found');
90
- return undefined;
91
- }
92
-
93
- /**
94
- * Updates the Kustomer chat icon visibility when the kustomerState localStorage item changes.
95
- * @param event The event that triggered the event listener.
96
- */
97
- onCustomerStateChange(event: StorageEvent): void {
98
- if (
99
- event.key === KustomerIntegrationService.KUSTOMER_LOCAL_STORAGE_KEY &&
100
- event.newValue != null
101
- ) {
102
- Logger.logDebug(
103
- `[spiffy-ai] Storage change key=${event.key}, updating widget visibility`,
104
- event.newValue,
105
- );
106
- this.updateVisibility();
107
- }
108
- }
109
- }
110
-
111
- export { KustomerIntegrationService };