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: [