fix(fs): Improve fs and stream handling, enhance SmartFile/StreamFile, update tests and CI configs
This commit is contained in:
@@ -3,25 +3,31 @@
|
||||
## listFileTree Function Enhancement (ts/fs.ts:367-415)
|
||||
|
||||
### Issue Fixed
|
||||
|
||||
The `listFileTree` function previously had inconsistent behavior with `**/*.extension` patterns across different systems and glob implementations. Some implementations would miss root-level files when using patterns like `**/*.ts`.
|
||||
|
||||
### Solution Implemented
|
||||
|
||||
Modified the function to explicitly handle `**/` patterns by:
|
||||
|
||||
1. Detecting when a pattern starts with `**/`
|
||||
2. Extracting the file pattern after `**/` (e.g., `*.ts` from `**/*.ts`)
|
||||
3. Running both the original pattern and the extracted root pattern
|
||||
4. Using a Set to deduplicate results and ensure consistent ordering
|
||||
|
||||
### Key Benefits
|
||||
|
||||
- Guarantees consistent behavior across all systems
|
||||
- Ensures both root-level and nested files are found with `**/*` patterns
|
||||
- Ensures both root-level and nested files are found with `**/*` patterns
|
||||
- Maintains backward compatibility
|
||||
- No performance degradation due to efficient deduplication
|
||||
|
||||
### Test Coverage
|
||||
|
||||
Added comprehensive tests to verify:
|
||||
|
||||
- Both root and nested files are found with `**/*.ts`
|
||||
- No duplicate entries in results
|
||||
- Edge cases with various file extensions work correctly
|
||||
|
||||
This fix ensures tools like `tsbuild check **/*.ts` work reliably across all systems.
|
||||
This fix ensures tools like `tsbuild check **/*.ts` work reliably across all systems.
|
||||
|
||||
Reference in New Issue
Block a user