/// 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 { 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; }