UNPKG

filetypes

Version:

Filetypes is a library that helps you guess the file and mine types of files using magic numbers

206 lines (205 loc) 8.36 kB
let archiveTypes =[ { name: "epub", mine: "application/epub+zip", extension: "epub", match: (buffer)=>{ return (buffer.length > 57 && buffer[0] == 0x50 && buffer[1] == 0x4B && buffer[2] == 0x3 && buffer[3] == 0x4 && buffer[30] == 0x6D && buffer[31] == 0x69 && buffer[32] == 0x6D && buffer[33] == 0x65 && buffer[34] == 0x74 && buffer[35] == 0x79 && buffer[36] == 0x70 && buffer[37] == 0x65 && buffer[38] == 0x61 && buffer[39] == 0x70 && buffer[40] == 0x70 && buffer[41] == 0x6C && buffer[42] == 0x69 && buffer[43] == 0x63 && buffer[44] == 0x61 && buffer[45] == 0x74 && buffer[46] == 0x69 && buffer[47] == 0x6F && buffer[48] == 0x6E && buffer[49] == 0x2F && buffer[50] == 0x65 && buffer[51] == 0x70 && buffer[52] == 0x75 && buffer[53] == 0x62 && buffer[54] == 0x2B && buffer[55] == 0x7A && buffer[56] == 0x69 && buffer[57] == 0x70) }}, { name: "zip", mine: "application/zip", extension: "zip", match: (buffer)=>{ return (buffer.length > 3 && buffer[0] == 0x50 && buffer[1] == 0x4B && (buffer[2] == 0x3 || buffer[2] == 0x5 || buffer[2] == 0x7) && (buffer[3] == 0x4 || buffer[3] == 0x6 || buffer[3] == 0x8)) }}, { name: "tar", mine: "application/x-tar", extension: "tar", match: (buffer)=>{ return (buffer.length > 261 && buffer[257] == 0x75 && buffer[258] == 0x73 && buffer[259] == 0x74 && buffer[260] == 0x61 && buffer[261] == 0x72) }}, { name: "rar", mine: "application/x-rar-compressed", extension: "rar", match: (buffer)=>{ return (buffer.length > 6 && buffer[0] == 0x52 && buffer[1] == 0x61 && buffer[2] == 0x72 && buffer[3] == 0x21 && buffer[4] == 0x1A && buffer[5] == 0x7 && (buffer[6] == 0x0 || buffer[6] == 0x1)) }}, { name: "gz", mine: "application/gzip", extension: "gz", match: (buffer)=>{ return (buffer.length > 2 && buffer[0] == 0x1F && buffer[1] == 0x8B && buffer[2] == 0x8) }}, { name: "bz2", mine: "application/x-bzip2", extension: "bz2", match: (buffer)=>{ return (buffer.length > 5 && buffer[0] == 0x37 && buffer[1] == 0x7A && buffer[2] == 0xBC && buffer[3] == 0xAF && buffer[4] == 0x27 && buffer[5] == 0x1C) }}, { name: "7z", mine: "application/x-7z-compressed", extension: "7z", match: (buffer)=>{ return (buffer.length > 2 && buffer[0] == 0x42 && buffer[1] == 0x5A && buffer[2] == 0x68) }}, { name: "pdf", mine: "application/pdf", extension: "pdf", match: (buffer)=>{ return (buffer.length > 3 && buffer[0] == 0x25 && buffer[1] == 0x50 && buffer[2] == 0x44 && buffer[3] == 0x46) }}, { name: "exe", mine: "application/x-msdownload", extension: "exe", match: (buffer)=>{ return (buffer.length > 1 && buffer[0] == 0x4D && buffer[1] == 0x5A) }}, { name: "swf", mine: "application/x-shockwave-flash", extension: "swf", match: (buffer)=>{ return (buffer.length > 2 && (buffer[0] == 0x43 || buffer[0] == 0x46) && buffer[1] == 0x57 && buffer[2] == 0x53) }}, { name: "rtf", mine: "application/rtf", extension: "rtf", match: (buffer)=>{ return (buffer.length > 4 && buffer[0] == 0x7B && buffer[1] == 0x5C && buffer[2] == 0x72 && buffer[3] == 0x74 && buffer[4] == 0x66) }}, { name: "nes", mine: "application/x-nintendo-nes-rom", extension: "nes", match: (buffer)=>{ return (buffer.length > 3 && buffer[0] == 0x4E && buffer[1] == 0x45 && buffer[2] == 0x53 && buffer[3] == 0x1A) }}, { name: "crx", mine: "application/x-google-chrome-extension", extension: "crx", match: (buffer)=>{ return (buffer.length > 3 && buffer[0] == 0x43 && buffer[1] == 0x72 && buffer[2] == 0x32 && buffer[3] == 0x34) }}, { name: "cab", mine: "application/vnd.ms-cab-compressed", extension: "cab", match: (buffer)=>{ return (buffer.length > 3 && ((buffer[0] == 0x4D && buffer[1] == 0x53 && buffer[2] == 0x43 && buffer[3] == 0x46) || (buffer[0] == 0x49 && buffer[1] == 0x53 && buffer[2] == 0x63 && buffer[3] == 0x28))) }}, { name: "oet", mine: "application/octet-stream", extension: "oet", match: (buffer)=>{ return (buffer.length > 35 && buffer[34] == 0x4C && buffer[35] == 0x50 && ((buffer[8] == 0x02 && buffer[9] == 0x00 && buffer[10] == 0x01) || (buffer[8] == 0x01 && buffer[9] == 0x00 && buffer[10] == 0x00) || (buffer[8] == 0x02 && buffer[9] == 0x00 && buffer[10] == 0x02))) }}, { name: "ps", mine: "application/postscript", extension: "ps", match: (buffer)=>{ return (buffer.length > 1 && buffer[0] == 0x25 && buffer[1] == 0x21) }}, { name: "xz", mine: "application/x-xz", extension: "xz", match: (buffer)=>{ return (buffer.length > 5 && buffer[0] == 0xFD && buffer[1] == 0x37 && buffer[2] == 0x7A && buffer[3] == 0x58 && buffer[4] == 0x5A && buffer[5] == 0x00) }}, { name: "sqlite", mine: "application/x-sqlite3", extension: "sqlite", match: (buffer)=>{ return (buffer.length > 3 && buffer[0] == 0x53 && buffer[1] == 0x51 && buffer[2] == 0x4C && buffer[3] == 0x69) }}, { name: "deb", mine: "application/x-deb", extension: "deb", match: (buffer)=>{ return (buffer.length > 20 && buffer[0] == 0x21 && buffer[1] == 0x3C && buffer[2] == 0x61 && buffer[3] == 0x72 && buffer[4] == 0x63 && buffer[5] == 0x68 && buffer[6] == 0x3E && buffer[7] == 0x0A && buffer[8] == 0x64 && buffer[9] == 0x65 && buffer[10] == 0x62 && buffer[11] == 0x69 && buffer[12] == 0x61 && buffer[13] == 0x6E && buffer[14] == 0x2D && buffer[15] == 0x62 && buffer[16] == 0x69 && buffer[17] == 0x6E && buffer[18] == 0x61 && buffer[19] == 0x72 && buffer[20] == 0x79) }}, { name: "ar", mine: "application/x-unix-archive", extension: "ar", match: (buffer)=>{ return (buffer.length > 6 && buffer[0] == 0x21 && buffer[1] == 0x3C && buffer[2] == 0x61 && buffer[3] == 0x72 && buffer[4] == 0x63 && buffer[5] == 0x68 && buffer[6] == 0x3E) }}, { name: "z", mine: "application/x-compress", extension: "z", match: (buffer)=>{ return (buffer.length > 1 && ((buffer[0] == 0x1F && buffer[1] == 0xA0) || (buffer[0] == 0x1F && buffer[1] == 0x9D))) }}, { name: "lz", mine: "application/x-lzip", extension: "lz", match: (buffer)=>{ return (buffer.length > 3 && buffer[0] == 0x4C && buffer[1] == 0x5A && buffer[2] == 0x49 && buffer[3] == 0x50) }} ] module.exports = archiveTypes;