mirror of
https://github.com/cypress-io/cypress.git
synced 2026-04-24 07:59:12 -05:00
339 lines
7.3 KiB
JavaScript
339 lines
7.3 KiB
JavaScript
const customRules = require('./custom-rules')
|
|
const baseRules = {
|
|
'@cypress/dev/arrow-body-multiline-braces': [
|
|
'error',
|
|
'always',
|
|
],
|
|
'array-bracket-newline': [
|
|
'error',
|
|
'consistent',
|
|
],
|
|
'array-bracket-spacing': [
|
|
'error',
|
|
'never',
|
|
],
|
|
'arrow-parens': [
|
|
'error',
|
|
'always',
|
|
],
|
|
'arrow-spacing': 'error',
|
|
'block-spacing': 'error',
|
|
'brace-style': [
|
|
'error',
|
|
'1tbs',
|
|
{
|
|
'allowSingleLine': false,
|
|
},
|
|
],
|
|
'function-paren-newline': [
|
|
'error',
|
|
'consistent',
|
|
],
|
|
'comma-dangle': [
|
|
'error',
|
|
'always-multiline',
|
|
],
|
|
'comma-spacing': 'error',
|
|
'curly': [
|
|
'error',
|
|
'multi-line',
|
|
'consistent',
|
|
],
|
|
'constructor-super': 'error',
|
|
'default-case': 'error',
|
|
'eol-last': 'error',
|
|
'eqeqeq': [
|
|
'error',
|
|
'allow-null',
|
|
],
|
|
'indent': [
|
|
'error',
|
|
2,
|
|
{
|
|
'SwitchCase': 1,
|
|
'MemberExpression': 0,
|
|
},
|
|
],
|
|
'key-spacing': 'error',
|
|
'keyword-spacing': 'error',
|
|
'no-buffer-constructor': 'error',
|
|
'no-case-declarations': 'error',
|
|
'no-class-assign': 'error',
|
|
'no-cond-assign': 'error',
|
|
'no-console': 'error',
|
|
'no-const-assign': 'error',
|
|
'no-constant-condition': 'error',
|
|
'no-control-regex': 'error',
|
|
'no-debugger': 'error',
|
|
'no-delete-var': 'error',
|
|
'no-dupe-class-members': 'error',
|
|
'no-dupe-keys': 'error',
|
|
'no-dupe-args': 'error',
|
|
'no-duplicate-case': 'error',
|
|
'no-duplicate-imports': 'error',
|
|
'no-else-return': [
|
|
'error',
|
|
{
|
|
'allowElseIf': false,
|
|
},
|
|
],
|
|
'no-empty': 'error',
|
|
'no-empty-character-class': 'error',
|
|
'no-empty-pattern': 'error',
|
|
'no-ex-assign': 'error',
|
|
'no-extra-boolean-cast': 'error',
|
|
'no-extra-semi': 'error',
|
|
'no-fallthrough': 'error',
|
|
'no-func-assign': 'error',
|
|
'no-inner-declarations': 'error',
|
|
'no-invalid-regexp': 'error',
|
|
'no-irregular-whitespace': 'error',
|
|
'no-mixed-spaces-and-tabs': 'error',
|
|
'no-multiple-empty-lines': [
|
|
'error',
|
|
{
|
|
'max': 1,
|
|
'maxEOF': 0,
|
|
'maxBOF': 0,
|
|
},
|
|
],
|
|
'no-multi-spaces': 'error',
|
|
'no-negated-in-lhs': 'error',
|
|
'no-new-symbol': 'error',
|
|
'no-obj-calls': 'error',
|
|
'no-octal': 'error',
|
|
'no-redeclare': 'error',
|
|
'no-regex-spaces': 'error',
|
|
'no-self-assign': 'error',
|
|
'no-spaced-func': 'error',
|
|
'no-sparse-arrays': 'error',
|
|
'no-this-before-super': 'error',
|
|
'no-trailing-spaces': 'error',
|
|
'no-undef': 'error',
|
|
'no-unexpected-multiline': 'error',
|
|
'no-unneeded-ternary': 'error',
|
|
'no-unreachable': 'error',
|
|
'no-unused-labels': 'error',
|
|
'no-unused-vars': ['error', { args: 'none' }],
|
|
'no-useless-concat': 'error',
|
|
'no-useless-constructor': 'error',
|
|
'no-var': 'error',
|
|
'no-whitespace-before-property': 'error',
|
|
'object-curly-spacing': [
|
|
'error',
|
|
'always',
|
|
],
|
|
'object-shorthand': 'error',
|
|
'one-var': [
|
|
'error',
|
|
'never',
|
|
],
|
|
'padded-blocks': ['error', 'never'],
|
|
'padding-line-between-statements': [
|
|
'error',
|
|
{
|
|
'blankLine': 'always',
|
|
'prev': '*',
|
|
'next': 'return',
|
|
},
|
|
{
|
|
'blankLine': 'always',
|
|
'prev': [
|
|
'const',
|
|
'let',
|
|
'var',
|
|
'if',
|
|
'while',
|
|
'export',
|
|
'cjs-export',
|
|
'import',
|
|
'cjs-import',
|
|
'multiline-expression',
|
|
],
|
|
'next': '*',
|
|
},
|
|
{
|
|
'blankLine': 'any',
|
|
'prev': [
|
|
'const',
|
|
'let',
|
|
'var',
|
|
'import',
|
|
'cjs-import',
|
|
],
|
|
'next': [
|
|
'const',
|
|
'let',
|
|
'var',
|
|
'import',
|
|
'cjs-import',
|
|
],
|
|
},
|
|
],
|
|
'prefer-rest-params': 'error',
|
|
'prefer-spread': 'error',
|
|
'prefer-template': 'error',
|
|
'quotes': [
|
|
'error',
|
|
'single',
|
|
{
|
|
'allowTemplateLiterals': true,
|
|
},
|
|
],
|
|
'semi': [
|
|
'error',
|
|
'never',
|
|
],
|
|
'semi-spacing': 'error',
|
|
'space-before-blocks': 'error',
|
|
'space-before-function-paren': 'error',
|
|
'space-in-parens': [
|
|
'error',
|
|
'never',
|
|
],
|
|
'space-infix-ops': 'error',
|
|
'space-unary-ops': 'error',
|
|
'template-curly-spacing': 'error',
|
|
'use-isnan': 'error',
|
|
'valid-typeof': 'error',
|
|
}
|
|
|
|
// '@cypress/dev/no-only': 'error',
|
|
|
|
module.exports = {
|
|
configs: {
|
|
general: {
|
|
parserOptions: {
|
|
ecmaVersion: 2018,
|
|
sourceType: 'module',
|
|
},
|
|
plugins: [
|
|
'json-format',
|
|
],
|
|
settings: {
|
|
json: {
|
|
'sort-package-json': 'pro',
|
|
},
|
|
},
|
|
env: {
|
|
node: true,
|
|
es6: true,
|
|
},
|
|
rules: {
|
|
...baseRules,
|
|
},
|
|
overrides: [
|
|
{
|
|
files: [
|
|
'*.jsx',
|
|
'*.tsx',
|
|
],
|
|
rules: {
|
|
'@cypress/dev/arrow-body-multiline-braces': 'off',
|
|
},
|
|
},
|
|
{
|
|
files: '*.coffee',
|
|
parser: '@fellow/eslint-plugin-coffee',
|
|
parserOptions: {
|
|
parser: 'babel-eslint',
|
|
sourceType: 'module',
|
|
ecmaVersion: 2018,
|
|
},
|
|
plugins: [
|
|
'@fellow/eslint-plugin-coffee',
|
|
],
|
|
rules: {
|
|
...Object.assign({}, ...Object.keys(baseRules).map((key) => ({ [key]: 'off' }))),
|
|
'@fellow/coffee/coffeescript-error': [
|
|
'error',
|
|
{},
|
|
],
|
|
},
|
|
},
|
|
{
|
|
files: '*.ts',
|
|
parser: '@typescript-eslint/parser',
|
|
plugins: [
|
|
'@typescript-eslint',
|
|
],
|
|
rules: {
|
|
'no-unused-vars': 'off',
|
|
'@typescript-eslint/no-unused-vars': [
|
|
'error',
|
|
{
|
|
'args': 'none',
|
|
},
|
|
],
|
|
'@typescript-eslint/type-annotation-spacing': 'error',
|
|
'@typescript-eslint/no-useless-constructor': [
|
|
'error',
|
|
],
|
|
'@typescript-eslint/member-delimiter-style': [
|
|
'error',
|
|
{
|
|
'multiline': {
|
|
'delimiter': 'none',
|
|
},
|
|
'singleline': {
|
|
'delimiter': 'comma',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
},
|
|
],
|
|
},
|
|
|
|
tests: {
|
|
env: {
|
|
mocha: true,
|
|
},
|
|
globals: {
|
|
expect: true,
|
|
},
|
|
plugins: ['mocha'],
|
|
rules: {
|
|
'mocha/handle-done-callback': 'error',
|
|
'mocha/no-exclusive-tests': 'error',
|
|
'mocha/no-global-tests': 'error',
|
|
'@cypress/dev/skip-comment': 'error',
|
|
},
|
|
},
|
|
|
|
react: {
|
|
env: {
|
|
browser: true,
|
|
},
|
|
parser: 'babel-eslint',
|
|
parserOptions: {
|
|
ecmaVersion: 2018,
|
|
sourceType: 'module',
|
|
ecmaFeatures: {
|
|
jsx: true,
|
|
legacyDecorators: true,
|
|
},
|
|
},
|
|
plugins: ['react'],
|
|
rules: {
|
|
'react/jsx-curly-spacing': 'error',
|
|
'react/jsx-equals-spacing': 'error',
|
|
'react/jsx-filename-extension': 'error',
|
|
'react/jsx-no-duplicate-props': 'error',
|
|
'react/jsx-no-undef': 'error',
|
|
'react/jsx-pascal-case': 'error',
|
|
'react/jsx-uses-react': 'error',
|
|
'react/jsx-uses-vars': 'error',
|
|
'react/jsx-wrap-multilines': 'error',
|
|
'react/no-unknown-property': 'error',
|
|
'react/prefer-es6-class': 'error',
|
|
'react/react-in-jsx-scope': 'error',
|
|
'react/require-render-return': 'error',
|
|
},
|
|
},
|
|
},
|
|
rules: {
|
|
...customRules,
|
|
},
|
|
}
|