Skip to content

Commit

Permalink
Updated eslint to v9 (#145)
Browse files Browse the repository at this point in the history
* chore: Updated dependencies

* chore: Updated @shared-configs/eslint-config-node

* chore: Updated eslint to v9

* chore: Fixed lint errors

* chore: Enforced ESM

* chore: Added lockfile

* chore: Added changeset

---------

Co-authored-by: ijlee2 <ijlee2@users.noreply.github.com>
  • Loading branch information
ijlee2 and ijlee2 authored Feb 4, 2025
1 parent f2c9da2 commit d0ec787
Show file tree
Hide file tree
Showing 62 changed files with 979 additions and 823 deletions.
12 changes: 12 additions & 0 deletions .changeset/heavy-pants-fry.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"@codemod-utils/ast-javascript": patch
"@codemod-utils/ast-template": patch
"@codemod-utils/blueprints": patch
"@codemod-utils/ember": patch
"@codemod-utils/files": patch
"@codemod-utils/tests": patch
"@codemod-utils/json": patch
"@codemod-utils/cli": patch
---

Updated eslint to v9
7 changes: 0 additions & 7 deletions configs/eslint/node/.eslintrc.js

This file was deleted.

File renamed without changes.
3 changes: 3 additions & 0 deletions configs/eslint/node/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import eslintConfigNodeJavascript from './javascript/index.js';

export default [...eslintConfigNodeJavascript];
115 changes: 81 additions & 34 deletions configs/eslint/node/javascript/index.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,88 @@
'use strict';
import babelEslintParser from '@babel/eslint-parser';
import eslint from '@eslint/js';
import eslintPluginImport from 'eslint-plugin-import';
import eslintPluginN from 'eslint-plugin-n';
import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
import eslintPluginSimpleImportSort from 'eslint-plugin-simple-import-sort';
import globals from 'globals';

module.exports = {
root: true,
parser: '@babel/eslint-parser',
parserOptions: {
ecmaVersion: 'latest',
requireConfigFile: false,
sourceType: 'module',
const parserOptionsJs = {
babelOptions: {
plugins: [
[
'@babel/plugin-proposal-decorators',
{
decoratorsBeforeExport: true,
},
],
],
},
plugins: ['simple-import-sort'],
extends: [
'eslint:recommended',
'plugin:import/recommended',
'plugin:n/recommended',
'plugin:prettier/recommended',
],
rules: {
curly: 'error',
'simple-import-sort/exports': 'error',
'simple-import-sort/imports': 'error',
ecmaFeatures: {
modules: true,
},
overrides: [
// JavaScript files
{
files: ['**/*.{cjs,js}'],
rules: {
'import/no-duplicates': 'error',
ecmaVersion: 'latest',
requireConfigFile: false,
};

export default [
{
linterOptions: {
reportUnusedDisableDirectives: 'error',
},
},
{
plugins: {
'simple-import-sort': eslintPluginSimpleImportSort,
},
rules: {
curly: 'error',
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},

eslint.configs.recommended,
eslintPluginImport.flatConfigs.recommended,
eslintPluginPrettier,

// JavaScript files
{
files: ['**/*.js'],
languageOptions: {
parser: babelEslintParser,
parserOptions: parserOptionsJs,
},
rules: {
'import/no-duplicates': 'error',
},
},

// Node files
{
files: ['**/*.cjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
sourceType: 'script',
},
plugins: {
n: eslintPluginN,
},
// Node files
{
files: ['./.eslintrc.{cjs,js}', './.prettierrc.{cjs,js}'],
env: {
browser: false,
node: true,
},
{
files: ['**/*.mjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
extends: ['plugin:n/recommended'],
parserOptions: parserOptionsJs,
sourceType: 'module',
},
],
};
plugins: {
n: eslintPluginN,
},
},
];
23 changes: 13 additions & 10 deletions configs/eslint/node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,38 @@
"url": "git@github.com:ijlee2/codemod-utils.git"
},
"author": "Isaac J. Lee",
"type": "module",
"main": "typescript/index.js",
"scripts": {
"lint": "concurrently \"pnpm:lint:*(!fix)\" --names \"lint:\"",
"lint:fix": "concurrently \"pnpm:lint:*:fix\" --names \"fix:\"",
"lint:js": "prettier --check \"**/*.js\"",
"lint:js:fix": "prettier --write \"**/*.js\""
"lint:js": "eslint . --cache",
"lint:js:fix": "eslint . --fix"
},
"dependencies": {
"@babel/core": "^7.26.0",
"@babel/core": "^7.26.7",
"@babel/eslint-parser": "^7.26.5",
"@rushstack/eslint-patch": "^1.10.5",
"@typescript-eslint/eslint-plugin": "^8.20.0",
"@typescript-eslint/parser": "^8.20.0",
"@babel/plugin-proposal-decorators": "^7.25.9",
"@eslint/js": "^9.19.0",
"eslint-config-prettier": "^10.0.1",
"eslint-import-resolver-typescript": "^3.7.0",
"eslint-plugin-import": "^2.31.0",
"eslint-plugin-n": "^17.15.1",
"eslint-plugin-prettier": "^5.2.2",
"eslint-plugin-prettier": "^5.2.3",
"eslint-plugin-simple-import-sort": "^12.1.1",
"eslint-plugin-typescript-sort-keys": "^3.3.0"
"eslint-plugin-typescript-sort-keys": "^3.3.0",
"globals": "^15.14.0",
"typescript-eslint": "^8.23.0"
},
"devDependencies": {
"@shared-configs/prettier": "workspace:*",
"@types/eslint__js": "^8.42.3",
"concurrently": "^9.1.2",
"eslint": "^8.57.1",
"eslint": "^9.19.0",
"prettier": "^3.4.2"
},
"peerDependencies": {
"eslint": "^8.57.1",
"eslint": "^9.19.0",
"prettier": "^3.4.2",
"typescript": "^5.7.3"
},
Expand Down
19 changes: 0 additions & 19 deletions configs/eslint/node/patch.js

This file was deleted.

171 changes: 117 additions & 54 deletions configs/eslint/node/typescript/index.js
Original file line number Diff line number Diff line change
@@ -1,62 +1,125 @@
'use strict';
import babelEslintParser from '@babel/eslint-parser';
import eslint from '@eslint/js';
import eslintPluginImport from 'eslint-plugin-import';
import eslintPluginN from 'eslint-plugin-n';
import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
import eslintPluginSimpleImportSort from 'eslint-plugin-simple-import-sort';
import eslintPluginTypescriptSortKeys from 'eslint-plugin-typescript-sort-keys';
import globals from 'globals';
// eslint-disable-next-line import/no-unresolved
import tseslint from 'typescript-eslint';

module.exports = {
root: true,
parserOptions: {
ecmaVersion: 'latest',
project: true,
sourceType: 'module',
},
plugins: ['simple-import-sort'],
extends: [
'eslint:recommended',
'plugin:import/recommended',
'plugin:n/recommended',
'plugin:prettier/recommended',
],
rules: {
curly: 'error',
'simple-import-sort/exports': 'error',
'simple-import-sort/imports': 'error',
},
settings: {
'import/resolver': {
node: true,
typescript: true,
},
},
overrides: [
// TypeScript files
{
files: ['**/*.{cts,ts}'],
parser: '@typescript-eslint/parser',
extends: [
'plugin:@typescript-eslint/recommended',
'plugin:import/typescript',
'plugin:typescript-sort-keys/recommended',
const parserOptionsJs = {
babelOptions: {
plugins: [
[
'@babel/plugin-proposal-decorators',
{
decoratorsBeforeExport: true,
},
],
rules: {
'@typescript-eslint/array-type': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'@typescript-eslint/no-import-type-side-effects': 'error',
'import/no-duplicates': 'error',
],
},
ecmaFeatures: {
modules: true,
},
ecmaVersion: 'latest',
requireConfigFile: false,
};

const parserOptionsTs = {
projectService: true,
tsconfigRootDir: import.meta.dirname,
};

export default tseslint.config(
{
linterOptions: {
reportUnusedDisableDirectives: 'error',
},
},
{
plugins: {
'simple-import-sort': eslintPluginSimpleImportSort,
},
rules: {
curly: 'error',
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},

eslint.configs.recommended,
eslintPluginImport.flatConfigs.recommended,
eslintPluginPrettier,

// JavaScript files
{
files: ['**/*.js'],
languageOptions: {
parser: babelEslintParser,
parserOptions: parserOptionsJs,
},
rules: {
'import/no-duplicates': 'error',
},
},

// TypeScript files
{
extends: [
...tseslint.configs.recommended,
eslintPluginImport.flatConfigs.typescript,
],
files: ['**/*.ts'],
languageOptions: {
parserOptions: parserOptionsTs,
},
plugins: {
'typescript-sort-keys': eslintPluginTypescriptSortKeys,
},
rules: {
'@typescript-eslint/array-type': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'@typescript-eslint/no-import-type-side-effects': 'error',
'import/no-duplicates': 'error',
'typescript-sort-keys/interface': 'error',
'typescript-sort-keys/string-enum': 'error',
},
settings: {
'import/resolver': {
node: true,
typescript: true,
},
},
// JavaScript files
{
files: ['**/*.{cjs,js}'],
rules: {
'import/no-duplicates': 'error',
},

// Node files
{
files: ['**/*.cjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
sourceType: 'script',
},
// Node files
{
files: ['./.eslintrc.{cjs,js}', './.prettierrc.{cjs,js}'],
env: {
browser: false,
node: true,
plugins: {
n: eslintPluginN,
},
},
{
files: ['**/*.mjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
extends: ['plugin:n/recommended'],
parserOptions: parserOptionsJs,
sourceType: 'module',
},
],
};
plugins: {
n: eslintPluginN,
},
},
);
File renamed without changes.
Loading

0 comments on commit d0ec787

Please sign in to comment.