Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Chore: use ids for messages (#12859)
* Chore: refactor `sort-vars` to use messageIds

* Chore: refactor `space-infix-ops` to use messageIds

* Chore: refactor `space-before-function-paren` to use messageIds

* Chore: refactor `space-before-blocks` to use messageIds

* Chore: refactor `spaced-comment` to use messageIds

* Chore: refactor `sort-keys` to use messageIds

* Chore: refactor `sort-imports` to use messageIds

* Chore: refactor `semi-style` to use messageIds

* Chore: refactor `semi-spacing` to use messageIds

* Chore: refactor `rest-spread-spacing` to use messageIds

* Chore: refactor `require-yield` to use messageIds

* Chore: refactor `require-jsdoc` to use messageIds

* Chore: refactor `radix` to use messageIds

* Chore: refactor `quote-props` to use messageIds

* Chore: refactor `prefer-template` to use messageIds

* Chore: refactor `prefer-spread` to use messageIds

* Chore: refactor `prefer-rest-params` to use messageIds

* Chore: refactor `prefer-reflect` to use messageIds

* Chore: refactor `prefer-promise-reject-errors` to use messageIds

* Chore: refactor `prefer-destructuring` to use messageIds

* Chore: refactor `prefer-arrow-callback` to use messageIds

* Chore: refactor `padding-line-between-statements` to use messageIds

* Chore: refactor `padded-blocks` to use messageIds

* Chore: refactor `operator-linebreak` to use messageIds

* Chore: refactor `one-var` to use messageIds

* Chore: refactor `one-var-declaration-per-line` to use messageIds

* Chore: refactor `object-shorthand` to use messageIds

* Chore: refactor `object-property-newline` to use messageIds

* Chore: refactor `object-curly-spacing` to use messageIds

* Chore: refactor `object-curly-newline` to use messageIds

* Chore: refactor `nonblock-statement-body-position` to use messageIds

* Chore: refactor `no-with` to use messageIds

* Chore: refactor `no-whitespace-before-property` to use messageIds

* Chore: refactor `no-warning-comments` to use messageIds

* Chore: refactor `no-var` to use messageIds

* Chore: refactor `no-useless-return` to use messageIds

* Chore: refactor `no-useless-rename` to use messageIds

* Chore: refactor `no-useless-concat` to use messageIds

* Chore: refactor `no-useless-computed-key` to use messageIds

* Chore: refactor `no-useless-catch` to use messageIds

* Chore: refactor `no-useless-call` to use messageIds

* Chore: refactor `no-unused-vars` to use messageIds

* Chore: refactor `no-unused-expressions` to use messageIds

* Chore: refactor `no-unsafe-finally` to use messageIds

* Chore: refactor `no-unreachable` to use messageIds

* Chore: refactor `no-unneeded-ternary` to use messageIds

* Chore: refactor `no-unmodified-loop-condition` to use messageIds

* Chore: refactor `no-underscore-dangle` to use messageIds

* Chore: refactor `no-undefined` to use messageIds

* Chore: refactor `no-undef-init` to use messageIds

* Chore: refactor `no-trailing-spaces` to use messageIds

* Chore: refactor `no-this-before-super` to use messageIds

* Chore: refactor `no-sync` to use messageIds

* Chore: refactor `no-ternary` to use messageIds

* Chore: refactor `no-template-curly-in-string` to use messageIds

* Chore: refactor `no-tabs` to use messageIds

* Chore: refactor `no-sparse-arrays` to use messageIds

* Chore: refactor `no-spaced-func` to use messageIds

* Chore: refactor `no-shadow-restricted-names` to use messageIds

* Chore: refactor `no-sequences` to use messageIds

* Chore: refactor `no-self-compare` to use messageIds

* Chore: refactor `no-self-assign` to use messageIds

* Chore: refactor `no-script-url` to use messageIds

* Chore: refactor `no-return-await` to use messageIds

* Chore: refactor `no-return-assign` to use messageIds

* Chore: refactor `no-restricted-properties` to use messageIds

* Chore: refactor `no-restricted-modules` to use messageIds

* Chore: refactor `no-regex-spaces` to use messageIds

* Chore: refactor `no-prototype-builtins` to use messageIds

* Chore: refactor `no-proto` to use messageIds

* Chore: refactor `no-process-exit` to use messageIds

* Chore: refactor `no-process-env` to use messageIds

* Chore: refactor `no-restricted-syntax` to use messageIds

* Chore: refactor `no-native-reassign` to use messageIds

* Chore: refactor `no-negated-in-lhs` to use messageIds

* Chore: refactor `no-invalid-regexp` to use messageIds

* Chore: refactor some tests to use `messageId`s

* Chore: update `linter` tests to include `messageId`

* Chore: correct message for `space-before-blocks`

* Chore: use default values intead of `||`
  • Loading branch information
G-Rath committed Feb 5, 2020
1 parent 824d235 commit 3734a66
Show file tree
Hide file tree
Showing 164 changed files with 5,603 additions and 2,429 deletions.
8 changes: 5 additions & 3 deletions lib/rules/no-invalid-regexp.js
Expand Up @@ -39,9 +39,11 @@ module.exports = {
}
},
additionalProperties: false
}]
}],

// no messages, because the error text comes directly from the regexpp module
messages: {
regexMessage: "{{message}}."
}
},

create(context) {
Expand Down Expand Up @@ -118,7 +120,7 @@ module.exports = {
if (message) {
context.report({
node,
message: "{{message}}.",
messageId: "regexMessage",
data: { message }
});
}
Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-native-reassign.js
Expand Up @@ -37,7 +37,11 @@ module.exports = {
},
additionalProperties: false
}
]
],

messages: {
nativeReassign: "Read-only global '{{name}}' should not be modified."
}
},

create(context) {
Expand Down Expand Up @@ -65,7 +69,7 @@ module.exports = {
) {
context.report({
node: identifier,
message: "Read-only global '{{name}}' should not be modified.",
messageId: "nativeReassign",
data: identifier
});
}
Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-negated-in-lhs.js
Expand Up @@ -24,7 +24,11 @@ module.exports = {
replacedBy: ["no-unsafe-negation"],

deprecated: true,
schema: []
schema: [],

messages: {
negatedLHS: "The 'in' expression's left operand is negated."
}
},

create(context) {
Expand All @@ -33,7 +37,7 @@ module.exports = {

BinaryExpression(node) {
if (node.operator === "in" && node.left.type === "UnaryExpression" && node.left.operator === "!") {
context.report({ node, message: "The 'in' expression's left operand is negated." });
context.report({ node, messageId: "negatedLHS" });
}
}
};
Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-process-env.js
Expand Up @@ -19,7 +19,11 @@ module.exports = {
url: "https://eslint.org/docs/rules/no-process-env"
},

schema: []
schema: [],

messages: {
unexpectedProcessEnv: "Unexpected use of process.env."
}
},

create(context) {
Expand All @@ -31,7 +35,7 @@ module.exports = {
propertyName = node.property.name;

if (objectName === "process" && !node.computed && propertyName && propertyName === "env") {
context.report({ node, message: "Unexpected use of process.env." });
context.report({ node, messageId: "unexpectedProcessEnv" });
}

}
Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-process-exit.js
Expand Up @@ -19,7 +19,11 @@ module.exports = {
url: "https://eslint.org/docs/rules/no-process-exit"
},

schema: []
schema: [],

messages: {
noProcessExit: "Don't use process.exit(); throw an error instead."
}
},

create(context) {
Expand All @@ -30,7 +34,7 @@ module.exports = {

return {
"CallExpression > MemberExpression.callee[object.name = 'process'][property.name = 'exit']"(node) {
context.report({ node: node.parent, message: "Don't use process.exit(); throw an error instead." });
context.report({ node: node.parent, messageId: "noProcessExit" });
}
};

Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-proto.js
Expand Up @@ -26,7 +26,11 @@ module.exports = {
url: "https://eslint.org/docs/rules/no-proto"
},

schema: []
schema: [],

messages: {
unexpectedProto: "The '__proto__' property is deprecated."
}
},

create(context) {
Expand All @@ -35,7 +39,7 @@ module.exports = {

MemberExpression(node) {
if (getStaticPropertyName(node) === "__proto__") {
context.report({ node, message: "The '__proto__' property is deprecated." });
context.report({ node, messageId: "unexpectedProto" });
}
}
};
Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-prototype-builtins.js
Expand Up @@ -19,7 +19,11 @@ module.exports = {
url: "https://eslint.org/docs/rules/no-prototype-builtins"
},

schema: []
schema: [],

messages: {
prototypeBuildIn: "Do not access Object.prototype method '{{prop}}' from target object."
}
},

create(context) {
Expand All @@ -42,7 +46,7 @@ module.exports = {

if (DISALLOWED_PROPS.indexOf(propName) > -1) {
context.report({
message: "Do not access Object.prototype method '{{prop}}' from target object.",
messageId: "prototypeBuildIn",
loc: node.callee.property.loc.start,
data: { prop: propName },
node
Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-regex-spaces.js
Expand Up @@ -45,7 +45,11 @@ module.exports = {
},

schema: [],
fixable: "code"
fixable: "code",

messages: {
multipleSpaces: "Spaces are hard to count. Use {{{length}}}."
}
},

create(context) {
Expand Down Expand Up @@ -96,7 +100,7 @@ module.exports = {
) {
context.report({
node: nodeToReport,
message: "Spaces are hard to count. Use {{{length}}}.",
messageId: "multipleSpaces",
data: { length },
fix(fixer) {
if (pattern !== rawPattern) {
Expand Down
38 changes: 19 additions & 19 deletions lib/rules/no-restricted-modules.js
Expand Up @@ -4,13 +4,6 @@
*/
"use strict";

//------------------------------------------------------------------------------
// Helpers
//------------------------------------------------------------------------------

const DEFAULT_MESSAGE_TEMPLATE = "'{{moduleName}}' module is restricted from being used.";
const CUSTOM_MESSAGE_TEMPLATE = "'{{moduleName}}' module is restricted from being used. {{customMessage}}";

//------------------------------------------------------------------------------
// Rule Definition
//------------------------------------------------------------------------------
Expand Down Expand Up @@ -72,6 +65,13 @@ module.exports = {
additionalItems: false
}
]
},

messages: {
defaultMessage: "'{{name}}' module is restricted from being used.",
// eslint-disable-next-line eslint-plugin/report-message-format
customMessage: "'{{name}}' module is restricted from being used. {{customMessage}}",
patternMessage: "'{{name}}' module is restricted from being used by a pattern."
}
},

Expand Down Expand Up @@ -126,17 +126,17 @@ module.exports = {
* @private
*/
function reportPath(node) {
const moduleName = node.arguments[0].value.trim();
const customMessage = restrictedPathMessages[moduleName];
const message = customMessage
? CUSTOM_MESSAGE_TEMPLATE
: DEFAULT_MESSAGE_TEMPLATE;
const name = node.arguments[0].value.trim();
const customMessage = restrictedPathMessages[name];
const messageId = customMessage
? "customMessage"
: "defaultMessage";

context.report({
node,
message,
messageId,
data: {
moduleName,
name,
customMessage
}
});
Expand All @@ -158,18 +158,18 @@ module.exports = {

// node has arguments and first argument is string
if (node.arguments.length && isString(node.arguments[0])) {
const moduleName = node.arguments[0].value.trim();
const name = node.arguments[0].value.trim();

// check if argument value is in restricted modules array
if (isRestrictedPath(moduleName)) {
if (isRestrictedPath(name)) {
reportPath(node);
}

if (restrictedPatterns.length > 0 && ig.ignores(moduleName)) {
if (restrictedPatterns.length > 0 && ig.ignores(name)) {
context.report({
node,
message: "'{{moduleName}}' module is restricted from being used by a pattern.",
data: { moduleName }
messageId: "patternMessage",
data: { name }
});
}
}
Expand Down
13 changes: 9 additions & 4 deletions lib/rules/no-restricted-properties.js
Expand Up @@ -61,6 +61,13 @@ module.exports = {
]
},
uniqueItems: true
},

messages: {
// eslint-disable-next-line eslint-plugin/report-message-format
restrictedObjectProperty: "'{{objectName}}.{{propertyName}}' is restricted from being used.{{message}}",
// eslint-disable-next-line eslint-plugin/report-message-format
restrictedProperty: "'{{propertyName}}' is restricted from being used.{{message}}"
}
},

Expand Down Expand Up @@ -114,8 +121,7 @@ module.exports = {

context.report({
node,
// eslint-disable-next-line eslint-plugin/report-message-format
message: "'{{objectName}}.{{propertyName}}' is restricted from being used.{{message}}",
messageId: "restrictedObjectProperty",
data: {
objectName,
propertyName,
Expand All @@ -127,8 +133,7 @@ module.exports = {

context.report({
node,
// eslint-disable-next-line eslint-plugin/report-message-format
message: "'{{propertyName}}' is restricted from being used.{{message}}",
messageId: "restrictedProperty",
data: {
propertyName,
message
Expand Down
11 changes: 8 additions & 3 deletions lib/rules/no-restricted-syntax.js
Expand Up @@ -39,6 +39,11 @@ module.exports = {
},
uniqueItems: true,
minItems: 0
},

messages: {
// eslint-disable-next-line eslint-plugin/report-message-format
restrictedSyntax: "{{message}}"
}
},

Expand All @@ -48,14 +53,14 @@ module.exports = {
const hasCustomMessage = !isStringFormat && Boolean(selectorOrObject.message);

const selector = isStringFormat ? selectorOrObject : selectorOrObject.selector;
const message = hasCustomMessage ? selectorOrObject.message : "Using '{{selector}}' is not allowed.";
const message = hasCustomMessage ? selectorOrObject.message : `Using '${selector}' is not allowed.`;

return Object.assign(result, {
[selector](node) {
context.report({
node,
message,
data: hasCustomMessage ? {} : { selector }
messageId: "restrictedSyntax",
data: { message }
});
}
});
Expand Down
11 changes: 8 additions & 3 deletions lib/rules/no-return-assign.js
Expand Up @@ -35,7 +35,12 @@ module.exports = {
{
enum: ["except-parens", "always"]
}
]
],

messages: {
returnAssignment: "Return statement should not contain assignment.",
arrowAssignment: "Arrow function should not return assignment."
}
},

create(context) {
Expand All @@ -61,12 +66,12 @@ module.exports = {
if (parent && parent.type === "ReturnStatement") {
context.report({
node: parent,
message: "Return statement should not contain assignment."
messageId: "returnAssignment"
});
} else if (parent && parent.type === "ArrowFunctionExpression" && parent.body === currentChild) {
context.report({
node: parent,
message: "Arrow function should not return assignment."
messageId: "arrowAssignment"
});
}
}
Expand Down
10 changes: 6 additions & 4 deletions lib/rules/no-return-await.js
Expand Up @@ -10,8 +10,6 @@ const astUtils = require("./utils/ast-utils");
// Rule Definition
//------------------------------------------------------------------------------

const message = "Redundant use of `await` on a return value.";

module.exports = {
meta: {
type: "suggestion",
Expand All @@ -28,7 +26,11 @@ module.exports = {
fixable: null,

schema: [
]
],

messages: {
redundantUseOfAwait: "Redundant use of `await` on a return value."
}
},

create(context) {
Expand All @@ -42,7 +44,7 @@ module.exports = {
context.report({
node: context.getSourceCode().getFirstToken(node),
loc: node.loc,
message
messageId: "redundantUseOfAwait"
});
}

Expand Down
8 changes: 6 additions & 2 deletions lib/rules/no-script-url.js
Expand Up @@ -22,7 +22,11 @@ module.exports = {
url: "https://eslint.org/docs/rules/no-script-url"
},

schema: []
schema: [],

messages: {
unexpectedScriptURL: "Script URL is a form of eval."
}
},

create(context) {
Expand All @@ -34,7 +38,7 @@ module.exports = {
const value = node.value.toLowerCase();

if (value.indexOf("javascript:") === 0) {
context.report({ node, message: "Script URL is a form of eval." });
context.report({ node, messageId: "unexpectedScriptURL" });
}
}
}
Expand Down

0 comments on commit 3734a66

Please sign in to comment.