forked from spencerwooo/onedrive-vercel-index
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetPreviewType.ts
123 lines (108 loc) · 2.46 KB
/
getPreviewType.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import { getExtension } from './getFileIcon'
export const preview = {
markdown: 'markdown',
image: 'image',
text: 'text',
pdf: 'pdf',
code: 'code',
video: 'video',
audio: 'audio',
office: 'ms-office',
epub: 'epub',
url: 'url',
}
export const extensions = {
gif: preview.image,
jpeg: preview.image,
jpg: preview.image,
png: preview.image,
webp: preview.image,
md: preview.markdown,
markdown: preview.markdown,
mdown: preview.markdown,
pdf: preview.pdf,
doc: preview.office,
docx: preview.office,
ppt: preview.office,
pptx: preview.office,
xls: preview.office,
xlsx: preview.office,
c: preview.code,
cpp: preview.code,
js: preview.code,
jsx: preview.code,
java: preview.code,
sh: preview.code,
cs: preview.code,
py: preview.code,
css: preview.code,
html: preview.code,
// typescript or video file, determined below
ts: preview.code,
tsx: preview.code,
rs: preview.code,
vue: preview.code,
json: preview.code,
yml: preview.code,
yaml: preview.code,
toml: preview.code,
txt: preview.text,
vtt: preview.text,
srt: preview.text,
log: preview.text,
diff: preview.text,
mp4: preview.video,
flv: preview.video,
webm: preview.video,
m3u8: preview.video,
mkv: preview.video,
mov: preview.video,
avi: preview.video, // won't work!
mp3: preview.audio,
m4a: preview.audio,
aac: preview.audio,
wav: preview.audio,
ogg: preview.audio,
oga: preview.audio,
opus: preview.audio,
flac: preview.audio,
epub: preview.epub,
url: preview.url,
}
export function getPreviewType(extension: string, flags?: { video?: boolean }): string | undefined {
let previewType = extensions[extension]
if (!previewType) {
return previewType
}
// Files with '.ts' extensions may be TypeScript files or TS Video files, we check for the flag 'video'
// to determine what preview renderer to use for '.ts' files.
if (extension === 'ts') {
if (flags?.video) {
previewType = preview.video
}
}
return previewType
}
export function getLanguageByFileName(filename: string): string {
const extension = getExtension(filename)
switch (extension) {
case 'ts':
case 'tsx':
return 'typescript'
case 'rs':
return 'rust'
case 'js':
case 'jsx':
return 'javascript'
case 'sh':
return 'shell'
case 'cs':
return 'csharp'
case 'py':
return 'python'
case 'yml':
return 'yaml'
default:
return extension
}
}