1 /// <reference types="node" />
\r
2 import micromatch = require('micromatch');
\r
3 import DeepFilter from './filters/deep';
\r
4 import EntryFilter from './filters/entry';
\r
5 import { IOptions } from '../managers/options';
\r
6 import { ITask } from '../managers/tasks';
\r
7 import { Options as IReaddirOptions } from '@mrmlnc/readdir-enhanced';
\r
8 import { Entry, EntryItem } from '../types/entries';
\r
9 export default abstract class Reader<T> {
\r
10 readonly options: IOptions;
\r
11 readonly entryFilter: EntryFilter;
\r
12 readonly deepFilter: DeepFilter;
\r
13 private readonly micromatchOptions;
\r
14 constructor(options: IOptions);
\r
16 * The main logic of reading the directories that must be implemented by each providers.
\r
18 abstract read(_task: ITask): T;
\r
20 * Returns root path to scanner.
\r
22 getRootDirectory(task: ITask): string;
\r
24 * Returns options for reader.
\r
26 getReaderOptions(task: ITask): IReaddirOptions;
\r
28 * Returns options for micromatch.
\r
30 getMicromatchOptions(): micromatch.Options;
\r
32 * Returns transformed entry.
\r
34 transform(entry: Entry): EntryItem;
\r
36 * Returns true if error has ENOENT code.
\r
38 isEnoentCodeError(err: NodeJS.ErrnoException): boolean;
\r