@bota.dev/react-native-app-sdk 2.0.0-beta.1 → 2.0.0-beta.11
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 +115 -4
- package/android/build.gradle +1 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevices.kt +22 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDiagnostics.kt +53 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogs.kt +16 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploads.kt +144 -14
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordings.kt +150 -29
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKEncryptedUploadV2Materials.kt +27 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKModule.kt +86 -3
- package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKPackage.kt +9 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/BotaUploadV2BackendModule.kt +66 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/NativeUpload.kt +400 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadHttp.kt +158 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadJournal.kt +112 -0
- package/android/src/main/java/dev/bota/sdk/reactnative/upload/UploadModels.kt +171 -0
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevicesTest.kt +35 -0
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogsTest.kt +33 -0
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploadsTest.kt +135 -6
- package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingsTest.kt +236 -10
- package/generated/codegen-contract.json +751 -32
- package/ios/BotaDeviceSDK.mm +114 -0
- package/ios/BotaDeviceSDKAppleBridge.swift +141 -4
- package/ios/BotaDeviceSDKAppleDevices.swift +11 -0
- package/ios/BotaDeviceSDKAppleDiagnostics.swift +40 -0
- package/ios/BotaDeviceSDKAppleLogs.swift +18 -0
- package/ios/BotaDeviceSDKAppleRecordingUploads.swift +138 -6
- package/ios/BotaDeviceSDKAppleRecordings.swift +113 -5
- package/ios/BotaDeviceSDKEncryptedUploadV2Materials.swift +40 -0
- package/ios/BotaUploadV2Backend.mm +49 -0
- package/ios/UploadBackend/BotaUploadV2BackendBridge.swift +98 -0
- package/ios/UploadBackend/UploadCoordinator.swift +84 -0
- package/ios/UploadBackend/UploadHTTP.swift +82 -0
- package/ios/UploadBackend/UploadJournal.swift +187 -0
- package/ios/UploadBackend/UploadModels.swift +273 -0
- package/ios/UploadBackend/UploadOperation.swift +391 -0
- package/lib/commonjs/BotaClient.js +16 -2
- package/lib/commonjs/BotaClient.js.map +1 -1
- package/lib/commonjs/ble/constants.js +5 -1
- package/lib/commonjs/ble/constants.js.map +1 -1
- package/lib/commonjs/ble/deviceDiagnostics.js +240 -0
- package/lib/commonjs/ble/deviceDiagnostics.js.map +1 -0
- package/lib/commonjs/client.js +183 -28
- package/lib/commonjs/client.js.map +1 -1
- package/lib/commonjs/clientPresence.js +26 -0
- package/lib/commonjs/clientPresence.js.map +1 -0
- package/lib/commonjs/encryptedUploadV2Backend.js +200 -0
- package/lib/commonjs/encryptedUploadV2Backend.js.map +1 -0
- package/lib/commonjs/index.js +34 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/managers/DeviceManager.js +23 -0
- package/lib/commonjs/managers/DeviceManager.js.map +1 -1
- package/lib/commonjs/managers/NativeUploadQueue.js +386 -0
- package/lib/commonjs/managers/NativeUploadQueue.js.map +1 -0
- package/lib/commonjs/managers/RecordingManager.js +83 -102
- package/lib/commonjs/managers/RecordingManager.js.map +1 -1
- package/lib/commonjs/managers/uploadRecoveryMetadata.js +83 -0
- package/lib/commonjs/managers/uploadRecoveryMetadata.js.map +1 -0
- package/lib/commonjs/sdkIdentity.js +10 -0
- package/lib/commonjs/sdkIdentity.js.map +1 -0
- package/lib/commonjs/specs/NativeBotaDeviceSDK.js.map +1 -1
- package/lib/commonjs/specs/NativeBotaUploadV2Backend.js +11 -0
- package/lib/commonjs/specs/NativeBotaUploadV2Backend.js.map +1 -0
- package/lib/commonjs/uploadRecovery.js +68 -0
- package/lib/commonjs/uploadRecovery.js.map +1 -0
- package/lib/module/BotaClient.js +16 -2
- package/lib/module/BotaClient.js.map +1 -1
- package/lib/module/ble/constants.js +4 -0
- package/lib/module/ble/constants.js.map +1 -1
- package/lib/module/ble/deviceDiagnostics.js +234 -0
- package/lib/module/ble/deviceDiagnostics.js.map +1 -0
- package/lib/module/client.js +183 -28
- package/lib/module/client.js.map +1 -1
- package/lib/module/clientPresence.js +22 -0
- package/lib/module/clientPresence.js.map +1 -0
- package/lib/module/encryptedUploadV2Backend.js +196 -0
- package/lib/module/encryptedUploadV2Backend.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/managers/DeviceManager.js +23 -0
- package/lib/module/managers/DeviceManager.js.map +1 -1
- package/lib/module/managers/NativeUploadQueue.js +380 -0
- package/lib/module/managers/NativeUploadQueue.js.map +1 -0
- package/lib/module/managers/RecordingManager.js +83 -102
- package/lib/module/managers/RecordingManager.js.map +1 -1
- package/lib/module/managers/uploadRecoveryMetadata.js +77 -0
- package/lib/module/managers/uploadRecoveryMetadata.js.map +1 -0
- package/lib/module/sdkIdentity.js +6 -0
- package/lib/module/sdkIdentity.js.map +1 -0
- package/lib/module/specs/NativeBotaDeviceSDK.js.map +1 -1
- package/lib/module/specs/NativeBotaUploadV2Backend.js +9 -0
- package/lib/module/specs/NativeBotaUploadV2Backend.js.map +1 -0
- package/lib/module/uploadRecovery.js +64 -0
- package/lib/module/uploadRecovery.js.map +1 -0
- package/lib/typescript/BotaClient.d.ts +2 -0
- package/lib/typescript/BotaClient.d.ts.map +1 -1
- package/lib/typescript/ble/constants.d.ts +4 -0
- package/lib/typescript/ble/constants.d.ts.map +1 -1
- package/lib/typescript/ble/deviceDiagnostics.d.ts +10 -0
- package/lib/typescript/ble/deviceDiagnostics.d.ts.map +1 -0
- package/lib/typescript/client.d.ts +24 -3
- package/lib/typescript/client.d.ts.map +1 -1
- package/lib/typescript/clientPresence.d.ts +26 -0
- package/lib/typescript/clientPresence.d.ts.map +1 -0
- package/lib/typescript/encryptedUploadV2Backend.d.ts +41 -0
- package/lib/typescript/encryptedUploadV2Backend.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +13 -4
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/managers/DeviceManager.d.ts +5 -1
- package/lib/typescript/managers/DeviceManager.d.ts.map +1 -1
- package/lib/typescript/managers/NativeUploadQueue.d.ts +41 -0
- package/lib/typescript/managers/NativeUploadQueue.d.ts.map +1 -0
- package/lib/typescript/managers/RecordingManager.d.ts +3 -8
- package/lib/typescript/managers/RecordingManager.d.ts.map +1 -1
- package/lib/typescript/managers/types.d.ts +6 -1
- package/lib/typescript/managers/types.d.ts.map +1 -1
- package/lib/typescript/managers/uploadRecoveryMetadata.d.ts +6 -0
- package/lib/typescript/managers/uploadRecoveryMetadata.d.ts.map +1 -0
- package/lib/typescript/models/Device.d.ts +42 -0
- package/lib/typescript/models/Device.d.ts.map +1 -1
- package/lib/typescript/models/Recording.d.ts +47 -0
- package/lib/typescript/models/Recording.d.ts.map +1 -1
- package/lib/typescript/models/Status.d.ts +5 -1
- package/lib/typescript/models/Status.d.ts.map +1 -1
- package/lib/typescript/sdkIdentity.d.ts +3 -0
- package/lib/typescript/sdkIdentity.d.ts.map +1 -0
- package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts +70 -0
- package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts.map +1 -1
- package/lib/typescript/specs/NativeBotaUploadV2Backend.d.ts +18 -0
- package/lib/typescript/specs/NativeBotaUploadV2Backend.d.ts.map +1 -0
- package/lib/typescript/uploadRecovery.d.ts +27 -0
- package/lib/typescript/uploadRecovery.d.ts.map +1 -0
- package/package.json +1 -1
- package/scripts/bota_device_sdk_spm_workaround.rb +26 -15
- package/src/BotaClient.ts +17 -3
- package/src/ble/constants.ts +5 -0
- package/src/ble/deviceDiagnostics.ts +238 -0
- package/src/client.ts +189 -18
- package/src/clientPresence.ts +33 -0
- package/src/encryptedUploadV2Backend.ts +171 -0
- package/src/index.ts +24 -0
- package/src/managers/DeviceManager.ts +23 -0
- package/src/managers/NativeUploadQueue.ts +330 -0
- package/src/managers/RecordingManager.ts +83 -116
- package/src/managers/types.ts +7 -1
- package/src/managers/uploadRecoveryMetadata.ts +59 -0
- package/src/models/Device.ts +43 -0
- package/src/models/Recording.ts +52 -0
- package/src/models/Status.ts +5 -1
- package/src/sdkIdentity.ts +3 -0
- package/src/specs/NativeBotaDeviceSDK.ts +66 -0
- package/src/specs/NativeBotaUploadV2Backend.ts +19 -0
- package/src/uploadRecovery.ts +66 -0
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.RecordingManager = void 0;
|
|
7
7
|
var _eventemitter = _interopRequireDefault(require("eventemitter3"));
|
|
8
8
|
var _runtime = require("../compatibility/runtime");
|
|
9
|
+
var _NativeUploadQueue = require("./NativeUploadQueue");
|
|
10
|
+
var _uploadRecoveryMetadata = require("./uploadRecoveryMetadata");
|
|
9
11
|
var _StreamingSession = require("./StreamingSession");
|
|
10
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
13
|
const createTaskId = () => `task_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
|
|
@@ -53,24 +55,25 @@ const observeProgress = start => {
|
|
|
53
55
|
};
|
|
54
56
|
};
|
|
55
57
|
class RecordingManager extends _eventemitter.default {
|
|
56
|
-
tasks = [];
|
|
57
58
|
initialized = false;
|
|
58
|
-
paused = false;
|
|
59
59
|
destroyed = false;
|
|
60
60
|
activeStreamingSession = null;
|
|
61
|
-
constructor() {
|
|
61
|
+
constructor(options = {}) {
|
|
62
62
|
super();
|
|
63
|
+
(0, _uploadRecoveryMetadata.rejectRecordingDataStore)(options.recordingDataStore);
|
|
63
64
|
this.client = (0, _runtime.getCompatibilityClient)();
|
|
65
|
+
this.queue = new _NativeUploadQueue.NativeUploadQueue(this.client.recordings, options.uploadRecoveryProvider);
|
|
66
|
+
this.queue.on('queueUpdated', tasks => this.emit('queueUpdated', tasks));
|
|
67
|
+
this.queue.on('uploadStarted', id => this.emit('uploadStarted', id));
|
|
68
|
+
this.queue.on('uploadProgress', (id, progress) => this.emit('uploadProgress', id, progress));
|
|
69
|
+
this.queue.on('uploadCompleted', (id, recordingId) => this.emit('uploadCompleted', id, recordingId));
|
|
70
|
+
this.queue.on('uploadFailed', (id, error) => this.emit('uploadFailed', id, error));
|
|
64
71
|
}
|
|
65
72
|
async initialize() {
|
|
66
73
|
if (this.initialized) return;
|
|
67
74
|
this.assertAlive();
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
createdAt: new Date(task.createdAt),
|
|
71
|
-
updatedAt: new Date(task.updatedAt),
|
|
72
|
-
status: task.status === 'uploading' ? 'pending' : task.status
|
|
73
|
-
}));
|
|
75
|
+
await this.queue.initialize();
|
|
76
|
+
this.assertAlive();
|
|
74
77
|
this.initialized = true;
|
|
75
78
|
}
|
|
76
79
|
async getStorageInfo(device) {
|
|
@@ -89,6 +92,10 @@ class RecordingManager extends _eventemitter.default {
|
|
|
89
92
|
}
|
|
90
93
|
async *syncRecording(device, recording, uploadInfo) {
|
|
91
94
|
this.assertReady();
|
|
95
|
+
if (uploadInfo.signal?.aborted) {
|
|
96
|
+
uploadInfo.dispose?.();
|
|
97
|
+
throw new Error('Upload authorization context cancelled');
|
|
98
|
+
}
|
|
92
99
|
this.emit('syncStarted', recording.uuid);
|
|
93
100
|
const sinkId = createOpaqueId();
|
|
94
101
|
const now = new Date();
|
|
@@ -96,6 +103,9 @@ class RecordingManager extends _eventemitter.default {
|
|
|
96
103
|
id: createTaskId(),
|
|
97
104
|
recordingId: uploadInfo.recordingId,
|
|
98
105
|
deviceId: device.id,
|
|
106
|
+
recordingUuid: recording.uuid,
|
|
107
|
+
recoveryScope: uploadInfo.recoveryScope,
|
|
108
|
+
fileSizeBytes: recording.fileSizeBytes,
|
|
99
109
|
localPath: '',
|
|
100
110
|
uploadUrl: uploadInfo.uploadUrl,
|
|
101
111
|
...(uploadInfo.uploadToken ? {
|
|
@@ -112,9 +122,34 @@ class RecordingManager extends _eventemitter.default {
|
|
|
112
122
|
createdAt: now,
|
|
113
123
|
updatedAt: now
|
|
114
124
|
};
|
|
115
|
-
this.
|
|
116
|
-
|
|
117
|
-
|
|
125
|
+
const recovered = uploadInfo.recoveryScope && this.queue.all().find(value => value.recoveryScope === uploadInfo.recoveryScope && value.recordingId === uploadInfo.recordingId && value.deviceId === device.id && value.recordingUuid === recording.uuid && !!value.localPath);
|
|
126
|
+
if (recovered) {
|
|
127
|
+
const adopted = this.queue.offerCredentials(recovered.id, uploadInfo);
|
|
128
|
+
try {
|
|
129
|
+
await this.queue.run(recovered.id);
|
|
130
|
+
this.assertReady();
|
|
131
|
+
if (uploadInfo.signal?.aborted) throw new Error('Upload authorization context cancelled');
|
|
132
|
+
await this.client.recordings.confirmRecording(device, recording.uuid);
|
|
133
|
+
this.assertReady();
|
|
134
|
+
yield this.emitSyncProgress(recording.uuid, {
|
|
135
|
+
stage: 'completed',
|
|
136
|
+
progress: 1,
|
|
137
|
+
recordingId: recovered.recordingId,
|
|
138
|
+
contentSha256: recovered.contentSha256
|
|
139
|
+
});
|
|
140
|
+
this.emit('syncCompleted', recording.uuid, recovered.recordingId);
|
|
141
|
+
} finally {
|
|
142
|
+
if (!adopted) uploadInfo.dispose?.();
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
await this.queue.add(task, uploadInfo);
|
|
148
|
+
} catch (error) {
|
|
149
|
+
uploadInfo.dispose?.();
|
|
150
|
+
throw error;
|
|
151
|
+
}
|
|
152
|
+
let uploadAttempted = false;
|
|
118
153
|
try {
|
|
119
154
|
yield this.emitSyncProgress(recording.uuid, {
|
|
120
155
|
stage: 'preparing',
|
|
@@ -139,10 +174,21 @@ class RecordingManager extends _eventemitter.default {
|
|
|
139
174
|
if (transferResult.e2eEncrypted && !uploadInfo.relay) {
|
|
140
175
|
throw new Error('Device delivered encrypted recording data without an upload relay');
|
|
141
176
|
}
|
|
142
|
-
|
|
177
|
+
this.assertReady();
|
|
178
|
+
if (uploadInfo.signal?.aborted || !this.queue.get(task.id)) throw new Error('Upload cancelled');
|
|
179
|
+
const nativeSize = 'fileSizeBytes' in transferResult && typeof transferResult.fileSizeBytes === 'number' ? transferResult.fileSizeBytes : undefined;
|
|
180
|
+
if (nativeSize !== undefined && (!Number.isSafeInteger(nativeSize) || nativeSize < 0)) throw new Error('Invalid native recording file size');
|
|
181
|
+
if (nativeSize === undefined && uploadInfo.complete) throw new Error('Host completion requires actual native recording file size');
|
|
182
|
+
// Route selection comes from native transfer metadata, never list flags.
|
|
183
|
+
uploadInfo = {
|
|
184
|
+
...uploadInfo,
|
|
185
|
+
relay: transferResult.e2eEncrypted ? uploadInfo.relay : undefined
|
|
186
|
+
};
|
|
187
|
+
await this.queue.update(task.id, {
|
|
143
188
|
localPath: transferResult.localPath,
|
|
189
|
+
fileSizeBytes: nativeSize ?? (transferResult.e2eEncrypted ? undefined : recording.fileSizeBytes),
|
|
144
190
|
contentSha256: transferResult.contentSha256,
|
|
145
|
-
|
|
191
|
+
relayUpload: transferResult.e2eEncrypted
|
|
146
192
|
});
|
|
147
193
|
yield this.emitSyncProgress(recording.uuid, {
|
|
148
194
|
stage: 'uploading',
|
|
@@ -151,7 +197,8 @@ class RecordingManager extends _eventemitter.default {
|
|
|
151
197
|
totalBytes: recording.fileSizeBytes,
|
|
152
198
|
contentSha256: transferResult.contentSha256
|
|
153
199
|
});
|
|
154
|
-
|
|
200
|
+
uploadAttempted = true;
|
|
201
|
+
const upload = observeProgress(onProgress => this.queue.run(task.id, onProgress));
|
|
155
202
|
while (true) {
|
|
156
203
|
const value = await upload.next();
|
|
157
204
|
if (value.done) break;
|
|
@@ -167,7 +214,10 @@ class RecordingManager extends _eventemitter.default {
|
|
|
167
214
|
stage: 'completing',
|
|
168
215
|
progress: 0.5
|
|
169
216
|
});
|
|
217
|
+
this.assertReady();
|
|
218
|
+
if (uploadInfo.signal?.aborted || !this.queue.get(task.id)) throw new Error('Upload cancelled');
|
|
170
219
|
await this.client.recordings.confirmRecording(device, recording.uuid);
|
|
220
|
+
this.assertReady();
|
|
171
221
|
const completed = this.emitSyncProgress(recording.uuid, {
|
|
172
222
|
stage: 'completed',
|
|
173
223
|
progress: 1,
|
|
@@ -178,12 +228,13 @@ class RecordingManager extends _eventemitter.default {
|
|
|
178
228
|
this.emit('syncCompleted', recording.uuid, uploadInfo.recordingId);
|
|
179
229
|
} catch (error) {
|
|
180
230
|
const failure = error instanceof Error ? error : new Error(String(error));
|
|
181
|
-
if (this.
|
|
182
|
-
await this.
|
|
231
|
+
if (!this.destroyed && this.queue.get(task.id)?.status === 'pending' && !this.queue.get(task.id)?.localPath) {
|
|
232
|
+
await this.queue.update(task.id, {
|
|
183
233
|
status: 'failed',
|
|
184
|
-
errorMessage:
|
|
234
|
+
errorMessage: 'Recording transfer failed'
|
|
185
235
|
});
|
|
186
236
|
}
|
|
237
|
+
if (this.destroyed) throw failure;
|
|
187
238
|
yield this.emitSyncProgress(recording.uuid, {
|
|
188
239
|
stage: 'failed',
|
|
189
240
|
progress: 0,
|
|
@@ -191,6 +242,8 @@ class RecordingManager extends _eventemitter.default {
|
|
|
191
242
|
});
|
|
192
243
|
this.emit('syncFailed', recording.uuid, failure);
|
|
193
244
|
throw failure;
|
|
245
|
+
} finally {
|
|
246
|
+
if (!uploadAttempted) this.queue.discardCredentials(task.id);
|
|
194
247
|
}
|
|
195
248
|
}
|
|
196
249
|
async triggerDeviceUpload(device) {
|
|
@@ -300,12 +353,10 @@ class RecordingManager extends _eventemitter.default {
|
|
|
300
353
|
}
|
|
301
354
|
}
|
|
302
355
|
getPendingUploads() {
|
|
303
|
-
return this.
|
|
356
|
+
return this.queue.all().filter(task => task.status === 'pending' || task.status === 'uploading');
|
|
304
357
|
}
|
|
305
358
|
getAllUploads() {
|
|
306
|
-
return this.
|
|
307
|
-
...task
|
|
308
|
-
}));
|
|
359
|
+
return this.queue.all();
|
|
309
360
|
}
|
|
310
361
|
startStreamingSync(device, recordingUuid, uploadInfoProvider, options = {}) {
|
|
311
362
|
this.assertReady();
|
|
@@ -326,110 +377,40 @@ class RecordingManager extends _eventemitter.default {
|
|
|
326
377
|
return this.activeStreamingSession;
|
|
327
378
|
}
|
|
328
379
|
async cancelUpload(taskId) {
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
await this.persistTasks();
|
|
332
|
-
this.emitQueueUpdated();
|
|
380
|
+
this.assertReady();
|
|
381
|
+
await this.queue.cancel(taskId);
|
|
333
382
|
}
|
|
334
383
|
async retryFailedUploads() {
|
|
335
384
|
this.assertReady();
|
|
336
|
-
|
|
337
|
-
for (const task of this.tasks.filter(value => value.status === 'failed')) {
|
|
338
|
-
await this.updateTask(task.id, {
|
|
339
|
-
status: 'pending',
|
|
340
|
-
retryCount: task.retryCount + 1,
|
|
341
|
-
errorMessage: undefined
|
|
342
|
-
});
|
|
343
|
-
try {
|
|
344
|
-
await this.runUpload(task.id);
|
|
345
|
-
} catch {
|
|
346
|
-
// Keep failed tasks available for the next explicit retry.
|
|
347
|
-
}
|
|
348
|
-
}
|
|
385
|
+
await this.queue.retryFailed();
|
|
349
386
|
}
|
|
350
387
|
async clearCompletedUploads() {
|
|
351
|
-
this.
|
|
352
|
-
await this.
|
|
353
|
-
this.emitQueueUpdated();
|
|
388
|
+
this.assertReady();
|
|
389
|
+
await this.queue.clearCompleted();
|
|
354
390
|
}
|
|
355
391
|
async clearAllUploads() {
|
|
356
|
-
|
|
357
|
-
await
|
|
358
|
-
this.tasks = [];
|
|
359
|
-
await this.persistTasks();
|
|
360
|
-
this.emitQueueUpdated();
|
|
392
|
+
this.assertReady();
|
|
393
|
+
await this.queue.clearAll();
|
|
361
394
|
}
|
|
362
395
|
pauseUploads() {
|
|
363
|
-
this.
|
|
396
|
+
this.queue.pause();
|
|
364
397
|
}
|
|
365
398
|
resumeUploads() {
|
|
366
|
-
this.
|
|
367
|
-
void this.retryFailedUploads();
|
|
399
|
+
this.queue.resume();
|
|
368
400
|
}
|
|
369
401
|
destroy() {
|
|
370
402
|
if (this.destroyed) return;
|
|
371
403
|
this.destroyed = true;
|
|
404
|
+
this.queue.destroy();
|
|
372
405
|
this.activeStreamingSession?.abort();
|
|
373
406
|
this.activeStreamingSession = null;
|
|
374
|
-
void this.client.recordings.destroyCompatibilityOperations().catch(() => undefined);
|
|
375
407
|
this.removeAllListeners();
|
|
376
408
|
this.initialized = false;
|
|
377
409
|
}
|
|
378
|
-
async runUpload(taskId, onProgress) {
|
|
379
|
-
if (this.paused) throw new Error('Upload queue is paused');
|
|
380
|
-
const task = this.requireTask(taskId);
|
|
381
|
-
await this.updateTask(taskId, {
|
|
382
|
-
status: 'uploading',
|
|
383
|
-
errorMessage: undefined
|
|
384
|
-
});
|
|
385
|
-
this.emit('uploadStarted', taskId);
|
|
386
|
-
try {
|
|
387
|
-
await this.client.recordings.uploadRecordingFile(this.requireTask(taskId), progress => {
|
|
388
|
-
onProgress?.(progress);
|
|
389
|
-
const ratio = progress.totalBytes > 0 ? Math.min(progress.completedBytes / progress.totalBytes, 1) : 0;
|
|
390
|
-
this.emit('uploadProgress', taskId, ratio);
|
|
391
|
-
});
|
|
392
|
-
await this.updateTask(taskId, {
|
|
393
|
-
status: 'completed',
|
|
394
|
-
errorMessage: undefined
|
|
395
|
-
});
|
|
396
|
-
this.emit('uploadCompleted', taskId, task.recordingId);
|
|
397
|
-
} catch (error) {
|
|
398
|
-
const failure = error instanceof Error ? error : new Error(String(error));
|
|
399
|
-
await this.updateTask(taskId, {
|
|
400
|
-
status: 'failed',
|
|
401
|
-
errorMessage: failure.message
|
|
402
|
-
});
|
|
403
|
-
this.emit('uploadFailed', taskId, failure);
|
|
404
|
-
throw failure;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
410
|
emitSyncProgress(recordingUuid, progress) {
|
|
408
411
|
this.emit('syncProgress', recordingUuid, progress);
|
|
409
412
|
return progress;
|
|
410
413
|
}
|
|
411
|
-
requireTask(taskId) {
|
|
412
|
-
const task = this.tasks.find(value => value.id === taskId);
|
|
413
|
-
if (!task) throw new Error(`Upload task not found: ${taskId}`);
|
|
414
|
-
return task;
|
|
415
|
-
}
|
|
416
|
-
async updateTask(taskId, patch) {
|
|
417
|
-
const index = this.tasks.findIndex(task => task.id === taskId);
|
|
418
|
-
if (index < 0) throw new Error(`Upload task not found: ${taskId}`);
|
|
419
|
-
this.tasks[index] = {
|
|
420
|
-
...this.tasks[index],
|
|
421
|
-
...patch,
|
|
422
|
-
updatedAt: new Date()
|
|
423
|
-
};
|
|
424
|
-
await this.persistTasks();
|
|
425
|
-
this.emitQueueUpdated();
|
|
426
|
-
}
|
|
427
|
-
async persistTasks() {
|
|
428
|
-
await this.client.recordings.saveUploadQueue(this.tasks);
|
|
429
|
-
}
|
|
430
|
-
emitQueueUpdated() {
|
|
431
|
-
this.emit('queueUpdated', this.getAllUploads());
|
|
432
|
-
}
|
|
433
414
|
assertReady() {
|
|
434
415
|
this.assertAlive();
|
|
435
416
|
if (!this.initialized) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_eventemitter","_interopRequireDefault","require","_runtime","_StreamingSession","e","__esModule","default","createTaskId","Date","now","Math","random","toString","slice","createOpaqueId","replace","value","floor","nibble","errorMessage","error","Error","message","String","observeProgress","start","queued","waiting","result","failure","settled","wake","splice","forEach","resolve","progress","push","then","next","length","Promise","shift","done","undefined","RecordingManager","EventEmitter","tasks","initialized","paused","destroyed","activeStreamingSession","constructor","client","getCompatibilityClient","initialize","assertAlive","recordings","loadUploadQueue","map","task","createdAt","updatedAt","status","getStorageInfo","device","assertReady","all","devices","readStatus","listRecordings","totalKb","storageTotalMb","usedKb","storageUsedMb","totalRecordings","pendingSyncCount","pendingRecordings","syncRecording","recording","uploadInfo","emit","uuid","sinkId","id","recordingId","deviceId","localPath","uploadUrl","uploadToken","completeUrl","contentType","retryCount","persistTasks","emitQueueUpdated","emitSyncProgress","stage","totalBytes","fileSizeBytes","transfer","onProgress","transferResult","min","completedBytes","bytesTransferred","e2eEncrypted","relay","updateTask","contentSha256","bytesUploaded","upload","runUpload","confirmRecording","completed","requireTask","triggerDeviceUpload","observeUploadOwnership","recordingUuid","uploadId","destinationId","kind","accepted","monitorDeviceUpload","initialPendingCount","recordingIndex","syncAllRecordings","uploadInfoProvider","ownership","index","getPendingUploads","filter","getAllUploads","startStreamingSync","options","isActive","session","StreamingSession","chunkSizeKb","flushIntervalMs","setStreamingSessionTerminalHandler","catch","getActiveStreamingSession","cancelUpload","taskId","cancelRecordingUpload","retryFailedUploads","clearCompletedUploads","clearAllUploads","ids","pauseUploads","resumeUploads","destroy","abort","destroyCompatibilityOperations","removeAllListeners","uploadRecordingFile","ratio","find","patch","findIndex","saveUploadQueue","exports"],"sourceRoot":"../../../src","sources":["managers/RecordingManager.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_eventemitter","_interopRequireDefault","require","_runtime","_NativeUploadQueue","_uploadRecoveryMetadata","_StreamingSession","e","__esModule","default","createTaskId","Date","now","Math","random","toString","slice","createOpaqueId","replace","value","floor","nibble","errorMessage","error","Error","message","String","observeProgress","start","queued","waiting","result","failure","settled","wake","splice","forEach","resolve","progress","push","then","next","length","Promise","shift","done","undefined","RecordingManager","EventEmitter","initialized","destroyed","activeStreamingSession","constructor","options","rejectRecordingDataStore","recordingDataStore","client","getCompatibilityClient","queue","NativeUploadQueue","recordings","uploadRecoveryProvider","on","tasks","emit","id","recordingId","initialize","assertAlive","getStorageInfo","device","assertReady","status","all","devices","readStatus","listRecordings","totalKb","storageTotalMb","usedKb","storageUsedMb","totalRecordings","pendingSyncCount","pendingRecordings","syncRecording","recording","uploadInfo","signal","aborted","dispose","uuid","sinkId","task","deviceId","recordingUuid","recoveryScope","fileSizeBytes","localPath","uploadUrl","uploadToken","completeUrl","contentType","retryCount","createdAt","updatedAt","recovered","find","adopted","offerCredentials","run","confirmRecording","emitSyncProgress","stage","contentSha256","add","uploadAttempted","totalBytes","transfer","onProgress","transferResult","min","completedBytes","bytesTransferred","e2eEncrypted","relay","get","nativeSize","Number","isSafeInteger","complete","update","relayUpload","bytesUploaded","upload","completed","discardCredentials","triggerDeviceUpload","observeUploadOwnership","uploadId","destinationId","kind","accepted","monitorDeviceUpload","initialPendingCount","recordingIndex","syncAllRecordings","uploadInfoProvider","ownership","index","getPendingUploads","filter","getAllUploads","startStreamingSync","isActive","session","StreamingSession","chunkSizeKb","flushIntervalMs","setStreamingSessionTerminalHandler","catch","getActiveStreamingSession","cancelUpload","taskId","cancel","retryFailedUploads","retryFailed","clearCompletedUploads","clearCompleted","clearAllUploads","clearAll","pauseUploads","pause","resumeUploads","resume","destroy","abort","removeAllListeners","exports"],"sourceRoot":"../../../src","sources":["managers/RecordingManager.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAOA,IAAAC,QAAA,GAAAD,OAAA;AAYA,IAAAE,kBAAA,GAAAF,OAAA;AACA,IAAAG,uBAAA,GAAAH,OAAA;AACA,IAAAI,iBAAA,GAAAJ,OAAA;AAG4B,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAa5B,MAAMG,YAAY,GAAGA,CAAA,KACnB,QAAQC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AAEhE,MAAMC,cAAc,GAAGA,CAAA,KACrB,sCAAsC,CAACC,OAAO,CAAC,OAAO,EAAGC,KAAK,IAAK;EACjE,MAAML,MAAM,GAAGD,IAAI,CAACO,KAAK,CAACP,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC;EAC7C,MAAMO,MAAM,GAAGF,KAAK,KAAK,GAAG,GAAGL,MAAM,GAAIA,MAAM,GAAG,GAAG,GAAI,GAAG;EAC5D,OAAOO,MAAM,CAACN,QAAQ,CAAC,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEJ,MAAMO,YAAY,GAAIC,KAAc,IAClCA,KAAK,YAAYC,KAAK,GAAGD,KAAK,CAACE,OAAO,GAAGC,MAAM,CAACH,KAAK,CAAC;AAExD,MAAMI,eAAe,GACnBC,KAAoF,IACxD;EAC5B,MAAMC,MAAuC,GAAG,EAAE;EAClD,MAAMC,OAA0B,GAAG,EAAE;EACrC,IAAIC,MAAqB;EACzB,IAAIC,OAAgB;EACpB,IAAIC,OAAO,GAAG,KAAK;EACnB,MAAMC,IAAI,GAAGA,CAAA,KAAMJ,OAAO,CAACK,MAAM,CAAC,CAAC,CAAC,CAACC,OAAO,CAAEC,OAAO,IAAKA,OAAO,CAAC,CAAC,CAAC;EACpE,KAAKT,KAAK,CAAEU,QAAQ,IAAK;IACvBT,MAAM,CAACU,IAAI,CAACD,QAAQ,CAAC;IACrBJ,IAAI,CAAC,CAAC;EACR,CAAC,CAAC,CAACM,IAAI,CACJrB,KAAK,IAAK;IACTY,MAAM,GAAGZ,KAAK;IACdc,OAAO,GAAG,IAAI;IACdC,IAAI,CAAC,CAAC;EACR,CAAC,EACAX,KAAK,IAAK;IACTS,OAAO,GAAGT,KAAK;IACfU,OAAO,GAAG,IAAI;IACdC,IAAI,CAAC,CAAC;EACR,CACF,CAAC;EACD,OAAO;IACL,MAAMO,IAAIA,CAAA,EAAG;MACX,OAAOZ,MAAM,CAACa,MAAM,KAAK,CAAC,IAAI,CAACT,OAAO,EAAE;QACtC,MAAM,IAAIU,OAAO,CAAQN,OAAO,IAAKP,OAAO,CAACS,IAAI,CAACF,OAAO,CAAC,CAAC;MAC7D;MACA,MAAMC,QAAQ,GAAGT,MAAM,CAACe,KAAK,CAAC,CAAC;MAC/B,IAAIN,QAAQ,EAAE,OAAO;QAAEO,IAAI,EAAE,KAAK;QAAE1B,KAAK,EAAEmB;MAAS,CAAC;MACrD,IAAIN,OAAO,KAAKc,SAAS,EAAE,MAAMd,OAAO;MACxC,OAAO;QAAEa,IAAI,EAAE,IAAI;QAAE1B,KAAK,EAAEY;MAAY,CAAC;IAC3C;EACF,CAAC;AACH,CAAC;AAEM,MAAMgB,gBAAgB,SAASC,qBAAY,CAAyB;EAGjEC,WAAW,GAAG,KAAK;EACnBC,SAAS,GAAG,KAAK;EACjBC,sBAAsB,GAA4B,IAAI;EAI9DC,WAAWA,CAACC,OAAgC,GAAG,CAAC,CAAC,EAAE;IACjD,KAAK,CAAC,CAAC;IACP,IAAAC,gDAAwB,EAACD,OAAO,CAACE,kBAAkB,CAAC;IACpD,IAAI,CAACC,MAAM,GAAG,IAAAC,+BAAsB,EAAC,CAAC;IACtC,IAAI,CAACC,KAAK,GAAG,IAAIC,oCAAiB,CAAC,IAAI,CAACH,MAAM,CAACI,UAAU,EAAEP,OAAO,CAACQ,sBAAsB,CAAC;IAC1F,IAAI,CAACH,KAAK,CAACI,EAAE,CAAC,cAAc,EAAEC,KAAK,IAAI,IAAI,CAACC,IAAI,CAAC,cAAc,EAAED,KAAK,CAAC,CAAC;IACxE,IAAI,CAACL,KAAK,CAACI,EAAE,CAAC,eAAe,EAAEG,EAAE,IAAI,IAAI,CAACD,IAAI,CAAC,eAAe,EAAEC,EAAE,CAAC,CAAC;IACpE,IAAI,CAACP,KAAK,CAACI,EAAE,CAAC,gBAAgB,EAAE,CAACG,EAAE,EAAE3B,QAAQ,KAAK,IAAI,CAAC0B,IAAI,CAAC,gBAAgB,EAAEC,EAAE,EAAE3B,QAAQ,CAAC,CAAC;IAC5F,IAAI,CAACoB,KAAK,CAACI,EAAE,CAAC,iBAAiB,EAAE,CAACG,EAAE,EAAEC,WAAW,KAAK,IAAI,CAACF,IAAI,CAAC,iBAAiB,EAAEC,EAAE,EAAEC,WAAW,CAAC,CAAC;IACpG,IAAI,CAACR,KAAK,CAACI,EAAE,CAAC,cAAc,EAAE,CAACG,EAAE,EAAE1C,KAAK,KAAK,IAAI,CAACyC,IAAI,CAAC,cAAc,EAAEC,EAAE,EAAE1C,KAAK,CAAC,CAAC;EACpF;EAEA,MAAM4C,UAAUA,CAAA,EAAkB;IAChC,IAAI,IAAI,CAAClB,WAAW,EAAE;IACtB,IAAI,CAACmB,WAAW,CAAC,CAAC;IAClB,MAAM,IAAI,CAACV,KAAK,CAACS,UAAU,CAAC,CAAC;IAC7B,IAAI,CAACC,WAAW,CAAC,CAAC;IAClB,IAAI,CAACnB,WAAW,GAAG,IAAI;EACzB;EAEA,MAAMoB,cAAcA,CAACC,MAAuB,EAAwB;IAClE,IAAI,CAACC,WAAW,CAAC,CAAC;IAClB,MAAM,CAACC,MAAM,EAAEZ,UAAU,CAAC,GAAG,MAAMjB,OAAO,CAAC8B,GAAG,CAAC,CAC7C,IAAI,CAACjB,MAAM,CAACkB,OAAO,CAACC,UAAU,CAAC,CAAC,EAChC,IAAI,CAACnB,MAAM,CAACI,UAAU,CAACgB,cAAc,CAACN,MAAM,CAAC,CAC9C,CAAC;IACF,OAAO;MACLO,OAAO,EAAEL,MAAM,CAACM,cAAc,GAAG,IAAI;MACrCC,MAAM,EAAEP,MAAM,CAACQ,aAAa,GAAG,IAAI;MACnCC,eAAe,EAAErB,UAAU,CAAClB,MAAM;MAClCwC,gBAAgB,EAAEV,MAAM,CAACW;IAC3B,CAAC;EACH;EAEA,MAAMP,cAAcA,CAACN,MAAuB,EAA8B;IACxE,IAAI,CAACC,WAAW,CAAC,CAAC;IAClB,OAAO,IAAI,CAACf,MAAM,CAACI,UAAU,CAACgB,cAAc,CAACN,MAAM,CAAC;EACtD;EAEA,OAAOc,aAAaA,CAClBd,MAAuB,EACvBe,SAA0B,EAC1BC,UAAsB,EACQ;IAC9B,IAAI,CAACf,WAAW,CAAC,CAAC;IAClB,IAAIe,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAE;MAC9BF,UAAU,CAACG,OAAO,GAAG,CAAC;MACtB,MAAM,IAAIjE,KAAK,CAAC,wCAAwC,CAAC;IAC3D;IACA,IAAI,CAACwC,IAAI,CAAC,aAAa,EAAEqB,SAAS,CAACK,IAAI,CAAC;IACxC,MAAMC,MAAM,GAAG1E,cAAc,CAAC,CAAC;IAC/B,MAAML,GAAG,GAAG,IAAID,IAAI,CAAC,CAAC;IACtB,MAAMiF,IAAgB,GAAG;MACvB3B,EAAE,EAAEvD,YAAY,CAAC,CAAC;MAClBwD,WAAW,EAAEoB,UAAU,CAACpB,WAAW;MACnC2B,QAAQ,EAAEvB,MAAM,CAACL,EAAE;MACnB6B,aAAa,EAAET,SAAS,CAACK,IAAI;MAC7BK,aAAa,EAAET,UAAU,CAACS,aAAa;MACvCC,aAAa,EAAEX,SAAS,CAACW,aAAa;MACtCC,SAAS,EAAE,EAAE;MACbC,SAAS,EAAEZ,UAAU,CAACY,SAAS;MAC/B,IAAIZ,UAAU,CAACa,WAAW,GAAG;QAAEA,WAAW,EAAEb,UAAU,CAACa;MAAY,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1E,IAAIb,UAAU,CAACc,WAAW,GAAG;QAAEA,WAAW,EAAEd,UAAU,CAACc;MAAY,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1E,IAAId,UAAU,CAACe,WAAW,GAAG;QAAEA,WAAW,EAAEf,UAAU,CAACe;MAAY,CAAC,GAAG,CAAC,CAAC,CAAC;MAC1E7B,MAAM,EAAE,SAAS;MACjB8B,UAAU,EAAE,CAAC;MACbC,SAAS,EAAE3F,GAAG;MACd4F,SAAS,EAAE5F;IACb,CAAC;IACD,MAAM6F,SAAS,GAAGnB,UAAU,CAACS,aAAa,IAAI,IAAI,CAACrC,KAAK,CAACe,GAAG,CAAC,CAAC,CAACiC,IAAI,CAACvF,KAAK,IACvEA,KAAK,CAAC4E,aAAa,KAAKT,UAAU,CAACS,aAAa,IAAI5E,KAAK,CAAC+C,WAAW,KAAKoB,UAAU,CAACpB,WAAW,IAChG/C,KAAK,CAAC0E,QAAQ,KAAKvB,MAAM,CAACL,EAAE,IAAI9C,KAAK,CAAC2E,aAAa,KAAKT,SAAS,CAACK,IAAI,IAAI,CAAC,CAACvE,KAAK,CAAC8E,SACpF,CAAC;IACD,IAAIQ,SAAS,EAAE;MACb,MAAME,OAAO,GAAG,IAAI,CAACjD,KAAK,CAACkD,gBAAgB,CAACH,SAAS,CAACxC,EAAE,EAAEqB,UAAU,CAAC;MACrE,IAAI;QACF,MAAM,IAAI,CAAC5B,KAAK,CAACmD,GAAG,CAACJ,SAAS,CAACxC,EAAE,CAAC;QAClC,IAAI,CAACM,WAAW,CAAC,CAAC;QAClB,IAAIe,UAAU,CAACC,MAAM,EAAEC,OAAO,EAAE,MAAM,IAAIhE,KAAK,CAAC,wCAAwC,CAAC;QACzF,MAAM,IAAI,CAACgC,MAAM,CAACI,UAAU,CAACkD,gBAAgB,CAACxC,MAAM,EAAEe,SAAS,CAACK,IAAI,CAAC;QACrE,IAAI,CAACnB,WAAW,CAAC,CAAC;QAClB,MAAM,IAAI,CAACwC,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;UAAEsB,KAAK,EAAE,WAAW;UAAE1E,QAAQ,EAAE,CAAC;UAAE4B,WAAW,EAAEuC,SAAS,CAACvC,WAAW;UAAE+C,aAAa,EAAER,SAAS,CAACQ;QAAc,CAAC,CAAC;QAC5J,IAAI,CAACjD,IAAI,CAAC,eAAe,EAAEqB,SAAS,CAACK,IAAI,EAAEe,SAAS,CAACvC,WAAW,CAAC;MACnE,CAAC,SAAS;QACR,IAAI,CAACyC,OAAO,EAAErB,UAAU,CAACG,OAAO,GAAG,CAAC;MACtC;MACA;IACF;IACA,IAAI;MACF,MAAM,IAAI,CAAC/B,KAAK,CAACwD,GAAG,CAACtB,IAAI,EAAEN,UAAU,CAAC;IACxC,CAAC,CAAC,OAAO/D,KAAK,EAAE;MACd+D,UAAU,CAACG,OAAO,GAAG,CAAC;MACtB,MAAMlE,KAAK;IACb;IAEA,IAAI4F,eAAe,GAAG,KAAK;IAC3B,IAAI;MACF,MAAM,IAAI,CAACJ,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;QAC1CsB,KAAK,EAAE,WAAW;QAClB1E,QAAQ,EAAE,CAAC;QACX8E,UAAU,EAAE/B,SAAS,CAACW;MACxB,CAAC,CAAC;MAEF,MAAMqB,QAAQ,GAAG1F,eAAe,CAAE2F,UAAU,IAC1C,IAAI,CAAC9D,MAAM,CAACI,UAAU,CAACwB,aAAa,CAClCd,MAAM,EACNe,SAAS,EACTiC,UAAU,EACV3B,MACF,CACF,CAAC;MACD,IAAI4B,cAEH;MACD,OAAO,IAAI,EAAE;QACX,MAAMpG,KAAK,GAAG,MAAMkG,QAAQ,CAAC5E,IAAI,CAAC,CAAC;QACnC,IAAItB,KAAK,CAAC0B,IAAI,EAAE;UACd0E,cAAc,GAAGpG,KAAK,CAACA,KAAK;UAC5B;QACF;QACA,MAAM,IAAI,CAAC4F,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;UAC1CsB,KAAK,EAAE,cAAc;UACrB1E,QAAQ,EACNnB,KAAK,CAACA,KAAK,CAACiG,UAAU,GAAG,CAAC,GACtBvG,IAAI,CAAC2G,GAAG,CAACrG,KAAK,CAACA,KAAK,CAACsG,cAAc,GAAGtG,KAAK,CAACA,KAAK,CAACiG,UAAU,EAAE,CAAC,CAAC,GAChE,CAAC;UACPM,gBAAgB,EAAEvG,KAAK,CAACA,KAAK,CAACsG,cAAc;UAC5CL,UAAU,EAAEjG,KAAK,CAACA,KAAK,CAACiG;QAC1B,CAAC,CAAC;MACJ;MACA,IAAIG,cAAc,CAACI,YAAY,IAAI,CAACrC,UAAU,CAACsC,KAAK,EAAE;QACpD,MAAM,IAAIpG,KAAK,CACb,mEACF,CAAC;MACH;MACA,IAAI,CAAC+C,WAAW,CAAC,CAAC;MAClB,IAAIe,UAAU,CAACC,MAAM,EAAEC,OAAO,IAAI,CAAC,IAAI,CAAC9B,KAAK,CAACmE,GAAG,CAACjC,IAAI,CAAC3B,EAAE,CAAC,EAAE,MAAM,IAAIzC,KAAK,CAAC,kBAAkB,CAAC;MAC/F,MAAMsG,UAAU,GAAG,eAAe,IAAIP,cAAc,IAAI,OAAOA,cAAc,CAACvB,aAAa,KAAK,QAAQ,GACpGuB,cAAc,CAACvB,aAAa,GAAGlD,SAAS;MAC5C,IAAIgF,UAAU,KAAKhF,SAAS,KAAK,CAACiF,MAAM,CAACC,aAAa,CAACF,UAAU,CAAC,IAAIA,UAAU,GAAG,CAAC,CAAC,EAAE,MAAM,IAAItG,KAAK,CAAC,oCAAoC,CAAC;MAC5I,IAAIsG,UAAU,KAAKhF,SAAS,IAAIwC,UAAU,CAAC2C,QAAQ,EAAE,MAAM,IAAIzG,KAAK,CAAC,4DAA4D,CAAC;MAClI;MACA8D,UAAU,GAAG;QAAE,GAAGA,UAAU;QAAEsC,KAAK,EAAEL,cAAc,CAACI,YAAY,GAAGrC,UAAU,CAACsC,KAAK,GAAG9E;MAAU,CAAC;MACjG,MAAM,IAAI,CAACY,KAAK,CAACwE,MAAM,CAACtC,IAAI,CAAC3B,EAAE,EAAE;QAC/BgC,SAAS,EAAEsB,cAAc,CAACtB,SAAS;QACnCD,aAAa,EAAE8B,UAAU,KAAKP,cAAc,CAACI,YAAY,GAAG7E,SAAS,GAAGuC,SAAS,CAACW,aAAa,CAAC;QAChGiB,aAAa,EAAEM,cAAc,CAACN,aAAa;QAC3CkB,WAAW,EAAEZ,cAAc,CAACI;MAC9B,CAAC,CAAC;MAEF,MAAM,IAAI,CAACZ,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;QAC1CsB,KAAK,EAAE,WAAW;QAClB1E,QAAQ,EAAE,CAAC;QACX8F,aAAa,EAAE,CAAC;QAChBhB,UAAU,EAAE/B,SAAS,CAACW,aAAa;QACnCiB,aAAa,EAAEM,cAAc,CAACN;MAChC,CAAC,CAAC;MACFE,eAAe,GAAG,IAAI;MACtB,MAAMkB,MAAM,GAAG1G,eAAe,CAAE2F,UAAU,IACxC,IAAI,CAAC5D,KAAK,CAACmD,GAAG,CAACjB,IAAI,CAAC3B,EAAE,EAAEqD,UAAU,CACpC,CAAC;MACD,OAAO,IAAI,EAAE;QACX,MAAMnG,KAAK,GAAG,MAAMkH,MAAM,CAAC5F,IAAI,CAAC,CAAC;QACjC,IAAItB,KAAK,CAAC0B,IAAI,EAAE;QAChB,MAAMP,QAAQ,GACZnB,KAAK,CAACA,KAAK,CAACiG,UAAU,GAAG,CAAC,GACtBvG,IAAI,CAAC2G,GAAG,CAACrG,KAAK,CAACA,KAAK,CAACsG,cAAc,GAAGtG,KAAK,CAACA,KAAK,CAACiG,UAAU,EAAE,CAAC,CAAC,GAChE,CAAC;QACP,MAAM,IAAI,CAACL,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;UAC1CsB,KAAK,EAAE,WAAW;UAClB1E,QAAQ;UACR8F,aAAa,EAAEjH,KAAK,CAACA,KAAK,CAACsG,cAAc;UACzCL,UAAU,EAAEjG,KAAK,CAACA,KAAK,CAACiG;QAC1B,CAAC,CAAC;MACJ;MAEA,MAAM,IAAI,CAACL,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;QAC1CsB,KAAK,EAAE,YAAY;QACnB1E,QAAQ,EAAE;MACZ,CAAC,CAAC;MACF,IAAI,CAACiC,WAAW,CAAC,CAAC;MAClB,IAAIe,UAAU,CAACC,MAAM,EAAEC,OAAO,IAAI,CAAC,IAAI,CAAC9B,KAAK,CAACmE,GAAG,CAACjC,IAAI,CAAC3B,EAAE,CAAC,EAAE,MAAM,IAAIzC,KAAK,CAAC,kBAAkB,CAAC;MAC/F,MAAM,IAAI,CAACgC,MAAM,CAACI,UAAU,CAACkD,gBAAgB,CAACxC,MAAM,EAAEe,SAAS,CAACK,IAAI,CAAC;MACrE,IAAI,CAACnB,WAAW,CAAC,CAAC;MAClB,MAAM+D,SAAS,GAAG,IAAI,CAACvB,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;QACtDsB,KAAK,EAAE,WAAW;QAClB1E,QAAQ,EAAE,CAAC;QACX4B,WAAW,EAAEoB,UAAU,CAACpB,WAAW;QACnC+C,aAAa,EAAEM,cAAc,CAACN;MAChC,CAAC,CAAC;MACF,MAAMqB,SAAS;MACf,IAAI,CAACtE,IAAI,CAAC,eAAe,EAAEqB,SAAS,CAACK,IAAI,EAAEJ,UAAU,CAACpB,WAAW,CAAC;IACpE,CAAC,CAAC,OAAO3C,KAAK,EAAE;MACd,MAAMS,OAAO,GAAGT,KAAK,YAAYC,KAAK,GAAGD,KAAK,GAAG,IAAIC,KAAK,CAACE,MAAM,CAACH,KAAK,CAAC,CAAC;MACzE,IAAI,CAAC,IAAI,CAAC2B,SAAS,IAAI,IAAI,CAACQ,KAAK,CAACmE,GAAG,CAACjC,IAAI,CAAC3B,EAAE,CAAC,EAAEO,MAAM,KAAK,SAAS,IAAI,CAAC,IAAI,CAACd,KAAK,CAACmE,GAAG,CAACjC,IAAI,CAAC3B,EAAE,CAAC,EAAEgC,SAAS,EAAE;QAC3G,MAAM,IAAI,CAACvC,KAAK,CAACwE,MAAM,CAACtC,IAAI,CAAC3B,EAAE,EAAE;UAC/BO,MAAM,EAAE,QAAQ;UAChBlD,YAAY,EAAE;QAChB,CAAC,CAAC;MACJ;MACA,IAAI,IAAI,CAAC4B,SAAS,EAAE,MAAMlB,OAAO;MACjC,MAAM,IAAI,CAAC+E,gBAAgB,CAAC1B,SAAS,CAACK,IAAI,EAAE;QAC1CsB,KAAK,EAAE,QAAQ;QACf1E,QAAQ,EAAE,CAAC;QACXf,KAAK,EAAES,OAAO,CAACP;MACjB,CAAC,CAAC;MACF,IAAI,CAACuC,IAAI,CAAC,YAAY,EAAEqB,SAAS,CAACK,IAAI,EAAE1D,OAAO,CAAC;MAChD,MAAMA,OAAO;IACf,CAAC,SAAS;MACR,IAAI,CAACmF,eAAe,EAAE,IAAI,CAACzD,KAAK,CAAC6E,kBAAkB,CAAC3C,IAAI,CAAC3B,EAAE,CAAC;IAC9D;EACF;EAEA,MAAMuE,mBAAmBA,CACvBlE,MAAuB,EACsB;IAC7C,IAAI,CAACC,WAAW,CAAC,CAAC;IAClB,MAAMxC,MAAM,GAAG,MAAM,IAAI,CAACyB,MAAM,CAACI,UAAU,CAAC6E,sBAAsB,CAACnE,MAAM,EAAE;MACzEwB,aAAa,EAAE,sCAAsC;MACrD4C,QAAQ,EAAE,iBAAiB;MAC3BC,aAAa,EAAE;IACjB,CAAC,CAAC;IACF,OAAO5G,MAAM,CAAC6G,IAAI,KAAK,oBAAoB,GACvC;MAAEC,QAAQ,EAAE;IAAM,CAAC,GACnB;MAAEA,QAAQ,EAAE;IAAK,CAAC;EACxB;EAEA,OAAOC,mBAAmBA,CACxBxE,MAAuB,EACvByE,mBAA2B,EAI3B;IACA,IAAI,CAACxE,WAAW,CAAC,CAAC;IAClB,MAAM;MACJyC,KAAK,EAAE,kBAAkB;MACzB1E,QAAQ,EAAE,CAAC;MACX0G,cAAc,EAAE,CAAC;MACjB/D,eAAe,EAAE8D;IACnB,CAAC;IACD,IAAI;MACF,MAAMhH,MAAM,GAAG,MAAM,IAAI,CAACyB,MAAM,CAACI,UAAU,CAAC6E,sBAAsB,CAACnE,MAAM,EAAE;QACzEwB,aAAa,EAAE,sCAAsC;QACrD4C,QAAQ,EAAE,iBAAiB;QAC3BC,aAAa,EAAE;MACjB,CAAC,CAAC;MACF,IAAI5G,MAAM,CAAC6G,IAAI,KAAK,yBAAyB,EAAE;QAC7C,MAAM;UACJ5B,KAAK,EAAE,WAAW;UAClB1E,QAAQ,EAAE,CAAC;UACX0G,cAAc,EAAED,mBAAmB;UACnC9D,eAAe,EAAE8D;QACnB,CAAC;QACD,OAAO,WAAW;MACpB;MACA,OAAOhH,MAAM,CAAC6G,IAAI,KAAK,oBAAoB,GAAG,QAAQ,GAAG,UAAU;IACrE,CAAC,CAAC,MAAM;MACN,OAAO,UAAU;IACnB;EACF;EAEA,OAAOK,iBAAiBA,CACtB3E,MAAuB,EACvB4E,kBAAsC,EAGtC;IACA,IAAI,CAAC3E,WAAW,CAAC,CAAC;IAClB,MAAMX,UAAU,GAAG,MAAM,IAAI,CAACgB,cAAc,CAACN,MAAM,CAAC;IACpD,IAAIV,UAAU,CAAClB,MAAM,KAAK,CAAC,EAAE;IAE7B,MAAMyG,SAAS,GAAGxH,eAAe,CAAE2F,UAAU,IAC3C,IAAI,CAAC9D,MAAM,CAACI,UAAU,CAAC6E,sBAAsB,CAC3CnE,MAAM,EACN;MACEwB,aAAa,EAAElC,UAAU,CAAC,CAAC,CAAC,CAAC8B,IAAI;MACjCgD,QAAQ,EAAE,iBAAiB;MAC3BC,aAAa,EAAE;IACjB,CAAC,EACDrB,UACF,CACF,CAAC;IACD,IAAIvF,MAAiC;IACrC,IAAI;MACF,OAAO,IAAI,EAAE;QACX,MAAMZ,KAAK,GAAG,MAAMgI,SAAS,CAAC1G,IAAI,CAAC,CAAC;QACpC,IAAItB,KAAK,CAAC0B,IAAI,EAAE;UACdd,MAAM,GAAGZ,KAAK,CAACA,KAAK;UACpB;QACF;QACA,MAAM;UACJ6F,KAAK,EAAE,kBAAkB;UACzB1E,QAAQ,EACNnB,KAAK,CAACA,KAAK,CAACiG,UAAU,GAAG,CAAC,GACtBvG,IAAI,CAAC2G,GAAG,CAACrG,KAAK,CAACA,KAAK,CAACsG,cAAc,GAAGtG,KAAK,CAACA,KAAK,CAACiG,UAAU,EAAE,CAAC,CAAC,GAChE,CAAC;UACP4B,cAAc,EAAE7H,KAAK,CAACA,KAAK,CAACsG,cAAc;UAC1CxC,eAAe,EAAErB,UAAU,CAAClB;QAC9B,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN,MAAM;QACJsE,KAAK,EAAE,kBAAkB;QACzB1E,QAAQ,EAAE,CAAC;QACX0G,cAAc,EAAE,CAAC;QACjB/D,eAAe,EAAErB,UAAU,CAAClB;MAC9B,CAAC;MACD;IACF;IAEA,IAAIX,MAAM,CAAC6G,IAAI,KAAK,yBAAyB,EAAE;MAC7C,MAAM;QACJ5B,KAAK,EAAE,WAAW;QAClB1E,QAAQ,EAAE,CAAC;QACX0G,cAAc,EAAEpF,UAAU,CAAClB,MAAM;QACjCuC,eAAe,EAAErB,UAAU,CAAClB;MAC9B,CAAC;MACD;IACF;IACA,IAAIX,MAAM,CAAC6G,IAAI,KAAK,yBAAyB,EAAE;IAE/C,KAAK,IAAIQ,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGxF,UAAU,CAAClB,MAAM,EAAE0G,KAAK,IAAI,CAAC,EAAE;MACzD,MAAM/D,SAAS,GAAGzB,UAAU,CAACwF,KAAK,CAAC;MACnC,IAAI;QACF,MAAM9D,UAAU,GAAG,MAAM4D,kBAAkB,CAAC7D,SAAS,CAAC;QACtD,WAAW,MAAM/C,QAAQ,IAAI,IAAI,CAAC8C,aAAa,CAC7Cd,MAAM,EACNe,SAAS,EACTC,UACF,CAAC,EAAE;UACD,MAAM;YACJ,GAAGhD,QAAQ;YACX0G,cAAc,EAAEI,KAAK;YACrBnE,eAAe,EAAErB,UAAU,CAAClB;UAC9B,CAAC;QACH;MACF,CAAC,CAAC,OAAOnB,KAAK,EAAE;QACd,MAAM;UACJyF,KAAK,EAAE,QAAQ;UACf1E,QAAQ,EAAE,CAAC;UACXf,KAAK,EAAED,YAAY,CAACC,KAAK,CAAC;UAC1ByH,cAAc,EAAEI,KAAK;UACrBnE,eAAe,EAAErB,UAAU,CAAClB;QAC9B,CAAC;MACH;IACF;EACF;EAEA2G,iBAAiBA,CAAA,EAAiB;IAChC,OAAO,IAAI,CAAC3F,KAAK,CAACe,GAAG,CAAC,CAAC,CAAC6E,MAAM,CAC3B1D,IAAI,IAAKA,IAAI,CAACpB,MAAM,KAAK,SAAS,IAAIoB,IAAI,CAACpB,MAAM,KAAK,WACzD,CAAC;EACH;EAEA+E,aAAaA,CAAA,EAAiB;IAC5B,OAAO,IAAI,CAAC7F,KAAK,CAACe,GAAG,CAAC,CAAC;EACzB;EAEA+E,kBAAkBA,CAChBlF,MAAuB,EACvBwB,aAAqB,EACrBoD,kBAA2C,EAC3C7F,OAA6B,GAAG,CAAC,CAAC,EAChB;IAClB,IAAI,CAACkB,WAAW,CAAC,CAAC;IAClB,IAAI,IAAI,CAACpB,sBAAsB,EAAEsG,QAAQ,EAAE;MACzC,MAAM,IAAIjI,KAAK,CAAC,uCAAuC,CAAC;IAC1D;IACA,MAAMkI,OAAO,GAAG,IAAIC,kCAAgB,CAClC,IAAI,EACJ,IAAI,EACJrF,MAAM,EACNwB,aAAa,EACboD,kBAAkB,EAClB7F,OAAO,CAACuG,WAAW,EACnBvG,OAAO,CAACwG,eACV,CAAC;IACD,IAAI,CAAC1G,sBAAsB,GAAGuG,OAAO;IACrC,IAAAI,oDAAkC,EAACJ,OAAO,EAAE,MAAM;MAChD,IAAI,IAAI,CAACvG,sBAAsB,KAAKuG,OAAO,EAAE;QAC3C,IAAI,CAACvG,sBAAsB,GAAG,IAAI;MACpC;IACF,CAAC,CAAC;IACF,KAAKuG,OAAO,CAAC9H,KAAK,CAAC,CAAC,CAACmI,KAAK,CAAC,MAAMjH,SAAS,CAAC;IAC3C,OAAO4G,OAAO;EAChB;EAEAM,yBAAyBA,CAAA,EAA4B;IACnD,OAAO,IAAI,CAAC7G,sBAAsB;EACpC;EAEA,MAAM8G,YAAYA,CAACC,MAAc,EAAiB;IAChD,IAAI,CAAC3F,WAAW,CAAC,CAAC;IAClB,MAAM,IAAI,CAACb,KAAK,CAACyG,MAAM,CAACD,MAAM,CAAC;EACjC;EAEA,MAAME,kBAAkBA,CAAA,EAAkB;IACxC,IAAI,CAAC7F,WAAW,CAAC,CAAC;IAClB,MAAM,IAAI,CAACb,KAAK,CAAC2G,WAAW,CAAC,CAAC;EAChC;EAEA,MAAMC,qBAAqBA,CAAA,EAAkB;IAC3C,IAAI,CAAC/F,WAAW,CAAC,CAAC;IAClB,MAAM,IAAI,CAACb,KAAK,CAAC6G,cAAc,CAAC,CAAC;EACnC;EAEA,MAAMC,eAAeA,CAAA,EAAkB;IACrC,IAAI,CAACjG,WAAW,CAAC,CAAC;IAClB,MAAM,IAAI,CAACb,KAAK,CAAC+G,QAAQ,CAAC,CAAC;EAC7B;EAEAC,YAAYA,CAAA,EAAS;IACnB,IAAI,CAAChH,KAAK,CAACiH,KAAK,CAAC,CAAC;EACpB;EAEAC,aAAaA,CAAA,EAAS;IACpB,IAAI,CAAClH,KAAK,CAACmH,MAAM,CAAC,CAAC;EACrB;EAEAC,OAAOA,CAAA,EAAS;IACd,IAAI,IAAI,CAAC5H,SAAS,EAAE;IACpB,IAAI,CAACA,SAAS,GAAG,IAAI;IACrB,IAAI,CAACQ,KAAK,CAACoH,OAAO,CAAC,CAAC;IACpB,IAAI,CAAC3H,sBAAsB,EAAE4H,KAAK,CAAC,CAAC;IACpC,IAAI,CAAC5H,sBAAsB,GAAG,IAAI;IAClC,IAAI,CAAC6H,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC/H,WAAW,GAAG,KAAK;EAC1B;EAEQ8D,gBAAgBA,CACtBjB,aAAqB,EACrBxD,QAAsB,EACR;IACd,IAAI,CAAC0B,IAAI,CAAC,cAAc,EAAE8B,aAAa,EAAExD,QAAQ,CAAC;IAClD,OAAOA,QAAQ;EACjB;EAEQiC,WAAWA,CAAA,EAAS;IAC1B,IAAI,CAACH,WAAW,CAAC,CAAC;IAClB,IAAI,CAAC,IAAI,CAACnB,WAAW,EAAE;MACrB,MAAM,IAAIzB,KAAK,CAAC,2CAA2C,CAAC;IAC9D;EACF;EAEQ4C,WAAWA,CAAA,EAAS;IAC1B,IAAI,IAAI,CAAClB,SAAS,EAAE,MAAM,IAAI1B,KAAK,CAAC,qCAAqC,CAAC;EAC5E;AACF;AAACyJ,OAAA,CAAAlI,gBAAA,GAAAA,gBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.persistedUploadQueue = persistedUploadQueue;
|
|
7
|
+
exports.rejectRecordingDataStore = rejectRecordingDataStore;
|
|
8
|
+
exports.restoreUploadQueue = restoreUploadQueue;
|
|
9
|
+
const invalid = () => {
|
|
10
|
+
throw new Error('Invalid upload recovery journal');
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
/** Whitelist, never spread a runtime object into persistent storage. */
|
|
14
|
+
function persistedUploadQueue(tasks) {
|
|
15
|
+
return tasks.map(task => ({
|
|
16
|
+
id: task.id,
|
|
17
|
+
recordingId: task.recordingId,
|
|
18
|
+
deviceId: task.deviceId,
|
|
19
|
+
localPath: task.localPath,
|
|
20
|
+
uploadUrl: '',
|
|
21
|
+
status: task.status,
|
|
22
|
+
retryCount: task.retryCount,
|
|
23
|
+
createdAt: new Date(task.createdAt),
|
|
24
|
+
updatedAt: new Date(task.updatedAt),
|
|
25
|
+
...(task.recordingUuid === undefined ? {} : {
|
|
26
|
+
recordingUuid: task.recordingUuid
|
|
27
|
+
}),
|
|
28
|
+
...(task.recoveryScope === undefined ? {} : {
|
|
29
|
+
recoveryScope: task.recoveryScope
|
|
30
|
+
}),
|
|
31
|
+
...(task.fileSizeBytes === undefined ? {} : {
|
|
32
|
+
fileSizeBytes: task.fileSizeBytes
|
|
33
|
+
}),
|
|
34
|
+
...(task.nextAttemptAt === undefined ? {} : {
|
|
35
|
+
nextAttemptAt: task.nextAttemptAt
|
|
36
|
+
}),
|
|
37
|
+
...(task.contentType === undefined ? {} : {
|
|
38
|
+
contentType: task.contentType
|
|
39
|
+
}),
|
|
40
|
+
...(task.contentSha256 === undefined ? {} : {
|
|
41
|
+
contentSha256: task.contentSha256
|
|
42
|
+
}),
|
|
43
|
+
relayUpload: task.relayUpload ?? !!task.relay
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
function restoreUploadQueue(value) {
|
|
47
|
+
if (!Array.isArray(value)) return invalid();
|
|
48
|
+
const ids = new Set();
|
|
49
|
+
const validated = value.map(entry => {
|
|
50
|
+
if (!entry || typeof entry !== 'object') return invalid();
|
|
51
|
+
const task = entry;
|
|
52
|
+
for (const field of ['id', 'recordingId', 'deviceId']) {
|
|
53
|
+
if (typeof task[field] !== 'string' || !task[field]) return invalid();
|
|
54
|
+
}
|
|
55
|
+
if (typeof task.localPath !== 'string' || ids.has(task.id)) return invalid();
|
|
56
|
+
ids.add(task.id);
|
|
57
|
+
if (!['pending', 'uploading', 'failed', 'completed'].includes(task.status)) return invalid();
|
|
58
|
+
if (!Number.isSafeInteger(task.retryCount) || task.retryCount < 0) return invalid();
|
|
59
|
+
for (const field of ['recordingUuid', 'recoveryScope', 'contentType', 'contentSha256']) {
|
|
60
|
+
if (task[field] !== undefined && typeof task[field] !== 'string') return invalid();
|
|
61
|
+
}
|
|
62
|
+
for (const field of ['fileSizeBytes', 'nextAttemptAt']) {
|
|
63
|
+
if (task[field] !== undefined && (!Number.isSafeInteger(task[field]) || task[field] < 0)) return invalid();
|
|
64
|
+
}
|
|
65
|
+
if (task.relayUpload !== undefined && typeof task.relayUpload !== 'boolean') return invalid();
|
|
66
|
+
const createdAt = new Date(task.createdAt);
|
|
67
|
+
const updatedAt = new Date(task.updatedAt);
|
|
68
|
+
if (!Number.isFinite(createdAt.getTime()) || !Number.isFinite(updatedAt.getTime())) return invalid();
|
|
69
|
+
return {
|
|
70
|
+
...task,
|
|
71
|
+
createdAt,
|
|
72
|
+
updatedAt,
|
|
73
|
+
status: task.status === 'uploading' ? 'pending' : task.status
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
return persistedUploadQueue(validated);
|
|
77
|
+
}
|
|
78
|
+
function rejectRecordingDataStore(value) {
|
|
79
|
+
if (value !== undefined) {
|
|
80
|
+
throw new Error('RecordingDataStore byte callbacks are unsupported; recording files are native-owned');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=uploadRecoveryMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["invalid","Error","persistedUploadQueue","tasks","map","task","id","recordingId","deviceId","localPath","uploadUrl","status","retryCount","createdAt","Date","updatedAt","recordingUuid","undefined","recoveryScope","fileSizeBytes","nextAttemptAt","contentType","contentSha256","relayUpload","relay","restoreUploadQueue","value","Array","isArray","ids","Set","validated","entry","field","has","add","includes","Number","isSafeInteger","isFinite","getTime","rejectRecordingDataStore"],"sourceRoot":"../../../src","sources":["managers/uploadRecoveryMetadata.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SDK_VERSION = exports.SDK_PACKAGE = void 0;
|
|
7
|
+
// Generated by cargo xtask client-identity generate. Do not edit.
|
|
8
|
+
const SDK_PACKAGE = exports.SDK_PACKAGE = '@bota.dev/react-native-app-sdk';
|
|
9
|
+
const SDK_VERSION = exports.SDK_VERSION = '2.0.0-beta.11';
|
|
10
|
+
//# sourceMappingURL=sdkIdentity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["SDK_PACKAGE","exports","SDK_VERSION"],"sourceRoot":"../../src","sources":["sdkIdentity.ts"],"mappings":";;;;;;AAAA;AACO,MAAMA,WAAW,GAAAC,OAAA,CAAAD,WAAA,GAAG,gCAAgC;AACpD,MAAME,WAAW,GAAAD,OAAA,CAAAC,WAAA,GAAG,eAAe","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeBotaDeviceSDK.ts"],"mappings":";;;;;;AAEA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeBotaDeviceSDK.ts"],"mappings":";;;;;;AAEA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GA6lBpCC,gCAAmB,CAACC,GAAG,CAAO,eAAe,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
/** Preparation/result JSON contains only bounded identity metadata. Signed
|
|
9
|
+
* documents and recording bytes stay in the native backend adapter. */
|
|
10
|
+
var _default = exports.default = _reactNative.TurboModuleRegistry.get('BotaUploadV2Backend');
|
|
11
|
+
//# sourceMappingURL=NativeBotaUploadV2Backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","get"],"sourceRoot":"../../../src","sources":["specs/NativeBotaUploadV2Backend.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAGA;AACA;AADA,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAceC,gCAAmB,CAACC,GAAG,CAAO,qBAAqB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createUploadRecoveryProvider = createUploadRecoveryProvider;
|
|
7
|
+
/** A host-owned, authenticated lease. It must permanently reject changed identities. */
|
|
8
|
+
|
|
9
|
+
/** Build scoped metadata recovery while native SDK storage retains recording bytes.
|
|
10
|
+
* A null host lease parks work until its original account is available.
|
|
11
|
+
* Even an already-uploaded recording requires the exact backend completion ACK.
|
|
12
|
+
*/
|
|
13
|
+
function createUploadRecoveryProvider(openBackend) {
|
|
14
|
+
return async task => {
|
|
15
|
+
if (!task.recoveryScope || task.signal.aborted) return null;
|
|
16
|
+
let backend = null;
|
|
17
|
+
try {
|
|
18
|
+
backend = await openBackend(task);
|
|
19
|
+
if (!backend) return null;
|
|
20
|
+
const api = backend;
|
|
21
|
+
const check = (signal = task.signal) => {
|
|
22
|
+
api.checkScope();
|
|
23
|
+
if (api.signal.aborted || task.signal.aborted || signal.aborted) throw new Error('Upload recovery cancelled');
|
|
24
|
+
};
|
|
25
|
+
if (api.scopeKey !== task.recoveryScope) {
|
|
26
|
+
api.dispose();
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
check();
|
|
30
|
+
const recording = await api.getRecording(task.recordingId, task.signal);
|
|
31
|
+
check();
|
|
32
|
+
if (recording.id !== task.recordingId || !task.relayUpload && (task.contentSha256 && recording.content_sha256 && task.contentSha256 !== recording.content_sha256 || task.fileSizeBytes !== undefined && recording.file_size_bytes != null && task.fileSizeBytes !== recording.file_size_bytes)) throw new Error('Upload recovery identity or evidence changed');
|
|
33
|
+
if (!['pending', 'uploaded', 'integrity_failure'].includes(recording.status)) throw new Error('Recording unavailable for recovery');
|
|
34
|
+
const start = Date.parse(String(recording.metadata?.started_at ?? ''));
|
|
35
|
+
const end = Date.parse(String(recording.metadata?.ended_at ?? ''));
|
|
36
|
+
const duration = Number.isFinite(start) && Number.isFinite(end) && end >= start ? Math.floor((end - start) / 1000) : undefined;
|
|
37
|
+
const target = recording.status === 'uploaded' ? {
|
|
38
|
+
uploadUrl: ''
|
|
39
|
+
} : await api.getUploadInfo(task.recordingId, task.relayUpload, task.contentType, task.signal);
|
|
40
|
+
check();
|
|
41
|
+
return {
|
|
42
|
+
...target,
|
|
43
|
+
recordingId: task.recordingId,
|
|
44
|
+
recoveryScope: task.recoveryScope,
|
|
45
|
+
alreadyUploaded: recording.status === 'uploaded',
|
|
46
|
+
signal: api.signal,
|
|
47
|
+
dispose: () => api.dispose(),
|
|
48
|
+
complete: async ({
|
|
49
|
+
fileSizeBytes,
|
|
50
|
+
contentSha256,
|
|
51
|
+
signal
|
|
52
|
+
}) => {
|
|
53
|
+
check(signal);
|
|
54
|
+
await api.completeRecording(task.recordingId, {
|
|
55
|
+
duration_seconds: duration,
|
|
56
|
+
file_size_bytes: fileSizeBytes,
|
|
57
|
+
content_sha256: contentSha256
|
|
58
|
+
}, signal);
|
|
59
|
+
check(signal);
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
} catch {
|
|
63
|
+
backend?.dispose();
|
|
64
|
+
throw new Error('Upload recovery request failed');
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=uploadRecovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createUploadRecoveryProvider","openBackend","task","recoveryScope","signal","aborted","backend","api","check","checkScope","Error","scopeKey","dispose","recording","getRecording","recordingId","id","relayUpload","contentSha256","content_sha256","fileSizeBytes","undefined","file_size_bytes","includes","status","start","Date","parse","String","metadata","started_at","end","ended_at","duration","Number","isFinite","Math","floor","target","uploadUrl","getUploadInfo","contentType","alreadyUploaded","complete","completeRecording","duration_seconds"],"sourceRoot":"../../src","sources":["uploadRecovery.ts"],"mappings":"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","ignoreList":[]}
|