{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-croquet/src/external/eslint/babylon-to-espree7/convertTemplateType.js"],"names":["convertTemplateType","tokens","tt","curlyBrace","templateTokens","result","addTemplateType","start","end","length","value","reduce","token","type","template","label","push","loc","forEach","backQuote","dollarBraceL","braceR","eof"],"mappings":";;;AAAO,WAASA,mBAAT,CAA6BC,MAA7B,EAAqCC,EAArC,EAAyC;AAC9C,QAAIC,aAAa,IAAjB;AACA,QAAIC,iBAAiB,EAArB;AACA,UAAMC,SAAS,EAAf;;AAEA,aAASC,eAAT,GAA2B;AACzB,YAAMC,QAAQH,eAAe,CAAf,CAAd;AACA,YAAMI,MAAMJ,eAAeA,eAAeK,MAAf,GAAwB,CAAvC,CAAZ;;AAEA,YAAMC,QAAQN,eAAeO,MAAf,CAAsB,CAACN,MAAD,EAASO,KAAT,KAAmB;AACrD,YAAIA,MAAMF,KAAV,EAAiB;AACfL,oBAAUO,MAAMF,KAAhB;AACD,SAFD,MAEO,IAAIE,MAAMC,IAAN,KAAeX,GAAGY,QAAtB,EAAgC;AACrCT,oBAAUO,MAAMC,IAAN,CAAWE,KAArB;AACD;;AAED,eAAOV,MAAP;AACD,OARa,EAQX,EARW,CAAd;;AAUAA,aAAOW,IAAP,CAAY;AACVH,cAAM,UADI;AAEVH,eAAOA,KAFG;AAGVH,eAAOA,MAAMA,KAHH;AAIVC,aAAKA,IAAIA,GAJC;AAKVS,aAAK;AACHV,iBAAOA,MAAMU,GAAN,CAAUV,KADd;AAEHC,eAAKA,IAAIS,GAAJ,CAAQT;AAFV;AALK,OAAZ;;AAWAJ,uBAAiB,EAAjB;AACD;;AAEDH,WAAOiB,OAAP,CAAeN,SAAS;AACtB,cAAQA,MAAMC,IAAd;AACE,aAAKX,GAAGiB,SAAR;AACE,cAAIhB,UAAJ,EAAgB;AACdE,mBAAOW,IAAP,CAAYb,UAAZ;AACAA,yBAAa,IAAb;AACD;;AAEDC,yBAAeY,IAAf,CAAoBJ,KAApB;;AAEA,cAAIR,eAAeK,MAAf,GAAwB,CAA5B,EAA+B;AAC7BH;AACD;;AAED;;AAEF,aAAKJ,GAAGkB,YAAR;AACEhB,yBAAeY,IAAf,CAAoBJ,KAApB;AACAN;AACA;;AAEF,aAAKJ,GAAGmB,MAAR;AACE,cAAIlB,UAAJ,EAAgB;AACdE,mBAAOW,IAAP,CAAYb,UAAZ;AACD;;AAEDA,uBAAaS,KAAb;AACA;;AAEF,aAAKV,GAAGY,QAAR;AACE,cAAIX,UAAJ,EAAgB;AACdC,2BAAeY,IAAf,CAAoBb,UAApB;AACAA,yBAAa,IAAb;AACD;;AAEDC,yBAAeY,IAAf,CAAoBJ,KAApB;AACA;;AAEF,aAAKV,GAAGoB,GAAR;AACE,cAAInB,UAAJ,EAAgB;AACdE,mBAAOW,IAAP,CAAYb,UAAZ;AACD;;AAED;;AAEF;AACE,cAAIA,UAAJ,EAAgB;AACdE,mBAAOW,IAAP,CAAYb,UAAZ;AACAA,yBAAa,IAAb;AACD;;AAEDE,iBAAOW,IAAP,CAAYJ,KAAZ;AAlDJ;AAoDD,KArDD;;AAuDA,WAAOP,MAAP;AACD;;iCAzFeL,mB","file":"convertTemplateType.js","sourcesContent":["export function convertTemplateType(tokens, tt) {\n  let curlyBrace = null;\n  let templateTokens = [];\n  const result = [];\n\n  function addTemplateType() {\n    const start = templateTokens[0];\n    const end = templateTokens[templateTokens.length - 1];\n\n    const value = templateTokens.reduce((result, token) => {\n      if (token.value) {\n        result += token.value;\n      } else if (token.type !== tt.template) {\n        result += token.type.label;\n      }\n\n      return result;\n    }, \"\");\n\n    result.push({\n      type: \"Template\",\n      value: value,\n      start: start.start,\n      end: end.end,\n      loc: {\n        start: start.loc.start,\n        end: end.loc.end,\n      },\n    });\n\n    templateTokens = [];\n  }\n\n  tokens.forEach(token => {\n    switch (token.type) {\n      case tt.backQuote:\n        if (curlyBrace) {\n          result.push(curlyBrace);\n          curlyBrace = null;\n        }\n\n        templateTokens.push(token);\n\n        if (templateTokens.length > 1) {\n          addTemplateType();\n        }\n\n        break;\n\n      case tt.dollarBraceL:\n        templateTokens.push(token);\n        addTemplateType();\n        break;\n\n      case tt.braceR:\n        if (curlyBrace) {\n          result.push(curlyBrace);\n        }\n\n        curlyBrace = token;\n        break;\n\n      case tt.template:\n        if (curlyBrace) {\n          templateTokens.push(curlyBrace);\n          curlyBrace = null;\n        }\n\n        templateTokens.push(token);\n        break;\n\n      case tt.eof:\n        if (curlyBrace) {\n          result.push(curlyBrace);\n        }\n\n        break;\n\n      default:\n        if (curlyBrace) {\n          result.push(curlyBrace);\n          curlyBrace = null;\n        }\n\n        result.push(token);\n    }\n  });\n\n  return result;\n}\n"]}