| 366 | } |
| 367 | |
| 368 | private getIncludePatterns(): string[] { |
| 369 | const includePatterns = this.config.include || ['**/*']; |
| 370 | const extraFileExtensions = this.projectOptions.extraFileExtensions ?? []; |
| 371 | |
| 372 | if (extraFileExtensions.length === 0) { |
| 373 | return includePatterns; |
| 374 | } |
| 375 | |
| 376 | const extraPatterns = extraFileExtensions |
| 377 | .map((extension) => extension.trim().toLowerCase()) |
| 378 | .filter((extension) => extension.length > 0) |
| 379 | .map((extension) => (extension.startsWith('.') ? extension : `.${extension}`)) |
| 380 | .map((extension) => `**/*${extension}`); |
| 381 | |
| 382 | return Array.from(new Set([...includePatterns, ...extraPatterns])); |
| 383 | } |
| 384 | |
| 385 | async index(): Promise<IndexingStats> { |
| 386 | const startTime = Date.now(); |