You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
6.1 KiB
125 lines
6.1 KiB
"use strict"; |
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { |
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } |
|
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) : adopt(result.value).then(fulfilled, rejected); } |
|
step((generator = generator.apply(thisArg, _arguments || [])).next()); |
|
}); |
|
}; |
|
Object.defineProperty(exports, "__esModule", { value: true }); |
|
const pluginHooks_1 = require("./pluginHooks"); |
|
const reporter_1 = require("../reporter"); |
|
const OperationCanceledError_1 = require("../error/OperationCanceledError"); |
|
const tapDoneToAsyncGetIssues_1 = require("./tapDoneToAsyncGetIssues"); |
|
const tapAfterCompileToGetIssues_1 = require("./tapAfterCompileToGetIssues"); |
|
const interceptDoneToGetWebpackDevServerTap_1 = require("./interceptDoneToGetWebpackDevServerTap"); |
|
const ForkTsCheckerWebpackPlugin_1 = require("../ForkTsCheckerWebpackPlugin"); |
|
function tapStartToConnectAndRunReporter(compiler, issuesReporter, dependenciesReporter, configuration, state) { |
|
const hooks = pluginHooks_1.getForkTsCheckerWebpackPluginHooks(compiler); |
|
compiler.hooks.run.tap('ForkTsCheckerWebpackPlugin', () => { |
|
if (!state.initialized) { |
|
state.initialized = true; |
|
state.watching = false; |
|
tapAfterCompileToGetIssues_1.tapAfterCompileToGetIssues(compiler, configuration, state); |
|
} |
|
}); |
|
compiler.hooks.watchRun.tap('ForkTsCheckerWebpackPlugin', () => __awaiter(this, void 0, void 0, function* () { |
|
if (!state.initialized) { |
|
state.initialized = true; |
|
state.watching = true; |
|
if (configuration.async) { |
|
tapDoneToAsyncGetIssues_1.tapDoneToAsyncGetIssues(compiler, configuration, state); |
|
interceptDoneToGetWebpackDevServerTap_1.interceptDoneToGetWebpackDevServerTap(compiler, configuration, state); |
|
} |
|
else { |
|
tapAfterCompileToGetIssues_1.tapAfterCompileToGetIssues(compiler, configuration, state); |
|
} |
|
} |
|
})); |
|
compiler.hooks.compilation.tap('ForkTsCheckerWebpackPlugin', (compilation) => __awaiter(this, void 0, void 0, function* () { |
|
if (compilation.compiler !== compiler) { |
|
// run only for the compiler that the plugin was registered for |
|
return; |
|
} |
|
let change = {}; |
|
if (state.watching) { |
|
change = reporter_1.getFilesChange(compiler); |
|
configuration.logger.infrastructure.info([ |
|
'Calling reporter service for incremental check.', |
|
` Changed files: ${JSON.stringify(change.changedFiles)}`, |
|
` Deleted files: ${JSON.stringify(change.deletedFiles)}`, |
|
].join('\n')); |
|
} |
|
else { |
|
configuration.logger.infrastructure.info('Calling reporter service for single check.'); |
|
} |
|
let resolveDependencies; |
|
let rejectDependencies; |
|
let resolveIssues; |
|
let rejectIssues; |
|
state.dependenciesPromise = new Promise((resolve, reject) => { |
|
resolveDependencies = resolve; |
|
rejectDependencies = reject; |
|
}); |
|
state.issuesPromise = new Promise((resolve, reject) => { |
|
resolveIssues = resolve; |
|
rejectIssues = reject; |
|
}); |
|
const previousIssuesReportPromise = state.issuesReportPromise; |
|
const previousDependenciesReportPromise = state.dependenciesReportPromise; |
|
change = yield hooks.start.promise(change, compilation); |
|
state.issuesReportPromise = ForkTsCheckerWebpackPlugin_1.ForkTsCheckerWebpackPlugin.issuesPool.submit((done) => new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { |
|
try { |
|
yield issuesReporter.connect(); |
|
const previousReport = yield previousIssuesReportPromise; |
|
if (previousReport) { |
|
yield previousReport.close(); |
|
} |
|
const report = yield issuesReporter.getReport(change); |
|
resolve(report); |
|
report.getIssues().then(resolveIssues).catch(rejectIssues).finally(done); |
|
} |
|
catch (error) { |
|
if (error instanceof OperationCanceledError_1.OperationCanceledError) { |
|
hooks.canceled.call(compilation); |
|
} |
|
else { |
|
hooks.error.call(error, compilation); |
|
} |
|
resolve(undefined); |
|
resolveIssues(undefined); |
|
done(); |
|
} |
|
}))); |
|
state.dependenciesReportPromise = ForkTsCheckerWebpackPlugin_1.ForkTsCheckerWebpackPlugin.dependenciesPool.submit((done) => new Promise((resolve) => __awaiter(this, void 0, void 0, function* () { |
|
try { |
|
yield dependenciesReporter.connect(); |
|
const previousReport = yield previousDependenciesReportPromise; |
|
if (previousReport) { |
|
yield previousReport.close(); |
|
} |
|
const report = yield dependenciesReporter.getReport(change); |
|
resolve(report); |
|
report |
|
.getDependencies() |
|
.then(resolveDependencies) |
|
.catch(rejectDependencies) |
|
.finally(done); |
|
} |
|
catch (error) { |
|
if (error instanceof OperationCanceledError_1.OperationCanceledError) { |
|
hooks.canceled.call(compilation); |
|
} |
|
else { |
|
hooks.error.call(error, compilation); |
|
} |
|
resolve(undefined); |
|
resolveDependencies(undefined); |
|
done(); |
|
} |
|
}))); |
|
})); |
|
} |
|
exports.tapStartToConnectAndRunReporter = tapStartToConnectAndRunReporter;
|
|
|