From ca60cec30da86d5a8898fa8471ec52ca34f4fcd8 Mon Sep 17 00:00:00 2001 From: SuYao Date: Thu, 5 Jun 2025 12:32:28 +0800 Subject: [PATCH] =?UTF-8?q?feat(constants):=20expand=20supported=20file=20?= =?UTF-8?q?extensions=20and=20categorize=20text=E2=80=A6=20(#6815)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(constants): expand supported file extensions and categorize text file types * refactor(constants): remove binary file extensions * refactor(constants): remove Xcode project --- packages/shared/config/constant.ts | 491 +++++++++++++++++++++-------- 1 file changed, 362 insertions(+), 129 deletions(-) diff --git a/packages/shared/config/constant.ts b/packages/shared/config/constant.ts index 911a3cf909..e1fca4e6d6 100644 --- a/packages/shared/config/constant.ts +++ b/packages/shared/config/constant.ts @@ -4,135 +4,368 @@ export const audioExts = ['.mp3', '.wav', '.ogg', '.flac', '.aac'] export const documentExts = ['.pdf', '.docx', '.pptx', '.xlsx', '.odt', '.odp', '.ods'] export const thirdPartyApplicationExts = ['.draftsExport'] export const bookExts = ['.epub'] -export const textExts = [ - '.txt', // 普通文本文件 - '.md', // Markdown 文件 - '.mdx', // Markdown 文件 - '.html', // HTML 文件 - '.htm', // HTML 文件的另一种扩展名 - '.xml', // XML 文件 - '.json', // JSON 文件 - '.yaml', // YAML 文件 - '.yml', // YAML 文件的另一种扩展名 - '.csv', // 逗号分隔值文件 - '.tsv', // 制表符分隔值文件 - '.ini', // 配置文件 - '.log', // 日志文件 - '.rtf', // 富文本格式文件 - '.org', // org-mode 文件 - '.wiki', // VimWiki 文件 - '.tex', // LaTeX 文件 - '.bib', // BibTeX 文件 - '.srt', // 字幕文件 - '.xhtml', // XHTML 文件 - '.nfo', // 信息文件(主要用于场景发布) - '.conf', // 配置文件 - '.config', // 配置文件 - '.env', // 环境变量文件 - '.rst', // reStructuredText 文件 - '.php', // PHP 脚本文件,包含嵌入的 HTML - '.js', // JavaScript 文件(部分是文本,部分可能包含代码) - '.ts', // TypeScript 文件 - '.jsp', // JavaServer Pages 文件 - '.aspx', // ASP.NET 文件 - '.bat', // Windows 批处理文件 - '.sh', // Unix/Linux Shell 脚本文件 - '.py', // Python 脚本文件 - '.ipynb', // Jupyter 笔记本格式 - '.rb', // Ruby 脚本文件 - '.pl', // Perl 脚本文件 - '.sql', // SQL 脚本文件 - '.css', // Cascading Style Sheets 文件 - '.less', // Less CSS 预处理器文件 - '.scss', // Sass CSS 预处理器文件 - '.sass', // Sass 文件 - '.styl', // Stylus CSS 预处理器文件 - '.coffee', // CoffeeScript 文件 - '.ino', // Arduino 代码文件 - '.asm', // Assembly 语言文件 - '.go', // Go 语言文件 - '.scala', // Scala 语言文件 - '.swift', // Swift 语言文件 - '.kt', // Kotlin 语言文件 - '.rs', // Rust 语言文件 - '.lua', // Lua 语言文件 - '.groovy', // Groovy 语言文件 - '.dart', // Dart 语言文件 - '.hs', // Haskell 语言文件 - '.clj', // Clojure 语言文件 - '.cljs', // ClojureScript 语言文件 - '.elm', // Elm 语言文件 - '.erl', // Erlang 语言文件 - '.ex', // Elixir 语言文件 - '.exs', // Elixir 脚本文件 - '.pug', // Pug (formerly Jade) 模板文件 - '.haml', // Haml 模板文件 - '.slim', // Slim 模板文件 - '.tpl', // 模板文件(通用) - '.ejs', // Embedded JavaScript 模板文件 - '.hbs', // Handlebars 模板文件 - '.mustache', // Mustache 模板文件 - '.jade', // Jade 模板文件 (已重命名为 Pug) - '.twig', // Twig 模板文件 - '.blade', // Blade 模板文件 (Laravel) - '.vue', // Vue.js 单文件组件 - '.jsx', // React JSX 文件 - '.tsx', // React TSX 文件 - '.graphql', // GraphQL 查询语言文件 - '.gql', // GraphQL 查询语言文件 - '.proto', // Protocol Buffers 文件 - '.thrift', // Thrift 文件 - '.toml', // TOML 配置文件 - '.edn', // Clojure 数据表示文件 - '.cake', // CakePHP 配置文件 - '.ctp', // CakePHP 视图文件 - '.cfm', // ColdFusion 标记语言文件 - '.cfc', // ColdFusion 组件文件 - '.m', // Objective-C 或 MATLAB 源文件 - '.mm', // Objective-C++ 源文件 - '.gradle', // Gradle 构建文件 - '.groovy', // Gradle 构建文件 - '.kts', // Kotlin Script 文件 - '.java', // Java 代码文件 - '.cs', // C# 代码文件 - '.cpp', // C++ 代码文件 - '.c', // C++ 代码文件 - '.h', // C++ 头文件 - '.hpp', // C++ 头文件 - '.cc', // C++ 源文件 - '.cxx', // C++ 源文件 - '.cppm', // C++20 模块接口文件 - '.ipp', // 模板实现文件 - '.ixx', // C++20 模块实现文件 - '.f90', // Fortran 90 源文件 - '.f', // Fortran 固定格式源代码文件 - '.f03', // Fortran 2003+ 源代码文件 - '.ahk', // AutoHotKey 语言文件 - '.tcl', // Tcl 脚本 - '.do', // Questa 或 Modelsim Tcl 脚本 - '.v', // Verilog 源文件 - '.sv', // SystemVerilog 源文件 - '.svh', // SystemVerilog 头文件 - '.vhd', // VHDL 源文件 - '.vhdl', // VHDL 源文件 - '.lef', // Library Exchange Format - '.def', // Design Exchange Format - '.edif', // Electronic Design Interchange Format - '.sdf', // Standard Delay Format - '.sdc', // Synopsys Design Constraints - '.xdc', // Xilinx Design Constraints - '.rpt', // 报告文件 - '.lisp', // Lisp 脚本 - '.il', // Cadence SKILL 脚本 - '.ils', // Cadence SKILL++ 脚本 - '.sp', // SPICE netlist 文件 - '.spi', // SPICE netlist 文件 - '.cir', // SPICE netlist 文件 - '.net', // SPICE netlist 文件 - '.scs', // Spectre netlist 文件 - '.asc', // LTspice netlist schematic 文件 - '.tf' // Technology File -] +const textExtsByCategory = new Map([ + [ + 'language', + [ + '.js', + '.mjs', + '.cjs', + '.ts', + '.jsx', + '.tsx', // JavaScript/TypeScript + '.py', // Python + '.java', // Java + '.cs', // C# + '.cpp', + '.c', + '.h', + '.hpp', + '.cc', + '.cxx', + '.cppm', + '.ipp', + '.ixx', // C/C++ + '.php', // PHP + '.rb', // Ruby + '.pl', // Perl + '.go', // Go + '.rs', // Rust + '.swift', // Swift + '.kt', + '.kts', // Kotlin + '.scala', // Scala + '.lua', // Lua + '.groovy', // Groovy + '.dart', // Dart + '.hs', // Haskell + '.clj', + '.cljs', // Clojure + '.elm', // Elm + '.erl', // Erlang + '.ex', + '.exs', // Elixir + '.ml', + '.mli', // OCaml + '.fs', // F# + '.r', + '.R', // R + '.sol', // Solidity + '.awk', // AWK + '.cob', // COBOL + '.asm', + '.s', // Assembly + '.lisp', + '.lsp', // Lisp + '.coffee', // CoffeeScript + '.ino', // Arduino + '.jl', // Julia + '.nim', // Nim + '.zig', // Zig + '.d', // D语言 + '.pas', // Pascal + '.vb', // Visual Basic + '.rkt', // Racket + '.scm', // Scheme + '.hx', // Haxe + '.as', // ActionScript + '.pde', // Processing + '.f90', + '.f', + '.f03', + '.for', + '.f95', // Fortran + '.adb', + '.ads', // Ada + '.pro', // Prolog + '.m', + '.mm', // Objective-C/MATLAB + '.rpy', // Ren'Py + '.ets', // OpenHarmony, + '.uniswap', // DeFi + '.vy', // Vyper + '.shader', + '.glsl', + '.frag', + '.vert', + '.gd' // Godot + ] + ], + [ + 'script', + [ + '.sh', // Shell + '.bat', + '.cmd', // Windows批处理 + '.ps1', // PowerShell + '.tcl', + '.do', // Tcl + '.ahk', // AutoHotkey + '.zsh', // Zsh + '.fish', // Fish shell + '.csh', // C shell + '.vbs', // VBScript + '.applescript', // AppleScript + '.au3', // AutoIt + '.bash', + '.nu' + ] + ], + [ + 'style', + [ + '.css', // CSS + '.less', // Less + '.scss', + '.sass', // Sass + '.styl', // Stylus + '.pcss', // PostCSS + '.postcss' // PostCSS + ] + ], + [ + 'template', + [ + '.vue', // Vue.js + '.pug', + '.jade', // Pug/Jade + '.haml', // Haml + '.slim', // Slim + '.tpl', // 通用模板 + '.ejs', // EJS + '.hbs', // Handlebars + '.mustache', // Mustache + '.twig', // Twig + '.blade', // Blade (Laravel) + '.liquid', // Liquid + '.jinja', + '.jinja2', + '.j2', // Jinja + '.erb', // ERB + '.vm', // Velocity + '.ftl', // FreeMarker + '.svelte', // Svelte + '.astro' // Astro + ] + ], + [ + 'config', + [ + '.ini', // INI配置 + '.conf', + '.config', // 通用配置 + '.env', // 环境变量 + '.toml', // TOML + '.cfg', // 通用配置 + '.properties', // Java属性 + '.desktop', // Linux桌面文件 + '.service', // systemd服务 + '.rc', + '.bashrc', + '.zshrc', // Shell配置 + '.fishrc', // Fish shell配置 + '.vimrc', // Vim配置 + '.htaccess', // Apache配置 + '.robots', // robots.txt + '.editorconfig', // EditorConfig + '.eslintrc', // ESLint + '.prettierrc', // Prettier + '.babelrc', // Babel + '.npmrc', // npm + '.dockerignore', // Docker ignore + '.npmignore', + '.yarnrc', + '.prettierignore', + '.eslintignore', + '.browserslistrc', + '.json5', + '.tfvars' + ] + ], + [ + 'document', + [ + '.txt', + '.text', // 纯文本 + '.md', + '.mdx', // Markdown + '.html', + '.htm', + '.xhtml', // HTML + '.xml', // XML + '.org', // Org-mode + '.wiki', // Wiki + '.tex', + '.bib', // LaTeX + '.rst', // reStructuredText + '.rtf', // 富文本 + '.nfo', // 信息文件 + '.adoc', + '.asciidoc', // AsciiDoc + '.pod', // Perl文档 + '.1', + '.2', + '.3', + '.4', + '.5', + '.6', + '.7', + '.8', + '.9', // man页面 + '.man', // man页面 + '.texi', + '.texinfo', // Texinfo + '.readme', + '.me', // README + '.changelog', // 变更日志 + '.license', // 许可证 + '.authors', // 作者文件 + '.po', + '.pot' + ] + ], + [ + 'data', + [ + '.json', // JSON + '.jsonc', // JSON with comments + '.yaml', + '.yml', // YAML + '.csv', + '.tsv', // 分隔值文件 + '.edn', // Clojure数据 + '.jsonl', + '.ndjson', // 换行分隔JSON + '.geojson', // GeoJSON + '.gpx', // GPS Exchange + '.kml', // Keyhole Markup + '.rss', + '.atom', // Feed格式 + '.vcf', // vCard + '.ics', // iCalendar + '.ldif', // LDAP数据交换 + '.pbtxt', + '.map' + ] + ], + [ + 'build', + [ + '.gradle', // Gradle + '.make', + '.mk', // Make + '.cmake', // CMake + '.sbt', // SBT + '.rake', // Rake + '.spec', // RPM spec + '.pom', + '.build', // Meson + '.bazel' // Bazel + ] + ], + [ + 'database', + [ + '.sql', // SQL + '.ddl', + '.dml', // DDL/DML + '.plsql', // PL/SQL + '.psql', // PostgreSQL + '.cypher', // Cypher + '.sparql' // SPARQL + ] + ], + [ + 'web', + [ + '.graphql', + '.gql', // GraphQL + '.proto', // Protocol Buffers + '.thrift', // Thrift + '.wsdl', // WSDL + '.raml', // RAML + '.swagger', + '.openapi' // API文档 + ] + ], + [ + 'version', + [ + '.gitignore', // Git ignore + '.gitattributes', // Git attributes + '.gitconfig', // Git config + '.hgignore', // Mercurial ignore + '.bzrignore', // Bazaar ignore + '.svnignore', // SVN ignore + '.githistory' // Git history + ] + ], + [ + 'subtitle', + [ + '.srt', + '.sub', + '.ass' // 字幕格式 + ] + ], + [ + 'log', + [ + '.log', + '.rpt' // 日志和报告 (移除了.out,因为通常是二进制可执行文件) + ] + ], + [ + 'eda', + [ + '.v', + '.sv', + '.svh', // Verilog/SystemVerilog + '.vhd', + '.vhdl', // VHDL + '.lef', + '.def', // LEF/DEF + '.edif', // EDIF + '.sdf', // SDF + '.sdc', + '.xdc', // 约束文件 + '.sp', + '.spi', + '.cir', + '.net', // SPICE + '.scs', // Spectre + '.asc', // LTspice + '.tf', // Technology File + '.il', + '.ils' // SKILL + ] + ], + [ + 'game', + [ + '.mtl', // Material Template Library + '.x3d', // X3D文件 + '.gltf', // glTF JSON + '.prefab', // Unity预制体 (YAML格式) + '.meta' // Unity元数据文件 (YAML格式) + ] + ], + [ + 'other', + [ + '.mcfunction', // Minecraft函数 + '.jsp', // JSP + '.aspx', // ASP.NET + '.ipynb', // Jupyter Notebook + '.cake', + '.ctp', // CakePHP + '.cfm', + '.cfc' // ColdFusion + ] + ] +]) + +export const textExts = Array.from(textExtsByCategory.values()).flat() export const ZOOM_LEVELS = [0.25, 0.33, 0.5, 0.67, 0.75, 0.8, 0.9, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5]