@envive-ai/react-hooks 0.3.10 → 0.3.12

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.
Files changed (215) hide show
  1. package/dist/application/commerce-api.cjs +26 -22
  2. package/dist/application/commerce-api.d.cts +58 -0
  3. package/dist/application/commerce-api.d.ts +59 -0
  4. package/dist/application/commerce-api.js +16 -12
  5. package/dist/application/models/api/widgetText.d.cts +14 -0
  6. package/dist/application/models/api/widgetText.d.ts +14 -0
  7. package/dist/application/models/api/widgetTextRequest.d.cts +16 -0
  8. package/dist/application/models/api/widgetTextRequest.d.ts +16 -0
  9. package/dist/application/models/chatElementDisplayLocationV3.cjs +4 -1
  10. package/dist/application/models/chatElementDisplayLocationV3.d.cts +4 -1
  11. package/dist/application/models/chatElementDisplayLocationV3.d.ts +4 -1
  12. package/dist/application/models/chatElementDisplayLocationV3.js +4 -1
  13. package/dist/application/models/guards/api/index.cjs +7 -7
  14. package/dist/application/models/guards/api/index.js +7 -7
  15. package/dist/application/models/guards/api/isApiFormResponse.cjs +1 -1
  16. package/dist/application/models/guards/api/isApiFormResponse.js +1 -1
  17. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +1 -1
  18. package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +1 -1
  19. package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +1 -1
  20. package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +1 -1
  21. package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +1 -1
  22. package/dist/application/models/guards/api/isApiProductResponseAttributes.js +1 -1
  23. package/dist/application/models/guards/api/isApiResponse.cjs +1 -1
  24. package/dist/application/models/guards/api/isApiResponse.js +1 -1
  25. package/dist/application/models/index.cjs +29 -29
  26. package/dist/application/models/index.d.cts +25 -25
  27. package/dist/application/models/index.d.ts +25 -25
  28. package/dist/application/models/index.js +29 -29
  29. package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +1 -1
  30. package/dist/application/models/validators/validateGraphQLFrontendConfig.js +1 -1
  31. package/dist/application/models/validators/validateResponse.cjs +3 -3
  32. package/dist/application/models/validators/validateResponse.js +3 -3
  33. package/dist/application/models/validators/validateUserEvent.cjs +2 -2
  34. package/dist/application/models/validators/validateUserEvent.js +2 -2
  35. package/dist/application/models/variantInfo/variantInfo.cjs +2 -1
  36. package/dist/application/models/variantInfo/variantInfo.d.cts +6 -1
  37. package/dist/application/models/variantInfo/variantInfo.d.ts +6 -1
  38. package/dist/application/models/variantInfo/variantInfo.js +2 -1
  39. package/dist/application/utils/analyticsUtils.cjs +1 -1
  40. package/dist/application/utils/analyticsUtils.js +1 -1
  41. package/dist/application/utils/nodeSelector.cjs +12 -14
  42. package/dist/application/utils/nodeSelector.js +12 -14
  43. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.cjs +3 -1
  44. package/dist/application/utils/widgetTextFromApiWidgetTextResponse.js +3 -1
  45. package/dist/application/utils/widgetTextRequestToApiRequest.cjs +4 -1
  46. package/dist/application/utils/widgetTextRequestToApiRequest.js +4 -1
  47. package/dist/atoms/app/index.cjs +7 -7
  48. package/dist/atoms/app/index.d.cts +1 -1
  49. package/dist/atoms/app/index.d.ts +8 -8
  50. package/dist/atoms/app/index.js +1 -1
  51. package/dist/atoms/app/variant.cjs +44 -4
  52. package/dist/atoms/app/variant.d.cts +8 -8
  53. package/dist/atoms/app/variant.d.ts +8 -8
  54. package/dist/atoms/app/variant.js +44 -5
  55. package/dist/atoms/chat/chatState.d.cts +18 -18
  56. package/dist/atoms/chat/chatState.d.ts +17 -17
  57. package/dist/atoms/chat/form.cjs +1 -1
  58. package/dist/atoms/chat/form.d.cts +2 -2
  59. package/dist/atoms/chat/form.d.ts +2 -2
  60. package/dist/atoms/chat/form.js +1 -1
  61. package/dist/atoms/chat/index.d.cts +3 -3
  62. package/dist/atoms/chat/index.d.ts +2 -2
  63. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  64. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  65. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  66. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  67. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  68. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  69. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  70. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  71. package/dist/atoms/chat/replies.d.cts +3 -3
  72. package/dist/atoms/chat/replies.d.ts +3 -3
  73. package/dist/atoms/chat/suggestions.d.cts +2 -2
  74. package/dist/atoms/chat/suggestions.d.ts +2 -2
  75. package/dist/atoms/envive/enviveConfig.d.cts +19 -0
  76. package/dist/atoms/envive/enviveConfig.d.ts +19 -0
  77. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  78. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  79. package/dist/atoms/org/customerService.d.cts +6 -6
  80. package/dist/atoms/org/customerService.d.ts +6 -6
  81. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  82. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  83. package/dist/atoms/org/index.cjs +1 -1
  84. package/dist/atoms/org/index.js +1 -1
  85. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  86. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  87. package/dist/atoms/org/orgAnalyticsConfig.d.cts +5 -5
  88. package/dist/atoms/org/orgAnalyticsConfig.d.ts +5 -5
  89. package/dist/atoms/search/chatSearch.cjs +1 -1
  90. package/dist/atoms/search/chatSearch.d.cts +17 -17
  91. package/dist/atoms/search/chatSearch.d.ts +17 -17
  92. package/dist/atoms/search/chatSearch.js +1 -1
  93. package/dist/atoms/search/searchAPI.d.cts +13 -13
  94. package/dist/atoms/search/searchAPI.d.ts +13 -13
  95. package/dist/atoms/search/types.d.cts +1 -1
  96. package/dist/atoms/search/types.d.ts +1 -1
  97. package/dist/atoms/search/utils.d.cts +1 -1
  98. package/dist/atoms/search/utils.d.ts +1 -1
  99. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  100. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  101. package/dist/config/locators/components/search/index.d.cts +1 -1
  102. package/dist/contexts/amplitudeContext/amplitudeContext.cjs +9 -7
  103. package/dist/contexts/amplitudeContext/amplitudeContext.d.cts +2 -2
  104. package/dist/contexts/amplitudeContext/amplitudeContext.d.ts +2 -2
  105. package/dist/contexts/amplitudeContext/amplitudeContext.js +5 -3
  106. package/dist/contexts/amplitudeContext/index.cjs +1 -0
  107. package/dist/contexts/amplitudeContext/index.d.cts +2 -2
  108. package/dist/contexts/amplitudeContext/index.d.ts +2 -2
  109. package/dist/contexts/amplitudeContext/index.js +2 -2
  110. package/dist/contexts/cdnContext/cdnContext.cjs +3 -3
  111. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +6 -5
  112. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +2 -1
  113. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +2 -1
  114. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +3 -2
  115. package/dist/contexts/enviveContext/WindowChatToggleBinder.cjs +4 -3
  116. package/dist/contexts/enviveContext/WindowChatToggleBinder.js +4 -3
  117. package/dist/contexts/enviveContext/enviveContext.cjs +23 -16
  118. package/dist/contexts/enviveContext/enviveContext.d.cts +5 -1
  119. package/dist/contexts/enviveContext/enviveContext.d.ts +5 -1
  120. package/dist/contexts/enviveContext/enviveContext.js +23 -16
  121. package/dist/contexts/enviveContext/types.d.cts +1 -1
  122. package/dist/contexts/enviveContext/types.d.ts +1 -1
  123. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +23 -2
  124. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +11 -2
  125. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +11 -2
  126. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +23 -2
  127. package/dist/contexts/featureFlagServiceContext/index.d.cts +2 -2
  128. package/dist/contexts/featureFlagServiceContext/index.d.ts +2 -2
  129. package/dist/contexts/graphqlContext/graphqlContext.cjs +7 -7
  130. package/dist/contexts/graphqlContext/graphqlContext.d.cts +1 -1
  131. package/dist/contexts/graphqlContext/graphqlContext.d.ts +1 -1
  132. package/dist/contexts/graphqlContext/graphqlContext.js +3 -3
  133. package/dist/contexts/graphqlContext/mockV3Config.cjs +10 -4
  134. package/dist/contexts/graphqlContext/mockV3Config.js +10 -4
  135. package/dist/contexts/hardcopyContext/hardcopyContext.cjs +60 -6
  136. package/dist/contexts/hardcopyContext/hardcopyContext.d.cts +8 -3
  137. package/dist/contexts/hardcopyContext/hardcopyContext.d.ts +8 -3
  138. package/dist/contexts/hardcopyContext/hardcopyContext.js +58 -4
  139. package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +3 -3
  140. package/dist/contexts/pageContext/mapping.cjs +6 -2
  141. package/dist/contexts/pageContext/mapping.js +6 -2
  142. package/dist/contexts/pageContext/pageContext.cjs +12 -7
  143. package/dist/contexts/pageContext/pageContext.js +10 -5
  144. package/dist/contexts/pageContext/types.d.cts +7 -3
  145. package/dist/contexts/pageContext/types.d.ts +7 -3
  146. package/dist/contexts/salesAgentContext/chatAPI.cjs +101 -12
  147. package/dist/contexts/salesAgentContext/chatAPI.d.cts +8 -4
  148. package/dist/contexts/salesAgentContext/chatAPI.d.ts +8 -4
  149. package/dist/contexts/salesAgentContext/chatAPI.js +103 -14
  150. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +1 -1
  151. package/dist/contexts/salesAgentContext/salesAgentContext.js +1 -1
  152. package/dist/contexts/salesAgentContext/salesAgentService.cjs +52 -10
  153. package/dist/contexts/salesAgentContext/salesAgentService.js +50 -8
  154. package/dist/contexts/searchContext/searchContext.cjs +4 -4
  155. package/dist/contexts/searchContext/searchContext.js +1 -1
  156. package/dist/contexts/systemSettingsContext/systemSettingsContext.cjs +3 -3
  157. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  158. package/dist/contexts/types.cjs +1 -1
  159. package/dist/contexts/types.d.cts +10 -3
  160. package/dist/contexts/types.d.ts +10 -3
  161. package/dist/contexts/types.js +1 -1
  162. package/dist/contexts/typesV3.cjs +2 -1
  163. package/dist/contexts/typesV3.d.cts +28 -7
  164. package/dist/contexts/typesV3.d.ts +26 -5
  165. package/dist/contexts/typesV3.js +2 -1
  166. package/dist/contexts/userIdentityContext/userIdentityContext.cjs +3 -3
  167. package/dist/contexts/widgetConfigContext/widgetConfigContext.cjs +1 -1
  168. package/dist/contexts/widgetConfigContext/widgetConfigContext.js +1 -1
  169. package/dist/hooks/AppDetails/useAppDetails.cjs +6 -6
  170. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  171. package/dist/hooks/ImageResolver/useImageResolver.cjs +3 -3
  172. package/dist/hooks/Search/useSearch.cjs +4 -4
  173. package/dist/hooks/Search/useSearch.d.cts +1 -1
  174. package/dist/hooks/Search/useSearch.d.ts +1 -1
  175. package/dist/hooks/Search/useSearch.js +1 -1
  176. package/dist/services/amplitudeService/amplitudeService.cjs +49 -11
  177. package/dist/services/amplitudeService/amplitudeService.d.cts +18 -3
  178. package/dist/services/amplitudeService/amplitudeService.d.ts +18 -3
  179. package/dist/services/amplitudeService/amplitudeService.js +49 -12
  180. package/dist/services/amplitudeService/index.cjs +1 -0
  181. package/dist/services/amplitudeService/index.d.cts +2 -2
  182. package/dist/services/amplitudeService/index.d.ts +2 -2
  183. package/dist/services/amplitudeService/index.js +2 -2
  184. package/dist/types/customerService.d.cts +3 -1
  185. package/dist/types/customerService.d.ts +1 -1
  186. package/dist/types/enviveConfig.d.cts +4 -1
  187. package/dist/types/enviveConfig.d.ts +4 -1
  188. package/package.json +10 -2
  189. package/src/application/commerce-api.ts +25 -20
  190. package/src/application/models/api/widgetText.ts +2 -0
  191. package/src/application/models/api/widgetTextRequest.ts +2 -0
  192. package/src/application/models/chatElementDisplayLocationV3.ts +3 -0
  193. package/src/application/models/variantInfo/variantInfo.ts +5 -0
  194. package/src/application/utils/nodeSelector.ts +15 -14
  195. package/src/application/utils/widgetTextFromApiWidgetTextResponse.ts +2 -0
  196. package/src/application/utils/widgetTextRequestToApiRequest.ts +5 -0
  197. package/src/atoms/app/variant.ts +56 -2
  198. package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +2 -0
  199. package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -1
  200. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -0
  201. package/src/contexts/enviveContext/WindowChatToggleBinder.tsx +5 -1
  202. package/src/contexts/enviveContext/enviveContext.tsx +10 -3
  203. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +36 -0
  204. package/src/contexts/graphqlContext/mockV3Config.ts +13 -7
  205. package/src/contexts/hardcopyContext/hardcopyContext.tsx +67 -4
  206. package/src/contexts/pageContext/mapping.ts +13 -1
  207. package/src/contexts/pageContext/pageContext.tsx +9 -4
  208. package/src/contexts/pageContext/types.ts +7 -1
  209. package/src/contexts/salesAgentContext/chatAPI.ts +105 -13
  210. package/src/contexts/salesAgentContext/salesAgentService.ts +66 -4
  211. package/src/contexts/types.ts +11 -2
  212. package/src/contexts/typesV3.ts +42 -16
  213. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +80 -0
  214. package/src/services/amplitudeService/amplitudeService.ts +55 -11
  215. package/src/types/enviveConfig.ts +3 -0
@@ -46,8 +46,20 @@ export enum SpiffyMetricsEventName {
46
46
  SearchSortClicked = 'Search Sort Clicked',
47
47
  }
48
48
 
49
+ export enum EnviveMetricsEventName {
50
+ WidgetRendered = 'Widget Rendered',
51
+ WidgetInteraction = 'Widget Interaction',
52
+ ChatRequest = 'Chat Request',
53
+ ChatResponse = 'Chat Response',
54
+ EnviveInitialized = 'Envive Initialized',
55
+ PageViewed = 'Page Viewed', // Will this be useful?
56
+ WidgetTextRequest = 'Widget Text Request',
57
+ WidgetTextResponse = 'Widget Text Response',
58
+ WidgetTextClicked = 'Widget Text Clicked',
59
+ }
60
+
49
61
  export interface TrackEventParams {
50
- eventName: SpiffyMetricsEventName;
62
+ eventName: SpiffyMetricsEventName | EnviveMetricsEventName;
51
63
  eventProps?: Record<string, unknown>;
52
64
  eventGroups?: Record<string, unknown>;
53
65
  alsoSendToGoogleAnalytics?: boolean;
@@ -64,6 +76,7 @@ export interface AmplitudeServiceConfig {
64
76
  featureFlagService: FeatureFlagService;
65
77
  orgGaConfig?: unknown;
66
78
  show: boolean;
79
+ enviveOn: boolean;
67
80
  enabledFeatures?: Record<string, boolean>;
68
81
  getLocalStorageItem: null | ((key: string) => string | null);
69
82
  }
@@ -101,7 +114,9 @@ export class AmplitudeService {
101
114
  return null;
102
115
  }
103
116
 
104
- private getDefaultTrackingProps(): Record<string, unknown> {
117
+ private getDefaultTrackingProps(
118
+ eventName: SpiffyMetricsEventName | EnviveMetricsEventName,
119
+ ): Record<string, unknown> {
105
120
  const featureGates = Object.entries(this.config.featureFlagService.getFeatureFlags());
106
121
  const gatesProps =
107
122
  featureGates.length > 0
@@ -114,16 +129,32 @@ export class AmplitudeService {
114
129
  : {};
115
130
  const experimentProps = {}; // No direct equivalent for experiments in EnviveConfig yet
116
131
 
117
- const orgLevelAmplitudeTrackingProps = {
118
- ...gatesProps,
119
- ...experimentProps,
132
+ const environmentProps = {
133
+ 'environment.execution_context': 'bundle',
134
+ 'environment.page_url': window.location.href,
135
+ 'environment.envive_user_id': this.config.userId,
136
+ 'environment.execution_environment': this.config.env || 'unknown',
137
+ 'environment.context_source': this.config.contextSource,
138
+ 'environment.sales_agent_enabled': this.config.enabledFeatures?.salesAgent ?? false,
139
+ 'environment.search_enabled': this.config.enabledFeatures?.searchAgent ?? false,
140
+ 'environment.envive_on_query_param': this.config.enviveOn,
141
+ 'environment.window_show': this.config.show,
142
+ 'environment.envive_enabled': this.config.enabledFeatures?.envive,
120
143
  };
121
144
 
145
+ const orgLevelAmplitudeTrackingProps = AmplitudeService.isEnviveEvent(eventName)
146
+ ? {
147
+ ...this.config.featureFlagService.getFullFlagValues(),
148
+ ...experimentProps,
149
+ ...environmentProps,
150
+ }
151
+ : {
152
+ ...gatesProps,
153
+ ...experimentProps,
154
+ };
122
155
  return {
123
156
  ...orgLevelAmplitudeTrackingProps,
124
157
  ...this.supplementalDefaultProps,
125
- // TODO: org_id is not directly available in EnviveConfig. Need to find a new source or derive it.
126
- // org_id: orgConfig?.org?.org?.id,
127
158
  app_id: 'commerce-chat-react-component',
128
159
  chat_id: this.getLocalStorageItem(LocalStorageKeys.ChatId),
129
160
  env: this.config.env || 'unknown',
@@ -143,7 +174,7 @@ export class AmplitudeService {
143
174
 
144
175
  // eslint-disable-next-line class-methods-use-this
145
176
  private eventPropsToPrefixedEventProps(
146
- eventName: SpiffyMetricsEventName,
177
+ eventName: SpiffyMetricsEventName | EnviveMetricsEventName,
147
178
  eventProps: Record<string, unknown>,
148
179
  ): Record<string, unknown> {
149
180
  const prefix = eventName.toLowerCase().replace(/\s+/g, '_');
@@ -200,7 +231,9 @@ export class AmplitudeService {
200
231
  ...event,
201
232
  event_properties: {
202
233
  ...event.event_properties,
203
- ...this.getDefaultTrackingProps(),
234
+ ...this.getDefaultTrackingProps(
235
+ event.event_type as SpiffyMetricsEventName | EnviveMetricsEventName,
236
+ ),
204
237
  ...globalProperties,
205
238
  ...enabledFeaturesProperties,
206
239
  ...timingProperties,
@@ -342,6 +375,17 @@ export class AmplitudeService {
342
375
  return eventProps ?? {};
343
376
  }
344
377
 
378
+ static isEnviveEvent(eventName: SpiffyMetricsEventName | EnviveMetricsEventName): boolean {
379
+ return Object.values(EnviveMetricsEventName).includes(eventName as EnviveMetricsEventName);
380
+ }
381
+
382
+ static decorateEventName(eventName: SpiffyMetricsEventName | EnviveMetricsEventName): string {
383
+ if (AmplitudeService.isEnviveEvent(eventName)) {
384
+ return `[Envive] ${eventName}`;
385
+ }
386
+ return `[Spiffy] ${eventName}`;
387
+ }
388
+
345
389
  async trackEvent({
346
390
  eventName,
347
391
  eventProps,
@@ -350,7 +394,7 @@ export class AmplitudeService {
350
394
  }: TrackEventParams): Promise<void> {
351
395
  Logger.logDebug('Submitting event', eventName);
352
396
  try {
353
- const decoratedEventName = `[Spiffy] ${eventName}`;
397
+ const decoratedEventName = AmplitudeService.decorateEventName(eventName);
354
398
 
355
399
  if (!this.amplitudeClient) {
356
400
  Logger.logWarn('amplitude client undefined', undefined, {
@@ -382,7 +426,7 @@ export class AmplitudeService {
382
426
  this.amplitudeClient.track(
383
427
  decoratedEventName,
384
428
  {
385
- ...this.getDefaultTrackingProps(),
429
+ ...this.getDefaultTrackingProps(eventName),
386
430
  ...mappedEventProps,
387
431
  ...(mappedEventProps
388
432
  ? this.eventPropsToPrefixedEventProps(eventName, mappedEventProps)
@@ -1,4 +1,6 @@
1
1
  import { FrontendConfigOverrides, VariantInfo } from 'src/application/models';
2
+ import type { HardcopyResponse } from 'src/contexts/hardcopyContext/hardcopyContext';
3
+ import type { WidgetTypeV3 } from 'src/contexts/typesV3';
2
4
 
3
5
  export interface EnviveConfig {
4
6
  publicKey?: string;
@@ -15,6 +17,7 @@ export interface EnviveConfig {
15
17
  initialOpenSearchOverlay?: boolean;
16
18
  WidgetMountingOverride?: Record<string, any>[];
17
19
  configChanges?: FrontendConfigOverrides[];
20
+ hardcopyOverride?: Partial<Record<WidgetTypeV3, HardcopyResponse>>;
18
21
  }
19
22
 
20
23
  declare global {