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.
39 lines
1.2 KiB
39 lines
1.2 KiB
/// <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; |
|
}
|
|
|