From 79f1b99f8286e71724a8d04db5750849f00b7f84 Mon Sep 17 00:00:00 2001 From: DualFroz Date: Fri, 4 Sep 2026 03:09:33 +0200 Subject: [PATCH] fix: use basename for name field of static-pattern entries in object mode With objectMode enabled, static patterns exposed the full pattern string as entry.name and dirent.name instead of the basename, unlike dynamic patterns which already returned the basename via @nodelib/fs.walk. Reader#_makeEntry now derives the basename once and uses it consistently for both fields, leaving entry.path unchanged. --- src/readers/reader.spec.ts | 12 ++++++++++++ src/readers/reader.ts | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/readers/reader.spec.ts b/src/readers/reader.spec.ts index e0494a8..1f14352 100644 --- a/src/readers/reader.spec.ts +++ b/src/readers/reader.spec.ts @@ -85,6 +85,18 @@ describe('Readers → Reader', () => { assert.ok(actual.stats); }); + + it('should return created entry with basename as `name` for a pattern with a directory part', () => { + const reader = getReader(); + const pattern = './directory/config.json'; + const stats = new Stats({ mode: StatsMode.File }); + + const actual = reader.makeEntry(stats, pattern); + + assert.strictEqual(actual.name, 'config.json'); + assert.strictEqual(actual.path, pattern); + assert.strictEqual(actual.dirent.name, 'config.json'); + }); }); describe('.isFatalError', () => { diff --git a/src/readers/reader.ts b/src/readers/reader.ts index 427ca72..dfaec0d 100644 --- a/src/readers/reader.ts +++ b/src/readers/reader.ts @@ -33,10 +33,11 @@ export abstract class Reader { } protected _makeEntry(stats: FsStats, pattern: Pattern): Entry { + const name = path.basename(pattern); const entry: Entry = { - name: pattern, + name, path: pattern, - dirent: utils.fs.createDirentFromStats(pattern, stats), + dirent: utils.fs.createDirentFromStats(name, stats), }; if (this.#settings.stats) {