@envive-ai/react-hooks 0.1.7 → 0.1.8
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/{NewOrgConfig-CRyIfb_l.js → NewOrgConfig-BU6uJT74.js} +2 -2
- package/dist/{NewOrgConfig-C5YL4Y62.cjs → NewOrgConfig-DmidHiyj.cjs} +2 -2
- package/dist/{SystemSettingsContext-Cb9YHln8.cjs → SystemSettingsContext-BbobkM82.cjs} +2 -2
- package/dist/{SystemSettingsContext-D3mmGGcv.js → SystemSettingsContext-gtrccL_q.js} +2 -2
- package/dist/{TrackComponentVisibleEvent-C7c_rHFW.cjs → TrackComponentVisibleEvent-CqjMiZCS.cjs} +3 -3
- package/dist/{TrackComponentVisibleEvent-DXTEBjGM.js → TrackComponentVisibleEvent-D9kpqKM4.js} +3 -3
- package/dist/{amplitudeContext-CB_F-nJY.d.cts → amplitudeContext-B73xamNe.d.cts} +1 -1
- package/dist/{amplitudeContext-DFYBDc0h.d.ts → amplitudeContext-BhhYPJSL.d.ts} +1 -1
- package/dist/{amplitudeContext-sTEsPaVG.cjs → amplitudeContext-Dr1jHI13.cjs} +9 -9
- package/dist/{amplitudeContext-Cak6ijMq.js → amplitudeContext-YRS1QOO3.js} +9 -9
- package/dist/api-DYjHj_hR.cjs +239 -0
- package/dist/api-d5uWvb3-.js +166 -0
- package/dist/{app-D_upYeqF.js → app-B9r0MF9n.js} +6 -6
- package/dist/{app-KXTMPa4s.cjs → app-Bgr-mAvr.cjs} +7 -7
- package/dist/application/models/graphql/index.cjs +2 -2
- package/dist/application/models/graphql/index.d.ts +1 -1
- package/dist/application/models/graphql/index.js +2 -2
- package/dist/application/models/guards/api/index.cjs +3 -2
- package/dist/application/models/guards/api/index.d.ts +2 -2
- package/dist/application/models/guards/api/index.js +3 -2
- package/dist/application/models/guards/utils.cjs +3 -0
- package/dist/application/models/guards/utils.d.cts +2 -0
- package/dist/application/models/guards/utils.d.ts +2 -0
- package/dist/application/models/guards/utils.js +3 -0
- package/dist/application/models/index.cjs +10 -9
- package/dist/application/models/index.d.cts +8 -7
- package/dist/application/models/index.d.ts +11 -10
- package/dist/application/models/index.js +9 -8
- package/dist/application/models/utilityTypes/index.cjs +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 +36 -35
- package/dist/application/utils/index.d.cts +11 -10
- package/dist/application/utils/index.d.ts +16 -15
- package/dist/application/utils/index.js +18 -17
- package/dist/{atomStore-DnPEioF4.js → atomStore-BuopbV9k.js} +1 -1
- package/dist/{atomStore-DEZyFCNz.cjs → atomStore-CZKe3itM.cjs} +1 -1
- package/dist/atoms/app/index.cjs +13 -12
- package/dist/atoms/app/index.d.cts +10 -9
- package/dist/atoms/app/index.d.ts +19 -18
- package/dist/atoms/app/index.js +13 -12
- package/dist/atoms/atomStore/index.cjs +2 -2
- package/dist/atoms/atomStore/index.js +2 -2
- package/dist/atoms/chat/index.cjs +19 -18
- package/dist/atoms/chat/index.d.cts +36 -35
- package/dist/atoms/chat/index.d.ts +39 -38
- package/dist/atoms/chat/index.js +19 -18
- 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 +4 -4
- package/dist/atoms/org/index.d.cts +26 -25
- package/dist/atoms/org/index.d.ts +29 -28
- package/dist/atoms/org/index.js +4 -4
- package/dist/atoms/search/index.cjs +26 -24
- package/dist/atoms/search/index.d.cts +10 -9
- package/dist/atoms/search/index.d.ts +13 -12
- package/dist/atoms/search/index.js +26 -24
- package/dist/atoms/search/types.cjs +1 -1
- package/dist/atoms/search/types.d.cts +1 -1
- package/dist/atoms/search/types.d.ts +1 -1
- package/dist/atoms/search/types.js +1 -1
- package/dist/atoms/search/utils.cjs +3 -0
- package/dist/atoms/search/utils.d.cts +5 -0
- package/dist/atoms/search/utils.d.ts +5 -0
- package/dist/atoms/search/utils.js +3 -0
- package/dist/{cdnContext-BMjVfBft.cjs → cdnContext-CVgXkdV2.cjs} +2 -2
- package/dist/{cdnContext-DgsJ00Tb.js → cdnContext-DdE6VPIF.js} +2 -2
- package/dist/{chat-DPJGdUkz.js → chat-BNDYKsqF.js} +10 -10
- package/dist/{chat-zA-K4tR_.cjs → chat-BkjIKhc5.cjs} +1 -1
- package/dist/{chat-D1Eat8Ih.cjs → chat-Br5FhtRs.cjs} +11 -11
- package/dist/{chat-B4lkFIxz.js → chat-CgLypC3w.js} +1 -1
- package/dist/{chatElementDisplayLocation-C1tRM5OD.d.ts → chatElementDisplayLocation-BwiXrkN7.d.ts} +1 -1
- package/dist/{chatElementDisplayLocation-9SW40Dd3.d.cts → chatElementDisplayLocation-DWmfNX_u.d.cts} +1 -1
- package/dist/chatSearch-BiF2__V0.js +295 -0
- package/dist/chatSearch-BrzfJOto.cjs +418 -0
- package/dist/{chatState-BisPJd5g.cjs → chatState-BDsqKE-B.cjs} +3 -3
- package/dist/{chatState-BrmBYY8l.js → chatState-ie771Hwy.js} +3 -3
- package/dist/{commerce-api-DagLj3D_.js → commerce-api-Dz1jxPOJ.js} +9 -9
- package/dist/{commerce-api-CxDIfeME.cjs → commerce-api-KoiUki51.cjs} +9 -9
- package/dist/{components-g0G58Kat.cjs → components-Cby-Cma3.cjs} +1 -1
- package/dist/{components-B1edduHz.js → components-D1mg1-Br.js} +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.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 +2 -2
- package/dist/config/locators/index.d.cts +2 -2
- package/dist/config/locators/index.d.ts +2 -2
- package/dist/config/locators/index.js +2 -2
- package/dist/contexts/amplitudeContext/index.cjs +16 -15
- package/dist/contexts/amplitudeContext/index.d.cts +1 -1
- package/dist/contexts/amplitudeContext/index.d.ts +1 -1
- package/dist/contexts/amplitudeContext/index.js +16 -15
- package/dist/contexts/cdnContext/index.cjs +4 -4
- package/dist/contexts/cdnContext/index.js +4 -4
- package/dist/contexts/chatContext/index.cjs +40 -38
- package/dist/contexts/chatContext/index.d.cts +2 -2
- package/dist/contexts/chatContext/index.d.ts +2 -2
- package/dist/contexts/chatContext/index.js +36 -34
- package/dist/contexts/enviveConfigContext/index.cjs +4 -4
- package/dist/contexts/enviveConfigContext/index.d.cts +3 -3
- package/dist/contexts/enviveConfigContext/index.d.ts +3 -3
- package/dist/contexts/enviveConfigContext/index.js +4 -4
- package/dist/contexts/enviveCssContext/index.cjs +18 -17
- package/dist/contexts/enviveCssContext/index.js +18 -17
- package/dist/contexts/featureFlagContext/index.cjs +6 -6
- package/dist/contexts/featureFlagContext/index.d.cts +3 -3
- package/dist/contexts/featureFlagContext/index.d.ts +3 -3
- package/dist/contexts/featureFlagContext/index.js +6 -6
- package/dist/contexts/featureFlagServiceContext/index.cjs +3 -3
- package/dist/contexts/featureFlagServiceContext/index.d.cts +4 -4
- package/dist/contexts/featureFlagServiceContext/index.d.ts +4 -4
- package/dist/contexts/featureFlagServiceContext/index.js +3 -3
- package/dist/contexts/graphqlContext/index.cjs +12 -11
- package/dist/contexts/graphqlContext/index.d.cts +9 -8
- package/dist/contexts/graphqlContext/index.d.ts +12 -11
- package/dist/contexts/graphqlContext/index.js +12 -11
- package/dist/contexts/localStorageContext/index.cjs +2 -2
- package/dist/contexts/localStorageContext/index.js +2 -2
- package/dist/contexts/newOrgConfigContext/index.cjs +16 -15
- package/dist/contexts/newOrgConfigContext/index.d.cts +10 -9
- package/dist/contexts/newOrgConfigContext/index.d.ts +13 -12
- package/dist/contexts/newOrgConfigContext/index.js +16 -15
- package/dist/contexts/searchContext/index.cjs +20 -19
- package/dist/contexts/searchContext/index.d.cts +1 -1
- package/dist/contexts/searchContext/index.d.ts +2 -2
- package/dist/contexts/searchContext/index.js +20 -19
- package/dist/contexts/sessionStorageContext/index.cjs +2 -2
- package/dist/contexts/sessionStorageContext/index.js +2 -2
- package/dist/contexts/shopifyUrlContext/index.cjs +2 -2
- package/dist/contexts/shopifyUrlContext/index.d.cts +3 -3
- package/dist/contexts/shopifyUrlContext/index.d.ts +3 -3
- package/dist/contexts/shopifyUrlContext/index.js +2 -2
- package/dist/contexts/systemSettingsContext/index.cjs +4 -4
- package/dist/contexts/systemSettingsContext/index.d.cts +11 -10
- package/dist/contexts/systemSettingsContext/index.d.ts +12 -11
- package/dist/contexts/systemSettingsContext/index.js +4 -4
- package/dist/contexts/types.d.cts +3 -3
- package/dist/contexts/types.d.ts +3 -3
- package/dist/contexts/userIdentityContext/index.cjs +22 -21
- package/dist/contexts/userIdentityContext/index.d.cts +1 -1
- package/dist/contexts/userIdentityContext/index.d.ts +1 -1
- package/dist/contexts/userIdentityContext/index.js +22 -21
- package/dist/{domObserver-B6cRGTny.js → domObserver-B19-69gW.js} +1 -1
- package/dist/{domObserver-DQZwhPrc.cjs → domObserver-CwieVNgj.cjs} +1 -1
- package/dist/{enviveConfig-BJZ4zTJo.js → enviveConfig-BQB14yuH.js} +3 -3
- package/dist/{enviveConfig-DdBrcGSQ.cjs → enviveConfig-DAA9sozZ.cjs} +3 -3
- package/dist/{enviveConfigContext-jBCCWQH9.js → enviveConfigContext-BCpBKqsz.js} +3 -3
- package/dist/{enviveConfigContext-78orE_uH.cjs → enviveConfigContext-Btg5JUMG.cjs} +3 -3
- package/dist/{featureFlagServiceContext-ChL7DJ53.cjs → featureFlagServiceContext-Bcx5yh4S.cjs} +3 -3
- package/dist/{featureFlagServiceContext-D1PzHsEs.d.ts → featureFlagServiceContext-Cpw8omUr.d.ts} +2 -2
- package/dist/{featureFlagServiceContext-DQwlCTde.d.cts → featureFlagServiceContext-Cvn6fcdB.d.cts} +2 -2
- package/dist/{featureFlagServiceContext-DzFfmb1Z.js → featureFlagServiceContext-_tXX5iro.js} +3 -3
- package/dist/{featureGates-Blx10fwB.js → featureGates-2Zea2D2S.js} +1 -1
- package/dist/{featureGates-DcZNrUma.cjs → featureGates-BY2Zy7x_.cjs} +1 -1
- package/dist/{frontendConfig-wg41mBok.d.cts → frontendConfig-DnMZfvcA.d.cts} +3 -3
- package/dist/{frontendConfig-DrvrQSm8.d.ts → frontendConfig-Dqxbqo8G.d.ts} +3 -3
- package/dist/{globalSearch-Bnjlxtr5.cjs → globalSearch-C94-vEVh.cjs} +1 -1
- package/dist/{globalSearch-CRWUqnjq.js → globalSearch-Dlbnfasm.js} +1 -1
- package/dist/{graphql-W7GMIHUu.js → graphql-DRLWdYEk.js} +2 -2
- package/dist/{graphql-B9HhDXYt.cjs → graphql-xPDT7ZkK.cjs} +2 -2
- package/dist/{graphqlConfig-Bn-HLHsh.cjs → graphqlConfig-B4ddz1vH.cjs} +1 -1
- package/dist/{graphqlConfig-DtZm_YaH.js → graphqlConfig-BnjOdeX7.js} +1 -1
- package/dist/{graphqlContext-BJg7B--J.js → graphqlContext-B-9g2vOb.js} +5 -5
- package/dist/{graphqlContext-DI-_VRmb.cjs → graphqlContext-B7PEKDJs.cjs} +5 -5
- package/dist/hooks/AmplitudeOperations/index.cjs +18 -17
- package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
- package/dist/hooks/AmplitudeOperations/index.d.ts +1 -1
- package/dist/hooks/AmplitudeOperations/index.js +18 -17
- package/dist/hooks/AppDetails/index.cjs +16 -15
- package/dist/hooks/AppDetails/index.d.cts +9 -8
- package/dist/hooks/AppDetails/index.d.ts +12 -11
- package/dist/hooks/AppDetails/index.js +16 -15
- package/dist/hooks/CdnOperations/index.cjs +4 -4
- package/dist/hooks/CdnOperations/index.js +4 -4
- package/dist/hooks/ChatToggle/index.cjs +20 -19
- package/dist/hooks/ChatToggle/index.d.cts +1 -1
- package/dist/hooks/ChatToggle/index.d.ts +1 -1
- package/dist/hooks/ChatToggle/index.js +20 -19
- package/dist/hooks/ChatToggleAnalytics/index.cjs +20 -19
- package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
- package/dist/hooks/ChatToggleAnalytics/index.d.ts +1 -1
- package/dist/hooks/ChatToggleAnalytics/index.js +20 -19
- package/dist/hooks/CustomerSupportHandoff/index.cjs +1 -1
- package/dist/hooks/CustomerSupportHandoff/index.js +1 -1
- package/dist/hooks/Debounce/index.cjs +1 -1
- package/dist/hooks/Debounce/index.js +1 -1
- package/dist/hooks/ElementObserver/index.cjs +1 -1
- package/dist/hooks/ElementObserver/index.d.cts +1 -1
- package/dist/hooks/ElementObserver/index.d.ts +1 -1
- package/dist/hooks/ElementObserver/index.js +1 -1
- package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
- package/dist/hooks/GraphQLConfig/index.cjs +13 -12
- package/dist/hooks/GraphQLConfig/index.js +13 -12
- package/dist/hooks/IdentifyUser/index.cjs +23 -22
- package/dist/hooks/IdentifyUser/index.js +23 -22
- package/dist/hooks/ImageResolver/index.cjs +12 -11
- package/dist/hooks/ImageResolver/index.js +12 -11
- package/dist/hooks/Intersection/index.cjs +1 -1
- package/dist/hooks/Intersection/index.js +1 -1
- package/dist/hooks/LocalStorageOperations/index.cjs +2 -2
- package/dist/hooks/LocalStorageOperations/index.js +2 -2
- package/dist/hooks/MessageFilter/index.cjs +10 -9
- package/dist/hooks/MessageFilter/index.d.cts +9 -8
- package/dist/hooks/MessageFilter/index.d.ts +12 -11
- package/dist/hooks/MessageFilter/index.js +10 -9
- package/dist/hooks/NewOrgConfig/index.cjs +17 -16
- package/dist/hooks/NewOrgConfig/index.d.cts +10 -9
- package/dist/hooks/NewOrgConfig/index.d.ts +13 -12
- package/dist/hooks/NewOrgConfig/index.js +17 -16
- package/dist/hooks/Search/index.cjs +38 -36
- package/dist/hooks/Search/index.d.cts +13 -18
- package/dist/hooks/Search/index.d.ts +16 -21
- package/dist/hooks/Search/index.js +37 -35
- package/dist/hooks/SearchOperations/index.cjs +21 -20
- package/dist/hooks/SearchOperations/index.d.cts +1 -1
- package/dist/hooks/SearchOperations/index.d.ts +2 -2
- package/dist/hooks/SearchOperations/index.js +21 -20
- package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
- package/dist/hooks/SessionStorageOperations/index.js +2 -2
- package/dist/hooks/ShopifyUrlOperations/index.cjs +2 -2
- package/dist/hooks/ShopifyUrlOperations/index.d.cts +5 -5
- package/dist/hooks/ShopifyUrlOperations/index.d.ts +5 -5
- package/dist/hooks/ShopifyUrlOperations/index.js +2 -2
- package/dist/hooks/SystemSettingsContext/index.cjs +5 -5
- package/dist/hooks/SystemSettingsContext/index.d.cts +11 -10
- package/dist/hooks/SystemSettingsContext/index.d.ts +14 -13
- package/dist/hooks/SystemSettingsContext/index.js +5 -5
- package/dist/hooks/TrackComponentVisibleEvent/index.cjs +18 -17
- package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -2
- package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -2
- package/dist/hooks/TrackComponentVisibleEvent/index.js +18 -17
- package/dist/hooks/UpdateAnalyticsProps/index.cjs +17 -16
- package/dist/hooks/UpdateAnalyticsProps/index.js +17 -16
- package/dist/hooks/utils.cjs +8 -0
- package/dist/hooks/utils.d.cts +13 -0
- package/dist/hooks/utils.d.ts +13 -0
- package/dist/hooks/utils.js +3 -0
- package/dist/{index-CyXULMyI.d.cts → index-B9HUPS_i.d.cts} +33 -33
- package/dist/{index-DuyZQOE1.d.ts → index-BN-3ctk_.d.ts} +2 -2
- package/dist/{index-Cz10TYQA.d.cts → index-BNiYL8h0.d.cts} +2 -2
- package/dist/{index-DO0s5KNA.d.cts → index-BW6pHibZ.d.cts} +1 -1
- package/dist/{index-fKJB9EFb.d.ts → index-BirtCYN3.d.ts} +5 -5
- package/dist/{index-DNUKSg6R.d.ts → index-BoYC9XLW.d.ts} +1 -1
- package/dist/{index-CKeS9dud.d.ts → index-C9zXP5bg.d.ts} +3 -3
- package/dist/index-CK_J3QMY.d.ts +676 -0
- package/dist/index-C_MIfxF0.d.cts +676 -0
- package/dist/{index-D8ThXrqI.d.ts → index-Da0UzyI9.d.ts} +1 -1
- package/dist/{index-BS7-_CW4.d.ts → index-Dr_c2DDq.d.ts} +1 -1
- package/dist/{index-D9VegTU-.d.ts → index-DsiilEj-.d.ts} +1 -1
- package/dist/{index-REhT-Pls.d.cts → index-MOOZ2oxZ.d.cts} +1 -1
- package/dist/{index-DBqgBV9N.d.ts → index-ghzD_356.d.ts} +1 -1
- package/dist/{index-D46Rd0io.d.cts → index-hdbCEjYy.d.cts} +1 -1
- package/dist/interceptors/index.cjs +2 -2
- package/dist/interceptors/index.d.cts +10 -9
- package/dist/interceptors/index.d.ts +13 -12
- package/dist/interceptors/index.js +2 -2
- package/dist/interceptors/types.cjs +1 -1
- package/dist/interceptors/types.d.cts +9 -8
- package/dist/interceptors/types.d.ts +12 -11
- package/dist/interceptors/types.js +1 -1
- package/dist/{localStorageContext-6OrGDFid.js → localStorageContext-DiTziaPa.js} +2 -2
- package/dist/{localStorageContext-Bld0OWmG.cjs → localStorageContext-S38L0OSP.cjs} +2 -2
- package/dist/{logger-D5MFf3nW.js → logger-CkhQayOW.js} +1 -1
- package/dist/{logger-CSL2jqI9.cjs → logger-DQ0WfCcD.cjs} +1 -1
- package/dist/{models-Dn8Emdzc.js → models-C48U9q70.js} +4 -3
- package/dist/{models-ZpQcRZQK.cjs → models-Ctn-pmug.cjs} +25 -24
- package/dist/{newOrgConfigAtom-DkSi45_Q.cjs → newOrgConfigAtom-D6R-7HCk.cjs} +1 -1
- package/dist/{newOrgConfigAtom--tewb_G0.js → newOrgConfigAtom-bn1lnljf.js} +1 -1
- package/dist/{newOrgConfigContext-B3aeblfE.cjs → newOrgConfigContext-D3WoaBVU.cjs} +5 -5
- package/dist/{newOrgConfigContext-B5mzHKTG.js → newOrgConfigContext-rWOYz0E8.js} +5 -5
- package/dist/{nodeSelector-XsUa5vNH.d.cts → nodeSelector-B3bPtEjX.d.cts} +1 -1
- package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-D5gjDWZ3.d.ts} +1 -1
- package/dist/{org-ClUxpHPZ.cjs → org-CIhjzxWr.cjs} +1 -1
- package/dist/{org-B2uRkPt3.js → org-CeWXnpwF.js} +1 -1
- package/dist/{orgAnalyticsConfig-DOceTdNp.js → orgAnalyticsConfig-BC4_sEmn.js} +1 -1
- package/dist/{orgAnalyticsConfig-CuWXijsr.cjs → orgAnalyticsConfig-DsGbyFhO.cjs} +1 -1
- package/dist/{search-DsQm_pAi.cjs → search--NZPZkK3.cjs} +5 -5
- package/dist/{search-BIomqYy6.d.ts → search-BLShhjvR.d.ts} +2 -2
- package/dist/{search-Bn4x-3TG.js → search-CxZl7iQF.js} +5 -5
- package/dist/{search-filter-types-B5xcaEit.d.ts → search-filter-types-DPgeG8FS.d.ts} +1 -1
- package/dist/{search-filter-types-Byd0lEUa.d.cts → search-filter-types-_mprCnBi.d.cts} +1 -1
- package/dist/{search-B_Hg-Es2.d.cts → search-y-ioX5Mz.d.cts} +1 -1
- package/dist/{searchContext-Cn-pCoDy.cjs → searchContext-C4Glr8Nv.cjs} +7 -7
- package/dist/{searchContext-fQDGSvUF.js → searchContext-VnjhV7Lk.js} +7 -7
- package/dist/{searchServiceAdapter-DrjFCiw8.cjs → searchServiceAdapter-DEv1tTn0.cjs} +1 -1
- package/dist/{searchServiceAdapter-BSPZOg1r.js → searchServiceAdapter-WyCU55NV.js} +1 -1
- package/dist/{sessionStorageContext-CXE7iHtP.cjs → sessionStorageContext-BJ05_j7l.cjs} +2 -2
- package/dist/{sessionStorageContext-C5MUl2zf.js → sessionStorageContext-Dp_bhXQP.js} +2 -2
- package/dist/{shopifyUrlContext-BSYWsoX9.js → shopifyUrlContext-CGqpJl1o.js} +2 -2
- package/dist/{shopifyUrlContext-7ppKx1jJ.cjs → shopifyUrlContext-Cob4L7Dt.cjs} +2 -2
- package/dist/{spiffyWidgets-DxGuuuCG.d.cts → spiffyWidgets-BuS00VaQ.d.cts} +1 -1
- package/dist/{spiffyWidgets-CdxRcXhW.d.ts → spiffyWidgets-GILaqHv6.d.ts} +1 -1
- package/dist/{systemSettingsContext-BdAe_3Ll.cjs → systemSettingsContext-BDKWrrco.cjs} +2 -2
- package/dist/{systemSettingsContext-Cjyo2o3N.js → systemSettingsContext-Dqng3YSZ.js} +2 -2
- package/dist/{test-types-ZuRAYwox.d.ts → test-types-EzMFw_U3.d.ts} +1 -1
- package/dist/{test-types-DQB1JqOf.d.cts → test-types-ThQiO_cc.d.cts} +1 -1
- package/dist/types/index.d.cts +2 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/{types-DzwBmZHy.d.cts → types-BUeRbZUk.d.cts} +1 -1
- package/dist/{types-YvACLe2e.d.ts → types-CMuTSKrW.d.ts} +2 -2
- package/dist/{types-DIk0FLwd.js → types-CS0Hrzja.js} +1 -1
- package/dist/{types-DNLkuGWZ.cjs → types-CxObxLKs.cjs} +1 -1
- package/dist/{types-BCz-hOvv.d.ts → types-fsXBIQwO.d.ts} +1 -1
- package/dist/{types-Eip78dWv.d.cts → types-zuWLkBJ3.d.cts} +1 -1
- package/dist/types.d.cts +4 -4
- package/dist/types.d.ts +4 -4
- package/dist/{unsupportedProductExceptions-Dak4AD-t.cjs → unsupportedProductExceptions-CKiri_vO.cjs} +1 -1
- package/dist/{unsupportedProductExceptions--t7AQFou.js → unsupportedProductExceptions-ClxlJ6cU.js} +1 -1
- package/dist/{urlsParser-BV5yF8sa.cjs → urlsParser-D1nsJgQG.cjs} +1 -1
- package/dist/{urlsParser-DUgV_Qy9.js → urlsParser-DzEetiey.js} +1 -1
- package/dist/{useAmplitudeOperations-Cco_B3A5.cjs → useAmplitudeOperations-BSsyvkQ2.cjs} +2 -2
- package/dist/{useAmplitudeOperations-C6Osqkso.js → useAmplitudeOperations-BottjwT9.js} +2 -2
- package/dist/{useAppDetails-CGqtN6sJ.cjs → useAppDetails-BpiBxS_5.cjs} +4 -4
- package/dist/{useAppDetails-DwX2Rhed.js → useAppDetails-DDNIsM46.js} +4 -4
- package/dist/{useDebounce-BJqnCBcl.cjs → useDebounce-BaIp-A1W.cjs} +1 -1
- package/dist/{useDebounce-Ce31ph7m.js → useDebounce-CxPj9WmE.js} +1 -1
- package/dist/{useGraphQLConfig-ByOZb3oZ.js → useGraphQLConfig-DZ0ZannB.js} +2 -2
- package/dist/{useGraphQLConfig-DItL4BgM.cjs → useGraphQLConfig-Dw8dDh3T.cjs} +2 -2
- package/dist/{useIntersection-Czeo04jt.js → useIntersection-B4J9UhaG.js} +1 -1
- package/dist/{useIntersection-DnZNLcnu.cjs → useIntersection-DKWc5MY6.cjs} +1 -1
- package/dist/{useMessageInterceptor-C9p9No1n.cjs → useMessageInterceptor-CstX10ih.cjs} +1 -1
- package/dist/{useMessageInterceptor-tntd2rvB.js → useMessageInterceptor-D5oAekXn.js} +1 -1
- package/dist/{userIdentityContext-DBXoLrFu.d.cts → userIdentityContext-D2oFVFzo.d.cts} +1 -1
- package/dist/{userIdentityContext-C1HzZFb2.cjs → userIdentityContext-DPFkCSCu.cjs} +6 -6
- package/dist/{userIdentityContext-CDfosvOO.js → userIdentityContext-Z65zM-Ae.js} +5 -5
- package/dist/{userIdentityContext-W1OWF3cG.d.ts → userIdentityContext-wYRpgkaJ.d.ts} +1 -1
- package/dist/utils-2SWrJ12w.cjs +29 -0
- package/dist/utils-B1xLx9S8.d.ts +15 -0
- package/dist/utils-B3x_9JTY.d.cts +15 -0
- package/dist/utils-BZtSmwgh.d.cts +22 -0
- package/dist/{utils-C7S9YiFp.js → utils-Bcz5kAgP.js} +40 -2
- package/dist/utils-CEKzBcN2.js +27 -0
- package/dist/{utils-BA5HXmkL.cjs → utils-CMqFfqZx.cjs} +57 -1
- package/dist/{utils-CF13DfA1.js → utils-CVovRwlw.js} +4 -4
- package/dist/utils-CqBxIpEV.js +23 -0
- package/dist/utils-CsMbZmRw.cjs +33 -0
- package/dist/{utils-BTDw2aMx.cjs → utils-DzPSXtmD.cjs} +4 -4
- package/dist/utils-bxOCg2i9.d.ts +22 -0
- package/package.json +13 -1
- package/dist/api-DSFlctlc.cjs +0 -269
- package/dist/api-JTNjuOfc.js +0 -190
- package/dist/chatSearch-B5jMnCYX.js +0 -315
- package/dist/chatSearch-DWMiyWN0.cjs +0 -444
- package/dist/index-BCLaqnc2.d.cts +0 -689
- package/dist/index-Bs0QtkSu.d.ts +0 -689
- /package/dist/{AmplitudeOperations-CgIVPUlr.cjs → AmplitudeOperations-CNyxbBY6.cjs} +0 -0
- /package/dist/{AmplitudeOperations-YpyaR7Mp.js → AmplitudeOperations-Oa2efWtF.js} +0 -0
- /package/dist/{atomStore-C2OI76yN.js → atomStore-BS6qtYZF.js} +0 -0
- /package/dist/{atomStore-DWmT1six.cjs → atomStore-BjRyLFEx.cjs} +0 -0
- /package/dist/{types-DQoXDiso.js → types-DtTnp0o0.js} +0 -0
- /package/dist/{types-o3zWarRp.cjs → types-a8gm_IaQ.cjs} +0 -0
- /package/dist/{utilityTypes-CWJZb9BZ.js → utilityTypes-DynzxjK3.js} +0 -0
- /package/dist/{utilityTypes-YGiMSyV7.cjs → utilityTypes-xb8SjKSV.cjs} +0 -0
- /package/dist/{variantInfo-DRFLcGc7.cjs → variantInfo-B7IwRpCg.cjs} +0 -0
- /package/dist/{variantInfo-58JLeDJb.js → variantInfo-BtOYUGWa.js} +0 -0
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
const require_chunk = require('./chunk-CUT6urMc.cjs');
|
|
2
|
-
const require_models = require('./models-ZpQcRZQK.cjs');
|
|
3
|
-
const require_chatState = require('./chatState-BisPJd5g.cjs');
|
|
4
|
-
const require_chat = require('./chat-D1Eat8Ih.cjs');
|
|
5
|
-
const require_newOrgConfigAtom = require('./newOrgConfigAtom-DkSi45_Q.cjs');
|
|
6
|
-
const require_types = require('./types-DNLkuGWZ.cjs');
|
|
7
|
-
let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
|
|
8
|
-
__spiffy_ai_commerce_api_client = require_chunk.__toESM(__spiffy_ai_commerce_api_client);
|
|
9
|
-
let jotai = require("jotai");
|
|
10
|
-
jotai = require_chunk.__toESM(jotai);
|
|
11
|
-
let uuid = require("uuid");
|
|
12
|
-
uuid = require_chunk.__toESM(uuid);
|
|
13
|
-
|
|
14
|
-
//#region src/atoms/search/utils.ts
|
|
15
|
-
const formatFilterDisplayName = (displayName) => {
|
|
16
|
-
const sizes = [
|
|
17
|
-
"xxxs",
|
|
18
|
-
"xxs",
|
|
19
|
-
"xs",
|
|
20
|
-
"s",
|
|
21
|
-
"m",
|
|
22
|
-
"l",
|
|
23
|
-
"xl",
|
|
24
|
-
"xxl",
|
|
25
|
-
"xxxl",
|
|
26
|
-
"xxxxl"
|
|
27
|
-
];
|
|
28
|
-
return displayName.toLowerCase().split(" ").map((word) => {
|
|
29
|
-
if (sizes.includes(word)) return word.toUpperCase();
|
|
30
|
-
return word.charAt(0).toUpperCase() + word.slice(1);
|
|
31
|
-
}).join(" ").replace(/Iphone/g, "iPhone");
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
//#endregion
|
|
35
|
-
//#region src/atoms/search/productFilters.ts
|
|
36
|
-
const getPriceBucket = (price, bucketSize) => {
|
|
37
|
-
return Math.floor(price / bucketSize) * bucketSize;
|
|
38
|
-
};
|
|
39
|
-
const isStringArray = (value) => {
|
|
40
|
-
if (!Array.isArray(value)) return false;
|
|
41
|
-
return value.every((item) => typeof item === "string");
|
|
42
|
-
};
|
|
43
|
-
const sortFilter = (filterConfig) => {
|
|
44
|
-
if (filterConfig.type === "price") return (a, b) => Number(a.filterItemId) - Number(b.filterItemId);
|
|
45
|
-
if (filterConfig.type === "dynamic") {
|
|
46
|
-
if (filterConfig.sorting.type === "alphabetic") return (a, b) => a.displayName.localeCompare(b.displayName);
|
|
47
|
-
if (filterConfig.sorting.type === "productCount") return (a, b) => a.productCount === b.productCount ? a.displayName.localeCompare(b.displayName) : b.productCount - a.productCount;
|
|
48
|
-
if (filterConfig.sorting.type === "custom") {
|
|
49
|
-
const sortedKeys = filterConfig.sorting.map;
|
|
50
|
-
return (a, b) => {
|
|
51
|
-
if (sortedKeys[a.displayName] && sortedKeys[b.displayName]) return sortedKeys[a.displayName] - sortedKeys[b.displayName];
|
|
52
|
-
if (sortedKeys[a.displayName]) return -1;
|
|
53
|
-
if (sortedKeys[b.displayName]) return 1;
|
|
54
|
-
return b.productCount - a.productCount;
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
throw new Error("Invaalid search filter configuration");
|
|
59
|
-
};
|
|
60
|
-
var ProductFilters = class {
|
|
61
|
-
static getFiltersForProducts(products, filterConfigs, selectedFilterOptions) {
|
|
62
|
-
if (!products || products.length === 0) return [];
|
|
63
|
-
return [...filterConfigs.map((filterConfig) => products.reduce((acc, product) => {
|
|
64
|
-
if (filterConfig.type === "price") {
|
|
65
|
-
const priceBucket = getPriceBucket(product.salePrice ?? product.originalPrice ?? 0, filterConfig.bucketSize);
|
|
66
|
-
const current = acc.map[priceBucket] ?? {
|
|
67
|
-
filterItemId: priceBucket,
|
|
68
|
-
displayName: `$${priceBucket}-$${priceBucket + filterConfig.bucketSize}`,
|
|
69
|
-
productCount: 0
|
|
70
|
-
};
|
|
71
|
-
acc.map[priceBucket] = {
|
|
72
|
-
...current,
|
|
73
|
-
productCount: current.productCount + 1
|
|
74
|
-
};
|
|
75
|
-
return acc;
|
|
76
|
-
}
|
|
77
|
-
const attributeValues = (product.filters && product.filters?.[filterConfig.attribute]) ?? [];
|
|
78
|
-
if (isStringArray(attributeValues)) attributeValues.forEach((val) => {
|
|
79
|
-
const normalizedVal = val.toLowerCase();
|
|
80
|
-
const current = acc.map[normalizedVal] ?? {
|
|
81
|
-
filterItemId: normalizedVal,
|
|
82
|
-
displayName: formatFilterDisplayName(val),
|
|
83
|
-
productCount: 0
|
|
84
|
-
};
|
|
85
|
-
acc.map[normalizedVal] = {
|
|
86
|
-
...current,
|
|
87
|
-
productCount: current.productCount + 1
|
|
88
|
-
};
|
|
89
|
-
});
|
|
90
|
-
return acc;
|
|
91
|
-
}, {
|
|
92
|
-
filterConfig,
|
|
93
|
-
map: {}
|
|
94
|
-
})).map(({ filterConfig, map }) => ({
|
|
95
|
-
filterId: filterConfig.filterId,
|
|
96
|
-
displayName: filterConfig.displayName,
|
|
97
|
-
items: Object.values(map).map((filter) => ({
|
|
98
|
-
filterItemId: filter.filterItemId,
|
|
99
|
-
displayName: filter.displayName,
|
|
100
|
-
productCount: filter.productCount,
|
|
101
|
-
isSelected: selectedFilterOptions.some((option) => option.id === `${filterConfig.filterId}:${filter.filterItemId}`) ?? false
|
|
102
|
-
})).sort(sortFilter(filterConfig))
|
|
103
|
-
}))];
|
|
104
|
-
}
|
|
105
|
-
static filterProducts(products, filterConfigs, selectedFilterOptions, additiveDynamicFilters = false) {
|
|
106
|
-
const selectedFilters = filterConfigs.map((filterConfig) => ({
|
|
107
|
-
filterConfig,
|
|
108
|
-
hasSelectedOptions: selectedFilterOptions.some((option) => option.filterId === filterConfig.filterId)
|
|
109
|
-
})).filter(({ hasSelectedOptions }) => hasSelectedOptions);
|
|
110
|
-
return selectedFilterOptions.length === 0 ? products : products.filter((product) => selectedFilters.reduce((acc, selectedFilter) => {
|
|
111
|
-
if (!acc) return acc;
|
|
112
|
-
if (selectedFilter.filterConfig.type === "price") {
|
|
113
|
-
const priceBucket = getPriceBucket(product.salePrice ?? product.originalPrice ?? 0, selectedFilter.filterConfig.bucketSize);
|
|
114
|
-
if (!selectedFilterOptions.some((option) => option.id === `price:${priceBucket}`)) return false;
|
|
115
|
-
}
|
|
116
|
-
if (selectedFilter.filterConfig.type === "dynamic") {
|
|
117
|
-
const { filterId, attribute } = selectedFilter.filterConfig;
|
|
118
|
-
const attributeValues = product.filters?.[attribute];
|
|
119
|
-
if (!isStringArray(attributeValues)) return false;
|
|
120
|
-
if (selectedFilter.filterConfig.attribute === "dynamic" && !additiveDynamicFilters) {
|
|
121
|
-
if (!selectedFilterOptions.filter((option) => option.filterId === filterId).map((option) => option.filterItemId.toLowerCase()).every((selectedValue) => attributeValues.some((val) => val.toLowerCase() === selectedValue))) return false;
|
|
122
|
-
} else if (!attributeValues.some((val) => selectedFilterOptions.some((option) => option.id === `${filterId}:${val.toLowerCase()}`))) return false;
|
|
123
|
-
}
|
|
124
|
-
return true;
|
|
125
|
-
}, true));
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
//#endregion
|
|
130
|
-
//#region src/atoms/search/productSorter.ts
|
|
131
|
-
var ProductSorter = class {
|
|
132
|
-
static sort(products, sorting) {
|
|
133
|
-
switch (sorting) {
|
|
134
|
-
case require_types.ProductSorting.PRICE_ASC: return [...products].sort((p1, p2) => (p1.salePrice ?? p1.originalPrice ?? 0) - (p2.salePrice ?? p2.originalPrice ?? 0));
|
|
135
|
-
case require_types.ProductSorting.PRICE_DESC: return [...products].sort((p1, p2) => (p2.salePrice ?? p2.originalPrice ?? 0) - (p1.salePrice ?? p1.originalPrice ?? 0));
|
|
136
|
-
default: return products;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
//#endregion
|
|
142
|
-
//#region src/atoms/search/chatSearch.ts
|
|
143
|
-
const chatSearchStateAtom = (0, jotai.atom)("entrypoint");
|
|
144
|
-
const chatSearchHasProductsAtom = (0, jotai.atom)(false);
|
|
145
|
-
const chatSearchProductSortingAtom = (0, jotai.atom)(require_types.ProductSorting.FEATURED);
|
|
146
|
-
const filterProductList = (message) => message.type === require_models.MessageType.Product && message.metadata.isForGrid === true;
|
|
147
|
-
const filterFilterList = (message) => message.type === require_models.MessageType.ProductSearchFilter;
|
|
148
|
-
const chatSearchIsLoadingAtom = (0, jotai.atom)(false);
|
|
149
|
-
const buildChatSearchTurn = (messages) => {
|
|
150
|
-
const queryMessage = messages.find((message) => message.type === require_models.MessageType.ProductSearch);
|
|
151
|
-
if (!queryMessage) return null;
|
|
152
|
-
const { generatedQuery, productCount } = queryMessage.metadata ?? {};
|
|
153
|
-
const productList = messages.filter(filterProductList).map((message) => message.metadata);
|
|
154
|
-
const filterList = messages.filter(filterFilterList).map((message) => message.metadata.filterName);
|
|
155
|
-
return [queryMessage.id, {
|
|
156
|
-
id: queryMessage.id,
|
|
157
|
-
generatedQuery,
|
|
158
|
-
productCount: productCount || productList.length,
|
|
159
|
-
productList,
|
|
160
|
-
filterList,
|
|
161
|
-
messages
|
|
162
|
-
}];
|
|
163
|
-
};
|
|
164
|
-
const chatSearchFilterConfigAtom = (0, jotai.atom)((get) => {
|
|
165
|
-
return get(require_newOrgConfigAtom.newOrgConfigAtom)?.frontendConfig?.uiConfigs?.searchConfig?.searchFilterConfig || [];
|
|
166
|
-
});
|
|
167
|
-
const searchMapAtom = (0, jotai.atom)((get) => {
|
|
168
|
-
const messages = get(require_chatState.messagesAtom);
|
|
169
|
-
return Object.fromEntries(messages.map(buildChatSearchTurn).filter((v) => v !== null));
|
|
170
|
-
});
|
|
171
|
-
const internalChatSearchParamsAtom = (0, jotai.atom)({
|
|
172
|
-
id: null,
|
|
173
|
-
query: null
|
|
174
|
-
});
|
|
175
|
-
const selectedFilterOptionsAtom = (0, jotai.atom)([]);
|
|
176
|
-
const additiveDynamicFiltersAtom = (0, jotai.atom)((get) => {
|
|
177
|
-
return get(require_newOrgConfigAtom.newOrgConfigAtom)?.frontendConfig?.uiConfigs?.searchConfig?.additiveDynamicFilters ?? false;
|
|
178
|
-
});
|
|
179
|
-
const createChatSearchFilterOption = (filterId, filterItemId, displayName) => ({
|
|
180
|
-
id: `${filterId}:${filterItemId}`,
|
|
181
|
-
displayName,
|
|
182
|
-
filterId,
|
|
183
|
-
filterItemId
|
|
184
|
-
});
|
|
185
|
-
const handleSearchAtom = (0, jotai.atom)(null, (get, set, message) => {
|
|
186
|
-
if (message.type !== require_models.MessageType.Search) return;
|
|
187
|
-
const querySearch = message.metadata.searchTerm;
|
|
188
|
-
set(require_chatState.replyEventCategoryAtom, __spiffy_ai_commerce_api_client.UserEventCategory.Search);
|
|
189
|
-
set(require_chatState.userQueryAtom, querySearch);
|
|
190
|
-
set(require_chatState.messagesAtom, [...get(require_chatState.messagesAtom), [message]]);
|
|
191
|
-
set(require_chatState.userHasRepliedAtom, true);
|
|
192
|
-
set(require_chat.queueUserEventAtom, {
|
|
193
|
-
eventId: message.id,
|
|
194
|
-
category: __spiffy_ai_commerce_api_client.UserEventCategory.Search,
|
|
195
|
-
createdAt: message.createdAt,
|
|
196
|
-
attributes: {
|
|
197
|
-
searchTerm: message.metadata.searchTerm,
|
|
198
|
-
selectedFilters: message.metadata.selectedFilters
|
|
199
|
-
}
|
|
200
|
-
});
|
|
201
|
-
});
|
|
202
|
-
const chatSearchParamsAtom = (0, jotai.atom)((get) => get(internalChatSearchParamsAtom), (_, set, value) => {
|
|
203
|
-
set(internalChatSearchParamsAtom, value);
|
|
204
|
-
});
|
|
205
|
-
const chatSearchQueryAtom = (0, jotai.atom)((get) => get(chatSearchParamsAtom)?.query ?? null, (get, set, value) => {
|
|
206
|
-
const searchParams = get(chatSearchParamsAtom);
|
|
207
|
-
set(chatSearchParamsAtom, {
|
|
208
|
-
id: searchParams.id,
|
|
209
|
-
query: value
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
const chatSearchIdAtom = (0, jotai.atom)((get) => get(chatSearchParamsAtom)?.id ?? null, (get, set, value) => {
|
|
213
|
-
const searchParams = get(chatSearchParamsAtom);
|
|
214
|
-
set(chatSearchParamsAtom, {
|
|
215
|
-
id: value,
|
|
216
|
-
query: searchParams.query
|
|
217
|
-
});
|
|
218
|
-
});
|
|
219
|
-
const ChatSearchTurnAtom = (0, jotai.atom)((get) => {
|
|
220
|
-
const searchFilterConfig = get(chatSearchFilterConfigAtom);
|
|
221
|
-
const searchMap = get(searchMapAtom);
|
|
222
|
-
const chatSearchId = get(chatSearchIdAtom);
|
|
223
|
-
if (!chatSearchId) return null;
|
|
224
|
-
const ChatSearchTurn = searchMap[chatSearchId];
|
|
225
|
-
if (!ChatSearchTurn) return null;
|
|
226
|
-
const productSorting = get(chatSearchProductSortingAtom);
|
|
227
|
-
const selectedFilterOptions = get(selectedFilterOptionsAtom);
|
|
228
|
-
const additiveDynamicFilters = get(additiveDynamicFiltersAtom);
|
|
229
|
-
const filteredProducts = ProductFilters.filterProducts(ChatSearchTurn.productList, searchFilterConfig, selectedFilterOptions, additiveDynamicFilters);
|
|
230
|
-
const filteredAndSortedProducts = ProductSorter.sort(filteredProducts, productSorting);
|
|
231
|
-
return {
|
|
232
|
-
...searchMap[chatSearchId],
|
|
233
|
-
productList: filteredAndSortedProducts,
|
|
234
|
-
productCount: filteredAndSortedProducts.length
|
|
235
|
-
};
|
|
236
|
-
});
|
|
237
|
-
const chatSearchProducts = (0, jotai.atom)((get) => {
|
|
238
|
-
return get(ChatSearchTurnAtom)?.productList ?? [];
|
|
239
|
-
});
|
|
240
|
-
const chatSearchFiltersAtom = (0, jotai.atom)((get) => {
|
|
241
|
-
const searchFilterConfig = get(chatSearchFilterConfigAtom);
|
|
242
|
-
const searchMap = get(searchMapAtom);
|
|
243
|
-
const chatSearchId = get(chatSearchIdAtom);
|
|
244
|
-
if (chatSearchId && searchMap[chatSearchId]) {
|
|
245
|
-
const products = searchMap[chatSearchId].productList;
|
|
246
|
-
const selectedFilterOptions = get(selectedFilterOptionsAtom);
|
|
247
|
-
return ProductFilters.getFiltersForProducts(products, searchFilterConfig, selectedFilterOptions);
|
|
248
|
-
}
|
|
249
|
-
return [];
|
|
250
|
-
});
|
|
251
|
-
const setSearchParams = (query) => {
|
|
252
|
-
const url = new URL(window.location.href);
|
|
253
|
-
url.searchParams.set("es", "true");
|
|
254
|
-
url.searchParams.set("esq", query);
|
|
255
|
-
window.history.pushState({}, "", url);
|
|
256
|
-
};
|
|
257
|
-
const getSearchParamsAtom = (0, jotai.atom)(() => {
|
|
258
|
-
const params = new URLSearchParams(window.location.search);
|
|
259
|
-
return {
|
|
260
|
-
es: params.get("es"),
|
|
261
|
-
esq: params.get("esq")
|
|
262
|
-
};
|
|
263
|
-
});
|
|
264
|
-
const initiateChatSearchAtom = (0, jotai.atom)(null, (_, set, query) => {
|
|
265
|
-
set(chatSearchIsLoadingAtom, true);
|
|
266
|
-
const url = new URL(window.location.href);
|
|
267
|
-
url.searchParams.set("es", "true");
|
|
268
|
-
url.searchParams.set("esq", query);
|
|
269
|
-
window.history.pushState({}, "", url);
|
|
270
|
-
window.dispatchEvent(new PopStateEvent("popstate", { state: {} }));
|
|
271
|
-
set(chatSearchParamsAtom, {
|
|
272
|
-
id: null,
|
|
273
|
-
query
|
|
274
|
-
});
|
|
275
|
-
set(handleSearchAtom, {
|
|
276
|
-
id: (0, uuid.v4)(),
|
|
277
|
-
role: require_models.MessageRole.User,
|
|
278
|
-
type: require_models.MessageType.Search,
|
|
279
|
-
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
280
|
-
metadata: {
|
|
281
|
-
searchTerm: query,
|
|
282
|
-
selectedFilters: []
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
});
|
|
286
|
-
const handleSearchResultsAtom = (0, jotai.atom)(null, (get, set, message) => {
|
|
287
|
-
if (!message || message.type !== require_models.MessageType.ProductSearch) return;
|
|
288
|
-
const { productCount, generatedQuery } = message.metadata;
|
|
289
|
-
if (productCount !== 0) {
|
|
290
|
-
set(selectedFilterOptionsAtom, []);
|
|
291
|
-
set(chatSearchStateAtom, "product-page");
|
|
292
|
-
const currentSearchParams = get(chatSearchParamsAtom);
|
|
293
|
-
const url = new URL(window.location.href);
|
|
294
|
-
url.searchParams.set("es", "true");
|
|
295
|
-
url.searchParams.set("esq", generatedQuery);
|
|
296
|
-
url.searchParams.set("esi", message.id);
|
|
297
|
-
window.history.pushState({}, "", url);
|
|
298
|
-
if (currentSearchParams.id === null) window.history.replaceState(null, "", url);
|
|
299
|
-
else window.history.pushState(null, "", url);
|
|
300
|
-
set(chatSearchParamsAtom, {
|
|
301
|
-
id: message.id,
|
|
302
|
-
query: generatedQuery
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
});
|
|
306
|
-
const setChatSearchParamsAtom = (0, jotai.atom)(null, (_, set, query) => {
|
|
307
|
-
const url = new URL(window.location.href);
|
|
308
|
-
url.searchParams.set("es", "true");
|
|
309
|
-
url.searchParams.set("esq", query);
|
|
310
|
-
window.history.pushState({}, "", url);
|
|
311
|
-
set(chatSearchParamsAtom, {
|
|
312
|
-
id: null,
|
|
313
|
-
query
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
//#endregion
|
|
318
|
-
Object.defineProperty(exports, 'ChatSearchTurnAtom', {
|
|
319
|
-
enumerable: true,
|
|
320
|
-
get: function () {
|
|
321
|
-
return ChatSearchTurnAtom;
|
|
322
|
-
}
|
|
323
|
-
});
|
|
324
|
-
Object.defineProperty(exports, 'ProductFilters', {
|
|
325
|
-
enumerable: true,
|
|
326
|
-
get: function () {
|
|
327
|
-
return ProductFilters;
|
|
328
|
-
}
|
|
329
|
-
});
|
|
330
|
-
Object.defineProperty(exports, 'ProductSorter', {
|
|
331
|
-
enumerable: true,
|
|
332
|
-
get: function () {
|
|
333
|
-
return ProductSorter;
|
|
334
|
-
}
|
|
335
|
-
});
|
|
336
|
-
Object.defineProperty(exports, 'additiveDynamicFiltersAtom', {
|
|
337
|
-
enumerable: true,
|
|
338
|
-
get: function () {
|
|
339
|
-
return additiveDynamicFiltersAtom;
|
|
340
|
-
}
|
|
341
|
-
});
|
|
342
|
-
Object.defineProperty(exports, 'chatSearchFiltersAtom', {
|
|
343
|
-
enumerable: true,
|
|
344
|
-
get: function () {
|
|
345
|
-
return chatSearchFiltersAtom;
|
|
346
|
-
}
|
|
347
|
-
});
|
|
348
|
-
Object.defineProperty(exports, 'chatSearchHasProductsAtom', {
|
|
349
|
-
enumerable: true,
|
|
350
|
-
get: function () {
|
|
351
|
-
return chatSearchHasProductsAtom;
|
|
352
|
-
}
|
|
353
|
-
});
|
|
354
|
-
Object.defineProperty(exports, 'chatSearchIdAtom', {
|
|
355
|
-
enumerable: true,
|
|
356
|
-
get: function () {
|
|
357
|
-
return chatSearchIdAtom;
|
|
358
|
-
}
|
|
359
|
-
});
|
|
360
|
-
Object.defineProperty(exports, 'chatSearchIsLoadingAtom', {
|
|
361
|
-
enumerable: true,
|
|
362
|
-
get: function () {
|
|
363
|
-
return chatSearchIsLoadingAtom;
|
|
364
|
-
}
|
|
365
|
-
});
|
|
366
|
-
Object.defineProperty(exports, 'chatSearchParamsAtom', {
|
|
367
|
-
enumerable: true,
|
|
368
|
-
get: function () {
|
|
369
|
-
return chatSearchParamsAtom;
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
Object.defineProperty(exports, 'chatSearchProductSortingAtom', {
|
|
373
|
-
enumerable: true,
|
|
374
|
-
get: function () {
|
|
375
|
-
return chatSearchProductSortingAtom;
|
|
376
|
-
}
|
|
377
|
-
});
|
|
378
|
-
Object.defineProperty(exports, 'chatSearchProducts', {
|
|
379
|
-
enumerable: true,
|
|
380
|
-
get: function () {
|
|
381
|
-
return chatSearchProducts;
|
|
382
|
-
}
|
|
383
|
-
});
|
|
384
|
-
Object.defineProperty(exports, 'chatSearchQueryAtom', {
|
|
385
|
-
enumerable: true,
|
|
386
|
-
get: function () {
|
|
387
|
-
return chatSearchQueryAtom;
|
|
388
|
-
}
|
|
389
|
-
});
|
|
390
|
-
Object.defineProperty(exports, 'chatSearchStateAtom', {
|
|
391
|
-
enumerable: true,
|
|
392
|
-
get: function () {
|
|
393
|
-
return chatSearchStateAtom;
|
|
394
|
-
}
|
|
395
|
-
});
|
|
396
|
-
Object.defineProperty(exports, 'createChatSearchFilterOption', {
|
|
397
|
-
enumerable: true,
|
|
398
|
-
get: function () {
|
|
399
|
-
return createChatSearchFilterOption;
|
|
400
|
-
}
|
|
401
|
-
});
|
|
402
|
-
Object.defineProperty(exports, 'formatFilterDisplayName', {
|
|
403
|
-
enumerable: true,
|
|
404
|
-
get: function () {
|
|
405
|
-
return formatFilterDisplayName;
|
|
406
|
-
}
|
|
407
|
-
});
|
|
408
|
-
Object.defineProperty(exports, 'getSearchParamsAtom', {
|
|
409
|
-
enumerable: true,
|
|
410
|
-
get: function () {
|
|
411
|
-
return getSearchParamsAtom;
|
|
412
|
-
}
|
|
413
|
-
});
|
|
414
|
-
Object.defineProperty(exports, 'handleSearchResultsAtom', {
|
|
415
|
-
enumerable: true,
|
|
416
|
-
get: function () {
|
|
417
|
-
return handleSearchResultsAtom;
|
|
418
|
-
}
|
|
419
|
-
});
|
|
420
|
-
Object.defineProperty(exports, 'initiateChatSearchAtom', {
|
|
421
|
-
enumerable: true,
|
|
422
|
-
get: function () {
|
|
423
|
-
return initiateChatSearchAtom;
|
|
424
|
-
}
|
|
425
|
-
});
|
|
426
|
-
Object.defineProperty(exports, 'selectedFilterOptionsAtom', {
|
|
427
|
-
enumerable: true,
|
|
428
|
-
get: function () {
|
|
429
|
-
return selectedFilterOptionsAtom;
|
|
430
|
-
}
|
|
431
|
-
});
|
|
432
|
-
Object.defineProperty(exports, 'setChatSearchParamsAtom', {
|
|
433
|
-
enumerable: true,
|
|
434
|
-
get: function () {
|
|
435
|
-
return setChatSearchParamsAtom;
|
|
436
|
-
}
|
|
437
|
-
});
|
|
438
|
-
Object.defineProperty(exports, 'setSearchParams', {
|
|
439
|
-
enumerable: true,
|
|
440
|
-
get: function () {
|
|
441
|
-
return setSearchParams;
|
|
442
|
-
}
|
|
443
|
-
});
|
|
444
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdFNlYXJjaC1EV01peVdOMC5janMiLCJuYW1lcyI6WyJQcm9kdWN0U29ydGluZyIsIlByb2R1Y3RTb3J0aW5nIiwiTWVzc2FnZVR5cGUiLCJuZXdPcmdDb25maWdBdG9tIiwibWVzc2FnZXNBdG9tIiwicmVwbHlFdmVudENhdGVnb3J5QXRvbSIsIlVzZXJFdmVudENhdGVnb3J5IiwidXNlclF1ZXJ5QXRvbSIsInVzZXJIYXNSZXBsaWVkQXRvbSIsInF1ZXVlVXNlckV2ZW50QXRvbSIsIk1lc3NhZ2VSb2xlIl0sInNvdXJjZXMiOlsiLi4vc3JjL2F0b21zL3NlYXJjaC91dGlscy50cyIsIi4uL3NyYy9hdG9tcy9zZWFyY2gvcHJvZHVjdEZpbHRlcnMudHMiLCIuLi9zcmMvYXRvbXMvc2VhcmNoL3Byb2R1Y3RTb3J0ZXIudHMiLCIuLi9zcmMvYXRvbXMvc2VhcmNoL2NoYXRTZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lID0gKGRpc3BsYXlOYW1lOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgc2l6ZXMgPSBbJ3h4eHMnLCAneHhzJywgJ3hzJywgJ3MnLCAnbScsICdsJywgJ3hsJywgJ3h4bCcsICd4eHhsJywgJ3h4eHhsJ107XG5cbiAgY29uc3QgcHJvY2Vzc2VkV29yZHMgPSBkaXNwbGF5TmFtZVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnNwbGl0KCcgJylcbiAgICAubWFwKCh3b3JkKSA9PiB7XG4gICAgICBpZiAoc2l6ZXMuaW5jbHVkZXMod29yZCkpIHtcbiAgICAgICAgcmV0dXJuIHdvcmQudG9VcHBlckNhc2UoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB3b3JkLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgd29yZC5zbGljZSgxKTtcbiAgICB9KTtcblxuICBjb25zdCB0aXRsZUNhc2VkTmFtZSA9IHByb2Nlc3NlZFdvcmRzLmpvaW4oJyAnKTtcblxuICAvLyBGaW5hbCByZXBsYWNlbWVudHMgZm9yIHNwZWNpYWwgY2FzZXNcbiAgcmV0dXJuIHRpdGxlQ2FzZWROYW1lLnJlcGxhY2UoL0lwaG9uZS9nLCAnaVBob25lJyk7XG59O1xuIiwiaW1wb3J0IHsgUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRmlsdGVyQXR0cmlidXRlIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzJztcbmltcG9ydCB7IFNlbGVjdGVkRmlsdGVyT3B0aW9uIH0gZnJvbSAnc3JjL2F0b21zL3NlYXJjaC9zZWFyY2hBUEknO1xuaW1wb3J0IHsgQ2hhdFNlYXJjaEZpbHRlciwgQ2hhdFNlYXJjaEZpbHRlckl0ZW0gfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IGdldFByaWNlQnVja2V0ID0gKHByaWNlOiBudW1iZXIsIGJ1Y2tldFNpemU6IG51bWJlcikgPT4ge1xuICBjb25zdCBidWNrZXQgPSBNYXRoLmZsb29yKHByaWNlIC8gYnVja2V0U2l6ZSk7XG4gIHJldHVybiBidWNrZXQgKiBidWNrZXRTaXplO1xufTtcblxuY29uc3QgaXNTdHJpbmdBcnJheSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZ1tdID0+IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsdWUuZXZlcnkoKGl0ZW0pID0+IHR5cGVvZiBpdGVtID09PSAnc3RyaW5nJyk7XG59O1xuXG50eXBlIEZpbHRlclNvcnRGdW5jdGlvbiA9IChhOiBDaGF0U2VhcmNoRmlsdGVySXRlbSwgYjogQ2hhdFNlYXJjaEZpbHRlckl0ZW0pID0+IG51bWJlcjtcblxuY29uc3Qgc29ydEZpbHRlciA9IChmaWx0ZXJDb25maWc6IEZpbHRlckF0dHJpYnV0ZSk6IEZpbHRlclNvcnRGdW5jdGlvbiA9PiB7XG4gIGlmIChmaWx0ZXJDb25maWcudHlwZSA9PT0gJ3ByaWNlJykge1xuICAgIHJldHVybiAoYSwgYikgPT4gTnVtYmVyKGEuZmlsdGVySXRlbUlkKSAtIE51bWJlcihiLmZpbHRlckl0ZW1JZCk7XG4gIH1cbiAgaWYgKGZpbHRlckNvbmZpZy50eXBlID09PSAnZHluYW1pYycpIHtcbiAgICBpZiAoZmlsdGVyQ29uZmlnLnNvcnRpbmcudHlwZSA9PT0gJ2FscGhhYmV0aWMnKSB7XG4gICAgICByZXR1cm4gKGEsIGIpID0+IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKTtcbiAgICB9XG4gICAgLy8gU29ydCBieSB0aGUgbnVtYmVyIG9mIHByb2R1Y3RzLCBpZiB0aGV5IG1hdGNoLCBzb3J0IGJ5IGFscGhhYmV0aWNhbFxuICAgIGlmIChmaWx0ZXJDb25maWcuc29ydGluZy50eXBlID09PSAncHJvZHVjdENvdW50Jykge1xuICAgICAgcmV0dXJuIChhLCBiKSA9PlxuICAgICAgICBhLnByb2R1Y3RDb3VudCA9PT0gYi5wcm9kdWN0Q291bnRcbiAgICAgICAgICA/IGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1lKVxuICAgICAgICAgIDogYi5wcm9kdWN0Q291bnQgLSBhLnByb2R1Y3RDb3VudDtcbiAgICB9XG4gICAgaWYgKGZpbHRlckNvbmZpZy5zb3J0aW5nLnR5cGUgPT09ICdjdXN0b20nKSB7XG4gICAgICBjb25zdCBzb3J0ZWRLZXlzID0gZmlsdGVyQ29uZmlnLnNvcnRpbmcubWFwO1xuICAgICAgcmV0dXJuIChhLCBiKSA9PiB7XG4gICAgICAgIGlmIChzb3J0ZWRLZXlzW2EuZGlzcGxheU5hbWVdICYmIHNvcnRlZEtleXNbYi5kaXNwbGF5TmFtZV0pIHtcbiAgICAgICAgICAvLyBJZiBib3RoIGFyZSBpbiB0aGUgc29ydGVkS2V5cywgc29ydCBieSB0aGUgaW5kZXhcbiAgICAgICAgICByZXR1cm4gc29ydGVkS2V5c1thLmRpc3BsYXlOYW1lXSAtIHNvcnRlZEtleXNbYi5kaXNwbGF5TmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgLy8gSWYgb25seSAnYScgaXMgaW4gdGhlIHNvcnRlZEtleXMsIHB1dCBpdCBiZWZvcmUgdGhlIG90aGVyXG4gICAgICAgIGlmIChzb3J0ZWRLZXlzW2EuZGlzcGxheU5hbWVdKSB7XG4gICAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG9ubHkgJ2InIGlzIGluIHRoZSBzb3J0ZWRLZXlzLCBwdXQgaXQgYmVmb3JlIHRoZSBvdGhlclxuICAgICAgICBpZiAoc29ydGVkS2V5c1tiLmRpc3BsYXlOYW1lXSkge1xuICAgICAgICAgIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIC8vIElmIG5laXRoZXIgYXJlIGluIHRoZSBzb3J0ZWRLZXlzLCBzb3J0IGJ5IHByb2R1Y3RDb3VudFxuICAgICAgICByZXR1cm4gYi5wcm9kdWN0Q291bnQgLSBhLnByb2R1Y3RDb3VudDtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcignSW52YWFsaWQgc2VhcmNoIGZpbHRlciBjb25maWd1cmF0aW9uJyk7XG59O1xuXG5leHBvcnQgY2xhc3MgUHJvZHVjdEZpbHRlcnMge1xuICBzdGF0aWMgZ2V0RmlsdGVyc0ZvclByb2R1Y3RzKFxuICAgIHByb2R1Y3RzOiBQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzWydhdHRyaWJ1dGVzJ11bXSxcbiAgICBmaWx0ZXJDb25maWdzOiBGaWx0ZXJBdHRyaWJ1dGVbXSxcbiAgICBzZWxlY3RlZEZpbHRlck9wdGlvbnM6IFNlbGVjdGVkRmlsdGVyT3B0aW9uW10sXG4gICk6IENoYXRTZWFyY2hGaWx0ZXJbXSB7XG4gICAgaWYgKCFwcm9kdWN0cyB8fCBwcm9kdWN0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBjb25zdCBmaWx0ZXJzID0gZmlsdGVyQ29uZmlncy5tYXAoKGZpbHRlckNvbmZpZykgPT5cbiAgICAgIHByb2R1Y3RzLnJlZHVjZShcbiAgICAgICAgKGFjYywgcHJvZHVjdCkgPT4ge1xuICAgICAgICAgIC8vIFByaWNlIGhhcyBzcGVjaWFsIGhhbmRsaW5nIGZvciB0aGUgZmlsdGVyc1xuICAgICAgICAgIGlmIChmaWx0ZXJDb25maWcudHlwZSA9PT0gJ3ByaWNlJykge1xuICAgICAgICAgICAgY29uc3QgcHJpY2VCdWNrZXQgPSBnZXRQcmljZUJ1Y2tldChcbiAgICAgICAgICAgICAgcHJvZHVjdC5zYWxlUHJpY2UgPz8gcHJvZHVjdC5vcmlnaW5hbFByaWNlID8/IDAsXG4gICAgICAgICAgICAgIGZpbHRlckNvbmZpZy5idWNrZXRTaXplLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhY2MubWFwW3ByaWNlQnVja2V0XSA/PyB7XG4gICAgICAgICAgICAgIGZpbHRlckl0ZW1JZDogcHJpY2VCdWNrZXQsXG4gICAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBgJCR7cHJpY2VCdWNrZXR9LSQke3ByaWNlQnVja2V0ICsgZmlsdGVyQ29uZmlnLmJ1Y2tldFNpemV9YCxcbiAgICAgICAgICAgICAgcHJvZHVjdENvdW50OiAwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGFjYy5tYXBbcHJpY2VCdWNrZXRdID0geyAuLi5jdXJyZW50LCBwcm9kdWN0Q291bnQ6IGN1cnJlbnQucHJvZHVjdENvdW50ICsgMSB9O1xuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBc3N1bWUgdGhhdCB0aGUgXCJhdHRyaWJ1dGVcIiBpcyBhbiBhcnJheSBvZiB2YWx1ZXNcbiAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVWYWx1ZXMgPVxuICAgICAgICAgICAgKHByb2R1Y3QuZmlsdGVycyAmJiBwcm9kdWN0LmZpbHRlcnM/LltmaWx0ZXJDb25maWcuYXR0cmlidXRlXSkgPz8gW107XG4gICAgICAgICAgaWYgKGlzU3RyaW5nQXJyYXkoYXR0cmlidXRlVmFsdWVzKSkge1xuICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzLmZvckVhY2goKHZhbCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkVmFsID0gdmFsLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnQgPSBhY2MubWFwW25vcm1hbGl6ZWRWYWxdID8/IHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJJdGVtSWQ6IG5vcm1hbGl6ZWRWYWwsXG4gICAgICAgICAgICAgICAgZGlzcGxheU5hbWU6IGZvcm1hdEZpbHRlckRpc3BsYXlOYW1lKHZhbCksIC8vIEtlZXAgb3JpZ2luYWwgY2FzZSBmb3IgZGlzcGxheVxuICAgICAgICAgICAgICAgIHByb2R1Y3RDb3VudDogMCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgYWNjLm1hcFtub3JtYWxpemVkVmFsXSA9IHsgLi4uY3VycmVudCwgcHJvZHVjdENvdW50OiBjdXJyZW50LnByb2R1Y3RDb3VudCArIDEgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBmaWx0ZXJDb25maWcsXG4gICAgICAgICAgbWFwOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBDaGF0U2VhcmNoRmlsdGVySXRlbT4sXG4gICAgICAgIH0sXG4gICAgICApLFxuICAgICk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZEZpbHRlcnM6IENoYXRTZWFyY2hGaWx0ZXJbXSA9IGZpbHRlcnMubWFwKCh7IGZpbHRlckNvbmZpZywgbWFwIH0pID0+ICh7XG4gICAgICBmaWx0ZXJJZDogZmlsdGVyQ29uZmlnLmZpbHRlcklkLFxuICAgICAgZGlzcGxheU5hbWU6IGZpbHRlckNvbmZpZy5kaXNwbGF5TmFtZSxcbiAgICAgIGl0ZW1zOiBPYmplY3QudmFsdWVzKG1hcClcbiAgICAgICAgLm1hcCgoZmlsdGVyKSA9PiAoe1xuICAgICAgICAgIGZpbHRlckl0ZW1JZDogZmlsdGVyLmZpbHRlckl0ZW1JZCxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogZmlsdGVyLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIHByb2R1Y3RDb3VudDogZmlsdGVyLnByb2R1Y3RDb3VudCxcbiAgICAgICAgICBpc1NlbGVjdGVkOlxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbi5pZCA9PT0gYCR7ZmlsdGVyQ29uZmlnLmZpbHRlcklkfToke2ZpbHRlci5maWx0ZXJJdGVtSWR9YCxcbiAgICAgICAgICAgICkgPz8gZmFsc2UsXG4gICAgICAgIH0pKVxuICAgICAgICAuc29ydChzb3J0RmlsdGVyKGZpbHRlckNvbmZpZykpLFxuICAgIH0pKTtcblxuICAgIHJldHVybiBbLi4udHJhbnNmb3JtZWRGaWx0ZXJzXTtcbiAgfVxuXG4gIHN0YXRpYyBmaWx0ZXJQcm9kdWN0cyhcbiAgICBwcm9kdWN0czogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddW10sXG4gICAgZmlsdGVyQ29uZmlnczogRmlsdGVyQXR0cmlidXRlW10sXG4gICAgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zOiBTZWxlY3RlZEZpbHRlck9wdGlvbltdLFxuICAgIGFkZGl0aXZlRHluYW1pY0ZpbHRlcnMgPSBmYWxzZSwgLy8gU2V0IHRoaXMgdG8gdHJ1ZSB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBiZWhhdmlvciB3aGVyZSBzdGFja2luZyBmaWx0ZXJzIGhhcyBPUiBsb2dpYy5cbiAgKSB7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJzID0gZmlsdGVyQ29uZmlnc1xuICAgICAgLm1hcCgoZmlsdGVyQ29uZmlnKSA9PiAoe1xuICAgICAgICBmaWx0ZXJDb25maWcsXG4gICAgICAgIGhhc1NlbGVjdGVkT3B0aW9uczogc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmZpbHRlcklkID09PSBmaWx0ZXJDb25maWcuZmlsdGVySWQsXG4gICAgICAgICksXG4gICAgICB9KSlcbiAgICAgIC5maWx0ZXIoKHsgaGFzU2VsZWN0ZWRPcHRpb25zIH0pID0+IGhhc1NlbGVjdGVkT3B0aW9ucyk7XG4gICAgcmV0dXJuIHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5sZW5ndGggPT09IDBcbiAgICAgID8gcHJvZHVjdHNcbiAgICAgIDogcHJvZHVjdHMuZmlsdGVyKChwcm9kdWN0KSA9PlxuICAgICAgICAgIHNlbGVjdGVkRmlsdGVycy5yZWR1Y2UoKGFjYywgc2VsZWN0ZWRGaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIC8vIEZpbmRpbmcgb25lIGZhbHNlIHJlbW92ZXMgdGhlIHByb2R1Y3RcbiAgICAgICAgICAgIGlmICghYWNjKSB7XG4gICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBQcmljZSBpcyBzcGVjaWFsXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdwcmljZScpIHtcbiAgICAgICAgICAgICAgY29uc3QgcHJpY2VCdWNrZXQgPSBnZXRQcmljZUJ1Y2tldChcbiAgICAgICAgICAgICAgICBwcm9kdWN0LnNhbGVQcmljZSA/PyBwcm9kdWN0Lm9yaWdpbmFsUHJpY2UgPz8gMCxcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWcuYnVja2V0U2l6ZSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2hlc1ByaWNlRmlsdGVyID0gc2VsZWN0ZWRGaWx0ZXJPcHRpb25zLnNvbWUoXG4gICAgICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uLmlkID09PSBgcHJpY2U6JHtwcmljZUJ1Y2tldH1gLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAoIW1hdGNoZXNQcmljZUZpbHRlcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWRGaWx0ZXIuZmlsdGVyQ29uZmlnLnR5cGUgPT09ICdkeW5hbWljJykge1xuICAgICAgICAgICAgICAvLyBkeW5hbWljIGlzIG1pc2xlYWRpbmcgaGVyZS4gSXRzIG5vdCBqdXN0IGR5bmFtaWMgZmlsdGVycywgYnV0IHN0YXRpYyBmaWx0ZXJzIGJlY2F1c2UgdGhlIGNvbmZpZyBjb3VudHMgc3RhdGljIGZpbHRlcnMgYXMgdHlwZTogZHluYW1pYy5cbiAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJJZCwgYXR0cmlidXRlIH0gPSBzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWc7XG4gICAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlcyA9IHByb2R1Y3QuZmlsdGVycz8uW2F0dHJpYnV0ZV07XG5cbiAgICAgICAgICAgICAgaWYgKCFpc1N0cmluZ0FycmF5KGF0dHJpYnV0ZVZhbHVlcykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBpc0R5bmFtaWNGaWx0ZXIgPSBzZWxlY3RlZEZpbHRlci5maWx0ZXJDb25maWcuYXR0cmlidXRlID09PSAnZHluYW1pYyc7IC8vIFRydWUgZHluYW1pYyBmaWx0ZXJzICh0aGUgb25lcyB0aGF0IGFwcGVhciBiZW5lYXRoIHRoZSBzZWFyY2ggaW5wdXQpXG4gICAgICAgICAgICAgIGNvbnN0IGlzU3VidHJhY3RpdmVMb2dpYyA9IGlzRHluYW1pY0ZpbHRlciAmJiAhYWRkaXRpdmVEeW5hbWljRmlsdGVycztcblxuICAgICAgICAgICAgICBpZiAoaXNTdWJ0cmFjdGl2ZUxvZ2ljKSB7XG4gICAgICAgICAgICAgICAgLy8gQU5EIGxvZ2ljIGZvciBzdWJ0cmFjdGl2ZSBkeW5hbWljIGZpbHRlcnMgYW5kIGJldHdlZW4gc3RhdGljIGZpbHRlciBjYXRlZ29yaWVzXG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRPcHRpb25zRm9yVGhpc0ZpbHRlciA9IHNlbGVjdGVkRmlsdGVyT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uZmlsdGVySWQgPT09IGZpbHRlcklkKVxuICAgICAgICAgICAgICAgICAgLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uZmlsdGVySXRlbUlkLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzQWxsU2VsZWN0ZWRWYWx1ZXMgPSBzZWxlY3RlZE9wdGlvbnNGb3JUaGlzRmlsdGVyLmV2ZXJ5KChzZWxlY3RlZFZhbHVlKSA9PlxuICAgICAgICAgICAgICAgICAgYXR0cmlidXRlVmFsdWVzLnNvbWUoKHZhbCkgPT4gdmFsLnRvTG93ZXJDYXNlKCkgPT09IHNlbGVjdGVkVmFsdWUpLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWhhc0FsbFNlbGVjdGVkVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIE9SIGxvZ2ljIGZvciBzdGF0aWMgZmlsdGVycyBpbiB0aGUgc2lkZWJhciB3aXRoaW4gYSBjYXRlZ29yeS5cbiAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gYXR0cmlidXRlVmFsdWVzLnNvbWUoKHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9ucy5zb21lKFxuICAgICAgICAgICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24uaWQgPT09IGAke2ZpbHRlcklkfToke3ZhbC50b0xvd2VyQ2FzZSgpfWAsXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9LCB0cnVlKSxcbiAgICAgICAgKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgUHJvZHVjdFNvcnRpbmcgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIFByb2R1Y3RTb3J0ZXIge1xuICBzdGF0aWMgc29ydChwcm9kdWN0czogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1snYXR0cmlidXRlcyddW10sIHNvcnRpbmc6IFByb2R1Y3RTb3J0aW5nKSB7XG4gICAgc3dpdGNoIChzb3J0aW5nKSB7XG4gICAgICBjYXNlIFByb2R1Y3RTb3J0aW5nLlBSSUNFX0FTQzpcbiAgICAgICAgcmV0dXJuIFsuLi5wcm9kdWN0c10uc29ydChcbiAgICAgICAgICAocDEsIHAyKSA9PlxuICAgICAgICAgICAgKHAxLnNhbGVQcmljZSA/PyBwMS5vcmlnaW5hbFByaWNlID8/IDApIC0gKHAyLnNhbGVQcmljZSA/PyBwMi5vcmlnaW5hbFByaWNlID8/IDApLFxuICAgICAgICApO1xuXG4gICAgICBjYXNlIFByb2R1Y3RTb3J0aW5nLlBSSUNFX0RFU0M6XG4gICAgICAgIHJldHVybiBbLi4ucHJvZHVjdHNdLnNvcnQoXG4gICAgICAgICAgKHAxLCBwMikgPT5cbiAgICAgICAgICAgIChwMi5zYWxlUHJpY2UgPz8gcDIub3JpZ2luYWxQcmljZSA/PyAwKSAtIChwMS5zYWxlUHJpY2UgPz8gcDEub3JpZ2luYWxQcmljZSA/PyAwKSxcbiAgICAgICAgKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHByb2R1Y3RzO1xuICAgIH1cbiAgfVxufVxuIiwiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tIFwiQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50XCI7XG5pbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSBcInV1aWRcIjtcbmltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7XG4gIE1lc3NhZ2UsXG4gIE1lc3NhZ2VSb2xlLFxuICBNZXNzYWdlVHlwZSxcbiAgUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyxcbn0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVwbHlFdmVudENhdGVnb3J5QXRvbSxcbiAgdXNlckhhc1JlcGxpZWRBdG9tLFxuICB1c2VyUXVlcnlBdG9tLFxufSBmcm9tIFwic3JjL2F0b21zL2NoYXRcIjtcbmltcG9ydCB7IHF1ZXVlVXNlckV2ZW50QXRvbSB9IGZyb20gXCIuLi9jaGF0L21lc3NhZ2VRdWV1ZVwiO1xuaW1wb3J0IHsgbmV3T3JnQ29uZmlnQXRvbSB9IGZyb20gXCIuLi9vcmdcIjtcbmltcG9ydCB7IFByb2R1Y3RGaWx0ZXJzIH0gZnJvbSBcIi4vcHJvZHVjdEZpbHRlcnNcIjtcbmltcG9ydCB7IFByb2R1Y3RTb3J0ZXIgfSBmcm9tIFwiLi9wcm9kdWN0U29ydGVyXCI7XG5pbXBvcnQgeyBDaGF0U2VhcmNoU3RhdGVUeXBlLCBQcm9kdWN0U29ydGluZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8vIE5PVEU6XG4vLyBUaGlzIGlzIGEgbGVnYWN5IHZlcnNpb24gb2Ygc2VhcmNoIHRoYXQgbmVlZHMgdG8gYmUgZGVjb3VwbGVkIGFuZCByZW1vdmVkLlxuLy8gdGhlIG5ldyBzZWFyY2gudHMgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeSBpcyBsaWtlbHkgd2hhdCB5b3UncmUgbG9va2luZyBmb3IuXG5cbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoU3RhdGVBdG9tID0gYXRvbTxDaGF0U2VhcmNoU3RhdGVUeXBlPihcImVudHJ5cG9pbnRcIik7XG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaEhhc1Byb2R1Y3RzQXRvbSA9IGF0b208Ym9vbGVhbj4oZmFsc2UpO1xuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hQcm9kdWN0U29ydGluZ0F0b20gPSBhdG9tPFByb2R1Y3RTb3J0aW5nPihcbiAgUHJvZHVjdFNvcnRpbmcuRkVBVFVSRURcbik7XG5cbmNvbnN0IGZpbHRlclByb2R1Y3RMaXN0ID0gKG1lc3NhZ2U6IE1lc3NhZ2UpID0+XG4gIG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdCAmJiBtZXNzYWdlLm1ldGFkYXRhLmlzRm9yR3JpZCA9PT0gdHJ1ZTtcbmNvbnN0IGZpbHRlckZpbHRlckxpc3QgPSAobWVzc2FnZTogTWVzc2FnZSkgPT5cbiAgbWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoRmlsdGVyO1xuXG5leHBvcnQgdHlwZSBDaGF0U2VhcmNoVHVybiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgZ2VuZXJhdGVkUXVlcnk/OiBzdHJpbmc7XG4gIHByb2R1Y3RDb3VudDogbnVtYmVyO1xuICBwcm9kdWN0TGlzdDogUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlc1tcImF0dHJpYnV0ZXNcIl1bXTtcbiAgZmlsdGVyTGlzdDogc3RyaW5nW107XG4gIG1lc3NhZ2VzOiBNZXNzYWdlW107XG59O1xuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaElzTG9hZGluZ0F0b20gPSBhdG9tKGZhbHNlKTtcblxuY29uc3QgYnVpbGRDaGF0U2VhcmNoVHVybiA9IChcbiAgbWVzc2FnZXM6IE1lc3NhZ2VbXVxuKTogW3N0cmluZywgQ2hhdFNlYXJjaFR1cm5dIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHF1ZXJ5TWVzc2FnZSA9IG1lc3NhZ2VzLmZpbmQoXG4gICAgKG1lc3NhZ2UpID0+IG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaFxuICApO1xuICBpZiAoIXF1ZXJ5TWVzc2FnZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHsgZ2VuZXJhdGVkUXVlcnksIHByb2R1Y3RDb3VudCB9ID0gcXVlcnlNZXNzYWdlLm1ldGFkYXRhID8/IHt9O1xuICBjb25zdCBwcm9kdWN0TGlzdCA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcihmaWx0ZXJQcm9kdWN0TGlzdClcbiAgICAubWFwKChtZXNzYWdlKSA9PiAobWVzc2FnZSBhcyBhbnkpLm1ldGFkYXRhKTtcbiAgY29uc3QgZmlsdGVyTGlzdCA9IG1lc3NhZ2VzXG4gICAgLmZpbHRlcihmaWx0ZXJGaWx0ZXJMaXN0KVxuICAgIC5tYXAoKG1lc3NhZ2UpID0+IG1lc3NhZ2UubWV0YWRhdGEuZmlsdGVyTmFtZSk7XG4gIHJldHVybiBbXG4gICAgcXVlcnlNZXNzYWdlLmlkLFxuICAgIHtcbiAgICAgIGlkOiBxdWVyeU1lc3NhZ2UuaWQsXG4gICAgICBnZW5lcmF0ZWRRdWVyeSxcbiAgICAgIHByb2R1Y3RDb3VudDogcHJvZHVjdENvdW50IHx8IHByb2R1Y3RMaXN0Lmxlbmd0aCxcbiAgICAgIHByb2R1Y3RMaXN0LFxuICAgICAgZmlsdGVyTGlzdCxcbiAgICAgIG1lc3NhZ2VzLFxuICAgIH0sXG4gIF07XG59O1xuXG5jb25zdCBjaGF0U2VhcmNoRmlsdGVyQ29uZmlnQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBuZXdPcmdDb25maWcgPSBnZXQobmV3T3JnQ29uZmlnQXRvbSk7XG4gIHJldHVybiAoXG4gICAgbmV3T3JnQ29uZmlnPy5mcm9udGVuZENvbmZpZz8udWlDb25maWdzPy5zZWFyY2hDb25maWc/LnNlYXJjaEZpbHRlckNvbmZpZyB8fFxuICAgIFtdXG4gICk7XG59KTtcblxuY29uc3Qgc2VhcmNoTWFwQXRvbSA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBtZXNzYWdlcyA9IGdldChtZXNzYWdlc0F0b20pO1xuICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIG1lc3NhZ2VzLm1hcChidWlsZENoYXRTZWFyY2hUdXJuKS5maWx0ZXIoKHYpID0+IHYgIT09IG51bGwpXG4gICk7XG59KTtcblxuY29uc3QgaW50ZXJuYWxDaGF0U2VhcmNoUGFyYW1zQXRvbSA9IGF0b208e1xuICBpZDogc3RyaW5nIHwgbnVsbDtcbiAgcXVlcnk6IHN0cmluZyB8IG51bGw7XG59Pih7XG4gIGlkOiBudWxsLFxuICBxdWVyeTogbnVsbCxcbn0pO1xuXG4vLyBTZWxlY3RlZCBmaWx0ZXIgb3B0aW9ucyB3aXRoIGNvbXBvdW5kIG9iamVjdHMgZm9yIGJldHRlciB0eXBlIHNhZmV0eSBhbmQgZGlzcGxheVxuZXhwb3J0IHR5cGUgU2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uID0ge1xuICBpZDogc3RyaW5nOyAvLyBcImZpbHRlcklkOmZpbHRlckl0ZW1JZFwiIC0gbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgZm9yIGNvbXBhcmlzb25zXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gIGZpbHRlcklkOiBzdHJpbmc7IC8vIEZpbHRlciBjYXRlZ29yeVxuICBmaWx0ZXJJdGVtSWQ6IHN0cmluZzsgLy8gRmlsdGVyIHZhbHVlXG59O1xuXG5leHBvcnQgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zQXRvbSA9IGF0b208U2VsZWN0ZWRDaGF0U2VhcmNoRmlsdGVyT3B0aW9uW10+KFxuICBbXVxuKTtcblxuZXhwb3J0IGNvbnN0IGFkZGl0aXZlRHluYW1pY0ZpbHRlcnNBdG9tID0gYXRvbSgoZ2V0KSA9PiB7XG4gIGNvbnN0IG5ld09yZ0NvbmZpZyA9IGdldChuZXdPcmdDb25maWdBdG9tKTtcbiAgcmV0dXJuIChcbiAgICBuZXdPcmdDb25maWc/LmZyb250ZW5kQ29uZmlnPy51aUNvbmZpZ3M/LnNlYXJjaENvbmZpZ1xuICAgICAgPy5hZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzID8/IGZhbHNlXG4gICk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUNoYXRTZWFyY2hGaWx0ZXJPcHRpb24gPSAoXG4gIGZpbHRlcklkOiBzdHJpbmcsXG4gIGZpbHRlckl0ZW1JZDogc3RyaW5nLFxuICBkaXNwbGF5TmFtZTogc3RyaW5nXG4pOiBTZWxlY3RlZENoYXRTZWFyY2hGaWx0ZXJPcHRpb24gPT4gKHtcbiAgaWQ6IGAke2ZpbHRlcklkfToke2ZpbHRlckl0ZW1JZH1gLFxuICBkaXNwbGF5TmFtZSxcbiAgZmlsdGVySWQsXG4gIGZpbHRlckl0ZW1JZCxcbn0pO1xuXG5jb25zdCBoYW5kbGVTZWFyY2hBdG9tID0gYXRvbShudWxsLCAoZ2V0LCBzZXQsIG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHtcbiAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gTWVzc2FnZVR5cGUuU2VhcmNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcXVlcnlTZWFyY2ggPSBtZXNzYWdlLm1ldGFkYXRhLnNlYXJjaFRlcm07XG5cbiAgc2V0KHJlcGx5RXZlbnRDYXRlZ29yeUF0b20sIFVzZXJFdmVudENhdGVnb3J5LlNlYXJjaCk7XG4gIHNldCh1c2VyUXVlcnlBdG9tLCBxdWVyeVNlYXJjaCk7XG4gIHNldChtZXNzYWdlc0F0b20sIFsuLi5nZXQobWVzc2FnZXNBdG9tKSwgW21lc3NhZ2VdXSk7XG4gIHNldCh1c2VySGFzUmVwbGllZEF0b20sIHRydWUpO1xuXG4gIHNldChxdWV1ZVVzZXJFdmVudEF0b20sIHtcbiAgICBldmVudElkOiBtZXNzYWdlLmlkLFxuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2gsXG4gICAgY3JlYXRlZEF0OiBtZXNzYWdlLmNyZWF0ZWRBdCxcbiAgICBhdHRyaWJ1dGVzOiB7XG4gICAgICBzZWFyY2hUZXJtOiBtZXNzYWdlLm1ldGFkYXRhLnNlYXJjaFRlcm0sXG4gICAgICBzZWxlY3RlZEZpbHRlcnM6IG1lc3NhZ2UubWV0YWRhdGEuc2VsZWN0ZWRGaWx0ZXJzLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbi8vIFRoaXMgaW50ZXJuYWwgYXRvbSBpcyB1c2VkIHRvIHN0b3JlIHRoZSBzZWFyY2ggcGFyYW1zXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQoaW50ZXJuYWxDaGF0U2VhcmNoUGFyYW1zQXRvbSksXG4gIChfLCBzZXQsIHZhbHVlOiB7IGlkOiBzdHJpbmcgfCBudWxsOyBxdWVyeTogc3RyaW5nIHwgbnVsbCB9KSA9PiB7XG4gICAgc2V0KGludGVybmFsQ2hhdFNlYXJjaFBhcmFtc0F0b20sIHZhbHVlKTtcbiAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hRdWVyeUF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiBnZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20pPy5xdWVyeSA/PyBudWxsLFxuICAoZ2V0LCBzZXQsIHZhbHVlOiBzdHJpbmcgfCBudWxsKSA9PiB7XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKTtcbiAgICBzZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20sIHsgaWQ6IHNlYXJjaFBhcmFtcy5pZCwgcXVlcnk6IHZhbHVlIH0pO1xuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgY2hhdFNlYXJjaElkQXRvbSA9IGF0b20oXG4gIChnZXQpID0+IGdldChjaGF0U2VhcmNoUGFyYW1zQXRvbSk/LmlkID8/IG51bGwsXG4gIChnZXQsIHNldCwgdmFsdWU6IHN0cmluZyB8IG51bGwpID0+IHtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBnZXQoY2hhdFNlYXJjaFBhcmFtc0F0b20pO1xuICAgIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogdmFsdWUsIHF1ZXJ5OiBzZWFyY2hQYXJhbXMucXVlcnkgfSk7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCBDaGF0U2VhcmNoVHVybkF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3Qgc2VhcmNoRmlsdGVyQ29uZmlnID0gZ2V0KGNoYXRTZWFyY2hGaWx0ZXJDb25maWdBdG9tKTtcbiAgY29uc3Qgc2VhcmNoTWFwID0gZ2V0KHNlYXJjaE1hcEF0b20pO1xuICBjb25zdCBjaGF0U2VhcmNoSWQgPSBnZXQoY2hhdFNlYXJjaElkQXRvbSk7XG4gIGlmICghY2hhdFNlYXJjaElkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3QgQ2hhdFNlYXJjaFR1cm4gPSBzZWFyY2hNYXBbY2hhdFNlYXJjaElkXTtcbiAgaWYgKCFDaGF0U2VhcmNoVHVybikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGNvbnN0IHByb2R1Y3RTb3J0aW5nID0gZ2V0KGNoYXRTZWFyY2hQcm9kdWN0U29ydGluZ0F0b20pO1xuICBjb25zdCBzZWxlY3RlZEZpbHRlck9wdGlvbnMgPSBnZXQoc2VsZWN0ZWRGaWx0ZXJPcHRpb25zQXRvbSk7XG4gIGNvbnN0IGFkZGl0aXZlRHluYW1pY0ZpbHRlcnMgPSBnZXQoYWRkaXRpdmVEeW5hbWljRmlsdGVyc0F0b20pO1xuICBjb25zdCBmaWx0ZXJlZFByb2R1Y3RzID0gUHJvZHVjdEZpbHRlcnMuZmlsdGVyUHJvZHVjdHMoXG4gICAgQ2hhdFNlYXJjaFR1cm4ucHJvZHVjdExpc3QsXG4gICAgc2VhcmNoRmlsdGVyQ29uZmlnLFxuICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9ucyxcbiAgICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzXG4gICk7XG5cbiAgY29uc3QgZmlsdGVyZWRBbmRTb3J0ZWRQcm9kdWN0cyA9IFByb2R1Y3RTb3J0ZXIuc29ydChcbiAgICBmaWx0ZXJlZFByb2R1Y3RzLFxuICAgIHByb2R1Y3RTb3J0aW5nXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zZWFyY2hNYXBbY2hhdFNlYXJjaElkXSxcbiAgICBwcm9kdWN0TGlzdDogZmlsdGVyZWRBbmRTb3J0ZWRQcm9kdWN0cyxcbiAgICBwcm9kdWN0Q291bnQ6IGZpbHRlcmVkQW5kU29ydGVkUHJvZHVjdHMubGVuZ3RoLFxuICB9O1xufSk7XG5cbi8vIFRPRE86IFdvcmsgb24gZGVwcmVjYXRpbmcgdGhpcyBhdG9tIGluIGZhdm9yIG9mIHVzaW5nIENoYXRTZWFyY2hUdXJuQXRvbSBkaXJlY3RseVxuZXhwb3J0IGNvbnN0IGNoYXRTZWFyY2hQcm9kdWN0cyA9IGF0b20oKGdldCkgPT4ge1xuICBjb25zdCBDaGF0U2VhcmNoVHVybiA9IGdldChDaGF0U2VhcmNoVHVybkF0b20pO1xuICByZXR1cm4gQ2hhdFNlYXJjaFR1cm4/LnByb2R1Y3RMaXN0ID8/IFtdO1xufSk7XG5cbmV4cG9ydCBjb25zdCBjaGF0U2VhcmNoRmlsdGVyc0F0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3Qgc2VhcmNoRmlsdGVyQ29uZmlnID0gZ2V0KGNoYXRTZWFyY2hGaWx0ZXJDb25maWdBdG9tKTtcbiAgY29uc3Qgc2VhcmNoTWFwID0gZ2V0KHNlYXJjaE1hcEF0b20pO1xuICBjb25zdCBjaGF0U2VhcmNoSWQgPSBnZXQoY2hhdFNlYXJjaElkQXRvbSk7XG5cbiAgaWYgKGNoYXRTZWFyY2hJZCAmJiBzZWFyY2hNYXBbY2hhdFNlYXJjaElkXSkge1xuICAgIGNvbnN0IHByb2R1Y3RzID0gc2VhcmNoTWFwW2NoYXRTZWFyY2hJZF0ucHJvZHVjdExpc3Q7XG4gICAgY29uc3Qgc2VsZWN0ZWRGaWx0ZXJPcHRpb25zID0gZ2V0KHNlbGVjdGVkRmlsdGVyT3B0aW9uc0F0b20pO1xuICAgIHJldHVybiBQcm9kdWN0RmlsdGVycy5nZXRGaWx0ZXJzRm9yUHJvZHVjdHMoXG4gICAgICBwcm9kdWN0cyxcbiAgICAgIHNlYXJjaEZpbHRlckNvbmZpZyxcbiAgICAgIHNlbGVjdGVkRmlsdGVyT3B0aW9uc1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufSk7XG5cbi8vIEZvciBzZWFyY2ggd2UgdXNlIHRoZSBmb2xsb3dpbmcgcXVlcnkgcGFyYW1zOlxuLy8gZXM6IHRydWUgLSB0aGlzIGluZGljYXRlcyB0aGF0IHdlIGFyZSBpbiBhIHNlYXJjaCBzdGF0ZVxuLy8gZXNxOiBxdWVyeSAtIHRoaXMgaXMgdGhlIGN1cnJlbnQgc2VhcmNoIHF1ZXJ5XG4vLyBlc2k6IHNlYXJjaCBpZCAtIHRoaXMgaXMgdGhlIHVuaXF1ZSBpZCBmb3IgdGhlIHNlYXJjaCByZXN1bHRzIHRoYXQgd2UgYXJlIGRpc3BsYXlpbmcuIEl0IGlzIHB1bGxlZCBmcm9tIHRoZSBtZXNzYWdlIGlkIGZyb20gdGhlIHR1cm4gdGhhdCBpbmNsdWRlcyB0aGUgc2VhcmNoIHJlc3VsdHNcblxuZXhwb3J0IGNvbnN0IHNldFNlYXJjaFBhcmFtcyA9IChxdWVyeTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzXCIsIFwidHJ1ZVwiKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc3FcIiwgcXVlcnkpO1xuICB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUoe30sIFwiXCIsIHVybCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoUGFyYW1zQXRvbSA9IGF0b20oKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICByZXR1cm4ge1xuICAgIGVzOiBwYXJhbXMuZ2V0KFwiZXNcIiksXG4gICAgZXNxOiBwYXJhbXMuZ2V0KFwiZXNxXCIpLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBpbml0aWF0ZUNoYXRTZWFyY2hBdG9tID0gYXRvbShudWxsLCAoXywgc2V0LCBxdWVyeTogc3RyaW5nKSA9PiB7XG4gIHNldChjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSwgdHJ1ZSk7XG4gIC8vIFVwZGF0ZSBVUkwgYW5kIG1hbnVhbGx5IHRyaWdnZXIgc3RhdGUgY2hhbmdlIChzaW5jZSBwdXNoU3RhdGUgZG9lc24ndCB0cmlnZ2VyIHBvcHN0YXRlKVxuICBjb25zdCB1cmwgPSBuZXcgVVJMKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc1wiLCBcInRydWVcIik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNxXCIsIHF1ZXJ5KTtcbiAgd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LCBcIlwiLCB1cmwpO1xuXG4gIC8vIE1hbnVhbGx5IHRyaWdnZXIgcGFnZSB2YXJpYW50IHJlLWV2YWx1YXRpb24gYnkgZGlzcGF0Y2hpbmcgYSBwb3BzdGF0ZSBldmVudFxuICAvLyBUaGlzIGVuc3VyZXMgdGhlIHBhZ2UgdmFyaWFudCBzeXN0ZW0gZGV0ZWN0cyB0aGUgVVJMIGNoYW5nZSBhbmQgbW91bnRzIHNlYXJjaCByZXN1bHRzXG4gIHdpbmRvdy5kaXNwYXRjaEV2ZW50KG5ldyBQb3BTdGF0ZUV2ZW50KFwicG9wc3RhdGVcIiwgeyBzdGF0ZToge30gfSkpO1xuXG4gIHNldChjaGF0U2VhcmNoUGFyYW1zQXRvbSwgeyBpZDogbnVsbCwgcXVlcnkgfSk7XG4gIHNldChoYW5kbGVTZWFyY2hBdG9tLCB7XG4gICAgaWQ6IHV1aWQoKSxcbiAgICByb2xlOiBNZXNzYWdlUm9sZS5Vc2VyLFxuICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlNlYXJjaCxcbiAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICBtZXRhZGF0YToge1xuICAgICAgc2VhcmNoVGVybTogcXVlcnksXG4gICAgICAvLyBFbmFibGluZyB0aGlzIHdpbGwgZW5hYmxlIHRoZSBuZXcgYmFja2VuZCBzZWFyY2hcbiAgICAgIHNlbGVjdGVkRmlsdGVyczogW10sXG4gICAgfSxcbiAgfSk7XG59KTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tID0gYXRvbShcbiAgbnVsbCxcbiAgKGdldCwgc2V0LCBtZXNzYWdlOiBNZXNzYWdlIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKCFtZXNzYWdlIHx8IG1lc3NhZ2UudHlwZSAhPT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcHJvZHVjdENvdW50LCBnZW5lcmF0ZWRRdWVyeSB9ID0gbWVzc2FnZS5tZXRhZGF0YTtcbiAgICBpZiAocHJvZHVjdENvdW50ICE9PSAwKSB7XG4gICAgICAvLyBDbGVhciB0aGUgZmlsdGVyIG9wdGlvbnMgd2hlbiB3ZSBnZXQgbmV3IHByb2R1Y3RzXG4gICAgICBzZXQoc2VsZWN0ZWRGaWx0ZXJPcHRpb25zQXRvbSwgW10pO1xuICAgICAgLy8gVE9ETzogU2hvdWxkIHdlIHN0aWxsIGRvIGFueSBvZiB0aGVzZSB0aGluZ3M/XG4gICAgICBzZXQoY2hhdFNlYXJjaFN0YXRlQXRvbSwgXCJwcm9kdWN0LXBhZ2VcIik7XG4gICAgICBjb25zdCBjdXJyZW50U2VhcmNoUGFyYW1zID0gZ2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tKTtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJlc1wiLCBcInRydWVcIik7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzcVwiLCBnZW5lcmF0ZWRRdWVyeSk7XG4gICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzaVwiLCBtZXNzYWdlLmlkKTtcbiAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgdXJsKTtcbiAgICAgIGlmIChjdXJyZW50U2VhcmNoUGFyYW1zLmlkID09PSBudWxsKSB7XG4gICAgICAgIC8vIElmIHRoZSBpZCBpcyBudWxsLCB3ZSBuZWVkIHRvIHJlcGxhY2UgdGhlIHN0YXRlXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSWYgdGhlIHF1ZXJ5IGlzIGRpZmZlcmVudCwgd2UgbmVlZCB0byBwdXNoIGEgbmV3IHN0YXRlXG4gICAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBcIlwiLCB1cmwpO1xuICAgICAgfVxuICAgICAgc2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tLCB7IGlkOiBtZXNzYWdlLmlkLCBxdWVyeTogZ2VuZXJhdGVkUXVlcnkgfSk7XG4gICAgfVxuICB9XG4pO1xuXG5leHBvcnQgY29uc3Qgc2V0Q2hhdFNlYXJjaFBhcmFtc0F0b20gPSBhdG9tKG51bGwsIChfLCBzZXQsIHF1ZXJ5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTCh3aW5kb3cubG9jYXRpb24uaHJlZik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFwiZXNcIiwgXCJ0cnVlXCIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldChcImVzcVwiLCBxdWVyeSk7XG4gIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh7fSwgXCJcIiwgdXJsKTtcbiAgc2V0KGNoYXRTZWFyY2hQYXJhbXNBdG9tLCB7IGlkOiBudWxsLCBxdWVyeSB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBLE1BQWEsMkJBQTJCLGdCQUF3QjtDQUM5RCxNQUFNLFFBQVE7RUFBQztFQUFRO0VBQU87RUFBTTtFQUFLO0VBQUs7RUFBSztFQUFNO0VBQU87RUFBUTtFQUFRO0FBZWhGLFFBYnVCLFlBQ3BCLGFBQWEsQ0FDYixNQUFNLElBQUksQ0FDVixLQUFLLFNBQVM7QUFDYixNQUFJLE1BQU0sU0FBUyxLQUFLLENBQ3RCLFFBQU8sS0FBSyxhQUFhO0FBRTNCLFNBQU8sS0FBSyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEdBQUcsS0FBSyxNQUFNLEVBQUU7R0FDbkQsQ0FFa0MsS0FBSyxJQUFJLENBR3pCLFFBQVEsV0FBVyxTQUFTOzs7OztBQ1ZwRCxNQUFNLGtCQUFrQixPQUFlLGVBQXVCO0FBRTVELFFBRGUsS0FBSyxNQUFNLFFBQVEsV0FBVyxHQUM3Qjs7QUFHbEIsTUFBTSxpQkFBaUIsVUFB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
|