eslint-plugin-playlyfe
Version:
custom eslint stuff for playlyfe
64 lines (52 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findObjectExpressionProperty = findObjectExpressionProperty;
exports.getStringNodeValue = getStringNodeValue;
exports.getTemplateLiteralStringValue = getTemplateLiteralStringValue;
exports.findJSXAttribute = findJSXAttribute;
exports.getJSXAttributeValue = getJSXAttributeValue;
exports.getObjectIdentifierKeys = getObjectIdentifierKeys;
function findObjectExpressionProperty(node, key) {
return node.properties.find(property => property.type === 'Property' && property.key.type === 'Identifier' && property.key.name === key);
}
function getStringNodeValue(node) {
if (node.type === 'Literal') {
return {
value: node.value,
loc: node.loc
};
}
if (node.type === 'TemplateLiteral') {
return getTemplateLiteralStringValue(node);
}
return null;
}
function getTemplateLiteralStringValue(node) {
const [templateElem] = node.quasis;
return templateElem ? {
value: templateElem.value.raw,
loc: templateElem.loc
} : null;
}
function findJSXAttribute(node, name) {
return node.attributes.find(attr => attr.type === 'JSXAttribute' && attr.name.name === name);
}
function getJSXAttributeValue(node) {
const {
value
} = node;
if (value.type === 'JSXExpressionContainer') {
return value.expression;
}
return value;
}
function getObjectIdentifierKeys(node) {
return node.properties.reduce((acc, property) => {
if (property.type === 'Property' && property.key.type === 'Identifier') {
acc.push(property.key);
}
return acc;
}, []);
}