From 82afc753505c5a83770a9aa66b81a43d906ff9de Mon Sep 17 00:00:00 2001 From: Tommaso Sciortino Date: Tue, 1 Jul 2025 16:05:33 -0700 Subject: [PATCH] Special case mime type for ts file. (#2902) --- packages/core/src/utils/fileUtils.test.ts | 5 +++++ packages/core/src/utils/fileUtils.ts | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/core/src/utils/fileUtils.test.ts b/packages/core/src/utils/fileUtils.test.ts index 0455b6e1..c1381e85 100644 --- a/packages/core/src/utils/fileUtils.test.ts +++ b/packages/core/src/utils/fileUtils.test.ts @@ -196,6 +196,11 @@ describe('fileUtils', () => { vi.restoreAllMocks(); // Restore spies on actualNodeFs }); + it('should detect typescript type by extension (ts)', () => { + expect(detectFileType('file.ts')).toBe('text'); + expect(detectFileType('file.test.ts')).toBe('text'); + }); + it('should detect image type by extension (png)', () => { mockMimeLookup.mockReturnValueOnce('image/png'); expect(detectFileType('file.png')).toBe('image'); diff --git a/packages/core/src/utils/fileUtils.ts b/packages/core/src/utils/fileUtils.ts index 5a05d513..72f29436 100644 --- a/packages/core/src/utils/fileUtils.ts +++ b/packages/core/src/utils/fileUtils.ts @@ -100,8 +100,14 @@ export function detectFileType( filePath: string, ): 'text' | 'image' | 'pdf' | 'audio' | 'video' | 'binary' { const ext = path.extname(filePath).toLowerCase(); - const lookedUpMimeType = mime.lookup(filePath); // Returns false if not found, or the mime type string + // The mimetype for "ts" is MPEG transport stream (a video format) but we want + // to assume these are typescript files instead. + if (ext === '.ts') { + return 'text'; + } + + const lookedUpMimeType = mime.lookup(filePath); // Returns false if not found, or the mime type string if (lookedUpMimeType) { if (lookedUpMimeType.startsWith('image/')) { return 'image';