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.
		
		
		
		
		
			
		
			
				
					
					
						
							68 lines
						
					
					
						
							2.2 KiB
						
					
					
				
			
		
		
	
	
							68 lines
						
					
					
						
							2.2 KiB
						
					
					
				"use strict"; | 
						|
Object.defineProperty(exports, "__esModule", { value: true }); | 
						|
var path = require("path"); | 
						|
var deep_1 = require("./filters/deep"); | 
						|
var entry_1 = require("./filters/entry"); | 
						|
var pathUtil = require("../utils/path"); | 
						|
var Reader = /** @class */ (function () { | 
						|
    function Reader(options) { | 
						|
        this.options = options; | 
						|
        this.micromatchOptions = this.getMicromatchOptions(); | 
						|
        this.entryFilter = new entry_1.default(options, this.micromatchOptions); | 
						|
        this.deepFilter = new deep_1.default(options, this.micromatchOptions); | 
						|
    } | 
						|
    /** | 
						|
     * Returns root path to scanner. | 
						|
     */ | 
						|
    Reader.prototype.getRootDirectory = function (task) { | 
						|
        return path.resolve(this.options.cwd, task.base); | 
						|
    }; | 
						|
    /** | 
						|
     * Returns options for reader. | 
						|
     */ | 
						|
    Reader.prototype.getReaderOptions = function (task) { | 
						|
        return { | 
						|
            basePath: task.base === '.' ? '' : task.base, | 
						|
            filter: this.entryFilter.getFilter(task.positive, task.negative), | 
						|
            deep: this.deepFilter.getFilter(task.positive, task.negative), | 
						|
            sep: '/' | 
						|
        }; | 
						|
    }; | 
						|
    /** | 
						|
     * Returns options for micromatch. | 
						|
     */ | 
						|
    Reader.prototype.getMicromatchOptions = function () { | 
						|
        return { | 
						|
            dot: this.options.dot, | 
						|
            nobrace: !this.options.brace, | 
						|
            noglobstar: !this.options.globstar, | 
						|
            noext: !this.options.extension, | 
						|
            nocase: !this.options.case, | 
						|
            matchBase: this.options.matchBase | 
						|
        }; | 
						|
    }; | 
						|
    /** | 
						|
     * Returns transformed entry. | 
						|
     */ | 
						|
    Reader.prototype.transform = function (entry) { | 
						|
        if (this.options.absolute) { | 
						|
            entry.path = pathUtil.makeAbsolute(this.options.cwd, entry.path); | 
						|
        } | 
						|
        if (this.options.markDirectories && entry.isDirectory()) { | 
						|
            entry.path += '/'; | 
						|
        } | 
						|
        var item = this.options.stats ? entry : entry.path; | 
						|
        if (this.options.transform === null) { | 
						|
            return item; | 
						|
        } | 
						|
        return this.options.transform(item); | 
						|
    }; | 
						|
    /** | 
						|
     * Returns true if error has ENOENT code. | 
						|
     */ | 
						|
    Reader.prototype.isEnoentCodeError = function (err) { | 
						|
        return err.code === 'ENOENT'; | 
						|
    }; | 
						|
    return Reader; | 
						|
}()); | 
						|
exports.default = Reader;
 | 
						|
 |