@envive-ai/react-hooks 0.3.3 → 0.3.4
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/_virtual/rolldown_runtime.cjs +2 -0
- package/dist/_virtual/rolldown_runtime.js +29 -0
- package/dist/application/commerce-api.cjs +11 -3
- package/dist/application/commerce-api.js +11 -3
- package/dist/application/models/api/userEvent.d.cts +4 -2
- package/dist/application/models/api/userEvent.d.ts +4 -2
- package/dist/application/models/chatElementDisplayLocationV3.cjs +18 -0
- package/dist/application/models/chatElementDisplayLocationV3.d.cts +15 -0
- package/dist/application/models/chatElementDisplayLocationV3.d.ts +15 -0
- package/dist/application/models/chatElementDisplayLocationV3.js +17 -0
- package/dist/application/models/colorsConfigV3.cjs +26 -0
- package/dist/application/models/colorsConfigV3.d.cts +22 -0
- package/dist/application/models/colorsConfigV3.d.ts +22 -0
- package/dist/application/models/colorsConfigV3.js +24 -0
- package/dist/application/models/featureGates.cjs +2 -1
- package/dist/application/models/featureGates.d.cts +2 -1
- package/dist/application/models/featureGates.d.ts +2 -1
- package/dist/application/models/featureGates.js +2 -1
- package/dist/application/models/frontendConfig.d.cts +4 -2
- package/dist/application/models/frontendConfig.d.ts +4 -2
- package/dist/application/models/frontendConfigV3.d.cts +14 -0
- package/dist/application/models/frontendConfigV3.d.ts +14 -0
- package/dist/application/models/index.cjs +3 -0
- package/dist/application/models/index.d.cts +4 -3
- package/dist/application/models/index.d.ts +4 -3
- package/dist/application/models/index.js +3 -2
- package/dist/application/models/utils/snakeToCamelTransformer.cjs +2 -1
- package/dist/application/models/utils/snakeToCamelTransformer.d.cts +7 -2
- package/dist/application/models/utils/snakeToCamelTransformer.d.ts +7 -2
- package/dist/application/models/utils/snakeToCamelTransformer.js +2 -2
- package/dist/application/utils/analyticsUtils.cjs +5 -4
- package/dist/application/utils/analyticsUtils.d.cts +1 -1
- package/dist/application/utils/analyticsUtils.d.ts +1 -1
- package/dist/application/utils/analyticsUtils.js +3 -2
- package/dist/application/utils/elementObserver.cjs +1 -1
- package/dist/application/utils/elementObserver.js +1 -1
- package/dist/application/utils/index.d.cts +1 -1
- package/dist/application/utils/index.d.ts +1 -1
- package/dist/application/utils/widgetTextFromApiWidgetTextResponse.cjs +14 -0
- package/dist/application/utils/widgetTextFromApiWidgetTextResponse.js +13 -0
- package/dist/application/utils/widgetTextRequestToApiRequest.cjs +30 -0
- package/dist/application/utils/widgetTextRequestToApiRequest.js +29 -0
- package/dist/atoms/amplitude/amplitudeTrackEventAtom.cjs +1 -1
- package/dist/atoms/amplitude/amplitudeTrackEventAtom.js +1 -1
- package/dist/atoms/app/index.cjs +4 -3
- package/dist/atoms/app/index.d.cts +3 -3
- package/dist/atoms/app/index.d.ts +9 -9
- package/dist/atoms/app/index.js +4 -5
- package/dist/atoms/app/variant.cjs +5 -1
- package/dist/atoms/app/variant.d.cts +11 -4
- package/dist/atoms/app/variant.d.ts +11 -4
- package/dist/atoms/app/variant.js +4 -2
- package/dist/atoms/chat/chatState.cjs +9 -4
- package/dist/atoms/chat/chatState.d.cts +25 -18
- package/dist/atoms/chat/chatState.d.ts +25 -18
- package/dist/atoms/chat/chatState.js +6 -3
- package/dist/atoms/chat/form.cjs +4 -4
- package/dist/atoms/chat/form.d.cts +2 -2
- package/dist/atoms/chat/form.d.ts +2 -2
- package/dist/atoms/chat/index.cjs +32 -30
- package/dist/atoms/chat/index.d.cts +4 -4
- package/dist/atoms/chat/index.d.ts +5 -5
- package/dist/atoms/chat/index.js +2 -2
- package/dist/atoms/chat/lastMessage.cjs +4 -4
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
- package/dist/atoms/chat/replies.cjs +9 -8
- package/dist/atoms/chat/replies.d.cts +3 -3
- package/dist/atoms/chat/replies.d.ts +3 -3
- package/dist/atoms/chat/replies.js +3 -2
- package/dist/atoms/chat/suggestions.cjs +6 -6
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/envive/enviveConfig.cjs +5 -2
- package/dist/atoms/envive/enviveConfig.js +5 -2
- package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
- package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
- package/dist/atoms/org/customerService.d.cts +6 -6
- package/dist/atoms/org/customerService.d.ts +6 -6
- package/dist/atoms/org/graphqlConfig.cjs +1 -3
- package/dist/atoms/org/graphqlConfig.d.cts +6 -9
- package/dist/atoms/org/graphqlConfig.d.ts +6 -9
- package/dist/atoms/org/graphqlConfig.js +2 -3
- package/dist/atoms/org/index.cjs +2 -3
- package/dist/atoms/org/index.d.cts +2 -2
- package/dist/atoms/org/index.d.ts +2 -2
- package/dist/atoms/org/index.js +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
- package/dist/atoms/search/chatSearch.cjs +7 -7
- package/dist/atoms/search/chatSearch.d.cts +20 -18
- package/dist/atoms/search/chatSearch.d.ts +20 -18
- package/dist/atoms/search/searchAPI.cjs +1 -1
- package/dist/atoms/search/searchAPI.d.cts +15 -14
- package/dist/atoms/search/searchAPI.d.ts +15 -14
- package/dist/atoms/search/searchAPI.js +1 -1
- package/dist/atoms/search/utils.d.cts +1 -1
- package/dist/atoms/widget/chatPreviewLoading.cjs +23 -0
- package/dist/atoms/widget/chatPreviewLoading.d.cts +26 -0
- package/dist/atoms/widget/chatPreviewLoading.d.ts +26 -0
- package/dist/atoms/widget/chatPreviewLoading.js +22 -0
- package/dist/atoms/widget/index.cjs +3 -0
- package/dist/atoms/widget/index.d.cts +2 -0
- package/dist/atoms/widget/index.d.ts +2 -0
- package/dist/atoms/widget/index.js +3 -0
- package/dist/contexts/amplitudeContext/amplitudeContext.cjs +40 -227
- package/dist/contexts/amplitudeContext/amplitudeContext.d.cts +4 -39
- package/dist/contexts/amplitudeContext/amplitudeContext.d.ts +4 -39
- package/dist/contexts/amplitudeContext/amplitudeContext.js +44 -230
- package/dist/contexts/amplitudeContext/index.cjs +2 -1
- package/dist/contexts/amplitudeContext/index.d.cts +2 -1
- package/dist/contexts/amplitudeContext/index.d.ts +2 -1
- package/dist/contexts/amplitudeContext/index.js +2 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +3 -2
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +2 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +2 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.js +3 -2
- package/dist/contexts/enviveContext/enviveContext.cjs +67 -16
- package/dist/contexts/enviveContext/enviveContext.d.cts +9 -1
- package/dist/contexts/enviveContext/enviveContext.d.ts +9 -1
- package/dist/contexts/enviveContext/enviveContext.js +69 -18
- package/dist/contexts/enviveCssContext/enviveCssContext.cjs +96 -24
- package/dist/contexts/enviveCssContext/enviveCssContext.js +96 -24
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +5 -7
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +5 -7
- package/dist/contexts/graphqlContext/graphqlContext.cjs +69 -7
- package/dist/contexts/graphqlContext/graphqlContext.d.cts +17 -5
- package/dist/contexts/graphqlContext/graphqlContext.d.ts +17 -5
- package/dist/contexts/graphqlContext/graphqlContext.js +69 -7
- package/dist/contexts/graphqlContext/index.d.cts +2 -2
- package/dist/contexts/graphqlContext/index.d.ts +2 -2
- package/dist/contexts/graphqlContext/mockV3Config.cjs +208 -0
- package/dist/contexts/graphqlContext/mockV3Config.js +207 -0
- package/dist/contexts/hardcopyContext/hardcopyContext.cjs +119 -12
- package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +3 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +3 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.js +120 -13
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +7 -8
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +8 -9
- package/dist/contexts/pageContext/mapping.cjs +5 -1
- package/dist/contexts/pageContext/mapping.d.cts +1 -1
- package/dist/contexts/pageContext/mapping.d.ts +1 -1
- package/dist/contexts/pageContext/mapping.js +5 -1
- package/dist/contexts/pageContext/pageContext.cjs +29 -9
- package/dist/contexts/pageContext/pageContext.d.cts +5 -2
- package/dist/contexts/pageContext/pageContext.d.ts +5 -2
- package/dist/contexts/pageContext/pageContext.js +30 -10
- package/dist/contexts/pageContext/types.d.cts +5 -1
- package/dist/contexts/pageContext/types.d.ts +5 -1
- package/dist/contexts/salesAgentContext/chatAPI.cjs +6 -3
- package/dist/contexts/salesAgentContext/chatAPI.js +6 -3
- package/dist/contexts/salesAgentContext/salesAgentContext.cjs +65 -25
- package/dist/contexts/salesAgentContext/salesAgentContext.js +64 -24
- package/dist/contexts/salesAgentContext/salesAgentService.cjs +43 -7
- package/dist/contexts/salesAgentContext/salesAgentService.js +42 -6
- package/dist/contexts/salesAgentContext/statusCodeError.cjs +14 -0
- package/dist/contexts/salesAgentContext/statusCodeError.js +13 -0
- package/dist/contexts/searchContext/searchContext.cjs +1 -1
- package/dist/contexts/searchContext/searchContext.js +1 -1
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
- package/dist/contexts/types.cjs +2 -13
- package/dist/contexts/types.d.cts +12 -16
- package/dist/contexts/types.d.ts +12 -16
- package/dist/contexts/types.js +3 -13
- package/dist/contexts/typesV3.cjs +125 -0
- package/dist/contexts/typesV3.d.cts +246 -0
- package/dist/contexts/typesV3.d.ts +246 -0
- package/dist/contexts/typesV3.js +113 -0
- package/dist/contexts/uiConfigContext/index.cjs +4 -0
- package/dist/contexts/uiConfigContext/index.d.cts +2 -0
- package/dist/contexts/uiConfigContext/index.d.ts +2 -0
- package/dist/contexts/uiConfigContext/index.js +3 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.cjs +44 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.d.cts +15 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.d.ts +15 -0
- package/dist/contexts/uiConfigContext/uiConfigContext.js +42 -0
- package/dist/contexts/userIdentityContext/userIdentityContext.cjs +1 -1
- package/dist/contexts/userIdentityContext/userIdentityContext.js +1 -1
- package/dist/contexts/widgetConfigContext/index.cjs +4 -0
- package/dist/contexts/widgetConfigContext/index.d.cts +2 -0
- package/dist/contexts/widgetConfigContext/index.d.ts +2 -0
- package/dist/contexts/widgetConfigContext/index.js +3 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +67 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.d.cts +19 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.d.ts +19 -0
- package/dist/contexts/widgetConfigContext/widgetConfigContext.js +65 -0
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.cts +1 -1
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.ts +1 -1
- package/dist/hooks/AppDetails/useAppDetails.cjs +2 -4
- package/dist/hooks/AppDetails/useAppDetails.js +3 -5
- package/dist/hooks/ChatToggle/useChatToggle.cjs +6 -5
- package/dist/hooks/ChatToggle/useChatToggle.js +3 -2
- package/dist/hooks/ChatToggleAnalytics/useChatToggleAnalytics.cjs +3 -3
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +3 -3
- package/dist/hooks/GraphQLConfig/index.cjs +1 -1
- package/dist/hooks/GraphQLConfig/index.d.cts +2 -2
- package/dist/hooks/GraphQLConfig/index.d.ts +2 -2
- package/dist/hooks/GraphQLConfig/index.js +2 -2
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.cjs +27 -24
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.cts +5 -4
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.d.ts +5 -4
- package/dist/hooks/GraphQLConfig/useGraphQLConfig.js +27 -24
- package/dist/hooks/Search/useSearch.cjs +10 -9
- package/dist/hooks/Search/useSearch.js +6 -5
- package/dist/hooks/Search/useSearchInput.cjs +4 -4
- package/dist/hooks/Search/useSearchInput.js +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +5 -4
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +3 -2
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.cjs +3 -2
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.js +3 -2
- package/dist/hooks/utils.d.cts +1 -1
- package/dist/node_modules/classnames/index.cjs +52 -0
- package/dist/node_modules/classnames/index.js +49 -0
- package/dist/packages/components-v3/dist/Container/Container.cjs +11 -0
- package/dist/packages/components-v3/dist/Container/Container.js +12 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetCenterContentProperties.js +3 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Container/hooks/useGetFluidProperties.js +3 -0
- package/dist/packages/components-v3/dist/Container/index.cjs +1 -0
- package/dist/packages/components-v3/dist/Container/index.js +3 -0
- package/dist/packages/components-v3/dist/Image/Image.cjs +16 -0
- package/dist/packages/components-v3/dist/Image/Image.js +17 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAccessibilityProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetAspectRatioProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetObjectFitProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetRoundedProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetSkeletonProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useGetWidthProperties.js +3 -0
- package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.cjs +1 -0
- package/dist/packages/components-v3/dist/Image/hooks/useHandleImageLoading.js +3 -0
- package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.cjs +2 -0
- package/dist/packages/components-v3/dist/ImageGallery/ImageGallery.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.cjs +2 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/ImageItem.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/Layout.cjs +15 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/Layout.js +16 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.cjs +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/NormalLayout.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.cjs +1 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/OverlappedLayout.js +3 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/index.cjs +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/components/index.js +6 -0
- package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/ImageGallery/hooks/useGetContainerProperties.js +3 -0
- package/dist/packages/components-v3/dist/ImageGallery/index.cjs +2 -0
- package/dist/packages/components-v3/dist/ImageGallery/index.js +4 -0
- package/dist/packages/components-v3/dist/ImageGallery/types/types.cjs +13 -0
- package/dist/packages/components-v3/dist/ImageGallery/types/types.js +12 -0
- package/dist/packages/components-v3/dist/PromptButton/PromptButton.cjs +12 -0
- package/dist/packages/components-v3/dist/PromptButton/PromptButton.js +13 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Icon.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Icon.js +3 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Label.cjs +3 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Label.js +5 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Layout.cjs +12 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Layout.js +13 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Loading.cjs +9 -0
- package/dist/packages/components-v3/dist/PromptButton/components/Loading.js +10 -0
- package/dist/packages/components-v3/dist/PromptButton/components/index.cjs +4 -0
- package/dist/packages/components-v3/dist/PromptButton/components/index.js +6 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetBoldTextProperties.js +3 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.cjs +8 -0
- package/dist/packages/components-v3/dist/PromptButton/hooks/useGetLayoutBaseProperties.js +9 -0
- package/dist/packages/components-v3/dist/PromptButton/index.cjs +2 -0
- package/dist/packages/components-v3/dist/PromptButton/index.js +4 -0
- package/dist/packages/components-v3/dist/PromptButton/types/index.cjs +13 -0
- package/dist/packages/components-v3/dist/PromptButton/types/index.js +12 -0
- package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.cjs +12 -0
- package/dist/packages/components-v3/dist/PromptCarousel/PromptCarousel.js +14 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.cjs +9 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/BlockScrollContainer.js +10 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.cjs +11 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/ButtonContainerRow.js +12 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.cjs +4 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithBlockScroll.js +6 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.cjs +4 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/CarouselContentWithRowScroll.js +6 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/index.cjs +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/components/index.js +5 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.cjs +5 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/index.js +7 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useButtonScrollPosition.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.cjs +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselAnimation.js +5 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselButtons.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useCarouselRefs.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.cjs +1 -0
- package/dist/packages/components-v3/dist/PromptCarousel/hooks/useHorizontalScrollAnimation.js +3 -0
- package/dist/packages/components-v3/dist/PromptCarousel/index.cjs +2 -0
- package/dist/packages/components-v3/dist/PromptCarousel/index.js +4 -0
- package/dist/packages/components-v3/dist/PromptCarousel/types/types.cjs +19 -0
- package/dist/packages/components-v3/dist/PromptCarousel/types/types.js +17 -0
- package/dist/packages/components-v3/dist/Stack/Stack.cjs +36 -0
- package/dist/packages/components-v3/dist/Stack/Stack.js +36 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.cjs +27 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useFormatStackChildren.js +26 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.cjs +20 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetAlignProperties.js +19 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.cjs +19 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetDirectionProperties.js +18 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.cjs +16 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetGapProperties.js +15 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.cjs +21 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetJustifyProperties.js +20 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.cjs +38 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetStyleProperties.js +38 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.cjs +13 -0
- package/dist/packages/components-v3/dist/Stack/hooks/useGetWrapProperties.js +12 -0
- package/dist/packages/components-v3/dist/Stack/index.cjs +1 -0
- package/dist/packages/components-v3/dist/Stack/index.js +3 -0
- package/dist/packages/components-v3/dist/Stack/utils/constants.cjs +42 -0
- package/dist/packages/components-v3/dist/Stack/utils/constants.js +41 -0
- package/dist/packages/components-v3/dist/Typography/Typography.cjs +15 -0
- package/dist/packages/components-v3/dist/Typography/Typography.js +16 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAccessibilityAttributes.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetAlignProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetColorProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNoWrapProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetNumberOfLinesProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/hooks/useGetVariantProperties.js +3 -0
- package/dist/packages/components-v3/dist/Typography/index.cjs +1 -0
- package/dist/packages/components-v3/dist/Typography/index.js +3 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.cjs +12 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/WidgetWrapper.js +13 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.cjs +1 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/hooks/useGetWrapperProperties.js +3 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/index.cjs +2 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/index.js +4 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/types/types.cjs +13 -0
- package/dist/packages/components-v3/dist/WidgetWrapper/types/types.js +12 -0
- package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.cjs +25 -0
- package/dist/packages/components-v3/dist/packages/components-v3/tokens/breakpoints/breakpoints.js +23 -0
- package/dist/packages/components-v3/dist/utils/useCheckIsMobile.cjs +1 -0
- package/dist/packages/components-v3/dist/utils/useCheckIsMobile.js +3 -0
- package/dist/packages/components-v3/dist/utils/useResponsiveValue.cjs +57 -0
- package/dist/packages/components-v3/dist/utils/useResponsiveValue.js +56 -0
- package/dist/packages/icons/dist/FourPointStar.cjs +8 -0
- package/dist/packages/icons/dist/FourPointStar.js +9 -0
- package/dist/packages/icons/dist/_virtual/rolldown_runtime.cjs +28 -0
- package/dist/packages/icons/dist/_virtual/rolldown_runtime.js +26 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.cjs +697 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.development.js +697 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.cjs +44 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js +44 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.development.cjs +1529 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.development.js +1529 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.cjs +330 -0
- package/dist/packages/icons/dist/node_modules/react/cjs/react.production.min.js +330 -0
- package/dist/packages/icons/dist/node_modules/react/index.cjs +14 -0
- package/dist/packages/icons/dist/node_modules/react/index.js +14 -0
- package/dist/packages/icons/dist/node_modules/react/jsx-runtime.cjs +14 -0
- package/dist/packages/icons/dist/node_modules/react/jsx-runtime.js +14 -0
- package/dist/services/amplitudeService/amplitudeService.cjs +204 -0
- package/dist/services/amplitudeService/amplitudeService.d.cts +75 -0
- package/dist/services/amplitudeService/amplitudeService.d.ts +75 -0
- package/dist/services/amplitudeService/amplitudeService.js +202 -0
- package/dist/services/amplitudeService/index.cjs +4 -0
- package/dist/services/amplitudeService/index.d.cts +2 -0
- package/dist/services/amplitudeService/index.d.ts +2 -0
- package/dist/services/amplitudeService/index.js +3 -0
- package/dist/services/enviveConfigService/enviveConfigService.cjs +36 -0
- package/dist/services/enviveConfigService/enviveConfigService.d.cts +43 -0
- package/dist/services/enviveConfigService/enviveConfigService.d.ts +43 -0
- package/dist/services/enviveConfigService/enviveConfigService.js +36 -0
- package/dist/services/enviveConfigService/index.cjs +3 -0
- package/dist/services/enviveConfigService/index.d.cts +2 -0
- package/dist/services/enviveConfigService/index.d.ts +2 -0
- package/dist/services/enviveConfigService/index.js +3 -0
- package/dist/types/enviveConfig.d.cts +29 -0
- package/dist/types/enviveConfig.d.ts +29 -0
- package/dist/types/index.d.cts +2 -1
- package/dist/types/index.d.ts +2 -1
- package/package.json +36 -4
- package/src/application/commerce-api.ts +14 -1
- package/src/application/models/api/userEvent.ts +3 -1
- package/src/application/models/api/widgetText.ts +9 -0
- package/src/application/models/api/widgetTextRequest.ts +10 -0
- package/src/application/models/chatElementDisplayLocationV3.ts +12 -0
- package/src/application/models/colorsConfigV3.ts +26 -0
- package/src/application/models/featureGates.ts +1 -0
- package/src/application/models/frontendConfig.ts +5 -0
- package/src/application/models/frontendConfigV3.ts +10 -0
- package/src/application/models/index.ts +1 -0
- package/src/application/models/utils/snakeToCamelTransformer.ts +1 -1
- package/src/application/utils/elementObserver.ts +2 -2
- package/src/application/utils/widgetTextFromApiWidgetTextResponse.ts +30 -0
- package/src/application/utils/widgetTextRequestToApiRequest.ts +45 -0
- package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +1 -8
- package/src/atoms/app/index.ts +3 -3
- package/src/atoms/app/variant.ts +5 -0
- package/src/atoms/chat/chatState.ts +10 -2
- package/src/atoms/envive/enviveConfig.ts +5 -0
- package/src/atoms/org/graphqlConfig.ts +0 -1
- package/src/atoms/widget/chatPreviewLoading.ts +36 -0
- package/src/atoms/widget/index.ts +1 -0
- package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +197 -187
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +56 -334
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -0
- package/src/contexts/enviveContext/enviveContext.tsx +101 -27
- package/src/contexts/enviveCssContext/enviveCssContext.tsx +121 -22
- package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +12 -11
- package/src/contexts/graphqlContext/graphqlContext.tsx +131 -13
- package/src/contexts/graphqlContext/mockV3Config.ts +209 -0
- package/src/contexts/hardcopyContext/hardcopyContext.tsx +136 -14
- package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +6 -6
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +5 -13
- package/src/contexts/pageContext/__tests__/pageContext.test.tsx +24 -8
- package/src/contexts/pageContext/mapping.ts +4 -0
- package/src/contexts/pageContext/pageContext.tsx +41 -12
- package/src/contexts/pageContext/types.ts +4 -0
- package/src/contexts/salesAgentContext/chatAPI.ts +1 -0
- package/src/contexts/salesAgentContext/salesAgentContext.tsx +94 -42
- package/src/contexts/salesAgentContext/salesAgentService.ts +78 -3
- package/src/contexts/salesAgentContext/statusCodeError.ts +10 -0
- package/src/contexts/searchContext/__tests__/searchContext.test.tsx +8 -2
- package/src/contexts/types.ts +15 -19
- package/src/contexts/typesV3.ts +316 -0
- package/src/contexts/uiConfigContext/__tests__/uiConfigContext.test.tsx +321 -0
- package/src/contexts/uiConfigContext/index.ts +1 -0
- package/src/contexts/uiConfigContext/uiConfigContext.tsx +44 -0
- package/src/contexts/widgetConfigContext/__tests__/widgetConfigContext.test.tsx +512 -0
- package/src/contexts/widgetConfigContext/index.ts +1 -0
- package/src/contexts/widgetConfigContext/widgetConfigContext.tsx +84 -0
- package/src/hooks/AppDetails/useAppDetails.ts +2 -2
- package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +22 -21
- package/src/hooks/Search/__tests__/useSearch.test.tsx +15 -6
- package/src/hooks/Search/useSearch.tsx +6 -5
- package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +558 -0
- package/src/services/amplitudeService/amplitudeService.ts +324 -0
- package/src/services/amplitudeService/index.ts +1 -0
- package/src/services/enviveConfigService/enviveConfigService.ts +72 -0
- package/src/services/enviveConfigService/index.ts +1 -0
- package/src/types/enviveConfig.ts +27 -0
- package/src/types/index.ts +1 -0
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_event_types = require('../../events/event-types.cjs');
|
|
3
|
+
const require_events_index = require('../../events/index.cjs');
|
|
4
|
+
const require_logger = require('../../application/logging/logger.cjs');
|
|
5
|
+
const require_localStorageContext = require('../../contexts/localStorageContext/localStorageContext.cjs');
|
|
6
|
+
require('../../contexts/localStorageContext/index.cjs');
|
|
7
|
+
let __amplitude_analytics_browser = require("@amplitude/analytics-browser");
|
|
8
|
+
|
|
9
|
+
//#region src/services/amplitudeService/amplitudeService.ts
|
|
10
|
+
let SpiffyMetricsEventName = /* @__PURE__ */ function(SpiffyMetricsEventName$1) {
|
|
11
|
+
SpiffyMetricsEventName$1["BundleLoaded"] = "Bundle Loaded";
|
|
12
|
+
SpiffyMetricsEventName$1["ChatLiveAgentBtnClick"] = "Chat Live Agent Btn Click";
|
|
13
|
+
SpiffyMetricsEventName$1["ChatFloatingButtonVisible"] = "Chat Floating Button Visible";
|
|
14
|
+
SpiffyMetricsEventName$1["ChatComponentVisible"] = "Chat Component Visible";
|
|
15
|
+
SpiffyMetricsEventName$1["ChatComponentExpanded"] = "Chat Component Expanded";
|
|
16
|
+
SpiffyMetricsEventName$1["ChatComponentCollapsed"] = "Chat Component Collapsed";
|
|
17
|
+
SpiffyMetricsEventName$1["ChatUserMessageInput"] = "Chat User Message Input";
|
|
18
|
+
SpiffyMetricsEventName$1["ChatSuggestionClicked"] = "Chat Suggestion Clicked";
|
|
19
|
+
SpiffyMetricsEventName$1["ChatAssistantResponse"] = "Chat Assistant Response";
|
|
20
|
+
SpiffyMetricsEventName$1["ProductCardClicked"] = "Product Card Clicked";
|
|
21
|
+
SpiffyMetricsEventName$1["ProductReviewCardClicked"] = "Product Review Card Clicked";
|
|
22
|
+
SpiffyMetricsEventName$1["AddToCartClicked"] = "Add To Cart Clicked";
|
|
23
|
+
SpiffyMetricsEventName$1["PromptCardClicked"] = "Prompt Card Clicked";
|
|
24
|
+
SpiffyMetricsEventName$1["SupportedEvent"] = "Supported Event";
|
|
25
|
+
SpiffyMetricsEventName$1["SearchBackToResponseClicked"] = "Search Back to Response Clicked";
|
|
26
|
+
SpiffyMetricsEventName$1["PerformanceMetrics"] = "Performance Metrics";
|
|
27
|
+
SpiffyMetricsEventName$1["SearchBarClicked"] = "Search Bar Clicked";
|
|
28
|
+
SpiffyMetricsEventName$1["OrderLookupStarted"] = "Order Lookup Started";
|
|
29
|
+
SpiffyMetricsEventName$1["OrderLookupFormSubmitted"] = "Order Lookup Form Submitted";
|
|
30
|
+
SpiffyMetricsEventName$1["SearchComponentVisible"] = "Search Component Visible";
|
|
31
|
+
SpiffyMetricsEventName$1["SearchZeroStateSuggestionClicked"] = "Search Zero State Suggestion Clicked";
|
|
32
|
+
SpiffyMetricsEventName$1["SearchInputStarted"] = "Search Input Started";
|
|
33
|
+
SpiffyMetricsEventName$1["SearchQuerySubmitted"] = "Search Query Submitted";
|
|
34
|
+
SpiffyMetricsEventName$1["SearchResultsViewed"] = "Search Results Viewed";
|
|
35
|
+
SpiffyMetricsEventName$1["SearchTimeToFirstClick"] = "Search Time to First Click";
|
|
36
|
+
SpiffyMetricsEventName$1["SearchZeroResultsRate"] = "Search Zero Results Rate";
|
|
37
|
+
SpiffyMetricsEventName$1["SearchFilterClicked"] = "Search Filter Clicked";
|
|
38
|
+
SpiffyMetricsEventName$1["SearchSortClicked"] = "Search Sort Clicked";
|
|
39
|
+
return SpiffyMetricsEventName$1;
|
|
40
|
+
}({});
|
|
41
|
+
var AmplitudeService = class {
|
|
42
|
+
constructor(config) {
|
|
43
|
+
this.supplementalDefaultProps = {};
|
|
44
|
+
this.config = config;
|
|
45
|
+
this.initialize();
|
|
46
|
+
}
|
|
47
|
+
get isReady() {
|
|
48
|
+
return Boolean(this.config.userId && this.config.featureFlagService && this.config.amplitudeApiKey && this.amplitudeClient);
|
|
49
|
+
}
|
|
50
|
+
getLocalStorageItem(key) {
|
|
51
|
+
if (this.config.getLocalStorageItem) return this.config.getLocalStorageItem(key);
|
|
52
|
+
if (typeof window !== "undefined" && window.localStorage) return window.localStorage.getItem(key);
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
getDefaultTrackingProps() {
|
|
56
|
+
const featureGates = Object.entries(this.config.featureFlagService.getFeatureFlags());
|
|
57
|
+
const gatesProps = featureGates.length > 0 ? featureGates.reduce((acc, [name, value]) => {
|
|
58
|
+
if (name && value != null) return {
|
|
59
|
+
...acc,
|
|
60
|
+
[`feature_gate.${name}`]: value
|
|
61
|
+
};
|
|
62
|
+
return acc;
|
|
63
|
+
}, {}) : {};
|
|
64
|
+
const experimentProps = {};
|
|
65
|
+
return {
|
|
66
|
+
...gatesProps,
|
|
67
|
+
...experimentProps,
|
|
68
|
+
...this.supplementalDefaultProps,
|
|
69
|
+
app_id: "commerce-chat-react-component",
|
|
70
|
+
chat_id: this.getLocalStorageItem(require_localStorageContext.LocalStorageKeys.ChatId),
|
|
71
|
+
env: this.config.env || "unknown",
|
|
72
|
+
app_source: this.config.contextSource,
|
|
73
|
+
"org.short_name": this.config.orgShortName,
|
|
74
|
+
"user.id": this.config.userId,
|
|
75
|
+
"cdp.user_id": null,
|
|
76
|
+
"cdp.provider": null,
|
|
77
|
+
"event.source": "web-browser",
|
|
78
|
+
"event.type": "user-activity",
|
|
79
|
+
"event.id": null,
|
|
80
|
+
"event.channel": "web",
|
|
81
|
+
"event.timestamp": null
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
eventPropsToPrefixedEventProps(eventName, eventProps) {
|
|
85
|
+
const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
|
|
86
|
+
return Object.entries(eventProps).reduce((acc, [key, value]) => {
|
|
87
|
+
acc[`${prefix}.${key}`] = value;
|
|
88
|
+
return acc;
|
|
89
|
+
}, {});
|
|
90
|
+
}
|
|
91
|
+
getEventTrackingEnrichment() {
|
|
92
|
+
if (this.internalEventTrackingEnrichment !== void 0) return this.internalEventTrackingEnrichment;
|
|
93
|
+
const enrichment = {
|
|
94
|
+
name: "page-view-tracking-enrichment",
|
|
95
|
+
type: "enrichment",
|
|
96
|
+
setup: async () => void 0,
|
|
97
|
+
execute: async (event) => {
|
|
98
|
+
let enrichedEvent;
|
|
99
|
+
if (["[Amplitude] Page Viewed", `[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`].includes(event.event_type)) {
|
|
100
|
+
const globalProperties = {};
|
|
101
|
+
if (this.config.show != null) globalProperties["globalProperties.show"] = String(this.config.show);
|
|
102
|
+
const enabledFeatures = this.config.featureFlagService.getFeatureFlags();
|
|
103
|
+
const enabledFeaturesProperties = Object.entries(enabledFeatures).reduce((acc, [key, value]) => ({
|
|
104
|
+
...acc,
|
|
105
|
+
[`enabledFeatures.${key}`]: `${value}`
|
|
106
|
+
}), {});
|
|
107
|
+
const timingProperties = { "timing.enriched_at_ms": typeof window !== "undefined" ? window.performance?.now() : void 0 };
|
|
108
|
+
enrichedEvent = {
|
|
109
|
+
...event,
|
|
110
|
+
event_properties: {
|
|
111
|
+
...event.event_properties,
|
|
112
|
+
...this.getDefaultTrackingProps(),
|
|
113
|
+
...globalProperties,
|
|
114
|
+
...enabledFeaturesProperties,
|
|
115
|
+
...timingProperties
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
} else enrichedEvent = event;
|
|
119
|
+
require_events_index.EventsDispatcher.dispatch(require_event_types.SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
|
|
120
|
+
return enrichedEvent;
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
this.internalEventTrackingEnrichment = enrichment;
|
|
124
|
+
return enrichment;
|
|
125
|
+
}
|
|
126
|
+
initialize() {
|
|
127
|
+
const isReady = Boolean(this.config.userId && this.config.featureFlagService && this.config.amplitudeApiKey);
|
|
128
|
+
if (!isReady) {
|
|
129
|
+
require_logger.default.logDebug("AmplitudeService is not ready", {
|
|
130
|
+
isReady,
|
|
131
|
+
userId: this.config.userId,
|
|
132
|
+
hasFeatureFlagService: !!this.config.featureFlagService,
|
|
133
|
+
hasAmplitudeApiKey: !!this.config.amplitudeApiKey
|
|
134
|
+
});
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (!this.amplitudeClient) {
|
|
138
|
+
const currentAmplitudeInstance = (0, __amplitude_analytics_browser.createInstance)();
|
|
139
|
+
currentAmplitudeInstance.add(this.getEventTrackingEnrichment());
|
|
140
|
+
currentAmplitudeInstance.init(this.config.amplitudeApiKey, this.config.userId, {
|
|
141
|
+
serverZone: this.config.dataResidency,
|
|
142
|
+
trackingOptions: { ipAddress: true },
|
|
143
|
+
autocapture: {
|
|
144
|
+
attribution: true,
|
|
145
|
+
pageViews: { trackHistoryChanges: "pathOnly" },
|
|
146
|
+
sessions: false,
|
|
147
|
+
formInteractions: false,
|
|
148
|
+
fileDownloads: false
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
this.amplitudeClient = currentAmplitudeInstance;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
async trackEvent({ eventName, eventProps, eventGroups, alsoSendToGoogleAnalytics = false }) {
|
|
155
|
+
require_logger.default.logDebug("Submitting event", eventName);
|
|
156
|
+
try {
|
|
157
|
+
const decoratedEventName = `[Spiffy] ${eventName}`;
|
|
158
|
+
if (!this.amplitudeClient) {
|
|
159
|
+
require_logger.default.logWarn("amplitude client undefined", void 0, { event_name: decoratedEventName });
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const eventData = JSON.stringify({
|
|
163
|
+
eventName,
|
|
164
|
+
eventProps,
|
|
165
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
166
|
+
});
|
|
167
|
+
const data = new TextEncoder().encode(eventData);
|
|
168
|
+
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
169
|
+
const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
170
|
+
require_logger.default.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
|
|
171
|
+
event_name: decoratedEventName,
|
|
172
|
+
props: eventProps
|
|
173
|
+
});
|
|
174
|
+
this.amplitudeClient.track(decoratedEventName, {
|
|
175
|
+
...this.getDefaultTrackingProps(),
|
|
176
|
+
...eventProps,
|
|
177
|
+
...eventProps ? this.eventPropsToPrefixedEventProps(eventName, eventProps) : {}
|
|
178
|
+
}, {
|
|
179
|
+
...eventGroups,
|
|
180
|
+
insert_id: currentInsertId
|
|
181
|
+
});
|
|
182
|
+
if (alsoSendToGoogleAnalytics && this.config.orgGaConfig) {
|
|
183
|
+
require_logger.default.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
|
|
184
|
+
if (typeof window !== "undefined" && window.dataLayer) window.dataLayer.push({
|
|
185
|
+
event: decoratedEventName,
|
|
186
|
+
eventProps
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
} catch (err) {
|
|
190
|
+
require_logger.default.logError("[spiffy-ai] Error tracking event", err, {
|
|
191
|
+
eventName,
|
|
192
|
+
eventProps
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
setSupplementalDefaultProps(props) {
|
|
197
|
+
this.supplementalDefaultProps = props;
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
|
|
201
|
+
//#endregion
|
|
202
|
+
exports.AmplitudeService = AmplitudeService;
|
|
203
|
+
exports.SpiffyMetricsEventName = SpiffyMetricsEventName;
|
|
204
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5janMiLCJuYW1lcyI6WyJMb2NhbFN0b3JhZ2VLZXlzIiwiZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiIsImVucmljaGVkRXZlbnQ6IEV2ZW50IiwiZ2xvYmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiIsIlNwaWZmeUV2ZW50IiwiY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2FtcGxpdHVkZVNlcnZpY2UvYW1wbGl0dWRlU2VydmljZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVJbnN0YW5jZSB9IGZyb20gJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLWJyb3dzZXInO1xuaW1wb3J0IHsgRXZlbnRzRGlzcGF0Y2hlciwgU3BpZmZ5RXZlbnQgfSBmcm9tICdzcmMvZXZlbnRzJztcbmltcG9ydCB7IExvY2FsU3RvcmFnZUtleXMgfSBmcm9tICdzcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dCc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEJyb3dzZXJDbGllbnQsXG4gIEVucmljaG1lbnRQbHVnaW4sXG4gIEV2ZW50LFxuICBTZXJ2ZXJab25lVHlwZSxcbn0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtdHlwZXMnO1xuaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCc7XG5cbmV4cG9ydCBlbnVtIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUge1xuICBCdW5kbGVMb2FkZWQgPSAnQnVuZGxlIExvYWRlZCcsXG4gIENoYXRMaXZlQWdlbnRCdG5DbGljayA9ICdDaGF0IExpdmUgQWdlbnQgQnRuIENsaWNrJyxcbiAgQ2hhdEZsb2F0aW5nQnV0dG9uVmlzaWJsZSA9ICdDaGF0IEZsb2F0aW5nIEJ1dHRvbiBWaXNpYmxlJyxcbiAgQ2hhdENvbXBvbmVudFZpc2libGUgPSAnQ2hhdCBDb21wb25lbnQgVmlzaWJsZScsXG4gIENoYXRDb21wb25lbnRFeHBhbmRlZCA9ICdDaGF0IENvbXBvbmVudCBFeHBhbmRlZCcsXG4gIENoYXRDb21wb25lbnRDb2xsYXBzZWQgPSAnQ2hhdCBDb21wb25lbnQgQ29sbGFwc2VkJyxcbiAgQ2hhdFVzZXJNZXNzYWdlSW5wdXQgPSAnQ2hhdCBVc2VyIE1lc3NhZ2UgSW5wdXQnLFxuICBDaGF0U3VnZ2VzdGlvbkNsaWNrZWQgPSAnQ2hhdCBTdWdnZXN0aW9uIENsaWNrZWQnLFxuICBDaGF0QXNzaXN0YW50UmVzcG9uc2UgPSAnQ2hhdCBBc3Npc3RhbnQgUmVzcG9uc2UnLFxuICBQcm9kdWN0Q2FyZENsaWNrZWQgPSAnUHJvZHVjdCBDYXJkIENsaWNrZWQnLFxuICBQcm9kdWN0UmV2aWV3Q2FyZENsaWNrZWQgPSAnUHJvZHVjdCBSZXZpZXcgQ2FyZCBDbGlja2VkJyxcbiAgQWRkVG9DYXJ0Q2xpY2tlZCA9ICdBZGQgVG8gQ2FydCBDbGlja2VkJyxcbiAgUHJvbXB0Q2FyZENsaWNrZWQgPSAnUHJvbXB0IENhcmQgQ2xpY2tlZCcsXG4gIFN1cHBvcnRlZEV2ZW50ID0gJ1N1cHBvcnRlZCBFdmVudCcsXG4gIFNlYXJjaEJhY2tUb1Jlc3BvbnNlQ2xpY2tlZCA9ICdTZWFyY2ggQmFjayB0byBSZXNwb25zZSBDbGlja2VkJyxcbiAgUGVyZm9ybWFuY2VNZXRyaWNzID0gJ1BlcmZvcm1hbmNlIE1ldHJpY3MnLFxuICBTZWFyY2hCYXJDbGlja2VkID0gJ1NlYXJjaCBCYXIgQ2xpY2tlZCcsXG4gIE9yZGVyTG9va3VwU3RhcnRlZCA9ICdPcmRlciBMb29rdXAgU3RhcnRlZCcsXG4gIE9yZGVyTG9va3VwRm9ybVN1Ym1pdHRlZCA9ICdPcmRlciBMb29rdXAgRm9ybSBTdWJtaXR0ZWQnLFxuICBTZWFyY2hDb21wb25lbnRWaXNpYmxlID0gJ1NlYXJjaCBDb21wb25lbnQgVmlzaWJsZScsXG4gIFNlYXJjaFplcm9TdGF0ZVN1Z2dlc3Rpb25DbGlja2VkID0gJ1NlYXJjaCBaZXJvIFN0YXRlIFN1Z2dlc3Rpb24gQ2xpY2tlZCcsIC8vIFRoaXMgaXMgdGhlIHNjcm9sbGluZyBsaXN0IG9mIHN1Z2dlc3Rpb24gYnV0dG9ucyBpbiBnbG9iYWwgc2VhcmNoXG4gIFNlYXJjaElucHV0U3RhcnRlZCA9ICdTZWFyY2ggSW5wdXQgU3RhcnRlZCcsXG4gIFNlYXJjaFF1ZXJ5U3VibWl0dGVkID0gJ1NlYXJjaCBRdWVyeSBTdWJtaXR0ZWQnLFxuICAvLyBTZWFyY2hBdXRvY29tcGxldGVWaWV3ZWQgPSAnU2VhcmNoIEF1dG9jb21wbGV0ZSBWaWV3ZWQnLCAvLyBUT0RPOiBhZGQgdGhpcyB3aGVuIGF1dG9jb21wbGV0ZSBpcyBhZGRlZFxuICAvLyBTZWFyY2hBdXRvY29tcGxldGVDbGlja2VkID0gJ1NlYXJjaCBBdXRvY29tcGxldGUgQ2xpY2tlZCcsIC8vIFRPRE86IGFkZCB0aGlzIHdoZW4gYXV0b2NvbXBsZXRlIGlzIGFkZGVkXG4gIFNlYXJjaFJlc3VsdHNWaWV3ZWQgPSAnU2VhcmNoIFJlc3VsdHMgVmlld2VkJyxcbiAgU2VhcmNoVGltZVRvRmlyc3RDbGljayA9ICdTZWFyY2ggVGltZSB0byBGaXJzdCBDbGljaycsXG4gIFNlYXJjaFplcm9SZXN1bHRzUmF0ZSA9ICdTZWFyY2ggWmVybyBSZXN1bHRzIFJhdGUnLFxuICBTZWFyY2hGaWx0ZXJDbGlja2VkID0gJ1NlYXJjaCBGaWx0ZXIgQ2xpY2tlZCcsXG4gIFNlYXJjaFNvcnRDbGlja2VkID0gJ1NlYXJjaCBTb3J0IENsaWNrZWQnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGl0dWRlU2VydmljZUNvbmZpZyB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBhbXBsaXR1ZGVBcGlLZXk6IHN0cmluZztcbiAgZGF0YVJlc2lkZW5jeTogc3RyaW5nO1xuICBlbnY6IHN0cmluZztcbiAgY29udGV4dFNvdXJjZTogc3RyaW5nO1xuICBvcmdTaG9ydE5hbWU6IHN0cmluZztcbiAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG4gIG9yZ0dhQ29uZmlnPzogdW5rbm93bjtcbiAgc2hvdz86IGJvb2xlYW47XG4gIGdldExvY2FsU3RvcmFnZUl0ZW0/OiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBjbGFzcyBBbXBsaXR1ZGVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBhbXBsaXR1ZGVDbGllbnQ6IEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luIHwgdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuXG4gIHByaXZhdGUgY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogQW1wbGl0dWRlU2VydmljZUNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgZ2V0IGlzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEJvb2xlYW4oXG4gICAgICB0aGlzLmNvbmZpZy51c2VySWQgJiZcbiAgICAgIHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSAmJlxuICAgICAgdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5ICYmXG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbFN0b3JhZ2VJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmdldExvY2FsU3RvcmFnZUl0ZW0pIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5nZXRMb2NhbFN0b3JhZ2VJdGVtKGtleSk7XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cubG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgZmVhdHVyZUdhdGVzID0gT2JqZWN0LmVudHJpZXModGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlLmdldEZlYXR1cmVGbGFncygpKTtcbiAgICBjb25zdCBnYXRlc1Byb3BzID1cbiAgICAgIGZlYXR1cmVHYXRlcy5sZW5ndGggPiAwXG4gICAgICAgID8gZmVhdHVyZUdhdGVzLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKGFjYywgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtgZmVhdHVyZV9nYXRlLiR7bmFtZX1gXTogdmFsdWUgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgfSwge30pXG4gICAgICAgIDoge307XG4gICAgY29uc3QgZXhwZXJpbWVudFByb3BzID0ge307IC8vIE5vIGRpcmVjdCBlcXVpdmFsZW50IGZvciBleHBlcmltZW50cyBpbiBFbnZpdmVDb25maWcgeWV0XG5cbiAgICBjb25zdCBvcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMgPSB7XG4gICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4udGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgICAvLyBUT0RPOiBvcmdfaWQgaXMgbm90IGRpcmVjdGx5IGF2YWlsYWJsZSBpbiBFbnZpdmVDb25maWcuIE5lZWQgdG8gZmluZCBhIG5ldyBzb3VyY2Ugb3IgZGVyaXZlIGl0LlxuICAgICAgLy8gb3JnX2lkOiBvcmdDb25maWc/Lm9yZz8ub3JnPy5pZCxcbiAgICAgIGFwcF9pZDogJ2NvbW1lcmNlLWNoYXQtcmVhY3QtY29tcG9uZW50JyxcbiAgICAgIGNoYXRfaWQ6IHRoaXMuZ2V0TG9jYWxTdG9yYWdlSXRlbShMb2NhbFN0b3JhZ2VLZXlzLkNoYXRJZCksXG4gICAgICBlbnY6IHRoaXMuY29uZmlnLmVudiB8fCAndW5rbm93bicsXG4gICAgICBhcHBfc291cmNlOiB0aGlzLmNvbmZpZy5jb250ZXh0U291cmNlLFxuICAgICAgJ29yZy5zaG9ydF9uYW1lJzogdGhpcy5jb25maWcub3JnU2hvcnROYW1lLFxuICAgICAgJ3VzZXIuaWQnOiB0aGlzLmNvbmZpZy51c2VySWQsXG4gICAgICAnY2RwLnVzZXJfaWQnOiBudWxsLFxuICAgICAgJ2NkcC5wcm92aWRlcic6IG51bGwsXG4gICAgICAnZXZlbnQuc291cmNlJzogJ3dlYi1icm93c2VyJyxcbiAgICAgICdldmVudC50eXBlJzogJ3VzZXItYWN0aXZpdHknLFxuICAgICAgJ2V2ZW50LmlkJzogbnVsbCxcbiAgICAgICdldmVudC5jaGFubmVsJzogJ3dlYicsXG4gICAgICAnZXZlbnQudGltZXN0YW1wJzogbnVsbCxcbiAgICB9O1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXNcbiAgcHJpdmF0ZSBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMoXG4gICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgY29uc3QgcHJlZml4ID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhldmVudFByb3BzKS5yZWR1Y2UoXG4gICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpOiBFbnJpY2htZW50UGx1Z2luIHtcbiAgICBpZiAodGhpcy5pbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiA9IHtcbiAgICAgIG5hbWU6ICdwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudCcsXG4gICAgICB0eXBlOiAnZW5yaWNobWVudCcsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgICdbQW1wbGl0dWRlXSBQYWdlIFZpZXdlZCcsXG4gICAgICAgICAgYFtTcGlmZnldICR7U3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5CdW5kbGVMb2FkZWR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoZXZlbnRzVG9FbnJpY2guaW5jbHVkZXMoZXZlbnQuZXZlbnRfdHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgICBpZiAodGhpcy5jb25maWcuc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnNob3cnXSA9IFN0cmluZyh0aGlzLmNvbmZpZy5zaG93KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXMgPSB0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKGVuYWJsZWRGZWF0dXJlcykucmVkdWNlPFxuICAgICAgICAgICAgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAgICAgICAgID4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aW1pbmdQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgJ3RpbWluZy5lbnJpY2hlZF9hdF9tcyc6XG4gICAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LnBlcmZvcm1hbmNlPy5ub3coKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IHtcbiAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgZXZlbnRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi5ldmVudC5ldmVudF9wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCA9IGVucmljaG1lbnQ7XG4gICAgcmV0dXJuIGVucmljaG1lbnQ7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgY29uc3QgaXNSZWFkeSA9IEJvb2xlYW4oXG4gICAgICB0aGlzLmNvbmZpZy51c2VySWQgJiYgdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlICYmIHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICApO1xuXG4gICAgaWYgKCFpc1JlYWR5KSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoJ0FtcGxpdHVkZVNlcnZpY2UgaXMgbm90IHJlYWR5Jywge1xuICAgICAgICBpc1JlYWR5LFxuICAgICAgICB1c2VySWQ6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICAgaGFzRmVhdHVyZUZsYWdTZXJ2aWNlOiAhIXRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZSxcbiAgICAgICAgaGFzQW1wbGl0dWRlQXBpS2V5OiAhIXRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCA9IGNyZWF0ZUluc3RhbmNlKCk7XG5cbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5hZGQodGhpcy5nZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5pbml0KHRoaXMuY29uZmlnLmFtcGxpdHVkZUFwaUtleSwgdGhpcy5jb25maWcudXNlcklkLCB7XG4gICAgICAgIHNlcnZlclpvbmU6IHRoaXMuY29uZmlnLmRhdGFSZXNpZGVuY3kgYXMgU2VydmVyWm9uZVR5cGUsXG4gICAgICAgIHRyYWNraW5nT3B0aW9uczoge1xuICAgICAgICAgIGlwQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYXV0b2NhcHR1cmU6IHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlVmlld3M6IHtcbiAgICAgICAgICAgIHRyYWNrSGlzdG9yeUNoYW5nZXM6ICdwYXRoT25seScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uczogZmFsc2UsXG4gICAgICAgICAgZm9ybUludGVyYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50ID0gY3VycmVudEFtcGxpdHVkZUluc3RhbmNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHRyYWNrRXZlbnQoe1xuICAgIGV2ZW50TmFtZSxcbiAgICBldmVudFByb3BzLFxuICAgIGV2ZW50R3JvdXBzLFxuICAgIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgPSBmYWxzZSxcbiAgfTogVHJhY2tFdmVudFBhcmFtcyk6IFByb21pc2U8dm9pZD4ge1xuICAgIExvZ2dlci5sb2dEZWJ1ZygnU3VibWl0dGluZyBldmVudCcsIGV2ZW50TmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlY29yYXRlZEV2ZW50TmFtZSA9IGBbU3BpZmZ5XSAke2V2ZW50TmFtZX1gO1xuXG4gICAgICBpZiAoIXRoaXMuYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICAgIExvZ2dlci5sb2dXYXJuKCdhbXBsaXR1ZGUgY2xpZW50IHVuZGVmaW5lZCcsIHVuZGVmaW5lZCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZXZlbnREYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGV2ZW50RGF0YSk7XG4gICAgICAvLyBjYWxjdWxhdGUgYSBoYXNoIG9mIHRoZSBldmVudCBwcm9wZXJ0aWVzIHRvIHVzZSBhcyB0aGUgaW5zZXJ0X2lkIHNvIHRoYXQgZHVwbGljYXRlIGV2ZW50c1xuICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCBieSBBbXBsaXR1ZGVcbiAgICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xuICAgICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7XG4gICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXkubWFwKGIgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG5cbiAgICAgIExvZ2dlci5sb2dEZWJ1ZyhgYW1wbGl0dWRlIHRyYWNraW5nICR7ZGVjb3JhdGVkRXZlbnROYW1lfWAsIG51bGwsIHtcbiAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICBwcm9wczogZXZlbnRQcm9wcyxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmFtcGxpdHVkZUNsaWVudC50cmFjayhcbiAgICAgICAgZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB7XG4gICAgICAgICAgLi4udGhpcy5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgICAgLi4uKGV2ZW50UHJvcHMgPyB0aGlzLmV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhldmVudE5hbWUsIGV2ZW50UHJvcHMpIDoge30pLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgLi4uZXZlbnRHcm91cHMsXG4gICAgICAgICAgaW5zZXJ0X2lkOiBjdXJyZW50SW5zZXJ0SWQsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBpZiAoYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyAmJiB0aGlzLmNvbmZpZy5vcmdHYUNvbmZpZykge1xuICAgICAgICAvLyBUT0RPOiBBZGQgaW4gd2luZG93RGF0YUxheWVyU2VydmljZSBvciBjb250ZXh0IGFsdGVybmF0aXZlIGFuZCBob29rIGl0IHVwIGhlcmVcbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdbc3BpZmZ5LWFpXSBHQSB0cmFja2luZycsIGRlY29yYXRlZEV2ZW50TmFtZSk7XG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAod2luZG93LmRhdGFMYXllciBhcyBhbnlbXSkucHVzaCh7XG4gICAgICAgICAgICBldmVudDogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBFcnJvciB0cmFja2luZyBldmVudCcsIGVyciwge1xuICAgICAgICBldmVudE5hbWUsXG4gICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCB7XG4gICAgdGhpcy5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMgPSBwcm9wcztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFZQSxJQUFZLDRFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FB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
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { FeatureFlagService } from "../../contexts/featureFlagServiceContext/featureFlagServiceContext.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/services/amplitudeService/amplitudeService.d.ts
|
|
4
|
+
declare enum SpiffyMetricsEventName {
|
|
5
|
+
BundleLoaded = "Bundle Loaded",
|
|
6
|
+
ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
|
|
7
|
+
ChatFloatingButtonVisible = "Chat Floating Button Visible",
|
|
8
|
+
ChatComponentVisible = "Chat Component Visible",
|
|
9
|
+
ChatComponentExpanded = "Chat Component Expanded",
|
|
10
|
+
ChatComponentCollapsed = "Chat Component Collapsed",
|
|
11
|
+
ChatUserMessageInput = "Chat User Message Input",
|
|
12
|
+
ChatSuggestionClicked = "Chat Suggestion Clicked",
|
|
13
|
+
ChatAssistantResponse = "Chat Assistant Response",
|
|
14
|
+
ProductCardClicked = "Product Card Clicked",
|
|
15
|
+
ProductReviewCardClicked = "Product Review Card Clicked",
|
|
16
|
+
AddToCartClicked = "Add To Cart Clicked",
|
|
17
|
+
PromptCardClicked = "Prompt Card Clicked",
|
|
18
|
+
SupportedEvent = "Supported Event",
|
|
19
|
+
SearchBackToResponseClicked = "Search Back to Response Clicked",
|
|
20
|
+
PerformanceMetrics = "Performance Metrics",
|
|
21
|
+
SearchBarClicked = "Search Bar Clicked",
|
|
22
|
+
OrderLookupStarted = "Order Lookup Started",
|
|
23
|
+
OrderLookupFormSubmitted = "Order Lookup Form Submitted",
|
|
24
|
+
SearchComponentVisible = "Search Component Visible",
|
|
25
|
+
SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked",
|
|
26
|
+
// This is the scrolling list of suggestion buttons in global search
|
|
27
|
+
SearchInputStarted = "Search Input Started",
|
|
28
|
+
SearchQuerySubmitted = "Search Query Submitted",
|
|
29
|
+
SearchResultsViewed = "Search Results Viewed",
|
|
30
|
+
SearchTimeToFirstClick = "Search Time to First Click",
|
|
31
|
+
SearchZeroResultsRate = "Search Zero Results Rate",
|
|
32
|
+
SearchFilterClicked = "Search Filter Clicked",
|
|
33
|
+
SearchSortClicked = "Search Sort Clicked",
|
|
34
|
+
}
|
|
35
|
+
interface TrackEventParams {
|
|
36
|
+
eventName: SpiffyMetricsEventName;
|
|
37
|
+
eventProps?: Record<string, unknown>;
|
|
38
|
+
eventGroups?: Record<string, unknown>;
|
|
39
|
+
alsoSendToGoogleAnalytics?: boolean;
|
|
40
|
+
}
|
|
41
|
+
interface AmplitudeServiceConfig {
|
|
42
|
+
userId: string;
|
|
43
|
+
amplitudeApiKey: string;
|
|
44
|
+
dataResidency: string;
|
|
45
|
+
env: string;
|
|
46
|
+
contextSource: string;
|
|
47
|
+
orgShortName: string;
|
|
48
|
+
featureFlagService: FeatureFlagService;
|
|
49
|
+
orgGaConfig?: unknown;
|
|
50
|
+
show?: boolean;
|
|
51
|
+
getLocalStorageItem?: (key: string) => string | null;
|
|
52
|
+
}
|
|
53
|
+
declare class AmplitudeService {
|
|
54
|
+
private amplitudeClient;
|
|
55
|
+
private internalEventTrackingEnrichment;
|
|
56
|
+
private supplementalDefaultProps;
|
|
57
|
+
private config;
|
|
58
|
+
constructor(config: AmplitudeServiceConfig);
|
|
59
|
+
get isReady(): boolean;
|
|
60
|
+
private getLocalStorageItem;
|
|
61
|
+
private getDefaultTrackingProps;
|
|
62
|
+
private eventPropsToPrefixedEventProps;
|
|
63
|
+
private getEventTrackingEnrichment;
|
|
64
|
+
private initialize;
|
|
65
|
+
trackEvent({
|
|
66
|
+
eventName,
|
|
67
|
+
eventProps,
|
|
68
|
+
eventGroups,
|
|
69
|
+
alsoSendToGoogleAnalytics
|
|
70
|
+
}: TrackEventParams): Promise<void>;
|
|
71
|
+
setSupplementalDefaultProps(props: Record<string, unknown>): void;
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { AmplitudeService, AmplitudeServiceConfig, SpiffyMetricsEventName, TrackEventParams };
|
|
75
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCc7XG5leHBvcnQgZGVjbGFyZSBlbnVtIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUge1xuICAgIEJ1bmRsZUxvYWRlZCA9IFwiQnVuZGxlIExvYWRlZFwiLFxuICAgIENoYXRMaXZlQWdlbnRCdG5DbGljayA9IFwiQ2hhdCBMaXZlIEFnZW50IEJ0biBDbGlja1wiLFxuICAgIENoYXRGbG9hdGluZ0J1dHRvblZpc2libGUgPSBcIkNoYXQgRmxvYXRpbmcgQnV0dG9uIFZpc2libGVcIixcbiAgICBDaGF0Q29tcG9uZW50VmlzaWJsZSA9IFwiQ2hhdCBDb21wb25lbnQgVmlzaWJsZVwiLFxuICAgIENoYXRDb21wb25lbnRFeHBhbmRlZCA9IFwiQ2hhdCBDb21wb25lbnQgRXhwYW5kZWRcIixcbiAgICBDaGF0Q29tcG9uZW50Q29sbGFwc2VkID0gXCJDaGF0IENvbXBvbmVudCBDb2xsYXBzZWRcIixcbiAgICBDaGF0VXNlck1lc3NhZ2VJbnB1dCA9IFwiQ2hhdCBVc2VyIE1lc3NhZ2UgSW5wdXRcIixcbiAgICBDaGF0U3VnZ2VzdGlvbkNsaWNrZWQgPSBcIkNoYXQgU3VnZ2VzdGlvbiBDbGlja2VkXCIsXG4gICAgQ2hhdEFzc2lzdGFudFJlc3BvbnNlID0gXCJDaGF0IEFzc2lzdGFudCBSZXNwb25zZVwiLFxuICAgIFByb2R1Y3RDYXJkQ2xpY2tlZCA9IFwiUHJvZHVjdCBDYXJkIENsaWNrZWRcIixcbiAgICBQcm9kdWN0UmV2aWV3Q2FyZENsaWNrZWQgPSBcIlByb2R1Y3QgUmV2aWV3IENhcmQgQ2xpY2tlZFwiLFxuICAgIEFkZFRvQ2FydENsaWNrZWQgPSBcIkFkZCBUbyBDYXJ0IENsaWNrZWRcIixcbiAgICBQcm9tcHRDYXJkQ2xpY2tlZCA9IFwiUHJvbXB0IENhcmQgQ2xpY2tlZFwiLFxuICAgIFN1cHBvcnRlZEV2ZW50ID0gXCJTdXBwb3J0ZWQgRXZlbnRcIixcbiAgICBTZWFyY2hCYWNrVG9SZXNwb25zZUNsaWNrZWQgPSBcIlNlYXJjaCBCYWNrIHRvIFJlc3BvbnNlIENsaWNrZWRcIixcbiAgICBQZXJmb3JtYW5jZU1ldHJpY3MgPSBcIlBlcmZvcm1hbmNlIE1ldHJpY3NcIixcbiAgICBTZWFyY2hCYXJDbGlja2VkID0gXCJTZWFyY2ggQmFyIENsaWNrZWRcIixcbiAgICBPcmRlckxvb2t1cFN0YXJ0ZWQgPSBcIk9yZGVyIExvb2t1cCBTdGFydGVkXCIsXG4gICAgT3JkZXJMb29rdXBGb3JtU3VibWl0dGVkID0gXCJPcmRlciBMb29rdXAgRm9ybSBTdWJtaXR0ZWRcIixcbiAgICBTZWFyY2hDb21wb25lbnRWaXNpYmxlID0gXCJTZWFyY2ggQ29tcG9uZW50IFZpc2libGVcIixcbiAgICBTZWFyY2haZXJvU3RhdGVTdWdnZXN0aW9uQ2xpY2tlZCA9IFwiU2VhcmNoIFplcm8gU3RhdGUgU3VnZ2VzdGlvbiBDbGlja2VkXCIsLy8gVGhpcyBpcyB0aGUgc2Nyb2xsaW5nIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBidXR0b25zIGluIGdsb2JhbCBzZWFyY2hcbiAgICBTZWFyY2hJbnB1dFN0YXJ0ZWQgPSBcIlNlYXJjaCBJbnB1dCBTdGFydGVkXCIsXG4gICAgU2VhcmNoUXVlcnlTdWJtaXR0ZWQgPSBcIlNlYXJjaCBRdWVyeSBTdWJtaXR0ZWRcIixcbiAgICBTZWFyY2hSZXN1bHRzVmlld2VkID0gXCJTZWFyY2ggUmVzdWx0cyBWaWV3ZWRcIixcbiAgICBTZWFyY2hUaW1lVG9GaXJzdENsaWNrID0gXCJTZWFyY2ggVGltZSB0byBGaXJzdCBDbGlja1wiLFxuICAgIFNlYXJjaFplcm9SZXN1bHRzUmF0ZSA9IFwiU2VhcmNoIFplcm8gUmVzdWx0cyBSYXRlXCIsXG4gICAgU2VhcmNoRmlsdGVyQ2xpY2tlZCA9IFwiU2VhcmNoIEZpbHRlciBDbGlja2VkXCIsXG4gICAgU2VhcmNoU29ydENsaWNrZWQgPSBcIlNlYXJjaCBTb3J0IENsaWNrZWRcIlxufVxuZXhwb3J0IGludGVyZmFjZSBUcmFja0V2ZW50UGFyYW1zIHtcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gICAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEFtcGxpdHVkZVNlcnZpY2VDb25maWcge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGFtcGxpdHVkZUFwaUtleTogc3RyaW5nO1xuICAgIGRhdGFSZXNpZGVuY3k6IHN0cmluZztcbiAgICBlbnY6IHN0cmluZztcbiAgICBjb250ZXh0U291cmNlOiBzdHJpbmc7XG4gICAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlOiBGZWF0dXJlRmxhZ1NlcnZpY2U7XG4gICAgb3JnR2FDb25maWc/OiB1bmtub3duO1xuICAgIHNob3c/OiBib29sZWFuO1xuICAgIGdldExvY2FsU3RvcmFnZUl0ZW0/OiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG59XG5leHBvcnQgZGVjbGFyZSBjbGFzcyBBbXBsaXR1ZGVTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGFtcGxpdHVkZUNsaWVudDtcbiAgICBwcml2YXRlIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgcHJpdmF0ZSBzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM7XG4gICAgcHJpdmF0ZSBjb25maWc7XG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnKTtcbiAgICBnZXQgaXNSZWFkeSgpOiBib29sZWFuO1xuICAgIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlSXRlbTtcbiAgICBwcml2YXRlIGdldERlZmF1bHRUcmFja2luZ1Byb3BzO1xuICAgIHByaXZhdGUgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzO1xuICAgIHByaXZhdGUgZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgcHJpdmF0ZSBpbml0aWFsaXplO1xuICAgIHRyYWNrRXZlbnQoeyBldmVudE5hbWUsIGV2ZW50UHJvcHMsIGV2ZW50R3JvdXBzLCBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzLCB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyx5QkFBeUIsQ0FBQyxJQUFJO0FBQ3pDLElBQVcsbUJBQW1CO0NBQUM7T0FBRztPQUFBO09BQUE7Q0FBQTtBQUNsQyxJQUFXLHlCQUF5QixDQUFDLFdBQVcsbUJBQU87QUFDdkQsSUFBVyxtQkFBbUI7Q0FBQztPQUFXO09BQW9CO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { FeatureFlagService } from "../../contexts/featureFlagServiceContext/featureFlagServiceContext.js";
|
|
2
|
+
|
|
3
|
+
//#region src/services/amplitudeService/amplitudeService.d.ts
|
|
4
|
+
declare enum SpiffyMetricsEventName {
|
|
5
|
+
BundleLoaded = "Bundle Loaded",
|
|
6
|
+
ChatLiveAgentBtnClick = "Chat Live Agent Btn Click",
|
|
7
|
+
ChatFloatingButtonVisible = "Chat Floating Button Visible",
|
|
8
|
+
ChatComponentVisible = "Chat Component Visible",
|
|
9
|
+
ChatComponentExpanded = "Chat Component Expanded",
|
|
10
|
+
ChatComponentCollapsed = "Chat Component Collapsed",
|
|
11
|
+
ChatUserMessageInput = "Chat User Message Input",
|
|
12
|
+
ChatSuggestionClicked = "Chat Suggestion Clicked",
|
|
13
|
+
ChatAssistantResponse = "Chat Assistant Response",
|
|
14
|
+
ProductCardClicked = "Product Card Clicked",
|
|
15
|
+
ProductReviewCardClicked = "Product Review Card Clicked",
|
|
16
|
+
AddToCartClicked = "Add To Cart Clicked",
|
|
17
|
+
PromptCardClicked = "Prompt Card Clicked",
|
|
18
|
+
SupportedEvent = "Supported Event",
|
|
19
|
+
SearchBackToResponseClicked = "Search Back to Response Clicked",
|
|
20
|
+
PerformanceMetrics = "Performance Metrics",
|
|
21
|
+
SearchBarClicked = "Search Bar Clicked",
|
|
22
|
+
OrderLookupStarted = "Order Lookup Started",
|
|
23
|
+
OrderLookupFormSubmitted = "Order Lookup Form Submitted",
|
|
24
|
+
SearchComponentVisible = "Search Component Visible",
|
|
25
|
+
SearchZeroStateSuggestionClicked = "Search Zero State Suggestion Clicked",
|
|
26
|
+
// This is the scrolling list of suggestion buttons in global search
|
|
27
|
+
SearchInputStarted = "Search Input Started",
|
|
28
|
+
SearchQuerySubmitted = "Search Query Submitted",
|
|
29
|
+
SearchResultsViewed = "Search Results Viewed",
|
|
30
|
+
SearchTimeToFirstClick = "Search Time to First Click",
|
|
31
|
+
SearchZeroResultsRate = "Search Zero Results Rate",
|
|
32
|
+
SearchFilterClicked = "Search Filter Clicked",
|
|
33
|
+
SearchSortClicked = "Search Sort Clicked",
|
|
34
|
+
}
|
|
35
|
+
interface TrackEventParams {
|
|
36
|
+
eventName: SpiffyMetricsEventName;
|
|
37
|
+
eventProps?: Record<string, unknown>;
|
|
38
|
+
eventGroups?: Record<string, unknown>;
|
|
39
|
+
alsoSendToGoogleAnalytics?: boolean;
|
|
40
|
+
}
|
|
41
|
+
interface AmplitudeServiceConfig {
|
|
42
|
+
userId: string;
|
|
43
|
+
amplitudeApiKey: string;
|
|
44
|
+
dataResidency: string;
|
|
45
|
+
env: string;
|
|
46
|
+
contextSource: string;
|
|
47
|
+
orgShortName: string;
|
|
48
|
+
featureFlagService: FeatureFlagService;
|
|
49
|
+
orgGaConfig?: unknown;
|
|
50
|
+
show?: boolean;
|
|
51
|
+
getLocalStorageItem?: (key: string) => string | null;
|
|
52
|
+
}
|
|
53
|
+
declare class AmplitudeService {
|
|
54
|
+
private amplitudeClient;
|
|
55
|
+
private internalEventTrackingEnrichment;
|
|
56
|
+
private supplementalDefaultProps;
|
|
57
|
+
private config;
|
|
58
|
+
constructor(config: AmplitudeServiceConfig);
|
|
59
|
+
get isReady(): boolean;
|
|
60
|
+
private getLocalStorageItem;
|
|
61
|
+
private getDefaultTrackingProps;
|
|
62
|
+
private eventPropsToPrefixedEventProps;
|
|
63
|
+
private getEventTrackingEnrichment;
|
|
64
|
+
private initialize;
|
|
65
|
+
trackEvent({
|
|
66
|
+
eventName,
|
|
67
|
+
eventProps,
|
|
68
|
+
eventGroups,
|
|
69
|
+
alsoSendToGoogleAnalytics
|
|
70
|
+
}: TrackEventParams): Promise<void>;
|
|
71
|
+
setSupplementalDefaultProps(props: Record<string, unknown>): void;
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { AmplitudeService, AmplitudeServiceConfig, SpiffyMetricsEventName, TrackEventParams };
|
|
75
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5kLnRzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9hbXBsaXR1ZGVTZXJ2aWNlL2FtcGxpdHVkZVNlcnZpY2UuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcbmV4cG9ydCBkZWNsYXJlIGVudW0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB7XG4gICAgQnVuZGxlTG9hZGVkID0gXCJCdW5kbGUgTG9hZGVkXCIsXG4gICAgQ2hhdExpdmVBZ2VudEJ0bkNsaWNrID0gXCJDaGF0IExpdmUgQWdlbnQgQnRuIENsaWNrXCIsXG4gICAgQ2hhdEZsb2F0aW5nQnV0dG9uVmlzaWJsZSA9IFwiQ2hhdCBGbG9hdGluZyBCdXR0b24gVmlzaWJsZVwiLFxuICAgIENoYXRDb21wb25lbnRWaXNpYmxlID0gXCJDaGF0IENvbXBvbmVudCBWaXNpYmxlXCIsXG4gICAgQ2hhdENvbXBvbmVudEV4cGFuZGVkID0gXCJDaGF0IENvbXBvbmVudCBFeHBhbmRlZFwiLFxuICAgIENoYXRDb21wb25lbnRDb2xsYXBzZWQgPSBcIkNoYXQgQ29tcG9uZW50IENvbGxhcHNlZFwiLFxuICAgIENoYXRVc2VyTWVzc2FnZUlucHV0ID0gXCJDaGF0IFVzZXIgTWVzc2FnZSBJbnB1dFwiLFxuICAgIENoYXRTdWdnZXN0aW9uQ2xpY2tlZCA9IFwiQ2hhdCBTdWdnZXN0aW9uIENsaWNrZWRcIixcbiAgICBDaGF0QXNzaXN0YW50UmVzcG9uc2UgPSBcIkNoYXQgQXNzaXN0YW50IFJlc3BvbnNlXCIsXG4gICAgUHJvZHVjdENhcmRDbGlja2VkID0gXCJQcm9kdWN0IENhcmQgQ2xpY2tlZFwiLFxuICAgIFByb2R1Y3RSZXZpZXdDYXJkQ2xpY2tlZCA9IFwiUHJvZHVjdCBSZXZpZXcgQ2FyZCBDbGlja2VkXCIsXG4gICAgQWRkVG9DYXJ0Q2xpY2tlZCA9IFwiQWRkIFRvIENhcnQgQ2xpY2tlZFwiLFxuICAgIFByb21wdENhcmRDbGlja2VkID0gXCJQcm9tcHQgQ2FyZCBDbGlja2VkXCIsXG4gICAgU3VwcG9ydGVkRXZlbnQgPSBcIlN1cHBvcnRlZCBFdmVudFwiLFxuICAgIFNlYXJjaEJhY2tUb1Jlc3BvbnNlQ2xpY2tlZCA9IFwiU2VhcmNoIEJhY2sgdG8gUmVzcG9uc2UgQ2xpY2tlZFwiLFxuICAgIFBlcmZvcm1hbmNlTWV0cmljcyA9IFwiUGVyZm9ybWFuY2UgTWV0cmljc1wiLFxuICAgIFNlYXJjaEJhckNsaWNrZWQgPSBcIlNlYXJjaCBCYXIgQ2xpY2tlZFwiLFxuICAgIE9yZGVyTG9va3VwU3RhcnRlZCA9IFwiT3JkZXIgTG9va3VwIFN0YXJ0ZWRcIixcbiAgICBPcmRlckxvb2t1cEZvcm1TdWJtaXR0ZWQgPSBcIk9yZGVyIExvb2t1cCBGb3JtIFN1Ym1pdHRlZFwiLFxuICAgIFNlYXJjaENvbXBvbmVudFZpc2libGUgPSBcIlNlYXJjaCBDb21wb25lbnQgVmlzaWJsZVwiLFxuICAgIFNlYXJjaFplcm9TdGF0ZVN1Z2dlc3Rpb25DbGlja2VkID0gXCJTZWFyY2ggWmVybyBTdGF0ZSBTdWdnZXN0aW9uIENsaWNrZWRcIiwvLyBUaGlzIGlzIHRoZSBzY3JvbGxpbmcgbGlzdCBvZiBzdWdnZXN0aW9uIGJ1dHRvbnMgaW4gZ2xvYmFsIHNlYXJjaFxuICAgIFNlYXJjaElucHV0U3RhcnRlZCA9IFwiU2VhcmNoIElucHV0IFN0YXJ0ZWRcIixcbiAgICBTZWFyY2hRdWVyeVN1Ym1pdHRlZCA9IFwiU2VhcmNoIFF1ZXJ5IFN1Ym1pdHRlZFwiLFxuICAgIFNlYXJjaFJlc3VsdHNWaWV3ZWQgPSBcIlNlYXJjaCBSZXN1bHRzIFZpZXdlZFwiLFxuICAgIFNlYXJjaFRpbWVUb0ZpcnN0Q2xpY2sgPSBcIlNlYXJjaCBUaW1lIHRvIEZpcnN0IENsaWNrXCIsXG4gICAgU2VhcmNoWmVyb1Jlc3VsdHNSYXRlID0gXCJTZWFyY2ggWmVybyBSZXN1bHRzIFJhdGVcIixcbiAgICBTZWFyY2hGaWx0ZXJDbGlja2VkID0gXCJTZWFyY2ggRmlsdGVyIENsaWNrZWRcIixcbiAgICBTZWFyY2hTb3J0Q2xpY2tlZCA9IFwiU2VhcmNoIFNvcnQgQ2xpY2tlZFwiXG59XG5leHBvcnQgaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZTtcbiAgICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQW1wbGl0dWRlU2VydmljZUNvbmZpZyB7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgYW1wbGl0dWRlQXBpS2V5OiBzdHJpbmc7XG4gICAgZGF0YVJlc2lkZW5jeTogc3RyaW5nO1xuICAgIGVudjogc3RyaW5nO1xuICAgIGNvbnRleHRTb3VyY2U6IHN0cmluZztcbiAgICBvcmdTaG9ydE5hbWU6IHN0cmluZztcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgICBvcmdHYUNvbmZpZz86IHVua25vd247XG4gICAgc2hvdz86IGJvb2xlYW47XG4gICAgZ2V0TG9jYWxTdG9yYWdlSXRlbT86IChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbn1cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEFtcGxpdHVkZVNlcnZpY2Uge1xuICAgIHByaXZhdGUgYW1wbGl0dWRlQ2xpZW50O1xuICAgIHByaXZhdGUgaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICBwcml2YXRlIHN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcztcbiAgICBwcml2YXRlIGNvbmZpZztcbiAgICBjb25zdHJ1Y3Rvcihjb25maWc6IEFtcGxpdHVkZVNlcnZpY2VDb25maWcpO1xuICAgIGdldCBpc1JlYWR5KCk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBnZXRMb2NhbFN0b3JhZ2VJdGVtO1xuICAgIHByaXZhdGUgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHM7XG4gICAgcHJpdmF0ZSBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHM7XG4gICAgcHJpdmF0ZSBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICBwcml2YXRlIGluaXRpYWxpemU7XG4gICAgdHJhY2tFdmVudCh7IGV2ZW50TmFtZSwgZXZlbnRQcm9wcywgZXZlbnRHcm91cHMsIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MsIH06IFRyYWNrRXZlbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFDQSxJQUFXLHlCQUF5QixDQUFDLElBQUk7QUFDekMsSUFBVyxtQkFBbUI7Q0FBQztPQUFHO09BQUE7T0FBQTtDQUFBO0FBQ2xDLElBQVcseUJBQXlCLENBQUMsV0FBVyxtQkFBTztBQUN2RCxJQUFXLG1CQUFtQjtDQUFDO09BQVc7T0FBb0I7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import { SpiffyEvent } from "../../events/event-types.js";
|
|
2
|
+
import { EventsDispatcher } from "../../events/index.js";
|
|
3
|
+
import logger_default from "../../application/logging/logger.js";
|
|
4
|
+
import { LocalStorageKeys } from "../../contexts/localStorageContext/localStorageContext.js";
|
|
5
|
+
import "../../contexts/localStorageContext/index.js";
|
|
6
|
+
import { createInstance } from "@amplitude/analytics-browser";
|
|
7
|
+
|
|
8
|
+
//#region src/services/amplitudeService/amplitudeService.ts
|
|
9
|
+
let SpiffyMetricsEventName = /* @__PURE__ */ function(SpiffyMetricsEventName$1) {
|
|
10
|
+
SpiffyMetricsEventName$1["BundleLoaded"] = "Bundle Loaded";
|
|
11
|
+
SpiffyMetricsEventName$1["ChatLiveAgentBtnClick"] = "Chat Live Agent Btn Click";
|
|
12
|
+
SpiffyMetricsEventName$1["ChatFloatingButtonVisible"] = "Chat Floating Button Visible";
|
|
13
|
+
SpiffyMetricsEventName$1["ChatComponentVisible"] = "Chat Component Visible";
|
|
14
|
+
SpiffyMetricsEventName$1["ChatComponentExpanded"] = "Chat Component Expanded";
|
|
15
|
+
SpiffyMetricsEventName$1["ChatComponentCollapsed"] = "Chat Component Collapsed";
|
|
16
|
+
SpiffyMetricsEventName$1["ChatUserMessageInput"] = "Chat User Message Input";
|
|
17
|
+
SpiffyMetricsEventName$1["ChatSuggestionClicked"] = "Chat Suggestion Clicked";
|
|
18
|
+
SpiffyMetricsEventName$1["ChatAssistantResponse"] = "Chat Assistant Response";
|
|
19
|
+
SpiffyMetricsEventName$1["ProductCardClicked"] = "Product Card Clicked";
|
|
20
|
+
SpiffyMetricsEventName$1["ProductReviewCardClicked"] = "Product Review Card Clicked";
|
|
21
|
+
SpiffyMetricsEventName$1["AddToCartClicked"] = "Add To Cart Clicked";
|
|
22
|
+
SpiffyMetricsEventName$1["PromptCardClicked"] = "Prompt Card Clicked";
|
|
23
|
+
SpiffyMetricsEventName$1["SupportedEvent"] = "Supported Event";
|
|
24
|
+
SpiffyMetricsEventName$1["SearchBackToResponseClicked"] = "Search Back to Response Clicked";
|
|
25
|
+
SpiffyMetricsEventName$1["PerformanceMetrics"] = "Performance Metrics";
|
|
26
|
+
SpiffyMetricsEventName$1["SearchBarClicked"] = "Search Bar Clicked";
|
|
27
|
+
SpiffyMetricsEventName$1["OrderLookupStarted"] = "Order Lookup Started";
|
|
28
|
+
SpiffyMetricsEventName$1["OrderLookupFormSubmitted"] = "Order Lookup Form Submitted";
|
|
29
|
+
SpiffyMetricsEventName$1["SearchComponentVisible"] = "Search Component Visible";
|
|
30
|
+
SpiffyMetricsEventName$1["SearchZeroStateSuggestionClicked"] = "Search Zero State Suggestion Clicked";
|
|
31
|
+
SpiffyMetricsEventName$1["SearchInputStarted"] = "Search Input Started";
|
|
32
|
+
SpiffyMetricsEventName$1["SearchQuerySubmitted"] = "Search Query Submitted";
|
|
33
|
+
SpiffyMetricsEventName$1["SearchResultsViewed"] = "Search Results Viewed";
|
|
34
|
+
SpiffyMetricsEventName$1["SearchTimeToFirstClick"] = "Search Time to First Click";
|
|
35
|
+
SpiffyMetricsEventName$1["SearchZeroResultsRate"] = "Search Zero Results Rate";
|
|
36
|
+
SpiffyMetricsEventName$1["SearchFilterClicked"] = "Search Filter Clicked";
|
|
37
|
+
SpiffyMetricsEventName$1["SearchSortClicked"] = "Search Sort Clicked";
|
|
38
|
+
return SpiffyMetricsEventName$1;
|
|
39
|
+
}({});
|
|
40
|
+
var AmplitudeService = class {
|
|
41
|
+
constructor(config) {
|
|
42
|
+
this.supplementalDefaultProps = {};
|
|
43
|
+
this.config = config;
|
|
44
|
+
this.initialize();
|
|
45
|
+
}
|
|
46
|
+
get isReady() {
|
|
47
|
+
return Boolean(this.config.userId && this.config.featureFlagService && this.config.amplitudeApiKey && this.amplitudeClient);
|
|
48
|
+
}
|
|
49
|
+
getLocalStorageItem(key) {
|
|
50
|
+
if (this.config.getLocalStorageItem) return this.config.getLocalStorageItem(key);
|
|
51
|
+
if (typeof window !== "undefined" && window.localStorage) return window.localStorage.getItem(key);
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
getDefaultTrackingProps() {
|
|
55
|
+
const featureGates = Object.entries(this.config.featureFlagService.getFeatureFlags());
|
|
56
|
+
const gatesProps = featureGates.length > 0 ? featureGates.reduce((acc, [name, value]) => {
|
|
57
|
+
if (name && value != null) return {
|
|
58
|
+
...acc,
|
|
59
|
+
[`feature_gate.${name}`]: value
|
|
60
|
+
};
|
|
61
|
+
return acc;
|
|
62
|
+
}, {}) : {};
|
|
63
|
+
const experimentProps = {};
|
|
64
|
+
return {
|
|
65
|
+
...gatesProps,
|
|
66
|
+
...experimentProps,
|
|
67
|
+
...this.supplementalDefaultProps,
|
|
68
|
+
app_id: "commerce-chat-react-component",
|
|
69
|
+
chat_id: this.getLocalStorageItem(LocalStorageKeys.ChatId),
|
|
70
|
+
env: this.config.env || "unknown",
|
|
71
|
+
app_source: this.config.contextSource,
|
|
72
|
+
"org.short_name": this.config.orgShortName,
|
|
73
|
+
"user.id": this.config.userId,
|
|
74
|
+
"cdp.user_id": null,
|
|
75
|
+
"cdp.provider": null,
|
|
76
|
+
"event.source": "web-browser",
|
|
77
|
+
"event.type": "user-activity",
|
|
78
|
+
"event.id": null,
|
|
79
|
+
"event.channel": "web",
|
|
80
|
+
"event.timestamp": null
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
eventPropsToPrefixedEventProps(eventName, eventProps) {
|
|
84
|
+
const prefix = eventName.toLowerCase().replace(/\s+/g, "_");
|
|
85
|
+
return Object.entries(eventProps).reduce((acc, [key, value]) => {
|
|
86
|
+
acc[`${prefix}.${key}`] = value;
|
|
87
|
+
return acc;
|
|
88
|
+
}, {});
|
|
89
|
+
}
|
|
90
|
+
getEventTrackingEnrichment() {
|
|
91
|
+
if (this.internalEventTrackingEnrichment !== void 0) return this.internalEventTrackingEnrichment;
|
|
92
|
+
const enrichment = {
|
|
93
|
+
name: "page-view-tracking-enrichment",
|
|
94
|
+
type: "enrichment",
|
|
95
|
+
setup: async () => void 0,
|
|
96
|
+
execute: async (event) => {
|
|
97
|
+
let enrichedEvent;
|
|
98
|
+
if (["[Amplitude] Page Viewed", `[Spiffy] ${SpiffyMetricsEventName.BundleLoaded}`].includes(event.event_type)) {
|
|
99
|
+
const globalProperties = {};
|
|
100
|
+
if (this.config.show != null) globalProperties["globalProperties.show"] = String(this.config.show);
|
|
101
|
+
const enabledFeatures = this.config.featureFlagService.getFeatureFlags();
|
|
102
|
+
const enabledFeaturesProperties = Object.entries(enabledFeatures).reduce((acc, [key, value]) => ({
|
|
103
|
+
...acc,
|
|
104
|
+
[`enabledFeatures.${key}`]: `${value}`
|
|
105
|
+
}), {});
|
|
106
|
+
const timingProperties = { "timing.enriched_at_ms": typeof window !== "undefined" ? window.performance?.now() : void 0 };
|
|
107
|
+
enrichedEvent = {
|
|
108
|
+
...event,
|
|
109
|
+
event_properties: {
|
|
110
|
+
...event.event_properties,
|
|
111
|
+
...this.getDefaultTrackingProps(),
|
|
112
|
+
...globalProperties,
|
|
113
|
+
...enabledFeaturesProperties,
|
|
114
|
+
...timingProperties
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
} else enrichedEvent = event;
|
|
118
|
+
EventsDispatcher.dispatch(SpiffyEvent.AMPLITUDE_EVENT, enrichedEvent);
|
|
119
|
+
return enrichedEvent;
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
this.internalEventTrackingEnrichment = enrichment;
|
|
123
|
+
return enrichment;
|
|
124
|
+
}
|
|
125
|
+
initialize() {
|
|
126
|
+
const isReady = Boolean(this.config.userId && this.config.featureFlagService && this.config.amplitudeApiKey);
|
|
127
|
+
if (!isReady) {
|
|
128
|
+
logger_default.logDebug("AmplitudeService is not ready", {
|
|
129
|
+
isReady,
|
|
130
|
+
userId: this.config.userId,
|
|
131
|
+
hasFeatureFlagService: !!this.config.featureFlagService,
|
|
132
|
+
hasAmplitudeApiKey: !!this.config.amplitudeApiKey
|
|
133
|
+
});
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
if (!this.amplitudeClient) {
|
|
137
|
+
const currentAmplitudeInstance = createInstance();
|
|
138
|
+
currentAmplitudeInstance.add(this.getEventTrackingEnrichment());
|
|
139
|
+
currentAmplitudeInstance.init(this.config.amplitudeApiKey, this.config.userId, {
|
|
140
|
+
serverZone: this.config.dataResidency,
|
|
141
|
+
trackingOptions: { ipAddress: true },
|
|
142
|
+
autocapture: {
|
|
143
|
+
attribution: true,
|
|
144
|
+
pageViews: { trackHistoryChanges: "pathOnly" },
|
|
145
|
+
sessions: false,
|
|
146
|
+
formInteractions: false,
|
|
147
|
+
fileDownloads: false
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
this.amplitudeClient = currentAmplitudeInstance;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async trackEvent({ eventName, eventProps, eventGroups, alsoSendToGoogleAnalytics = false }) {
|
|
154
|
+
logger_default.logDebug("Submitting event", eventName);
|
|
155
|
+
try {
|
|
156
|
+
const decoratedEventName = `[Spiffy] ${eventName}`;
|
|
157
|
+
if (!this.amplitudeClient) {
|
|
158
|
+
logger_default.logWarn("amplitude client undefined", void 0, { event_name: decoratedEventName });
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
const eventData = JSON.stringify({
|
|
162
|
+
eventName,
|
|
163
|
+
eventProps,
|
|
164
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString()
|
|
165
|
+
});
|
|
166
|
+
const data = new TextEncoder().encode(eventData);
|
|
167
|
+
const hashBuffer = await crypto.subtle.digest("SHA-256", data);
|
|
168
|
+
const currentInsertId = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
169
|
+
logger_default.logDebug(`amplitude tracking ${decoratedEventName}`, null, {
|
|
170
|
+
event_name: decoratedEventName,
|
|
171
|
+
props: eventProps
|
|
172
|
+
});
|
|
173
|
+
this.amplitudeClient.track(decoratedEventName, {
|
|
174
|
+
...this.getDefaultTrackingProps(),
|
|
175
|
+
...eventProps,
|
|
176
|
+
...eventProps ? this.eventPropsToPrefixedEventProps(eventName, eventProps) : {}
|
|
177
|
+
}, {
|
|
178
|
+
...eventGroups,
|
|
179
|
+
insert_id: currentInsertId
|
|
180
|
+
});
|
|
181
|
+
if (alsoSendToGoogleAnalytics && this.config.orgGaConfig) {
|
|
182
|
+
logger_default.logDebug("[spiffy-ai] GA tracking", decoratedEventName);
|
|
183
|
+
if (typeof window !== "undefined" && window.dataLayer) window.dataLayer.push({
|
|
184
|
+
event: decoratedEventName,
|
|
185
|
+
eventProps
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
} catch (err) {
|
|
189
|
+
logger_default.logError("[spiffy-ai] Error tracking event", err, {
|
|
190
|
+
eventName,
|
|
191
|
+
eventProps
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
setSupplementalDefaultProps(props) {
|
|
196
|
+
this.supplementalDefaultProps = props;
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
//#endregion
|
|
201
|
+
export { AmplitudeService, SpiffyMetricsEventName };
|
|
202
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlU2VydmljZS5qcyIsIm5hbWVzIjpbImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvYW1wbGl0dWRlU2VydmljZS9hbXBsaXR1ZGVTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUluc3RhbmNlIH0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3Nlcic7XG5pbXBvcnQgeyBFdmVudHNEaXNwYXRjaGVyLCBTcGlmZnlFdmVudCB9IGZyb20gJ3NyYy9ldmVudHMnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlS2V5cyB9IGZyb20gJ3NyYy9jb250ZXh0cy9sb2NhbFN0b3JhZ2VDb250ZXh0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckNsaWVudCxcbiAgRW5yaWNobWVudFBsdWdpbixcbiAgRXZlbnQsXG4gIFNlcnZlclpvbmVUeXBlLFxufSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy10eXBlcyc7XG5pbXBvcnQgeyBGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcblxuZXhwb3J0IGVudW0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB7XG4gIEJ1bmRsZUxvYWRlZCA9ICdCdW5kbGUgTG9hZGVkJyxcbiAgQ2hhdExpdmVBZ2VudEJ0bkNsaWNrID0gJ0NoYXQgTGl2ZSBBZ2VudCBCdG4gQ2xpY2snLFxuICBDaGF0RmxvYXRpbmdCdXR0b25WaXNpYmxlID0gJ0NoYXQgRmxvYXRpbmcgQnV0dG9uIFZpc2libGUnLFxuICBDaGF0Q29tcG9uZW50VmlzaWJsZSA9ICdDaGF0IENvbXBvbmVudCBWaXNpYmxlJyxcbiAgQ2hhdENvbXBvbmVudEV4cGFuZGVkID0gJ0NoYXQgQ29tcG9uZW50IEV4cGFuZGVkJyxcbiAgQ2hhdENvbXBvbmVudENvbGxhcHNlZCA9ICdDaGF0IENvbXBvbmVudCBDb2xsYXBzZWQnLFxuICBDaGF0VXNlck1lc3NhZ2VJbnB1dCA9ICdDaGF0IFVzZXIgTWVzc2FnZSBJbnB1dCcsXG4gIENoYXRTdWdnZXN0aW9uQ2xpY2tlZCA9ICdDaGF0IFN1Z2dlc3Rpb24gQ2xpY2tlZCcsXG4gIENoYXRBc3Npc3RhbnRSZXNwb25zZSA9ICdDaGF0IEFzc2lzdGFudCBSZXNwb25zZScsXG4gIFByb2R1Y3RDYXJkQ2xpY2tlZCA9ICdQcm9kdWN0IENhcmQgQ2xpY2tlZCcsXG4gIFByb2R1Y3RSZXZpZXdDYXJkQ2xpY2tlZCA9ICdQcm9kdWN0IFJldmlldyBDYXJkIENsaWNrZWQnLFxuICBBZGRUb0NhcnRDbGlja2VkID0gJ0FkZCBUbyBDYXJ0IENsaWNrZWQnLFxuICBQcm9tcHRDYXJkQ2xpY2tlZCA9ICdQcm9tcHQgQ2FyZCBDbGlja2VkJyxcbiAgU3VwcG9ydGVkRXZlbnQgPSAnU3VwcG9ydGVkIEV2ZW50JyxcbiAgU2VhcmNoQmFja1RvUmVzcG9uc2VDbGlja2VkID0gJ1NlYXJjaCBCYWNrIHRvIFJlc3BvbnNlIENsaWNrZWQnLFxuICBQZXJmb3JtYW5jZU1ldHJpY3MgPSAnUGVyZm9ybWFuY2UgTWV0cmljcycsXG4gIFNlYXJjaEJhckNsaWNrZWQgPSAnU2VhcmNoIEJhciBDbGlja2VkJyxcbiAgT3JkZXJMb29rdXBTdGFydGVkID0gJ09yZGVyIExvb2t1cCBTdGFydGVkJyxcbiAgT3JkZXJMb29rdXBGb3JtU3VibWl0dGVkID0gJ09yZGVyIExvb2t1cCBGb3JtIFN1Ym1pdHRlZCcsXG4gIFNlYXJjaENvbXBvbmVudFZpc2libGUgPSAnU2VhcmNoIENvbXBvbmVudCBWaXNpYmxlJyxcbiAgU2VhcmNoWmVyb1N0YXRlU3VnZ2VzdGlvbkNsaWNrZWQgPSAnU2VhcmNoIFplcm8gU3RhdGUgU3VnZ2VzdGlvbiBDbGlja2VkJywgLy8gVGhpcyBpcyB0aGUgc2Nyb2xsaW5nIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBidXR0b25zIGluIGdsb2JhbCBzZWFyY2hcbiAgU2VhcmNoSW5wdXRTdGFydGVkID0gJ1NlYXJjaCBJbnB1dCBTdGFydGVkJyxcbiAgU2VhcmNoUXVlcnlTdWJtaXR0ZWQgPSAnU2VhcmNoIFF1ZXJ5IFN1Ym1pdHRlZCcsXG4gIC8vIFNlYXJjaEF1dG9jb21wbGV0ZVZpZXdlZCA9ICdTZWFyY2ggQXV0b2NvbXBsZXRlIFZpZXdlZCcsIC8vIFRPRE86IGFkZCB0aGlzIHdoZW4gYXV0b2NvbXBsZXRlIGlzIGFkZGVkXG4gIC8vIFNlYXJjaEF1dG9jb21wbGV0ZUNsaWNrZWQgPSAnU2VhcmNoIEF1dG9jb21wbGV0ZSBDbGlja2VkJywgLy8gVE9ETzogYWRkIHRoaXMgd2hlbiBhdXRvY29tcGxldGUgaXMgYWRkZWRcbiAgU2VhcmNoUmVzdWx0c1ZpZXdlZCA9ICdTZWFyY2ggUmVzdWx0cyBWaWV3ZWQnLFxuICBTZWFyY2hUaW1lVG9GaXJzdENsaWNrID0gJ1NlYXJjaCBUaW1lIHRvIEZpcnN0IENsaWNrJyxcbiAgU2VhcmNoWmVyb1Jlc3VsdHNSYXRlID0gJ1NlYXJjaCBaZXJvIFJlc3VsdHMgUmF0ZScsXG4gIFNlYXJjaEZpbHRlckNsaWNrZWQgPSAnU2VhcmNoIEZpbHRlciBDbGlja2VkJyxcbiAgU2VhcmNoU29ydENsaWNrZWQgPSAnU2VhcmNoIFNvcnQgQ2xpY2tlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhY2tFdmVudFBhcmFtcyB7XG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZTtcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEdyb3Vwcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnIHtcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGFtcGxpdHVkZUFwaUtleTogc3RyaW5nO1xuICBkYXRhUmVzaWRlbmN5OiBzdHJpbmc7XG4gIGVudjogc3RyaW5nO1xuICBjb250ZXh0U291cmNlOiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZTogc3RyaW5nO1xuICBmZWF0dXJlRmxhZ1NlcnZpY2U6IEZlYXR1cmVGbGFnU2VydmljZTtcbiAgb3JnR2FDb25maWc/OiB1bmtub3duO1xuICBzaG93PzogYm9vbGVhbjtcbiAgZ2V0TG9jYWxTdG9yYWdlSXRlbT86IChrZXk6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGNsYXNzIEFtcGxpdHVkZVNlcnZpY2Uge1xuICBwcml2YXRlIGFtcGxpdHVkZUNsaWVudDogQnJvd3NlckNsaWVudCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4gfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG5cbiAgcHJpdmF0ZSBjb25maWc6IEFtcGxpdHVkZVNlcnZpY2VDb25maWc7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBBbXBsaXR1ZGVTZXJ2aWNlQ29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgaXNSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQm9vbGVhbihcbiAgICAgIHRoaXMuY29uZmlnLnVzZXJJZCAmJlxuICAgICAgdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlICYmXG4gICAgICB0aGlzLmNvbmZpZy5hbXBsaXR1ZGVBcGlLZXkgJiZcbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUl0ZW0oa2V5OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAodGhpcy5jb25maWcuZ2V0TG9jYWxTdG9yYWdlSXRlbSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdldExvY2FsU3RvcmFnZUl0ZW0oa2V5KTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRUcmFja2luZ1Byb3BzKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBmZWF0dXJlR2F0ZXMgPSBPYmplY3QuZW50cmllcyh0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UuZ2V0RmVhdHVyZUZsYWdzKCkpO1xuICAgIGNvbnN0IGdhdGVzUHJvcHMgPVxuICAgICAgZmVhdHVyZUdhdGVzLmxlbmd0aCA+IDBcbiAgICAgICAgPyBmZWF0dXJlR2F0ZXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoYWNjLCBbbmFtZSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2BmZWF0dXJlX2dhdGUuJHtuYW1lfWBdOiB2YWx1ZSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICB9LCB7fSlcbiAgICAgICAgOiB7fTtcbiAgICBjb25zdCBleHBlcmltZW50UHJvcHMgPSB7fTsgLy8gTm8gZGlyZWN0IGVxdWl2YWxlbnQgZm9yIGV4cGVyaW1lbnRzIGluIEVudml2ZUNvbmZpZyB5ZXRcblxuICAgIGNvbnN0IG9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyA9IHtcbiAgICAgIC4uLmdhdGVzUHJvcHMsXG4gICAgICAuLi5leHBlcmltZW50UHJvcHMsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5vcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMsXG4gICAgICAuLi50aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICAgIC8vIFRPRE86IG9yZ19pZCBpcyBub3QgZGlyZWN0bHkgYXZhaWxhYmxlIGluIEVudml2ZUNvbmZpZy4gTmVlZCB0byBmaW5kIGEgbmV3IHNvdXJjZSBvciBkZXJpdmUgaXQuXG4gICAgICAvLyBvcmdfaWQ6IG9yZ0NvbmZpZz8ub3JnPy5vcmc/LmlkLFxuICAgICAgYXBwX2lkOiAnY29tbWVyY2UtY2hhdC1yZWFjdC1jb21wb25lbnQnLFxuICAgICAgY2hhdF9pZDogdGhpcy5nZXRMb2NhbFN0b3JhZ2VJdGVtKExvY2FsU3RvcmFnZUtleXMuQ2hhdElkKSxcbiAgICAgIGVudjogdGhpcy5jb25maWcuZW52IHx8ICd1bmtub3duJyxcbiAgICAgIGFwcF9zb3VyY2U6IHRoaXMuY29uZmlnLmNvbnRleHRTb3VyY2UsXG4gICAgICAnb3JnLnNob3J0X25hbWUnOiB0aGlzLmNvbmZpZy5vcmdTaG9ydE5hbWUsXG4gICAgICAndXNlci5pZCc6IHRoaXMuY29uZmlnLnVzZXJJZCxcbiAgICAgICdjZHAudXNlcl9pZCc6IG51bGwsXG4gICAgICAnY2RwLnByb3ZpZGVyJzogbnVsbCxcbiAgICAgICdldmVudC5zb3VyY2UnOiAnd2ViLWJyb3dzZXInLFxuICAgICAgJ2V2ZW50LnR5cGUnOiAndXNlci1hY3Rpdml0eScsXG4gICAgICAnZXZlbnQuaWQnOiBudWxsLFxuICAgICAgJ2V2ZW50LmNoYW5uZWwnOiAnd2ViJyxcbiAgICAgICdldmVudC50aW1lc3RhbXAnOiBudWxsLFxuICAgIH07XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBwcml2YXRlIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhcbiAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gICAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICBjb25zdCBwcmVmaXggPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICdfJyk7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZShcbiAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBhY2NbYCR7cHJlZml4fS4ke2tleX1gXSA9IHZhbHVlO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSxcbiAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCk6IEVucmljaG1lbnRQbHVnaW4ge1xuICAgIGlmICh0aGlzLmludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogJ3BhZ2Utdmlldy10cmFja2luZy1lbnJpY2htZW50JyxcbiAgICAgIHR5cGU6ICdlbnJpY2htZW50JyxcbiAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBleGVjdXRlOiBhc3luYyAoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4gPT4ge1xuICAgICAgICBsZXQgZW5yaWNoZWRFdmVudDogRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbnJpY2ggPSBbXG4gICAgICAgICAgJ1tBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkJyxcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmICh0aGlzLmNvbmZpZy5zaG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMuc2hvdyddID0gU3RyaW5nKHRoaXMuY29uZmlnLnNob3cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRGZWF0dXJlcyA9IHRoaXMuY29uZmlnLmZlYXR1cmVGbGFnU2VydmljZS5nZXRGZWF0dXJlRmxhZ3MoKTtcbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoZW5hYmxlZEZlYXR1cmVzKS5yZWR1Y2U8XG4gICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgPihcbiAgICAgICAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbYGVuYWJsZWRGZWF0dXJlcy4ke2tleX1gXTogYCR7dmFsdWV9YCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHRpbWluZ1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAndGltaW5nLmVucmljaGVkX2F0X21zJzpcbiAgICAgICAgICAgICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cucGVyZm9ybWFuY2U/Lm5vdygpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0ge1xuICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICBldmVudF9wcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmV2ZW50X3Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRoaXMuZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoKSxcbiAgICAgICAgICAgICAgLi4uZ2xvYmFsUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4uZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4udGltaW5nUHJvcGVydGllcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBFdmVudHNEaXNwYXRjaGVyLmRpc3BhdGNoKFNwaWZmeUV2ZW50LkFNUExJVFVERV9FVkVOVCwgZW5yaWNoZWRFdmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGVucmljaGVkRXZlbnQ7XG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5pbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ID0gZW5yaWNobWVudDtcbiAgICByZXR1cm4gZW5yaWNobWVudDtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBpc1JlYWR5ID0gQm9vbGVhbihcbiAgICAgIHRoaXMuY29uZmlnLnVzZXJJZCAmJiB0aGlzLmNvbmZpZy5mZWF0dXJlRmxhZ1NlcnZpY2UgJiYgdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5LFxuICAgICk7XG5cbiAgICBpZiAoIWlzUmVhZHkpIHtcbiAgICAgIExvZ2dlci5sb2dEZWJ1ZygnQW1wbGl0dWRlU2VydmljZSBpcyBub3QgcmVhZHknLCB7XG4gICAgICAgIGlzUmVhZHksXG4gICAgICAgIHVzZXJJZDogdGhpcy5jb25maWcudXNlcklkLFxuICAgICAgICBoYXNGZWF0dXJlRmxhZ1NlcnZpY2U6ICEhdGhpcy5jb25maWcuZmVhdHVyZUZsYWdTZXJ2aWNlLFxuICAgICAgICBoYXNBbXBsaXR1ZGVBcGlLZXk6ICEhdGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5LFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFtcGxpdHVkZUNsaWVudCkge1xuICAgICAgY29uc3QgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50ID0gY3JlYXRlSW5zdGFuY2UoKTtcblxuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmFkZCh0aGlzLmdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCkpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmluaXQodGhpcy5jb25maWcuYW1wbGl0dWRlQXBpS2V5LCB0aGlzLmNvbmZpZy51c2VySWQsIHtcbiAgICAgICAgc2VydmVyWm9uZTogdGhpcy5jb25maWcuZGF0YVJlc2lkZW5jeSBhcyBTZXJ2ZXJab25lVHlwZSxcbiAgICAgICAgdHJhY2tpbmdPcHRpb25zOiB7XG4gICAgICAgICAgaXBBZGRyZXNzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhdXRvY2FwdHVyZToge1xuICAgICAgICAgIGF0dHJpYnV0aW9uOiB0cnVlLFxuICAgICAgICAgIHBhZ2VWaWV3czoge1xuICAgICAgICAgICAgdHJhY2tIaXN0b3J5Q2hhbmdlczogJ3BhdGhPbmx5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlc3Npb25zOiBmYWxzZSxcbiAgICAgICAgICBmb3JtSW50ZXJhY3Rpb25zOiBmYWxzZSxcbiAgICAgICAgICBmaWxlRG93bmxvYWRzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hbXBsaXR1ZGVDbGllbnQgPSBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdHJhY2tFdmVudCh7XG4gICAgZXZlbnROYW1lLFxuICAgIGV2ZW50UHJvcHMsXG4gICAgZXZlbnRHcm91cHMsXG4gICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyA9IGZhbHNlLFxuICB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgTG9nZ2VyLmxvZ0RlYnVnKCdTdWJtaXR0aW5nIGV2ZW50JywgZXZlbnROYW1lKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG5cbiAgICAgIGlmICghdGhpcy5hbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgTG9nZ2VyLmxvZ1dhcm4oJ2FtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoZXZlbnREYXRhKTtcbiAgICAgIC8vIGNhbGN1bGF0ZSBhIGhhc2ggb2YgdGhlIGV2ZW50IHByb3BlcnRpZXMgdG8gdXNlIGFzIHRoZSBpbnNlcnRfaWQgc28gdGhhdCBkdXBsaWNhdGUgZXZlbnRzXG4gICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkIGJ5IEFtcGxpdHVkZVxuICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gICAgICBjb25zdCBoYXNoQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpKTtcbiAgICAgIGNvbnN0IGN1cnJlbnRJbnNlcnRJZCA9IGhhc2hBcnJheS5tYXAoYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcblxuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHByb3BzOiBldmVudFByb3BzLFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgIHtcbiAgICAgICAgICAuLi50aGlzLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgICAuLi4oZXZlbnRQcm9wcyA/IHRoaXMuZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKGV2ZW50TmFtZSwgZXZlbnRQcm9wcykgOiB7fSksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICBpbnNlcnRfaWQ6IGN1cnJlbnRJbnNlcnRJZCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGlmIChhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzICYmIHRoaXMuY29uZmlnLm9yZ0dhQ29uZmlnKSB7XG4gICAgICAgIC8vIFRPRE86IEFkZCBpbiB3aW5kb3dEYXRhTGF5ZXJTZXJ2aWNlIG9yIGNvbnRleHQgYWx0ZXJuYXRpdmUgYW5kIGhvb2sgaXQgdXAgaGVyZVxuICAgICAgICBMb2dnZXIubG9nRGVidWcoJ1tzcGlmZnktYWldIEdBIHRyYWNraW5nJywgZGVjb3JhdGVkRXZlbnROYW1lKTtcbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5kYXRhTGF5ZXIpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICAgICh3aW5kb3cuZGF0YUxheWVyIGFzIGFueVtdKS5wdXNoKHtcbiAgICAgICAgICAgIGV2ZW50OiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIEVycm9yIHRyYWNraW5nIGV2ZW50JywgZXJyLCB7XG4gICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyA9IHByb3BzO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBWUEsSUFBWSw0RUFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7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
|