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:
committed by
GitHub
parent
9f3310ed7e
commit
0b0397c3f0
@@ -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 } };
|
||||
|
||||
23
libs/eslint/platform/no-enums.mjs
Normal file
23
libs/eslint/platform/no-enums.mjs
Normal 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,
|
||||
});
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
71
libs/eslint/platform/no-enums.spec.mjs
Normal file
71
libs/eslint/platform/no-enums.spec.mjs
Normal 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,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
Reference in New Issue
Block a user