@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.
- package/dist/amplitudeContext-CHzas7Cf.d.cts +52 -0
- package/dist/amplitudeContext-D-7fmVh1.cjs +356 -0
- package/dist/amplitudeContext-hY3caPC6.js +322 -0
- package/dist/amplitudeContext-tJ4y-SzX.d.ts +52 -0
- package/dist/api-DjeZXxl_.js +207 -0
- package/dist/api-_JaUnIUj.cjs +292 -0
- package/dist/app-CjsQ2_n-.js +132 -0
- package/dist/app-CnKRZ9RW.cjs +178 -0
- package/dist/application/models/graphql/index.cjs +3 -12
- package/dist/application/models/graphql/index.d.cts +1 -1
- package/dist/application/models/graphql/index.d.ts +1 -1
- package/dist/application/models/graphql/index.js +1 -10
- package/dist/application/models/guards/api/index.cjs +1 -2
- package/dist/application/models/guards/api/index.d.cts +2 -2
- package/dist/application/models/guards/api/index.d.ts +2 -2
- package/dist/application/models/guards/api/index.js +1 -2
- package/dist/application/models/index.cjs +48 -54
- package/dist/application/models/index.d.cts +7 -9
- package/dist/application/models/index.d.ts +7 -9
- package/dist/application/models/index.js +7 -11
- package/dist/application/models/utilityTypes/index.cjs +1 -1
- package/dist/application/models/utilityTypes/index.d.cts +1 -1
- package/dist/application/models/utilityTypes/index.d.ts +1 -1
- package/dist/application/models/utilityTypes/index.js +1 -1
- package/dist/application/models/variantInfo/index.cjs +1 -1
- package/dist/application/models/variantInfo/index.d.cts +1 -1
- package/dist/application/models/variantInfo/index.d.ts +1 -1
- package/dist/application/models/variantInfo/index.js +1 -1
- package/dist/application/utils/index.cjs +40 -37
- package/dist/application/utils/index.d.cts +18 -14
- package/dist/application/utils/index.d.ts +19 -15
- package/dist/application/utils/index.js +13 -10
- package/dist/{atomStore-JwGb7pcy.cjs → atomStore-B4jIaDPd.cjs} +1 -1
- package/dist/{atomStore-B1cgmbP0.js → atomStore-D8pjE1vL.js} +1 -1
- package/dist/atoms/app/index.cjs +14 -16
- package/dist/atoms/app/index.d.cts +20 -19
- package/dist/atoms/app/index.d.ts +20 -19
- package/dist/atoms/app/index.js +10 -11
- package/dist/atoms/atomStore/index.cjs +2 -1
- package/dist/atoms/atomStore/index.d.cts +24 -2
- package/dist/atoms/atomStore/index.d.ts +24 -2
- package/dist/atoms/atomStore/index.js +2 -1
- package/dist/atoms/chat/index.cjs +44 -40
- package/dist/atoms/chat/index.d.cts +35 -36
- package/dist/atoms/chat/index.d.ts +35 -36
- package/dist/atoms/chat/index.js +14 -10
- package/dist/atoms/globalSearch/index.cjs +1 -1
- package/dist/atoms/globalSearch/index.d.cts +5 -5
- package/dist/atoms/globalSearch/index.d.ts +6 -6
- package/dist/atoms/globalSearch/index.js +1 -1
- package/dist/atoms/org/index.cjs +26 -38
- package/dist/atoms/org/index.d.cts +35 -48
- package/dist/atoms/org/index.d.ts +35 -48
- package/dist/atoms/org/index.js +11 -11
- package/dist/atoms/search/index.cjs +47 -41
- package/dist/atoms/search/index.d.cts +7 -9
- package/dist/atoms/search/index.d.ts +7 -9
- package/dist/atoms/search/index.js +16 -10
- package/dist/bandolier-DYEz4-8C.js +1229 -0
- package/dist/bandolier-o_-xrbOV.cjs +1229 -0
- package/dist/carpe-CsG5jCcl.cjs +607 -0
- package/dist/carpe-DONk00bZ.js +605 -0
- package/dist/cdnUtils-32v8bDX9.cjs +16 -0
- package/dist/cdnUtils-E4tLBt2g.js +11 -0
- package/dist/{chat-_NzpO_Hn.cjs → chat-BubCW1as.cjs} +1 -1
- package/dist/chat-CO7cRkaq.cjs +506 -0
- package/dist/{chat-CHmD79E1.js → chat-CV6MXeID.js} +1 -1
- package/dist/chat-hcRc4RRd.js +285 -0
- package/dist/{components-Dl-TMD9k.js → components-B4T3Uzth.js} +1 -1
- package/dist/{components-D0XDRcaN.cjs → components-Cw9WjA6g.cjs} +1 -1
- package/dist/config/locators/components/chat/index.cjs +1 -1
- package/dist/config/locators/components/chat/index.d.cts +1 -1
- package/dist/config/locators/components/chat/index.d.ts +1 -1
- package/dist/config/locators/components/chat/index.js +1 -1
- package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
- package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
- package/dist/config/locators/components/index.cjs +1 -1
- package/dist/config/locators/components/index.d.cts +1 -1
- package/dist/config/locators/components/index.d.ts +1 -1
- package/dist/config/locators/components/index.js +1 -1
- package/dist/config/locators/components/search/index.d.ts +1 -1
- package/dist/config/locators/index.cjs +4 -4
- package/dist/config/locators/index.d.cts +2 -2
- package/dist/config/locators/index.d.ts +2 -2
- package/dist/config/locators/index.js +4 -4
- package/dist/contexts/index.cjs +45 -14
- package/dist/contexts/index.d.cts +10 -10
- package/dist/contexts/index.d.ts +10 -10
- package/dist/contexts/index.js +22 -11
- package/dist/contexts-B4ihTBsV.cjs +2980 -0
- package/dist/contexts-DGlr7M1o.js +2596 -0
- package/dist/coterie-CKB93qfz.cjs +239 -0
- package/dist/{coterie--MGvWeVh.cjs → coterie-DHcj2fRE.js} +64 -65
- package/dist/{custservice-types-C8-9vKWb.cjs → custservice-types-Dy0kc9TW.cjs} +1 -1
- package/dist/{custservice-types-CamCiXjq.js → custservice-types-mnIunabv.js} +1 -1
- package/dist/default-BnB4p0Se.cjs +234 -0
- package/dist/default-D6f5Dyt7.js +199 -0
- package/dist/default-ZKkE5zT4.cjs +4 -0
- package/dist/default-legGZJwI.js +4 -0
- package/dist/{divIds-CjceLRD9.cjs → divIds-2dJlU3z8.cjs} +1 -15
- package/dist/{divIds-0Vj9g-fM.js → divIds-BUrN2vY-.js} +2 -4
- package/dist/dreamlandBaby-BiRYYFav.js +346 -0
- package/dist/dreamlandBaby-zuvmfzfD.cjs +346 -0
- package/dist/{embedded-_cLpd6FK.js → embedded-BJLWIriJ.js} +1 -1
- package/dist/{embedded-B5Wi9g0T.cjs → embedded-Dl79TJLC.cjs} +1 -1
- package/dist/{entrypoints-CNUvSgnk.js → entrypoints-Bs3pn6EV.js} +1 -1
- package/dist/{entrypoints-DM9Sm18O.cjs → entrypoints-Dqi5pzWH.cjs} +1 -1
- package/dist/enviveConfig-BccuzS2a.cjs +240 -0
- package/dist/enviveConfig-CzhTz8Aa.js +152 -0
- package/dist/events/index.cjs +1 -1
- package/dist/events/index.js +1 -1
- package/dist/{events-ClCDFK7t.js → events-BrLpaNxh.js} +1 -1
- package/dist/{events-Da7gpmGv.cjs → events-DwT6cEwI.cjs} +1 -1
- package/dist/fiveCbd-DwTTwC2j.cjs +613 -0
- package/dist/fiveCbd-Dz2NouOF.js +613 -0
- package/dist/forLoveAndLemons-DqSdyD6S.js +665 -0
- package/dist/forLoveAndLemons-Ud6mPrV3.cjs +667 -0
- package/dist/{globalSearch-b0wC7ZEO.js → globalSearch-B6THR7Jx.js} +1 -1
- package/dist/{globalSearch-BTeZxvk1.cjs → globalSearch-BFvEg53C.cjs} +1 -1
- package/dist/graphql-BNW60InJ.cjs +128 -0
- package/dist/graphql-CjB8wHzm.js +74 -0
- package/dist/graphqlConfig-CYt6tWII.js +30 -0
- package/dist/graphqlConfig-DicykC-o.cjs +61 -0
- package/dist/greenpan-B_EbPkSP.js +397 -0
- package/dist/greenpan-kPE4fJgd.cjs +397 -0
- package/dist/grooveLife-Ckuir319.js +342 -0
- package/dist/grooveLife-DKSEQp1F.cjs +342 -0
- package/dist/homegrownCannabis-BVPa2pqe.js +410 -0
- package/dist/homegrownCannabis-BwIAkxuA.cjs +410 -0
- package/dist/hooks/index.cjs +39 -13
- package/dist/hooks/index.d.cts +127 -45
- package/dist/hooks/index.d.ts +124 -42
- package/dist/hooks/index.js +22 -11
- package/dist/{index-D46Rd0io.d.cts → index-B0NW9KTj.d.cts} +1 -1
- package/dist/{index-BdNKc2ix.d.cts → index-BDPWBU3h.d.cts} +1 -1
- package/dist/index-BMPtlgac.d.ts +191 -0
- package/dist/{index-BTK5uzs6.d.cts → index-Bmub8e38.d.cts} +1 -1
- package/dist/{index-BrXuc_Ck.d.cts → index-Byb45OPg.d.cts} +1 -1
- package/dist/{index-CSIOQD-A.d.ts → index-C6KdON7d.d.ts} +1 -1
- package/dist/index-C7pGDl1A.d.ts +1609 -0
- package/dist/{index-K2kNsOTw.d.cts → index-C9lgsCWp.d.cts} +32 -32
- package/dist/{index-BzgkfbNO.d.cts → index-CESxqFso.d.cts} +1 -1
- package/dist/{index-CbJZOEU4.d.ts → index-Cc-wBCn6.d.ts} +32 -32
- package/dist/{index-Cx9e-fRi.d.ts → index-CcIG01PJ.d.ts} +2 -2
- package/dist/{index-ClJ0nMsR.d.cts → index-CiWEYzXl.d.cts} +2 -2
- package/dist/{index-CKKkTsms.d.ts → index-Cqg6ltII.d.ts} +1 -1
- package/dist/{index-Cr2y08f1.d.ts → index-DOii3C6b.d.ts} +1 -1
- package/dist/index-DTu2X-YS.d.cts +1609 -0
- package/dist/index-OEifcBsm.d.cts +191 -0
- package/dist/{index-Dxpscrvz.d.ts → index-PGF8BvxQ.d.ts} +1 -1
- package/dist/{index-D2VaMPA3.d.ts → index-ylUiJvnr.d.ts} +1 -1
- package/dist/interceptors/index.cjs +2 -12
- package/dist/interceptors/index.d.cts +8 -13
- package/dist/interceptors/index.d.ts +8 -13
- package/dist/interceptors/index.js +2 -11
- package/dist/jackArcher-B39OEIj6.cjs +727 -0
- package/dist/{jackArcher-sO9EbgrZ.js → jackArcher-BwkWGybC.js} +24 -25
- package/dist/jordanCraig-CxRH_jLi.js +1786 -0
- package/dist/jordanCraig-RwmWw-jM.cjs +1786 -0
- package/dist/kindredBravely-D78VwL20.cjs +490 -0
- package/dist/kindredBravely-DQDpAzdl.js +490 -0
- package/dist/kutFromTheKloth-TcXQkIti.js +369 -0
- package/dist/kutFromTheKloth-dXRrNti0.cjs +369 -0
- package/dist/larryAndSerges-Bh5XEXsZ.js +262 -0
- package/dist/larryAndSerges-COdBzOzu.cjs +262 -0
- package/dist/leapsAndRebounds-BbXnqkl5.cjs +360 -0
- package/dist/leapsAndRebounds-mjCaH1k-.js +360 -0
- package/dist/longevityrx-DdV3v26F.cjs +320 -0
- package/dist/longevityrx-DfPDfvAt.js +320 -0
- package/dist/lookOptic-DgXFGBPP.cjs +282 -0
- package/dist/{lookOptic-Jwf7EAU8.js → lookOptic-FgVW1afF.js} +19 -20
- package/dist/mantraBrand-C5gVm3rk.cjs +750 -0
- package/dist/{mantraBrand-DoaVj837.js → mantraBrand-uV8HCDR8.js} +22 -23
- package/dist/medterra-BtDpr1Hw.cjs +583 -0
- package/dist/medterra-DgzE7-mj.js +583 -0
- package/dist/modells-CJjsxOIR.js +484 -0
- package/dist/modells-Ck5KbRFj.cjs +484 -0
- package/dist/models-BkXg5eIP.cjs +1534 -0
- package/dist/models-UZ6HszfZ.js +1281 -0
- package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-BxrS2S_k.d.ts} +1 -1
- package/dist/{nodeSelector-vKB44CDB.d.cts → nodeSelector-Dm4S-10n.d.cts} +1 -1
- package/dist/org-C2RrBVQR.cjs +81 -0
- package/dist/org-xMytX--e.js +38 -0
- package/dist/orgAnalyticsConfig-BJ2A1RZ-.cjs +39 -0
- package/dist/orgAnalyticsConfig-ClrFy2qH.js +14 -0
- package/dist/pressedFloral-Bteoboms.js +661 -0
- package/dist/pressedFloral-CexgV-xy.cjs +661 -0
- package/dist/search-BMOAmrmY.js +459 -0
- package/dist/search-Df0Ifneg.cjs +672 -0
- package/dist/{search-filter-types-9rTb3jMj.d.cts → search-filter-types-DosbseF3.d.cts} +1 -1
- package/dist/{search-filter-types-C-zZSpGo.d.ts → search-filter-types-fZf91Pdw.d.ts} +1 -1
- package/dist/skinPerfection-BGzq9lq-.cjs +334 -0
- package/dist/skinPerfection-BlvcEcUE.js +334 -0
- package/dist/snapSupplements-CbbGzAgO.cjs +285 -0
- package/dist/snapSupplements-kcsPAOm9.js +285 -0
- package/dist/{socialProofClasses-ky69yppk.cjs → socialProofClasses-Db8gzsfi.cjs} +1 -1
- package/dist/{socialProofClasses-DdzG1tZy.js → socialProofClasses-kwDvwLOZ.js} +1 -1
- package/dist/spanx-B4WFA_rI.js +661 -0
- package/dist/spanx-BWoE4F8b.cjs +663 -0
- package/dist/spanxStaging-BOrOjhXn.js +845 -0
- package/dist/spanxStaging-BfdfIug4.cjs +848 -0
- package/dist/{suggestionBarV2-types-Penx3Y67.js → suggestionBarV2-types-IMMOmCir.js} +1 -1
- package/dist/{suggestionBarV2-types-B3lwrENK.cjs → suggestionBarV2-types-nnGNgFvR.cjs} +1 -1
- package/dist/supergoop-22dd5_BS.js +323 -0
- package/dist/supergoop-B-a4cku2.cjs +323 -0
- package/dist/{test-types-CXVJxTeu.d.ts → test-types-C9b_OdfO.d.ts} +1 -1
- package/dist/{test-types-CuOq25VT.d.cts → test-types-CgVJtwUr.d.cts} +1 -1
- package/dist/types/index.cjs +2 -2
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.js +2 -2
- package/dist/types--pr1GQQx.js +154 -0
- package/dist/types-BVSyY3Hk.cjs +196 -0
- package/dist/{uniqueVintage-BWkDgt1z.js → uniqueVintage-CJXiNNe7.js} +19 -20
- package/dist/uniqueVintage-D0jzJWlo.cjs +1213 -0
- package/dist/useMessageInterceptor-B87e3yu3.cjs +33 -0
- package/dist/useMessageInterceptor-Bb7YRaWk.js +25 -0
- package/dist/userIdentityContext-BPqvVIg0.d.cts +20 -0
- package/dist/userIdentityContext-wbCRmlzp.d.ts +20 -0
- package/dist/utils-C9ZSCx12.js +888 -0
- package/dist/utils-D5HO61hG.cjs +1016 -0
- package/dist/variantInfo-DbVxA1yE.js +1 -0
- package/dist/variantInfo-orXoPBCU.cjs +0 -0
- package/dist/venaCbd-Bhhu_qUf.cjs +365 -0
- package/dist/venaCbd-CanovPS_.js +365 -0
- package/dist/westonJonBoucher-BC0x1ktI.cjs +422 -0
- package/dist/{westonJonBoucher-BAGXegsX.js → westonJonBoucher-BUu1_wP1.js} +19 -20
- package/dist/wineEnthusiast-BlCryfil.cjs +940 -0
- package/dist/{wineEnthusiast-EJbhMeKQ.js → wineEnthusiast-Ck1x5iJq.js} +19 -20
- package/dist/wolfMattress-D9Mjq-HP.js +372 -0
- package/dist/wolfMattress-JssghhC-.cjs +372 -0
- package/dist/wolfTactical-C6exYhL7.cjs +349 -0
- package/dist/wolfTactical-CnV3KQdI.js +349 -0
- package/package.json +100 -19
- package/src/{adapters/spiffy/commerce/api.ts → application/commerce-api.ts} +31 -23
- package/src/application/models/colorsConfig.ts +18 -18
- package/src/application/models/frontendConfig.ts +3 -3
- package/src/application/models/graphql/queries/getMerchantColorsQuery.ts +1 -1
- package/src/application/models/graphql/queries/getMerchantFrontendConfigQuery.ts +1 -1
- package/src/application/models/index.ts +0 -2
- package/src/application/models/localStorageEventListener.ts +2 -2
- package/src/application/models/utils/snakeToCamelTransformer.ts +8 -8
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +0 -21
- package/src/application/models/validators/validateGraphQLFrontendConfig.ts +2 -2
- package/src/application/utils/analyticsUtils.ts +53 -22
- package/src/application/utils/cdnUtils.ts +11 -0
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +15 -0
- package/src/atoms/app/index.ts +7 -17
- package/src/atoms/app/variant.ts +13 -4
- package/src/atoms/chat/chatState.ts +28 -18
- package/src/atoms/chat/messageQueue.ts +36 -5
- package/src/atoms/chat/replies.ts +45 -37
- package/src/atoms/envive/enviveConfig.ts +10 -6
- package/src/atoms/org/graphqlConfig.ts +7 -1
- package/src/atoms/org/index.ts +3 -3
- package/src/atoms/org/newOrgConfigAtom.ts +8 -0
- package/src/atoms/org/orgPageConfig.ts +6 -5
- package/src/atoms/search/chatSearch.ts +11 -5
- package/src/atoms/search/searchAPI.ts +22 -12
- package/src/atoms/search/searchServiceAdapter.ts +25 -0
- package/src/contexts/amplitudeContext.tsx +466 -0
- package/src/contexts/cdnContext.tsx +48 -0
- package/src/contexts/chatContext.tsx +15 -12
- package/src/contexts/enviveConfigContext.tsx +22 -17
- package/src/contexts/enviveCssContext.tsx +34 -5
- package/src/contexts/featureFlagContext.tsx +193 -0
- package/src/contexts/featureFlagServiceContext.tsx +87 -0
- package/src/contexts/graphqlContext.tsx +165 -0
- package/src/contexts/index.ts +13 -3
- package/src/contexts/localStorageContext.tsx +159 -0
- package/src/contexts/newOrgConfigContext.tsx +104 -0
- package/src/contexts/orgConfigContext.tsx +92 -92
- package/src/contexts/searchContext.tsx +187 -0
- package/src/contexts/sessionStorageContext.tsx +80 -0
- package/src/contexts/shopifyUrlContext.tsx +97 -0
- package/src/contexts/types.ts +12 -8
- package/src/contexts/userIdentityContext.tsx +197 -0
- package/src/events/registerAnalyticsListeners.ts +32 -38
- package/src/hooks/index.ts +10 -4
- package/src/hooks/useAmplitudeOperations.ts +35 -0
- package/src/hooks/useAppDetails.ts +49 -0
- package/src/hooks/useCdnOperations.ts +16 -0
- package/src/hooks/useChatToggle.ts +5 -4
- package/src/hooks/useChatToggleAnalytics.ts +15 -0
- package/src/hooks/useGraphQLConfig.ts +63 -0
- package/src/hooks/useIdentifyUser.ts +33 -0
- package/src/hooks/useImageResolver.ts +7 -7
- package/src/hooks/useLocalStorageOperations.ts +92 -0
- package/src/hooks/useNewOrgConfig.ts +3 -76
- package/src/hooks/useSearch.tsx +21 -18
- package/src/hooks/useSearchOperations.ts +97 -0
- package/src/hooks/useSessionStorageOperations.ts +28 -0
- package/src/hooks/useShopifyUrlOperations.ts +45 -0
- package/src/hooks/useTrackComponentVisibleEvent.ts +12 -8
- package/src/hooks/useUpdateAnalyticsProps.ts +28 -17
- package/src/interceptors/index.ts +0 -1
- package/src/interceptors/useMessageInterceptor.ts +5 -8
- package/src/merchants/bandolier/bandolier.ts +10 -28
- package/src/merchants/carpe/carpe.ts +5 -8
- package/src/merchants/coterie/coterie.ts +3 -6
- package/src/merchants/default.ts +73 -70
- package/src/merchants/domInsertion.ts +30 -0
- package/src/merchants/dreamlandBaby/dreamlandBaby.ts +12 -6
- package/src/merchants/fiveCbd/fiveCbd.ts +7 -13
- package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +44 -14
- package/src/merchants/greenpan/greenpan.ts +6 -12
- package/src/merchants/gridInsertion.ts +19 -0
- package/src/merchants/grooveLife/grooveLife.ts +13 -7
- package/src/merchants/homegrownCannabis/homegrownCannabis.ts +12 -6
- package/src/merchants/jackArcher/jackArcher.ts +26 -11
- package/src/merchants/jordanCraig/jordanCraig.ts +5 -5
- package/src/merchants/kindredBravely/kindredBravely.ts +16 -7
- package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +9 -6
- package/src/merchants/larryAndSerges/larryAndSerges.ts +6 -2
- package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +7 -7
- package/src/merchants/longevityrx/longevityrx.ts +14 -8
- package/src/merchants/lookOptic/lookOptic.ts +6 -6
- package/src/merchants/mantraBrand/mantraBrand.ts +14 -8
- package/src/merchants/medterra/medterra.ts +14 -11
- package/src/merchants/modells/modells.ts +6 -9
- package/src/merchants/pressedFloral/pressedFloral.ts +7 -13
- package/src/merchants/skinPerfection/skinPerfection.ts +13 -7
- package/src/merchants/snapSupplements/snapSupplements.ts +13 -10
- package/src/merchants/spanx/spanx.ts +6 -6
- package/src/merchants/spanx/spanxStaging.ts +6 -12
- package/src/merchants/supergoop/supergoop.ts +11 -12
- package/src/merchants/uniqueVintage/uniqueVintage.ts +6 -6
- package/src/merchants/venaCbd/venaCbd.ts +6 -9
- package/src/merchants/westonJonBoucher/westonJonBoucher.ts +6 -6
- package/src/merchants/wineEnthusiast/wineEnthusiast.ts +6 -6
- package/src/merchants/wolfMattress/wolfMattress.ts +3 -3
- package/src/merchants/wolfTactical/wolfTactical.ts +5 -11
- package/src/types/config-versions.ts +6 -0
- package/src/types.ts +0 -53
- package/dist/adapters/amplitude/index.cjs +0 -14
- package/dist/adapters/amplitude/index.d.cts +0 -6
- package/dist/adapters/amplitude/index.d.ts +0 -6
- package/dist/adapters/amplitude/index.js +0 -12
- package/dist/api-B2euFL-5.cjs +0 -269
- package/dist/api-XRr_lAG6.js +0 -190
- package/dist/application/config/index.cjs +0 -43
- package/dist/application/config/index.d.cts +0 -15
- package/dist/application/config/index.d.ts +0 -15
- package/dist/application/config/index.js +0 -41
- package/dist/application/service/customerService/index.cjs +0 -4
- package/dist/application/service/customerService/index.d.cts +0 -3
- package/dist/application/service/customerService/index.d.ts +0 -3
- package/dist/application/service/customerService/index.js +0 -4
- package/dist/application/service/index.cjs +0 -42
- package/dist/application/service/index.d.cts +0 -413
- package/dist/application/service/index.d.ts +0 -413
- package/dist/application/service/index.js +0 -12
- package/dist/atomStore-ONYy0XuA.d.cts +0 -24
- package/dist/atomStore-kOKiEcNl.d.ts +0 -24
- package/dist/bandolier-Da4wt6sm.cjs +0 -1230
- package/dist/bandolier-DzEmYWcz.js +0 -1230
- package/dist/carpe-AXipz0Xl.cjs +0 -608
- package/dist/carpe-CaUKwcEa.js +0 -606
- package/dist/contexts-CtRlNXaS.js +0 -7674
- package/dist/contexts-CtgmnYNn.cjs +0 -9088
- package/dist/coterie-oKHAT0lx.js +0 -240
- package/dist/customerService-BG1uNZZ1.cjs +0 -36
- package/dist/customerService-BHQRnLhC.js +0 -23
- package/dist/default-B4fINY5_.cjs +0 -4
- package/dist/default-BrTQxA0c.js +0 -4
- package/dist/default-C3LrcbZB.cjs +0 -199
- package/dist/default-CXkYrLEr.js +0 -176
- package/dist/dreamlandBaby-BEqt0eKF.js +0 -347
- package/dist/dreamlandBaby-DBDjEJCc.cjs +0 -347
- package/dist/featureFlagService-5wdmW02z.d.ts +0 -18
- package/dist/featureFlagService-DaelrXEk.d.cts +0 -18
- package/dist/fiveCbd-CdqNt16h.cjs +0 -614
- package/dist/fiveCbd-D6B-sgnX.js +0 -614
- package/dist/forLoveAndLemons-C7GsJG7f.cjs +0 -668
- package/dist/forLoveAndLemons-gNDlMtPR.js +0 -666
- package/dist/greenpan-B5AaW4M_.js +0 -398
- package/dist/greenpan-DrORpYms.cjs +0 -398
- package/dist/grooveLife-BJqsfH2H.cjs +0 -343
- package/dist/grooveLife-xIUmDM8s.js +0 -343
- package/dist/homegrownCannabis-8TZ21u6L.cjs +0 -411
- package/dist/homegrownCannabis-BtMuEvbZ.js +0 -411
- package/dist/index-CKUpnyJQ.d.ts +0 -72
- package/dist/index-DFL1dIT_.d.ts +0 -7
- package/dist/index-DXpgMVpp.d.ts +0 -749
- package/dist/index-MFbPQ8Ji.d.ts +0 -95
- package/dist/index-VHFMGkO-.d.cts +0 -72
- package/dist/index-VSFakgAI.d.cts +0 -95
- package/dist/index-aNW5V9fh.d.cts +0 -749
- package/dist/index-zZjcds15.d.cts +0 -7
- package/dist/jackArcher-WtkbLBZj.cjs +0 -728
- package/dist/jordanCraig-471FcgqF.cjs +0 -1787
- package/dist/jordanCraig-DNOncplU.js +0 -1787
- package/dist/kindredBravely-BlLyHGMX.cjs +0 -491
- package/dist/kindredBravely-cqZ4OvXp.js +0 -491
- package/dist/kutFromTheKloth-3mOIryvt.cjs +0 -370
- package/dist/kutFromTheKloth-DtVNCMKa.js +0 -370
- package/dist/larryAndSerges-88Bvq-Us.cjs +0 -262
- package/dist/larryAndSerges-cvak6May.js +0 -262
- package/dist/leapsAndRebounds-Dmf8eUPq.js +0 -361
- package/dist/leapsAndRebounds-iWKc923H.cjs +0 -361
- package/dist/logger-Dln20ans.cjs +0 -26
- package/dist/logger-pdEEY8T2.js +0 -20
- package/dist/longevityrx-BTMI9vn-.js +0 -321
- package/dist/longevityrx-CobPyigd.cjs +0 -321
- package/dist/lookOptic-C4H_c0JZ.cjs +0 -283
- package/dist/mantraBrand-CySGqbn6.cjs +0 -751
- package/dist/medterra-BnZ5p27n.cjs +0 -584
- package/dist/medterra-DaICcPPp.js +0 -584
- package/dist/modells-CZ1L6dD_.js +0 -485
- package/dist/modells-DF0SndHr.cjs +0 -485
- package/dist/orgConfigResults--dAwtw3W.d.ts +0 -881
- package/dist/orgConfigResults-BL0XBA6x.d.cts +0 -881
- package/dist/pressedFloral-B3t2cYzs.cjs +0 -662
- package/dist/pressedFloral-Dsws2Kfb.js +0 -662
- package/dist/skinPerfection-CILQM2bR.cjs +0 -335
- package/dist/skinPerfection-DmQCntRf.js +0 -335
- package/dist/snapSupplements--X_v0KRM.js +0 -286
- package/dist/snapSupplements-Djuzl0Ed.cjs +0 -286
- package/dist/spanx-Bo81yXSF.cjs +0 -664
- package/dist/spanx-DauxB8KE.js +0 -662
- package/dist/spanxStaging-BucYQvR1.cjs +0 -849
- package/dist/spanxStaging-CfXUukdP.js +0 -846
- package/dist/supergoop-8qa_NV3F.cjs +0 -338
- package/dist/supergoop-DOaui-A6.js +0 -336
- package/dist/types-CD4LFta-.d.cts +0 -33
- package/dist/types-CGC6Oozp.cjs +0 -231
- package/dist/types-CnTCkyvK.js +0 -177
- package/dist/types-DBdI0j89.d.ts +0 -33
- package/dist/uniqueVintage-DAne8XcL.cjs +0 -1214
- package/dist/variant-CC1nrywd.d.ts +0 -13
- package/dist/variant-CQTuQQSq.d.cts +0 -13
- package/dist/venaCbd-B1HO_Pkr.cjs +0 -366
- package/dist/venaCbd-CnByO-5R.js +0 -366
- package/dist/westonJonBoucher-BRfHWMbs.cjs +0 -423
- package/dist/wineEnthusiast-DW8JVwV8.cjs +0 -941
- package/dist/wolfMattress-B6INZNRJ.cjs +0 -373
- package/dist/wolfMattress-D9P7ErH_.js +0 -373
- package/dist/wolfTactical-C5Pupi3J.js +0 -350
- package/dist/wolfTactical-TMthZM93.cjs +0 -350
- package/src/adapters/amplitude/amplitudeAdapter.ts +0 -477
- package/src/adapters/amplitude/index.ts +0 -2
- package/src/adapters/amplitude/stubAmplitudeAdapter.ts +0 -34
- package/src/adapters/spiffy/commerce/graphql.ts +0 -219
- package/src/application/config/generalStaticConfig.ts +0 -40
- package/src/application/config/index.ts +0 -1
- package/src/application/models/domMutationContinuation.ts +0 -7
- package/src/application/models/domObservationStrategy.ts +0 -9
- package/src/application/service/cachingService.ts +0 -84
- package/src/application/service/cdnService.ts +0 -20
- package/src/application/service/customerService/index.ts +0 -8
- package/src/application/service/customerService/providers/UnsupportedCustomerService.ts +0 -15
- package/src/application/service/domMutationObserver.ts +0 -320
- package/src/application/service/domMutations/GridInsertionService.ts +0 -123
- package/src/application/service/domMutations/dataLayer/dataLayerEventsListener.ts +0 -99
- package/src/application/service/domMutations/domInsertionService.ts +0 -90
- package/src/application/service/domMutations/domMutationListener.ts +0 -15
- package/src/application/service/domMutations/domMutationListenerState.ts +0 -52
- package/src/application/service/domMutations/floatingChat/embeddedChatsPlacementsListener.ts +0 -41
- package/src/application/service/domMutations/gladly/gladlyListener.ts +0 -61
- package/src/application/service/domMutations/spiffy/orgs/common/kustomerVisibilityListener.ts +0 -41
- package/src/application/service/domMutations/spiffy/orgs/common/orgsCommonDataLayerListener.ts +0 -119
- package/src/application/service/featureFlagService.ts +0 -130
- package/src/application/service/graphqlConfigService.ts +0 -59
- package/src/application/service/index.ts +0 -32
- package/src/application/service/kustomerIntegrationService.ts +0 -111
- package/src/application/service/localStorageService.ts +0 -77
- package/src/application/service/pageVariantService.ts +0 -866
- package/src/application/service/searchService.ts +0 -147
- package/src/application/service/sessionStorageService.ts +0 -27
- package/src/application/service/shopifyUrlService.ts +0 -63
- package/src/application/service/userIdentityService.ts +0 -114
- package/src/application/service/windowChatToggleService.ts +0 -80
- package/src/application/service/windowDataLayerService.ts +0 -181
- package/src/application/service/windowFrontendConfigService.ts +0 -129
- package/src/atoms/org/merchantCss.ts +0 -161
- package/src/atoms/org/org.ts +0 -251
- package/src/atoms/org/orgUIConfig.ts +0 -142
- package/src/enabled-features.ts +0 -83
- package/src/hooks/useDynamicVariants.ts +0 -226
- package/src/hooks/useFileUpload.ts +0 -63
- package/src/hooks/useHideElements.ts +0 -85
- package/src/interceptors/useFormEscalation.ts +0 -57
- /package/dist/{locators-DnKpajbY.js → atomStore-CZnUUsrr.js} +0 -0
- /package/dist/{locators-CugndTUM.cjs → atomStore-KSoFS3Jj.cjs} +0 -0
- /package/dist/{utilityTypes-C4h2wgAK.cjs → locators-0YYZu9n4.cjs} +0 -0
- /package/dist/{utilityTypes-BVikejDo.js → locators-fBXS_pxP.js} +0 -0
- /package/dist/{variantInfo-CzhR5W6h.js → utilityTypes-8sETsYPk.js} +0 -0
- /package/dist/{variantInfo-CNRTY0gH.cjs → utilityTypes-COShxVir.cjs} +0 -0
- /package/src/{application/service/customerService/types.ts → types/customerService.ts} +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/sessionExceptions.ts +0 -0
- /package/src/{adapters/spiffy/commerce → types}/exceptions/unsupportedProductExceptions.ts +0 -0
|
@@ -1,477 +0,0 @@
|
|
|
1
|
-
import Logger from "src/application/logging/logger";
|
|
2
|
-
import { createInstance } from "@amplitude/analytics-browser";
|
|
3
|
-
// import { sessionReplayPlugin } from '@amplitude/plugin-session-replay-browser';
|
|
4
|
-
import { FeatureGates } from "src/application/models/featureGates";
|
|
5
|
-
import { OrgConfig } from "src/application/models/api/orgConfigResults";
|
|
6
|
-
import { OrgShortName } from "src/application/models";
|
|
7
|
-
import { FeatureFlagService } from "src/application/service/featureFlagService";
|
|
8
|
-
import { envAtom, userIdAtom } from "src/atoms/app";
|
|
9
|
-
import { getAtomStore } from "src/atoms/atomStore/atomStore";
|
|
10
|
-
import { featureFlagServiceAtom, orgConfigAtom } from "src/atoms/org/org";
|
|
11
|
-
import { WindowDataLayerService } from "src/application/service/windowDataLayerService";
|
|
12
|
-
import { orgAnalyticsGoogleAnalyticsConfigAtom } from "src/atoms/org/orgAnalyticsConfig";
|
|
13
|
-
import { OrgAnalyticsGoogleAnalyticsConfig } from "src/application/models/api/orgAnalyticsConfig";
|
|
14
|
-
import {
|
|
15
|
-
LocalStorageKeys,
|
|
16
|
-
LocalStorageService,
|
|
17
|
-
} from "src/application/service/localStorageService";
|
|
18
|
-
import { StubAmplitudeAdapter } from "src/adapters/amplitude";
|
|
19
|
-
import { ContextSourceEnum } from "@spiffy-ai/commerce-api-client";
|
|
20
|
-
|
|
21
|
-
import type {
|
|
22
|
-
BrowserClient,
|
|
23
|
-
EnrichmentPlugin,
|
|
24
|
-
Event,
|
|
25
|
-
ServerZoneType,
|
|
26
|
-
} from "@amplitude/analytics-types";
|
|
27
|
-
import { EnabledFeatures } from "src/enabled-features";
|
|
28
|
-
import { EventsDispatcher, SpiffyEvent } from "src/events";
|
|
29
|
-
import {
|
|
30
|
-
amplitudeApiKeyAtom,
|
|
31
|
-
contextSourceAtom,
|
|
32
|
-
dataResidencyAtom,
|
|
33
|
-
identifyingPrefixAtom,
|
|
34
|
-
} from "src/atoms/envive/enviveConfig";
|
|
35
|
-
|
|
36
|
-
export enum SpiffyMetricsEventName {
|
|
37
|
-
BundleLoaded = "Bundle Loaded",
|
|
38
|
-
ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
|
|
39
|
-
ChatFloatingButtonVisible = "Chat Floating Button Visible",
|
|
40
|
-
ChatComponentVisible = "Chat Component Visible",
|
|
41
|
-
ChatComponentExpanded = "Chat Component Expanded",
|
|
42
|
-
ChatComponentCollapsed = "Chat Component Collapsed",
|
|
43
|
-
ChatUserMessageInput = "Chat User Message Input",
|
|
44
|
-
ChatSuggestionClicked = "Chat Suggestion Clicked",
|
|
45
|
-
ChatAssistantResponse = "Chat Assistant Response",
|
|
46
|
-
ProductCardClicked = "Product Card Clicked",
|
|
47
|
-
ProductReviewCardClicked = "Product Review Card Clicked",
|
|
48
|
-
AddToCartClicked = "Add to Cart Clicked",
|
|
49
|
-
PromptCardClicked = "Prompt Card Clicked",
|
|
50
|
-
SupportedEvent = "Supported Event",
|
|
51
|
-
SearchBackToResponseClicked = "Search Back to Response Clicked",
|
|
52
|
-
PerformanceMetrics = "Performance Metrics",
|
|
53
|
-
SearchBarClicked = "Search Bar Clicked",
|
|
54
|
-
OrderLookupStarted = "Order Lookup Started",
|
|
55
|
-
OrderLookupFormSubmitted = "Order Lookup Form Submitted",
|
|
56
|
-
SearchComponentVisible = "Search Component Visible",
|
|
57
|
-
GlobalSearchPromptClicked = "Global Search Prompt Clicked", // This is the scrolling list of suggestion buttons in global search
|
|
58
|
-
SearchInputStarted = "Search Input Started",
|
|
59
|
-
SearchQuerySubmitted = "Search Query Submitted",
|
|
60
|
-
// SearchAutocompleteViewed = 'Search Autocomplete Viewed', // TODO: add this when autocomplete is added
|
|
61
|
-
// SearchAutocompleteClicked = 'Search Autocomplete Clicked', // TODO: add this when autocomplete is added
|
|
62
|
-
SearchResultsViewed = "Search Results Viewed",
|
|
63
|
-
SearchTimeToFirstClick = "Search Time to First Click",
|
|
64
|
-
SearchZeroResultsRate = "Search Zero Results Rate",
|
|
65
|
-
SearchFilterClicked = "Search Filter Clicked",
|
|
66
|
-
SearchSortClicked = "Search Sort Clicked",
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
class AmplitudeAdapter {
|
|
70
|
-
private underlyingAmplitudeClient: BrowserClient | undefined = undefined;
|
|
71
|
-
|
|
72
|
-
private internalEventTrackingEnrichment: EnrichmentPlugin | undefined =
|
|
73
|
-
undefined;
|
|
74
|
-
|
|
75
|
-
private supplementalDefaultProps: Record<string, unknown>;
|
|
76
|
-
|
|
77
|
-
constructor(
|
|
78
|
-
private readonly userId: string,
|
|
79
|
-
private readonly orgConfig: OrgConfig,
|
|
80
|
-
private readonly featureFlagService: FeatureFlagService,
|
|
81
|
-
private readonly orgGaConfig?: OrgAnalyticsGoogleAnalyticsConfig
|
|
82
|
-
) {
|
|
83
|
-
this.supplementalDefaultProps = {};
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
init(): void {
|
|
87
|
-
this.underlyingAmplitudeClient = this.createUnderlyingClient();
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
getUnderlyingAmplitudeClient(): BrowserClient | undefined {
|
|
91
|
-
return this.underlyingAmplitudeClient;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
getSupplementalDefaultProps(): Record<string, unknown> {
|
|
95
|
-
return this.supplementalDefaultProps;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
setSupplementalDefaultProps(
|
|
99
|
-
supplementalDefaultProps: Record<string, unknown>
|
|
100
|
-
): void {
|
|
101
|
-
this.supplementalDefaultProps = supplementalDefaultProps;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
getEventTrackingEnrichment(): EnrichmentPlugin {
|
|
105
|
-
if (this.internalEventTrackingEnrichment !== undefined) {
|
|
106
|
-
return this.internalEventTrackingEnrichment;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
this.internalEventTrackingEnrichment = {
|
|
110
|
-
name: "page-view-tracking-enrichment",
|
|
111
|
-
type: "enrichment",
|
|
112
|
-
setup: async () => undefined,
|
|
113
|
-
execute: async (event: Event): Promise<Event> => {
|
|
114
|
-
let enrichedEvent: Event;
|
|
115
|
-
|
|
116
|
-
const eventsToEnrich = [
|
|
117
|
-
"[Amplitude] Page Viewed",
|
|
118
|
-
`[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`,
|
|
119
|
-
];
|
|
120
|
-
|
|
121
|
-
if (eventsToEnrich.includes(event.event_type)) {
|
|
122
|
-
const windowProps = window._spiffy ? { ...window._spiffy } : {};
|
|
123
|
-
|
|
124
|
-
if (windowProps.publicKey) {
|
|
125
|
-
delete windowProps.publicKey;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
const globalProperties = Object.entries(windowProps).reduce<
|
|
129
|
-
Record<string, string>
|
|
130
|
-
>(
|
|
131
|
-
(acc, [key, value]) => ({
|
|
132
|
-
...acc,
|
|
133
|
-
[`globalProperties.${key}`]: `${value}`,
|
|
134
|
-
}),
|
|
135
|
-
{}
|
|
136
|
-
);
|
|
137
|
-
|
|
138
|
-
const enabledFeatures = await EnabledFeatures.get(
|
|
139
|
-
this.orgConfig,
|
|
140
|
-
this.featureFlagService
|
|
141
|
-
);
|
|
142
|
-
const enabledFeaturesProperties = Object.entries(
|
|
143
|
-
enabledFeatures
|
|
144
|
-
).reduce<Record<string, string>>(
|
|
145
|
-
(acc, [key, value]) => ({
|
|
146
|
-
...acc,
|
|
147
|
-
[`enabledFeatures.${key}`]: `${value}`,
|
|
148
|
-
}),
|
|
149
|
-
{}
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
const timingProperties = {
|
|
153
|
-
// This property can be useful to detect bias in A/B testing.
|
|
154
|
-
//
|
|
155
|
-
// It is a proxy metric for the value of "Started" (in Dev Tools > Network > Timing)
|
|
156
|
-
// for the network request to send the Page Viewed event to Amplitude.
|
|
157
|
-
//
|
|
158
|
-
// If the value is higher for one group, visitors in that group are subject to
|
|
159
|
-
// a higher likelihood that the page fails to send the event to Amplitude before
|
|
160
|
-
// they navigate away, leading to relative underreporting of page views for that group.
|
|
161
|
-
"timing.enriched_at_ms": window.performance?.now(),
|
|
162
|
-
};
|
|
163
|
-
|
|
164
|
-
enrichedEvent = {
|
|
165
|
-
...event,
|
|
166
|
-
event_properties: {
|
|
167
|
-
...event.event_properties,
|
|
168
|
-
...this.getDefaultTrackingProps(),
|
|
169
|
-
...globalProperties,
|
|
170
|
-
...enabledFeaturesProperties,
|
|
171
|
-
...timingProperties,
|
|
172
|
-
},
|
|
173
|
-
};
|
|
174
|
-
} else {
|
|
175
|
-
enrichedEvent = event;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
EventsDispatcher.dispatch(SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
|
|
179
|
-
|
|
180
|
-
return enrichedEvent;
|
|
181
|
-
},
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
return this.internalEventTrackingEnrichment;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
amplitudeSessionReplayInit(): boolean {
|
|
188
|
-
// TODO: enable session replay only for UV so we can triage issues with search analytics
|
|
189
|
-
// remove when we can easily do this through AI Studio or no longer needed for UV
|
|
190
|
-
const orgShortName = this.orgConfig.org.org.shortName;
|
|
191
|
-
const isEnabled =
|
|
192
|
-
orgShortName === OrgShortName.UniqueVintage &&
|
|
193
|
-
this.featureFlagService.isClientSessionEnabled() &&
|
|
194
|
-
this.featureFlagService.isFeatureGateEnabled(
|
|
195
|
-
FeatureGates.IsNewFeatureEnabled
|
|
196
|
-
);
|
|
197
|
-
const sampleRate = 1;
|
|
198
|
-
|
|
199
|
-
try {
|
|
200
|
-
Logger.logDebug(
|
|
201
|
-
`[spiffy-ai] amplitude session-replay initializing isEnabled=${isEnabled} sampleRate=${sampleRate}`
|
|
202
|
-
);
|
|
203
|
-
|
|
204
|
-
if (!isEnabled) {
|
|
205
|
-
return isEnabled;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// amplitudeInstance.add(sessionReplayPlugin({ sampleRate }));
|
|
209
|
-
|
|
210
|
-
return isEnabled;
|
|
211
|
-
} catch (e) {
|
|
212
|
-
Logger.logError(
|
|
213
|
-
"[spiffy-ai] Error initializing amplitude session-replay",
|
|
214
|
-
e
|
|
215
|
-
);
|
|
216
|
-
return false;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
createUnderlyingClient(): BrowserClient {
|
|
221
|
-
const atomStore = getAtomStore();
|
|
222
|
-
const amplitudeApiKey = atomStore.get(amplitudeApiKeyAtom);
|
|
223
|
-
const dataResidency = atomStore.get(dataResidencyAtom);
|
|
224
|
-
|
|
225
|
-
if (!amplitudeApiKey) {
|
|
226
|
-
throw new Error(
|
|
227
|
-
`amplitudeApiKey is undefined, make sure you have added a value for it in the EnviveConfigProvider`
|
|
228
|
-
);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
const currentAmplitudeInstance: BrowserClient = createInstance();
|
|
232
|
-
const isSessionsEnabled = this.amplitudeSessionReplayInit();
|
|
233
|
-
currentAmplitudeInstance.add(this.getEventTrackingEnrichment());
|
|
234
|
-
currentAmplitudeInstance.init(amplitudeApiKey, this.userId, {
|
|
235
|
-
serverZone: dataResidency as ServerZoneType,
|
|
236
|
-
trackingOptions: {
|
|
237
|
-
ipAddress: true,
|
|
238
|
-
},
|
|
239
|
-
autocapture: {
|
|
240
|
-
// Amplitude tracks marketing attribution by default.
|
|
241
|
-
// Browser SDK 2 captures UTM parameters, referrer information,
|
|
242
|
-
// and click IDs as user properties.
|
|
243
|
-
attribution: true,
|
|
244
|
-
// Amplitude tracks page view events by default.
|
|
245
|
-
// The default behavior sends a page view event on initialization.
|
|
246
|
-
// The event type for this event is [Amplitude] Page Viewed.
|
|
247
|
-
pageViews: {
|
|
248
|
-
trackHistoryChanges: "pathOnly",
|
|
249
|
-
},
|
|
250
|
-
// Amplitude tracks session events by default.
|
|
251
|
-
// A session is the period of time a user has your website open.
|
|
252
|
-
sessions: isSessionsEnabled,
|
|
253
|
-
// Amplitude tracks form interaction events by default.
|
|
254
|
-
// The SDK tracks [Amplitude] Form Started when the user initially
|
|
255
|
-
// interacts with the form element. An initial interaction can be the
|
|
256
|
-
// first change to a text input, radio button, or dropdown.
|
|
257
|
-
formInteractions: false,
|
|
258
|
-
// Amplitude tracks file download events by default.
|
|
259
|
-
// The SDK tracks [Amplitude] File Downloaded when the user clicks an anchor
|
|
260
|
-
// or <a> tag linked to a file
|
|
261
|
-
fileDownloads: false,
|
|
262
|
-
},
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
return currentAmplitudeInstance;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
getDefaultTrackingProps(): Record<string, unknown> {
|
|
269
|
-
const atomStore = getAtomStore();
|
|
270
|
-
const env = atomStore.get(envAtom);
|
|
271
|
-
const contextSource = atomStore.get(contextSourceAtom);
|
|
272
|
-
const gatesProps = this.orgConfig.gates
|
|
273
|
-
? this.orgConfig.gates.reduce<Record<string, boolean>>((acc, curr) => {
|
|
274
|
-
if (curr.name && curr.value != null) {
|
|
275
|
-
return { ...acc, [`feature_gate.${curr.name}`]: curr.value };
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
return acc;
|
|
279
|
-
}, {})
|
|
280
|
-
: {};
|
|
281
|
-
const experimentProps = this.orgConfig.experiments
|
|
282
|
-
? this.orgConfig.experiments.reduce<Record<string, unknown>>(
|
|
283
|
-
(acc, curr) => {
|
|
284
|
-
if (curr.name && curr.value != null) {
|
|
285
|
-
return {
|
|
286
|
-
...acc,
|
|
287
|
-
[`product_experiment.${curr.name}`]: curr.value,
|
|
288
|
-
};
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
return acc;
|
|
292
|
-
},
|
|
293
|
-
{}
|
|
294
|
-
)
|
|
295
|
-
: {};
|
|
296
|
-
const orgLevelAmplitudeTrackingProps = {
|
|
297
|
-
...gatesProps,
|
|
298
|
-
...experimentProps,
|
|
299
|
-
};
|
|
300
|
-
|
|
301
|
-
// Keep these name value/pairs consistent with server side tracking events sent to amplitude
|
|
302
|
-
// Consult pymono for the latest list of properties. The "null" values are placeholders and
|
|
303
|
-
// left here for reference and documentation purposes.
|
|
304
|
-
return {
|
|
305
|
-
...orgLevelAmplitudeTrackingProps,
|
|
306
|
-
...this.supplementalDefaultProps,
|
|
307
|
-
org_id: this.orgConfig.org?.org.id,
|
|
308
|
-
app_id: "commerce-chat-react-component", // This is the app id of the current app
|
|
309
|
-
chat_id: LocalStorageService.getItem(LocalStorageKeys.ChatId),
|
|
310
|
-
env: env || "unknown",
|
|
311
|
-
app_source: contextSource,
|
|
312
|
-
"org.short_name": this.orgConfig.org?.org.shortName,
|
|
313
|
-
"user.id": this.userId, // This is the user id of the current user (aka "spiffy user id")
|
|
314
|
-
"cdp.user_id": null, // Not applicable, left here for future use
|
|
315
|
-
"cdp.provider": null, // Not applicable, left here for future use
|
|
316
|
-
"event.source": "web-browser",
|
|
317
|
-
"event.type": "user-activity",
|
|
318
|
-
"event.id": null, // Not applicable, left here for future use
|
|
319
|
-
"event.channel": "web",
|
|
320
|
-
"event.timestamp": null, // Implicitly set by amplitude
|
|
321
|
-
};
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Prefixes the event properties sent to Amplitude with the event name to prevent event-level
|
|
326
|
-
* property names from clashing with app-level property names. Event properties will be in the
|
|
327
|
-
* format of `event_name.property_name`.
|
|
328
|
-
*
|
|
329
|
-
* @param eventName - The name of the event to prefix the properties for.
|
|
330
|
-
* @param eventProps - The event properties to prefix.
|
|
331
|
-
*
|
|
332
|
-
* @returns The prefixed properties.
|
|
333
|
-
*/
|
|
334
|
-
private eventPropsToPrefixedEventProps = (
|
|
335
|
-
eventName: SpiffyMetricsEventName,
|
|
336
|
-
eventProps: Record<string, unknown>
|
|
337
|
-
): Record<string, unknown> => {
|
|
338
|
-
// replaces all spaces in the event name with underscores
|
|
339
|
-
const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
|
|
340
|
-
|
|
341
|
-
return Object.entries(eventProps).reduce((acc, [key, value]) => {
|
|
342
|
-
acc[`${prefix}.${key}`] = value;
|
|
343
|
-
return acc;
|
|
344
|
-
}, {} as Record<string, unknown>);
|
|
345
|
-
};
|
|
346
|
-
|
|
347
|
-
static trackEvent = async ({
|
|
348
|
-
eventName,
|
|
349
|
-
eventProps,
|
|
350
|
-
eventGroups,
|
|
351
|
-
alsoSendToGoogleAnalytics = false,
|
|
352
|
-
}: {
|
|
353
|
-
eventName: SpiffyMetricsEventName;
|
|
354
|
-
eventProps?: Record<string, unknown>;
|
|
355
|
-
eventGroups?: Record<string, unknown>;
|
|
356
|
-
alsoSendToGoogleAnalytics?: boolean;
|
|
357
|
-
}): Promise<void> => {
|
|
358
|
-
try {
|
|
359
|
-
const decoratedEventName = `[Spiffy] ${eventName}`;
|
|
360
|
-
const amplitudeInstance = AmplitudeAdapter.getSingletonInstanceOf();
|
|
361
|
-
const amplitudeClient = amplitudeInstance.getUnderlyingAmplitudeClient();
|
|
362
|
-
|
|
363
|
-
if (!amplitudeClient) {
|
|
364
|
-
Logger.logWarn("amplitude instance undefined", undefined, {
|
|
365
|
-
event_name: decoratedEventName,
|
|
366
|
-
});
|
|
367
|
-
return;
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
const eventData = JSON.stringify({
|
|
371
|
-
eventName,
|
|
372
|
-
eventProps,
|
|
373
|
-
created_at: new Date().toISOString(),
|
|
374
|
-
});
|
|
375
|
-
const encoder = new TextEncoder();
|
|
376
|
-
const data = encoder.encode(eventData);
|
|
377
|
-
// calculate a hash of the event properties to use as the insert_id so that duplicate events
|
|
378
|
-
// are automatically dropped by Amplitude
|
|
379
|
-
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
380
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
381
|
-
const currentInsertId = hashArray
|
|
382
|
-
.map((b) => b.toString(16).padStart(2, "0"))
|
|
383
|
-
.join("");
|
|
384
|
-
|
|
385
|
-
Logger.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
|
|
386
|
-
event_name: decoratedEventName,
|
|
387
|
-
props: eventProps,
|
|
388
|
-
});
|
|
389
|
-
|
|
390
|
-
amplitudeClient.track(
|
|
391
|
-
decoratedEventName,
|
|
392
|
-
{
|
|
393
|
-
...amplitudeInstance.getDefaultTrackingProps(),
|
|
394
|
-
...eventProps,
|
|
395
|
-
...(eventProps
|
|
396
|
-
? AmplitudeAdapter.getSingletonInstanceOf().eventPropsToPrefixedEventProps(
|
|
397
|
-
eventName,
|
|
398
|
-
eventProps
|
|
399
|
-
)
|
|
400
|
-
: {}),
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
...eventGroups,
|
|
404
|
-
insert_id: currentInsertId,
|
|
405
|
-
}
|
|
406
|
-
);
|
|
407
|
-
|
|
408
|
-
if (alsoSendToGoogleAnalytics && amplitudeInstance.orgGaConfig) {
|
|
409
|
-
const dataLayer = WindowDataLayerService.getSingletonInstanceOf(
|
|
410
|
-
amplitudeInstance.orgGaConfig
|
|
411
|
-
);
|
|
412
|
-
Logger.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
|
|
413
|
-
dataLayer.sendToGoogleAnalyticsCircularEventsSafe(
|
|
414
|
-
decoratedEventName,
|
|
415
|
-
eventProps
|
|
416
|
-
);
|
|
417
|
-
}
|
|
418
|
-
} catch (err) {
|
|
419
|
-
Logger.logError("[spiffy-ai] Error tracking event", err, {
|
|
420
|
-
eventName,
|
|
421
|
-
eventProps,
|
|
422
|
-
});
|
|
423
|
-
}
|
|
424
|
-
};
|
|
425
|
-
|
|
426
|
-
// All string values, like user_id, event, or user property values, have a character limit of 1024 characters.
|
|
427
|
-
// https://amplitude.com/docs/apis/analytics/http-v2
|
|
428
|
-
static amplitudeSafeString(input: string | undefined) {
|
|
429
|
-
if (!input) {
|
|
430
|
-
return null;
|
|
431
|
-
}
|
|
432
|
-
if (input.length > 1024) {
|
|
433
|
-
return input.slice(0, 1024);
|
|
434
|
-
}
|
|
435
|
-
return input;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
static getSingletonInstanceOf(): AmplitudeAdapter {
|
|
439
|
-
const atomStore = getAtomStore();
|
|
440
|
-
const contextSource = atomStore.get(contextSourceAtom);
|
|
441
|
-
const identifyingPrefix = atomStore.get(identifyingPrefixAtom);
|
|
442
|
-
if (contextSource === ContextSourceEnum.Test) {
|
|
443
|
-
return new StubAmplitudeAdapter();
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
if (!window[identifyingPrefix]) {
|
|
447
|
-
window[identifyingPrefix] = {} as Window[typeof identifyingPrefix];
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
if (!window[identifyingPrefix]._amplitudeAdapter) {
|
|
451
|
-
const atomStore = getAtomStore();
|
|
452
|
-
const userId = atomStore.get(userIdAtom);
|
|
453
|
-
const orgConfig = atomStore.get(orgConfigAtom);
|
|
454
|
-
const orgGaConfig = atomStore.get(orgAnalyticsGoogleAnalyticsConfigAtom);
|
|
455
|
-
const featureFlagService = atomStore.get(featureFlagServiceAtom);
|
|
456
|
-
|
|
457
|
-
// Only create the adapter if we have the required config
|
|
458
|
-
if (!orgConfig || !featureFlagService) {
|
|
459
|
-
throw new Error(
|
|
460
|
-
"AmplitudeAdapter requires orgConfig and featureFlagService to be initialized"
|
|
461
|
-
);
|
|
462
|
-
}
|
|
463
|
-
|
|
464
|
-
window[identifyingPrefix]._amplitudeAdapter = new AmplitudeAdapter(
|
|
465
|
-
userId,
|
|
466
|
-
orgConfig,
|
|
467
|
-
featureFlagService,
|
|
468
|
-
orgGaConfig
|
|
469
|
-
);
|
|
470
|
-
window[identifyingPrefix]._amplitudeAdapter?.init();
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
return window[identifyingPrefix]._amplitudeAdapter as AmplitudeAdapter;
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
export { AmplitudeAdapter };
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { AmplitudeAdapter } from 'src/adapters/amplitude';
|
|
2
|
-
import { OrgConfig } from 'src/application/models/api/orgConfigResults';
|
|
3
|
-
import { FeatureFlagService } from 'src/application/service/featureFlagService';
|
|
4
|
-
|
|
5
|
-
import type { BrowserClient, EnrichmentPlugin, Event } from '@amplitude/analytics-types';
|
|
6
|
-
|
|
7
|
-
export class StubAmplitudeAdapter extends AmplitudeAdapter {
|
|
8
|
-
constructor() {
|
|
9
|
-
super('test', {} as OrgConfig, {} as FeatureFlagService );
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
init = (): void => {};
|
|
13
|
-
|
|
14
|
-
getUnderlyingAmplitudeClient = (): BrowserClient | undefined => undefined;
|
|
15
|
-
|
|
16
|
-
getSupplementalDefaultProps = (): Record<string, unknown> => ({});
|
|
17
|
-
|
|
18
|
-
setSupplementalDefaultProps = (): void => {};
|
|
19
|
-
|
|
20
|
-
getEventTrackingEnrichment = (): EnrichmentPlugin => ({
|
|
21
|
-
name: 'stub-enrichment',
|
|
22
|
-
type: 'enrichment',
|
|
23
|
-
setup: async () => undefined,
|
|
24
|
-
execute: async (event: Event) => event,
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
amplitudeSessionReplayInit = (): boolean => false;
|
|
28
|
-
|
|
29
|
-
createUnderlyingClient = (): BrowserClient => ({}) as BrowserClient;
|
|
30
|
-
|
|
31
|
-
getDefaultTrackingProps = (): Record<string, unknown> => ({});
|
|
32
|
-
|
|
33
|
-
trackEvent = (): Promise<void> => Promise.resolve();
|
|
34
|
-
}
|