@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,194 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.UploadError = exports.TransferError = exports.SdkError = exports.ProvisioningError = exports.DeviceError = exports.BotaError = exports.BluetoothError = void 0;
7
+ exports.isBotaError = isBotaError;
8
+ var _constants = require("../ble/constants");
9
+ /**
10
+ * Custom error types for the Bota SDK
11
+ */
12
+
13
+ /**
14
+ * Base error class for all Bota SDK errors
15
+ */
16
+ class BotaError extends Error {
17
+ constructor(message, code, cause) {
18
+ super(message);
19
+ this.code = code;
20
+ this.cause = cause;
21
+ this.name = 'BotaError';
22
+ Object.setPrototypeOf(this, BotaError.prototype);
23
+ }
24
+ }
25
+
26
+ /**
27
+ * Bluetooth-related errors
28
+ */
29
+ exports.BotaError = BotaError;
30
+ class BluetoothError extends BotaError {
31
+ constructor(message, code, cause) {
32
+ super(message, code, cause);
33
+ this.name = 'BluetoothError';
34
+ Object.setPrototypeOf(this, BluetoothError.prototype);
35
+ }
36
+ static unavailable() {
37
+ return new BluetoothError('Bluetooth is not available on this device', 'BLUETOOTH_UNAVAILABLE');
38
+ }
39
+ static unauthorized() {
40
+ return new BluetoothError('Bluetooth permission not granted', 'BLUETOOTH_UNAUTHORIZED');
41
+ }
42
+ static poweredOff() {
43
+ return new BluetoothError('Bluetooth is powered off', 'BLUETOOTH_OFF');
44
+ }
45
+ }
46
+
47
+ /**
48
+ * Device-related errors
49
+ */
50
+ exports.BluetoothError = BluetoothError;
51
+ class DeviceError extends BotaError {
52
+ constructor(message, code, deviceId, cause) {
53
+ super(message, code, cause);
54
+ this.deviceId = deviceId;
55
+ this.name = 'DeviceError';
56
+ Object.setPrototypeOf(this, DeviceError.prototype);
57
+ }
58
+ static notFound(deviceId) {
59
+ return new DeviceError(`Device ${deviceId} not found`, 'DEVICE_NOT_FOUND', deviceId);
60
+ }
61
+ static connectionFailed(deviceId, cause) {
62
+ return new DeviceError(`Failed to connect to device ${deviceId}`, 'CONNECTION_FAILED', deviceId, cause);
63
+ }
64
+ static connectionLost(deviceId, during) {
65
+ const message = during ? `Connection to device ${deviceId} lost during ${during}` : `Connection to device ${deviceId} lost`;
66
+ return new DeviceError(message, 'CONNECTION_LOST', deviceId);
67
+ }
68
+ static bondingFailed(deviceId, cause) {
69
+ return new DeviceError(`Bonding failed for device ${deviceId}`, 'BONDING_FAILED', deviceId, cause);
70
+ }
71
+ static notConnected(deviceId) {
72
+ return new DeviceError(`Device ${deviceId} is not connected`, 'NOT_CONNECTED', deviceId);
73
+ }
74
+ static alreadyConnected(deviceId) {
75
+ return new DeviceError(`Device ${deviceId} is already connected`, 'ALREADY_CONNECTED', deviceId);
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Provisioning-related errors
81
+ */
82
+ exports.DeviceError = DeviceError;
83
+ class ProvisioningError extends BotaError {
84
+ constructor(message, code, deviceId, cause) {
85
+ super(message, code, cause);
86
+ this.deviceId = deviceId;
87
+ this.name = 'ProvisioningError';
88
+ Object.setPrototypeOf(this, ProvisioningError.prototype);
89
+ }
90
+ static invalidToken(deviceId) {
91
+ return new ProvisioningError('Device rejected the token as invalid', 'INVALID_TOKEN', deviceId);
92
+ }
93
+ static storageError(deviceId) {
94
+ return new ProvisioningError('Device failed to store the token', 'STORAGE_ERROR', deviceId);
95
+ }
96
+ static chunkError(deviceId) {
97
+ return new ProvisioningError('Token chunk transfer failed', 'CHUNK_ERROR', deviceId);
98
+ }
99
+ static alreadyProvisioned(deviceId) {
100
+ return new ProvisioningError('Device is already provisioned', 'ALREADY_PROVISIONED', deviceId);
101
+ }
102
+ static alreadyPaired(deviceId) {
103
+ return new ProvisioningError('Device is already paired with another credential. Factory reset the device before re-provisioning.', 'ALREADY_PAIRED', deviceId);
104
+ }
105
+ static timeout(deviceId) {
106
+ return new ProvisioningError('Provisioning timed out waiting for device response', 'PROVISIONING_TIMEOUT', deviceId);
107
+ }
108
+ }
109
+
110
+ /**
111
+ * Transfer-related errors
112
+ */
113
+ exports.ProvisioningError = ProvisioningError;
114
+ class TransferError extends BotaError {
115
+ constructor(message, code, recordingUuid, cause) {
116
+ super(message, code, cause);
117
+ this.recordingUuid = recordingUuid;
118
+ this.name = 'TransferError';
119
+ Object.setPrototypeOf(this, TransferError.prototype);
120
+ }
121
+ static recordingNotFound(uuid) {
122
+ return new TransferError(`Recording ${uuid} not found on device`, 'RECORDING_NOT_FOUND', uuid);
123
+ }
124
+ static checksumMismatch(uuid) {
125
+ return new TransferError(`Checksum mismatch for recording ${uuid}`, 'CHECKSUM_MISMATCH', uuid);
126
+ }
127
+ static interrupted(uuid, cause) {
128
+ return new TransferError(`Transfer interrupted for recording ${uuid}`, 'TRANSFER_INTERRUPTED', uuid, cause);
129
+ }
130
+ static timeout(uuid) {
131
+ return new TransferError(`Transfer timed out for recording ${uuid}`, 'TRANSFER_TIMEOUT', uuid);
132
+ }
133
+ static deviceError(uuid, errorCode) {
134
+ if (errorCode === _constants.BLE_ERROR_STORAGE_KEY_UNAVAILABLE) {
135
+ return new TransferError(`Recording ${uuid} exists, but its device storage key is unavailable`, 'STORAGE_KEY_UNAVAILABLE', uuid);
136
+ }
137
+ return new TransferError(`Device error (code: ${errorCode}) during transfer of ${uuid}`, 'DEVICE_ERROR', uuid);
138
+ }
139
+ }
140
+
141
+ /**
142
+ * Upload-related errors
143
+ */
144
+ exports.TransferError = TransferError;
145
+ class UploadError extends BotaError {
146
+ constructor(message, code, taskId, cause) {
147
+ super(message, code, cause);
148
+ this.taskId = taskId;
149
+ this.name = 'UploadError';
150
+ Object.setPrototypeOf(this, UploadError.prototype);
151
+ }
152
+ static urlExpired(taskId) {
153
+ return new UploadError('Upload URL has expired', 'URL_EXPIRED', taskId);
154
+ }
155
+ static networkUnavailable() {
156
+ return new UploadError('Network is not available', 'NETWORK_UNAVAILABLE');
157
+ }
158
+ static uploadFailed(taskId, cause) {
159
+ return new UploadError(`Upload failed for task ${taskId}`, 'UPLOAD_FAILED', taskId, cause);
160
+ }
161
+ static completionFailed(taskId, cause) {
162
+ return new UploadError(`Failed to notify completion for task ${taskId}`, 'COMPLETION_FAILED', taskId, cause);
163
+ }
164
+ }
165
+
166
+ /**
167
+ * SDK state errors
168
+ */
169
+ exports.UploadError = UploadError;
170
+ class SdkError extends BotaError {
171
+ constructor(message, code, cause) {
172
+ super(message, code, cause);
173
+ this.name = 'SdkError';
174
+ Object.setPrototypeOf(this, SdkError.prototype);
175
+ }
176
+ static notInitialized() {
177
+ return new SdkError('SDK has not been initialized. Call BotaClient.configure() first.', 'NOT_INITIALIZED');
178
+ }
179
+ static invalidState(expected, actual) {
180
+ return new SdkError(`Invalid state: expected ${expected}, got ${actual}`, 'INVALID_STATE');
181
+ }
182
+ static timeout(operation) {
183
+ return new SdkError(`Operation timed out: ${operation}`, 'TIMEOUT');
184
+ }
185
+ }
186
+
187
+ /**
188
+ * Type guard to check if an error is a BotaError
189
+ */
190
+ exports.SdkError = SdkError;
191
+ function isBotaError(error) {
192
+ return error instanceof BotaError;
193
+ }
194
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_constants","require","BotaError","Error","constructor","message","code","cause","name","Object","setPrototypeOf","prototype","exports","BluetoothError","unavailable","unauthorized","poweredOff","DeviceError","deviceId","notFound","connectionFailed","connectionLost","during","bondingFailed","notConnected","alreadyConnected","ProvisioningError","invalidToken","storageError","chunkError","alreadyProvisioned","alreadyPaired","timeout","TransferError","recordingUuid","recordingNotFound","uuid","checksumMismatch","interrupted","deviceError","errorCode","BLE_ERROR_STORAGE_KEY_UNAVAILABLE","UploadError","taskId","urlExpired","networkUnavailable","uploadFailed","completionFailed","SdkError","notInitialized","invalidState","expected","actual","operation","isBotaError","error"],"sourceRoot":"../../../src","sources":["utils/errors.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.logger = void 0;
7
+ const LOG_LEVELS = {
8
+ debug: 0,
9
+ info: 1,
10
+ warn: 2,
11
+ error: 3,
12
+ none: 4
13
+ };
14
+ class Logger {
15
+ level = 'warn';
16
+ prefix = '[Bota SDK]';
17
+ handler = null;
18
+ setLevel(level) {
19
+ this.level = level;
20
+ }
21
+ getLevel() {
22
+ return this.level;
23
+ }
24
+ setHandler(handler) {
25
+ this.handler = handler;
26
+ }
27
+ debug(message, context) {
28
+ this.write('debug', message, context);
29
+ }
30
+ info(message, context) {
31
+ this.write('info', message, context);
32
+ }
33
+ warn(message, context) {
34
+ this.write('warn', message, context);
35
+ }
36
+ error(message, error, context) {
37
+ this.write('error', message, error ? {
38
+ ...context,
39
+ error: error.message,
40
+ stack: error.stack
41
+ } : context);
42
+ }
43
+ tag(tag) {
44
+ return new TaggedLogger(this, tag);
45
+ }
46
+ write(level, message, context) {
47
+ if (LOG_LEVELS[level] < LOG_LEVELS[this.level]) return;
48
+ if (this.handler) {
49
+ this.handler({
50
+ level,
51
+ message,
52
+ context,
53
+ timestamp: new Date()
54
+ });
55
+ return;
56
+ }
57
+ const output = this.format(level, message, context);
58
+ console[level](output);
59
+ }
60
+ format(level, message, context) {
61
+ const contextValue = context ? ` ${JSON.stringify(context)}` : '';
62
+ return `${new Date().toISOString()} ${this.prefix} [${level.toUpperCase()}] ${message}${contextValue}`;
63
+ }
64
+ }
65
+ class TaggedLogger {
66
+ constructor(parent, tagValue) {
67
+ this.parent = parent;
68
+ this.tagValue = tagValue;
69
+ }
70
+ debug(message, context) {
71
+ this.parent.debug(`[${this.tagValue}] ${message}`, context);
72
+ }
73
+ info(message, context) {
74
+ this.parent.info(`[${this.tagValue}] ${message}`, context);
75
+ }
76
+ warn(message, context) {
77
+ this.parent.warn(`[${this.tagValue}] ${message}`, context);
78
+ }
79
+ error(message, error, context) {
80
+ this.parent.error(`[${this.tagValue}] ${message}`, error, context);
81
+ }
82
+ }
83
+ const logger = exports.logger = new Logger();
84
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LOG_LEVELS","debug","info","warn","error","none","Logger","level","prefix","handler","setLevel","getLevel","setHandler","message","context","write","stack","tag","TaggedLogger","timestamp","Date","output","format","console","contextValue","JSON","stringify","toISOString","toUpperCase","constructor","parent","tagValue","logger","exports"],"sourceRoot":"../../../src","sources":["utils/logger.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+
3
+ import EventEmitter from 'eventemitter3';
4
+ import { getCompatibilityClient } from './compatibility/runtime';
5
+ import { DeviceManager } from './managers/DeviceManager';
6
+ import { OTAManager } from './managers/OTAManager';
7
+ import { RecordingManager } from './managers/RecordingManager';
8
+ import { BluetoothError, SdkError } from './utils/errors';
9
+ import { logger } from './utils/logger';
10
+ const log = logger.tag('BotaClient');
11
+ const normalizeConfig = config => ({
12
+ environment: config.environment ?? 'production',
13
+ backgroundSyncEnabled: config.backgroundSyncEnabled ?? true,
14
+ wifiOnlyUpload: config.wifiOnlyUpload ?? false,
15
+ logLevel: config.logLevel ?? 'warn',
16
+ debug: config.debug ?? false
17
+ });
18
+ class BotaClientImpl extends EventEmitter {
19
+ _config = null;
20
+ _state = 'uninitialized';
21
+ _bluetoothState = 'unknown';
22
+ _client = null;
23
+ _deviceManager = null;
24
+ _recordingManager = null;
25
+ _otaManager = null;
26
+ _nativeOwned = false;
27
+ _operation = Promise.resolve();
28
+ _configurePromise = null;
29
+ _destroyPromise = null;
30
+ get state() {
31
+ return this._state;
32
+ }
33
+ get bluetoothState() {
34
+ return this._bluetoothState;
35
+ }
36
+ get isBluetoothReady() {
37
+ return this._bluetoothState === 'poweredOn';
38
+ }
39
+ get isInitialized() {
40
+ return this._state === 'ready';
41
+ }
42
+ get config() {
43
+ return this._config;
44
+ }
45
+ get devices() {
46
+ if (!this._deviceManager) throw SdkError.notInitialized();
47
+ return this._deviceManager;
48
+ }
49
+ get recordings() {
50
+ if (!this._recordingManager) throw SdkError.notInitialized();
51
+ return this._recordingManager;
52
+ }
53
+ get ota() {
54
+ if (!this._otaManager) throw SdkError.notInitialized();
55
+ return this._otaManager;
56
+ }
57
+ configure(config = {}) {
58
+ if (this._configurePromise && !this._destroyPromise) {
59
+ return this._configurePromise;
60
+ }
61
+ const normalized = normalizeConfig(config);
62
+ const operation = this.enqueue(() => this.performConfigure(normalized));
63
+ this._configurePromise = operation;
64
+ void operation.finally(() => {
65
+ if (this._configurePromise === operation) this._configurePromise = null;
66
+ }).catch(() => undefined);
67
+ return operation;
68
+ }
69
+ async waitForBluetooth(timeoutMs = 10000) {
70
+ if (!this._client || !this._nativeOwned) throw SdkError.notInitialized();
71
+ if (this._bluetoothState === 'poweredOn') return;
72
+ if (this._bluetoothState === 'unsupported') {
73
+ throw BluetoothError.unavailable();
74
+ }
75
+ const deadline = Date.now() + timeoutMs;
76
+ while (Date.now() < deadline) {
77
+ await new Promise(resolve => setTimeout(() => resolve(), 50));
78
+ const capabilities = await this._client.getCapabilities();
79
+ const state = capabilities.bluetooth ? 'poweredOn' : 'unsupported';
80
+ this.setBluetoothState(state);
81
+ if (state === 'poweredOn') return;
82
+ if (state === 'unsupported') {
83
+ throw BluetoothError.unavailable();
84
+ }
85
+ }
86
+ throw SdkError.timeout('Bluetooth ready');
87
+ }
88
+ setLogLevel(level) {
89
+ logger.setLevel(level);
90
+ if (this._config) this._config.logLevel = level;
91
+ }
92
+ setLogHandler(handler) {
93
+ logger.setHandler(handler);
94
+ }
95
+ destroy() {
96
+ if (this._destroyPromise) return this._destroyPromise;
97
+ const operation = this.enqueue(async () => {
98
+ await this.releaseOwnerGraph();
99
+ this.removeAllListeners();
100
+ });
101
+ this._destroyPromise = operation;
102
+ void operation.finally(() => {
103
+ if (this._destroyPromise === operation) this._destroyPromise = null;
104
+ }).catch(() => undefined);
105
+ return operation;
106
+ }
107
+ enqueue(operation) {
108
+ const queued = this._operation.catch(() => undefined).then(operation);
109
+ this._operation = queued.catch(() => undefined);
110
+ return queued;
111
+ }
112
+ async performConfigure(config) {
113
+ if (this._state !== 'uninitialized' || this._nativeOwned) {
114
+ log.warn('SDK already configured, reconfiguring');
115
+ await this.releaseOwnerGraph();
116
+ }
117
+ this._config = config;
118
+ logger.setLevel(config.logLevel);
119
+ this.setState('initializing');
120
+ const client = getCompatibilityClient();
121
+ this._client = client;
122
+ this._nativeOwned = true;
123
+ let deviceManager = null;
124
+ let recordingManager = null;
125
+ let otaManager = null;
126
+ try {
127
+ await client.configure({
128
+ logLevel: config.logLevel
129
+ });
130
+ const nativeState = await client.getState();
131
+ if (nativeState !== 'ready') {
132
+ throw SdkError.invalidState('ready', nativeState);
133
+ }
134
+ const capabilities = await client.getCapabilities();
135
+ this.setBluetoothState(capabilities.bluetooth ? 'poweredOn' : 'unsupported');
136
+ deviceManager = new DeviceManager();
137
+ await deviceManager.initialize();
138
+ recordingManager = new RecordingManager();
139
+ await recordingManager.initialize();
140
+ otaManager = new OTAManager(deviceManager);
141
+ this._deviceManager = deviceManager;
142
+ this._recordingManager = recordingManager;
143
+ this._otaManager = otaManager;
144
+ this.setState(nativeState);
145
+ log.info('SDK configured successfully', {
146
+ environment: config.environment,
147
+ bluetoothState: this._bluetoothState
148
+ });
149
+ } catch (error) {
150
+ deviceManager?.destroy();
151
+ recordingManager?.destroy();
152
+ otaManager?.destroy();
153
+ await client.destroy().catch(() => undefined);
154
+ this._nativeOwned = false;
155
+ this._client = null;
156
+ this.setState('error');
157
+ const failure = error instanceof Error ? error : new Error(String(error));
158
+ log.error('Failed to configure SDK', failure);
159
+ this.emit('error', failure);
160
+ throw error;
161
+ }
162
+ }
163
+ async releaseOwnerGraph() {
164
+ this._deviceManager?.destroy();
165
+ this._recordingManager?.destroy();
166
+ this._otaManager?.destroy();
167
+ this._deviceManager = null;
168
+ this._recordingManager = null;
169
+ this._otaManager = null;
170
+ const client = this._client;
171
+ this._client = null;
172
+ if (client && this._nativeOwned) await client.destroy();
173
+ this._nativeOwned = false;
174
+ this._config = null;
175
+ this.setState('uninitialized');
176
+ }
177
+ setState(state) {
178
+ if (state === this._state) return;
179
+ this._state = state;
180
+ this.emit('stateChanged', state);
181
+ }
182
+ setBluetoothState(state) {
183
+ if (state === this._bluetoothState) return;
184
+ this._bluetoothState = state;
185
+ this.emit('bluetoothStateChanged', state);
186
+ }
187
+ }
188
+ export const BotaClient = new BotaClientImpl();
189
+ //# sourceMappingURL=BotaClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["EventEmitter","getCompatibilityClient","DeviceManager","OTAManager","RecordingManager","BluetoothError","SdkError","logger","log","tag","normalizeConfig","config","environment","backgroundSyncEnabled","wifiOnlyUpload","logLevel","debug","BotaClientImpl","_config","_state","_bluetoothState","_client","_deviceManager","_recordingManager","_otaManager","_nativeOwned","_operation","Promise","resolve","_configurePromise","_destroyPromise","state","bluetoothState","isBluetoothReady","isInitialized","devices","notInitialized","recordings","ota","configure","normalized","operation","enqueue","performConfigure","finally","catch","undefined","waitForBluetooth","timeoutMs","unavailable","deadline","Date","now","setTimeout","capabilities","getCapabilities","bluetooth","setBluetoothState","timeout","setLogLevel","level","setLevel","setLogHandler","handler","setHandler","destroy","releaseOwnerGraph","removeAllListeners","queued","then","warn","setState","client","deviceManager","recordingManager","otaManager","nativeState","getState","invalidState","initialize","info","error","failure","Error","String","emit","BotaClient"],"sourceRoot":"../../src","sources":["BotaClient.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ export const DEVICE_LOG_FLAG_BACKLOG = 0x01;
4
+ export const DEVICE_LOG_FLAG_DROPPED = 0x02;
5
+ export const BLE_ERROR_STORAGE_KEY_UNAVAILABLE = 0x14;
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEVICE_LOG_FLAG_BACKLOG","DEVICE_LOG_FLAG_DROPPED","BLE_ERROR_STORAGE_KEY_UNAVAILABLE"],"sourceRoot":"../../../src","sources":["ble/constants.ts"],"mappings":";;AAAA,OAAO,MAAMA,uBAAuB,GAAG,IAAI;AAC3C,OAAO,MAAMC,uBAAuB,GAAG,IAAI;AAC3C,OAAO,MAAMC,iCAAiC,GAAG,IAAI","ignoreList":[]}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ import { Buffer } from 'buffer';
4
+ import { DEVICE_LOG_FLAG_BACKLOG, DEVICE_LOG_FLAG_DROPPED } from './constants';
5
+ const PACKET_HEADER_SIZE = 3;
6
+ export class DeviceLogDecoder {
7
+ lineBuffer = Buffer.alloc(0);
8
+ expectedSequence = null;
9
+ push(packet) {
10
+ if (packet.length < PACKET_HEADER_SIZE) {
11
+ return [];
12
+ }
13
+ const sequence = packet.readUInt16LE(0);
14
+ const flags = packet[2];
15
+ const hasSequenceGap = this.expectedSequence !== null && sequence !== this.expectedSequence;
16
+ const hasDroppedBytes = (flags & DEVICE_LOG_FLAG_DROPPED) !== 0;
17
+ const events = [];
18
+ if (hasSequenceGap || hasDroppedBytes) {
19
+ this.lineBuffer = Buffer.alloc(0);
20
+ }
21
+ this.expectedSequence = sequence + 1 & 0xffff;
22
+ this.lineBuffer = Buffer.concat([this.lineBuffer, packet.subarray(PACKET_HEADER_SIZE)]);
23
+ const isBacklog = (flags & DEVICE_LOG_FLAG_BACKLOG) !== 0;
24
+ let newlineIndex = this.lineBuffer.indexOf(0x0a);
25
+ while (newlineIndex !== -1) {
26
+ let line = this.lineBuffer.subarray(0, newlineIndex);
27
+ if (line.length > 0 && line[line.length - 1] === 0x0d) {
28
+ line = line.subarray(0, line.length - 1);
29
+ }
30
+ events.push({
31
+ level: 'debug',
32
+ message: Buffer.from(line).toString('utf8'),
33
+ isBacklog
34
+ });
35
+ this.lineBuffer = Buffer.from(this.lineBuffer.subarray(newlineIndex + 1));
36
+ newlineIndex = this.lineBuffer.indexOf(0x0a);
37
+ }
38
+ return events;
39
+ }
40
+ reset() {
41
+ this.lineBuffer = Buffer.alloc(0);
42
+ this.expectedSequence = null;
43
+ }
44
+ }
45
+ //# sourceMappingURL=deviceLogs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Buffer","DEVICE_LOG_FLAG_BACKLOG","DEVICE_LOG_FLAG_DROPPED","PACKET_HEADER_SIZE","DeviceLogDecoder","lineBuffer","alloc","expectedSequence","push","packet","length","sequence","readUInt16LE","flags","hasSequenceGap","hasDroppedBytes","events","concat","subarray","isBacklog","newlineIndex","indexOf","line","level","message","from","toString","reset"],"sourceRoot":"../../../src","sources":["ble/deviceLogs.ts"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,QAAQ;AAE/B,SACEC,uBAAuB,EACvBC,uBAAuB,QAClB,aAAa;AAKpB,MAAMC,kBAAkB,GAAG,CAAC;AAE5B,OAAO,MAAMC,gBAAgB,CAAC;EACpBC,UAAU,GAAGL,MAAM,CAACM,KAAK,CAAC,CAAC,CAAC;EAC5BC,gBAAgB,GAAkB,IAAI;EAE9CC,IAAIA,CAACC,MAAc,EAAoB;IACrC,IAAIA,MAAM,CAACC,MAAM,GAAGP,kBAAkB,EAAE;MACtC,OAAO,EAAE;IACX;IAEA,MAAMQ,QAAQ,GAAGF,MAAM,CAACG,YAAY,CAAC,CAAC,CAAC;IACvC,MAAMC,KAAK,GAAGJ,MAAM,CAAC,CAAC,CAAC;IACvB,MAAMK,cAAc,GAAG,IAAI,CAACP,gBAAgB,KAAK,IAAI,IAChDI,QAAQ,KAAK,IAAI,CAACJ,gBAAgB;IACvC,MAAMQ,eAAe,GAAG,CAACF,KAAK,GAAGX,uBAAuB,MAAM,CAAC;IAC/D,MAAMc,MAAwB,GAAG,EAAE;IAEnC,IAAIF,cAAc,IAAIC,eAAe,EAAE;MACrC,IAAI,CAACV,UAAU,GAAGL,MAAM,CAACM,KAAK,CAAC,CAAC,CAAC;IACnC;IAEA,IAAI,CAACC,gBAAgB,GAAII,QAAQ,GAAG,CAAC,GAAI,MAAM;IAC/C,IAAI,CAACN,UAAU,GAAGL,MAAM,CAACiB,MAAM,CAAC,CAAC,IAAI,CAACZ,UAAU,EAAEI,MAAM,CAACS,QAAQ,CAACf,kBAAkB,CAAC,CAAC,CAAC;IAEvF,MAAMgB,SAAS,GAAG,CAACN,KAAK,GAAGZ,uBAAuB,MAAM,CAAC;IACzD,IAAImB,YAAY,GAAG,IAAI,CAACf,UAAU,CAACgB,OAAO,CAAC,IAAI,CAAC;IAChD,OAAOD,YAAY,KAAK,CAAC,CAAC,EAAE;MAC1B,IAAIE,IAAI,GAAG,IAAI,CAACjB,UAAU,CAACa,QAAQ,CAAC,CAAC,EAAEE,YAAY,CAAC;MACpD,IAAIE,IAAI,CAACZ,MAAM,GAAG,CAAC,IAAIY,IAAI,CAACA,IAAI,CAACZ,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;QACrDY,IAAI,GAAGA,IAAI,CAACJ,QAAQ,CAAC,CAAC,EAAEI,IAAI,CAACZ,MAAM,GAAG,CAAC,CAAC;MAC1C;MACAM,MAAM,CAACR,IAAI,CAAC;QACVe,KAAK,EAAE,OAAO;QACdC,OAAO,EAAExB,MAAM,CAACyB,IAAI,CAACH,IAAI,CAAC,CAACI,QAAQ,CAAC,MAAM,CAAC;QAC3CP;MACF,CAAC,CAAC;MACF,IAAI,CAACd,UAAU,GAAGL,MAAM,CAACyB,IAAI,CAC3B,IAAI,CAACpB,UAAU,CAACa,QAAQ,CAACE,YAAY,GAAG,CAAC,CAC3C,CAAC;MACDA,YAAY,GAAG,IAAI,CAACf,UAAU,CAACgB,OAAO,CAAC,IAAI,CAAC;IAC9C;IAEA,OAAOL,MAAM;EACf;EAEAW,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACtB,UAAU,GAAGL,MAAM,CAACM,KAAK,CAAC,CAAC,CAAC;IACjC,IAAI,CAACC,gBAAgB,GAAG,IAAI;EAC9B;AACF","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=DeviceStateCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["cache/DeviceStateCache.ts"],"mappings":"","ignoreList":[]}