eslint-plugin-promise
Advanced tools
Comparing version 3.1.0 to 3.2.0
@@ -0,1 +1,9 @@ | ||
## 3.2.0 | ||
- Added `no-return-wrap` rule | ||
## 3.1.0 | ||
- Added multiple terminationMethods | ||
## 3.0.1 | ||
@@ -2,0 +10,0 @@ |
{ | ||
"name": "eslint-plugin-promise", | ||
"version": "3.1.0", | ||
"version": "3.2.0", | ||
"description": "Enforce best practices for JavaScript promises", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
@@ -119,2 +119,27 @@ # eslint-plugin-promise | ||
### `no-return-wrap` | ||
Ensure that inside a `then()` or a `catch()` we always `return` | ||
or `throw` a raw value instead of wrapping in `Promise.resolve` | ||
or `Promise.reject` | ||
#### Valid | ||
```js | ||
myPromise.then(function(val) { | ||
return val * 2; | ||
}); | ||
myPromise.then(function(val) { | ||
throw "bad thing"; | ||
}); | ||
``` | ||
#### Invalid | ||
```js | ||
myPromise.then(function(val) { | ||
return Promise.resolve(val * 2); | ||
}); | ||
myPromise.then(function(val) { | ||
return Promise.reject("bad thing"); | ||
}) | ||
``` | ||
## Installation | ||
@@ -121,0 +146,0 @@ |
@@ -1,29 +0,8 @@ | ||
var STATIC_METHODS = [ | ||
'all', | ||
'race', | ||
'reject', | ||
'resolve' | ||
] | ||
/** | ||
* Rule: catch-or-return | ||
* Ensures that promises either include a catch() handler | ||
* or are returned (to be handled upstream) | ||
*/ | ||
function isPromise (expression) { | ||
return ( // hello.then() | ||
expression.type === 'CallExpression' && | ||
expression.callee.type === 'MemberExpression' && | ||
expression.callee.property.name === 'then' | ||
) || ( // hello.catch() | ||
expression.type === 'CallExpression' && | ||
expression.callee.type === 'MemberExpression' && | ||
expression.callee.property.name === 'catch' | ||
) || ( // somePromise.ANYTHING() | ||
expression.type === 'CallExpression' && | ||
expression.callee.type === 'MemberExpression' && | ||
isPromise(expression.callee.object) | ||
) || ( // Promise.STATIC_METHOD() | ||
expression.type === 'CallExpression' && | ||
expression.callee.type === 'MemberExpression' && | ||
expression.callee.object.type === 'Identifier' && | ||
expression.callee.object.name === 'Promise' && | ||
STATIC_METHODS.indexOf(expression.callee.property.name) !== -1 | ||
) | ||
} | ||
var isPromise = require('./lib/is-promise') | ||
@@ -30,0 +9,0 @@ module.exports = { |
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
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
29735
18
575
189