@envive-ai/react-hooks 0.3.11 → 0.3.13
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/application/commerce-api.cjs +21 -41
- package/dist/application/commerce-api.d.cts +2 -4
- package/dist/application/commerce-api.d.ts +2 -4
- package/dist/application/commerce-api.js +21 -41
- package/dist/application/models/api/widgetTextRequest.d.cts +2 -1
- package/dist/application/models/api/widgetTextRequest.d.ts +2 -1
- package/dist/application/models/chatElementDisplayLocationV3.cjs +3 -1
- package/dist/application/models/chatElementDisplayLocationV3.d.cts +3 -1
- package/dist/application/models/chatElementDisplayLocationV3.d.ts +3 -1
- package/dist/application/models/chatElementDisplayLocationV3.js +3 -1
- package/dist/application/models/guards/api/index.cjs +6 -6
- package/dist/application/models/guards/api/index.js +6 -6
- package/dist/application/models/index.cjs +18 -18
- package/dist/application/models/index.js +18 -18
- package/dist/application/models/validators/validateResponse.cjs +3 -3
- package/dist/application/models/validators/validateResponse.js +3 -3
- package/dist/application/models/variantInfo/variantInfo.cjs +1 -1
- package/dist/application/models/variantInfo/variantInfo.d.cts +1 -1
- package/dist/application/models/variantInfo/variantInfo.d.ts +1 -1
- package/dist/application/models/variantInfo/variantInfo.js +1 -1
- package/dist/application/utils/analyticsUtils.cjs +5 -5
- package/dist/application/utils/analyticsUtils.d.cts +2 -2
- package/dist/application/utils/analyticsUtils.d.ts +2 -2
- package/dist/application/utils/analyticsUtils.js +3 -3
- package/dist/application/utils/nodeSelector.cjs +12 -14
- package/dist/application/utils/nodeSelector.js +12 -14
- package/dist/application/utils/widgetTextRequestToApiRequest.cjs +2 -1
- package/dist/application/utils/widgetTextRequestToApiRequest.js +2 -1
- package/dist/atoms/app/index.d.cts +7 -7
- package/dist/atoms/app/index.d.ts +7 -7
- package/dist/atoms/chat/chatState.cjs +5 -5
- package/dist/atoms/chat/chatState.d.cts +19 -19
- package/dist/atoms/chat/chatState.d.ts +19 -19
- package/dist/atoms/chat/chatState.js +3 -3
- package/dist/atoms/chat/form.d.cts +2 -2
- package/dist/atoms/chat/form.d.ts +2 -2
- package/dist/atoms/chat/index.d.ts +2 -2
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/messageQueue.d.cts +6 -6
- package/dist/atoms/chat/messageQueue.d.ts +6 -6
- 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 +4 -4
- 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 -3
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/envive/enviveConfig.d.cts +13 -13
- package/dist/atoms/envive/enviveConfig.d.ts +13 -13
- 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.d.cts +4 -4
- package/dist/atoms/org/graphqlConfig.d.ts +4 -4
- package/dist/atoms/org/index.cjs +1 -1
- package/dist/atoms/org/index.js +1 -1
- 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.d.cts +17 -17
- package/dist/atoms/search/searchAPI.d.cts +13 -13
- package/dist/atoms/search/searchAPI.d.ts +13 -13
- package/dist/atoms/search/utils.d.cts +1 -1
- package/dist/atoms/search/utils.d.ts +1 -1
- package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
- package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
- package/dist/contexts/amplitudeContext/amplitudeContext.cjs +5 -5
- package/dist/contexts/amplitudeContext/amplitudeContext.d.cts +3 -2
- package/dist/contexts/amplitudeContext/amplitudeContext.d.ts +3 -2
- package/dist/contexts/amplitudeContext/amplitudeContext.js +5 -5
- package/dist/contexts/amplitudeContext/index.cjs +3 -3
- package/dist/contexts/amplitudeContext/index.d.cts +1 -1
- package/dist/contexts/amplitudeContext/index.d.ts +1 -1
- package/dist/contexts/amplitudeContext/index.js +1 -1
- package/dist/contexts/cdnContext/cdnContext.cjs +1 -1
- package/dist/contexts/cdnContext/cdnContext.js +1 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +1 -1
- package/dist/contexts/enviveConfigContext/enviveConfigContext.js +1 -1
- package/dist/contexts/enviveContext/enviveContext.cjs +17 -14
- package/dist/contexts/enviveContext/enviveContext.d.cts +4 -1
- package/dist/contexts/enviveContext/enviveContext.d.ts +4 -1
- package/dist/contexts/enviveContext/enviveContext.js +17 -14
- package/dist/contexts/graphqlContext/graphqlContext.cjs +2 -2
- package/dist/contexts/graphqlContext/graphqlContext.js +2 -2
- package/dist/contexts/graphqlContext/mockV3Config.cjs +3 -2
- package/dist/contexts/graphqlContext/mockV3Config.js +3 -2
- package/dist/contexts/hardcopyContext/hardcopyContext.cjs +18 -8
- package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +6 -4
- package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +6 -4
- package/dist/contexts/hardcopyContext/hardcopyContext.js +16 -6
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +1 -1
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +1 -1
- package/dist/contexts/pageContext/pageContext.cjs +11 -7
- package/dist/contexts/pageContext/pageContext.js +11 -7
- package/dist/contexts/pageContext/types.d.cts +1 -1
- package/dist/contexts/salesAgentContext/chatAPI.cjs +11 -11
- package/dist/contexts/salesAgentContext/chatAPI.js +4 -4
- package/dist/contexts/salesAgentContext/salesAgentContext.cjs +1 -1
- package/dist/contexts/salesAgentContext/salesAgentContext.js +1 -1
- package/dist/contexts/salesAgentContext/salesAgentService.cjs +9 -8
- package/dist/contexts/salesAgentContext/salesAgentService.js +7 -6
- package/dist/contexts/searchContext/searchContext.cjs +2 -2
- package/dist/contexts/searchContext/searchContext.js +2 -2
- package/dist/contexts/systemSettingsContext/systemSettingsContext.cjs +1 -1
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.ts +2 -2
- package/dist/contexts/systemSettingsContext/systemSettingsContext.js +1 -1
- package/dist/contexts/types.cjs +1 -1
- package/dist/contexts/types.d.cts +4 -2
- package/dist/contexts/types.d.ts +4 -2
- package/dist/contexts/types.js +1 -1
- package/dist/contexts/typesV3.cjs +1 -1
- package/dist/contexts/typesV3.d.cts +27 -2
- package/dist/contexts/typesV3.d.ts +27 -2
- package/dist/contexts/typesV3.js +1 -1
- package/dist/contexts/userIdentityContext/userIdentityContext.cjs +2 -34
- package/dist/contexts/userIdentityContext/userIdentityContext.d.cts +1 -2
- package/dist/contexts/userIdentityContext/userIdentityContext.d.ts +1 -2
- package/dist/contexts/userIdentityContext/userIdentityContext.js +2 -33
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.cjs +1 -1
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.cts +2 -2
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.d.ts +2 -2
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.js +1 -1
- package/dist/hooks/ChatToggle/useChatToggle.cjs +6 -5
- package/dist/hooks/ChatToggle/useChatToggle.js +4 -3
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
- package/dist/hooks/Search/useSearch.cjs +9 -8
- package/dist/hooks/Search/useSearch.js +4 -3
- package/dist/hooks/Search/useSearchInput.cjs +7 -7
- package/dist/hooks/Search/useSearchInput.js +4 -4
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +6 -5
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +2 -2
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +2 -2
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +3 -2
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.cjs +4 -3
- package/dist/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.js +3 -2
- package/dist/hooks/utils.d.ts +1 -1
- package/dist/services/amplitudeService/amplitudeService.cjs +17 -57
- package/dist/services/amplitudeService/amplitudeService.d.cts +4 -47
- package/dist/services/amplitudeService/amplitudeService.d.ts +4 -47
- package/dist/services/amplitudeService/amplitudeService.js +14 -52
- package/dist/services/amplitudeService/eventNames.cjs +59 -0
- package/dist/services/amplitudeService/eventNames.d.cts +54 -0
- package/dist/services/amplitudeService/eventNames.d.ts +54 -0
- package/dist/services/amplitudeService/eventNames.js +57 -0
- package/dist/services/amplitudeService/index.cjs +3 -2
- package/dist/services/amplitudeService/index.d.cts +2 -1
- package/dist/services/amplitudeService/index.d.ts +2 -1
- package/dist/services/amplitudeService/index.js +2 -1
- package/dist/services/ga4ProjectionService/ga4EventSchema.cjs +108 -0
- package/dist/services/ga4ProjectionService/ga4EventSchema.js +108 -0
- package/dist/services/ga4ProjectionService/ga4ProjectionService.cjs +71 -0
- package/dist/services/ga4ProjectionService/ga4ProjectionService.js +71 -0
- package/dist/types/customerService.cjs +2 -1
- package/dist/types/customerService.d.cts +2 -1
- package/dist/types/customerService.d.ts +2 -1
- package/dist/types/customerService.js +2 -1
- package/dist/types/enviveConfig.d.cts +4 -1
- package/dist/types/enviveConfig.d.ts +4 -1
- package/package.json +2 -7
- package/src/application/commerce-api.ts +25 -49
- package/src/application/models/api/widgetTextRequest.ts +1 -0
- package/src/application/models/chatElementDisplayLocationV3.ts +2 -0
- package/src/application/models/variantInfo/variantInfo.ts +1 -1
- package/src/application/utils/analyticsUtils.ts +1 -1
- package/src/application/utils/nodeSelector.ts +15 -14
- package/src/application/utils/widgetTextRequestToApiRequest.ts +1 -0
- package/src/atoms/chat/chatState.ts +1 -1
- package/src/atoms/chat/replies.ts +1 -1
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +0 -1
- package/src/contexts/enviveContext/enviveContext.tsx +5 -2
- package/src/contexts/graphqlContext/mockV3Config.ts +3 -0
- package/src/contexts/hardcopyContext/hardcopyContext.tsx +20 -2
- package/src/contexts/pageContext/pageContext.tsx +9 -5
- package/src/contexts/salesAgentContext/chatAPI.ts +0 -1
- package/src/contexts/salesAgentContext/salesAgentService.ts +5 -2
- package/src/contexts/types.ts +3 -1
- package/src/contexts/typesV3.ts +28 -0
- package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +1 -66
- package/src/contexts/userIdentityContext/userIdentityContext.tsx +0 -47
- package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +2 -4
- package/src/hooks/ChatToggle/useChatToggle.ts +2 -4
- package/src/hooks/Search/useSearch.tsx +2 -4
- package/src/hooks/Search/useSearchInput.ts +1 -1
- package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +2 -4
- package/src/hooks/UpdateAnalyticsProps/useUpdateAnalyticsProps.ts +2 -4
- package/src/services/amplitudeService/amplitudeService.ts +14 -50
- package/src/services/amplitudeService/eventNames.ts +52 -0
- package/src/services/ga4ProjectionService/__tests__/ga4ProjectionService.test.ts +334 -0
- package/src/services/ga4ProjectionService/ga4EventSchema.ts +143 -0
- package/src/services/ga4ProjectionService/ga4ProjectionService.ts +137 -0
- package/src/types/customerService.ts +1 -0
- package/src/types/enviveConfig.ts +3 -0
- package/dist/hooks/IdentifyUser/index.cjs +0 -3
- package/dist/hooks/IdentifyUser/index.d.cts +0 -2
- package/dist/hooks/IdentifyUser/index.d.ts +0 -2
- package/dist/hooks/IdentifyUser/index.js +0 -3
- package/dist/hooks/IdentifyUser/useIdentifyUser.cjs +0 -35
- package/dist/hooks/IdentifyUser/useIdentifyUser.d.cts +0 -10
- package/dist/hooks/IdentifyUser/useIdentifyUser.d.ts +0 -10
- package/dist/hooks/IdentifyUser/useIdentifyUser.js +0 -34
- package/src/hooks/IdentifyUser/index.ts +0 -1
- package/src/hooks/IdentifyUser/useIdentifyUser.ts +0 -29
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const require_eventNames = require('../amplitudeService/eventNames.cjs');
|
|
2
|
+
|
|
3
|
+
//#region src/services/ga4ProjectionService/ga4EventSchema.ts
|
|
4
|
+
/**
|
|
5
|
+
* GA4 Event Schema — single source of truth for Envive → GA4 projection.
|
|
6
|
+
*
|
|
7
|
+
* Every EnviveMetricsEventName MUST have an entry here. The Record type enforces
|
|
8
|
+
* this at compile time — adding a new enum member without a schema entry will
|
|
9
|
+
* cause a TypeScript error.
|
|
10
|
+
*
|
|
11
|
+
* ## How to update this file
|
|
12
|
+
*
|
|
13
|
+
* When adding or modifying event properties, decide whether they belong in `allowedFields` using these criteria:
|
|
14
|
+
* - **Low cardinality** — avoid unbounded values (free text, IDs, URLs, timestamps).
|
|
15
|
+
* - **Non-sensitive** — no PII, user input text, or internal implementation details.
|
|
16
|
+
* - **Flat scalar** — GA4 custom dimensions are flat strings/numbers/booleans.
|
|
17
|
+
* Nested objects should NOT be added; extract specific sub-fields instead.
|
|
18
|
+
* - **Snake_case key** — must already be dot-notation snake_case (e.g. `chat.user_typed`).
|
|
19
|
+
* - **Analytically useful** — the field should enable meaningful filtering/segmentation
|
|
20
|
+
* for merchants in their GA4 dashboards.
|
|
21
|
+
*
|
|
22
|
+
* If excluded from `allowedFields`, the projection layer will automatically drop it.
|
|
23
|
+
*
|
|
24
|
+
* IF IN DOUBT, DON'T HESITATE TO REACH OUT TO THE ANALYTICS TEAM!!!
|
|
25
|
+
*/
|
|
26
|
+
const WIDGET_INTERACTION_DATA_PROJECTIONS = {
|
|
27
|
+
widget_collapsed: { trigger_collapse_source: "collapse_source" },
|
|
28
|
+
product_card_clicked: { trigger_product_id: "product_id" },
|
|
29
|
+
suggestion_scrolled: { trigger_suggestion_id: "suggestion_id" }
|
|
30
|
+
};
|
|
31
|
+
const GA4_EVENT_SCHEMA = {
|
|
32
|
+
[require_eventNames.EnviveMetricsEventName.WidgetRendered]: {
|
|
33
|
+
gaEventName: "envive_widget_rendered",
|
|
34
|
+
allowedFields: [
|
|
35
|
+
"context.page_type",
|
|
36
|
+
"context.page_id",
|
|
37
|
+
"trigger.widget",
|
|
38
|
+
"trigger.widget_role",
|
|
39
|
+
"context.surface"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
[require_eventNames.EnviveMetricsEventName.WidgetInteraction]: {
|
|
43
|
+
gaEventName: "envive_widget_interaction",
|
|
44
|
+
allowedFields: [
|
|
45
|
+
"context.page_type",
|
|
46
|
+
"context.page_id",
|
|
47
|
+
"trigger.widget",
|
|
48
|
+
"trigger.widget_interaction",
|
|
49
|
+
"trigger.entity_role",
|
|
50
|
+
"context.surface"
|
|
51
|
+
],
|
|
52
|
+
widgetInteractionDataProjections: WIDGET_INTERACTION_DATA_PROJECTIONS
|
|
53
|
+
},
|
|
54
|
+
[require_eventNames.EnviveMetricsEventName.ChatRequest]: {
|
|
55
|
+
gaEventName: "envive_chat_request",
|
|
56
|
+
allowedFields: [
|
|
57
|
+
"page_type",
|
|
58
|
+
"page_id",
|
|
59
|
+
"trigger.widget",
|
|
60
|
+
"chat.request_type",
|
|
61
|
+
"chat.user_typed",
|
|
62
|
+
"chat.suggestion_id",
|
|
63
|
+
"chat.suggestion_category",
|
|
64
|
+
"chat.suggestion_created_at",
|
|
65
|
+
"chat.suggestion_is_answer",
|
|
66
|
+
"chat.form_type"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
[require_eventNames.EnviveMetricsEventName.ChatResponse]: {
|
|
70
|
+
gaEventName: "envive_chat_response",
|
|
71
|
+
allowedFields: [
|
|
72
|
+
"page_type",
|
|
73
|
+
"page_id",
|
|
74
|
+
"trigger.widget",
|
|
75
|
+
"chat.user_typed",
|
|
76
|
+
"chat.response_time_ms",
|
|
77
|
+
"chat.product_cards_returned",
|
|
78
|
+
"chat.review_cards_returned"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
[require_eventNames.EnviveMetricsEventName.EnviveInitialized]: {
|
|
82
|
+
gaEventName: "envive_initialized",
|
|
83
|
+
allowedFields: [
|
|
84
|
+
"environment.sales_agent_enabled",
|
|
85
|
+
"environment.envive_enabled",
|
|
86
|
+
"performance.start_time_ms",
|
|
87
|
+
"performance.initialize_time_ms"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
[require_eventNames.EnviveMetricsEventName.PageViewed]: {
|
|
91
|
+
gaEventName: "envive_page_context_evaluated",
|
|
92
|
+
allowedFields: [
|
|
93
|
+
"context.page_type",
|
|
94
|
+
"context.page_id",
|
|
95
|
+
"context.supported",
|
|
96
|
+
"context.ready",
|
|
97
|
+
"context.page_variant_id",
|
|
98
|
+
"environment.envive_enabled"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
[require_eventNames.EnviveMetricsEventName.WidgetTextRequest]: { gaEventName: null },
|
|
102
|
+
[require_eventNames.EnviveMetricsEventName.WidgetTextResponse]: { gaEventName: null },
|
|
103
|
+
[require_eventNames.EnviveMetricsEventName.WidgetTextClicked]: { gaEventName: null }
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
//#endregion
|
|
107
|
+
exports.GA4_EVENT_SCHEMA = GA4_EVENT_SCHEMA;
|
|
108
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0RXZlbnRTY2hlbWEuY2pzIiwibmFtZXMiOlsiV0lER0VUX0lOVEVSQUNUSU9OX0RBVEFfUFJPSkVDVElPTlM6IFdpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb24iLCJHQTRfRVZFTlRfU0NIRU1BOiBSZWNvcmQ8RW52aXZlTWV0cmljc0V2ZW50TmFtZSwgR0E0RXZlbnRTY2hlbWFFbnRyeT4iLCJFbnZpdmVNZXRyaWNzRXZlbnROYW1lIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNEV2ZW50U2NoZW1hLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR0E0IEV2ZW50IFNjaGVtYSDigJQgc2luZ2xlIHNvdXJjZSBvZiB0cnV0aCBmb3IgRW52aXZlIOKGkiBHQTQgcHJvamVjdGlvbi5cbiAqXG4gKiBFdmVyeSBFbnZpdmVNZXRyaWNzRXZlbnROYW1lIE1VU1QgaGF2ZSBhbiBlbnRyeSBoZXJlLiBUaGUgUmVjb3JkIHR5cGUgZW5mb3JjZXNcbiAqIHRoaXMgYXQgY29tcGlsZSB0aW1lIOKAlCBhZGRpbmcgYSBuZXcgZW51bSBtZW1iZXIgd2l0aG91dCBhIHNjaGVtYSBlbnRyeSB3aWxsXG4gKiBjYXVzZSBhIFR5cGVTY3JpcHQgZXJyb3IuXG4gKlxuICogIyMgSG93IHRvIHVwZGF0ZSB0aGlzIGZpbGVcbiAqXG4gKiBXaGVuIGFkZGluZyBvciBtb2RpZnlpbmcgZXZlbnQgcHJvcGVydGllcywgZGVjaWRlIHdoZXRoZXIgdGhleSBiZWxvbmcgaW4gYGFsbG93ZWRGaWVsZHNgIHVzaW5nIHRoZXNlIGNyaXRlcmlhOlxuICogLSAqKkxvdyBjYXJkaW5hbGl0eSoqIOKAlCBhdm9pZCB1bmJvdW5kZWQgdmFsdWVzIChmcmVlIHRleHQsIElEcywgVVJMcywgdGltZXN0YW1wcykuXG4gKiAtICoqTm9uLXNlbnNpdGl2ZSoqIOKAlCBubyBQSUksIHVzZXIgaW5wdXQgdGV4dCwgb3IgaW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZGV0YWlscy5cbiAqIC0gKipGbGF0IHNjYWxhcioqIOKAlCBHQTQgY3VzdG9tIGRpbWVuc2lvbnMgYXJlIGZsYXQgc3RyaW5ncy9udW1iZXJzL2Jvb2xlYW5zLlxuICogICBOZXN0ZWQgb2JqZWN0cyBzaG91bGQgTk9UIGJlIGFkZGVkOyBleHRyYWN0IHNwZWNpZmljIHN1Yi1maWVsZHMgaW5zdGVhZC5cbiAqIC0gKipTbmFrZV9jYXNlIGtleSoqIOKAlCBtdXN0IGFscmVhZHkgYmUgZG90LW5vdGF0aW9uIHNuYWtlX2Nhc2UgKGUuZy4gYGNoYXQudXNlcl90eXBlZGApLlxuICogLSAqKkFuYWx5dGljYWxseSB1c2VmdWwqKiDigJQgdGhlIGZpZWxkIHNob3VsZCBlbmFibGUgbWVhbmluZ2Z1bCBmaWx0ZXJpbmcvc2VnbWVudGF0aW9uXG4gKiAgIGZvciBtZXJjaGFudHMgaW4gdGhlaXIgR0E0IGRhc2hib2FyZHMuXG4gKlxuICogSWYgZXhjbHVkZWQgZnJvbSBgYWxsb3dlZEZpZWxkc2AsIHRoZSBwcm9qZWN0aW9uIGxheWVyIHdpbGwgYXV0b21hdGljYWxseSBkcm9wIGl0LlxuICpcbiAqIElGIElOIERPVUJULCBET04nVCBIRVNJVEFURSBUTyBSRUFDSCBPVVQgVE8gVEhFIEFOQUxZVElDUyBURUFNISEhXG4gKi9cbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi9hbXBsaXR1ZGVTZXJ2aWNlL2V2ZW50TmFtZXMnO1xuXG4vKipcbiAqIERlZmluZXMgd2hpY2ggZmllbGRzIHRvIGV4dHJhY3QgZnJvbSBgdHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb25fZGF0YWBcbiAqIGZvciBhIGdpdmVuIGB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbmAgdmFsdWUuXG4gKlxuICogS2V5OiB0aGUgdmFsdWUgb2YgYHRyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uYCAoZS5nLiBcIndpZGdldF9jb2xsYXBzZWRcIilcbiAqIFZhbHVlOiBtYXBwaW5nIG9mIHsgZ2E0RmxhdEtleTogc291cmNlRmllbGRJbldpZGdldEludGVyYWN0aW9uRGF0YSB9XG4gKi9cbmV4cG9ydCB0eXBlIFdpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb24gPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PjtcblxuZXhwb3J0IGludGVyZmFjZSBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZyB7XG4gIGdhRXZlbnROYW1lOiBzdHJpbmc7XG4gIGFsbG93ZWRGaWVsZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICB3aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9ucz86IFdpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR0E0RXhjbHVkZWRFdmVudENvbmZpZyB7XG4gIGdhRXZlbnROYW1lOiBudWxsO1xufVxuXG5leHBvcnQgdHlwZSBHQTRFdmVudFNjaGVtYUVudHJ5ID0gR0E0UHJvamVjdGVkRXZlbnRDb25maWcgfCBHQTRFeGNsdWRlZEV2ZW50Q29uZmlnO1xuXG5jb25zdCBXSURHRVRfSU5URVJBQ1RJT05fREFUQV9QUk9KRUNUSU9OUzogV2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbiA9IHtcbiAgd2lkZ2V0X2NvbGxhcHNlZDogeyB0cmlnZ2VyX2NvbGxhcHNlX3NvdXJjZTogJ2NvbGxhcHNlX3NvdXJjZScgfSxcbiAgcHJvZHVjdF9jYXJkX2NsaWNrZWQ6IHsgdHJpZ2dlcl9wcm9kdWN0X2lkOiAncHJvZHVjdF9pZCcgfSxcbiAgc3VnZ2VzdGlvbl9zY3JvbGxlZDogeyB0cmlnZ2VyX3N1Z2dlc3Rpb25faWQ6ICdzdWdnZXN0aW9uX2lkJyB9LFxufTtcblxuZXhwb3J0IGNvbnN0IEdBNF9FVkVOVF9TQ0hFTUE6IFJlY29yZDxFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBHQTRFdmVudFNjaGVtYUVudHJ5PiA9IHtcbiAgW0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0UmVuZGVyZWRdOiB7XG4gICAgZ2FFdmVudE5hbWU6ICdlbnZpdmVfd2lkZ2V0X3JlbmRlcmVkJyxcbiAgICBhbGxvd2VkRmllbGRzOiBbXG4gICAgICAnY29udGV4dC5wYWdlX3R5cGUnLFxuICAgICAgJ2NvbnRleHQucGFnZV9pZCcsXG4gICAgICAndHJpZ2dlci53aWRnZXQnLFxuICAgICAgJ3RyaWdnZXIud2lkZ2V0X3JvbGUnLFxuICAgICAgJ2NvbnRleHQuc3VyZmFjZScsXG4gICAgXSxcbiAgfSxcblxuICAvLyBUaGlzIGV2ZW50IGlzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWRcbiAgW0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0SW50ZXJhY3Rpb25dOiB7XG4gICAgZ2FFdmVudE5hbWU6ICdlbnZpdmVfd2lkZ2V0X2ludGVyYWN0aW9uJyxcbiAgICBhbGxvd2VkRmllbGRzOiBbXG4gICAgICAnY29udGV4dC5wYWdlX3R5cGUnLFxuICAgICAgJ2NvbnRleHQucGFnZV9pZCcsXG4gICAgICAndHJpZ2dlci53aWRnZXQnLFxuICAgICAgJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uJyxcbiAgICAgICd0cmlnZ2VyLmVudGl0eV9yb2xlJyxcbiAgICAgICdjb250ZXh0LnN1cmZhY2UnLFxuICAgIF0sXG4gICAgd2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnM6IFdJREdFVF9JTlRFUkFDVElPTl9EQVRBX1BST0pFQ1RJT05TLFxuICB9LFxuXG4gIFtFbnZpdmVNZXRyaWNzRXZlbnROYW1lLkNoYXRSZXF1ZXN0XToge1xuICAgIGdhRXZlbnROYW1lOiAnZW52aXZlX2NoYXRfcmVxdWVzdCcsXG4gICAgYWxsb3dlZEZpZWxkczogW1xuICAgICAgJ3BhZ2VfdHlwZScsXG4gICAgICAncGFnZV9pZCcsXG4gICAgICAndHJpZ2dlci53aWRnZXQnLFxuICAgICAgJ2NoYXQucmVxdWVzdF90eXBlJyxcbiAgICAgIC8vICdjaGF0LnJlcXVlc3RfdGV4dCcsIC8vIFRoaXMgaXMgaGlnaCBjYXJkaW5hbGl0eSBhbmQgcG90ZW50aWFsbHkgUElJIGJ1dCB3ZSBtaWdodCB3YW50IHRvIGluY2x1ZGUgaXQgbGF0ZXJcbiAgICAgICdjaGF0LnVzZXJfdHlwZWQnLFxuICAgICAgJ2NoYXQuc3VnZ2VzdGlvbl9pZCcsIC8vIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWRcbiAgICAgICdjaGF0LnN1Z2dlc3Rpb25fY2F0ZWdvcnknLCAvLyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkXG4gICAgICAnY2hhdC5zdWdnZXN0aW9uX2NyZWF0ZWRfYXQnLCAvLyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkXG4gICAgICAnY2hhdC5zdWdnZXN0aW9uX2lzX2Fuc3dlcicsIC8vIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWRcbiAgICAgICdjaGF0LmZvcm1fdHlwZScsIC8vIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWRcbiAgICBdLFxuICB9LFxuXG4gIFtFbnZpdmVNZXRyaWNzRXZlbnROYW1lLkNoYXRSZXNwb25zZV06IHtcbiAgICBnYUV2ZW50TmFtZTogJ2Vudml2ZV9jaGF0X3Jlc3BvbnNlJyxcbiAgICBhbGxvd2VkRmllbGRzOiBbXG4gICAgICAncGFnZV90eXBlJyxcbiAgICAgICdwYWdlX2lkJyxcbiAgICAgICd0cmlnZ2VyLndpZGdldCcsIC8vIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgKG1heWJlIGl0IHNob3VsZCdudCBiZT8/PylcbiAgICAgICdjaGF0LnVzZXJfdHlwZWQnLFxuICAgICAgJ2NoYXQucmVzcG9uc2VfdGltZV9tcycsXG4gICAgICAnY2hhdC5wcm9kdWN0X2NhcmRzX3JldHVybmVkJyxcbiAgICAgICdjaGF0LnJldmlld19jYXJkc19yZXR1cm5lZCcsXG4gICAgXSxcbiAgfSxcblxuICBbRW52aXZlTWV0cmljc0V2ZW50TmFtZS5FbnZpdmVJbml0aWFsaXplZF06IHtcbiAgICBnYUV2ZW50TmFtZTogJ2Vudml2ZV9pbml0aWFsaXplZCcsXG4gICAgYWxsb3dlZEZpZWxkczogW1xuICAgICAgJ2Vudmlyb25tZW50LnNhbGVzX2FnZW50X2VuYWJsZWQnLFxuICAgICAgJ2Vudmlyb25tZW50LmVudml2ZV9lbmFibGVkJyxcbiAgICAgIC8vICdlbnZpcm9ubWVudC5zZWFyY2hfZW5hYmxlZCcsIC8vIEZvciBub3csIHNlYXJjaCBpcyBub3QgaW1wbGVtZW50ZWQuIFdlIHdpbGwgYWRkIGl0IGxhdGVyLlxuICAgICAgJ3BlcmZvcm1hbmNlLnN0YXJ0X3RpbWVfbXMnLFxuICAgICAgJ3BlcmZvcm1hbmNlLmluaXRpYWxpemVfdGltZV9tcycsXG4gICAgXSxcbiAgfSxcblxuICAvLyBUaGlzIGV2ZW50IGlzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWRcbiAgW0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuUGFnZVZpZXdlZF06IHtcbiAgICBnYUV2ZW50TmFtZTogJ2Vudml2ZV9wYWdlX2NvbnRleHRfZXZhbHVhdGVkJyxcbiAgICBhbGxvd2VkRmllbGRzOiBbXG4gICAgICAnY29udGV4dC5wYWdlX3R5cGUnLFxuICAgICAgJ2NvbnRleHQucGFnZV9pZCcsXG4gICAgICAnY29udGV4dC5zdXBwb3J0ZWQnLFxuICAgICAgJ2NvbnRleHQucmVhZHknLFxuICAgICAgJ2NvbnRleHQucGFnZV92YXJpYW50X2lkJyxcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfZW5hYmxlZCcsXG4gICAgXSxcbiAgfSxcblxuICBbRW52aXZlTWV0cmljc0V2ZW50TmFtZS5XaWRnZXRUZXh0UmVxdWVzdF06IHtcbiAgICBnYUV2ZW50TmFtZTogbnVsbCxcbiAgfSxcblxuICBbRW52aXZlTWV0cmljc0V2ZW50TmFtZS5XaWRnZXRUZXh0UmVzcG9uc2VdOiB7XG4gICAgZ2FFdmVudE5hbWU6IG51bGwsXG4gIH0sXG5cbiAgW0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0VGV4dENsaWNrZWRdOiB7XG4gICAgZ2FFdmVudE5hbWU6IG51bGwsXG4gIH0sXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNkNBLE1BQU1BLHNDQUF1RTtDQUMzRSxrQkFBa0IsRUFBRSx5QkFBeUIsbUJBQW1CO0NBQ2hFLHNCQUFzQixFQUFFLG9CQUFvQixjQUFjO0NBQzFELHFCQUFxQixFQUFFLHVCQUF1QixpQkFBaUI7Q0FDaEU7QUFFRCxNQUFhQyxtQkFBd0U7RUFDbEZDLDBDQUF1QixpQkFBaUI7RUFDdkMsYUFBYTtFQUNiLGVBQWU7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0Q7RUFDRjtFQUdBQSwwQ0FBdUIsb0JBQW9CO0VBQzFDLGFBQWE7RUFDYixlQUFlO0dBQ2I7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0Q7RUFDRCxrQ0FBa0M7RUFDbkM7RUFFQUEsMENBQXVCLGNBQWM7RUFDcEMsYUFBYTtFQUNiLGVBQWU7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUVBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNEO0VBQ0Y7RUFFQUEsMENBQXVCLGVBQWU7RUFDckMsYUFBYTtFQUNiLGVBQWU7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNEO0VBQ0Y7RUFFQUEsMENBQXVCLG9CQUFvQjtFQUMxQyxhQUFhO0VBQ2IsZUFBZTtHQUNiO0dBQ0E7R0FFQTtHQUNBO0dBQ0Q7RUFDRjtFQUdBQSwwQ0FBdUIsYUFBYTtFQUNuQyxhQUFhO0VBQ2IsZUFBZTtHQUNiO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNEO0VBQ0Y7RUFFQUEsMENBQXVCLG9CQUFvQixFQUMxQyxhQUFhLE1BQ2Q7RUFFQUEsMENBQXVCLHFCQUFxQixFQUMzQyxhQUFhLE1BQ2Q7RUFFQUEsMENBQXVCLG9CQUFvQixFQUMxQyxhQUFhLE1BQ2Q7Q0FDRiJ9
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { EnviveMetricsEventName } from "../amplitudeService/eventNames.js";
|
|
2
|
+
|
|
3
|
+
//#region src/services/ga4ProjectionService/ga4EventSchema.ts
|
|
4
|
+
/**
|
|
5
|
+
* GA4 Event Schema — single source of truth for Envive → GA4 projection.
|
|
6
|
+
*
|
|
7
|
+
* Every EnviveMetricsEventName MUST have an entry here. The Record type enforces
|
|
8
|
+
* this at compile time — adding a new enum member without a schema entry will
|
|
9
|
+
* cause a TypeScript error.
|
|
10
|
+
*
|
|
11
|
+
* ## How to update this file
|
|
12
|
+
*
|
|
13
|
+
* When adding or modifying event properties, decide whether they belong in `allowedFields` using these criteria:
|
|
14
|
+
* - **Low cardinality** — avoid unbounded values (free text, IDs, URLs, timestamps).
|
|
15
|
+
* - **Non-sensitive** — no PII, user input text, or internal implementation details.
|
|
16
|
+
* - **Flat scalar** — GA4 custom dimensions are flat strings/numbers/booleans.
|
|
17
|
+
* Nested objects should NOT be added; extract specific sub-fields instead.
|
|
18
|
+
* - **Snake_case key** — must already be dot-notation snake_case (e.g. `chat.user_typed`).
|
|
19
|
+
* - **Analytically useful** — the field should enable meaningful filtering/segmentation
|
|
20
|
+
* for merchants in their GA4 dashboards.
|
|
21
|
+
*
|
|
22
|
+
* If excluded from `allowedFields`, the projection layer will automatically drop it.
|
|
23
|
+
*
|
|
24
|
+
* IF IN DOUBT, DON'T HESITATE TO REACH OUT TO THE ANALYTICS TEAM!!!
|
|
25
|
+
*/
|
|
26
|
+
const WIDGET_INTERACTION_DATA_PROJECTIONS = {
|
|
27
|
+
widget_collapsed: { trigger_collapse_source: "collapse_source" },
|
|
28
|
+
product_card_clicked: { trigger_product_id: "product_id" },
|
|
29
|
+
suggestion_scrolled: { trigger_suggestion_id: "suggestion_id" }
|
|
30
|
+
};
|
|
31
|
+
const GA4_EVENT_SCHEMA = {
|
|
32
|
+
[EnviveMetricsEventName.WidgetRendered]: {
|
|
33
|
+
gaEventName: "envive_widget_rendered",
|
|
34
|
+
allowedFields: [
|
|
35
|
+
"context.page_type",
|
|
36
|
+
"context.page_id",
|
|
37
|
+
"trigger.widget",
|
|
38
|
+
"trigger.widget_role",
|
|
39
|
+
"context.surface"
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
[EnviveMetricsEventName.WidgetInteraction]: {
|
|
43
|
+
gaEventName: "envive_widget_interaction",
|
|
44
|
+
allowedFields: [
|
|
45
|
+
"context.page_type",
|
|
46
|
+
"context.page_id",
|
|
47
|
+
"trigger.widget",
|
|
48
|
+
"trigger.widget_interaction",
|
|
49
|
+
"trigger.entity_role",
|
|
50
|
+
"context.surface"
|
|
51
|
+
],
|
|
52
|
+
widgetInteractionDataProjections: WIDGET_INTERACTION_DATA_PROJECTIONS
|
|
53
|
+
},
|
|
54
|
+
[EnviveMetricsEventName.ChatRequest]: {
|
|
55
|
+
gaEventName: "envive_chat_request",
|
|
56
|
+
allowedFields: [
|
|
57
|
+
"page_type",
|
|
58
|
+
"page_id",
|
|
59
|
+
"trigger.widget",
|
|
60
|
+
"chat.request_type",
|
|
61
|
+
"chat.user_typed",
|
|
62
|
+
"chat.suggestion_id",
|
|
63
|
+
"chat.suggestion_category",
|
|
64
|
+
"chat.suggestion_created_at",
|
|
65
|
+
"chat.suggestion_is_answer",
|
|
66
|
+
"chat.form_type"
|
|
67
|
+
]
|
|
68
|
+
},
|
|
69
|
+
[EnviveMetricsEventName.ChatResponse]: {
|
|
70
|
+
gaEventName: "envive_chat_response",
|
|
71
|
+
allowedFields: [
|
|
72
|
+
"page_type",
|
|
73
|
+
"page_id",
|
|
74
|
+
"trigger.widget",
|
|
75
|
+
"chat.user_typed",
|
|
76
|
+
"chat.response_time_ms",
|
|
77
|
+
"chat.product_cards_returned",
|
|
78
|
+
"chat.review_cards_returned"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
[EnviveMetricsEventName.EnviveInitialized]: {
|
|
82
|
+
gaEventName: "envive_initialized",
|
|
83
|
+
allowedFields: [
|
|
84
|
+
"environment.sales_agent_enabled",
|
|
85
|
+
"environment.envive_enabled",
|
|
86
|
+
"performance.start_time_ms",
|
|
87
|
+
"performance.initialize_time_ms"
|
|
88
|
+
]
|
|
89
|
+
},
|
|
90
|
+
[EnviveMetricsEventName.PageViewed]: {
|
|
91
|
+
gaEventName: "envive_page_context_evaluated",
|
|
92
|
+
allowedFields: [
|
|
93
|
+
"context.page_type",
|
|
94
|
+
"context.page_id",
|
|
95
|
+
"context.supported",
|
|
96
|
+
"context.ready",
|
|
97
|
+
"context.page_variant_id",
|
|
98
|
+
"environment.envive_enabled"
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
[EnviveMetricsEventName.WidgetTextRequest]: { gaEventName: null },
|
|
102
|
+
[EnviveMetricsEventName.WidgetTextResponse]: { gaEventName: null },
|
|
103
|
+
[EnviveMetricsEventName.WidgetTextClicked]: { gaEventName: null }
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
//#endregion
|
|
107
|
+
export { GA4_EVENT_SCHEMA };
|
|
108
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0RXZlbnRTY2hlbWEuanMiLCJuYW1lcyI6WyJXSURHRVRfSU5URVJBQ1RJT05fREFUQV9QUk9KRUNUSU9OUzogV2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbiIsIkdBNF9FVkVOVF9TQ0hFTUE6IFJlY29yZDxFbnZpdmVNZXRyaWNzRXZlbnROYW1lLCBHQTRFdmVudFNjaGVtYUVudHJ5PiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9nYTRQcm9qZWN0aW9uU2VydmljZS9nYTRFdmVudFNjaGVtYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdBNCBFdmVudCBTY2hlbWEg4oCUIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIEVudml2ZSDihpIgR0E0IHByb2plY3Rpb24uXG4gKlxuICogRXZlcnkgRW52aXZlTWV0cmljc0V2ZW50TmFtZSBNVVNUIGhhdmUgYW4gZW50cnkgaGVyZS4gVGhlIFJlY29yZCB0eXBlIGVuZm9yY2VzXG4gKiB0aGlzIGF0IGNvbXBpbGUgdGltZSDigJQgYWRkaW5nIGEgbmV3IGVudW0gbWVtYmVyIHdpdGhvdXQgYSBzY2hlbWEgZW50cnkgd2lsbFxuICogY2F1c2UgYSBUeXBlU2NyaXB0IGVycm9yLlxuICpcbiAqICMjIEhvdyB0byB1cGRhdGUgdGhpcyBmaWxlXG4gKlxuICogV2hlbiBhZGRpbmcgb3IgbW9kaWZ5aW5nIGV2ZW50IHByb3BlcnRpZXMsIGRlY2lkZSB3aGV0aGVyIHRoZXkgYmVsb25nIGluIGBhbGxvd2VkRmllbGRzYCB1c2luZyB0aGVzZSBjcml0ZXJpYTpcbiAqIC0gKipMb3cgY2FyZGluYWxpdHkqKiDigJQgYXZvaWQgdW5ib3VuZGVkIHZhbHVlcyAoZnJlZSB0ZXh0LCBJRHMsIFVSTHMsIHRpbWVzdGFtcHMpLlxuICogLSAqKk5vbi1zZW5zaXRpdmUqKiDigJQgbm8gUElJLCB1c2VyIGlucHV0IHRleHQsIG9yIGludGVybmFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG4gKiAtICoqRmxhdCBzY2FsYXIqKiDigJQgR0E0IGN1c3RvbSBkaW1lbnNpb25zIGFyZSBmbGF0IHN0cmluZ3MvbnVtYmVycy9ib29sZWFucy5cbiAqICAgTmVzdGVkIG9iamVjdHMgc2hvdWxkIE5PVCBiZSBhZGRlZDsgZXh0cmFjdCBzcGVjaWZpYyBzdWItZmllbGRzIGluc3RlYWQuXG4gKiAtICoqU25ha2VfY2FzZSBrZXkqKiDigJQgbXVzdCBhbHJlYWR5IGJlIGRvdC1ub3RhdGlvbiBzbmFrZV9jYXNlIChlLmcuIGBjaGF0LnVzZXJfdHlwZWRgKS5cbiAqIC0gKipBbmFseXRpY2FsbHkgdXNlZnVsKiog4oCUIHRoZSBmaWVsZCBzaG91bGQgZW5hYmxlIG1lYW5pbmdmdWwgZmlsdGVyaW5nL3NlZ21lbnRhdGlvblxuICogICBmb3IgbWVyY2hhbnRzIGluIHRoZWlyIEdBNCBkYXNoYm9hcmRzLlxuICpcbiAqIElmIGV4Y2x1ZGVkIGZyb20gYGFsbG93ZWRGaWVsZHNgLCB0aGUgcHJvamVjdGlvbiBsYXllciB3aWxsIGF1dG9tYXRpY2FsbHkgZHJvcCBpdC5cbiAqXG4gKiBJRiBJTiBET1VCVCwgRE9OJ1QgSEVTSVRBVEUgVE8gUkVBQ0ggT1VUIFRPIFRIRSBBTkFMWVRJQ1MgVEVBTSEhIVxuICovXG5pbXBvcnQgeyBFbnZpdmVNZXRyaWNzRXZlbnROYW1lIH0gZnJvbSAnLi4vYW1wbGl0dWRlU2VydmljZS9ldmVudE5hbWVzJztcblxuLyoqXG4gKiBEZWZpbmVzIHdoaWNoIGZpZWxkcyB0byBleHRyYWN0IGZyb20gYHRyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGFgXG4gKiBmb3IgYSBnaXZlbiBgdHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb25gIHZhbHVlLlxuICpcbiAqIEtleTogdGhlIHZhbHVlIG9mIGB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbmAgKGUuZy4gXCJ3aWRnZXRfY29sbGFwc2VkXCIpXG4gKiBWYWx1ZTogbWFwcGluZyBvZiB7IGdhNEZsYXRLZXk6IHNvdXJjZUZpZWxkSW5XaWRnZXRJbnRlcmFjdGlvbkRhdGEgfVxuICovXG5leHBvcnQgdHlwZSBXaWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9uID0gUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgR0E0UHJvamVjdGVkRXZlbnRDb25maWcge1xuICBnYUV2ZW50TmFtZTogc3RyaW5nO1xuICBhbGxvd2VkRmllbGRzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgd2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnM/OiBXaWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdBNEV4Y2x1ZGVkRXZlbnRDb25maWcge1xuICBnYUV2ZW50TmFtZTogbnVsbDtcbn1cblxuZXhwb3J0IHR5cGUgR0E0RXZlbnRTY2hlbWFFbnRyeSA9IEdBNFByb2plY3RlZEV2ZW50Q29uZmlnIHwgR0E0RXhjbHVkZWRFdmVudENvbmZpZztcblxuY29uc3QgV0lER0VUX0lOVEVSQUNUSU9OX0RBVEFfUFJPSkVDVElPTlM6IFdpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb24gPSB7XG4gIHdpZGdldF9jb2xsYXBzZWQ6IHsgdHJpZ2dlcl9jb2xsYXBzZV9zb3VyY2U6ICdjb2xsYXBzZV9zb3VyY2UnIH0sXG4gIHByb2R1Y3RfY2FyZF9jbGlja2VkOiB7IHRyaWdnZXJfcHJvZHVjdF9pZDogJ3Byb2R1Y3RfaWQnIH0sXG4gIHN1Z2dlc3Rpb25fc2Nyb2xsZWQ6IHsgdHJpZ2dlcl9zdWdnZXN0aW9uX2lkOiAnc3VnZ2VzdGlvbl9pZCcgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBHQTRfRVZFTlRfU0NIRU1BOiBSZWNvcmQ8RW52aXZlTWV0cmljc0V2ZW50TmFtZSwgR0E0RXZlbnRTY2hlbWFFbnRyeT4gPSB7XG4gIFtFbnZpdmVNZXRyaWNzRXZlbnROYW1lLldpZGdldFJlbmRlcmVkXToge1xuICAgIGdhRXZlbnROYW1lOiAnZW52aXZlX3dpZGdldF9yZW5kZXJlZCcsXG4gICAgYWxsb3dlZEZpZWxkczogW1xuICAgICAgJ2NvbnRleHQucGFnZV90eXBlJyxcbiAgICAgICdjb250ZXh0LnBhZ2VfaWQnLFxuICAgICAgJ3RyaWdnZXIud2lkZ2V0JyxcbiAgICAgICd0cmlnZ2VyLndpZGdldF9yb2xlJyxcbiAgICAgICdjb250ZXh0LnN1cmZhY2UnLFxuICAgIF0sXG4gIH0sXG5cbiAgLy8gVGhpcyBldmVudCBpcyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkXG4gIFtFbnZpdmVNZXRyaWNzRXZlbnROYW1lLldpZGdldEludGVyYWN0aW9uXToge1xuICAgIGdhRXZlbnROYW1lOiAnZW52aXZlX3dpZGdldF9pbnRlcmFjdGlvbicsXG4gICAgYWxsb3dlZEZpZWxkczogW1xuICAgICAgJ2NvbnRleHQucGFnZV90eXBlJyxcbiAgICAgICdjb250ZXh0LnBhZ2VfaWQnLFxuICAgICAgJ3RyaWdnZXIud2lkZ2V0JyxcbiAgICAgICd0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbicsXG4gICAgICAndHJpZ2dlci5lbnRpdHlfcm9sZScsXG4gICAgICAnY29udGV4dC5zdXJmYWNlJyxcbiAgICBdLFxuICAgIHdpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb25zOiBXSURHRVRfSU5URVJBQ1RJT05fREFUQV9QUk9KRUNUSU9OUyxcbiAgfSxcblxuICBbRW52aXZlTWV0cmljc0V2ZW50TmFtZS5DaGF0UmVxdWVzdF06IHtcbiAgICBnYUV2ZW50TmFtZTogJ2Vudml2ZV9jaGF0X3JlcXVlc3QnLFxuICAgIGFsbG93ZWRGaWVsZHM6IFtcbiAgICAgICdwYWdlX3R5cGUnLFxuICAgICAgJ3BhZ2VfaWQnLFxuICAgICAgJ3RyaWdnZXIud2lkZ2V0JyxcbiAgICAgICdjaGF0LnJlcXVlc3RfdHlwZScsXG4gICAgICAvLyAnY2hhdC5yZXF1ZXN0X3RleHQnLCAvLyBUaGlzIGlzIGhpZ2ggY2FyZGluYWxpdHkgYW5kIHBvdGVudGlhbGx5IFBJSSBidXQgd2UgbWlnaHQgd2FudCB0byBpbmNsdWRlIGl0IGxhdGVyXG4gICAgICAnY2hhdC51c2VyX3R5cGVkJyxcbiAgICAgICdjaGF0LnN1Z2dlc3Rpb25faWQnLCAvLyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkXG4gICAgICAnY2hhdC5zdWdnZXN0aW9uX2NhdGVnb3J5JywgLy8gbm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZFxuICAgICAgJ2NoYXQuc3VnZ2VzdGlvbl9jcmVhdGVkX2F0JywgLy8gbm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZFxuICAgICAgJ2NoYXQuc3VnZ2VzdGlvbl9pc19hbnN3ZXInLCAvLyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkXG4gICAgICAnY2hhdC5mb3JtX3R5cGUnLCAvLyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkXG4gICAgXSxcbiAgfSxcblxuICBbRW52aXZlTWV0cmljc0V2ZW50TmFtZS5DaGF0UmVzcG9uc2VdOiB7XG4gICAgZ2FFdmVudE5hbWU6ICdlbnZpdmVfY2hhdF9yZXNwb25zZScsXG4gICAgYWxsb3dlZEZpZWxkczogW1xuICAgICAgJ3BhZ2VfdHlwZScsXG4gICAgICAncGFnZV9pZCcsXG4gICAgICAndHJpZ2dlci53aWRnZXQnLCAvLyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkIChtYXliZSBpdCBzaG91bGQnbnQgYmU/Pz8pXG4gICAgICAnY2hhdC51c2VyX3R5cGVkJyxcbiAgICAgICdjaGF0LnJlc3BvbnNlX3RpbWVfbXMnLFxuICAgICAgJ2NoYXQucHJvZHVjdF9jYXJkc19yZXR1cm5lZCcsXG4gICAgICAnY2hhdC5yZXZpZXdfY2FyZHNfcmV0dXJuZWQnLFxuICAgIF0sXG4gIH0sXG5cbiAgW0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuRW52aXZlSW5pdGlhbGl6ZWRdOiB7XG4gICAgZ2FFdmVudE5hbWU6ICdlbnZpdmVfaW5pdGlhbGl6ZWQnLFxuICAgIGFsbG93ZWRGaWVsZHM6IFtcbiAgICAgICdlbnZpcm9ubWVudC5zYWxlc19hZ2VudF9lbmFibGVkJyxcbiAgICAgICdlbnZpcm9ubWVudC5lbnZpdmVfZW5hYmxlZCcsXG4gICAgICAvLyAnZW52aXJvbm1lbnQuc2VhcmNoX2VuYWJsZWQnLCAvLyBGb3Igbm93LCBzZWFyY2ggaXMgbm90IGltcGxlbWVudGVkLiBXZSB3aWxsIGFkZCBpdCBsYXRlci5cbiAgICAgICdwZXJmb3JtYW5jZS5zdGFydF90aW1lX21zJyxcbiAgICAgICdwZXJmb3JtYW5jZS5pbml0aWFsaXplX3RpbWVfbXMnLFxuICAgIF0sXG4gIH0sXG5cbiAgLy8gVGhpcyBldmVudCBpcyBub3QgY3VycmVudGx5IGltcGxlbWVudGVkXG4gIFtFbnZpdmVNZXRyaWNzRXZlbnROYW1lLlBhZ2VWaWV3ZWRdOiB7XG4gICAgZ2FFdmVudE5hbWU6ICdlbnZpdmVfcGFnZV9jb250ZXh0X2V2YWx1YXRlZCcsXG4gICAgYWxsb3dlZEZpZWxkczogW1xuICAgICAgJ2NvbnRleHQucGFnZV90eXBlJyxcbiAgICAgICdjb250ZXh0LnBhZ2VfaWQnLFxuICAgICAgJ2NvbnRleHQuc3VwcG9ydGVkJyxcbiAgICAgICdjb250ZXh0LnJlYWR5JyxcbiAgICAgICdjb250ZXh0LnBhZ2VfdmFyaWFudF9pZCcsXG4gICAgICAnZW52aXJvbm1lbnQuZW52aXZlX2VuYWJsZWQnLFxuICAgIF0sXG4gIH0sXG5cbiAgW0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0VGV4dFJlcXVlc3RdOiB7XG4gICAgZ2FFdmVudE5hbWU6IG51bGwsXG4gIH0sXG5cbiAgW0Vudml2ZU1ldHJpY3NFdmVudE5hbWUuV2lkZ2V0VGV4dFJlc3BvbnNlXToge1xuICAgIGdhRXZlbnROYW1lOiBudWxsLFxuICB9LFxuXG4gIFtFbnZpdmVNZXRyaWNzRXZlbnROYW1lLldpZGdldFRleHRDbGlja2VkXToge1xuICAgIGdhRXZlbnROYW1lOiBudWxsLFxuICB9LFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTZDQSxNQUFNQSxzQ0FBdUU7Q0FDM0Usa0JBQWtCLEVBQUUseUJBQXlCLG1CQUFtQjtDQUNoRSxzQkFBc0IsRUFBRSxvQkFBb0IsY0FBYztDQUMxRCxxQkFBcUIsRUFBRSx1QkFBdUIsaUJBQWlCO0NBQ2hFO0FBRUQsTUFBYUMsbUJBQXdFO0VBQ2xGLHVCQUF1QixpQkFBaUI7RUFDdkMsYUFBYTtFQUNiLGVBQWU7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0Q7RUFDRjtFQUdBLHVCQUF1QixvQkFBb0I7RUFDMUMsYUFBYTtFQUNiLGVBQWU7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDRDtFQUNELGtDQUFrQztFQUNuQztFQUVBLHVCQUF1QixjQUFjO0VBQ3BDLGFBQWE7RUFDYixlQUFlO0dBQ2I7R0FDQTtHQUNBO0dBQ0E7R0FFQTtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDRDtFQUNGO0VBRUEsdUJBQXVCLGVBQWU7RUFDckMsYUFBYTtFQUNiLGVBQWU7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDQTtHQUNEO0VBQ0Y7RUFFQSx1QkFBdUIsb0JBQW9CO0VBQzFDLGFBQWE7RUFDYixlQUFlO0dBQ2I7R0FDQTtHQUVBO0dBQ0E7R0FDRDtFQUNGO0VBR0EsdUJBQXVCLGFBQWE7RUFDbkMsYUFBYTtFQUNiLGVBQWU7R0FDYjtHQUNBO0dBQ0E7R0FDQTtHQUNBO0dBQ0E7R0FDRDtFQUNGO0VBRUEsdUJBQXVCLG9CQUFvQixFQUMxQyxhQUFhLE1BQ2Q7RUFFQSx1QkFBdUIscUJBQXFCLEVBQzNDLGFBQWEsTUFDZDtFQUVBLHVCQUF1QixvQkFBb0IsRUFDMUMsYUFBYSxNQUNkO0NBQ0YifQ==
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const require_logger = require('../../application/logging/logger.cjs');
|
|
2
|
+
const require_ga4EventSchema = require('./ga4EventSchema.cjs');
|
|
3
|
+
|
|
4
|
+
//#region src/services/ga4ProjectionService/ga4ProjectionService.ts
|
|
5
|
+
const filterToSchema = (eventProps, allowedFields) => {
|
|
6
|
+
const result = {};
|
|
7
|
+
for (const field of allowedFields) if (field in eventProps) result[field] = eventProps[field];
|
|
8
|
+
return result;
|
|
9
|
+
};
|
|
10
|
+
const flattenDotKeys = (obj) => {
|
|
11
|
+
const result = {};
|
|
12
|
+
for (const [key, value] of Object.entries(obj)) result[key.replace(/\./g, "_")] = value;
|
|
13
|
+
return result;
|
|
14
|
+
};
|
|
15
|
+
const sanitizePageId = (filtered) => {
|
|
16
|
+
const pageType = filtered["context.page_type"];
|
|
17
|
+
if (pageType === "pdp" || pageType === "plp") return filtered;
|
|
18
|
+
const rest = { ...filtered };
|
|
19
|
+
delete rest["context.page_id"];
|
|
20
|
+
return rest;
|
|
21
|
+
};
|
|
22
|
+
const projectWidgetInteractionData = (eventProps, config) => {
|
|
23
|
+
if (!config.widgetInteractionDataProjections) return {};
|
|
24
|
+
const interaction = eventProps["trigger.widget_interaction"];
|
|
25
|
+
if (typeof interaction !== "string") return {};
|
|
26
|
+
const projectionMap = config.widgetInteractionDataProjections[interaction];
|
|
27
|
+
if (!projectionMap) return {};
|
|
28
|
+
const interactionData = eventProps["trigger.widget_interaction_data"];
|
|
29
|
+
if (interactionData === null || interactionData === void 0 || typeof interactionData !== "object") return {};
|
|
30
|
+
const data = interactionData;
|
|
31
|
+
const result = {};
|
|
32
|
+
for (const [gaKey, sourceField] of Object.entries(projectionMap)) if (sourceField in data) result[gaKey] = data[sourceField];
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
const truncateString = (value) => {
|
|
36
|
+
if (typeof value === "string" && value.length > 100) return `${value.substring(0, 97)}...`;
|
|
37
|
+
return value;
|
|
38
|
+
};
|
|
39
|
+
const truncateValues = (obj) => {
|
|
40
|
+
const result = {};
|
|
41
|
+
for (const [key, value] of Object.entries(obj)) result[key] = truncateString(value);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
const pushToDataLayer = (gaEvent) => {
|
|
45
|
+
if (typeof window !== "undefined" && window.dataLayer) window.dataLayer.push(gaEvent);
|
|
46
|
+
};
|
|
47
|
+
const projectToGA4 = (eventName, eventProps) => {
|
|
48
|
+
try {
|
|
49
|
+
const schemaEntry = require_ga4EventSchema.GA4_EVENT_SCHEMA[eventName];
|
|
50
|
+
if (schemaEntry.gaEventName === null) return;
|
|
51
|
+
const config = schemaEntry;
|
|
52
|
+
const props = eventProps ?? {};
|
|
53
|
+
let filtered = filterToSchema(props, config.allowedFields);
|
|
54
|
+
filtered = sanitizePageId(filtered);
|
|
55
|
+
const interactionFields = projectWidgetInteractionData(props, config);
|
|
56
|
+
const truncatedParams = truncateValues({
|
|
57
|
+
...flattenDotKeys(filtered),
|
|
58
|
+
...interactionFields
|
|
59
|
+
});
|
|
60
|
+
pushToDataLayer({
|
|
61
|
+
event: config.gaEventName,
|
|
62
|
+
...truncatedParams
|
|
63
|
+
});
|
|
64
|
+
} catch (err) {
|
|
65
|
+
require_logger.default.logError("[envive-ai] Error projecting event to GA4", err, { eventName });
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
exports.projectToGA4 = projectToGA4;
|
|
71
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuY2pzIiwibmFtZXMiOlsicmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiIsIkdBNF9FVkVOVF9TQ0hFTUEiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZ2E0UHJvamVjdGlvblNlcnZpY2UvZ2E0UHJvamVjdGlvblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgRW52aXZlTWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJy4uL2FtcGxpdHVkZVNlcnZpY2UvZXZlbnROYW1lcyc7XG5pbXBvcnQgeyBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZywgR0E0X0VWRU5UX1NDSEVNQSB9IGZyb20gJy4vZ2E0RXZlbnRTY2hlbWEnO1xuXG5jb25zdCBmaWx0ZXJUb1NjaGVtYSA9IChcbiAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGFsbG93ZWRGaWVsZHM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgZmllbGQgb2YgYWxsb3dlZEZpZWxkcykge1xuICAgIGlmIChmaWVsZCBpbiBldmVudFByb3BzKSB7XG4gICAgICByZXN1bHRbZmllbGRdID0gZXZlbnRQcm9wc1tmaWVsZF07XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vLyBcImNvbnRleHQucGFnZV90eXBlXCIg4oaSIFwiY29udGV4dF9wYWdlX3R5cGVcIlxuY29uc3QgZmxhdHRlbkRvdEtleXMgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgcmVzdWx0W2tleS5yZXBsYWNlKC9cXC4vZywgJ18nKV0gPSB2YWx1ZTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gT21pdCBjb250ZXh0LnBhZ2VfaWQgZm9yIG5vbi1wZHAvcGxwIHBhZ2UgdHlwZXMuIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGZvciBjb250ZXh0LnBhZ2VfaWQgaXM6XG4vLyBQRFA6IHByb2R1Y3RfaWRcbi8vIFBMUDogcGxwX2lkXG4vLyBTZWFyY2g6IHNlYXJjaCBxdWVyeVxuLy8gT3RoZXI6IHBhZ2UgdXJsXG4vLyBXZSB3YW50IHRvIG9taXQgYWxsIGJ1dCBwZHAgYW5kIHBscCBwYWdlIHR5cGVzIHRvIHByb3ZpZGUgYSBjbGVhciwgY29uc2lzdGVudCBpbnRlcmZhY2UgZm9yIG1lcmNoYW50cy5cbmNvbnN0IHNhbml0aXplUGFnZUlkID0gKGZpbHRlcmVkOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcGFnZVR5cGUgPSBmaWx0ZXJlZFsnY29udGV4dC5wYWdlX3R5cGUnXTtcbiAgaWYgKHBhZ2VUeXBlID09PSAncGRwJyB8fCBwYWdlVHlwZSA9PT0gJ3BscCcpIHtcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cbiAgY29uc3QgcmVzdCA9IHsgLi4uZmlsdGVyZWQgfTtcbiAgZGVsZXRlIHJlc3RbJ2NvbnRleHQucGFnZV9pZCddO1xuICByZXR1cm4gcmVzdDtcbn07XG5cbi8vIEV4dHJhY3Qgd2hpdGVsaXN0ZWQgc3ViLWZpZWxkcyBmcm9tIHRyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGFcbmNvbnN0IHByb2plY3RXaWRnZXRJbnRlcmFjdGlvbkRhdGEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBjb25maWc6IEdBNFByb2plY3RlZEV2ZW50Q29uZmlnLFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBpZiAoIWNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9ucykge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uID0gZXZlbnRQcm9wc1sndHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb24nXTtcbiAgaWYgKHR5cGVvZiBpbnRlcmFjdGlvbiAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBwcm9qZWN0aW9uTWFwID0gY29uZmlnLndpZGdldEludGVyYWN0aW9uRGF0YVByb2plY3Rpb25zW2ludGVyYWN0aW9uXTtcbiAgaWYgKCFwcm9qZWN0aW9uTWFwKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgaW50ZXJhY3Rpb25EYXRhID0gZXZlbnRQcm9wc1sndHJpZ2dlci53aWRnZXRfaW50ZXJhY3Rpb25fZGF0YSddO1xuICBpZiAoXG4gICAgaW50ZXJhY3Rpb25EYXRhID09PSBudWxsIHx8XG4gICAgaW50ZXJhY3Rpb25EYXRhID09PSB1bmRlZmluZWQgfHxcbiAgICB0eXBlb2YgaW50ZXJhY3Rpb25EYXRhICE9PSAnb2JqZWN0J1xuICApIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBkYXRhID0gaW50ZXJhY3Rpb25EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2dhS2V5LCBzb3VyY2VGaWVsZF0gb2YgT2JqZWN0LmVudHJpZXMocHJvamVjdGlvbk1hcCkpIHtcbiAgICBpZiAoc291cmNlRmllbGQgaW4gZGF0YSkge1xuICAgICAgcmVzdWx0W2dhS2V5XSA9IGRhdGFbc291cmNlRmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdHJ1bmNhdGVTdHJpbmcgPSAodmFsdWU6IHVua25vd24pOiB1bmtub3duID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gMTAwKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLnN1YnN0cmluZygwLCA5Nyl9Li4uYDtcbiAgfVxuICByZXR1cm4gdmFsdWU7XG59O1xuXG5jb25zdCB0cnVuY2F0ZVZhbHVlcyA9IChvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge307XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG9iaikpIHtcbiAgICByZXN1bHRba2V5XSA9IHRydW5jYXRlU3RyaW5nKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgcHVzaFRvRGF0YUxheWVyID0gKGdhRXZlbnQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogdm9pZCA9PiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgd2luZG93LmRhdGFMYXllci5wdXNoKGdhRXZlbnQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJvamVjdFRvR0E0ID0gKFxuICBldmVudE5hbWU6IEVudml2ZU1ldHJpY3NFdmVudE5hbWUsXG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHZvaWQgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNjaGVtYUVudHJ5ID0gR0E0X0VWRU5UX1NDSEVNQVtldmVudE5hbWVdO1xuXG4gICAgaWYgKHNjaGVtYUVudHJ5LmdhRXZlbnROYW1lID09PSBudWxsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY29uZmlnID0gc2NoZW1hRW50cnk7XG4gICAgY29uc3QgcHJvcHMgPSBldmVudFByb3BzID8/IHt9O1xuXG4gICAgbGV0IGZpbHRlcmVkID0gZmlsdGVyVG9TY2hlbWEocHJvcHMsIGNvbmZpZy5hbGxvd2VkRmllbGRzKTtcbiAgICBmaWx0ZXJlZCA9IHNhbml0aXplUGFnZUlkKGZpbHRlcmVkKTtcblxuICAgIGNvbnN0IGludGVyYWN0aW9uRmllbGRzID0gcHJvamVjdFdpZGdldEludGVyYWN0aW9uRGF0YShwcm9wcywgY29uZmlnKTtcblxuICAgIGNvbnN0IGZsYXRQYXJhbXMgPSB7XG4gICAgICAuLi5mbGF0dGVuRG90S2V5cyhmaWx0ZXJlZCksXG4gICAgICAuLi5pbnRlcmFjdGlvbkZpZWxkcyxcbiAgICB9O1xuXG4gICAgY29uc3QgdHJ1bmNhdGVkUGFyYW1zID0gdHJ1bmNhdGVWYWx1ZXMoZmxhdFBhcmFtcyk7XG5cbiAgICBwdXNoVG9EYXRhTGF5ZXIoe1xuICAgICAgZXZlbnQ6IGNvbmZpZy5nYUV2ZW50TmFtZSxcbiAgICAgIC4uLnRydW5jYXRlZFBhcmFtcyxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdbZW52aXZlLWFpXSBFcnJvciBwcm9qZWN0aW5nIGV2ZW50IHRvIEdBNCcsIGVyciwge1xuICAgICAgZXZlbnROYW1lLFxuICAgIH0pO1xuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBSUEsTUFBTSxrQkFDSixZQUNBLGtCQUM0QjtDQUM1QixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxTQUFTLGNBQ2xCLEtBQUksU0FBUyxXQUNYLFFBQU8sU0FBUyxXQUFXO0FBRy9CLFFBQU87O0FBSVQsTUFBTSxrQkFBa0IsUUFBMEQ7Q0FDaEYsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxRQUFRLElBQUksQ0FDNUMsUUFBTyxJQUFJLFFBQVEsT0FBTyxJQUFJLElBQUk7QUFFcEMsUUFBTzs7QUFTVCxNQUFNLGtCQUFrQixhQUErRDtDQUNyRixNQUFNLFdBQVcsU0FBUztBQUMxQixLQUFJLGFBQWEsU0FBUyxhQUFhLE1BQ3JDLFFBQU87Q0FFVCxNQUFNLE9BQU8sRUFBRSxHQUFHLFVBQVU7QUFDNUIsUUFBTyxLQUFLO0FBQ1osUUFBTzs7QUFJVCxNQUFNLGdDQUNKLFlBQ0EsV0FDNEI7QUFDNUIsS0FBSSxDQUFDLE9BQU8saUNBQ1YsUUFBTyxFQUFFO0NBR1gsTUFBTSxjQUFjLFdBQVc7QUFDL0IsS0FBSSxPQUFPLGdCQUFnQixTQUN6QixRQUFPLEVBQUU7Q0FHWCxNQUFNLGdCQUFnQixPQUFPLGlDQUFpQztBQUM5RCxLQUFJLENBQUMsY0FDSCxRQUFPLEVBQUU7Q0FHWCxNQUFNLGtCQUFrQixXQUFXO0FBQ25DLEtBQ0Usb0JBQW9CLFFBQ3BCLG9CQUFvQixVQUNwQixPQUFPLG9CQUFvQixTQUUzQixRQUFPLEVBQUU7Q0FHWCxNQUFNLE9BQU87Q0FDYixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxDQUFDLE9BQU8sZ0JBQWdCLE9BQU8sUUFBUSxjQUFjLENBQzlELEtBQUksZUFBZSxLQUNqQixRQUFPLFNBQVMsS0FBSztBQUd6QixRQUFPOztBQUdULE1BQU0sa0JBQWtCLFVBQTRCO0FBQ2xELEtBQUksT0FBTyxVQUFVLFlBQVksTUFBTSxTQUFTLElBQzlDLFFBQU8sR0FBRyxNQUFNLFVBQVUsR0FBRyxHQUFHLENBQUM7QUFFbkMsUUFBTzs7QUFHVCxNQUFNLGtCQUFrQixRQUEwRDtDQUNoRixNQUFNQSxTQUFrQyxFQUFFO0FBQzFDLE1BQUssTUFBTSxDQUFDLEtBQUssVUFBVSxPQUFPLFFBQVEsSUFBSSxDQUM1QyxRQUFPLE9BQU8sZUFBZSxNQUFNO0FBRXJDLFFBQU87O0FBR1QsTUFBTSxtQkFBbUIsWUFBMkM7QUFDbEUsS0FBSSxPQUFPLFdBQVcsZUFBZSxPQUFPLFVBQzFDLFFBQU8sVUFBVSxLQUFLLFFBQVE7O0FBSWxDLE1BQWEsZ0JBQ1gsV0FDQSxlQUNTO0FBQ1QsS0FBSTtFQUNGLE1BQU0sY0FBY0Msd0NBQWlCO0FBRXJDLE1BQUksWUFBWSxnQkFBZ0IsS0FDOUI7RUFHRixNQUFNLFNBQVM7RUFDZixNQUFNLFFBQVEsY0FBYyxFQUFFO0VBRTlCLElBQUksV0FBVyxlQUFlLE9BQU8sT0FBTyxjQUFjO0FBQzFELGFBQVcsZUFBZSxTQUFTO0VBRW5DLE1BQU0sb0JBQW9CLDZCQUE2QixPQUFPLE9BQU87RUFPckUsTUFBTSxrQkFBa0IsZUFMTDtHQUNqQixHQUFHLGVBQWUsU0FBUztHQUMzQixHQUFHO0dBQ0osQ0FFaUQ7QUFFbEQsa0JBQWdCO0dBQ2QsT0FBTyxPQUFPO0dBQ2QsR0FBRztHQUNKLENBQUM7VUFDSyxLQUFLO0FBQ1oseUJBQU8sU0FBUyw2Q0FBNkMsS0FBSyxFQUNoRSxXQUNELENBQUMifQ==
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import logger_default from "../../application/logging/logger.js";
|
|
2
|
+
import { GA4_EVENT_SCHEMA } from "./ga4EventSchema.js";
|
|
3
|
+
|
|
4
|
+
//#region src/services/ga4ProjectionService/ga4ProjectionService.ts
|
|
5
|
+
const filterToSchema = (eventProps, allowedFields) => {
|
|
6
|
+
const result = {};
|
|
7
|
+
for (const field of allowedFields) if (field in eventProps) result[field] = eventProps[field];
|
|
8
|
+
return result;
|
|
9
|
+
};
|
|
10
|
+
const flattenDotKeys = (obj) => {
|
|
11
|
+
const result = {};
|
|
12
|
+
for (const [key, value] of Object.entries(obj)) result[key.replace(/\./g, "_")] = value;
|
|
13
|
+
return result;
|
|
14
|
+
};
|
|
15
|
+
const sanitizePageId = (filtered) => {
|
|
16
|
+
const pageType = filtered["context.page_type"];
|
|
17
|
+
if (pageType === "pdp" || pageType === "plp") return filtered;
|
|
18
|
+
const rest = { ...filtered };
|
|
19
|
+
delete rest["context.page_id"];
|
|
20
|
+
return rest;
|
|
21
|
+
};
|
|
22
|
+
const projectWidgetInteractionData = (eventProps, config) => {
|
|
23
|
+
if (!config.widgetInteractionDataProjections) return {};
|
|
24
|
+
const interaction = eventProps["trigger.widget_interaction"];
|
|
25
|
+
if (typeof interaction !== "string") return {};
|
|
26
|
+
const projectionMap = config.widgetInteractionDataProjections[interaction];
|
|
27
|
+
if (!projectionMap) return {};
|
|
28
|
+
const interactionData = eventProps["trigger.widget_interaction_data"];
|
|
29
|
+
if (interactionData === null || interactionData === void 0 || typeof interactionData !== "object") return {};
|
|
30
|
+
const data = interactionData;
|
|
31
|
+
const result = {};
|
|
32
|
+
for (const [gaKey, sourceField] of Object.entries(projectionMap)) if (sourceField in data) result[gaKey] = data[sourceField];
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
const truncateString = (value) => {
|
|
36
|
+
if (typeof value === "string" && value.length > 100) return `${value.substring(0, 97)}...`;
|
|
37
|
+
return value;
|
|
38
|
+
};
|
|
39
|
+
const truncateValues = (obj) => {
|
|
40
|
+
const result = {};
|
|
41
|
+
for (const [key, value] of Object.entries(obj)) result[key] = truncateString(value);
|
|
42
|
+
return result;
|
|
43
|
+
};
|
|
44
|
+
const pushToDataLayer = (gaEvent) => {
|
|
45
|
+
if (typeof window !== "undefined" && window.dataLayer) window.dataLayer.push(gaEvent);
|
|
46
|
+
};
|
|
47
|
+
const projectToGA4 = (eventName, eventProps) => {
|
|
48
|
+
try {
|
|
49
|
+
const schemaEntry = GA4_EVENT_SCHEMA[eventName];
|
|
50
|
+
if (schemaEntry.gaEventName === null) return;
|
|
51
|
+
const config = schemaEntry;
|
|
52
|
+
const props = eventProps ?? {};
|
|
53
|
+
let filtered = filterToSchema(props, config.allowedFields);
|
|
54
|
+
filtered = sanitizePageId(filtered);
|
|
55
|
+
const interactionFields = projectWidgetInteractionData(props, config);
|
|
56
|
+
const truncatedParams = truncateValues({
|
|
57
|
+
...flattenDotKeys(filtered),
|
|
58
|
+
...interactionFields
|
|
59
|
+
});
|
|
60
|
+
pushToDataLayer({
|
|
61
|
+
event: config.gaEventName,
|
|
62
|
+
...truncatedParams
|
|
63
|
+
});
|
|
64
|
+
} catch (err) {
|
|
65
|
+
logger_default.logError("[envive-ai] Error projecting event to GA4", err, { eventName });
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
//#endregion
|
|
70
|
+
export { projectToGA4 };
|
|
71
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2E0UHJvamVjdGlvblNlcnZpY2UuanMiLCJuYW1lcyI6WyJyZXN1bHQ6IFJlY29yZDxzdHJpbmcsIHVua25vd24+Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NlcnZpY2VzL2dhNFByb2plY3Rpb25TZXJ2aWNlL2dhNFByb2plY3Rpb25TZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IEVudml2ZU1ldHJpY3NFdmVudE5hbWUgfSBmcm9tICcuLi9hbXBsaXR1ZGVTZXJ2aWNlL2V2ZW50TmFtZXMnO1xuaW1wb3J0IHsgR0E0UHJvamVjdGVkRXZlbnRDb25maWcsIEdBNF9FVkVOVF9TQ0hFTUEgfSBmcm9tICcuL2dhNEV2ZW50U2NoZW1hJztcblxuY29uc3QgZmlsdGVyVG9TY2hlbWEgPSAoXG4gIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBhbGxvd2VkRmllbGRzOiByZWFkb25seSBzdHJpbmdbXSxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IGZpZWxkIG9mIGFsbG93ZWRGaWVsZHMpIHtcbiAgICBpZiAoZmllbGQgaW4gZXZlbnRQcm9wcykge1xuICAgICAgcmVzdWx0W2ZpZWxkXSA9IGV2ZW50UHJvcHNbZmllbGRdO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gXCJjb250ZXh0LnBhZ2VfdHlwZVwiIOKGkiBcImNvbnRleHRfcGFnZV90eXBlXCJcbmNvbnN0IGZsYXR0ZW5Eb3RLZXlzID0gKG9iajogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHJlc3VsdDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob2JqKSkge1xuICAgIHJlc3VsdFtrZXkucmVwbGFjZSgvXFwuL2csICdfJyldID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbi8vIE9taXQgY29udGV4dC5wYWdlX2lkIGZvciBub24tcGRwL3BscCBwYWdlIHR5cGVzLiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBmb3IgY29udGV4dC5wYWdlX2lkIGlzOlxuLy8gUERQOiBwcm9kdWN0X2lkXG4vLyBQTFA6IHBscF9pZFxuLy8gU2VhcmNoOiBzZWFyY2ggcXVlcnlcbi8vIE90aGVyOiBwYWdlIHVybFxuLy8gV2Ugd2FudCB0byBvbWl0IGFsbCBidXQgcGRwIGFuZCBwbHAgcGFnZSB0eXBlcyB0byBwcm92aWRlIGEgY2xlYXIsIGNvbnNpc3RlbnQgaW50ZXJmYWNlIGZvciBtZXJjaGFudHMuXG5jb25zdCBzYW5pdGl6ZVBhZ2VJZCA9IChmaWx0ZXJlZDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gIGNvbnN0IHBhZ2VUeXBlID0gZmlsdGVyZWRbJ2NvbnRleHQucGFnZV90eXBlJ107XG4gIGlmIChwYWdlVHlwZSA9PT0gJ3BkcCcgfHwgcGFnZVR5cGUgPT09ICdwbHAnKSB7XG4gICAgcmV0dXJuIGZpbHRlcmVkO1xuICB9XG4gIGNvbnN0IHJlc3QgPSB7IC4uLmZpbHRlcmVkIH07XG4gIGRlbGV0ZSByZXN0Wydjb250ZXh0LnBhZ2VfaWQnXTtcbiAgcmV0dXJuIHJlc3Q7XG59O1xuXG4vLyBFeHRyYWN0IHdoaXRlbGlzdGVkIHN1Yi1maWVsZHMgZnJvbSB0cmlnZ2VyLndpZGdldF9pbnRlcmFjdGlvbl9kYXRhXG5jb25zdCBwcm9qZWN0V2lkZ2V0SW50ZXJhY3Rpb25EYXRhID0gKFxuICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgY29uZmlnOiBHQTRQcm9qZWN0ZWRFdmVudENvbmZpZyxcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgaWYgKCFjb25maWcud2lkZ2V0SW50ZXJhY3Rpb25EYXRhUHJvamVjdGlvbnMpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBpbnRlcmFjdGlvbiA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uJ107XG4gIGlmICh0eXBlb2YgaW50ZXJhY3Rpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgcHJvamVjdGlvbk1hcCA9IGNvbmZpZy53aWRnZXRJbnRlcmFjdGlvbkRhdGFQcm9qZWN0aW9uc1tpbnRlcmFjdGlvbl07XG4gIGlmICghcHJvamVjdGlvbk1hcCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IGludGVyYWN0aW9uRGF0YSA9IGV2ZW50UHJvcHNbJ3RyaWdnZXIud2lkZ2V0X2ludGVyYWN0aW9uX2RhdGEnXTtcbiAgaWYgKFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gbnVsbCB8fFxuICAgIGludGVyYWN0aW9uRGF0YSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgdHlwZW9mIGludGVyYWN0aW9uRGF0YSAhPT0gJ29iamVjdCdcbiAgKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IGludGVyYWN0aW9uRGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtnYUtleSwgc291cmNlRmllbGRdIG9mIE9iamVjdC5lbnRyaWVzKHByb2plY3Rpb25NYXApKSB7XG4gICAgaWYgKHNvdXJjZUZpZWxkIGluIGRhdGEpIHtcbiAgICAgIHJlc3VsdFtnYUtleV0gPSBkYXRhW3NvdXJjZUZpZWxkXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHRydW5jYXRlU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogdW5rbm93biA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IDEwMCkge1xuICAgIHJldHVybiBgJHt2YWx1ZS5zdWJzdHJpbmcoMCwgOTcpfS4uLmA7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufTtcblxuY29uc3QgdHJ1bmNhdGVWYWx1ZXMgPSAob2JqOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgY29uc3QgcmVzdWx0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9O1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhvYmopKSB7XG4gICAgcmVzdWx0W2tleV0gPSB0cnVuY2F0ZVN0cmluZyh2YWx1ZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmNvbnN0IHB1c2hUb0RhdGFMYXllciA9IChnYUV2ZW50OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IHZvaWQgPT4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRhdGFMYXllcikge1xuICAgIHdpbmRvdy5kYXRhTGF5ZXIucHVzaChnYUV2ZW50KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHByb2plY3RUb0dBNCA9IChcbiAgZXZlbnROYW1lOiBFbnZpdmVNZXRyaWNzRXZlbnROYW1lLFxuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiB2b2lkID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzY2hlbWFFbnRyeSA9IEdBNF9FVkVOVF9TQ0hFTUFbZXZlbnROYW1lXTtcblxuICAgIGlmIChzY2hlbWFFbnRyeS5nYUV2ZW50TmFtZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbmZpZyA9IHNjaGVtYUVudHJ5O1xuICAgIGNvbnN0IHByb3BzID0gZXZlbnRQcm9wcyA/PyB7fTtcblxuICAgIGxldCBmaWx0ZXJlZCA9IGZpbHRlclRvU2NoZW1hKHByb3BzLCBjb25maWcuYWxsb3dlZEZpZWxkcyk7XG4gICAgZmlsdGVyZWQgPSBzYW5pdGl6ZVBhZ2VJZChmaWx0ZXJlZCk7XG5cbiAgICBjb25zdCBpbnRlcmFjdGlvbkZpZWxkcyA9IHByb2plY3RXaWRnZXRJbnRlcmFjdGlvbkRhdGEocHJvcHMsIGNvbmZpZyk7XG5cbiAgICBjb25zdCBmbGF0UGFyYW1zID0ge1xuICAgICAgLi4uZmxhdHRlbkRvdEtleXMoZmlsdGVyZWQpLFxuICAgICAgLi4uaW50ZXJhY3Rpb25GaWVsZHMsXG4gICAgfTtcblxuICAgIGNvbnN0IHRydW5jYXRlZFBhcmFtcyA9IHRydW5jYXRlVmFsdWVzKGZsYXRQYXJhbXMpO1xuXG4gICAgcHVzaFRvRGF0YUxheWVyKHtcbiAgICAgIGV2ZW50OiBjb25maWcuZ2FFdmVudE5hbWUsXG4gICAgICAuLi50cnVuY2F0ZWRQYXJhbXMsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIExvZ2dlci5sb2dFcnJvcignW2Vudml2ZS1haV0gRXJyb3IgcHJvamVjdGluZyBldmVudCB0byBHQTQnLCBlcnIsIHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICB9KTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUlBLE1BQU0sa0JBQ0osWUFDQSxrQkFDNEI7Q0FDNUIsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sU0FBUyxjQUNsQixLQUFJLFNBQVMsV0FDWCxRQUFPLFNBQVMsV0FBVztBQUcvQixRQUFPOztBQUlULE1BQU0sa0JBQWtCLFFBQTBEO0NBQ2hGLE1BQU1BLFNBQWtDLEVBQUU7QUFDMUMsTUFBSyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sUUFBUSxJQUFJLENBQzVDLFFBQU8sSUFBSSxRQUFRLE9BQU8sSUFBSSxJQUFJO0FBRXBDLFFBQU87O0FBU1QsTUFBTSxrQkFBa0IsYUFBK0Q7Q0FDckYsTUFBTSxXQUFXLFNBQVM7QUFDMUIsS0FBSSxhQUFhLFNBQVMsYUFBYSxNQUNyQyxRQUFPO0NBRVQsTUFBTSxPQUFPLEVBQUUsR0FBRyxVQUFVO0FBQzVCLFFBQU8sS0FBSztBQUNaLFFBQU87O0FBSVQsTUFBTSxnQ0FDSixZQUNBLFdBQzRCO0FBQzVCLEtBQUksQ0FBQyxPQUFPLGlDQUNWLFFBQU8sRUFBRTtDQUdYLE1BQU0sY0FBYyxXQUFXO0FBQy9CLEtBQUksT0FBTyxnQkFBZ0IsU0FDekIsUUFBTyxFQUFFO0NBR1gsTUFBTSxnQkFBZ0IsT0FBTyxpQ0FBaUM7QUFDOUQsS0FBSSxDQUFDLGNBQ0gsUUFBTyxFQUFFO0NBR1gsTUFBTSxrQkFBa0IsV0FBVztBQUNuQyxLQUNFLG9CQUFvQixRQUNwQixvQkFBb0IsVUFDcEIsT0FBTyxvQkFBb0IsU0FFM0IsUUFBTyxFQUFFO0NBR1gsTUFBTSxPQUFPO0NBQ2IsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sQ0FBQyxPQUFPLGdCQUFnQixPQUFPLFFBQVEsY0FBYyxDQUM5RCxLQUFJLGVBQWUsS0FDakIsUUFBTyxTQUFTLEtBQUs7QUFHekIsUUFBTzs7QUFHVCxNQUFNLGtCQUFrQixVQUE0QjtBQUNsRCxLQUFJLE9BQU8sVUFBVSxZQUFZLE1BQU0sU0FBUyxJQUM5QyxRQUFPLEdBQUcsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDO0FBRW5DLFFBQU87O0FBR1QsTUFBTSxrQkFBa0IsUUFBMEQ7Q0FDaEYsTUFBTUEsU0FBa0MsRUFBRTtBQUMxQyxNQUFLLE1BQU0sQ0FBQyxLQUFLLFVBQVUsT0FBTyxRQUFRLElBQUksQ0FDNUMsUUFBTyxPQUFPLGVBQWUsTUFBTTtBQUVyQyxRQUFPOztBQUdULE1BQU0sbUJBQW1CLFlBQTJDO0FBQ2xFLEtBQUksT0FBTyxXQUFXLGVBQWUsT0FBTyxVQUMxQyxRQUFPLFVBQVUsS0FBSyxRQUFROztBQUlsQyxNQUFhLGdCQUNYLFdBQ0EsZUFDUztBQUNULEtBQUk7RUFDRixNQUFNLGNBQWMsaUJBQWlCO0FBRXJDLE1BQUksWUFBWSxnQkFBZ0IsS0FDOUI7RUFHRixNQUFNLFNBQVM7RUFDZixNQUFNLFFBQVEsY0FBYyxFQUFFO0VBRTlCLElBQUksV0FBVyxlQUFlLE9BQU8sT0FBTyxjQUFjO0FBQzFELGFBQVcsZUFBZSxTQUFTO0VBRW5DLE1BQU0sb0JBQW9CLDZCQUE2QixPQUFPLE9BQU87RUFPckUsTUFBTSxrQkFBa0IsZUFMTDtHQUNqQixHQUFHLGVBQWUsU0FBUztHQUMzQixHQUFHO0dBQ0osQ0FFaUQ7QUFFbEQsa0JBQWdCO0dBQ2QsT0FBTyxPQUFPO0dBQ2QsR0FBRztHQUNKLENBQUM7VUFDSyxLQUFLO0FBQ1osaUJBQU8sU0FBUyw2Q0FBNkMsS0FBSyxFQUNoRSxXQUNELENBQUMifQ==
|
|
@@ -11,10 +11,11 @@ let CustomerServiceType = /* @__PURE__ */ function(CustomerServiceType$1) {
|
|
|
11
11
|
CustomerServiceType$1["gladly"] = "gladly";
|
|
12
12
|
CustomerServiceType$1["richpanel"] = "richpanel";
|
|
13
13
|
CustomerServiceType$1["zendesk"] = "zendesk";
|
|
14
|
+
CustomerServiceType$1["eightByEight"] = "8x8";
|
|
14
15
|
CustomerServiceType$1["unsupported"] = "unsupported";
|
|
15
16
|
return CustomerServiceType$1;
|
|
16
17
|
}({});
|
|
17
18
|
|
|
18
19
|
//#endregion
|
|
19
20
|
exports.CustomerServiceType = CustomerServiceType;
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXJTZXJ2aWNlLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvY3VzdG9tZXJTZXJ2aWNlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbWVyU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcblxuZXhwb3J0IGVudW0gQ3VzdG9tZXJTZXJ2aWNlVHlwZSB7XG4gIHNob3BpZnkgPSAnc2hvcGlmeScsXG4gIGdvcmdpYXMgPSAnZ29yZ2lhcycsXG4gIGt1c3RvbWVyID0gJ2t1c3RvbWVyJyxcbiAgZ3Jvb3ZlID0gJ2dyb292ZScsXG4gIHRpZGlvID0gJ3RpZGlvJyxcbiAgem93aWUgPSAnem93aWUnLFxuICByZWRvID0gJ3JlZG8nLFxuICBnbGFkbHkgPSAnZ2xhZGx5JyxcbiAgcmljaHBhbmVsID0gJ3JpY2hwYW5lbCcsXG4gIHplbmRlc2sgPSAnemVuZGVzaycsXG4gIGVpZ2h0QnlFaWdodCA9ICc4eDgnLFxuICB1bnN1cHBvcnRlZCA9ICd1bnN1cHBvcnRlZCcsXG59XG5leHBvcnQgZW51bSBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGUge1xuICBub25lID0gJ25vbmUnLFxuICBzaW1wbGUgPSAnc2ltcGxlJyxcbiAgZnVsbCA9ICdmdWxsJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiB7XG4gIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VQcm92aWRlcjtcbiAgc3VwcG9ydGVkSW50ZWdyYXRpb25Nb2RlczogQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlW107XG4gIGFsbG93RmlsZVVwbG9hZD86IGJvb2xlYW47XG4gIG1heGZpbGVVcGxvYWRTaXplPzogbnVtYmVyO1xuICAvLyBUT0RPOiBSZW1vdmUgdGhpcyBtZXRob2Qgd2hlbiBtaWdyYXRpbmcgb3RoZXIgcHJvdmlkZXJzIHRvIHRoZSBuZXcgdW5pZmllZCBDWCBidXR0b24uXG4gIG9uU3dpdGNoVG9BZ2VudDogKCkgPT4gdm9pZDtcbiAgaXNFbmFibGVkOiAoKSA9PiBib29sZWFuO1xuICBpc0J1c2luZXNzSG91cnM6IChhcGlLZXk/OiBzdHJpbmcsIGFwaUVuZHBvaW50Pzogc3RyaW5nKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xufVxuIl0sIm1hcHBpbmdzIjoiOztBQUVBLElBQVksc0VBQUw7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EifQ==
|
|
@@ -12,6 +12,7 @@ declare enum CustomerServiceType {
|
|
|
12
12
|
gladly = "gladly",
|
|
13
13
|
richpanel = "richpanel",
|
|
14
14
|
zendesk = "zendesk",
|
|
15
|
+
eightByEight = "8x8",
|
|
15
16
|
unsupported = "unsupported",
|
|
16
17
|
}
|
|
17
18
|
declare enum CustomerServiceIntegrationMode {
|
|
@@ -21,4 +22,4 @@ declare enum CustomerServiceIntegrationMode {
|
|
|
21
22
|
}
|
|
22
23
|
//#endregion
|
|
23
24
|
export { CustomerServiceIntegrationMode, CustomerServiceType };
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXJTZXJ2aWNlLmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9jdXN0b21lclNlcnZpY2UuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21lclNlcnZpY2VQcm92aWRlciB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5leHBvcnQgZGVjbGFyZSBlbnVtIEN1c3RvbWVyU2VydmljZVR5cGUge1xuICAgIHNob3BpZnkgPSBcInNob3BpZnlcIixcbiAgICBnb3JnaWFzID0gXCJnb3JnaWFzXCIsXG4gICAga3VzdG9tZXIgPSBcImt1c3RvbWVyXCIsXG4gICAgZ3Jvb3ZlID0gXCJncm9vdmVcIixcbiAgICB0aWRpbyA9IFwidGlkaW9cIixcbiAgICB6b3dpZSA9IFwiem93aWVcIixcbiAgICByZWRvID0gXCJyZWRvXCIsXG4gICAgZ2xhZGx5ID0gXCJnbGFkbHlcIixcbiAgICByaWNocGFuZWwgPSBcInJpY2hwYW5lbFwiLFxuICAgIHplbmRlc2sgPSBcInplbmRlc2tcIixcbiAgICBlaWdodEJ5RWlnaHQgPSBcIjh4OFwiLFxuICAgIHVuc3VwcG9ydGVkID0gXCJ1bnN1cHBvcnRlZFwiXG59XG5leHBvcnQgZGVjbGFyZSBlbnVtIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZSB7XG4gICAgbm9uZSA9IFwibm9uZVwiLFxuICAgIHNpbXBsZSA9IFwic2ltcGxlXCIsXG4gICAgZnVsbCA9IFwiZnVsbFwiXG59XG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uIHtcbiAgICBwcm92aWRlcjogQ3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXI7XG4gICAgc3VwcG9ydGVkSW50ZWdyYXRpb25Nb2RlczogQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlW107XG4gICAgYWxsb3dGaWxlVXBsb2FkPzogYm9vbGVhbjtcbiAgICBtYXhmaWxlVXBsb2FkU2l6ZT86IG51bWJlcjtcbiAgICBvblN3aXRjaFRvQWdlbnQ6ICgpID0+IHZvaWQ7XG4gICAgaXNFbmFibGVkOiAoKSA9PiBib29sZWFuO1xuICAgIGlzQnVzaW5lc3NIb3VyczogKGFwaUtleT86IHN0cmluZywgYXBpRW5kcG9pbnQ/OiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj47XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQVcsc0JBQXNCLENBQUMsSUFBSTtBQUN0QyxJQUFXLGlDQUFZLENBQUEsSUFBQSJ9
|
|
@@ -12,6 +12,7 @@ declare enum CustomerServiceType {
|
|
|
12
12
|
gladly = "gladly",
|
|
13
13
|
richpanel = "richpanel",
|
|
14
14
|
zendesk = "zendesk",
|
|
15
|
+
eightByEight = "8x8",
|
|
15
16
|
unsupported = "unsupported",
|
|
16
17
|
}
|
|
17
18
|
declare enum CustomerServiceIntegrationMode {
|
|
@@ -21,4 +22,4 @@ declare enum CustomerServiceIntegrationMode {
|
|
|
21
22
|
}
|
|
22
23
|
//#endregion
|
|
23
24
|
export { CustomerServiceIntegrationMode, CustomerServiceType };
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXJTZXJ2aWNlLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2N1c3RvbWVyU2VydmljZS5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbWVyU2VydmljZVByb3ZpZGVyIH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmV4cG9ydCBkZWNsYXJlIGVudW0gQ3VzdG9tZXJTZXJ2aWNlVHlwZSB7XG4gICAgc2hvcGlmeSA9IFwic2hvcGlmeVwiLFxuICAgIGdvcmdpYXMgPSBcImdvcmdpYXNcIixcbiAgICBrdXN0b21lciA9IFwia3VzdG9tZXJcIixcbiAgICBncm9vdmUgPSBcImdyb292ZVwiLFxuICAgIHRpZGlvID0gXCJ0aWRpb1wiLFxuICAgIHpvd2llID0gXCJ6b3dpZVwiLFxuICAgIHJlZG8gPSBcInJlZG9cIixcbiAgICBnbGFkbHkgPSBcImdsYWRseVwiLFxuICAgIHJpY2hwYW5lbCA9IFwicmljaHBhbmVsXCIsXG4gICAgemVuZGVzayA9IFwiemVuZGVza1wiLFxuICAgIGVpZ2h0QnlFaWdodCA9IFwiOHg4XCIsXG4gICAgdW5zdXBwb3J0ZWQgPSBcInVuc3VwcG9ydGVkXCJcbn1cbmV4cG9ydCBkZWNsYXJlIGVudW0gQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb25Nb2RlIHtcbiAgICBub25lID0gXCJub25lXCIsXG4gICAgc2ltcGxlID0gXCJzaW1wbGVcIixcbiAgICBmdWxsID0gXCJmdWxsXCJcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24ge1xuICAgIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VQcm92aWRlcjtcbiAgICBzdXBwb3J0ZWRJbnRlZ3JhdGlvbk1vZGVzOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGVbXTtcbiAgICBhbGxvd0ZpbGVVcGxvYWQ/OiBib29sZWFuO1xuICAgIG1heGZpbGVVcGxvYWRTaXplPzogbnVtYmVyO1xuICAgIG9uU3dpdGNoVG9BZ2VudDogKCkgPT4gdm9pZDtcbiAgICBpc0VuYWJsZWQ6ICgpID0+IGJvb2xlYW47XG4gICAgaXNCdXNpbmVzc0hvdXJzOiAoYXBpS2V5Pzogc3RyaW5nLCBhcGlFbmRwb2ludD86IHN0cmluZykgPT4gUHJvbWlzZTxib29sZWFuPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsSUFBVyxzQkFBc0IsQ0FBQyxJQUFJO0FBQ3RDLElBQVcsaUNBQVksQ0FBQSxJQUFBIn0=
|
|
@@ -10,10 +10,11 @@ let CustomerServiceType = /* @__PURE__ */ function(CustomerServiceType$1) {
|
|
|
10
10
|
CustomerServiceType$1["gladly"] = "gladly";
|
|
11
11
|
CustomerServiceType$1["richpanel"] = "richpanel";
|
|
12
12
|
CustomerServiceType$1["zendesk"] = "zendesk";
|
|
13
|
+
CustomerServiceType$1["eightByEight"] = "8x8";
|
|
13
14
|
CustomerServiceType$1["unsupported"] = "unsupported";
|
|
14
15
|
return CustomerServiceType$1;
|
|
15
16
|
}({});
|
|
16
17
|
|
|
17
18
|
//#endregion
|
|
18
19
|
export { CustomerServiceType };
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXJTZXJ2aWNlLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9jdXN0b21lclNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tZXJTZXJ2aWNlUHJvdmlkZXIgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgZW51bSBDdXN0b21lclNlcnZpY2VUeXBlIHtcbiAgc2hvcGlmeSA9ICdzaG9waWZ5JyxcbiAgZ29yZ2lhcyA9ICdnb3JnaWFzJyxcbiAga3VzdG9tZXIgPSAna3VzdG9tZXInLFxuICBncm9vdmUgPSAnZ3Jvb3ZlJyxcbiAgdGlkaW8gPSAndGlkaW8nLFxuICB6b3dpZSA9ICd6b3dpZScsXG4gIHJlZG8gPSAncmVkbycsXG4gIGdsYWRseSA9ICdnbGFkbHknLFxuICByaWNocGFuZWwgPSAncmljaHBhbmVsJyxcbiAgemVuZGVzayA9ICd6ZW5kZXNrJyxcbiAgZWlnaHRCeUVpZ2h0ID0gJzh4OCcsXG4gIHVuc3VwcG9ydGVkID0gJ3Vuc3VwcG9ydGVkJyxcbn1cbmV4cG9ydCBlbnVtIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZSB7XG4gIG5vbmUgPSAnbm9uZScsXG4gIHNpbXBsZSA9ICdzaW1wbGUnLFxuICBmdWxsID0gJ2Z1bGwnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uIHtcbiAgcHJvdmlkZXI6IEN1c3RvbWVyU2VydmljZVByb3ZpZGVyO1xuICBzdXBwb3J0ZWRJbnRlZ3JhdGlvbk1vZGVzOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGVbXTtcbiAgYWxsb3dGaWxlVXBsb2FkPzogYm9vbGVhbjtcbiAgbWF4ZmlsZVVwbG9hZFNpemU/OiBudW1iZXI7XG4gIC8vIFRPRE86IFJlbW92ZSB0aGlzIG1ldGhvZCB3aGVuIG1pZ3JhdGluZyBvdGhlciBwcm92aWRlcnMgdG8gdGhlIG5ldyB1bmlmaWVkIENYIGJ1dHRvbi5cbiAgb25Td2l0Y2hUb0FnZW50OiAoKSA9PiB2b2lkO1xuICBpc0VuYWJsZWQ6ICgpID0+IGJvb2xlYW47XG4gIGlzQnVzaW5lc3NIb3VyczogKGFwaUtleT86IHN0cmluZywgYXBpRW5kcG9pbnQ/OiBzdHJpbmcpID0+IFByb21pc2U8Ym9vbGVhbj47XG59XG4iXSwibWFwcGluZ3MiOiI7QUFFQSxJQUFZLHNFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIn0=
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { WidgetTypeV3 } from "../contexts/typesV3.cjs";
|
|
2
|
+
import { HardcopyResponse } from "../contexts/hardcopyContext/hardcopyContext.cjs";
|
|
1
3
|
import { FrontendConfigOverrides } from "../application/models/frontendConfig.cjs";
|
|
2
4
|
import { VariantInfo } from "../application/models/variantInfo/variantInfo.cjs";
|
|
3
5
|
|
|
@@ -17,6 +19,7 @@ interface EnviveConfig {
|
|
|
17
19
|
initialOpenSearchOverlay?: boolean;
|
|
18
20
|
WidgetMountingOverride?: Record<string, any>[];
|
|
19
21
|
configChanges?: FrontendConfigOverrides[];
|
|
22
|
+
hardcopyOverride?: Partial<Record<WidgetTypeV3, HardcopyResponse>>;
|
|
20
23
|
}
|
|
21
24
|
declare global {
|
|
22
25
|
interface Window {
|
|
@@ -26,4 +29,4 @@ declare global {
|
|
|
26
29
|
}
|
|
27
30
|
//#endregion
|
|
28
31
|
export { EnviveConfig };
|
|
29
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnLmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9lbnZpdmVDb25maWcuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGcm9udGVuZENvbmZpZ092ZXJyaWRlcywgVmFyaWFudEluZm8gfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB0eXBlIHsgSGFyZGNvcHlSZXNwb25zZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9oYXJkY29weUNvbnRleHQvaGFyZGNvcHlDb250ZXh0JztcbmltcG9ydCB0eXBlIHsgV2lkZ2V0VHlwZVYzIH0gZnJvbSAnc3JjL2NvbnRleHRzL3R5cGVzVjMnO1xuZXhwb3J0IGludGVyZmFjZSBFbnZpdmVDb25maWcge1xuICAgIHB1YmxpY0tleT86IHN0cmluZztcbiAgICB1c2VySUQ/OiBzdHJpbmc7XG4gICAgZW52PzogJ3Byb2QnIHwgJ2Rldic7XG4gICAgY2xpZW50SUQ/OiBzdHJpbmc7XG4gICAgc2hvdz86IGJvb2xlYW47XG4gICAgZmVhdHVyZU92ZXJyaWRlcz86IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+O1xuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGU/OiBWYXJpYW50SW5mbztcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGU/OiBzdHJpbmc7XG4gICAgcGFnZVZhcmlhbnRJZE92ZXJyaWRlPzogc3RyaW5nO1xuICAgIHNlbGVjdGVkQ3VzdG9taXplT3B0aW9uPzogc3RyaW5nO1xuICAgIHJlZHVjZWRNb3Rpb25PdmVycmlkZT86IGJvb2xlYW47XG4gICAgaW5pdGlhbE9wZW5TZWFyY2hPdmVybGF5PzogYm9vbGVhbjtcbiAgICBXaWRnZXRNb3VudGluZ092ZXJyaWRlPzogUmVjb3JkPHN0cmluZywgYW55PltdO1xuICAgIGNvbmZpZ0NoYW5nZXM/OiBGcm9udGVuZENvbmZpZ092ZXJyaWRlc1tdO1xuICAgIGhhcmRjb3B5T3ZlcnJpZGU/OiBQYXJ0aWFsPFJlY29yZDxXaWRnZXRUeXBlVjMsIEhhcmRjb3B5UmVzcG9uc2U+Pjtcbn1cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgX3NwaWZmeT86IEVudml2ZUNvbmZpZztcbiAgICAgICAgX2Vudml2ZT86IEVudml2ZUNvbmZpZztcbiAgICB9XG59XG5leHBvcnQge307XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUdBLElBQVcsZUFBZTtDQUFDO09BQUc7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQzlCLElBQUksS0FBSztDQUFDO09BQVc7T0FBQztDQUFBLFdBQUEsR0FBQTtDQUFBIn0=
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { WidgetTypeV3 } from "../contexts/typesV3.js";
|
|
2
|
+
import { HardcopyResponse } from "../contexts/hardcopyContext/hardcopyContext.js";
|
|
1
3
|
import { FrontendConfigOverrides } from "../application/models/frontendConfig.js";
|
|
2
4
|
import { VariantInfo } from "../application/models/variantInfo/variantInfo.js";
|
|
3
5
|
|
|
@@ -17,6 +19,7 @@ interface EnviveConfig {
|
|
|
17
19
|
initialOpenSearchOverlay?: boolean;
|
|
18
20
|
WidgetMountingOverride?: Record<string, any>[];
|
|
19
21
|
configChanges?: FrontendConfigOverrides[];
|
|
22
|
+
hardcopyOverride?: Partial<Record<WidgetTypeV3, HardcopyResponse>>;
|
|
20
23
|
}
|
|
21
24
|
declare global {
|
|
22
25
|
interface Window {
|
|
@@ -26,4 +29,4 @@ declare global {
|
|
|
26
29
|
}
|
|
27
30
|
//#endregion
|
|
28
31
|
export { EnviveConfig };
|
|
29
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXZlQ29uZmlnLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL2Vudml2ZUNvbmZpZy5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyb250ZW5kQ29uZmlnT3ZlcnJpZGVzLCBWYXJpYW50SW5mbyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHR5cGUgeyBIYXJkY29weVJlc3BvbnNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2hhcmRjb3B5Q29udGV4dC9oYXJkY29weUNvbnRleHQnO1xuaW1wb3J0IHR5cGUgeyBXaWRnZXRUeXBlVjMgfSBmcm9tICdzcmMvY29udGV4dHMvdHlwZXNWMyc7XG5leHBvcnQgaW50ZXJmYWNlIEVudml2ZUNvbmZpZyB7XG4gICAgcHVibGljS2V5Pzogc3RyaW5nO1xuICAgIHVzZXJJRD86IHN0cmluZztcbiAgICBlbnY/OiAncHJvZCcgfCAnZGV2JztcbiAgICBjbGllbnRJRD86IHN0cmluZztcbiAgICBzaG93PzogYm9vbGVhbjtcbiAgICBmZWF0dXJlT3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gICAgdmFyaWFudEluZm9PdmVycmlkZT86IFZhcmlhbnRJbmZvO1xuICAgIHZhcmlhbnRVcmxPdmVycmlkZT86IHN0cmluZztcbiAgICBwYWdlVmFyaWFudElkT3ZlcnJpZGU/OiBzdHJpbmc7XG4gICAgc2VsZWN0ZWRDdXN0b21pemVPcHRpb24/OiBzdHJpbmc7XG4gICAgcmVkdWNlZE1vdGlvbk92ZXJyaWRlPzogYm9vbGVhbjtcbiAgICBpbml0aWFsT3BlblNlYXJjaE92ZXJsYXk/OiBib29sZWFuO1xuICAgIFdpZGdldE1vdW50aW5nT3ZlcnJpZGU/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+W107XG4gICAgY29uZmlnQ2hhbmdlcz86IEZyb250ZW5kQ29uZmlnT3ZlcnJpZGVzW107XG4gICAgaGFyZGNvcHlPdmVycmlkZT86IFBhcnRpYWw8UmVjb3JkPFdpZGdldFR5cGVWMywgSGFyZGNvcHlSZXNwb25zZT4+O1xufVxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBfc3BpZmZ5PzogRW52aXZlQ29uZmlnO1xuICAgICAgICBfZW52aXZlPzogRW52aXZlQ29uZmlnO1xuICAgIH1cbn1cbmV4cG9ydCB7fTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBR0EsSUFBVyxlQUFlO0NBQUM7T0FBRztPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDOUIsSUFBSSxLQUFLO0NBQUM7T0FBVztPQUFDO0NBQUEsV0FBQSxHQUFBO0NBQUEifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@envive-ai/react-hooks",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.13",
|
|
4
4
|
"description": "React hooks for connecting to Envive AI services.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -38,11 +38,10 @@
|
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@amplitude/analytics-browser": "2.23.7",
|
|
41
|
-
"@spiffy-ai/commerce-api-client": "1.1.0-SNAPSHOT.
|
|
41
|
+
"@spiffy-ai/commerce-api-client": "1.1.0-SNAPSHOT.202602261036",
|
|
42
42
|
"@envive-ai/analytics": "1.0.28",
|
|
43
43
|
"fuse.js": "^7.1.0",
|
|
44
44
|
"jotai": "^2.14.0",
|
|
45
|
-
"ua-parser-js": "^1.0.39",
|
|
46
45
|
"uuid": "^13.0.0"
|
|
47
46
|
},
|
|
48
47
|
"devDependencies": {
|
|
@@ -315,10 +314,6 @@
|
|
|
315
314
|
"import": "./dist/hooks/GraphQLConfig/index.js",
|
|
316
315
|
"require": "./dist/hooks/GraphQLConfig/index.cjs"
|
|
317
316
|
},
|
|
318
|
-
"./hooks/IdentifyUser": {
|
|
319
|
-
"import": "./dist/hooks/IdentifyUser/index.js",
|
|
320
|
-
"require": "./dist/hooks/IdentifyUser/index.cjs"
|
|
321
|
-
},
|
|
322
317
|
"./hooks/ImageResolver": {
|
|
323
318
|
"import": "./dist/hooks/ImageResolver/index.js",
|
|
324
319
|
"require": "./dist/hooks/ImageResolver/index.cjs"
|