mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-29 11:11:20 -08:00
refactor(mediabunny): [PKG-MB-03] type inputs and cancel owned loads
This commit is contained in:
1 parent
03451c029b
commit
adba8a3d12
35 files changed
+11260
-3327
No files matched your search
@@ -0,0 +1,30 @@
|
||||
import { isHlsSource } from './input'
|
||||
|
||||
interface RangeEvents {
|
||||
emit: (type: string, detail?: Event) => void
|
||||
}
|
||||
|
||||
export async function preflightRange(url: unknown, enabled: boolean, events: RangeEvents, signal?: AbortSignal, isCurrent = (): boolean => true): Promise<boolean> {
|
||||
if (signal?.aborted || !isCurrent())
|
||||
return false
|
||||
if (!enabled || typeof url !== 'string' || isHlsSource(url))
|
||||
return true
|
||||
|
||||
try {
|
||||
const res = await fetch(url, signal ? { method: 'HEAD', signal } : { method: 'HEAD' })
|
||||
if (signal?.aborted || !isCurrent())
|
||||
return false
|
||||
const acceptRanges = res.headers.get('accept-ranges')
|
||||
if (!acceptRanges || acceptRanges === 'none') {
|
||||
events.emit('error', new Event('RangeNotSupported'))
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
catch (error) {
|
||||
if (signal?.aborted || !isCurrent())
|
||||
return false
|
||||
console.warn('Preflight check failed:', error)
|
||||
return true
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user