| 123456789101112131415161718192021222324252627282930313233343536373839 | /// <reference types="node" />import micromatch = require('micromatch');import DeepFilter from './filters/deep';import EntryFilter from './filters/entry';import { IOptions } from '../managers/options';import { ITask } from '../managers/tasks';import { Options as IReaddirOptions } from '@mrmlnc/readdir-enhanced';import { Entry, EntryItem } from '../types/entries';export default abstract class Reader<T> {    readonly options: IOptions;    readonly entryFilter: EntryFilter;    readonly deepFilter: DeepFilter;    private readonly micromatchOptions;    constructor(options: IOptions);    /**     * The main logic of reading the directories that must be implemented by each providers.     */    abstract read(_task: ITask): T;    /**     * Returns root path to scanner.     */    getRootDirectory(task: ITask): string;    /**     * Returns options for reader.     */    getReaderOptions(task: ITask): IReaddirOptions;    /**     * Returns options for micromatch.     */    getMicromatchOptions(): micromatch.Options;    /**     * Returns transformed entry.     */    transform(entry: Entry): EntryItem;    /**     * Returns true if error has ENOENT code.     */    isEnoentCodeError(err: NodeJS.ErrnoException): boolean;}
 |