import micromatch = require('micromatch'); | |
import { IOptions } from '../../managers/options'; | |
import { FilterFunction } from '@mrmlnc/readdir-enhanced'; | |
import { Pattern } from '../../types/patterns'; | |
export default class DeepFilter { | |
private readonly options; | |
private readonly micromatchOptions; | |
constructor(options: IOptions, micromatchOptions: micromatch.Options); | |
/** | |
* Returns filter for directories. | |
*/ | |
getFilter(positive: Pattern[], negative: Pattern[]): FilterFunction; | |
/** | |
* Returns max depth of the provided patterns. | |
*/ | |
private getMaxPatternDepth; | |
/** | |
* Returns RegExp's for patterns that can affect the depth of reading. | |
*/ | |
private getNegativePatternsRe; | |
/** | |
* Returns «true» for directory that should be read. | |
*/ | |
private filter; | |
/** | |
* Returns «true» when the «deep» option is disabled or number and depth of the entry is greater that the option value. | |
*/ | |
private isSkippedByDeepOption; | |
/** | |
* Returns «true» when depth parameter is not an Infinity and entry depth greater that the parameter value. | |
*/ | |
private isSkippedByMaxPatternDepth; | |
/** | |
* Returns «true» for symlinked directory if the «followSymlinkedDirectories» option is disabled. | |
*/ | |
private isSkippedSymlinkedDirectory; | |
/** | |
* Returns «true» for a directory whose name starts with a period if «dot» option is disabled. | |
*/ | |
private isSkippedDotDirectory; | |
/** | |
* Returns «true» for a directory whose path math to any negative pattern. | |
*/ | |
private isSkippedByNegativePatterns; | |
} |