@revrag-ai/embed-react-native 1.0.12 → 1.0.14
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/commonjs/api/api.error.js +233 -0
- package/dist/commonjs/api/api.error.js.map +1 -0
- package/dist/commonjs/api/api.js +38 -94
- package/dist/commonjs/api/api.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedAudioWave.js +10 -1
- package/dist/commonjs/components/Embed/EmbedAudioWave.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedButton.js +52 -88
- package/dist/commonjs/components/Embed/EmbedButton.js.map +1 -1
- package/dist/commonjs/components/Embed/EmbedVoice.js +7 -9
- package/dist/commonjs/components/Embed/EmbedVoice.js.map +1 -1
- package/dist/commonjs/components/styles/EmbedButton.style.js +237 -54
- package/dist/commonjs/components/styles/EmbedButton.style.js.map +1 -1
- package/dist/commonjs/events/embed.event.js +7 -6
- package/dist/commonjs/events/embed.event.js.map +1 -1
- package/dist/commonjs/hooks/initialize.js +18 -7
- package/dist/commonjs/hooks/initialize.js.map +1 -1
- package/dist/commonjs/hooks/voiceagent.js +20 -55
- package/dist/commonjs/hooks/voiceagent.js.map +1 -1
- package/dist/commonjs/index.types.js +0 -1
- package/dist/commonjs/index.types.js.map +1 -1
- package/dist/commonjs/utils/reanimated.helper.js.map +1 -1
- package/dist/module/api/api.error.js +226 -0
- package/dist/module/api/api.error.js.map +1 -0
- package/dist/module/api/api.js +36 -93
- package/dist/module/api/api.js.map +1 -1
- package/dist/module/components/Embed/EmbedAudioWave.js +10 -1
- package/dist/module/components/Embed/EmbedAudioWave.js.map +1 -1
- package/dist/module/components/Embed/EmbedButton.js +52 -88
- package/dist/module/components/Embed/EmbedButton.js.map +1 -1
- package/dist/module/components/Embed/EmbedVoice.js +7 -9
- package/dist/module/components/Embed/EmbedVoice.js.map +1 -1
- package/dist/module/components/styles/EmbedButton.style.js +236 -53
- package/dist/module/components/styles/EmbedButton.style.js.map +1 -1
- package/dist/module/events/embed.event.js +7 -6
- package/dist/module/events/embed.event.js.map +1 -1
- package/dist/module/hooks/initialize.js +18 -7
- package/dist/module/hooks/initialize.js.map +1 -1
- package/dist/module/hooks/voiceagent.js +20 -55
- package/dist/module/hooks/voiceagent.js.map +1 -1
- package/dist/module/index.types.js +0 -1
- package/dist/module/index.types.js.map +1 -1
- package/dist/module/utils/reanimated.helper.js.map +1 -1
- package/dist/typescript/src/api/api.d.ts +6 -0
- package/dist/typescript/src/api/api.d.ts.map +1 -1
- package/dist/typescript/src/api/api.error.d.ts +107 -0
- package/dist/typescript/src/api/api.error.d.ts.map +1 -0
- package/dist/typescript/src/api/types/embed.api.types.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedAudioWave.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedButton.d.ts +7 -0
- package/dist/typescript/src/components/Embed/EmbedButton.d.ts.map +1 -1
- package/dist/typescript/src/components/Embed/EmbedVoice.d.ts.map +1 -1
- package/dist/typescript/src/components/styles/EmbedButton.style.d.ts +70 -0
- package/dist/typescript/src/components/styles/EmbedButton.style.d.ts.map +1 -1
- package/dist/typescript/src/events/embed.event.d.ts.map +1 -1
- package/dist/typescript/src/hooks/initialize.d.ts +2 -2
- package/dist/typescript/src/hooks/initialize.d.ts.map +1 -1
- package/dist/typescript/src/hooks/types/initialize.types.d.ts +4 -0
- package/dist/typescript/src/hooks/types/initialize.types.d.ts.map +1 -1
- package/dist/typescript/src/hooks/types/voiceAgent.types.d.ts +3 -1
- package/dist/typescript/src/hooks/types/voiceAgent.types.d.ts.map +1 -1
- package/dist/typescript/src/hooks/voiceagent.d.ts.map +1 -1
- package/dist/typescript/src/index.d.ts +1 -1
- package/dist/typescript/src/index.d.ts.map +1 -1
- package/dist/typescript/src/index.types.d.ts +8 -4
- package/dist/typescript/src/index.types.d.ts.map +1 -1
- package/dist/typescript/src/utils/reanimated.helper.d.ts.map +1 -1
- package/package.json +4 -1
|
@@ -18,12 +18,9 @@ let hasListeners = false;
|
|
|
18
18
|
let connectionAttempts = 0;
|
|
19
19
|
let stableConnectionTimerId = null;
|
|
20
20
|
const MAX_CONNECTION_ATTEMPTS = 3;
|
|
21
|
-
const STABLE_CONNECTION_TIMEOUT = 5000; // 5 seconds
|
|
22
|
-
|
|
23
21
|
// Create getters for the room instance
|
|
24
22
|
const getRoomInstance = () => {
|
|
25
23
|
if (!roomInstance) {
|
|
26
|
-
console.log('Creating new Room instance');
|
|
27
24
|
// Configure the room with the right options at creation time
|
|
28
25
|
roomInstance = new _livekitClient.Room({
|
|
29
26
|
adaptiveStream: true,
|
|
@@ -52,9 +49,6 @@ const resetConnectionAttempts = () => {
|
|
|
52
49
|
const resetRoomState = () => {
|
|
53
50
|
if (roomInstance) {
|
|
54
51
|
try {
|
|
55
|
-
console.log('Resetting room state');
|
|
56
|
-
console.log('isDisconnecting', isDisconnecting);
|
|
57
|
-
|
|
58
52
|
// Only disconnect if currently connected
|
|
59
53
|
if (roomInstance.state !== _livekitClient.ConnectionState.Disconnected && !isDisconnecting) {
|
|
60
54
|
isDisconnecting = true;
|
|
@@ -67,7 +61,7 @@ const resetRoomState = () => {
|
|
|
67
61
|
hasListeners = false;
|
|
68
62
|
resetConnectionAttempts();
|
|
69
63
|
} catch (e) {
|
|
70
|
-
|
|
64
|
+
// todo: handle error resetting room state
|
|
71
65
|
}
|
|
72
66
|
}
|
|
73
67
|
};
|
|
@@ -81,17 +75,11 @@ const useVoiceAgent = () => {
|
|
|
81
75
|
const room = getRoomInstance();
|
|
82
76
|
return room ? room.state : _livekitClient.ConnectionState.Disconnected;
|
|
83
77
|
});
|
|
84
|
-
const [stableConnection, setStableConnection] = (0, _react.useState)(false);
|
|
85
|
-
console.log('ConnectionState_connected', connectionState
|
|
86
|
-
// tokenDetails?.token
|
|
87
|
-
);
|
|
88
78
|
|
|
89
79
|
// Setup event listeners for the room
|
|
90
80
|
const setupRoomListeners = () => {
|
|
91
81
|
if (hasListeners || !roomInstance) return;
|
|
92
|
-
console.log('Setting up room listeners');
|
|
93
82
|
const handleConnectionChange = state => {
|
|
94
|
-
console.log('Connection state changed:', state);
|
|
95
83
|
// Use a function to ensure we're setting with the latest state
|
|
96
84
|
setConnectionState(() => state);
|
|
97
85
|
|
|
@@ -105,13 +93,8 @@ const useVoiceAgent = () => {
|
|
|
105
93
|
if (stableConnectionTimerId) {
|
|
106
94
|
clearTimeout(stableConnectionTimerId);
|
|
107
95
|
}
|
|
108
|
-
stableConnectionTimerId = setTimeout(() => {
|
|
109
|
-
console.log('Connection marked as stable');
|
|
110
|
-
setStableConnection(true);
|
|
111
|
-
}, STABLE_CONNECTION_TIMEOUT);
|
|
112
96
|
} else if (state === _livekitClient.ConnectionState.Disconnected) {
|
|
113
97
|
// Mark connection as unstable
|
|
114
|
-
setStableConnection(false);
|
|
115
98
|
|
|
116
99
|
// Clear any pending stable connection timer
|
|
117
100
|
if (stableConnectionTimerId) {
|
|
@@ -122,7 +105,7 @@ const useVoiceAgent = () => {
|
|
|
122
105
|
// If disconnected unexpectedly and we have token details, don't automatically reconnect
|
|
123
106
|
// This prevents connection loops
|
|
124
107
|
if (tokenDetails && !isDisconnecting) {
|
|
125
|
-
|
|
108
|
+
// todo: handle room disconnected
|
|
126
109
|
}
|
|
127
110
|
}
|
|
128
111
|
};
|
|
@@ -134,14 +117,15 @@ const useVoiceAgent = () => {
|
|
|
134
117
|
|
|
135
118
|
// Handle participant disconnected - this could be helpful to detect server-side kicks
|
|
136
119
|
roomInstance.on('participantDisconnected', () => {
|
|
137
|
-
|
|
120
|
+
// todo: handle participant disconnected
|
|
138
121
|
});
|
|
139
122
|
roomInstance.on('connectionStateChanged', handleConnectionChange);
|
|
140
123
|
roomInstance.on('trackSubscribed', handleTrackSubscribed);
|
|
141
124
|
|
|
142
125
|
// Listen for SDP negotiation errors to handle them better
|
|
143
126
|
roomInstance.on('mediaDevicesError', e => {
|
|
144
|
-
|
|
127
|
+
throw new Error(`Media devices error: ${e.message}`);
|
|
128
|
+
// todo: handle media devices error
|
|
145
129
|
});
|
|
146
130
|
hasListeners = true;
|
|
147
131
|
};
|
|
@@ -176,14 +160,12 @@ const useVoiceAgent = () => {
|
|
|
176
160
|
|
|
177
161
|
// Limit connection attempts to prevent infinite loops
|
|
178
162
|
if (connectionAttempts >= MAX_CONNECTION_ATTEMPTS) {
|
|
179
|
-
console.log(`Maximum connection attempts (${MAX_CONNECTION_ATTEMPTS}) reached. Not trying again.`);
|
|
180
163
|
setError(`Failed to connect after ${MAX_CONNECTION_ATTEMPTS} attempts`);
|
|
181
164
|
return;
|
|
182
165
|
}
|
|
183
166
|
connectionAttempts++;
|
|
184
167
|
try {
|
|
185
168
|
isConnecting = true;
|
|
186
|
-
console.log(`Connecting to LiveKit room... (attempt ${connectionAttempts})`);
|
|
187
169
|
|
|
188
170
|
// Only attempt to connect if we're disconnected
|
|
189
171
|
if (room.state === _livekitClient.ConnectionState.Disconnected) {
|
|
@@ -195,28 +177,22 @@ const useVoiceAgent = () => {
|
|
|
195
177
|
|
|
196
178
|
// Explicitly set to connected if connection was successful
|
|
197
179
|
setConnectionState(room.state);
|
|
198
|
-
console.log('Connected to LiveKit room');
|
|
199
180
|
} else if (room.state === _livekitClient.ConnectionState.Connected) {
|
|
200
|
-
console.log('Room is already connected');
|
|
201
181
|
// Ensure our state matches
|
|
202
182
|
setConnectionState(_livekitClient.ConnectionState.Connected);
|
|
203
183
|
} else {
|
|
204
|
-
console.log('Room is in transition state:', room.state);
|
|
205
184
|
// Sync our state with the room's current state
|
|
206
185
|
setConnectionState(room.state);
|
|
207
186
|
}
|
|
208
187
|
} catch (err) {
|
|
209
188
|
const message = err instanceof Error ? err.message : 'Failed to connect to room';
|
|
210
189
|
setError(message);
|
|
211
|
-
console.error('Connection error:', message);
|
|
212
190
|
|
|
213
191
|
// Sync state to disconnected if we failed to connect
|
|
214
192
|
setConnectionState(room.state);
|
|
215
193
|
|
|
216
194
|
// Don't keep retrying if we hit an SDP error
|
|
217
|
-
if (message.includes('SDP') || message.includes('sdp')) {
|
|
218
|
-
console.log('SDP error detected, will not retry automatically');
|
|
219
|
-
}
|
|
195
|
+
if (message.includes('SDP') || message.includes('sdp')) {}
|
|
220
196
|
} finally {
|
|
221
197
|
isConnecting = false;
|
|
222
198
|
}
|
|
@@ -226,36 +202,19 @@ const useVoiceAgent = () => {
|
|
|
226
202
|
// No cleanup here - we don't want to disconnect when token changes or component unmounts
|
|
227
203
|
}, [tokenDetails]);
|
|
228
204
|
|
|
229
|
-
// Log connection status periodically for debugging
|
|
230
|
-
(0, _react.useEffect)(() => {
|
|
231
|
-
const debugInterval = setInterval(() => {
|
|
232
|
-
if (roomInstance) {
|
|
233
|
-
const state = roomInstance.state;
|
|
234
|
-
const participantCount = roomInstance.numParticipants;
|
|
235
|
-
console.log(`[DEBUG] Room state: ${state}, Participants: ${participantCount}, Stable: ${stableConnection}`);
|
|
236
|
-
}
|
|
237
|
-
}, 10000); // Every 10 seconds
|
|
238
|
-
|
|
239
|
-
return () => clearInterval(debugInterval);
|
|
240
|
-
}, [stableConnection]);
|
|
241
|
-
|
|
242
205
|
// Generate token and connect
|
|
243
206
|
const generateVoiceToken = async () => {
|
|
244
|
-
console.log('generateVoiceToken');
|
|
245
|
-
|
|
246
207
|
// Don't generate a new token if we're already connecting/connected
|
|
247
208
|
if (isConnecting || isLoading) {
|
|
248
|
-
|
|
209
|
+
// todo: handle already connecting or loading
|
|
249
210
|
return;
|
|
250
211
|
}
|
|
251
212
|
|
|
252
213
|
// Reset connection attempts when starting fresh
|
|
253
214
|
resetConnectionAttempts();
|
|
254
|
-
setStableConnection(false);
|
|
255
215
|
const userData = await (0, _storeKey.getAgentData)(_embedEvent.EventKeys.USER_DATA);
|
|
256
216
|
setIsLoading(true);
|
|
257
217
|
setError(null);
|
|
258
|
-
console.log('userData', userData);
|
|
259
218
|
try {
|
|
260
219
|
const apiService = _api.APIService.getInstance();
|
|
261
220
|
const response = await apiService.getTokenDetails({
|
|
@@ -269,7 +228,7 @@ const useVoiceAgent = () => {
|
|
|
269
228
|
if (room.state !== _livekitClient.ConnectionState.Connected) {
|
|
270
229
|
setTokenDetails(response.data);
|
|
271
230
|
} else {
|
|
272
|
-
|
|
231
|
+
// todo: handle room already connected
|
|
273
232
|
}
|
|
274
233
|
} catch (err) {
|
|
275
234
|
const message = err instanceof Error ? err.message : 'Failed to generate voice token';
|
|
@@ -283,16 +242,14 @@ const useVoiceAgent = () => {
|
|
|
283
242
|
// End call
|
|
284
243
|
const endCall = async () => {
|
|
285
244
|
if (isDisconnecting) {
|
|
286
|
-
|
|
245
|
+
// todo: handle already disconnecting
|
|
287
246
|
return;
|
|
288
247
|
}
|
|
289
248
|
try {
|
|
290
|
-
console.log('Ending call');
|
|
291
249
|
isDisconnecting = true;
|
|
292
250
|
setTokenDetails(null);
|
|
293
251
|
setIsMicMuted(false);
|
|
294
252
|
resetConnectionAttempts();
|
|
295
|
-
setStableConnection(false);
|
|
296
253
|
const room = getRoomInstance();
|
|
297
254
|
if (room.state !== _livekitClient.ConnectionState.Disconnected) {
|
|
298
255
|
// Update state before disconnection
|
|
@@ -318,7 +275,6 @@ const useVoiceAgent = () => {
|
|
|
318
275
|
if (room.localParticipant) {
|
|
319
276
|
room.localParticipant.setMicrophoneEnabled(false);
|
|
320
277
|
setIsMicMuted(true);
|
|
321
|
-
console.log('Microphone muted');
|
|
322
278
|
}
|
|
323
279
|
};
|
|
324
280
|
|
|
@@ -328,7 +284,6 @@ const useVoiceAgent = () => {
|
|
|
328
284
|
if (room.localParticipant) {
|
|
329
285
|
room.localParticipant.setMicrophoneEnabled(true);
|
|
330
286
|
setIsMicMuted(false);
|
|
331
|
-
console.log('Microphone unmuted');
|
|
332
287
|
}
|
|
333
288
|
};
|
|
334
289
|
|
|
@@ -337,6 +292,15 @@ const useVoiceAgent = () => {
|
|
|
337
292
|
endCall();
|
|
338
293
|
resetRoomState();
|
|
339
294
|
};
|
|
295
|
+
const getPopupDescription = async () => {
|
|
296
|
+
const userData = await (0, _storeKey.getAgentData)(_embedEvent.EventKeys.USER_DATA);
|
|
297
|
+
const apiService = _api.APIService.getInstance();
|
|
298
|
+
const response = await apiService.getPopupDescription({
|
|
299
|
+
app_user_id: userData?.app_user_id
|
|
300
|
+
});
|
|
301
|
+
if (!response.data) throw new Error('No popup description found');
|
|
302
|
+
return response.data;
|
|
303
|
+
};
|
|
340
304
|
return {
|
|
341
305
|
initializeVoiceAgent: generateVoiceToken,
|
|
342
306
|
endCall,
|
|
@@ -351,7 +315,8 @@ const useVoiceAgent = () => {
|
|
|
351
315
|
roomRef: {
|
|
352
316
|
current: getRoomInstance()
|
|
353
317
|
},
|
|
354
|
-
cleanup
|
|
318
|
+
cleanup,
|
|
319
|
+
getPopupDescription
|
|
355
320
|
};
|
|
356
321
|
};
|
|
357
322
|
exports.useVoiceAgent = useVoiceAgent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_livekitClient","require","_react","_embedEvent","_api","_storeKey","roomInstance","isConnecting","isDisconnecting","hasListeners","connectionAttempts","stableConnectionTimerId","MAX_CONNECTION_ATTEMPTS","
|
|
1
|
+
{"version":3,"names":["_livekitClient","require","_react","_embedEvent","_api","_storeKey","roomInstance","isConnecting","isDisconnecting","hasListeners","connectionAttempts","stableConnectionTimerId","MAX_CONNECTION_ATTEMPTS","getRoomInstance","Room","adaptiveStream","dynacast","publishDefaults","simulcast","resetConnectionAttempts","clearTimeout","resetRoomState","state","ConnectionState","Disconnected","disconnect","finally","e","useVoiceAgent","isLoading","setIsLoading","useState","error","setError","tokenDetails","setTokenDetails","isMicMuted","setIsMicMuted","connectionState","setConnectionState","room","setupRoomListeners","handleConnectionChange","Connected","handleTrackSubscribed","track","kind","setVolume","on","Error","message","useEffect","connectToRoom","Connecting","connect","server_url","token","autoSubscribe","err","includes","generateVoiceToken","userData","getAgentData","EventKeys","USER_DATA","apiService","APIService","getInstance","response","getTokenDetails","app_user_id","call_type","data","endCall","muteMic","localParticipant","setMicrophoneEnabled","unmuteMic","cleanup","getPopupDescription","initializeVoiceAgent","roomRef","current","exports"],"sourceRoot":"../../../src","sources":["hooks/voiceagent.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventKeys","exports"],"sourceRoot":"../../src","sources":["index.types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;
|
|
1
|
+
{"version":3,"names":["EventKeys","exports"],"sourceRoot":"../../src","sources":["index.types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAKA;AAGA;AA0BA;AAMA;AAyBA;AAAA,IACYA,SAAS,GAAAC,OAAA,CAAAD,SAAA,0BAATA,SAAS;EAATA,SAAS;EAATA,SAAS;EAAA,OAATA,SAAS;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["reanimatedAPI","getReanimatedAPI","reanimated","require","makeMutable","Error","useSharedValue","useAnimatedStyle","withTiming","withSpring","withRepeat","withSequence","runOnJS","Easing","Animated","default","isAvailable","error","console","warn","View","value","args","length","fn","inOut","easing","ease","t","checkReanimatedSetup","api","showReanimatedSetupError"],"sourceRoot":"../../../src","sources":["utils/reanimated.helper.ts"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["reanimatedAPI","getReanimatedAPI","reanimated","require","makeMutable","Error","useSharedValue","useAnimatedStyle","withTiming","withSpring","withRepeat","withSequence","runOnJS","Easing","Animated","default","isAvailable","error","console","warn","View","value","args","length","fn","inOut","easing","ease","t","checkReanimatedSetup","api","showReanimatedSetupError"],"sourceRoot":"../../../src","sources":["utils/reanimated.helper.ts"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;;AAeA,IAAIA,aAA4B;;AAEhC;AACA;AACA;AACO,SAASC,gBAAgBA,CAAA,EAAkB;EAChD,IAAID,aAAa,EAAE;IACjB,OAAOA,aAAa;EACtB;EAEA,IAAI;IACF,MAAME,UAAU,GAAGC,OAAO,CAAC,yBAAyB,CAAC;;IAErD;IACA,IAAI,CAACD,UAAU,CAACE,WAAW,EAAE;MAC3B,MAAM,IAAIC,KAAK,CACb,gFACF,CAAC;IACH;IAEAL,aAAa,GAAG;MACdM,cAAc,EAAEJ,UAAU,CAACI,cAAc;MACzCC,gBAAgB,EAAEL,UAAU,CAACK,gBAAgB;MAC7CC,UAAU,EAAEN,UAAU,CAACM,UAAU;MACjCC,UAAU,EAAEP,UAAU,CAACO,UAAU;MACjCC,UAAU,EAAER,UAAU,CAACQ,UAAU;MACjCC,YAAY,EAAET,UAAU,CAACS,YAAY;MACrCC,OAAO,EAAEV,UAAU,CAACU,OAAO;MAC3BC,MAAM,EAAEX,UAAU,CAACW,MAAM;MACzBC,QAAQ,EAAEZ,UAAU,CAACa,OAAO;MAC5BC,WAAW,EAAE;IACf,CAAC;IAED,OAAOhB,aAAa;EACtB,CAAC,CAAC,OAAOiB,KAAK,EAAE;IACdC,OAAO,CAACC,IAAI,CACV,qEAAqE,EACrEF,KACF,CAAC;IACDC,OAAO,CAACC,IAAI,CACV,wHACF,CAAC;;IAED;IACA,MAAM;MAAEC;IAAK,CAAC,GAAGjB,OAAO,CAAC,cAAc,CAAC;IAExCH,aAAa,GAAG;MACdM,cAAc,EAAGe,KAAU,KAAM;QAAEA;MAAM,CAAC,CAAC;MAC3Cd,gBAAgB,EAAEA,CAAA,MAAO,CAAC,CAAC,CAAC;MAC5BC,UAAU,EAAGa,KAAU,IAAKA,KAAK;MACjCZ,UAAU,EAAGY,KAAU,IAAKA,KAAK;MACjCX,UAAU,EAAGW,KAAU,IAAKA,KAAK;MACjCV,YAAY,EAAEA,CAAC,GAAGW,IAAW,KAAKA,IAAI,CAACA,IAAI,CAACC,MAAM,GAAG,CAAC,CAAC;MACvDX,OAAO,EAAGY,EAAO,IAAKA,EAAE;MACxBX,MAAM,EAAE;QACNY,KAAK,EAAGC,MAAW,IAAKA,MAAM;QAC9BC,IAAI,EAAGC,CAAS,IAAKA;MACvB,CAAC;MACDd,QAAQ,EAAEM,IAAI;MACdJ,WAAW,EAAE;IACf,CAAC;IAED,OAAOhB,aAAa;EACtB;AACF;;AAEA;AACA;AACA;AACO,SAAS6B,oBAAoBA,CAAA,EAAY;EAC9C,MAAMC,GAAG,GAAG7B,gBAAgB,CAAC,CAAC;EAC9B,OAAO6B,GAAG,CAACd,WAAW;AACxB;;AAEA;AACA;AACA;AACO,SAASe,wBAAwBA,CAAA,EAAS;EAC/Cb,OAAO,CAACD,KAAK,CAAC;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,CAAC;AACN","ignoreList":[]}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* API Error handling system
|
|
5
|
+
* Centralizes all error handling logic with status codes and definitions
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* HTTP Status Code definitions
|
|
10
|
+
*/
|
|
11
|
+
export const HTTP_STATUS_CODES = {
|
|
12
|
+
// 2xx Success
|
|
13
|
+
200: 'OK',
|
|
14
|
+
201: 'Created',
|
|
15
|
+
204: 'No Content',
|
|
16
|
+
// 4xx Client Errors
|
|
17
|
+
400: 'Bad Request',
|
|
18
|
+
401: 'Unauthorized',
|
|
19
|
+
403: 'Forbidden',
|
|
20
|
+
404: 'Not Found',
|
|
21
|
+
408: 'Request Timeout',
|
|
22
|
+
422: 'Unprocessable Entity',
|
|
23
|
+
429: 'Too Many Requests',
|
|
24
|
+
// 5xx Server Errors
|
|
25
|
+
500: 'Internal Server Error',
|
|
26
|
+
502: 'Bad Gateway',
|
|
27
|
+
503: 'Service Unavailable',
|
|
28
|
+
504: 'Gateway Timeout'
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Predefined error types and their definitions
|
|
33
|
+
*/
|
|
34
|
+
export const ERROR_TYPES = {
|
|
35
|
+
NETWORK: {
|
|
36
|
+
code: 'NETWORK_ERROR',
|
|
37
|
+
message: 'Network request failed. Please check your internet connection and try again.',
|
|
38
|
+
type: 'NETWORK'
|
|
39
|
+
},
|
|
40
|
+
ATS: {
|
|
41
|
+
code: 'ATS_ERROR',
|
|
42
|
+
message: 'Network request blocked by iOS App Transport Security. Please configure ATS exceptions in Info.plist for HTTP endpoints, or use HTTPS instead.',
|
|
43
|
+
type: 'ATS'
|
|
44
|
+
},
|
|
45
|
+
TIMEOUT: {
|
|
46
|
+
code: 'TIMEOUT_ERROR',
|
|
47
|
+
message: 'Request timeout. The API server may be slow to respond or unreachable.',
|
|
48
|
+
type: 'TIMEOUT'
|
|
49
|
+
},
|
|
50
|
+
AUTH: {
|
|
51
|
+
code: 'AUTH_ERROR',
|
|
52
|
+
message: 'Authentication failed. Please check your API credentials.',
|
|
53
|
+
type: 'AUTH'
|
|
54
|
+
},
|
|
55
|
+
SERVER: {
|
|
56
|
+
code: 'SERVER_ERROR',
|
|
57
|
+
message: 'Server error occurred. Please try again later.',
|
|
58
|
+
type: 'SERVER'
|
|
59
|
+
},
|
|
60
|
+
VALIDATION: {
|
|
61
|
+
code: 'VALIDATION_ERROR',
|
|
62
|
+
message: 'Invalid request data. Please check your input.',
|
|
63
|
+
type: 'VALIDATION'
|
|
64
|
+
},
|
|
65
|
+
UNKNOWN: {
|
|
66
|
+
code: 'UNKNOWN_ERROR',
|
|
67
|
+
message: 'An unknown error occurred. Please try again.',
|
|
68
|
+
type: 'UNKNOWN'
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Enhanced error handler that categorizes and formats errors
|
|
74
|
+
*/
|
|
75
|
+
export class ApiErrorHandler {
|
|
76
|
+
/**
|
|
77
|
+
* Handle HTTP response errors
|
|
78
|
+
*/
|
|
79
|
+
static handleHttpError(response, responseData) {
|
|
80
|
+
const statusCode = response.status;
|
|
81
|
+
const statusText = HTTP_STATUS_CODES[statusCode] || 'Unknown Status';
|
|
82
|
+
|
|
83
|
+
// Extract error message from response data if available
|
|
84
|
+
const serverMessage = responseData?.error || responseData?.message || '';
|
|
85
|
+
|
|
86
|
+
// Determine error type based on status code
|
|
87
|
+
let errorType = 'SERVER';
|
|
88
|
+
let code;
|
|
89
|
+
let baseMessage;
|
|
90
|
+
if (statusCode >= 400 && statusCode < 500) {
|
|
91
|
+
if (statusCode === 401 || statusCode === 403) {
|
|
92
|
+
errorType = 'AUTH';
|
|
93
|
+
code = ERROR_TYPES.AUTH.code;
|
|
94
|
+
baseMessage = ERROR_TYPES.AUTH.message;
|
|
95
|
+
} else if (statusCode === 408) {
|
|
96
|
+
errorType = 'TIMEOUT';
|
|
97
|
+
code = ERROR_TYPES.TIMEOUT.code;
|
|
98
|
+
baseMessage = ERROR_TYPES.TIMEOUT.message;
|
|
99
|
+
} else if (statusCode === 422) {
|
|
100
|
+
errorType = 'VALIDATION';
|
|
101
|
+
code = ERROR_TYPES.VALIDATION.code;
|
|
102
|
+
baseMessage = ERROR_TYPES.VALIDATION.message;
|
|
103
|
+
} else {
|
|
104
|
+
errorType = 'VALIDATION';
|
|
105
|
+
code = ERROR_TYPES.VALIDATION.code;
|
|
106
|
+
baseMessage = ERROR_TYPES.VALIDATION.message;
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
code = ERROR_TYPES.SERVER.code;
|
|
110
|
+
baseMessage = ERROR_TYPES.SERVER.message;
|
|
111
|
+
}
|
|
112
|
+
return {
|
|
113
|
+
code,
|
|
114
|
+
message: serverMessage || `${baseMessage} (${statusCode}: ${statusText})`,
|
|
115
|
+
statusCode,
|
|
116
|
+
details: serverMessage ? `HTTP ${statusCode}: ${statusText}` : undefined,
|
|
117
|
+
type: errorType
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Handle network and other runtime errors
|
|
123
|
+
*/
|
|
124
|
+
static handleRuntimeError(error, apiBaseUrl) {
|
|
125
|
+
const errorMessage = error.message.toLowerCase();
|
|
126
|
+
|
|
127
|
+
// iOS ATS related errors
|
|
128
|
+
if (errorMessage.includes('the resource could not be loaded') || errorMessage.includes('app transport security')) {
|
|
129
|
+
return {
|
|
130
|
+
...ERROR_TYPES.ATS,
|
|
131
|
+
message: `${ERROR_TYPES.ATS.message} Error: ${error.message}`,
|
|
132
|
+
details: `API endpoint: ${apiBaseUrl}`
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Network connectivity errors
|
|
137
|
+
if (errorMessage.includes('network request failed') || errorMessage.includes('failed to fetch') || errorMessage.includes('fetch')) {
|
|
138
|
+
return {
|
|
139
|
+
...ERROR_TYPES.NETWORK,
|
|
140
|
+
message: `${ERROR_TYPES.NETWORK.message} API endpoint: ${apiBaseUrl}. Error: ${error.message}`,
|
|
141
|
+
details: `Endpoint: ${apiBaseUrl}`
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Timeout errors
|
|
146
|
+
if (errorMessage.includes('timeout') || errorMessage.includes('aborted')) {
|
|
147
|
+
return {
|
|
148
|
+
...ERROR_TYPES.TIMEOUT,
|
|
149
|
+
message: `${ERROR_TYPES.TIMEOUT.message} Error: ${error.message}`,
|
|
150
|
+
details: `Endpoint: ${apiBaseUrl}`
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Authentication errors
|
|
155
|
+
if (errorMessage.includes('unauthorized') || errorMessage.includes('authentication') || errorMessage.includes('api key')) {
|
|
156
|
+
return {
|
|
157
|
+
...ERROR_TYPES.AUTH,
|
|
158
|
+
message: `${ERROR_TYPES.AUTH.message} Error: ${error.message}`
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Default to unknown error
|
|
163
|
+
return {
|
|
164
|
+
...ERROR_TYPES.UNKNOWN,
|
|
165
|
+
message: `${ERROR_TYPES.UNKNOWN.message} Error: ${error.message}`
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Format error for API response
|
|
171
|
+
*/
|
|
172
|
+
static formatErrorResponse(apiError) {
|
|
173
|
+
return {
|
|
174
|
+
success: false,
|
|
175
|
+
error: apiError.message,
|
|
176
|
+
errorCode: apiError.code,
|
|
177
|
+
statusCode: apiError.statusCode,
|
|
178
|
+
type: apiError.type
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Main error processing method
|
|
184
|
+
*/
|
|
185
|
+
static async processApiError(error, response, apiBaseUrl) {
|
|
186
|
+
let apiError;
|
|
187
|
+
if (response && !response.ok) {
|
|
188
|
+
// HTTP error - try to get response data
|
|
189
|
+
let responseData;
|
|
190
|
+
try {
|
|
191
|
+
responseData = await response.json();
|
|
192
|
+
} catch (e) {
|
|
193
|
+
// If JSON parsing fails, use response text or status
|
|
194
|
+
responseData = {
|
|
195
|
+
error: response.statusText
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
apiError = this.handleHttpError(response, responseData);
|
|
199
|
+
} else if (error instanceof Error) {
|
|
200
|
+
// Runtime error
|
|
201
|
+
apiError = this.handleRuntimeError(error, apiBaseUrl);
|
|
202
|
+
} else {
|
|
203
|
+
// Unknown error type
|
|
204
|
+
apiError = {
|
|
205
|
+
...ERROR_TYPES.UNKNOWN,
|
|
206
|
+
message: `${ERROR_TYPES.UNKNOWN.message} Details: ${String(error)}`
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return this.formatErrorResponse(apiError);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Convenience function for processing API errors
|
|
215
|
+
*/
|
|
216
|
+
export const processApiError = async (error, response, apiBaseUrl) => {
|
|
217
|
+
return ApiErrorHandler.processApiError(error, response, apiBaseUrl);
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* Type guard to check if a response is an error response
|
|
222
|
+
*/
|
|
223
|
+
export const isApiErrorResponse = response => {
|
|
224
|
+
return response && typeof response === 'object' && response.success === false;
|
|
225
|
+
};
|
|
226
|
+
//# sourceMappingURL=api.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["HTTP_STATUS_CODES","ERROR_TYPES","NETWORK","code","message","type","ATS","TIMEOUT","AUTH","SERVER","VALIDATION","UNKNOWN","ApiErrorHandler","handleHttpError","response","responseData","statusCode","status","statusText","serverMessage","error","errorType","baseMessage","details","undefined","handleRuntimeError","apiBaseUrl","errorMessage","toLowerCase","includes","formatErrorResponse","apiError","success","errorCode","processApiError","ok","json","e","Error","String","isApiErrorResponse"],"sourceRoot":"../../../src","sources":["api/api.error.ts"],"mappings":"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","ignoreList":[]}
|