This commit adds a new configuration option, `forceStrictTemplates` to the language service plugin to allow users to force enable `strictTemplates`. This is needed so that the Angular extension can be used inside Google without changing the underlying compiler options in the `ng_module` build rule. PR Close #41062
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| /**
 | |
|  * @license
 | |
|  * Copyright Google LLC 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
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @module
 | |
|  * @description
 | |
|  * Entry point for all public APIs of the language service package.
 | |
|  */
 | |
| 
 | |
| import * as ts from 'typescript';
 | |
| 
 | |
| export interface PluginConfig {
 | |
|   /**
 | |
|    * If true, return only Angular results. Otherwise, return Angular + TypeScript
 | |
|    * results.
 | |
|    */
 | |
|   angularOnly: boolean;
 | |
|   /**
 | |
|    * If true, return factory function for Ivy LS during plugin initialization.
 | |
|    * Otherwise return factory function for View Engine LS.
 | |
|    */
 | |
|   ivy: boolean;
 | |
|   /**
 | |
|    * If true, enable `strictTemplates` in Angular compiler options regardless
 | |
|    * of its value in tsconfig.json.
 | |
|    */
 | |
|   forceStrictTemplates?: true;
 | |
| }
 | |
| 
 | |
| export type GetTcbResponse = {
 | |
|   /**
 | |
|    * The filename of the SourceFile this typecheck block belongs to.
 | |
|    * The filename is entirely opaque and unstable, useful only for debugging
 | |
|    * purposes.
 | |
|    */
 | |
|   fileName: string,
 | |
|   /** The content of the SourceFile this typecheck block belongs to. */
 | |
|   content: string,
 | |
|   /**
 | |
|    * Spans over node(s) in the typecheck block corresponding to the
 | |
|    * TS code generated for template node under the current cursor position.
 | |
|    *
 | |
|    * When the cursor position is over a source for which there is no generated
 | |
|    * code, `selections` is empty.
 | |
|    */
 | |
|   selections: ts.TextSpan[],
 | |
| };
 | |
| 
 | |
| export type GetComponentLocationsForTemplateResponse = ts.DocumentSpan[];
 | |
| 
 | |
| /**
 | |
|  * `NgLanguageService` describes an instance of an Angular language service,
 | |
|  * whose API surface is a strict superset of TypeScript's language service.
 | |
|  */
 | |
| export interface NgLanguageService extends ts.LanguageService {
 | |
|   getTcb(fileName: string, position: number): GetTcbResponse|undefined;
 | |
|   getComponentLocationsForTemplate(fileName: string): GetComponentLocationsForTemplateResponse;
 | |
| }
 | |
| 
 | |
| export function isNgLanguageService(ls: ts.LanguageService|
 | |
|                                     NgLanguageService): ls is NgLanguageService {
 | |
|   return 'getTcb' in ls;
 | |
| }
 |