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.
54 lines
1.2 KiB
54 lines
1.2 KiB
'use strict'; |
|
|
|
const astUtil = require('./ast'); |
|
|
|
/** |
|
* Checks if the node is a React.createContext call |
|
* @param {ASTNode} node - The AST node being checked. |
|
* @returns {boolean} - True if node is a React.createContext call, false if not. |
|
*/ |
|
module.exports = function isCreateContext(node) { |
|
if ( |
|
node.init |
|
&& node.init.callee |
|
) { |
|
if ( |
|
astUtil.isCallExpression(node.init) |
|
&& node.init.callee.name === 'createContext' |
|
) { |
|
return true; |
|
} |
|
|
|
if ( |
|
node.init.callee.type === 'MemberExpression' |
|
&& node.init.callee.property |
|
&& node.init.callee.property.name === 'createContext' |
|
) { |
|
return true; |
|
} |
|
} |
|
|
|
if ( |
|
node.expression |
|
&& node.expression.type === 'AssignmentExpression' |
|
&& node.expression.operator === '=' |
|
&& astUtil.isCallExpression(node.expression.right) |
|
&& node.expression.right.callee |
|
) { |
|
const right = node.expression.right; |
|
|
|
if (right.callee.name === 'createContext') { |
|
return true; |
|
} |
|
|
|
if ( |
|
right.callee.type === 'MemberExpression' |
|
&& right.callee.property |
|
&& right.callee.property.name === 'createContext' |
|
) { |
|
return true; |
|
} |
|
} |
|
|
|
return false; |
|
};
|
|
|