import micromatch = require('micromatch'); | |
import { IOptions } from '../../managers/options'; | |
import { FilterFunction } from '@mrmlnc/readdir-enhanced'; | |
import { Pattern } from '../../types/patterns'; | |
export default class EntryFilter { | |
private readonly options; | |
private readonly micromatchOptions; | |
readonly index: Map<string, undefined>; | |
constructor(options: IOptions, micromatchOptions: micromatch.Options); | |
/** | |
* Returns filter for directories. | |
*/ | |
getFilter(positive: Pattern[], negative: Pattern[]): FilterFunction; | |
/** | |
* Returns true if entry must be added to result. | |
*/ | |
private filter; | |
/** | |
* Return true if the entry already has in the cross reader index. | |
*/ | |
private isDuplicateEntry; | |
/** | |
* Create record in the cross reader index. | |
*/ | |
private createIndexRecord; | |
/** | |
* Returns true for non-files if the «onlyFiles» option is enabled. | |
*/ | |
private onlyFileFilter; | |
/** | |
* Returns true for non-directories if the «onlyDirectories» option is enabled. | |
*/ | |
private onlyDirectoryFilter; | |
/** | |
* Return true when `absolute` option is enabled and matched to the negative patterns. | |
*/ | |
private isSkippedByAbsoluteNegativePatterns; | |
/** | |
* Return true when entry match to provided patterns. | |
* | |
* First, just trying to apply patterns to the path. | |
* Second, trying to apply patterns to the path with final slash (need to micromatch to support «directory/**» patterns). | |
*/ | |
private isMatchToPatterns; | |
} |