From f653a6ff6abc003a258c88c0ab7d8889f2d661a7 Mon Sep 17 00:00:00 2001 From: Julian Lam Date: Sun, 8 Aug 2021 15:30:08 -0400 Subject: [PATCH] feat: replace eslint configs on server and client side to inherit rules from eslint-config-nodebb --- .eslintrc | 114 +------------------------------------------ install/package.json | 2 +- public/.eslintrc | 81 +----------------------------- 3 files changed, 3 insertions(+), 194 deletions(-) diff --git a/.eslintrc b/.eslintrc index b81c92ff86..abd292af1b 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,115 +1,3 @@ { - "extends": "airbnb-base", - "parserOptions": { - "sourceType": "script" - }, - - "rules": { - // === Configure rules for our style === - // imports must be resolvable - "import/no-unresolved": "error", - // use single quotes, - // unless a different style allows avoiding escapes - "quotes": ["error", "single", { - "avoidEscape": true, - "allowTemplateLiterals": true - }], - // allow else-if return - "no-else-return": [ "error", { "allowElseIf": true } ], - // expressions split over multiple lines - // should break after the operator - "operator-linebreak": [ "error", "after" ], - // require arrow parens only when needed - // and whenever the body is a block - "arrow-parens": ["error", "as-needed", { "requireForBlockBody": true }], - // what variables are errors in callbacks - "handle-callback-err": [ "error","^(e$|(e|(.*(_e|E)))rr)" ], - // allow dangling commas in functions - // require them everywhere else - "comma-dangle": ["error", { - "arrays": "always-multiline", - "objects": "always-multiline", - "imports": "always-multiline", - "exports": "always-multiline", - "functions": "only-multiline" - }], - // we actually encourage `return await` - "no-return-await": "off", - // allow `while (true)` - "no-constant-condition": ["error", { "checkLoops": false }], - // allow ignoring an error with `catch` - "no-empty": ["error", { "allowEmptyCatch": true }], - // allow `3 + 5 - 1`, but not `3 * 5 - 1` - "no-mixed-operators": ["error", { "allowSamePrecedence": true }], - // require `'use strict';` - "strict": ["error", "global"], - // we actually use tabs for indentation - "indent": ["error", "tab", { "SwitchCase": 1 }], - "no-tabs": "off", - // we want `== null` to also handle undefined - "no-eq-null": "off", - // allow `for (..; i++)` - "no-plusplus": ["error", { "allowForLoopAfterthoughts": true }], - // allow using functions defined later - "no-use-before-define": ["error", "nofunc"], - // require consistent newlines before and after braces - // if contents are multiline - "object-curly-newline": ["error", { "consistent": true, "multiline": true }], - // require consistent linebreaks inline function parenthesis (arguments or params) - "function-paren-newline": ["error", "consistent"], - // only require const if all parts of destructuring can be const - "prefer-const": ["error", { "destructuring": "all" }], - // don't require destructuring for arrays or assignment - "prefer-destructuring": ["error", { - "VariableDeclarator": { "array": false, "object": true }, - "AssignmentExpression": { "array": false, "object": false } - }], - // identical to airbnb rule, except for allowing for..of, because we want to use it - "no-restricted-syntax": [ - "error", - { - "selector": "ForInStatement", - "message": "for..in loops iterate over the entire prototype chain, which is virtually never what you want. Use Object.{keys,values,entries}, and iterate over the resulting array." - }, - { - "selector": "LabeledStatement", - "message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand." - }, - { - "selector": "WithStatement", - "message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize." - } - ], - // allow lines of up to 120 characters - "max-len": ["error", { "code": 120, "tabWidth": 2, "ignoreUrls": true, "ignoreStrings": true, "ignoreTemplateLiterals": true, "ignoreRegExpLiterals": true }], - - // === Disable rules === - // more liberal naming - "camelcase": "off", - "no-underscore-dangle": "off", - // don't require anonymous function names - "func-names": "off", - // allow console - "no-console": "off", - // allow new for side effects - // allow new with non-capitalized - "no-new": "off", - "new-cap": "off", - // allow shadowing variables (usually callbacks) - "no-shadow": "off", - // allow multiple empty lines in a row - "no-multiple-empty-lines": "off", - // allow not using object shorthand - "object-shorthand": "off", - - // TODO - "consistent-return": "off", - "no-restricted-globals": "off", - "no-prototype-builtins": "off", - "import/no-extraneous-dependencies": "off", - "import/no-dynamic-require": "off", - "global-require": "off", - "no-param-reassign": "off", - "default-case": "off" - } + "extends": "nodebb" } diff --git a/install/package.json b/install/package.json index da66a5c31b..efbb4786b7 100644 --- a/install/package.json +++ b/install/package.json @@ -146,7 +146,7 @@ "@commitlint/config-angular": "12.1.4", "coveralls": "3.1.1", "eslint": "7.32.0", - "eslint-config-airbnb-base": "14.2.1", + "eslint-config-nodebb": "0.0.1", "eslint-plugin-import": "2.23.4", "grunt": "1.4.1", "grunt-contrib-watch": "1.1.0", diff --git a/public/.eslintrc b/public/.eslintrc index a350270339..a3ce8297a6 100644 --- a/public/.eslintrc +++ b/public/.eslintrc @@ -1,82 +1,3 @@ { - "globals": { - "app": true, - "io": true, - "socket": true, - "ajaxify": true, - "config": true, - "utils": true, - "overrides": true, - "componentHandler": true, - "bootbox": true, - "Visibility": true, - "Tinycon": true, - "Promise": true - }, - "env": { - "jquery": true, - "amd": true, - "browser": true, - "es6": true - }, - "rules": { - "comma-dangle": ["error", { - "arrays": "always-multiline", - "objects": "always-multiline", - "imports": "always-multiline", - "exports": "always-multiline", - "functions": "never" - }], - "block-scoped-var": "off", - "no-dupe-class-members": "off", - "prefer-object-spread": "off", - "prefer-reflect": "off", - - // ES6 - "prefer-rest-params": "off", - "prefer-spread": "off", - "prefer-arrow-callback": "off", - "prefer-template": "off", - "no-var": "off", - "object-shorthand": "off", - "vars-on-top": "off", - "prefer-destructuring": "off", - // identical to airbnb rule - // except for allowing for..in, because for..of is unavailable on some clients - "no-restricted-syntax": [ - "error", - { - "selector": "ForOfStatement", - "message": "iterators/generators require regenerator-runtime, which is too heavyweight for this guide to allow them. Separately, loops should be avoided in favor of array iterations." - }, - { - "selector": "LabeledStatement", - "message": "Labels are a form of GOTO; using them makes code confusing and hard to maintain and understand." - }, - { - "selector": "WithStatement", - "message": "`with` is disallowed in strict mode because it makes code impossible to predict and optimize." - } - ] - }, - "parserOptions": { - "ecmaVersion": 2018, - "ecmaFeatures": { - "classes": false, - "defaultParams": false, - "blockBindings": false, - "forOf": false, - "generators": false, - "globalReturn": false, - "jsx": false, - "modules": false, - "objectLiteralComputedProperties": false, - "objectLiteralDuplicateProperties": false, - "objectLiteralShorthandMethods": false, - "objectLiteralShorthandProperties": false, - "impliedStrict": false, - "restParams": false, - "superInFunctions": false - } - } + "extends": "nodebb/public" }