eslint-plugin-canonical
Version:
Canonical linting rules for ESLint.
38 lines (37 loc) • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getExportedName = void 0;
const getNodeName = (node, matchCallExpression) => {
if (node.type === 'Identifier') {
return node.name;
}
if (node.id && node.id.type === 'Identifier') {
return node.id.name;
}
if (matchCallExpression &&
node.type === 'CallExpression' &&
node.callee.type === 'Identifier') {
return node.callee.name;
}
return null;
};
const getExportedName = (programNode, matchCallExpression) => {
for (const node of programNode.body) {
// export default ...
if (node.type === 'ExportDefaultDeclaration') {
return getNodeName(node.declaration, matchCallExpression);
}
// module.exports = ...
if (node.type === 'ExpressionStatement' &&
node.expression.type === 'AssignmentExpression' &&
node.expression.left.type === 'MemberExpression' &&
node.expression.left.object.type === 'Identifier' &&
node.expression.left.object.name === 'module' &&
node.expression.left.property.type === 'Identifier' &&
node.expression.left.property.name === 'exports') {
return getNodeName(node.expression.right, matchCallExpression);
}
}
return null;
};
exports.getExportedName = getExportedName;