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