49 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| const path = require("path");
 | |
| const deep_1 = require("./filters/deep");
 | |
| const entry_1 = require("./filters/entry");
 | |
| const error_1 = require("./filters/error");
 | |
| const entry_2 = require("./transformers/entry");
 | |
| class Provider {
 | |
|     constructor(_settings) {
 | |
|         this._settings = _settings;
 | |
|         this.errorFilter = new error_1.default(this._settings);
 | |
|         this.entryFilter = new entry_1.default(this._settings, this._getMicromatchOptions());
 | |
|         this.deepFilter = new deep_1.default(this._settings, this._getMicromatchOptions());
 | |
|         this.entryTransformer = new entry_2.default(this._settings);
 | |
|     }
 | |
|     _getRootDirectory(task) {
 | |
|         return path.resolve(this._settings.cwd, task.base);
 | |
|     }
 | |
|     _getReaderOptions(task) {
 | |
|         const basePath = task.base === '.' ? '' : task.base;
 | |
|         return {
 | |
|             basePath,
 | |
|             pathSegmentSeparator: '/',
 | |
|             concurrency: this._settings.concurrency,
 | |
|             deepFilter: this.deepFilter.getFilter(basePath, task.positive, task.negative),
 | |
|             entryFilter: this.entryFilter.getFilter(task.positive, task.negative),
 | |
|             errorFilter: this.errorFilter.getFilter(),
 | |
|             followSymbolicLinks: this._settings.followSymbolicLinks,
 | |
|             fs: this._settings.fs,
 | |
|             stats: this._settings.stats,
 | |
|             throwErrorOnBrokenSymbolicLink: this._settings.throwErrorOnBrokenSymbolicLink,
 | |
|             transform: this.entryTransformer.getTransformer()
 | |
|         };
 | |
|     }
 | |
|     _getMicromatchOptions() {
 | |
|         return {
 | |
|             dot: this._settings.dot,
 | |
|             matchBase: this._settings.baseNameMatch,
 | |
|             nobrace: !this._settings.braceExpansion,
 | |
|             nocase: !this._settings.caseSensitiveMatch,
 | |
|             noext: !this._settings.extglob,
 | |
|             noglobstar: !this._settings.globstar,
 | |
|             posix: true,
 | |
|             strictSlashes: false
 | |
|         };
 | |
|     }
 | |
| }
 | |
| exports.default = Provider;
 |