{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-eslint/src/external/eslint/babylon-to-espree/toAST.js"],"names":["toAST","ast","traverse","code","state","source","range","start","end","astTransformVisitor","changeToLiteral","node","type","raw","extra","slice","convertComments","noScope","ObjectMethod","path","kind","value","id","generator","expression","async","params","body","ClassMethod","enter","_babelType","innerComments","trailingComments","leadingComments","Object","defineProperty","_paths","writable","exit","isFunction","isProgram","directivesContainer","directives","i","length","directive","unshift","isJSXText","isNumericLiteral","isStringLiteral","isBooleanLiteral","String","isNullLiteral","isRegExpLiteral","regex","pattern","flags","isObjectProperty","isClassMethod","isObjectMethod","key","offset","indexOf","defaults","loc","line","column","returnType","typeParameters","isRestProperty","isSpreadProperty","isTypeParameter","typeAnnotation","bound","isQualifiedTypeIdentifier","isObjectTypeProperty","isObjectTypeIndexer","isFunctionTypeParam","name","isImportDeclaration","isType","isExportDeclaration","declar","get","isClassExpression","declaration","isFunctionExpression","isTemplateLiteral","j","quasis","q","tail"],"mappings":"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","file":"toAST.js","sourcesContent":["import { convertComments } from \"./convertComments.js\";\n\nexport function toAST (ast, traverse, code) {\n  var state = { source: code };\n  ast.range = [ast.start, ast.end];\n  traverse(ast, astTransformVisitor, null, state);\n}\n\nfunction changeToLiteral(node, state) {\n  node.type = \"Literal\";\n  if (!node.raw) {\n    if (node.extra && node.extra.raw) {\n      node.raw = node.extra.raw;\n    } else {\n      node.raw = state.source.slice(node.start, node.end);\n    }\n  }\n}\n\nvar astTransformVisitor = {\n  noScope: true,\n   ObjectMethod: function(path) {\n            if (!path.node || path.node === \"method\") {\n                path.node.kind = \"init\";\n            }\n            path.node.value = {\n                type: \"FunctionExpression\",\n                start: path.node.start,\n                end: path.node.end,\n                range: [path.node.start, path.node.end],\n                id: path.node.id,\n                generator: path.node.generator,\n                expression: path.node.expression,\n                async: path.node.async,\n                params: path.node.params,\n                body: path.node.body\n            };\n            path.node.type = \"Property\";\n        },\n        ClassMethod: function(path) {\n            path.node.value = {\n                type: \"FunctionExpression\",\n                start: path.node.start,\n                end: path.node.end,\n                range: [path.node.start, path.node.end],\n                id: path.node.id,\n                generator: path.node.generator,\n                expression: path.node.expression,\n                async: path.node.async,\n                params: path.node.params,\n                body: path.node.body\n            };\n            path.node.type = \"MethodDefinition\";\n        },\n  enter (path) {\n    var node = path.node;\n\n    node.range = [node.start, node.end];\n\n    // private var to track original node type\n    node._babelType = node.type;\n\n    if (node.innerComments) {\n      node.trailingComments = node.innerComments;\n      delete node.innerComments;\n    }\n\n    if (node.trailingComments) {\n      convertComments(node.trailingComments);\n    }\n\n    if (node.leadingComments) {\n      convertComments(node.leadingComments);\n    }\n\n    // make '_paths' non-enumerable (babel-eslint #200)\n    Object.defineProperty(node, \"_paths\", { value: node._paths, writable: true });\n  },\n  exit (path, state) {\n    var node = path.node;\n\n    // fixDirectives\n    if (path.isFunction() || path.isProgram()) {\n      var directivesContainer = node;\n      var body = node.body;\n      if (node.type !== \"Program\") {\n        directivesContainer = body;\n        body = body.body;\n      }\n      if (directivesContainer.directives) {\n        for (var i = directivesContainer.directives.length - 1; i >= 0; i--) {\n          var directive = directivesContainer.directives[i];\n          directive.type = \"ExpressionStatement\";\n          directive.expression = directive.value;\n          delete directive.value;\n          directive.expression.type = \"Literal\";\n          changeToLiteral(directive.expression, state);\n          body.unshift(directive);\n        }\n        delete directivesContainer.directives;\n      }\n    }\n\n    if (path.isJSXText()) {\n      node.type = \"Literal\";\n      node.raw = node.value;\n    }\n\n    if (path.isNumericLiteral() ||\n        path.isStringLiteral()) {\n      changeToLiteral(node, state);\n    }\n\n    if (path.isBooleanLiteral()) {\n      node.type = \"Literal\";\n      node.raw = String(node.value);\n    }\n\n    if (path.isNullLiteral()) {\n      node.type = \"Literal\";\n      node.raw = \"null\";\n      node.value = null;\n    }\n\n    if (path.isRegExpLiteral()) {\n      node.type = \"Literal\";\n      node.raw = node.extra.raw;\n      node.value = {};\n      node.regex = {\n        pattern: node.pattern,\n        flags: node.flags\n      };\n      delete node.extra;\n      delete node.pattern;\n      delete node.flags;\n    }\n\n    if (path.isObjectProperty()) {\n      node.type = \"Property\";\n      node.kind = \"init\";\n    }\n\n    if (path.isClassMethod() || path.isObjectMethod()) {\n      var code = state.source.slice(node.key.end, node.body.start);\n      var offset = code.indexOf(\"(\");\n\n      node.value = {\n        type: \"FunctionExpression\",\n        id: node.id,\n        params: node.params,\n        body: node.body,\n        async: node.async,\n        generator: node.generator,\n        expression: node.expression,\n        defaults: [], // basic support - TODO: remove (old esprima)\n        loc: {\n          start: {\n            line: node.key.loc.start.line,\n            column: node.key.loc.end.column + offset // a[() {]\n          },\n          end: node.body.loc.end\n        }\n      };\n      // [asdf]() {\n      node.value.range = [node.key.end + offset, node.body.end];\n\n      node.value.start = node.value.range && node.value.range[0] || node.value.loc.start.column;\n      node.value.end = node.value.range && node.value.range[1] || node.value.loc.end.column;\n\n      if (node.returnType) {\n        node.value.returnType = node.returnType;\n      }\n\n      if (node.typeParameters) {\n        node.value.typeParameters = node.typeParameters;\n      }\n\n      if (path.isClassMethod()) {\n        node.type = \"MethodDefinition\";\n      }\n\n      if (path.isObjectMethod()) {\n        node.type = \"Property\";\n        if (node.kind === \"method\") {\n          node.kind = \"init\";\n        }\n      }\n\n      delete node.body;\n      delete node.id;\n      delete node.async;\n      delete node.generator;\n      delete node.expression;\n      delete node.params;\n      delete node.returnType;\n      delete node.typeParameters;\n    }\n\n    if (path.isRestProperty() || path.isSpreadProperty()) {\n      node.type = `Experimental${node.type}`;\n    }\n\n    if (path.isTypeParameter && path.isTypeParameter()) {\n      node.type = \"Identifier\";\n      node.typeAnnotation = node.bound;\n      delete node.bound;\n    }\n\n    // flow: prevent \"no-undef\"\n    // for \"Component\" in: \"let x: React.Component\"\n    if (path.isQualifiedTypeIdentifier()) {\n      delete node.id;\n    }\n    // for \"b\" in: \"var a: { b: Foo }\"\n    if (path.isObjectTypeProperty()) {\n      delete node.key;\n    }\n    // for \"indexer\" in: \"var a: {[indexer: string]: number}\"\n    if (path.isObjectTypeIndexer()) {\n      delete node.id;\n    }\n    // for \"param\" in: \"var a: { func(param: Foo): Bar };\"\n    if (path.isFunctionTypeParam()) {\n      delete node.name;\n    }\n\n    // modules\n\n    if (path.isImportDeclaration()) {\n      delete node.isType;\n    }\n\n    if (path.isExportDeclaration()) {\n      var declar = path.get(\"declaration\");\n      if (declar.isClassExpression()) {\n        node.declaration.type = \"ClassDeclaration\";\n      } else if (declar.isFunctionExpression()) {\n        node.declaration.type = \"FunctionDeclaration\";\n      }\n    }\n\n    // TODO: remove (old esprima)\n    if (path.isFunction()) {\n      if (!node.defaults) {\n        node.defaults = [];\n      }\n    }\n\n    // template string range fixes\n    if (path.isTemplateLiteral()) {\n      for (var j = 0; j < node.quasis.length; j++) {\n        var q = node.quasis[j];\n        q.range[0] -= 1;\n        if (q.tail) {\n          q.range[1] += 1;\n        } else {\n          q.range[1] += 2;\n        }\n        q.loc.start.column -= 1;\n        if (q.tail) {\n          q.loc.end.column += 1;\n        } else {\n          q.loc.end.column += 2;\n        }\n      }\n    }\n  }\n};\n"]}