From 131d4c8f9423eebfc3362546f5b7e13b7e3ce96d Mon Sep 17 00:00:00 2001 From: Rene Date: Fri, 26 Jun 2026 14:23:29 +0200 Subject: [PATCH] Adding Block extensions --- src/lib/blocked-extensions.ts | 91 +++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/lib/blocked-extensions.ts diff --git a/src/lib/blocked-extensions.ts b/src/lib/blocked-extensions.ts new file mode 100644 index 0000000..d4dfd21 --- /dev/null +++ b/src/lib/blocked-extensions.ts @@ -0,0 +1,91 @@ +export const BLOCKED_CODE_EXTENSIONS = new Set([ + "py", "pyc", "pyo", "pyw", "pyx", "ipynb", + "js", "mjs", "cjs", "jsx", "ts", "tsx", + "php", "phtml", "php3", "php4", "php5", + "rb", "erb", + "pl", "pm", + "lua", + "sh", "bash", "zsh", "ksh", "fish", + "ps1", "psm1", "psd1", + "bat", "cmd", + "vbs", + "applescript", + "ahk", + "au3", + "tcl", + "c", "h", "cpp", "cc", "cxx", "hpp", "hh", "hxx", + "cs", "vb", + "java", "class", "jar", + "go", + "rs", + "swift", + "kt", "kts", + "scala", + "groovy", "gradle", + "d", + "nim", + "cr", + "zig", + "v", + "vhd", "vhdl", + "asm", "s", + "f", "f90", "f95", "for", + "pas", "pp", + "ada", "adb", "ads", + "cob", "cbl", + "hs", "lhs", + "ml", "mli", + "fs", "fsx", "fsi", + "clj", "cljs", "cljc", "edn", + "lisp", "lsp", + "scm", "ss", + "rkt", + "ex", "exs", + "erl", "hrl", + "jl", + "elm", + "purs", + "re", "rei", + "sol", + "move", + "pro", + "m", + "html", "htm", + "css", "scss", "sass", "less", + "vue", "svelte", + "json5", + "o", "so", "dll", "exe", "dylib", + "wasm", "wat", "bin", + "out", + "deb", "rpm", + "app", "apk", "ipa", + "sql", "psql", + "ino", "pde", + "sas", "do", +]) + +export function getAllExtensions(name: string): string[] { + const parts = name.split(".") + if (parts.length <= 1) return [] + return parts.slice(1).map((ext) => ext.toLowerCase()) +} + +export function hasBlockedCodeExtension(name: string): boolean { + const exts = getAllExtensions(name) + return exts.some((ext) => BLOCKED_CODE_EXTENSIONS.has(ext)) +} + +export function filterBlockedFiles( + files: T[], +): { allowed: T[]; rejected: T[] } { + const allowed: T[] = [] + const rejected: T[] = [] + for (const f of files) { + if (hasBlockedCodeExtension(f.name)) { + rejected.push(f) + } else { + allowed.push(f) + } + } + return { allowed, rejected } +}