UNPKG

typescript-assistant

Version:

Combines and integrates professional Typescript tools into your project

116 lines 4.12 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const util_1 = require("../util"); const typescript_formatter_1 = require("typescript-formatter"); let replaceOptions = { replace: true, verbose: false, baseDir: process.cwd(), editorconfig: true, tslint: true, tsfmt: true, verify: false, tsconfig: false, tsconfigFile: null, tslintFile: null, tsfmtFile: null, vscode: false, vscodeFile: null }; let verifyOptions = { replace: false, verbose: false, baseDir: process.cwd(), editorconfig: true, tslint: true, tsfmt: true, verify: true, tsconfig: false, tsconfigFile: null, tslintFile: null, tsfmtFile: null, vscode: false, vscodeFile: null }; exports.createFormatter = (dependencies) => { let { logger, bus, git } = dependencies; let runningFormatter; let rescheduled = false; let logError = (err) => logger.error('formatter', `error: ${err}`); let runFormatterOn = (files, options) => { logger.log('formatter', `checking ${files.length} files...`); return typescript_formatter_1.processFiles(files, options).then((resultMap) => { let success = true; Object.keys(resultMap).forEach((fileName) => { let result = resultMap[fileName]; if (result.error) { success = false; } if (result.message) { logger.log('formatter', `${options.replace ? 'Fixed ' : ''}${util_1.absolutePath(fileName)}: ${result.message}`); } }); return success; }); }; let runFormatter = (options) => { return git.findChangedFiles().then((files) => { files = files.filter(util_1.isTypescriptFile); return runFormatterOn(files, options); }); }; let verifyFormat = () => { if (runningFormatter) { rescheduled = true; } else { bus.report({ tool: 'format', status: 'busy' }); runningFormatter = runFormatter(verifyOptions).then((success) => { logger.log('formatter', success ? 'all files formatted' : 'unformatted files found'); bus.signal(success ? 'format-verified' : 'format-errored'); bus.report({ tool: 'format', status: 'ready', errors: success ? 0 : 1, fixable: success ? 0 : 1 }); }).catch(logError).then(() => { runningFormatter = undefined; if (rescheduled) { rescheduled = false; verifyFormat(); } }).catch(logError); } }; return { verifyFiles: (files) => { return runFormatterOn(files, verifyOptions); }, formatFiles: (files) => __awaiter(this, void 0, void 0, function* () { if (!files) { files = (yield git.findChangedFiles()).filter(util_1.isTypescriptFile); } return runFormatterOn(files, replaceOptions); }), startVerifying: (triggers) => { bus.registerAll(triggers, verifyFormat); verifyFormat(); }, stopVerifying: () => { bus.unregister(verifyFormat); } }; }; //# sourceMappingURL=formatter.js.map