项目原始demo,不改动
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 

66 rivejä
1.6 KiB

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