271 lines
3.0 KiB
TypeScript
271 lines
3.0 KiB
TypeScript
import { extname } from 'path';
|
|
|
|
const binaryExtensions = new Set([
|
|
// types originally from https://github.com/sindresorhus/binary-extensions/blob/40e44b510d87a63dcf42300bc8fbcb105f45a61c/binary-extensions.json
|
|
'.3dm',
|
|
'.3ds',
|
|
'.3g2',
|
|
'.3gp',
|
|
'.7z',
|
|
'.a',
|
|
'.aac',
|
|
'.adp',
|
|
'.ai',
|
|
'.aif',
|
|
'.aiff',
|
|
'.alz',
|
|
'.ape',
|
|
'.apk',
|
|
'.appimage',
|
|
'.ar',
|
|
'.arj',
|
|
'.asf',
|
|
'.au',
|
|
'.avi',
|
|
'.bak',
|
|
'.baml',
|
|
'.bh',
|
|
'.bin',
|
|
'.bk',
|
|
'.bmp',
|
|
'.btif',
|
|
'.bz2',
|
|
'.bzip2',
|
|
'.cab',
|
|
'.caf',
|
|
'.cgm',
|
|
'.class',
|
|
'.cmx',
|
|
'.cpio',
|
|
'.cr2',
|
|
'.cur',
|
|
'.dat',
|
|
'.dcm',
|
|
'.deb',
|
|
'.dex',
|
|
'.djvu',
|
|
'.dll',
|
|
'.dmg',
|
|
'.dng',
|
|
'.doc',
|
|
'.docm',
|
|
'.docx',
|
|
'.dot',
|
|
'.dotm',
|
|
'.dra',
|
|
'.DS_Store',
|
|
'.dsk',
|
|
'.dts',
|
|
'.dtshd',
|
|
'.dvb',
|
|
'.dwg',
|
|
'.dxf',
|
|
'.ecelp4800',
|
|
'.ecelp7470',
|
|
'.ecelp9600',
|
|
'.egg',
|
|
'.eol',
|
|
'.eot',
|
|
'.epub',
|
|
'.exe',
|
|
'.f4v',
|
|
'.fbs',
|
|
'.fh',
|
|
'.fla',
|
|
'.flac',
|
|
'.flatpak',
|
|
'.fli',
|
|
'.flv',
|
|
'.fpx',
|
|
'.fst',
|
|
'.fvt',
|
|
'.g3',
|
|
'.gh',
|
|
'.gif',
|
|
'.graffle',
|
|
'.gz',
|
|
'.gzip',
|
|
'.h261',
|
|
'.h263',
|
|
'.h264',
|
|
'.icns',
|
|
'.ico',
|
|
'.ief',
|
|
'.img',
|
|
'.ipa',
|
|
'.iso',
|
|
'.jar',
|
|
'.jpeg',
|
|
'.jpg',
|
|
'.jpgv',
|
|
'.jpm',
|
|
'.jxr',
|
|
'.key',
|
|
'.ktx',
|
|
'.lha',
|
|
'.lib',
|
|
'.lvp',
|
|
'.lz',
|
|
'.lzh',
|
|
'.lzma',
|
|
'.lzo',
|
|
'.m3u',
|
|
'.m4a',
|
|
'.m4v',
|
|
'.mar',
|
|
'.mdi',
|
|
'.mht',
|
|
'.mid',
|
|
'.midi',
|
|
'.mj2',
|
|
'.mka',
|
|
'.mkv',
|
|
'.mmr',
|
|
'.mng',
|
|
'.mobi',
|
|
'.mov',
|
|
'.movie',
|
|
'.mp3',
|
|
'.mp4',
|
|
'.mp4a',
|
|
'.mpeg',
|
|
'.mpg',
|
|
'.mpga',
|
|
'.msi',
|
|
'.mxu',
|
|
'.nef',
|
|
'.npx',
|
|
'.numbers',
|
|
'.nupkg',
|
|
'.o',
|
|
'.odp',
|
|
'.ods',
|
|
'.odt',
|
|
'.oga',
|
|
'.ogg',
|
|
'.ogv',
|
|
'.otf',
|
|
'.ott',
|
|
'.pages',
|
|
'.pbm',
|
|
'.pcx',
|
|
'.pdb',
|
|
'.pdf',
|
|
'.pea',
|
|
'.pgm',
|
|
'.pic',
|
|
'.png',
|
|
'.pnm',
|
|
'.pot',
|
|
'.potm',
|
|
'.potx',
|
|
'.ppa',
|
|
'.ppam',
|
|
'.ppm',
|
|
'.pps',
|
|
'.ppsm',
|
|
'.ppsx',
|
|
'.ppt',
|
|
'.pptm',
|
|
'.pptx',
|
|
'.psd',
|
|
'.pxd',
|
|
'.pxz',
|
|
'.pya',
|
|
'.pyc',
|
|
'.pyo',
|
|
'.pyv',
|
|
'.qt',
|
|
'.rar',
|
|
'.ras',
|
|
'.raw',
|
|
'.resources',
|
|
'.rgb',
|
|
'.rip',
|
|
'.rlc',
|
|
'.rmf',
|
|
'.rmvb',
|
|
'.rpm',
|
|
'.rtf',
|
|
'.rz',
|
|
'.s3m',
|
|
'.s7z',
|
|
'.scpt',
|
|
'.sgi',
|
|
'.shar',
|
|
'.snap',
|
|
'.sil',
|
|
'.sketch',
|
|
'.slk',
|
|
'.smv',
|
|
'.snk',
|
|
'.so',
|
|
'.stl',
|
|
'.suo',
|
|
'.sub',
|
|
'.swf',
|
|
'.tar',
|
|
'.tbz',
|
|
'.tbz2',
|
|
'.tga',
|
|
'.tgz',
|
|
'.thmx',
|
|
'.tif',
|
|
'.tiff',
|
|
'.tlz',
|
|
'.ttc',
|
|
'.ttf',
|
|
'.txz',
|
|
'.udf',
|
|
'.uvh',
|
|
'.uvi',
|
|
'.uvm',
|
|
'.uvp',
|
|
'.uvs',
|
|
'.uvu',
|
|
'.viv',
|
|
'.vob',
|
|
'.war',
|
|
'.wav',
|
|
'.wax',
|
|
'.wbmp',
|
|
'.wdp',
|
|
'.weba',
|
|
'.webm',
|
|
'.webp',
|
|
'.whl',
|
|
'.wim',
|
|
'.wm',
|
|
'.wma',
|
|
'.wmv',
|
|
'.wmx',
|
|
'.woff',
|
|
'.woff2',
|
|
'.wrm',
|
|
'.wvx',
|
|
'.xbm',
|
|
'.xif',
|
|
'.xla',
|
|
'.xlam',
|
|
'.xls',
|
|
'.xlsb',
|
|
'.xlsm',
|
|
'.xlsx',
|
|
'.xlt',
|
|
'.xltm',
|
|
'.xltx',
|
|
'.xm',
|
|
'.xmind',
|
|
'.xpi',
|
|
'.xpm',
|
|
'.xwd',
|
|
'.xz',
|
|
'.z',
|
|
'.zip',
|
|
'.zipx',
|
|
]);
|
|
|
|
export function isBinaryPath(path: string): boolean {
|
|
return binaryExtensions.has(extname(path).toLowerCase());
|
|
}
|