92 lines
1.8 KiB
TypeScript
92 lines
1.8 KiB
TypeScript
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<T extends { name: string }>(
|
|
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 }
|
|
}
|