diff options
author | cjihrig <cjihrig@gmail.com> | 2019-02-15 16:51:43 -0500 |
---|---|---|
committer | cjihrig <cjihrig@gmail.com> | 2019-02-17 21:56:18 -0500 |
commit | 77b39c2eb2c9fe437d0e09e3e7682564d815c7fb (patch) | |
tree | a10a28bd5022e46c7ba49103282f63a80bf08886 /tools/node_modules/eslint/lib/rules | |
parent | 2da7ff5e969538a19c27e6929d435094347f90a8 (diff) | |
download | android-node-v8-77b39c2eb2c9fe437d0e09e3e7682564d815c7fb.tar.gz android-node-v8-77b39c2eb2c9fe437d0e09e3e7682564d815c7fb.tar.bz2 android-node-v8-77b39c2eb2c9fe437d0e09e3e7682564d815c7fb.zip |
tools: update ESLint to 5.14.0
Update ESLint to 5.14.0
PR-URL: https://github.com/nodejs/node/pull/26142
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Wyatt Preul <wpreul@gmail.com>
Diffstat (limited to 'tools/node_modules/eslint/lib/rules')
98 files changed, 627 insertions, 404 deletions
diff --git a/tools/node_modules/eslint/lib/rules/accessor-pairs.js b/tools/node_modules/eslint/lib/rules/accessor-pairs.js index 032e894305..aca2318486 100644 --- a/tools/node_modules/eslint/lib/rules/accessor-pairs.js +++ b/tools/node_modules/eslint/lib/rules/accessor-pairs.js @@ -85,10 +85,12 @@ module.exports = { type: "object", properties: { getWithoutSet: { - type: "boolean" + type: "boolean", + default: false }, setWithoutGet: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js index a458e69f76..b98fa9d27c 100644 --- a/tools/node_modules/eslint/lib/rules/array-bracket-newline.js +++ b/tools/node_modules/eslint/lib/rules/array-bracket-newline.js @@ -34,11 +34,13 @@ module.exports = { type: "object", properties: { multiline: { - type: "boolean" + type: "boolean", + default: true }, minItems: { type: ["integer", "null"], - minimum: 0 + minimum: 0, + default: null } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/array-callback-return.js b/tools/node_modules/eslint/lib/rules/array-callback-return.js index bfee39b037..f88f4b8bfa 100644 --- a/tools/node_modules/eslint/lib/rules/array-callback-return.js +++ b/tools/node_modules/eslint/lib/rules/array-callback-return.js @@ -155,7 +155,8 @@ module.exports = { type: "object", properties: { allowImplicit: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/array-element-newline.js b/tools/node_modules/eslint/lib/rules/array-element-newline.js index dadb26fdd2..0efceedd27 100644 --- a/tools/node_modules/eslint/lib/rules/array-element-newline.js +++ b/tools/node_modules/eslint/lib/rules/array-element-newline.js @@ -34,11 +34,13 @@ module.exports = { type: "object", properties: { multiline: { - type: "boolean" + type: "boolean", + default: false }, minItems: { type: ["integer", "null"], - minimum: 0 + minimum: 0, + default: null } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/arrow-body-style.js b/tools/node_modules/eslint/lib/rules/arrow-body-style.js index c2ce3b59e4..83fc28aba0 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-body-style.js +++ b/tools/node_modules/eslint/lib/rules/arrow-body-style.js @@ -46,7 +46,7 @@ module.exports = { { type: "object", properties: { - requireReturnForObjectLiteral: { type: "boolean" } + requireReturnForObjectLiteral: { type: "boolean", default: false } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/arrow-parens.js b/tools/node_modules/eslint/lib/rules/arrow-parens.js index 637a0c1f1f..217a9b60e1 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-parens.js +++ b/tools/node_modules/eslint/lib/rules/arrow-parens.js @@ -35,7 +35,8 @@ module.exports = { type: "object", properties: { requireForBlockBody: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/arrow-spacing.js b/tools/node_modules/eslint/lib/rules/arrow-spacing.js index 87d381840a..95acb78772 100644 --- a/tools/node_modules/eslint/lib/rules/arrow-spacing.js +++ b/tools/node_modules/eslint/lib/rules/arrow-spacing.js @@ -32,10 +32,12 @@ module.exports = { type: "object", properties: { before: { - type: "boolean" + type: "boolean", + default: true }, after: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -54,11 +56,10 @@ module.exports = { create(context) { // merge rules with default - const rule = { before: true, after: true }, - option = context.options[0] || {}; + const rule = Object.assign({}, context.options[0]); - rule.before = option.before !== false; - rule.after = option.after !== false; + rule.before = rule.before !== false; + rule.after = rule.after !== false; const sourceCode = context.getSourceCode(); diff --git a/tools/node_modules/eslint/lib/rules/brace-style.js b/tools/node_modules/eslint/lib/rules/brace-style.js index d172124d2f..17a5c7fdf9 100644 --- a/tools/node_modules/eslint/lib/rules/brace-style.js +++ b/tools/node_modules/eslint/lib/rules/brace-style.js @@ -30,7 +30,8 @@ module.exports = { type: "object", properties: { allowSingleLine: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/camelcase.js b/tools/node_modules/eslint/lib/rules/camelcase.js index a8341c84b6..6dd3793f66 100644 --- a/tools/node_modules/eslint/lib/rules/camelcase.js +++ b/tools/node_modules/eslint/lib/rules/camelcase.js @@ -25,7 +25,8 @@ module.exports = { type: "object", properties: { ignoreDestructuring: { - type: "boolean" + type: "boolean", + default: false }, properties: { enum: ["always", "never"] @@ -54,7 +55,7 @@ module.exports = { const options = context.options[0] || {}; let properties = options.properties || ""; - const ignoreDestructuring = options.ignoreDestructuring || false; + const ignoreDestructuring = options.ignoreDestructuring; const allow = options.allow || []; if (properties !== "always" && properties !== "never") { diff --git a/tools/node_modules/eslint/lib/rules/capitalized-comments.js b/tools/node_modules/eslint/lib/rules/capitalized-comments.js index 7947833b27..285f856379 100644 --- a/tools/node_modules/eslint/lib/rules/capitalized-comments.js +++ b/tools/node_modules/eslint/lib/rules/capitalized-comments.js @@ -17,12 +17,7 @@ const astUtils = require("../util/ast-utils"); const DEFAULT_IGNORE_PATTERN = astUtils.COMMENTS_IGNORE_PATTERN, WHITESPACE = /\s/g, - MAYBE_URL = /^\s*[^:/?#\s]+:\/\/[^?#]/, // TODO: Combine w/ max-len pattern? - DEFAULTS = { - ignorePattern: null, - ignoreInlineComments: false, - ignoreConsecutiveComments: false - }; + MAYBE_URL = /^\s*[^:/?#\s]+:\/\/[^?#]/; // TODO: Combine w/ max-len pattern? /* * Base schema body for defining the basic capitalization rule, ignorePattern, @@ -33,17 +28,27 @@ const SCHEMA_BODY = { type: "object", properties: { ignorePattern: { - type: "string" + type: "string", + default: "" }, ignoreInlineComments: { - type: "boolean" + type: "boolean", + default: false }, ignoreConsecutiveComments: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false }; +const DEFAULTS = Object.keys(SCHEMA_BODY.properties).reduce( + (obj, current) => { + obj[current] = SCHEMA_BODY.properties[current].default; + return obj; + }, + {} +); /** * Get normalized options for either block or line comments from the given @@ -59,11 +64,7 @@ const SCHEMA_BODY = { * @param {string} which Either "line" or "block". * @returns {Object} The normalized options. */ -function getNormalizedOptions(rawOptions, which) { - if (!rawOptions) { - return Object.assign({}, DEFAULTS); - } - +function getNormalizedOptions(rawOptions = {}, which) { return Object.assign({}, DEFAULTS, rawOptions[which] || rawOptions); } diff --git a/tools/node_modules/eslint/lib/rules/class-methods-use-this.js b/tools/node_modules/eslint/lib/rules/class-methods-use-this.js index a15ab6b89e..0eb1da87f4 100644 --- a/tools/node_modules/eslint/lib/rules/class-methods-use-this.js +++ b/tools/node_modules/eslint/lib/rules/class-methods-use-this.js @@ -38,7 +38,7 @@ module.exports = { } }, create(context) { - const config = context.options[0] ? Object.assign({}, context.options[0]) : {}; + const config = Object.assign({}, context.options[0]); const exceptMethods = new Set(config.exceptMethods || []); const stack = []; diff --git a/tools/node_modules/eslint/lib/rules/comma-spacing.js b/tools/node_modules/eslint/lib/rules/comma-spacing.js index 2db0035b54..a9f89676a4 100644 --- a/tools/node_modules/eslint/lib/rules/comma-spacing.js +++ b/tools/node_modules/eslint/lib/rules/comma-spacing.js @@ -28,10 +28,12 @@ module.exports = { type: "object", properties: { before: { - type: "boolean" + type: "boolean", + default: false }, after: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -50,8 +52,8 @@ module.exports = { const tokensAndComments = sourceCode.tokensAndComments; const options = { - before: context.options[0] ? !!context.options[0].before : false, - after: context.options[0] ? !!context.options[0].after : true + before: context.options[0] ? context.options[0].before : false, + after: context.options[0] ? context.options[0].after : true }; //-------------------------------------------------------------------------- @@ -118,6 +120,10 @@ module.exports = { report(reportItem, "before", tokens.left); } + if (tokens.right && astUtils.isClosingParenToken(tokens.right)) { + return; + } + if (tokens.right && !options.after && tokens.right.type === "Line") { return; } diff --git a/tools/node_modules/eslint/lib/rules/complexity.js b/tools/node_modules/eslint/lib/rules/complexity.js index af583c0279..9f791e6de7 100644 --- a/tools/node_modules/eslint/lib/rules/complexity.js +++ b/tools/node_modules/eslint/lib/rules/complexity.js @@ -41,11 +41,13 @@ module.exports = { properties: { maximum: { type: "integer", - minimum: 0 + minimum: 0, + default: 20 }, max: { type: "integer", - minimum: 0 + minimum: 0, + default: 20 } }, additionalProperties: false @@ -63,13 +65,9 @@ module.exports = { const option = context.options[0]; let THRESHOLD = 20; - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") { - THRESHOLD = option.maximum; - } - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") { - THRESHOLD = option.max; - } - if (typeof option === "number") { + if (typeof option === "object") { + THRESHOLD = option.maximum || option.max; + } else if (typeof option === "number") { THRESHOLD = option; } diff --git a/tools/node_modules/eslint/lib/rules/consistent-return.js b/tools/node_modules/eslint/lib/rules/consistent-return.js index ffd7ef2058..68f9f9d8fb 100644 --- a/tools/node_modules/eslint/lib/rules/consistent-return.js +++ b/tools/node_modules/eslint/lib/rules/consistent-return.js @@ -66,7 +66,8 @@ module.exports = { type: "object", properties: { treatUndefinedAsUnspecified: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/dot-notation.js b/tools/node_modules/eslint/lib/rules/dot-notation.js index 55ccea4ce3..a1b091da0e 100644 --- a/tools/node_modules/eslint/lib/rules/dot-notation.js +++ b/tools/node_modules/eslint/lib/rules/dot-notation.js @@ -33,10 +33,12 @@ module.exports = { type: "object", properties: { allowKeywords: { - type: "boolean" + type: "boolean", + default: true }, allowPattern: { - type: "string" + type: "string", + default: "" } }, additionalProperties: false @@ -53,7 +55,7 @@ module.exports = { create(context) { const options = context.options[0] || {}; - const allowKeywords = options.allowKeywords === void 0 || !!options.allowKeywords; + const allowKeywords = options.allowKeywords === void 0 || options.allowKeywords; const sourceCode = context.getSourceCode(); let allowPattern; diff --git a/tools/node_modules/eslint/lib/rules/eqeqeq.js b/tools/node_modules/eslint/lib/rules/eqeqeq.js index 3e8a392cf6..a52de67d75 100644 --- a/tools/node_modules/eslint/lib/rules/eqeqeq.js +++ b/tools/node_modules/eslint/lib/rules/eqeqeq.js @@ -38,7 +38,8 @@ module.exports = { type: "object", properties: { null: { - enum: ["always", "never", "ignore"] + enum: ["always", "never", "ignore"], + default: "always" } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/func-call-spacing.js b/tools/node_modules/eslint/lib/rules/func-call-spacing.js index c49aa9e59f..62bba144e6 100644 --- a/tools/node_modules/eslint/lib/rules/func-call-spacing.js +++ b/tools/node_modules/eslint/lib/rules/func-call-spacing.js @@ -50,7 +50,8 @@ module.exports = { type: "object", properties: { allowNewlines: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/func-style.js b/tools/node_modules/eslint/lib/rules/func-style.js index b7e368cbd2..e150b1a76f 100644 --- a/tools/node_modules/eslint/lib/rules/func-style.js +++ b/tools/node_modules/eslint/lib/rules/func-style.js @@ -27,7 +27,8 @@ module.exports = { type: "object", properties: { allowArrowFunctions: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -43,7 +44,7 @@ module.exports = { create(context) { const style = context.options[0], - allowArrowFunctions = context.options[1] && context.options[1].allowArrowFunctions === true, + allowArrowFunctions = context.options[1] && context.options[1].allowArrowFunctions, enforceDeclarations = (style === "declaration"), stack = []; diff --git a/tools/node_modules/eslint/lib/rules/getter-return.js b/tools/node_modules/eslint/lib/rules/getter-return.js index dc3d9d6b62..a1806c357b 100644 --- a/tools/node_modules/eslint/lib/rules/getter-return.js +++ b/tools/node_modules/eslint/lib/rules/getter-return.js @@ -60,7 +60,8 @@ module.exports = { type: "object", properties: { allowImplicit: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/id-length.js b/tools/node_modules/eslint/lib/rules/id-length.js index 1f9c696e2a..c8586ea348 100644 --- a/tools/node_modules/eslint/lib/rules/id-length.js +++ b/tools/node_modules/eslint/lib/rules/id-length.js @@ -26,10 +26,11 @@ module.exports = { type: "object", properties: { min: { - type: "number" + type: "integer", + default: 2 }, max: { - type: "number" + type: "integer" }, exceptions: { type: "array", diff --git a/tools/node_modules/eslint/lib/rules/id-match.js b/tools/node_modules/eslint/lib/rules/id-match.js index 5dc86f8dbf..3978a5ef68 100644 --- a/tools/node_modules/eslint/lib/rules/id-match.js +++ b/tools/node_modules/eslint/lib/rules/id-match.js @@ -28,13 +28,16 @@ module.exports = { type: "object", properties: { properties: { - type: "boolean" + type: "boolean", + default: false }, onlyDeclarations: { - type: "boolean" + type: "boolean", + default: false }, ignoreDestructuring: { - type: "boolean" + type: "boolean", + default: false } } } diff --git a/tools/node_modules/eslint/lib/rules/indent.js b/tools/node_modules/eslint/lib/rules/indent.js index c30d1f1e7b..08b9250f05 100644 --- a/tools/node_modules/eslint/lib/rules/indent.js +++ b/tools/node_modules/eslint/lib/rules/indent.js @@ -518,7 +518,8 @@ module.exports = { properties: { SwitchCase: { type: "integer", - minimum: 0 + minimum: 0, + default: 0 }, VariableDeclarator: { oneOf: [ @@ -582,7 +583,8 @@ module.exports = { ObjectExpression: ELEMENT_LIST_SCHEMA, ImportDeclaration: ELEMENT_LIST_SCHEMA, flatTernaryExpressions: { - type: "boolean" + type: "boolean", + default: false }, ignoredNodes: { type: "array", @@ -594,7 +596,8 @@ module.exports = { } }, ignoreComments: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -650,7 +653,7 @@ module.exports = { } if (context.options[1]) { - lodash.merge(options, context.options[1]); + Object.assign(options, context.options[1]); if (typeof options.VariableDeclarator === "number" || options.VariableDeclarator === "first") { options.VariableDeclarator = { diff --git a/tools/node_modules/eslint/lib/rules/init-declarations.js b/tools/node_modules/eslint/lib/rules/init-declarations.js index 65197358e6..484cbef0a5 100644 --- a/tools/node_modules/eslint/lib/rules/init-declarations.js +++ b/tools/node_modules/eslint/lib/rules/init-declarations.js @@ -75,7 +75,8 @@ module.exports = { type: "object", properties: { ignoreForLoopInit: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/key-spacing.js b/tools/node_modules/eslint/lib/rules/key-spacing.js index c52a74d499..31ba9522e9 100644 --- a/tools/node_modules/eslint/lib/rules/key-spacing.js +++ b/tools/node_modules/eslint/lib/rules/key-spacing.js @@ -148,16 +148,20 @@ module.exports = { type: "object", properties: { mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, on: { - enum: ["colon", "value"] + enum: ["colon", "value"], + default: "colon" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -165,13 +169,16 @@ module.exports = { ] }, mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -183,13 +190,16 @@ module.exports = { type: "object", properties: { mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -206,16 +216,20 @@ module.exports = { type: "object", properties: { mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, on: { - enum: ["colon", "value"] + enum: ["colon", "value"], + default: "colon" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -223,13 +237,16 @@ module.exports = { ] }, mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -244,13 +261,16 @@ module.exports = { type: "object", properties: { mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -259,13 +279,16 @@ module.exports = { type: "object", properties: { mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -274,16 +297,20 @@ module.exports = { type: "object", properties: { mode: { - enum: ["strict", "minimum"] + enum: ["strict", "minimum"], + default: "strict" }, on: { - enum: ["colon", "value"] + enum: ["colon", "value"], + default: "colon" }, beforeColon: { - type: "boolean" + type: "boolean", + default: false }, afterColon: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/keyword-spacing.js b/tools/node_modules/eslint/lib/rules/keyword-spacing.js index 833092e416..83ad628268 100644 --- a/tools/node_modules/eslint/lib/rules/keyword-spacing.js +++ b/tools/node_modules/eslint/lib/rules/keyword-spacing.js @@ -80,16 +80,16 @@ module.exports = { { type: "object", properties: { - before: { type: "boolean" }, - after: { type: "boolean" }, + before: { type: "boolean", default: true }, + after: { type: "boolean", default: true }, overrides: { type: "object", properties: KEYS.reduce((retv, key) => { retv[key] = { type: "object", properties: { - before: { type: "boolean" }, - after: { type: "boolean" } + before: { type: "boolean", default: true }, + after: { type: "boolean", default: true } }, additionalProperties: false }; @@ -228,9 +228,9 @@ module.exports = { * Keys are keywords (there are for every keyword). * Values are instances of `{"before": function, "after": function}`. */ - function parseOptions(options) { - const before = !options || options.before !== false; - const after = !options || options.after !== false; + function parseOptions(options = {}) { + const before = options.before !== false; + const after = options.after !== false; const defaultValue = { before: before ? expectSpaceBefore : unexpectSpaceBefore, after: after ? expectSpaceAfter : unexpectSpaceAfter diff --git a/tools/node_modules/eslint/lib/rules/line-comment-position.js b/tools/node_modules/eslint/lib/rules/line-comment-position.js index 6d0ac6d2ba..132a8ad875 100644 --- a/tools/node_modules/eslint/lib/rules/line-comment-position.js +++ b/tools/node_modules/eslint/lib/rules/line-comment-position.js @@ -31,16 +31,19 @@ module.exports = { type: "object", properties: { position: { - enum: ["above", "beside"] + enum: ["above", "beside"], + default: "above" }, ignorePattern: { type: "string" }, applyDefaultPatterns: { - type: "boolean" + type: "boolean", + default: true }, applyDefaultIgnorePatterns: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -69,9 +72,9 @@ module.exports = { ignorePattern = options.ignorePattern; if (Object.prototype.hasOwnProperty.call(options, "applyDefaultIgnorePatterns")) { - applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns !== false; + applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns; } else { - applyDefaultIgnorePatterns = options.applyDefaultPatterns !== false; + applyDefaultIgnorePatterns = options.applyDefaultPatterns; } } diff --git a/tools/node_modules/eslint/lib/rules/lines-around-comment.js b/tools/node_modules/eslint/lib/rules/lines-around-comment.js index 62bef94831..0f9851f724 100644 --- a/tools/node_modules/eslint/lib/rules/lines-around-comment.js +++ b/tools/node_modules/eslint/lib/rules/lines-around-comment.js @@ -68,22 +68,28 @@ module.exports = { type: "object", properties: { beforeBlockComment: { - type: "boolean" + type: "boolean", + default: true }, afterBlockComment: { - type: "boolean" + type: "boolean", + default: false }, beforeLineComment: { - type: "boolean" + type: "boolean", + default: false }, afterLineComment: { - type: "boolean" + type: "boolean", + default: false }, allowBlockStart: { - type: "boolean" + type: "boolean", + default: false }, allowBlockEnd: { - type: "boolean" + type: "boolean", + default: false }, allowClassStart: { type: "boolean" @@ -121,19 +127,13 @@ module.exports = { create(context) { - const options = context.options[0] ? Object.assign({}, context.options[0]) : {}; + const options = Object.assign({}, context.options[0]); const ignorePattern = options.ignorePattern; const defaultIgnoreRegExp = astUtils.COMMENTS_IGNORE_PATTERN; const customIgnoreRegExp = new RegExp(ignorePattern); const applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns !== false; - - options.beforeLineComment = options.beforeLineComment || false; - options.afterLineComment = options.afterLineComment || false; options.beforeBlockComment = typeof options.beforeBlockComment !== "undefined" ? options.beforeBlockComment : true; - options.afterBlockComment = options.afterBlockComment || false; - options.allowBlockStart = options.allowBlockStart || false; - options.allowBlockEnd = options.allowBlockEnd || false; const sourceCode = context.getSourceCode(); diff --git a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js index 2937d24f81..19ae8a6a29 100644 --- a/tools/node_modules/eslint/lib/rules/lines-between-class-members.js +++ b/tools/node_modules/eslint/lib/rules/lines-between-class-members.js @@ -31,7 +31,8 @@ module.exports = { type: "object", properties: { exceptAfterSingleLine: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/max-depth.js b/tools/node_modules/eslint/lib/rules/max-depth.js index 500e931881..3b997e21bc 100644 --- a/tools/node_modules/eslint/lib/rules/max-depth.js +++ b/tools/node_modules/eslint/lib/rules/max-depth.js @@ -32,11 +32,13 @@ module.exports = { properties: { maximum: { type: "integer", - minimum: 0 + minimum: 0, + default: 4 }, max: { type: "integer", - minimum: 0 + minimum: 0, + default: 4 } }, additionalProperties: false @@ -59,11 +61,8 @@ module.exports = { option = context.options[0]; let maxDepth = 4; - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") { - maxDepth = option.maximum; - } - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") { - maxDepth = option.max; + if (typeof option === "object") { + maxDepth = option.maximum || option.max; } if (typeof option === "number") { maxDepth = option; diff --git a/tools/node_modules/eslint/lib/rules/max-len.js b/tools/node_modules/eslint/lib/rules/max-len.js index d74373e9ea..f6f0b6d3ac 100644 --- a/tools/node_modules/eslint/lib/rules/max-len.js +++ b/tools/node_modules/eslint/lib/rules/max-len.js @@ -14,7 +14,8 @@ const OPTIONS_SCHEMA = { properties: { code: { type: "integer", - minimum: 0 + minimum: 0, + default: 80 }, comments: { type: "integer", @@ -22,28 +23,35 @@ const OPTIONS_SCHEMA = { }, tabWidth: { type: "integer", - minimum: 0 + minimum: 0, + default: 4 }, ignorePattern: { type: "string" }, ignoreComments: { - type: "boolean" + type: "boolean", + default: false }, ignoreStrings: { - type: "boolean" + type: "boolean", + default: false }, ignoreUrls: { - type: "boolean" + type: "boolean", + default: false }, ignoreTemplateLiterals: { - type: "boolean" + type: "boolean", + default: false }, ignoreRegExpLiterals: { - type: "boolean" + type: "boolean", + default: false }, ignoreTrailingComments: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -121,8 +129,7 @@ module.exports = { } // The options object must be the last option specified… - const lastOption = context.options[context.options.length - 1]; - const options = typeof lastOption === "object" ? Object.create(lastOption) : {}; + const options = Object.assign({}, context.options[context.options.length - 1]); // …but max code length… if (typeof context.options[0] === "number") { diff --git a/tools/node_modules/eslint/lib/rules/max-lines-per-function.js b/tools/node_modules/eslint/lib/rules/max-lines-per-function.js index d1e4597a22..2a0e1a645a 100644 --- a/tools/node_modules/eslint/lib/rules/max-lines-per-function.js +++ b/tools/node_modules/eslint/lib/rules/max-lines-per-function.js @@ -19,16 +19,20 @@ const OPTIONS_SCHEMA = { properties: { max: { type: "integer", - minimum: 0 + minimum: 0, + default: 50 }, skipComments: { - type: "boolean" + type: "boolean", + default: false }, skipBlankLines: { - type: "boolean" + type: "boolean", + default: false }, IIFEs: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -97,18 +101,10 @@ module.exports = { let IIFEs = false; if (typeof option === "object") { - if (typeof option.max === "number") { - maxLines = option.max; - } - if (typeof option.skipComments === "boolean") { - skipComments = option.skipComments; - } - if (typeof option.skipBlankLines === "boolean") { - skipBlankLines = option.skipBlankLines; - } - if (typeof option.IIFEs === "boolean") { - IIFEs = option.IIFEs; - } + maxLines = option.max; + skipComments = option.skipComments; + skipBlankLines = option.skipBlankLines; + IIFEs = option.IIFEs; } else if (typeof option === "number") { maxLines = option; } diff --git a/tools/node_modules/eslint/lib/rules/max-lines.js b/tools/node_modules/eslint/lib/rules/max-lines.js index da7ddd8a88..0fae4ec2fa 100644 --- a/tools/node_modules/eslint/lib/rules/max-lines.js +++ b/tools/node_modules/eslint/lib/rules/max-lines.js @@ -38,13 +38,16 @@ module.exports = { properties: { max: { type: "integer", - minimum: 0 + minimum: 0, + default: 300 }, skipComments: { - type: "boolean" + type: "boolean", + default: false }, skipBlankLines: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -61,11 +64,9 @@ module.exports = { const option = context.options[0]; let max = 300; - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") { + if (typeof option === "object") { max = option.max; - } - - if (typeof option === "number") { + } else if (typeof option === "number") { max = option; } @@ -86,7 +87,7 @@ module.exports = { /** * Returns the line numbers of a comment that don't have any code on the same line * @param {Node} comment The comment node to check - * @returns {int[]} The line numbers + * @returns {number[]} The line numbers */ function getLinesWithoutCode(comment) { let start = comment.loc.start.line; diff --git a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js index 754fa168d3..cbbb0ed6c7 100644 --- a/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js +++ b/tools/node_modules/eslint/lib/rules/max-nested-callbacks.js @@ -32,11 +32,13 @@ module.exports = { properties: { maximum: { type: "integer", - minimum: 0 + minimum: 0, + default: 10 }, max: { type: "integer", - minimum: 0 + minimum: 0, + default: 10 } }, additionalProperties: false @@ -57,13 +59,9 @@ module.exports = { const option = context.options[0]; let THRESHOLD = 10; - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") { - THRESHOLD = option.maximum; - } - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") { - THRESHOLD = option.max; - } - if (typeof option === "number") { + if (typeof option === "object") { + THRESHOLD = option.maximum || option.max; + } else if (typeof option === "number") { THRESHOLD = option; } diff --git a/tools/node_modules/eslint/lib/rules/max-params.js b/tools/node_modules/eslint/lib/rules/max-params.js index e082ec8e98..5e1e558ab5 100644 --- a/tools/node_modules/eslint/lib/rules/max-params.js +++ b/tools/node_modules/eslint/lib/rules/max-params.js @@ -40,11 +40,13 @@ module.exports = { properties: { maximum: { type: "integer", - minimum: 0 + minimum: 0, + default: 3 }, max: { type: "integer", - minimum: 0 + minimum: 0, + default: 3 } }, additionalProperties: false @@ -62,11 +64,8 @@ module.exports = { const option = context.options[0]; let numParams = 3; - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") { - numParams = option.maximum; - } - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") { - numParams = option.max; + if (typeof option === "object") { + numParams = option.maximum || option.max; } if (typeof option === "number") { numParams = option; diff --git a/tools/node_modules/eslint/lib/rules/max-statements-per-line.js b/tools/node_modules/eslint/lib/rules/max-statements-per-line.js index b834cedc03..444bdfa21a 100644 --- a/tools/node_modules/eslint/lib/rules/max-statements-per-line.js +++ b/tools/node_modules/eslint/lib/rules/max-statements-per-line.js @@ -31,7 +31,8 @@ module.exports = { properties: { max: { type: "integer", - minimum: 1 + minimum: 1, + default: 1 } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/max-statements.js b/tools/node_modules/eslint/lib/rules/max-statements.js index b33ca42982..cd0e50ae39 100644 --- a/tools/node_modules/eslint/lib/rules/max-statements.js +++ b/tools/node_modules/eslint/lib/rules/max-statements.js @@ -40,11 +40,13 @@ module.exports = { properties: { maximum: { type: "integer", - minimum: 0 + minimum: 0, + default: 10 }, max: { type: "integer", - minimum: 0 + minimum: 0, + default: 10 } }, additionalProperties: false @@ -78,13 +80,9 @@ module.exports = { topLevelFunctions = []; let maxStatements = 10; - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "maximum") && typeof option.maximum === "number") { - maxStatements = option.maximum; - } - if (typeof option === "object" && Object.prototype.hasOwnProperty.call(option, "max") && typeof option.max === "number") { - maxStatements = option.max; - } - if (typeof option === "number") { + if (typeof option === "object") { + maxStatements = option.maximum || option.max; + } else if (typeof option === "number") { maxStatements = option; } diff --git a/tools/node_modules/eslint/lib/rules/new-cap.js b/tools/node_modules/eslint/lib/rules/new-cap.js index 4a01dcfa7f..ab70fcfadd 100644 --- a/tools/node_modules/eslint/lib/rules/new-cap.js +++ b/tools/node_modules/eslint/lib/rules/new-cap.js @@ -88,10 +88,12 @@ module.exports = { type: "object", properties: { newIsCap: { - type: "boolean" + type: "boolean", + default: true }, capIsNew: { - type: "boolean" + type: "boolean", + default: true }, newIsCapExceptions: { type: "array", @@ -112,7 +114,8 @@ module.exports = { type: "string" }, properties: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -126,7 +129,7 @@ module.exports = { create(context) { - const config = context.options[0] ? Object.assign({}, context.options[0]) : {}; + const config = Object.assign({}, context.options[0]); config.newIsCap = config.newIsCap !== false; config.capIsNew = config.capIsNew !== false; diff --git a/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js b/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js index 0bf2365de5..90b540c484 100644 --- a/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js +++ b/tools/node_modules/eslint/lib/rules/newline-per-chained-call.js @@ -31,7 +31,8 @@ module.exports = { ignoreChainWithDepth: { type: "integer", minimum: 1, - maximum: 10 + maximum: 10, + default: 2 } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-bitwise.js b/tools/node_modules/eslint/lib/rules/no-bitwise.js index df492937c0..a9c3360a7c 100644 --- a/tools/node_modules/eslint/lib/rules/no-bitwise.js +++ b/tools/node_modules/eslint/lib/rules/no-bitwise.js @@ -43,7 +43,8 @@ module.exports = { uniqueItems: true }, int32Hint: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js index f18ec19453..79df9a5138 100644 --- a/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js +++ b/tools/node_modules/eslint/lib/rules/no-confusing-arrow.js @@ -41,7 +41,7 @@ module.exports = { schema: [{ type: "object", properties: { - allowParens: { type: "boolean" } + allowParens: { type: "boolean", default: false } }, additionalProperties: false }], diff --git a/tools/node_modules/eslint/lib/rules/no-constant-condition.js b/tools/node_modules/eslint/lib/rules/no-constant-condition.js index fb36207ebb..d6d0417429 100644 --- a/tools/node_modules/eslint/lib/rules/no-constant-condition.js +++ b/tools/node_modules/eslint/lib/rules/no-constant-condition.js @@ -32,7 +32,8 @@ module.exports = { type: "object", properties: { checkLoops: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js index 7d35b41b4d..03b5e2c123 100644 --- a/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js +++ b/tools/node_modules/eslint/lib/rules/no-duplicate-imports.js @@ -113,7 +113,8 @@ module.exports = { type: "object", properties: { includeExports: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-else-return.js b/tools/node_modules/eslint/lib/rules/no-else-return.js index 5ba02de291..5c21fb1b3f 100644 --- a/tools/node_modules/eslint/lib/rules/no-else-return.js +++ b/tools/node_modules/eslint/lib/rules/no-else-return.js @@ -31,7 +31,8 @@ module.exports = { type: "object", properties: { allowElseIf: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-empty.js b/tools/node_modules/eslint/lib/rules/no-empty.js index 9d72969e67..2d55dee665 100644 --- a/tools/node_modules/eslint/lib/rules/no-empty.js +++ b/tools/node_modules/eslint/lib/rules/no-empty.js @@ -30,7 +30,8 @@ module.exports = { type: "object", properties: { allowEmptyCatch: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-eval.js b/tools/node_modules/eslint/lib/rules/no-eval.js index 39d91e776e..d4b79468f1 100644 --- a/tools/node_modules/eslint/lib/rules/no-eval.js +++ b/tools/node_modules/eslint/lib/rules/no-eval.js @@ -89,7 +89,7 @@ module.exports = { { type: "object", properties: { - allowIndirect: { type: "boolean" } + allowIndirect: { type: "boolean", default: false } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/no-extra-parens.js b/tools/node_modules/eslint/lib/rules/no-extra-parens.js index 3a21b69580..9f16e0e6cc 100644 --- a/tools/node_modules/eslint/lib/rules/no-extra-parens.js +++ b/tools/node_modules/eslint/lib/rules/no-extra-parens.js @@ -44,11 +44,11 @@ module.exports = { { type: "object", properties: { - conditionalAssign: { type: "boolean" }, - nestedBinaryExpressions: { type: "boolean" }, - returnAssign: { type: "boolean" }, + conditionalAssign: { type: "boolean", default: true }, + nestedBinaryExpressions: { type: "boolean", default: true }, + returnAssign: { type: "boolean", default: true }, ignoreJSX: { enum: ["none", "all", "single-line", "multi-line"] }, - enforceForArrowConditionals: { type: "boolean" } + enforceForArrowConditionals: { type: "boolean", default: true } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/no-fallthrough.js b/tools/node_modules/eslint/lib/rules/no-fallthrough.js index 79cbe81c0b..dfd9d85415 100644 --- a/tools/node_modules/eslint/lib/rules/no-fallthrough.js +++ b/tools/node_modules/eslint/lib/rules/no-fallthrough.js @@ -69,7 +69,8 @@ module.exports = { type: "object", properties: { commentPattern: { - type: "string" + type: "string", + default: "" } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js index 826d9398ca..d54c578646 100644 --- a/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js +++ b/tools/node_modules/eslint/lib/rules/no-implicit-coercion.js @@ -21,9 +21,9 @@ const ALLOWABLE_OPERATORS = ["~", "!!", "+", "*"]; */ function parseOptions(options) { return { - boolean: "boolean" in options ? Boolean(options.boolean) : true, - number: "number" in options ? Boolean(options.number) : true, - string: "string" in options ? Boolean(options.string) : true, + boolean: "boolean" in options ? options.boolean : true, + number: "number" in options ? options.number : true, + string: "string" in options ? options.string : true, allow: options.allow || [] }; } @@ -167,13 +167,16 @@ module.exports = { type: "object", properties: { boolean: { - type: "boolean" + type: "boolean", + default: true }, number: { - type: "boolean" + type: "boolean", + default: true }, string: { - type: "boolean" + type: "boolean", + default: true }, allow: { type: "array", diff --git a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js index 90d1a79a1c..ddbfd1c91c 100644 --- a/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js +++ b/tools/node_modules/eslint/lib/rules/no-irregular-whitespace.js @@ -41,16 +41,20 @@ module.exports = { type: "object", properties: { skipComments: { - type: "boolean" + type: "boolean", + default: false }, skipStrings: { - type: "boolean" + type: "boolean", + default: true }, skipTemplates: { - type: "boolean" + type: "boolean", + default: false }, skipRegExps: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-labels.js b/tools/node_modules/eslint/lib/rules/no-labels.js index 34db20725b..29580bd236 100644 --- a/tools/node_modules/eslint/lib/rules/no-labels.js +++ b/tools/node_modules/eslint/lib/rules/no-labels.js @@ -30,10 +30,12 @@ module.exports = { type: "object", properties: { allowLoop: { - type: "boolean" + type: "boolean", + default: false }, allowSwitch: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -43,8 +45,8 @@ module.exports = { create(context) { const options = context.options[0]; - const allowLoop = Boolean(options && options.allowLoop); - const allowSwitch = Boolean(options && options.allowSwitch); + const allowLoop = options && options.allowLoop; + const allowSwitch = options && options.allowSwitch; let scopeInfo = null; /** diff --git a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js index 84c08dfb08..2c6ea61e28 100644 --- a/tools/node_modules/eslint/lib/rules/no-magic-numbers.js +++ b/tools/node_modules/eslint/lib/rules/no-magic-numbers.js @@ -24,10 +24,12 @@ module.exports = { type: "object", properties: { detectObjects: { - type: "boolean" + type: "boolean", + default: false }, enforceConst: { - type: "boolean" + type: "boolean", + default: false }, ignore: { type: "array", @@ -37,7 +39,8 @@ module.exports = { uniqueItems: true }, ignoreArrayIndexes: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js index 22ed65f5b1..2b603a86df 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-operators.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-operators.js @@ -42,10 +42,10 @@ const TARGET_NODE_TYPE = /^(?:Binary|Logical)Expression$/; * @param {Object|undefined} options - A options object to normalize. * @returns {Object} Normalized option object. */ -function normalizeOptions(options) { - const hasGroups = (options && options.groups && options.groups.length > 0); +function normalizeOptions(options = {}) { + const hasGroups = options.groups && options.groups.length > 0; const groups = hasGroups ? options.groups : DEFAULT_GROUPS; - const allowSamePrecedence = (options && options.allowSamePrecedence) !== false; + const allowSamePrecedence = options.allowSamePrecedence !== false; return { groups, @@ -95,7 +95,8 @@ module.exports = { uniqueItems: true }, allowSamePrecedence: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js index 438ac668a8..5b07a5f293 100644 --- a/tools/node_modules/eslint/lib/rules/no-mixed-requires.js +++ b/tools/node_modules/eslint/lib/rules/no-mixed-requires.js @@ -30,10 +30,12 @@ module.exports = { type: "object", properties: { grouping: { - type: "boolean" + type: "boolean", + default: false }, allowCall: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js index f1792c31ed..c5fb074034 100644 --- a/tools/node_modules/eslint/lib/rules/no-multi-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-multi-spaces.js @@ -38,7 +38,8 @@ module.exports = { additionalProperties: false }, ignoreEOLComments: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-param-reassign.js b/tools/node_modules/eslint/lib/rules/no-param-reassign.js index 349345c148..83760edb8c 100644 --- a/tools/node_modules/eslint/lib/rules/no-param-reassign.js +++ b/tools/node_modules/eslint/lib/rules/no-param-reassign.js @@ -55,7 +55,7 @@ module.exports = { }, create(context) { - const props = context.options[0] && Boolean(context.options[0].props); + const props = context.options[0] && context.options[0].props; const ignoredPropertyAssignmentsFor = context.options[0] && context.options[0].ignorePropertyModificationsFor || []; /** diff --git a/tools/node_modules/eslint/lib/rules/no-plusplus.js b/tools/node_modules/eslint/lib/rules/no-plusplus.js index 4c854de1a0..1d122dcd31 100644 --- a/tools/node_modules/eslint/lib/rules/no-plusplus.js +++ b/tools/node_modules/eslint/lib/rules/no-plusplus.js @@ -26,7 +26,8 @@ module.exports = { type: "object", properties: { allowForLoopAfterthoughts: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-redeclare.js b/tools/node_modules/eslint/lib/rules/no-redeclare.js index e88436d7c5..4d689cc613 100644 --- a/tools/node_modules/eslint/lib/rules/no-redeclare.js +++ b/tools/node_modules/eslint/lib/rules/no-redeclare.js @@ -24,7 +24,7 @@ module.exports = { { type: "object", properties: { - builtinGlobals: { type: "boolean" } + builtinGlobals: { type: "boolean", default: false } }, additionalProperties: false } @@ -33,7 +33,7 @@ module.exports = { create(context) { const options = { - builtinGlobals: Boolean(context.options[0] && context.options[0].builtinGlobals) + builtinGlobals: context.options[0] && context.options[0].builtinGlobals }; /** diff --git a/tools/node_modules/eslint/lib/rules/no-self-assign.js b/tools/node_modules/eslint/lib/rules/no-self-assign.js index d493855efe..8bc7afbe38 100644 --- a/tools/node_modules/eslint/lib/rules/no-self-assign.js +++ b/tools/node_modules/eslint/lib/rules/no-self-assign.js @@ -179,7 +179,8 @@ module.exports = { type: "object", properties: { props: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js index 9bdd508680..f09f3767da 100644 --- a/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js +++ b/tools/node_modules/eslint/lib/rules/no-shadow-restricted-names.js @@ -4,6 +4,19 @@ */ "use strict"; +/** + * Determines if a variable safely shadows undefined. + * This is the case when a variable named `undefined` is never assigned to a value (i.e. it always shares the same value + * as the global). + * @param {eslintScope.Variable} variable The variable to check + * @returns {boolean} true if this variable safely shadows `undefined` + */ +function safelyShadowsUndefined(variable) { + return variable.name === "undefined" && + variable.references.every(ref => !ref.isWrite()) && + variable.defs.every(def => def.node.type === "VariableDeclarator" && def.node.init === null); +} + //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -24,12 +37,13 @@ module.exports = { create(context) { - const RESTRICTED = ["undefined", "NaN", "Infinity", "arguments", "eval"]; + + const RESTRICTED = new Set(["undefined", "NaN", "Infinity", "arguments", "eval"]); return { "VariableDeclaration, :function, CatchClause"(node) { for (const variable of context.getDeclaredVariables(node)) { - if (variable.defs.length > 0 && RESTRICTED.includes(variable.name)) { + if (variable.defs.length > 0 && RESTRICTED.has(variable.name) && !safelyShadowsUndefined(variable)) { context.report({ node: variable.defs[0].name, message: "Shadowing of global property '{{idName}}'.", diff --git a/tools/node_modules/eslint/lib/rules/no-shadow.js b/tools/node_modules/eslint/lib/rules/no-shadow.js index f910230d6a..5f617e52a7 100644 --- a/tools/node_modules/eslint/lib/rules/no-shadow.js +++ b/tools/node_modules/eslint/lib/rules/no-shadow.js @@ -30,8 +30,8 @@ module.exports = { { type: "object", properties: { - builtinGlobals: { type: "boolean" }, - hoist: { enum: ["all", "functions", "never"] }, + builtinGlobals: { type: "boolean", default: false }, + hoist: { enum: ["all", "functions", "never"], default: "functions" }, allow: { type: "array", items: { @@ -47,7 +47,7 @@ module.exports = { create(context) { const options = { - builtinGlobals: Boolean(context.options[0] && context.options[0].builtinGlobals), + builtinGlobals: context.options[0] && context.options[0].builtinGlobals, hoist: (context.options[0] && context.options[0].hoist) || "functions", allow: (context.options[0] && context.options[0].allow) || [] }; diff --git a/tools/node_modules/eslint/lib/rules/no-sync.js b/tools/node_modules/eslint/lib/rules/no-sync.js index a0096e3d04..578bac96d3 100644 --- a/tools/node_modules/eslint/lib/rules/no-sync.js +++ b/tools/node_modules/eslint/lib/rules/no-sync.js @@ -27,7 +27,8 @@ module.exports = { type: "object", properties: { allowAtRootLevel: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-tabs.js b/tools/node_modules/eslint/lib/rules/no-tabs.js index 0002f55929..91fb000796 100644 --- a/tools/node_modules/eslint/lib/rules/no-tabs.js +++ b/tools/node_modules/eslint/lib/rules/no-tabs.js @@ -30,7 +30,8 @@ module.exports = { type: "object", properties: { allowIndentationTabs: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js index 18f0340ef0..1f0b53aca2 100644 --- a/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js +++ b/tools/node_modules/eslint/lib/rules/no-trailing-spaces.js @@ -32,10 +32,12 @@ module.exports = { type: "object", properties: { skipBlankLines: { - type: "boolean" + type: "boolean", + default: false }, ignoreComments: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -52,7 +54,7 @@ module.exports = { const options = context.options[0] || {}, skipBlankLines = options.skipBlankLines || false, - ignoreComments = typeof options.ignoreComments === "boolean" && options.ignoreComments; + ignoreComments = options.ignoreComments || false; /** * Report the error message diff --git a/tools/node_modules/eslint/lib/rules/no-undef.js b/tools/node_modules/eslint/lib/rules/no-undef.js index e6cd152761..6b5140819b 100644 --- a/tools/node_modules/eslint/lib/rules/no-undef.js +++ b/tools/node_modules/eslint/lib/rules/no-undef.js @@ -39,7 +39,8 @@ module.exports = { type: "object", properties: { typeof: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js index 926803b992..3f59815b57 100644 --- a/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js +++ b/tools/node_modules/eslint/lib/rules/no-underscore-dangle.js @@ -31,13 +31,16 @@ module.exports = { } }, allowAfterThis: { - type: "boolean" + type: "boolean", + default: false }, allowAfterSuper: { - type: "boolean" + type: "boolean", + default: false }, enforceInMethodNames: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js index 3a7dd5fad7..e75a36430f 100644 --- a/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js +++ b/tools/node_modules/eslint/lib/rules/no-unneeded-ternary.js @@ -38,7 +38,8 @@ module.exports = { type: "object", properties: { defaultAssignment: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js index 854298b411..25c21775b0 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-expressions.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-expressions.js @@ -24,13 +24,16 @@ module.exports = { type: "object", properties: { allowShortCircuit: { - type: "boolean" + type: "boolean", + default: false }, allowTernary: { - type: "boolean" + type: "boolean", + default: false }, allowTaggedTemplates: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/no-unused-vars.js b/tools/node_modules/eslint/lib/rules/no-unused-vars.js index e76e325103..e56ba221bb 100644 --- a/tools/node_modules/eslint/lib/rules/no-unused-vars.js +++ b/tools/node_modules/eslint/lib/rules/no-unused-vars.js @@ -37,22 +37,26 @@ module.exports = { type: "object", properties: { vars: { - enum: ["all", "local"] + enum: ["all", "local"], + default: "all" }, varsIgnorePattern: { type: "string" }, args: { - enum: ["all", "after-used", "none"] + enum: ["all", "after-used", "none"], + default: "after-used" }, ignoreRestSiblings: { - type: "boolean" + type: "boolean", + default: false }, argsIgnorePattern: { type: "string" }, caughtErrors: { - enum: ["all", "none"] + enum: ["all", "none"], + default: "none" }, caughtErrorsIgnorePattern: { type: "string" diff --git a/tools/node_modules/eslint/lib/rules/no-use-before-define.js b/tools/node_modules/eslint/lib/rules/no-use-before-define.js index 500cd3a410..e0b2d23a7e 100644 --- a/tools/node_modules/eslint/lib/rules/no-use-before-define.js +++ b/tools/node_modules/eslint/lib/rules/no-use-before-define.js @@ -154,9 +154,9 @@ module.exports = { { type: "object", properties: { - functions: { type: "boolean" }, - classes: { type: "boolean" }, - variables: { type: "boolean" } + functions: { type: "boolean", default: true }, + classes: { type: "boolean", default: true }, + variables: { type: "boolean", default: true } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/no-useless-rename.js b/tools/node_modules/eslint/lib/rules/no-useless-rename.js index 337f875b45..c1860645ea 100644 --- a/tools/node_modules/eslint/lib/rules/no-useless-rename.js +++ b/tools/node_modules/eslint/lib/rules/no-useless-rename.js @@ -26,9 +26,9 @@ module.exports = { { type: "object", properties: { - ignoreDestructuring: { type: "boolean" }, - ignoreImport: { type: "boolean" }, - ignoreExport: { type: "boolean" } + ignoreDestructuring: { type: "boolean", default: false }, + ignoreImport: { type: "boolean", default: false }, + ignoreExport: { type: "boolean", default: false } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/object-curly-newline.js b/tools/node_modules/eslint/lib/rules/object-curly-newline.js index d1a6bc20f6..d45620d53c 100644 --- a/tools/node_modules/eslint/lib/rules/object-curly-newline.js +++ b/tools/node_modules/eslint/lib/rules/object-curly-newline.js @@ -26,14 +26,16 @@ const OPTION_VALUE = { type: "object", properties: { multiline: { - type: "boolean" + type: "boolean", + default: false }, minProperties: { type: "integer", minimum: 0 }, consistent: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false, @@ -59,9 +61,9 @@ function normalizeOptionValue(value) { } else if (value === "never") { minProperties = Number.POSITIVE_INFINITY; } else { - multiline = Boolean(value.multiline); + multiline = value.multiline; minProperties = value.minProperties || Number.POSITIVE_INFINITY; - consistent = Boolean(value.consistent); + consistent = value.consistent; } } else { consistent = true; diff --git a/tools/node_modules/eslint/lib/rules/object-property-newline.js b/tools/node_modules/eslint/lib/rules/object-property-newline.js index 3e2c017157..bf777b5ff6 100644 --- a/tools/node_modules/eslint/lib/rules/object-property-newline.js +++ b/tools/node_modules/eslint/lib/rules/object-property-newline.js @@ -25,10 +25,12 @@ module.exports = { type: "object", properties: { allowAllPropertiesOnSameLine: { - type: "boolean" + type: "boolean", + default: false }, allowMultiplePropertiesPerLine: { // Deprecated - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -40,7 +42,7 @@ module.exports = { create(context) { const allowSameLine = context.options[0] && ( - (Boolean(context.options[0].allowAllPropertiesOnSameLine) || Boolean(context.options[0].allowMultiplePropertiesPerLine)) // Deprecated + (context.options[0].allowAllPropertiesOnSameLine || context.options[0].allowMultiplePropertiesPerLine /* Deprecated */) ); const errorMessage = allowSameLine ? "Object properties must go on a new line if they aren't all on the same line." diff --git a/tools/node_modules/eslint/lib/rules/object-shorthand.js b/tools/node_modules/eslint/lib/rules/object-shorthand.js index 31010f0e73..98917fb6ee 100644 --- a/tools/node_modules/eslint/lib/rules/object-shorthand.js +++ b/tools/node_modules/eslint/lib/rules/object-shorthand.js @@ -57,7 +57,8 @@ module.exports = { type: "object", properties: { avoidQuotes: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -76,13 +77,16 @@ module.exports = { type: "object", properties: { ignoreConstructors: { - type: "boolean" + type: "boolean", + default: false }, avoidQuotes: { - type: "boolean" + type: "boolean", + default: false }, avoidExplicitReturnArrows: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/one-var.js b/tools/node_modules/eslint/lib/rules/one-var.js index 0e9dff4165..5a5c71b187 100644 --- a/tools/node_modules/eslint/lib/rules/one-var.js +++ b/tools/node_modules/eslint/lib/rules/one-var.js @@ -32,16 +32,20 @@ module.exports = { type: "object", properties: { separateRequires: { - type: "boolean" + type: "boolean", + default: false }, var: { - enum: ["always", "never", "consecutive"] + enum: ["always", "never", "consecutive"], + default: "always" }, let: { - enum: ["always", "never", "consecutive"] + enum: ["always", "never", "consecutive"], + default: "always" }, const: { - enum: ["always", "never", "consecutive"] + enum: ["always", "never", "consecutive"], + default: "always" } }, additionalProperties: false @@ -76,42 +80,16 @@ module.exports = { options.let = { uninitialized: mode, initialized: mode }; options.const = { uninitialized: mode, initialized: mode }; } else if (typeof mode === "object") { // options configuration is an object - if (Object.prototype.hasOwnProperty.call(mode, "separateRequires")) { - options.separateRequires = !!mode.separateRequires; - } - if (Object.prototype.hasOwnProperty.call(mode, "var")) { - options.var = { uninitialized: mode.var, initialized: mode.var }; - } - if (Object.prototype.hasOwnProperty.call(mode, "let")) { - options.let = { uninitialized: mode.let, initialized: mode.let }; - } - if (Object.prototype.hasOwnProperty.call(mode, "const")) { - options.const = { uninitialized: mode.const, initialized: mode.const }; - } + options.separateRequires = mode.separateRequires; + options.var = { uninitialized: mode.var, initialized: mode.var }; + options.let = { uninitialized: mode.let, initialized: mode.let }; + options.const = { uninitialized: mode.const, initialized: mode.const }; if (Object.prototype.hasOwnProperty.call(mode, "uninitialized")) { - if (!options.var) { - options.var = {}; - } - if (!options.let) { - options.let = {}; - } - if (!options.const) { - options.const = {}; - } options.var.uninitialized = mode.uninitialized; options.let.uninitialized = mode.uninitialized; options.const.uninitialized = mode.uninitialized; } if (Object.prototype.hasOwnProperty.call(mode, "initialized")) { - if (!options.var) { - options.var = {}; - } - if (!options.let) { - options.let = {}; - } - if (!options.const) { - options.const = {}; - } options.var.initialized = mode.initialized; options.let.initialized = mode.initialized; options.const.initialized = mode.initialized; @@ -257,7 +235,9 @@ module.exports = { if (currentOptions.uninitialized === MODE_ALWAYS && currentOptions.initialized === MODE_ALWAYS) { if (currentScope.uninitialized || currentScope.initialized) { - return false; + if (!hasRequires) { + return false; + } } } @@ -268,7 +248,9 @@ module.exports = { } if (declarationCounts.initialized > 0) { if (currentOptions.initialized === MODE_ALWAYS && currentScope.initialized) { - return false; + if (!hasRequires) { + return false; + } } } if (currentScope.required && hasRequires) { @@ -340,7 +322,11 @@ module.exports = { * y` * ^ afterComma */ - if (afterComma.loc.start.line > tokenAfterDeclarator.loc.end.line || afterComma.type === "Line" || afterComma.type === "Block") { + if ( + afterComma.loc.start.line > tokenAfterDeclarator.loc.end.line || + afterComma.type === "Line" || + afterComma.type === "Block" + ) { let lastComment = afterComma; while (lastComment.type === "Line" || lastComment.type === "Block") { @@ -349,7 +335,7 @@ module.exports = { return fixer.replaceTextRange( [tokenAfterDeclarator.range[0], lastComment.range[0]], - `;\n${sourceCode.text.slice(tokenAfterDeclarator.range[1], lastComment.range[0])}\n${declaration.kind} ` + `;${sourceCode.text.slice(tokenAfterDeclarator.range[1], lastComment.range[0])}${declaration.kind} ` ); } diff --git a/tools/node_modules/eslint/lib/rules/padded-blocks.js b/tools/node_modules/eslint/lib/rules/padded-blocks.js index 7c0b56ba7f..e4dd37f4cd 100644 --- a/tools/node_modules/eslint/lib/rules/padded-blocks.js +++ b/tools/node_modules/eslint/lib/rules/padded-blocks.js @@ -6,6 +6,12 @@ "use strict"; //------------------------------------------------------------------------------ +// Requirements +//------------------------------------------------------------------------------ + +const astUtils = require("../util/ast-utils"); + +//------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ @@ -45,32 +51,45 @@ module.exports = { minProperties: 1 } ] + }, + { + type: "object", + properties: { + allowSingleLineBlocks: { + type: "boolean" + } + } } ] }, create(context) { const options = {}; - const config = context.options[0] || "always"; + const typeOptions = context.options[0] || "always"; + const exceptOptions = context.options[1] || {}; - if (typeof config === "string") { - const shouldHavePadding = config === "always"; + if (typeof typeOptions === "string") { + const shouldHavePadding = typeOptions === "always"; options.blocks = shouldHavePadding; options.switches = shouldHavePadding; options.classes = shouldHavePadding; } else { - if (Object.prototype.hasOwnProperty.call(config, "blocks")) { - options.blocks = config.blocks === "always"; + if (Object.prototype.hasOwnProperty.call(typeOptions, "blocks")) { + options.blocks = typeOptions.blocks === "always"; } - if (Object.prototype.hasOwnProperty.call(config, "switches")) { - options.switches = config.switches === "always"; + if (Object.prototype.hasOwnProperty.call(typeOptions, "switches")) { + options.switches = typeOptions.switches === "always"; } - if (Object.prototype.hasOwnProperty.call(config, "classes")) { - options.classes = config.classes === "always"; + if (Object.prototype.hasOwnProperty.call(typeOptions, "classes")) { + options.classes = typeOptions.classes === "always"; } } + if (Object.prototype.hasOwnProperty.call(exceptOptions, "allowSingleLineBlocks")) { + options.allowSingleLineBlocks = exceptOptions.allowSingleLineBlocks === true; + } + const ALWAYS_MESSAGE = "Block must be padded by blank lines.", NEVER_MESSAGE = "Block must not be padded by blank lines."; @@ -177,6 +196,10 @@ module.exports = { blockHasTopPadding = isPaddingBetweenTokens(tokenBeforeFirst, firstBlockToken), blockHasBottomPadding = isPaddingBetweenTokens(lastBlockToken, tokenAfterLast); + if (options.allowSingleLineBlocks && astUtils.isTokenOnSameLine(tokenBeforeFirst, tokenAfterLast)) { + return; + } + if (requirePaddingFor(node)) { if (!blockHasTopPadding) { context.report({ diff --git a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js index b4bbf33f29..a0957399ea 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js +++ b/tools/node_modules/eslint/lib/rules/prefer-arrow-callback.js @@ -146,10 +146,12 @@ module.exports = { type: "object", properties: { allowNamedFunctions: { - type: "boolean" + type: "boolean", + default: false }, allowUnboundThis: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/prefer-const.js b/tools/node_modules/eslint/lib/rules/prefer-const.js index 5f75376c95..023f69cbd3 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-const.js +++ b/tools/node_modules/eslint/lib/rules/prefer-const.js @@ -345,8 +345,8 @@ module.exports = { { type: "object", properties: { - destructuring: { enum: ["any", "all"] }, - ignoreReadBeforeAssign: { type: "boolean" } + destructuring: { enum: ["any", "all"], default: "any" }, + ignoreReadBeforeAssign: { type: "boolean", default: false } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js index 119fae5608..c30c9170cd 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-destructuring.js +++ b/tools/node_modules/eslint/lib/rules/prefer-destructuring.js @@ -19,6 +19,8 @@ module.exports = { url: "https://eslint.org/docs/rules/prefer-destructuring" }, + fixable: "code", + schema: [ { @@ -34,10 +36,12 @@ module.exports = { type: "object", properties: { array: { - type: "boolean" + type: "boolean", + default: true }, object: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -46,10 +50,12 @@ module.exports = { type: "object", properties: { array: { - type: "boolean" + type: "boolean", + default: true }, object: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -61,10 +67,12 @@ module.exports = { type: "object", properties: { array: { - type: "boolean" + type: "boolean", + default: true }, object: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -75,7 +83,8 @@ module.exports = { type: "object", properties: { enforceForRenamedProperties: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -130,10 +139,55 @@ module.exports = { * * @param {ASTNode} reportNode the node to report * @param {string} type the type of destructuring that should have been done + * @param {Function|null} fix the fix function or null to pass to context.report * @returns {void} */ - function report(reportNode, type) { - context.report({ node: reportNode, message: "Use {{type}} destructuring.", data: { type } }); + function report(reportNode, type, fix) { + context.report({ + node: reportNode, + message: "Use {{type}} destructuring.", + data: { type }, + fix + }); + } + + /** + * Determines if a node should be fixed into object destructuring + * + * The fixer only fixes the simplest case of object destructuring, + * like: `let x = a.x`; + * + * Assignment expression is not fixed. + * Array destructuring is not fixed. + * Renamed property is not fixed. + * + * @param {ASTNode} node the the node to evaluate + * @returns {boolean} whether or not the node should be fixed + */ + function shouldFix(node) { + return node.type === "VariableDeclarator" && + node.id.type === "Identifier" && + node.init.type === "MemberExpression" && + node.id.name === node.init.property.name; + } + + /** + * Fix a node into object destructuring. + * This function only handles the simplest case of object destructuring, + * see {@link shouldFix}. + * + * @param {SourceCodeFixer} fixer the fixer object + * @param {ASTNode} node the node to be fixed. + * @returns {Object} a fix for the node + */ + function fixIntoObjectDestructuring(fixer, node) { + const rightNode = node.init; + const sourceCode = context.getSourceCode(); + + return fixer.replaceText( + node, + `{${rightNode.property.name}} = ${sourceCode.getText(rightNode.object)}` + ); } /** @@ -155,13 +209,17 @@ module.exports = { if (isArrayIndexAccess(rightNode)) { if (shouldCheck(reportNode.type, "array")) { - report(reportNode, "array"); + report(reportNode, "array", null); } return; } + const fix = shouldFix(reportNode) + ? fixer => fixIntoObjectDestructuring(fixer, reportNode) + : null; + if (shouldCheck(reportNode.type, "object") && enforceForRenamedProperties) { - report(reportNode, "object"); + report(reportNode, "object", fix); return; } @@ -172,7 +230,7 @@ module.exports = { (property.type === "Literal" && leftNode.name === property.value) || (property.type === "Identifier" && leftNode.name === property.name && !rightNode.computed) ) { - report(reportNode, "object"); + report(reportNode, "object", fix); } } } diff --git a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js index 0db5ae874c..275e705f6d 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js +++ b/tools/node_modules/eslint/lib/rules/prefer-promise-reject-errors.js @@ -27,7 +27,7 @@ module.exports = { { type: "object", properties: { - allowEmptyReject: { type: "boolean" } + allowEmptyReject: { type: "boolean", default: false } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/prefer-spread.js b/tools/node_modules/eslint/lib/rules/prefer-spread.js index 790fd3b82a..5f3a477329 100644 --- a/tools/node_modules/eslint/lib/rules/prefer-spread.js +++ b/tools/node_modules/eslint/lib/rules/prefer-spread.js @@ -59,7 +59,7 @@ module.exports = { }, schema: [], - fixable: "code" + fixable: null }, create(context) { @@ -78,18 +78,7 @@ module.exports = { if (isValidThisArg(expectedThis, thisArg, sourceCode)) { context.report({ node, - message: "Use the spread operator instead of '.apply()'.", - fix(fixer) { - if (expectedThis && expectedThis.type !== "Identifier") { - - // Don't fix cases where the `this` value could be a computed expression. - return null; - } - - const propertyDot = sourceCode.getFirstTokenBetween(applied, node.callee.property, token => token.value === "."); - - return fixer.replaceTextRange([propertyDot.range[0], node.range[1]], `(...${sourceCode.getText(node.arguments[1])})`); - } + message: "Use the spread operator instead of '.apply()'." }); } } diff --git a/tools/node_modules/eslint/lib/rules/quote-props.js b/tools/node_modules/eslint/lib/rules/quote-props.js index 7184bd34d3..f4582dd1f4 100644 --- a/tools/node_modules/eslint/lib/rules/quote-props.js +++ b/tools/node_modules/eslint/lib/rules/quote-props.js @@ -32,7 +32,8 @@ module.exports = { type: "array", items: [ { - enum: ["always", "as-needed", "consistent", "consistent-as-needed"] + enum: ["always", "as-needed", "consistent", "consistent-as-needed"], + default: "always" } ], minItems: 0, @@ -42,19 +43,23 @@ module.exports = { type: "array", items: [ { - enum: ["always", "as-needed", "consistent", "consistent-as-needed"] + enum: ["always", "as-needed", "consistent", "consistent-as-needed"], + default: "always" }, { type: "object", properties: { keywords: { - type: "boolean" + type: "boolean", + default: false }, unnecessary: { - type: "boolean" + type: "boolean", + default: true }, numbers: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/quotes.js b/tools/node_modules/eslint/lib/rules/quotes.js index c3c0778224..e0797f9e8b 100644 --- a/tools/node_modules/eslint/lib/rules/quotes.js +++ b/tools/node_modules/eslint/lib/rules/quotes.js @@ -100,10 +100,12 @@ module.exports = { type: "object", properties: { avoidEscape: { - type: "boolean" + type: "boolean", + default: false }, allowTemplateLiterals: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/require-jsdoc.js b/tools/node_modules/eslint/lib/rules/require-jsdoc.js index 389bfb692b..416a22ce6c 100644 --- a/tools/node_modules/eslint/lib/rules/require-jsdoc.js +++ b/tools/node_modules/eslint/lib/rules/require-jsdoc.js @@ -23,22 +23,28 @@ module.exports = { type: "object", properties: { ClassDeclaration: { - type: "boolean" + type: "boolean", + default: false }, MethodDefinition: { - type: "boolean" + type: "boolean", + default: false }, FunctionDeclaration: { - type: "boolean" + type: "boolean", + default: true }, ArrowFunctionExpression: { - type: "boolean" + type: "boolean", + default: false }, FunctionExpression: { - type: "boolean" + type: "boolean", + default: false } }, - additionalProperties: false + additionalProperties: false, + default: {} } }, additionalProperties: false @@ -58,7 +64,7 @@ module.exports = { ArrowFunctionExpression: false, FunctionExpression: false }; - const options = Object.assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require || {}); + const options = Object.assign(DEFAULT_OPTIONS, context.options[0] && context.options[0].require); /** * Report the error message diff --git a/tools/node_modules/eslint/lib/rules/semi-spacing.js b/tools/node_modules/eslint/lib/rules/semi-spacing.js index 56ae687d85..3a6d8a052a 100644 --- a/tools/node_modules/eslint/lib/rules/semi-spacing.js +++ b/tools/node_modules/eslint/lib/rules/semi-spacing.js @@ -29,10 +29,12 @@ module.exports = { type: "object", properties: { before: { - type: "boolean" + type: "boolean", + default: false }, after: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false @@ -48,12 +50,8 @@ module.exports = { requireSpaceAfter = true; if (typeof config === "object") { - if (Object.prototype.hasOwnProperty.call(config, "before")) { - requireSpaceBefore = config.before; - } - if (Object.prototype.hasOwnProperty.call(config, "after")) { - requireSpaceAfter = config.after; - } + requireSpaceBefore = config.before; + requireSpaceAfter = config.after; } /** diff --git a/tools/node_modules/eslint/lib/rules/semi.js b/tools/node_modules/eslint/lib/rules/semi.js index e8f4c959d4..f7bc0f5fd6 100644 --- a/tools/node_modules/eslint/lib/rules/semi.js +++ b/tools/node_modules/eslint/lib/rules/semi.js @@ -40,7 +40,8 @@ module.exports = { type: "object", properties: { beforeStatementContinuationChars: { - enum: ["always", "any", "never"] + enum: ["always", "any", "never"], + default: "any" } }, additionalProperties: false @@ -58,7 +59,7 @@ module.exports = { { type: "object", properties: { - omitLastInOneLineBlock: { type: "boolean" } + omitLastInOneLineBlock: { type: "boolean", default: false } }, additionalProperties: false } @@ -75,8 +76,8 @@ module.exports = { const OPT_OUT_PATTERN = /^[-[(/+`]/; // One of [(/+-` const options = context.options[1]; const never = context.options[0] === "never"; - const exceptOneLine = Boolean(options && options.omitLastInOneLineBlock); - const beforeStatementContinuationChars = (options && options.beforeStatementContinuationChars) || "any"; + const exceptOneLine = options && options.omitLastInOneLineBlock; + const beforeStatementContinuationChars = options && options.beforeStatementContinuationChars; const sourceCode = context.getSourceCode(); //-------------------------------------------------------------------------- diff --git a/tools/node_modules/eslint/lib/rules/sort-imports.js b/tools/node_modules/eslint/lib/rules/sort-imports.js index 1c0d134046..05e643ca06 100644 --- a/tools/node_modules/eslint/lib/rules/sort-imports.js +++ b/tools/node_modules/eslint/lib/rules/sort-imports.js @@ -25,7 +25,8 @@ module.exports = { type: "object", properties: { ignoreCase: { - type: "boolean" + type: "boolean", + default: false }, memberSyntaxSortOrder: { type: "array", @@ -37,10 +38,12 @@ module.exports = { maxItems: 4 }, ignoreDeclarationSort: { - type: "boolean" + type: "boolean", + default: false }, ignoreMemberSort: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/sort-keys.js b/tools/node_modules/eslint/lib/rules/sort-keys.js index 0668e617d3..08bfcdf3d8 100644 --- a/tools/node_modules/eslint/lib/rules/sort-keys.js +++ b/tools/node_modules/eslint/lib/rules/sort-keys.js @@ -90,10 +90,12 @@ module.exports = { type: "object", properties: { caseSensitive: { - type: "boolean" + type: "boolean", + default: true }, natural: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -106,8 +108,8 @@ module.exports = { // Parse options. const order = context.options[0] || "asc"; const options = context.options[1]; - const insensitive = (options && options.caseSensitive) === false; - const natual = Boolean(options && options.natural); + const insensitive = options && options.caseSensitive === false; + const natual = options && options.natural; const isValidOrder = isValidOrders[ order + (insensitive ? "I" : "") + (natual ? "N" : "") ]; @@ -127,8 +129,12 @@ module.exports = { stack = stack.upper; }, + SpreadElement() { + stack.prevName = null; + }, + Property(node) { - if (node.parent.type === "ObjectPattern" || node.parent.properties.some(n => n.type === "SpreadElement")) { + if (node.parent.type === "ObjectPattern") { return; } diff --git a/tools/node_modules/eslint/lib/rules/sort-vars.js b/tools/node_modules/eslint/lib/rules/sort-vars.js index b6a2c86779..e85c6534e3 100644 --- a/tools/node_modules/eslint/lib/rules/sort-vars.js +++ b/tools/node_modules/eslint/lib/rules/sort-vars.js @@ -25,7 +25,8 @@ module.exports = { type: "object", properties: { ignoreCase: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js index 64ba72bf9e..c0d8e509fd 100644 --- a/tools/node_modules/eslint/lib/rules/space-before-function-paren.js +++ b/tools/node_modules/eslint/lib/rules/space-before-function-paren.js @@ -37,13 +37,16 @@ module.exports = { type: "object", properties: { anonymous: { - enum: ["always", "never", "ignore"] + enum: ["always", "never", "ignore"], + default: "always" }, named: { - enum: ["always", "never", "ignore"] + enum: ["always", "never", "ignore"], + default: "always" }, asyncArrow: { - enum: ["always", "never", "ignore"] + enum: ["always", "never", "ignore"], + default: "always" } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/space-infix-ops.js b/tools/node_modules/eslint/lib/rules/space-infix-ops.js index 254616d998..8d1d172c66 100644 --- a/tools/node_modules/eslint/lib/rules/space-infix-ops.js +++ b/tools/node_modules/eslint/lib/rules/space-infix-ops.js @@ -26,7 +26,8 @@ module.exports = { type: "object", properties: { int32Hint: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/space-unary-ops.js b/tools/node_modules/eslint/lib/rules/space-unary-ops.js index 046be22bec..779697b5b3 100644 --- a/tools/node_modules/eslint/lib/rules/space-unary-ops.js +++ b/tools/node_modules/eslint/lib/rules/space-unary-ops.js @@ -32,10 +32,12 @@ module.exports = { type: "object", properties: { words: { - type: "boolean" + type: "boolean", + default: true }, nonwords: { - type: "boolean" + type: "boolean", + default: false }, overrides: { type: "object", @@ -58,7 +60,7 @@ module.exports = { }, create(context) { - const options = context.options && Array.isArray(context.options) && context.options[0] || { words: true, nonwords: false }; + const options = context.options[0] || { words: true, nonwords: false }; const sourceCode = context.getSourceCode(); diff --git a/tools/node_modules/eslint/lib/rules/spaced-comment.js b/tools/node_modules/eslint/lib/rules/spaced-comment.js index d4c86d27cf..63177eb1c7 100644 --- a/tools/node_modules/eslint/lib/rules/spaced-comment.js +++ b/tools/node_modules/eslint/lib/rules/spaced-comment.js @@ -215,7 +215,8 @@ module.exports = { } }, balanced: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js index 9c7c0d589e..40154862d1 100644 --- a/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js +++ b/tools/node_modules/eslint/lib/rules/switch-colon-spacing.js @@ -30,8 +30,8 @@ module.exports = { { type: "object", properties: { - before: { type: "boolean" }, - after: { type: "boolean" } + before: { type: "boolean", default: false }, + after: { type: "boolean", default: true } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js index 515ba78b1d..46eb02211a 100644 --- a/tools/node_modules/eslint/lib/rules/valid-jsdoc.js +++ b/tools/node_modules/eslint/lib/rules/valid-jsdoc.js @@ -42,22 +42,27 @@ module.exports = { } }, requireReturn: { - type: "boolean" + type: "boolean", + default: true }, requireParamDescription: { - type: "boolean" + type: "boolean", + default: true }, requireReturnDescription: { - type: "boolean" + type: "boolean", + default: true }, matchDescription: { type: "string" }, requireReturnType: { - type: "boolean" + type: "boolean", + default: true }, requireParamType: { - type: "boolean" + type: "boolean", + default: true } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/valid-typeof.js b/tools/node_modules/eslint/lib/rules/valid-typeof.js index 7fa2b89bd0..16b2a47d37 100644 --- a/tools/node_modules/eslint/lib/rules/valid-typeof.js +++ b/tools/node_modules/eslint/lib/rules/valid-typeof.js @@ -24,7 +24,8 @@ module.exports = { type: "object", properties: { requireStringLiterals: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false diff --git a/tools/node_modules/eslint/lib/rules/wrap-iife.js b/tools/node_modules/eslint/lib/rules/wrap-iife.js index 628ebf532e..0e54157f10 100644 --- a/tools/node_modules/eslint/lib/rules/wrap-iife.js +++ b/tools/node_modules/eslint/lib/rules/wrap-iife.js @@ -34,7 +34,8 @@ module.exports = { type: "object", properties: { functionPrototypeMethods: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false @@ -52,7 +53,7 @@ module.exports = { create(context) { const style = context.options[0] || "outside"; - const includeFunctionPrototypeMethods = (context.options[1] && context.options[1].functionPrototypeMethods) || false; + const includeFunctionPrototypeMethods = context.options[1] && context.options[1].functionPrototypeMethods; const sourceCode = context.getSourceCode(); diff --git a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js index 20b8e9ea91..17124dd6ec 100644 --- a/tools/node_modules/eslint/lib/rules/yield-star-spacing.js +++ b/tools/node_modules/eslint/lib/rules/yield-star-spacing.js @@ -31,8 +31,8 @@ module.exports = { { type: "object", properties: { - before: { type: "boolean" }, - after: { type: "boolean" } + before: { type: "boolean", default: false }, + after: { type: "boolean", default: true } }, additionalProperties: false } diff --git a/tools/node_modules/eslint/lib/rules/yoda.js b/tools/node_modules/eslint/lib/rules/yoda.js index 83c435a4f7..825634a79f 100644 --- a/tools/node_modules/eslint/lib/rules/yoda.js +++ b/tools/node_modules/eslint/lib/rules/yoda.js @@ -169,10 +169,12 @@ module.exports = { type: "object", properties: { exceptRange: { - type: "boolean" + type: "boolean", + default: false }, onlyEquality: { - type: "boolean" + type: "boolean", + default: false } }, additionalProperties: false |