refactor(mediabunny): [PKG-MB-03] type inputs and cancel owned loads

This commit is contained in:
Harvey Zhao committed 2026-09-12 18:08:37 +08:00
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
}
}