From 9a4fc948fc4a94874fe1d6f4c0aa70d53dd444e5 Mon Sep 17 00:00:00 2001 From: Arie Trouw Date: Fri, 31 Jan 2025 17:07:14 -0800 Subject: [PATCH] SonarJS including deprecated rule --- packages/eslint-config-flat/src/index.ts | 3 ++- packages/eslint-config-flat/src/markdown/index.ts | 2 +- packages/eslint-config-flat/src/rules/index.ts | 2 +- packages/eslint-config-flat/src/sonar/index.ts | 14 ++++++++++++-- packages/eslint-config-flat/src/unicorn/index.ts | 2 +- .../eslint-config-flat/src/workspaces/index.ts | 2 +- packages/ts-scripts-yarn3/src/actions/license.ts | 8 ++++---- .../ts-scripts-yarn3/src/actions/lint-clean.ts | 4 ++-- .../src/actions/package/clean-outputs.ts | 6 ++++-- .../src/actions/package/clean-typescript.ts | 6 ++++-- .../src/lib/generateIgnoreFiles.ts | 4 +++- packages/ts-scripts-yarn3/src/lib/withError.ts | 2 +- 12 files changed, 36 insertions(+), 19 deletions(-) diff --git a/packages/eslint-config-flat/src/index.ts b/packages/eslint-config-flat/src/index.ts index 56eaed4c..f6aefc1c 100644 --- a/packages/eslint-config-flat/src/index.ts +++ b/packages/eslint-config-flat/src/index.ts @@ -4,6 +4,7 @@ import { importConfig } from './import/index.ts' // import { markdownConfig } from './markdown/index.ts' // import { prettierConfig } from './prettier/index.ts' import { rulesConfig } from './rules/index.ts' +import { sonarConfig } from './sonar/index.ts' // import { sonarConfig } from './sonar/index.ts' import { typescriptConfig } from './typescript/index.ts' import { unicornConfig } from './unicorn/index.ts' @@ -17,7 +18,7 @@ export const config: Linter.Config[] = [ rulesConfig, // prettierConfig, importConfig, - // sonarConfig + sonarConfig, ] export { importConfig } from './import/index.ts' diff --git a/packages/eslint-config-flat/src/markdown/index.ts b/packages/eslint-config-flat/src/markdown/index.ts index fb5950b2..d691d67f 100644 --- a/packages/eslint-config-flat/src/markdown/index.ts +++ b/packages/eslint-config-flat/src/markdown/index.ts @@ -1,7 +1,7 @@ import type { ESLint, Linter } from 'eslint' import mdPlugin from 'eslint-plugin-md' -export const markdownConfig: Linter.FlatConfig = { +export const markdownConfig: Linter.Config = { ignores: ['.yarn/**', 'jest.config.cjs', '**/dist/**', 'dist', 'build/**', 'node_modules/**'], files: ['*.md'], processor: 'md/markdown', diff --git a/packages/eslint-config-flat/src/rules/index.ts b/packages/eslint-config-flat/src/rules/index.ts index 9f66f05e..58c9ef14 100644 --- a/packages/eslint-config-flat/src/rules/index.ts +++ b/packages/eslint-config-flat/src/rules/index.ts @@ -1,6 +1,6 @@ import type { Linter } from 'eslint' -export const rulesConfig: Linter.FlatConfig = { +export const rulesConfig: Linter.Config = { ignores: ['.yarn/**', 'jest.config.cjs', '**/dist/**', 'dist', 'build/**', 'node_modules/**'], rules: { 'complexity': ['error', 18], diff --git a/packages/eslint-config-flat/src/sonar/index.ts b/packages/eslint-config-flat/src/sonar/index.ts index 253213ca..acce0489 100644 --- a/packages/eslint-config-flat/src/sonar/index.ts +++ b/packages/eslint-config-flat/src/sonar/index.ts @@ -1,11 +1,21 @@ import type { Linter } from 'eslint' import sonarjsPlugin from 'eslint-plugin-sonarjs' +const { rules, ...recommended } = sonarjsPlugin.configs.recommended + export const sonarConfig: Linter.Config = { ignores: ['.yarn/**', 'jest.config.cjs', '**/dist/**', 'dist', 'build/**', 'node_modules/**'], - ...sonarjsPlugin.configs, + ...recommended, rules: { - ...sonarjsPlugin.configs.recommended.rules, + ...rules, 'sonarjs/no-small-switch': ['off'], + 'sonarjs/os-command': ['off'], + 'sonarjs/no-os-command-from-path': ['off'], + 'sonarjs/no-nested-conditional': ['off'], + 'sonarjs/todo-tag': ['warn'], + 'sonarjs/deprecation': ['warn'], + 'sonarjs/cognitive-complexity': ['warn'], + 'sonarjs/no-nested-functions': ['off'], + 'sonarjs/function-return-type': ['warn'], }, } diff --git a/packages/eslint-config-flat/src/unicorn/index.ts b/packages/eslint-config-flat/src/unicorn/index.ts index b04f5436..5fcbbcb9 100644 --- a/packages/eslint-config-flat/src/unicorn/index.ts +++ b/packages/eslint-config-flat/src/unicorn/index.ts @@ -1,7 +1,7 @@ import type { ESLint, Linter } from 'eslint' import unicornPlugin from 'eslint-plugin-unicorn' -export const unicornConfig: Linter.FlatConfig = { +export const unicornConfig: Linter.Config = { ignores: ['.yarn/**', 'jest.config.cjs', '**/dist/**', 'dist', 'build/**', 'node_modules/**'], plugins: { unicorn: unicornPlugin as ESLint.Plugin }, rules: { diff --git a/packages/eslint-config-flat/src/workspaces/index.ts b/packages/eslint-config-flat/src/workspaces/index.ts index d0ac7c83..ed9dc0f8 100644 --- a/packages/eslint-config-flat/src/workspaces/index.ts +++ b/packages/eslint-config-flat/src/workspaces/index.ts @@ -1,7 +1,7 @@ import type { ESLint, Linter } from 'eslint' import workspacesPlugin from 'eslint-plugin-workspaces' -export const workspacesConfig: Linter.FlatConfig = { +export const workspacesConfig: Linter.Config = { ignores: ['.yarn/**', 'jest.config.cjs', '**/dist/**', 'dist', 'build/**', 'node_modules/**'], plugins: { workspaces: workspacesPlugin as ESLint.Plugin }, rules: { diff --git a/packages/ts-scripts-yarn3/src/actions/license.ts b/packages/ts-scripts-yarn3/src/actions/license.ts index d6f33b89..ed1d95c4 100644 --- a/packages/ts-scripts-yarn3/src/actions/license.ts +++ b/packages/ts-scripts-yarn3/src/actions/license.ts @@ -49,11 +49,11 @@ export const license = async (pkg?: string) => { for (let license of licenses) { if (license) { // remove surrounding parens on some string - if (license[0] === '(' && license.at(-1) === ')') { - license = license.slice(1, -2) - } + const processedLicense = (license[0] === '(' && license.at(-1) === ')') + ? license.slice(1, -2) + : license // get list of OR licenses from string - const orLicenses = license.split(' OR ') + const orLicenses = processedLicense.split(' OR ') let orLicenseFound = false for (const orLicense of orLicenses) { if (exclude.has(orLicense)) { diff --git a/packages/ts-scripts-yarn3/src/actions/lint-clean.ts b/packages/ts-scripts-yarn3/src/actions/lint-clean.ts index 14e06c53..36771af4 100644 --- a/packages/ts-scripts-yarn3/src/actions/lint-clean.ts +++ b/packages/ts-scripts-yarn3/src/actions/lint-clean.ts @@ -3,7 +3,7 @@ import { rmSync } from 'node:fs' import { yarnWorkspaces } from '../lib/index.ts' import { lint } from './lint.ts' -export const lintClean = () => { +export const lintClean = async () => { console.log('Lint Clean [.eslintcache]') const workspaces = yarnWorkspaces() const result = workspaces @@ -20,5 +20,5 @@ export const lintClean = () => { }) // eslint-disable-next-line unicorn/no-array-reduce .reduce((prev, result) => prev || result, 0) - return result || lint() + return result || await lint() } diff --git a/packages/ts-scripts-yarn3/src/actions/package/clean-outputs.ts b/packages/ts-scripts-yarn3/src/actions/package/clean-outputs.ts index 5124d81d..6dd8407a 100644 --- a/packages/ts-scripts-yarn3/src/actions/package/clean-outputs.ts +++ b/packages/ts-scripts-yarn3/src/actions/package/clean-outputs.ts @@ -4,13 +4,15 @@ import chalk from 'chalk' import { deleteGlob } from '../../lib/index.ts' -export const packageCleanOutputs = async () => { +export const packageCleanOutputs = () => { const pkg = process.env.INIT_CWD ?? '.' const pkgName = process.env.npm_package_name const folders: string[] = [path.join(pkg, 'dist'), path.join(pkg, 'build'), path.join(pkg, 'docs')] console.log(chalk.green(`Cleaning Outputs [${pkgName}]`)) - await Promise.all(folders.map(folder => deleteGlob(folder))) + for (let folder of folders) { + deleteGlob(folder) + } return 0 } diff --git a/packages/ts-scripts-yarn3/src/actions/package/clean-typescript.ts b/packages/ts-scripts-yarn3/src/actions/package/clean-typescript.ts index 07f7cede..b2b7fe98 100644 --- a/packages/ts-scripts-yarn3/src/actions/package/clean-typescript.ts +++ b/packages/ts-scripts-yarn3/src/actions/package/clean-typescript.ts @@ -4,13 +4,15 @@ import chalk from 'chalk' import { deleteGlob } from '../../lib/index.ts' -export const packageCleanTypescript = async () => { +export const packageCleanTypescript = () => { const pkg = process.env.INIT_CWD ?? '.' const pkgName = process.env.npm_package_name console.log(chalk.green(`Cleaning Typescript [${pkgName}]`)) const files: string[] = [path.join(pkg, '*.tsbuildinfo'), path.join(pkg, '.tsconfig.*'), path.join(pkg, '.eslintcache')] - await Promise.all(files.map(file => deleteGlob(file))) + for (let file of files) { + deleteGlob(file) + } return 0 } diff --git a/packages/ts-scripts-yarn3/src/lib/generateIgnoreFiles.ts b/packages/ts-scripts-yarn3/src/lib/generateIgnoreFiles.ts index 515b5aa3..d54c767d 100644 --- a/packages/ts-scripts-yarn3/src/lib/generateIgnoreFiles.ts +++ b/packages/ts-scripts-yarn3/src/lib/generateIgnoreFiles.ts @@ -6,7 +6,9 @@ import { INIT_CWD, yarnWorkspace, yarnWorkspaces, } from './yarn/index.ts' -const mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].sort() +const localeCompare = (a: string, b: string) => a.localeCompare(b) + +const mergeEntries = (a: string[], b: string[]): string[] => [...union(a, b)].sort(localeCompare) export const generateIgnoreFiles = (filename: string, pkg?: string) => { console.log(chalk.green(`Generate ${filename} Files`)) diff --git a/packages/ts-scripts-yarn3/src/lib/withError.ts b/packages/ts-scripts-yarn3/src/lib/withError.ts index aaaae7da..9c13c67f 100644 --- a/packages/ts-scripts-yarn3/src/lib/withError.ts +++ b/packages/ts-scripts-yarn3/src/lib/withError.ts @@ -2,7 +2,7 @@ export const withError = ( // eslint-disable-next-line @typescript-eslint/no-explicit-any ex: any, closure: (error: T) => number, - predicate = (ex: T) => ex.name !== undefined && ex.message !== undefined, + predicate = (ex: T) => (!!ex.name && !!ex.message), ) => { return predicate(ex as T) ? closure(ex as T) : undefined }