UNPKG

charlike

Version:

Small, fast, simple and streaming project scaffolder for myself, but not only. Supports hundreds of template engines through the @JSTransformers API or if you want custom `render` function passed through options

35 lines (32 loc) 1.02 kB
/** * Library: isPromise * Makes sure that an Expression node is part of a promise. */ var STATIC_METHODS = [ 'all', 'race', 'reject', 'resolve' ] 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' ) || ( // 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' && STATIC_METHODS.indexOf(expression.callee.property.name) !== -1 ) } module.exports = isPromise