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