{"version":3,"file":"file-scaner.cjs","sources":["../../src/include/file-scaner.ts"],"sourcesContent":["export type FileScanerResult = {\n   valid: boolean;\n   ext?: string;\n   mime?: string;\n};\n\n/**\n * Mega raw file-type detection from first chunk (magic bytes)\n * Supports 100+ common file types: images, audio, video, docs, archives, fonts, scripts, binaries.\n */\nfunction fileScaner(chunk: Uint8Array | Buffer): FileScanerResult {\n   if (!chunk || chunk.length < 4) return { valid: false };\n\n   // Define file signatures\n   const FILE_SIGNATURES: {\n      pattern: number[];\n      ext: string;\n      mime: string;\n      offset?: number;\n      asciiSlice?: [number, number, string]; // optional slice check: [start, end, string]\n   }[] = [\n         // --- Images ---\n         { pattern: [0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A], ext: \"png\", mime: \"image/png\" },\n         { pattern: [0x47, 0x49, 0x46, 0x38], ext: \"gif\", mime: \"image/gif\" },\n         { pattern: [0x52, 0x49, 0x46, 0x46], ext: \"webp\", mime: \"image/webp\", asciiSlice: [8, 12, \"WEBP\"] },\n         { pattern: [0xFF, 0xD8, 0xFF], ext: \"jpg\", mime: \"image/jpeg\" },\n         { pattern: [0x42, 0x4D], ext: \"bmp\", mime: \"image/bmp\" },\n         { pattern: [0x49, 0x49, 0x2A, 0x00], ext: \"tif\", mime: \"image/tiff\" },\n         { pattern: [0x4D, 0x4D, 0x00, 0x2A], ext: \"tif\", mime: \"image/tiff\" },\n         { pattern: [0x00, 0x00, 0x01, 0x00], ext: \"ico\", mime: \"image/x-icon\" },\n         { pattern: [0x00, 0x00, 0x02, 0x00], ext: \"cur\", mime: \"image/x-icon\" },\n\n         // --- Audio ---\n         { pattern: [0x49, 0x44, 0x33], ext: \"mp3\", mime: \"audio/mpeg\" },\n         { pattern: [0x66, 0x4C, 0x61, 0x43], ext: \"flac\", mime: \"audio/flac\" },\n         { pattern: [0x4F, 0x67, 0x67, 0x53], ext: \"ogg\", mime: \"audio/ogg\" },\n         { pattern: [0x52, 0x49, 0x46, 0x46], ext: \"wav\", mime: \"audio/wav\", asciiSlice: [8, 12, \"WAVE\"] },\n         { pattern: [0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32], ext: \"mp4a\", mime: \"audio/mp4\" },\n\n         // --- Video ---\n         { pattern: [0x00, 0x00, 0x00, 0x18], ext: \"mp4\", mime: \"video/mp4\", asciiSlice: [4, 8, \"ftyp\"] },\n         { pattern: [0x1A, 0x45, 0xDF, 0xA3], ext: \"mkv\", mime: \"video/x-matroska\" },\n         { pattern: [0x52, 0x49, 0x46, 0x46], ext: \"avi\", mime: \"video/x-msvideo\", asciiSlice: [8, 12, \"AVI \"] },\n         { pattern: [0x00, 0x00, 0x01, 0xBA], ext: \"mpeg\", mime: \"video/mpeg\" },\n         { pattern: [0x47, 0x40, 0x00, 0x10], ext: \"ts\", mime: \"video/MP2T\" },\n         { pattern: [0x66, 0x74, 0x79, 0x70, 0x6D, 0x70, 0x34, 0x32], ext: \"mov\", mime: \"video/quicktime\" },\n\n         // --- Archives ---\n         { pattern: [0x50, 0x4B, 0x03, 0x04], ext: \"zip\", mime: \"application/zip\" },\n         { pattern: [0x52, 0x61, 0x72, 0x21, 0x1A, 0x07, 0x00], ext: \"rar\", mime: \"application/x-rar-compressed\" },\n         { pattern: [0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C], ext: \"7z\", mime: \"application/x-7z-compressed\" },\n         { pattern: [0x1F, 0x8B], ext: \"gz\", mime: \"application/gzip\" },\n         { pattern: [0x42, 0x5A, 0x68], ext: \"bz2\", mime: \"application/x-bzip2\" },\n\n         // --- Documents ---\n         { pattern: [0x25, 0x50, 0x44, 0x46], ext: \"pdf\", mime: \"application/pdf\" },\n         { pattern: [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1], ext: \"msi\", mime: \"application/vnd.ms-installer\" },\n         { pattern: [0x4D, 0x5A], ext: \"exe\", mime: \"application/vnd.microsoft.portable-executable\" },\n         { pattern: [0x09, 0x08, 0x10, 0x00], ext: \"doc\", mime: \"application/msword\" },\n         { pattern: [0x09, 0x08, 0x10, 0x00, 0x00, 0x06, 0x05], ext: \"xls\", mime: \"application/vnd.ms-excel\" },\n         { pattern: [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1], ext: \"ppt\", mime: \"application/vnd.ms-powerpoint\" },\n         { pattern: [0x50, 0x4B, 0x03, 0x04], ext: \"docx\", mime: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\" },\n\n         // --- Fonts ---\n         { pattern: [0x00, 0x01, 0x00, 0x00], ext: \"ttf\", mime: \"font/ttf\" },\n         { pattern: [0x4F, 0x54, 0x54, 0x4F], ext: \"otf\", mime: \"font/otf\" },\n\n         // --- Scripts / Binary ---\n         { pattern: [0x23, 0x21], ext: \"sh\", mime: \"application/x-sh\" },\n         { pattern: [0x7F, 0x45, 0x4C, 0x46], ext: \"elf\", mime: \"application/x-elf\" },\n\n         // --- Others / fallback ---\n         { pattern: [0x46, 0x4C, 0x56], ext: \"flv\", mime: \"video/x-flv\" },\n         { pattern: [0x50, 0x4E, 0x44, 0x52], ext: \"pdf\", mime: \"application/pdf\" },\n         { pattern: [0x42, 0x50, 0x47, 0x0D], ext: \"bpg\", mime: \"image/bpg\" },\n      ];\n\n   // Check all signatures\n   for (const sig of FILE_SIGNATURES) {\n      const offset = sig.offset || 0;\n      const match = sig.pattern.every((b, i) => chunk[i + offset] === b);\n      if (!match) continue;\n\n      // Check optional ASCII slice\n      if (sig.asciiSlice) {\n         const [start, end, str] = sig.asciiSlice;\n         const slice = chunk.slice(start, end).toString(\"ascii\");\n         if (slice !== str) continue;\n      }\n\n      return { valid: true, ext: sig.ext, mime: sig.mime };\n   }\n\n   return { valid: false };\n}\n\nexport default fileScaner;"],"names":[],"mappings":"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"}