typescript-formatter
Version:
Formatter of TypeScript code
39 lines • 1.76 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
var ts = require("typescript");
var utils_1 = require("./utils");
var LanguageServiceHost = /** @class */ (function () {
function LanguageServiceHost() {
var _this = this;
this.files = {};
// for ts.LanguageServiceHost
this.getCompilationSettings = function () { return ts.getDefaultCompilerOptions(); };
this.getScriptFileNames = function () { return Object.keys(_this.files); };
this.getScriptVersion = function (_fileName) { return "0"; };
this.getScriptSnapshot = function (fileName) { return _this.files[fileName]; };
this.getCurrentDirectory = function () { return process.cwd(); };
this.getDefaultLibFileName = function (options) { return ts.getDefaultLibFilePath(options); };
}
LanguageServiceHost.prototype.addFile = function (fileName, text) {
this.files[fileName] = ts.ScriptSnapshot.fromString(text);
};
return LanguageServiceHost;
}());
function format(fileName, text, options) {
if (options === void 0) { options = utils_1.createDefaultFormatCodeSettings(); }
var host = new LanguageServiceHost();
host.addFile(fileName, text);
var languageService = ts.createLanguageService(host);
var edits = languageService.getFormattingEditsForDocument(fileName, options);
edits
.sort(function (a, b) { return a.span.start - b.span.start; })
.reverse()
.forEach(function (edit) {
var head = text.slice(0, edit.span.start);
var tail = text.slice(edit.span.start + edit.span.length);
text = "" + head + edit.newText + tail;
});
return text;
}
exports.format = format;
//# sourceMappingURL=formatter.js.map
;