From 3f79ccaa2ad3a0088e9774de88cff8265c881827 Mon Sep 17 00:00:00 2001 From: C4illin Date: Mon, 5 Aug 2024 21:25:35 +0200 Subject: [PATCH] chore: Update eslint configuration and dependencies --- .eslintrc.cjs | 46 ---------------------------------------------- biome.json | 5 ++++- bun.lockb | Bin 166108 -> 169196 bytes eslint.config.mjs | 36 ++++++++++++++++++++++++++++++++++++ package.json | 21 +++++++++++++-------- tsconfig.json | 4 ++-- 6 files changed, 55 insertions(+), 57 deletions(-) delete mode 100644 .eslintrc.cjs create mode 100644 eslint.config.mjs diff --git a/.eslintrc.cjs b/.eslintrc.cjs deleted file mode 100644 index 38e07b3..0000000 --- a/.eslintrc.cjs +++ /dev/null @@ -1,46 +0,0 @@ -/** @type {import("eslint").Linter.Config} */ -const config = { - root: true, - parser: "@typescript-eslint/parser", - plugins: ["isaacscript", "import"], - extends: [ - "plugin:@typescript-eslint/recommended-type-checked", - "plugin:@typescript-eslint/stylistic-type-checked", - "plugin:prettier/recommended", - ], - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - tsconfigRootDir: __dirname, - project: ["./tsconfig.json"], - }, - overrides: [ - // Template files don't have reliable type information - { - extends: ["plugin:@typescript-eslint/disable-type-checked"], - }, - ], - rules: { - // These off/not-configured-the-way-we-want lint rules we like & opt into - "@typescript-eslint/no-explicit-any": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { argsIgnorePattern: "^_", destructuredArrayIgnorePattern: "^_" }, - ], - "@typescript-eslint/consistent-type-imports": [ - "error", - { prefer: "type-imports", fixStyle: "inline-type-imports" }, - ], - "import/consistent-type-specifier-style": ["error", "prefer-inline"], - - // For educational purposes we format our comments/jsdoc nicely - "isaacscript/complete-sentences-jsdoc": "warn", - "isaacscript/format-jsdoc-comments": "warn", - - // These lint rules don't make sense for us but are enabled in the preset configs - "@typescript-eslint/no-confusing-void-expression": "off", - "@typescript-eslint/restrict-template-expressions": "off", - }, -}; - -module.exports = config; diff --git a/biome.json b/biome.json index a8829cb..3ab38fb 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/1.7.3/schema.json", + "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", "formatter": { "enabled": true, "formatWithErrors": true, @@ -9,6 +9,9 @@ "lineWidth": 80, "attributePosition": "auto" }, + "files": { + "ignore": ["node_modules"] + }, "organizeImports": { "enabled": true }, "linter": { "enabled": true, diff --git a/bun.lockb b/bun.lockb index 48bbed2e2b4da6c7c7e396f5915a1da125777b1c..fedca7f797f46a4740ae0a2dc75e38658b4cbb58 100755 GIT binary patch delta 37437 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 z�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 BgTnv- delta 35754 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 D7*!x? diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..f43d771 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,36 @@ +import { fixupPluginRules } from "@eslint/compat"; +import tseslint from "typescript-eslint"; +import eslint from "@eslint/js"; +import deprecationPlugin from "eslint-plugin-deprecation"; +import eslintCommentsPlugin from "eslint-plugin-eslint-comments"; +import importPlugin from "eslint-plugin-import"; +import simpleImportSortPlugin from "eslint-plugin-simple-import-sort"; + +export default tseslint.config( + { + plugins: { + "@typescript-eslint": tseslint.plugin, + deprecation: fixupPluginRules(deprecationPlugin), + "eslint-comments": eslintCommentsPlugin, + import: fixupPluginRules(importPlugin), + "simple-import-sort": simpleImportSortPlugin, + }, + }, + { + ignores: ["**/node_modules/**", "**/public/**"], + }, + eslint.configs.recommended, + ...tseslint.configs.recommendedTypeChecked, + ...tseslint.configs.stylisticTypeChecked, + { + languageOptions: { + parserOptions: { + projectService: true, + tsconfigRootDir: import.meta.dirname, + ecmaVersion: "latest", + sourceType: "module", + project: ["./tsconfig.json"], + }, + }, + }, +); diff --git a/package.json b/package.json index d9ca354..934da9b 100644 --- a/package.json +++ b/package.json @@ -8,14 +8,15 @@ "css": "cpy 'node_modules/@picocss/pico/css/pico.lime.min.css' 'src/public/' --flat", "lint": "run-p 'lint:*'", "lint:tsc": "tsc --noEmit", - "lint:knip": "knip" + "lint:knip": "knip", + "lint:biome": "biome lint --error-on-warnings ./src" }, "dependencies": { "@elysiajs/cookie": "^0.8.0", "@elysiajs/html": "1.0.2", "@elysiajs/jwt": "^1.1.0", "@elysiajs/static": "1.0.3", - "elysia": "^1.1.4" + "elysia": "^1.1.5" }, "module": "src/index.tsx", "type": "module", @@ -24,6 +25,8 @@ }, "devDependencies": { "@biomejs/biome": "1.8.3", + "@eslint/compat": "^1.1.1", + "@eslint/js": "^9.8.0", "@ianvs/prettier-plugin-sort-imports": "^4.3.1", "@kitajs/ts-html-plugin": "^4.0.2", "@picocss/pico": "^2.0.6", @@ -31,20 +34,22 @@ "@types/bun": "^1.1.6", "@types/eslint": "^9.6.0", "@types/node": "^22.1.0", - "@typescript-eslint/eslint-plugin": "^8.0.0", - "@typescript-eslint/parser": "^8.0.0", + "@typescript-eslint/eslint-plugin": "^8.0.1", + "@typescript-eslint/parser": "^8.0.1", "cpy-cli": "^5.0.0", "eslint": "^9.8.0", "eslint-config-prettier": "^9.1.0", + "eslint-plugin-deprecation": "^3.0.0", + "eslint-plugin-eslint-comments": "^3.2.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-isaacscript": "^3.12.2", "eslint-plugin-prettier": "^5.2.1", + "eslint-plugin-simple-import-sort": "^12.1.1", "knip": "^5.27.0", "npm-run-all": "^4.1.5", "prettier": "^3.3.3", - "typescript": "^5.5.4" + "typescript": "^5.5.4", + "typescript-eslint": "^8.0.1" }, - "trustedDependencies": [ - "@biomejs/biome" - ] + "trustedDependencies": ["@biomejs/biome"] } diff --git a/tsconfig.json b/tsconfig.json index 6547452..e88c4a9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,8 @@ { "compilerOptions": { "lib": ["ESNext"], - "module": "esnext", - "target": "esnext", + "module": "ESNext", + "target": "ES2021", "moduleResolution": "bundler", "moduleDetection": "force", "allowImportingTsExtensions": true,