mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
This is patch PR for #40621. Two motivations behind this change: 1. We would like to expose the types of the Language Service to external users (like the VSCode extension) via the npm package, on the top level of the package 2. We would like the View Engine and Ivy LS to share a common interface (notably after the inclusion of `getTcb`, the Ivy LS upholds a strict superset of `ts.LanguageService`; previously both VE and Ivy LS were aligned on `ts.LanguageService`.) To this end, this commit refactors the exports on the toplevel of the `language-service/` package to just be types common to both the VE and Ivy language services. The VE and Ivy build targets then import and use these types accordingly, and the expectation is that an external user will just import the relevant typings from the toplevel package without diving into either the VE or Ivy sources. Follow up on #40607 PR Close #40773
42 lines
1.2 KiB
TypeScript
42 lines
1.2 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 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[],
|
|
}|undefined;
|
|
|
|
/**
|
|
* `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;
|
|
}
|