1
0
mirror of https://github.com/bitwarden/browser synced 2025-12-06 00:13:28 +00:00

fix(enums-eslint): Enum Rule for ESLint (#14650)

* fix(enums-eslint): Enum Rule for ESLint - Added enums in the warnings for eslint.

* fix(enums-eslint): Enum Rule for ESLint - Updated to error in both places for enums.

* fix(enums-eslint): Enum Rule for ESLint - Added new eslint plugin for warning on enums.

* fix(enums-eslint): Enum Rule for ESLint - Changed based on suggestion.

Co-authored-by: Andreas Coroiu <acoroiu@bitwarden.com>

* refactor(browser-platform-utils): Remove Deprecation and Fix Code - Changed usages of firefox to private and moved the usages to the preferred public method and removed the deprecations.

* fix(enums-eslint): Enum Rule for ESLint - Updated to error and added disable rules for all other places.

* fix(enums-eslint): Enum Rule for ESLint - Undid other changes by accident
This commit is contained in:
Patrick-Pimentel-Bitwarden
2025-05-13 10:07:38 -04:00
committed by GitHub
parent 9f3310ed7e
commit 0b0397c3f0
156 changed files with 445 additions and 1 deletions

View File

@@ -1,3 +1,4 @@
import requiredUsing from "./required-using.mjs";
import noEnums from "./no-enums.mjs";
export default { rules: { "required-using": requiredUsing } };
export default { rules: { "required-using": requiredUsing, "no-enums": noEnums } };

View File

@@ -0,0 +1,23 @@
export const errorMessage = "Enums are discouraged, please use a const object instead";
export default {
meta: {
type: "suggestion",
docs: {
description: "Enforce using consts instead of enums",
category: "Best Practices",
recommended: false,
},
schema: [],
},
create(context) {
return {
TSEnumDeclaration(node) {
context.report({
node,
message: errorMessage,
});
},
};
},
};

View File

@@ -0,0 +1,71 @@
import { RuleTester } from "@typescript-eslint/rule-tester";
import rule, { errorMessage } from "./no-enums.mjs";
const ruleTester = new RuleTester({
languageOptions: {
parserOptions: {
project: [__dirname + "/../tsconfig.spec.json"],
projectService: {
allowDefaultProject: ["*.ts*"],
},
tsconfigRootDir: __dirname + "/..",
},
},
});
ruleTester.run("no-enums", rule.default, {
valid: [
{
name: "Using const instead of enum",
code: `
const Status = {
Active: "active",
Inactive: "inactive",
} as const;
`,
},
{
name: "Using const with type",
code: `
const Status = {
Active: "active",
Inactive: "inactive",
} as const;
type Status = typeof Status[keyof typeof Status];
`,
},
],
invalid: [
{
name: "Using enum declaration",
code: `
enum Status {
Active = "active",
Inactive = "inactive",
}
`,
errors: [
{
message: errorMessage,
},
],
},
{
name: "Using enum with numeric values",
code: `
enum Direction {
Up = 1,
Down = 2,
Left = 3,
Right = 4,
}
`,
errors: [
{
message: errorMessage,
},
],
},
],
});