UNPKG

5.32 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 return new (P || (P = Promise))(function (resolve, reject) {
4 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7 step((generator = generator.apply(thisArg, _arguments || [])).next());
8 });
9};
10Object.defineProperty(exports, "__esModule", { value: true });
11const process = require("process");
12const IncrementalChecker_1 = require("./IncrementalChecker");
13const CancellationToken_1 = require("./CancellationToken");
14const ApiIncrementalChecker_1 = require("./ApiIncrementalChecker");
15const NormalizedMessageFactories_1 = require("./NormalizedMessageFactories");
16const worker_rpc_1 = require("worker-rpc");
17const RpcTypes_1 = require("./RpcTypes");
18const patchTypescript_1 = require("./patchTypescript");
19const createEslinter_1 = require("./createEslinter");
20const rpc = new worker_rpc_1.RpcProvider(message => {
21 try {
22 process.send(message, undefined, undefined, error => {
23 if (error) {
24 process.exit();
25 }
26 });
27 }
28 catch (e) {
29 // channel closed...
30 process.exit();
31 }
32});
33process.on('message', message => rpc.dispatch(message));
34const typescript = require(process.env.TYPESCRIPT_PATH);
35const patchConfig = {
36 skipGetSyntacticDiagnostics: process.env.USE_INCREMENTAL_API === 'true' &&
37 process.env.CHECK_SYNTACTIC_ERRORS !== 'true'
38};
39patchTypescript_1.patchTypescript(typescript, patchConfig);
40// message factories
41exports.createNormalizedMessageFromDiagnostic = NormalizedMessageFactories_1.makeCreateNormalizedMessageFromDiagnostic(typescript);
42exports.createNormalizedMessageFromRuleFailure = NormalizedMessageFactories_1.makeCreateNormalizedMessageFromRuleFailure();
43exports.createNormalizedMessageFromInternalError = NormalizedMessageFactories_1.makeCreateNormalizedMessageFromInternalError();
44const resolveModuleName = process.env.RESOLVE_MODULE_NAME
45 ? require(process.env.RESOLVE_MODULE_NAME).resolveModuleName
46 : undefined;
47const resolveTypeReferenceDirective = process.env
48 .RESOLVE_TYPE_REFERENCE_DIRECTIVE
49 ? require(process.env.RESOLVE_TYPE_REFERENCE_DIRECTIVE)
50 .resolveTypeReferenceDirective
51 : undefined;
52const eslinter = process.env.ESLINT === 'true'
53 ? createEslinter_1.createEslinter(JSON.parse(process.env.ESLINT_OPTIONS))
54 : undefined;
55function createChecker(useIncrementalApi) {
56 const apiIncrementalCheckerParams = {
57 typescript,
58 context: process.env.CONTEXT,
59 programConfigFile: process.env.TSCONFIG,
60 compilerOptions: JSON.parse(process.env.COMPILER_OPTIONS),
61 createNormalizedMessageFromDiagnostic: exports.createNormalizedMessageFromDiagnostic,
62 linterConfigFile: process.env.TSLINT === 'true' ? true : process.env.TSLINT || false,
63 linterAutoFix: process.env.TSLINTAUTOFIX === 'true',
64 createNormalizedMessageFromRuleFailure: exports.createNormalizedMessageFromRuleFailure,
65 eslinter,
66 checkSyntacticErrors: process.env.CHECK_SYNTACTIC_ERRORS === 'true',
67 resolveModuleName,
68 resolveTypeReferenceDirective
69 };
70 if (useIncrementalApi) {
71 return new ApiIncrementalChecker_1.ApiIncrementalChecker(apiIncrementalCheckerParams);
72 }
73 const incrementalCheckerParams = Object.assign({}, apiIncrementalCheckerParams, {
74 watchPaths: process.env.WATCH === '' ? [] : process.env.WATCH.split('|'),
75 workNumber: parseInt(process.env.WORK_NUMBER, 10) || 0,
76 workDivision: parseInt(process.env.WORK_DIVISION, 10) || 1,
77 vue: process.env.VUE === 'true'
78 });
79 return new IncrementalChecker_1.IncrementalChecker(incrementalCheckerParams);
80}
81const checker = createChecker(process.env.USE_INCREMENTAL_API === 'true');
82function run(cancellationToken) {
83 return __awaiter(this, void 0, void 0, function* () {
84 let diagnostics = [];
85 let lints = [];
86 try {
87 checker.nextIteration();
88 diagnostics = yield checker.getDiagnostics(cancellationToken);
89 if (checker.hasEsLinter()) {
90 lints = checker.getEsLints(cancellationToken);
91 }
92 else if (checker.hasLinter()) {
93 lints = checker.getLints(cancellationToken);
94 }
95 }
96 catch (error) {
97 if (error instanceof typescript.OperationCanceledException) {
98 return undefined;
99 }
100 diagnostics.push(exports.createNormalizedMessageFromInternalError(error));
101 }
102 if (cancellationToken.isCancellationRequested()) {
103 return undefined;
104 }
105 return {
106 diagnostics,
107 lints
108 };
109 });
110}
111rpc.registerRpcHandler(RpcTypes_1.RUN, message => typeof message !== 'undefined'
112 ? run(CancellationToken_1.CancellationToken.createFromJSON(typescript, message))
113 : undefined);
114process.on('SIGINT', () => {
115 process.exit();
116});
117//# sourceMappingURL=service.js.map
\No newline at end of file