UNPKG

1.67 kBJavaScriptView Raw
1'use strict'
2
3const getDocsUrl = require('./lib/get-docs-url')
4const isPromise = require('./lib/is-promise')
5
6module.exports = {
7 meta: {
8 docs: {
9 description:
10 'Ensures the proper number of arguments are passed to Promise functions',
11 url: getDocsUrl('valid-params')
12 }
13 },
14 create(context) {
15 return {
16 CallExpression(node) {
17 if (!isPromise(node)) {
18 return
19 }
20
21 const name = node.callee.property.name
22 const numArgs = node.arguments.length
23
24 switch (name) {
25 case 'resolve':
26 case 'reject':
27 if (numArgs > 1) {
28 context.report({
29 node,
30 message:
31 'Promise.{{ name }}() requires 0 or 1 arguments, but received {{ numArgs }}',
32 data: { name, numArgs }
33 })
34 }
35 break
36 case 'then':
37 if (numArgs < 1 || numArgs > 2) {
38 context.report({
39 node,
40 message:
41 'Promise.{{ name }}() requires 1 or 2 arguments, but received {{ numArgs }}',
42 data: { name, numArgs }
43 })
44 }
45 break
46 case 'race':
47 case 'all':
48 case 'catch':
49 case 'finally':
50 if (numArgs !== 1) {
51 context.report({
52 node,
53 message:
54 'Promise.{{ name }}() requires 1 argument, but received {{ numArgs }}',
55 data: { name, numArgs }
56 })
57 }
58 break
59 default:
60 break
61 }
62 }
63 }
64 }
65}