[Eslint] Enable no-empty-object-type

The {} type in TypeScript does not represent a empty object as one may
expect this makes it confusing to work with and use properly.
https://typescript-eslint.io/rules/no-empty-object-type/

Bug: 397260638
Change-Id: Ic2cc515ac729a76d652fca829082bb76c8b1f913
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6327458
Auto-Submit: Nikolay Vitkov <[email protected]>
Reviewed-by: Mathias Bynens <[email protected]>
Commit-Queue: Jack Franklin <[email protected]>
Reviewed-by: Jack Franklin <[email protected]>
Commit-Queue: Nikolay Vitkov <[email protected]>
diff --git a/eslint.config.mjs b/eslint.config.mjs
index c1131c1..d624e16 100644
--- a/eslint.config.mjs
+++ b/eslint.config.mjs
@@ -13,13 +13,13 @@
 import mochaPlugin from 'eslint-plugin-mocha';
 import rulesdirPlugin from 'eslint-plugin-rulesdir';
 import globals from 'globals';
-import {join} from 'path';
+import { join } from 'path';
 
 rulesdirPlugin.RULES_DIR = join(
-    import.meta.dirname,
-    'scripts',
-    'eslint_rules',
-    'lib',
+  import.meta.dirname,
+  'scripts',
+  'eslint_rules',
+  'lib',
 );
 
 /**
@@ -316,11 +316,11 @@
       parserOptions: {
         allowAutomaticSingleRunInference: true,
         project: join(
-            import.meta.dirname,
-            'config',
-            'typescript',
-            'tsconfig.eslint.json',
-            ),
+          import.meta.dirname,
+          'config',
+          'typescript',
+          'tsconfig.eslint.json',
+        ),
       },
     },
 
@@ -542,6 +542,13 @@
 
       '@typescript-eslint/no-unsafe-function-type': 'error',
 
+      '@typescript-eslint/no-empty-object-type': [
+        'error',
+        {
+          allowInterfaces: 'with-single-extends',
+        },
+      ],
+
       'rulesdir/no-underscored-properties': 'error',
       'rulesdir/inline-type-imports': 'error',
 
@@ -550,12 +557,12 @@
         {
           // Enforce that any import of models/trace/trace.js names the import Trace.
           modulePath: join(
-              import.meta.dirname,
-              'front_end',
-              'models',
-              'trace',
-              'trace.js',
-              ),
+            import.meta.dirname,
+            'front_end',
+            'models',
+            'trace',
+            'trace.js',
+          ),
           importName: 'Trace',
         },
       ],
@@ -827,7 +834,7 @@
     rules: {
       // Not a useful rule for .d.ts files where we are
       // representing an existing module.
-      'import/no-default-export': 'off'
-    }
-  }
+      'import/no-default-export': 'off',
+    },
+  },
 ];