@bota.dev/react-native-app-sdk 2.0.0-beta.1 → 2.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +104 -4
  2. package/android/build.gradle +1 -0
  3. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevices.kt +22 -0
  4. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDiagnostics.kt +53 -0
  5. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogs.kt +16 -0
  6. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploads.kt +144 -14
  7. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordings.kt +150 -29
  8. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKEncryptedUploadV2Materials.kt +27 -0
  9. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKModule.kt +86 -3
  10. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevicesTest.kt +35 -0
  11. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogsTest.kt +33 -0
  12. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploadsTest.kt +135 -6
  13. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingsTest.kt +236 -10
  14. package/generated/codegen-contract.json +568 -8
  15. package/ios/BotaDeviceSDK.mm +114 -0
  16. package/ios/BotaDeviceSDKAppleBridge.swift +141 -4
  17. package/ios/BotaDeviceSDKAppleDevices.swift +11 -0
  18. package/ios/BotaDeviceSDKAppleDiagnostics.swift +40 -0
  19. package/ios/BotaDeviceSDKAppleLogs.swift +18 -0
  20. package/ios/BotaDeviceSDKAppleRecordingUploads.swift +138 -6
  21. package/ios/BotaDeviceSDKAppleRecordings.swift +113 -5
  22. package/ios/BotaDeviceSDKEncryptedUploadV2Materials.swift +40 -0
  23. package/lib/commonjs/BotaClient.js +16 -2
  24. package/lib/commonjs/BotaClient.js.map +1 -1
  25. package/lib/commonjs/ble/constants.js +5 -1
  26. package/lib/commonjs/ble/constants.js.map +1 -1
  27. package/lib/commonjs/ble/deviceDiagnostics.js +240 -0
  28. package/lib/commonjs/ble/deviceDiagnostics.js.map +1 -0
  29. package/lib/commonjs/client.js +183 -28
  30. package/lib/commonjs/client.js.map +1 -1
  31. package/lib/commonjs/clientPresence.js +26 -0
  32. package/lib/commonjs/clientPresence.js.map +1 -0
  33. package/lib/commonjs/index.js +29 -0
  34. package/lib/commonjs/index.js.map +1 -1
  35. package/lib/commonjs/managers/DeviceManager.js +23 -0
  36. package/lib/commonjs/managers/DeviceManager.js.map +1 -1
  37. package/lib/commonjs/managers/NativeUploadQueue.js +386 -0
  38. package/lib/commonjs/managers/NativeUploadQueue.js.map +1 -0
  39. package/lib/commonjs/managers/RecordingManager.js +83 -102
  40. package/lib/commonjs/managers/RecordingManager.js.map +1 -1
  41. package/lib/commonjs/managers/uploadRecoveryMetadata.js +83 -0
  42. package/lib/commonjs/managers/uploadRecoveryMetadata.js.map +1 -0
  43. package/lib/commonjs/sdkIdentity.js +10 -0
  44. package/lib/commonjs/sdkIdentity.js.map +1 -0
  45. package/lib/commonjs/specs/NativeBotaDeviceSDK.js.map +1 -1
  46. package/lib/commonjs/uploadRecovery.js +68 -0
  47. package/lib/commonjs/uploadRecovery.js.map +1 -0
  48. package/lib/module/BotaClient.js +16 -2
  49. package/lib/module/BotaClient.js.map +1 -1
  50. package/lib/module/ble/constants.js +4 -0
  51. package/lib/module/ble/constants.js.map +1 -1
  52. package/lib/module/ble/deviceDiagnostics.js +234 -0
  53. package/lib/module/ble/deviceDiagnostics.js.map +1 -0
  54. package/lib/module/client.js +183 -28
  55. package/lib/module/client.js.map +1 -1
  56. package/lib/module/clientPresence.js +22 -0
  57. package/lib/module/clientPresence.js.map +1 -0
  58. package/lib/module/index.js +4 -0
  59. package/lib/module/index.js.map +1 -1
  60. package/lib/module/managers/DeviceManager.js +23 -0
  61. package/lib/module/managers/DeviceManager.js.map +1 -1
  62. package/lib/module/managers/NativeUploadQueue.js +380 -0
  63. package/lib/module/managers/NativeUploadQueue.js.map +1 -0
  64. package/lib/module/managers/RecordingManager.js +83 -102
  65. package/lib/module/managers/RecordingManager.js.map +1 -1
  66. package/lib/module/managers/uploadRecoveryMetadata.js +77 -0
  67. package/lib/module/managers/uploadRecoveryMetadata.js.map +1 -0
  68. package/lib/module/sdkIdentity.js +6 -0
  69. package/lib/module/sdkIdentity.js.map +1 -0
  70. package/lib/module/specs/NativeBotaDeviceSDK.js.map +1 -1
  71. package/lib/module/uploadRecovery.js +64 -0
  72. package/lib/module/uploadRecovery.js.map +1 -0
  73. package/lib/typescript/BotaClient.d.ts +2 -0
  74. package/lib/typescript/BotaClient.d.ts.map +1 -1
  75. package/lib/typescript/ble/constants.d.ts +4 -0
  76. package/lib/typescript/ble/constants.d.ts.map +1 -1
  77. package/lib/typescript/ble/deviceDiagnostics.d.ts +10 -0
  78. package/lib/typescript/ble/deviceDiagnostics.d.ts.map +1 -0
  79. package/lib/typescript/client.d.ts +24 -3
  80. package/lib/typescript/client.d.ts.map +1 -1
  81. package/lib/typescript/clientPresence.d.ts +26 -0
  82. package/lib/typescript/clientPresence.d.ts.map +1 -0
  83. package/lib/typescript/index.d.ts +10 -4
  84. package/lib/typescript/index.d.ts.map +1 -1
  85. package/lib/typescript/managers/DeviceManager.d.ts +5 -1
  86. package/lib/typescript/managers/DeviceManager.d.ts.map +1 -1
  87. package/lib/typescript/managers/NativeUploadQueue.d.ts +41 -0
  88. package/lib/typescript/managers/NativeUploadQueue.d.ts.map +1 -0
  89. package/lib/typescript/managers/RecordingManager.d.ts +3 -8
  90. package/lib/typescript/managers/RecordingManager.d.ts.map +1 -1
  91. package/lib/typescript/managers/types.d.ts +6 -1
  92. package/lib/typescript/managers/types.d.ts.map +1 -1
  93. package/lib/typescript/managers/uploadRecoveryMetadata.d.ts +6 -0
  94. package/lib/typescript/managers/uploadRecoveryMetadata.d.ts.map +1 -0
  95. package/lib/typescript/models/Device.d.ts +42 -0
  96. package/lib/typescript/models/Device.d.ts.map +1 -1
  97. package/lib/typescript/models/Recording.d.ts +47 -0
  98. package/lib/typescript/models/Recording.d.ts.map +1 -1
  99. package/lib/typescript/models/Status.d.ts +5 -1
  100. package/lib/typescript/models/Status.d.ts.map +1 -1
  101. package/lib/typescript/sdkIdentity.d.ts +3 -0
  102. package/lib/typescript/sdkIdentity.d.ts.map +1 -0
  103. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts +70 -0
  104. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts.map +1 -1
  105. package/lib/typescript/uploadRecovery.d.ts +27 -0
  106. package/lib/typescript/uploadRecovery.d.ts.map +1 -0
  107. package/package.json +1 -1
  108. package/scripts/bota_device_sdk_spm_workaround.rb +26 -15
  109. package/src/BotaClient.ts +17 -3
  110. package/src/ble/constants.ts +5 -0
  111. package/src/ble/deviceDiagnostics.ts +238 -0
  112. package/src/client.ts +189 -18
  113. package/src/clientPresence.ts +33 -0
  114. package/src/index.ts +18 -0
  115. package/src/managers/DeviceManager.ts +23 -0
  116. package/src/managers/NativeUploadQueue.ts +330 -0
  117. package/src/managers/RecordingManager.ts +83 -116
  118. package/src/managers/types.ts +7 -1
  119. package/src/managers/uploadRecoveryMetadata.ts +59 -0
  120. package/src/models/Device.ts +43 -0
  121. package/src/models/Recording.ts +52 -0
  122. package/src/models/Status.ts +5 -1
  123. package/src/sdkIdentity.ts +3 -0
  124. package/src/specs/NativeBotaDeviceSDK.ts +66 -0
  125. 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
- this.tasks = (await this.client.recordings.loadUploadQueue()).map(task => ({
69
- ...task,
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.tasks.push(task);
116
- await this.persistTasks();
117
- this.emitQueueUpdated();
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
- await this.updateTask(task.id, {
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
- relay: transferResult.e2eEncrypted ? uploadInfo.relay : undefined
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
- const upload = observeProgress(onProgress => this.runUpload(task.id, onProgress));
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.requireTask(task.id).status !== 'completed') {
182
- await this.updateTask(task.id, {
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: failure.message
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.tasks.filter(task => task.status === 'pending' || task.status === 'uploading');
356
+ return this.queue.all().filter(task => task.status === 'pending' || task.status === 'uploading');
304
357
  }
305
358
  getAllUploads() {
306
- return this.tasks.map(task => ({
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
- await this.client.recordings.cancelRecordingUpload(taskId);
330
- this.tasks = this.tasks.filter(task => task.id !== taskId);
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
- if (this.paused) return;
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.tasks = this.tasks.filter(task => task.status !== 'completed');
352
- await this.persistTasks();
353
- this.emitQueueUpdated();
388
+ this.assertReady();
389
+ await this.queue.clearCompleted();
354
390
  }
355
391
  async clearAllUploads() {
356
- const ids = this.tasks.map(task => task.id);
357
- await Promise.all(ids.map(taskId => this.client.recordings.cancelRecordingUpload(taskId).catch(() => undefined)));
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.paused = true;
396
+ this.queue.pause();
364
397
  }
365
398
  resumeUploads() {
366
- this.paused = false;
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":"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","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.10';
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,GA2hBpCC,gCAAmB,CAACC,GAAG,CAAO,eAAe,CAAC","ignoreList":[]}
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,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":[]}
@@ -5,6 +5,7 @@ import { getCompatibilityClient } from './compatibility/runtime';
5
5
  import { DeviceManager } from './managers/DeviceManager';
6
6
  import { OTAManager } from './managers/OTAManager';
7
7
  import { RecordingManager } from './managers/RecordingManager';
8
+ import { rejectRecordingDataStore } from './managers/uploadRecoveryMetadata';
8
9
  import { BluetoothError, SdkError } from './utils/errors';
9
10
  import { logger } from './utils/logger';
10
11
  const log = logger.tag('BotaClient');
@@ -13,9 +14,15 @@ const normalizeConfig = config => ({
13
14
  backgroundSyncEnabled: config.backgroundSyncEnabled ?? true,
14
15
  wifiOnlyUpload: config.wifiOnlyUpload ?? false,
15
16
  logLevel: config.logLevel ?? 'warn',
16
- debug: config.debug ?? false
17
+ debug: config.debug ?? false,
18
+ ...(config.uploadRecoveryProvider ? {
19
+ uploadRecoveryProvider: config.uploadRecoveryProvider
20
+ } : {})
17
21
  });
18
22
  class BotaClientImpl extends EventEmitter {
23
+ clientPresence = {
24
+ nextReport: async deviceId => this._deviceManager?.clientPresence.nextReport(deviceId) ?? null
25
+ };
19
26
  _config = null;
20
27
  _state = 'uninitialized';
21
28
  _bluetoothState = 'unknown';
@@ -55,6 +62,11 @@ class BotaClientImpl extends EventEmitter {
55
62
  return this._otaManager;
56
63
  }
57
64
  configure(config = {}) {
65
+ try {
66
+ rejectRecordingDataStore(config.recordingDataStore);
67
+ } catch (error) {
68
+ return Promise.reject(error);
69
+ }
58
70
  if (this._configurePromise && !this._destroyPromise) {
59
71
  return this._configurePromise;
60
72
  }
@@ -135,7 +147,9 @@ class BotaClientImpl extends EventEmitter {
135
147
  this.setBluetoothState(capabilities.bluetooth ? 'poweredOn' : 'unsupported');
136
148
  deviceManager = new DeviceManager();
137
149
  await deviceManager.initialize();
138
- recordingManager = new RecordingManager();
150
+ recordingManager = new RecordingManager({
151
+ uploadRecoveryProvider: config.uploadRecoveryProvider
152
+ });
139
153
  await recordingManager.initialize();
140
154
  otaManager = new OTAManager(deviceManager);
141
155
  this._deviceManager = deviceManager;