@tiny-codes/react-easy 1.4.11 → 1.4.13
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/CHANGELOG.md +30 -0
- package/es/hooks/useSSE.d.ts +1 -1
- package/es/hooks/useSSE.js +36 -14
- package/es/hooks/useSSE.js.map +1 -1
- package/es/utils/AudioPlayer.d.ts +26 -2
- package/es/utils/AudioPlayer.js +295 -82
- package/es/utils/AudioPlayer.js.map +1 -1
- package/es/utils/crypto.js +6 -6
- package/es/utils/crypto.js.map +1 -1
- package/lib/hooks/useSSE.d.ts +1 -1
- package/lib/hooks/useSSE.js +21 -7
- package/lib/hooks/useSSE.js.map +2 -2
- package/lib/utils/AudioPlayer.d.ts +26 -2
- package/lib/utils/AudioPlayer.js +147 -29
- package/lib/utils/AudioPlayer.js.map +2 -2
- package/lib/utils/crypto.js +4 -4
- package/lib/utils/crypto.js.map +2 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AudioPlayer","options","_this","event","listener","audio","addEventListener","removeEventListener","_ref","source","volume","Audio","_volume","Math","min","max","result","data","setAudioSource","onPlayEnd","_this$options","_this$options$onPlayE","get","_this$audioContext","audioContext","state","currentTime","duration","_play","_callee","_this$audioContext2","_this$options2","_this$options2$onPlay","_this$options3","_this$options3$onErro","_callee$","_context","initAudioContext","resume","play","onPlay","t0","console","onError","seekForward","seconds","seekBackward","seek","time","newTime","pause","_this$options4","_this$options4$onPaus","onPause","_this$options5","_this$options5$onStop","onStop","_setAudioSource","_callee2","_callee2$","_context2","src","handleStreamSource","_x","volumeUp","percent","updateVolume","volumeDown","setVolume","dispose","close","sourceNode","gainNode","_handleStreamSource","_callee4","blob","stream","response","url","_callee4$","_context4","Blob","ArrayBuffer","Uint8Array","ReadableStream","pull","controller","_callee3","_yield$source$read","_callee3$","_context3","read","enqueue","Response","URL","createObjectURL","onload","revokeObjectURL","_x2","AudioContext","createMediaElementSource","createGain","connect","destination","gain"],"sources":["../../src/utils/AudioPlayer.ts"],"sourcesContent":["export type AudioSource = string | ReadableStreamDefaultReader<Uint8Array> | ArrayBuffer | Uint8Array | Blob;\n\nexport interface AudioPlayerInit {\n /**\n * - **EN:** Audio source (URL or streaming data)\n * - **CN:** 音频源(URL或流数据)\n */\n source?: AudioSource | (() => AudioSource | Promise<AudioSource>);\n /**\n * - **EN:** Initial volume level (0-1). Default is `0.5`\n * - **CN:** 初始音量级别(0-1)。默认值为`0.5`\n */\n volume?: number;\n /**\n * - **EN:** Callback when audio starts playing\n * - **CN:** 音频开始播放时的回调\n */\n onPlay?: () => void;\n /**\n * - **EN:** Callback when audio is paused\n * - **CN:** 音频暂停时的回调\n */\n onPause?: () => void;\n /**\n * - **EN:** Callback when audio is stopped\n * - **CN:** 音频停止时的回调\n */\n onStop?: () => void;\n\n /**\n * - **EN:** Callback when audio playback ends\n * - **CN:** 音频播放结束时的回调\n */\n onPlayEnd?: () => void;\n /**\n * - **EN:** Callback when an error occurs\n * - **CN:** 发生错误时的回调\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (error: any) => void;\n}\n\n/**\n * - **EN:** An audio player class that supports URL or streaming data input\n * - **CN:** 一个音频播放器类,支持URL或流数据输入\n */\nclass AudioPlayer {\n private audio: HTMLAudioElement;\n private _volume: number;\n private audioContext: AudioContext | null = null;\n private gainNode: GainNode | null = null;\n private sourceNode: MediaElementAudioSourceNode | null = null;\n private options: AudioPlayerInit | undefined;\n private onPlayEnd: () => void;\n\n /**\n * - **EN:** Creates an audio player instance\n * - **CN:** 创建音频播放器实例\n *\n * @param source - can be a URL string or ReadableStreamDefaultReader |\n * 可以是URL字符串或ReadableStreamDefaultReader\n */\n constructor(options?: AudioPlayerInit) {\n const { source, volume } = options || {};\n this.options = options;\n this.audio = new Audio();\n this._volume = volume != null ? Math.min(1.0, Math.max(0, volume)) : 0.5; // Default volume 50%\n this.audio.volume = this._volume;\n if (typeof source === 'function') {\n const result = source();\n if (typeof result === 'object' && 'then' in result && typeof result.then === 'function') {\n result.then((data) => this.setAudioSource(data));\n } else {\n this.setAudioSource(result as AudioSource);\n }\n } else {\n this.setAudioSource(source);\n }\n this.onPlayEnd = () => {\n this.options?.onPlayEnd?.();\n };\n this.addEventListener('ended', this.onPlayEnd);\n }\n\n /**\n * - **EN:** Check if audio is currently playing\n * - **CN:** 检查音频是否正在播放\n */\n public get isPlaying() {\n return this.audioContext?.state === 'running';\n }\n /**\n * - **EN:** Get current playback time (seconds)\n * - **CN:** 获取当前播放时间(秒)\n */\n get currentTime(): number {\n return this.audio.currentTime;\n }\n /**\n * - **EN:** Get total audio duration (seconds)\n * - **CN:** 获取音频总时长(秒)\n */\n get duration(): number {\n return this.audio.duration;\n }\n /**\n * - **EN:** Get current volume value (0-1)\n * - **CN:** 获取当前音量值(0-1)\n */\n get volume(): number {\n return this._volume;\n }\n\n /**\n * - **EN:** Play audio. If previously paused, will resume from the pause position\n * - **CN:** 播放音频 如果之前暂停过,将从暂停位置继续播放\n */\n async play(): Promise<void> {\n if (!this.audioContext) {\n this.initAudioContext();\n }\n\n if (this.audioContext?.state === 'suspended') {\n await this.audioContext.resume();\n }\n\n try {\n await this.audio.play();\n this.options?.onPlay?.();\n } catch (error) {\n console.error('Error playing audio:', error);\n this.options?.onError?.(error);\n }\n }\n\n /**\n * - **EN:** Seek forward by a certain number of seconds\n * - **CN:** 向前跳转一定秒数\n *\n * @param seconds - number of seconds to seek forward | 要向前跳转的秒数\n */\n seekForward(seconds: number) {\n if (seconds < 0) {\n return;\n }\n if (!isNaN(this.audio.duration)) {\n this.audio.currentTime = Math.min(this.audio.currentTime + seconds, this.audio.duration);\n } else {\n this.audio.currentTime += seconds;\n }\n }\n /**\n * - **EN:** Seek backward by a certain number of seconds\n * - **CN:** 向后跳转一定秒数\n *\n * @param seconds - number of seconds to seek backward | 要向后跳转的秒数\n */\n seekBackward(seconds: number) {\n if (seconds < 0) {\n return;\n }\n this.audio.currentTime = Math.max(this.audio.currentTime - seconds, 0);\n }\n /**\n * - **EN:** Set current playback time (in seconds)\n * - **CN:** 设置当前播放时间(以秒为单位)\n *\n * @param time - time in seconds | 时间(秒)\n */\n seek(time: number) {\n // Ensure time is not less than 0\n const newTime = Math.max(0, time);\n // Ensure time is not greater than duration (if known)\n if (!isNaN(this.audio.duration)) {\n this.audio.currentTime = Math.min(newTime, this.audio.duration);\n } else {\n this.audio.currentTime = newTime;\n }\n }\n\n /**\n * - **EN:** Pause audio playback. When played again, will continue from current position\n * - **CN:** 暂停音频播放 再次播放时将从当前位置继续\n */\n pause(): void {\n this.audio.pause();\n this.options?.onPause?.();\n }\n\n /**\n * - **EN:** Stop audio playback. Progress will reset to the beginning\n * - **CN:** 停止音频播放 进度会重置到开始位置\n */\n stop(): void {\n this.audio.pause();\n this.audio.currentTime = 0;\n this.options?.onStop?.();\n }\n\n /**\n * - **EN:** Update audio source\n * - **CN:** 更新音频源\n *\n * @param source - can be a URL `string` or `ReadableStreamDefaultReader` |\n * 可以是URL字符串或`ReadableStreamDefaultReader`\n */\n async setAudioSource(source?: AudioSource) {\n this.audio.pause();\n this.audio.src = '';\n\n if (typeof source === 'string') {\n this.audio.src = source;\n } else {\n await this.handleStreamSource(source);\n }\n }\n\n /**\n * - **EN:** Increase volume (by 10% each time)\n * - **CN:** 增加音量(每次增加10%)\n *\n * @param percent - increase percentage (default 10%) | 增加百分比(默认10%)\n */\n volumeUp(percent = 0.1): void {\n this._volume = Math.min(1.0, this._volume + percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Decrease volume (by 10% each time)\n * - **CN:** 降低音量(每次降低10%)\n *\n * @param percent - decrease percentage (default 10%) | 降低百分比(默认10%)\n */\n volumeDown(percent = 0.1): void {\n this._volume = Math.max(0, this._volume - percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Set volume to a specific value (0-1)\n * - **CN:** 将音量设置为特定值(0-1)\n *\n * @param value - new volume value (0-1) | 新的音量值(0-1)\n */\n setVolume(value: number): void {\n this._volume = Math.min(1.0, Math.max(0, value));\n this.updateVolume();\n }\n\n /**\n * - **EN:** Add audio event listener\n * - **CN:** 添加音频事件监听器\n */\n addEventListener: HTMLAudioElement['addEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.addEventListener(event, listener);\n };\n\n /**\n * - **EN:** Remove audio event listener\n * - **CN:** 移除音频事件监听器\n */\n removeEventListener: HTMLAudioElement['removeEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.removeEventListener(event, listener);\n };\n\n /**\n * - **EN:** Release resources\n * - **CN:** 释放资源\n */\n dispose(): void {\n this.audio.pause();\n this.audio.src = '';\n this.removeEventListener('ended', this.onPlayEnd);\n\n if (this.audioContext) {\n try {\n this.audioContext.close();\n } catch (error) {\n console.error('Error closing AudioContext:', error);\n }\n this.audioContext = null;\n }\n\n this.sourceNode = null;\n this.gainNode = null;\n }\n\n /** Process streaming data source */\n private async handleStreamSource(source: Exclude<AudioSource, string> | undefined) {\n if (!source) return;\n try {\n let blob: Blob;\n if (source instanceof Blob) {\n blob = source;\n } else if (source instanceof ArrayBuffer || source instanceof Uint8Array) {\n blob = new Blob([source]);\n } else {\n // Create a new ReadableStream to read data from the reader\n const stream = new ReadableStream({\n async pull(controller) {\n try {\n const { done, value } = await source.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n }\n },\n });\n // Convert stream to Blob and create URL\n const response = new Response(stream);\n blob = await response.blob();\n }\n\n const url = URL.createObjectURL(blob);\n\n this.audio.src = url;\n\n // Release Blob URL after audio loads\n this.audio.onload = () => {\n URL.revokeObjectURL(url);\n };\n } catch (error) {\n console.error('Error processing audio stream:', error);\n }\n }\n\n /** Initialize Web Audio API for better volume control */\n private initAudioContext() {\n if (this.audioContext) return;\n\n this.audioContext = new AudioContext();\n this.sourceNode = this.audioContext.createMediaElementSource(this.audio);\n this.gainNode = this.audioContext.createGain();\n\n this.sourceNode.connect(this.gainNode);\n this.gainNode.connect(this.audioContext.destination);\n\n this.gainNode.gain.value = this._volume;\n }\n\n /** Update audio playback volume */\n private updateVolume(): void {\n if (this.gainNode) {\n this.gainNode.gain.value = this._volume;\n } else {\n this.audio.volume = this._volume;\n }\n }\n}\n\nexport default AudioPlayer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AudioPlayer","options","_this","event","listener","audio","addEventListener","removeEventListener","_ref","source","volume","Audio","_volume","Math","min","max","result","data","setAudioSource","onPlayEnd","_this$options","_this$options$onPlayE","get","paused","ended","currentTime","duration","_play","_callee","_this$audioContext","_this$options2","_this$options2$onPlay","_this$options3","_this$options3$onErro","_callee$","_context","audioContext","initAudioContext","state","resume","play","onPlay","t0","console","onError","seekForward","seconds","seekBackward","seek","time","newTime","pause","_this$options4","_this$options4$onPaus","onPause","_this$options5","_this$options5$onStop","onStop","_setAudioSource","_callee2","_callee2$","_context2","src","disposeMediaSourceInternal","stopLoading","handleStreamSource","_x","volumeUp","percent","updateVolume","volumeDown","setVolume","dispose","close","sourceNode","gainNode","mediaSource","sourceBuffer","chunkQueue","appending","streamEnded","_handleStreamSource","_callee3","_this2","url","blob","_url","_this$options6","mime","_this$options7","_this$options7$onErro","_callee3$","_context3","Blob","URL","createObjectURL","ArrayBuffer","Uint8Array","onloadeddata","revokeObjectURL","mimeType","stopLoadingSource","initMediaSourceForReader","_x2","AudioContext","createMediaElementSource","createGain","connect","destination","gain","_initMediaSourceForReader","_callee4","reader","_this3","objectURL","_callee4$","_context4","MediaSource","warn","fallbackReaderToBlob","isTypeSupported","addSourceBuffer","tryAppendNext","finalizeMediaSourceIfPossible","readLoop","_x3","_x4","_readLoop","_callee5","_yield$reader$read","_this$options8","_this$options8$onErro","_callee5$","_context5","read","byteLength","setTimeout","_x5","chunk","shift","appendBuffer","_this$options9","_this$options9$onErro","_this$sourceBuffer","receivedAnyChunk","readyState","updating","endOfStream","_fallbackReaderToBlob","_callee7","stream","response","_callee7$","_context7","ReadableStream","pull","controller","_callee6","_yield$reader$read2","_callee6$","_context6","enqueue","Response","_x6"],"sources":["../../src/utils/AudioPlayer.ts"],"sourcesContent":["export type AudioSource = string | ReadableStreamDefaultReader<Uint8Array> | ArrayBuffer | Uint8Array | Blob;\n\nexport interface AudioPlayerInit {\n /**\n * - **EN:** Audio source (URL or streaming data)\n * - **CN:** 音频源(URL或流数据)\n */\n source?: AudioSource | (() => AudioSource | Promise<AudioSource>);\n /**\n * - **EN:** MIME type of the audio (e.g., 'audio/mpeg', 'audio/wav'). Optional.\n * - **CN:** 音频的MIME类型(例如,'audio/mpeg','audio/wav')。可选。\n */\n mimeType?: string;\n /**\n * - **EN:** Initial volume level (0-1). Default is `0.5`\n * - **CN:** 初始音量级别(0-1)。默认值为`0.5`\n */\n volume?: number;\n /**\n * - **EN:** Callback when audio starts playing\n * - **CN:** 音频开始播放时的回调\n */\n onPlay?: () => void;\n /**\n * - **EN:** Callback when audio is paused\n * - **CN:** 音频暂停时的回调\n */\n onPause?: () => void;\n /**\n * - **EN:** Callback when audio is stopped\n * - **CN:** 音频停止时的回调\n */\n onStop?: () => void;\n\n /**\n * - **EN:** Callback when audio playback ends\n * - **CN:** 音频播放结束时的回调\n */\n onPlayEnd?: () => void;\n /**\n * - **EN:** Callback when an error occurs\n * - **CN:** 发生错误时的回调\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (error: any) => void;\n}\n\n/**\n * - **EN:** An audio player class that supports URL or streaming data input\n * - **CN:** 一个音频播放器类,支持URL或流数据输入\n */\nclass AudioPlayer {\n private audio: HTMLAudioElement;\n private _volume: number;\n private audioContext: AudioContext | null = null;\n private gainNode: GainNode | null = null;\n private sourceNode: MediaElementAudioSourceNode | null = null;\n private options: AudioPlayerInit | undefined;\n private mediaSource: MediaSource | null = null;\n private sourceBuffer: SourceBuffer | null = null;\n private chunkQueue: Uint8Array[] = [];\n private appending = false;\n private streamEnded = false;\n private stopLoadingSource = false;\n private onPlayEnd: () => void;\n\n /**\n * - **EN:** Creates an audio player instance\n * - **CN:** 创建音频播放器实例\n *\n * @param source - can be a URL string or ReadableStreamDefaultReader |\n * 可以是URL字符串或ReadableStreamDefaultReader\n */\n constructor(options?: AudioPlayerInit) {\n const { source, volume } = options || {};\n this.options = options;\n this.audio = new Audio();\n this._volume = volume != null ? Math.min(1.0, Math.max(0, volume)) : 0.5; // Default volume 50%\n this.audio.volume = this._volume;\n if (typeof source === 'function') {\n const result = source();\n if (typeof result === 'object' && 'then' in result && typeof result.then === 'function') {\n result.then((data) => this.setAudioSource(data));\n } else {\n this.setAudioSource(result as AudioSource);\n }\n } else {\n this.setAudioSource(source);\n }\n this.onPlayEnd = () => {\n this.options?.onPlayEnd?.();\n };\n this.addEventListener('ended', this.onPlayEnd);\n }\n\n /**\n * - **EN:** Check if audio is currently playing\n * - **CN:** 检查音频是否正在播放\n */\n public get isPlaying() {\n return !this.audio.paused && !this.audio.ended;\n }\n /**\n * - **EN:** Get current playback time (seconds)\n * - **CN:** 获取当前播放时间(秒)\n */\n get currentTime(): number {\n return this.audio.currentTime;\n }\n /**\n * - **EN:** Get total audio duration (seconds)\n * - **CN:** 获取音频总时长(秒)\n */\n get duration(): number {\n return this.audio.duration;\n }\n /**\n * - **EN:** Get current volume value (0-1)\n * - **CN:** 获取当前音量值(0-1)\n */\n get volume(): number {\n return this._volume;\n }\n\n /**\n * - **EN:** Play audio. If previously paused, will resume from the pause position\n * - **CN:** 播放音频 如果之前暂停过,将从暂停位置继续播放\n */\n async play(): Promise<void> {\n if (!this.audioContext) {\n this.initAudioContext();\n }\n\n if (this.audioContext?.state === 'suspended') {\n await this.audioContext.resume();\n }\n\n try {\n await this.audio.play();\n this.options?.onPlay?.();\n } catch (error) {\n console.error('Error playing audio:', error);\n this.options?.onError?.(error);\n }\n }\n\n /**\n * - **EN:** Seek forward by a certain number of seconds\n * - **CN:** 向前跳转一定秒数\n *\n * @param seconds - number of seconds to seek forward | 要向前跳转的秒数\n */\n seekForward(seconds: number) {\n if (seconds < 0) {\n return;\n }\n if (!isNaN(this.audio.duration)) {\n this.audio.currentTime = Math.min(this.audio.currentTime + seconds, this.audio.duration);\n } else {\n this.audio.currentTime += seconds;\n }\n }\n /**\n * - **EN:** Seek backward by a certain number of seconds\n * - **CN:** 向后跳转一定秒数\n *\n * @param seconds - number of seconds to seek backward | 要向后跳转的秒数\n */\n seekBackward(seconds: number) {\n if (seconds < 0) {\n return;\n }\n this.audio.currentTime = Math.max(this.audio.currentTime - seconds, 0);\n }\n /**\n * - **EN:** Set current playback time (in seconds)\n * - **CN:** 设置当前播放时间(以秒为单位)\n *\n * @param time - time in seconds | 时间(秒)\n */\n seek(time: number) {\n // Ensure time is not less than 0\n const newTime = Math.max(0, time);\n // Ensure time is not greater than duration (if known)\n if (!isNaN(this.audio.duration)) {\n this.audio.currentTime = Math.min(newTime, this.audio.duration);\n } else {\n this.audio.currentTime = newTime;\n }\n }\n\n /**\n * - **EN:** Pause audio playback. When played again, will continue from current position\n * - **CN:** 暂停音频播放 再次播放时将从当前位置继续\n */\n pause(): void {\n this.audio.pause();\n this.options?.onPause?.();\n }\n\n /**\n * - **EN:** Stop audio playback. Progress will reset to the beginning\n * - **CN:** 停止音频播放 进度会重置到开始位置\n */\n stop(): void {\n this.audio.pause();\n this.audio.currentTime = 0;\n this.options?.onStop?.();\n }\n\n /**\n * - **EN:** Update audio source\n * - **CN:** 更新音频源\n *\n * @param source - can be a URL `string` or `ReadableStreamDefaultReader` |\n * 可以是URL字符串或`ReadableStreamDefaultReader`\n */\n async setAudioSource(source?: AudioSource): Promise<{ stopLoading: () => void }> {\n this.audio.pause();\n this.audio.src = '';\n this.disposeMediaSourceInternal();\n\n if (typeof source === 'string') {\n this.audio.src = source;\n return {\n stopLoading: () => {\n // empty function\n },\n };\n } else {\n return await this.handleStreamSource(source);\n }\n }\n\n /**\n * - **EN:** Increase volume (by 10% each time)\n * - **CN:** 增加音量(每次增加10%)\n *\n * @param percent - increase percentage (default 10%) | 增加百分比(默认10%)\n */\n volumeUp(percent = 0.1): void {\n this._volume = Math.min(1.0, this._volume + percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Decrease volume (by 10% each time)\n * - **CN:** 降低音量(每次降低10%)\n *\n * @param percent - decrease percentage (default 10%) | 降低百分比(默认10%)\n */\n volumeDown(percent = 0.1): void {\n this._volume = Math.max(0, this._volume - percent);\n this.updateVolume();\n }\n\n /**\n * - **EN:** Set volume to a specific value (0-1)\n * - **CN:** 将音量设置为特定值(0-1)\n *\n * @param value - new volume value (0-1) | 新的音量值(0-1)\n */\n setVolume(value: number): void {\n this._volume = Math.min(1.0, Math.max(0, value));\n this.updateVolume();\n }\n\n /**\n * - **EN:** Add audio event listener\n * - **CN:** 添加音频事件监听器\n */\n addEventListener: HTMLAudioElement['addEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.addEventListener(event, listener);\n };\n\n /**\n * - **EN:** Remove audio event listener\n * - **CN:** 移除音频事件监听器\n */\n removeEventListener: HTMLAudioElement['removeEventListener'] = (\n event: string,\n listener: EventListenerOrEventListenerObject\n ): void => {\n this.audio.removeEventListener(event, listener);\n };\n\n /**\n * - **EN:** Release resources\n * - **CN:** 释放资源\n */\n dispose(): void {\n this.audio.pause();\n this.audio.src = '';\n this.removeEventListener('ended', this.onPlayEnd);\n\n if (this.audioContext) {\n try {\n this.audioContext.close();\n } catch (error) {\n console.error('Error closing AudioContext:', error);\n }\n this.audioContext = null;\n }\n\n this.sourceNode = null;\n this.gainNode = null;\n }\n private disposeMediaSourceInternal() {\n this.mediaSource = null;\n this.sourceBuffer = null;\n this.chunkQueue = [];\n this.appending = false;\n this.streamEnded = false;\n }\n\n /** Process streaming data source /ArrayBuffer/Uint8Array/Blob */\n private async handleStreamSource(\n source: Exclude<AudioSource, string> | undefined\n ): Promise<{ stopLoading: () => void }> {\n const result = {\n stopLoading: () => {\n // empty function\n },\n };\n if (!source) return result;\n try {\n if (source instanceof Blob) {\n const url = URL.createObjectURL(source);\n this.audio.src = url;\n return result;\n } else if (source instanceof ArrayBuffer || source instanceof Uint8Array) {\n const blob = source instanceof Uint8Array ? new Blob([source]) : new Blob([new Uint8Array(source)]);\n const url = URL.createObjectURL(blob);\n this.audio.src = url;\n this.audio.onloadeddata = () => URL.revokeObjectURL(url);\n return result;\n } else {\n // Create a new ReadableStream to read data from the reader\n const mime = this.options?.mimeType || 'audio/mpeg';\n result.stopLoading = () => {\n this.stopLoadingSource = true;\n };\n await this.initMediaSourceForReader(source, mime);\n return result;\n }\n } catch (error) {\n console.error('Error processing audio stream:', error);\n this.options?.onError?.(error);\n throw error;\n }\n }\n\n /** Initialize Web Audio API for better volume control */\n private initAudioContext() {\n if (this.audioContext) return;\n\n this.audioContext = new AudioContext();\n this.sourceNode = this.audioContext.createMediaElementSource(this.audio);\n this.gainNode = this.audioContext.createGain();\n\n this.sourceNode.connect(this.gainNode);\n this.gainNode.connect(this.audioContext.destination);\n\n this.gainNode.gain.value = this._volume;\n }\n\n /** Update audio playback volume */\n private updateVolume(): void {\n if (this.gainNode) {\n this.gainNode.gain.value = this._volume;\n } else {\n this.audio.volume = this._volume;\n }\n }\n\n /** Initialize MediaSource and push reader chunks into SourceBuffer */\n private async initMediaSourceForReader(reader: ReadableStreamDefaultReader<Uint8Array>, mime: string) {\n if (typeof MediaSource === 'undefined') {\n console.warn('MediaSource is not supported, falling back to one-time buffering.');\n await this.fallbackReaderToBlob(reader);\n return;\n }\n if (typeof MediaSource !== 'undefined' && !MediaSource.isTypeSupported(mime)) {\n console.warn('MIME type is not supported, falling back to one-time buffering.');\n await this.fallbackReaderToBlob(reader);\n return;\n }\n\n this.mediaSource = new MediaSource();\n const objectURL = URL.createObjectURL(this.mediaSource);\n this.audio.src = objectURL;\n this.stopLoadingSource = false;\n\n this.mediaSource.addEventListener('sourceopen', () => {\n if (!this.mediaSource) return;\n this.sourceBuffer = this.mediaSource.addSourceBuffer(mime);\n\n this.sourceBuffer.addEventListener('updateend', () => {\n this.appending = false;\n this.tryAppendNext();\n this.finalizeMediaSourceIfPossible();\n });\n\n // Start reading loop\n this.readLoop(reader);\n });\n }\n\n /** Loop to read data from the reader */\n private async readLoop(reader: ReadableStreamDefaultReader<Uint8Array>) {\n try {\n // Auto play (optional)\n if (this.audio.paused) {\n void this.play();\n }\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const { done, value } = await reader.read();\n if (done || this.stopLoadingSource) {\n this.streamEnded = true;\n break;\n }\n if (value && value.byteLength) {\n this.chunkQueue.push(value);\n this.tryAppendNext();\n }\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n // Try to finalize after the loop exits (including 0 chunk case)\n this.finalizeMediaSourceIfPossible();\n } catch (e) {\n console.error('Error reading stream:', e);\n this.options?.onError?.(e);\n }\n }\n\n /** Try to append the next chunk from the queue to the SourceBuffer */\n private tryAppendNext() {\n if (!this.sourceBuffer || this.appending) return;\n if (!this.chunkQueue.length) return;\n\n const chunk = this.chunkQueue.shift()!;\n this.appending = true;\n try {\n this.sourceBuffer.appendBuffer(chunk);\n } catch (e) {\n console.error('Error appending buffer:', e);\n this.appending = false;\n this.options?.onError?.(e);\n this.finalizeMediaSourceIfPossible();\n }\n }\n\n /** Finalize MediaSource if possible (stream ended, no pending chunks, and not updating) */\n private finalizeMediaSourceIfPossible(receivedAnyChunk = true) {\n if (\n this.mediaSource &&\n this.mediaSource.readyState === 'open' &&\n this.streamEnded &&\n !this.sourceBuffer?.updating &&\n this.chunkQueue.length === 0\n ) {\n try {\n this.mediaSource.endOfStream();\n } catch (e) {\n console.warn('endOfStream error:', e);\n }\n }\n }\n\n /** Fallback to one-time Blob synthesis when streaming is not supported */\n private async fallbackReaderToBlob(reader: ReadableStreamDefaultReader<Uint8Array>) {\n const stream = new ReadableStream({\n async pull(controller) {\n try {\n const { done, value } = await reader.read();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (err) {\n controller.error(err);\n }\n },\n });\n // Convert stream to Blob and create URL\n const response = new Response(stream);\n const blob = await response.blob();\n const url = URL.createObjectURL(blob);\n this.audio.src = url;\n this.audio.onloadeddata = () => URL.revokeObjectURL(url);\n }\n}\n\nexport default AudioPlayer;\n"],"mappings":"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"}
|
package/es/utils/crypto.js
CHANGED
|
@@ -300,20 +300,20 @@ export function decryptWithCryptoJS(_x11, _x12) {
|
|
|
300
300
|
}
|
|
301
301
|
function _decryptWithCryptoJS() {
|
|
302
302
|
_decryptWithCryptoJS = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(encryptedText, key) {
|
|
303
|
-
var _encryptedText$split3, _encryptedText$split4, ivBase64, encryptedBase64, _yield$Promise$all3, _yield$Promise$all4,
|
|
303
|
+
var _encryptedText$split3, _encryptedText$split4, ivBase64, encryptedBase64, _yield$Promise$all3, _yield$Promise$all4, Base64, Utf8, CBC, Pkcs7, SHA256, decrypt, iv, derivedKey, decrypted;
|
|
304
304
|
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
305
305
|
while (1) switch (_context6.prev = _context6.next) {
|
|
306
306
|
case 0:
|
|
307
307
|
_encryptedText$split3 = encryptedText.split(':'), _encryptedText$split4 = _slicedToArray(_encryptedText$split3, 2), ivBase64 = _encryptedText$split4[0], encryptedBase64 = _encryptedText$split4[1];
|
|
308
308
|
_context6.next = 3;
|
|
309
|
-
return Promise.all([import('crypto-js/
|
|
309
|
+
return Promise.all([import('crypto-js/enc-base64.js'), import('crypto-js/enc-utf8.js'), import('crypto-js/core.js'), import('crypto-js/pad-pkcs7.js'), import('crypto-js/sha256.js'), import('crypto-js/aes.js')]);
|
|
310
310
|
case 3:
|
|
311
311
|
_yield$Promise$all3 = _context6.sent;
|
|
312
312
|
_yield$Promise$all4 = _slicedToArray(_yield$Promise$all3, 6);
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
313
|
+
Base64 = _yield$Promise$all4[0].default;
|
|
314
|
+
Utf8 = _yield$Promise$all4[1].default;
|
|
315
|
+
CBC = _yield$Promise$all4[2].default.mode.CBC;
|
|
316
|
+
Pkcs7 = _yield$Promise$all4[3].default;
|
|
317
317
|
SHA256 = _yield$Promise$all4[4].default;
|
|
318
318
|
decrypt = _yield$Promise$all4[5].default.decrypt;
|
|
319
319
|
_context6.prev = 11;
|
package/es/utils/crypto.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","base64ToString","stringToBase64","random","randomChars","advancedEncrypt","_x","_x2","_advancedEncrypt","_callee","plainText","k1","b","_callee$","_context","encryptAES","substring","concat","advancedDecrypt","_x3","_x4","_advancedDecrypt","_callee2","encryptedText","decrypted","_decrypted$split","_decrypted$split2","_base64ToString$split","_base64ToString$split2","_callee2$","_context2","decryptAES","split","_slicedToArray","map","Number","_x5","_x6","_encryptAES","_callee3","text","isNode","_crypto","derivedKey","iv","cipher","encrypted","_iv","encoder","keyData","hashBuffer","cryptoKey","textBytes","encryptedBuffer","ivBase64","encryptedBase64","_callee3$","_context3","process","versions","node","crypto","require","createHash","update","digest","randomBytes","createCipheriv","final","toString","subtle","getRandomValues","Uint8Array","TextEncoder","encode","importKey","encrypt","btoa","String","fromCharCode","_toConsumableArray","t0","console","encryptWithCryptoJS","_x7","_x8","_decryptAES","_callee4","_encryptedText$split","_encryptedText$split2","_crypto2","decipher","_iv2","encryptedData","decryptedBuffer","decoder","_callee4$","_context4","Buffer","from","createDecipheriv","atob","charCodeAt","decrypt","TextDecoder","decode","decryptWithCryptoJS","_x9","_x10","_encryptWithCryptoJS","_callee5","_yield$Promise$all","_yield$Promise$all2","_yield$Promise$all2$","CBC","WordArray","Pkcs7","Base64","Utf8","SHA256","wordArray","keyArray","_callee5$","_context5","all","default","mode","lib","parse","stringify","padding","ciphertext","_x11","_x12","_decryptWithCryptoJS","_callee6","_encryptedText$split3","_encryptedText$split4","_yield$Promise$all3","_yield$Promise$all4","_callee6$","_context6"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 加密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param {string} text The text to be encrypted | 要加密的文本\n * @param {string} key The encryption key | 加密密钥\n *\n * @returns {Promise<string>} The encrypted text | 加密后的文本\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n if (crypto.subtle) {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n } else {\n // let encrypt: typeof CryptoJS.AES.encrypt;\n // try {\n // const aes = await import('crypto-js/aes');\n // encrypt = aes.encrypt;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // return encrypt(text, key).toString();\n // } catch (error) {\n // console.error('Encryption error:', error);\n // throw error;\n // }\n return encryptWithCryptoJS(text, key);\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 解密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n if (crypto.subtle) {\n // Browsers with Web Crypto API, in secure contexts (HTTPS)\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n } else {\n // Browsers without Web Crypto API, or insecure contexts (HTTP), fallback to CryptoJS\n // let decrypt: typeof CryptoJS.AES.decrypt;\n // let utf8: typeof CryptoJS.enc.Utf8;\n // try {\n // const [aes, encUtf8] = await Promise.all([import('crypto-js/aes'), import('crypto-js/enc-utf8')]);\n // decrypt = aes.decrypt;\n // utf8 = encUtf8.default;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // const decrypted = decrypt(encryptedText, key);\n // return decrypted.toString(utf8);\n // } catch (error) {\n // console.error('Decryption error:', error);\n // throw error;\n // }\n return decryptWithCryptoJS(encryptedText, key);\n }\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\nexport async function encryptWithCryptoJS(text: string, key: string) {\n const [\n {\n default: {\n mode: { CBC },\n lib: { WordArray },\n },\n },\n { default: Pkcs7 },\n { default: Base64 },\n { default: Utf8 },\n { default: SHA256 },\n {\n default: { encrypt },\n },\n ] = await Promise.all([\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert text and key to WordArray objects\n const wordArray = Utf8.parse(text);\n const keyArray = SHA256(key);\n const iv = WordArray.random(16);\n\n const encryptedBase64 = Base64.stringify(\n encrypt(wordArray, keyArray, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n }).ciphertext\n );\n return `${Base64.stringify(iv)}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n}\n\nexport async function decryptWithCryptoJS(encryptedText: string, key: string) {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n\n const [\n {\n default: {\n mode: { CBC },\n },\n },\n { default: Pkcs7 },\n { default: Base64 },\n { default: Utf8 },\n { default: SHA256 },\n {\n default: { decrypt },\n },\n ] = await Promise.all([\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert base64 strings to WordArray objects\n const iv = Base64.parse(ivBase64);\n // Derive key using SHA-256 (matching native implementation)\n const derivedKey = SHA256(key);\n const decrypted = decrypt(encryptedBase64, derivedKey, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n });\n return decrypted.toString(Utf8);\n } catch (error) {\n console.error('Decryption error:', error);\n throw error;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","base64ToString","stringToBase64","random","randomChars","advancedEncrypt","_x","_x2","_advancedEncrypt","_callee","plainText","k1","b","_callee$","_context","encryptAES","substring","concat","advancedDecrypt","_x3","_x4","_advancedDecrypt","_callee2","encryptedText","decrypted","_decrypted$split","_decrypted$split2","_base64ToString$split","_base64ToString$split2","_callee2$","_context2","decryptAES","split","_slicedToArray","map","Number","_x5","_x6","_encryptAES","_callee3","text","isNode","_crypto","derivedKey","iv","cipher","encrypted","_iv","encoder","keyData","hashBuffer","cryptoKey","textBytes","encryptedBuffer","ivBase64","encryptedBase64","_callee3$","_context3","process","versions","node","crypto","require","createHash","update","digest","randomBytes","createCipheriv","final","toString","subtle","getRandomValues","Uint8Array","TextEncoder","encode","importKey","encrypt","btoa","String","fromCharCode","_toConsumableArray","t0","console","encryptWithCryptoJS","_x7","_x8","_decryptAES","_callee4","_encryptedText$split","_encryptedText$split2","_crypto2","decipher","_iv2","encryptedData","decryptedBuffer","decoder","_callee4$","_context4","Buffer","from","createDecipheriv","atob","charCodeAt","decrypt","TextDecoder","decode","decryptWithCryptoJS","_x9","_x10","_encryptWithCryptoJS","_callee5","_yield$Promise$all","_yield$Promise$all2","_yield$Promise$all2$","CBC","WordArray","Pkcs7","Base64","Utf8","SHA256","wordArray","keyArray","_callee5$","_context5","all","default","mode","lib","parse","stringify","padding","ciphertext","_x11","_x12","_decryptWithCryptoJS","_callee6","_encryptedText$split3","_encryptedText$split4","_yield$Promise$all3","_yield$Promise$all4","_callee6$","_context6"],"sources":["../../src/utils/crypto.ts"],"sourcesContent":["import { base64ToString, stringToBase64 } from './base64';\nimport { random } from './math';\nimport { randomChars } from './string';\n\n/** Secret. No description provided */\nexport async function advancedEncrypt(plainText: string, key: string) {\n const k1 = randomChars(36);\n let e = await encryptAES(plainText, k1);\n const b = stringToBase64(k1);\n const l = b.length;\n const s = random(0, e.length);\n e = e.substring(0, s) + b + e.substring(s);\n const r = stringToBase64(`${s}-${l}`);\n const t = `${e}.${r}`;\n return encryptAES(t, key);\n}\n\n/** Secret. No description provided */\nexport async function advancedDecrypt(encryptedText: string, key: string) {\n const decrypted = await decryptAES(encryptedText, key);\n const [e, r] = decrypted.split('.');\n const [s, l] = base64ToString(r).split('-').map(Number);\n const k1 = base64ToString(e.substring(s, s + l));\n return decryptAES(e.substring(0, s) + e.substring(s + l), k1);\n}\n\n/**\n * **EN**: General AES encryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 加密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param {string} text The text to be encrypted | 要加密的文本\n * @param {string} key The encryption key | 加密密钥\n *\n * @returns {Promise<string>} The encrypted text | 加密后的文本\n */\nexport async function encryptAES(text: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipheriv('aes-256-cbc', derivedKey, iv);\n let encrypted = cipher.update(text, 'utf8', 'base64');\n encrypted += cipher.final('base64');\n return `${iv.toString('base64')}:${encrypted}`;\n } else {\n if (crypto.subtle) {\n // Browsers\n try {\n const iv = crypto.getRandomValues(new Uint8Array(16));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['encrypt']);\n const textBytes = encoder.encode(text);\n const encryptedBuffer = await crypto.subtle.encrypt({ name: 'AES-CBC', iv }, cryptoKey, textBytes);\n const ivBase64 = btoa(String.fromCharCode(...iv));\n const encryptedBase64 = btoa(String.fromCharCode(...new Uint8Array(encryptedBuffer)));\n return `${ivBase64}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n } else {\n // let encrypt: typeof CryptoJS.AES.encrypt;\n // try {\n // const aes = await import('crypto-js/aes');\n // encrypt = aes.encrypt;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // return encrypt(text, key).toString();\n // } catch (error) {\n // console.error('Encryption error:', error);\n // throw error;\n // }\n return encryptWithCryptoJS(text, key);\n }\n }\n}\n\n/**\n * **EN**: General AES decryption function - supports both Node.js and browser environments\n *\n * **CN**: 通用 AES 解密函数 - 同时支持 Node.js 和浏览器环境\n *\n * @param encryptedText The encrypted text (format: iv:encryptedContent, base64 encoded)\n * @param key The decryption key\n *\n * @returns The decrypted text\n */\nexport async function decryptAES(encryptedText: string, key: string): Promise<string> {\n const isNode = typeof process !== 'undefined' && process.versions != null && process.versions.node != null;\n try {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n if (!ivBase64 || !encryptedBase64) {\n throw new Error('Invalid encrypted format');\n }\n if (isNode) {\n // Node.js\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const crypto = require('crypto');\n const iv = Buffer.from(ivBase64, 'base64');\n const encryptedBuffer = Buffer.from(encryptedBase64, 'base64');\n const derivedKey = crypto.createHash('sha256').update(key).digest();\n const decipher = crypto.createDecipheriv('aes-256-cbc', derivedKey, iv);\n let decrypted = decipher.update(encryptedBuffer);\n decrypted = Buffer.concat([decrypted, decipher.final()]);\n return decrypted.toString('utf8');\n } else {\n if (crypto.subtle) {\n // Browsers with Web Crypto API, in secure contexts (HTTPS)\n const iv = Uint8Array.from(atob(ivBase64), (c) => c.charCodeAt(0));\n const encryptedData = Uint8Array.from(atob(encryptedBase64), (c) => c.charCodeAt(0));\n const encoder = new TextEncoder();\n const keyData = encoder.encode(key);\n const hashBuffer = await crypto.subtle.digest('SHA-256', keyData);\n const cryptoKey = await crypto.subtle.importKey('raw', hashBuffer, { name: 'AES-CBC' }, false, ['decrypt']);\n const decryptedBuffer = await crypto.subtle.decrypt({ name: 'AES-CBC', iv }, cryptoKey, encryptedData);\n const decoder = new TextDecoder();\n return decoder.decode(decryptedBuffer);\n } else {\n // Browsers without Web Crypto API, or insecure contexts (HTTP), fallback to CryptoJS\n // let decrypt: typeof CryptoJS.AES.decrypt;\n // let utf8: typeof CryptoJS.enc.Utf8;\n // try {\n // const [aes, encUtf8] = await Promise.all([import('crypto-js/aes'), import('crypto-js/enc-utf8')]);\n // decrypt = aes.decrypt;\n // utf8 = encUtf8.default;\n // } catch (error) {\n // console.error('Load \"crypto-js/aes\" error:', error);\n // throw error;\n // }\n // try {\n // const decrypted = decrypt(encryptedText, key);\n // return decrypted.toString(utf8);\n // } catch (error) {\n // console.error('Decryption error:', error);\n // throw error;\n // }\n return decryptWithCryptoJS(encryptedText, key);\n }\n }\n } catch (error) {\n console.error('Decryption error:', error);\n return '';\n }\n}\nexport async function encryptWithCryptoJS(text: string, key: string) {\n const [\n {\n default: {\n mode: { CBC },\n lib: { WordArray },\n },\n },\n { default: Pkcs7 },\n { default: Base64 },\n { default: Utf8 },\n { default: SHA256 },\n {\n default: { encrypt },\n },\n ] = await Promise.all([\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert text and key to WordArray objects\n const wordArray = Utf8.parse(text);\n const keyArray = SHA256(key);\n const iv = WordArray.random(16);\n\n const encryptedBase64 = Base64.stringify(\n encrypt(wordArray, keyArray, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n }).ciphertext\n );\n return `${Base64.stringify(iv)}:${encryptedBase64}`;\n } catch (error) {\n console.error('Encryption error:', error);\n throw error;\n }\n}\n\nexport async function decryptWithCryptoJS(encryptedText: string, key: string) {\n const [ivBase64, encryptedBase64] = encryptedText.split(':');\n\n const [\n { default: Base64 },\n { default: Utf8 },\n {\n default: {\n mode: { CBC },\n },\n },\n { default: Pkcs7 },\n { default: SHA256 },\n {\n default: { decrypt },\n },\n ] = await Promise.all([\n import('crypto-js/enc-base64.js'),\n import('crypto-js/enc-utf8.js'),\n import('crypto-js/core.js'),\n import('crypto-js/pad-pkcs7.js'),\n import('crypto-js/sha256.js'),\n import('crypto-js/aes.js'),\n ]);\n\n try {\n // Convert base64 strings to WordArray objects\n const iv = Base64.parse(ivBase64);\n // Derive key using SHA-256 (matching native implementation)\n const derivedKey = SHA256(key);\n const decrypted = decrypt(encryptedBase64, derivedKey, {\n iv,\n mode: CBC,\n padding: Pkcs7,\n });\n return decrypted.toString(Utf8);\n } catch (error) {\n console.error('Decryption error:', error);\n throw error;\n }\n}\n"],"mappings":"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"}
|
package/lib/hooks/useSSE.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface UseSSEProps<T = any> {
|
|
|
19
19
|
}
|
|
20
20
|
declare const useSSE: <T = any>(props: UseSSEProps<T>) => {
|
|
21
21
|
connect: (options?: FetchEventSourceInit & Partial<Pick<UseSSEProps, 'url'>>) => Promise<void>;
|
|
22
|
-
|
|
22
|
+
abort: () => void;
|
|
23
23
|
isRequesting: boolean;
|
|
24
24
|
isConnected: boolean;
|
|
25
25
|
};
|
package/lib/hooks/useSSE.js
CHANGED
|
@@ -60,16 +60,23 @@ var useSSE = (props) => {
|
|
|
60
60
|
try {
|
|
61
61
|
setIsRequesting(true);
|
|
62
62
|
setIsConnected(false);
|
|
63
|
+
let isError = false;
|
|
64
|
+
let response = void 0;
|
|
63
65
|
await (0, import_fetch_event_source.fetchEventSource)(connectUrl, {
|
|
64
66
|
method: "post",
|
|
65
67
|
signal: abortCtrlRef.current.signal,
|
|
66
68
|
openWhenHidden: true,
|
|
67
|
-
onopen: async (
|
|
69
|
+
onopen: async (resp) => {
|
|
70
|
+
response = resp;
|
|
71
|
+
if (!response.ok) {
|
|
72
|
+
isError = true;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
68
75
|
setIsConnected(true);
|
|
69
76
|
onopen == null ? void 0 : onopen(response);
|
|
70
77
|
},
|
|
71
78
|
onmessage(event) {
|
|
72
|
-
if (
|
|
79
|
+
if (isRequestingRef.current) {
|
|
73
80
|
setIsRequesting(false);
|
|
74
81
|
}
|
|
75
82
|
try {
|
|
@@ -88,10 +95,11 @@ var useSSE = (props) => {
|
|
|
88
95
|
}
|
|
89
96
|
},
|
|
90
97
|
onerror(error) {
|
|
91
|
-
setIsRequesting(false);
|
|
92
98
|
onError == null ? void 0 : onError(error);
|
|
93
99
|
},
|
|
94
100
|
onclose() {
|
|
101
|
+
if (isError)
|
|
102
|
+
return;
|
|
95
103
|
setIsRequesting(false);
|
|
96
104
|
onClose == null ? void 0 : onClose();
|
|
97
105
|
},
|
|
@@ -101,11 +109,17 @@ var useSSE = (props) => {
|
|
|
101
109
|
},
|
|
102
110
|
...restOptions
|
|
103
111
|
});
|
|
104
|
-
|
|
112
|
+
if (isError) {
|
|
113
|
+
throw response;
|
|
114
|
+
}
|
|
105
115
|
setIsRequesting(false);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
console.error("SSE connection error:", error);
|
|
118
|
+
setIsRequesting(false);
|
|
119
|
+
setIsConnected(false);
|
|
106
120
|
}
|
|
107
121
|
});
|
|
108
|
-
const
|
|
122
|
+
const abort = (0, import_useRefFunction.default)(() => {
|
|
109
123
|
setIsConnected(false);
|
|
110
124
|
if (isConnected && abortCtrlRef.current) {
|
|
111
125
|
abortCtrlRef.current.abort();
|
|
@@ -115,11 +129,11 @@ var useSSE = (props) => {
|
|
|
115
129
|
if (autoConnectRef.current) {
|
|
116
130
|
connect();
|
|
117
131
|
}
|
|
118
|
-
return
|
|
132
|
+
return abort;
|
|
119
133
|
}, []);
|
|
120
134
|
return {
|
|
121
135
|
connect,
|
|
122
|
-
|
|
136
|
+
abort,
|
|
123
137
|
isRequesting,
|
|
124
138
|
isConnected
|
|
125
139
|
};
|
package/lib/hooks/useSSE.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/hooks/useSSE.ts"],
|
|
4
|
-
"sourcesContent": ["import { useEffect, useRef, useState } from 'react';\nimport type { EventSourceMessage, FetchEventSourceInit } from '@microsoft/fetch-event-source';\nimport { fetchEventSource } from '@microsoft/fetch-event-source';\nimport useRefFunction from './useRefFunction';\nimport useRefValue from './useRefValue';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface UseSSEProps<T = any> {\n /** The URL to connect to */\n url: RequestInfo;\n /** Options for the connection. */\n connectOptions?: Omit<FetchEventSourceInit, 'onmessage' | 'onerror' | 'onclose'>;\n /** Automatically connect to the SSE channel. Default is `false`. */\n autoConnect?: boolean;\n /** Automatically close the connection when the component unmounts. Default is `true`. */\n autoClose?: boolean;\n /** Function to parse the incoming message. If not provided, the default JSON parser will be used. */\n parseMessage?: (original: EventSourceMessage) => T;\n /** Callback function to handle incoming messages. */\n onMessage?: (messageData: T) => void;\n /** Callback function to handle errors. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (error: any) => void;\n /** Callback function to handle connection closure. */\n onClose?: () => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useSSE = <T = any>(props: UseSSEProps<T>) => {\n const { url, autoConnect, connectOptions, onMessage, parseMessage, onError, onClose } = props;\n const autoConnectRef = useRefValue(autoConnect);\n const [isRequesting, setIsRequesting] = useState(false);\n const isRequestingRef = useRefValue(isRequesting);\n const [isConnected, setIsConnected] = useState<boolean>(false);\n const abortCtrlRef = useRef<AbortController | undefined>(undefined);\n\n const connect = useRefFunction(async (options?: FetchEventSourceInit & Partial<Pick<UseSSEProps, 'url'>>) => {\n const {\n url: connectUrl = url,\n headers = {},\n onopen,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onmessage,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onclose,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onerror,\n ...restOptions\n } = { ...connectOptions, ...options };\n abortCtrlRef.current = new AbortController();\n try {\n setIsRequesting(true);\n setIsConnected(false);\n await fetchEventSource(connectUrl, {\n method: 'post',\n signal: abortCtrlRef.current.signal,\n openWhenHidden: true,\n onopen: async (
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4C;AAE5C,gCAAiC;AACjC,4BAA2B;AAC3B,yBAAwB;AAwBxB,IAAM,SAAS,CAAU,UAA0B;AACjD,QAAM,EAAE,KAAK,aAAa,gBAAgB,WAAW,cAAc,SAAS,QAAQ,IAAI;AACxF,QAAM,qBAAiB,mBAAAA,SAAY,WAAW;AAC9C,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAS,KAAK;AACtD,QAAM,sBAAkB,mBAAAA,SAAY,YAAY;AAChD,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAkB,KAAK;AAC7D,QAAM,mBAAe,qBAAoC,MAAS;AAElE,QAAM,cAAU,sBAAAC,SAAe,OAAO,YAAuE;AAC3G,UAAM;AAAA,MACJ,KAAK,aAAa;AAAA,MAClB,UAAU,CAAC;AAAA,MACX;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA,MACA,GAAG;AAAA,IACL,IAAI,EAAE,GAAG,gBAAgB,GAAG,QAAQ;AACpC,iBAAa,UAAU,IAAI,gBAAgB;AAC3C,QAAI;AACF,sBAAgB,IAAI;AACpB,qBAAe,KAAK;AACpB,gBAAM,4CAAiB,YAAY;AAAA,QACjC,QAAQ;AAAA,QACR,QAAQ,aAAa,QAAQ;AAAA,QAC7B,gBAAgB;AAAA,QAChB,QAAQ,OAAO,
|
|
4
|
+
"sourcesContent": ["import { useEffect, useRef, useState } from 'react';\nimport type { EventSourceMessage, FetchEventSourceInit } from '@microsoft/fetch-event-source';\nimport { fetchEventSource } from '@microsoft/fetch-event-source';\nimport useRefFunction from './useRefFunction';\nimport useRefValue from './useRefValue';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface UseSSEProps<T = any> {\n /** The URL to connect to */\n url: RequestInfo;\n /** Options for the connection. */\n connectOptions?: Omit<FetchEventSourceInit, 'onmessage' | 'onerror' | 'onclose'>;\n /** Automatically connect to the SSE channel. Default is `false`. */\n autoConnect?: boolean;\n /** Automatically close the connection when the component unmounts. Default is `true`. */\n autoClose?: boolean;\n /** Function to parse the incoming message. If not provided, the default JSON parser will be used. */\n parseMessage?: (original: EventSourceMessage) => T;\n /** Callback function to handle incoming messages. */\n onMessage?: (messageData: T) => void;\n /** Callback function to handle errors. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n onError?: (error: any) => void;\n /** Callback function to handle connection closure. */\n onClose?: () => void;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst useSSE = <T = any>(props: UseSSEProps<T>) => {\n const { url, autoConnect, connectOptions, onMessage, parseMessage, onError, onClose } = props;\n const autoConnectRef = useRefValue(autoConnect);\n const [isRequesting, setIsRequesting] = useState(false);\n const isRequestingRef = useRefValue(isRequesting);\n const [isConnected, setIsConnected] = useState<boolean>(false);\n const abortCtrlRef = useRef<AbortController | undefined>(undefined);\n\n const connect = useRefFunction(async (options?: FetchEventSourceInit & Partial<Pick<UseSSEProps, 'url'>>) => {\n const {\n url: connectUrl = url,\n headers = {},\n onopen,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onmessage,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onclose,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n onerror,\n ...restOptions\n } = { ...connectOptions, ...options };\n abortCtrlRef.current = new AbortController();\n try {\n setIsRequesting(true);\n setIsConnected(false);\n let isError = false;\n let response: Response | undefined = undefined;\n await fetchEventSource(connectUrl, {\n method: 'post',\n signal: abortCtrlRef.current.signal,\n openWhenHidden: true,\n onopen: async (resp: Response) => {\n response = resp;\n if (!response.ok) {\n isError = true;\n return;\n }\n setIsConnected(true);\n onopen?.(response);\n },\n onmessage(event) {\n if (isRequestingRef.current) {\n setIsRequesting(false);\n }\n try {\n let parsed: T;\n if (parseMessage) {\n parsed = parseMessage(event);\n } else {\n parsed = event.data ? JSON.parse(event.data) : undefined;\n }\n if (parsed != null) {\n onMessage?.(parsed);\n }\n } catch (error) {\n console.error('Error parsing message data:', error);\n console.log('The underlying event:', event);\n }\n },\n onerror(error) {\n onError?.(error);\n },\n onclose() {\n if (isError) return;\n setIsRequesting(false);\n onClose?.();\n },\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n ...restOptions,\n });\n if (isError) {\n throw response;\n }\n setIsRequesting(false);\n } catch (error) {\n console.error('SSE connection error:', error);\n setIsRequesting(false);\n setIsConnected(false);\n }\n });\n\n const abort = useRefFunction(() => {\n setIsConnected(false);\n if (isConnected && abortCtrlRef.current) {\n abortCtrlRef.current.abort();\n }\n });\n\n useEffect(() => {\n if (autoConnectRef.current) {\n connect();\n }\n return abort;\n }, []);\n\n // 清理函数\n return {\n connect,\n abort,\n isRequesting,\n isConnected,\n };\n};\n\nexport default useSSE;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4C;AAE5C,gCAAiC;AACjC,4BAA2B;AAC3B,yBAAwB;AAwBxB,IAAM,SAAS,CAAU,UAA0B;AACjD,QAAM,EAAE,KAAK,aAAa,gBAAgB,WAAW,cAAc,SAAS,QAAQ,IAAI;AACxF,QAAM,qBAAiB,mBAAAA,SAAY,WAAW;AAC9C,QAAM,CAAC,cAAc,eAAe,QAAI,uBAAS,KAAK;AACtD,QAAM,sBAAkB,mBAAAA,SAAY,YAAY;AAChD,QAAM,CAAC,aAAa,cAAc,QAAI,uBAAkB,KAAK;AAC7D,QAAM,mBAAe,qBAAoC,MAAS;AAElE,QAAM,cAAU,sBAAAC,SAAe,OAAO,YAAuE;AAC3G,UAAM;AAAA,MACJ,KAAK,aAAa;AAAA,MAClB,UAAU,CAAC;AAAA,MACX;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA;AAAA,MAEA;AAAA,MACA,GAAG;AAAA,IACL,IAAI,EAAE,GAAG,gBAAgB,GAAG,QAAQ;AACpC,iBAAa,UAAU,IAAI,gBAAgB;AAC3C,QAAI;AACF,sBAAgB,IAAI;AACpB,qBAAe,KAAK;AACpB,UAAI,UAAU;AACd,UAAI,WAAiC;AACrC,gBAAM,4CAAiB,YAAY;AAAA,QACjC,QAAQ;AAAA,QACR,QAAQ,aAAa,QAAQ;AAAA,QAC7B,gBAAgB;AAAA,QAChB,QAAQ,OAAO,SAAmB;AAChC,qBAAW;AACX,cAAI,CAAC,SAAS,IAAI;AAChB,sBAAU;AACV;AAAA,UACF;AACA,yBAAe,IAAI;AACnB,2CAAS;AAAA,QACX;AAAA,QACA,UAAU,OAAO;AACf,cAAI,gBAAgB,SAAS;AAC3B,4BAAgB,KAAK;AAAA,UACvB;AACA,cAAI;AACF,gBAAI;AACJ,gBAAI,cAAc;AAChB,uBAAS,aAAa,KAAK;AAAA,YAC7B,OAAO;AACL,uBAAS,MAAM,OAAO,KAAK,MAAM,MAAM,IAAI,IAAI;AAAA,YACjD;AACA,gBAAI,UAAU,MAAM;AAClB,qDAAY;AAAA,YACd;AAAA,UACF,SAAS,OAAP;AACA,oBAAQ,MAAM,+BAA+B,KAAK;AAClD,oBAAQ,IAAI,yBAAyB,KAAK;AAAA,UAC5C;AAAA,QACF;AAAA,QACA,QAAQ,OAAO;AACb,6CAAU;AAAA,QACZ;AAAA,QACA,UAAU;AACR,cAAI;AAAS;AACb,0BAAgB,KAAK;AACrB;AAAA,QACF;AAAA,QACA,SAAS;AAAA,UACP,gBAAgB;AAAA,UAChB,GAAG;AAAA,QACL;AAAA,QACA,GAAG;AAAA,MACL,CAAC;AACD,UAAI,SAAS;AACX,cAAM;AAAA,MACR;AACA,sBAAgB,KAAK;AAAA,IACvB,SAAS,OAAP;AACA,cAAQ,MAAM,yBAAyB,KAAK;AAC5C,sBAAgB,KAAK;AACrB,qBAAe,KAAK;AAAA,IACtB;AAAA,EACF,CAAC;AAED,QAAM,YAAQ,sBAAAA,SAAe,MAAM;AACjC,mBAAe,KAAK;AACpB,QAAI,eAAe,aAAa,SAAS;AACvC,mBAAa,QAAQ,MAAM;AAAA,IAC7B;AAAA,EACF,CAAC;AAED,8BAAU,MAAM;AACd,QAAI,eAAe,SAAS;AAC1B,cAAQ;AAAA,IACV;AACA,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAGL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEA,IAAO,iBAAQ;",
|
|
6
6
|
"names": ["useRefValue", "useRefFunction"]
|
|
7
7
|
}
|
|
@@ -5,6 +5,11 @@ export interface AudioPlayerInit {
|
|
|
5
5
|
* - **CN:** 音频源(URL或流数据)
|
|
6
6
|
*/
|
|
7
7
|
source?: AudioSource | (() => AudioSource | Promise<AudioSource>);
|
|
8
|
+
/**
|
|
9
|
+
* - **EN:** MIME type of the audio (e.g., 'audio/mpeg', 'audio/wav'). Optional.
|
|
10
|
+
* - **CN:** 音频的MIME类型(例如,'audio/mpeg','audio/wav')。可选。
|
|
11
|
+
*/
|
|
12
|
+
mimeType?: string;
|
|
8
13
|
/**
|
|
9
14
|
* - **EN:** Initial volume level (0-1). Default is `0.5`
|
|
10
15
|
* - **CN:** 初始音量级别(0-1)。默认值为`0.5`
|
|
@@ -47,6 +52,12 @@ declare class AudioPlayer {
|
|
|
47
52
|
private gainNode;
|
|
48
53
|
private sourceNode;
|
|
49
54
|
private options;
|
|
55
|
+
private mediaSource;
|
|
56
|
+
private sourceBuffer;
|
|
57
|
+
private chunkQueue;
|
|
58
|
+
private appending;
|
|
59
|
+
private streamEnded;
|
|
60
|
+
private stopLoadingSource;
|
|
50
61
|
private onPlayEnd;
|
|
51
62
|
/**
|
|
52
63
|
* - **EN:** Creates an audio player instance
|
|
@@ -119,7 +130,9 @@ declare class AudioPlayer {
|
|
|
119
130
|
* @param source - can be a URL `string` or `ReadableStreamDefaultReader` |
|
|
120
131
|
* 可以是URL字符串或`ReadableStreamDefaultReader`
|
|
121
132
|
*/
|
|
122
|
-
setAudioSource(source?: AudioSource): Promise<
|
|
133
|
+
setAudioSource(source?: AudioSource): Promise<{
|
|
134
|
+
stopLoading: () => void;
|
|
135
|
+
}>;
|
|
123
136
|
/**
|
|
124
137
|
* - **EN:** Increase volume (by 10% each time)
|
|
125
138
|
* - **CN:** 增加音量(每次增加10%)
|
|
@@ -156,11 +169,22 @@ declare class AudioPlayer {
|
|
|
156
169
|
* - **CN:** 释放资源
|
|
157
170
|
*/
|
|
158
171
|
dispose(): void;
|
|
159
|
-
|
|
172
|
+
private disposeMediaSourceInternal;
|
|
173
|
+
/** Process streaming data source /ArrayBuffer/Uint8Array/Blob */
|
|
160
174
|
private handleStreamSource;
|
|
161
175
|
/** Initialize Web Audio API for better volume control */
|
|
162
176
|
private initAudioContext;
|
|
163
177
|
/** Update audio playback volume */
|
|
164
178
|
private updateVolume;
|
|
179
|
+
/** Initialize MediaSource and push reader chunks into SourceBuffer */
|
|
180
|
+
private initMediaSourceForReader;
|
|
181
|
+
/** Loop to read data from the reader */
|
|
182
|
+
private readLoop;
|
|
183
|
+
/** Try to append the next chunk from the queue to the SourceBuffer */
|
|
184
|
+
private tryAppendNext;
|
|
185
|
+
/** Finalize MediaSource if possible (stream ended, no pending chunks, and not updating) */
|
|
186
|
+
private finalizeMediaSourceIfPossible;
|
|
187
|
+
/** Fallback to one-time Blob synthesis when streaming is not supported */
|
|
188
|
+
private fallbackReaderToBlob;
|
|
165
189
|
}
|
|
166
190
|
export default AudioPlayer;
|