Convert prefer-private-class-members to TypeScript

Bug: chromium:397586315
Change-Id: I1c935513be3067972430ae3ce429c00768ce2106
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6441160
Commit-Queue: Mathias Bynens <mathias@chromium.org>
Reviewed-by: Nikolay Vitkov <nvitkov@chromium.org>
diff --git a/scripts/eslint_rules/lib/prefer-private-class-members.js b/scripts/eslint_rules/lib/prefer-private-class-members.js
deleted file mode 100644
index f4332e8..0000000
--- a/scripts/eslint_rules/lib/prefer-private-class-members.js
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-/**
- * @fileoverview Prefer private properties over regular class properties with
- * `private` modifier.
- */
-'use strict';
-
-// ------------------------------------------------------------------------------
-// Rule Definition
-// ------------------------------------------------------------------------------
-
-/**
- * @type {import('eslint').Rule.RuleModule}
- */
-module.exports = {
-  meta: {
-    type: 'problem',
-
-    docs: {
-      description: 'Prefer private properties over regular properties with `private` modifier',
-      category: 'Possible Errors',
-    },
-
-    schema: [],  // no options
-    messages: {do_not_use_private: 'Use private properties (starting with `#`) rather than the `private` modifier.'},
-  },
-  create: function(context) {
-    function isTypeScriptPrivate(node){
-        if (node.accessibility === 'private' && node.kind !== 'constructor') {
-          context.report({
-            node: node.key,
-            messageId: 'do_not_use_private',
-          });
-        }
-    }
-
-    return {
-      MethodDefinition(node){
-        isTypeScriptPrivate(node);
-      },
-      PropertyDefinition(node){
-        isTypeScriptPrivate(node);
-      }
-    };
-  }
-};
diff --git a/scripts/eslint_rules/lib/prefer-private-class-members.ts b/scripts/eslint_rules/lib/prefer-private-class-members.ts
new file mode 100644
index 0000000..bb2a67d
--- /dev/null
+++ b/scripts/eslint_rules/lib/prefer-private-class-members.ts
@@ -0,0 +1,38 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+import {createRule} from './tsUtils.ts';
+
+export default createRule({
+  name: 'prefer-private-class-members',
+  meta: {
+    type: 'problem',
+    docs: {
+      description: 'Prefer private properties over regular properties with `private` modifier',
+      category: 'Possible Errors',
+    },
+    schema: [],  // no options
+    messages: {do_not_use_private: 'Use private properties (starting with `#`) rather than the `private` modifier.'},
+  },
+  defaultOptions: [],
+  create: function(context) {
+    function isTypeScriptPrivate(node) {
+      if (node.accessibility === 'private' && node.kind !== 'constructor') {
+        context.report({
+          node: node.key,
+          messageId: 'do_not_use_private',
+        });
+      }
+    }
+
+    return {
+      MethodDefinition(node) {
+        isTypeScriptPrivate(node);
+      },
+      PropertyDefinition(node) {
+        isTypeScriptPrivate(node);
+      }
+    };
+  }
+});
diff --git a/scripts/eslint_rules/tests/prefer-private-class-members.test.js b/scripts/eslint_rules/tests/prefer-private-class-members.test.ts
similarity index 89%
rename from scripts/eslint_rules/tests/prefer-private-class-members.test.js
rename to scripts/eslint_rules/tests/prefer-private-class-members.test.ts
index 8ceabd8..5bfb55c 100644
--- a/scripts/eslint_rules/tests/prefer-private-class-members.test.js
+++ b/scripts/eslint_rules/tests/prefer-private-class-members.test.ts
@@ -1,10 +1,10 @@
 // Copyright 2020 The Chromium Authors. All rights reserved.
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
-'use strict';
-const rule = require('../lib/prefer-private-class-members.js');
 
-const {RuleTester} = require('./utils/utils.js');
+import rule from '../lib/prefer-private-class-members.ts';
+
+import {RuleTester} from './utils/tsUtils.ts';
 
 new RuleTester().run('prefer-private-class-members', rule, {
   valid: [