eslint-config-amex
Version:
American Express' ESLint config
186 lines (146 loc) • 9.5 kB
JavaScript
/*
* Copyright (c) 2020 American Express Travel Related Services Company, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
module.exports = {
plugins: [
'unicorn',
],
rules: {
// Improve regexes by making them shorter, consistent, and safer
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/better-regex.md
'unicorn/better-regex': 'error',
// Enforce passing a message value when throwing a built-in error
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/error-message.md
'unicorn/error-message': 'error',
// Require escape sequences to use uppercase values
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/escape-case.md
'unicorn/escape-case': 'error',
// Add expiration conditions to TODO comments
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/expiring-todo-comments.md
'unicorn/expiring-todo-comments': 'error',
// Enforce explicitly comparing the length property of a value
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/explicit-length-check.md
'unicorn/explicit-length-check': 'error',
// Enforce importing index files with .
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/import-index.md
'unicorn/import-index': 'error',
// Enforce the use of new for all builtins, except String, Number and Boolean
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/new-for-builtins.md
'unicorn/new-for-builtins': 'error',
// Enforce specifying rules to disable in eslint-disable comments
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-abusive-eslint-disable.md
'unicorn/no-abusive-eslint-disable': 'error',
// Require Array.isArray() instead of instanceof Array
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-array-instanceof.md
'unicorn/no-array-instanceof': 'error',
// Do not use leading/trailing space between console.log parameters
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-console-spaces.md
'unicorn/no-console-spaces': 'error',
// Do not use a for loop that can be replaced with a for-of loop
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-for-loop.md
'unicorn/no-for-loop': 'error',
// Enforce the use of Unicode escapes instead of hexadecimal escapes
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-hex-escape.md
'unicorn/no-hex-escape': 'error',
// Disallow identifiers starting with new or class
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-keyword-prefix.md
'unicorn/no-keyword-prefix': 'off',
// Disallow nested ternary expressions
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-nested-ternary.md
'unicorn/no-nested-ternary': 'error',
// Improved by 'unicorn/no-nested-ternary'
// https://eslint.org/docs/rules/no-nested-ternary
'no-nested-ternary': 'off',
// Enforce the use of Buffer.from() and Buffer.alloc() instead of the deprecated new Buffer().
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-new-buffer.md
'unicorn/no-new-buffer': 'error',
// Disallow process.exit()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-process-exit.md
'unicorn/no-process-exit': 'error',
// Uses safe-regex to disallow potentially catastrophic exponential-time
// regular expressions.
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-unsafe-regex.md
'unicorn/no-unsafe-regex': 'error',
// Disallow number literals with zero fractions or dangling dots
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/no-zero-fractions.md
'unicorn/no-zero-fractions': 'error',
// Enforce proper case for numeric literals
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/number-literal-case.md
'unicorn/number-literal-case': 'error',
// Prefer .addEventListener() and .removeEventListener() over on-functions
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-add-event-listener.md
'unicorn/prefer-add-event-listener': 'error',
// Prefer using .dataset on DOM elements over .setAttribute(…)
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-dataset.md
'unicorn/prefer-dataset': 'error',
// Prefer KeyboardEvent#key over KeyboardEvent#keyCode
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-event-key.md
'unicorn/prefer-event-key': 'error',
// Prefer .flatMap(…) over .map(…).flat()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-flat-map.md
// TODO: Enable this by default when targeting Node.js 12.
'unicorn/prefer-flat-map': 'off',
// Don't prefer .includes() over .indexOf() when checking for existence or non-existence.
// Internet Explorer does not support .includes()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-includes.md
'unicorn/prefer-includes': 'off',
// Prefer modern DOM APIs
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-modern-dom-apis.md
'unicorn/prefer-modern-dom-apis': 'error',
// Prefer negative index over .length - index for {String,Array,
// TypedArray}#slice() and Array#splice()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-negative-index.md
'unicorn/prefer-negative-index': 'error',
// Prefer Node#append() over Node#appendChild()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-node-append.md
'unicorn/prefer-node-append': 'error',
// Prefer childNode.remove() over parentNode.removeChild(childNode)
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-node-remove.md
'unicorn/prefer-node-remove': 'error',
// Prefer Number static properties over global ones.
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-number-properties.md
'unicorn/prefer-number-properties': 'error',
// Prefer .querySelector() over .getElementById(), .querySelectorAll()
// over .getElementsByClassName() and .getElementsByTagName()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-query-selector.md
'unicorn/prefer-query-selector': 'error',
// Prefer Reflect.apply() over Function#apply()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-reflect-apply.md
'unicorn/prefer-reflect-apply': 'error',
// Prefer String#replaceAll() over regex searches with the global flag
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-replace-all.md
// TODO: Enable this by default when it's shipping in a Node.js LTS version.
'unicorn/prefer-replace-all': 'off',
// Prefer the spread operator over Array.from()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-spread.md
'unicorn/prefer-spread': 'error',
// Prefer String#startsWith() & String#endsWith() over more complex alternatives
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-starts-ends-with.md
'unicorn/prefer-starts-ends-with': 'error',
// Prefer String#slice() over String#substr() and String#substring()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-string-slice.md
'unicorn/prefer-string-slice': 'error',
// Prefer .textContent over .innerText
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-text-content.md
'unicorn/prefer-text-content': 'error',
// Prefer String#trimStart() / String#trimEnd() over String#trimLeft() / String#trimRight()
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-trim-start-end.md
'unicorn/prefer-trim-start-end': 'error',
// Enforce throwing TypeError in type checking conditions
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/prefer-type-error.md
'unicorn/prefer-type-error': 'error',
// Require new when throwing an error
// https://github.com/sindresorhus/eslint-plugin-unicorn/blob/v20.1.0/docs/rules/throw-new-error.md
'unicorn/throw-new-error': 'error',
},
};