Socket
Socket
Sign inDemoInstall

eslint-plugin-flowtype

Package Overview
Dependencies
Maintainers
1
Versions
185
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

eslint-plugin-flowtype - npm Package Compare versions

Comparing version 2.3.1 to 2.4.0

CONTRIBUTING

27

bin/readmeAssertions.js

@@ -19,5 +19,11 @@ /**

if (setup.errors) {
paragraphs.push('// Message: ' + setup.errors[0].message);
setup.errors.forEach((message) => {
paragraphs.push('// Message: ' + message.message);
});
}
if (setup.rules) {
paragraphs.push('// Additional rules: ' + JSON.stringify(setup.rules));
}
return paragraphs.join('\n');

@@ -51,8 +57,7 @@ };

documentBody = documentBody.replace(/<!-- assertions ([a-z]+?) -->/ig, (assertionsBlock) => {
let ruleName,
ruleAssertions;
let exampleBody;
ruleName = assertionsBlock.match(/assertions ([a-z]+)/i)[1];
const ruleName = assertionsBlock.match(/assertions ([a-z]+)/i)[1];
ruleAssertions = assertions[ruleName];
const ruleAssertions = assertions[ruleName];

@@ -65,3 +70,13 @@ if (!ruleAssertions) {

return 'The following patterns are considered problems:\n\n```js\n' + ruleAssertions.invalid.join('\n\n') + '\n```\n\nThe following patterns are not considered problems:\n\n```js\n' + ruleAssertions.valid.join('\n\n') + '\n```\n';
exampleBody = '';
if (ruleAssertions.invalid.length) {
exampleBody += 'The following patterns are considered problems:\n\n```js\n' + ruleAssertions.invalid.join('\n\n') + '\n```\n\n';
}
if (ruleAssertions.valid.length) {
exampleBody += 'The following patterns are not considered problems:\n\n```js\n' + ruleAssertions.valid.join('\n\n') + '\n```\n\n';
}
return exampleBody;
});

@@ -68,0 +83,0 @@

@@ -7,2 +7,6 @@ 'use strict';

var _defineFlowType = require('./rules/defineFlowType');
var _defineFlowType2 = _interopRequireDefault(_defineFlowType);
var _requireParameterType = require('./rules/requireParameterType');

@@ -32,2 +36,6 @@

var _useFlowType = require('./rules/useFlowType');
var _useFlowType2 = _interopRequireDefault(_useFlowType);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -37,2 +45,3 @@

rules: {
'define-flow-type': _defineFlowType2.default,
'require-parameter-type': _requireParameterType2.default,

@@ -43,5 +52,7 @@ 'require-return-type': _requireReturnType2.default,

'space-before-type-colon': _spaceBeforeTypeColon2.default,
'type-id-match': _typeIdMatch2.default
'type-id-match': _typeIdMatch2.default,
'use-flow-type': _useFlowType2.default
},
rulesConfig: {
'define-flow-type': 0,
'require-parameter-type': 0,

@@ -51,5 +62,6 @@ 'require-return-type': 0,

'space-before-type-colon': 0,
'type-id-match': 0
'type-id-match': 0,
'use-flow-type': 0
}
};
module.exports = exports['default'];
{
"name": "eslint-plugin-flowtype",
"description": "Flowtype linting rules for ESLint.",
"version": "2.3.1",
"version": "2.4.0",
"main": "./dist/index.js",

@@ -6,0 +6,0 @@ "repository": {

@@ -14,2 +14,11 @@ <h1 id="eslint-plugin-flowtype">eslint-plugin-flowtype</h1>

* [`onlyFilesWithFlowAnnotation`](#eslint-plugin-flowtype-settings-onlyfileswithflowannotation)
* [Rules](#eslint-plugin-flowtype-rules)
* [`define-flow-type`](#eslint-plugin-flowtype-rules-define-flow-type)
* [`require-parameter-type`](#eslint-plugin-flowtype-rules-require-parameter-type)
* [`require-return-type`](#eslint-plugin-flowtype-rules-require-return-type)
* [`require-valid-file-annotation`](#eslint-plugin-flowtype-rules-require-valid-file-annotation)
* [`space-after-type-colon`](#eslint-plugin-flowtype-rules-space-after-type-colon)
* [`space-before-type-colon`](#eslint-plugin-flowtype-rules-space-before-type-colon)
* [`type-id-match`](#eslint-plugin-flowtype-rules-type-id-match)
* [`use-flow-type`](#eslint-plugin-flowtype-rules-use-flow-type)

@@ -46,2 +55,3 @@

"rules": {
"flowtype/define-flow-type": 1,
"flowtype/require-parameter-type": 1,

@@ -66,3 +76,4 @@ "flowtype/require-return-type": [

"^([A-Z][a-z0-9]+)+Type$"
]
],
"flowtype/use-flow-type": 1
},

@@ -91,8 +102,128 @@ "settings": {

}
```
```
## Rules
<h2 id="eslint-plugin-flowtype-rules">Rules</h2>
### `require-parameter-type`
<h3 id="eslint-plugin-flowtype-rules-define-flow-type"><code>define-flow-type</code></h3>
Marks Flow type identifiers as defined.
Used to suppress [`no-undef`](http://eslint.org/docs/rules/no-undef) reporting of type identifiers.
The following patterns are not considered problems:
```js
var a: AType
// Additional rules: {"no-undef":2}
var a: AType; var b: AType
// Additional rules: {"no-undef":2}
var a; (a: AType)
// Additional rules: {"no-undef":2}
var a: AType<BType>
// Additional rules: {"no-undef":2}
type A = AType
// Additional rules: {"no-undef":2}
function f(a: AType) {}
// Additional rules: {"no-undef":2}
function f(a: AType.a) {}
// Additional rules: {"no-undef":2}
function f(a: AType.a.b) {}
// Additional rules: {"no-undef":2}
function f(a): AType {}; var a: AType
// Additional rules: {"no-undef":2}
function f(a): AType {}
// Additional rules: {"no-undef":2}
class C { a: AType }
// Additional rules: {"no-undef":2}
class C { a: AType.a }
// Additional rules: {"no-undef":2}
class C { a: AType.a.b }
// Additional rules: {"no-undef":2}
class C implements AType {}
// Additional rules: {"no-undef":2}
interface AType {}
// Additional rules: {"no-undef":2}
({ a: ({b() {}}: AType) })
// Additional rules: {"no-undef":2}
type X = {Y<AType>(): BType}
// Additional rules: {"no-undef":2}
interface AType<BType> {}
// Additional rules: {"no-undef":2}
var a: AType
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
var a: AType; var b: AType
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
var a; (a: AType)
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
var a: AType<BType>
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
type A = AType
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
function f(a: AType) {}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
function f(a: AType.a) {}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
function f(a: AType.a.b) {}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
function f(a): AType {}; var a: AType
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
function f(a): AType {}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
class C { a: AType }
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
class C { a: AType.a }
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
class C { a: AType.a.b }
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
class C implements AType {}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
interface AType {}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
({ a: ({b() {}}: AType) })
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
type X = {Y<AType>(): BType}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
interface AType<BType> {}
// Additional rules: {"no-undef":2,"no-use-before-define":[2,"nofunc"]}
```
<h3 id="eslint-plugin-flowtype-rules-require-parameter-type"><code>require-parameter-type</code></h3>
Requires that all function parameters have type annotations.

@@ -143,4 +274,5 @@

### `require-return-type`
<h3 id="eslint-plugin-flowtype-rules-require-return-type"><code>require-return-type</code></h3>
Requires that functions have return type annotation.

@@ -256,7 +388,8 @@

### `require-valid-file-annotation`
<h3 id="eslint-plugin-flowtype-rules-require-valid-file-annotation"><code>require-valid-file-annotation</code></h3>
Makes sure that files have a valid `@flow` annotation. It will report annotations with typos (such as `// @floww`) or not placed at the top of the file, and optionaly missing annotations.
#### Options
<h4 id="eslint-plugin-flowtype-rules-require-valid-file-annotation-options">Options</h4>

@@ -327,4 +460,5 @@ By default, this rule won't complain if there is no `@flow` annotation at all in the file. Passing a `"always"` option reports files missing those annotations as well.

### `space-after-type-colon`
<h3 id="eslint-plugin-flowtype-rules-space-after-type-colon"><code>space-after-type-colon</code></h3>
Enforces consistent spacing after the type annotation colon.

@@ -447,4 +581,5 @@

### `space-before-type-colon`
<h3 id="eslint-plugin-flowtype-rules-space-before-type-colon"><code>space-before-type-colon</code></h3>
Enforces consistent spacing before the type annotation colon.

@@ -485,7 +620,8 @@

### `type-id-match`
<h3 id="eslint-plugin-flowtype-rules-type-id-match"><code>type-id-match</code></h3>
Enforces a consistent naming pattern for type aliases.
#### Options
<h4 id="eslint-plugin-flowtype-rules-type-id-match-options">Options</h4>

@@ -528,1 +664,56 @@ This rule needs a text RegExp to operate with Its signature is as follows:

<h3 id="eslint-plugin-flowtype-rules-use-flow-type"><code>use-flow-type</code></h3>
Marks Flow [type alias](https://flowtype.org/docs/type-aliases.html) declarations as used.
Used to suppress [`no-unused-vars`](http://eslint.org/docs/rules/no-unused-vars) errors that are triggered by type aliases.
The following patterns are not considered problems:
```js
declare class A {}
// Additional rules: {"no-unused-vars":1}
declare function A(): Y
// Additional rules: {"no-unused-vars":1}
declare module A {}
// Additional rules: {"no-unused-vars":1}
declare module A { declare var a: Y }
// Additional rules: {"no-unused-vars":1}
declare var A: Y
// Additional rules: {"no-unused-vars":1}
import type A from "a"; (function<T: A>(): T {})
// Additional rules: {"no-unused-vars":1}
(function<T: A>(): T {}); import type A from "a"
// Additional rules: {"no-unused-vars":1}
import type {A} from "a"; (function<T: A>(): T {})
// Additional rules: {"no-unused-vars":1}
(function<T: A>(): T {}); import type {A} from "a"
// Additional rules: {"no-unused-vars":1}
(function<T: A>(): T {}); import type {a as A} from "a"
// Additional rules: {"no-unused-vars":1}
type A = {}; function x<Y: A>(i: Y) { i }; x()
// Additional rules: {"no-unused-vars":1}
function x<Y: A>(i: Y) { i }; type A = {}; x()
// Additional rules: {"no-unused-vars":1}
type A = {}; function x<Y: A.B.C>(i: Y) { i }; x()
// Additional rules: {"no-unused-vars":1}
function x<Y: A.B.C>(i: Y) { i }; type A = {}; x()
// Additional rules: {"no-unused-vars":1}
```
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc