fix: handle windows paths in media extension parsing

This commit is contained in:
Benjamin Lu
2026-04-07 15:35:35 -07:00
parent f78b42a56a
commit 759032ced2
2 changed files with 3 additions and 1 deletions

View File

@@ -174,12 +174,14 @@ describe('formatUtil', () => {
it('returns a normalized lowercase extension when present', () => {
expect(getFileExtension('mesh.PLY')).toBe('ply')
expect(getFileExtension('/path/to/file.glb')).toBe('glb')
expect(getFileExtension('C:\\path.with.dot\\file.OBJ')).toBe('obj')
})
it('returns null when no extension is present', () => {
expect(getFileExtension('README')).toBe(null)
expect(getFileExtension('')).toBe(null)
expect(getFileExtension(undefined)).toBe(null)
expect(getFileExtension('C:\\path.with.dot\\README')).toBe(null)
})
})

View File

@@ -630,7 +630,7 @@ export function getFileExtension(
filename: string | null | undefined
): string | null {
if (!filename) return null
const fullFilename = filename.split('/').pop() ?? filename
const fullFilename = filename.split(/[/\\]/).pop() ?? filename
const dotIndex = fullFilename.lastIndexOf('.')
if (dotIndex <= 0) return null
return fullFilename.slice(dotIndex + 1).toLowerCase()