Skip to content

Commit

Permalink
chore: switch to eslint v9.9.1
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff MAURY <[email protected]>
  • Loading branch information
jeffmaury committed Sep 4, 2024
1 parent 4045f10 commit 44d848d
Show file tree
Hide file tree
Showing 18 changed files with 900 additions and 244 deletions.
4 changes: 0 additions & 4 deletions .eslintignore

This file was deleted.

90 changes: 0 additions & 90 deletions .eslintrc.json

This file was deleted.

220 changes: 220 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
/**********************************************************************
* Copyright (C) 2024 Red Hat, 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.
*
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/

import globals from 'globals';
import js from '@eslint/js';
import typescriptLint from 'typescript-eslint';
import tsParser from '@typescript-eslint/parser';
import importPlugin from 'eslint-plugin-import';
import { fixupConfigRules, fixupPluginRules } from '@eslint/compat';
import { fileURLToPath } from 'node:url';
import path from 'node:path';
import { FlatCompat } from '@eslint/eslintrc';
import unicorn from 'eslint-plugin-unicorn';
import noNull from 'eslint-plugin-no-null';
import sonarjs from 'eslint-plugin-sonarjs';
import etc from 'eslint-plugin-etc';
import redundantUndefined from 'eslint-plugin-redundant-undefined';
import simpleImportSort from 'eslint-plugin-simple-import-sort';
import fileProgress from 'eslint-plugin-file-progress';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});

const TYPESCRIPT_PROJECTS = [
'./tsconfig.json',
];

export default [
{
ignores: [
'*.config.*js',
'**/*.config.*js',
'**/dist/**/*',
'**/test-resources',
'**/__mocks__/',
'**/coverage/',
'extensions/*.ts',
'scripts/**',
],
},
js.configs.recommended,
...typescriptLint.configs.recommended,
sonarjs.configs.recommended,
...fixupConfigRules(
compat.extends('plugin:import/recommended', 'plugin:import/typescript', 'plugin:etc/recommended'),
),
{
plugins: {
// compliant v9 plug-ins
unicorn,
'file-progress': fileProgress,
// non-compliant v9 plug-ins
etc: fixupPluginRules(etc),
import: fixupPluginRules(importPlugin),
'no-null': fixupPluginRules(noNull),
'redundant-undefined': fixupPluginRules(redundantUndefined),
'simple-import-sort': fixupPluginRules(simpleImportSort),
},
settings: {
'import/resolver': {
typescript: true,
node: true,

'eslint-import-resolver-custom-alias': {
alias: {
'/@': './src',
'/@gen': './src-generated',
},

extensions: ['.ts'],
packages: ['packages/*', 'extensions/*'],
},
},
'file-progress/activate': {
progress: {
hide: false,
successMessage: 'Lint done...',
},
},
},
},
{
linterOptions: {
reportUnusedDisableDirectives: 'off',
},
languageOptions: {
globals: {
...globals.node,
},
// parser: tsParser,
sourceType: 'module',
parserOptions: {
warnOnUnsupportedTypeScriptVersion: false,
project: TYPESCRIPT_PROJECTS,
},
},
},
{
rules: {
eqeqeq: 'error',
'prefer-promise-reject-errors': 'error',
semi: ['error', 'always'],
'comma-dangle': ['warn', 'always-multiline'],

quotes: [
'error',
'single',
{
allowTemplateLiterals: true,
},
],

'@typescript-eslint/explicit-function-return-type': 'off',
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_', caughtErrors: 'none' }],
'@typescript-eslint/no-var-requires': 'off',
'@typescript-eslint/consistent-type-imports': 'error',
'@typescript-eslint/no-explicit-any': 'error',
'@typescript-eslint/await-thenable': 'error',
'@typescript-eslint/no-floating-promises': ['error', { ignoreVoid: false }],
'@typescript-eslint/no-misused-promises': 'error',
'@typescript-eslint/prefer-optional-chain': 'error',
'@typescript-eslint/explicit-function-return-type': 'error',
'@typescript-eslint/prefer-nullish-coalescing': [
'error',
{
ignoreConditionalTests: true,
},
],
'@typescript-eslint/no-require-imports': 'off',

'file-progress/activate': 'warn',

// disabled import/namespace rule as the plug-in is not fully compatible using the compat mode
'import/namespace': 'off',
'import/no-duplicates': 'error',
'import/no-unresolved': 'off',
'import/default': 'off',
'import/no-named-as-default-member': 'off',
'import/no-named-as-default': 'off',
'import/first': 'error',
'import/newline-after-import': 'error',
'import/no-extraneous-dependencies': 'error',

// unicorn custom rules
'unicorn/prefer-node-protocol': 'error',

// sonarjs custom rules
'sonarjs/cognitive-complexity': 'off',
'sonarjs/no-duplicate-string': 'off',
'sonarjs/no-empty-collection': 'off',
'sonarjs/no-small-switch': 'off',
// redundant with @typescript-eslint/no-unused-vars
'sonarjs/no-ignored-exceptions': 'off',
'sonarjs/no-nested-functions': 'off',
'sonarjs/todo-tag': 'off',
'sonarjs/no-nested-functions': 'off',
'sonarjs/sonar-max-params': 'off',
'sonarjs/no-nested-conditional': 'off',
'sonarjs/no-empty-function': 'off',
'sonarjs/no-base-to-string': 'off',
'sonarjs/unnecessary-character-escapes': 'off',
'sonarjs/different-types-comparison': 'off',
'sonarjs/new-cap': 'off',
'sonarjs/no-invariant-returns': 'off',
'sonarjs/updated-loop-counter': 'off',
'sonarjs/no-redundant-type-constituents': 'off',
'sonarjs/function-return-type': 'off',
'sonarjs/no-lonely-if': 'off',
'sonarjs/deprecation': 'off',
'sonarjs/use-type-alias': 'off',

// failing with the AST parser
'sonarjs/sonar-no-fallthrough': 'off',
'sonarjs/prefer-enum-initializers': 'off',

// etc custom rules
'etc/no-deprecated': 'off',
// disable this rule as it's not compliant with eslint v9
'etc/no-commented-out-code': 'off',

// redundant-undefined custom rules
'redundant-undefined/redundant-undefined': 'error',

// simple-import-sort custom rules
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},

{
files: ['**/*.spec.ts'],

rules: {
'sonarjs/no-hardcoded-ip': 'off',
'sonarjs/no-clear-text-protocols': 'off',
'sonarjs/slow-regex': 'off',
'sonarjs/publicly-writable-directories': 'off',
},
},
];
12 changes: 9 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,8 @@
"test:watch": "vitest watch --coverage",
"format:check": "prettier --check \"src/**/*.ts\"",
"format:fix": "prettier --write \"src/**/*.ts\"",
"lint:check": "eslint . --ext js,ts,tsx",
"lint:fix": "eslint . --fix --ext js,ts,tsx",
"lint:check": "eslint .",
"lint:fix": "eslint . --fix",
"watch": "vite build -w"
},
"dependencies": {
Expand All @@ -84,20 +84,26 @@
},
"devDependencies": {
"7zip-min": "^1.4.5",
"@eslint/compat": "^1.1.1",
"@podman-desktop/api": "^1.12.0",
"@typescript-eslint/eslint-plugin": "^7.0.0",
"@typescript-eslint/parser": "^6.21.0",
"@vitest/coverage-v8": "^2.0.5",
"eslint": "^8.57.0",
"eslint": "^9.9.1",
"eslint-import-resolver-custom-alias": "^1.3.2",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-etc": "^2.0.3",
"eslint-plugin-file-progress": "^1.5.0",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-no-null": "^1.0.2",
"eslint-plugin-redundant-undefined": "^1.0.0",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-sonarjs": "^1.0.4",
"eslint-plugin-unicorn": "^55.0.0",
"mkdirp": "^3.0.1",
"prettier": "^3.3.3",
"typescript": "5.5.4",
"typescript-eslint": "^8.2.0",
"validator": "^13.12.0",
"vite": "^5.4.3",
"vitest": "^2.0.5"
Expand Down
7 changes: 4 additions & 3 deletions src/create-cluster.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,12 @@
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/

import { beforeEach, expect, test, vi } from 'vitest';
import type { Mock } from 'vitest';
import { createCluster } from './create-cluster';
import type { TelemetryLogger } from '@podman-desktop/api';
import * as extensionApi from '@podman-desktop/api';
import type { Mock } from 'vitest';
import { beforeEach, expect, test, vi } from 'vitest';

import { createCluster } from './create-cluster';

vi.mock('@podman-desktop/api', async () => {
return {
Expand Down
6 changes: 3 additions & 3 deletions src/create-cluster.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,11 @@
*
* SPDX-License-Identifier: Apache-2.0
***********************************************************************/
import { getMinikubePath, getMinikubeHome } from './util';

import type { Logger, TelemetryLogger, CancellationToken } from '@podman-desktop/api';
import type { CancellationToken, Logger, TelemetryLogger } from '@podman-desktop/api';
import { process as processApi } from '@podman-desktop/api';

import { getMinikubeHome, getMinikubePath } from './util';

export async function createCluster(
// eslint-disable-next-line @typescript-eslint/no-explicit-any
params: { [key: string]: any },
Expand Down
Loading

0 comments on commit 44d848d

Please sign in to comment.