| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- import { sep } from "node:path"
- export namespace FileIgnore {
- const FOLDERS = new Set([
- "node_modules",
- "bower_components",
- ".pnpm-store",
- "vendor",
- "dist",
- "build",
- "out",
- ".next",
- "target",
- "bin",
- "obj",
- ".git",
- ".svn",
- ".hg",
- ".vscode",
- ".idea",
- ".turbo",
- ".output",
- "desktop",
- ".sst",
- ])
- const FILES = [
- "**/*.swp",
- "**/*.swo",
- // OS
- "**/.DS_Store",
- "**/Thumbs.db",
- // Logs & temp
- "**/logs/**",
- "**/tmp/**",
- "**/temp/**",
- "**/*.log",
- // Coverage/test outputs
- "**/coverage/**",
- "**/.nyc_output/**",
- ]
- const FILE_GLOBS = FILES.map((p) => new Bun.Glob(p))
- export const PATTERNS = [...FILES, ...FOLDERS]
- export function match(
- filepath: string,
- opts?: {
- extra?: Bun.Glob[]
- whitelist?: Bun.Glob[]
- },
- ) {
- for (const glob of opts?.whitelist || []) {
- if (glob.match(filepath)) return false
- }
- const parts = filepath.split(sep)
- for (let i = 0; i < parts.length; i++) {
- if (FOLDERS.has(parts[i])) return true
- }
- const extra = opts?.extra || []
- for (const glob of [...FILE_GLOBS, ...extra]) {
- if (glob.match(filepath)) return true
- }
- return false
- }
- }
|