| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 | 
							- "use strict";
 
- var t = require("@babel/types");
 
- var convertComments = require("./convertComments");
 
- module.exports = function(ast, traverse, code) {
 
-   var state = { source: code };
 
-   // Monkey patch visitor keys in order to be able to traverse the estree nodes
 
-   t.VISITOR_KEYS.Property = t.VISITOR_KEYS.ObjectProperty;
 
-   t.VISITOR_KEYS.MethodDefinition = [
 
-     "key",
 
-     "value",
 
-     "decorators",
 
-     "returnType",
 
-     "typeParameters",
 
-   ];
 
-   traverse(ast, astTransformVisitor, null, state);
 
-   delete t.VISITOR_KEYS.Property;
 
-   delete t.VISITOR_KEYS.MethodDefinition;
 
- };
 
- var astTransformVisitor = {
 
-   noScope: true,
 
-   enter(path) {
 
-     var node = path.node;
 
-     // private var to track original node type
 
-     node._babelType = node.type;
 
-     if (node.innerComments) {
 
-       node.trailingComments = node.innerComments;
 
-       delete node.innerComments;
 
-     }
 
-     if (node.trailingComments) {
 
-       convertComments(node.trailingComments);
 
-     }
 
-     if (node.leadingComments) {
 
-       convertComments(node.leadingComments);
 
-     }
 
-   },
 
-   exit(path) {
 
-     var node = path.node;
 
-     if (path.isJSXText()) {
 
-       node.type = "Literal";
 
-     }
 
-     if (
 
-       path.isRestElement() &&
 
-       path.parent &&
 
-       path.parent.type === "ObjectPattern"
 
-     ) {
 
-       node.type = "ExperimentalRestProperty";
 
-     }
 
-     if (
 
-       path.isSpreadElement() &&
 
-       path.parent &&
 
-       path.parent.type === "ObjectExpression"
 
-     ) {
 
-       node.type = "ExperimentalSpreadProperty";
 
-     }
 
-     if (path.isTypeParameter()) {
 
-       node.type = "Identifier";
 
-       node.typeAnnotation = node.bound;
 
-       delete node.bound;
 
-     }
 
-     // flow: prevent "no-undef"
 
-     // for "Component" in: "let x: React.Component"
 
-     if (path.isQualifiedTypeIdentifier()) {
 
-       delete node.id;
 
-     }
 
-     // for "b" in: "var a: { b: Foo }"
 
-     if (path.isObjectTypeProperty()) {
 
-       delete node.key;
 
-     }
 
-     // for "indexer" in: "var a: {[indexer: string]: number}"
 
-     if (path.isObjectTypeIndexer()) {
 
-       delete node.id;
 
-     }
 
-     // for "param" in: "var a: { func(param: Foo): Bar };"
 
-     if (path.isFunctionTypeParam()) {
 
-       delete node.name;
 
-     }
 
-     // modules
 
-     if (path.isImportDeclaration()) {
 
-       delete node.isType;
 
-     }
 
-     // template string range fixes
 
-     if (path.isTemplateLiteral()) {
 
-       for (var j = 0; j < node.quasis.length; j++) {
 
-         var q = node.quasis[j];
 
-         q.range[0] -= 1;
 
-         if (q.tail) {
 
-           q.range[1] += 1;
 
-         } else {
 
-           q.range[1] += 2;
 
-         }
 
-         q.loc.start.column -= 1;
 
-         if (q.tail) {
 
-           q.loc.end.column += 1;
 
-         } else {
 
-           q.loc.end.column += 2;
 
-         }
 
-       }
 
-     }
 
-   },
 
- };
 
 
  |