1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var fs_1 = require("fs");
|
4 | var path_1 = require("path");
|
5 | var lint_utils_1 = require("./lint/lint-utils");
|
6 | var lint_factory_1 = require("./lint/lint-factory");
|
7 | var logger_1 = require("./logger/logger");
|
8 | var config_1 = require("./util/config");
|
9 | var constants_1 = require("./util/constants");
|
10 | var helpers_1 = require("./util/helpers");
|
11 | var transpile_1 = require("./transpile");
|
12 | var worker_client_1 = require("./worker-client");
|
13 | var taskInfo = {
|
14 | fullArg: '--tslint',
|
15 | shortArg: '-i',
|
16 | envVar: 'ionic_tslint',
|
17 | packageConfig: 'IONIC_TSLINT',
|
18 | defaultConfigFile: '../tslint'
|
19 | };
|
20 | function lint(context, tsLintConfig, typeCheck) {
|
21 | var logger = new logger_1.Logger('lint');
|
22 | return worker_client_1.runWorker('lint', 'lintWorker', context, { tsLintConfig: tsLintConfig, tsConfig: transpile_1.getTsConfigPath(context), typeCheck: typeCheck || helpers_1.getBooleanPropertyValue(constants_1.ENV_TYPE_CHECK_ON_LINT) })
|
23 | .then(function () {
|
24 | logger.finish();
|
25 | })
|
26 | .catch(function (err) {
|
27 | if (helpers_1.getBooleanPropertyValue(constants_1.ENV_BAIL_ON_LINT_ERROR)) {
|
28 | throw logger.fail(err);
|
29 | }
|
30 | logger.finish();
|
31 | });
|
32 | }
|
33 | exports.lint = lint;
|
34 | function lintWorker(context, _a) {
|
35 | var tsConfig = _a.tsConfig, tsLintConfig = _a.tsLintConfig, typeCheck = _a.typeCheck;
|
36 | return getLintConfig(context, tsLintConfig)
|
37 | .then(function (tsLintConfig) { return lintApp(context, {
|
38 | tsConfig: tsConfig,
|
39 | tsLintConfig: tsLintConfig,
|
40 | typeCheck: typeCheck
|
41 | }); });
|
42 | }
|
43 | exports.lintWorker = lintWorker;
|
44 | function lintUpdate(changedFiles, context, typeCheck) {
|
45 | var changedTypescriptFiles = changedFiles.filter(function (changedFile) { return changedFile.ext === '.ts'; });
|
46 | return worker_client_1.runWorker('lint', 'lintUpdateWorker', context, {
|
47 | typeCheck: typeCheck,
|
48 | tsConfig: transpile_1.getTsConfigPath(context),
|
49 | tsLintConfig: config_1.getUserConfigFile(context, taskInfo, null),
|
50 | filePaths: changedTypescriptFiles.map(function (changedTypescriptFile) { return changedTypescriptFile.filePath; })
|
51 | });
|
52 | }
|
53 | exports.lintUpdate = lintUpdate;
|
54 | function lintUpdateWorker(context, _a) {
|
55 | var tsConfig = _a.tsConfig, tsLintConfig = _a.tsLintConfig, filePaths = _a.filePaths, typeCheck = _a.typeCheck;
|
56 | var program = lint_factory_1.createProgram(context, tsConfig);
|
57 | return getLintConfig(context, tsLintConfig)
|
58 | .then(function (tsLintConfig) { return lint_utils_1.lintFiles(context, program, tsLintConfig, filePaths, { typeCheck: typeCheck }); })
|
59 | .catch(function () { });
|
60 | }
|
61 | exports.lintUpdateWorker = lintUpdateWorker;
|
62 | function lintApp(context, _a) {
|
63 | var tsConfig = _a.tsConfig, tsLintConfig = _a.tsLintConfig, typeCheck = _a.typeCheck;
|
64 | var program = lint_factory_1.createProgram(context, tsConfig);
|
65 | var files = lint_factory_1.getFileNames(context, program);
|
66 | return lint_utils_1.lintFiles(context, program, tsLintConfig, files, { typeCheck: typeCheck });
|
67 | }
|
68 | function getLintConfig(context, tsLintConfig) {
|
69 | return new Promise(function (resolve, reject) {
|
70 | tsLintConfig = config_1.getUserConfigFile(context, taskInfo, tsLintConfig);
|
71 | if (!tsLintConfig) {
|
72 | tsLintConfig = path_1.join(context.rootDir, 'tslint.json');
|
73 | }
|
74 | logger_1.Logger.debug("tslint config: " + tsLintConfig);
|
75 | fs_1.access(tsLintConfig, function (err) {
|
76 | if (err) {
|
77 |
|
78 |
|
79 |
|
80 | reject(err);
|
81 | return;
|
82 | }
|
83 | resolve(tsLintConfig);
|
84 | });
|
85 | });
|
86 | }
|