refactor(compiler-cli): expose ngtools api separately (#18978)
PR Close #18978
This commit is contained in:
parent
a1293b26ef
commit
ee04217d53
|
@ -0,0 +1,8 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
export {CompilerHost, CustomTransformers, Diagnostic, EmitFlags, Program, createCompilerHost, createProgram, formatDiagnostics} from './src/ngtools_api2';
|
|
@ -0,0 +1,130 @@
|
||||||
|
/**
|
||||||
|
* @license
|
||||||
|
* Copyright Google Inc. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Use of this source code is governed by an MIT-style license that can be
|
||||||
|
* found in the LICENSE file at https://angular.io/license
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a private API for @ngtools/webpack. This API should be stable for NG 5.
|
||||||
|
*
|
||||||
|
* It contains copies of the interfaces needed and wrapper functions to ensure that
|
||||||
|
* they are not broken accidentally.
|
||||||
|
*
|
||||||
|
* Once the ngc api is public and stable, this can be removed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import {ParseSourceSpan} from '@angular/compiler';
|
||||||
|
import * as ts from 'typescript';
|
||||||
|
|
||||||
|
import {formatDiagnostics as formatDiagnosticsOrig} from './perform_compile';
|
||||||
|
import {createCompilerHost as createCompilerOrig} from './transformers/compiler_host';
|
||||||
|
import {createProgram as createProgramOrig} from './transformers/program';
|
||||||
|
|
||||||
|
// Interfaces from ./transformers/api;
|
||||||
|
export interface Diagnostic {
|
||||||
|
messageText: string;
|
||||||
|
span?: ParseSourceSpan;
|
||||||
|
category: ts.DiagnosticCategory;
|
||||||
|
code: number;
|
||||||
|
source: 'angular';
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CompilerOptions extends ts.CompilerOptions {
|
||||||
|
basePath?: string;
|
||||||
|
skipMetadataEmit?: boolean;
|
||||||
|
strictMetadataEmit?: boolean;
|
||||||
|
skipTemplateCodegen?: boolean;
|
||||||
|
flatModuleOutFile?: string;
|
||||||
|
flatModuleId?: string;
|
||||||
|
generateCodeForLibraries?: boolean;
|
||||||
|
annotateForClosureCompiler?: boolean;
|
||||||
|
annotationsAs?: 'decorators'|'static fields';
|
||||||
|
trace?: boolean;
|
||||||
|
enableLegacyTemplate?: boolean;
|
||||||
|
disableExpressionLowering?: boolean;
|
||||||
|
i18nOutLocale?: string;
|
||||||
|
i18nOutFormat?: string;
|
||||||
|
i18nOutFile?: string;
|
||||||
|
i18nInFormat?: string;
|
||||||
|
i18nInLocale?: string;
|
||||||
|
i18nInFile?: string;
|
||||||
|
i18nInMissingTranslations?: 'error'|'warning'|'ignore';
|
||||||
|
preserveWhitespaces?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CompilerHost extends ts.CompilerHost {
|
||||||
|
moduleNameToFileName(moduleName: string, containingFile?: string): string|null;
|
||||||
|
fileNameToModuleName(importedFilePath: string, containingFilePath: string): string|null;
|
||||||
|
resourceNameToFileName(resourceName: string, containingFilePath: string): string|null;
|
||||||
|
toSummaryFileName(fileName: string, referringSrcFileName: string): string;
|
||||||
|
fromSummaryFileName(fileName: string, referringLibFileName: string): string;
|
||||||
|
readResource?(fileName: string): Promise<string>|string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum EmitFlags {
|
||||||
|
DTS = 1 << 0,
|
||||||
|
JS = 1 << 1,
|
||||||
|
|
||||||
|
Default = DTS | JS
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CustomTransformers {
|
||||||
|
beforeTs?: ts.TransformerFactory<ts.SourceFile>[];
|
||||||
|
afterTs?: ts.TransformerFactory<ts.SourceFile>[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TsEmitArguments {
|
||||||
|
program: ts.Program;
|
||||||
|
host: CompilerHost;
|
||||||
|
options: CompilerOptions;
|
||||||
|
targetSourceFile?: ts.SourceFile;
|
||||||
|
writeFile?: ts.WriteFileCallback;
|
||||||
|
cancellationToken?: ts.CancellationToken;
|
||||||
|
emitOnlyDtsFiles?: boolean;
|
||||||
|
customTransformers?: ts.CustomTransformers;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TsEmitCallback { (args: TsEmitArguments): ts.EmitResult; }
|
||||||
|
|
||||||
|
export interface Program {
|
||||||
|
getTsProgram(): ts.Program;
|
||||||
|
getTsOptionDiagnostics(cancellationToken?: ts.CancellationToken): ts.Diagnostic[];
|
||||||
|
getNgOptionDiagnostics(cancellationToken?: ts.CancellationToken): Diagnostic[];
|
||||||
|
getTsSyntacticDiagnostics(sourceFile?: ts.SourceFile, cancellationToken?: ts.CancellationToken):
|
||||||
|
ts.Diagnostic[];
|
||||||
|
getNgStructuralDiagnostics(cancellationToken?: ts.CancellationToken): Diagnostic[];
|
||||||
|
getTsSemanticDiagnostics(sourceFile?: ts.SourceFile, cancellationToken?: ts.CancellationToken):
|
||||||
|
ts.Diagnostic[];
|
||||||
|
getNgSemanticDiagnostics(fileName?: string, cancellationToken?: ts.CancellationToken):
|
||||||
|
Diagnostic[];
|
||||||
|
loadNgStructureAsync(): Promise<void>;
|
||||||
|
emit({emitFlags, cancellationToken, customTransformers, emitCallback}: {
|
||||||
|
emitFlags?: EmitFlags,
|
||||||
|
cancellationToken?: ts.CancellationToken,
|
||||||
|
customTransformers?: CustomTransformers,
|
||||||
|
emitCallback?: TsEmitCallback
|
||||||
|
}): ts.EmitResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapper for createProgram.
|
||||||
|
export function createProgram(
|
||||||
|
{rootNames, options, host, oldProgram}:
|
||||||
|
{rootNames: string[], options: CompilerOptions, host: CompilerHost, oldProgram?: Program}):
|
||||||
|
Program {
|
||||||
|
return createProgramOrig({rootNames, options, host, oldProgram});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapper for createCompilerHost.
|
||||||
|
export function createCompilerHost(
|
||||||
|
{options, tsHost = ts.createCompilerHost(options, true)}:
|
||||||
|
{options: CompilerOptions, tsHost?: ts.CompilerHost}): CompilerHost {
|
||||||
|
return createCompilerOrig({options, tsHost});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wrapper for formatDiagnostics.
|
||||||
|
export type Diagnostics = Array<ts.Diagnostic|Diagnostic>;
|
||||||
|
export function formatDiagnostics(options: CompilerOptions, diags: Diagnostics): string {
|
||||||
|
return formatDiagnosticsOrig(options, diags);
|
||||||
|
}
|
|
@ -250,13 +250,6 @@ export interface Program {
|
||||||
*/
|
*/
|
||||||
loadNgStructureAsync(): Promise<void>;
|
loadNgStructureAsync(): Promise<void>;
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieve the lazy route references in the program.
|
|
||||||
*
|
|
||||||
* Angular structural information is required to produce these routes.
|
|
||||||
*/
|
|
||||||
getLazyRoutes(cancellationToken?: ts.CancellationToken): {[route: string]: string};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emit the files requested by emitFlags implied by the program.
|
* Emit the files requested by emitFlags implied by the program.
|
||||||
*
|
*
|
||||||
|
|
|
@ -134,8 +134,6 @@ class AngularCompilerProgram implements Program {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getLazyRoutes(cancellationToken?: ts.CancellationToken): {[route: string]: string} { return {}; }
|
|
||||||
|
|
||||||
emit({emitFlags = EmitFlags.Default, cancellationToken, customTransformers,
|
emit({emitFlags = EmitFlags.Default, cancellationToken, customTransformers,
|
||||||
emitCallback = defaultEmitCallback}: {
|
emitCallback = defaultEmitCallback}: {
|
||||||
emitFlags?: EmitFlags,
|
emitFlags?: EmitFlags,
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
],
|
],
|
||||||
"files": [
|
"files": [
|
||||||
"index.ts",
|
"index.ts",
|
||||||
|
"ngtools2.ts",
|
||||||
"src/main.ts",
|
"src/main.ts",
|
||||||
"src/extract_i18n.ts",
|
"src/extract_i18n.ts",
|
||||||
"src/language_services.ts",
|
"src/language_services.ts",
|
||||||
|
|
Loading…
Reference in New Issue