Skip to content

Commit e080f82

Browse files
authored
feat(catch-or-return,no-new-statics,no-promise-in-callback,valid-params): add support for Promise.allSettled() & Promise.any() (#370)
1 parent 3a6fdbe commit e080f82

File tree

6 files changed

+74
-0
lines changed

6 files changed

+74
-0
lines changed

__tests__/catch-or-return.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,22 @@ ruleTester.run('catch-or-return', rule, {
141141
code: 'Promise.resolve(frank)',
142142
errors: [{ message: catchMessage }],
143143
},
144+
{
145+
code: 'Promise.all([])',
146+
errors: [{ message: catchMessage }],
147+
},
148+
{
149+
code: 'Promise.allSettled([])',
150+
errors: [{ message: catchMessage }],
151+
},
152+
{
153+
code: 'Promise.any([])',
154+
errors: [{ message: catchMessage }],
155+
},
156+
{
157+
code: 'Promise.race([])',
158+
errors: [{ message: catchMessage }],
159+
},
144160
{
145161
code: 'frank().then(to).catch(fn).then(foo)',
146162
errors: [{ message: catchMessage }],

__tests__/no-new-statics.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,16 @@ ruleTester.run('no-new-statics', rule, {
3131
output: 'Promise.all()',
3232
errors: [{ message: "Avoid calling 'new' on 'Promise.all()'" }],
3333
},
34+
{
35+
code: 'new Promise.allSettled()',
36+
output: 'Promise.allSettled()',
37+
errors: [{ message: "Avoid calling 'new' on 'Promise.allSettled()'" }],
38+
},
39+
{
40+
code: 'new Promise.any()',
41+
output: 'Promise.any()',
42+
errors: [{ message: "Avoid calling 'new' on 'Promise.any()'" }],
43+
},
3444
{
3545
code: 'new Promise.race()',
3646
output: 'Promise.race()',

__tests__/no-promise-in-callback.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,14 @@ ruleTester.run('no-promise-in-callback', rule, {
7777
code: 'function x(err) { Promise.all() }',
7878
errors: [{ message: errorMessage }],
7979
},
80+
{
81+
code: 'function x(err) { Promise.allSettled() }',
82+
errors: [{ message: errorMessage }],
83+
},
84+
{
85+
code: 'function x(err) { Promise.any() }',
86+
errors: [{ message: errorMessage }],
87+
},
8088
{
8189
code: 'let x = (err) => doThingWith(err).then(a)',
8290
errors: [{ message: errorMessage }],

__tests__/valid-params.js

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ ruleTester.run('valid-params', rule, {
3333
'Promise.all(iterable)',
3434
'Promise.all([one, two, three])',
3535

36+
// valid Promise.allSettled()
37+
'Promise.allSettled([])',
38+
'Promise.allSettled(iterable)',
39+
'Promise.allSettled([one, two, three])',
40+
41+
// valid Promise.any()
42+
'Promise.any([])',
43+
'Promise.any(iterable)',
44+
'Promise.any([one, two, three])',
45+
3646
// valid Promise.then()
3747
'somePromise().then(success)',
3848
'somePromise().then(success, failure)',
@@ -129,6 +139,32 @@ ruleTester.run('valid-params', rule, {
129139
{ message: 'Promise.all() requires 1 argument, but received 4' },
130140
],
131141
},
142+
// invalid Promise.allSettled()
143+
{
144+
code: 'Promise.allSettled(1, 2, 3)',
145+
errors: [
146+
{ message: 'Promise.allSettled() requires 1 argument, but received 3' },
147+
],
148+
},
149+
{
150+
code: 'Promise.allSettled({}, function() {}, 1, 2)',
151+
errors: [
152+
{ message: 'Promise.allSettled() requires 1 argument, but received 4' },
153+
],
154+
},
155+
// invalid Promise.any()
156+
{
157+
code: 'Promise.any(1, 2, 3)',
158+
errors: [
159+
{ message: 'Promise.any() requires 1 argument, but received 3' },
160+
],
161+
},
162+
{
163+
code: 'Promise.any({}, function() {}, 1, 2)',
164+
errors: [
165+
{ message: 'Promise.any() requires 1 argument, but received 4' },
166+
],
167+
},
132168

133169
// invalid Promise.then()
134170
{

rules/lib/promise-statics.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
module.exports = {
44
all: true,
5+
allSettled: true,
6+
any: true,
57
race: true,
68
reject: true,
79
resolve: true,

rules/valid-params.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ module.exports = {
4848
break
4949
case 'race':
5050
case 'all':
51+
case 'allSettled':
52+
case 'any':
5153
case 'catch':
5254
case 'finally':
5355
if (numArgs !== 1) {

0 commit comments

Comments
 (0)