# FileScanner

**Kind:** Class

**Source:** [`atloria-monorepo/libs/parser-core/src/utils/file-scanner.ts`](https://github.com/sherkety/atloria/blob/main/atloria-monorepo/libs/parser-core/src/utils/file-scanner.ts#L86)

File Scanner Class

Provides methods for scanning directories, finding files by glob patterns,
and respecting .gitignore rules.

## Methods

| Method | Signature | Returns |
|---|---|---|
| `scan` | `scan(config: FileScannerConfig)` | `Promise<ScannedFile[]>` |
| `scanWithContent` | `scanWithContent(config: FileScannerConfig)` | `Promise<ScannedFile[]>` |
| `getFileStats` | `getFileStats(filePath: string)` | `Promise<FileStats | null>` |
| `readFile` | `readFile(filePath: string)` | `Promise<string | null>` |
| `matchesPattern` | `matchesPattern(filePath: string, pattern: string)` | `boolean` |
| `parseGitignore` | `parseGitignore(rootDir: string)` | `Promise<string[]>` |
| `countFiles` | `countFiles(config: FileScannerConfig)` | `Promise<number>` |
| `groupByExtension` | `groupByExtension(files: ScannedFile[])` | `Record<string, ScannedFile[]>` |
| `groupByDirectory` | `groupByDirectory(files: ScannedFile[])` | `Record<string, ScannedFile[]>` |
| `getSupportedExtensions` | `getSupportedExtensions()` | `ExtensionCategories` |
| `createPatternForExtensions` | `createPatternForExtensions(extensions: string[])` | `string` |
| `getTypescriptPatterns` | `getTypescriptPatterns()` | `string[]` |
| `getDefaultExcludePatterns` | `getDefaultExcludePatterns()` | `string[]` |

## Where it refuses work

- `FileScanner` stops the work with an early return when `!stat.isDirectory()`.

## When something fails

- `FileScanner` handles failure in 6 places: it turns it into a return value in 4, and logs it and continues in 2.
