UNPKG

@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
"use strict"; 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;