123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. // if the tslint.json file cannot be found that's fine, the
  78. // dev may not want to run tslint at all and to do that they
  79. // just don't have the file
  80. reject(err);
  81. return;
  82. }
  83. resolve(tsLintConfig);
  84. });
  85. });
  86. }