({
rootNames,
options,
host,
oldProgram,
emitCallback,
mergeEmitResultsCallback,
gatherDiagnostics = defaultGatherDiagnostics,
customTransformers,
emitFlags = api.EmitFlags.Default,
forceEmit = false,
modifiedResourceFiles = null,
}: {
rootNames: string[];
options: api.CompilerOptions;
host?: api.CompilerHost;
oldProgram?: api.Program;
emitCallback?: api.TsEmitCallback<CbEmitRes>;
mergeEmitResultsCallback?: api.TsMergeEmitResultsCallback<CbEmitRes>;
gatherDiagnostics?: (program: api.Program) => ReadonlyArray<ts.Diagnostic>;
customTransformers?: api.CustomTransformers;
emitFlags?: api.EmitFlags;
forceEmit?: boolean;
modifiedResourceFiles?: Set<string> | null;
})
| 253 | } |
| 254 | |
| 255 | export function performCompilation<CbEmitRes extends ts.EmitResult = ts.EmitResult>({ |
| 256 | rootNames, |
| 257 | options, |
| 258 | host, |
| 259 | oldProgram, |
| 260 | emitCallback, |
| 261 | mergeEmitResultsCallback, |
| 262 | gatherDiagnostics = defaultGatherDiagnostics, |
| 263 | customTransformers, |
| 264 | emitFlags = api.EmitFlags.Default, |
| 265 | forceEmit = false, |
| 266 | modifiedResourceFiles = null, |
| 267 | }: { |
| 268 | rootNames: string[]; |
| 269 | options: api.CompilerOptions; |
| 270 | host?: api.CompilerHost; |
| 271 | oldProgram?: api.Program; |
| 272 | emitCallback?: api.TsEmitCallback<CbEmitRes>; |
| 273 | mergeEmitResultsCallback?: api.TsMergeEmitResultsCallback<CbEmitRes>; |
| 274 | gatherDiagnostics?: (program: api.Program) => ReadonlyArray<ts.Diagnostic>; |
| 275 | customTransformers?: api.CustomTransformers; |
| 276 | emitFlags?: api.EmitFlags; |
| 277 | forceEmit?: boolean; |
| 278 | modifiedResourceFiles?: Set<string> | null; |
| 279 | }): PerformCompilationResult { |
| 280 | let program: api.Program | undefined; |
| 281 | let emitResult: ts.EmitResult | undefined; |
| 282 | let allDiagnostics: Array<ts.Diagnostic> = []; |
| 283 | try { |
| 284 | if (!host) { |
| 285 | host = ng.createCompilerHost({options}); |
| 286 | } |
| 287 | if (modifiedResourceFiles) { |
| 288 | host.getModifiedResourceFiles = () => modifiedResourceFiles; |
| 289 | } |
| 290 | |
| 291 | program = ng.createProgram({rootNames, host, options, oldProgram}); |
| 292 | |
| 293 | const beforeDiags = Date.now(); |
| 294 | allDiagnostics.push(...gatherDiagnostics(program!)); |
| 295 | if (options.diagnostics) { |
| 296 | const afterDiags = Date.now(); |
| 297 | allDiagnostics.push( |
| 298 | createMessageDiagnostic(`Time for diagnostics: ${afterDiags - beforeDiags}ms.`), |
| 299 | ); |
| 300 | } |
| 301 | |
| 302 | if (!hasErrors(allDiagnostics)) { |
| 303 | emitResult = program!.emit({ |
| 304 | emitCallback, |
| 305 | mergeEmitResultsCallback, |
| 306 | customTransformers, |
| 307 | emitFlags, |
| 308 | forceEmit, |
| 309 | }); |
| 310 | allDiagnostics.push(...emitResult.diagnostics); |
| 311 | return {diagnostics: allDiagnostics, program, emitResult}; |
| 312 | } |
no test coverage detected
searching dependent graphs…