From 4bb3b667ef48a72a4cb21470733ca16a6f6458b1 Mon Sep 17 00:00:00 2001 From: Torathion Date: Wed, 19 Feb 2025 20:56:05 +0100 Subject: [PATCH] change: extend defaultOptions --- src/fdir.ts | 12 +++++------- src/index.ts | 15 +++++++++++++-- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/fdir.ts b/src/fdir.ts index 8c698b1..a4b22ba 100644 --- a/src/fdir.ts +++ b/src/fdir.ts @@ -36,7 +36,8 @@ export function formatPaths(paths: string[], cwd: string, root: string): string[ // #region buildFdir export function buildFdir(options: GlobOptions, props: InternalProps, processed: ProcessedPatterns, cwd: string, root: string): APIBuilder { - const nocase = options.caseSensitiveMatch === false; + const { absolute, debug, followSymbolicLinks, onlyDirectories } = options + const nocase = !options.caseSensitiveMatch; const matcher = picomatch(processed.match, { dot: options.dot, @@ -48,9 +49,6 @@ export function buildFdir(options: GlobOptions, props: InternalProps, processed: const ignore = picomatch(processed.ignore, partialMatcherOptions); const partialMatcher = getPartialMatcher(processed.match, partialMatcherOptions); - const { absolute, onlyDirectories, debug } = options - const followSymlinks = options.followSymbolicLinks === false; - return new fdir({ filters: [(p, isDirectory) => { const path = processPath(p, cwd, root, isDirectory, absolute); @@ -72,10 +70,10 @@ export function buildFdir(options: GlobOptions, props: InternalProps, processed: relativePaths: !absolute, resolvePaths: absolute, includeBasePath: absolute, - resolveSymlinks: !followSymlinks, - excludeSymlinks: followSymlinks, + resolveSymlinks: followSymbolicLinks, + excludeSymlinks: !followSymbolicLinks, excludeFiles: onlyDirectories, - includeDirs: onlyDirectories || options.onlyFiles === false, + includeDirs: onlyDirectories || !options.onlyFiles, maxDepth: options.deep && Math.round(options.deep - props.depthOffset) }).crawl(root); } diff --git a/src/index.ts b/src/index.ts index ccc4985..5926c46 100644 --- a/src/index.ts +++ b/src/index.ts @@ -90,10 +90,21 @@ function processPatterns(opts: GlobOptions, props: InternalProps): ProcessedPatt return { match: matchPatterns, ignore: ignorePatterns }; } +// Only the literal type doesn't emit any typescript errors +const defaultOptions = { + expandDirectories: true, + debug: !!process.env.TINYGLOBBY_DEBUG, + ignore: [], + // tinyglobby exclusive behavior, should be considered deprecated + patterns: ['**/*'], + caseSensitiveMatch: true, + followSymbolicLinks: true, + onlyFiles: true +} + function getOptions(input: Input, options?: Partial): GlobOptions { const opts = { - // patterns: ['**/*'] is tinyglobby exclusive behavior, should be considered deprecated - ...{ expandDirectories: true, debug: !!process.env.TINYGLOBBY_DEBUG, ignore: [], patterns: ['**/*'] }, + ...defaultOptions, ...(Array.isArray(input) || typeof input === 'string' ? { ...options, patterns: input } : input) }; opts.cwd = (opts.cwd ? path.resolve(opts.cwd) : process.cwd()).replace(BACKSLASHES, '/');