UNPKG

3.06 kBSource Map (JSON)View Raw
1{"version":3,"file":"formatter.js","sourceRoot":"","sources":["formatter.ts"],"names":[],"mappings":";;AAAA,+BAAiC;AAEjC,iCAA0D;AAE1D;IAAA;QAAA,iBAcC;QAbG,UAAK,GAAmC,EAAE,CAAC;QAK3C,6BAA6B;QAE7B,2BAAsB,GAAG,cAAM,OAAA,EAAE,CAAC,yBAAyB,EAAE,EAA9B,CAA8B,CAAC;QAC9D,uBAAkB,GAAG,cAAM,OAAA,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,EAAvB,CAAuB,CAAC;QACnD,qBAAgB,GAAG,UAAC,SAAiB,IAAK,OAAA,GAAG,EAAH,CAAG,CAAC;QAC9C,sBAAiB,GAAG,UAAC,QAAgB,IAAK,OAAA,KAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAApB,CAAoB,CAAC;QAC/D,wBAAmB,GAAG,cAAM,OAAA,OAAO,CAAC,GAAG,EAAE,EAAb,CAAa,CAAC;QAC1C,0BAAqB,GAAG,UAAC,OAA2B,IAAK,OAAA,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAjC,CAAiC,CAAC;IAC/F,CAAC;IAZG,qCAAO,GAAP,UAAQ,QAAgB,EAAE,IAAY;QAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAUL,0BAAC;AAAD,CAAC,AAdD,IAcC;AAED,gBAAuB,QAAgB,EAAE,IAAY,EAAE,OAA2C;IAA3C,wBAAA,EAAA,UAAU,uCAA+B,EAAE;IAC9F,IAAM,IAAI,GAAG,IAAI,mBAAmB,EAAE,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE7B,IAAM,eAAe,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACvD,IAAM,KAAK,GAAG,eAAe,CAAC,6BAA6B,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/E,KAAK;SACA,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAA3B,CAA2B,CAAC;SAC3C,OAAO,EAAE;SACT,OAAO,CAAC,UAAA,IAAI;QACT,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,GAAG,KAAG,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,IAAM,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEP,MAAM,CAAC,IAAI,CAAC;AAChB,CAAC;AAhBD,wBAgBC","sourcesContent":["import * as ts from \"typescript\";\n\nimport { createDefaultFormatCodeSettings } from \"./utils\";\n\nclass LanguageServiceHost implements ts.LanguageServiceHost {\n files: ts.MapLike<ts.IScriptSnapshot> = {};\n addFile(fileName: string, text: string) {\n this.files[fileName] = ts.ScriptSnapshot.fromString(text);\n }\n\n // for ts.LanguageServiceHost\n\n getCompilationSettings = () => ts.getDefaultCompilerOptions();\n getScriptFileNames = () => Object.keys(this.files);\n getScriptVersion = (_fileName: string) => \"0\";\n getScriptSnapshot = (fileName: string) => this.files[fileName];\n getCurrentDirectory = () => process.cwd();\n getDefaultLibFileName = (options: ts.CompilerOptions) => ts.getDefaultLibFilePath(options);\n}\n\nexport function format(fileName: string, text: string, options = createDefaultFormatCodeSettings()) {\n const host = new LanguageServiceHost();\n host.addFile(fileName, text);\n\n const languageService = ts.createLanguageService(host);\n const edits = languageService.getFormattingEditsForDocument(fileName, options);\n edits\n .sort((a, b) => a.span.start - b.span.start)\n .reverse()\n .forEach(edit => {\n const head = text.slice(0, edit.span.start);\n const tail = text.slice(edit.span.start + edit.span.length);\n text = `${head}${edit.newText}${tail}`;\n });\n\n return text;\n}\n"]}
\No newline at end of file