UNPKG

audio.libx.js

Version:

Comprehensive audio library with progressive streaming, recording capabilities, real-time processing, and intelligent caching for web applications

182 lines 5.59 kB
export interface AudioStreamerOptions { bufferThreshold?: number; enableCaching?: boolean; enableTrimming?: boolean; mimeType?: string; silenceThresholdDb?: number; minSilenceMs?: number; cacheDbName?: string; cacheStoreName?: string; } export interface StreamResult { onLoaded: Promise<string>; onEnded: Promise<string>; audioId: string; cancel: () => void; } export interface AudioCacheEntry { id: string; chunks: Uint8Array[]; mimeType: string; cachedAt: number; originalSize: number; processed?: boolean; } export interface AudioProcessingResult { blob: Blob; metadata: { originalDuration: number; trimmedDuration: number; silenceRemovedStart: number; silenceRemovedEnd: number; }; } export interface MediaSourceInfo { mediaSource: MediaSource | any; isManaged: boolean; supportedMimeTypes: string[]; } export interface StreamingState { state: 'idle' | 'loading' | 'streaming' | 'playing' | 'paused' | 'ended' | 'error'; currentAudioId?: string; bufferProgress: number; canPlay: boolean; error?: string; } export type StreamingEventType = 'stateChange' | 'bufferProgress' | 'canPlay' | 'loadStart' | 'loadEnd' | 'playStart' | 'playEnd' | 'error' | 'cacheHit' | 'cacheMiss'; export interface StreamingEvent { type: StreamingEventType; audioId?: string; data?: any; timestamp: number; } export type StreamingEventCallback = (event: StreamingEvent) => void; export interface AudioFormat { type: 'mp3' | 'wav' | 'webm' | 'ogg' | 'unknown'; mimeType: string; streamable: boolean; codec?: string; requiresConversion?: boolean; } export interface ChunkAppendOptions { waitForUpdate?: boolean; timeout?: number; retryCount?: number; } export interface CacheStats { entryCount: number; totalSize: number; availableQuota: number; usedQuota: number; hitRatio: number; } export declare class AudioStreamingError extends Error { code: string; audioId?: string; originalError?: Error; constructor(message: string, code: string, audioId?: string, originalError?: Error); } export declare class MediaSourceError extends AudioStreamingError { constructor(message: string, audioId?: string, originalError?: Error); } export declare class CacheError extends AudioStreamingError { constructor(message: string, audioId?: string, originalError?: Error); } export declare class ProcessingError extends AudioStreamingError { constructor(message: string, audioId?: string, originalError?: Error); } export declare class RecordingError extends AudioStreamingError { constructor(message: string, recordingId?: string, originalError?: Error); } export declare class PermissionError extends AudioStreamingError { constructor(message: string, originalError?: Error); } export interface AudioRecorderOptions { mimeType?: string; audioBitsPerSecond?: number; enableEchoCancellation?: boolean; enableNoiseSuppression?: boolean; enableAutoGainControl?: boolean; maxDuration?: number; enableRealtimeProcessing?: boolean; silenceThresholdDb?: number; } export interface RecordingState { state: 'idle' | 'requesting-permission' | 'recording' | 'paused' | 'processing' | 'completed' | 'error'; recordingId?: string; duration: number; hasPermission: boolean; audioLevel?: number; error?: string; } export interface RecordingResult { recordingId: string; onStarted: Promise<string>; onCompleted: Promise<RecordingData>; stop: () => Promise<RecordingData>; pause: () => void; resume: () => void; cancel: () => void; } export interface RecordingData { id: string; blob: Blob; mimeType: string; duration: number; metadata: { startTime: number; endTime: number; sampleRate?: number; channels?: number; averageLevel?: number; }; } export type RecordingEventType = 'permissionRequested' | 'permissionGranted' | 'permissionDenied' | 'recordingStarted' | 'recordingPaused' | 'recordingResumed' | 'recordingStopped' | 'recordingCompleted' | 'recordingCancelled' | 'audioLevel' | 'durationUpdate' | 'recordingError'; export interface RecordingEvent { type: RecordingEventType; recordingId?: string; data?: any; timestamp: number; } export type RecordingEventCallback = (event: RecordingEvent) => void; export interface PermissionState { status: 'granted' | 'denied' | 'prompt' | 'unknown'; isSupported: boolean; error?: PermissionError; } export interface PermissionResult { granted: boolean; state: PermissionState; stream?: MediaStream; error?: PermissionError; } export interface MediaConstraintsOptions { deviceId?: string; echoCancellation?: boolean; noiseSuppression?: boolean; autoGainControl?: boolean; sampleRate?: number; channelCount?: number; } export interface RealtimeProcessingOptions { enableSilenceDetection?: boolean; silenceThresholdDb?: number; enableLevelMonitoring?: boolean; levelUpdateInterval?: number; enableEffects?: boolean; effects?: AudioEffect[]; } export interface AudioEffect { type: 'gain' | 'filter' | 'reverb' | 'echo' | 'custom'; parameters: Record<string, any>; enabled: boolean; } export interface RealtimeAudioData { audioData: Float32Array; sampleRate: number; channels: number; level: number; isSilence: boolean; timestamp: number; } //# sourceMappingURL=types.d.ts.map