{"version":3,"names":["attachComments","ast","comments","tokens","length","firstComment","lastComment","start","end","loc","line","column","leadingComments","innerComments","token","body","node","firstTokenStart","len","i","push","lastToken","range","_export","setters","execute"],"sources":["attachComments.js"],"sourcesContent":["// comment fixes\nexport function attachComments(ast, comments, tokens) {\n  if (comments.length) {\n    var firstComment = comments[0];\n    var lastComment = comments[comments.length - 1];\n    // fixup program start\n    if (!tokens.length) {\n      // if no tokens, the program starts at the end of the last comment\n      ast.start = lastComment.end;\n      ast.loc.start.line = lastComment.loc.end.line;\n      ast.loc.start.column = lastComment.loc.end.column;\n\n      if (ast.leadingComments === null && ast.innerComments.length) {\n        ast.leadingComments = ast.innerComments;\n      }\n    } else if (firstComment.start < tokens[0].start) {\n      // if there are comments before the first token, the program starts at the first token\n      var token = tokens[0];\n      // ast.start = token.start;\n      // ast.loc.start.line = token.loc.start.line;\n      // ast.loc.start.column = token.loc.start.column;\n\n      // estraverse do not put leading comments on first node when the comment\n      // appear before the first token\n      if (ast.body.length) {\n        var node = ast.body[0];\n        node.leadingComments = [];\n        var firstTokenStart = token.start;\n        var len = comments.length;\n        for (var i = 0; i < len && comments[i].start < firstTokenStart; i++) {\n          node.leadingComments.push(comments[i]);\n        }\n      }\n    }\n    // fixup program end\n    if (tokens.length) {\n      var lastToken = tokens[tokens.length - 1];\n      if (lastComment.end > lastToken.end) {\n        // If there is a comment after the last token, the program ends at the\n        // last token and not the comment\n        // ast.end = lastToken.end;\n        ast.range[1] = lastToken.end;\n        ast.loc.end.line = lastToken.loc.end.line;\n        ast.loc.end.column = lastToken.loc.end.column;\n      }\n    }\n  } else {\n    if (!tokens.length) {\n      ast.loc.start.line = 1;\n      ast.loc.end.line = 1;\n    }\n  }\n  if (ast.body && ast.body.length > 0  && ast.body[0].loc) {\n    ast.loc.start.line = ast.body[0].loc.start.line;\n    ast.range[0] = ast.body[0].start;\n  }\n}\n"],"mappings":";;;EAAA;EACO,SAASA,cAAcA,CAACC,GAAG,EAAEC,QAAQ,EAAEC,MAAM,EAAE;IACpD,IAAID,QAAQ,CAACE,MAAM,EAAE;MACnB,IAAIC,YAAY,GAAGH,QAAQ,CAAC,CAAC,CAAC;MAC9B,IAAII,WAAW,GAAGJ,QAAQ,CAACA,QAAQ,CAACE,MAAM,GAAG,CAAC,CAAC;MAC/C;MACA,IAAI,CAACD,MAAM,CAACC,MAAM,EAAE;QAClB;QACAH,GAAG,CAACM,KAAK,GAAGD,WAAW,CAACE,GAAG;QAC3BP,GAAG,CAACQ,GAAG,CAACF,KAAK,CAACG,IAAI,GAAGJ,WAAW,CAACG,GAAG,CAACD,GAAG,CAACE,IAAI;QAC7CT,GAAG,CAACQ,GAAG,CAACF,KAAK,CAACI,MAAM,GAAGL,WAAW,CAACG,GAAG,CAACD,GAAG,CAACG,MAAM;QAEjD,IAAIV,GAAG,CAACW,eAAe,KAAK,IAAI,IAAIX,GAAG,CAACY,aAAa,CAACT,MAAM,EAAE;UAC5DH,GAAG,CAACW,eAAe,GAAGX,GAAG,CAACY,aAAa;QACzC;MACF,CAAC,MAAM,IAAIR,YAAY,CAACE,KAAK,GAAGJ,MAAM,CAAC,CAAC,CAAC,CAACI,KAAK,EAAE;QAC/C;QACA,IAAIO,KAAK,GAAGX,MAAM,CAAC,CAAC,CAAC;QACrB;QACA;QACA;;QAEA;QACA;QACA,IAAIF,GAAG,CAACc,IAAI,CAACX,MAAM,EAAE;UACnB,IAAIY,IAAI,GAAGf,GAAG,CAACc,IAAI,CAAC,CAAC,CAAC;UACtBC,IAAI,CAACJ,eAAe,GAAG,EAAE;UACzB,IAAIK,eAAe,GAAGH,KAAK,CAACP,KAAK;UACjC,IAAIW,GAAG,GAAGhB,QAAQ,CAACE,MAAM;UACzB,KAAK,IAAIe,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,GAAG,IAAIhB,QAAQ,CAACiB,CAAC,CAAC,CAACZ,KAAK,GAAGU,eAAe,EAAEE,CAAC,EAAE,EAAE;YACnEH,IAAI,CAACJ,eAAe,CAACQ,IAAI,CAAClB,QAAQ,CAACiB,CAAC,CAAC,CAAC;UACxC;QACF;MACF;MACA;MACA,IAAIhB,MAAM,CAACC,MAAM,EAAE;QACjB,IAAIiB,SAAS,GAAGlB,MAAM,CAACA,MAAM,CAACC,MAAM,GAAG,CAAC,CAAC;QACzC,IAAIE,WAAW,CAACE,GAAG,GAAGa,SAAS,CAACb,GAAG,EAAE;UACnC;UACA;UACA;UACAP,GAAG,CAACqB,KAAK,CAAC,CAAC,CAAC,GAAGD,SAAS,CAACb,GAAG;UAC5BP,GAAG,CAACQ,GAAG,CAACD,GAAG,CAACE,IAAI,GAAGW,SAAS,CAACZ,GAAG,CAACD,GAAG,CAACE,IAAI;UACzCT,GAAG,CAACQ,GAAG,CAACD,GAAG,CAACG,MAAM,GAAGU,SAAS,CAACZ,GAAG,CAACD,GAAG,CAACG,MAAM;QAC/C;MACF;IACF,CAAC,MAAM;MACL,IAAI,CAACR,MAAM,CAACC,MAAM,EAAE;QAClBH,GAAG,CAACQ,GAAG,CAACF,KAAK,CAACG,IAAI,GAAG,CAAC;QACtBT,GAAG,CAACQ,GAAG,CAACD,GAAG,CAACE,IAAI,GAAG,CAAC;MACtB;IACF;IACA,IAAIT,GAAG,CAACc,IAAI,IAAId,GAAG,CAACc,IAAI,CAACX,MAAM,GAAG,CAAC,IAAKH,GAAG,CAACc,IAAI,CAAC,CAAC,CAAC,CAACN,GAAG,EAAE;MACvDR,GAAG,CAACQ,GAAG,CAACF,KAAK,CAACG,IAAI,GAAGT,GAAG,CAACc,IAAI,CAAC,CAAC,CAAC,CAACN,GAAG,CAACF,KAAK,CAACG,IAAI;MAC/CT,GAAG,CAACqB,KAAK,CAAC,CAAC,CAAC,GAAGrB,GAAG,CAACc,IAAI,CAAC,CAAC,CAAC,CAACR,KAAK;IAClC;EACF;EAACgB,OAAA,mBAvDevB,cAAc;EAAA;IAAAwB,OAAA;IAAAC,OAAA,WAAAA,CAAA;EAAA;AAAA"}