@bota.dev/react-native-app-sdk 2.0.0-beta.0

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 (173) hide show
  1. package/BotaDeviceSDK.podspec +55 -0
  2. package/LICENSE +21 -0
  3. package/README.md +101 -0
  4. package/android/build.gradle +76 -0
  5. package/android/src/main/AndroidManifest.xml +1 -0
  6. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevices.kt +172 -0
  7. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLifecycle.kt +100 -0
  8. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogs.kt +82 -0
  9. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidModels.kt +476 -0
  10. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidOTA.kt +58 -0
  11. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploads.kt +180 -0
  12. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordings.kt +751 -0
  13. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidSecurity.kt +509 -0
  14. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidWiFi.kt +125 -0
  15. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKEncryptedUploadV2Materials.kt +46 -0
  16. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKModule.kt +723 -0
  17. package/android/src/main/java/dev/bota/sdk/reactnative/BotaDeviceSDKPackage.kt +33 -0
  18. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidDevicesTest.kt +211 -0
  19. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLifecycleTest.kt +132 -0
  20. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidLogsTest.kt +57 -0
  21. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidOTATest.kt +75 -0
  22. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingUploadsTest.kt +147 -0
  23. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidRecordingsTest.kt +355 -0
  24. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidSecurityTest.kt +523 -0
  25. package/android/src/test/java/dev/bota/sdk/reactnative/BotaDeviceSDKAndroidWiFiTest.kt +100 -0
  26. package/generated/codegen-contract.json +3593 -0
  27. package/ios/BotaDeviceSDK.mm +1300 -0
  28. package/ios/BotaDeviceSDKAppleBridge.swift +2260 -0
  29. package/ios/BotaDeviceSDKAppleDevices.swift +191 -0
  30. package/ios/BotaDeviceSDKAppleLifecycle.swift +167 -0
  31. package/ios/BotaDeviceSDKAppleLogs.swift +79 -0
  32. package/ios/BotaDeviceSDKAppleOTA.swift +73 -0
  33. package/ios/BotaDeviceSDKAppleRecordingUploads.swift +178 -0
  34. package/ios/BotaDeviceSDKAppleRecordings.swift +670 -0
  35. package/ios/BotaDeviceSDKAppleSecurity.swift +586 -0
  36. package/ios/BotaDeviceSDKAppleWiFi.swift +128 -0
  37. package/ios/BotaDeviceSDKEncryptedUploadV2Materials.swift +99 -0
  38. package/lib/commonjs/BotaClient.js +194 -0
  39. package/lib/commonjs/BotaClient.js.map +1 -0
  40. package/lib/commonjs/ble/constants.js +10 -0
  41. package/lib/commonjs/ble/constants.js.map +1 -0
  42. package/lib/commonjs/ble/deviceLogs.js +50 -0
  43. package/lib/commonjs/ble/deviceLogs.js.map +1 -0
  44. package/lib/commonjs/cache/DeviceStateCache.js +6 -0
  45. package/lib/commonjs/cache/DeviceStateCache.js.map +1 -0
  46. package/lib/commonjs/client.js +746 -0
  47. package/lib/commonjs/client.js.map +1 -0
  48. package/lib/commonjs/compatibility/runtime.js +44 -0
  49. package/lib/commonjs/compatibility/runtime.js.map +1 -0
  50. package/lib/commonjs/index.js +123 -0
  51. package/lib/commonjs/index.js.map +1 -0
  52. package/lib/commonjs/managers/DeviceManager.js +647 -0
  53. package/lib/commonjs/managers/DeviceManager.js.map +1 -0
  54. package/lib/commonjs/managers/OTAManager.js +140 -0
  55. package/lib/commonjs/managers/OTAManager.js.map +1 -0
  56. package/lib/commonjs/managers/RecordingManager.js +444 -0
  57. package/lib/commonjs/managers/RecordingManager.js.map +1 -0
  58. package/lib/commonjs/managers/StreamingSession.js +175 -0
  59. package/lib/commonjs/managers/StreamingSession.js.map +1 -0
  60. package/lib/commonjs/managers/types.js +6 -0
  61. package/lib/commonjs/managers/types.js.map +1 -0
  62. package/lib/commonjs/models/Device.js +2 -0
  63. package/lib/commonjs/models/Device.js.map +1 -0
  64. package/lib/commonjs/models/Recording.js +2 -0
  65. package/lib/commonjs/models/Recording.js.map +1 -0
  66. package/lib/commonjs/models/Status.js +6 -0
  67. package/lib/commonjs/models/Status.js.map +1 -0
  68. package/lib/commonjs/package.json +1 -0
  69. package/lib/commonjs/specs/NativeBotaDeviceSDK.js +9 -0
  70. package/lib/commonjs/specs/NativeBotaDeviceSDK.js.map +1 -0
  71. package/lib/commonjs/sync/syncStatus.js +178 -0
  72. package/lib/commonjs/sync/syncStatus.js.map +1 -0
  73. package/lib/commonjs/utils/errors.js +194 -0
  74. package/lib/commonjs/utils/errors.js.map +1 -0
  75. package/lib/commonjs/utils/logger.js +84 -0
  76. package/lib/commonjs/utils/logger.js.map +1 -0
  77. package/lib/module/BotaClient.js +189 -0
  78. package/lib/module/BotaClient.js.map +1 -0
  79. package/lib/module/ble/constants.js +6 -0
  80. package/lib/module/ble/constants.js.map +1 -0
  81. package/lib/module/ble/deviceLogs.js +45 -0
  82. package/lib/module/ble/deviceLogs.js.map +1 -0
  83. package/lib/module/cache/DeviceStateCache.js +4 -0
  84. package/lib/module/cache/DeviceStateCache.js.map +1 -0
  85. package/lib/module/client.js +740 -0
  86. package/lib/module/client.js.map +1 -0
  87. package/lib/module/compatibility/runtime.js +35 -0
  88. package/lib/module/compatibility/runtime.js.map +1 -0
  89. package/lib/module/index.js +17 -0
  90. package/lib/module/index.js.map +1 -0
  91. package/lib/module/managers/DeviceManager.js +641 -0
  92. package/lib/module/managers/DeviceManager.js.map +1 -0
  93. package/lib/module/managers/OTAManager.js +134 -0
  94. package/lib/module/managers/OTAManager.js.map +1 -0
  95. package/lib/module/managers/RecordingManager.js +438 -0
  96. package/lib/module/managers/RecordingManager.js.map +1 -0
  97. package/lib/module/managers/StreamingSession.js +168 -0
  98. package/lib/module/managers/StreamingSession.js.map +1 -0
  99. package/lib/module/managers/types.js +4 -0
  100. package/lib/module/managers/types.js.map +1 -0
  101. package/lib/module/models/Device.js +2 -0
  102. package/lib/module/models/Device.js.map +1 -0
  103. package/lib/module/models/Recording.js +2 -0
  104. package/lib/module/models/Recording.js.map +1 -0
  105. package/lib/module/models/Status.js +4 -0
  106. package/lib/module/models/Status.js.map +1 -0
  107. package/lib/module/specs/NativeBotaDeviceSDK.js +5 -0
  108. package/lib/module/specs/NativeBotaDeviceSDK.js.map +1 -0
  109. package/lib/module/sync/syncStatus.js +174 -0
  110. package/lib/module/sync/syncStatus.js.map +1 -0
  111. package/lib/module/utils/errors.js +183 -0
  112. package/lib/module/utils/errors.js.map +1 -0
  113. package/lib/module/utils/logger.js +80 -0
  114. package/lib/module/utils/logger.js.map +1 -0
  115. package/lib/typescript/BotaClient.d.ts +40 -0
  116. package/lib/typescript/BotaClient.d.ts.map +1 -0
  117. package/lib/typescript/ble/constants.d.ts +4 -0
  118. package/lib/typescript/ble/constants.d.ts.map +1 -0
  119. package/lib/typescript/ble/deviceLogs.d.ts +10 -0
  120. package/lib/typescript/ble/deviceLogs.d.ts.map +1 -0
  121. package/lib/typescript/cache/DeviceStateCache.d.ts +14 -0
  122. package/lib/typescript/cache/DeviceStateCache.d.ts.map +1 -0
  123. package/lib/typescript/client.d.ts +208 -0
  124. package/lib/typescript/client.d.ts.map +1 -0
  125. package/lib/typescript/compatibility/runtime.d.ts +11 -0
  126. package/lib/typescript/compatibility/runtime.d.ts.map +1 -0
  127. package/lib/typescript/index.d.ts +19 -0
  128. package/lib/typescript/index.d.ts.map +1 -0
  129. package/lib/typescript/managers/DeviceManager.d.ts +117 -0
  130. package/lib/typescript/managers/DeviceManager.d.ts.map +1 -0
  131. package/lib/typescript/managers/OTAManager.d.ts +25 -0
  132. package/lib/typescript/managers/OTAManager.d.ts.map +1 -0
  133. package/lib/typescript/managers/RecordingManager.d.ts +54 -0
  134. package/lib/typescript/managers/RecordingManager.d.ts.map +1 -0
  135. package/lib/typescript/managers/StreamingSession.d.ts +35 -0
  136. package/lib/typescript/managers/StreamingSession.d.ts.map +1 -0
  137. package/lib/typescript/managers/types.d.ts +19 -0
  138. package/lib/typescript/managers/types.d.ts.map +1 -0
  139. package/lib/typescript/models/Device.d.ts +392 -0
  140. package/lib/typescript/models/Device.d.ts.map +1 -0
  141. package/lib/typescript/models/Recording.d.ts +259 -0
  142. package/lib/typescript/models/Recording.d.ts.map +1 -0
  143. package/lib/typescript/models/Status.d.ts +106 -0
  144. package/lib/typescript/models/Status.d.ts.map +1 -0
  145. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts +393 -0
  146. package/lib/typescript/specs/NativeBotaDeviceSDK.d.ts.map +1 -0
  147. package/lib/typescript/sync/syncStatus.d.ts +123 -0
  148. package/lib/typescript/sync/syncStatus.d.ts.map +1 -0
  149. package/lib/typescript/utils/errors.d.ts +83 -0
  150. package/lib/typescript/utils/errors.d.ts.map +1 -0
  151. package/lib/typescript/utils/logger.d.ts +36 -0
  152. package/lib/typescript/utils/logger.d.ts.map +1 -0
  153. package/package.json +100 -0
  154. package/scripts/bota_device_sdk_spm_workaround.rb +53 -0
  155. package/src/BotaClient.ts +231 -0
  156. package/src/ble/constants.ts +3 -0
  157. package/src/ble/deviceLogs.ts +61 -0
  158. package/src/cache/DeviceStateCache.ts +20 -0
  159. package/src/client.ts +1410 -0
  160. package/src/compatibility/runtime.ts +55 -0
  161. package/src/index.ts +146 -0
  162. package/src/managers/DeviceManager.ts +927 -0
  163. package/src/managers/OTAManager.ts +195 -0
  164. package/src/managers/RecordingManager.ts +578 -0
  165. package/src/managers/StreamingSession.ts +212 -0
  166. package/src/managers/types.ts +36 -0
  167. package/src/models/Device.ts +484 -0
  168. package/src/models/Recording.ts +281 -0
  169. package/src/models/Status.ts +128 -0
  170. package/src/specs/NativeBotaDeviceSDK.ts +542 -0
  171. package/src/sync/syncStatus.ts +243 -0
  172. package/src/utils/errors.ts +327 -0
  173. package/src/utils/logger.ts +122 -0
@@ -0,0 +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":[]}
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.setStreamingSessionTerminalHandler = exports.StreamingSession = void 0;
7
+ var _eventemitter = _interopRequireDefault(require("eventemitter3"));
8
+ var _runtime = require("../compatibility/runtime");
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ const terminalHandlers = new WeakMap();
11
+ const setStreamingSessionTerminalHandler = (session, handler) => {
12
+ terminalHandlers.set(session, handler);
13
+ };
14
+ exports.setStreamingSessionTerminalHandler = setStreamingSessionTerminalHandler;
15
+ const createOpaqueId = () => 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, value => {
16
+ const random = Math.floor(Math.random() * 16);
17
+ const nibble = value === 'x' ? random : random & 0x3 | 0x8;
18
+ return nibble.toString(16);
19
+ });
20
+ class StreamingSession extends _eventemitter.default {
21
+ client = (0, _runtime.getCompatibilityClient)();
22
+ sessionId = createOpaqueId();
23
+ currentState = 'idle';
24
+ receivedBytes = 0;
25
+ uploadedChunks = 0;
26
+ started = false;
27
+ terminal = false;
28
+ constructor(protocolHandler, _storageManager, device, recordingUuid, uploadProvider, chunkSizeKb = 256, flushIntervalMs = 60_000) {
29
+ super();
30
+ this.device = device;
31
+ this.recordingUuid = recordingUuid;
32
+ this.uploadProvider = uploadProvider;
33
+ this.chunkSizeKb = chunkSizeKb;
34
+ this.flushIntervalMs = flushIntervalMs;
35
+ void protocolHandler;
36
+ }
37
+ get state() {
38
+ return this.currentState;
39
+ }
40
+ get bytesReceived() {
41
+ return this.receivedBytes;
42
+ }
43
+ get chunksUploaded() {
44
+ return this.uploadedChunks;
45
+ }
46
+ get recordingId() {
47
+ return this.backendRecordingId;
48
+ }
49
+ get isActive() {
50
+ return this.started && !this.terminal;
51
+ }
52
+ async start() {
53
+ if (this.started) throw new Error('StreamingSession has already started');
54
+ this.started = true;
55
+ try {
56
+ const created = await this.uploadProvider.createRecording({
57
+ startedAt: new Date()
58
+ });
59
+ this.backendRecordingId = created.recordingId;
60
+ this.relay = created.relay;
61
+ const result = await this.client.streaming.startStreaming(this.device, {
62
+ sessionId: this.sessionId,
63
+ recordingUuid: this.recordingUuid,
64
+ recordingId: created.recordingId,
65
+ chunkSizeBytes: Math.min(1024, Math.max(64, this.chunkSizeKb)) * 1024,
66
+ flushIntervalMs: Math.max(0, this.flushIntervalMs)
67
+ }, {
68
+ onProgress: progress => this.handleProgress(progress),
69
+ resolveChunkDestination: async ({
70
+ sequence,
71
+ encrypted
72
+ }) => {
73
+ if (encrypted) {
74
+ if (!this.relay) {
75
+ throw new Error('Device delivered encrypted streaming data without an upload relay');
76
+ }
77
+ return {
78
+ url: this.relay.chunkUrl(sequence),
79
+ method: 'POST',
80
+ contentType: 'application/octet-stream',
81
+ bearerToken: this.relay.bearerToken
82
+ };
83
+ }
84
+ return {
85
+ url: await this.uploadProvider.getChunkUrl(created.recordingId, sequence),
86
+ method: 'PUT',
87
+ contentType: 'audio/ogg'
88
+ };
89
+ },
90
+ finalize: metadata => this.finalize(metadata)
91
+ });
92
+ this.receivedBytes = result.totalBytes;
93
+ this.currentState = 'completed';
94
+ this.terminal = true;
95
+ this.emit('completed', {
96
+ recordingId: created.recordingId,
97
+ totalBytes: result.totalBytes
98
+ });
99
+ this.releaseTerminal();
100
+ } catch (error) {
101
+ const failure = error instanceof Error ? error : new Error(String(error));
102
+ this.terminal = true;
103
+ if (/disconnect|not connected/i.test(failure.message)) {
104
+ this.currentState = 'disconnected';
105
+ this.emit('disconnected');
106
+ } else {
107
+ this.currentState = 'failed';
108
+ this.emit('error', failure);
109
+ }
110
+ this.releaseTerminal();
111
+ throw failure;
112
+ }
113
+ }
114
+ abort() {
115
+ if (this.terminal) return;
116
+ this.terminal = true;
117
+ this.currentState = 'failed';
118
+ void this.client.streaming.abortStreaming(this.sessionId).catch(() => undefined);
119
+ this.releaseTerminal();
120
+ }
121
+ handleProgress(progress) {
122
+ const previousState = this.currentState;
123
+ this.currentState = progress.state;
124
+ this.receivedBytes = progress.bytesReceived;
125
+ this.uploadedChunks = progress.chunksUploaded;
126
+ this.emit('chunk', {
127
+ state: this.currentState,
128
+ bytesReceived: this.receivedBytes,
129
+ chunksUploaded: this.uploadedChunks,
130
+ ...(this.backendRecordingId ? {
131
+ recordingId: this.backendRecordingId
132
+ } : {})
133
+ });
134
+ if (this.currentState === 'paused') this.emit('paused');
135
+ if (previousState === 'paused' && this.currentState === 'streaming') {
136
+ this.emit('resumed');
137
+ }
138
+ }
139
+ async finalize(metadata) {
140
+ if (!this.backendRecordingId) {
141
+ throw new Error('Streaming recording has not been created');
142
+ }
143
+ if (metadata.encrypted) {
144
+ if (!this.relay) throw new Error('Encrypted stream is missing relay metadata');
145
+ const response = await fetch(this.relay.finalizeUrl, {
146
+ method: 'POST',
147
+ headers: {
148
+ Authorization: `Bearer ${this.relay.bearerToken}`,
149
+ 'Content-Type': 'application/json'
150
+ },
151
+ body: JSON.stringify({
152
+ total_chunks: metadata.totalChunks,
153
+ duration_ms: metadata.durationMs,
154
+ file_size_bytes: metadata.fileSizeBytes
155
+ })
156
+ });
157
+ if (!response.ok) {
158
+ throw new Error(`Streaming relay finalize failed (${response.status})`);
159
+ }
160
+ return;
161
+ }
162
+ await this.uploadProvider.finalizeRecording(this.backendRecordingId, {
163
+ totalChunks: metadata.totalChunks,
164
+ durationMs: metadata.durationMs,
165
+ fileSizeBytes: metadata.fileSizeBytes
166
+ });
167
+ }
168
+ releaseTerminal() {
169
+ const handler = terminalHandlers.get(this);
170
+ terminalHandlers.delete(this);
171
+ handler?.();
172
+ }
173
+ }
174
+ exports.StreamingSession = StreamingSession;
175
+ //# sourceMappingURL=StreamingSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_eventemitter","_interopRequireDefault","require","_runtime","e","__esModule","default","terminalHandlers","WeakMap","setStreamingSessionTerminalHandler","session","handler","set","exports","createOpaqueId","replace","value","random","Math","floor","nibble","toString","StreamingSession","EventEmitter","client","getCompatibilityClient","sessionId","currentState","receivedBytes","uploadedChunks","started","terminal","constructor","protocolHandler","_storageManager","device","recordingUuid","uploadProvider","chunkSizeKb","flushIntervalMs","state","bytesReceived","chunksUploaded","recordingId","backendRecordingId","isActive","start","Error","created","createRecording","startedAt","Date","relay","result","streaming","startStreaming","chunkSizeBytes","min","max","onProgress","progress","handleProgress","resolveChunkDestination","sequence","encrypted","url","chunkUrl","method","contentType","bearerToken","getChunkUrl","finalize","metadata","totalBytes","emit","releaseTerminal","error","failure","String","test","message","abort","abortStreaming","catch","undefined","previousState","response","fetch","finalizeUrl","headers","Authorization","body","JSON","stringify","total_chunks","totalChunks","duration_ms","durationMs","file_size_bytes","fileSizeBytes","ok","status","finalizeRecording","get","delete"],"sourceRoot":"../../../src","sources":["managers/StreamingSession.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["managers/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["models/Device.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=Recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["models/Recording.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=Status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["models/Status.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}
@@ -0,0 +1,9 @@
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
+ var _default = exports.default = _reactNative.TurboModuleRegistry.get('BotaDeviceSDK');
9
+ //# sourceMappingURL=NativeBotaDeviceSDK.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.deriveSyncStatus = deriveSyncStatus;
7
+ /**
8
+ * Centralized sync-status derivation.
9
+ *
10
+ * Apps display "what's happening with the recordings on the device right now"
11
+ * in multiple places — sync banners, pending-recordings rows, recording detail
12
+ * pages, list-item subtitles. Without a shared rule set every screen tends to
13
+ * compute its own label from raw inputs, leading to screens that disagree
14
+ * (one shows "Bluetooth syncing", another shows "4G uploading").
15
+ *
16
+ * This module owns the *rules* (pure function over a typed input shape). Apps
17
+ * own the *subscription* (a thin hook that reads from whatever stores/queries
18
+ * they use and calls `deriveSyncStatus`). The label text returned here is the
19
+ * canonical surface — every consumer should read `label` / `shortLabel`
20
+ * verbatim rather than re-deriving from `kind`/`channel`.
21
+ *
22
+ * Precedence policy (when multiple signals are true simultaneously):
23
+ * 1. Live recording — if the device is actively recording AND streaming is
24
+ * enabled, show "Streaming via <channel>" regardless of pending uploads.
25
+ * 2. Actual device transport — if `device.syncActive` is set and a radio
26
+ * (WiFi / 4G) is up, the label reflects *that* transport, even if the
27
+ * app initiated the sync via BLE. This matches what bytes are actually
28
+ * moving and avoids the smart-sync handoff flicker where the app's
29
+ * "BLE pull" state lags the device's "4G upload" reality.
30
+ * 3. App-driven BLE pull — `appDriving.active` (e.g. the consumer's
31
+ * `useSyncAllRecordings` global) shows as "Bluetooth syncing N/M".
32
+ * 4. Device claims sync but no radio is up — `'waiting_channel'`, best-guess
33
+ * channel from `wifiAttempting` / `lteAttempting`.
34
+ * 5. Otherwise — `'idle'`.
35
+ */
36
+
37
+ /**
38
+ * Inputs to `deriveSyncStatus`. Every field is what the *consumer app* already
39
+ * has on hand — the SDK does not subscribe to any state itself.
40
+ *
41
+ * `appDriving` — populated from the consumer's app-level sync state (e.g. the
42
+ * global `isSyncing` + `syncAllProgress` exposed by their `useSyncAll*`
43
+ * hook). Set `active: false` if the app isn't currently pulling.
44
+ *
45
+ * `device` — flags reported by the device. For BLE-connected devices these
46
+ * come from `BotaClient.devices.on('statusUpdate', ...)`. For backend-only
47
+ * visibility (no BLE) they come from the heartbeat-derived state on the
48
+ * server, merged at the app layer.
49
+ *
50
+ * `bleConnected` — whether the app currently has a live BLE link to this
51
+ * device. Used to disambiguate `'ble_pull'` from `'4g/wifi_upload'`.
52
+ */
53
+
54
+ /**
55
+ * Resolve the channel a live stream is actually using. When the device's upload
56
+ * preference + enabled-connection flags are known, walk the preference order and
57
+ * pick the first channel that is enabled AND up (BLE is always available while
58
+ * the link is live) — this matches the firmware/app channel-selection rule. When
59
+ * those inputs are absent, fall back to "first connected radio wins".
60
+ */
61
+ function resolveStreamingChannel(device) {
62
+ const {
63
+ wifiConnected,
64
+ lteConnected,
65
+ uploadPreference,
66
+ enabledConnections
67
+ } = device;
68
+ if (uploadPreference && enabledConnections) {
69
+ for (const channel of uploadPreference) {
70
+ if (channel === 'ble') return 'Bluetooth';
71
+ if (channel === 'wifi' && enabledConnections.wifi && wifiConnected) return 'WiFi';
72
+ if (channel === 'cellular' && enabledConnections.cellular && lteConnected) return '4G';
73
+ }
74
+ return 'Bluetooth';
75
+ }
76
+ return wifiConnected ? 'WiFi' : lteConnected ? '4G' : 'Bluetooth';
77
+ }
78
+ const IDLE = {
79
+ kind: 'idle',
80
+ label: '',
81
+ shortLabel: ''
82
+ };
83
+ function progressFraction(currentIndex, total) {
84
+ if (currentIndex == null || total == null || total <= 0) return '';
85
+ return ` ${Math.min(currentIndex, total)}/${total}`;
86
+ }
87
+
88
+ /**
89
+ * Pure derivation: given a snapshot of app + device + link state, return the
90
+ * single canonical `SyncStatus`. Safe to call on every render (no I/O, no
91
+ * allocations beyond the return value and label strings).
92
+ */
93
+ function deriveSyncStatus(inputs) {
94
+ const {
95
+ appDriving,
96
+ device,
97
+ bleConnected
98
+ } = inputs;
99
+
100
+ // 1. Live streaming wins — the user is recording right now and bytes are
101
+ // flowing as they're captured, not from queued files.
102
+ if (device.isRecording && device.streamingEnabled) {
103
+ const channel = resolveStreamingChannel(device);
104
+ return {
105
+ kind: 'streaming',
106
+ channel,
107
+ label: `Streaming via ${channel}`,
108
+ shortLabel: `Streaming (${channel})`
109
+ };
110
+ }
111
+
112
+ // 2. Device says it's syncing AND a radio is up — trust the device's own
113
+ // transport. This wins over `appDriving` so smart-sync handoff (BLE
114
+ // trigger → device 4G upload) doesn't flicker on the label.
115
+ if (device.syncActive && device.wifiConnected) {
116
+ const frac = progressFraction(appDriving.currentIndex, appDriving.total);
117
+ return {
118
+ kind: 'wifi_upload',
119
+ channel: 'WiFi',
120
+ currentIndex: appDriving.currentIndex,
121
+ total: appDriving.total,
122
+ label: `Uploading${frac} via WiFi...`,
123
+ shortLabel: `WiFi uploading${frac}`
124
+ };
125
+ }
126
+ if (device.syncActive && device.lteConnected && !bleConnected) {
127
+ // When BLE is up the app is in control — see rule 3 — so we let
128
+ // `appDriving` take over if it's active even though LTE is also flagged.
129
+ const frac = progressFraction(appDriving.currentIndex, appDriving.total);
130
+ return {
131
+ kind: 'lte_upload',
132
+ channel: '4G',
133
+ currentIndex: appDriving.currentIndex,
134
+ total: appDriving.total,
135
+ label: `Uploading${frac} via 4G...`,
136
+ shortLabel: `4G uploading${frac}`
137
+ };
138
+ }
139
+
140
+ // 3. App-driven BLE pull.
141
+ if (appDriving.active) {
142
+ const frac = progressFraction(appDriving.currentIndex, appDriving.total);
143
+ return {
144
+ kind: 'ble_pull',
145
+ channel: 'Bluetooth',
146
+ currentIndex: appDriving.currentIndex,
147
+ total: appDriving.total,
148
+ label: `Syncing${frac} via Bluetooth...`,
149
+ shortLabel: `Bluetooth syncing${frac}`
150
+ };
151
+ }
152
+
153
+ // 4. Device says it's syncing but no radio is up yet — typically a 4G
154
+ // cold-start (PDP attach in progress) or WiFi reconnect.
155
+ if (device.syncActive) {
156
+ const guess = device.wifiAttempting ? 'WiFi' : device.lteAttempting ? '4G' : undefined;
157
+ if (guess) {
158
+ const frac = progressFraction(appDriving.currentIndex, appDriving.total);
159
+ return {
160
+ kind: 'waiting_channel',
161
+ channel: guess,
162
+ currentIndex: appDriving.currentIndex,
163
+ total: appDriving.total,
164
+ label: `Uploading${frac} via ${guess}...`,
165
+ shortLabel: `${guess} uploading${frac}`
166
+ };
167
+ }
168
+ return {
169
+ kind: 'waiting_channel',
170
+ label: 'Waiting for upload channel...',
171
+ shortLabel: 'Waiting for channel'
172
+ };
173
+ }
174
+
175
+ // 5. Idle.
176
+ return IDLE;
177
+ }
178
+ //# sourceMappingURL=syncStatus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["resolveStreamingChannel","device","wifiConnected","lteConnected","uploadPreference","enabledConnections","channel","wifi","cellular","IDLE","kind","label","shortLabel","progressFraction","currentIndex","total","Math","min","deriveSyncStatus","inputs","appDriving","bleConnected","isRecording","streamingEnabled","syncActive","frac","active","guess","wifiAttempting","lteAttempting","undefined"],"sourceRoot":"../../../src","sources":["sync/syncStatus.ts"],"mappings":"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","ignoreList":[]}