| /** |
| * 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 |