@loyalytics/swan-react-native-sdk 2.0.1
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/LICENSE +55 -0
- package/README.md +67 -0
- package/docs/IOS_NOTIFICATION_EXTENSION_SETUP.md +335 -0
- package/ios/README.md +64 -0
- package/ios/SwanNotificationServiceExtension/Info.plist +31 -0
- package/ios/SwanNotificationServiceExtension/NotificationService.swift +337 -0
- package/ios/SwanNotificationServiceExtension/SwanNotificationServiceExtension.entitlements +10 -0
- package/lib/commonjs/components/FooterView.js +125 -0
- package/lib/commonjs/components/FooterView.js.map +1 -0
- package/lib/commonjs/components/FullScreenView.js +172 -0
- package/lib/commonjs/components/FullScreenView.js.map +1 -0
- package/lib/commonjs/components/HeaderView.js +205 -0
- package/lib/commonjs/components/HeaderView.js.map +1 -0
- package/lib/commonjs/components/PopUpView.js +186 -0
- package/lib/commonjs/components/PopUpView.js.map +1 -0
- package/lib/commonjs/config/BatchConfig.js +53 -0
- package/lib/commonjs/config/BatchConfig.js.map +1 -0
- package/lib/commonjs/constants/ApiUrls.js +56 -0
- package/lib/commonjs/constants/ApiUrls.js.map +1 -0
- package/lib/commonjs/core/EventQueueManager.js +345 -0
- package/lib/commonjs/core/EventQueueManager.js.map +1 -0
- package/lib/commonjs/core/FlushManager.js +245 -0
- package/lib/commonjs/core/FlushManager.js.map +1 -0
- package/lib/commonjs/core/NetworkMonitor.js +97 -0
- package/lib/commonjs/core/NetworkMonitor.js.map +1 -0
- package/lib/commonjs/index.js +3506 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/providers/FirebasePushProvider.js +130 -0
- package/lib/commonjs/providers/FirebasePushProvider.js.map +1 -0
- package/lib/commonjs/providers/NullPushProvider.js +59 -0
- package/lib/commonjs/providers/NullPushProvider.js.map +1 -0
- package/lib/commonjs/providers/PushNotificationProvider.js +30 -0
- package/lib/commonjs/providers/PushNotificationProvider.js.map +1 -0
- package/lib/commonjs/services/DeviceRegistrationService.js +248 -0
- package/lib/commonjs/services/DeviceRegistrationService.js.map +1 -0
- package/lib/commonjs/services/PushTokenService.js +284 -0
- package/lib/commonjs/services/PushTokenService.js.map +1 -0
- package/lib/commonjs/state/AuthStateMachine.js +161 -0
- package/lib/commonjs/state/AuthStateMachine.js.map +1 -0
- package/lib/commonjs/state/DeviceStateMachine.js +104 -0
- package/lib/commonjs/state/DeviceStateMachine.js.map +1 -0
- package/lib/commonjs/state/PushStateMachine.js +129 -0
- package/lib/commonjs/state/PushStateMachine.js.map +1 -0
- package/lib/commonjs/types/EventQueue.js +50 -0
- package/lib/commonjs/types/EventQueue.js.map +1 -0
- package/lib/commonjs/types/SDK.js +2 -0
- package/lib/commonjs/types/SDK.js.map +1 -0
- package/lib/commonjs/utils/FirebaseNotificationManager.js +492 -0
- package/lib/commonjs/utils/FirebaseNotificationManager.js.map +1 -0
- package/lib/commonjs/utils/Logger.js +56 -0
- package/lib/commonjs/utils/Logger.js.map +1 -0
- package/lib/commonjs/utils/SharedCredentialsManager.js +146 -0
- package/lib/commonjs/utils/SharedCredentialsManager.js.map +1 -0
- package/lib/commonjs/version.js +12 -0
- package/lib/commonjs/version.js.map +1 -0
- package/lib/module/components/FooterView.js +121 -0
- package/lib/module/components/FooterView.js.map +1 -0
- package/lib/module/components/FullScreenView.js +167 -0
- package/lib/module/components/FullScreenView.js.map +1 -0
- package/lib/module/components/HeaderView.js +199 -0
- package/lib/module/components/HeaderView.js.map +1 -0
- package/lib/module/components/PopUpView.js +181 -0
- package/lib/module/components/PopUpView.js.map +1 -0
- package/lib/module/config/BatchConfig.js +49 -0
- package/lib/module/config/BatchConfig.js.map +1 -0
- package/lib/module/constants/ApiUrls.js +52 -0
- package/lib/module/constants/ApiUrls.js.map +1 -0
- package/lib/module/core/EventQueueManager.js +340 -0
- package/lib/module/core/EventQueueManager.js.map +1 -0
- package/lib/module/core/FlushManager.js +240 -0
- package/lib/module/core/FlushManager.js.map +1 -0
- package/lib/module/core/NetworkMonitor.js +92 -0
- package/lib/module/core/NetworkMonitor.js.map +1 -0
- package/lib/module/index.js +3494 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/providers/FirebasePushProvider.js +124 -0
- package/lib/module/providers/FirebasePushProvider.js.map +1 -0
- package/lib/module/providers/NullPushProvider.js +53 -0
- package/lib/module/providers/NullPushProvider.js.map +1 -0
- package/lib/module/providers/PushNotificationProvider.js +26 -0
- package/lib/module/providers/PushNotificationProvider.js.map +1 -0
- package/lib/module/services/DeviceRegistrationService.js +243 -0
- package/lib/module/services/DeviceRegistrationService.js.map +1 -0
- package/lib/module/services/PushTokenService.js +278 -0
- package/lib/module/services/PushTokenService.js.map +1 -0
- package/lib/module/state/AuthStateMachine.js +155 -0
- package/lib/module/state/AuthStateMachine.js.map +1 -0
- package/lib/module/state/DeviceStateMachine.js +98 -0
- package/lib/module/state/DeviceStateMachine.js.map +1 -0
- package/lib/module/state/PushStateMachine.js +123 -0
- package/lib/module/state/PushStateMachine.js.map +1 -0
- package/lib/module/types/EventQueue.js +46 -0
- package/lib/module/types/EventQueue.js.map +1 -0
- package/lib/module/types/SDK.js +2 -0
- package/lib/module/types/SDK.js.map +1 -0
- package/lib/module/utils/FirebaseNotificationManager.js +486 -0
- package/lib/module/utils/FirebaseNotificationManager.js.map +1 -0
- package/lib/module/utils/Logger.js +52 -0
- package/lib/module/utils/Logger.js.map +1 -0
- package/lib/module/utils/SharedCredentialsManager.js +140 -0
- package/lib/module/utils/SharedCredentialsManager.js.map +1 -0
- package/lib/module/version.js +8 -0
- package/lib/module/version.js.map +1 -0
- package/lib/typescript/commonjs/package.json +1 -0
- package/lib/typescript/commonjs/src/components/FooterView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/FooterView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/FullScreenView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/FullScreenView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/HeaderView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/HeaderView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/components/PopUpView.d.ts +3 -0
- package/lib/typescript/commonjs/src/components/PopUpView.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/config/BatchConfig.d.ts +7 -0
- package/lib/typescript/commonjs/src/config/BatchConfig.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts +56 -0
- package/lib/typescript/commonjs/src/constants/ApiUrls.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts +63 -0
- package/lib/typescript/commonjs/src/core/EventQueueManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/FlushManager.d.ts +63 -0
- package/lib/typescript/commonjs/src/core/FlushManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts +38 -0
- package/lib/typescript/commonjs/src/core/NetworkMonitor.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +663 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts +28 -0
- package/lib/typescript/commonjs/src/providers/FirebasePushProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts +25 -0
- package/lib/typescript/commonjs/src/providers/NullPushProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts +105 -0
- package/lib/typescript/commonjs/src/providers/PushNotificationProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts +60 -0
- package/lib/typescript/commonjs/src/services/DeviceRegistrationService.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/services/PushTokenService.d.ts +82 -0
- package/lib/typescript/commonjs/src/services/PushTokenService.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts +61 -0
- package/lib/typescript/commonjs/src/state/AuthStateMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts +51 -0
- package/lib/typescript/commonjs/src/state/DeviceStateMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts +61 -0
- package/lib/typescript/commonjs/src/state/PushStateMachine.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/EventQueue.d.ts +85 -0
- package/lib/typescript/commonjs/src/types/EventQueue.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/types/SDK.d.ts +54 -0
- package/lib/typescript/commonjs/src/types/SDK.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts +169 -0
- package/lib/typescript/commonjs/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils/Logger.d.ts +32 -0
- package/lib/typescript/commonjs/src/utils/Logger.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts +54 -0
- package/lib/typescript/commonjs/src/utils/SharedCredentialsManager.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/version.d.ts +2 -0
- package/lib/typescript/commonjs/src/version.d.ts.map +1 -0
- package/lib/typescript/module/package.json +1 -0
- package/lib/typescript/module/src/components/FooterView.d.ts +3 -0
- package/lib/typescript/module/src/components/FooterView.d.ts.map +1 -0
- package/lib/typescript/module/src/components/FullScreenView.d.ts +3 -0
- package/lib/typescript/module/src/components/FullScreenView.d.ts.map +1 -0
- package/lib/typescript/module/src/components/HeaderView.d.ts +3 -0
- package/lib/typescript/module/src/components/HeaderView.d.ts.map +1 -0
- package/lib/typescript/module/src/components/PopUpView.d.ts +3 -0
- package/lib/typescript/module/src/components/PopUpView.d.ts.map +1 -0
- package/lib/typescript/module/src/config/BatchConfig.d.ts +7 -0
- package/lib/typescript/module/src/config/BatchConfig.d.ts.map +1 -0
- package/lib/typescript/module/src/constants/ApiUrls.d.ts +56 -0
- package/lib/typescript/module/src/constants/ApiUrls.d.ts.map +1 -0
- package/lib/typescript/module/src/core/EventQueueManager.d.ts +63 -0
- package/lib/typescript/module/src/core/EventQueueManager.d.ts.map +1 -0
- package/lib/typescript/module/src/core/FlushManager.d.ts +63 -0
- package/lib/typescript/module/src/core/FlushManager.d.ts.map +1 -0
- package/lib/typescript/module/src/core/NetworkMonitor.d.ts +38 -0
- package/lib/typescript/module/src/core/NetworkMonitor.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +663 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -0
- package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts +28 -0
- package/lib/typescript/module/src/providers/FirebasePushProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/providers/NullPushProvider.d.ts +25 -0
- package/lib/typescript/module/src/providers/NullPushProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts +105 -0
- package/lib/typescript/module/src/providers/PushNotificationProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts +60 -0
- package/lib/typescript/module/src/services/DeviceRegistrationService.d.ts.map +1 -0
- package/lib/typescript/module/src/services/PushTokenService.d.ts +82 -0
- package/lib/typescript/module/src/services/PushTokenService.d.ts.map +1 -0
- package/lib/typescript/module/src/state/AuthStateMachine.d.ts +61 -0
- package/lib/typescript/module/src/state/AuthStateMachine.d.ts.map +1 -0
- package/lib/typescript/module/src/state/DeviceStateMachine.d.ts +51 -0
- package/lib/typescript/module/src/state/DeviceStateMachine.d.ts.map +1 -0
- package/lib/typescript/module/src/state/PushStateMachine.d.ts +61 -0
- package/lib/typescript/module/src/state/PushStateMachine.d.ts.map +1 -0
- package/lib/typescript/module/src/types/EventQueue.d.ts +85 -0
- package/lib/typescript/module/src/types/EventQueue.d.ts.map +1 -0
- package/lib/typescript/module/src/types/SDK.d.ts +54 -0
- package/lib/typescript/module/src/types/SDK.d.ts.map +1 -0
- package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts +169 -0
- package/lib/typescript/module/src/utils/FirebaseNotificationManager.d.ts.map +1 -0
- package/lib/typescript/module/src/utils/Logger.d.ts +32 -0
- package/lib/typescript/module/src/utils/Logger.d.ts.map +1 -0
- package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts +54 -0
- package/lib/typescript/module/src/utils/SharedCredentialsManager.d.ts.map +1 -0
- package/lib/typescript/module/src/version.d.ts +2 -0
- package/lib/typescript/module/src/version.d.ts.map +1 -0
- package/package.json +230 -0
- package/scripts/generate-version.js +25 -0
- package/scripts/setup-ios-extension.js +275 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Logger","EventQueueManager","constructor","db","maxRetries","createTable","Promise","resolve","reject","Error","transaction","txn","executeSql","log","_","error","enqueue","event","id","eventName","JSON","stringify","eventData","timestamp","priority","retryCount","status","createdAt","lastAttemptAt","dequeue","batchSize","events","res","eventIds","i","rows","length","row","item","push","parse","placeholders","map","join","Date","now","markAsSent","markAsFailed","getQueueSize","count","clearOldEvents","daysOld","cutoffTime","rowsAffected","enforceQueueLimit","maxSize","warn","recoverStaleEvents","staleThreshold"],"sourceRoot":"../../../src","sources":["core/EventQueueManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { AppState } from 'react-native';
|
|
4
|
+
import Logger from "../utils/Logger.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* FlushManager
|
|
8
|
+
* Orchestrates batch sending with multiple flush triggers:
|
|
9
|
+
* - Time interval (every 30s)
|
|
10
|
+
* - Queue size (when batchSize reached)
|
|
11
|
+
* - App lifecycle (on background)
|
|
12
|
+
* - Network restoration (when back online)
|
|
13
|
+
*/
|
|
14
|
+
export class FlushManager {
|
|
15
|
+
flushTimer = null;
|
|
16
|
+
isFlushing = null;
|
|
17
|
+
appStateSubscription = null;
|
|
18
|
+
retryTimeouts = new Map();
|
|
19
|
+
constructor(queueManager, networkMonitor, config, sendBatchCallback) {
|
|
20
|
+
this.queueManager = queueManager;
|
|
21
|
+
this.networkMonitor = networkMonitor;
|
|
22
|
+
this.config = config;
|
|
23
|
+
this.sendBatchCallback = sendBatchCallback;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Start flush manager
|
|
28
|
+
* - Initializes timer-based flushing
|
|
29
|
+
* - Sets up AppState listener
|
|
30
|
+
* - Sets up network state listener
|
|
31
|
+
*/
|
|
32
|
+
start() {
|
|
33
|
+
Logger.log('FlushManager starting...');
|
|
34
|
+
|
|
35
|
+
// Timer-based flush trigger
|
|
36
|
+
this.flushTimer = setInterval(() => {
|
|
37
|
+
this.flush(false);
|
|
38
|
+
}, this.config.flushInterval);
|
|
39
|
+
|
|
40
|
+
// App lifecycle flush trigger
|
|
41
|
+
this.appStateSubscription = AppState.addEventListener('change', nextAppState => {
|
|
42
|
+
if (nextAppState === 'background' || nextAppState === 'inactive') {
|
|
43
|
+
Logger.log('App going to background, triggering flush');
|
|
44
|
+
this.flush(true); // Force flush on background
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// Network restoration flush trigger
|
|
49
|
+
this.networkMonitor.addListener(isOnline => {
|
|
50
|
+
if (isOnline) {
|
|
51
|
+
Logger.log('Network restored, triggering flush');
|
|
52
|
+
this.flush(false);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
Logger.log('FlushManager started');
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Stop flush manager
|
|
60
|
+
* - Clears timer
|
|
61
|
+
* - Removes listeners
|
|
62
|
+
* - Cancels pending retries
|
|
63
|
+
*/
|
|
64
|
+
stop() {
|
|
65
|
+
Logger.log('FlushManager stopping...');
|
|
66
|
+
if (this.flushTimer) {
|
|
67
|
+
clearInterval(this.flushTimer);
|
|
68
|
+
this.flushTimer = null;
|
|
69
|
+
}
|
|
70
|
+
if (this.appStateSubscription) {
|
|
71
|
+
this.appStateSubscription.remove();
|
|
72
|
+
this.appStateSubscription = null;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Cancel all pending retries
|
|
76
|
+
this.retryTimeouts.forEach(timeout => clearTimeout(timeout));
|
|
77
|
+
this.retryTimeouts.clear();
|
|
78
|
+
Logger.log('FlushManager stopped');
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Trigger batch flush
|
|
83
|
+
* Prevents concurrent flushes using promise-based lock
|
|
84
|
+
* @param force If true, bypasses online check
|
|
85
|
+
* @returns Batch response from server
|
|
86
|
+
*/
|
|
87
|
+
async flush(force = false) {
|
|
88
|
+
// Prevent concurrent flushes
|
|
89
|
+
if (this.isFlushing) {
|
|
90
|
+
Logger.log('Flush already in progress, skipping');
|
|
91
|
+
return this.isFlushing;
|
|
92
|
+
}
|
|
93
|
+
this.isFlushing = (async () => {
|
|
94
|
+
try {
|
|
95
|
+
// Check network status (unless forced)
|
|
96
|
+
if (!force && !this.networkMonitor.isConnected()) {
|
|
97
|
+
Logger.log('Device offline, skipping flush');
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Get pending events from queue
|
|
102
|
+
const events = await this.queueManager.dequeue(this.config.batchSize);
|
|
103
|
+
if (events.length === 0) {
|
|
104
|
+
Logger.log('No pending events to flush');
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
Logger.log(`Flushing ${events.length} events...`);
|
|
108
|
+
try {
|
|
109
|
+
// Send batch and capture response
|
|
110
|
+
const batchResponse = await this.sendBatchCallback(events);
|
|
111
|
+
|
|
112
|
+
// Handle partial batch success/failure at event level
|
|
113
|
+
await this.handleBatchResponse(events, batchResponse);
|
|
114
|
+
Logger.log(`Batch sent: ${batchResponse.processedCount || events.length} succeeded, ${batchResponse.failedCount || 0} failed`);
|
|
115
|
+
|
|
116
|
+
// Return batch response (contains results for each event)
|
|
117
|
+
return batchResponse;
|
|
118
|
+
} catch (error) {
|
|
119
|
+
// Network error or complete batch failure - retry all events
|
|
120
|
+
Logger.error('Batch send failed (network/server error):', error);
|
|
121
|
+
await this.handleFailedBatch(events, error);
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
} finally {
|
|
125
|
+
this.isFlushing = null;
|
|
126
|
+
}
|
|
127
|
+
})();
|
|
128
|
+
return this.isFlushing;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Handle batch response with granular event-level success/failure
|
|
133
|
+
* Parses individual event results and handles each one appropriately
|
|
134
|
+
* @param events Events that were sent in the batch
|
|
135
|
+
* @param batchResponse Response from server with individual event results
|
|
136
|
+
*/
|
|
137
|
+
async handleBatchResponse(events, batchResponse) {
|
|
138
|
+
// If no results array, assume all succeeded (backward compatibility)
|
|
139
|
+
if (!batchResponse.results || !Array.isArray(batchResponse.results)) {
|
|
140
|
+
Logger.warn('No individual results in batch response, marking all as sent');
|
|
141
|
+
const eventIds = events.map(e => e.id);
|
|
142
|
+
await this.queueManager.markAsSent(eventIds);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
const successfulEventIds = [];
|
|
146
|
+
const failedEvents = [];
|
|
147
|
+
|
|
148
|
+
// Parse individual event results
|
|
149
|
+
for (const result of batchResponse.results) {
|
|
150
|
+
if (result.success) {
|
|
151
|
+
successfulEventIds.push(result.id);
|
|
152
|
+
} else {
|
|
153
|
+
// Find the full event object for failed events
|
|
154
|
+
const failedEvent = events.find(e => e.id === result.id);
|
|
155
|
+
if (failedEvent) {
|
|
156
|
+
failedEvents.push(failedEvent);
|
|
157
|
+
Logger.warn(`Event ${result.id} failed: ${result.error || 'Unknown error'}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Mark successful events as sent and delete from queue
|
|
163
|
+
if (successfulEventIds.length > 0) {
|
|
164
|
+
await this.queueManager.markAsSent(successfulEventIds);
|
|
165
|
+
Logger.log(`Successfully sent ${successfulEventIds.length} events`);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Handle failed events with retry logic (individual events, not entire batch)
|
|
169
|
+
if (failedEvents.length > 0) {
|
|
170
|
+
Logger.warn(`${failedEvents.length} events failed, will retry individually`);
|
|
171
|
+
for (const failedEvent of failedEvents) {
|
|
172
|
+
const newRetryCount = (failedEvent.retryCount || 0) + 1;
|
|
173
|
+
await this.queueManager.markAsFailed([failedEvent.id], newRetryCount);
|
|
174
|
+
if (newRetryCount >= this.config.maxRetries) {
|
|
175
|
+
Logger.error(`Event ${failedEvent.id} reached max retries (${this.config.maxRetries}). Marking as permanently failed.`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Schedule a retry flush for failed events (only if some haven't exceeded max retries)
|
|
180
|
+
const retriableEvents = failedEvents.filter(e => (e.retryCount || 0) + 1 < this.config.maxRetries);
|
|
181
|
+
if (retriableEvents.length > 0) {
|
|
182
|
+
const retryCount = (retriableEvents[0]?.retryCount || 0) + 1;
|
|
183
|
+
const retryDelay = this.config.retryBaseDelay * Math.pow(2, retryCount - 1);
|
|
184
|
+
Logger.log(`Scheduling retry for ${retriableEvents.length} failed events in ${retryDelay}ms (retry ${retryCount}/${this.config.maxRetries})`);
|
|
185
|
+
const timeoutId = setTimeout(() => {
|
|
186
|
+
this.flush(false);
|
|
187
|
+
this.retryTimeouts.delete('retry');
|
|
188
|
+
}, retryDelay);
|
|
189
|
+
this.retryTimeouts.set('retry', timeoutId);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Handle failed batch with retry logic (entire batch failed due to network/server error)
|
|
196
|
+
* Implements exponential backoff: 2s, 4s, 8s, 16s, 32s
|
|
197
|
+
* @param events Events that failed to send
|
|
198
|
+
* @param error Error that occurred
|
|
199
|
+
*/
|
|
200
|
+
async handleFailedBatch(events, _error) {
|
|
201
|
+
// Increment retry count for all events
|
|
202
|
+
const newRetryCount = (events[0]?.retryCount || 0) + 1;
|
|
203
|
+
const eventIds = events.map(e => e.id);
|
|
204
|
+
|
|
205
|
+
// Mark events as failed with updated retry count
|
|
206
|
+
await this.queueManager.markAsFailed(eventIds, newRetryCount);
|
|
207
|
+
if (newRetryCount >= this.config.maxRetries) {
|
|
208
|
+
Logger.error(`Max retries (${this.config.maxRetries}) reached for ${events.length} events. Marking as permanently failed.`);
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Calculate exponential backoff delay
|
|
213
|
+
const retryDelay = this.config.retryBaseDelay * Math.pow(2, newRetryCount - 1);
|
|
214
|
+
Logger.log(`Scheduling retry ${newRetryCount}/${this.config.maxRetries} in ${retryDelay}ms`);
|
|
215
|
+
|
|
216
|
+
// Schedule retry
|
|
217
|
+
const timeoutId = setTimeout(() => {
|
|
218
|
+
this.flush(false);
|
|
219
|
+
this.retryTimeouts.delete('retry');
|
|
220
|
+
}, retryDelay);
|
|
221
|
+
this.retryTimeouts.set('retry', timeoutId);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Check if flush is needed based on queue size
|
|
226
|
+
* Called after each event is enqueued
|
|
227
|
+
*/
|
|
228
|
+
async checkFlushNeeded() {
|
|
229
|
+
try {
|
|
230
|
+
const queueSize = await this.queueManager.getQueueSize();
|
|
231
|
+
if (queueSize >= this.config.batchSize) {
|
|
232
|
+
Logger.log(`Queue size (${queueSize}) reached batch size, triggering flush`);
|
|
233
|
+
this.flush(false);
|
|
234
|
+
}
|
|
235
|
+
} catch (error) {
|
|
236
|
+
Logger.error('Error checking flush needed:', error);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=FlushManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AppState","Logger","FlushManager","flushTimer","isFlushing","appStateSubscription","retryTimeouts","Map","constructor","queueManager","networkMonitor","config","sendBatchCallback","start","log","setInterval","flush","flushInterval","addEventListener","nextAppState","addListener","isOnline","stop","clearInterval","remove","forEach","timeout","clearTimeout","clear","force","isConnected","events","dequeue","batchSize","length","batchResponse","handleBatchResponse","processedCount","failedCount","error","handleFailedBatch","results","Array","isArray","warn","eventIds","map","e","id","markAsSent","successfulEventIds","failedEvents","result","success","push","failedEvent","find","newRetryCount","retryCount","markAsFailed","maxRetries","retriableEvents","filter","retryDelay","retryBaseDelay","Math","pow","timeoutId","setTimeout","delete","set","_error","checkFlushNeeded","queueSize","getQueueSize"],"sourceRoot":"../../../src","sources":["core/FlushManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NetInfo from '@react-native-community/netinfo';
|
|
4
|
+
import Logger from "../utils/Logger.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* NetworkMonitor
|
|
8
|
+
* Monitors network connectivity status
|
|
9
|
+
* Notifies when connection status changes
|
|
10
|
+
*/
|
|
11
|
+
export class NetworkMonitor {
|
|
12
|
+
isOnline = true;
|
|
13
|
+
unsubscribe = null;
|
|
14
|
+
listeners = new Set();
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Start monitoring network state
|
|
18
|
+
*/
|
|
19
|
+
start() {
|
|
20
|
+
if (this.unsubscribe) {
|
|
21
|
+
Logger.warn('NetworkMonitor already started');
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Subscribe to network state changes
|
|
26
|
+
this.unsubscribe = NetInfo.addEventListener(state => {
|
|
27
|
+
const wasOnline = this.isOnline;
|
|
28
|
+
this.isOnline = state.isConnected ?? false;
|
|
29
|
+
Logger.log(`Network state changed: ${wasOnline ? 'Online' : 'Offline'} → ${this.isOnline ? 'Online' : 'Offline'}`);
|
|
30
|
+
|
|
31
|
+
// Notify listeners if status changed
|
|
32
|
+
if (wasOnline !== this.isOnline) {
|
|
33
|
+
this.notifyListeners();
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
// Get initial state
|
|
38
|
+
NetInfo.fetch().then(state => {
|
|
39
|
+
this.isOnline = state.isConnected ?? false;
|
|
40
|
+
Logger.log(`Initial network state: ${this.isOnline ? 'Online' : 'Offline'}`);
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Stop monitoring network state
|
|
46
|
+
*/
|
|
47
|
+
stop() {
|
|
48
|
+
if (this.unsubscribe) {
|
|
49
|
+
this.unsubscribe();
|
|
50
|
+
this.unsubscribe = null;
|
|
51
|
+
Logger.log('NetworkMonitor stopped');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Check if currently connected to network
|
|
57
|
+
* @returns true if connected, false otherwise
|
|
58
|
+
*/
|
|
59
|
+
isConnected() {
|
|
60
|
+
return this.isOnline;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Add listener for connection state changes
|
|
65
|
+
* @param callback Function called when connection state changes
|
|
66
|
+
*/
|
|
67
|
+
addListener(callback) {
|
|
68
|
+
this.listeners.add(callback);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Remove listener
|
|
73
|
+
* @param callback Listener to remove
|
|
74
|
+
*/
|
|
75
|
+
removeListener(callback) {
|
|
76
|
+
this.listeners.delete(callback);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Notify all listeners of connection state change
|
|
81
|
+
*/
|
|
82
|
+
notifyListeners() {
|
|
83
|
+
this.listeners.forEach(callback => {
|
|
84
|
+
try {
|
|
85
|
+
callback(this.isOnline);
|
|
86
|
+
} catch (error) {
|
|
87
|
+
Logger.error('Error in network listener:', error);
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=NetworkMonitor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["NetInfo","Logger","NetworkMonitor","isOnline","unsubscribe","listeners","Set","start","warn","addEventListener","state","wasOnline","isConnected","log","notifyListeners","fetch","then","stop","addListener","callback","add","removeListener","delete","forEach","error"],"sourceRoot":"../../../src","sources":["core/NetworkMonitor.ts"],"mappings":";;AAAA,OAAOA,OAAO,MAGP,iCAAiC;AACxC,OAAOC,MAAM,MAAM,oBAAiB;;AAEpC;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,CAAC;EAClBC,QAAQ,GAAY,IAAI;EACxBC,WAAW,GAA+B,IAAI;EAC9CC,SAAS,GAAqC,IAAIC,GAAG,CAAC,CAAC;;EAE/D;AACF;AACA;EACEC,KAAKA,CAAA,EAAS;IACZ,IAAI,IAAI,CAACH,WAAW,EAAE;MACpBH,MAAM,CAACO,IAAI,CAAC,gCAAgC,CAAC;MAC7C;IACF;;IAEA;IACA,IAAI,CAACJ,WAAW,GAAGJ,OAAO,CAACS,gBAAgB,CAAEC,KAAmB,IAAK;MACnE,MAAMC,SAAS,GAAG,IAAI,CAACR,QAAQ;MAC/B,IAAI,CAACA,QAAQ,GAAGO,KAAK,CAACE,WAAW,IAAI,KAAK;MAE1CX,MAAM,CAACY,GAAG,CACR,0BAA0BF,SAAS,GAAG,QAAQ,GAAG,SAAS,MAAM,IAAI,CAACR,QAAQ,GAAG,QAAQ,GAAG,SAAS,EACtG,CAAC;;MAED;MACA,IAAIQ,SAAS,KAAK,IAAI,CAACR,QAAQ,EAAE;QAC/B,IAAI,CAACW,eAAe,CAAC,CAAC;MACxB;IACF,CAAC,CAAC;;IAEF;IACAd,OAAO,CAACe,KAAK,CAAC,CAAC,CAACC,IAAI,CAAEN,KAAmB,IAAK;MAC5C,IAAI,CAACP,QAAQ,GAAGO,KAAK,CAACE,WAAW,IAAI,KAAK;MAC1CX,MAAM,CAACY,GAAG,CACR,0BAA0B,IAAI,CAACV,QAAQ,GAAG,QAAQ,GAAG,SAAS,EAChE,CAAC;IACH,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACEc,IAAIA,CAAA,EAAS;IACX,IAAI,IAAI,CAACb,WAAW,EAAE;MACpB,IAAI,CAACA,WAAW,CAAC,CAAC;MAClB,IAAI,CAACA,WAAW,GAAG,IAAI;MACvBH,MAAM,CAACY,GAAG,CAAC,wBAAwB,CAAC;IACtC;EACF;;EAEA;AACF;AACA;AACA;EACED,WAAWA,CAAA,EAAY;IACrB,OAAO,IAAI,CAACT,QAAQ;EACtB;;EAEA;AACF;AACA;AACA;EACEe,WAAWA,CAACC,QAAqC,EAAQ;IACvD,IAAI,CAACd,SAAS,CAACe,GAAG,CAACD,QAAQ,CAAC;EAC9B;;EAEA;AACF;AACA;AACA;EACEE,cAAcA,CAACF,QAAqC,EAAQ;IAC1D,IAAI,CAACd,SAAS,CAACiB,MAAM,CAACH,QAAQ,CAAC;EACjC;;EAEA;AACF;AACA;EACUL,eAAeA,CAAA,EAAS;IAC9B,IAAI,CAACT,SAAS,CAACkB,OAAO,CAAEJ,QAAQ,IAAK;MACnC,IAAI;QACFA,QAAQ,CAAC,IAAI,CAAChB,QAAQ,CAAC;MACzB,CAAC,CAAC,OAAOqB,KAAK,EAAE;QACdvB,MAAM,CAACuB,KAAK,CAAC,4BAA4B,EAAEA,KAAK,CAAC;MACnD;IACF,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|