antler
Version:
Directory structure linter
60 lines • 2.19 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Rule = void 0;
const chalk_1 = __importDefault(require("chalk"));
const antler_error_1 = require("./antler-error");
const antler_warning_1 = require("./antler-warning");
const constants_1 = require("./constants");
class Rule {
constructor(config) {
if (typeof config === 'string') {
this.setLevel(config);
}
else if (config && typeof config === 'object' && !Array.isArray(config)) {
this.setLevel(config.level);
this.setOptions(config.options);
}
else {
this.error('Invalid config - must be a string or object');
}
}
report(error) {
const message = error instanceof Error && error.message ? error.message : error;
if (this.level === 'error') {
throw new antler_error_1.AntlerError(`${this.getName()}: ${message}`);
}
else if (this.level === 'warning') {
throw new antler_warning_1.AntlerWarning(`${this.getName()}: ${message}`);
}
}
error(error) {
const message = error instanceof Error && error.message ? error.message : error;
throw new Error(chalk_1.default.red(`${this.getName()}: ${message}`));
}
setLevel(level) {
if (typeof level === 'string') {
if (constants_1.LEVELS.indexOf(level) < 0) {
this.error(`Error level must be one of ${constants_1.LEVELS.join(', ')}`);
}
else {
this.level = level;
}
}
else {
this.error(`Error level must be one of ${constants_1.LEVELS.join(', ')}`);
}
}
setOptions(options) {
if (options && typeof options === 'object' && !Array.isArray(options)) {
this.options = options;
}
else if (typeof options !== 'undefined') {
this.error('Invalid options - must be an object');
}
}
}
exports.Rule = Rule;
//# sourceMappingURL=rule.js.map