@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.
- package/README.md +279 -0
- package/lib/commonjs/BotaClient.js +223 -0
- package/lib/commonjs/BotaClient.js.map +1 -0
- package/lib/commonjs/ble/BleManager.js +494 -0
- package/lib/commonjs/ble/BleManager.js.map +1 -0
- package/lib/commonjs/ble/constants.js +166 -0
- package/lib/commonjs/ble/constants.js.map +1 -0
- package/lib/commonjs/ble/index.js +54 -0
- package/lib/commonjs/ble/index.js.map +1 -0
- package/lib/commonjs/ble/parsers.js +345 -0
- package/lib/commonjs/ble/parsers.js.map +1 -0
- package/lib/commonjs/index.js +81 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/managers/DeviceManager.js +437 -0
- package/lib/commonjs/managers/DeviceManager.js.map +1 -0
- package/lib/commonjs/managers/OTAManager.js +227 -0
- package/lib/commonjs/managers/OTAManager.js.map +1 -0
- package/lib/commonjs/managers/RecordingManager.js +384 -0
- package/lib/commonjs/managers/RecordingManager.js.map +1 -0
- package/lib/commonjs/managers/index.js +27 -0
- package/lib/commonjs/managers/index.js.map +1 -0
- package/lib/commonjs/models/Device.js +2 -0
- package/lib/commonjs/models/Device.js.map +1 -0
- package/lib/commonjs/models/Recording.js +2 -0
- package/lib/commonjs/models/Recording.js.map +1 -0
- package/lib/commonjs/models/Status.js +6 -0
- package/lib/commonjs/models/Status.js.map +1 -0
- package/lib/commonjs/models/index.js +39 -0
- package/lib/commonjs/models/index.js.map +1 -0
- package/lib/commonjs/protocol/ProtocolHandler.js +343 -0
- package/lib/commonjs/protocol/ProtocolHandler.js.map +1 -0
- package/lib/commonjs/protocol/index.js +13 -0
- package/lib/commonjs/protocol/index.js.map +1 -0
- package/lib/commonjs/storage/StorageManager.js +333 -0
- package/lib/commonjs/storage/StorageManager.js.map +1 -0
- package/lib/commonjs/storage/index.js +19 -0
- package/lib/commonjs/storage/index.js.map +1 -0
- package/lib/commonjs/upload/S3Uploader.js +133 -0
- package/lib/commonjs/upload/S3Uploader.js.map +1 -0
- package/lib/commonjs/upload/UploadQueue.js +280 -0
- package/lib/commonjs/upload/UploadQueue.js.map +1 -0
- package/lib/commonjs/upload/index.js +20 -0
- package/lib/commonjs/upload/index.js.map +1 -0
- package/lib/commonjs/utils/errors.js +187 -0
- package/lib/commonjs/utils/errors.js.map +1 -0
- package/lib/commonjs/utils/index.js +40 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/commonjs/utils/logger.js +135 -0
- package/lib/commonjs/utils/logger.js.map +1 -0
- package/lib/commonjs/utils/retry.js +160 -0
- package/lib/commonjs/utils/retry.js.map +1 -0
- package/lib/module/BotaClient.js +216 -0
- package/lib/module/BotaClient.js.map +1 -0
- package/lib/module/ble/BleManager.js +484 -0
- package/lib/module/ble/BleManager.js.map +1 -0
- package/lib/module/ble/constants.js +159 -0
- package/lib/module/ble/constants.js.map +1 -0
- package/lib/module/ble/index.js +8 -0
- package/lib/module/ble/index.js.map +1 -0
- package/lib/module/ble/parsers.js +328 -0
- package/lib/module/ble/parsers.js.map +1 -0
- package/lib/module/index.js +22 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/managers/DeviceManager.js +429 -0
- package/lib/module/managers/DeviceManager.js.map +1 -0
- package/lib/module/managers/OTAManager.js +219 -0
- package/lib/module/managers/OTAManager.js.map +1 -0
- package/lib/module/managers/RecordingManager.js +376 -0
- package/lib/module/managers/RecordingManager.js.map +1 -0
- package/lib/module/managers/index.js +8 -0
- package/lib/module/managers/index.js.map +1 -0
- package/lib/module/models/Device.js +2 -0
- package/lib/module/models/Device.js.map +1 -0
- package/lib/module/models/Recording.js +2 -0
- package/lib/module/models/Recording.js.map +1 -0
- package/lib/module/models/Status.js +2 -0
- package/lib/module/models/Status.js.map +1 -0
- package/lib/module/models/index.js +8 -0
- package/lib/module/models/index.js.map +1 -0
- package/lib/module/protocol/ProtocolHandler.js +336 -0
- package/lib/module/protocol/ProtocolHandler.js.map +1 -0
- package/lib/module/protocol/index.js +6 -0
- package/lib/module/protocol/index.js.map +1 -0
- package/lib/module/storage/StorageManager.js +324 -0
- package/lib/module/storage/StorageManager.js.map +1 -0
- package/lib/module/storage/index.js +6 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/upload/S3Uploader.js +126 -0
- package/lib/module/upload/S3Uploader.js.map +1 -0
- package/lib/module/upload/UploadQueue.js +272 -0
- package/lib/module/upload/UploadQueue.js.map +1 -0
- package/lib/module/upload/index.js +7 -0
- package/lib/module/upload/index.js.map +1 -0
- package/lib/module/utils/errors.js +173 -0
- package/lib/module/utils/errors.js.map +1 -0
- package/lib/module/utils/index.js +8 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/module/utils/logger.js +129 -0
- package/lib/module/utils/logger.js.map +1 -0
- package/lib/module/utils/retry.js +149 -0
- package/lib/module/utils/retry.js.map +1 -0
- package/lib/typescript/src/BotaClient.d.ts +77 -0
- package/lib/typescript/src/BotaClient.d.ts.map +1 -0
- package/lib/typescript/src/ble/BleManager.d.ts +111 -0
- package/lib/typescript/src/ble/BleManager.d.ts.map +1 -0
- package/lib/typescript/src/ble/constants.d.ts +111 -0
- package/lib/typescript/src/ble/constants.d.ts.map +1 -0
- package/lib/typescript/src/ble/index.d.ts +7 -0
- package/lib/typescript/src/ble/index.d.ts.map +1 -0
- package/lib/typescript/src/ble/parsers.d.ts +100 -0
- package/lib/typescript/src/ble/parsers.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +16 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts +84 -0
- package/lib/typescript/src/managers/DeviceManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/OTAManager.d.ts +78 -0
- package/lib/typescript/src/managers/OTAManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts +90 -0
- package/lib/typescript/src/managers/RecordingManager.d.ts.map +1 -0
- package/lib/typescript/src/managers/index.d.ts +7 -0
- package/lib/typescript/src/managers/index.d.ts.map +1 -0
- package/lib/typescript/src/models/Device.d.ts +139 -0
- package/lib/typescript/src/models/Device.d.ts.map +1 -0
- package/lib/typescript/src/models/Recording.d.ts +110 -0
- package/lib/typescript/src/models/Recording.d.ts.map +1 -0
- package/lib/typescript/src/models/Status.d.ts +104 -0
- package/lib/typescript/src/models/Status.d.ts.map +1 -0
- package/lib/typescript/src/models/index.d.ts +7 -0
- package/lib/typescript/src/models/index.d.ts.map +1 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts +69 -0
- package/lib/typescript/src/protocol/ProtocolHandler.d.ts.map +1 -0
- package/lib/typescript/src/protocol/index.d.ts +5 -0
- package/lib/typescript/src/protocol/index.d.ts.map +1 -0
- package/lib/typescript/src/storage/StorageManager.d.ts +116 -0
- package/lib/typescript/src/storage/StorageManager.d.ts.map +1 -0
- package/lib/typescript/src/storage/index.d.ts +5 -0
- package/lib/typescript/src/storage/index.d.ts.map +1 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts +38 -0
- package/lib/typescript/src/upload/S3Uploader.d.ts.map +1 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts +95 -0
- package/lib/typescript/src/upload/UploadQueue.d.ts.map +1 -0
- package/lib/typescript/src/upload/index.d.ts +6 -0
- package/lib/typescript/src/upload/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/errors.d.ts +82 -0
- package/lib/typescript/src/utils/errors.d.ts.map +1 -0
- package/lib/typescript/src/utils/index.d.ts +7 -0
- package/lib/typescript/src/utils/index.d.ts.map +1 -0
- package/lib/typescript/src/utils/logger.d.ts +68 -0
- package/lib/typescript/src/utils/logger.d.ts.map +1 -0
- package/lib/typescript/src/utils/retry.d.ts +53 -0
- package/lib/typescript/src/utils/retry.d.ts.map +1 -0
- package/package.json +95 -0
- package/src/BotaClient.ts +238 -0
- package/src/ble/BleManager.ts +573 -0
- package/src/ble/constants.ts +158 -0
- package/src/ble/index.ts +7 -0
- package/src/ble/parsers.ts +395 -0
- package/src/index.ts +64 -0
- package/src/managers/DeviceManager.ts +545 -0
- package/src/managers/OTAManager.ts +263 -0
- package/src/managers/RecordingManager.ts +434 -0
- package/src/managers/index.ts +12 -0
- package/src/models/Device.ts +164 -0
- package/src/models/Recording.ts +123 -0
- package/src/models/Status.ts +126 -0
- package/src/models/index.ts +7 -0
- package/src/protocol/ProtocolHandler.ts +459 -0
- package/src/protocol/index.ts +5 -0
- package/src/storage/StorageManager.ts +343 -0
- package/src/storage/index.ts +5 -0
- package/src/upload/S3Uploader.ts +164 -0
- package/src/upload/UploadQueue.ts +310 -0
- package/src/upload/index.ts +6 -0
- package/src/utils/errors.ts +310 -0
- package/src/utils/index.ts +7 -0
- package/src/utils/logger.ts +137 -0
- package/src/utils/retry.ts +177 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status and configuration type definitions
|
|
3
|
+
*/
|
|
4
|
+
import type { DeviceStatus, StorageInfo } from './Device';
|
|
5
|
+
import type { SyncProgress, UploadTask } from './Recording';
|
|
6
|
+
/**
|
|
7
|
+
* SDK log level
|
|
8
|
+
*/
|
|
9
|
+
export type LogLevel = 'debug' | 'info' | 'warn' | 'error' | 'none';
|
|
10
|
+
/**
|
|
11
|
+
* SDK configuration options
|
|
12
|
+
*/
|
|
13
|
+
export interface BotaConfig {
|
|
14
|
+
/** Environment for API endpoint (production or sandbox) */
|
|
15
|
+
environment?: 'production' | 'sandbox';
|
|
16
|
+
/** Enable background sync (default: true) */
|
|
17
|
+
backgroundSyncEnabled?: boolean;
|
|
18
|
+
/** Only upload on WiFi (default: false) */
|
|
19
|
+
wifiOnlyUpload?: boolean;
|
|
20
|
+
/** Logging level (default: 'warn') */
|
|
21
|
+
logLevel?: LogLevel;
|
|
22
|
+
/** Enable debug mode with verbose logging */
|
|
23
|
+
debug?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* SDK state
|
|
27
|
+
*/
|
|
28
|
+
export type SdkState = 'uninitialized' | 'initializing' | 'ready' | 'error';
|
|
29
|
+
/**
|
|
30
|
+
* Bluetooth state
|
|
31
|
+
*/
|
|
32
|
+
export type BluetoothState = 'unknown' | 'resetting' | 'unsupported' | 'unauthorized' | 'poweredOff' | 'poweredOn';
|
|
33
|
+
/**
|
|
34
|
+
* SDK status information
|
|
35
|
+
*/
|
|
36
|
+
export interface SdkStatus {
|
|
37
|
+
/** Current SDK state */
|
|
38
|
+
state: SdkState;
|
|
39
|
+
/** Bluetooth state */
|
|
40
|
+
bluetoothState: BluetoothState;
|
|
41
|
+
/** Whether Bluetooth is ready for operations */
|
|
42
|
+
isBluetoothReady: boolean;
|
|
43
|
+
/** Number of connected devices */
|
|
44
|
+
connectedDevicesCount: number;
|
|
45
|
+
/** Number of pending uploads in queue */
|
|
46
|
+
pendingUploadsCount: number;
|
|
47
|
+
}
|
|
48
|
+
export type { DeviceStatus, StorageInfo, SyncProgress, UploadTask };
|
|
49
|
+
/**
|
|
50
|
+
* Event types emitted by DeviceManager
|
|
51
|
+
*/
|
|
52
|
+
export interface DeviceManagerEvents {
|
|
53
|
+
/** Emitted when a device is discovered during scan */
|
|
54
|
+
deviceDiscovered: (device: import('./Device').DiscoveredDevice) => void;
|
|
55
|
+
/** Emitted when a device is connected */
|
|
56
|
+
deviceConnected: (device: import('./Device').ConnectedDevice) => void;
|
|
57
|
+
/** Emitted when a device is disconnected */
|
|
58
|
+
deviceDisconnected: (deviceId: string, error?: Error) => void;
|
|
59
|
+
/** Emitted when device status is updated */
|
|
60
|
+
deviceStatusUpdated: (deviceId: string, status: import('./Device').DeviceStatus) => void;
|
|
61
|
+
/** Emitted when scan starts */
|
|
62
|
+
scanStarted: () => void;
|
|
63
|
+
/** Emitted when scan stops */
|
|
64
|
+
scanStopped: () => void;
|
|
65
|
+
/** Emitted on scan error */
|
|
66
|
+
scanError: (error: Error) => void;
|
|
67
|
+
/** Emitted on connection state change */
|
|
68
|
+
connectionStateChanged: (deviceId: string, state: import('./Device').ConnectionState) => void;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Event types emitted by RecordingManager
|
|
72
|
+
*/
|
|
73
|
+
export interface RecordingManagerEvents {
|
|
74
|
+
/** Emitted when sync starts for a recording */
|
|
75
|
+
syncStarted: (deviceRecordingUuid: string) => void;
|
|
76
|
+
/** Emitted on sync progress update */
|
|
77
|
+
syncProgress: (deviceRecordingUuid: string, progress: SyncProgress) => void;
|
|
78
|
+
/** Emitted when sync completes successfully */
|
|
79
|
+
syncCompleted: (deviceRecordingUuid: string, recordingId: string) => void;
|
|
80
|
+
/** Emitted when sync fails */
|
|
81
|
+
syncFailed: (deviceRecordingUuid: string, error: Error) => void;
|
|
82
|
+
/** Emitted when upload queue changes */
|
|
83
|
+
queueUpdated: (tasks: UploadTask[]) => void;
|
|
84
|
+
/** Emitted when an upload starts */
|
|
85
|
+
uploadStarted: (taskId: string) => void;
|
|
86
|
+
/** Emitted on upload progress */
|
|
87
|
+
uploadProgress: (taskId: string, progress: number) => void;
|
|
88
|
+
/** Emitted when an upload completes */
|
|
89
|
+
uploadCompleted: (taskId: string, recordingId: string) => void;
|
|
90
|
+
/** Emitted when an upload fails */
|
|
91
|
+
uploadFailed: (taskId: string, error: Error) => void;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Event types emitted by BotaClient
|
|
95
|
+
*/
|
|
96
|
+
export interface BotaClientEvents {
|
|
97
|
+
/** Emitted when SDK state changes */
|
|
98
|
+
stateChanged: (state: SdkState) => void;
|
|
99
|
+
/** Emitted when Bluetooth state changes */
|
|
100
|
+
bluetoothStateChanged: (state: BluetoothState) => void;
|
|
101
|
+
/** Emitted on SDK error */
|
|
102
|
+
error: (error: Error) => void;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=Status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Status.d.ts","sourceRoot":"","sources":["../../../../src/models/Status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/models/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol Handler - Implements Device-App Protocol for recording transfer
|
|
3
|
+
*/
|
|
4
|
+
import { Buffer } from 'buffer';
|
|
5
|
+
import type { StorageInfo } from '../models/Device';
|
|
6
|
+
import type { DeviceRecording } from '../models/Recording';
|
|
7
|
+
/**
|
|
8
|
+
* Transfer progress callback
|
|
9
|
+
*/
|
|
10
|
+
export type TransferProgressCallback = (bytesReceived: number, totalBytes?: number) => void;
|
|
11
|
+
/**
|
|
12
|
+
* Protocol Handler class
|
|
13
|
+
*/
|
|
14
|
+
export declare class ProtocolHandler {
|
|
15
|
+
private bleManager;
|
|
16
|
+
private activeTransfers;
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* Get storage info from device
|
|
20
|
+
*/
|
|
21
|
+
getStorageInfo(deviceId: string): Promise<StorageInfo>;
|
|
22
|
+
/**
|
|
23
|
+
* List recordings on device
|
|
24
|
+
*/
|
|
25
|
+
listRecordings(deviceId: string): Promise<DeviceRecording[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Transfer a recording from device
|
|
28
|
+
* Returns the audio data as a Buffer
|
|
29
|
+
*/
|
|
30
|
+
transferRecording(deviceId: string, recordingUuid: string, onProgress?: TransferProgressCallback): Promise<Buffer>;
|
|
31
|
+
/**
|
|
32
|
+
* Handle a transfer packet from device
|
|
33
|
+
*/
|
|
34
|
+
private handleTransferPacket;
|
|
35
|
+
/**
|
|
36
|
+
* Send an ACK packet to device
|
|
37
|
+
*/
|
|
38
|
+
private sendAck;
|
|
39
|
+
/**
|
|
40
|
+
* Assemble audio data from received packets
|
|
41
|
+
*/
|
|
42
|
+
private assembleAudioData;
|
|
43
|
+
/**
|
|
44
|
+
* Calculate CRC32 checksum
|
|
45
|
+
*/
|
|
46
|
+
private calculateCrc32;
|
|
47
|
+
/**
|
|
48
|
+
* Get CRC32 lookup table (lazy initialized)
|
|
49
|
+
*/
|
|
50
|
+
private crc32Table;
|
|
51
|
+
private getCrc32Table;
|
|
52
|
+
/**
|
|
53
|
+
* Confirm sync to device (allows device to delete local copy)
|
|
54
|
+
*/
|
|
55
|
+
confirmSync(deviceId: string, recordingUuid: string): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Cancel an ongoing transfer
|
|
58
|
+
*/
|
|
59
|
+
cancelTransfer(deviceId: string, recordingUuid: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Check if a transfer is in progress
|
|
62
|
+
*/
|
|
63
|
+
isTransferInProgress(recordingUuid: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Clean up resources
|
|
66
|
+
*/
|
|
67
|
+
destroy(): void;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=ProtocolHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAmBhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,qBAAqB,CAAC;AAoB3E;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,eAAe,CAAyC;;IAMhE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAc5D;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAqElE;;;OAGG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,UAAU,CAAC,EAAE,wBAAwB,GACpC,OAAO,CAAC,MAAM,CAAC;IA8GlB;;OAEG;YACW,oBAAoB;IAgDlC;;OAEG;YACW,OAAO;IAgBrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,cAAc;IAWtB;;OAEG;IACH,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzE;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB5E;;OAEG;IACH,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO;IAIpD;;OAEG;IACH,OAAO,IAAI,IAAI;CAQhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/protocol/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage Manager - Local persistence for recordings and upload queue
|
|
3
|
+
*/
|
|
4
|
+
import { Buffer } from 'buffer';
|
|
5
|
+
import type { UploadTask, UploadTaskStatus } from '../models/Recording';
|
|
6
|
+
/**
|
|
7
|
+
* Storage Manager class
|
|
8
|
+
*/
|
|
9
|
+
export declare class StorageManager {
|
|
10
|
+
private uploadQueue;
|
|
11
|
+
private sdkState;
|
|
12
|
+
private isInitialized;
|
|
13
|
+
/**
|
|
14
|
+
* Initialize storage manager
|
|
15
|
+
*/
|
|
16
|
+
initialize(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Get all upload tasks
|
|
19
|
+
*/
|
|
20
|
+
getUploadQueue(): UploadTask[];
|
|
21
|
+
/**
|
|
22
|
+
* Get pending upload tasks
|
|
23
|
+
*/
|
|
24
|
+
getPendingUploads(): UploadTask[];
|
|
25
|
+
/**
|
|
26
|
+
* Get failed upload tasks
|
|
27
|
+
*/
|
|
28
|
+
getFailedUploads(): UploadTask[];
|
|
29
|
+
/**
|
|
30
|
+
* Add a task to the upload queue
|
|
31
|
+
*/
|
|
32
|
+
addUploadTask(task: UploadTask): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Update an upload task
|
|
35
|
+
*/
|
|
36
|
+
updateUploadTask(taskId: string, updates: Partial<UploadTask>): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Update task status
|
|
39
|
+
*/
|
|
40
|
+
updateTaskStatus(taskId: string, status: UploadTaskStatus, errorMessage?: string): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Increment retry count for a task
|
|
43
|
+
*/
|
|
44
|
+
incrementRetryCount(taskId: string): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Remove a task from the queue
|
|
47
|
+
*/
|
|
48
|
+
removeUploadTask(taskId: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Clear all completed tasks
|
|
51
|
+
*/
|
|
52
|
+
clearCompletedTasks(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Clear all tasks
|
|
55
|
+
*/
|
|
56
|
+
clearAllTasks(): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Get a specific upload task
|
|
59
|
+
*/
|
|
60
|
+
getUploadTask(taskId: string): UploadTask | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Save upload queue to storage
|
|
63
|
+
*/
|
|
64
|
+
private saveUploadQueue;
|
|
65
|
+
/**
|
|
66
|
+
* Get last sync time for a device
|
|
67
|
+
*/
|
|
68
|
+
getLastSyncTime(deviceId: string): Date | null;
|
|
69
|
+
/**
|
|
70
|
+
* Set last sync time for a device
|
|
71
|
+
*/
|
|
72
|
+
setLastSyncTime(deviceId: string, time?: Date): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Get cached device info
|
|
75
|
+
*/
|
|
76
|
+
getDeviceInfo(deviceId: string): {
|
|
77
|
+
serialNumber: string;
|
|
78
|
+
firmwareVersion: string;
|
|
79
|
+
} | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Cache device info
|
|
82
|
+
*/
|
|
83
|
+
setDeviceInfo(deviceId: string, info: {
|
|
84
|
+
serialNumber: string;
|
|
85
|
+
firmwareVersion: string;
|
|
86
|
+
}): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* Save SDK state to storage
|
|
89
|
+
*/
|
|
90
|
+
private saveSdkState;
|
|
91
|
+
/**
|
|
92
|
+
* Save recording data locally
|
|
93
|
+
*/
|
|
94
|
+
saveRecordingData(deviceId: string, recordingUuid: string, data: Buffer): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Load recording data
|
|
97
|
+
*/
|
|
98
|
+
loadRecordingData(localPath: string): Promise<Buffer>;
|
|
99
|
+
/**
|
|
100
|
+
* Delete recording data
|
|
101
|
+
*/
|
|
102
|
+
deleteRecordingData(localPath: string): Promise<void>;
|
|
103
|
+
/**
|
|
104
|
+
* Clear all SDK storage
|
|
105
|
+
*/
|
|
106
|
+
clearAll(): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Clean up resources
|
|
109
|
+
*/
|
|
110
|
+
destroy(): void;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Generate a unique task ID
|
|
114
|
+
*/
|
|
115
|
+
export declare function generateTaskId(): string;
|
|
116
|
+
//# sourceMappingURL=StorageManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StorageManager.d.ts","sourceRoot":"","sources":["../../../../src/storage/StorageManager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAkBxE;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAGd;IACF,OAAO,CAAC,aAAa,CAAS;IAE9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAuCjC;;OAEG;IACH,cAAc,IAAI,UAAU,EAAE;IAI9B;;OAEG;IACH,iBAAiB,IAAI,UAAU,EAAE;IAMjC;;OAEG;IACH,gBAAgB,IAAI,UAAU,EAAE;IAIhC;;OAEG;IACG,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC;IAgBhB;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,EACxB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,IAAI,CAAC;IAIhB;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD;;OAEG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrD;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1C;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIrD;;OAEG;YACW,eAAe;IAa7B;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAK9C;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,IAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAK/E;;OAEG;IACH,aAAa,CACX,QAAQ,EAAE,MAAM,GACf;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS;IAIhE;;OAEG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,GACtD,OAAO,CAAC,IAAI,CAAC;IAKhB;;OAEG;YACW,YAAY;IAY1B;;OAEG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC;IAkBlB;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAa3D;;OAEG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAe/B;;OAEG;IACH,OAAO,IAAI,IAAI;CAKhB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* S3 Uploader - Handles uploading audio files to S3 using pre-signed URLs
|
|
3
|
+
*/
|
|
4
|
+
import { Buffer } from 'buffer';
|
|
5
|
+
/**
|
|
6
|
+
* Upload progress callback
|
|
7
|
+
*/
|
|
8
|
+
export type UploadProgressCallback = (progress: number) => void;
|
|
9
|
+
/**
|
|
10
|
+
* Upload options
|
|
11
|
+
*/
|
|
12
|
+
export interface UploadOptions {
|
|
13
|
+
/** Content type (default: audio/opus) */
|
|
14
|
+
contentType?: string;
|
|
15
|
+
/** Progress callback */
|
|
16
|
+
onProgress?: UploadProgressCallback;
|
|
17
|
+
/** Abort signal for cancellation */
|
|
18
|
+
abortSignal?: AbortSignal;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* S3 Uploader class
|
|
22
|
+
*/
|
|
23
|
+
export declare class S3Uploader {
|
|
24
|
+
/**
|
|
25
|
+
* Upload a file to S3 using a pre-signed URL
|
|
26
|
+
*/
|
|
27
|
+
upload(data: Buffer, uploadUrl: string, options?: UploadOptions): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Upload a file in chunks (for larger files)
|
|
30
|
+
* Note: This requires multipart upload support from the pre-signed URL
|
|
31
|
+
*/
|
|
32
|
+
uploadChunked(data: Buffer, uploadUrl: string, options?: UploadOptions): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Notify the backend that upload is complete
|
|
35
|
+
*/
|
|
36
|
+
notifyCompletion(completeUrl: string, recordingId: string, uploadToken: string): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=S3Uploader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"S3Uploader.d.ts","sourceRoot":"","sources":["../../../../src/upload/S3Uploader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAOhC;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;AAEhE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,UAAU,CAAC,EAAE,sBAAsB,CAAC;IACpC,oCAAoC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,UAAU;IACrB;;OAEG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAwEhB;;;OAGG;IACG,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAMhB;;OAEG;IACG,gBAAgB,CACpB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;CA+BjB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upload Queue - Manages persistent upload queue with retry logic
|
|
3
|
+
*/
|
|
4
|
+
import EventEmitter from 'eventemitter3';
|
|
5
|
+
import type { UploadTask } from '../models/Recording';
|
|
6
|
+
import { StorageManager } from '../storage/StorageManager';
|
|
7
|
+
/**
|
|
8
|
+
* Events emitted by UploadQueue
|
|
9
|
+
*/
|
|
10
|
+
interface UploadQueueEvents {
|
|
11
|
+
taskAdded: (task: UploadTask) => void;
|
|
12
|
+
taskUpdated: (task: UploadTask) => void;
|
|
13
|
+
taskCompleted: (taskId: string, recordingId: string) => void;
|
|
14
|
+
taskFailed: (taskId: string, error: Error) => void;
|
|
15
|
+
uploadProgress: (taskId: string, progress: number) => void;
|
|
16
|
+
queueEmpty: () => void;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Upload Queue configuration
|
|
20
|
+
*/
|
|
21
|
+
export interface UploadQueueConfig {
|
|
22
|
+
/** Maximum concurrent uploads (default: 2) */
|
|
23
|
+
maxConcurrent?: number;
|
|
24
|
+
/** Maximum retry attempts (default: 6) */
|
|
25
|
+
maxRetries?: number;
|
|
26
|
+
/** Auto-start processing (default: true) */
|
|
27
|
+
autoStart?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Upload Queue class
|
|
31
|
+
*/
|
|
32
|
+
export declare class UploadQueue extends EventEmitter<UploadQueueEvents> {
|
|
33
|
+
private storage;
|
|
34
|
+
private uploader;
|
|
35
|
+
private maxConcurrent;
|
|
36
|
+
private maxRetries;
|
|
37
|
+
private activeUploads;
|
|
38
|
+
private isPaused;
|
|
39
|
+
private isProcessing;
|
|
40
|
+
private abortControllers;
|
|
41
|
+
constructor(storage: StorageManager, config?: UploadQueueConfig);
|
|
42
|
+
/**
|
|
43
|
+
* Add a new upload task to the queue
|
|
44
|
+
*/
|
|
45
|
+
enqueue(params: {
|
|
46
|
+
recordingId: string;
|
|
47
|
+
deviceId: string;
|
|
48
|
+
localPath: string;
|
|
49
|
+
uploadUrl: string;
|
|
50
|
+
uploadToken: string;
|
|
51
|
+
completeUrl: string;
|
|
52
|
+
}): Promise<UploadTask>;
|
|
53
|
+
/**
|
|
54
|
+
* Cancel a specific upload task
|
|
55
|
+
*/
|
|
56
|
+
cancel(taskId: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Cancel all uploads
|
|
59
|
+
*/
|
|
60
|
+
cancelAll(): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Pause queue processing
|
|
63
|
+
*/
|
|
64
|
+
pause(): void;
|
|
65
|
+
/**
|
|
66
|
+
* Resume queue processing
|
|
67
|
+
*/
|
|
68
|
+
resume(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Retry all failed uploads
|
|
71
|
+
*/
|
|
72
|
+
retryFailed(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Get all pending tasks
|
|
75
|
+
*/
|
|
76
|
+
getPendingTasks(): UploadTask[];
|
|
77
|
+
/**
|
|
78
|
+
* Get all tasks
|
|
79
|
+
*/
|
|
80
|
+
getAllTasks(): UploadTask[];
|
|
81
|
+
/**
|
|
82
|
+
* Process the upload queue
|
|
83
|
+
*/
|
|
84
|
+
private processQueue;
|
|
85
|
+
/**
|
|
86
|
+
* Process a single upload task
|
|
87
|
+
*/
|
|
88
|
+
private processTask;
|
|
89
|
+
/**
|
|
90
|
+
* Clean up resources
|
|
91
|
+
*/
|
|
92
|
+
destroy(): void;
|
|
93
|
+
}
|
|
94
|
+
export {};
|
|
95
|
+
//# sourceMappingURL=UploadQueue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UploadQueue.d.ts","sourceRoot":"","sources":["../../../../src/upload/UploadQueue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAkB,MAAM,2BAA2B,CAAC;AAO3E;;GAEG;AACH,UAAU,iBAAiB;IACzB,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7D,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACnD,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY,CAAC,iBAAiB,CAAC;IAC9D,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAA2C;gBAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,GAAE,iBAAsB;IAYnE;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,UAAU,CAAC;IA0BvB;;OAEG;IACG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAehC;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,MAAM,IAAI,IAAI;IAMd;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAalC;;OAEG;IACH,eAAe,IAAI,UAAU,EAAE;IAI/B;;OAEG;IACH,WAAW,IAAI,UAAU,EAAE;IAI3B;;OAEG;YACW,YAAY;IAoC1B;;OAEG;YACW,WAAW;IAoEzB;;OAEG;IACH,OAAO,IAAI,IAAI;CAYhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/upload/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error types for the Bota SDK
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Base error class for all Bota SDK errors
|
|
6
|
+
*/
|
|
7
|
+
export declare class BotaError extends Error {
|
|
8
|
+
readonly code: string;
|
|
9
|
+
readonly cause?: Error | undefined;
|
|
10
|
+
constructor(message: string, code: string, cause?: Error | undefined);
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Bluetooth-related errors
|
|
14
|
+
*/
|
|
15
|
+
export declare class BluetoothError extends BotaError {
|
|
16
|
+
constructor(message: string, code: string, cause?: Error);
|
|
17
|
+
static unavailable(): BluetoothError;
|
|
18
|
+
static unauthorized(): BluetoothError;
|
|
19
|
+
static poweredOff(): BluetoothError;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Device-related errors
|
|
23
|
+
*/
|
|
24
|
+
export declare class DeviceError extends BotaError {
|
|
25
|
+
readonly deviceId?: string | undefined;
|
|
26
|
+
constructor(message: string, code: string, deviceId?: string | undefined, cause?: Error);
|
|
27
|
+
static notFound(deviceId: string): DeviceError;
|
|
28
|
+
static connectionFailed(deviceId: string, cause?: Error): DeviceError;
|
|
29
|
+
static connectionLost(deviceId: string, during?: string): DeviceError;
|
|
30
|
+
static bondingFailed(deviceId: string, cause?: Error): DeviceError;
|
|
31
|
+
static notConnected(deviceId: string): DeviceError;
|
|
32
|
+
static alreadyConnected(deviceId: string): DeviceError;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Provisioning-related errors
|
|
36
|
+
*/
|
|
37
|
+
export declare class ProvisioningError extends BotaError {
|
|
38
|
+
readonly deviceId?: string | undefined;
|
|
39
|
+
constructor(message: string, code: string, deviceId?: string | undefined, cause?: Error);
|
|
40
|
+
static invalidToken(deviceId: string): ProvisioningError;
|
|
41
|
+
static storageError(deviceId: string): ProvisioningError;
|
|
42
|
+
static chunkError(deviceId: string): ProvisioningError;
|
|
43
|
+
static alreadyProvisioned(deviceId: string): ProvisioningError;
|
|
44
|
+
static timeout(deviceId: string): ProvisioningError;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Transfer-related errors
|
|
48
|
+
*/
|
|
49
|
+
export declare class TransferError extends BotaError {
|
|
50
|
+
readonly recordingUuid?: string | undefined;
|
|
51
|
+
constructor(message: string, code: string, recordingUuid?: string | undefined, cause?: Error);
|
|
52
|
+
static recordingNotFound(uuid: string): TransferError;
|
|
53
|
+
static checksumMismatch(uuid: string): TransferError;
|
|
54
|
+
static interrupted(uuid: string, cause?: Error): TransferError;
|
|
55
|
+
static timeout(uuid: string): TransferError;
|
|
56
|
+
static deviceError(uuid: string, errorCode: number): TransferError;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Upload-related errors
|
|
60
|
+
*/
|
|
61
|
+
export declare class UploadError extends BotaError {
|
|
62
|
+
readonly taskId?: string | undefined;
|
|
63
|
+
constructor(message: string, code: string, taskId?: string | undefined, cause?: Error);
|
|
64
|
+
static urlExpired(taskId: string): UploadError;
|
|
65
|
+
static networkUnavailable(): UploadError;
|
|
66
|
+
static uploadFailed(taskId: string, cause?: Error): UploadError;
|
|
67
|
+
static completionFailed(taskId: string, cause?: Error): UploadError;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* SDK state errors
|
|
71
|
+
*/
|
|
72
|
+
export declare class SdkError extends BotaError {
|
|
73
|
+
constructor(message: string, code: string, cause?: Error);
|
|
74
|
+
static notInitialized(): SdkError;
|
|
75
|
+
static invalidState(expected: string, actual: string): SdkError;
|
|
76
|
+
static timeout(operation: string): SdkError;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Type guard to check if an error is a BotaError
|
|
80
|
+
*/
|
|
81
|
+
export declare function isBotaError(error: unknown): error is BotaError;
|
|
82
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/utils/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility for the Bota SDK
|
|
3
|
+
*/
|
|
4
|
+
import type { LogLevel } from '../models/Status';
|
|
5
|
+
/**
|
|
6
|
+
* Logger class with configurable log levels
|
|
7
|
+
*/
|
|
8
|
+
declare class Logger {
|
|
9
|
+
private level;
|
|
10
|
+
private prefix;
|
|
11
|
+
/**
|
|
12
|
+
* Set the log level
|
|
13
|
+
*/
|
|
14
|
+
setLevel(level: LogLevel): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get the current log level
|
|
17
|
+
*/
|
|
18
|
+
getLevel(): LogLevel;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a log level should be output
|
|
21
|
+
*/
|
|
22
|
+
private shouldLog;
|
|
23
|
+
/**
|
|
24
|
+
* Format a log message with optional context
|
|
25
|
+
*/
|
|
26
|
+
private format;
|
|
27
|
+
/**
|
|
28
|
+
* Log a debug message
|
|
29
|
+
*/
|
|
30
|
+
debug(message: string, context?: Record<string, unknown>): void;
|
|
31
|
+
/**
|
|
32
|
+
* Log an info message
|
|
33
|
+
*/
|
|
34
|
+
info(message: string, context?: Record<string, unknown>): void;
|
|
35
|
+
/**
|
|
36
|
+
* Log a warning message
|
|
37
|
+
*/
|
|
38
|
+
warn(message: string, context?: Record<string, unknown>): void;
|
|
39
|
+
/**
|
|
40
|
+
* Log an error message
|
|
41
|
+
*/
|
|
42
|
+
error(message: string, error?: Error, context?: Record<string, unknown>): void;
|
|
43
|
+
/**
|
|
44
|
+
* Create a child logger with a specific tag
|
|
45
|
+
*/
|
|
46
|
+
tag(tag: string): TaggedLogger;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Tagged logger for component-specific logging
|
|
50
|
+
*/
|
|
51
|
+
declare class TaggedLogger {
|
|
52
|
+
private parent;
|
|
53
|
+
private tag;
|
|
54
|
+
constructor(parent: Logger, tag: string);
|
|
55
|
+
debug(message: string, context?: Record<string, unknown>): void;
|
|
56
|
+
info(message: string, context?: Record<string, unknown>): void;
|
|
57
|
+
warn(message: string, context?: Record<string, unknown>): void;
|
|
58
|
+
error(message: string, error?: Error, context?: Record<string, unknown>): void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Singleton logger instance
|
|
62
|
+
*/
|
|
63
|
+
export declare const logger: Logger;
|
|
64
|
+
/**
|
|
65
|
+
* Export types for external use
|
|
66
|
+
*/
|
|
67
|
+
export type { TaggedLogger };
|
|
68
|
+
//# sourceMappingURL=logger.d.ts.map
|