@bota-dev/react-native-sdk 0.0.2
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/README.md +279 -0
- package/lib/commonjs/BotaClient.js +223 -0
- package/lib/commonjs/BotaClient.js.map +1 -0
- package/lib/commonjs/ble/BleManager.js +494 -0
- package/lib/commonjs/ble/BleManager.js.map +1 -0
- package/lib/commonjs/ble/constants.js +166 -0
- package/lib/commonjs/ble/constants.js.map +1 -0
- package/lib/commonjs/ble/index.js +54 -0
- package/lib/commonjs/ble/index.js.map +1 -0
- package/lib/commonjs/ble/parsers.js +345 -0
- package/lib/commonjs/ble/parsers.js.map +1 -0
- package/lib/commonjs/index.js +81 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/managers/DeviceManager.js +437 -0
- package/lib/commonjs/managers/DeviceManager.js.map +1 -0
- package/lib/commonjs/managers/OTAManager.js +227 -0
- package/lib/commonjs/managers/OTAManager.js.map +1 -0
- package/lib/commonjs/managers/RecordingManager.js +384 -0
- package/lib/commonjs/managers/RecordingManager.js.map +1 -0
- package/lib/commonjs/managers/index.js +27 -0
- package/lib/commonjs/managers/index.js.map +1 -0
- package/lib/commonjs/models/Device.js +2 -0
- package/lib/commonjs/models/Device.js.map +1 -0
- package/lib/commonjs/models/Recording.js +2 -0
- package/lib/commonjs/models/Recording.js.map +1 -0
- package/lib/commonjs/models/Status.js +6 -0
- package/lib/commonjs/models/Status.js.map +1 -0
- package/lib/commonjs/models/index.js +39 -0
- package/lib/commonjs/models/index.js.map +1 -0
- package/lib/commonjs/protocol/ProtocolHandler.js +343 -0
- package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -0
- package/lib/commonjs/protocol/index.js +13 -0
- package/lib/commonjs/protocol/index.js.map +1 -0
- package/lib/commonjs/storage/StorageManager.js +333 -0
- package/lib/commonjs/storage/StorageManager.js.map +1 -0
- package/lib/commonjs/storage/index.js +19 -0
- package/lib/commonjs/storage/index.js.map +1 -0
- package/lib/commonjs/upload/S3Uploader.js +133 -0
- package/lib/commonjs/upload/S3Uploader.js.map +1 -0
- package/lib/commonjs/upload/UploadQueue.js +280 -0
- package/lib/commonjs/upload/UploadQueue.js.map +1 -0
- package/lib/commonjs/upload/index.js +20 -0
- package/lib/commonjs/upload/index.js.map +1 -0
- package/lib/commonjs/utils/errors.js +187 -0
- package/lib/commonjs/utils/errors.js.map +1 -0
- package/lib/commonjs/utils/index.js +40 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/utils/logger.js +135 -0
- package/lib/commonjs/utils/logger.js.map +1 -0
- package/lib/commonjs/utils/retry.js +160 -0
- package/lib/commonjs/utils/retry.js.map +1 -0
- package/lib/module/BotaClient.js +216 -0
- package/lib/module/BotaClient.js.map +1 -0
- package/lib/module/ble/BleManager.js +484 -0
- package/lib/module/ble/BleManager.js.map +1 -0
- package/lib/module/ble/constants.js +159 -0
- package/lib/module/ble/constants.js.map +1 -0
- package/lib/module/ble/index.js +8 -0
- package/lib/module/ble/index.js.map +1 -0
- package/lib/module/ble/parsers.js +328 -0
- package/lib/module/ble/parsers.js.map +1 -0
- package/lib/module/index.js +22 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/managers/DeviceManager.js +429 -0
- package/lib/module/managers/DeviceManager.js.map +1 -0
- package/lib/module/managers/OTAManager.js +219 -0
- package/lib/module/managers/OTAManager.js.map +1 -0
- package/lib/module/managers/RecordingManager.js +376 -0
- package/lib/module/managers/RecordingManager.js.map +1 -0
- package/lib/module/managers/index.js +8 -0
- package/lib/module/managers/index.js.map +1 -0
- package/lib/module/models/Device.js +2 -0
- package/lib/module/models/Device.js.map +1 -0
- package/lib/module/models/Recording.js +2 -0
- package/lib/module/models/Recording.js.map +1 -0
- package/lib/module/models/Status.js +2 -0
- package/lib/module/models/Status.js.map +1 -0
- package/lib/module/models/index.js +8 -0
- package/lib/module/models/index.js.map +1 -0
- package/lib/module/protocol/ProtocolHandler.js +336 -0
- package/lib/module/protocol/ProtocolHandler.js.map +1 -0
- package/lib/module/protocol/index.js +6 -0
- package/lib/module/protocol/index.js.map +1 -0
- package/lib/module/storage/StorageManager.js +324 -0
- package/lib/module/storage/StorageManager.js.map +1 -0
- package/lib/module/storage/index.js +6 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/upload/S3Uploader.js +126 -0
- package/lib/module/upload/S3Uploader.js.map +1 -0
- package/lib/module/upload/UploadQueue.js +272 -0
- package/lib/module/upload/UploadQueue.js.map +1 -0
- package/lib/module/upload/index.js +7 -0
- package/lib/module/upload/index.js.map +1 -0
- package/lib/module/utils/errors.js +173 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/index.js +8 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/logger.js +129 -0
- package/lib/module/utils/logger.js.map +1 -0
- package/lib/module/utils/retry.js +149 -0
- package/lib/module/utils/retry.js.map +1 -0
- package/lib/typescript/src/BotaClient.d.ts +77 -0
- package/lib/typescript/src/BotaClient.d.ts.map +1 -0
- package/lib/typescript/src/ble/BleManager.d.ts +111 -0
- package/lib/typescript/src/ble/BleManager.d.ts.map +1 -0
- package/lib/typescript/src/ble/constants.d.ts +111 -0
- package/lib/typescript/src/ble/constants.d.ts.map +1 -0
- package/lib/typescript/src/ble/index.d.ts +7 -0
- package/lib/typescript/src/ble/index.d.ts.map +1 -0
- package/lib/typescript/src/ble/parsers.d.ts +100 -0
- package/lib/typescript/src/ble/parsers.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +16 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts +84 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/OTAManager.d.ts +78 -0
- package/lib/typescript/src/managers/OTAManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts +90 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/index.d.ts +7 -0
- package/lib/typescript/src/managers/index.d.ts.map +1 -0
- package/lib/typescript/src/models/Device.d.ts +139 -0
- package/lib/typescript/src/models/Device.d.ts.map +1 -0
- package/lib/typescript/src/models/Recording.d.ts +110 -0
- package/lib/typescript/src/models/Recording.d.ts.map +1 -0
- package/lib/typescript/src/models/Status.d.ts +104 -0
- package/lib/typescript/src/models/Status.d.ts.map +1 -0
- package/lib/typescript/src/models/index.d.ts +7 -0
- package/lib/typescript/src/models/index.d.ts.map +1 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts +69 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -0
- package/lib/typescript/src/protocol/index.d.ts +5 -0
- package/lib/typescript/src/protocol/index.d.ts.map +1 -0
- package/lib/typescript/src/storage/StorageManager.d.ts +116 -0
- package/lib/typescript/src/storage/StorageManager.d.ts.map +1 -0
- package/lib/typescript/src/storage/index.d.ts +5 -0
- package/lib/typescript/src/storage/index.d.ts.map +1 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts +38 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts.map +1 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts +95 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts.map +1 -0
- package/lib/typescript/src/upload/index.d.ts +6 -0
- package/lib/typescript/src/upload/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/errors.d.ts +82 -0
- package/lib/typescript/src/utils/errors.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +7 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/logger.d.ts +68 -0
- package/lib/typescript/src/utils/logger.d.ts.map +1 -0
- package/lib/typescript/src/utils/retry.d.ts +53 -0
- package/lib/typescript/src/utils/retry.d.ts.map +1 -0
- package/package.json +95 -0
- package/src/BotaClient.ts +238 -0
- package/src/ble/BleManager.ts +573 -0
- package/src/ble/constants.ts +158 -0
- package/src/ble/index.ts +7 -0
- package/src/ble/parsers.ts +395 -0
- package/src/index.ts +64 -0
- package/src/managers/DeviceManager.ts +545 -0
- package/src/managers/OTAManager.ts +263 -0
- package/src/managers/RecordingManager.ts +434 -0
- package/src/managers/index.ts +12 -0
- package/src/models/Device.ts +164 -0
- package/src/models/Recording.ts +123 -0
- package/src/models/Status.ts +126 -0
- package/src/models/index.ts +7 -0
- package/src/protocol/ProtocolHandler.ts +459 -0
- package/src/protocol/index.ts +5 -0
- package/src/storage/StorageManager.ts +343 -0
- package/src/storage/index.ts +5 -0
- package/src/upload/S3Uploader.ts +164 -0
- package/src/upload/UploadQueue.ts +310 -0
- package/src/upload/index.ts +6 -0
- package/src/utils/errors.ts +310 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/logger.ts +137 -0
- package/src/utils/retry.ts +177 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.UploadQueue = void 0;
|
|
7
|
+
var _eventemitter = _interopRequireDefault(require("eventemitter3"));
|
|
8
|
+
var _StorageManager = require("../storage/StorageManager");
|
|
9
|
+
var _S3Uploader = require("./S3Uploader");
|
|
10
|
+
var _retry = require("../utils/retry");
|
|
11
|
+
var _logger = require("../utils/logger");
|
|
12
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
/**
|
|
14
|
+
* Upload Queue - Manages persistent upload queue with retry logic
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
const log = _logger.logger.tag('UploadQueue');
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Events emitted by UploadQueue
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Upload Queue configuration
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Upload Queue class
|
|
29
|
+
*/
|
|
30
|
+
class UploadQueue extends _eventemitter.default {
|
|
31
|
+
activeUploads = new Set();
|
|
32
|
+
isPaused = false;
|
|
33
|
+
isProcessing = false;
|
|
34
|
+
abortControllers = new Map();
|
|
35
|
+
constructor(storage, config = {}) {
|
|
36
|
+
super();
|
|
37
|
+
this.storage = storage;
|
|
38
|
+
this.uploader = new _S3Uploader.S3Uploader();
|
|
39
|
+
this.maxConcurrent = config.maxConcurrent ?? 2;
|
|
40
|
+
this.maxRetries = config.maxRetries ?? 6;
|
|
41
|
+
if (config.autoStart !== false) {
|
|
42
|
+
this.processQueue();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Add a new upload task to the queue
|
|
48
|
+
*/
|
|
49
|
+
async enqueue(params) {
|
|
50
|
+
const task = {
|
|
51
|
+
id: (0, _StorageManager.generateTaskId)(),
|
|
52
|
+
recordingId: params.recordingId,
|
|
53
|
+
deviceId: params.deviceId,
|
|
54
|
+
localPath: params.localPath,
|
|
55
|
+
uploadUrl: params.uploadUrl,
|
|
56
|
+
uploadToken: params.uploadToken,
|
|
57
|
+
completeUrl: params.completeUrl,
|
|
58
|
+
status: 'pending',
|
|
59
|
+
retryCount: 0,
|
|
60
|
+
createdAt: new Date(),
|
|
61
|
+
updatedAt: new Date()
|
|
62
|
+
};
|
|
63
|
+
await this.storage.addUploadTask(task);
|
|
64
|
+
this.emit('taskAdded', task);
|
|
65
|
+
log.info('Task enqueued', {
|
|
66
|
+
taskId: task.id,
|
|
67
|
+
recordingId: task.recordingId
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Trigger queue processing
|
|
71
|
+
this.processQueue();
|
|
72
|
+
return task;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Cancel a specific upload task
|
|
77
|
+
*/
|
|
78
|
+
async cancel(taskId) {
|
|
79
|
+
log.info('Cancelling task', {
|
|
80
|
+
taskId
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
// Abort if currently uploading
|
|
84
|
+
const controller = this.abortControllers.get(taskId);
|
|
85
|
+
if (controller) {
|
|
86
|
+
controller.abort();
|
|
87
|
+
this.abortControllers.delete(taskId);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Remove from active uploads
|
|
91
|
+
this.activeUploads.delete(taskId);
|
|
92
|
+
|
|
93
|
+
// Remove from queue
|
|
94
|
+
await this.storage.removeUploadTask(taskId);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Cancel all uploads
|
|
99
|
+
*/
|
|
100
|
+
async cancelAll() {
|
|
101
|
+
log.info('Cancelling all uploads');
|
|
102
|
+
|
|
103
|
+
// Abort all active uploads
|
|
104
|
+
for (const controller of this.abortControllers.values()) {
|
|
105
|
+
controller.abort();
|
|
106
|
+
}
|
|
107
|
+
this.abortControllers.clear();
|
|
108
|
+
this.activeUploads.clear();
|
|
109
|
+
|
|
110
|
+
// Clear queue
|
|
111
|
+
await this.storage.clearAllTasks();
|
|
112
|
+
this.emit('queueEmpty');
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Pause queue processing
|
|
117
|
+
*/
|
|
118
|
+
pause() {
|
|
119
|
+
log.info('Pausing upload queue');
|
|
120
|
+
this.isPaused = true;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Resume queue processing
|
|
125
|
+
*/
|
|
126
|
+
resume() {
|
|
127
|
+
log.info('Resuming upload queue');
|
|
128
|
+
this.isPaused = false;
|
|
129
|
+
this.processQueue();
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Retry all failed uploads
|
|
134
|
+
*/
|
|
135
|
+
async retryFailed() {
|
|
136
|
+
log.info('Retrying failed uploads');
|
|
137
|
+
const failedTasks = this.storage.getFailedUploads();
|
|
138
|
+
for (const task of failedTasks) {
|
|
139
|
+
if (task.retryCount < this.maxRetries) {
|
|
140
|
+
await this.storage.updateTaskStatus(task.id, 'pending');
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
this.processQueue();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Get all pending tasks
|
|
148
|
+
*/
|
|
149
|
+
getPendingTasks() {
|
|
150
|
+
return this.storage.getPendingUploads();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Get all tasks
|
|
155
|
+
*/
|
|
156
|
+
getAllTasks() {
|
|
157
|
+
return this.storage.getUploadQueue();
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Process the upload queue
|
|
162
|
+
*/
|
|
163
|
+
async processQueue() {
|
|
164
|
+
if (this.isPaused || this.isProcessing) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
this.isProcessing = true;
|
|
168
|
+
try {
|
|
169
|
+
while (!this.isPaused) {
|
|
170
|
+
// Check if we can start more uploads
|
|
171
|
+
if (this.activeUploads.size >= this.maxConcurrent) {
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Get next pending task
|
|
176
|
+
const pendingTasks = this.storage.getPendingUploads();
|
|
177
|
+
const nextTask = pendingTasks.find(t => !this.activeUploads.has(t.id) && t.status === 'pending');
|
|
178
|
+
if (!nextTask) {
|
|
179
|
+
// No more tasks to process
|
|
180
|
+
if (this.activeUploads.size === 0) {
|
|
181
|
+
this.emit('queueEmpty');
|
|
182
|
+
}
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Start upload in background
|
|
187
|
+
this.processTask(nextTask);
|
|
188
|
+
}
|
|
189
|
+
} finally {
|
|
190
|
+
this.isProcessing = false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Process a single upload task
|
|
196
|
+
*/
|
|
197
|
+
async processTask(task) {
|
|
198
|
+
this.activeUploads.add(task.id);
|
|
199
|
+
const abortController = new AbortController();
|
|
200
|
+
this.abortControllers.set(task.id, abortController);
|
|
201
|
+
try {
|
|
202
|
+
// Update status to uploading
|
|
203
|
+
await this.storage.updateTaskStatus(task.id, 'uploading');
|
|
204
|
+
this.emit('taskUpdated', {
|
|
205
|
+
...task,
|
|
206
|
+
status: 'uploading'
|
|
207
|
+
});
|
|
208
|
+
log.info('Starting upload', {
|
|
209
|
+
taskId: task.id,
|
|
210
|
+
recordingId: task.recordingId
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
// Load the audio data
|
|
214
|
+
const audioData = await this.storage.loadRecordingData(task.localPath);
|
|
215
|
+
|
|
216
|
+
// Upload to S3
|
|
217
|
+
await this.uploader.upload(audioData, task.uploadUrl, {
|
|
218
|
+
onProgress: progress => {
|
|
219
|
+
this.emit('uploadProgress', task.id, progress);
|
|
220
|
+
},
|
|
221
|
+
abortSignal: abortController.signal
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
// Notify completion
|
|
225
|
+
await this.uploader.notifyCompletion(task.completeUrl, task.recordingId, task.uploadToken);
|
|
226
|
+
|
|
227
|
+
// Mark as completed
|
|
228
|
+
await this.storage.updateTaskStatus(task.id, 'completed');
|
|
229
|
+
|
|
230
|
+
// Clean up local file
|
|
231
|
+
await this.storage.deleteRecordingData(task.localPath);
|
|
232
|
+
log.info('Upload completed', {
|
|
233
|
+
taskId: task.id,
|
|
234
|
+
recordingId: task.recordingId
|
|
235
|
+
});
|
|
236
|
+
this.emit('taskCompleted', task.id, task.recordingId);
|
|
237
|
+
} catch (error) {
|
|
238
|
+
const err = error;
|
|
239
|
+
log.error('Upload failed', err, {
|
|
240
|
+
taskId: task.id
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
// Check if we should retry
|
|
244
|
+
if (task.retryCount < this.maxRetries && (0, _retry.shouldContinueRetrying)(task.createdAt)) {
|
|
245
|
+
await this.storage.incrementRetryCount(task.id);
|
|
246
|
+
await this.storage.updateTaskStatus(task.id, 'pending', err.message);
|
|
247
|
+
log.info('Task will be retried', {
|
|
248
|
+
taskId: task.id,
|
|
249
|
+
retryCount: task.retryCount + 1
|
|
250
|
+
});
|
|
251
|
+
} else {
|
|
252
|
+
await this.storage.updateTaskStatus(task.id, 'failed', err.message);
|
|
253
|
+
this.emit('taskFailed', task.id, err);
|
|
254
|
+
}
|
|
255
|
+
} finally {
|
|
256
|
+
this.activeUploads.delete(task.id);
|
|
257
|
+
this.abortControllers.delete(task.id);
|
|
258
|
+
|
|
259
|
+
// Process next task
|
|
260
|
+
this.processQueue();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Clean up resources
|
|
266
|
+
*/
|
|
267
|
+
destroy() {
|
|
268
|
+
this.isPaused = true;
|
|
269
|
+
|
|
270
|
+
// Abort all active uploads
|
|
271
|
+
for (const controller of this.abortControllers.values()) {
|
|
272
|
+
controller.abort();
|
|
273
|
+
}
|
|
274
|
+
this.abortControllers.clear();
|
|
275
|
+
this.activeUploads.clear();
|
|
276
|
+
this.removeAllListeners();
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
exports.UploadQueue = UploadQueue;
|
|
280
|
+
//# sourceMappingURL=UploadQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_eventemitter","_interopRequireDefault","require","_StorageManager","_S3Uploader","_retry","_logger","e","__esModule","default","log","logger","tag","UploadQueue","EventEmitter","activeUploads","Set","isPaused","isProcessing","abortControllers","Map","constructor","storage","config","uploader","S3Uploader","maxConcurrent","maxRetries","autoStart","processQueue","enqueue","params","task","id","generateTaskId","recordingId","deviceId","localPath","uploadUrl","uploadToken","completeUrl","status","retryCount","createdAt","Date","updatedAt","addUploadTask","emit","info","taskId","cancel","controller","get","abort","delete","removeUploadTask","cancelAll","values","clear","clearAllTasks","pause","resume","retryFailed","failedTasks","getFailedUploads","updateTaskStatus","getPendingTasks","getPendingUploads","getAllTasks","getUploadQueue","size","pendingTasks","nextTask","find","t","has","processTask","add","abortController","AbortController","set","audioData","loadRecordingData","upload","onProgress","progress","abortSignal","signal","notifyCompletion","deleteRecordingData","error","err","shouldContinueRetrying","incrementRetryCount","message","destroy","removeAllListeners","exports"],"sourceRoot":"../../../src","sources":["upload/UploadQueue.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "S3Uploader", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _S3Uploader.S3Uploader;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "UploadQueue", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _UploadQueue.UploadQueue;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _S3Uploader = require("./S3Uploader");
|
|
19
|
+
var _UploadQueue = require("./UploadQueue");
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_S3Uploader","require","_UploadQueue"],"sourceRoot":"../../../src","sources":["upload/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAIA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.UploadError = exports.TransferError = exports.SdkError = exports.ProvisioningError = exports.DeviceError = exports.BotaError = exports.BluetoothError = void 0;
|
|
7
|
+
exports.isBotaError = isBotaError;
|
|
8
|
+
/**
|
|
9
|
+
* Custom error types for the Bota SDK
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Base error class for all Bota SDK errors
|
|
14
|
+
*/
|
|
15
|
+
class BotaError extends Error {
|
|
16
|
+
constructor(message, code, cause) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.code = code;
|
|
19
|
+
this.cause = cause;
|
|
20
|
+
this.name = 'BotaError';
|
|
21
|
+
Object.setPrototypeOf(this, BotaError.prototype);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Bluetooth-related errors
|
|
27
|
+
*/
|
|
28
|
+
exports.BotaError = BotaError;
|
|
29
|
+
class BluetoothError extends BotaError {
|
|
30
|
+
constructor(message, code, cause) {
|
|
31
|
+
super(message, code, cause);
|
|
32
|
+
this.name = 'BluetoothError';
|
|
33
|
+
Object.setPrototypeOf(this, BluetoothError.prototype);
|
|
34
|
+
}
|
|
35
|
+
static unavailable() {
|
|
36
|
+
return new BluetoothError('Bluetooth is not available on this device', 'BLUETOOTH_UNAVAILABLE');
|
|
37
|
+
}
|
|
38
|
+
static unauthorized() {
|
|
39
|
+
return new BluetoothError('Bluetooth permission not granted', 'BLUETOOTH_UNAUTHORIZED');
|
|
40
|
+
}
|
|
41
|
+
static poweredOff() {
|
|
42
|
+
return new BluetoothError('Bluetooth is powered off', 'BLUETOOTH_OFF');
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Device-related errors
|
|
48
|
+
*/
|
|
49
|
+
exports.BluetoothError = BluetoothError;
|
|
50
|
+
class DeviceError extends BotaError {
|
|
51
|
+
constructor(message, code, deviceId, cause) {
|
|
52
|
+
super(message, code, cause);
|
|
53
|
+
this.deviceId = deviceId;
|
|
54
|
+
this.name = 'DeviceError';
|
|
55
|
+
Object.setPrototypeOf(this, DeviceError.prototype);
|
|
56
|
+
}
|
|
57
|
+
static notFound(deviceId) {
|
|
58
|
+
return new DeviceError(`Device ${deviceId} not found`, 'DEVICE_NOT_FOUND', deviceId);
|
|
59
|
+
}
|
|
60
|
+
static connectionFailed(deviceId, cause) {
|
|
61
|
+
return new DeviceError(`Failed to connect to device ${deviceId}`, 'CONNECTION_FAILED', deviceId, cause);
|
|
62
|
+
}
|
|
63
|
+
static connectionLost(deviceId, during) {
|
|
64
|
+
const message = during ? `Connection to device ${deviceId} lost during ${during}` : `Connection to device ${deviceId} lost`;
|
|
65
|
+
return new DeviceError(message, 'CONNECTION_LOST', deviceId);
|
|
66
|
+
}
|
|
67
|
+
static bondingFailed(deviceId, cause) {
|
|
68
|
+
return new DeviceError(`Bonding failed for device ${deviceId}`, 'BONDING_FAILED', deviceId, cause);
|
|
69
|
+
}
|
|
70
|
+
static notConnected(deviceId) {
|
|
71
|
+
return new DeviceError(`Device ${deviceId} is not connected`, 'NOT_CONNECTED', deviceId);
|
|
72
|
+
}
|
|
73
|
+
static alreadyConnected(deviceId) {
|
|
74
|
+
return new DeviceError(`Device ${deviceId} is already connected`, 'ALREADY_CONNECTED', deviceId);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Provisioning-related errors
|
|
80
|
+
*/
|
|
81
|
+
exports.DeviceError = DeviceError;
|
|
82
|
+
class ProvisioningError extends BotaError {
|
|
83
|
+
constructor(message, code, deviceId, cause) {
|
|
84
|
+
super(message, code, cause);
|
|
85
|
+
this.deviceId = deviceId;
|
|
86
|
+
this.name = 'ProvisioningError';
|
|
87
|
+
Object.setPrototypeOf(this, ProvisioningError.prototype);
|
|
88
|
+
}
|
|
89
|
+
static invalidToken(deviceId) {
|
|
90
|
+
return new ProvisioningError('Device rejected the token as invalid', 'INVALID_TOKEN', deviceId);
|
|
91
|
+
}
|
|
92
|
+
static storageError(deviceId) {
|
|
93
|
+
return new ProvisioningError('Device failed to store the token', 'STORAGE_ERROR', deviceId);
|
|
94
|
+
}
|
|
95
|
+
static chunkError(deviceId) {
|
|
96
|
+
return new ProvisioningError('Token chunk transfer failed', 'CHUNK_ERROR', deviceId);
|
|
97
|
+
}
|
|
98
|
+
static alreadyProvisioned(deviceId) {
|
|
99
|
+
return new ProvisioningError('Device is already provisioned', 'ALREADY_PROVISIONED', deviceId);
|
|
100
|
+
}
|
|
101
|
+
static timeout(deviceId) {
|
|
102
|
+
return new ProvisioningError('Provisioning timed out waiting for device response', 'PROVISIONING_TIMEOUT', deviceId);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Transfer-related errors
|
|
108
|
+
*/
|
|
109
|
+
exports.ProvisioningError = ProvisioningError;
|
|
110
|
+
class TransferError extends BotaError {
|
|
111
|
+
constructor(message, code, recordingUuid, cause) {
|
|
112
|
+
super(message, code, cause);
|
|
113
|
+
this.recordingUuid = recordingUuid;
|
|
114
|
+
this.name = 'TransferError';
|
|
115
|
+
Object.setPrototypeOf(this, TransferError.prototype);
|
|
116
|
+
}
|
|
117
|
+
static recordingNotFound(uuid) {
|
|
118
|
+
return new TransferError(`Recording ${uuid} not found on device`, 'RECORDING_NOT_FOUND', uuid);
|
|
119
|
+
}
|
|
120
|
+
static checksumMismatch(uuid) {
|
|
121
|
+
return new TransferError(`Checksum mismatch for recording ${uuid}`, 'CHECKSUM_MISMATCH', uuid);
|
|
122
|
+
}
|
|
123
|
+
static interrupted(uuid, cause) {
|
|
124
|
+
return new TransferError(`Transfer interrupted for recording ${uuid}`, 'TRANSFER_INTERRUPTED', uuid, cause);
|
|
125
|
+
}
|
|
126
|
+
static timeout(uuid) {
|
|
127
|
+
return new TransferError(`Transfer timed out for recording ${uuid}`, 'TRANSFER_TIMEOUT', uuid);
|
|
128
|
+
}
|
|
129
|
+
static deviceError(uuid, errorCode) {
|
|
130
|
+
return new TransferError(`Device error (code: ${errorCode}) during transfer of ${uuid}`, 'DEVICE_ERROR', uuid);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Upload-related errors
|
|
136
|
+
*/
|
|
137
|
+
exports.TransferError = TransferError;
|
|
138
|
+
class UploadError extends BotaError {
|
|
139
|
+
constructor(message, code, taskId, cause) {
|
|
140
|
+
super(message, code, cause);
|
|
141
|
+
this.taskId = taskId;
|
|
142
|
+
this.name = 'UploadError';
|
|
143
|
+
Object.setPrototypeOf(this, UploadError.prototype);
|
|
144
|
+
}
|
|
145
|
+
static urlExpired(taskId) {
|
|
146
|
+
return new UploadError('Upload URL has expired', 'URL_EXPIRED', taskId);
|
|
147
|
+
}
|
|
148
|
+
static networkUnavailable() {
|
|
149
|
+
return new UploadError('Network is not available', 'NETWORK_UNAVAILABLE');
|
|
150
|
+
}
|
|
151
|
+
static uploadFailed(taskId, cause) {
|
|
152
|
+
return new UploadError(`Upload failed for task ${taskId}`, 'UPLOAD_FAILED', taskId, cause);
|
|
153
|
+
}
|
|
154
|
+
static completionFailed(taskId, cause) {
|
|
155
|
+
return new UploadError(`Failed to notify completion for task ${taskId}`, 'COMPLETION_FAILED', taskId, cause);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* SDK state errors
|
|
161
|
+
*/
|
|
162
|
+
exports.UploadError = UploadError;
|
|
163
|
+
class SdkError extends BotaError {
|
|
164
|
+
constructor(message, code, cause) {
|
|
165
|
+
super(message, code, cause);
|
|
166
|
+
this.name = 'SdkError';
|
|
167
|
+
Object.setPrototypeOf(this, SdkError.prototype);
|
|
168
|
+
}
|
|
169
|
+
static notInitialized() {
|
|
170
|
+
return new SdkError('SDK has not been initialized. Call BotaClient.configure() first.', 'NOT_INITIALIZED');
|
|
171
|
+
}
|
|
172
|
+
static invalidState(expected, actual) {
|
|
173
|
+
return new SdkError(`Invalid state: expected ${expected}, got ${actual}`, 'INVALID_STATE');
|
|
174
|
+
}
|
|
175
|
+
static timeout(operation) {
|
|
176
|
+
return new SdkError(`Operation timed out: ${operation}`, 'TIMEOUT');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Type guard to check if an error is a BotaError
|
|
182
|
+
*/
|
|
183
|
+
exports.SdkError = SdkError;
|
|
184
|
+
function isBotaError(error) {
|
|
185
|
+
return error instanceof BotaError;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["BotaError","Error","constructor","message","code","cause","name","Object","setPrototypeOf","prototype","exports","BluetoothError","unavailable","unauthorized","poweredOff","DeviceError","deviceId","notFound","connectionFailed","connectionLost","during","bondingFailed","notConnected","alreadyConnected","ProvisioningError","invalidToken","storageError","chunkError","alreadyProvisioned","timeout","TransferError","recordingUuid","recordingNotFound","uuid","checksumMismatch","interrupted","deviceError","errorCode","UploadError","taskId","urlExpired","networkUnavailable","uploadFailed","completionFailed","SdkError","notInitialized","invalidState","expected","actual","operation","isBotaError","error"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
logger: true
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "logger", {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () {
|
|
12
|
+
return _logger.logger;
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
var _errors = require("./errors");
|
|
16
|
+
Object.keys(_errors).forEach(function (key) {
|
|
17
|
+
if (key === "default" || key === "__esModule") return;
|
|
18
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
19
|
+
if (key in exports && exports[key] === _errors[key]) return;
|
|
20
|
+
Object.defineProperty(exports, key, {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () {
|
|
23
|
+
return _errors[key];
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
var _logger = require("./logger");
|
|
28
|
+
var _retry = require("./retry");
|
|
29
|
+
Object.keys(_retry).forEach(function (key) {
|
|
30
|
+
if (key === "default" || key === "__esModule") return;
|
|
31
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
32
|
+
if (key in exports && exports[key] === _retry[key]) return;
|
|
33
|
+
Object.defineProperty(exports, key, {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
get: function () {
|
|
36
|
+
return _retry[key];
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_errors","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_logger","_retry"],"sourceRoot":"../../../src","sources":["utils/index.ts"],"mappings":";;;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,OAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,OAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,OAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAS,OAAA,GAAAb,OAAA;AACA,IAAAc,MAAA,GAAAd,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAY,MAAA,EAAAX,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAU,MAAA,CAAAV,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAE,MAAA,CAAAV,GAAA;IAAA;EAAA;AAAA","ignoreList":[]}
|