matchesPattern.js
1 "use strict"; 2 3 Object.defineProperty(exports, "__esModule", { 4 value: true 5 }); 6 exports.default = matchesPattern; 7 8 var _generated = require("./generated"); 9 10 function matchesPattern(member, match, allowPartial) { 11 if (!(0, _generated.isMemberExpression)(member)) return false; 12 const parts = Array.isArray(match) ? match : match.split("."); 13 const nodes = []; 14 let node; 15 16 for (node = member; (0, _generated.isMemberExpression)(node); node = node.object) { 17 nodes.push(node.property); 18 } 19 20 nodes.push(node); 21 if (nodes.length < parts.length) return false; 22 if (!allowPartial && nodes.length > parts.length) return false; 23 24 for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) { 25 const node = nodes[j]; 26 let value; 27 28 if ((0, _generated.isIdentifier)(node)) { 29 value = node.name; 30 } else if ((0, _generated.isStringLiteral)(node)) { 31 value = node.value; 32 } else if ((0, _generated.isThisExpression)(node)) { 33 value = "this"; 34 } else { 35 return false; 36 } 37 38 if (parts[i] !== value) return false; 39 } 40 41 return true; 42 }