sonar-web-frontend-reporters
Version:
sreporter is a Command-Line Interface to generate Front-End linters reporters for the SonarQube plugin
116 lines (94 loc) • 4.54 kB
JavaScript
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var ReporterType = require('./reporter.enum'),
CSSLintReporter = require('./reporters/csslint.reporter'),
SASSLintReporter = require('./reporters/sasslint.reporter'),
SASSTOSCSSLintReporter = require('./reporters/sass-to-scsslint.reporter'),
ESLintReporter = require('./reporters/eslint.reporter'),
ESLintAngularReporter = require('./reporters/eslint-angular.reporter'),
JSHintReporter = require('./reporters/jshint.reporter'),
HTMLHintReporter = require('./reporters/htmlhint.reporter'),
TSLintReporter = require('./reporters/tslint.reporter');
/**
* Handle the reporters creation.
*/
var ReporterFactory =
/*#__PURE__*/
function () {
function ReporterFactory() {
_classCallCheck(this, ReporterFactory);
}
_createClass(ReporterFactory, null, [{
key: "create",
/**
* Instantiante a reporter
*
* @param {ReporterType} type Reporter type.
* @param {Object} options User specific options.
* @param {string} projectName The project name, coming from `.sreporterrc` file and used later by SonarQube.
* @returns {Reporter} Instance of `Reporter`.
*/
value: function create(type, options, projectName) {
var reporter, opts;
switch (type) {
case ReporterType.CSSLINT:
opts = ReporterFactory.mergeOptions(options, CSSLintReporter.defaultOptions());
reporter = new CSSLintReporter(opts, projectName);
break;
case ReporterType.ESLINT:
opts = ReporterFactory.mergeOptions(options, ESLintReporter.defaultOptions());
reporter = new ESLintReporter(opts, projectName);
break;
case ReporterType.ESLINTANGULAR:
opts = ReporterFactory.mergeOptions(options, ESLintAngularReporter.defaultOptions());
reporter = new ESLintAngularReporter(opts, projectName);
break;
case ReporterType.HTMLHINT:
opts = ReporterFactory.mergeOptions(options, HTMLHintReporter.defaultOptions());
reporter = new HTMLHintReporter(opts, projectName);
break;
case ReporterType.JSHINT:
opts = ReporterFactory.mergeOptions(options, JSHintReporter.defaultOptions());
reporter = new JSHintReporter(opts, projectName);
break;
case ReporterType.TSLINT:
opts = ReporterFactory.mergeOptions(options, TSLintReporter.defaultOptions());
reporter = new TSLintReporter(opts, projectName);
break;
case ReporterType.SASSLINT:
opts = ReporterFactory.mergeOptions(options, SASSLintReporter.defaultOptions());
reporter = new SASSLintReporter(opts, projectName);
break;
case ReporterType.SASS_TO_SCSSLINT:
opts = ReporterFactory.mergeOptions(options, SASSTOSCSSLintReporter.defaultOptions());
reporter = new SASSTOSCSSLintReporter(opts, projectName);
break;
default:
throw new Error("Unknown reporter '".concat(type, "'"));
}
return reporter;
}
/**
* Merge the user specific options with the default ones of the reporter.
* Prioritize the user options.
*
* @param {Object} options User specific options
* @param {Object} defaultOptions Default reporter options
* @returns {Object|false} Merged options; Or FALSE if this reporter should be ignored
*/
}, {
key: "mergeOptions",
value: function mergeOptions(options, defaultOptions) {
if (options === true) {
return defaultOptions;
} else if (options) {
return Object.assign(defaultOptions, options);
}
return false;
}
}]);
return ReporterFactory;
}();
module.exports = ReporterFactory;
;