@bota-dev/react-native-sdk 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +279 -0
  2. package/lib/commonjs/BotaClient.js +223 -0
  3. package/lib/commonjs/BotaClient.js.map +1 -0
  4. package/lib/commonjs/ble/BleManager.js +494 -0
  5. package/lib/commonjs/ble/BleManager.js.map +1 -0
  6. package/lib/commonjs/ble/constants.js +166 -0
  7. package/lib/commonjs/ble/constants.js.map +1 -0
  8. package/lib/commonjs/ble/index.js +54 -0
  9. package/lib/commonjs/ble/index.js.map +1 -0
  10. package/lib/commonjs/ble/parsers.js +345 -0
  11. package/lib/commonjs/ble/parsers.js.map +1 -0
  12. package/lib/commonjs/index.js +81 -0
  13. package/lib/commonjs/index.js.map +1 -0
  14. package/lib/commonjs/managers/DeviceManager.js +437 -0
  15. package/lib/commonjs/managers/DeviceManager.js.map +1 -0
  16. package/lib/commonjs/managers/OTAManager.js +227 -0
  17. package/lib/commonjs/managers/OTAManager.js.map +1 -0
  18. package/lib/commonjs/managers/RecordingManager.js +384 -0
  19. package/lib/commonjs/managers/RecordingManager.js.map +1 -0
  20. package/lib/commonjs/managers/index.js +27 -0
  21. package/lib/commonjs/managers/index.js.map +1 -0
  22. package/lib/commonjs/models/Device.js +2 -0
  23. package/lib/commonjs/models/Device.js.map +1 -0
  24. package/lib/commonjs/models/Recording.js +2 -0
  25. package/lib/commonjs/models/Recording.js.map +1 -0
  26. package/lib/commonjs/models/Status.js +6 -0
  27. package/lib/commonjs/models/Status.js.map +1 -0
  28. package/lib/commonjs/models/index.js +39 -0
  29. package/lib/commonjs/models/index.js.map +1 -0
  30. package/lib/commonjs/protocol/ProtocolHandler.js +343 -0
  31. package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -0
  32. package/lib/commonjs/protocol/index.js +13 -0
  33. package/lib/commonjs/protocol/index.js.map +1 -0
  34. package/lib/commonjs/storage/StorageManager.js +333 -0
  35. package/lib/commonjs/storage/StorageManager.js.map +1 -0
  36. package/lib/commonjs/storage/index.js +19 -0
  37. package/lib/commonjs/storage/index.js.map +1 -0
  38. package/lib/commonjs/upload/S3Uploader.js +133 -0
  39. package/lib/commonjs/upload/S3Uploader.js.map +1 -0
  40. package/lib/commonjs/upload/UploadQueue.js +280 -0
  41. package/lib/commonjs/upload/UploadQueue.js.map +1 -0
  42. package/lib/commonjs/upload/index.js +20 -0
  43. package/lib/commonjs/upload/index.js.map +1 -0
  44. package/lib/commonjs/utils/errors.js +187 -0
  45. package/lib/commonjs/utils/errors.js.map +1 -0
  46. package/lib/commonjs/utils/index.js +40 -0
  47. package/lib/commonjs/utils/index.js.map +1 -0
  48. package/lib/commonjs/utils/logger.js +135 -0
  49. package/lib/commonjs/utils/logger.js.map +1 -0
  50. package/lib/commonjs/utils/retry.js +160 -0
  51. package/lib/commonjs/utils/retry.js.map +1 -0
  52. package/lib/module/BotaClient.js +216 -0
  53. package/lib/module/BotaClient.js.map +1 -0
  54. package/lib/module/ble/BleManager.js +484 -0
  55. package/lib/module/ble/BleManager.js.map +1 -0
  56. package/lib/module/ble/constants.js +159 -0
  57. package/lib/module/ble/constants.js.map +1 -0
  58. package/lib/module/ble/index.js +8 -0
  59. package/lib/module/ble/index.js.map +1 -0
  60. package/lib/module/ble/parsers.js +328 -0
  61. package/lib/module/ble/parsers.js.map +1 -0
  62. package/lib/module/index.js +22 -0
  63. package/lib/module/index.js.map +1 -0
  64. package/lib/module/managers/DeviceManager.js +429 -0
  65. package/lib/module/managers/DeviceManager.js.map +1 -0
  66. package/lib/module/managers/OTAManager.js +219 -0
  67. package/lib/module/managers/OTAManager.js.map +1 -0
  68. package/lib/module/managers/RecordingManager.js +376 -0
  69. package/lib/module/managers/RecordingManager.js.map +1 -0
  70. package/lib/module/managers/index.js +8 -0
  71. package/lib/module/managers/index.js.map +1 -0
  72. package/lib/module/models/Device.js +2 -0
  73. package/lib/module/models/Device.js.map +1 -0
  74. package/lib/module/models/Recording.js +2 -0
  75. package/lib/module/models/Recording.js.map +1 -0
  76. package/lib/module/models/Status.js +2 -0
  77. package/lib/module/models/Status.js.map +1 -0
  78. package/lib/module/models/index.js +8 -0
  79. package/lib/module/models/index.js.map +1 -0
  80. package/lib/module/protocol/ProtocolHandler.js +336 -0
  81. package/lib/module/protocol/ProtocolHandler.js.map +1 -0
  82. package/lib/module/protocol/index.js +6 -0
  83. package/lib/module/protocol/index.js.map +1 -0
  84. package/lib/module/storage/StorageManager.js +324 -0
  85. package/lib/module/storage/StorageManager.js.map +1 -0
  86. package/lib/module/storage/index.js +6 -0
  87. package/lib/module/storage/index.js.map +1 -0
  88. package/lib/module/upload/S3Uploader.js +126 -0
  89. package/lib/module/upload/S3Uploader.js.map +1 -0
  90. package/lib/module/upload/UploadQueue.js +272 -0
  91. package/lib/module/upload/UploadQueue.js.map +1 -0
  92. package/lib/module/upload/index.js +7 -0
  93. package/lib/module/upload/index.js.map +1 -0
  94. package/lib/module/utils/errors.js +173 -0
  95. package/lib/module/utils/errors.js.map +1 -0
  96. package/lib/module/utils/index.js +8 -0
  97. package/lib/module/utils/index.js.map +1 -0
  98. package/lib/module/utils/logger.js +129 -0
  99. package/lib/module/utils/logger.js.map +1 -0
  100. package/lib/module/utils/retry.js +149 -0
  101. package/lib/module/utils/retry.js.map +1 -0
  102. package/lib/typescript/src/BotaClient.d.ts +77 -0
  103. package/lib/typescript/src/BotaClient.d.ts.map +1 -0
  104. package/lib/typescript/src/ble/BleManager.d.ts +111 -0
  105. package/lib/typescript/src/ble/BleManager.d.ts.map +1 -0
  106. package/lib/typescript/src/ble/constants.d.ts +111 -0
  107. package/lib/typescript/src/ble/constants.d.ts.map +1 -0
  108. package/lib/typescript/src/ble/index.d.ts +7 -0
  109. package/lib/typescript/src/ble/index.d.ts.map +1 -0
  110. package/lib/typescript/src/ble/parsers.d.ts +100 -0
  111. package/lib/typescript/src/ble/parsers.d.ts.map +1 -0
  112. package/lib/typescript/src/index.d.ts +16 -0
  113. package/lib/typescript/src/index.d.ts.map +1 -0
  114. package/lib/typescript/src/managers/DeviceManager.d.ts +84 -0
  115. package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -0
  116. package/lib/typescript/src/managers/OTAManager.d.ts +78 -0
  117. package/lib/typescript/src/managers/OTAManager.d.ts.map +1 -0
  118. package/lib/typescript/src/managers/RecordingManager.d.ts +90 -0
  119. package/lib/typescript/src/managers/RecordingManager.d.ts.map +1 -0
  120. package/lib/typescript/src/managers/index.d.ts +7 -0
  121. package/lib/typescript/src/managers/index.d.ts.map +1 -0
  122. package/lib/typescript/src/models/Device.d.ts +139 -0
  123. package/lib/typescript/src/models/Device.d.ts.map +1 -0
  124. package/lib/typescript/src/models/Recording.d.ts +110 -0
  125. package/lib/typescript/src/models/Recording.d.ts.map +1 -0
  126. package/lib/typescript/src/models/Status.d.ts +104 -0
  127. package/lib/typescript/src/models/Status.d.ts.map +1 -0
  128. package/lib/typescript/src/models/index.d.ts +7 -0
  129. package/lib/typescript/src/models/index.d.ts.map +1 -0
  130. package/lib/typescript/src/protocol/ProtocolHandler.d.ts +69 -0
  131. package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -0
  132. package/lib/typescript/src/protocol/index.d.ts +5 -0
  133. package/lib/typescript/src/protocol/index.d.ts.map +1 -0
  134. package/lib/typescript/src/storage/StorageManager.d.ts +116 -0
  135. package/lib/typescript/src/storage/StorageManager.d.ts.map +1 -0
  136. package/lib/typescript/src/storage/index.d.ts +5 -0
  137. package/lib/typescript/src/storage/index.d.ts.map +1 -0
  138. package/lib/typescript/src/upload/S3Uploader.d.ts +38 -0
  139. package/lib/typescript/src/upload/S3Uploader.d.ts.map +1 -0
  140. package/lib/typescript/src/upload/UploadQueue.d.ts +95 -0
  141. package/lib/typescript/src/upload/UploadQueue.d.ts.map +1 -0
  142. package/lib/typescript/src/upload/index.d.ts +6 -0
  143. package/lib/typescript/src/upload/index.d.ts.map +1 -0
  144. package/lib/typescript/src/utils/errors.d.ts +82 -0
  145. package/lib/typescript/src/utils/errors.d.ts.map +1 -0
  146. package/lib/typescript/src/utils/index.d.ts +7 -0
  147. package/lib/typescript/src/utils/index.d.ts.map +1 -0
  148. package/lib/typescript/src/utils/logger.d.ts +68 -0
  149. package/lib/typescript/src/utils/logger.d.ts.map +1 -0
  150. package/lib/typescript/src/utils/retry.d.ts +53 -0
  151. package/lib/typescript/src/utils/retry.d.ts.map +1 -0
  152. package/package.json +95 -0
  153. package/src/BotaClient.ts +238 -0
  154. package/src/ble/BleManager.ts +573 -0
  155. package/src/ble/constants.ts +158 -0
  156. package/src/ble/index.ts +7 -0
  157. package/src/ble/parsers.ts +395 -0
  158. package/src/index.ts +64 -0
  159. package/src/managers/DeviceManager.ts +545 -0
  160. package/src/managers/OTAManager.ts +263 -0
  161. package/src/managers/RecordingManager.ts +434 -0
  162. package/src/managers/index.ts +12 -0
  163. package/src/models/Device.ts +164 -0
  164. package/src/models/Recording.ts +123 -0
  165. package/src/models/Status.ts +126 -0
  166. package/src/models/index.ts +7 -0
  167. package/src/protocol/ProtocolHandler.ts +459 -0
  168. package/src/protocol/index.ts +5 -0
  169. package/src/storage/StorageManager.ts +343 -0
  170. package/src/storage/index.ts +5 -0
  171. package/src/upload/S3Uploader.ts +164 -0
  172. package/src/upload/UploadQueue.ts +310 -0
  173. package/src/upload/index.ts +6 -0
  174. package/src/utils/errors.ts +310 -0
  175. package/src/utils/index.ts +7 -0
  176. package/src/utils/logger.ts +137 -0
  177. package/src/utils/retry.ts +177 -0
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.OTAManager = void 0;
7
+ var _eventemitter = _interopRequireDefault(require("eventemitter3"));
8
+ var _BleManager = require("../ble/BleManager");
9
+ var _constants = require("../ble/constants");
10
+ var _errors = require("../utils/errors");
11
+ var _logger = require("../utils/logger");
12
+ var _buffer = require("buffer");
13
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
14
+ /**
15
+ * OTA Manager - Handles firmware over-the-air updates
16
+ *
17
+ * Note: Full Nordic DFU implementation requires native modules.
18
+ * This is a placeholder that handles version checking and update preparation.
19
+ * Actual DFU transfer would need react-native-nordic-dfu or similar.
20
+ */
21
+
22
+ const log = _logger.logger.tag('OTAManager');
23
+
24
+ /**
25
+ * Firmware info
26
+ */
27
+
28
+ /**
29
+ * OTA progress stages
30
+ */
31
+
32
+ /**
33
+ * OTA progress
34
+ */
35
+
36
+ /**
37
+ * Events emitted by OTAManager
38
+ */
39
+
40
+ /**
41
+ * OTA Manager class
42
+ */
43
+ class OTAManager extends _eventemitter.default {
44
+ constructor(firmwareCdnUrl = 'https://cdn.bota.dev/firmware') {
45
+ super();
46
+ this.firmwareCdnUrl = firmwareCdnUrl;
47
+ }
48
+
49
+ /**
50
+ * Check for available firmware updates
51
+ */
52
+ async checkForUpdate(device) {
53
+ log.info('Checking for firmware update', {
54
+ deviceId: device.id,
55
+ currentVersion: device.firmwareVersion,
56
+ deviceType: device.deviceType
57
+ });
58
+ this.emit('progress', device.id, {
59
+ stage: 'checking',
60
+ progress: 0
61
+ });
62
+ try {
63
+ // Fetch latest firmware info from CDN
64
+ const response = await fetch(`${this.firmwareCdnUrl}/latest?device_type=${device.deviceType}&current=${device.firmwareVersion}`);
65
+ if (!response.ok) {
66
+ if (response.status === 404) {
67
+ log.info('No update available', {
68
+ deviceId: device.id
69
+ });
70
+ return null;
71
+ }
72
+ throw new Error(`Failed to check for updates: ${response.status}`);
73
+ }
74
+ const firmware = await response.json();
75
+
76
+ // Compare versions
77
+ if (this.isNewerVersion(firmware.version, device.firmwareVersion)) {
78
+ log.info('Update available', {
79
+ deviceId: device.id,
80
+ currentVersion: device.firmwareVersion,
81
+ newVersion: firmware.version
82
+ });
83
+ this.emit('updateAvailable', firmware);
84
+ return firmware;
85
+ }
86
+ log.info('Device is up to date', {
87
+ deviceId: device.id,
88
+ version: device.firmwareVersion
89
+ });
90
+ return null;
91
+ } catch (error) {
92
+ log.error('Failed to check for update', error, {
93
+ deviceId: device.id
94
+ });
95
+ throw error;
96
+ }
97
+ }
98
+
99
+ /**
100
+ * Download firmware package
101
+ */
102
+ async downloadFirmware(firmware) {
103
+ log.info('Downloading firmware', {
104
+ version: firmware.version,
105
+ size: firmware.size
106
+ });
107
+ const response = await fetch(firmware.url);
108
+ if (!response.ok) {
109
+ throw new Error(`Failed to download firmware: ${response.status}`);
110
+ }
111
+ const data = await response.arrayBuffer();
112
+
113
+ // Verify checksum
114
+ // Note: In production, implement proper checksum verification
115
+ log.info('Firmware downloaded', {
116
+ size: data.byteLength
117
+ });
118
+ return data;
119
+ }
120
+
121
+ /**
122
+ * Prepare device for DFU mode
123
+ */
124
+ async enterDfuMode(device) {
125
+ if (!(0, _BleManager.getBleManager)().isConnected(device.id)) {
126
+ throw _errors.DeviceError.notConnected(device.id);
127
+ }
128
+ log.info('Entering DFU mode', {
129
+ deviceId: device.id
130
+ });
131
+
132
+ // Send DFU command to device
133
+ await (0, _BleManager.getBleManager)().writeCharacteristic(device.id, _constants.SERVICE_BOTA_CONTROL, _constants.CHAR_DEVICE_COMMAND, _buffer.Buffer.from([_constants.DEVICE_CMD_ENTER_DFU]));
134
+
135
+ // Device will disconnect and reboot into DFU mode
136
+ log.info('DFU command sent, device will reboot', {
137
+ deviceId: device.id
138
+ });
139
+ }
140
+
141
+ /**
142
+ * Perform firmware update
143
+ *
144
+ * Note: This is a placeholder. Full implementation requires:
145
+ * 1. react-native-nordic-dfu for actual DFU transfer
146
+ * 2. Native module integration
147
+ * 3. DFU package preparation
148
+ */
149
+ async performUpdate(device, firmware) {
150
+ log.info('Starting firmware update', {
151
+ deviceId: device.id,
152
+ version: firmware.version
153
+ });
154
+ this.emit('progress', device.id, {
155
+ stage: 'downloading',
156
+ progress: 0
157
+ });
158
+ try {
159
+ // Download firmware
160
+ await this.downloadFirmware(firmware);
161
+ this.emit('progress', device.id, {
162
+ stage: 'downloading',
163
+ progress: 1
164
+ });
165
+ this.emit('progress', device.id, {
166
+ stage: 'preparing',
167
+ progress: 0
168
+ });
169
+
170
+ // Enter DFU mode
171
+ await this.enterDfuMode(device);
172
+ this.emit('progress', device.id, {
173
+ stage: 'preparing',
174
+ progress: 1
175
+ });
176
+
177
+ // Note: At this point, we would use react-native-nordic-dfu
178
+ // to perform the actual firmware transfer.
179
+ // For now, we throw an error indicating this needs native implementation.
180
+
181
+ throw new Error('Full DFU implementation requires react-native-nordic-dfu native module. ' + 'Device has entered DFU mode and is advertising as "BotaDFU-xxx".');
182
+
183
+ // After DFU completes:
184
+ // this.emit('progress', device.id, { stage: 'completed', progress: 1 });
185
+ // this.emit('completed', device.id, firmware.version);
186
+ } catch (error) {
187
+ const err = error;
188
+ log.error('Firmware update failed', err, {
189
+ deviceId: device.id
190
+ });
191
+ this.emit('progress', device.id, {
192
+ stage: 'failed',
193
+ progress: 0,
194
+ error: err.message
195
+ });
196
+ this.emit('failed', device.id, err);
197
+ throw error;
198
+ }
199
+ }
200
+
201
+ /**
202
+ * Compare semantic versions
203
+ */
204
+ isNewerVersion(newVersion, currentVersion) {
205
+ const parseVersion = v => {
206
+ return v.split('.').map(n => parseInt(n, 10) || 0);
207
+ };
208
+ const newParts = parseVersion(newVersion);
209
+ const currentParts = parseVersion(currentVersion);
210
+ for (let i = 0; i < Math.max(newParts.length, currentParts.length); i++) {
211
+ const newPart = newParts[i] || 0;
212
+ const currentPart = currentParts[i] || 0;
213
+ if (newPart > currentPart) return true;
214
+ if (newPart < currentPart) return false;
215
+ }
216
+ return false;
217
+ }
218
+
219
+ /**
220
+ * Clean up resources
221
+ */
222
+ destroy() {
223
+ this.removeAllListeners();
224
+ }
225
+ }
226
+ exports.OTAManager = OTAManager;
227
+ //# sourceMappingURL=OTAManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_eventemitter","_interopRequireDefault","require","_BleManager","_constants","_errors","_logger","_buffer","e","__esModule","default","log","logger","tag","OTAManager","EventEmitter","constructor","firmwareCdnUrl","checkForUpdate","device","info","deviceId","id","currentVersion","firmwareVersion","deviceType","emit","stage","progress","response","fetch","ok","status","Error","firmware","json","isNewerVersion","version","newVersion","error","downloadFirmware","size","url","data","arrayBuffer","byteLength","enterDfuMode","getBleManager","isConnected","DeviceError","notConnected","writeCharacteristic","SERVICE_BOTA_CONTROL","CHAR_DEVICE_COMMAND","Buffer","from","DEVICE_CMD_ENTER_DFU","performUpdate","err","message","parseVersion","v","split","map","n","parseInt","newParts","currentParts","i","Math","max","length","newPart","currentPart","destroy","removeAllListeners","exports"],"sourceRoot":"../../../src","sources":["managers/OTAManager.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,384 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.RecordingManager = void 0;
7
+ var _eventemitter = _interopRequireDefault(require("eventemitter3"));
8
+ var _ProtocolHandler = require("../protocol/ProtocolHandler");
9
+ var _StorageManager = require("../storage/StorageManager");
10
+ var _UploadQueue = require("../upload/UploadQueue");
11
+ var _errors = require("../utils/errors");
12
+ var _logger = require("../utils/logger");
13
+ var _BleManager = require("../ble/BleManager");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ /**
16
+ * Recording Manager - Handles recording sync and upload operations
17
+ */
18
+
19
+ const log = _logger.logger.tag('RecordingManager');
20
+
21
+ /**
22
+ * Upload info provider callback type
23
+ */
24
+
25
+ /**
26
+ * Recording Manager class
27
+ */
28
+ class RecordingManager extends _eventemitter.default {
29
+ isInitialized = false;
30
+ constructor() {
31
+ super();
32
+ this.protocolHandler = new _ProtocolHandler.ProtocolHandler();
33
+ this.storage = new _StorageManager.StorageManager();
34
+ this.uploadQueue = new _UploadQueue.UploadQueue(this.storage, {
35
+ autoStart: false
36
+ });
37
+ this.setupUploadQueueListeners();
38
+ }
39
+
40
+ /**
41
+ * Initialize the recording manager
42
+ */
43
+ async initialize() {
44
+ if (this.isInitialized) {
45
+ return;
46
+ }
47
+ await this.storage.initialize();
48
+ this.isInitialized = true;
49
+
50
+ // Start processing any pending uploads
51
+ this.uploadQueue.resume();
52
+ log.info('RecordingManager initialized');
53
+ }
54
+
55
+ /**
56
+ * Set up upload queue event listeners
57
+ */
58
+ setupUploadQueueListeners() {
59
+ this.uploadQueue.on('taskAdded', () => {
60
+ this.emit('queueUpdated', this.uploadQueue.getAllTasks());
61
+ });
62
+ this.uploadQueue.on('taskUpdated', () => {
63
+ this.emit('queueUpdated', this.uploadQueue.getAllTasks());
64
+ });
65
+ this.uploadQueue.on('taskCompleted', (taskId, recordingId) => {
66
+ this.emit('uploadCompleted', taskId, recordingId);
67
+ this.emit('queueUpdated', this.uploadQueue.getAllTasks());
68
+ });
69
+ this.uploadQueue.on('taskFailed', (taskId, error) => {
70
+ this.emit('uploadFailed', taskId, error);
71
+ this.emit('queueUpdated', this.uploadQueue.getAllTasks());
72
+ });
73
+ this.uploadQueue.on('uploadProgress', (taskId, progress) => {
74
+ this.emit('uploadProgress', taskId, progress);
75
+ });
76
+ }
77
+
78
+ /**
79
+ * Get storage info from device
80
+ */
81
+ async getStorageInfo(device) {
82
+ if (!(0, _BleManager.getBleManager)().isConnected(device.id)) {
83
+ throw _errors.DeviceError.notConnected(device.id);
84
+ }
85
+ return this.protocolHandler.getStorageInfo(device.id);
86
+ }
87
+
88
+ /**
89
+ * List recordings on a device
90
+ */
91
+ async listRecordings(device) {
92
+ if (!(0, _BleManager.getBleManager)().isConnected(device.id)) {
93
+ throw _errors.DeviceError.notConnected(device.id);
94
+ }
95
+ log.info('Listing recordings', {
96
+ deviceId: device.id
97
+ });
98
+ const recordings = await this.protocolHandler.listRecordings(device.id);
99
+ log.info('Found recordings', {
100
+ deviceId: device.id,
101
+ count: recordings.length
102
+ });
103
+ return recordings;
104
+ }
105
+
106
+ /**
107
+ * Sync a single recording from device
108
+ * Transfers from device, saves locally, and queues for upload
109
+ */
110
+ async *syncRecording(device, recording, uploadInfo) {
111
+ if (!(0, _BleManager.getBleManager)().isConnected(device.id)) {
112
+ throw _errors.DeviceError.notConnected(device.id);
113
+ }
114
+ log.info('Starting recording sync', {
115
+ deviceId: device.id,
116
+ recordingUuid: recording.uuid
117
+ });
118
+ this.emit('syncStarted', recording.uuid);
119
+ try {
120
+ // Stage: Preparing
121
+ yield {
122
+ stage: 'preparing',
123
+ progress: 0,
124
+ totalBytes: recording.fileSizeBytes
125
+ };
126
+
127
+ // Stage: Transferring from device
128
+ const audioData = await this.protocolHandler.transferRecording(device.id, recording.uuid, (_bytesReceived, _totalBytes) => {
129
+ // Progress callback - can be used for real-time progress updates
130
+ });
131
+ yield {
132
+ stage: 'transferring',
133
+ progress: 1,
134
+ bytesTransferred: audioData.length,
135
+ totalBytes: recording.fileSizeBytes
136
+ };
137
+
138
+ // Save locally
139
+ const localPath = await this.storage.saveRecordingData(device.id, recording.uuid, audioData);
140
+
141
+ // Stage: Uploading
142
+ yield {
143
+ stage: 'uploading',
144
+ progress: 0,
145
+ bytesUploaded: 0,
146
+ totalBytes: audioData.length
147
+ };
148
+
149
+ // Queue for upload (this will process in background)
150
+ const task = await this.uploadQueue.enqueue({
151
+ recordingId: uploadInfo.recordingId,
152
+ deviceId: device.id,
153
+ localPath,
154
+ uploadUrl: uploadInfo.uploadUrl,
155
+ uploadToken: uploadInfo.uploadToken,
156
+ completeUrl: uploadInfo.completeUrl
157
+ });
158
+
159
+ // Wait for upload to complete
160
+ await this.waitForUpload(task.id);
161
+
162
+ // Stage: Completing - Confirm sync to device
163
+ yield {
164
+ stage: 'completing',
165
+ progress: 0.5
166
+ };
167
+ await this.protocolHandler.confirmSync(device.id, recording.uuid);
168
+
169
+ // Update last sync time
170
+ await this.storage.setLastSyncTime(device.id);
171
+
172
+ // Stage: Completed
173
+ yield {
174
+ stage: 'completed',
175
+ progress: 1,
176
+ recordingId: uploadInfo.recordingId
177
+ };
178
+ log.info('Recording sync completed', {
179
+ deviceId: device.id,
180
+ recordingUuid: recording.uuid,
181
+ recordingId: uploadInfo.recordingId
182
+ });
183
+ this.emit('syncCompleted', recording.uuid, uploadInfo.recordingId);
184
+ } catch (error) {
185
+ const err = error;
186
+ log.error('Recording sync failed', err, {
187
+ deviceId: device.id,
188
+ recordingUuid: recording.uuid
189
+ });
190
+ yield {
191
+ stage: 'failed',
192
+ progress: 0,
193
+ error: err.message
194
+ };
195
+ this.emit('syncFailed', recording.uuid, err);
196
+ throw error;
197
+ }
198
+ }
199
+
200
+ /**
201
+ * Wait for an upload task to complete
202
+ */
203
+ async waitForUpload(taskId) {
204
+ return new Promise((resolve, reject) => {
205
+ const checkTask = () => {
206
+ const task = this.storage.getUploadTask(taskId);
207
+ if (!task) {
208
+ reject(new Error('Upload task not found'));
209
+ return true;
210
+ }
211
+ if (task.status === 'completed') {
212
+ resolve();
213
+ return true;
214
+ }
215
+ if (task.status === 'failed') {
216
+ reject(new Error(task.errorMessage || 'Upload failed'));
217
+ return true;
218
+ }
219
+ return false;
220
+ };
221
+
222
+ // Check immediately
223
+ if (checkTask()) return;
224
+
225
+ // Poll for completion
226
+ const interval = setInterval(() => {
227
+ if (checkTask()) {
228
+ clearInterval(interval);
229
+ }
230
+ }, 500);
231
+
232
+ // Also listen for events
233
+ const onComplete = completedTaskId => {
234
+ if (completedTaskId === taskId) {
235
+ clearInterval(interval);
236
+ this.uploadQueue.off('taskCompleted', onComplete);
237
+ this.uploadQueue.off('taskFailed', onFailed);
238
+ resolve();
239
+ }
240
+ };
241
+ const onFailed = (failedTaskId, error) => {
242
+ if (failedTaskId === taskId) {
243
+ clearInterval(interval);
244
+ this.uploadQueue.off('taskCompleted', onComplete);
245
+ this.uploadQueue.off('taskFailed', onFailed);
246
+ reject(error);
247
+ }
248
+ };
249
+ this.uploadQueue.on('taskCompleted', onComplete);
250
+ this.uploadQueue.on('taskFailed', onFailed);
251
+ });
252
+ }
253
+
254
+ /**
255
+ * Sync all recordings from a device
256
+ */
257
+ async *syncAllRecordings(device, uploadInfoProvider) {
258
+ if (!(0, _BleManager.getBleManager)().isConnected(device.id)) {
259
+ throw _errors.DeviceError.notConnected(device.id);
260
+ }
261
+ log.info('Syncing all recordings', {
262
+ deviceId: device.id
263
+ });
264
+
265
+ // List recordings
266
+ const recordings = await this.listRecordings(device);
267
+ if (recordings.length === 0) {
268
+ log.info('No recordings to sync', {
269
+ deviceId: device.id
270
+ });
271
+ return;
272
+ }
273
+ log.info('Starting sync of recordings', {
274
+ deviceId: device.id,
275
+ count: recordings.length
276
+ });
277
+
278
+ // Sync each recording
279
+ for (let i = 0; i < recordings.length; i++) {
280
+ const recording = recordings[i];
281
+ try {
282
+ // Get upload info from customer backend
283
+ const uploadInfo = await uploadInfoProvider(recording);
284
+
285
+ // Sync the recording
286
+ for await (const progress of this.syncRecording(device, recording, uploadInfo)) {
287
+ yield {
288
+ ...progress,
289
+ recordingIndex: i,
290
+ totalRecordings: recordings.length
291
+ };
292
+ }
293
+ } catch (error) {
294
+ const err = error;
295
+ log.error('Failed to sync recording', err, {
296
+ deviceId: device.id,
297
+ recordingUuid: recording.uuid,
298
+ index: i
299
+ });
300
+ yield {
301
+ stage: 'failed',
302
+ progress: 0,
303
+ error: err.message,
304
+ recordingIndex: i,
305
+ totalRecordings: recordings.length
306
+ };
307
+
308
+ // Continue with next recording
309
+ }
310
+ }
311
+ }
312
+
313
+ /**
314
+ * Get pending uploads
315
+ */
316
+ getPendingUploads() {
317
+ return this.uploadQueue.getPendingTasks();
318
+ }
319
+
320
+ /**
321
+ * Get all uploads
322
+ */
323
+ getAllUploads() {
324
+ return this.uploadQueue.getAllTasks();
325
+ }
326
+
327
+ /**
328
+ * Cancel a pending upload
329
+ */
330
+ async cancelUpload(taskId) {
331
+ await this.uploadQueue.cancel(taskId);
332
+ }
333
+
334
+ /**
335
+ * Retry failed uploads
336
+ */
337
+ async retryFailedUploads() {
338
+ await this.uploadQueue.retryFailed();
339
+ }
340
+
341
+ /**
342
+ * Clear completed uploads from queue
343
+ */
344
+ async clearCompletedUploads() {
345
+ await this.storage.clearCompletedTasks();
346
+ this.emit('queueUpdated', this.uploadQueue.getAllTasks());
347
+ }
348
+
349
+ /**
350
+ * Clear all uploads
351
+ */
352
+ async clearAllUploads() {
353
+ await this.uploadQueue.cancelAll();
354
+ this.emit('queueUpdated', []);
355
+ }
356
+
357
+ /**
358
+ * Pause upload processing
359
+ */
360
+ pauseUploads() {
361
+ this.uploadQueue.pause();
362
+ }
363
+
364
+ /**
365
+ * Resume upload processing
366
+ */
367
+ resumeUploads() {
368
+ this.uploadQueue.resume();
369
+ }
370
+
371
+ /**
372
+ * Clean up resources
373
+ */
374
+ destroy() {
375
+ log.info('Destroying RecordingManager');
376
+ this.protocolHandler.destroy();
377
+ this.uploadQueue.destroy();
378
+ this.storage.destroy();
379
+ this.removeAllListeners();
380
+ this.isInitialized = false;
381
+ }
382
+ }
383
+ exports.RecordingManager = RecordingManager;
384
+ //# sourceMappingURL=RecordingManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_eventemitter","_interopRequireDefault","require","_ProtocolHandler","_StorageManager","_UploadQueue","_errors","_logger","_BleManager","e","__esModule","default","log","logger","tag","RecordingManager","EventEmitter","isInitialized","constructor","protocolHandler","ProtocolHandler","storage","StorageManager","uploadQueue","UploadQueue","autoStart","setupUploadQueueListeners","initialize","resume","info","on","emit","getAllTasks","taskId","recordingId","error","progress","getStorageInfo","device","getBleManager","isConnected","id","DeviceError","notConnected","listRecordings","deviceId","recordings","count","length","syncRecording","recording","uploadInfo","recordingUuid","uuid","stage","totalBytes","fileSizeBytes","audioData","transferRecording","_bytesReceived","_totalBytes","bytesTransferred","localPath","saveRecordingData","bytesUploaded","task","enqueue","uploadUrl","uploadToken","completeUrl","waitForUpload","confirmSync","setLastSyncTime","err","message","Promise","resolve","reject","checkTask","getUploadTask","Error","status","errorMessage","interval","setInterval","clearInterval","onComplete","completedTaskId","off","onFailed","failedTaskId","syncAllRecordings","uploadInfoProvider","i","recordingIndex","totalRecordings","index","getPendingUploads","getPendingTasks","getAllUploads","cancelUpload","cancel","retryFailedUploads","retryFailed","clearCompletedUploads","clearCompletedTasks","clearAllUploads","cancelAll","pauseUploads","pause","resumeUploads","destroy","removeAllListeners","exports"],"sourceRoot":"../../../src","sources":["managers/RecordingManager.ts"],"mappings":";;;;;;AAIA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AASA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAL,OAAA;AACA,IAAAM,WAAA,GAAAN,OAAA;AAAkD,SAAAD,uBAAAQ,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAnBlD;AACA;AACA;;AAmBA,MAAMG,GAAG,GAAGC,cAAM,CAACC,GAAG,CAAC,kBAAkB,CAAC;;AAE1C;AACA;AACA;;AAKA;AACA;AACA;AACO,MAAMC,gBAAgB,SAASC,qBAAY,CAAyB;EAIjEC,aAAa,GAAG,KAAK;EAE7BC,WAAWA,CAAA,EAAG;IACZ,KAAK,CAAC,CAAC;IACP,IAAI,CAACC,eAAe,GAAG,IAAIC,gCAAe,CAAC,CAAC;IAC5C,IAAI,CAACC,OAAO,GAAG,IAAIC,8BAAc,CAAC,CAAC;IACnC,IAAI,CAACC,WAAW,GAAG,IAAIC,wBAAW,CAAC,IAAI,CAACH,OAAO,EAAE;MAAEI,SAAS,EAAE;IAAM,CAAC,CAAC;IAEtE,IAAI,CAACC,yBAAyB,CAAC,CAAC;EAClC;;EAEA;AACF;AACA;EACE,MAAMC,UAAUA,CAAA,EAAkB;IAChC,IAAI,IAAI,CAACV,aAAa,EAAE;MACtB;IACF;IAEA,MAAM,IAAI,CAACI,OAAO,CAACM,UAAU,CAAC,CAAC;IAC/B,IAAI,CAACV,aAAa,GAAG,IAAI;;IAEzB;IACA,IAAI,CAACM,WAAW,CAACK,MAAM,CAAC,CAAC;IAEzBhB,GAAG,CAACiB,IAAI,CAAC,8BAA8B,CAAC;EAC1C;;EAEA;AACF;AACA;EACUH,yBAAyBA,CAAA,EAAS;IACxC,IAAI,CAACH,WAAW,CAACO,EAAE,CAAC,WAAW,EAAE,MAAM;MACrC,IAAI,CAACC,IAAI,CAAC,cAAc,EAAE,IAAI,CAACR,WAAW,CAACS,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,IAAI,CAACT,WAAW,CAACO,EAAE,CAAC,aAAa,EAAE,MAAM;MACvC,IAAI,CAACC,IAAI,CAAC,cAAc,EAAE,IAAI,CAACR,WAAW,CAACS,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,IAAI,CAACT,WAAW,CAACO,EAAE,CAAC,eAAe,EAAE,CAACG,MAAM,EAAEC,WAAW,KAAK;MAC5D,IAAI,CAACH,IAAI,CAAC,iBAAiB,EAAEE,MAAM,EAAEC,WAAW,CAAC;MACjD,IAAI,CAACH,IAAI,CAAC,cAAc,EAAE,IAAI,CAACR,WAAW,CAACS,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,IAAI,CAACT,WAAW,CAACO,EAAE,CAAC,YAAY,EAAE,CAACG,MAAM,EAAEE,KAAK,KAAK;MACnD,IAAI,CAACJ,IAAI,CAAC,cAAc,EAAEE,MAAM,EAAEE,KAAK,CAAC;MACxC,IAAI,CAACJ,IAAI,CAAC,cAAc,EAAE,IAAI,CAACR,WAAW,CAACS,WAAW,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,IAAI,CAACT,WAAW,CAACO,EAAE,CAAC,gBAAgB,EAAE,CAACG,MAAM,EAAEG,QAAQ,KAAK;MAC1D,IAAI,CAACL,IAAI,CAAC,gBAAgB,EAAEE,MAAM,EAAEG,QAAQ,CAAC;IAC/C,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,MAAMC,cAAcA,CAACC,MAAuB,EAAwB;IAClE,IAAI,CAAC,IAAAC,yBAAa,EAAC,CAAC,CAACC,WAAW,CAACF,MAAM,CAACG,EAAE,CAAC,EAAE;MAC3C,MAAMC,mBAAW,CAACC,YAAY,CAACL,MAAM,CAACG,EAAE,CAAC;IAC3C;IAEA,OAAO,IAAI,CAACtB,eAAe,CAACkB,cAAc,CAACC,MAAM,CAACG,EAAE,CAAC;EACvD;;EAEA;AACF;AACA;EACE,MAAMG,cAAcA,CAACN,MAAuB,EAA8B;IACxE,IAAI,CAAC,IAAAC,yBAAa,EAAC,CAAC,CAACC,WAAW,CAACF,MAAM,CAACG,EAAE,CAAC,EAAE;MAC3C,MAAMC,mBAAW,CAACC,YAAY,CAACL,MAAM,CAACG,EAAE,CAAC;IAC3C;IAEA7B,GAAG,CAACiB,IAAI,CAAC,oBAAoB,EAAE;MAAEgB,QAAQ,EAAEP,MAAM,CAACG;IAAG,CAAC,CAAC;IAEvD,MAAMK,UAAU,GAAG,MAAM,IAAI,CAAC3B,eAAe,CAACyB,cAAc,CAACN,MAAM,CAACG,EAAE,CAAC;IAEvE7B,GAAG,CAACiB,IAAI,CAAC,kBAAkB,EAAE;MAC3BgB,QAAQ,EAAEP,MAAM,CAACG,EAAE;MACnBM,KAAK,EAAED,UAAU,CAACE;IACpB,CAAC,CAAC;IAEF,OAAOF,UAAU;EACnB;;EAEA;AACF;AACA;AACA;EACE,OAAOG,aAAaA,CAClBX,MAAuB,EACvBY,SAA0B,EAC1BC,UAAsB,EACQ;IAC9B,IAAI,CAAC,IAAAZ,yBAAa,EAAC,CAAC,CAACC,WAAW,CAACF,MAAM,CAACG,EAAE,CAAC,EAAE;MAC3C,MAAMC,mBAAW,CAACC,YAAY,CAACL,MAAM,CAACG,EAAE,CAAC;IAC3C;IAEA7B,GAAG,CAACiB,IAAI,CAAC,yBAAyB,EAAE;MAClCgB,QAAQ,EAAEP,MAAM,CAACG,EAAE;MACnBW,aAAa,EAAEF,SAAS,CAACG;IAC3B,CAAC,CAAC;IAEF,IAAI,CAACtB,IAAI,CAAC,aAAa,EAAEmB,SAAS,CAACG,IAAI,CAAC;IAExC,IAAI;MACF;MACA,MAAM;QACJC,KAAK,EAAE,WAAW;QAClBlB,QAAQ,EAAE,CAAC;QACXmB,UAAU,EAAEL,SAAS,CAACM;MACxB,CAAC;;MAED;MACA,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACtC,eAAe,CAACuC,iBAAiB,CAC5DpB,MAAM,CAACG,EAAE,EACTS,SAAS,CAACG,IAAI,EACd,CAACM,cAAc,EAAEC,WAAW,KAAK;QAC/B;MAAA,CAEJ,CAAC;MAED,MAAM;QACJN,KAAK,EAAE,cAAc;QACrBlB,QAAQ,EAAE,CAAC;QACXyB,gBAAgB,EAAEJ,SAAS,CAACT,MAAM;QAClCO,UAAU,EAAEL,SAAS,CAACM;MACxB,CAAC;;MAED;MACA,MAAMM,SAAS,GAAG,MAAM,IAAI,CAACzC,OAAO,CAAC0C,iBAAiB,CACpDzB,MAAM,CAACG,EAAE,EACTS,SAAS,CAACG,IAAI,EACdI,SACF,CAAC;;MAED;MACA,MAAM;QACJH,KAAK,EAAE,WAAW;QAClBlB,QAAQ,EAAE,CAAC;QACX4B,aAAa,EAAE,CAAC;QAChBT,UAAU,EAAEE,SAAS,CAACT;MACxB,CAAC;;MAED;MACA,MAAMiB,IAAI,GAAG,MAAM,IAAI,CAAC1C,WAAW,CAAC2C,OAAO,CAAC;QAC1ChC,WAAW,EAAEiB,UAAU,CAACjB,WAAW;QACnCW,QAAQ,EAAEP,MAAM,CAACG,EAAE;QACnBqB,SAAS;QACTK,SAAS,EAAEhB,UAAU,CAACgB,SAAS;QAC/BC,WAAW,EAAEjB,UAAU,CAACiB,WAAW;QACnCC,WAAW,EAAElB,UAAU,CAACkB;MAC1B,CAAC,CAAC;;MAEF;MACA,MAAM,IAAI,CAACC,aAAa,CAACL,IAAI,CAACxB,EAAE,CAAC;;MAEjC;MACA,MAAM;QACJa,KAAK,EAAE,YAAY;QACnBlB,QAAQ,EAAE;MACZ,CAAC;MAED,MAAM,IAAI,CAACjB,eAAe,CAACoD,WAAW,CAACjC,MAAM,CAACG,EAAE,EAAES,SAAS,CAACG,IAAI,CAAC;;MAEjE;MACA,MAAM,IAAI,CAAChC,OAAO,CAACmD,eAAe,CAAClC,MAAM,CAACG,EAAE,CAAC;;MAE7C;MACA,MAAM;QACJa,KAAK,EAAE,WAAW;QAClBlB,QAAQ,EAAE,CAAC;QACXF,WAAW,EAAEiB,UAAU,CAACjB;MAC1B,CAAC;MAEDtB,GAAG,CAACiB,IAAI,CAAC,0BAA0B,EAAE;QACnCgB,QAAQ,EAAEP,MAAM,CAACG,EAAE;QACnBW,aAAa,EAAEF,SAAS,CAACG,IAAI;QAC7BnB,WAAW,EAAEiB,UAAU,CAACjB;MAC1B,CAAC,CAAC;MAEF,IAAI,CAACH,IAAI,CAAC,eAAe,EAAEmB,SAAS,CAACG,IAAI,EAAEF,UAAU,CAACjB,WAAW,CAAC;IACpE,CAAC,CAAC,OAAOC,KAAK,EAAE;MACd,MAAMsC,GAAG,GAAGtC,KAAc;MAC1BvB,GAAG,CAACuB,KAAK,CAAC,uBAAuB,EAAEsC,GAAG,EAAE;QACtC5B,QAAQ,EAAEP,MAAM,CAACG,EAAE;QACnBW,aAAa,EAAEF,SAAS,CAACG;MAC3B,CAAC,CAAC;MAEF,MAAM;QACJC,KAAK,EAAE,QAAQ;QACflB,QAAQ,EAAE,CAAC;QACXD,KAAK,EAAEsC,GAAG,CAACC;MACb,CAAC;MAED,IAAI,CAAC3C,IAAI,CAAC,YAAY,EAAEmB,SAAS,CAACG,IAAI,EAAEoB,GAAG,CAAC;MAC5C,MAAMtC,KAAK;IACb;EACF;;EAEA;AACF;AACA;EACE,MAAcmC,aAAaA,CAACrC,MAAc,EAAiB;IACzD,OAAO,IAAI0C,OAAO,CAAO,CAACC,OAAO,EAAEC,MAAM,KAAK;MAC5C,MAAMC,SAAS,GAAGA,CAAA,KAAM;QACtB,MAAMb,IAAI,GAAG,IAAI,CAAC5C,OAAO,CAAC0D,aAAa,CAAC9C,MAAM,CAAC;QAC/C,IAAI,CAACgC,IAAI,EAAE;UACTY,MAAM,CAAC,IAAIG,KAAK,CAAC,uBAAuB,CAAC,CAAC;UAC1C,OAAO,IAAI;QACb;QAEA,IAAIf,IAAI,CAACgB,MAAM,KAAK,WAAW,EAAE;UAC/BL,OAAO,CAAC,CAAC;UACT,OAAO,IAAI;QACb;QAEA,IAAIX,IAAI,CAACgB,MAAM,KAAK,QAAQ,EAAE;UAC5BJ,MAAM,CAAC,IAAIG,KAAK,CAACf,IAAI,CAACiB,YAAY,IAAI,eAAe,CAAC,CAAC;UACvD,OAAO,IAAI;QACb;QAEA,OAAO,KAAK;MACd,CAAC;;MAED;MACA,IAAIJ,SAAS,CAAC,CAAC,EAAE;;MAEjB;MACA,MAAMK,QAAQ,GAAGC,WAAW,CAAC,MAAM;QACjC,IAAIN,SAAS,CAAC,CAAC,EAAE;UACfO,aAAa,CAACF,QAAQ,CAAC;QACzB;MACF,CAAC,EAAE,GAAG,CAAC;;MAEP;MACA,MAAMG,UAAU,GAAIC,eAAuB,IAAK;QAC9C,IAAIA,eAAe,KAAKtD,MAAM,EAAE;UAC9BoD,aAAa,CAACF,QAAQ,CAAC;UACvB,IAAI,CAAC5D,WAAW,CAACiE,GAAG,CAAC,eAAe,EAAEF,UAAU,CAAC;UACjD,IAAI,CAAC/D,WAAW,CAACiE,GAAG,CAAC,YAAY,EAAEC,QAAQ,CAAC;UAC5Cb,OAAO,CAAC,CAAC;QACX;MACF,CAAC;MAED,MAAMa,QAAQ,GAAGA,CAACC,YAAoB,EAAEvD,KAAY,KAAK;QACvD,IAAIuD,YAAY,KAAKzD,MAAM,EAAE;UAC3BoD,aAAa,CAACF,QAAQ,CAAC;UACvB,IAAI,CAAC5D,WAAW,CAACiE,GAAG,CAAC,eAAe,EAAEF,UAAU,CAAC;UACjD,IAAI,CAAC/D,WAAW,CAACiE,GAAG,CAAC,YAAY,EAAEC,QAAQ,CAAC;UAC5CZ,MAAM,CAAC1C,KAAK,CAAC;QACf;MACF,CAAC;MAED,IAAI,CAACZ,WAAW,CAACO,EAAE,CAAC,eAAe,EAAEwD,UAAU,CAAC;MAChD,IAAI,CAAC/D,WAAW,CAACO,EAAE,CAAC,YAAY,EAAE2D,QAAQ,CAAC;IAC7C,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACE,OAAOE,iBAAiBA,CACtBrD,MAAuB,EACvBsD,kBAAsC,EACgD;IACtF,IAAI,CAAC,IAAArD,yBAAa,EAAC,CAAC,CAACC,WAAW,CAACF,MAAM,CAACG,EAAE,CAAC,EAAE;MAC3C,MAAMC,mBAAW,CAACC,YAAY,CAACL,MAAM,CAACG,EAAE,CAAC;IAC3C;IAEA7B,GAAG,CAACiB,IAAI,CAAC,wBAAwB,EAAE;MAAEgB,QAAQ,EAAEP,MAAM,CAACG;IAAG,CAAC,CAAC;;IAE3D;IACA,MAAMK,UAAU,GAAG,MAAM,IAAI,CAACF,cAAc,CAACN,MAAM,CAAC;IAEpD,IAAIQ,UAAU,CAACE,MAAM,KAAK,CAAC,EAAE;MAC3BpC,GAAG,CAACiB,IAAI,CAAC,uBAAuB,EAAE;QAAEgB,QAAQ,EAAEP,MAAM,CAACG;MAAG,CAAC,CAAC;MAC1D;IACF;IAEA7B,GAAG,CAACiB,IAAI,CAAC,6BAA6B,EAAE;MACtCgB,QAAQ,EAAEP,MAAM,CAACG,EAAE;MACnBM,KAAK,EAAED,UAAU,CAACE;IACpB,CAAC,CAAC;;IAEF;IACA,KAAK,IAAI6C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG/C,UAAU,CAACE,MAAM,EAAE6C,CAAC,EAAE,EAAE;MAC1C,MAAM3C,SAAS,GAAGJ,UAAU,CAAC+C,CAAC,CAAC;MAE/B,IAAI;QACF;QACA,MAAM1C,UAAU,GAAG,MAAMyC,kBAAkB,CAAC1C,SAAS,CAAC;;QAEtD;QACA,WAAW,MAAMd,QAAQ,IAAI,IAAI,CAACa,aAAa,CAC7CX,MAAM,EACNY,SAAS,EACTC,UACF,CAAC,EAAE;UACD,MAAM;YACJ,GAAGf,QAAQ;YACX0D,cAAc,EAAED,CAAC;YACjBE,eAAe,EAAEjD,UAAU,CAACE;UAC9B,CAAC;QACH;MACF,CAAC,CAAC,OAAOb,KAAK,EAAE;QACd,MAAMsC,GAAG,GAAGtC,KAAc;QAC1BvB,GAAG,CAACuB,KAAK,CAAC,0BAA0B,EAAEsC,GAAG,EAAE;UACzC5B,QAAQ,EAAEP,MAAM,CAACG,EAAE;UACnBW,aAAa,EAAEF,SAAS,CAACG,IAAI;UAC7B2C,KAAK,EAAEH;QACT,CAAC,CAAC;QAEF,MAAM;UACJvC,KAAK,EAAE,QAAQ;UACflB,QAAQ,EAAE,CAAC;UACXD,KAAK,EAAEsC,GAAG,CAACC,OAAO;UAClBoB,cAAc,EAAED,CAAC;UACjBE,eAAe,EAAEjD,UAAU,CAACE;QAC9B,CAAC;;QAED;MACF;IACF;EACF;;EAEA;AACF;AACA;EACEiD,iBAAiBA,CAAA,EAAiB;IAChC,OAAO,IAAI,CAAC1E,WAAW,CAAC2E,eAAe,CAAC,CAAC;EAC3C;;EAEA;AACF;AACA;EACEC,aAAaA,CAAA,EAAiB;IAC5B,OAAO,IAAI,CAAC5E,WAAW,CAACS,WAAW,CAAC,CAAC;EACvC;;EAEA;AACF;AACA;EACE,MAAMoE,YAAYA,CAACnE,MAAc,EAAiB;IAChD,MAAM,IAAI,CAACV,WAAW,CAAC8E,MAAM,CAACpE,MAAM,CAAC;EACvC;;EAEA;AACF;AACA;EACE,MAAMqE,kBAAkBA,CAAA,EAAkB;IACxC,MAAM,IAAI,CAAC/E,WAAW,CAACgF,WAAW,CAAC,CAAC;EACtC;;EAEA;AACF;AACA;EACE,MAAMC,qBAAqBA,CAAA,EAAkB;IAC3C,MAAM,IAAI,CAACnF,OAAO,CAACoF,mBAAmB,CAAC,CAAC;IACxC,IAAI,CAAC1E,IAAI,CAAC,cAAc,EAAE,IAAI,CAACR,WAAW,CAACS,WAAW,CAAC,CAAC,CAAC;EAC3D;;EAEA;AACF;AACA;EACE,MAAM0E,eAAeA,CAAA,EAAkB;IACrC,MAAM,IAAI,CAACnF,WAAW,CAACoF,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC5E,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;EAC/B;;EAEA;AACF;AACA;EACE6E,YAAYA,CAAA,EAAS;IACnB,IAAI,CAACrF,WAAW,CAACsF,KAAK,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;EACEC,aAAaA,CAAA,EAAS;IACpB,IAAI,CAACvF,WAAW,CAACK,MAAM,CAAC,CAAC;EAC3B;;EAEA;AACF;AACA;EACEmF,OAAOA,CAAA,EAAS;IACdnG,GAAG,CAACiB,IAAI,CAAC,6BAA6B,CAAC;IACvC,IAAI,CAACV,eAAe,CAAC4F,OAAO,CAAC,CAAC;IAC9B,IAAI,CAACxF,WAAW,CAACwF,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC1F,OAAO,CAAC0F,OAAO,CAAC,CAAC;IACtB,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACzB,IAAI,CAAC/F,aAAa,GAAG,KAAK;EAC5B;AACF;AAACgG,OAAA,CAAAlG,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DeviceManager", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _DeviceManager.DeviceManager;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "OTAManager", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _OTAManager.OTAManager;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "RecordingManager", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _RecordingManager.RecordingManager;
22
+ }
23
+ });
24
+ var _DeviceManager = require("./DeviceManager");
25
+ var _RecordingManager = require("./RecordingManager");
26
+ var _OTAManager = require("./OTAManager");
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_DeviceManager","require","_RecordingManager","_OTAManager"],"sourceRoot":"../../../src","sources":["managers/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,cAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA","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