|
"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 && !path.isAbsolute(entry.path)) {
|
|
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;
|