import { type DirectoryFile, type DirectoryTreeListOptions, type FileTree } from '../interfaces.js'; /** * Represents a directory entity with basic information. * @typedef DirectoryEntity * @property {Function} isDirectory - Function to check if the entity is a directory. * @property {string} name - Name of the directory entity. */ /** * Represents a file within a directory with its details. * @typedef DirectoryFile * @property {string} [ext] - File extension, if available. * @property {string} [folder] - Folder containing the file, if available. * @property {boolean} isDir - Flag to determine if the entity is a directory. * @property {string} name - Name of the file. * @property {string} path - Full path to the file. */ /** * Interface for reading directory contents. * @typedef DirectoryReader * @property {Function} isDirectory - Checks if the given entry is a directory. * @property {Function} readDirectory - Reads the directory at the given path and returns its entities. */ /** * Options for listing directory tree contents. * @typedef DirectoryTreeListOptions * @property {string[]} [exclude] - Patterns to exclude from the tree. * @property {string[]} [include] - Patterns to include in the tree. * @property {string} [mainPath] - Main path for relative calculations. * @property {string} srcPath - Source path of the directory to list. * @property {FileTree[]} [tree] - Existing tree to append to, if available. */ /** * Represents a node in a file tree structure. * @typedef FileTree * @property {FileTree[]} [children] - Child nodes of the current node. * @property {string} [ext] - File extension, if available. * @property {string} [fullPath] - Full path to the file or directory. * @property {string} name - Name of the file or directory. * @property {string} [path] - Relative path to the file or directory. */ /** * Strategy for filtering directory contents. * @typedef FilterStrategy * @property {Function} shouldInclude - Determines if a given entry should be included based on the strategy. */ /** * @typedef DirectoryTreeResult * @property {DirectoryFile[]} paths - The paths in the directory. * @property {FileTree[]} tree - The hierarchical tree structure of the directory. * @property {DirectoryFile[]} excluded - The files that were excluded based on the provided options. */ /** * The `DirectoryTreeBuilder` class provides functionalities to construct a hierarchical * representation of a directory and its contents based on the provided options. * It leverages filtering strategies and directory readers to achieve this. */ export declare class DirectoryTreeBuilder { private readonly filter; private readonly reader; private readonly options; /** * Initializes a new instance of the DirectoryTreeBuilder class. * * @param {DirectoryTreeListOptions} options - Configuration options for building the directory tree. */ constructor(options: DirectoryTreeListOptions); /** * Constructs a hierarchical representation of the directory based on the provided options. * * @returns {Promise} * A promise that resolves to the directory tree, including paths, tree structure, and excluded files. */ build(): Promise<{ paths: DirectoryFile[]; tree: FileTree[]; excluded: DirectoryFile[]; }>; /** * Retrieves detailed information about a directory entry. * * @param {string} srcPath - The source directory path. * @param {DirectoryEntity} dirent - The directory entry to retrieve details for. * @returns {DirectoryFile} Detailed information about the directory entry. */ private getFileDetails; /** * Checks whether a specific file should be omitted from the directory tree. * * @param {string} fileName - The name of the file to check. * @returns {boolean} True if the file should be skipped, otherwise false. */ private shouldSkipFile; /** * Creates a tree entry based on the provided file details. * * @param {DirectoryFile} file - Details of the file for which to create a tree entry. * @returns {FileTree} A tree entry representing the file. */ private createTreeEntry; } //# sourceMappingURL=directory-tree-builder.d.ts.map