@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
@@ -0,0 +1,322 @@
1
+ import { FeatureGates } from "./models-UZ6HszfZ.js";
2
+ import { OrgShortName } from "./types--pr1GQQx.js";
3
+ import { logger_default } from "./api-DjeZXxl_.js";
4
+ import { EventsDispatcher, SpiffyEvent } from "./events-BrLpaNxh.js";
5
+ import { LocalStorageKeys, amplitudeApiKeyAtom, contextSourceAtom, dataResidencyAtom, envAtom, enviveConfigAtom, identifyingPrefixAtom, useLocalStorage } from "./enviveConfig-CzhTz8Aa.js";
6
+ import { orgAnalyticsGoogleAnalyticsConfigAtom } from "./orgAnalyticsConfig-ClrFy2qH.js";
7
+ import { userIdAtom } from "./app-CjsQ2_n-.js";
8
+ import React, { createContext, useCallback, useContext, useEffect, useMemo } from "react";
9
+ import { useAtomValue, useSetAtom } from "jotai";
10
+ import { createInstance } from "@amplitude/analytics-browser";
11
+ import { jsx } from "react/jsx-runtime";
12
+
13
+ //#region src/contexts/enviveConfigContext.tsx
14
+ const EnviveConfigContext = createContext(void 0);
15
+ const EnviveConfigProvider = ({ children, amplitudeApiKey, dataResidency, env, baseUrl, reactAppName, cdnUrl, contextSource, orgLevelApiKey, orgShortName, identifyingPrefix, featureOverrides, variantUrlOverride, variantInfoOverride, show, publicKey, featureGates }) => {
16
+ const setEnviveConfig = useSetAtom(enviveConfigAtom);
17
+ const config = {
18
+ amplitudeApiKey,
19
+ dataResidency,
20
+ env,
21
+ baseUrl,
22
+ reactAppName,
23
+ cdnUrl,
24
+ contextSource,
25
+ orgLevelApiKey,
26
+ orgShortName,
27
+ identifyingPrefix,
28
+ featureOverrides,
29
+ variantUrlOverride,
30
+ variantInfoOverride,
31
+ show,
32
+ publicKey,
33
+ featureGates
34
+ };
35
+ useEffect(() => {
36
+ setEnviveConfig(config);
37
+ logger_default.logDebug("EnviveConfigProvider: Setting EnviveConfig", config);
38
+ }, [setEnviveConfig, config]);
39
+ return /* @__PURE__ */ jsx(EnviveConfigContext.Provider, {
40
+ value: config,
41
+ children: config ? children : null
42
+ });
43
+ };
44
+ const useEnviveConfig = () => {
45
+ const config = useAtomValue(enviveConfigAtom);
46
+ return config ? config : {};
47
+ };
48
+
49
+ //#endregion
50
+ //#region src/contexts/amplitudeContext.tsx
51
+ let SpiffyMetricsEventName = /* @__PURE__ */ function(SpiffyMetricsEventName$1) {
52
+ SpiffyMetricsEventName$1["BundleLoaded"] = "Bundle Loaded";
53
+ SpiffyMetricsEventName$1["ChatLiveAgentBtnClick"] = "Chat Live Agent Btn Click";
54
+ SpiffyMetricsEventName$1["ChatFloatingButtonVisible"] = "Chat Floating Button Visible";
55
+ SpiffyMetricsEventName$1["ChatComponentVisible"] = "Chat Component Visible";
56
+ SpiffyMetricsEventName$1["ChatComponentExpanded"] = "Chat Component Expanded";
57
+ SpiffyMetricsEventName$1["ChatComponentCollapsed"] = "Chat Component Collapsed";
58
+ SpiffyMetricsEventName$1["ChatUserMessageInput"] = "Chat User Message Input";
59
+ SpiffyMetricsEventName$1["ChatSuggestionClicked"] = "Chat Suggestion Clicked";
60
+ SpiffyMetricsEventName$1["ChatAssistantResponse"] = "Chat Assistant Response";
61
+ SpiffyMetricsEventName$1["ProductCardClicked"] = "Product Card Clicked";
62
+ SpiffyMetricsEventName$1["ProductReviewCardClicked"] = "Product Review Card Clicked";
63
+ SpiffyMetricsEventName$1["AddToCartClicked"] = "Add to Cart Clicked";
64
+ SpiffyMetricsEventName$1["PromptCardClicked"] = "Prompt Card Clicked";
65
+ SpiffyMetricsEventName$1["SupportedEvent"] = "Supported Event";
66
+ SpiffyMetricsEventName$1["SearchBackToResponseClicked"] = "Search Back to Response Clicked";
67
+ SpiffyMetricsEventName$1["PerformanceMetrics"] = "Performance Metrics";
68
+ SpiffyMetricsEventName$1["SearchBarClicked"] = "Search Bar Clicked";
69
+ SpiffyMetricsEventName$1["OrderLookupStarted"] = "Order Lookup Started";
70
+ SpiffyMetricsEventName$1["OrderLookupFormSubmitted"] = "Order Lookup Form Submitted";
71
+ SpiffyMetricsEventName$1["SearchComponentVisible"] = "Search Component Visible";
72
+ SpiffyMetricsEventName$1["SearchZeroStateSuggestionClicked"] = "Search Zero State Suggestion Clicked";
73
+ SpiffyMetricsEventName$1["SearchInputStarted"] = "Search Input Started";
74
+ SpiffyMetricsEventName$1["SearchQuerySubmitted"] = "Search Query Submitted";
75
+ SpiffyMetricsEventName$1["SearchResultsViewed"] = "Search Results Viewed";
76
+ SpiffyMetricsEventName$1["SearchTimeToFirstClick"] = "Search Time to First Click";
77
+ SpiffyMetricsEventName$1["SearchZeroResultsRate"] = "Search Zero Results Rate";
78
+ SpiffyMetricsEventName$1["SearchFilterClicked"] = "Search Filter Clicked";
79
+ SpiffyMetricsEventName$1["SearchSortClicked"] = "Search Sort Clicked";
80
+ return SpiffyMetricsEventName$1;
81
+ }({});
82
+ const AmplitudeContext = createContext(null);
83
+ const AmplitudeProvider = ({ children }) => {
84
+ const userId = useAtomValue(userIdAtom);
85
+ const amplitudeApiKey = useAtomValue(amplitudeApiKeyAtom);
86
+ const dataResidency = useAtomValue(dataResidencyAtom);
87
+ const orgGaConfig = useAtomValue(orgAnalyticsGoogleAnalyticsConfigAtom);
88
+ const env = useAtomValue(envAtom);
89
+ const contextSource = useAtomValue(contextSourceAtom);
90
+ useAtomValue(identifyingPrefixAtom);
91
+ const { getItem } = useLocalStorage();
92
+ const { publicKey, featureOverrides, variantUrlOverride, variantInfoOverride, show, orgShortName, featureGates } = useEnviveConfig();
93
+ const useFeatureFlagService = () => {
94
+ const isFeatureGateEnabled = useCallback((gate) => {
95
+ const override = featureOverrides?.[gate];
96
+ if (override !== void 0) return override;
97
+ return featureGates?.some((fg) => fg.name === gate && fg.value) || false;
98
+ }, [featureOverrides, featureGates]);
99
+ const isClientSessionEnabled = useCallback(() => {
100
+ return isFeatureGateEnabled(FeatureGates.IsClientSessionEnabled);
101
+ }, [isFeatureGateEnabled]);
102
+ const getFeatureFlags = useCallback(() => {
103
+ const flags = {};
104
+ if (featureOverrides) Object.entries(featureOverrides).forEach(([key, value$1]) => {
105
+ flags[key] = value$1;
106
+ });
107
+ if (featureGates) featureGates.forEach((fg) => {
108
+ if (fg.name) flags[fg.name] = Boolean(fg.value);
109
+ });
110
+ return flags;
111
+ }, [featureOverrides, featureGates]);
112
+ return {
113
+ isFeatureGateEnabled,
114
+ isClientSessionEnabled,
115
+ getFeatureFlags
116
+ };
117
+ };
118
+ const featureFlagService = useFeatureFlagService();
119
+ const [amplitudeClient, setAmplitudeClient] = React.useState(void 0);
120
+ const [internalEventTrackingEnrichment, setInternalEventTrackingEnrichment] = React.useState(void 0);
121
+ const [supplementalDefaultProps, setSupplementalDefaultProps] = React.useState({});
122
+ const isReady = Boolean(userId && featureFlagService && amplitudeApiKey);
123
+ const getDefaultTrackingProps = useCallback(() => {
124
+ const gatesProps = featureGates ? featureGates.reduce((acc, curr) => {
125
+ if (curr.name && curr.value != null) return {
126
+ ...acc,
127
+ [`feature_gate.${curr.name}`]: curr.value
128
+ };
129
+ return acc;
130
+ }, {}) : {};
131
+ const experimentProps = {};
132
+ return {
133
+ ...gatesProps,
134
+ ...experimentProps,
135
+ ...supplementalDefaultProps,
136
+ app_id: "commerce-chat-react-component",
137
+ chat_id: getItem(LocalStorageKeys.ChatId),
138
+ env: env || "unknown",
139
+ app_source: contextSource,
140
+ "org.short_name": orgShortName,
141
+ "user.id": userId,
142
+ "cdp.user_id": null,
143
+ "cdp.provider": null,
144
+ "event.source": "web-browser",
145
+ "event.type": "user-activity",
146
+ "event.id": null,
147
+ "event.channel": "web",
148
+ "event.timestamp": null
149
+ };
150
+ }, [
151
+ featureGates,
152
+ supplementalDefaultProps,
153
+ env,
154
+ contextSource,
155
+ orgShortName,
156
+ userId
157
+ ]);
158
+ const eventPropsToPrefixedEventProps = useCallback((eventName, eventProps) => {
159
+ const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
160
+ return Object.entries(eventProps).reduce((acc, [key, value$1]) => {
161
+ acc[`${prefix}.${key}`] = value$1;
162
+ return acc;
163
+ }, {});
164
+ }, []);
165
+ const amplitudeSessionReplayInit = useCallback(() => {
166
+ const isEnabled = Boolean(orgShortName === OrgShortName.UniqueVintage && featureFlagService?.isClientSessionEnabled() && featureFlagService?.isFeatureGateEnabled(FeatureGates.IsNewFeatureEnabled));
167
+ const sampleRate = 1;
168
+ try {
169
+ logger_default.logDebug(`[spiffy-ai] amplitude session-replay initializing isEnabled=${isEnabled} sampleRate=${sampleRate}`);
170
+ if (!isEnabled) return isEnabled;
171
+ return isEnabled;
172
+ } catch (e) {
173
+ logger_default.logError("[spiffy-ai] Error initializing amplitude session-replay", e);
174
+ return false;
175
+ }
176
+ }, [orgShortName, featureFlagService]);
177
+ const getEventTrackingEnrichment = useCallback(() => {
178
+ if (internalEventTrackingEnrichment !== void 0) return internalEventTrackingEnrichment;
179
+ const enrichment = {
180
+ name: "page-view-tracking-enrichment",
181
+ type: "enrichment",
182
+ setup: async () => void 0,
183
+ execute: async (event) => {
184
+ let enrichedEvent;
185
+ if (["[Amplitude] Page Viewed", `[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`].includes(event.event_type)) {
186
+ const globalProperties = {};
187
+ if (publicKey) globalProperties["globalProperties.publicKey"] = publicKey;
188
+ if (featureOverrides) Object.entries(featureOverrides).forEach(([key, value$1]) => {
189
+ globalProperties[`globalProperties.featureOverrides.${key}`] = String(value$1);
190
+ });
191
+ if (variantUrlOverride) globalProperties["globalProperties.variantUrlOverride"] = variantUrlOverride;
192
+ if (variantInfoOverride) globalProperties["globalProperties.variantInfoOverride"] = JSON.stringify(variantInfoOverride);
193
+ if (show != null) globalProperties["globalProperties.show"] = String(show);
194
+ const enabledFeatures = featureFlagService.getFeatureFlags();
195
+ const enabledFeaturesProperties = Object.entries(enabledFeatures).reduce((acc, [key, value$1]) => ({
196
+ ...acc,
197
+ [`enabledFeatures.${key}`]: `${value$1}`
198
+ }), {});
199
+ const timingProperties = { "timing.enriched_at_ms": window.performance?.now() };
200
+ enrichedEvent = {
201
+ ...event,
202
+ event_properties: {
203
+ ...event.event_properties,
204
+ ...getDefaultTrackingProps(),
205
+ ...globalProperties,
206
+ ...enabledFeaturesProperties,
207
+ ...timingProperties
208
+ }
209
+ };
210
+ } else enrichedEvent = event;
211
+ EventsDispatcher.dispatch(SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
212
+ return enrichedEvent;
213
+ }
214
+ };
215
+ setInternalEventTrackingEnrichment(enrichment);
216
+ return enrichment;
217
+ }, [
218
+ internalEventTrackingEnrichment,
219
+ getDefaultTrackingProps,
220
+ featureFlagService,
221
+ publicKey,
222
+ featureOverrides,
223
+ variantUrlOverride,
224
+ variantInfoOverride,
225
+ show
226
+ ]);
227
+ useEffect(() => {
228
+ if (isReady && !amplitudeClient) {
229
+ const currentAmplitudeInstance = createInstance();
230
+ const isSessionsEnabled = amplitudeSessionReplayInit();
231
+ currentAmplitudeInstance.add(getEventTrackingEnrichment());
232
+ currentAmplitudeInstance.init(amplitudeApiKey, userId, {
233
+ serverZone: dataResidency,
234
+ trackingOptions: { ipAddress: true },
235
+ autocapture: {
236
+ attribution: true,
237
+ pageViews: { trackHistoryChanges: "pathOnly" },
238
+ sessions: isSessionsEnabled,
239
+ formInteractions: false,
240
+ fileDownloads: false
241
+ }
242
+ });
243
+ setAmplitudeClient(currentAmplitudeInstance);
244
+ }
245
+ }, [
246
+ isReady,
247
+ amplitudeClient,
248
+ amplitudeApiKey,
249
+ userId,
250
+ dataResidency,
251
+ amplitudeSessionReplayInit,
252
+ getEventTrackingEnrichment
253
+ ]);
254
+ const trackEvent = useCallback(async ({ eventName, eventProps, eventGroups, alsoSendToGoogleAnalytics = false }) => {
255
+ try {
256
+ const decoratedEventName = `[Spiffy] ${eventName}`;
257
+ if (!amplitudeClient) {
258
+ logger_default.logWarn("amplitude client undefined", void 0, { event_name: decoratedEventName });
259
+ return;
260
+ }
261
+ const eventData = JSON.stringify({
262
+ eventName,
263
+ eventProps,
264
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
265
+ });
266
+ const data = new TextEncoder().encode(eventData);
267
+ const hashBuffer = await crypto.subtle.digest("SHA-256", data);
268
+ const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
269
+ logger_default.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
270
+ event_name: decoratedEventName,
271
+ props: eventProps
272
+ });
273
+ amplitudeClient.track(decoratedEventName, {
274
+ ...getDefaultTrackingProps(),
275
+ ...eventProps,
276
+ ...eventProps ? eventPropsToPrefixedEventProps(eventName, eventProps) : {}
277
+ }, {
278
+ ...eventGroups,
279
+ insert_id: currentInsertId
280
+ });
281
+ if (alsoSendToGoogleAnalytics && orgGaConfig) {
282
+ logger_default.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
283
+ if (window.dataLayer) window.dataLayer.push({
284
+ event: decoratedEventName,
285
+ eventProps
286
+ });
287
+ }
288
+ } catch (err) {
289
+ logger_default.logError("[spiffy-ai] Error tracking event", err, {
290
+ eventName,
291
+ eventProps
292
+ });
293
+ }
294
+ }, [
295
+ amplitudeClient,
296
+ getDefaultTrackingProps,
297
+ eventPropsToPrefixedEventProps,
298
+ orgGaConfig
299
+ ]);
300
+ const value = useMemo(() => ({
301
+ trackEvent,
302
+ isReady,
303
+ setSupplementalDefaultProps: (props) => setSupplementalDefaultProps(props)
304
+ }), [
305
+ trackEvent,
306
+ isReady,
307
+ setSupplementalDefaultProps
308
+ ]);
309
+ return /* @__PURE__ */ jsx(AmplitudeContext.Provider, {
310
+ value,
311
+ children
312
+ });
313
+ };
314
+ const useAmplitude = () => {
315
+ const context = useContext(AmplitudeContext);
316
+ if (!context) throw new Error("useAmplitude must be used within AmplitudeProvider");
317
+ return context;
318
+ };
319
+
320
+ //#endregion
321
+ export { AmplitudeProvider, EnviveConfigProvider, SpiffyMetricsEventName, useAmplitude, useEnviveConfig };
322
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC1oWTNjYVBDNi5qcyIsIm5hbWVzIjpbIkVudml2ZUNvbmZpZ1Byb3ZpZGVyOiBSZWFjdC5GQzxFbnZpdmVDb25maWdQcm92aWRlclByb3BzPiIsImNvbmZpZzogRW52aXZlQ29uZmlnIiwiQW1wbGl0dWRlUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiIsImZsYWdzOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiIsInZhbHVlIiwiZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiIsImVucmljaGVkRXZlbnQ6IEV2ZW50IiwiZ2xvYmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9lbnZpdmVDb25maWdDb250ZXh0LnRzeCIsIi4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgUmVhY3ROb2RlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNldEF0b20sIHVzZUF0b21WYWx1ZSB9IGZyb20gXCJqb3RhaVwiO1xuaW1wb3J0IHR5cGUgeyBFbnZpdmVDb25maWcgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZW52aXZlQ29uZmlnQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZ1wiO1xuaW1wb3J0IExvZ2dlciBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyXCI7XG5pbXBvcnQgeyBPcmdDb25maWdGZWF0dXJlR2F0ZSB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzXCI7XG5cbmNvbnN0IEVudml2ZUNvbmZpZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0PEVudml2ZUNvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuaW50ZXJmYWNlIEVudml2ZUNvbmZpZ1Byb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBhbXBsaXR1ZGVBcGlLZXk/OiBzdHJpbmc7XG4gIGRhdGFSZXNpZGVuY3k/OiBzdHJpbmc7XG4gIGVudj86IHN0cmluZztcbiAgYmFzZVVybD86IHN0cmluZztcbiAgcmVhY3RBcHBOYW1lPzogc3RyaW5nO1xuICBjZG5Vcmw/OiBzdHJpbmc7XG4gIGNvbnRleHRTb3VyY2U/OiBzdHJpbmc7XG4gIG9yZ0xldmVsQXBpS2V5Pzogc3RyaW5nO1xuICBvcmdTaG9ydE5hbWU/OiBzdHJpbmc7XG4gIGlkZW50aWZ5aW5nUHJlZml4OiBzdHJpbmc7XG4gIGZlYXR1cmVPdmVycmlkZXM/OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbiAgdmFyaWFudFVybE92ZXJyaWRlPzogc3RyaW5nO1xuICB2YXJpYW50SW5mb092ZXJyaWRlPzogYW55O1xuICBzaG93PzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICBmZWF0dXJlR2F0ZXM/OiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdOyAvLyBOZXcgcHJvcCBmb3IgZmVhdHVyZSBnYXRlc1xufVxuXG5leHBvcnQgY29uc3QgRW52aXZlQ29uZmlnUHJvdmlkZXI6IFJlYWN0LkZDPEVudml2ZUNvbmZpZ1Byb3ZpZGVyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIGFtcGxpdHVkZUFwaUtleSxcbiAgZGF0YVJlc2lkZW5jeSxcbiAgZW52LFxuICBiYXNlVXJsLFxuICByZWFjdEFwcE5hbWUsXG4gIGNkblVybCxcbiAgY29udGV4dFNvdXJjZSxcbiAgb3JnTGV2ZWxBcGlLZXksXG4gIG9yZ1Nob3J0TmFtZSxcbiAgaWRlbnRpZnlpbmdQcmVmaXgsXG4gIGZlYXR1cmVPdmVycmlkZXMsXG4gIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgc2hvdyxcbiAgcHVibGljS2V5LFxuICBmZWF0dXJlR2F0ZXMsIC8vIERlc3RydWN0dXJlIG5ldyBwcm9wXG59KSA9PiB7XG4gIGNvbnN0IHNldEVudml2ZUNvbmZpZyA9IHVzZVNldEF0b20oZW52aXZlQ29uZmlnQXRvbSk7XG5cbiAgY29uc3QgY29uZmlnOiBFbnZpdmVDb25maWcgPSB7XG4gICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgIGRhdGFSZXNpZGVuY3ksXG4gICAgZW52LFxuICAgIGJhc2VVcmwsXG4gICAgcmVhY3RBcHBOYW1lLFxuICAgIGNkblVybCxcbiAgICBjb250ZXh0U291cmNlLFxuICAgIG9yZ0xldmVsQXBpS2V5LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBpZGVudGlmeWluZ1ByZWZpeCxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVHYXRlcywgLy8gQWRkIHRvIGNvbmZpZ1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0RW52aXZlQ29uZmlnKGNvbmZpZyk7XG4gICAgTG9nZ2VyLmxvZ0RlYnVnKFwiRW52aXZlQ29uZmlnUHJvdmlkZXI6IFNldHRpbmcgRW52aXZlQ29uZmlnXCIsIGNvbmZpZyk7XG4gIH0sIFtzZXRFbnZpdmVDb25maWcsIGNvbmZpZ10pO1xuXG4gIHJldHVybiAoXG4gICAgPEVudml2ZUNvbmZpZ0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbmZpZ30+XG4gICAgICB7Y29uZmlnID8gY2hpbGRyZW4gOiBudWxsfVxuICAgIDwvRW52aXZlQ29uZmlnQ29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VFbnZpdmVDb25maWcgPSAoKTogRW52aXZlQ29uZmlnID0+IHtcbiAgY29uc3QgY29uZmlnID0gdXNlQXRvbVZhbHVlKGVudml2ZUNvbmZpZ0F0b20pO1xuXG4gIHJldHVybiBjb25maWcgPyBjb25maWcgOiB7fTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHtcbiAgY3JlYXRlQ29udGV4dCxcbiAgdXNlQ29udGV4dCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZU1lbW8sXG4gIHVzZUVmZmVjdCxcbn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGNyZWF0ZUluc3RhbmNlIH0gZnJvbSBcIkBhbXBsaXR1ZGUvYW5hbHl0aWNzLWJyb3dzZXJcIjtcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlc1wiO1xuaW1wb3J0IHsgT3JnU2hvcnROYW1lIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IEV2ZW50c0Rpc3BhdGNoZXIsIFNwaWZmeUV2ZW50IH0gZnJvbSBcInNyYy9ldmVudHNcIjtcbmltcG9ydCB7XG4gIGFtcGxpdHVkZUFwaUtleUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBkYXRhUmVzaWRlbmN5QXRvbSxcbiAgaWRlbnRpZnlpbmdQcmVmaXhBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCB7XG4gIExvY2FsU3RvcmFnZUtleXMsXG4gIHVzZUxvY2FsU3RvcmFnZSxcbn0gZnJvbSBcInNyYy9jb250ZXh0cy9sb2NhbFN0b3JhZ2VDb250ZXh0XCI7XG5pbXBvcnQgeyBvcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWdBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9vcmcvb3JnQW5hbHl0aWNzQ29uZmlnXCI7XG5pbXBvcnQgeyB1c2VySWRBdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHBcIjtcbmltcG9ydCB7IGVudkF0b20gfSBmcm9tIFwic3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWdcIjtcbmltcG9ydCBMb2dnZXIgZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlclwiO1xuaW1wb3J0IHR5cGUge1xuICBCcm93c2VyQ2xpZW50LFxuICBFbnJpY2htZW50UGx1Z2luLFxuICBFdmVudCxcbiAgU2VydmVyWm9uZVR5cGUsXG59IGZyb20gXCJAYW1wbGl0dWRlL2FuYWx5dGljcy10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRW52aXZlQ29uZmlnIH0gZnJvbSBcInNyYy9jb250ZXh0cy9lbnZpdmVDb25maWdDb250ZXh0XCI7XG5pbXBvcnQgeyBPcmdDb25maWdGZWF0dXJlR2F0ZSB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzXCI7XG5cbmV4cG9ydCBlbnVtIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUge1xuICBCdW5kbGVMb2FkZWQgPSBcIkJ1bmRsZSBMb2FkZWRcIixcbiAgQ2hhdExpdmVBZ2VudEJ0bkNsaWNrID0gXCJDaGF0IExpdmUgQWdlbnQgQnRuIENsaWNrXCIsXG4gIENoYXRGbG9hdGluZ0J1dHRvblZpc2libGUgPSBcIkNoYXQgRmxvYXRpbmcgQnV0dG9uIFZpc2libGVcIixcbiAgQ2hhdENvbXBvbmVudFZpc2libGUgPSBcIkNoYXQgQ29tcG9uZW50IFZpc2libGVcIixcbiAgQ2hhdENvbXBvbmVudEV4cGFuZGVkID0gXCJDaGF0IENvbXBvbmVudCBFeHBhbmRlZFwiLFxuICBDaGF0Q29tcG9uZW50Q29sbGFwc2VkID0gXCJDaGF0IENvbXBvbmVudCBDb2xsYXBzZWRcIixcbiAgQ2hhdFVzZXJNZXNzYWdlSW5wdXQgPSBcIkNoYXQgVXNlciBNZXNzYWdlIElucHV0XCIsXG4gIENoYXRTdWdnZXN0aW9uQ2xpY2tlZCA9IFwiQ2hhdCBTdWdnZXN0aW9uIENsaWNrZWRcIixcbiAgQ2hhdEFzc2lzdGFudFJlc3BvbnNlID0gXCJDaGF0IEFzc2lzdGFudCBSZXNwb25zZVwiLFxuICBQcm9kdWN0Q2FyZENsaWNrZWQgPSBcIlByb2R1Y3QgQ2FyZCBDbGlja2VkXCIsXG4gIFByb2R1Y3RSZXZpZXdDYXJkQ2xpY2tlZCA9IFwiUHJvZHVjdCBSZXZpZXcgQ2FyZCBDbGlja2VkXCIsXG4gIEFkZFRvQ2FydENsaWNrZWQgPSBcIkFkZCB0byBDYXJ0IENsaWNrZWRcIixcbiAgUHJvbXB0Q2FyZENsaWNrZWQgPSBcIlByb21wdCBDYXJkIENsaWNrZWRcIixcbiAgU3VwcG9ydGVkRXZlbnQgPSBcIlN1cHBvcnRlZCBFdmVudFwiLFxuICBTZWFyY2hCYWNrVG9SZXNwb25zZUNsaWNrZWQgPSBcIlNlYXJjaCBCYWNrIHRvIFJlc3BvbnNlIENsaWNrZWRcIixcbiAgUGVyZm9ybWFuY2VNZXRyaWNzID0gXCJQZXJmb3JtYW5jZSBNZXRyaWNzXCIsXG4gIFNlYXJjaEJhckNsaWNrZWQgPSBcIlNlYXJjaCBCYXIgQ2xpY2tlZFwiLFxuICBPcmRlckxvb2t1cFN0YXJ0ZWQgPSBcIk9yZGVyIExvb2t1cCBTdGFydGVkXCIsXG4gIE9yZGVyTG9va3VwRm9ybVN1Ym1pdHRlZCA9IFwiT3JkZXIgTG9va3VwIEZvcm0gU3VibWl0dGVkXCIsXG4gIFNlYXJjaENvbXBvbmVudFZpc2libGUgPSBcIlNlYXJjaCBDb21wb25lbnQgVmlzaWJsZVwiLFxuICBTZWFyY2haZXJvU3RhdGVTdWdnZXN0aW9uQ2xpY2tlZCA9IFwiU2VhcmNoIFplcm8gU3RhdGUgU3VnZ2VzdGlvbiBDbGlja2VkXCIsIC8vIFRoaXMgaXMgdGhlIHNjcm9sbGluZyBsaXN0IG9mIHN1Z2dlc3Rpb24gYnV0dG9ucyBpbiBnbG9iYWwgc2VhcmNoXG4gIFNlYXJjaElucHV0U3RhcnRlZCA9IFwiU2VhcmNoIElucHV0IFN0YXJ0ZWRcIixcbiAgU2VhcmNoUXVlcnlTdWJtaXR0ZWQgPSBcIlNlYXJjaCBRdWVyeSBTdWJtaXR0ZWRcIixcbiAgLy8gU2VhcmNoQXV0b2NvbXBsZXRlVmlld2VkID0gJ1NlYXJjaCBBdXRvY29tcGxldGUgVmlld2VkJywgLy8gVE9ETzogYWRkIHRoaXMgd2hlbiBhdXRvY29tcGxldGUgaXMgYWRkZWRcbiAgLy8gU2VhcmNoQXV0b2NvbXBsZXRlQ2xpY2tlZCA9ICdTZWFyY2ggQXV0b2NvbXBsZXRlIENsaWNrZWQnLCAvLyBUT0RPOiBhZGQgdGhpcyB3aGVuIGF1dG9jb21wbGV0ZSBpcyBhZGRlZFxuICBTZWFyY2hSZXN1bHRzVmlld2VkID0gXCJTZWFyY2ggUmVzdWx0cyBWaWV3ZWRcIixcbiAgU2VhcmNoVGltZVRvRmlyc3RDbGljayA9IFwiU2VhcmNoIFRpbWUgdG8gRmlyc3QgQ2xpY2tcIixcbiAgU2VhcmNoWmVyb1Jlc3VsdHNSYXRlID0gXCJTZWFyY2ggWmVybyBSZXN1bHRzIFJhdGVcIixcbiAgU2VhcmNoRmlsdGVyQ2xpY2tlZCA9IFwiU2VhcmNoIEZpbHRlciBDbGlja2VkXCIsXG4gIFNlYXJjaFNvcnRDbGlja2VkID0gXCJTZWFyY2ggU29ydCBDbGlja2VkXCIsXG59XG5cbmludGVyZmFjZSBUcmFja0V2ZW50UGFyYW1zIHtcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lO1xuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3M/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQW1wbGl0dWRlQ29udGV4dFR5cGUge1xuICB0cmFja0V2ZW50OiAocGFyYW1zOiBUcmFja0V2ZW50UGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpc1JlYWR5OiBib29sZWFuO1xuICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IEFtcGxpdHVkZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEFtcGxpdHVkZUNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHtcbiAgY2hpbGRyZW4sXG59KSA9PiB7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgYW1wbGl0dWRlQXBpS2V5ID0gdXNlQXRvbVZhbHVlKGFtcGxpdHVkZUFwaUtleUF0b20pO1xuICBjb25zdCBkYXRhUmVzaWRlbmN5ID0gdXNlQXRvbVZhbHVlKGRhdGFSZXNpZGVuY3lBdG9tKTtcbiAgY29uc3Qgb3JnR2FDb25maWcgPSB1c2VBdG9tVmFsdWUob3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSk7XG4gIGNvbnN0IGVudiA9IHVzZUF0b21WYWx1ZShlbnZBdG9tKTtcbiAgY29uc3QgY29udGV4dFNvdXJjZSA9IHVzZUF0b21WYWx1ZShjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGlkZW50aWZ5aW5nUHJlZml4ID0gdXNlQXRvbVZhbHVlKGlkZW50aWZ5aW5nUHJlZml4QXRvbSk7XG4gIGNvbnN0IHsgZ2V0SXRlbSB9ID0gdXNlTG9jYWxTdG9yYWdlKCk7XG4gIGNvbnN0IHtcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGUsXG4gICAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgICBzaG93LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBmZWF0dXJlR2F0ZXMsXG4gIH0gPSB1c2VFbnZpdmVDb25maWcoKTtcblxuICBjb25zdCB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgPSAoKSA9PiB7XG4gICAgY29uc3QgaXNGZWF0dXJlR2F0ZUVuYWJsZWQgPSB1c2VDYWxsYmFjayhcbiAgICAgIChnYXRlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3Qgb3ZlcnJpZGUgPSBmZWF0dXJlT3ZlcnJpZGVzPy5bZ2F0ZV07XG4gICAgICAgIGlmIChvdmVycmlkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIG92ZXJyaWRlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgZmVhdHVyZUdhdGVzPy5zb21lKChmZykgPT4gZmcubmFtZSA9PT0gZ2F0ZSAmJiBmZy52YWx1ZSkgfHwgZmFsc2VcbiAgICAgICAgKTtcbiAgICAgIH0sXG4gICAgICBbZmVhdHVyZU92ZXJyaWRlcywgZmVhdHVyZUdhdGVzXVxuICAgICk7XG5cbiAgICBjb25zdCBpc0NsaWVudFNlc3Npb25FbmFibGVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgLy8gQXNzdW1pbmcgdGhpcyBpcyBhIGZlYXR1cmUgZ2F0ZSwgb3IgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBwYXNzZWRcbiAgICAgIHJldHVybiBpc0ZlYXR1cmVHYXRlRW5hYmxlZChGZWF0dXJlR2F0ZXMuSXNDbGllbnRTZXNzaW9uRW5hYmxlZCk7XG4gICAgfSwgW2lzRmVhdHVyZUdhdGVFbmFibGVkXSk7XG5cbiAgICBjb25zdCBnZXRGZWF0dXJlRmxhZ3MgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBjb25zdCBmbGFnczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4gPSB7fTtcbiAgICAgIGlmIChmZWF0dXJlT3ZlcnJpZGVzKSB7XG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVPdmVycmlkZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGZsYWdzW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoZmVhdHVyZUdhdGVzKSB7XG4gICAgICAgIGZlYXR1cmVHYXRlcy5mb3JFYWNoKChmZykgPT4ge1xuICAgICAgICAgIGlmIChmZy5uYW1lKSB7XG4gICAgICAgICAgICBmbGFnc1tmZy5uYW1lXSA9IEJvb2xlYW4oZmcudmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmxhZ3M7XG4gICAgfSwgW2ZlYXR1cmVPdmVycmlkZXMsIGZlYXR1cmVHYXRlc10pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlzRmVhdHVyZUdhdGVFbmFibGVkLFxuICAgICAgaXNDbGllbnRTZXNzaW9uRW5hYmxlZCxcbiAgICAgIGdldEZlYXR1cmVGbGFncyxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IGZlYXR1cmVGbGFnU2VydmljZSA9IHVzZUZlYXR1cmVGbGFnU2VydmljZSgpO1xuXG4gIGNvbnN0IFthbXBsaXR1ZGVDbGllbnQsIHNldEFtcGxpdHVkZUNsaWVudF0gPSBSZWFjdC51c2VTdGF0ZTxcbiAgICBCcm93c2VyQ2xpZW50IHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcbiAgY29uc3QgW2ludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQsIHNldEludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnRdID1cbiAgICBSZWFjdC51c2VTdGF0ZTxFbnJpY2htZW50UGx1Z2luIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBbc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdID1cbiAgICBSZWFjdC51c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4oe30pO1xuXG4gIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKHVzZXJJZCAmJiBmZWF0dXJlRmxhZ1NlcnZpY2UgJiYgYW1wbGl0dWRlQXBpS2V5KTtcblxuICBjb25zdCBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyA9IHVzZUNhbGxiYWNrKCgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gICAgY29uc3QgZ2F0ZXNQcm9wcyA9IGZlYXR1cmVHYXRlc1xuICAgICAgPyBmZWF0dXJlR2F0ZXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgaWYgKGN1cnIubmFtZSAmJiBjdXJyLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2BmZWF0dXJlX2dhdGUuJHtjdXJyLm5hbWV9YF06IGN1cnIudmFsdWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IGV4cGVyaW1lbnRQcm9wcyA9IHt9OyAvLyBObyBkaXJlY3QgZXF1aXZhbGVudCBmb3IgZXhwZXJpbWVudHMgaW4gRW52aXZlQ29uZmlnIHlldFxuXG4gICAgY29uc3Qgb3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzID0ge1xuICAgICAgLi4uZ2F0ZXNQcm9wcyxcbiAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyxcbiAgICAgIC4uLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICAgIC8vIFRPRE86IG9yZ19pZCBpcyBub3QgZGlyZWN0bHkgYXZhaWxhYmxlIGluIEVudml2ZUNvbmZpZy4gTmVlZCB0byBmaW5kIGEgbmV3IHNvdXJjZSBvciBkZXJpdmUgaXQuXG4gICAgICAvLyBvcmdfaWQ6IG9yZ0NvbmZpZz8ub3JnPy5vcmc/LmlkLFxuICAgICAgYXBwX2lkOiBcImNvbW1lcmNlLWNoYXQtcmVhY3QtY29tcG9uZW50XCIsXG4gICAgICBjaGF0X2lkOiBnZXRJdGVtKExvY2FsU3RvcmFnZUtleXMuQ2hhdElkKSxcbiAgICAgIGVudjogZW52IHx8IFwidW5rbm93blwiLFxuICAgICAgYXBwX3NvdXJjZTogY29udGV4dFNvdXJjZSxcbiAgICAgIFwib3JnLnNob3J0X25hbWVcIjogb3JnU2hvcnROYW1lLFxuICAgICAgXCJ1c2VyLmlkXCI6IHVzZXJJZCxcbiAgICAgIFwiY2RwLnVzZXJfaWRcIjogbnVsbCxcbiAgICAgIFwiY2RwLnByb3ZpZGVyXCI6IG51bGwsXG4gICAgICBcImV2ZW50LnNvdXJjZVwiOiBcIndlYi1icm93c2VyXCIsXG4gICAgICBcImV2ZW50LnR5cGVcIjogXCJ1c2VyLWFjdGl2aXR5XCIsXG4gICAgICBcImV2ZW50LmlkXCI6IG51bGwsXG4gICAgICBcImV2ZW50LmNoYW5uZWxcIjogXCJ3ZWJcIixcbiAgICAgIFwiZXZlbnQudGltZXN0YW1wXCI6IG51bGwsXG4gICAgfTtcbiAgfSwgW1xuICAgIGZlYXR1cmVHYXRlcyxcbiAgICBzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgZW52LFxuICAgIGNvbnRleHRTb3VyY2UsXG4gICAgb3JnU2hvcnROYW1lLFxuICAgIHVzZXJJZCxcbiAgXSk7XG5cbiAgY29uc3QgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICAgICAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gICAgICBjb25zdCBwcmVmaXggPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csIFwiX1wiKTtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhldmVudFByb3BzKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGFjY1tgJHtwcmVmaXh9LiR7a2V5fWBdID0gdmFsdWU7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgfSxcbiAgICBbXVxuICApO1xuXG4gIGNvbnN0IGFtcGxpdHVkZVNlc3Npb25SZXBsYXlJbml0ID0gdXNlQ2FsbGJhY2soKCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGlzRW5hYmxlZCA9IEJvb2xlYW4oXG4gICAgICBvcmdTaG9ydE5hbWUgPT09IE9yZ1Nob3J0TmFtZS5VbmlxdWVWaW50YWdlICYmXG4gICAgICAgIGZlYXR1cmVGbGFnU2VydmljZT8uaXNDbGllbnRTZXNzaW9uRW5hYmxlZCgpICYmXG4gICAgICAgIGZlYXR1cmVGbGFnU2VydmljZT8uaXNGZWF0dXJlR2F0ZUVuYWJsZWQoXG4gICAgICAgICAgRmVhdHVyZUdhdGVzLklzTmV3RmVhdHVyZUVuYWJsZWRcbiAgICAgICAgKVxuICAgICk7XG4gICAgY29uc3Qgc2FtcGxlUmF0ZSA9IDE7XG5cbiAgICB0cnkge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgW3NwaWZmeS1haV0gYW1wbGl0dWRlIHNlc3Npb24tcmVwbGF5IGluaXRpYWxpemluZyBpc0VuYWJsZWQ9JHtpc0VuYWJsZWR9IHNhbXBsZVJhdGU9JHtzYW1wbGVSYXRlfWBcbiAgICAgICk7XG5cbiAgICAgIGlmICghaXNFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGFtcGxpdHVkZUluc3RhbmNlLmFkZChzZXNzaW9uUmVwbGF5UGx1Z2luKHsgc2FtcGxlUmF0ZSB9KSk7XG5cbiAgICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKFxuICAgICAgICBcIltzcGlmZnktYWldIEVycm9yIGluaXRpYWxpemluZyBhbXBsaXR1ZGUgc2Vzc2lvbi1yZXBsYXlcIixcbiAgICAgICAgZVxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIFtvcmdTaG9ydE5hbWUsIGZlYXR1cmVGbGFnU2VydmljZV0pO1xuXG4gIGNvbnN0IGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ID0gdXNlQ2FsbGJhY2soKCk6IEVucmljaG1lbnRQbHVnaW4gPT4ge1xuICAgIGlmIChpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4gPSB7XG4gICAgICBuYW1lOiBcInBhZ2Utdmlldy10cmFja2luZy1lbnJpY2htZW50XCIsXG4gICAgICB0eXBlOiBcImVucmljaG1lbnRcIixcbiAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBleGVjdXRlOiBhc3luYyAoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4gPT4ge1xuICAgICAgICBsZXQgZW5yaWNoZWRFdmVudDogRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbnJpY2ggPSBbXG4gICAgICAgICAgXCJbQW1wbGl0dWRlXSBQYWdlIFZpZXdlZFwiLFxuICAgICAgICAgIGBbU3BpZmZ5XSAke1NwaWZmeU1ldHJpY3NFdmVudE5hbWUuQnVuZGxlTG9hZGVkfWAsXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKGV2ZW50c1RvRW5yaWNoLmluY2x1ZGVzKGV2ZW50LmV2ZW50X3R5cGUpKSB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgICAgICAgaWYgKHB1YmxpY0tleSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tcImdsb2JhbFByb3BlcnRpZXMucHVibGljS2V5XCJdID0gcHVibGljS2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmVhdHVyZU92ZXJyaWRlcykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmVhdHVyZU92ZXJyaWRlcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbYGdsb2JhbFByb3BlcnRpZXMuZmVhdHVyZU92ZXJyaWRlcy4ke2tleX1gXSA9XG4gICAgICAgICAgICAgICAgU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudFVybE92ZXJyaWRlKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW1wiZ2xvYmFsUHJvcGVydGllcy52YXJpYW50VXJsT3ZlcnJpZGVcIl0gPVxuICAgICAgICAgICAgICB2YXJpYW50VXJsT3ZlcnJpZGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YXJpYW50SW5mb092ZXJyaWRlKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW1wiZ2xvYmFsUHJvcGVydGllcy52YXJpYW50SW5mb092ZXJyaWRlXCJdID1cbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFyaWFudEluZm9PdmVycmlkZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzaG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbXCJnbG9iYWxQcm9wZXJ0aWVzLnNob3dcIl0gPSBTdHJpbmcoc2hvdyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzID0gZmVhdHVyZUZsYWdTZXJ2aWNlIS5nZXRGZWF0dXJlRmxhZ3MoKTtcbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoXG4gICAgICAgICAgICBlbmFibGVkRmVhdHVyZXNcbiAgICAgICAgICApLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PihcbiAgICAgICAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbYGVuYWJsZWRGZWF0dXJlcy4ke2tleX1gXTogYCR7dmFsdWV9YCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgdGltaW5nUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgIFwidGltaW5nLmVucmljaGVkX2F0X21zXCI6IHdpbmRvdy5wZXJmb3JtYW5jZT8ubm93KCksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSB7XG4gICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgIGV2ZW50X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZXZlbnRfcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4uZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoKSxcbiAgICAgICAgICAgICAgLi4uZ2xvYmFsUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4uZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4udGltaW5nUHJvcGVydGllcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBFdmVudHNEaXNwYXRjaGVyLmRpc3BhdGNoKFNwaWZmeUV2ZW50LkFNUExJVFVERV9FVkVOVCwgZW5yaWNoZWRFdmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGVucmljaGVkRXZlbnQ7XG4gICAgICB9LFxuICAgIH07XG4gICAgc2V0SW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudChlbnJpY2htZW50KTtcbiAgICByZXR1cm4gZW5yaWNobWVudDtcbiAgfSwgW1xuICAgIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQsXG4gICAgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMsXG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlLFxuICAgIHB1YmxpY0tleSxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzUmVhZHkgJiYgIWFtcGxpdHVkZUNsaWVudCkge1xuICAgICAgY29uc3QgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50ID0gY3JlYXRlSW5zdGFuY2UoKTtcbiAgICAgIGNvbnN0IGlzU2Vzc2lvbnNFbmFibGVkID0gYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQoKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5hZGQoZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQoKSk7XG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuaW5pdChhbXBsaXR1ZGVBcGlLZXkhLCB1c2VySWQhLCB7XG4gICAgICAgIHNlcnZlclpvbmU6IGRhdGFSZXNpZGVuY3kgYXMgU2VydmVyWm9uZVR5cGUsXG4gICAgICAgIHRyYWNraW5nT3B0aW9uczoge1xuICAgICAgICAgIGlwQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYXV0b2NhcHR1cmU6IHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlVmlld3M6IHtcbiAgICAgICAgICAgIHRyYWNrSGlzdG9yeUNoYW5nZXM6IFwicGF0aE9ubHlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlc3Npb25zOiBpc1Nlc3Npb25zRW5hYmxlZCxcbiAgICAgICAgICBmb3JtSW50ZXJhY3Rpb25zOiBmYWxzZSxcbiAgICAgICAgICBmaWxlRG93bmxvYWRzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgc2V0QW1wbGl0dWRlQ2xpZW50KGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZSk7XG4gICAgfVxuICB9LCBbXG4gICAgaXNSZWFkeSxcbiAgICBhbXBsaXR1ZGVDbGllbnQsXG4gICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgIHVzZXJJZCxcbiAgICBkYXRhUmVzaWRlbmN5LFxuICAgIGFtcGxpdHVkZVNlc3Npb25SZXBsYXlJbml0LFxuICAgIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50LFxuICBdKTtcblxuICBjb25zdCB0cmFja0V2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgICBldmVudEdyb3VwcyxcbiAgICAgIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgPSBmYWxzZSxcbiAgICB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWNvcmF0ZWRFdmVudE5hbWUgPSBgW1NwaWZmeV0gJHtldmVudE5hbWV9YDtcblxuICAgICAgICBpZiAoIWFtcGxpdHVkZUNsaWVudCkge1xuICAgICAgICAgIExvZ2dlci5sb2dXYXJuKFwiYW1wbGl0dWRlIGNsaWVudCB1bmRlZmluZWRcIiwgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZlbnREYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGV2ZW50RGF0YSk7XG4gICAgICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChcIlNIQS0yNTZcIiwgZGF0YSk7XG4gICAgICAgIGNvbnN0IGhhc2hBcnJheSA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoaGFzaEJ1ZmZlcikpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXlcbiAgICAgICAgICAubWFwKChiKSA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCBcIjBcIikpXG4gICAgICAgICAgLmpvaW4oXCJcIik7XG5cbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICBwcm9wczogZXZlbnRQcm9wcyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICAgIGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIC4uLihldmVudFByb3BzXG4gICAgICAgICAgICAgID8gZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKGV2ZW50TmFtZSwgZXZlbnRQcm9wcylcbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICAgIGluc2VydF9pZDogY3VycmVudEluc2VydElkLFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyAmJiBvcmdHYUNvbmZpZykge1xuICAgICAgICAgIExvZ2dlci5sb2dEZWJ1ZyhcIltzcGlmZnktYWldIEdBIHRyYWNraW5nXCIsIGRlY29yYXRlZEV2ZW50TmFtZSk7XG4gICAgICAgICAgaWYgKHdpbmRvdy5kYXRhTGF5ZXIpIHtcbiAgICAgICAgICAgICh3aW5kb3cuZGF0YUxheWVyIGFzIGFueVtdKS5wdXNoKHtcbiAgICAgICAgICAgICAgZXZlbnQ6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICAgICAgZXZlbnRQcm9wczogZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcihcIltzcGlmZnktYWldIEVycm9yIHRyYWNraW5nIGV2ZW50XCIsIGVyciwge1xuICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGFtcGxpdHVkZUNsaWVudCxcbiAgICAgIGdldERlZmF1bHRUcmFja2luZ1Byb3BzLFxuICAgICAgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzLFxuICAgICAgb3JnR2FDb25maWcsXG4gICAgXVxuICApO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgdHJhY2tFdmVudCxcbiAgICAgIGlzUmVhZHksXG4gICAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+XG4gICAgICAgIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wcyksXG4gICAgfSksXG4gICAgW3RyYWNrRXZlbnQsIGlzUmVhZHksIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wc11cbiAgKTtcblxuICByZXR1cm4gKFxuICAgIDxBbXBsaXR1ZGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9BbXBsaXR1ZGVDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUFtcGxpdHVkZSA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQW1wbGl0dWRlQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZUFtcGxpdHVkZSBtdXN0IGJlIHVzZWQgd2l0aGluIEFtcGxpdHVkZVByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQU9BLE1BQU0sc0JBQXNCLGNBQXdDLE9BQVU7QUFzQjlFLE1BQWFBLHdCQUE2RCxFQUN4RSxVQUNBLGlCQUNBLGVBQ0EsS0FDQSxTQUNBLGNBQ0EsUUFDQSxlQUNBLGdCQUNBLGNBQ0EsbUJBQ0Esa0JBQ0Esb0JBQ0EscUJBQ0EsTUFDQSxXQUNBLG1CQUNJO0NBQ0osTUFBTSxrQkFBa0IsV0FBVyxpQkFBaUI7Q0FFcEQsTUFBTUMsU0FBdUI7RUFDM0I7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRDtBQUVELGlCQUFnQjtBQUNkLGtCQUFnQixPQUFPO0FBQ3ZCLGlCQUFPLFNBQVMsOENBQThDLE9BQU87SUFDcEUsQ0FBQyxpQkFBaUIsT0FBTyxDQUFDO0FBRTdCLFFBQ0Usb0JBQUMsb0JBQW9CO0VBQVMsT0FBTztZQUNsQyxTQUFTLFdBQVc7R0FDUTs7QUFJbkMsTUFBYSx3QkFBc0M7Q0FDakQsTUFBTSxTQUFTLGFBQWEsaUJBQWlCO0FBRTdDLFFBQU8sU0FBUyxTQUFTLEVBQUU7Ozs7O0FDakQ3QixJQUFZLDRFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWdCRixNQUFNLG1CQUFtQixjQUEyQyxLQUFLO0FBRXpFLE1BQWFDLHFCQUE4RCxFQUN6RSxlQUNJO0NBQ0osTUFBTSxT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
@@ -0,0 +1,52 @@
1
+ import React from "react";
2
+
3
+ //#region src/contexts/amplitudeContext.d.ts
4
+ declare enum SpiffyMetricsEventName {
5
+ BundleLoaded = "Bundle Loaded",
6
+ ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
7
+ ChatFloatingButtonVisible = "Chat Floating Button Visible",
8
+ ChatComponentVisible = "Chat Component Visible",
9
+ ChatComponentExpanded = "Chat Component Expanded",
10
+ ChatComponentCollapsed = "Chat Component Collapsed",
11
+ ChatUserMessageInput = "Chat User Message Input",
12
+ ChatSuggestionClicked = "Chat Suggestion Clicked",
13
+ ChatAssistantResponse = "Chat Assistant Response",
14
+ ProductCardClicked = "Product Card Clicked",
15
+ ProductReviewCardClicked = "Product Review Card Clicked",
16
+ AddToCartClicked = "Add to Cart Clicked",
17
+ PromptCardClicked = "Prompt Card Clicked",
18
+ SupportedEvent = "Supported Event",
19
+ SearchBackToResponseClicked = "Search Back to Response Clicked",
20
+ PerformanceMetrics = "Performance Metrics",
21
+ SearchBarClicked = "Search Bar Clicked",
22
+ OrderLookupStarted = "Order Lookup Started",
23
+ OrderLookupFormSubmitted = "Order Lookup Form Submitted",
24
+ SearchComponentVisible = "Search Component Visible",
25
+ SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked",
26
+ // This is the scrolling list of suggestion buttons in global search
27
+ SearchInputStarted = "Search Input Started",
28
+ SearchQuerySubmitted = "Search Query Submitted",
29
+ SearchResultsViewed = "Search Results Viewed",
30
+ SearchTimeToFirstClick = "Search Time to First Click",
31
+ SearchZeroResultsRate = "Search Zero Results Rate",
32
+ SearchFilterClicked = "Search Filter Clicked",
33
+ SearchSortClicked = "Search Sort Clicked",
34
+ }
35
+ interface TrackEventParams {
36
+ eventName: SpiffyMetricsEventName;
37
+ eventProps?: Record<string, unknown>;
38
+ eventGroups?: Record<string, unknown>;
39
+ alsoSendToGoogleAnalytics?: boolean;
40
+ }
41
+ interface AmplitudeContextType {
42
+ trackEvent: (params: TrackEventParams) => Promise<void>;
43
+ isReady: boolean;
44
+ setSupplementalDefaultProps: (props: Record<string, unknown>) => void;
45
+ }
46
+ declare const AmplitudeProvider: React.FC<{
47
+ children: React.ReactNode;
48
+ }>;
49
+ declare const useAmplitude: () => AmplitudeContextType;
50
+ //#endregion
51
+ export { AmplitudeProvider, SpiffyMetricsEventName, useAmplitude };
52
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC10SjR5LVN6WC5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IGRlY2xhcmUgZW51bSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHtcbiAgICBCdW5kbGVMb2FkZWQgPSBcIkJ1bmRsZSBMb2FkZWRcIixcbiAgICBDaGF0TGl2ZUFnZW50QnRuQ2xpY2sgPSBcIkNoYXQgTGl2ZSBBZ2VudCBCdG4gQ2xpY2tcIixcbiAgICBDaGF0RmxvYXRpbmdCdXR0b25WaXNpYmxlID0gXCJDaGF0IEZsb2F0aW5nIEJ1dHRvbiBWaXNpYmxlXCIsXG4gICAgQ2hhdENvbXBvbmVudFZpc2libGUgPSBcIkNoYXQgQ29tcG9uZW50IFZpc2libGVcIixcbiAgICBDaGF0Q29tcG9uZW50RXhwYW5kZWQgPSBcIkNoYXQgQ29tcG9uZW50IEV4cGFuZGVkXCIsXG4gICAgQ2hhdENvbXBvbmVudENvbGxhcHNlZCA9IFwiQ2hhdCBDb21wb25lbnQgQ29sbGFwc2VkXCIsXG4gICAgQ2hhdFVzZXJNZXNzYWdlSW5wdXQgPSBcIkNoYXQgVXNlciBNZXNzYWdlIElucHV0XCIsXG4gICAgQ2hhdFN1Z2dlc3Rpb25DbGlja2VkID0gXCJDaGF0IFN1Z2dlc3Rpb24gQ2xpY2tlZFwiLFxuICAgIENoYXRBc3Npc3RhbnRSZXNwb25zZSA9IFwiQ2hhdCBBc3Npc3RhbnQgUmVzcG9uc2VcIixcbiAgICBQcm9kdWN0Q2FyZENsaWNrZWQgPSBcIlByb2R1Y3QgQ2FyZCBDbGlja2VkXCIsXG4gICAgUHJvZHVjdFJldmlld0NhcmRDbGlja2VkID0gXCJQcm9kdWN0IFJldmlldyBDYXJkIENsaWNrZWRcIixcbiAgICBBZGRUb0NhcnRDbGlja2VkID0gXCJBZGQgdG8gQ2FydCBDbGlja2VkXCIsXG4gICAgUHJvbXB0Q2FyZENsaWNrZWQgPSBcIlByb21wdCBDYXJkIENsaWNrZWRcIixcbiAgICBTdXBwb3J0ZWRFdmVudCA9IFwiU3VwcG9ydGVkIEV2ZW50XCIsXG4gICAgU2VhcmNoQmFja1RvUmVzcG9uc2VDbGlja2VkID0gXCJTZWFyY2ggQmFjayB0byBSZXNwb25zZSBDbGlja2VkXCIsXG4gICAgUGVyZm9ybWFuY2VNZXRyaWNzID0gXCJQZXJmb3JtYW5jZSBNZXRyaWNzXCIsXG4gICAgU2VhcmNoQmFyQ2xpY2tlZCA9IFwiU2VhcmNoIEJhciBDbGlja2VkXCIsXG4gICAgT3JkZXJMb29rdXBTdGFydGVkID0gXCJPcmRlciBMb29rdXAgU3RhcnRlZFwiLFxuICAgIE9yZGVyTG9va3VwRm9ybVN1Ym1pdHRlZCA9IFwiT3JkZXIgTG9va3VwIEZvcm0gU3VibWl0dGVkXCIsXG4gICAgU2VhcmNoQ29tcG9uZW50VmlzaWJsZSA9IFwiU2VhcmNoIENvbXBvbmVudCBWaXNpYmxlXCIsXG4gICAgU2VhcmNoWmVyb1N0YXRlU3VnZ2VzdGlvbkNsaWNrZWQgPSBcIlNlYXJjaCBaZXJvIFN0YXRlIFN1Z2dlc3Rpb24gQ2xpY2tlZFwiLC8vIFRoaXMgaXMgdGhlIHNjcm9sbGluZyBsaXN0IG9mIHN1Z2dlc3Rpb24gYnV0dG9ucyBpbiBnbG9iYWwgc2VhcmNoXG4gICAgU2VhcmNoSW5wdXRTdGFydGVkID0gXCJTZWFyY2ggSW5wdXQgU3RhcnRlZFwiLFxuICAgIFNlYXJjaFF1ZXJ5U3VibWl0dGVkID0gXCJTZWFyY2ggUXVlcnkgU3VibWl0dGVkXCIsXG4gICAgU2VhcmNoUmVzdWx0c1ZpZXdlZCA9IFwiU2VhcmNoIFJlc3VsdHMgVmlld2VkXCIsXG4gICAgU2VhcmNoVGltZVRvRmlyc3RDbGljayA9IFwiU2VhcmNoIFRpbWUgdG8gRmlyc3QgQ2xpY2tcIixcbiAgICBTZWFyY2haZXJvUmVzdWx0c1JhdGUgPSBcIlNlYXJjaCBaZXJvIFJlc3VsdHMgUmF0ZVwiLFxuICAgIFNlYXJjaEZpbHRlckNsaWNrZWQgPSBcIlNlYXJjaCBGaWx0ZXIgQ2xpY2tlZFwiLFxuICAgIFNlYXJjaFNvcnRDbGlja2VkID0gXCJTZWFyY2ggU29ydCBDbGlja2VkXCJcbn1cbmludGVyZmFjZSBUcmFja0V2ZW50UGFyYW1zIHtcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gICAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgQW1wbGl0dWRlQ29udGV4dFR5cGUge1xuICAgIHRyYWNrRXZlbnQ6IChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG4gICAgaXNSZWFkeTogYm9vbGVhbjtcbiAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG59XG5leHBvcnQgZGVjbGFyZSBjb25zdCBBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8e1xuICAgIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59PjtcbmV4cG9ydCBkZWNsYXJlIGNvbnN0IHVzZUFtcGxpdHVkZTogKCkgPT4gQW1wbGl0dWRlQ29udGV4dFR5cGU7XG5leHBvcnQge307XG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQVcseUJBQXlCLENBQUMsSUFBSTtBQUN6QyxJQUFJLG1CQUFtQjtDQUFDO09BQVU7T0FBQTtPQUFBO0NBQUE7QUFDbEMsSUFBSSx1QkFBdUI7Q0FBQztPQUFXO09BQWdCO09BQUE7Q0FBQTtBQUN2RCxJQUFXLG9CQUFvQjtDQUFDO09BQVcsTUFBTTtPQUFhLE1BQUE7Q0FBQTtBQUM5RCxJQUFXLGVBQWUsQ0FBQyxXQUFXLHFCQUFhIn0=