Skip to content

Error in codeclimate: Configuration for rule "import/order" is invalid #498

Open
@SalmaKhater

Description

@SalmaKhater

Bug Template

Hey, I am having the issues with @typescript-eslint on codeclimate. Locally eslint works fine but it raises an error when running on codeclimate: Configuration for rule "import/order" is invalid.

Actual Behavior

No rules are configured. Make sure you have added a config file with rules enabled.
See our documentation at https://docs.codeclimate.com/docs/eslint for more information.
No rules are configured. Make sure you have added a config file with rules enabled.
See our documentation at https://docs.codeclimate.com/docs/eslint for more information.
No rules are configured. Make sure you have added a config file with rules enabled.
See our documentation at https://docs.codeclimate.com/docs/eslint for more information.
No rules are configured. Make sure you have added a config file with rules enabled.
See our documentation at https://docs.codeclimate.com/docs/eslint for more information.
Module not supported: prefer-arrow
/usr/local/node_modules/eslint/lib/shared/config-validator.js:138
            throw new Error(`${source}:\n\t${enhancedMessage}`);
            ^

Error: .eslintrc.js:
	Configuration for rule "import/order" is invalid:
	Value {"alphabetize":{"order":"asc","caseInsensitive":true},"groups":["external","builtin","index","sibling","parent","internal","object"]} should NOT have additional properties.

    at validateRuleOptions (/usr/local/node_modules/eslint/lib/shared/config-validator.js:138:19)
    at /usr/local/node_modules/eslint/lib/shared/config-validator.js:193:9
    at Array.forEach (<anonymous>)
    at validateRules (/usr/local/node_modules/eslint/lib/shared/config-validator.js:190:30)
    at validateConfigArray (/usr/local/node_modules/eslint/lib/shared/config-validator.js:337:9)
    at CascadingConfigArrayFactory._finalizeConfigArray (/usr/local/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js:392:13)
    at CascadingConfigArrayFactory.getConfigArrayForFile (/usr/local/node_modules/eslint/lib/cli-engine/cascading-config-array-factory.js:248:21)
    at FileEnumerator._iterateFilesWithFile (/usr/local/node_modules/eslint/lib/cli-engine/file-enumerator.js:321:43)
    at FileEnumerator._iterateFiles (/usr/local/node_modules/eslint/lib/cli-engine/file-enumerator.js:302:25)
    at FileEnumerator.iterateFiles (/usr/local/node_modules/eslint/lib/cli-engine/file-enumerator.js:254:59)

Expected Behavior

I expect to build to pass

Steps to reproduce

.codeclimate.yml

version: "2"
checks:
  argument-count:
    config:
      threshold: 8
  complex-logic:
    config:
      threshold: 10
  file-lines:
    config:
      threshold: 1000
  method-complexity:
    config:
      threshold: 10
  method-count:
    config:
      threshold: 20
  method-lines:
    config:
      threshold: 50
  nested-control-flow:
    config:
      threshold: 4
  return-statements:
    config:
      threshold: 4
  similar-code:
    enabled: false
    config:
      threshold: # language-specific defaults. an override will affect all languages.
  identical-code:
    enabled: true
    config:
      threshold: # language-specific defaults. an override will affect all languages.
plugins:
  eslint:
    enabled: true
    channel: "eslint-6"
  config:
    config: tsconfig.json
    extensions:
    - .js
    - .ts
  fixme:
    enabled: true
    config:
      strings:
      - FIXME
      - BUG
      - TODO
ratings:
  paths:
    - "src/**/*.ts"
exclude_patterns:
  - ".circleci/"
  - "__mocks__/"
  - "**/tests/"
  - "src/**/*.spec.ts"
  - "src/**/*.model.ts"
  - "docker/"
  - "node_modules/"
  - "**/documentation/"
  - "**/node_modules/"
  - "src/database/migrations/"
  - "src/seed.ts"
  - "src/scripts/"
  - "README.md"
  - "src/skill/fixtures.ts"
  - "src/shared/fixtures.ts"

.eslintrc

module.exports = {
  env: {
    browser: true,
    es6: true,
    node: true,
  },
  extends: [
    'plugin:@typescript-eslint/recommended',
    'plugin:@typescript-eslint/recommended-requiring-type-checking',
    'plugin:import/errors',
    'plugin:import/warnings',
    'plugin:import/typescript',
    'prettier/@typescript-eslint',
    'plugin:prettier/recommended', //Make sure this is always the last configuration in the extends array
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    project: 'tsconfig.eslint.json',
    sourceType: 'module',
  },
  plugins: ['@typescript-eslint', 'import', 'jsdoc', 'prefer-arrow'],
  settings: {
    'import/resolver': 'webpack',
  },
  rules: {
    '@typescript-eslint/adjacent-overload-signatures': 'error',
    '@typescript-eslint/array-type': 'off',
    '@typescript-eslint/await-thenable': 'off',
    '@typescript-eslint/ban-ts-comment': [
      'error',
      {
        'ts-ignore': false,
      },
    ],
    '@typescript-eslint/ban-types': [
      'error',
      {
        extendDefaults: false,
        types: {
          Object: {
            message: 'Avoid using the `Object` type. Did you mean `object`?',
          },
          Function: {
            message:
              'Avoid using the `Function` type. Prefer a specific function type, like `() => void`.',
          },
          Boolean: {
            message: 'Avoid using the `Boolean` type. Did you mean `boolean`?',
          },
          Number: {
            message: 'Avoid using the `Number` type. Did you mean `number`?',
          },
          String: {
            message: 'Avoid using the `String` type. Did you mean `string`?',
          },
          Symbol: {
            message: 'Avoid using the `Symbol` type. Did you mean `symbol`?',
          },
        },
      },
    ],
    '@typescript-eslint/consistent-type-assertions': 'error',
    '@typescript-eslint/dot-notation': 'error',
    '@typescript-eslint/explicit-member-accessibility': [
      'off',
      {
        accessibility: 'explicit',
      },
    ],
    '@typescript-eslint/explicit-module-boundary-types': 'warn',
    '@typescript-eslint/member-delimiter-style': [
      'error',
      {
        multiline: {
          delimiter: 'semi',
          requireLast: true,
        },
        singleline: {
          delimiter: 'semi',
          requireLast: false,
        },
      },
    ],
    '@typescript-eslint/member-ordering': 'off',
    '@typescript-eslint/naming-convention': [
      'error',
      {
        selector: 'enumMember',
        format: ['PascalCase', 'UPPER_CASE'],
      },
    ],
    '@typescript-eslint/no-array-constructor': 'error',
    '@typescript-eslint/no-empty-function': [
      'error',
      {
        allow: ['constructors'],
      },
    ],
    '@typescript-eslint/no-empty-interface': 'error',
    '@typescript-eslint/no-explicit-any': 'off',
    '@typescript-eslint/no-extra-non-null-assertion': 'error',
    '@typescript-eslint/no-extra-semi': 'error',
    '@typescript-eslint/no-floating-promises': 'off',
    '@typescript-eslint/no-for-in-array': 'error',
    '@typescript-eslint/no-implied-eval': 'error',
    '@typescript-eslint/no-inferrable-types': 'error',
    '@typescript-eslint/no-misused-new': 'error',
    '@typescript-eslint/no-misused-promises': 'error',
    '@typescript-eslint/no-namespace': 'error',
    '@typescript-eslint/no-non-null-asserted-optional-chain': 'error',
    '@typescript-eslint/no-non-null-assertion': 'warn',
    '@typescript-eslint/no-parameter-properties': 'off',
    '@typescript-eslint/no-this-alias': 'error',
    '@typescript-eslint/no-unnecessary-type-assertion': 'error',
    '@typescript-eslint/no-unsafe-assignment': 'off', //TODO rule no-unsafe-assignment
    '@typescript-eslint/no-unsafe-call': 'off', //TODO enable no-unsafe-call rule
    '@typescript-eslint/no-unsafe-member-access': 'off', //TODO enable no-unsafe-member-access rule
    '@typescript-eslint/no-unsafe-return': 'off',
    '@typescript-eslint/no-unused-expressions': 'off',
    '@typescript-eslint/no-unused-vars': 'warn',
    '@typescript-eslint/no-use-before-define': 'off',
    '@typescript-eslint/no-var-requires': 'error',
    '@typescript-eslint/prefer-as-const': 'error',
    '@typescript-eslint/prefer-for-of': 'error',
    '@typescript-eslint/prefer-function-type': 'error',
    '@typescript-eslint/prefer-namespace-keyword': 'error',
    '@typescript-eslint/prefer-regexp-exec': 'off',
    '@typescript-eslint/quotes': ['off', 'single'],
    '@typescript-eslint/require-await': 'off',
    '@typescript-eslint/restrict-plus-operands': 'off',
    '@typescript-eslint/restrict-template-expressions': [
      'off',
      {
        allowNumber: true,
        allowBoolean: true,
        allowAny: true,
        allowNullish: false,
      },
    ],
    '@typescript-eslint/semi': ['error', 'always'],
    '@typescript-eslint/triple-slash-reference': [
      'error',
      {
        path: 'always',
        types: 'prefer-import',
        lib: 'always',
      },
    ],
    '@typescript-eslint/unbound-method': 'off',
    '@typescript-eslint/unified-signatures': 'error',
    'arrow-parens': ['off', 'always'],
    'brace-style': ['error', '1tbs'],
    complexity: 'off',
    'constructor-super': 'error',
    curly: 'off',
    'eol-last': 'error',
    eqeqeq: ['error', 'smart'],
    'guard-for-in': 'error',
    'id-blacklist': [
      'error',
      'any',
      'Number',
      'number',
      'String',
      'string',
      'Boolean',
      'boolean',
      'Undefined',
      'undefined',
    ],
    'id-match': 'error',
    'import/no-unresolved': 2,
    'import/order': [
      'error',
      {
        alphabetize: {
          order: 'asc',
          caseInsensitive: true,
        },
        groups: [
          'external',
          'builtin',
          'index',
          'sibling',
          'parent',
          'internal',
          'object',
        ],
      },
    ],
    'jsdoc/check-alignment': 'error',
    'jsdoc/check-indentation': [
      'error',
      {
        excludeTags: ['example', 'description'],
      },
    ],
    'jsdoc/newline-after-description': 'error',
    'max-classes-per-file': ['error', 1],
    'max-len': [
      'error',
      {
        code: 150,
        ignoreComments: true,
      },
    ],
    'max-lines': ['error', 500],
    'new-parens': 'error',
    'no-array-constructor': 'off',
    'no-bitwise': 'error',
    'no-caller': 'error',
    'no-cond-assign': 'error',
    'no-console': [
      'error',
      {
        allow: [
          'dir',
          'time',
          'timeEnd',
          'timeLog',
          'trace',
          'assert',
          'clear',
          'count',
          'countReset',
          'group',
          'groupEnd',
          'table',
          'debug',
          'dirxml',
          'groupCollapsed',
          'Console',
          'profile',
          'profileEnd',
          'timeStamp',
          'context',
        ],
      },
    ],
    'no-debugger': 'error',
    'no-empty': 'error',
    'no-empty-function': 'off',
    'no-eval': 'error',
    'no-extra-semi': 'off',
    'no-fallthrough': 'off',
    'no-invalid-this': 'off',
    'no-new-wrappers': 'error',
    'no-shadow': [
      'off',
      {
        hoist: 'functions',
      },
    ],
    'no-throw-literal': 'error',
    'no-trailing-spaces': 'error',
    'no-undef-init': 'error',
    'no-underscore-dangle': 'off',
    'no-unsafe-finally': 'error',
    'no-unused-labels': 'error',
    'no-unused-vars': 'off',
    'no-var': 'error',
    'object-shorthand': 'error',
    'one-var': ['off', 'never'],
    'prefer-arrow/prefer-arrow-functions': 'off',
    'prefer-const': 'error',
    'quote-props': ['error', 'as-needed'],
    radix: 'error',
    'require-await': 'off',
    'spaced-comment': [
      'error',
      'always',
      {
        markers: ['/'],
      },
    ],
    'use-isnan': 'error',
    'valid-typeof': 'off',
  },
};

package.json

{
  "engines": {
    "node": "12.x.x"
  },
  "engineStrict": true,
  "dependencies": {
    "@google-cloud/debug-agent": "5.1.2",
    "@google-cloud/pubsub": "2.1.0",
    "@google-cloud/storage": "5.1.1",
    "@google-cloud/tasks": "2.0.1",
    "@hapi/joi": "17.1.1",
    "@nest-middlewares/cors": "6.0.1",
    "@nest-middlewares/helmet": "6.0.0",
    "@nest-middlewares/response-time": "6.0.0",
    "@nestcloud/schedule": "0.7.5",
    "@nestjs/common": "7.3.1",
    "@nestjs/core": "7.3.1",
    "@nestjs/graphql": "7.5.1",
    "@nestjs/platform-express": "7.3.1",
    "@nestjs/platform-socket.io": "7.3.1",
    "@nestjs/swagger": "4.5.12",
    "@nestjs/testing": "7.3.1",
    "@nestjs/websockets": "7.3.1",
    "@okta/jwt-verifier": "1.0.0",
    "@reactivex/rxjs": "6.6.0",
    "@slack/web-api": "5.10.0",
    "@types/chance": "1.1.0",
    "@types/express-jwt": "0.0.42",
    "@types/jsforce": "^1.9.17",
    "@types/lodash": "4.14.157",
    "@types/node": "14.0.14",
    "accesscontrol": "2.2.1",
    "acorn": "^7.3.1",
    "apollo-server-express": "2.15.1",
    "async": "3.2.0",
    "axios": "0.19.2",
    "body-parser": "1.19.0",
    "body-parser-xml": "^2.0.0",
    "by-node-env": "2.0.1",
    "chance": "1.1.6",
    "chart.js": "2.9.3",
    "chartjs-node-canvas": "3.0.6",
    "class-transformer": "0.3.1",
    "class-validator": "0.12.2",
    "colors": "1.4.0",
    "cpx": "1.5.0",
    "csv-parse": "4.10.1",
    "dd-trace": "0.22.1",
    "deepmerge": "4.2.2",
    "dotenv": "8.2.0",
    "express-jwt": "6.0.0",
    "form-data": "3.0.0",
    "googleapis": "52.1.0",
    "graphql": "15.3.0",
    "graphql-tools": "6.0.12",
    "graphql-type-json": "0.3.2",
    "hot-shots": "7.7.1",
    "inquirer": "7.3.0",
    "is-jpg": "2.0.0",
    "jsforce": "1.9.3",
    "jsonwebtoken": "8.5.1",
    "launchdarkly-node-server-sdk": "5.13.3",
    "lodash": "4.17.19",
    "moment": "2.27.0",
    "mustache": "4.0.1",
    "neo4j-driver": "4.1.0",
    "nest-schedule": "0.6.4",
    "nest-status-monitor": "0.1.3",
    "npm-run-all": "4.1.5",
    "pg": "8.2.1",
    "pushid": "1.0.0",
    "read-chunk": "3.2.0",
    "reflect-metadata": "0.1.13",
    "replace-in-file": "6.1.0",
    "request": "2.88",
    "rosie": "2.0.1",
    "rxjs": "6.6.0",
    "rxjs-compat": "6.6.0",
    "serialize-javascript": ">=4.0.0",
    "sinon": "9.0.2",
    "slonik": "^22.4.11",
    "slonik-interceptor-query-logging": "^1.3.8",
    "striptags": "3.1.1",
    "swagger-ui-express": "4.1.4",
    "trash-cli": "3.0.0",
    "typed-rest-client": "1.7.3",
    "typeorm": "0.2.25",
    "typescript": "3.9.6",
    "unirest": "0.6.0",
    "uuid": "8.2.0",
    "winston": "3.3.3"
  },
  "devDependencies": {
    "@types/body-parser-xml": "^1.1.0",
    "@types/express": "^4.17.6",
    "@types/got": "9.6.11",
    "@types/graphql": "14.5.0",
    "@types/graphql-type-json": "0.3.2",
    "@types/jest": "26.0.3",
    "@types/jsonwebtoken": "8.5.0",
    "@types/sinon": "9.0.4",
    "@types/slonik": "22.1.2",
    "@types/supertest": "2.0.10",
    "@typescript-eslint/eslint-plugin": "^3.8.0",
    "@typescript-eslint/parser": "^3.8.0",
    "audit-ci": "3.1.1",
    "envsub": "4.0.7",
    "eslint": "^7.6.0",
    "eslint-config-prettier": "^6.11.0",
    "eslint-import-resolver-webpack": "^0.12.2",
    "eslint-plugin-import": "^2.22.0",
    "eslint-plugin-jsdoc": "^30.2.0",
    "eslint-plugin-prefer-arrow": "^1.2.2",
    "eslint-plugin-prettier": "^3.1.4",
    "husky": "4.2.5",
    "jest": "26.1.0",
    "jest-junit": "11.0.1",
    "jest-runner-tsc": "1.6.0",
    "lint-staged": "10.2.11",
    "node-mocks-http": "1.8.1",
    "npm-check": "5.9.2",
    "prettier": "^2.0.5",
    "supertest": "4.0.2",
    "ts-jest": "26.1.1",
    "ts-loader": "7.0.5",
    "ts-node": "8.10.2",
    "ts-node-dev": "1.0.0-pre.50",
    "tsconfig-paths": "3.9.0",
    "webpack": "4.43.0",
    "webpack-cli": "3.3.12",
    "webpack-node-externals": "1.7.2"
  },
  "resolutions": {
    "**/**/handlebars": ">=4.5.2",
    "**/**/https-proxy-agent": ">=3.0.0",
    "**/**/dot-prop": ">=5.1.1",
    "**/**/elliptic": ">=6.5.3",
    "acorn": "^7.1.1",
    "braces": ">=2.3.1",
    "mem": ">=4.0.0",
    "serialize-javascript": ">=2.1.1",
    "tree-kill": ">=1.2.2",
    "minimist": ">=1.2.3"
  },
 "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "**/*.{ts,js,md,json}": "prettier --write"
  }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions