eslint-plugin-fb-flow
Advanced tools
Comparing version 0.0.3 to 0.0.4
@@ -0,1 +1,4 @@ | ||
# 0.0.4 | ||
- Update README documentation | ||
# 0.0.3 | ||
@@ -2,0 +5,0 @@ - Exported the rules added in 0.0.2 from `index.js` |
{ | ||
"name": "eslint-plugin-fb-flow", | ||
"version": "0.0.3", | ||
"version": "0.0.4", | ||
"license": "MIT", | ||
@@ -5,0 +5,0 @@ "description": "This is a set of ESLint rules created and published by the Flow team. They are in addition to (not a replacement for) the rules of `eslint-plugin-flowtype` created and published by the open-source community.", |
105
README.md
@@ -85,1 +85,106 @@ # eslint-plugin-fb-flow | ||
``` | ||
### `use-flow-enums` | ||
You should use [Flow Enums](https://flow.org/en/docs/enums/) instead of legacy enum patterns (e.g. `keyMirror` and `Object.freeze`). | ||
If this lint has flagged an object which is conceptually not an enum (e.g. a bag of constants that don't define a type), you can ignore this warning. | ||
There are also [other reasons to not use Flow Enums](https://flow.org/en/docs/enums/#toc-when-to-not-use-flow-enums), and if any of those are relevant to you, ignore this warning. | ||
See the [Migrating from legacy patterns](https://flow.org/en/docs/enums/migrating-legacy-patterns/) for how to fix this issue. | ||
#### Examples | ||
Examples of ***invalid*** code for this rule: | ||
``` | ||
const Foo = Object.freeze({ | ||
A: 1, | ||
B: 2, | ||
}); | ||
const Bar = keyMirror({ | ||
A: null, | ||
B: null, | ||
}); | ||
``` | ||
Examples of ***valid*** code for this rule: | ||
``` | ||
enum Foo { | ||
A = 1, | ||
B = 2, | ||
}; | ||
enum Bar { | ||
A, | ||
B, | ||
}; | ||
``` | ||
### `flow-enums-default-if-possible` | ||
With [Flow Enums](https://flow.org/en/docs/enums/), | ||
if you don't specify member values they by default become [strings mirrored from the member name](https://flow.org/en/docs/enums/defining-enums/#toc-string-enums). | ||
Instead of: | ||
``` | ||
enum Status { | ||
Active = 'Active', | ||
Paused = 'Paused', | ||
Off = 'Off', | ||
} | ||
``` | ||
Write: | ||
``` | ||
enum Status { | ||
Active, | ||
Paused, | ||
Off, | ||
} | ||
``` | ||
This lint comes with an autofixer to automatically make the fix. | ||
### `no-flow-enums-object-mapping` | ||
You should use a function with a `switch` instead of an object literal to map [Flow Enums](https://flow.org/en/docs/enums/) to other values - | ||
see the [docs](https://flow.org/en/docs/enums//using-enums/#toc-mapping-enums-to-other-values). | ||
This avoids having to cast to `string` and [exhaustively checks the enum](https://flow.org/en/docs/enums/using-enums/#toc-exhaustively-checking-enums-with-a-switch). | ||
If you have the Flow Enum: | ||
``` | ||
enum Status { | ||
Active, | ||
Paused, | ||
Off, | ||
} | ||
``` | ||
Instead of: | ||
``` | ||
const STATUS_ICON: {[Status]: string} = { | ||
[(Status.Active: string)]: 'green-checkmark', | ||
[(Status.Paused: string)]: 'grey-pause', | ||
[(Status.Off: string)]: 'red-x', | ||
}; | ||
const icon = STATUS_ICON[status]; | ||
``` | ||
Write: | ||
``` | ||
function getStatusIcon(status: Status): string { | ||
switch (status) { | ||
case Status.Active: | ||
return 'green-checkmark'; | ||
case Status.Paused: | ||
return 'grey-pause'; | ||
case Status.Off: | ||
return 'red-x'; | ||
} | ||
} | ||
const icon = getStatusIcon(status); | ||
``` | ||
If you add a new member to `Status`, Flow will error and tell you to update your `switch` statement. |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
20248
190
1