widoz / konomi

A WordPress Plugin to save posts as favorites based on Interactivity Api
GNU General Public License v2.0
0 stars 0 forks source link

Introduce EsLint Configuration #16

Closed widoz closed 4 months ago

widoz commented 4 months ago

By default the rules have to extend WordPress, similar to Wp Entities Search (see first code sample) but I would like to introduce custom rules I have in Assets Artifacts Action (second code sample)

module.exports = {
    extends: [ 'plugin:@wordpress/eslint-plugin/recommended' ],
    ignorePatterns: [ '**/sources/server/**/*.js' ],
    rules: {
        '@wordpress/dependency-group': 'error',
        '@wordpress/i18n-text-domain': [
            'error',
            {
                allowedTextDomain: 'wp-entities-search',
            },
        ],
        '@typescript-eslint/array-type': [ 'error', { default: 'generic' } ],
    },
    settings: {
        'import/resolver': {
            typescript: {},
        },
    },
};
{
  "env": {
    "browser": false,
    "es2023": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/recommended"
  ],
  "overrides": [
    {
      "env": {
        "node": true
      },
      "files": [
        ".eslintrc.{js,cjs}"
      ],
      "parserOptions": {
        "sourceType": "script"
      }
    }
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": "latest",
    "sourceType": "module",
    "project": "./tsconfig.json"
  },
  "plugins": [
    "@typescript-eslint"
  ],
  "rules": {
    "consistent-return": "off",
    "dot-notation": "off",
    "init-declarations": "off",
    "no-undef-init": "error",
    "max-params": "off",
    "no-implicit-globals": "error",
    "no-throw-literal": "off",
    "no-useless-constructor": "off",
    "prefer-promise-reject-errors": "off",
    "no-return-await": "off",
    "@typescript-eslint/consistent-indexed-object-style": "warn",
    "@typescript-eslint/prefer-literal-enum-member": "warn",
    "@typescript-eslint/prefer-string-starts-ends-with": "warn",
    "@typescript-eslint/prefer-includes": "error",
    "@typescript-eslint/prefer-for-of": "error",
    "@typescript-eslint/prefer-function-type": "error",
    "@typescript-eslint/no-useless-template-literals": "error",
    "@typescript-eslint/prefer-find": "error",
    "@typescript-eslint/non-nullable-type-assertion-style": "error",
    "@typescript-eslint/no-useless-constructor": "error",
    "@typescript-eslint/no-useless-empty-export": "error",
    "@typescript-eslint/no-unsafe-unary-minus": "error",
    "@typescript-eslint/prefer-promise-reject-errors": "error",
    "@typescript-eslint/prefer-readonly": "error",
    "@typescript-eslint/prefer-readonly-parameter-types": "error",
    "@typescript-eslint/prefer-reduce-type-parameter": "error",
    "@typescript-eslint/consistent-return": "error",
    "@typescript-eslint/explicit-function-return-type": "error",
    "@typescript-eslint/explicit-module-boundary-types": "error",
    "@typescript-eslint/dot-notation": "error",
    "@typescript-eslint/no-array-delete": "error",
    "@typescript-eslint/no-dynamic-delete": "error",
    "@typescript-eslint/no-confusing-void-expression": "error",
    "@typescript-eslint/no-mixed-enums": "error",
    "@typescript-eslint/prefer-enum-initializers": "error",
    "@typescript-eslint/no-throw-literal": "error",
    "@typescript-eslint/no-unnecessary-condition": "error",
    "@typescript-eslint/prefer-nullish-coalescing": "error",
    "@typescript-eslint/prefer-optional-chain": "error",
    "@typescript-eslint/prefer-ts-expect-error": "error",
    "@typescript-eslint/restrict-plus-operands": "error",
    "@typescript-eslint/restrict-template-expressions": "error",
    "@typescript-eslint/return-await": "error",
    "@typescript-eslint/strict-boolean-expressions": "error",
    "@typescript-eslint/switch-exhaustiveness-check": "error",
    "@typescript-eslint/init-declarations": [
      "error",
      "always"
    ],
    "@typescript-eslint/consistent-generic-constructors": [
      "error",
      "type-annotation"
    ],
    "@typescript-eslint/array-type": [
      "warn",
      {
        "default": "generic"
      }
    ],
    "@typescript-eslint/parameter-properties": [
      "warn",
      {
        "prefer": "parameter-property"
      }
    ],
    "@typescript-eslint/max-params": [
      "error",
      {
        "max": 3
      }
    ],
    "@typescript-eslint/consistent-type-imports": [
      "error",
      {
        "prefer": "type-imports",
        "fixStyle": "separate-type-imports"
      }
    ],
    "@typescript-eslint/method-signature-style": [
      "error",
      "property"
    ]
  }
}