From a285d5953e36062af28db681e54e2f037cd0c020 Mon Sep 17 00:00:00 2001
From: Jens Simon <jens.simon80@googlemail.com>
Date: Sun, 5 Jan 2025 00:07:31 +0100
Subject: [PATCH] chore(deps): use flat config

---
 .eslintignore         |  1 -
 .gitignore            |  3 ++
 commitlint.config.js  |  1 -
 commitlint.config.mjs |  1 +
 eslint.config.mjs     | 36 +++++++++++-----
 package.json          | 26 ++----------
 tsconfig.json         |  3 +-
 yarn.lock             | 98 ++++++++++++++++++++++++++++++-------------
 8 files changed, 102 insertions(+), 67 deletions(-)
 delete mode 100644 .eslintignore
 delete mode 100644 commitlint.config.js
 create mode 100644 commitlint.config.mjs

diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 849ddff3..00000000
--- a/.eslintignore
+++ /dev/null
@@ -1 +0,0 @@
-dist/
diff --git a/.gitignore b/.gitignore
index 267ffaf4..fc16a6a3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,6 @@ dist/
 !.yarn/releases
 !.yarn/sdks
 !.yarn/versions
+
+.yalc/
+yalc.lock
diff --git a/commitlint.config.js b/commitlint.config.js
deleted file mode 100644
index 4fedde6d..00000000
--- a/commitlint.config.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports = { extends: ['@commitlint/config-conventional'] }
diff --git a/commitlint.config.mjs b/commitlint.config.mjs
new file mode 100644
index 00000000..7c4ff4d9
--- /dev/null
+++ b/commitlint.config.mjs
@@ -0,0 +1 @@
+export default { extends: ['@commitlint/config-conventional'] }
diff --git a/eslint.config.mjs b/eslint.config.mjs
index fb49fb1a..878fa894 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -2,6 +2,7 @@ import path from 'node:path'
 import { fileURLToPath } from 'node:url'
 
 import { FlatCompat } from '@eslint/eslintrc'
+import { fixupConfigRules } from '@eslint/compat'
 
 
 // mimic CommonJS variables -- not needed if using CommonJS
@@ -14,31 +15,44 @@ const compat = new FlatCompat({
 
 
 export default [
-  ...compat.config({
+  {
+    ignores: [
+      '.yarn/',
+      '.yalc/',
+      'dist/',
+    ],
+  },
+
+  ...fixupConfigRules(compat.config({
     extends: [
       '@jenssimon/eslint-config-base',
     ],
     overrides: [
       {
-        files: [
-          'commitlint.config.js',
+        parserOptions: {
+          project: './tsconfig.json',
+        },
+        extends: [
+          '@jenssimon/eslint-config-typescript',
         ],
+        files: ['*.ts'],
         rules: {
-          'unicorn/prefer-module': 'off',
+          '@typescript-eslint/naming-convention': 'off',
         },
       },
     ],
-  }),
+  })).map((rule) => ({
+    files: [
+      '**/*.js',
+      '**/*.mjs',
+      '**/*.ts',
+    ],
+    ...rule,
+  })),
   {
     languageOptions: {
       ecmaVersion: 2022,
       sourceType: 'module',
     },
   },
-  {
-    ignores: [
-      '.yarn/',
-      'dist/',
-    ],
-  },
 ]
diff --git a/package.json b/package.json
index 297e4bd9..d4a21371 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,8 @@
   "devDependencies": {
     "@commitlint/cli": "^19.0.0",
     "@commitlint/config-conventional": "^19.0.0",
+    "@eslint/compat": "^1.2.4",
+    "@eslint/eslintrc": "^3.2.0",
     "@jenssimon/eslint-config-base": "^8.0.0",
     "@jenssimon/eslint-config-typescript": "^5.2.2",
     "@types/eslint": "^9.0.0",
@@ -45,30 +47,8 @@
   "peerDependencies": {
     "eslint": ">=1.0.0"
   },
-  "eslintConfig": {
-    "parserOptions": {
-      "project": "./tsconfig.json"
-    },
-    "extends": [
-      "@jenssimon/base",
-      "@jenssimon/typescript"
-    ],
-    "rules": {
-      "@typescript-eslint/naming-convention": "off"
-    },
-    "overrides": [
-      {
-        "files": [
-          "commitlint.config.js"
-        ],
-        "rules": {
-          "unicorn/prefer-module": "off"
-        }
-      }
-    ]
-  },
   "scripts": {
-    "lint": "eslint",
+    "lint": "eslint ./",
     "build": "tsc",
     "prepublishOnly": "tsc",
     "commit": "cz",
diff --git a/tsconfig.json b/tsconfig.json
index 55aece76..93216dd5 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -12,7 +12,8 @@
   },
   "include": [
     "src/**/*.ts",
-    "commitlint.config.js"
+    "commitlint.config.mjs",
+    "eslint.config.mjs"
   ],
   "exclude": [
     "node_modules",
diff --git a/yarn.lock b/yarn.lock
index d23ff051..3f276015 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1663,6 +1663,18 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@eslint/compat@npm:^1.2.4":
+  version: 1.2.4
+  resolution: "@eslint/compat@npm:1.2.4"
+  peerDependencies:
+    eslint: ^9.10.0
+  peerDependenciesMeta:
+    eslint:
+      optional: true
+  checksum: 10c0/afea54435f0ae6b05f1b732132ae4a9d95ff106be0fc9988ac19f31037eb89b2a0e968212be4d2fbf757ff16923031825a27739d94a365559089dfd8269331e3
+  languageName: node
+  linkType: hard
+
 "@eslint/eslintrc@npm:^2.1.4":
   version: 2.1.4
   resolution: "@eslint/eslintrc@npm:2.1.4"
@@ -1680,6 +1692,23 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@eslint/eslintrc@npm:^3.2.0":
+  version: 3.2.0
+  resolution: "@eslint/eslintrc@npm:3.2.0"
+  dependencies:
+    ajv: "npm:^6.12.4"
+    debug: "npm:^4.3.2"
+    espree: "npm:^10.0.1"
+    globals: "npm:^14.0.0"
+    ignore: "npm:^5.2.0"
+    import-fresh: "npm:^3.2.1"
+    js-yaml: "npm:^4.1.0"
+    minimatch: "npm:^3.1.2"
+    strip-json-comments: "npm:^3.1.1"
+  checksum: 10c0/43867a07ff9884d895d9855edba41acf325ef7664a8df41d957135a81a477ff4df4196f5f74dc3382627e5cc8b7ad6b815c2cea1b58f04a75aced7c43414ab8b
+  languageName: node
+  linkType: hard
+
 "@eslint/js@npm:8.57.1":
   version: 8.57.1
   resolution: "@eslint/js@npm:8.57.1"
@@ -2843,6 +2872,15 @@ __metadata:
   languageName: node
   linkType: hard
 
+"acorn@npm:^8.14.0":
+  version: 8.14.0
+  resolution: "acorn@npm:8.14.0"
+  bin:
+    acorn: bin/acorn
+  checksum: 10c0/6d4ee461a7734b2f48836ee0fbb752903606e576cc100eb49340295129ca0b452f3ba91ddd4424a1d4406a98adfb2ebb6bd0ff4c49d7a0930c10e462719bbfd7
+  languageName: node
+  linkType: hard
+
 "acorn@npm:^8.4.1":
   version: 8.8.0
   resolution: "acorn@npm:8.8.0"
@@ -4450,6 +4488,8 @@ __metadata:
   dependencies:
     "@commitlint/cli": "npm:^19.0.0"
     "@commitlint/config-conventional": "npm:^19.0.0"
+    "@eslint/compat": "npm:^1.2.4"
+    "@eslint/eslintrc": "npm:^3.2.0"
     "@jenssimon/eslint-config-base": "npm:^8.0.0"
     "@jenssimon/eslint-config-typescript": "npm:^5.2.2"
     "@types/eslint": "npm:^9.0.0"
@@ -4621,14 +4661,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"eslint-visitor-keys@npm:^3.4.1":
-  version: 3.4.1
-  resolution: "eslint-visitor-keys@npm:3.4.1"
-  checksum: 10c0/b4ebd35aed5426cd81b1fb92487825f1acf47a31e91d76597a3ee0664d69627140c4dafaf9b319cfeb1f48c1113a393e21a734c669e6565a72e6fcc311bd9911
-  languageName: node
-  linkType: hard
-
-"eslint-visitor-keys@npm:^3.4.3":
+"eslint-visitor-keys@npm:^3.4.1, eslint-visitor-keys@npm:^3.4.3":
   version: 3.4.3
   resolution: "eslint-visitor-keys@npm:3.4.3"
   checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820
@@ -4642,6 +4675,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"eslint-visitor-keys@npm:^4.2.0":
+  version: 4.2.0
+  resolution: "eslint-visitor-keys@npm:4.2.0"
+  checksum: 10c0/2ed81c663b147ca6f578312919483eb040295bbab759e5a371953456c636c5b49a559883e2677112453728d66293c0a4c90ab11cab3428cf02a0236d2e738269
+  languageName: node
+  linkType: hard
+
 "eslint@npm:^8.52.0":
   version: 8.57.1
   resolution: "eslint@npm:8.57.1"
@@ -4690,6 +4730,17 @@ __metadata:
   languageName: node
   linkType: hard
 
+"espree@npm:^10.0.1":
+  version: 10.3.0
+  resolution: "espree@npm:10.3.0"
+  dependencies:
+    acorn: "npm:^8.14.0"
+    acorn-jsx: "npm:^5.3.2"
+    eslint-visitor-keys: "npm:^4.2.0"
+  checksum: 10c0/272beeaca70d0a1a047d61baff64db04664a33d7cfb5d144f84bc8a5c6194c6c8ebe9cc594093ca53add88baa23e59b01e69e8a0160ab32eac570482e165c462
+  languageName: node
+  linkType: hard
+
 "espree@npm:^10.2.0":
   version: 10.2.0
   resolution: "espree@npm:10.2.0"
@@ -4701,18 +4752,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"espree@npm:^9.6.0":
-  version: 9.6.0
-  resolution: "espree@npm:9.6.0"
-  dependencies:
-    acorn: "npm:^8.9.0"
-    acorn-jsx: "npm:^5.3.2"
-    eslint-visitor-keys: "npm:^3.4.1"
-  checksum: 10c0/f064a43bcf7f435d34e600c056320dde1c15b3eeb5da24e7585ed6cf83adcbbeafb4fa4d062ff14281b0d246b0a9645dd9d3796a638099f19595004eee4ac8be
-  languageName: node
-  linkType: hard
-
-"espree@npm:^9.6.1":
+"espree@npm:^9.6.0, espree@npm:^9.6.1":
   version: 9.6.1
   resolution: "espree@npm:9.6.1"
   dependencies:
@@ -4723,16 +4763,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"esquery@npm:^1.4.2":
-  version: 1.4.2
-  resolution: "esquery@npm:1.4.2"
-  dependencies:
-    estraverse: "npm:^5.1.0"
-  checksum: 10c0/b4109b3d8301e79bf0be10bbafe4ac9c5469274e61b07a16e7174e99efe815081bc18ac2e6d951d06df95004ac5772751db5d5b14483e51aefa96b018726117d
-  languageName: node
-  linkType: hard
-
-"esquery@npm:^1.6.0":
+"esquery@npm:^1.4.2, esquery@npm:^1.6.0":
   version: 1.6.0
   resolution: "esquery@npm:1.6.0"
   dependencies:
@@ -5463,6 +5494,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"globals@npm:^14.0.0":
+  version: 14.0.0
+  resolution: "globals@npm:14.0.0"
+  checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d
+  languageName: node
+  linkType: hard
+
 "globals@npm:^15.9.0":
   version: 15.11.0
   resolution: "globals@npm:15.11.0"