UNPKG

ecma-search

Version:
47 lines (38 loc) 1.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = _default; var _lodash = _interopRequireDefault(require("lodash")); var _traverse = _interopRequireDefault(require("@babel/traverse")); var _utils = require("../utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _default(queryAstNode, esToSearchAst) { if (queryAstNode.type === 'ExpressionStatement') { queryAstNode = queryAstNode.expression; } var results = []; var queryClone = (0, _utils.reducer)(queryAstNode); var foundMatch; (0, _traverse.default)(esToSearchAst, { enter: function enter(path) { if (foundMatch) { return; } if (queryClone.type === path.node.type) { var nodeClone = (0, _utils.reducer)(path.node); if (_lodash.default.isEqual(queryClone, nodeClone) && !results.includes(path.parent)) { results.push(path.node); foundMatch = path.node; } } }, exit: function exit(path) { if (foundMatch === path.node) { foundMatch = null; } } }); return results; } //# sourceMappingURL=exact.js.map