46 lines
1.6 KiB
TypeScript
46 lines
1.6 KiB
TypeScript
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;
|
|
}
|