"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.markDirectories && entry.isDirectory()) { entry.path += '/'; } if (this.options.absolute && !path.isAbsolute(entry.path)) { entry.path = pathUtil.resolve(this.options.cwd, entry.path); entry.path = pathUtil.normalize(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;