@codeque/core
Version:
Multiline code search for every language. Structural code search for JavaScript, TypeScript, HTML and CSS
44 lines (40 loc) • 1.58 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createMatchDestructPropBeforeRenameNodesComparator = void 0;
/*
* Support for matching object properties in destructuring before re-assignment
* Q: const { node } = useForm(); C: const { node: someNode } = useForm()
*/
const createMatchDestructPropBeforeRenameNodesComparator = ({
objectPropertyNodeName
}) => ({
queryNode,
fileNode,
searchSettings: {
mode
}
}, _, {
fileKeysToTraverseForOtherMatches,
queryKeysMapper,
fileKeysMapper
}) => {
const isExact = mode === 'exact';
if (queryNode && fileNode) {
if (!isExact && // Both are Property
queryNode.type === objectPropertyNodeName && fileNode.type === objectPropertyNodeName && // Both has same key identifier
queryNode.key.type === 'Identifier' && fileNode.key.type === 'Identifier' && queryNode.key.name === fileNode.key.name && // Both has different value identifier
queryNode.value.type === 'Identifier' && fileNode.value.type === 'Identifier' && queryNode.value.name !== fileNode.value.name) {
// We skip comparing value if query does not have re-assignment
const keysToTraverse = ['key'];
return {
levelMatch: true,
queryKeysToTraverseForValidatingMatch: keysToTraverse.map(queryKeysMapper),
fileKeysToTraverseForValidatingMatch: keysToTraverse.map(fileKeysMapper),
fileKeysToTraverseForOtherMatches
};
}
}
};
exports.createMatchDestructPropBeforeRenameNodesComparator = createMatchDestructPropBeforeRenameNodesComparator;
;