blob: 6f0e15a734417b0fee8db67b70c5b963c06df566 [file] [log] [blame]
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = warnRemovedSettings;
var _WarnSettings = _interopRequireDefault(require("./WarnSettings"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const warnSettings = (0, _WarnSettings.default)();
/**
* @typedef {(
* "require-jsdoc"
* | "require-returns"
* | "valid-types"
* | "require-example"
* | "check-examples"
* )} RulesWithMovedSettings
*/
/**
* @param {object} obj
* @param {string} property
* @returns {boolean}
*/
const has = (obj, property) => {
return Object.prototype.hasOwnProperty.call(obj, property);
};
/**
*
* @param {RulesWithMovedSettings} ruleName
* @returns {string[]}
*/
const getMovedSettings = ruleName => {
switch (ruleName) {
case 'require-jsdoc':
return ['exemptEmptyFunctions'];
case 'require-returns':
return ['forceRequireReturn'];
case 'valid-types':
return ['allowEmptyNamepaths', 'checkSeesForNamepaths'];
case 'require-example':
return ['avoidExampleOnConstructors'];
case 'check-examples':
return ['captionRequired', 'exampleCodeRegex', 'rejectExampleCodeRegex', 'allowInlineConfig', 'noDefaultExampleRules', 'matchingFileName', 'configFile', // The old name for `checkEslintrc`
'eslintrcForExamples', 'baseConfig', 'reportUnusedDisableDirectives'];
}
/* istanbul ignore next */
return [];
};
/**
* @param {object} context
* @param {RulesWithMovedSettings} ruleName
*/
function warnRemovedSettings(context, ruleName) {
const movedSettings = getMovedSettings(ruleName);
if (!context.settings || !context.settings.jsdoc) {
return;
}
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = movedSettings[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
const setting = _step.value;
if (has(context.settings.jsdoc, setting) && !warnSettings.hasBeenWarned(context, setting)) {
context.report({
loc: {
start: {
column: 1,
line: 1
}
},
message: `\`settings.jsdoc.${setting}\` has been removed, ` + `use options in the rule \`${ruleName}\` instead.`
});
warnSettings.markSettingAsWarned(context, setting);
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
module.exports = exports.default;
//# sourceMappingURL=warnRemovedSettings.js.map