@avdl/folder-walker
Version:
A powerful, fluent, and configurable directory traversal utility for Node.js with TypeScript support
44 lines (43 loc) • 1.38 kB
TypeScript
/// <reference types="node" />
import { Stats } from 'fs';
export interface FileEntry {
path: string;
relativePath: string;
name: string;
ext: string;
stats: Stats;
content?: string | Buffer;
depth: number;
isFile: true;
isDirectory: false;
}
export interface FolderEntry {
path: string;
relativePath: string;
name: string;
stats: Stats;
depth: number;
isFile: false;
isDirectory: true;
}
export declare type WalkerEntry = FileEntry | FolderEntry;
export declare type FileHandler<T = void> = (entry: FileEntry) => T | Promise<T>;
export declare type FolderHandler<T = void> = (entry: FolderEntry) => T | Promise<T>;
export declare type ErrorHandler = (error: Error, path: string) => void;
export declare type AsyncFilter<T extends WalkerEntry> = (entry: T) => boolean | Promise<boolean>;
export declare type CollectorHandler<T, R> = (results: T[]) => R | Promise<R>;
export interface WalkerOptions {
maxDepth?: number;
includeFiles?: boolean;
includeFolders?: boolean;
extensions?: string[];
pattern?: RegExp;
exclude?: string[];
include?: string[];
followSymlinks?: boolean;
includeHidden?: boolean;
maxFileSize?: number;
encoding?: BufferEncoding;
readContents?: boolean;
customFilters?: AsyncFilter<WalkerEntry>[];
}