| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- "use strict";
- exports.__esModule = true;
- var _create = require("babel-runtime/core-js/object/create");
- var _create2 = _interopRequireDefault(_create);
- exports.getBindingIdentifiers = getBindingIdentifiers;
- exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers;
- var _index = require("./index");
- var t = _interopRequireWildcard(_index);
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- function getBindingIdentifiers(node, duplicates, outerOnly) {
- var search = [].concat(node);
- var ids = (0, _create2.default)(null);
- while (search.length) {
- var id = search.shift();
- if (!id) continue;
- var keys = t.getBindingIdentifiers.keys[id.type];
- if (t.isIdentifier(id)) {
- if (duplicates) {
- var _ids = ids[id.name] = ids[id.name] || [];
- _ids.push(id);
- } else {
- ids[id.name] = id;
- }
- continue;
- }
- if (t.isExportDeclaration(id)) {
- if (t.isDeclaration(id.declaration)) {
- search.push(id.declaration);
- }
- continue;
- }
- if (outerOnly) {
- if (t.isFunctionDeclaration(id)) {
- search.push(id.id);
- continue;
- }
- if (t.isFunctionExpression(id)) {
- continue;
- }
- }
- if (keys) {
- for (var i = 0; i < keys.length; i++) {
- var key = keys[i];
- if (id[key]) {
- search = search.concat(id[key]);
- }
- }
- }
- }
- return ids;
- }
- getBindingIdentifiers.keys = {
- DeclareClass: ["id"],
- DeclareFunction: ["id"],
- DeclareModule: ["id"],
- DeclareVariable: ["id"],
- InterfaceDeclaration: ["id"],
- TypeAlias: ["id"],
- OpaqueType: ["id"],
- CatchClause: ["param"],
- LabeledStatement: ["label"],
- UnaryExpression: ["argument"],
- AssignmentExpression: ["left"],
- ImportSpecifier: ["local"],
- ImportNamespaceSpecifier: ["local"],
- ImportDefaultSpecifier: ["local"],
- ImportDeclaration: ["specifiers"],
- ExportSpecifier: ["exported"],
- ExportNamespaceSpecifier: ["exported"],
- ExportDefaultSpecifier: ["exported"],
- FunctionDeclaration: ["id", "params"],
- FunctionExpression: ["id", "params"],
- ClassDeclaration: ["id"],
- ClassExpression: ["id"],
- RestElement: ["argument"],
- UpdateExpression: ["argument"],
- RestProperty: ["argument"],
- ObjectProperty: ["value"],
- AssignmentPattern: ["left"],
- ArrayPattern: ["elements"],
- ObjectPattern: ["properties"],
- VariableDeclaration: ["declarations"],
- VariableDeclarator: ["id"]
- };
- function getOuterBindingIdentifiers(node, duplicates) {
- return getBindingIdentifiers(node, duplicates, true);
- }
|