Blame view

node_modules/eslint-plugin-promise/rules/lib/is-promise.js 1.21 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
  /**
   * Library: isPromise
   * Makes sure that an Expression node is part of a promise.
   */
  'use strict'
  
  const PROMISE_STATICS = require('./promise-statics')
  
  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') ||
      // hello.finally()
      (expression.type === 'CallExpression' &&
        expression.callee.type === 'MemberExpression' &&
        expression.callee.property.name === 'finally') ||
      // 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' &&
        PROMISE_STATICS[expression.callee.property.name])
    )
  }
  
  module.exports = isPromise