You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
40 lines
1.3 KiB
4 years ago
|
/// <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;
|
||
|
}
|