| |
| import * as nativeFs from "fs"; |
| import picomatch from "picomatch"; |
|
|
| |
| |
| |
| |
| |
| declare class Aborter { |
| aborted: boolean; |
| abort(): void; |
| } |
| |
| |
| type OnQueueEmptyCallback = (error: Error | null, output: WalkerState) => void; |
| |
| |
| |
| |
| |
| declare class Queue { |
| private onQueueEmpty?; |
| count: number; |
| constructor(onQueueEmpty?: OnQueueEmptyCallback | undefined); |
| enqueue(): number; |
| dequeue(error: Error | null, output: WalkerState): void; |
| } |
| |
| |
| type Counts = { |
| files: number; |
| directories: number; |
| |
| |
| |
| dirs: number; |
| }; |
| type Group = { |
| directory: string; |
| files: string[]; |
| |
| |
| |
| dir: string; |
| }; |
| type GroupOutput = Group[]; |
| type OnlyCountsOutput = Counts; |
| type PathsOutput = string[]; |
| type Output = OnlyCountsOutput | PathsOutput | GroupOutput; |
| type FSLike = { |
| readdir: typeof nativeFs.readdir; |
| readdirSync: typeof nativeFs.readdirSync; |
| realpath: typeof nativeFs.realpath; |
| realpathSync: typeof nativeFs.realpathSync; |
| stat: typeof nativeFs.stat; |
| statSync: typeof nativeFs.statSync; |
| }; |
| type WalkerState = { |
| root: string; |
| paths: string[]; |
| groups: Group[]; |
| counts: Counts; |
| options: Options; |
| queue: Queue; |
| controller: Aborter; |
| fs: FSLike; |
| symlinks: Map<string, string>; |
| visited: string[]; |
| }; |
| type ResultCallback<TOutput extends Output> = (error: Error | null, output: TOutput) => void; |
| type FilterPredicate = (path: string, isDirectory: boolean) => boolean; |
| type ExcludePredicate = (dirName: string, dirPath: string) => boolean; |
| type PathSeparator = "/" | "\\"; |
| type Options<TGlobFunction = unknown> = { |
| includeBasePath?: boolean; |
| includeDirs?: boolean; |
| normalizePath?: boolean; |
| maxDepth: number; |
| maxFiles?: number; |
| resolvePaths?: boolean; |
| suppressErrors: boolean; |
| group?: boolean; |
| onlyCounts?: boolean; |
| filters: FilterPredicate[]; |
| resolveSymlinks?: boolean; |
| useRealPaths?: boolean; |
| excludeFiles?: boolean; |
| excludeSymlinks?: boolean; |
| exclude?: ExcludePredicate; |
| relativePaths?: boolean; |
| pathSeparator: PathSeparator; |
| signal?: AbortSignal; |
| globFunction?: TGlobFunction; |
| fs?: FSLike; |
| }; |
| type GlobMatcher = (test: string) => boolean; |
| type GlobFunction = (glob: string | string[], ...params: unknown[]) => GlobMatcher; |
| type GlobParams<T> = T extends ((globs: string | string[], ...params: infer TParams extends unknown[]) => GlobMatcher) ? TParams : []; |
| |
| |
| declare class APIBuilder<TReturnType extends Output> { |
| private readonly root; |
| private readonly options; |
| constructor(root: string, options: Options); |
| withPromise(): Promise<TReturnType>; |
| withCallback(cb: ResultCallback<TReturnType>): void; |
| sync(): TReturnType; |
| } |
| |
| |
| declare class Builder<TReturnType extends Output = PathsOutput, TGlobFunction = typeof picomatch> { |
| private readonly globCache; |
| private options; |
| private globFunction?; |
| constructor(options?: Partial<Options<TGlobFunction>>); |
| group(): Builder<GroupOutput, TGlobFunction>; |
| withPathSeparator(separator: "/" | "\\"): this; |
| withBasePath(): this; |
| withRelativePaths(): this; |
| withDirs(): this; |
| withMaxDepth(depth: number): this; |
| withMaxFiles(limit: number): this; |
| withFullPaths(): this; |
| withErrors(): this; |
| withSymlinks({ |
| resolvePaths |
| }?: { |
| resolvePaths?: boolean | undefined; |
| }): this; |
| withAbortSignal(signal: AbortSignal): this; |
| normalize(): this; |
| filter(predicate: FilterPredicate): this; |
| onlyDirs(): this; |
| exclude(predicate: ExcludePredicate): this; |
| onlyCounts(): Builder<OnlyCountsOutput, TGlobFunction>; |
| crawl(root?: string): APIBuilder<TReturnType>; |
| withGlobFunction<TFunc>(fn: TFunc): Builder<TReturnType, TFunc>; |
| |
| |
| |
| |
| |
| |
| |
| crawlWithOptions(root: string, options: Partial<Options<TGlobFunction>>): APIBuilder<TReturnType>; |
| glob(...patterns: string[]): Builder<TReturnType, TGlobFunction>; |
| globWithOptions(patterns: string[]): Builder<TReturnType, TGlobFunction>; |
| globWithOptions(patterns: string[], ...options: GlobParams<TGlobFunction>): Builder<TReturnType, TGlobFunction>; |
| } |
| |
| |
| type Fdir = typeof Builder; |
| |
| export { Counts, ExcludePredicate, FSLike, Fdir, FilterPredicate, GlobFunction, GlobMatcher, GlobParams, Group, GroupOutput, OnlyCountsOutput, Options, Output, PathSeparator, PathsOutput, ResultCallback, WalkerState, Builder as fdir }; |