@revrag-ai/embed-react-native 1.0.17 → 1.0.18

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 (43) hide show
  1. package/android/build.gradle +3 -3
  2. package/dist/commonjs/events/agent-event-emitter.js +114 -0
  3. package/dist/commonjs/events/agent-event-emitter.js.map +1 -0
  4. package/dist/commonjs/events/embed.event.js +69 -142
  5. package/dist/commonjs/events/embed.event.js.map +1 -1
  6. package/dist/commonjs/events/embed.types.js +32 -0
  7. package/dist/commonjs/events/embed.types.js.map +1 -0
  8. package/dist/commonjs/events/embed.validators.js +36 -0
  9. package/dist/commonjs/events/embed.validators.js.map +1 -0
  10. package/dist/commonjs/events/index.js +47 -0
  11. package/dist/commonjs/events/index.js.map +1 -0
  12. package/dist/commonjs/utils/constant.js +11 -0
  13. package/dist/commonjs/utils/constant.js.map +1 -1
  14. package/dist/commonjs/utils/permision.js +48 -1
  15. package/dist/commonjs/utils/permision.js.map +1 -1
  16. package/dist/module/events/agent-event-emitter.js +109 -0
  17. package/dist/module/events/agent-event-emitter.js.map +1 -0
  18. package/dist/module/events/embed.event.js +59 -147
  19. package/dist/module/events/embed.event.js.map +1 -1
  20. package/dist/module/events/embed.types.js +33 -0
  21. package/dist/module/events/embed.types.js.map +1 -0
  22. package/dist/module/events/embed.validators.js +32 -0
  23. package/dist/module/events/embed.validators.js.map +1 -0
  24. package/dist/module/events/index.js +12 -0
  25. package/dist/module/events/index.js.map +1 -0
  26. package/dist/module/utils/constant.js +11 -0
  27. package/dist/module/utils/constant.js.map +1 -1
  28. package/dist/module/utils/permision.js +48 -1
  29. package/dist/module/utils/permision.js.map +1 -1
  30. package/dist/typescript/src/events/agent-event-emitter.d.ts +41 -0
  31. package/dist/typescript/src/events/agent-event-emitter.d.ts.map +1 -0
  32. package/dist/typescript/src/events/embed.event.d.ts +21 -67
  33. package/dist/typescript/src/events/embed.event.d.ts.map +1 -1
  34. package/dist/typescript/src/events/embed.types.d.ts +39 -0
  35. package/dist/typescript/src/events/embed.types.d.ts.map +1 -0
  36. package/dist/typescript/src/events/embed.validators.d.ts +17 -0
  37. package/dist/typescript/src/events/embed.validators.d.ts.map +1 -0
  38. package/dist/typescript/src/events/index.d.ts +10 -0
  39. package/dist/typescript/src/events/index.d.ts.map +1 -0
  40. package/dist/typescript/src/utils/constant.d.ts +1 -0
  41. package/dist/typescript/src/utils/constant.d.ts.map +1 -1
  42. package/dist/typescript/src/utils/permision.d.ts.map +1 -1
  43. package/package.json +11 -6
@@ -5,18 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.checkPermissions = void 0;
7
7
  var _reactNative = require("react-native");
8
+ var _constant = require("./constant.js");
9
+ var _api = require("../api/api.js");
10
+ var _storeKey = require("../store/store.key.js");
11
+ var _embedEvent = require("../events/embed.event.js");
8
12
  const checkPermissions = async () => {
9
13
  try {
14
+ console.error('RECORD_AUDIO permission not available');
10
15
  // Check for required permissions on Android
11
16
  if (_reactNative.Platform.OS === 'android') {
12
17
  const recordAudioPermission = _reactNative.PermissionsAndroid.PERMISSIONS.RECORD_AUDIO;
13
18
  if (!recordAudioPermission) {
14
- throw new Error('RECORD_AUDIO permission not available');
19
+ const error = new Error('RECORD_AUDIO permission not available');
20
+ await sendPermissionDeniedEvent('RECORD_AUDIO permission not available');
21
+ throw error;
15
22
  }
16
23
  const permissions = [recordAudioPermission];
17
24
  const results = await Promise.all(permissions.map(permission => _reactNative.PermissionsAndroid.request(permission)));
18
25
  const allGranted = results.every(result => result === _reactNative.PermissionsAndroid.RESULTS.GRANTED);
19
26
  if (!allGranted) {
27
+ const deniedPermissions = permissions.filter((_, index) => results[index] !== _reactNative.PermissionsAndroid.RESULTS.GRANTED);
28
+ await sendPermissionDeniedEvent('Required permissions not granted', deniedPermissions);
20
29
  throw new Error('Required permissions not granted');
21
30
  }
22
31
  }
@@ -25,5 +34,43 @@ const checkPermissions = async () => {
25
34
  throw new Error(errorMessage);
26
35
  }
27
36
  };
37
+
38
+ /**
39
+ * Send permission denied event to backend
40
+ * @param reason - The reason for permission denial
41
+ * @param deniedPermissions - List of denied permissions
42
+ */
28
43
  exports.checkPermissions = checkPermissions;
44
+ async function sendPermissionDeniedEvent(reason, deniedPermissions) {
45
+ try {
46
+ // Get user identity to include app_user_id
47
+ const userIdentity = await (0, _storeKey.getAgentData)(_embedEvent.EventKeys.USER_DATA);
48
+ if (!userIdentity?.app_user_id) {
49
+ console.warn('[Permission] Cannot send permission denied event: User identity not found');
50
+ return;
51
+ }
52
+
53
+ // Build event payload
54
+ const payload = (0, _constant.buildEventPayload)({
55
+ eventKey: _embedEvent.EventKeys.ANALYTICS_DATA,
56
+ app_user_id: userIdentity.app_user_id,
57
+ error_type: 'permission_denied',
58
+ event_name: 'mic_permission_denied',
59
+ error_message: reason,
60
+ denied_permissions: deniedPermissions,
61
+ platform: _reactNative.Platform.OS,
62
+ timestamp: new Date().toISOString()
63
+ });
64
+
65
+ // Send to backend
66
+ const apiService = _api.APIService.getInstance();
67
+ const response = await apiService.updateUserData(payload);
68
+ if (!response.success) {
69
+ console.error('[Permission] Failed to send permission denied event:', response.error);
70
+ }
71
+ } catch (error) {
72
+ console.error('[Permission] Error sending permission denied event:', error);
73
+ // Fail silently - permission events should not break the app
74
+ }
75
+ }
29
76
  //# sourceMappingURL=permision.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","checkPermissions","Platform","OS","recordAudioPermission","PermissionsAndroid","PERMISSIONS","RECORD_AUDIO","Error","permissions","results","Promise","all","map","permission","request","allGranted","every","result","RESULTS","GRANTED","err","errorMessage","message","exports"],"sourceRoot":"../../../src","sources":["utils/permision.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AAEO,MAAMC,gBAAgB,GAAG,MAAAA,CAAA,KAA2B;EACzD,IAAI;IACF;IACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B,MAAMC,qBAAqB,GAAGC,+BAAkB,CAACC,WAAW,CAACC,YAAY;MACzE,IAAI,CAACH,qBAAqB,EAAE;QAC1B,MAAM,IAAII,KAAK,CAAC,uCAAuC,CAAC;MAC1D;MAEA,MAAMC,WAAW,GAAG,CAACL,qBAAqB,CAAC;MAE3C,MAAMM,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC/BH,WAAW,CAACI,GAAG,CAAEC,UAAU,IAAKT,+BAAkB,CAACU,OAAO,CAACD,UAAU,CAAC,CACxE,CAAC;MAED,MAAME,UAAU,GAAGN,OAAO,CAACO,KAAK,CAC7BC,MAAM,IAAKA,MAAM,KAAKb,+BAAkB,CAACc,OAAO,CAACC,OACpD,CAAC;MAED,IAAI,CAACJ,UAAU,EAAE;QACf,MAAM,IAAIR,KAAK,CAAC,kCAAkC,CAAC;MACrD;IACF;EACF,CAAC,CAAC,OAAOa,GAAG,EAAE;IACZ,MAAMC,YAAY,GAChBD,GAAG,YAAYb,KAAK,GAAGa,GAAG,CAACE,OAAO,GAAG,6BAA6B;IACpE,MAAM,IAAIf,KAAK,CAACc,YAAY,CAAC;EAC/B;AACF,CAAC;AAACE,OAAA,CAAAvB,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_constant","_api","_storeKey","_embedEvent","checkPermissions","console","error","Platform","OS","recordAudioPermission","PermissionsAndroid","PERMISSIONS","RECORD_AUDIO","Error","sendPermissionDeniedEvent","permissions","results","Promise","all","map","permission","request","allGranted","every","result","RESULTS","GRANTED","deniedPermissions","filter","_","index","err","errorMessage","message","exports","reason","userIdentity","getAgentData","EventKeys","USER_DATA","app_user_id","warn","payload","buildEventPayload","eventKey","ANALYTICS_DATA","error_type","event_name","error_message","denied_permissions","platform","timestamp","Date","toISOString","apiService","APIService","getInstance","response","updateUserData","success"],"sourceRoot":"../../../src","sources":["utils/permision.ts"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,IAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAEO,MAAMK,gBAAgB,GAAG,MAAAA,CAAA,KAA2B;EACzD,IAAI;IACFC,OAAO,CAACC,KAAK,CAAC,uCAAuC,CAAC;IACtD;IACA,IAAIC,qBAAQ,CAACC,EAAE,KAAK,SAAS,EAAE;MAC7B,MAAMC,qBAAqB,GAAGC,+BAAkB,CAACC,WAAW,CAACC,YAAY;MACzE,IAAI,CAACH,qBAAqB,EAAE;QAC1B,MAAMH,KAAK,GAAG,IAAIO,KAAK,CAAC,uCAAuC,CAAC;QAChE,MAAMC,yBAAyB,CAC7B,uCACF,CAAC;QACD,MAAMR,KAAK;MACb;MAEA,MAAMS,WAAW,GAAG,CAACN,qBAAqB,CAAC;MAE3C,MAAMO,OAAO,GAAG,MAAMC,OAAO,CAACC,GAAG,CAC/BH,WAAW,CAACI,GAAG,CAAEC,UAAU,IAAKV,+BAAkB,CAACW,OAAO,CAACD,UAAU,CAAC,CACxE,CAAC;MAED,MAAME,UAAU,GAAGN,OAAO,CAACO,KAAK,CAC7BC,MAAM,IAAKA,MAAM,KAAKd,+BAAkB,CAACe,OAAO,CAACC,OACpD,CAAC;MAED,IAAI,CAACJ,UAAU,EAAE;QACf,MAAMK,iBAAiB,GAAGZ,WAAW,CAACa,MAAM,CAC1C,CAACC,CAAC,EAAEC,KAAK,KAAKd,OAAO,CAACc,KAAK,CAAC,KAAKpB,+BAAkB,CAACe,OAAO,CAACC,OAC9D,CAAC;QACD,MAAMZ,yBAAyB,CAC7B,kCAAkC,EAClCa,iBACF,CAAC;QACD,MAAM,IAAId,KAAK,CAAC,kCAAkC,CAAC;MACrD;IACF;EACF,CAAC,CAAC,OAAOkB,GAAG,EAAE;IACZ,MAAMC,YAAY,GAChBD,GAAG,YAAYlB,KAAK,GAAGkB,GAAG,CAACE,OAAO,GAAG,6BAA6B;IACpE,MAAM,IAAIpB,KAAK,CAACmB,YAAY,CAAC;EAC/B;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AAJAE,OAAA,CAAA9B,gBAAA,GAAAA,gBAAA;AAKA,eAAeU,yBAAyBA,CACtCqB,MAAc,EACdR,iBAA4B,EACb;EACf,IAAI;IACF;IACA,MAAMS,YAAY,GAAG,MAAM,IAAAC,sBAAY,EAACC,qBAAS,CAACC,SAAS,CAAC;IAE5D,IAAI,CAACH,YAAY,EAAEI,WAAW,EAAE;MAC9BnC,OAAO,CAACoC,IAAI,CACV,2EACF,CAAC;MACD;IACF;;IAEA;IACA,MAAMC,OAAO,GAAG,IAAAC,2BAAiB,EAAC;MAChCC,QAAQ,EAAEN,qBAAS,CAACO,cAAc;MAClCL,WAAW,EAAEJ,YAAY,CAACI,WAAW;MACrCM,UAAU,EAAE,mBAAmB;MAC/BC,UAAU,EAAE,uBAAuB;MACnCC,aAAa,EAAEb,MAAM;MACrBc,kBAAkB,EAAEtB,iBAAiB;MACrCuB,QAAQ,EAAE3C,qBAAQ,CAACC,EAAE;MACrB2C,SAAS,EAAE,IAAIC,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC;IACpC,CAAC,CAAC;;IAEF;IACA,MAAMC,UAAU,GAAGC,eAAU,CAACC,WAAW,CAAC,CAAC;IAC3C,MAAMC,QAAQ,GAAG,MAAMH,UAAU,CAACI,cAAc,CAAChB,OAAO,CAAC;IAEzD,IAAI,CAACe,QAAQ,CAACE,OAAO,EAAE;MACrBtD,OAAO,CAACC,KAAK,CACX,sDAAsD,EACtDmD,QAAQ,CAACnD,KACX,CAAC;IACH;EACF,CAAC,CAAC,OAAOA,KAAK,EAAE;IACdD,OAAO,CAACC,KAAK,CAAC,qDAAqD,EAAEA,KAAK,CAAC;IAC3E;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Agent Event Emitter
5
+ * Handles listening to agent state changes (connection, disconnection, popup visibility)
6
+ * Also sends agent events to the backend API
7
+ */
8
+
9
+ import { getAgentData } from "../store/store.key.js";
10
+ import { APIService } from "../api/api.js";
11
+ import { buildEventPayload } from "../utils/constant.js";
12
+ import { EventKeys } from "./embed.types.js";
13
+ export class AgentEventEmitter {
14
+ agentListeners = {};
15
+
16
+ /**
17
+ * Add an event listener for agent events
18
+ * @param eventKey - The agent event to listen for
19
+ * @param callback - Callback function to execute when event fires
20
+ */
21
+ on(eventKey, callback) {
22
+ if (!this.agentListeners[eventKey]) {
23
+ this.agentListeners[eventKey] = [];
24
+ }
25
+ this.agentListeners[eventKey]?.push(callback);
26
+ }
27
+
28
+ /**
29
+ * Remove an event listener for agent events
30
+ * @param eventKey - The agent event to stop listening to
31
+ * @param callback - The callback function to remove
32
+ */
33
+ off(eventKey, callback) {
34
+ if (!this.agentListeners[eventKey]) return;
35
+ const index = this.agentListeners[eventKey]?.indexOf(callback);
36
+ if (index !== undefined && index > -1) {
37
+ this.agentListeners[eventKey]?.splice(index, 1);
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Emit an agent event to all registered listeners AND send to backend
43
+ * @param eventKey - The agent event to emit
44
+ * @param data - Data to pass to listeners
45
+ * @internal - Used internally by the library
46
+ */
47
+ async emit(eventKey, data) {
48
+ // Trigger local event listeners first
49
+ this.agentListeners[eventKey]?.forEach(callback => {
50
+ try {
51
+ callback(data);
52
+ } catch (error) {
53
+ console.error(`Error in agent event listener for ${eventKey}:`, error);
54
+ }
55
+ });
56
+
57
+ // Send to backend API
58
+ await this.sendToBackend(eventKey, data);
59
+ }
60
+
61
+ /**
62
+ * Send agent event data to backend API
63
+ * @param eventKey - The agent event type
64
+ * @param data - Event data
65
+ * @private
66
+ */
67
+ async sendToBackend(eventKey, data) {
68
+ try {
69
+ // Get user identity to include app_user_id
70
+ const userIdentity = await getAgentData(EventKeys.USER_DATA);
71
+ if (!userIdentity?.app_user_id) {
72
+ console.warn(`[AgentEvent] Cannot send ${eventKey} to backend: User identity not found`);
73
+ return;
74
+ }
75
+
76
+ // Prepare payload with app_user_id
77
+ const payload = {
78
+ ...data,
79
+ app_user_id: userIdentity.app_user_id,
80
+ eventKey: eventKey,
81
+ eventType: 'agent_event'
82
+ };
83
+
84
+ // Send to API
85
+ const apiService = APIService.getInstance();
86
+ const paramsData = buildEventPayload(payload);
87
+ const response = await apiService.updateUserData(paramsData);
88
+ if (!response.success) {
89
+ console.error(`[AgentEvent] Failed to send ${eventKey} to backend:`, response.error);
90
+ }
91
+ } catch (error) {
92
+ console.error(`[AgentEvent] Error sending ${eventKey} to backend:`, error);
93
+ // Fail silently - agent events should not break the app
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Remove all listeners for a specific event
99
+ * @param eventKey - The agent event to clear listeners for
100
+ */
101
+ removeAllListeners(eventKey) {
102
+ if (eventKey) {
103
+ delete this.agentListeners[eventKey];
104
+ } else {
105
+ this.agentListeners = {};
106
+ }
107
+ }
108
+ }
109
+ //# sourceMappingURL=agent-event-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getAgentData","APIService","buildEventPayload","EventKeys","AgentEventEmitter","agentListeners","on","eventKey","callback","push","off","index","indexOf","undefined","splice","emit","data","forEach","error","console","sendToBackend","userIdentity","USER_DATA","app_user_id","warn","payload","eventType","apiService","getInstance","paramsData","response","updateUserData","success","removeAllListeners"],"sourceRoot":"../../../src","sources":["events/agent-event-emitter.ts"],"mappings":"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","ignoreList":[]}
@@ -1,135 +1,15 @@
1
1
  "use strict";
2
2
 
3
- import { getAgentData, setAgentData } from "../store/store.key.js";
4
- import { APIService } from "../api/api.js";
5
- import { buildEventPayload } from "../utils/constant.js";
6
- // Predefined event keys for sending data to the agent
7
- export let EventKeys = /*#__PURE__*/function (EventKeys) {
8
- EventKeys["USER_DATA"] = "user_data";
9
- EventKeys["SCREEN_STATE"] = "screen_state";
10
- EventKeys["OFFER_STATE"] = "offer_state";
11
- EventKeys["CUSTOM_EVENT"] = "custom_event";
12
- EventKeys["FORM_STATE"] = "form_state";
13
- EventKeys["ACTION_STATE"] = "action_state";
14
- EventKeys["ERROR_STATE"] = "error_state";
15
- EventKeys["SUCCESS_STATE"] = "success_state";
16
- EventKeys["WARNING_STATE"] = "warning_state";
17
- EventKeys["INFO_STATE"] = "info_state";
18
- EventKeys["DEBUG_STATE"] = "debug_state";
19
- return EventKeys;
20
- }({});
21
-
22
- // Agent event keys for listening to agent state changes
23
- export let AgentEvent = /*#__PURE__*/function (AgentEvent) {
24
- AgentEvent["AGENT_CONNECTED"] = "agent_connected";
25
- AgentEvent["AGENT_DISCONNECTED"] = "agent_disconnected";
26
- AgentEvent["POPUP_MESSAGE_VISIBLE"] = "popup_message_visible";
27
- return AgentEvent;
28
- }({});
29
-
30
- // Event data interfaces
31
-
32
3
  /**
33
- * Agent Event Emitter
34
- * Handles listening to agent state changes (connection, disconnection, popup visibility)
35
- * Also sends agent events to the backend API
4
+ * Embed Event Manager
5
+ * Main class for managing embed events and agent communication
36
6
  */
37
- class AgentEventEmitter {
38
- agentListeners = {};
39
-
40
- /**
41
- * Add an event listener for agent events
42
- * @param eventKey - The agent event to listen for
43
- * @param callback - Callback function to execute when event fires
44
- */
45
- on(eventKey, callback) {
46
- if (!this.agentListeners[eventKey]) {
47
- this.agentListeners[eventKey] = [];
48
- }
49
- this.agentListeners[eventKey]?.push(callback);
50
- }
51
-
52
- /**
53
- * Remove an event listener for agent events
54
- * @param eventKey - The agent event to stop listening to
55
- * @param callback - The callback function to remove
56
- */
57
- off(eventKey, callback) {
58
- if (!this.agentListeners[eventKey]) return;
59
- const index = this.agentListeners[eventKey]?.indexOf(callback);
60
- if (index !== undefined && index > -1) {
61
- this.agentListeners[eventKey]?.splice(index, 1);
62
- }
63
- }
64
-
65
- /**
66
- * Emit an agent event to all registered listeners AND send to backend
67
- * @param eventKey - The agent event to emit
68
- * @param data - Data to pass to listeners
69
- * @internal - Used internally by the library
70
- */
71
- async emit(eventKey, data) {
72
- // Trigger local event listeners first
73
- this.agentListeners[eventKey]?.forEach(callback => {
74
- try {
75
- callback(data);
76
- } catch (error) {
77
- console.error(`Error in agent event listener for ${eventKey}:`, error);
78
- }
79
- });
80
-
81
- // Send to backend API
82
- await this.sendToBackend(eventKey, data);
83
- }
84
-
85
- /**
86
- * Send agent event data to backend API
87
- * @param eventKey - The agent event type
88
- * @param data - Event data
89
- * @private
90
- */
91
- async sendToBackend(eventKey, data) {
92
- try {
93
- // Get user identity to include app_user_id
94
- const userIdentity = await getAgentData(EventKeys.USER_DATA);
95
- if (!userIdentity?.app_user_id) {
96
- console.warn(`[AgentEvent] Cannot send ${eventKey} to backend: User identity not found`);
97
- return;
98
- }
99
-
100
- // Prepare payload with app_user_id
101
- const payload = {
102
- ...data,
103
- app_user_id: userIdentity.app_user_id,
104
- eventKey: eventKey,
105
- eventType: 'agent_event'
106
- };
107
-
108
- // Send to API
109
- const apiService = APIService.getInstance();
110
- const paramsData = buildEventPayload(payload);
111
- const response = await apiService.updateUserData(paramsData);
112
- if (!response.success) {
113
- console.error(`[AgentEvent] Failed to send ${eventKey} to backend:`, response.error);
114
- }
115
- } catch (error) {
116
- console.error(`[AgentEvent] Error sending ${eventKey} to backend:`, error);
117
- // Fail silently - agent events should not break the app
118
- }
119
- }
120
7
 
121
- /**
122
- * Remove all listeners for a specific event
123
- * @param eventKey - The agent event to clear listeners for
124
- */
125
- removeAllListeners(eventKey) {
126
- if (eventKey) {
127
- delete this.agentListeners[eventKey];
128
- } else {
129
- this.agentListeners = {};
130
- }
131
- }
132
- }
8
+ import { getAgentData, setAgentData } from "../store/store.key.js";
9
+ import { APIService } from "../api/api.js";
10
+ import { buildEventPayload } from "../utils/constant.js";
11
+ import { AgentEventEmitter } from "./agent-event-emitter.js";
12
+ import { validateEventKey, validateAnalyticsEvent } from "./embed.validators.js";
133
13
  class Embed {
134
14
  events = {};
135
15
 
@@ -139,46 +19,48 @@ class Embed {
139
19
  this.event = new AgentEventEmitter();
140
20
  }
141
21
 
142
- // Automatically adds a default listener if none exists
22
+ /**
23
+ * Automatically adds a default listener if none exists
24
+ * @private
25
+ */
143
26
  ensureDefaultListener(eventKey) {
144
27
  if (!this.events[eventKey]) {
145
- this.events[eventKey] = [data => {
28
+ this.events[eventKey] = [_data => {
29
+ // console.i('default event this', _data);
146
30
  // todo: handle default event
147
- console.info('default event this', data);
148
31
  }];
149
32
  }
150
33
  }
151
34
 
152
35
  /**
153
- * Send an event to the AI agent
154
- * @param eventKey - The event type to send
155
- * @param data - Event data payload
36
+ * Enriches event data with user identity
37
+ * @private
156
38
  */
157
- async Event(eventKey, data) {
158
- if (!Object.values(EventKeys).includes(eventKey)) {
159
- // todo: handle invalid event key
160
- throw new Error(`Invalid event key: ${eventKey}. Must be one of: ${Object.values(EventKeys).join(', ')}`);
161
- }
162
- const key = eventKey;
163
- if (key !== EventKeys.USER_DATA) {
164
- const userIdentity = await getAgentData(EventKeys.USER_DATA);
39
+ async enrichEventData(eventKey, data) {
40
+ if (eventKey !== 'user_data') {
41
+ const userIdentity = await getAgentData('user_data');
165
42
  if (userIdentity) {
166
43
  data.app_user_id = userIdentity.app_user_id;
167
44
  } else {
168
45
  throw new Error('User identity not found');
169
46
  }
170
47
  }
48
+ }
171
49
 
172
- // Ensure a default listener is registered if not already
173
- this.ensureDefaultListener(key);
174
-
175
- // Trigger API call
50
+ /**
51
+ * Sends event data to the backend API
52
+ * @private
53
+ */
54
+ async sendEventToAPI(eventKey, data, key) {
176
55
  try {
177
56
  const apiService = APIService.getInstance();
178
57
  const paramsData = buildEventPayload({
179
58
  ...data,
180
59
  eventKey: key
181
60
  });
61
+
62
+ // Validate analytics events have event_name
63
+ validateAnalyticsEvent(paramsData);
182
64
  const response = await apiService.updateUserData({
183
65
  ...paramsData
184
66
  });
@@ -188,13 +70,40 @@ class Embed {
188
70
  setAgentData(data, key);
189
71
  } catch (error) {
190
72
  throw new Error(`Failed to trigger API for event: ${eventKey}`);
191
- // todo: handle error triggering API
192
73
  }
74
+ }
193
75
 
194
- // Trigger event listeners
76
+ /**
77
+ * Triggers local event listeners
78
+ * @private
79
+ */
80
+ triggerEventListeners(key, data) {
195
81
  this.events[key]?.forEach(callback => callback(data));
196
82
  }
197
83
 
84
+ /**
85
+ * Send an event to the AI agent
86
+ * @param eventKey - The event type to send
87
+ * @param data - Event data payload
88
+ */
89
+ async Event(eventKey, data) {
90
+ // Validate event key
91
+ validateEventKey(eventKey);
92
+ const key = eventKey;
93
+
94
+ // Enrich event data with user identity
95
+ await this.enrichEventData(key, data);
96
+
97
+ // Ensure a default listener is registered
98
+ this.ensureDefaultListener(key);
99
+
100
+ // Send event to backend API
101
+ await this.sendEventToAPI(eventKey, data, key);
102
+
103
+ // Trigger local event listeners
104
+ this.triggerEventListeners(key, data);
105
+ }
106
+
198
107
  /**
199
108
  * Add listener for data events (legacy support)
200
109
  * @deprecated Use event.on() for agent events instead
@@ -208,4 +117,7 @@ class Embed {
208
117
  }
209
118
  const embed = new Embed();
210
119
  export default embed;
120
+
121
+ // Re-export types and enums for convenience
122
+ export { EventKeys, AgentEvent } from "./embed.types.js";
211
123
  //# sourceMappingURL=embed.event.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getAgentData","setAgentData","APIService","buildEventPayload","EventKeys","AgentEvent","AgentEventEmitter","agentListeners","on","eventKey","callback","push","off","index","indexOf","undefined","splice","emit","data","forEach","error","console","sendToBackend","userIdentity","USER_DATA","app_user_id","warn","payload","eventType","apiService","getInstance","paramsData","response","updateUserData","success","removeAllListeners","Embed","events","constructor","event","ensureDefaultListener","info","Event","Object","values","includes","Error","join","key","embed"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["getAgentData","setAgentData","APIService","buildEventPayload","AgentEventEmitter","validateEventKey","validateAnalyticsEvent","Embed","events","constructor","event","ensureDefaultListener","eventKey","_data","enrichEventData","data","userIdentity","app_user_id","Error","sendEventToAPI","key","apiService","getInstance","paramsData","response","updateUserData","success","error","triggerEventListeners","forEach","callback","Event","on","push","embed","EventKeys","AgentEvent"],"sourceRoot":"../../../src","sources":["events/embed.event.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,EAAEC,YAAY,QAAQ,uBAAoB;AAC/D,SAASC,UAAU,QAAQ,eAAY;AACvC,SAASC,iBAAiB,QAAQ,sBAAmB;AACrD,SAASC,iBAAiB,QAAQ,0BAAuB;AACzD,SAASC,gBAAgB,EAAEC,sBAAsB,QAAQ,uBAAoB;AAG7E,MAAMC,KAAK,CAAC;EACFC,MAAM,GAA6C,CAAC,CAAC;;EAE7D;;EAGAC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,KAAK,GAAG,IAAIN,iBAAiB,CAAC,CAAC;EACtC;;EAEA;AACF;AACA;AACA;EACUO,qBAAqBA,CAACC,QAAmB,EAAQ;IACvD,IAAI,CAAC,IAAI,CAACJ,MAAM,CAACI,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAACJ,MAAM,CAACI,QAAQ,CAAC,GAAG,CACrBC,KAAU,IAAK;QACd;QACA;MAAA,CACD,CACF;IACH;EACF;;EAEA;AACF;AACA;AACA;EACE,MAAcC,eAAeA,CAACF,QAAmB,EAAEG,IAAS,EAAiB;IAC3E,IAAIH,QAAQ,KAAK,WAAW,EAAE;MAC5B,MAAMI,YAAY,GAAG,MAAMhB,YAAY,CAAC,WAAwB,CAAC;MACjE,IAAIgB,YAAY,EAAE;QAChBD,IAAI,CAACE,WAAW,GAAGD,YAAY,CAACC,WAAW;MAC7C,CAAC,MAAM;QACL,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;MAC5C;IACF;EACF;;EAEA;AACF;AACA;AACA;EACE,MAAcC,cAAcA,CAC1BP,QAAgB,EAChBG,IAAS,EACTK,GAAc,EACC;IACf,IAAI;MACF,MAAMC,UAAU,GAAGnB,UAAU,CAACoB,WAAW,CAAC,CAAC;MAC3C,MAAMC,UAAU,GAAGpB,iBAAiB,CAAC;QAAE,GAAGY,IAAI;QAAEH,QAAQ,EAAEQ;MAAI,CAAC,CAAC;;MAEhE;MACAd,sBAAsB,CAACiB,UAAU,CAAC;MAElC,MAAMC,QAAQ,GAAG,MAAMH,UAAU,CAACI,cAAc,CAAC;QAC/C,GAAGF;MACL,CAAC,CAAC;MAEF,IAAI,CAACC,QAAQ,CAACE,OAAO,EAAE;QACrB,MAAM,IAAIR,KAAK,CAAC,oCAAoCN,QAAQ,EAAE,CAAC;MACjE;MAEAX,YAAY,CAACc,IAAI,EAAEK,GAAG,CAAC;IACzB,CAAC,CAAC,OAAOO,KAAK,EAAE;MACd,MAAM,IAAIT,KAAK,CAAC,oCAAoCN,QAAQ,EAAE,CAAC;IACjE;EACF;;EAEA;AACF;AACA;AACA;EACUgB,qBAAqBA,CAACR,GAAc,EAAEL,IAAS,EAAQ;IAC7D,IAAI,CAACP,MAAM,CAACY,GAAG,CAAC,EAAES,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAACf,IAAI,CAAC,CAAC;EACzD;;EAEA;AACF;AACA;AACA;AACA;EACE,MAAMgB,KAAKA,CAACnB,QAAgB,EAAEG,IAAS,EAAiB;IACtD;IACAV,gBAAgB,CAACO,QAAQ,CAAC;IAE1B,MAAMQ,GAAG,GAAGR,QAAqB;;IAEjC;IACA,MAAM,IAAI,CAACE,eAAe,CAACM,GAAG,EAAEL,IAAI,CAAC;;IAErC;IACA,IAAI,CAACJ,qBAAqB,CAACS,GAAG,CAAC;;IAE/B;IACA,MAAM,IAAI,CAACD,cAAc,CAACP,QAAQ,EAAEG,IAAI,EAAEK,GAAG,CAAC;;IAE9C;IACA,IAAI,CAACQ,qBAAqB,CAACR,GAAG,EAAEL,IAAI,CAAC;EACvC;;EAEA;AACF;AACA;AACA;EACEiB,EAAEA,CAACpB,QAAmB,EAAEkB,QAAuB,EAAQ;IACrD,IAAI,CAAC,IAAI,CAACtB,MAAM,CAACI,QAAQ,CAAC,EAAE;MAC1B,IAAI,CAACJ,MAAM,CAACI,QAAQ,CAAC,GAAG,EAAE;IAC5B;IACA,IAAI,CAACJ,MAAM,CAACI,QAAQ,CAAC,EAAEqB,IAAI,CAACH,QAAQ,CAAC;EACvC;AACF;AAEA,MAAMI,KAAK,GAAG,IAAI3B,KAAK,CAAC,CAAC;AACzB,eAAe2B,KAAK;;AAEpB;AACA,SAASC,SAAS,EAAEC,UAAU,QAAQ,kBAAe","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Types and interfaces for Embed events
5
+ */
6
+
7
+ // Predefined event keys for sending data to the agent
8
+ export let EventKeys = /*#__PURE__*/function (EventKeys) {
9
+ EventKeys["USER_DATA"] = "user_data";
10
+ EventKeys["SCREEN_STATE"] = "screen_state";
11
+ EventKeys["OFFER_STATE"] = "offer_state";
12
+ EventKeys["CUSTOM_EVENT"] = "custom_event";
13
+ EventKeys["FORM_STATE"] = "form_state";
14
+ EventKeys["ANALYTICS_DATA"] = "analytics_data";
15
+ EventKeys["ACTION_STATE"] = "action_state";
16
+ EventKeys["ERROR_STATE"] = "error_state";
17
+ EventKeys["SUCCESS_STATE"] = "success_state";
18
+ EventKeys["WARNING_STATE"] = "warning_state";
19
+ EventKeys["INFO_STATE"] = "info_state";
20
+ EventKeys["DEBUG_STATE"] = "debug_state";
21
+ return EventKeys;
22
+ }({});
23
+
24
+ // Agent event keys for listening to agent state changes
25
+ export let AgentEvent = /*#__PURE__*/function (AgentEvent) {
26
+ AgentEvent["AGENT_CONNECTED"] = "agent_connected";
27
+ AgentEvent["AGENT_DISCONNECTED"] = "agent_disconnected";
28
+ AgentEvent["POPUP_MESSAGE_VISIBLE"] = "popup_message_visible";
29
+ return AgentEvent;
30
+ }({});
31
+
32
+ // Event data interfaces
33
+ //# sourceMappingURL=embed.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EventKeys","AgentEvent"],"sourceRoot":"../../../src","sources":["events/embed.types.ts"],"mappings":";;AAAA;AACA;AACA;;AAIA;AACA,WAAYA,SAAS,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA;;AAerB;AACA,WAAYC,UAAU,0BAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA;;AAMtB","ignoreList":[]}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Validation helpers for Embed events
5
+ */
6
+
7
+ import { EventKeys } from "./embed.types.js";
8
+
9
+ /**
10
+ * Validates event key is valid
11
+ * @param eventKey - The event key to validate
12
+ * @throws Error if event key is invalid
13
+ */
14
+ export function validateEventKey(eventKey) {
15
+ if (!Object.values(EventKeys).includes(eventKey)) {
16
+ throw new Error(`Invalid event key: ${eventKey}. Must be one of: ${Object.values(EventKeys).join(', ')}`);
17
+ }
18
+ }
19
+
20
+ /**
21
+ * Validates analytics events have required event_name
22
+ * @param paramsData - The event payload to validate
23
+ * @throws Error if analytics event is missing event_name
24
+ */
25
+ export function validateAnalyticsEvent(paramsData) {
26
+ if (paramsData.type === 'analytics_data') {
27
+ if (!paramsData.event_name || paramsData.event_name.trim() === '') {
28
+ throw new Error(`Analytics event requires an event_name. Please provide event_name in the data payload.`);
29
+ }
30
+ }
31
+ }
32
+ //# sourceMappingURL=embed.validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EventKeys","validateEventKey","eventKey","Object","values","includes","Error","join","validateAnalyticsEvent","paramsData","type","event_name","trim"],"sourceRoot":"../../../src","sources":["events/embed.validators.ts"],"mappings":";;AAAA;AACA;AACA;;AAGA,SAASA,SAAS,QAAQ,kBAAe;;AAEzC;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,gBAAgBA,CAACC,QAAgB,EAAQ;EACvD,IAAI,CAACC,MAAM,CAACC,MAAM,CAACJ,SAAS,CAAC,CAACK,QAAQ,CAACH,QAAqB,CAAC,EAAE;IAC7D,MAAM,IAAII,KAAK,CACb,sBAAsBJ,QAAQ,qBAAqBC,MAAM,CAACC,MAAM,CAACJ,SAAS,CAAC,CAACO,IAAI,CAAC,IAAI,CAAC,EACxF,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,sBAAsBA,CAACC,UAAwB,EAAQ;EACrE,IAAIA,UAAU,CAACC,IAAI,KAAK,gBAAgB,EAAE;IACxC,IAAI,CAACD,UAAU,CAACE,UAAU,IAAIF,UAAU,CAACE,UAAU,CAACC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;MACjE,MAAM,IAAIN,KAAK,CACb,wFACF,CAAC;IACH;EACF;AACF","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Events module
5
+ * Exports the main Embed event manager and related types
6
+ */
7
+
8
+ export { default } from "./embed.event.js";
9
+ export { EventKeys, AgentEvent } from "./embed.types.js";
10
+ export { AgentEventEmitter } from "./agent-event-emitter.js";
11
+ export { validateEventKey, validateAnalyticsEvent } from "./embed.validators.js";
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["default","EventKeys","AgentEvent","AgentEventEmitter","validateEventKey","validateAnalyticsEvent"],"sourceRoot":"../../../src","sources":["events/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,kBAAe;AACvC,SAASC,SAAS,EAAEC,UAAU,QAAQ,kBAAe;AAOrD,SAASC,iBAAiB,QAAQ,0BAAuB;AACzD,SAASC,gBAAgB,EAAEC,sBAAsB,QAAQ,uBAAoB","ignoreList":[]}
@@ -29,6 +29,7 @@ export function buildEventPayload(params) {
29
29
  screen,
30
30
  flow,
31
31
  app_version,
32
+ event_name,
32
33
  ...rest
33
34
  } = params;
34
35
  const resolvedAppUserId = typeof app_user_id === 'string' && app_user_id || typeof appUserId === 'string' && appUserId;
@@ -41,6 +42,15 @@ export function buildEventPayload(params) {
41
42
  ...(incomingData ?? {}),
42
43
  ...(eventData ?? {})
43
44
  };
45
+
46
+ // Extract event_name if present in data, remove it from data object
47
+ let resolvedEventName = '';
48
+ if (typeof event_name === 'string' && event_name) {
49
+ resolvedEventName = event_name;
50
+ } else if (typeof data.event_name === 'string' && data.event_name) {
51
+ resolvedEventName = data.event_name;
52
+ delete data.event_name;
53
+ }
44
54
  Object.entries(rest).forEach(([key, value]) => {
45
55
  if (value !== undefined) {
46
56
  data[key] = value;
@@ -51,6 +61,7 @@ export function buildEventPayload(params) {
51
61
  type: eventKey,
52
62
  app_user_id: resolvedAppUserId,
53
63
  timestamp: new Date().toISOString(),
64
+ event_name: resolvedEventName,
54
65
  sdk: {
55
66
  sdk_name: SDK_NAME,
56
67
  sdk_version: SDK_VERSION,
@@ -1 +1 @@
1
- {"version":3,"names":["SDK_NAME","SDK_VERSION","SDK_PLATFORM","DEFAULT_EMBED_URL","generateEventId","Date","now","Math","random","toString","substr","buildEventPayload","params","eventKey","app_user_id","appUserId","eventData","data","incomingData","sessionId","session_id","context","screen","flow","app_version","rest","resolvedAppUserId","Error","Object","entries","forEach","key","value","undefined","payload","event_id","type","timestamp","toISOString","sdk","sdk_name","sdk_version","platform","resolvedSessionId","resolvedAppVersion"],"sourceRoot":"../../../src","sources":["utils/constant.ts"],"mappings":";;AAAA;;AAEA,OAAO,MAAMA,QAAQ,GAAG,oBAAoB;AAC5C,OAAO,MAAMC,WAAW,GAAG,QAAQ;AACnC,OAAO,MAAMC,YAAY,GAAG,cAAc;AAC1C,OAAO,MAAMC,iBAAiB,GAAG,yBAAyB;;AAE1D;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAAA,EAAW;EACxC,OAAO,SAASC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACzE;AAoCA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAC/BC,MAA+B,EACjB;EACd,MAAM;IACJC,QAAQ;IACRC,WAAW;IACXC,SAAS;IACTC,SAAS;IACTC,IAAI,EAAEC,YAAY;IAClBC,SAAS;IACTC,UAAU;IACVC,OAAO;IACPC,MAAM;IACNC,IAAI;IACJC,WAAW;IACX,GAAGC;EACL,CAAC,GAAGb,MAAM;EAEV,MAAMc,iBAAiB,GACpB,OAAOZ,WAAW,KAAK,QAAQ,IAAIA,WAAW,IAC9C,OAAOC,SAAS,KAAK,QAAQ,IAAIA,SAAU;EAE9C,IAAI,CAACW,iBAAiB,EAAE;IACtB,MAAM,IAAIC,KAAK,CAAC,gDAAgD,CAAC;EACnE;;EAEA;EACA,MAAMV,IAA6B,GAAG;IACpC,IAAIC,YAAY,IAAI,CAAC,CAAC,CAAC;IACvB,IAAIF,SAAS,IAAI,CAAC,CAAC;EACrB,CAAC;EAEDY,MAAM,CAACC,OAAO,CAACJ,IAAI,CAAC,CAACK,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;IAC7C,IAAIA,KAAK,KAAKC,SAAS,EAAE;MACvBhB,IAAI,CAACc,GAAG,CAAC,GAAGC,KAAK;IACnB;EACF,CAAC,CAAC;EAEF,MAAME,OAAqB,GAAG;IAC5BC,QAAQ,EAAE/B,eAAe,CAAC,CAAC;IAC3BgC,IAAI,EAAEvB,QAAQ;IACdC,WAAW,EAAEY,iBAAiB;IAC9BW,SAAS,EAAE,IAAIhC,IAAI,CAAC,CAAC,CAACiC,WAAW,CAAC,CAAC;IACnCC,GAAG,EAAE;MACHC,QAAQ,EAAExC,QAAQ;MAClByC,WAAW,EAAExC,WAAW;MACxByC,QAAQ,EAAExC;IACZ,CAAC;IACDe;EACF,CAAC;EAED,MAAM0B,iBAAiB,GACpB,OAAOxB,SAAS,KAAK,QAAQ,IAAIA,SAAS,IAC1C,OAAOC,UAAU,KAAK,QAAQ,IAAIA,UAAW;EAEhD,MAAMwB,kBAAkB,GACtB,OAAOpB,WAAW,KAAK,QAAQ,GAAGA,WAAW,GAAGS,SAAS;EAE3D,IAAIU,iBAAiB,EAAE;IACrBT,OAAO,CAACd,UAAU,GAAGuB,iBAAiB;EACxC;EAEA,IAAItB,OAAO,IAAIC,MAAM,IAAIC,IAAI,IAAIqB,kBAAkB,EAAE;IACnDV,OAAO,CAACb,OAAO,GAAG;MAChB,IAAIA,OAAO,IAAI,CAAC,CAAC,CAAC;MAClB,IAAIC,MAAM,GAAG;QAAEA;MAAO,CAAC,GAAG,CAAC,CAAC,CAAC;MAC7B,IAAIC,IAAI,GAAG;QAAEA;MAAK,CAAC,GAAG,CAAC,CAAC,CAAC;MACzB,IAAIqB,kBAAkB,GAAG;QAAEpB,WAAW,EAAEoB;MAAmB,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC;EACH;EAEA,OAAOV,OAAO;AAChB","ignoreList":[]}
1
+ {"version":3,"names":["SDK_NAME","SDK_VERSION","SDK_PLATFORM","DEFAULT_EMBED_URL","generateEventId","Date","now","Math","random","toString","substr","buildEventPayload","params","eventKey","app_user_id","appUserId","eventData","data","incomingData","sessionId","session_id","context","screen","flow","app_version","event_name","rest","resolvedAppUserId","Error","resolvedEventName","Object","entries","forEach","key","value","undefined","payload","event_id","type","timestamp","toISOString","sdk","sdk_name","sdk_version","platform","resolvedSessionId","resolvedAppVersion"],"sourceRoot":"../../../src","sources":["utils/constant.ts"],"mappings":"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","ignoreList":[]}