fix(fs): Fix inconsistent glob matching in listFileTree and update test imports and dependency versions for enhanced stability.
This commit is contained in:
@@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@push.rocks/smartfile',
|
||||
version: '11.2.0',
|
||||
version: '11.2.1',
|
||||
description: 'Provides comprehensive tools for efficient file management in Node.js using TypeScript, including handling streams, virtual directories, and various file operations.'
|
||||
}
|
||||
|
23
ts/fs.ts
23
ts/fs.ts
@@ -383,7 +383,28 @@ export const listFileTree = async (
|
||||
dot: true,
|
||||
};
|
||||
|
||||
let fileList = await plugins.glob.glob(miniMatchFilter, options);
|
||||
// Fix inconsistent **/* glob behavior across systems
|
||||
// Some glob implementations don't include root-level files when using **/*
|
||||
// To ensure consistent behavior, we expand **/* patterns to include both root and nested files
|
||||
let patterns: string[];
|
||||
if (miniMatchFilter.startsWith('**/')) {
|
||||
// Extract the part after **/ (e.g., "*.ts" from "**/*.ts")
|
||||
const rootPattern = miniMatchFilter.substring(3);
|
||||
// Use both the root pattern and the original pattern to ensure we catch everything
|
||||
patterns = [rootPattern, miniMatchFilter];
|
||||
} else {
|
||||
patterns = [miniMatchFilter];
|
||||
}
|
||||
|
||||
// Collect results from all patterns
|
||||
const allFiles = new Set<string>();
|
||||
for (const pattern of patterns) {
|
||||
const files = await plugins.glob.glob(pattern, options);
|
||||
files.forEach(file => allFiles.add(file));
|
||||
}
|
||||
|
||||
let fileList = Array.from(allFiles).sort();
|
||||
|
||||
if (absolutePathsBool) {
|
||||
fileList = fileList.map((filePath) => {
|
||||
return plugins.path.resolve(plugins.path.join(dirPath, filePath));
|
||||
|
Reference in New Issue
Block a user