| | [self::CAT_TEXT, [0x3C, 0x3F, 0x78, 0x6D, 0x6C, 0x20], 'text/xml'], |
| | [self::CAT_TEXT, [0x25, 0x50, 0x44, 0x46, 0x2D], 'application/pdf'], |
| | + [self::CAT_TEXT, [0xEF, 0xBB, 0xBF], 'text/plain'], |
| | + [self::CAT_TEXT, [0xFE, 0xFF], 'text/plain'], |
| | + [self::CAT_TEXT, [0xFF, 0xFE], 'text/plain'], |
| | + [self::CAT_TEXT, [0x00, 0x00, 0xFE, 0xFF], 'text/plain'], |
| | + [self::CAT_TEXT, [0xFF, 0xFE, 0x00, 0x00], 'text/plain'], |
| | [self::CAT_AUDIO, [0xFF, 0xFB, self::ANY], 'audio/mpeg'], |
| | [self::CAT_AUDIO, [0x49, 0x44, 0x33], 'audio/mpeg'], |
 |
| | |
| | private const EXTENSION_MAP = [ |
| | - 'html' => [self::CAT_TEXT, 'text/html'], |
| | - 'css' => [self::CAT_TEXT, 'text/css'], |
| | - 'js' => [self::CAT_TEXT, 'application/javascript'], |
| | 'json' => [self::CAT_TEXT, 'application/json'], |
| | 'xml' => [self::CAT_TEXT, 'application/xml'], |
| | 'md' => [self::CAT_TEXT, 'text/markdown'], |
| | 'txt' => [self::CAT_TEXT, 'text/plain'], |
| | - 'php' => [self::CAT_TEXT, 'application/x-php'], |
| | - 'sql' => [self::CAT_TEXT, 'application/sql'], |
| | 'yaml' => [self::CAT_TEXT, 'text/yaml'], |
| | 'yml' => [self::CAT_TEXT, 'text/yaml'], |
| | 'gradle' => [self::CAT_TEXT, 'text/plain'], |
| | 'gitignore' => [self::CAT_TEXT, 'text/plain'], |
| | - 'sh' => [self::CAT_TEXT, 'application/x-sh'], |
| | 'tex' => [self::CAT_TEXT, 'application/x-tex'], |
| | 'bat' => [self::CAT_TEXT, 'application/x-msdos-program'], |
| | - 'py' => [self::CAT_TEXT, 'text/x-python'], |
| | - 'rb' => [self::CAT_TEXT, 'text/x-ruby'], |
| | - 'java' => [self::CAT_TEXT, 'text/x-java-source'], |
| | - 'c' => [self::CAT_TEXT, 'text/x-csrc'], |
| | - 'cpp' => [self::CAT_TEXT, 'text/x-c++src'], |
| | - 'h' => [self::CAT_TEXT, 'text/x-chdr'], |
| | - 'cs' => [self::CAT_TEXT, 'text/x-csharp'], |
| | 'ts' => [self::CAT_TEXT, 'application/typescript'], |
| | 'log' => [self::CAT_TEXT, 'text/plain'], |
 |
| | 'webp' => [self::CAT_IMAGE, 'image/webp'], |
| | 'mp4' => [self::CAT_VIDEO, 'video/mp4'], |
| | - 'mp3' => [self::CAT_AUDIO, 'audio/mpeg'] |
| | + 'mp3' => [self::CAT_AUDIO, 'audio/mpeg'], |
| | + |
| | + // Data formats |
| | + 'csv' => [self::CAT_TEXT, 'text/csv'], |
| | + 'tsv' => [self::CAT_TEXT, 'text/tab-separated-values'], |
| | + 'psv' => [self::CAT_TEXT, 'text/plain'], |
| | + 'ndjson' => [self::CAT_TEXT, 'application/x-ndjson'], |
| | + |
| | + // Config formats |
| | + 'toml' => [self::CAT_TEXT, 'application/toml'], |
| | + 'env' => [self::CAT_TEXT, 'text/plain'], |
| | + 'cfg' => [self::CAT_TEXT, 'text/plain'], |
| | + 'properties'=> [self::CAT_TEXT, 'text/plain'], |
| | + 'dotenv' => [self::CAT_TEXT, 'text/plain'], |
| | + |
| | + // Documentation / markup |
| | + 'rst' => [self::CAT_TEXT, 'text/x-rst'], |
| | + 'asciidoc' => [self::CAT_TEXT, 'text/asciidoc'], |
| | + 'adoc' => [self::CAT_TEXT, 'text/asciidoc'], |
| | + 'org' => [self::CAT_TEXT, 'text/org'], |
| | + 'latex' => [self::CAT_TEXT, 'application/x-tex'], |
| | + |
| | + // Programming languages |
| | + 'php' => [self::CAT_TEXT, 'application/x-php'], |
| | + 'sql' => [self::CAT_TEXT, 'application/sql'], |
| | + 'html' => [self::CAT_TEXT, 'text/html'], |
| | + 'css' => [self::CAT_TEXT, 'text/css'], |
| | + 'js' => [self::CAT_TEXT, 'application/javascript'], |
| | + 'py' => [self::CAT_TEXT, 'text/x-python'], |
| | + 'rb' => [self::CAT_TEXT, 'text/x-ruby'], |
| | + 'java' => [self::CAT_TEXT, 'text/x-java-source'], |
| | + 'c' => [self::CAT_TEXT, 'text/x-csrc'], |
| | + 'cpp' => [self::CAT_TEXT, 'text/x-c++src'], |
| | + 'h' => [self::CAT_TEXT, 'text/x-chdr'], |
| | + 'cs' => [self::CAT_TEXT, 'text/x-csharp'], |
| | + 'go' => [self::CAT_TEXT, 'text/x-go'], |
| | + 'rs' => [self::CAT_TEXT, 'text/x-rust'], |
| | + 'swift' => [self::CAT_TEXT, 'text/x-swift'], |
| | + 'kt' => [self::CAT_TEXT, 'text/x-kotlin'], |
| | + 'kts' => [self::CAT_TEXT, 'text/x-kotlin'], |
| | + 'scala' => [self::CAT_TEXT, 'text/x-scala'], |
| | + 'dart' => [self::CAT_TEXT, 'text/x-dart'], |
| | + 'lua' => [self::CAT_TEXT, 'text/x-lua'], |
| | + 'pl' => [self::CAT_TEXT, 'text/x-perl'], |
| | + 'pm' => [self::CAT_TEXT, 'text/x-perl'], |
| | + 'r' => [self::CAT_TEXT, 'text/x-r'], |
| | + 'm' => [self::CAT_TEXT, 'text/x-matlab'], // ambiguous but text |
| | + 'jl' => [self::CAT_TEXT, 'text/x-julia'], |
| | + |
| | + // Shell / scripting |
| | + 'sh' => [self::CAT_TEXT, 'application/x-sh'], |
| | + 'bash' => [self::CAT_TEXT, 'application/x-sh'], |
| | + 'zsh' => [self::CAT_TEXT, 'application/x-sh'], |
| | + 'fish' => [self::CAT_TEXT, 'text/plain'], |
| | + 'ps1' => [self::CAT_TEXT, 'application/x-powershell'], |
| | + |
| | + // Build / DevOps |
| | + 'dockerfile'=> [self::CAT_TEXT, 'text/plain'], |
| | + 'makefile' => [self::CAT_TEXT, 'text/x-makefile'], |
| | + 'cmake' => [self::CAT_TEXT, 'text/x-cmake'], |
| | + 'gitmodules'=> [self::CAT_TEXT, 'text/plain'], |
| | + 'editorconfig'=> [self::CAT_TEXT, 'text/plain'], |
| | + |
| | + // Dependency / package files |
| | + 'lock' => [self::CAT_TEXT, 'text/plain'], |
| | + 'pipfile' => [self::CAT_TEXT, 'text/plain'], |
| | + 'pipfile.lock' => [self::CAT_TEXT, 'application/json'], |
| | + 'requirements.txt' => [self::CAT_TEXT, 'text/plain'], |
| | + |
| | + // Misc text |
| | + 'license' => [self::CAT_TEXT, 'text/plain'], |
| | + 'readme' => [self::CAT_TEXT, 'text/plain'], |
| | + 'todo' => [self::CAT_TEXT, 'text/plain'], |
| | + 'manifest' => [self::CAT_TEXT, 'text/plain'], |
| | ]; |
| | |