@envive-ai/react-hooks 0.1.1 → 0.1.3
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/adapters/amplitude/index.cjs +14 -0
- package/dist/adapters/amplitude/index.d.cts +4 -0
- package/dist/adapters/amplitude/index.d.ts +4 -0
- package/dist/adapters/amplitude/index.js +12 -0
- package/dist/api-BtzLHcfU.cjs +268 -0
- package/dist/api-kpPTZhV9.js +189 -0
- package/dist/application/config/index.cjs +34 -0
- package/dist/application/config/index.d.cts +14 -0
- package/dist/application/config/index.d.ts +14 -0
- package/dist/application/config/index.js +32 -0
- package/dist/application/models/graphql/index.cjs +13 -0
- package/dist/application/models/graphql/index.d.cts +2 -0
- package/dist/application/models/graphql/index.d.ts +2 -0
- package/dist/application/models/graphql/index.js +12 -0
- package/dist/application/models/guards/api/index.cjs +15 -0
- package/dist/application/models/guards/api/index.d.cts +3 -0
- package/dist/application/models/guards/api/index.d.ts +3 -0
- package/dist/application/models/guards/api/index.js +4 -0
- package/dist/application/models/index.cjs +72 -0
- package/dist/application/models/index.d.cts +10 -0
- package/dist/application/models/index.d.ts +10 -0
- package/dist/application/models/index.js +12 -0
- package/dist/application/models/utilityTypes/index.cjs +1 -0
- package/dist/application/models/utilityTypes/index.d.cts +2 -0
- package/dist/application/models/utilityTypes/index.d.ts +2 -0
- package/dist/application/models/utilityTypes/index.js +3 -0
- package/dist/application/models/variantInfo/index.cjs +1 -0
- package/dist/application/models/variantInfo/index.d.cts +2 -0
- package/dist/application/models/variantInfo/index.d.ts +2 -0
- package/dist/application/models/variantInfo/index.js +3 -0
- package/dist/application/service/customerService/index.cjs +4 -0
- package/dist/application/service/customerService/index.d.cts +3 -0
- package/dist/application/service/customerService/index.d.ts +3 -0
- package/dist/application/service/customerService/index.js +4 -0
- package/dist/application/service/index.cjs +761 -0
- package/dist/application/service/index.d.cts +407 -0
- package/dist/application/service/index.d.ts +407 -0
- package/dist/application/service/index.js +727 -0
- package/dist/application/utils/index.cjs +38 -0
- package/dist/application/utils/index.d.cts +254 -0
- package/dist/application/utils/index.d.ts +254 -0
- package/dist/application/utils/index.js +12 -0
- package/dist/atomStore-B3tsg6mF.cjs +0 -0
- package/dist/atomStore-BNQyGmU_.cjs +57 -0
- package/dist/atomStore-FSZd_20F.js +1 -0
- package/dist/atomStore-TnLPtYns.js +31 -0
- package/dist/atoms/app/index.cjs +17 -0
- package/dist/atoms/app/index.d.cts +33 -0
- package/dist/atoms/app/index.d.ts +33 -0
- package/dist/atoms/app/index.js +12 -0
- package/dist/atoms/atomStore/index.cjs +7 -0
- package/dist/atoms/atomStore/index.d.cts +23 -0
- package/dist/atoms/atomStore/index.d.ts +23 -0
- package/dist/atoms/atomStore/index.js +4 -0
- package/dist/atoms/chat/index.cjs +41 -0
- package/dist/atoms/chat/index.d.cts +159 -0
- package/dist/atoms/chat/index.d.ts +159 -0
- package/dist/atoms/chat/index.js +12 -0
- package/dist/atoms/globalSearch/index.cjs +6 -0
- package/dist/atoms/globalSearch/index.d.cts +23 -0
- package/dist/atoms/globalSearch/index.d.ts +23 -0
- package/dist/atoms/globalSearch/index.js +3 -0
- package/dist/atoms/org/index.cjs +41 -0
- package/dist/atoms/org/index.d.cts +93 -0
- package/dist/atoms/org/index.d.ts +93 -0
- package/dist/atoms/org/index.js +13 -0
- package/dist/atoms/search/index.cjs +44 -0
- package/dist/atoms/search/index.d.cts +11 -0
- package/dist/atoms/search/index.d.ts +11 -0
- package/dist/atoms/search/index.js +14 -0
- package/dist/{bandolier-3rHPPhkF.cjs → bandolier-CQrxBHsk.cjs} +57 -47
- package/dist/{bandolier-DpF-HUG_.js → bandolier-Di9DpZ8e.js} +18 -8
- package/dist/{carpe-BG7Q_KCG.cjs → carpe-3NJOR-Rj.cjs} +36 -26
- package/dist/{carpe-DLuc07V7.js → carpe-DmWKaIQq.js} +18 -8
- package/dist/{cdnService-CAyO3axV.js → cdnService-BNreZjqy.js} +1 -1
- package/dist/{cdnService-DIF1i7VC.cjs → cdnService-vLxePdrU.cjs} +1 -1
- package/dist/chat-CCQMmhc1.cjs +5057 -0
- package/dist/chat-CCgyDehy.cjs +151 -0
- package/dist/chat-Dk6KPb1K.js +25 -0
- package/dist/chat-H6YcCS4I.js +4113 -0
- package/dist/components-CScS7Ii-.cjs +28 -0
- package/dist/components-DAQxVIn9.js +10 -0
- package/dist/config/locators/components/chat/index.cjs +23 -0
- package/dist/config/locators/components/chat/index.d.cts +2 -0
- package/dist/config/locators/components/chat/index.d.ts +2 -0
- package/dist/config/locators/components/chat/index.js +3 -0
- package/dist/config/locators/components/chat/variants/index.cjs +28 -0
- package/dist/config/locators/components/chat/variants/index.d.cts +15 -0
- package/dist/config/locators/components/chat/variants/index.d.ts +15 -0
- package/dist/config/locators/components/chat/variants/index.js +16 -0
- package/dist/config/locators/components/index.cjs +5 -0
- package/dist/config/locators/components/index.d.cts +2 -0
- package/dist/config/locators/components/index.d.ts +2 -0
- package/dist/config/locators/components/index.js +3 -0
- package/dist/config/locators/components/search/index.cjs +12 -0
- package/dist/config/locators/components/search/index.d.cts +7 -0
- package/dist/config/locators/components/search/index.d.ts +7 -0
- package/dist/config/locators/components/search/index.js +8 -0
- package/dist/config/locators/index.cjs +47 -0
- package/dist/config/locators/index.d.cts +24 -0
- package/dist/config/locators/index.d.ts +24 -0
- package/dist/config/locators/index.js +6 -0
- package/dist/contexts/index.cjs +21 -10
- package/dist/contexts/index.d.cts +12 -4
- package/dist/contexts/index.d.ts +12 -4
- package/dist/contexts/index.js +16 -5
- package/dist/{coterie-DUdvJvAs.cjs → coterie-D0UFsFC5.cjs} +26 -15
- package/dist/{coterie-FybYN_xE.js → coterie-JblRmIZL.js} +19 -8
- package/dist/customerService-C4wc0glQ.js +22 -0
- package/dist/customerService-zsDlp7g2.cjs +35 -0
- package/dist/custservice-types-D8Npo-5Z.js +22 -0
- package/dist/custservice-types-E9_OSaZ7.cjs +34 -0
- package/dist/default-C5ZTV8HA.cjs +4 -0
- package/dist/{default-CL94oJfj.js → default-DPv8m-eQ.js} +1 -1
- package/dist/{default-CKyjzyLc.cjs → default-DRKBosow.cjs} +1 -1
- package/dist/default-ao0vRl0W.js +4 -0
- package/dist/divIds-BWvq-i6I.js +22 -0
- package/dist/{divIds-BOqjn3bE.cjs → divIds-CFyAjjp3.cjs} +6 -79
- package/dist/{dreamlandBaby-WXcbsTXO.js → dreamlandBaby-CyS8oW8X.js} +18 -8
- package/dist/{dreamlandBaby-C8yzW4Nl.cjs → dreamlandBaby-y7kSvwH2.cjs} +29 -19
- package/dist/embedded-BlXJUbik.cjs +130 -0
- package/dist/embedded-C1jvFj3v.js +22 -0
- package/dist/events/index.cjs +4 -0
- package/dist/events/index.d.cts +45 -0
- package/dist/events/index.d.ts +45 -0
- package/dist/events/index.js +3 -0
- package/dist/events-DgFzlVJR.js +77 -0
- package/dist/events-bH-24eRW.cjs +89 -0
- package/dist/featureFlagService-CroFRxvD.d.cts +17 -0
- package/dist/featureFlagService-NkJ2fuEj.d.ts +17 -0
- package/dist/featureGates-BMWXU0dS.d.ts +90 -0
- package/dist/featureGates-N_gyHCTn.d.cts +90 -0
- package/dist/{fiveCbd-CZYzZPl3.cjs → fiveCbd-CXVuIBiZ.cjs} +33 -23
- package/dist/{fiveCbd-kl6CoxoF.js → fiveCbd-Cyc3-Ab9.js} +18 -8
- package/dist/{forLoveAndLemons-BNu-PfFB.cjs → forLoveAndLemons-CxQS0USq.cjs} +18 -10
- package/dist/{forLoveAndLemons-BD2qh-6B.js → forLoveAndLemons-D8mcgmdk.js} +14 -6
- package/dist/{types-DGoFEos_.d.cts → frontendConfig-KeNqU1wa.d.cts} +39 -275
- package/dist/{types-D4vlfTd0.d.ts → frontendConfig-cPvCTWm6.d.ts} +39 -275
- package/dist/globalSearch-BC0rOX3E.js +13 -0
- package/dist/globalSearch-hxbXekus.cjs +38 -0
- package/dist/{greenpan-LDDXZTsh.js → greenpan-JM6SHcqO.js} +18 -8
- package/dist/{greenpan-D6fDmjU8.cjs → greenpan-eIzyxVsn.cjs} +31 -21
- package/dist/{grooveLife-D-1qfxwj.js → grooveLife-BmsUc2cD.js} +19 -9
- package/dist/{grooveLife-CcylXabB.cjs → grooveLife-KdTizVUn.cjs} +30 -20
- package/dist/{homegrownCannabis-BEZzwFlm.cjs → homegrownCannabis-C0GDai4r.cjs} +28 -17
- package/dist/{homegrownCannabis-BScZhy9v.js → homegrownCannabis-a9udocBT.js} +18 -7
- package/dist/hooks/index.cjs +38 -27
- package/dist/hooks/index.d.cts +20 -310
- package/dist/hooks/index.d.ts +16 -307
- package/dist/hooks/index.js +16 -5
- package/dist/{contexts-C4Iz162H.cjs → hooks-DjOa7ihH.cjs} +300 -4600
- package/dist/{contexts-Dq7tO_0y.js → hooks-fneW8SWw.js} +121 -4428
- package/dist/index-BQErGgfM.d.cts +202 -0
- package/dist/index-BdNKc2ix.d.cts +8 -0
- package/dist/index-BrXuc_Ck.d.cts +24 -0
- package/dist/index-C4zjAR1c.d.cts +227 -0
- package/dist/index-CGB6CAmr.d.ts +6 -0
- package/dist/index-CIco0cCQ.d.ts +183 -0
- package/dist/index-COG1kOZG.d.ts +749 -0
- package/dist/index-CVxe7FpL.d.cts +6 -0
- package/dist/index-Cn1SeI5y.d.cts +183 -0
- package/dist/index-CnqHN_jz.d.ts +202 -0
- package/dist/index-Cqg6ltII.d.ts +38 -0
- package/dist/index-DE_7Q8qK.d.ts +94 -0
- package/dist/index-Da0UzyI9.d.ts +24 -0
- package/dist/index-DbWWcYax.d.cts +749 -0
- package/dist/index-DtoVXd6O.d.cts +97 -0
- package/dist/index-JClBRnSX.d.cts +94 -0
- package/dist/index-ghzD_356.d.ts +8 -0
- package/dist/index-hdbCEjYy.d.cts +38 -0
- package/dist/index-luJrHgPN.d.ts +97 -0
- package/dist/index-tfRj22E1.d.ts +227 -0
- package/dist/interceptors/index.cjs +14 -0
- package/dist/interceptors/index.d.cts +25 -0
- package/dist/interceptors/index.d.ts +25 -0
- package/dist/interceptors/index.js +13 -0
- package/dist/{jackArcher-BwMClqMP.cjs → jackArcher-B6OJ0N3a.cjs} +35 -25
- package/dist/{jackArcher-cJJVulZ9.js → jackArcher-B9fe4Hv8.js} +18 -8
- package/dist/{jordanCraig-DGsCO2o1.cjs → jordanCraig-0CB_m_ts.cjs} +78 -68
- package/dist/{jordanCraig-DNDMT0hn.js → jordanCraig-DNm1iw1L.js} +18 -8
- package/dist/{kindredBravely-ROyesnVk.js → kindredBravely-CZgt7DJA.js} +17 -7
- package/dist/{kindredBravely-wV2XT1r_.cjs → kindredBravely-KvYPbckZ.cjs} +28 -18
- package/dist/{kutFromTheKloth-B6GR8tO9.cjs → kutFromTheKloth-BxgtWZs9.cjs} +29 -19
- package/dist/{kutFromTheKloth-BCUOHegv.js → kutFromTheKloth-SmteSZjk.js} +18 -8
- package/dist/{larryAndSerges-CIqB9tKz.cjs → larryAndSerges-6O_u3L90.cjs} +21 -12
- package/dist/{larryAndSerges-CqS02fnX.js → larryAndSerges-DO-zG8ES.js} +14 -5
- package/dist/{leapsAndRebounds-j4YqSvNb.js → leapsAndRebounds-BK62AmXw.js} +18 -8
- package/dist/{leapsAndRebounds-CFj9F_z1.cjs → leapsAndRebounds-gPsWVUmQ.cjs} +31 -21
- package/dist/locators-C2DX_nX6.js +1 -0
- package/dist/locators-CUpyd9Wt.cjs +0 -0
- package/dist/logger-Be0NyKaY.cjs +25 -0
- package/dist/logger-BexDfK3W.js +19 -0
- package/dist/{longevityrx-C-Yc5LPR.cjs → longevityrx-DjKbwJo3.cjs} +26 -16
- package/dist/{longevityrx-9sUQZCVZ.js → longevityrx-eq5TeUcy.js} +18 -8
- package/dist/{lookOptic-dbaaorhR.cjs → lookOptic-BPPqms_j.cjs} +26 -16
- package/dist/{lookOptic-CQryypdM.js → lookOptic-jRpBXQCN.js} +18 -8
- package/dist/{mantraBrand-CifBQtHp.js → mantraBrand-BZOZfkUK.js} +19 -9
- package/dist/{mantraBrand-D5MTZ6Mj.cjs → mantraBrand-Cp8zptkj.cjs} +47 -37
- package/dist/{medterra-BCrXdmFE.cjs → medterra-BHYCBgvQ.cjs} +38 -28
- package/dist/{medterra-DhENCf-m.js → medterra-CShe6CLY.js} +18 -8
- package/dist/{modells-C_P_894S.cjs → modells-DE7-gmjK.cjs} +32 -22
- package/dist/{modells-aQrV10D7.js → modells-DFyJxNwT.js} +18 -8
- package/dist/nodeSelector-DpKXszfU.d.ts +30 -0
- package/dist/nodeSelector-vKB44CDB.d.cts +30 -0
- package/dist/org-Bkn6fl6I.cjs +106 -0
- package/dist/org-CX8HFbc9.js +63 -0
- package/dist/{pressedFloral-DErfwwl0.cjs → pressedFloral-BMkCVs8c.cjs} +37 -27
- package/dist/{pressedFloral-D-amnTQK.js → pressedFloral-aK9br-LF.js} +18 -8
- package/dist/search-DtIFZeMA.cjs +743 -0
- package/dist/search-eWwg8pNn.js +542 -0
- package/dist/search-filter-types-ByJnFPc4.d.cts +101 -0
- package/dist/search-filter-types-DPgeG8FS.d.ts +101 -0
- package/dist/{skinPerfection-DRVPJp3h.js → skinPerfection-B9G6yLM2.js} +18 -8
- package/dist/{skinPerfection-DF6nQXjh.cjs → skinPerfection-BBC1q65Z.cjs} +26 -16
- package/dist/{snapSupplements-CLZjItJi.cjs → snapSupplements-D7hx6Kgj.cjs} +26 -16
- package/dist/{snapSupplements-Yxs4jgC-.js → snapSupplements-DKvJl__T.js} +18 -8
- package/dist/{spanx-Cpbot5J5.cjs → spanx-D-ZKkxjM.cjs} +32 -22
- package/dist/{spanx-DVDyAyFC.js → spanx-yl7YfVrf.js} +20 -10
- package/dist/{spanxStaging-DbaVonN6.cjs → spanxStaging-CXeIg6zI.cjs} +36 -26
- package/dist/{spanxStaging-DAiFEMRU.js → spanxStaging-DzGXL9wD.js} +20 -10
- package/dist/suggestionBarV2-types-B0RbMStE.js +9 -0
- package/dist/suggestionBarV2-types-DG3Ekk44.cjs +15 -0
- package/dist/{supergoop-B5VQlsoe.cjs → supergoop-CSpDPOpl.cjs} +29 -18
- package/dist/{supergoop-C4McrZPT.js → supergoop-D0UkuRiA.js} +18 -7
- package/dist/test-types-C9b_OdfO.d.ts +39 -0
- package/dist/test-types-CpKCxk8U.d.cts +39 -0
- package/dist/types/index.cjs +6 -0
- package/dist/types/index.d.cts +3 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.js +4 -0
- package/dist/types-BE4faOO_.d.cts +32 -0
- package/dist/{types-DZzSQ5a6.js → types-C3S1H4hl.js} +58 -58
- package/dist/types-TD8g7LnH.d.ts +32 -0
- package/dist/{types-QJObznro.cjs → types-lcjuhDBt.cjs} +58 -58
- package/dist/{uniqueVintage-BLp_UtBR.cjs → uniqueVintage-DygVpCqU.cjs} +48 -38
- package/dist/{uniqueVintage-CS4TgOJW.js → uniqueVintage-_n0FZFVj.js} +18 -8
- package/dist/useMessageInterceptor-BP6gzo8a.js +57 -0
- package/dist/useMessageInterceptor-BnUG2Pzt.cjs +72 -0
- package/dist/utilityTypes-DMdsI0DG.cjs +0 -0
- package/dist/utilityTypes-UWdNHElu.js +1 -0
- package/dist/variant-DH4zusMi.d.cts +12 -0
- package/dist/variant-DTEqSBHd.d.ts +12 -0
- package/dist/variantInfo-BTvC6CQh.js +1 -0
- package/dist/variantInfo-Cz2YXraO.cjs +0 -0
- package/dist/{venaCbd-DfnFV7Qp.js → venaCbd-BS0dvdBm.js} +18 -8
- package/dist/{venaCbd-BxmadOeJ.cjs → venaCbd-Pqg0bj-P.cjs} +31 -21
- package/dist/{westonJonBoucher-C0FE4Wup.js → westonJonBoucher-CLw8Hy6u.js} +18 -8
- package/dist/{westonJonBoucher-BZdusJgo.cjs → westonJonBoucher-CeA0jwxe.cjs} +31 -21
- package/dist/{wineEnthusiast-CmhNg47M.js → wineEnthusiast-M9P18d1w.js} +18 -8
- package/dist/{wineEnthusiast-DQxdV8Yg.cjs → wineEnthusiast-gHBaQMbe.cjs} +30 -20
- package/dist/{wolfMattress-vMvqmwgI.js → wolfMattress-BQHjoQYu.js} +18 -7
- package/dist/{wolfMattress-CqyOUgPB.cjs → wolfMattress-CdmN-Evm.cjs} +30 -19
- package/dist/{wolfTactical-DvqxZtoA.js → wolfTactical-Cc2ZLBRh.js} +18 -8
- package/dist/{wolfTactical-q3TVDP85.cjs → wolfTactical-dObnPgAG.cjs} +30 -20
- package/package.json +101 -3
- package/src/adapters/amplitude/amplitudeAdapter.ts +1 -1
- package/src/adapters/spiffy/commerce/api.ts +1 -1
- package/src/adapters/spiffy/commerce/graphql.ts +61 -37
- package/src/application/config/index.ts +1 -0
- package/src/application/models/index.ts +102 -17
- package/src/application/models/supportedOrgs.ts +89 -65
- package/src/application/service/index.ts +32 -0
- package/src/application/service/pageVariantService.ts +201 -114
- package/src/application/service/searchService.ts +1 -1
- package/src/application/service/windowFrontendConfigService.ts +40 -18
- package/src/application/utils/index.ts +22 -3
- package/src/atoms/app/variant.ts +48 -29
- package/src/atoms/atomStore/index.ts +1 -0
- package/src/atoms/chat/messageQueue.ts +34 -17
- package/src/atoms/chat/performanceMetrics.ts +51 -38
- package/src/atoms/chat/renderedWidgetRefs.ts +14 -15
- package/src/atoms/globalSearch/index.ts +1 -0
- package/src/atoms/org/org.ts +1 -3
- package/src/atoms/org/orgUIConfig.ts +31 -24
- package/src/contexts/chatContext.tsx +124 -72
- package/src/contexts/systemSettingsContext.tsx +21 -8
- package/src/events/registerAnalyticsListeners.ts +13 -9
- package/src/hooks/useFileUpload.ts +9 -7
- package/src/hooks/useSearch.tsx +9 -6
- package/src/initialize.ts +1 -1
- package/src/interceptors/index.ts +3 -0
- package/src/main.tsx +1 -1
- package/src/types/index.ts +4 -0
- package/src/types/search-filter-types.ts +7 -7
- package/dist/GridInsertionService-C00upKLB.js +0 -40
- package/dist/GridInsertionService-CMJVhD6q.cjs +0 -52
- package/dist/custservice-types-BgjGHCtD.cjs +0 -16
- package/dist/custservice-types-V6FWABp4.js +0 -10
- package/dist/default-DMtAjA62.cjs +0 -4
- package/dist/default-zcmT2032.js +0 -4
- package/dist/divIds-Cfp3v_rG.js +0 -35
- package/dist/domInsertionService-BtzuH2Sc.js +0 -65
- package/dist/domInsertionService-Cb9814oM.cjs +0 -89
- package/dist/suggestionBarV2-types-XHYD3j8E.cjs +0 -46
- package/dist/suggestionBarV2-types-aiQmVx5m.js +0 -34
- package/src/atoms/index.ts +0 -5
- package/src/index.ts +0 -31
- /package/dist/{entrypoints-RmIbdYxh.js → entrypoints-CmmOszXO.js} +0 -0
- /package/dist/{entrypoints-C8JwiMYA.cjs → entrypoints-fowCLUT2.cjs} +0 -0
- /package/dist/{enviveConfigContext-Dfr2VH6u.cjs → enviveConfigContext-Bs8kepnO.cjs} +0 -0
- /package/dist/{enviveConfigContext-CUGLpPGU.js → enviveConfigContext-CWVdVWKW.js} +0 -0
- /package/dist/{socialProofClasses-CaA83vI4.cjs → socialProofClasses-BYLiEXpU.cjs} +0 -0
- /package/dist/{socialProofClasses-KB7zOMmg.js → socialProofClasses-CkJufEGb.js} +0 -0
- /package/src/atoms/{atomStore.ts → atomStore/atomStore.ts} +0 -0
- /package/src/atoms/{globalSearch.ts → globalSearch/globalSearch.ts} +0 -0
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import Logger from
|
|
2
|
-
import { EnvironmentService } from
|
|
3
|
-
import { applyOverrides, Override } from
|
|
4
|
-
import { getAtomStore } from
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
import Logger from "src/application/logging/logger";
|
|
2
|
+
import { EnvironmentService } from "src/application/service/environmentService";
|
|
3
|
+
import { applyOverrides, Override } from "src/application/utils/overrides";
|
|
4
|
+
import { getAtomStore } from "src/atoms/atomStore/atomStore";
|
|
5
|
+
import {
|
|
6
|
+
colorsConfigAtom,
|
|
7
|
+
frontendConfigAtom,
|
|
8
|
+
} from "src/atoms/org/graphqlConfig";
|
|
9
|
+
import { orgPageConfigAtom } from "src/atoms/org/orgPageConfig";
|
|
10
|
+
import { orgUIConfigAtom } from "src/atoms/org/orgUIConfig";
|
|
11
|
+
import {
|
|
12
|
+
ColorMapping,
|
|
13
|
+
OrgUIConfig,
|
|
14
|
+
WidgetConfig,
|
|
15
|
+
WidgetMountingConfig,
|
|
16
|
+
} from "src/contexts/types";
|
|
9
17
|
|
|
10
18
|
type CustomizableFrontendConfig = {
|
|
11
19
|
orgUIConfig: OrgUIConfig;
|
|
@@ -39,19 +47,26 @@ class WindowFrontendConfigService {
|
|
|
39
47
|
|
|
40
48
|
// Attach an explicit apply function to be called by the host page
|
|
41
49
|
const apply = (overrides: FrontendConfigOverrides[]) => {
|
|
42
|
-
Logger.logDebug(
|
|
50
|
+
Logger.logDebug("[spiffy-ai] applyFrontendConfigOverrides invoked");
|
|
43
51
|
WindowFrontendConfigService.applyOverridesToFrontendConfig(overrides);
|
|
44
52
|
};
|
|
45
53
|
|
|
46
54
|
window[identifyingPrefix].applyFrontendConfigOverrides = apply;
|
|
47
55
|
|
|
48
|
-
Logger.logDebug(
|
|
56
|
+
Logger.logDebug(
|
|
57
|
+
"[spiffy-ai] FrontendConfig overrides apply function attached"
|
|
58
|
+
);
|
|
49
59
|
} catch (e) {
|
|
50
|
-
Logger.logError(
|
|
60
|
+
Logger.logError(
|
|
61
|
+
"[spiffy-ai] Failed to attach FrontendConfig overrides apply function",
|
|
62
|
+
e
|
|
63
|
+
);
|
|
51
64
|
}
|
|
52
65
|
}
|
|
53
66
|
|
|
54
|
-
private static async applyOverridesToFrontendConfig(
|
|
67
|
+
private static async applyOverridesToFrontendConfig(
|
|
68
|
+
overrides: FrontendConfigOverrides[]
|
|
69
|
+
) {
|
|
55
70
|
const atomStore = getAtomStore();
|
|
56
71
|
try {
|
|
57
72
|
// Get the current frontend config(s) from the atoms once
|
|
@@ -68,15 +83,19 @@ class WindowFrontendConfigService {
|
|
|
68
83
|
widgetConfigs: orgPageConfig.widgetConfigs,
|
|
69
84
|
};
|
|
70
85
|
|
|
71
|
-
Logger.logInfo(
|
|
86
|
+
Logger.logInfo("[spiffy-ai] base config", {
|
|
72
87
|
baseConfig: currentConfig,
|
|
73
88
|
});
|
|
74
89
|
|
|
75
90
|
for (let i = 0; i < overrides.length; i += 1) {
|
|
76
91
|
const currentOverride = overrides[i];
|
|
77
|
-
currentConfig = applyOverrides<CustomizableFrontendConfig>(
|
|
78
|
-
|
|
79
|
-
|
|
92
|
+
currentConfig = applyOverrides<CustomizableFrontendConfig>(
|
|
93
|
+
currentConfig,
|
|
94
|
+
currentOverride,
|
|
95
|
+
{
|
|
96
|
+
arrayStrategy: "mergeByIndex",
|
|
97
|
+
}
|
|
98
|
+
);
|
|
80
99
|
}
|
|
81
100
|
|
|
82
101
|
// Update the atoms with the new frontend config(s)
|
|
@@ -91,11 +110,14 @@ class WindowFrontendConfigService {
|
|
|
91
110
|
widgetConfigs: currentConfig.widgetConfigs,
|
|
92
111
|
});
|
|
93
112
|
|
|
94
|
-
Logger.logInfo(
|
|
113
|
+
Logger.logInfo("[spiffy-ai] atoms updated via overrides", {
|
|
95
114
|
currentConfig,
|
|
96
115
|
});
|
|
97
116
|
} catch (e) {
|
|
98
|
-
Logger.logError(
|
|
117
|
+
Logger.logError(
|
|
118
|
+
"[spiffy-ai] Failed to apply FrontendConfig overrides",
|
|
119
|
+
e
|
|
120
|
+
);
|
|
99
121
|
}
|
|
100
122
|
}
|
|
101
123
|
}
|
|
@@ -1,3 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
// utils
|
|
2
|
+
export * from "./analyticsUtils";
|
|
3
|
+
export * from "./coreContextToApiContext";
|
|
4
|
+
export * from "./coreUserEventToApiUserEvent";
|
|
5
|
+
export * from "./divideArray";
|
|
6
|
+
export * from "./domObserver";
|
|
7
|
+
export * from "./elementObserver";
|
|
8
|
+
export * from "./imageFilter";
|
|
9
|
+
export * from "./merchantUtils";
|
|
10
|
+
export * from "./messageFromFormSubmittedEvent";
|
|
11
|
+
export * from "./messageFromQueryEvent";
|
|
12
|
+
export * from "./messageFromResponse";
|
|
13
|
+
export * from "./messageFromSuggestionEvent";
|
|
14
|
+
export * from "./mouseEventTypes";
|
|
15
|
+
export * from "./mutationHelper";
|
|
16
|
+
export * from "./nextMessageRequestToApiRequest";
|
|
17
|
+
export * from "./nodeSelector";
|
|
18
|
+
export * from "./overrides";
|
|
19
|
+
export * from "./stringUtils";
|
|
20
|
+
export * from "./supportedEventRequestToApiRequest";
|
|
21
|
+
export * from "./urlsParser";
|
|
22
|
+
export * from "./validation";
|
package/src/atoms/app/variant.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { atomWithStorage } from
|
|
2
|
-
import { atom } from
|
|
1
|
+
import { atomWithStorage } from "jotai/utils";
|
|
2
|
+
import { atom } from "jotai";
|
|
3
3
|
import {
|
|
4
4
|
SupportedEventProductCategory,
|
|
5
5
|
SupportedEventResponse,
|
|
6
6
|
PageVisitCategory,
|
|
7
|
-
} from
|
|
7
|
+
} from "@spiffy-ai/commerce-api-client";
|
|
8
8
|
import {
|
|
9
9
|
PageVisitVariantInfo,
|
|
10
10
|
PDPVariantInfo,
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
VariantInfo,
|
|
13
13
|
FeatureGates,
|
|
14
14
|
OrgShortName,
|
|
15
|
-
} from
|
|
16
|
-
import { sessionStorageUtil } from
|
|
17
|
-
import { featureFlagServiceAtom, orgShortNameAtom } from
|
|
15
|
+
} from "src/application/models";
|
|
16
|
+
import { sessionStorageUtil } from "src/atoms/atomStore/atomStore";
|
|
17
|
+
import { featureFlagServiceAtom, orgShortNameAtom } from "src/atoms/org/org";
|
|
18
18
|
|
|
19
19
|
export interface SupportedEvent
|
|
20
20
|
extends Pick<
|
|
21
21
|
SupportedEventResponse,
|
|
22
|
-
|
|
22
|
+
"supported" | "ready" | "category" | "collections" | "top_category"
|
|
23
23
|
> {
|
|
24
24
|
numberOfReviews: number | undefined;
|
|
25
25
|
merchant_tags?: string[];
|
|
@@ -92,7 +92,10 @@ export type BackendPageVariantConfig = {
|
|
|
92
92
|
|
|
93
93
|
export interface UrlResolverResponse {
|
|
94
94
|
variant_type: string;
|
|
95
|
-
specific_details:
|
|
95
|
+
specific_details:
|
|
96
|
+
| UrlResolvingPDPConfig
|
|
97
|
+
| UrlResolvingPLPConfig
|
|
98
|
+
| UrlResolvingGenericConfig;
|
|
96
99
|
ready: boolean;
|
|
97
100
|
user_event?: {
|
|
98
101
|
event_id?: string;
|
|
@@ -107,12 +110,12 @@ export interface UrlResolverResponse {
|
|
|
107
110
|
export type UrlResolverCache = Record<string, UrlResolverResponse | undefined>;
|
|
108
111
|
|
|
109
112
|
const internalStorageUrlResolverAtom = atomWithStorage<string | undefined>(
|
|
110
|
-
|
|
113
|
+
"spiffy-url-resolver",
|
|
111
114
|
undefined,
|
|
112
115
|
sessionStorageUtil,
|
|
113
116
|
{
|
|
114
117
|
getOnInit: true,
|
|
115
|
-
}
|
|
118
|
+
}
|
|
116
119
|
);
|
|
117
120
|
|
|
118
121
|
export const urlResolverAtom = atom(
|
|
@@ -123,22 +126,26 @@ export const urlResolverAtom = atom(
|
|
|
123
126
|
}
|
|
124
127
|
return JSON.parse(maybeUrlResolver);
|
|
125
128
|
},
|
|
126
|
-
(
|
|
129
|
+
(
|
|
130
|
+
get,
|
|
131
|
+
set,
|
|
132
|
+
value: { url: string; response: UrlResolverResponse | undefined }
|
|
133
|
+
) => {
|
|
127
134
|
// Get current cache from storage
|
|
128
135
|
const currentCache = get(urlResolverAtom);
|
|
129
136
|
const newCache = { ...currentCache, [value.url]: value.response };
|
|
130
137
|
|
|
131
138
|
set(internalStorageUrlResolverAtom, JSON.stringify(newCache));
|
|
132
|
-
}
|
|
139
|
+
}
|
|
133
140
|
);
|
|
134
141
|
|
|
135
142
|
const internalStorageSupportedEventAtom = atomWithStorage<string | undefined>(
|
|
136
|
-
|
|
143
|
+
"spiffy-supported-event",
|
|
137
144
|
undefined,
|
|
138
145
|
sessionStorageUtil,
|
|
139
146
|
{
|
|
140
147
|
getOnInit: true,
|
|
141
|
-
}
|
|
148
|
+
}
|
|
142
149
|
);
|
|
143
150
|
const internalSupportedEventAtom = atom<SupportedEvent | undefined>(undefined);
|
|
144
151
|
|
|
@@ -167,10 +174,13 @@ export const supportedEventAtom = atom(
|
|
|
167
174
|
|
|
168
175
|
// TODO: clean up this logic & the feature gate when we've fully rolled out
|
|
169
176
|
if (
|
|
170
|
-
!featureFlagService.isFeatureGateEnabled(
|
|
177
|
+
!featureFlagService.isFeatureGateEnabled(
|
|
178
|
+
FeatureGates.IsNonShapewearEnabled
|
|
179
|
+
) &&
|
|
171
180
|
variantCategory &&
|
|
172
181
|
variantCategory !== SupportedEventProductCategory.Shapewear &&
|
|
173
|
-
(shortName === OrgShortName.Spanx ||
|
|
182
|
+
(shortName === OrgShortName.Spanx ||
|
|
183
|
+
shortName === OrgShortName.SpanxStaging)
|
|
174
184
|
) {
|
|
175
185
|
const modifiedSupportedEvent = {
|
|
176
186
|
supported: false,
|
|
@@ -182,14 +192,17 @@ export const supportedEventAtom = atom(
|
|
|
182
192
|
merchant_tags: value.merchant_tags,
|
|
183
193
|
};
|
|
184
194
|
set(internalSupportedEventAtom, modifiedSupportedEvent);
|
|
185
|
-
set(
|
|
195
|
+
set(
|
|
196
|
+
internalStorageSupportedEventAtom,
|
|
197
|
+
JSON.stringify(modifiedSupportedEvent)
|
|
198
|
+
);
|
|
186
199
|
|
|
187
200
|
return;
|
|
188
201
|
}
|
|
189
202
|
|
|
190
203
|
set(internalSupportedEventAtom, value);
|
|
191
204
|
set(internalStorageSupportedEventAtom, JSON.stringify(value));
|
|
192
|
-
}
|
|
205
|
+
}
|
|
193
206
|
);
|
|
194
207
|
|
|
195
208
|
const internalVariantIdAtom = atom<string>();
|
|
@@ -199,22 +212,28 @@ const internalProductUrlAtom = atom<string>();
|
|
|
199
212
|
const internalPlpIdAtom = atom<string>();
|
|
200
213
|
const internalUrlAtom = atom<string>();
|
|
201
214
|
const internalPageVisitCategoryAtom = atom<PageVisitCategory>();
|
|
202
|
-
const internalVariantAtom = atom<
|
|
215
|
+
const internalVariantAtom = atom<"pdp" | "plp" | "search" | "page_visit">(
|
|
216
|
+
"pdp"
|
|
217
|
+
);
|
|
203
218
|
|
|
204
219
|
export const variantIdAtom = atom((get) => get(internalVariantIdAtom));
|
|
205
220
|
export const productIdAtom = atom((get) => get(internalProductIdAtom));
|
|
206
|
-
export const parentProductIdAtom = atom((get) =>
|
|
221
|
+
export const parentProductIdAtom = atom((get) =>
|
|
222
|
+
get(internalParentProductIdAtom)
|
|
223
|
+
);
|
|
207
224
|
export const productUrlAtom = atom((get) => get(internalProductUrlAtom));
|
|
208
225
|
export const plpIdAtom = atom((get) => get(internalPlpIdAtom));
|
|
209
226
|
export const urlAtom = atom((get) => get(internalUrlAtom));
|
|
210
|
-
export const pageVisitCategoryAtom = atom((get) =>
|
|
227
|
+
export const pageVisitCategoryAtom = atom((get) =>
|
|
228
|
+
get(internalPageVisitCategoryAtom)
|
|
229
|
+
);
|
|
211
230
|
export const variantAtom = atom((get) => get(internalVariantAtom));
|
|
212
231
|
export const hasParsedVariantInfoAtom = atom(false);
|
|
213
232
|
|
|
214
233
|
export const variantInfoAtom = atom(
|
|
215
234
|
(get): VariantInfo => {
|
|
216
235
|
const variant = get(variantAtom);
|
|
217
|
-
if (variant ===
|
|
236
|
+
if (variant === "pdp") {
|
|
218
237
|
return {
|
|
219
238
|
variantId: get(variantIdAtom),
|
|
220
239
|
variant,
|
|
@@ -223,7 +242,7 @@ export const variantInfoAtom = atom(
|
|
|
223
242
|
url: get(urlAtom),
|
|
224
243
|
} as PDPVariantInfo;
|
|
225
244
|
}
|
|
226
|
-
if (variant ===
|
|
245
|
+
if (variant === "plp") {
|
|
227
246
|
return {
|
|
228
247
|
variantId: get(variantIdAtom),
|
|
229
248
|
variant,
|
|
@@ -231,7 +250,7 @@ export const variantInfoAtom = atom(
|
|
|
231
250
|
url: get(urlAtom),
|
|
232
251
|
} as PLPVariantInfo;
|
|
233
252
|
}
|
|
234
|
-
if (variant ===
|
|
253
|
+
if (variant === "page_visit") {
|
|
235
254
|
return {
|
|
236
255
|
variantId: get(variantIdAtom),
|
|
237
256
|
variant,
|
|
@@ -239,23 +258,23 @@ export const variantInfoAtom = atom(
|
|
|
239
258
|
pageVisitCategory: get(pageVisitCategoryAtom),
|
|
240
259
|
} as PageVisitVariantInfo;
|
|
241
260
|
}
|
|
242
|
-
throw new Error(
|
|
261
|
+
throw new Error("Invalid variantInfo details");
|
|
243
262
|
},
|
|
244
263
|
(_, set, newVariant: VariantInfo) => {
|
|
245
264
|
set(internalVariantAtom, newVariant.variant);
|
|
246
265
|
set(internalVariantIdAtom, newVariant.variantId);
|
|
247
|
-
if (newVariant.variant ===
|
|
266
|
+
if (newVariant.variant === "pdp") {
|
|
248
267
|
set(internalProductIdAtom, newVariant.productId);
|
|
249
268
|
set(internalParentProductIdAtom, newVariant.parentProductId);
|
|
250
269
|
set(internalUrlAtom, newVariant.url);
|
|
251
270
|
}
|
|
252
|
-
if (newVariant.variant ===
|
|
271
|
+
if (newVariant.variant === "plp") {
|
|
253
272
|
set(internalPlpIdAtom, newVariant.plpId);
|
|
254
273
|
set(internalUrlAtom, newVariant.url);
|
|
255
274
|
}
|
|
256
|
-
if (newVariant.variant ===
|
|
275
|
+
if (newVariant.variant === "page_visit") {
|
|
257
276
|
set(internalUrlAtom, newVariant.url);
|
|
258
277
|
set(internalPageVisitCategoryAtom, newVariant.pageVisitCategory);
|
|
259
278
|
}
|
|
260
|
-
}
|
|
279
|
+
}
|
|
261
280
|
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./atomStore";
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { atom } from
|
|
2
|
-
import { v4 as uuid } from
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import { atom } from "jotai";
|
|
2
|
+
import { v4 as uuid } from "uuid";
|
|
3
|
+
import {
|
|
4
|
+
GenerationParams,
|
|
5
|
+
NextMessageRequest,
|
|
6
|
+
UserEvent,
|
|
7
|
+
} from "src/application/models";
|
|
8
|
+
import { getAtomStore } from "src/atoms/atomStore/atomStore";
|
|
9
|
+
import { appDetailsAtom } from "src/atoms/app";
|
|
10
|
+
import { featureFlagServiceAtom } from "src/atoms/org/org";
|
|
7
11
|
|
|
8
12
|
const internalUserEventQueueAtom = atom<UserEvent[]>([]);
|
|
9
13
|
|
|
@@ -18,12 +22,18 @@ export const userEventQueueAtom = atom((get) => {
|
|
|
18
22
|
* If the event has the same eventId as an existing message in the queue the NEW
|
|
19
23
|
* event is ignored
|
|
20
24
|
*/
|
|
21
|
-
export const queueUserEventAtom = atom(
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
export const queueUserEventAtom = atom(
|
|
26
|
+
null,
|
|
27
|
+
(get, set, userEvent: UserEvent) => {
|
|
28
|
+
if (userEvent === undefined) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
set(internalUserEventQueueAtom, [
|
|
32
|
+
...get(internalUserEventQueueAtom),
|
|
33
|
+
userEvent,
|
|
34
|
+
]);
|
|
24
35
|
}
|
|
25
|
-
|
|
26
|
-
});
|
|
36
|
+
);
|
|
27
37
|
|
|
28
38
|
/**
|
|
29
39
|
* This atom exposes a function to reset the entire queue. All messages in the queue will be purged
|
|
@@ -36,13 +46,20 @@ export const clearUserEventAtom = atom(null, (_, set) => {
|
|
|
36
46
|
* This atom is used to mark events as processed and remove them from the queue
|
|
37
47
|
* It accepts a list of eventId values and will remove all events with those eventIds from the queue.
|
|
38
48
|
*/
|
|
39
|
-
export const processUserEventAtom = atom(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
export const processUserEventAtom = atom(
|
|
50
|
+
null,
|
|
51
|
+
(get, set, eventIds: string[]) => {
|
|
52
|
+
const curr = get(internalUserEventQueueAtom);
|
|
53
|
+
const remaining = curr?.filter(
|
|
54
|
+
(event) => !eventIds.includes(event.eventId)
|
|
55
|
+
);
|
|
56
|
+
set(internalUserEventQueueAtom, remaining);
|
|
57
|
+
}
|
|
58
|
+
);
|
|
44
59
|
|
|
45
|
-
export const userQueueEventCountAtom = atom(
|
|
60
|
+
export const userQueueEventCountAtom = atom(
|
|
61
|
+
(get) => get(userEventQueueAtom).length
|
|
62
|
+
);
|
|
46
63
|
|
|
47
64
|
export const createResponsePayload = ({
|
|
48
65
|
userEvents,
|
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
import { atom } from
|
|
2
|
-
import { atomWithStorage } from
|
|
3
|
-
import Logger from
|
|
4
|
-
import {
|
|
1
|
+
import { atom } from "jotai";
|
|
2
|
+
import { atomWithStorage } from "jotai/utils";
|
|
3
|
+
import Logger from "src/application/logging/logger";
|
|
4
|
+
import {
|
|
5
|
+
getAtomStore,
|
|
6
|
+
sessionStorageUtil,
|
|
7
|
+
} from "src/atoms/atomStore/atomStore";
|
|
5
8
|
|
|
6
|
-
export const APP_INITIAL_START_TIME_KEY =
|
|
7
|
-
export const PAGE_LOAD_OFFSET_TIME_KEY =
|
|
9
|
+
export const APP_INITIAL_START_TIME_KEY = "spiffy-app-initial-start-time";
|
|
10
|
+
export const PAGE_LOAD_OFFSET_TIME_KEY = "spiffy-page-load-offset-time";
|
|
8
11
|
/**
|
|
9
12
|
* The different performance metrics that can be logged. All times are relative to the
|
|
10
13
|
* initial start time of the app and are stored in milliseconds.
|
|
11
14
|
*/
|
|
12
15
|
export enum PerfMetricsEvents {
|
|
13
|
-
PageLoadOffset =
|
|
14
|
-
MainBundleLoaded =
|
|
15
|
-
OrgConfigLoadStarted =
|
|
16
|
-
OrgConfigLoadEnded =
|
|
17
|
-
FirstResponseStarted =
|
|
18
|
-
FirstResponseCompleted =
|
|
19
|
-
FirstSuggestionsStarted =
|
|
20
|
-
FirstSuggestionsCompleted =
|
|
21
|
-
EmbeddedWidgetRendered =
|
|
22
|
-
FloatingButtonRendered =
|
|
23
|
-
TopSuggestionsBarRendered =
|
|
24
|
-
BottomSuggestionsBarRendered =
|
|
25
|
-
SearchPromptRendered =
|
|
16
|
+
PageLoadOffset = "page_load_offset_ms",
|
|
17
|
+
MainBundleLoaded = "main_bundle_loaded_ms",
|
|
18
|
+
OrgConfigLoadStarted = "org_config_load_started_ms",
|
|
19
|
+
OrgConfigLoadEnded = "org_config_load_ended_ms",
|
|
20
|
+
FirstResponseStarted = "first_response_started_ms",
|
|
21
|
+
FirstResponseCompleted = "first_response_completed_ms",
|
|
22
|
+
FirstSuggestionsStarted = "first_suggestions_started_ms",
|
|
23
|
+
FirstSuggestionsCompleted = "first_suggestions_completed_ms",
|
|
24
|
+
EmbeddedWidgetRendered = "embedded_widget_rendered_ms",
|
|
25
|
+
FloatingButtonRendered = "floating_button_rendered_ms",
|
|
26
|
+
TopSuggestionsBarRendered = "top_suggestions_bar_rendered_ms",
|
|
27
|
+
BottomSuggestionsBarRendered = "bottom_suggestions_bar_rendered_ms",
|
|
28
|
+
SearchPromptRendered = "search_prompt_rendered_ms",
|
|
26
29
|
}
|
|
27
30
|
|
|
28
31
|
const internalPerfMetricsAtom = atom<Map<PerfMetricsEvents, number>>(new Map());
|
|
@@ -32,7 +35,7 @@ export const appInitialStartTimeMsAtom = atomWithStorage<string | undefined>(
|
|
|
32
35
|
sessionStorageUtil,
|
|
33
36
|
{
|
|
34
37
|
getOnInit: true,
|
|
35
|
-
}
|
|
38
|
+
}
|
|
36
39
|
);
|
|
37
40
|
|
|
38
41
|
export const pageLoadOffsetTimeAtom = atomWithStorage<string | undefined>(
|
|
@@ -41,7 +44,7 @@ export const pageLoadOffsetTimeAtom = atomWithStorage<string | undefined>(
|
|
|
41
44
|
sessionStorageUtil,
|
|
42
45
|
{
|
|
43
46
|
getOnInit: true,
|
|
44
|
-
}
|
|
47
|
+
}
|
|
45
48
|
);
|
|
46
49
|
|
|
47
50
|
/**
|
|
@@ -54,7 +57,9 @@ export const resetPerformanceMetricsAtom = () => {
|
|
|
54
57
|
const atomStore = getAtomStore();
|
|
55
58
|
atomStore.set(internalPerfMetricsAtom, new Map());
|
|
56
59
|
};
|
|
57
|
-
export const performanceMetricsAtom = atom((get) =>
|
|
60
|
+
export const performanceMetricsAtom = atom((get) =>
|
|
61
|
+
get(internalPerfMetricsAtom)
|
|
62
|
+
);
|
|
58
63
|
export const hasReportedPerformanceMetricsAtom = atom<boolean>(false);
|
|
59
64
|
|
|
60
65
|
/**
|
|
@@ -63,22 +68,30 @@ export const hasReportedPerformanceMetricsAtom = atom<boolean>(false);
|
|
|
63
68
|
*
|
|
64
69
|
* @param value The performance metric name to log.
|
|
65
70
|
*/
|
|
66
|
-
export const logPerfMetricAtom = atom(
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
export const logPerfMetricAtom = atom(
|
|
72
|
+
null,
|
|
73
|
+
(get, set, value: PerfMetricsEvents) => {
|
|
74
|
+
const initialTimeStorageValue = get(appInitialStartTimeMsAtom);
|
|
75
|
+
const initialTimeMs = initialTimeStorageValue
|
|
76
|
+
? parseInt(initialTimeStorageValue, 10)
|
|
77
|
+
: undefined;
|
|
69
78
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
79
|
+
if (initialTimeMs == null) {
|
|
80
|
+
Logger.logWarn(
|
|
81
|
+
`[spiffy-ai] No initial app start time found. Skipping...`,
|
|
82
|
+
undefined
|
|
83
|
+
);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
74
86
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
87
|
+
const currentPerfMetrics = get(internalPerfMetricsAtom);
|
|
88
|
+
if (currentPerfMetrics.has(value)) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
79
91
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
92
|
+
const currentTimeMs = Date.now();
|
|
93
|
+
const deltaMs = currentTimeMs - initialTimeMs;
|
|
94
|
+
currentPerfMetrics.set(value, deltaMs);
|
|
95
|
+
set(internalPerfMetricsAtom, currentPerfMetrics);
|
|
96
|
+
}
|
|
97
|
+
);
|
|
@@ -1,28 +1,27 @@
|
|
|
1
|
-
import { atom } from
|
|
2
|
-
import { getAtomStore } from
|
|
1
|
+
import { atom } from "jotai";
|
|
2
|
+
import { getAtomStore } from "src/atoms/atomStore/atomStore";
|
|
3
3
|
|
|
4
|
-
const internalWidgetArrayAtom = atom<HTMLElement[]>([])
|
|
4
|
+
const internalWidgetArrayAtom = atom<HTMLElement[]>([]);
|
|
5
5
|
|
|
6
|
-
export const widgetArrayAtom = atom((get) =>
|
|
7
|
-
get(internalWidgetArrayAtom))
|
|
6
|
+
export const widgetArrayAtom = atom((get) => get(internalWidgetArrayAtom));
|
|
8
7
|
|
|
9
8
|
/**
|
|
10
9
|
* This function call is used to create a list of the Spiffy widgets
|
|
11
10
|
* that are rendering on the page.
|
|
12
|
-
*
|
|
11
|
+
*
|
|
13
12
|
* It is used by the FloatingButton widget to slide out of view when it
|
|
14
13
|
* overlaps with another Spiffy widget.
|
|
15
|
-
*
|
|
14
|
+
*
|
|
16
15
|
* The spiffy widgets should be added to the this array for the floating button
|
|
17
16
|
* to know about them.
|
|
18
|
-
*
|
|
17
|
+
*
|
|
19
18
|
* Today the "SuggestionBar" widget is not added, but the other widgets are.
|
|
20
|
-
*
|
|
19
|
+
*
|
|
21
20
|
*/
|
|
22
21
|
export const addWidget = (ref: HTMLElement, idx?: number) => {
|
|
23
|
-
const atomStore = getAtomStore()
|
|
24
|
-
const val = atomStore.get(internalWidgetArrayAtom)
|
|
25
|
-
const insertIdx = idx ?? val.length
|
|
26
|
-
val[insertIdx] = ref
|
|
27
|
-
atomStore.set(internalWidgetArrayAtom, val)
|
|
28
|
-
}
|
|
22
|
+
const atomStore = getAtomStore();
|
|
23
|
+
const val = atomStore.get(internalWidgetArrayAtom);
|
|
24
|
+
const insertIdx = idx ?? val.length;
|
|
25
|
+
val[insertIdx] = ref;
|
|
26
|
+
atomStore.set(internalWidgetArrayAtom, val);
|
|
27
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./globalSearch";
|
package/src/atoms/org/org.ts
CHANGED
|
@@ -7,14 +7,12 @@ import { GraphQLClient } from "src/adapters/spiffy/commerce/graphql";
|
|
|
7
7
|
import { OrgConfig } from "src/application/models/api/orgConfigResults";
|
|
8
8
|
import { EnvironmentService } from "src/application/service/environmentService";
|
|
9
9
|
import { FeatureFlagService } from "src/application/service/featureFlagService";
|
|
10
|
-
// import { FeatureGates } from "src/application/models/featureGates";
|
|
11
10
|
import { UserIdentityService } from "src/application/service/userIdentityService";
|
|
12
|
-
import { AtomStore, getAtomStore } from "src/atoms/atomStore";
|
|
11
|
+
import { AtomStore, getAtomStore } from "src/atoms/atomStore/atomStore";
|
|
13
12
|
import { PerfMetricsEvents, logPerfMetricAtom } from "src/atoms/chat";
|
|
14
13
|
import { orgAnalyticsConfigAtom } from "src/atoms/org/orgAnalyticsConfig";
|
|
15
14
|
import { colorsConfigAtom, frontendConfigAtom } from "./graphqlConfig";
|
|
16
15
|
import { getOrgUIConfig } from "./orgUIConfig";
|
|
17
|
-
// import Logger from "src/application/logging/logger";
|
|
18
16
|
import { useEnviveConfig } from "src/contexts/enviveConfigContext";
|
|
19
17
|
|
|
20
18
|
const internalApiKeyAtom = atom<string | undefined>(undefined);
|