@angular/language-service 4.4.3 → 4.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/@angular/language-service.es5.js +2 -2
- package/@angular/language-service.es5.js.map +1 -1
- package/@angular/language-service.js +2 -2
- package/@angular/language-service.js.map +1 -1
- package/bundles/language-service.umd.js +97 -72
- package/bundles/language-service.umd.js.map +1 -1
- package/bundles/language-service.umd.min.js +15 -15
- package/bundles/language-service.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/common.metadata.json +1 -1
- package/src/types.metadata.json +1 -1
- package/src/version.metadata.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-service.js","sources":["../../../../packages/language-service/index.ts","../../../../packages/language-service/src/version.ts","../../../../packages/language-service/src/ts_plugin.ts","../../../../packages/language-service/src/typescript_host.ts","../../../../packages/language-service/src/reflector_host.ts","../../../../packages/language-service/src/language_service.ts","../../../../packages/language-service/src/hover.ts","../../../../packages/language-service/src/diagnostics.ts","../../../../packages/language-service/src/definitions.ts","../../../../packages/language-service/src/locate_symbol.ts","../../../../packages/language-service/src/completions.ts","../../../../packages/language-service/src/html_info.ts","../../../../packages/language-service/src/expressions.ts","../../../../packages/language-service/src/utils.ts","../../../../packages/language-service/src/types.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the language service package.\n */\nexport {createLanguageService} from './src/language_service';\nexport * from './src/ts_plugin';\nexport {Completion, Completions, Declaration, Declarations, Definition, Diagnostic, Diagnostics, Hover, HoverTextSection, LanguageService, LanguageServiceHost, Location, Span, TemplateSource, TemplateSources} from './src/types';\nexport {TypeScriptServiceHost, createLanguageServiceFromTypescript} from './src/typescript_host';\nexport {VERSION} from './src/version';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @stable\n */\nexport const VERSION = new Version('4.4.3');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as ts from 'typescript';\n\nimport {createLanguageService} from './language_service';\nimport {Completion, Diagnostic, LanguageService, LanguageServiceHost} from './types';\nimport {TypeScriptServiceHost} from './typescript_host';\n\nconst projectHostMap = new WeakMap<any, TypeScriptServiceHost>();\n\nexport function getExternalFiles(project: any): string[]|undefined {\n const host = projectHostMap.get(project);\n if (host) {\n return host.getTemplateReferences();\n }\n}\n\nconst angularOnlyResults = process.argv.indexOf('--angularOnlyResults') >= 0;\n\nfunction angularOnlyFilter(ls: ts.LanguageService): ts.LanguageService {\n return {\n cleanupSemanticCache: () => ls.cleanupSemanticCache(),\n getSyntacticDiagnostics: fileName => <ts.Diagnostic[]>[],\n getSemanticDiagnostics: fileName => <ts.Diagnostic[]>[],\n getCompilerOptionsDiagnostics: () => <ts.Diagnostic[]>[],\n getSyntacticClassifications: (fileName, span) => [],\n getSemanticClassifications: (fileName, span) => [],\n getEncodedSyntacticClassifications: (fileName, span) => <ts.Classifications><any>{undefined},\n getEncodedSemanticClassifications: (fileName, span) => <ts.Classifications><any>undefined,\n getCompletionsAtPosition: (fileName, position) => <ts.CompletionInfo><any>undefined,\n getCompletionEntryDetails: (fileName, position, entryName) =>\n <ts.CompletionEntryDetails><any>undefined,\n getCompletionEntrySymbol: (fileName, position, entryName) => <ts.Symbol><any>undefined,\n getQuickInfoAtPosition: (fileName, position) => <ts.QuickInfo><any>undefined,\n getNameOrDottedNameSpan: (fileName, startPos, endPos) => <ts.TextSpan><any>undefined,\n getBreakpointStatementAtPosition: (fileName, position) => <ts.TextSpan><any>undefined,\n getSignatureHelpItems: (fileName, position) => <ts.SignatureHelpItems><any>undefined,\n getRenameInfo: (fileName, position) => <ts.RenameInfo><any>undefined,\n findRenameLocations: (fileName, position, findInStrings, findInComments) =>\n <ts.RenameLocation[]>[],\n getDefinitionAtPosition: (fileName, position) => <ts.DefinitionInfo[]>[],\n getTypeDefinitionAtPosition: (fileName, position) => <ts.DefinitionInfo[]>[],\n getImplementationAtPosition: (fileName, position) => <ts.ImplementationLocation[]>[],\n getReferencesAtPosition: (fileName: string, position: number) => <ts.ReferenceEntry[]>[],\n findReferences: (fileName: string, position: number) => <ts.ReferencedSymbol[]>[],\n getDocumentHighlights: (fileName, position, filesToSearch) => <ts.DocumentHighlights[]>[],\n /** @deprecated */\n getOccurrencesAtPosition: (fileName, position) => <ts.ReferenceEntry[]>[],\n getNavigateToItems: searchValue => <ts.NavigateToItem[]>[],\n getNavigationBarItems: fileName => <ts.NavigationBarItem[]>[],\n getNavigationTree: fileName => <ts.NavigationTree><any>undefined,\n getOutliningSpans: fileName => <ts.OutliningSpan[]>[],\n getTodoComments: (fileName, descriptors) => <ts.TodoComment[]>[],\n getBraceMatchingAtPosition: (fileName, position) => <ts.TextSpan[]>[],\n getIndentationAtPosition: (fileName, position, options) => <number><any>undefined,\n getFormattingEditsForRange: (fileName, start, end, options) => <ts.TextChange[]>[],\n getFormattingEditsForDocument: (fileName, options) => <ts.TextChange[]>[],\n getFormattingEditsAfterKeystroke: (fileName, position, key, options) => <ts.TextChange[]>[],\n getDocCommentTemplateAtPosition: (fileName, position) => <ts.TextInsertion><any>undefined,\n isValidBraceCompletionAtPosition: (fileName, position, openingBrace) => <boolean><any>undefined,\n getCodeFixesAtPosition: (fileName, start, end, errorCodes) => <ts.CodeAction[]>[],\n getEmitOutput: fileName => <ts.EmitOutput><any>undefined,\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose()\n };\n}\n\nexport function create(info: any /* ts.server.PluginCreateInfo */): ts.LanguageService {\n // Create the proxy\n const proxy: ts.LanguageService = Object.create(null);\n let oldLS: ts.LanguageService = info.languageService;\n\n if (angularOnlyResults) {\n oldLS = angularOnlyFilter(oldLS);\n }\n\n function tryCall<T>(fileName: string | undefined, callback: () => T): T {\n if (fileName && !oldLS.getProgram().getSourceFile(fileName)) {\n return undefined as any as T;\n }\n try {\n return callback();\n } catch (e) {\n return undefined as any as T;\n }\n }\n\n function tryFilenameCall<T>(m: (fileName: string) => T): (fileName: string) => T {\n return fileName => tryCall(fileName, () => <T>(m.call(ls, fileName)));\n }\n\n function tryFilenameOneCall<T, P>(m: (fileName: string, p: P) => T): (filename: string, p: P) =>\n T {\n return (fileName, p) => tryCall(fileName, () => <T>(m.call(ls, fileName, p)));\n }\n\n function tryFilenameTwoCall<T, P1, P2>(m: (fileName: string, p1: P1, p2: P2) => T): (\n filename: string, p1: P1, p2: P2) => T {\n return (fileName, p1, p2) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2)));\n }\n\n function tryFilenameThreeCall<T, P1, P2, P3>(m: (fileName: string, p1: P1, p2: P2, p3: P3) => T):\n (filename: string, p1: P1, p2: P2, p3: P3) => T {\n return (fileName, p1, p2, p3) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3)));\n }\n\n function tryFilenameFourCall<T, P1, P2, P3, P4>(\n m: (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) =>\n T): (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) => T {\n return (fileName, p1, p2, p3, p4) =>\n tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3, p4)));\n }\n\n function typescriptOnly(ls: ts.LanguageService): ts.LanguageService {\n return {\n cleanupSemanticCache: () => ls.cleanupSemanticCache(),\n getSyntacticDiagnostics: tryFilenameCall(ls.getSyntacticDiagnostics),\n getSemanticDiagnostics: tryFilenameCall(ls.getSemanticDiagnostics),\n getCompilerOptionsDiagnostics: () => ls.getCompilerOptionsDiagnostics(),\n getSyntacticClassifications: tryFilenameOneCall(ls.getSemanticClassifications),\n getSemanticClassifications: tryFilenameOneCall(ls.getSemanticClassifications),\n getEncodedSyntacticClassifications: tryFilenameOneCall(ls.getEncodedSyntacticClassifications),\n getEncodedSemanticClassifications: tryFilenameOneCall(ls.getEncodedSemanticClassifications),\n getCompletionsAtPosition: tryFilenameOneCall(ls.getCompletionsAtPosition),\n getCompletionEntryDetails: tryFilenameTwoCall(ls.getCompletionEntryDetails),\n getCompletionEntrySymbol: tryFilenameTwoCall(ls.getCompletionEntrySymbol),\n getQuickInfoAtPosition: tryFilenameOneCall(ls.getQuickInfoAtPosition),\n getNameOrDottedNameSpan: tryFilenameTwoCall(ls.getNameOrDottedNameSpan),\n getBreakpointStatementAtPosition: tryFilenameOneCall(ls.getBreakpointStatementAtPosition),\n getSignatureHelpItems: tryFilenameOneCall(ls.getSignatureHelpItems),\n getRenameInfo: tryFilenameOneCall(ls.getRenameInfo),\n findRenameLocations: tryFilenameThreeCall(ls.findRenameLocations),\n getDefinitionAtPosition: tryFilenameOneCall(ls.getDefinitionAtPosition),\n getTypeDefinitionAtPosition: tryFilenameOneCall(ls.getTypeDefinitionAtPosition),\n getImplementationAtPosition: tryFilenameOneCall(ls.getImplementationAtPosition),\n getReferencesAtPosition: tryFilenameOneCall(ls.getReferencesAtPosition),\n findReferences: tryFilenameOneCall(ls.findReferences),\n getDocumentHighlights: tryFilenameTwoCall(ls.getDocumentHighlights),\n /** @deprecated */\n getOccurrencesAtPosition: tryFilenameOneCall(ls.getOccurrencesAtPosition),\n getNavigateToItems:\n (searchValue, maxResultCount, fileName, excludeDtsFiles) => tryCall(\n fileName,\n () => ls.getNavigateToItems(searchValue, maxResultCount, fileName, excludeDtsFiles)),\n getNavigationBarItems: tryFilenameCall(ls.getNavigationBarItems),\n getNavigationTree: tryFilenameCall(ls.getNavigationTree),\n getOutliningSpans: tryFilenameCall(ls.getOutliningSpans),\n getTodoComments: tryFilenameOneCall(ls.getTodoComments),\n getBraceMatchingAtPosition: tryFilenameOneCall(ls.getBraceMatchingAtPosition),\n getIndentationAtPosition: tryFilenameTwoCall(ls.getIndentationAtPosition),\n getFormattingEditsForRange: tryFilenameThreeCall(ls.getFormattingEditsForRange),\n getFormattingEditsForDocument: tryFilenameOneCall(ls.getFormattingEditsForDocument),\n getFormattingEditsAfterKeystroke: tryFilenameThreeCall(ls.getFormattingEditsAfterKeystroke),\n getDocCommentTemplateAtPosition: tryFilenameOneCall(ls.getDocCommentTemplateAtPosition),\n isValidBraceCompletionAtPosition: tryFilenameTwoCall(ls.isValidBraceCompletionAtPosition),\n getCodeFixesAtPosition: tryFilenameFourCall(ls.getCodeFixesAtPosition),\n getEmitOutput: tryFilenameCall(ls.getEmitOutput),\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose()\n };\n }\n\n oldLS = typescriptOnly(oldLS);\n\n for (const k in oldLS) {\n (<any>proxy)[k] = function() { return (oldLS as any)[k].apply(oldLS, arguments); };\n }\n\n function completionToEntry(c: Completion): ts.CompletionEntry {\n return {kind: c.kind, name: c.name, sortText: c.sort, kindModifiers: ''};\n }\n\n function diagnosticToDiagnostic(d: Diagnostic, file: ts.SourceFile): ts.Diagnostic {\n const result = {\n file,\n start: d.span.start,\n length: d.span.end - d.span.start,\n messageText: d.message,\n category: ts.DiagnosticCategory.Error,\n code: 0,\n source: 'ng'\n };\n return result;\n }\n\n function tryOperation<T>(attempting: string, callback: () => T): T|null {\n try {\n return callback();\n } catch (e) {\n info.project.projectService.logger.info(`Failed to ${attempting}: ${e.toString()}`);\n info.project.projectService.logger.info(`Stack trace: ${e.stack}`);\n return null;\n }\n }\n\n const serviceHost = new TypeScriptServiceHost(info.languageServiceHost, info.languageService);\n const ls = createLanguageService(serviceHost as any);\n serviceHost.setSite(ls);\n projectHostMap.set(info.project, serviceHost);\n\n proxy.getCompletionsAtPosition = function(fileName: string, position: number) {\n let base = oldLS.getCompletionsAtPosition(fileName, position) || {\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: false,\n entries: []\n };\n tryOperation('get completions', () => {\n const results = ls.getCompletionsAt(fileName, position);\n if (results && results.length) {\n if (base === undefined) {\n base = {\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: false,\n entries: []\n };\n }\n for (const entry of results) {\n base.entries.push(completionToEntry(entry));\n }\n }\n });\n return base;\n };\n\n proxy.getQuickInfoAtPosition = function(fileName: string, position: number): ts.QuickInfo {\n let base = oldLS.getQuickInfoAtPosition(fileName, position);\n // TODO(vicb): the tags property has been removed in TS 2.2\n tryOperation('get quick info', () => {\n const ours = ls.getHoverAt(fileName, position);\n if (ours) {\n const displayParts: ts.SymbolDisplayPart[] = [];\n for (const part of ours.text) {\n displayParts.push({kind: part.language || 'angular', text: part.text});\n }\n const tags = base && (<any>base).tags;\n base = <any>{\n displayParts,\n documentation: [],\n kind: 'angular',\n kindModifiers: 'what does this do?',\n textSpan: {start: ours.span.start, length: ours.span.end - ours.span.start},\n };\n if (tags) {\n (<any>base).tags = tags;\n }\n }\n });\n\n return base;\n };\n\n proxy.getSemanticDiagnostics = function(fileName: string) {\n let result = oldLS.getSemanticDiagnostics(fileName);\n const base = result || [];\n tryOperation('get diagnostics', () => {\n info.project.projectService.logger.info(`Computing Angular semantic diagnostics...`);\n const ours = ls.getDiagnostics(fileName);\n if (ours && ours.length) {\n const file = oldLS.getProgram().getSourceFile(fileName);\n base.push.apply(base, ours.map(d => diagnosticToDiagnostic(d, file)));\n }\n });\n\n return base;\n };\n\n proxy.getDefinitionAtPosition = function(\n fileName: string, position: number): ts.DefinitionInfo[] {\n let base = oldLS.getDefinitionAtPosition(fileName, position);\n if (base && base.length) {\n return base;\n }\n\n return tryOperation('get definition', () => {\n const ours = ls.getDefinitionAt(fileName, position);\n if (ours && ours.length) {\n base = base || [];\n for (const loc of ours) {\n base.push({\n fileName: loc.fileName,\n textSpan: {start: loc.span.start, length: loc.span.end - loc.span.start},\n name: '',\n kind: 'definition',\n containerName: loc.fileName,\n containerKind: 'file'\n });\n }\n }\n return base;\n }) || [];\n };\n\n return proxy;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AotSummaryResolver, CompileMetadataResolver, CompilerConfig, DEFAULT_INTERPOLATION_CONFIG, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, HtmlParser, InterpolationConfig, JitSummaryResolver, NgAnalyzedModules, NgModuleResolver, ParseTreeResult, PipeResolver, ResourceLoader, StaticReflector, StaticSymbol, StaticSymbolCache, StaticSymbolResolver, SummaryResolver, analyzeNgModules, createOfflineCompileUrlResolver, extractProgramSymbols} from '@angular/compiler';\nimport {AngularCompilerOptions, getClassMembersFromDeclaration, getPipesTable, getSymbolQuery} from '@angular/compiler-cli';\nimport {ViewEncapsulation, ɵConsole as Console} from '@angular/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\n\nimport {createLanguageService} from './language_service';\nimport {ReflectorHost} from './reflector_host';\nimport {BuiltinType, Declaration, DeclarationError, DeclarationKind, Declarations, Definition, LanguageService, LanguageServiceHost, PipeInfo, Pipes, Signature, Span, Symbol, SymbolDeclaration, SymbolQuery, SymbolTable, TemplateSource, TemplateSources} from './types';\nimport {isTypescriptVersion} from './utils';\n\n\n/**\n * Create a `LanguageServiceHost`\n */\nexport function createLanguageServiceFromTypescript(\n host: ts.LanguageServiceHost, service: ts.LanguageService): LanguageService {\n const ngHost = new TypeScriptServiceHost(host, service);\n const ngServer = createLanguageService(ngHost);\n ngHost.setSite(ngServer);\n return ngServer;\n}\n\n/**\n * The language service never needs the normalized versions of the metadata. To avoid parsing\n * the content and resolving references, return an empty file. This also allows normalizing\n * template that are syntatically incorrect which is required to provide completions in\n * syntactically incorrect templates.\n */\nexport class DummyHtmlParser extends HtmlParser {\n parse(\n source: string, url: string, parseExpansionForms: boolean = false,\n interpolationConfig: InterpolationConfig = DEFAULT_INTERPOLATION_CONFIG): ParseTreeResult {\n return new ParseTreeResult([], []);\n }\n}\n\n/**\n * Avoid loading resources in the language servcie by using a dummy loader.\n */\nexport class DummyResourceLoader extends ResourceLoader {\n get(url: string): Promise<string> { return Promise.resolve(''); }\n}\n\n/**\n * An implemntation of a `LanguageServiceHost` for a TypeScript project.\n *\n * The `TypeScriptServiceHost` implements the Angular `LanguageServiceHost` using\n * the TypeScript language services.\n *\n * @experimental\n */\nexport class TypeScriptServiceHost implements LanguageServiceHost {\n private _resolver: CompileMetadataResolver|null;\n private _staticSymbolCache = new StaticSymbolCache();\n private _summaryResolver: AotSummaryResolver;\n private _staticSymbolResolver: StaticSymbolResolver;\n private _reflector: StaticReflector|null;\n private _reflectorHost: ReflectorHost;\n private _checker: ts.TypeChecker|null;\n private _typeCache: Symbol[] = [];\n private context: string|undefined;\n private lastProgram: ts.Program|undefined;\n private modulesOutOfDate: boolean = true;\n private analyzedModules: NgAnalyzedModules|null;\n private service: LanguageService;\n private fileToComponent: Map<string, StaticSymbol>|null;\n private templateReferences: string[]|null;\n private collectedErrors: Map<string, any[]>|null;\n private fileVersions = new Map<string, string>();\n\n constructor(private host: ts.LanguageServiceHost, private tsService: ts.LanguageService) {}\n\n setSite(service: LanguageService) { this.service = service; }\n\n /**\n * Angular LanguageServiceHost implementation\n */\n get resolver(): CompileMetadataResolver {\n this.validate();\n let result = this._resolver;\n if (!result) {\n const moduleResolver = new NgModuleResolver(this.reflector);\n const directiveResolver = new DirectiveResolver(this.reflector);\n const pipeResolver = new PipeResolver(this.reflector);\n const elementSchemaRegistry = new DomElementSchemaRegistry();\n const resourceLoader = new DummyResourceLoader();\n const urlResolver = createOfflineCompileUrlResolver();\n const htmlParser = new DummyHtmlParser();\n // This tracks the CompileConfig in codegen.ts. Currently these options\n // are hard-coded.\n const config =\n new CompilerConfig({defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false});\n const directiveNormalizer =\n new DirectiveNormalizer(resourceLoader, urlResolver, htmlParser, config);\n\n result = this._resolver = new CompileMetadataResolver(\n config, moduleResolver, directiveResolver, pipeResolver, new JitSummaryResolver(),\n elementSchemaRegistry, directiveNormalizer, new Console(), this._staticSymbolCache,\n this.reflector, (error, type) => this.collectError(error, type && type.filePath));\n }\n return result;\n }\n\n getTemplateReferences(): string[] {\n this.ensureTemplateMap();\n return this.templateReferences || [];\n }\n\n getTemplateAt(fileName: string, position: number): TemplateSource|undefined {\n let sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.fileName;\n let node = this.findNode(sourceFile, position);\n if (node) {\n return this.getSourceFromNode(\n fileName, this.host.getScriptVersion(sourceFile.fileName), node);\n }\n } else {\n this.ensureTemplateMap();\n // TODO: Cannocalize the file?\n const componentType = this.fileToComponent !.get(fileName);\n if (componentType) {\n return this.getSourceFromType(\n fileName, this.host.getScriptVersion(fileName), componentType);\n }\n }\n return undefined;\n }\n\n getAnalyzedModules(): NgAnalyzedModules {\n this.validate();\n return this.ensureAnalyzedModules();\n }\n\n private ensureAnalyzedModules(): NgAnalyzedModules {\n let analyzedModules = this.analyzedModules;\n if (!analyzedModules) {\n const analyzeHost = {isSourceFile(filePath: string) { return true; }};\n const programSymbols = extractProgramSymbols(\n this.staticSymbolResolver, this.program.getSourceFiles().map(sf => sf.fileName),\n analyzeHost);\n\n analyzedModules = this.analyzedModules =\n analyzeNgModules(programSymbols, analyzeHost, this.resolver);\n }\n return analyzedModules;\n }\n\n getTemplates(fileName: string): TemplateSources {\n this.ensureTemplateMap();\n const componentType = this.fileToComponent !.get(fileName);\n if (componentType) {\n const templateSource = this.getTemplateAt(fileName, 0);\n if (templateSource) {\n return [templateSource];\n }\n } else {\n let version = this.host.getScriptVersion(fileName);\n let result: TemplateSource[] = [];\n\n // Find each template string in the file\n let visit = (child: ts.Node) => {\n let templateSource = this.getSourceFromNode(fileName, version, child);\n if (templateSource) {\n result.push(templateSource);\n } else {\n ts.forEachChild(child, visit);\n }\n };\n\n let sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = (sourceFile as any).path || sourceFile.fileName;\n ts.forEachChild(sourceFile, visit);\n }\n return result.length ? result : undefined;\n }\n }\n\n getDeclarations(fileName: string): Declarations {\n const result: Declarations = [];\n const sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n let visit = (child: ts.Node) => {\n let declaration = this.getDeclarationFromNode(sourceFile, child);\n if (declaration) {\n result.push(declaration);\n } else {\n ts.forEachChild(child, visit);\n }\n };\n ts.forEachChild(sourceFile, visit);\n }\n return result;\n }\n\n getSourceFile(fileName: string): ts.SourceFile {\n return this.tsService.getProgram().getSourceFile(fileName);\n }\n\n updateAnalyzedModules() {\n this.validate();\n if (this.modulesOutOfDate) {\n this.analyzedModules = null;\n this._reflector = null;\n this.templateReferences = null;\n this.fileToComponent = null;\n this.ensureAnalyzedModules();\n this.modulesOutOfDate = false;\n }\n }\n\n private get program() { return this.tsService.getProgram(); }\n\n private get checker() {\n let checker = this._checker;\n if (!checker) {\n checker = this._checker = this.program.getTypeChecker();\n }\n return checker;\n }\n\n private validate() {\n const program = this.program;\n if (this._staticSymbolResolver && this.lastProgram != program) {\n // Invalidate file that have changed in the static symbol resolver\n const invalidateFile = (fileName: string) =>\n this._staticSymbolResolver.invalidateFile(fileName);\n this.clearCaches();\n const seen = new Set<string>();\n for (let sourceFile of this.program.getSourceFiles()) {\n const fileName = sourceFile.fileName;\n seen.add(fileName);\n const version = this.host.getScriptVersion(fileName);\n const lastVersion = this.fileVersions.get(fileName);\n if (version != lastVersion) {\n this.fileVersions.set(fileName, version);\n invalidateFile(fileName);\n }\n }\n\n // Remove file versions that are no longer in the file and invalidate them.\n const missing = Array.from(this.fileVersions.keys()).filter(f => !seen.has(f));\n missing.forEach(f => this.fileVersions.delete(f));\n missing.forEach(invalidateFile);\n\n this.lastProgram = program;\n }\n }\n\n private clearCaches() {\n this._checker = null;\n this._typeCache = [];\n this._resolver = null;\n this.collectedErrors = null;\n this.modulesOutOfDate = true;\n }\n\n private ensureTemplateMap() {\n if (!this.fileToComponent || !this.templateReferences) {\n const fileToComponent = new Map<string, StaticSymbol>();\n const templateReference: string[] = [];\n const ngModuleSummary = this.getAnalyzedModules();\n const urlResolver = createOfflineCompileUrlResolver();\n for (const module of ngModuleSummary.ngModules) {\n for (const directive of module.declaredDirectives) {\n const {metadata} = this.resolver.getNonNormalizedDirectiveMetadata(directive.reference) !;\n if (metadata.isComponent && metadata.template && metadata.template.templateUrl) {\n const templateName = urlResolver.resolve(\n this.reflector.componentModuleUrl(directive.reference),\n metadata.template.templateUrl);\n fileToComponent.set(templateName, directive.reference);\n templateReference.push(templateName);\n }\n }\n }\n this.fileToComponent = fileToComponent;\n this.templateReferences = templateReference;\n }\n }\n\n private getSourceFromDeclaration(\n fileName: string, version: string, source: string, span: Span, type: StaticSymbol,\n declaration: ts.ClassDeclaration, node: ts.Node, sourceFile: ts.SourceFile): TemplateSource\n |undefined {\n let queryCache: SymbolQuery|undefined = undefined;\n const t = this;\n if (declaration) {\n return {\n version,\n source,\n span,\n type,\n get members() {\n return getClassMembersFromDeclaration(t.program, t.checker, sourceFile, declaration);\n },\n get query() {\n if (!queryCache) {\n const pipes = t.service.getPipesAt(fileName, node.getStart());\n queryCache = getSymbolQuery(\n t.program, t.checker, sourceFile,\n () => getPipesTable(sourceFile, t.program, t.checker, pipes));\n }\n return queryCache;\n }\n };\n }\n }\n\n private getSourceFromNode(fileName: string, version: string, node: ts.Node): TemplateSource\n |undefined {\n let result: TemplateSource|undefined = undefined;\n const t = this;\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n let [declaration, decorator] = this.getTemplateClassDeclFromNode(node);\n if (declaration && declaration.name) {\n const sourceFile = this.getSourceFile(fileName);\n return this.getSourceFromDeclaration(\n fileName, version, this.stringOf(node) || '', shrink(spanOf(node)),\n this.reflector.getStaticSymbol(sourceFile.fileName, declaration.name.text),\n declaration, node, sourceFile);\n }\n break;\n }\n return result;\n }\n\n private getSourceFromType(fileName: string, version: string, type: StaticSymbol): TemplateSource\n |undefined {\n let result: TemplateSource|undefined = undefined;\n const declaration = this.getTemplateClassFromStaticSymbol(type);\n if (declaration) {\n const snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n const source = snapshot.getText(0, snapshot.getLength());\n result = this.getSourceFromDeclaration(\n fileName, version, source, {start: 0, end: source.length}, type, declaration,\n declaration, declaration.getSourceFile());\n }\n }\n return result;\n }\n\n private get reflectorHost(): ReflectorHost {\n let result = this._reflectorHost;\n if (!result) {\n if (!this.context) {\n // Make up a context by finding the first script and using that as the base dir.\n this.context = this.host.getScriptFileNames()[0];\n }\n\n // Use the file context's directory as the base directory.\n // The host's getCurrentDirectory() is not reliable as it is always \"\" in\n // tsserver. We don't need the exact base directory, just one that contains\n // a source file.\n const source = this.tsService.getProgram().getSourceFile(this.context);\n if (!source) {\n throw new Error('Internal error: no context could be determined');\n }\n\n const tsConfigPath = findTsConfig(source.fileName);\n const basePath = path.dirname(tsConfigPath || this.context);\n const options: AngularCompilerOptions = {basePath, genDir: basePath};\n const compilerOptions = this.host.getCompilationSettings();\n if (compilerOptions && compilerOptions.baseUrl) {\n options.baseUrl = compilerOptions.baseUrl;\n }\n result = this._reflectorHost =\n new ReflectorHost(() => this.tsService.getProgram(), this.host, options);\n }\n return result;\n }\n\n private collectError(error: any, filePath: string|null) {\n if (filePath) {\n let errorMap = this.collectedErrors;\n if (!errorMap || !this.collectedErrors) {\n errorMap = this.collectedErrors = new Map();\n }\n let errors = errorMap.get(filePath);\n if (!errors) {\n errors = [];\n this.collectedErrors.set(filePath, errors);\n }\n errors.push(error);\n }\n }\n\n private get staticSymbolResolver(): StaticSymbolResolver {\n let result = this._staticSymbolResolver;\n if (!result) {\n this._summaryResolver = new AotSummaryResolver(\n {\n loadSummary(filePath: string) { return null; },\n isSourceFile(sourceFilePath: string) { return true; },\n getOutputFileName(sourceFilePath: string) { return sourceFilePath; }\n },\n this._staticSymbolCache);\n result = this._staticSymbolResolver = new StaticSymbolResolver(\n this.reflectorHost as any, this._staticSymbolCache, this._summaryResolver,\n (e, filePath) => this.collectError(e, filePath !));\n }\n return result;\n }\n\n private get reflector(): StaticReflector {\n let result = this._reflector;\n if (!result) {\n const ssr = this.staticSymbolResolver;\n result = this._reflector = new StaticReflector(\n this._summaryResolver, ssr, [], [], (e, filePath) => this.collectError(e, filePath !));\n }\n return result;\n }\n\n private getTemplateClassFromStaticSymbol(type: StaticSymbol): ts.ClassDeclaration|undefined {\n const source = this.getSourceFile(type.filePath);\n if (source) {\n const declarationNode = ts.forEachChild(source, child => {\n if (child.kind === ts.SyntaxKind.ClassDeclaration) {\n const classDeclaration = child as ts.ClassDeclaration;\n if (classDeclaration.name != null && classDeclaration.name.text === type.name) {\n return classDeclaration;\n }\n }\n });\n return declarationNode as ts.ClassDeclaration;\n }\n\n return undefined;\n }\n\n private static missingTemplate: [ts.ClassDeclaration | undefined, ts.Expression|undefined] =\n [undefined, undefined];\n\n /**\n * Given a template string node, see if it is an Angular template string, and if so return the\n * containing class.\n */\n private getTemplateClassDeclFromNode(currentToken: ts.Node):\n [ts.ClassDeclaration | undefined, ts.Expression|undefined] {\n // Verify we are in a 'template' property assignment, in an object literal, which is an call\n // arg, in a decorator\n let parentNode = currentToken.parent; // PropertyAssignment\n if (!parentNode) {\n return TypeScriptServiceHost.missingTemplate;\n }\n if (parentNode.kind !== ts.SyntaxKind.PropertyAssignment) {\n return TypeScriptServiceHost.missingTemplate;\n } else {\n // TODO: Is this different for a literal, i.e. a quoted property name like \"template\"?\n if ((parentNode as any).name.text !== 'template') {\n return TypeScriptServiceHost.missingTemplate;\n }\n }\n parentNode = parentNode.parent; // ObjectLiteralExpression\n if (!parentNode || parentNode.kind !== ts.SyntaxKind.ObjectLiteralExpression) {\n return TypeScriptServiceHost.missingTemplate;\n }\n\n parentNode = parentNode.parent; // CallExpression\n if (!parentNode || parentNode.kind !== ts.SyntaxKind.CallExpression) {\n return TypeScriptServiceHost.missingTemplate;\n }\n const callTarget = (<ts.CallExpression>parentNode).expression;\n\n let decorator = parentNode.parent; // Decorator\n if (!decorator || decorator.kind !== ts.SyntaxKind.Decorator) {\n return TypeScriptServiceHost.missingTemplate;\n }\n\n let declaration = <ts.ClassDeclaration>decorator.parent; // ClassDeclaration\n if (!declaration || declaration.kind !== ts.SyntaxKind.ClassDeclaration) {\n return TypeScriptServiceHost.missingTemplate;\n }\n return [declaration, callTarget];\n }\n\n private getCollectedErrors(defaultSpan: Span, sourceFile: ts.SourceFile): DeclarationError[] {\n const errors = (this.collectedErrors && this.collectedErrors.get(sourceFile.fileName));\n return (errors && errors.map((e: any) => {\n return {message: e.message, span: spanAt(sourceFile, e.line, e.column) || defaultSpan};\n })) ||\n [];\n }\n\n private getDeclarationFromNode(sourceFile: ts.SourceFile, node: ts.Node): Declaration|undefined {\n if (node.kind == ts.SyntaxKind.ClassDeclaration && node.decorators &&\n (node as ts.ClassDeclaration).name) {\n for (const decorator of node.decorators) {\n if (decorator.expression && decorator.expression.kind == ts.SyntaxKind.CallExpression) {\n const classDeclaration = node as ts.ClassDeclaration;\n if (classDeclaration.name) {\n const call = decorator.expression as ts.CallExpression;\n const target = call.expression;\n const type = this.checker.getTypeAtLocation(target);\n if (type) {\n const staticSymbol =\n this.reflector.getStaticSymbol(sourceFile.fileName, classDeclaration.name.text);\n try {\n if (this.resolver.isDirective(staticSymbol as any)) {\n const {metadata} =\n this.resolver.getNonNormalizedDirectiveMetadata(staticSymbol as any) !;\n const declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan,\n metadata,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n } catch (e) {\n if (e.message) {\n this.collectError(e, sourceFile.fileName);\n const declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n }\n }\n }\n }\n }\n }\n }\n\n private stringOf(node: ts.Node): string|undefined {\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n return (<ts.LiteralExpression>node).text;\n case ts.SyntaxKind.StringLiteral:\n return (<ts.StringLiteral>node).text;\n }\n }\n\n private findNode(sourceFile: ts.SourceFile, position: number): ts.Node|undefined {\n function find(node: ts.Node): ts.Node|undefined {\n if (position >= node.getStart() && position < node.getEnd()) {\n return ts.forEachChild(node, find) || node;\n }\n }\n\n return find(sourceFile);\n }\n}\n\n\nfunction findTsConfig(fileName: string): string|undefined {\n let dir = path.dirname(fileName);\n while (fs.existsSync(dir)) {\n const candidate = path.join(dir, 'tsconfig.json');\n if (fs.existsSync(candidate)) return candidate;\n const parentDir = path.dirname(dir);\n if (parentDir === dir) break;\n dir = parentDir;\n }\n}\n\nfunction spanOf(node: ts.Node): Span {\n return {start: node.getStart(), end: node.getEnd()};\n}\n\nfunction shrink(span: Span, offset?: number) {\n if (offset == null) offset = 1;\n return {start: span.start + offset, end: span.end - offset};\n}\n\nfunction spanAt(sourceFile: ts.SourceFile, line: number, column: number): Span|undefined {\n if (line != null && column != null) {\n const position = ts.getPositionOfLineAndCharacter(sourceFile, line, column);\n const findChild = function findChild(node: ts.Node): ts.Node | undefined {\n if (node.kind > ts.SyntaxKind.LastToken && node.pos <= position && node.end > position) {\n const betterNode = ts.forEachChild(node, findChild);\n return betterNode || node;\n }\n };\n\n const node = ts.forEachChild(sourceFile, findChild);\n if (node) {\n return {start: node.getStart(), end: node.getEnd()};\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AngularCompilerOptions, AotCompilerHost, CompilerHost, ModuleResolutionHostAdapter} from '@angular/compiler-cli';\nimport * as ts from 'typescript';\n\nclass ReflectorModuleModuleResolutionHost implements ts.ModuleResolutionHost {\n constructor(private host: ts.LanguageServiceHost) {\n if (host.directoryExists)\n this.directoryExists = directoryName => this.host.directoryExists !(directoryName);\n }\n\n fileExists(fileName: string): boolean { return !!this.host.getScriptSnapshot(fileName); }\n\n readFile(fileName: string): string {\n let snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n return snapshot.getText(0, snapshot.getLength());\n }\n\n // Typescript readFile() declaration should be `readFile(fileName: string): string | undefined\n return undefined !;\n }\n\n directoryExists: (directoryName: string) => boolean;\n}\n\n// This reflector host's purpose is to first set verboseInvalidExpressions to true so the\n// reflector will collect errors instead of throwing, and second to all deferring the creation\n// of the program until it is actually needed.\nexport class ReflectorHost extends CompilerHost {\n constructor(\n private getProgram: () => ts.Program, serviceHost: ts.LanguageServiceHost,\n options: AngularCompilerOptions) {\n super(\n // The ancestor value for program is overridden below so passing null here is safe.\n /* program */ null !, options,\n new ModuleResolutionHostAdapter(new ReflectorModuleModuleResolutionHost(serviceHost)),\n {verboseInvalidExpression: true});\n }\n\n protected get program() { return this.getProgram(); }\n protected set program(value: ts.Program) {\n // Discard the result set by ancestor constructor\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CompileMetadataResolver, CompileNgModuleMetadata, CompilePipeSummary, CompilerConfig, DomElementSchemaRegistry, HtmlParser, I18NHtmlParser, Lexer, NgAnalyzedModules, Parser, TemplateParser} from '@angular/compiler';\n\nimport {AstResult, TemplateInfo} from './common';\nimport {getTemplateCompletions} from './completions';\nimport {getDefinition} from './definitions';\nimport {getDeclarationDiagnostics, getTemplateDiagnostics} from './diagnostics';\nimport {getHover} from './hover';\nimport {Completions, Definition, Diagnostic, DiagnosticKind, Diagnostics, Hover, LanguageService, LanguageServiceHost, Pipes, Span, TemplateSource} from './types';\n\n\n/**\n * Create an instance of an Angular `LanguageService`.\n *\n * @experimental\n */\nexport function createLanguageService(host: LanguageServiceHost): LanguageService {\n return new LanguageServiceImpl(host);\n}\n\nclass LanguageServiceImpl implements LanguageService {\n constructor(private host: LanguageServiceHost) {}\n\n private get metadataResolver(): CompileMetadataResolver { return this.host.resolver; }\n\n getTemplateReferences(): string[] { return this.host.getTemplateReferences(); }\n\n getDiagnostics(fileName: string): Diagnostics|undefined {\n let results: Diagnostics = [];\n let templates = this.host.getTemplates(fileName);\n if (templates && templates.length) {\n results.push(...getTemplateDiagnostics(fileName, this, templates));\n }\n\n let declarations = this.host.getDeclarations(fileName);\n if (declarations && declarations.length) {\n const summary = this.host.getAnalyzedModules();\n results.push(...getDeclarationDiagnostics(declarations, summary));\n }\n\n return uniqueBySpan(results);\n }\n\n getPipesAt(fileName: string, position: number): CompilePipeSummary[] {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return templateInfo.pipes;\n }\n return [];\n }\n\n getCompletionsAt(fileName: string, position: number): Completions {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getTemplateCompletions(templateInfo);\n }\n }\n\n getDefinitionAt(fileName: string, position: number): Definition {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getDefinition(templateInfo);\n }\n }\n\n getHoverAt(fileName: string, position: number): Hover|undefined {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getHover(templateInfo);\n }\n }\n\n private getTemplateAstAtPosition(fileName: string, position: number): TemplateInfo|undefined {\n let template = this.host.getTemplateAt(fileName, position);\n if (template) {\n let astResult = this.getTemplateAst(template, fileName);\n if (astResult && astResult.htmlAst && astResult.templateAst && astResult.directive &&\n astResult.directives && astResult.pipes && astResult.expressionParser)\n return {\n position,\n fileName,\n template,\n htmlAst: astResult.htmlAst,\n directive: astResult.directive,\n directives: astResult.directives,\n pipes: astResult.pipes,\n templateAst: astResult.templateAst,\n expressionParser: astResult.expressionParser\n };\n }\n return undefined;\n }\n\n getTemplateAst(template: TemplateSource, contextFile: string): AstResult {\n let result: AstResult|undefined = undefined;\n try {\n const resolvedMetadata =\n this.metadataResolver.getNonNormalizedDirectiveMetadata(template.type as any);\n const metadata = resolvedMetadata && resolvedMetadata.metadata;\n if (metadata) {\n const rawHtmlParser = new HtmlParser();\n const htmlParser = new I18NHtmlParser(rawHtmlParser);\n const expressionParser = new Parser(new Lexer());\n const config = new CompilerConfig();\n const parser = new TemplateParser(\n config, this.host.resolver.getReflector(), expressionParser,\n new DomElementSchemaRegistry(), htmlParser, null !, []);\n const htmlResult = htmlParser.parse(template.source, '', true);\n const analyzedModules = this.host.getAnalyzedModules();\n let errors: Diagnostic[]|undefined = undefined;\n let ngModule = analyzedModules.ngModuleByPipeOrDirective.get(template.type);\n if (!ngModule) {\n // Reported by the the declaration diagnostics.\n ngModule = findSuitableDefaultModule(analyzedModules);\n }\n if (ngModule) {\n const resolvedDirectives = ngModule.transitiveModule.directives.map(\n d => this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference));\n const directives = removeMissing(resolvedDirectives).map(d => d.metadata.toSummary());\n const pipes = ngModule.transitiveModule.pipes.map(\n p => this.host.resolver.getOrLoadPipeMetadata(p.reference).toSummary());\n const schemas = ngModule.schemas;\n const parseResult = parser.tryParseHtml(htmlResult, metadata, directives, pipes, schemas);\n result = {\n htmlAst: htmlResult.rootNodes,\n templateAst: parseResult.templateAst,\n directive: metadata, directives, pipes,\n parseErrors: parseResult.errors, expressionParser, errors\n };\n }\n }\n } catch (e) {\n let span = template.span;\n if (e.fileName == contextFile) {\n span = template.query.getSpanAt(e.line, e.column) || span;\n }\n result = {errors: [{kind: DiagnosticKind.Error, message: e.message, span}]};\n }\n return result || {};\n }\n}\n\nfunction removeMissing<T>(values: (T | null | undefined)[]): T[] {\n return values.filter(e => !!e) as T[];\n}\n\nfunction uniqueBySpan < T extends {\n span: Span;\n}\n> (elements: T[] | undefined): T[]|undefined {\n if (elements) {\n const result: T[] = [];\n const map = new Map<number, Set<number>>();\n for (const element of elements) {\n let span = element.span;\n let set = map.get(span.start);\n if (!set) {\n set = new Set();\n map.set(span.start, set);\n }\n if (!set.has(span.end)) {\n set.add(span.end);\n result.push(element);\n }\n }\n return result;\n }\n}\n\nfunction findSuitableDefaultModule(modules: NgAnalyzedModules): CompileNgModuleMetadata|undefined {\n let result: CompileNgModuleMetadata|undefined = undefined;\n let resultSize = 0;\n for (const module of modules.ngModules) {\n const moduleSize = module.transitiveModule.directives.length;\n if (moduleSize > resultSize) {\n result = module;\n resultSize = moduleSize;\n }\n }\n return result;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {TemplateInfo} from './common';\nimport {locateSymbol} from './locate_symbol';\nimport {Hover, HoverTextSection, Symbol} from './types';\n\nexport function getHover(info: TemplateInfo): Hover|undefined {\n const result = locateSymbol(info);\n if (result) {\n return {text: hoverTextOf(result.symbol), span: result.span};\n }\n}\n\nfunction hoverTextOf(symbol: Symbol): HoverTextSection[] {\n const result: HoverTextSection[] =\n [{text: symbol.kind}, {text: ' '}, {text: symbol.name, language: symbol.language}];\n const container = symbol.container;\n if (container) {\n result.push({text: ' of '}, {text: container.name, language: container.language});\n }\n return result;\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgAnalyzedModules, StaticSymbol} from '@angular/compiler';\nimport {DiagnosticTemplateInfo, getTemplateExpressionDiagnostics} from '@angular/compiler-cli';\n\nimport {AstResult} from './common';\nimport {Declarations, Diagnostic, DiagnosticKind, Diagnostics, Span, TemplateSource} from './types';\nimport {offsetSpan, spanOf} from './utils';\n\nexport interface AstProvider {\n getTemplateAst(template: TemplateSource, fileName: string): AstResult;\n}\n\nexport function getTemplateDiagnostics(\n fileName: string, astProvider: AstProvider, templates: TemplateSource[]): Diagnostics {\n const results: Diagnostics = [];\n for (const template of templates) {\n const ast = astProvider.getTemplateAst(template, fileName);\n if (ast) {\n if (ast.parseErrors && ast.parseErrors.length) {\n results.push(...ast.parseErrors.map<Diagnostic>(\n e => ({\n kind: DiagnosticKind.Error,\n span: offsetSpan(spanOf(e.span), template.span.start),\n message: e.msg\n })));\n } else if (ast.templateAst && ast.htmlAst) {\n const info: DiagnosticTemplateInfo = {\n templateAst: ast.templateAst,\n htmlAst: ast.htmlAst,\n offset: template.span.start,\n query: template.query,\n members: template.members\n };\n const expressionDiagnostics = getTemplateExpressionDiagnostics(info);\n results.push(...expressionDiagnostics);\n }\n if (ast.errors) {\n results.push(...ast.errors.map<Diagnostic>(\n e => ({kind: e.kind, span: e.span || template.span, message: e.message})));\n }\n }\n }\n return results;\n}\n\nexport function getDeclarationDiagnostics(\n declarations: Declarations, modules: NgAnalyzedModules): Diagnostics {\n const results: Diagnostics = [];\n\n let directives: Set<StaticSymbol>|undefined = undefined;\n for (const declaration of declarations) {\n const report = (message: string, span?: Span) => {\n results.push(<Diagnostic>{\n kind: DiagnosticKind.Error,\n span: span || declaration.declarationSpan, message\n });\n };\n for (const error of declaration.errors) {\n report(error.message, error.span);\n }\n if (declaration.metadata) {\n if (declaration.metadata.isComponent) {\n if (!modules.ngModuleByPipeOrDirective.has(declaration.type)) {\n report(\n `Component '${declaration.type.name}' is not included in a module and will not be available inside a template. Consider adding it to a NgModule declaration`);\n }\n if (!declaration.metadata.template !.template &&\n !declaration.metadata.template !.templateUrl) {\n report(`Component ${declaration.type.name} must have a template or templateUrl`);\n }\n } else {\n if (!directives) {\n directives = new Set();\n modules.ngModules.forEach(module => {\n module.declaredDirectives.forEach(\n directive => { directives !.add(directive.reference); });\n });\n }\n if (!directives.has(declaration.type)) {\n report(\n `Directive '${declaration.type.name}' is not included in a module and will not be available inside a template. Consider adding it to a NgModule declaration`);\n }\n }\n }\n }\n\n return results;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {TemplateInfo} from './common';\nimport {locateSymbol} from './locate_symbol';\nimport {Definition} from './types';\n\nexport function getDefinition(info: TemplateInfo): Definition {\n const result = locateSymbol(info);\n return result && result.symbol.definition;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AST, Attribute, BoundDirectivePropertyAst, BoundEventAst, ElementAst, TemplateAst, TemplateAstPath, findNode, tokenReference} from '@angular/compiler';\nimport {getExpressionScope} from '@angular/compiler-cli';\n\nimport {TemplateInfo} from './common';\nimport {getExpressionSymbol} from './expressions';\nimport {Definition, Location, Span, Symbol, SymbolTable} from './types';\nimport {diagnosticInfoFromTemplateInfo, findTemplateAstAt, inSpan, offsetSpan, spanOf} from './utils';\n\nexport interface SymbolInfo {\n symbol: Symbol;\n span: Span;\n}\n\nexport function locateSymbol(info: TemplateInfo): SymbolInfo|undefined {\n if (!info.position) return undefined;\n const templatePosition = info.position - info.template.span.start;\n const path = findTemplateAstAt(info.templateAst, templatePosition);\n if (path.tail) {\n let symbol: Symbol|undefined = undefined;\n let span: Span|undefined = undefined;\n const attributeValueSymbol = (ast: AST, inEvent: boolean = false): boolean => {\n const attribute = findAttribute(info);\n if (attribute) {\n if (inSpan(templatePosition, spanOf(attribute.valueSpan))) {\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n const scope = getExpressionScope(dinfo, path, inEvent);\n if (attribute.valueSpan) {\n const expressionOffset = attribute.valueSpan.start.offset + 1;\n const result = getExpressionSymbol(\n scope, ast, templatePosition - expressionOffset, info.template.query);\n if (result) {\n symbol = result.symbol;\n span = offsetSpan(result.span, expressionOffset);\n }\n }\n return true;\n }\n }\n return false;\n };\n path.tail.visit(\n {\n visitNgContent(ast) {},\n visitEmbeddedTemplate(ast) {},\n visitElement(ast) {\n const component = ast.directives.find(d => d.directive.isComponent);\n if (component) {\n symbol = info.template.query.getTypeSymbol(component.directive.type.reference);\n symbol = symbol && new OverrideKindSymbol(symbol, 'component');\n span = spanOf(ast);\n } else {\n // Find a directive that matches the element name\n const directive = ast.directives.find(\n d => d.directive.selector != null && d.directive.selector.indexOf(ast.name) >= 0);\n if (directive) {\n symbol = info.template.query.getTypeSymbol(directive.directive.type.reference);\n symbol = symbol && new OverrideKindSymbol(symbol, 'directive');\n span = spanOf(ast);\n }\n }\n },\n visitReference(ast) {\n symbol = ast.value && info.template.query.getTypeSymbol(tokenReference(ast.value));\n span = spanOf(ast);\n },\n visitVariable(ast) {},\n visitEvent(ast) {\n if (!attributeValueSymbol(ast.handler, /* inEvent */ true)) {\n symbol = findOutputBinding(info, path, ast);\n symbol = symbol && new OverrideKindSymbol(symbol, 'event');\n span = spanOf(ast);\n }\n },\n visitElementProperty(ast) { attributeValueSymbol(ast.value); },\n visitAttr(ast) {},\n visitBoundText(ast) {\n const expressionPosition = templatePosition - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n const scope = getExpressionScope(dinfo, path, /* includeEvent */ false);\n const result =\n getExpressionSymbol(scope, ast.value, expressionPosition, info.template.query);\n if (result) {\n symbol = result.symbol;\n span = offsetSpan(result.span, ast.sourceSpan.start.offset);\n }\n }\n },\n visitText(ast) {},\n visitDirective(ast) {\n symbol = info.template.query.getTypeSymbol(ast.directive.type.reference);\n span = spanOf(ast);\n },\n visitDirectiveProperty(ast) {\n if (!attributeValueSymbol(ast.value)) {\n symbol = findInputBinding(info, path, ast);\n span = spanOf(ast);\n }\n }\n },\n null);\n if (symbol && span) {\n return {symbol, span: offsetSpan(span, info.template.span.start)};\n }\n }\n}\n\nfunction findAttribute(info: TemplateInfo): Attribute|undefined {\n if (info.position) {\n const templatePosition = info.position - info.template.span.start;\n const path = findNode(info.htmlAst, templatePosition);\n return path.first(Attribute);\n }\n}\n\nfunction findInputBinding(\n info: TemplateInfo, path: TemplateAstPath, binding: BoundDirectivePropertyAst): Symbol|\n undefined {\n const element = path.first(ElementAst);\n if (element) {\n for (const directive of element.directives) {\n const invertedInput = invertMap(directive.directive.inputs);\n const fieldName = invertedInput[binding.templateName];\n if (fieldName) {\n const classSymbol = info.template.query.getTypeSymbol(directive.directive.type.reference);\n if (classSymbol) {\n return classSymbol.members().get(fieldName);\n }\n }\n }\n }\n}\n\nfunction findOutputBinding(\n info: TemplateInfo, path: TemplateAstPath, binding: BoundEventAst): Symbol|undefined {\n const element = path.first(ElementAst);\n if (element) {\n for (const directive of element.directives) {\n const invertedOutputs = invertMap(directive.directive.outputs);\n const fieldName = invertedOutputs[binding.name];\n if (fieldName) {\n const classSymbol = info.template.query.getTypeSymbol(directive.directive.type.reference);\n if (classSymbol) {\n return classSymbol.members().get(fieldName);\n }\n }\n }\n }\n}\n\nfunction invertMap(obj: {[name: string]: string}): {[name: string]: string} {\n const result: {[name: string]: string} = {};\n for (const name of Object.keys(obj)) {\n const v = obj[name];\n result[v] = name;\n }\n return result;\n}\n\n/**\n * Wrap a symbol and change its kind to component.\n */\nclass OverrideKindSymbol implements Symbol {\n constructor(private sym: Symbol, private kindOverride: string) {}\n\n get name(): string { return this.sym.name; }\n\n get kind(): string { return this.kindOverride; }\n\n get language(): string { return this.sym.language; }\n\n get type(): Symbol|undefined { return this.sym.type; }\n\n get container(): Symbol|undefined { return this.sym.container; }\n\n get public(): boolean { return this.sym.public; }\n\n get callable(): boolean { return this.sym.callable; }\n\n get nullable(): boolean { return this.sym.nullable; }\n\n get definition(): Definition { return this.sym.definition; }\n\n members() { return this.sym.members(); }\n\n signatures() { return this.sym.signatures(); }\n\n selectSignature(types: Symbol[]) { return this.sym.selectSignature(types); }\n\n indexed(argument: Symbol) { return this.sym.indexed(argument); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AST, AstPath, AttrAst, Attribute, BoundDirectivePropertyAst, BoundElementPropertyAst, BoundEventAst, BoundTextAst, CssSelector, DirectiveAst, Element, ElementAst, EmbeddedTemplateAst, ImplicitReceiver, NAMED_ENTITIES, NgContentAst, Node as HtmlAst, NullTemplateVisitor, ParseSpan, PropertyRead, ReferenceAst, SelectorMatcher, TagContentType, TemplateAst, TemplateAstVisitor, Text, TextAst, VariableAst, findNode, getHtmlTagDefinition, splitNsName, templateVisitAll} from '@angular/compiler';\nimport {DiagnosticTemplateInfo, getExpressionScope} from '@angular/compiler-cli';\n\nimport {AstResult, AttrInfo, SelectorInfo, TemplateInfo} from './common';\nimport {getExpressionCompletions} from './expressions';\nimport {attributeNames, elementNames, eventNames, propertyNames} from './html_info';\nimport {BuiltinType, Completion, Completions, Span, Symbol, SymbolDeclaration, SymbolTable, TemplateSource} from './types';\nimport {diagnosticInfoFromTemplateInfo, findTemplateAstAt, flatten, getSelectors, hasTemplateReference, inSpan, removeSuffix, spanOf, uniqueByName} from './utils';\n\nconst TEMPLATE_ATTR_PREFIX = '*';\n\nconst hiddenHtmlElements = {\n html: true,\n script: true,\n noscript: true,\n base: true,\n body: true,\n title: true,\n head: true,\n link: true,\n};\n\nexport function getTemplateCompletions(templateInfo: TemplateInfo): Completions|undefined {\n let result: Completions|undefined = undefined;\n let {htmlAst, templateAst, template} = templateInfo;\n // The templateNode starts at the delimiter character so we add 1 to skip it.\n if (templateInfo.position != null) {\n let templatePosition = templateInfo.position - template.span.start;\n let path = findNode(htmlAst, templatePosition);\n let mostSpecific = path.tail;\n if (path.empty || !mostSpecific) {\n result = elementCompletions(templateInfo, path);\n } else {\n let astPosition = templatePosition - mostSpecific.sourceSpan.start.offset;\n mostSpecific.visit(\n {\n visitElement(ast) {\n let startTagSpan = spanOf(ast.sourceSpan);\n let tagLen = ast.name.length;\n if (templatePosition <=\n startTagSpan.start + tagLen + 1 /* 1 for the opening angle bracked */) {\n // If we are in the tag then return the element completions.\n result = elementCompletions(templateInfo, path);\n } else if (templatePosition < startTagSpan.end) {\n // We are in the attribute section of the element (but not in an attribute).\n // Return the attribute completions.\n result = attributeCompletions(templateInfo, path);\n }\n },\n visitAttribute(ast) {\n if (!ast.valueSpan || !inSpan(templatePosition, spanOf(ast.valueSpan))) {\n // We are in the name of an attribute. Show attribute completions.\n result = attributeCompletions(templateInfo, path);\n } else if (ast.valueSpan && inSpan(templatePosition, spanOf(ast.valueSpan))) {\n result = attributeValueCompletions(templateInfo, templatePosition, ast);\n }\n },\n visitText(ast) {\n // Check if we are in a entity.\n result = entityCompletions(getSourceText(template, spanOf(ast)), astPosition);\n if (result) return result;\n result = interpolationCompletions(templateInfo, templatePosition);\n if (result) return result;\n let element = path.first(Element);\n if (element) {\n let definition = getHtmlTagDefinition(element.name);\n if (definition.contentType === TagContentType.PARSABLE_DATA) {\n result = voidElementAttributeCompletions(templateInfo, path);\n if (!result) {\n // If the element can hold content Show element completions.\n result = elementCompletions(templateInfo, path);\n }\n }\n } else {\n // If no element container, implies parsable data so show elements.\n result = voidElementAttributeCompletions(templateInfo, path);\n if (!result) {\n result = elementCompletions(templateInfo, path);\n }\n }\n },\n visitComment(ast) {},\n visitExpansion(ast) {},\n visitExpansionCase(ast) {}\n },\n null);\n }\n }\n return result;\n}\n\nfunction attributeCompletions(info: TemplateInfo, path: AstPath<HtmlAst>): Completions|undefined {\n let item = path.tail instanceof Element ? path.tail : path.parentOf(path.tail);\n if (item instanceof Element) {\n return attributeCompletionsForElement(info, item.name, item);\n }\n return undefined;\n}\n\nfunction attributeCompletionsForElement(\n info: TemplateInfo, elementName: string, element?: Element): Completions {\n const attributes = getAttributeInfosForElement(info, elementName, element);\n\n // Map all the attributes to a completion\n return attributes.map<Completion>(attr => ({\n kind: attr.fromHtml ? 'html attribute' : 'attribute',\n name: nameOfAttr(attr),\n sort: attr.name\n }));\n}\n\nfunction getAttributeInfosForElement(\n info: TemplateInfo, elementName: string, element?: Element): AttrInfo[] {\n let attributes: AttrInfo[] = [];\n\n // Add html attributes\n let htmlAttributes = attributeNames(elementName) || [];\n if (htmlAttributes) {\n attributes.push(...htmlAttributes.map<AttrInfo>(name => ({name, fromHtml: true})));\n }\n\n // Add html properties\n let htmlProperties = propertyNames(elementName);\n if (htmlProperties) {\n attributes.push(...htmlProperties.map<AttrInfo>(name => ({name, input: true})));\n }\n\n // Add html events\n let htmlEvents = eventNames(elementName);\n if (htmlEvents) {\n attributes.push(...htmlEvents.map<AttrInfo>(name => ({name, output: true})));\n }\n\n let {selectors, map: selectorMap} = getSelectors(info);\n if (selectors && selectors.length) {\n // All the attributes that are selectable should be shown.\n const applicableSelectors =\n selectors.filter(selector => !selector.element || selector.element == elementName);\n const selectorAndAttributeNames =\n applicableSelectors.map(selector => ({selector, attrs: selector.attrs.filter(a => !!a)}));\n let attrs = flatten(selectorAndAttributeNames.map<AttrInfo[]>(selectorAndAttr => {\n const directive = selectorMap.get(selectorAndAttr.selector) !;\n const result = selectorAndAttr.attrs.map<AttrInfo>(\n name => ({name, input: name in directive.inputs, output: name in directive.outputs}));\n return result;\n }));\n\n // Add template attribute if a directive contains a template reference\n selectorAndAttributeNames.forEach(selectorAndAttr => {\n const selector = selectorAndAttr.selector;\n const directive = selectorMap.get(selector);\n if (directive && hasTemplateReference(directive.type) && selector.attrs.length &&\n selector.attrs[0]) {\n attrs.push({name: selector.attrs[0], template: true});\n }\n });\n\n // All input and output properties of the matching directives should be added.\n let elementSelector = element ?\n createElementCssSelector(element) :\n createElementCssSelector(new Element(elementName, [], [], null !, null, null));\n\n let matcher = new SelectorMatcher();\n matcher.addSelectables(selectors);\n matcher.match(elementSelector, selector => {\n let directive = selectorMap.get(selector);\n if (directive) {\n attrs.push(...Object.keys(directive.inputs).map(name => ({name, input: true})));\n attrs.push(...Object.keys(directive.outputs).map(name => ({name, output: true})));\n }\n });\n\n // If a name shows up twice, fold it into a single value.\n attrs = foldAttrs(attrs);\n\n // Now expand them back out to ensure that input/output shows up as well as input and\n // output.\n attributes.push(...flatten(attrs.map(expandedAttr)));\n }\n return attributes;\n}\n\nfunction attributeValueCompletions(\n info: TemplateInfo, position: number, attr: Attribute): Completions|undefined {\n const path = findTemplateAstAt(info.templateAst, position);\n const mostSpecific = path.tail;\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n if (mostSpecific) {\n const visitor =\n new ExpressionVisitor(info, position, attr, () => getExpressionScope(dinfo, path, false));\n mostSpecific.visit(visitor, null);\n if (!visitor.result || !visitor.result.length) {\n // Try allwoing widening the path\n const widerPath = findTemplateAstAt(info.templateAst, position, /* allowWidening */ true);\n if (widerPath.tail) {\n const widerVisitor = new ExpressionVisitor(\n info, position, attr, () => getExpressionScope(dinfo, widerPath, false));\n widerPath.tail.visit(widerVisitor, null);\n return widerVisitor.result;\n }\n }\n return visitor.result;\n }\n}\n\nfunction elementCompletions(info: TemplateInfo, path: AstPath<HtmlAst>): Completions|undefined {\n let htmlNames = elementNames().filter(name => !(name in hiddenHtmlElements));\n\n // Collect the elements referenced by the selectors\n let directiveElements = getSelectors(info)\n .selectors.map(selector => selector.element)\n .filter(name => !!name) as string[];\n\n let components =\n directiveElements.map<Completion>(name => ({kind: 'component', name, sort: name}));\n let htmlElements = htmlNames.map<Completion>(name => ({kind: 'element', name: name, sort: name}));\n\n // Return components and html elements\n return uniqueByName(htmlElements.concat(components));\n}\n\nfunction entityCompletions(value: string, position: number): Completions|undefined {\n // Look for entity completions\n const re = /&[A-Za-z]*;?(?!\\d)/g;\n let found: RegExpExecArray|null;\n let result: Completions|undefined = undefined;\n while (found = re.exec(value)) {\n let len = found[0].length;\n if (position >= found.index && position < (found.index + len)) {\n result = Object.keys(NAMED_ENTITIES)\n .map<Completion>(name => ({kind: 'entity', name: `&${name};`, sort: name}));\n break;\n }\n }\n return result;\n}\n\nfunction interpolationCompletions(info: TemplateInfo, position: number): Completions|undefined {\n // Look for an interpolation in at the position.\n const templatePath = findTemplateAstAt(info.templateAst, position);\n const mostSpecific = templatePath.tail;\n if (mostSpecific) {\n let visitor = new ExpressionVisitor(\n info, position, undefined,\n () => getExpressionScope(diagnosticInfoFromTemplateInfo(info), templatePath, false));\n mostSpecific.visit(visitor, null);\n return uniqueByName(visitor.result);\n }\n}\n\n// There is a special case of HTML where text that contains a unclosed tag is treated as\n// text. For exaple '<h1> Some <a text </h1>' produces a text nodes inside of the H1\n// element \"Some <a text\". We, however, want to treat this as if the user was requesting\n// the attributes of an \"a\" element, not requesting completion in the a text element. This\n// code checks for this case and returns element completions if it is detected or undefined\n// if it is not.\nfunction voidElementAttributeCompletions(info: TemplateInfo, path: AstPath<HtmlAst>): Completions|\n undefined {\n let tail = path.tail;\n if (tail instanceof Text) {\n let match = tail.value.match(/<(\\w(\\w|\\d|-)*:)?(\\w(\\w|\\d|-)*)\\s/);\n // The position must be after the match, otherwise we are still in a place where elements\n // are expected (such as `<|a` or `<a|`; we only want attributes for `<a |` or after).\n if (match &&\n path.position >= (match.index || 0) + match[0].length + tail.sourceSpan.start.offset) {\n return attributeCompletionsForElement(info, match[3]);\n }\n }\n}\n\nclass ExpressionVisitor extends NullTemplateVisitor {\n private getExpressionScope: () => SymbolTable;\n result: Completions;\n\n constructor(\n private info: TemplateInfo, private position: number, private attr?: Attribute,\n getExpressionScope?: () => SymbolTable) {\n super();\n this.getExpressionScope = getExpressionScope || (() => info.template.members);\n }\n\n visitDirectiveProperty(ast: BoundDirectivePropertyAst): void {\n this.attributeValueCompletions(ast.value);\n }\n\n visitElementProperty(ast: BoundElementPropertyAst): void {\n this.attributeValueCompletions(ast.value);\n }\n\n visitEvent(ast: BoundEventAst): void { this.attributeValueCompletions(ast.handler); }\n\n visitElement(ast: ElementAst): void {\n if (this.attr && getSelectors(this.info) && this.attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {\n // The value is a template expression but the expression AST was not produced when the\n // TemplateAst was produce so\n // do that now.\n\n const key = this.attr.name.substr(TEMPLATE_ATTR_PREFIX.length);\n\n // Find the selector\n const selectorInfo = getSelectors(this.info);\n const selectors = selectorInfo.selectors;\n const selector =\n selectors.filter(s => s.attrs.some((attr, i) => i % 2 == 0 && attr == key))[0];\n\n const templateBindingResult =\n this.info.expressionParser.parseTemplateBindings(key, this.attr.value, null);\n\n // find the template binding that contains the position\n if (!this.attr.valueSpan) return;\n const valueRelativePosition = this.position - this.attr.valueSpan.start.offset - 1;\n const bindings = templateBindingResult.templateBindings;\n const binding =\n bindings.find(\n binding => inSpan(valueRelativePosition, binding.span, /* exclusive */ true)) ||\n bindings.find(binding => inSpan(valueRelativePosition, binding.span));\n\n const keyCompletions = () => {\n let keys: string[] = [];\n if (selector) {\n const attrNames = selector.attrs.filter((_, i) => i % 2 == 0);\n keys = attrNames.filter(name => name.startsWith(key) && name != key)\n .map(name => lowerName(name.substr(key.length)));\n }\n keys.push('let');\n this.result = keys.map(key => <Completion>{kind: 'key', name: key, sort: key});\n };\n\n if (!binding || (binding.key == key && !binding.expression)) {\n // We are in the root binding. We should return `let` and keys that are left in the\n // selector.\n keyCompletions();\n } else if (binding.keyIsVar) {\n const equalLocation = this.attr.value.indexOf('=');\n this.result = [];\n if (equalLocation >= 0 && valueRelativePosition >= equalLocation) {\n // We are after the '=' in a let clause. The valid values here are the members of the\n // template reference's type parameter.\n const directiveMetadata = selectorInfo.map.get(selector);\n if (directiveMetadata) {\n const contextTable =\n this.info.template.query.getTemplateContext(directiveMetadata.type.reference);\n if (contextTable) {\n this.result = this.symbolsToCompletions(contextTable.values());\n }\n }\n } else if (binding.key && valueRelativePosition <= (binding.key.length - key.length)) {\n keyCompletions();\n }\n } else {\n // If the position is in the expression or after the key or there is no key, return the\n // expression completions\n if ((binding.expression && inSpan(valueRelativePosition, binding.expression.ast.span)) ||\n (binding.key &&\n valueRelativePosition > binding.span.start + (binding.key.length - key.length)) ||\n !binding.key) {\n const span = new ParseSpan(0, this.attr.value.length);\n this.attributeValueCompletions(\n binding.expression ? binding.expression.ast :\n new PropertyRead(span, new ImplicitReceiver(span), ''),\n valueRelativePosition);\n } else {\n keyCompletions();\n }\n }\n }\n }\n\n visitBoundText(ast: BoundTextAst) {\n const expressionPosition = this.position - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n const completions = getExpressionCompletions(\n this.getExpressionScope(), ast.value, expressionPosition, this.info.template.query);\n if (completions) {\n this.result = this.symbolsToCompletions(completions);\n }\n }\n }\n\n private attributeValueCompletions(value: AST, position?: number) {\n const symbols = getExpressionCompletions(\n this.getExpressionScope(), value, position == null ? this.attributeValuePosition : position,\n this.info.template.query);\n if (symbols) {\n this.result = this.symbolsToCompletions(symbols);\n }\n }\n\n private symbolsToCompletions(symbols: Symbol[]): Completions {\n return symbols.filter(s => !s.name.startsWith('__') && s.public)\n .map(symbol => <Completion>{kind: symbol.kind, name: symbol.name, sort: symbol.name});\n }\n\n private get attributeValuePosition() {\n if (this.attr && this.attr.valueSpan) {\n return this.position - this.attr.valueSpan.start.offset - 1;\n }\n return 0;\n }\n}\n\nfunction getSourceText(template: TemplateSource, span: Span): string {\n return template.source.substring(span.start, span.end);\n}\n\nfunction nameOfAttr(attr: AttrInfo): string {\n let name = attr.name;\n if (attr.output) {\n name = removeSuffix(name, 'Events');\n name = removeSuffix(name, 'Changed');\n }\n let result = [name];\n if (attr.input) {\n result.unshift('[');\n result.push(']');\n }\n if (attr.output) {\n result.unshift('(');\n result.push(')');\n }\n if (attr.template) {\n result.unshift('*');\n }\n return result.join('');\n}\n\nconst templateAttr = /^(\\w+:)?(template$|^\\*)/;\nfunction createElementCssSelector(element: Element): CssSelector {\n const cssSelector = new CssSelector();\n let elNameNoNs = splitNsName(element.name)[1];\n\n cssSelector.setElement(elNameNoNs);\n\n for (let attr of element.attrs) {\n if (!attr.name.match(templateAttr)) {\n let [_, attrNameNoNs] = splitNsName(attr.name);\n cssSelector.addAttribute(attrNameNoNs, attr.value);\n if (attr.name.toLowerCase() == 'class') {\n const classes = attr.value.split(/s+/g);\n classes.forEach(className => cssSelector.addClassName(className));\n }\n }\n }\n return cssSelector;\n}\n\nfunction foldAttrs(attrs: AttrInfo[]): AttrInfo[] {\n let inputOutput = new Map<string, AttrInfo>();\n let templates = new Map<string, AttrInfo>();\n let result: AttrInfo[] = [];\n attrs.forEach(attr => {\n if (attr.fromHtml) {\n return attr;\n }\n if (attr.template) {\n let duplicate = templates.get(attr.name);\n if (!duplicate) {\n result.push({name: attr.name, template: true});\n templates.set(attr.name, attr);\n }\n }\n if (attr.input || attr.output) {\n let duplicate = inputOutput.get(attr.name);\n if (duplicate) {\n duplicate.input = duplicate.input || attr.input;\n duplicate.output = duplicate.output || attr.output;\n } else {\n let cloneAttr: AttrInfo = {name: attr.name};\n if (attr.input) cloneAttr.input = true;\n if (attr.output) cloneAttr.output = true;\n result.push(cloneAttr);\n inputOutput.set(attr.name, cloneAttr);\n }\n }\n });\n return result;\n}\n\nfunction expandedAttr(attr: AttrInfo): AttrInfo[] {\n if (attr.input && attr.output) {\n return [\n attr, {name: attr.name, input: true, output: false},\n {name: attr.name, input: false, output: true}\n ];\n }\n return [attr];\n}\n\nfunction lowerName(name: string): string {\n return name && (name[0].toLowerCase() + name.substr(1));\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// Information about the HTML DOM elements\n\n// This section defines the HTML elements and attribute surface of HTML 4\n// which is derived from https://www.w3.org/TR/html4/strict.dtd\ntype attrType = string | string[];\ntype hash<T> = {\n [name: string]: T\n};\n\nconst values: attrType[] = [\n 'ID',\n 'CDATA',\n 'NAME',\n ['ltr', 'rtl'],\n ['rect', 'circle', 'poly', 'default'],\n 'NUMBER',\n ['nohref'],\n ['ismap'],\n ['declare'],\n ['DATA', 'REF', 'OBJECT'],\n ['GET', 'POST'],\n 'IDREF',\n ['TEXT', 'PASSWORD', 'CHECKBOX', 'RADIO', 'SUBMIT', 'RESET', 'FILE', 'HIDDEN', 'IMAGE', 'BUTTON'],\n ['checked'],\n ['disabled'],\n ['readonly'],\n ['multiple'],\n ['selected'],\n ['button', 'submit', 'reset'],\n ['void', 'above', 'below', 'hsides', 'lhs', 'rhs', 'vsides', 'box', 'border'],\n ['none', 'groups', 'rows', 'cols', 'all'],\n ['left', 'center', 'right', 'justify', 'char'],\n ['top', 'middle', 'bottom', 'baseline'],\n 'IDREFS',\n ['row', 'col', 'rowgroup', 'colgroup'],\n ['defer']\n];\n\nconst groups: hash<number>[] = [\n {id: 0},\n {\n onclick: 1,\n ondblclick: 1,\n onmousedown: 1,\n onmouseup: 1,\n onmouseover: 1,\n onmousemove: 1,\n onmouseout: 1,\n onkeypress: 1,\n onkeydown: 1,\n onkeyup: 1\n },\n {lang: 2, dir: 3},\n {onload: 1, onunload: 1},\n {name: 1},\n {href: 1},\n {type: 1},\n {alt: 1},\n {tabindex: 5},\n {media: 1},\n {nohref: 6},\n {usemap: 1},\n {src: 1},\n {onfocus: 1, onblur: 1},\n {charset: 1},\n {declare: 8, classid: 1, codebase: 1, data: 1, codetype: 1, archive: 1, standby: 1},\n {title: 1},\n {value: 1},\n {cite: 1},\n {datetime: 1},\n {accept: 1},\n {shape: 4, coords: 1},\n { for: 11\n },\n {action: 1, method: 10, enctype: 1, onsubmit: 1, onreset: 1, 'accept-charset': 1},\n {valuetype: 9},\n {longdesc: 1},\n {width: 1},\n {disabled: 14},\n {readonly: 15, onselect: 1},\n {accesskey: 1},\n {size: 5, multiple: 16},\n {onchange: 1},\n {label: 1},\n {selected: 17},\n {type: 12, checked: 13, size: 1, maxlength: 5},\n {rows: 5, cols: 5},\n {type: 18},\n {height: 1},\n {summary: 1, border: 1, frame: 19, rules: 20, cellspacing: 1, cellpadding: 1, datapagesize: 1},\n {align: 21, char: 1, charoff: 1, valign: 22},\n {span: 5},\n {abbr: 1, axis: 1, headers: 23, scope: 24, rowspan: 5, colspan: 5},\n {profile: 1},\n {'http-equiv': 2, name: 2, content: 1, scheme: 1},\n {class: 1, style: 1},\n {hreflang: 2, rel: 1, rev: 1},\n {ismap: 7},\n { defer: 25, event: 1, for : 1 }\n];\n\nconst elements: {[name: string]: number[]} = {\n TT: [0, 1, 2, 16, 44],\n I: [0, 1, 2, 16, 44],\n B: [0, 1, 2, 16, 44],\n BIG: [0, 1, 2, 16, 44],\n SMALL: [0, 1, 2, 16, 44],\n EM: [0, 1, 2, 16, 44],\n STRONG: [0, 1, 2, 16, 44],\n DFN: [0, 1, 2, 16, 44],\n CODE: [0, 1, 2, 16, 44],\n SAMP: [0, 1, 2, 16, 44],\n KBD: [0, 1, 2, 16, 44],\n VAR: [0, 1, 2, 16, 44],\n CITE: [0, 1, 2, 16, 44],\n ABBR: [0, 1, 2, 16, 44],\n ACRONYM: [0, 1, 2, 16, 44],\n SUB: [0, 1, 2, 16, 44],\n SUP: [0, 1, 2, 16, 44],\n SPAN: [0, 1, 2, 16, 44],\n BDO: [0, 2, 16, 44],\n BR: [0, 16, 44],\n BODY: [0, 1, 2, 3, 16, 44],\n ADDRESS: [0, 1, 2, 16, 44],\n DIV: [0, 1, 2, 16, 44],\n A: [0, 1, 2, 4, 5, 6, 8, 13, 14, 16, 21, 29, 44, 45],\n MAP: [0, 1, 2, 4, 16, 44],\n AREA: [0, 1, 2, 5, 7, 8, 10, 13, 16, 21, 29, 44],\n LINK: [0, 1, 2, 5, 6, 9, 14, 16, 44, 45],\n IMG: [0, 1, 2, 4, 7, 11, 12, 16, 25, 26, 37, 44, 46],\n OBJECT: [0, 1, 2, 4, 6, 8, 11, 15, 16, 26, 37, 44],\n PARAM: [0, 4, 6, 17, 24],\n HR: [0, 1, 2, 16, 44],\n P: [0, 1, 2, 16, 44],\n H1: [0, 1, 2, 16, 44],\n H2: [0, 1, 2, 16, 44],\n H3: [0, 1, 2, 16, 44],\n H4: [0, 1, 2, 16, 44],\n H5: [0, 1, 2, 16, 44],\n H6: [0, 1, 2, 16, 44],\n PRE: [0, 1, 2, 16, 44],\n Q: [0, 1, 2, 16, 18, 44],\n BLOCKQUOTE: [0, 1, 2, 16, 18, 44],\n INS: [0, 1, 2, 16, 18, 19, 44],\n DEL: [0, 1, 2, 16, 18, 19, 44],\n DL: [0, 1, 2, 16, 44],\n DT: [0, 1, 2, 16, 44],\n DD: [0, 1, 2, 16, 44],\n OL: [0, 1, 2, 16, 44],\n UL: [0, 1, 2, 16, 44],\n LI: [0, 1, 2, 16, 44],\n FORM: [0, 1, 2, 4, 16, 20, 23, 44],\n LABEL: [0, 1, 2, 13, 16, 22, 29, 44],\n INPUT: [0, 1, 2, 4, 7, 8, 11, 12, 13, 16, 17, 20, 27, 28, 29, 31, 34, 44, 46],\n SELECT: [0, 1, 2, 4, 8, 13, 16, 27, 30, 31, 44],\n OPTGROUP: [0, 1, 2, 16, 27, 32, 44],\n OPTION: [0, 1, 2, 16, 17, 27, 32, 33, 44],\n TEXTAREA: [0, 1, 2, 4, 8, 13, 16, 27, 28, 29, 31, 35, 44],\n FIELDSET: [0, 1, 2, 16, 44],\n LEGEND: [0, 1, 2, 16, 29, 44],\n BUTTON: [0, 1, 2, 4, 8, 13, 16, 17, 27, 29, 36, 44],\n TABLE: [0, 1, 2, 16, 26, 38, 44],\n CAPTION: [0, 1, 2, 16, 44],\n COLGROUP: [0, 1, 2, 16, 26, 39, 40, 44],\n COL: [0, 1, 2, 16, 26, 39, 40, 44],\n THEAD: [0, 1, 2, 16, 39, 44],\n TBODY: [0, 1, 2, 16, 39, 44],\n TFOOT: [0, 1, 2, 16, 39, 44],\n TR: [0, 1, 2, 16, 39, 44],\n TH: [0, 1, 2, 16, 39, 41, 44],\n TD: [0, 1, 2, 16, 39, 41, 44],\n HEAD: [2, 42],\n TITLE: [2],\n BASE: [5],\n META: [2, 43],\n STYLE: [2, 6, 9, 16],\n SCRIPT: [6, 12, 14, 47],\n NOSCRIPT: [0, 1, 2, 16, 44],\n HTML: [2]\n};\n\nconst defaultAttributes = [0, 1, 2, 4];\n\nexport function elementNames(): string[] {\n return Object.keys(elements).sort().map(v => v.toLowerCase());\n}\n\nfunction compose(indexes: number[] | undefined): hash<attrType> {\n const result: hash<attrType> = {};\n if (indexes) {\n for (let index of indexes) {\n const group = groups[index];\n for (let name in group)\n if (group.hasOwnProperty(name)) result[name] = values[group[name]];\n }\n }\n return result;\n}\n\nexport function attributeNames(element: string): string[] {\n return Object.keys(compose(elements[element.toUpperCase()] || defaultAttributes)).sort();\n}\n\nexport function attributeType(element: string, attribute: string): string|string[]|undefined {\n return compose(elements[element.toUpperCase()] || defaultAttributes)[attribute.toLowerCase()];\n}\n\n// This section is describes the DOM property surface of a DOM element and is derivgulp formated\n// from\n// from the SCHEMA strings from the security context information. SCHEMA is copied here because\n// it would be an unnecessary risk to allow this array to be imported from the security context\n// schema registry.\nconst SCHEMA: string[] = [\n '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop,slot' +\n /* added manually to avoid breaking changes */\n ',*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored',\n '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'media^[HTMLElement]|!autoplay,!controls,%controlsList,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,*waitingforkey,#playbackRate,preload,src,%srcObject,#volume',\n ':svg:^[HTMLElement]|*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex',\n ':svg:graphics^:svg:|',\n ':svg:animation^:svg:|*begin,*end,*repeat',\n ':svg:geometry^:svg:|',\n ':svg:componentTransferFunction^:svg:|',\n ':svg:gradient^:svg:|',\n ':svg:textContent^:svg:graphics|',\n ':svg:textPositioning^:svg:textContent|',\n 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username',\n 'area^[HTMLElement]|alt,coords,download,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,rel,search,shape,target,username',\n 'audio^media|',\n 'br^[HTMLElement]|clear',\n 'base^[HTMLElement]|href,target',\n 'body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink',\n 'button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value',\n 'canvas^[HTMLElement]|#height,#width',\n 'content^[HTMLElement]|select',\n 'dl^[HTMLElement]|!compact',\n 'datalist^[HTMLElement]|',\n 'details^[HTMLElement]|!open',\n 'dialog^[HTMLElement]|!open,returnValue',\n 'dir^[HTMLElement]|!compact',\n 'div^[HTMLElement]|align',\n 'embed^[HTMLElement]|align,height,name,src,type,width',\n 'fieldset^[HTMLElement]|!disabled,name',\n 'font^[HTMLElement]|color,face,size',\n 'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target',\n 'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src',\n 'frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows',\n 'hr^[HTMLElement]|align,color,!noShade,size,width',\n 'head^[HTMLElement]|',\n 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align',\n 'html^[HTMLElement]|version',\n 'iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width',\n 'img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width',\n 'input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width',\n 'li^[HTMLElement]|type,#value',\n 'label^[HTMLElement]|htmlFor',\n 'legend^[HTMLElement]|align',\n 'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,referrerPolicy,rel,%relList,rev,%sizes,target,type',\n 'map^[HTMLElement]|name',\n 'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width',\n 'menu^[HTMLElement]|!compact',\n 'meta^[HTMLElement]|content,httpEquiv,name,scheme',\n 'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value',\n 'ins,del^[HTMLElement]|cite,dateTime',\n 'ol^[HTMLElement]|!compact,!reversed,#start,type',\n 'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width',\n 'optgroup^[HTMLElement]|!disabled,label',\n 'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value',\n 'output^[HTMLElement]|defaultValue,%htmlFor,name,value',\n 'p^[HTMLElement]|align',\n 'param^[HTMLElement]|name,type,value,valueType',\n 'picture^[HTMLElement]|',\n 'pre^[HTMLElement]|#width',\n 'progress^[HTMLElement]|#max,#value',\n 'q,blockquote,cite^[HTMLElement]|',\n 'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type',\n 'select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value',\n 'shadow^[HTMLElement]|',\n 'slot^[HTMLElement]|name',\n 'source^[HTMLElement]|media,sizes,src,srcset,type',\n 'span^[HTMLElement]|',\n 'style^[HTMLElement]|!disabled,media,type',\n 'caption^[HTMLElement]|align',\n 'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width',\n 'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width',\n 'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width',\n 'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign',\n 'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign',\n 'template^[HTMLElement]|',\n 'textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap',\n 'title^[HTMLElement]|text',\n 'track^[HTMLElement]|!default,kind,label,src,srclang',\n 'ul^[HTMLElement]|!compact,type',\n 'unknown^[HTMLElement]|',\n 'video^media|#height,poster,#width',\n ':svg:a^:svg:graphics|',\n ':svg:animate^:svg:animation|',\n ':svg:animateMotion^:svg:animation|',\n ':svg:animateTransform^:svg:animation|',\n ':svg:circle^:svg:geometry|',\n ':svg:clipPath^:svg:graphics|',\n ':svg:defs^:svg:graphics|',\n ':svg:desc^:svg:|',\n ':svg:discard^:svg:|',\n ':svg:ellipse^:svg:geometry|',\n ':svg:feBlend^:svg:|',\n ':svg:feColorMatrix^:svg:|',\n ':svg:feComponentTransfer^:svg:|',\n ':svg:feComposite^:svg:|',\n ':svg:feConvolveMatrix^:svg:|',\n ':svg:feDiffuseLighting^:svg:|',\n ':svg:feDisplacementMap^:svg:|',\n ':svg:feDistantLight^:svg:|',\n ':svg:feDropShadow^:svg:|',\n ':svg:feFlood^:svg:|',\n ':svg:feFuncA^:svg:componentTransferFunction|',\n ':svg:feFuncB^:svg:componentTransferFunction|',\n ':svg:feFuncG^:svg:componentTransferFunction|',\n ':svg:feFuncR^:svg:componentTransferFunction|',\n ':svg:feGaussianBlur^:svg:|',\n ':svg:feImage^:svg:|',\n ':svg:feMerge^:svg:|',\n ':svg:feMergeNode^:svg:|',\n ':svg:feMorphology^:svg:|',\n ':svg:feOffset^:svg:|',\n ':svg:fePointLight^:svg:|',\n ':svg:feSpecularLighting^:svg:|',\n ':svg:feSpotLight^:svg:|',\n ':svg:feTile^:svg:|',\n ':svg:feTurbulence^:svg:|',\n ':svg:filter^:svg:|',\n ':svg:foreignObject^:svg:graphics|',\n ':svg:g^:svg:graphics|',\n ':svg:image^:svg:graphics|',\n ':svg:line^:svg:geometry|',\n ':svg:linearGradient^:svg:gradient|',\n ':svg:mpath^:svg:|',\n ':svg:marker^:svg:|',\n ':svg:mask^:svg:|',\n ':svg:metadata^:svg:|',\n ':svg:path^:svg:geometry|',\n ':svg:pattern^:svg:|',\n ':svg:polygon^:svg:geometry|',\n ':svg:polyline^:svg:geometry|',\n ':svg:radialGradient^:svg:gradient|',\n ':svg:rect^:svg:geometry|',\n ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan',\n ':svg:script^:svg:|type',\n ':svg:set^:svg:animation|',\n ':svg:stop^:svg:|',\n ':svg:style^:svg:|!disabled,media,title,type',\n ':svg:switch^:svg:graphics|',\n ':svg:symbol^:svg:|',\n ':svg:tspan^:svg:textPositioning|',\n ':svg:text^:svg:textPositioning|',\n ':svg:textPath^:svg:textContent|',\n ':svg:title^:svg:|',\n ':svg:use^:svg:graphics|',\n ':svg:view^:svg:|#zoomAndPan',\n 'data^[HTMLElement]|value',\n 'keygen^[HTMLElement]|!autofocus,challenge,!disabled,form,keytype,name',\n 'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default',\n 'summary^[HTMLElement]|',\n 'time^[HTMLElement]|dateTime',\n ':svg:cursor^:svg:|',\n];\n\nconst attrToPropMap: {[name: string]: string} = <any>{\n 'class': 'className',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex'\n};\n\nconst EVENT = 'event';\nconst BOOLEAN = 'boolean';\nconst NUMBER = 'number';\nconst STRING = 'string';\nconst OBJECT = 'object';\n\nexport class SchemaInformation {\n schema = <{[element: string]: {[property: string]: string}}>{};\n\n constructor() {\n SCHEMA.forEach(encodedType => {\n const parts = encodedType.split('|');\n const properties = parts[1].split(',');\n const typeParts = (parts[0] + '^').split('^');\n const typeName = typeParts[0];\n const type = <{[property: string]: string}>{};\n typeName.split(',').forEach(tag => this.schema[tag.toLowerCase()] = type);\n const superName = typeParts[1];\n const superType = superName && this.schema[superName.toLowerCase()];\n if (superType) {\n for (const key in superType) {\n type[key] = superType[key];\n }\n }\n properties.forEach((property: string) => {\n if (property == '') {\n } else if (property.startsWith('*')) {\n type[property.substring(1)] = EVENT;\n } else if (property.startsWith('!')) {\n type[property.substring(1)] = BOOLEAN;\n } else if (property.startsWith('#')) {\n type[property.substring(1)] = NUMBER;\n } else if (property.startsWith('%')) {\n type[property.substring(1)] = OBJECT;\n } else {\n type[property] = STRING;\n }\n });\n });\n }\n\n allKnownElements(): string[] { return Object.keys(this.schema); }\n\n eventsOf(elementName: string): string[] {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] === EVENT);\n }\n\n propertiesOf(elementName: string): string[] {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] !== EVENT);\n }\n\n typeOf(elementName: string, property: string): string {\n return (this.schema[elementName.toLowerCase()] || {})[property];\n }\n\n private static _instance: SchemaInformation;\n\n static get instance(): SchemaInformation {\n let result = SchemaInformation._instance;\n if (!result) {\n result = SchemaInformation._instance = new SchemaInformation();\n }\n return result;\n }\n}\n\nexport function eventNames(elementName: string): string[] {\n return SchemaInformation.instance.eventsOf(elementName);\n}\n\nexport function propertyNames(elementName: string): string[] {\n return SchemaInformation.instance.propertiesOf(elementName);\n}\n\nexport function propertyType(elementName: string, propertyName: string): string {\n return SchemaInformation.instance.typeOf(elementName, propertyName);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AST, ASTWithSource, AstPath as AstPathBase, NullAstVisitor, visitAstChildren} from '@angular/compiler';\nimport {AstType} from '@angular/compiler-cli';\n\nimport {BuiltinType, Span, Symbol, SymbolQuery, SymbolTable} from './types';\nimport {inSpan} from './utils';\n\ntype AstPath = AstPathBase<AST>;\n\nfunction findAstAt(ast: AST, position: number, excludeEmpty: boolean = false): AstPath {\n const path: AST[] = [];\n const visitor = new class extends NullAstVisitor {\n visit(ast: AST) {\n if ((!excludeEmpty || ast.span.start < ast.span.end) && inSpan(position, ast.span)) {\n path.push(ast);\n visitAstChildren(ast, this);\n }\n }\n };\n\n // We never care about the ASTWithSource node and its visit() method calls its ast's visit so\n // the visit() method above would never see it.\n if (ast instanceof ASTWithSource) {\n ast = ast.ast;\n }\n\n visitor.visit(ast);\n\n return new AstPathBase<AST>(path, position);\n}\n\nexport function getExpressionCompletions(\n scope: SymbolTable, ast: AST, position: number, query: SymbolQuery): Symbol[]|undefined {\n const path = findAstAt(ast, position);\n if (path.empty) return undefined;\n const tail = path.tail !;\n let result: SymbolTable|undefined = scope;\n\n function getType(ast: AST): Symbol { return new AstType(scope, query, {}).getType(ast); }\n\n // If the completion request is in a not in a pipe or property access then the global scope\n // (that is the scope of the implicit receiver) is the right scope as the user is typing the\n // beginning of an expression.\n tail.visit({\n visitBinary(ast) {},\n visitChain(ast) {},\n visitConditional(ast) {},\n visitFunctionCall(ast) {},\n visitImplicitReceiver(ast) {},\n visitInterpolation(ast) { result = undefined; },\n visitKeyedRead(ast) {},\n visitKeyedWrite(ast) {},\n visitLiteralArray(ast) {},\n visitLiteralMap(ast) {},\n visitLiteralPrimitive(ast) {},\n visitMethodCall(ast) {},\n visitPipe(ast) {\n if (position >= ast.exp.span.end &&\n (!ast.args || !ast.args.length || position < (<AST>ast.args[0]).span.start)) {\n // We are in a position a pipe name is expected.\n result = query.getPipes();\n }\n },\n visitPrefixNot(ast) {},\n visitNonNullAssert(ast) {},\n visitPropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitPropertyWrite(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitQuote(ast) {\n // For a quote, return the members of any (if there are any).\n result = query.getBuiltinType(BuiltinType.Any).members();\n },\n visitSafeMethodCall(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitSafePropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n });\n\n return result && result.values();\n}\n\nexport function getExpressionSymbol(\n scope: SymbolTable, ast: AST, position: number,\n query: SymbolQuery): {symbol: Symbol, span: Span}|undefined {\n const path = findAstAt(ast, position, /* excludeEmpty */ true);\n if (path.empty) return undefined;\n const tail = path.tail !;\n\n function getType(ast: AST): Symbol { return new AstType(scope, query, {}).getType(ast); }\n\n let symbol: Symbol|undefined = undefined;\n let span: Span|undefined = undefined;\n\n // If the completion request is in a not in a pipe or property access then the global scope\n // (that is the scope of the implicit receiver) is the right scope as the user is typing the\n // beginning of an expression.\n tail.visit({\n visitBinary(ast) {},\n visitChain(ast) {},\n visitConditional(ast) {},\n visitFunctionCall(ast) {},\n visitImplicitReceiver(ast) {},\n visitInterpolation(ast) {},\n visitKeyedRead(ast) {},\n visitKeyedWrite(ast) {},\n visitLiteralArray(ast) {},\n visitLiteralMap(ast) {},\n visitLiteralPrimitive(ast) {},\n visitMethodCall(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPipe(ast) {\n if (position >= ast.exp.span.end &&\n (!ast.args || !ast.args.length || position < (<AST>ast.args[0]).span.start)) {\n // We are in a position a pipe name is expected.\n const pipes = query.getPipes();\n if (pipes) {\n symbol = pipes.get(ast.name);\n span = ast.span;\n }\n }\n },\n visitPrefixNot(ast) {},\n visitNonNullAssert(ast) {},\n visitPropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPropertyWrite(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitQuote(ast) {},\n visitSafeMethodCall(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitSafePropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n });\n\n if (symbol && span) {\n return {symbol, span};\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AstPath, CompileDirectiveSummary, CompileTypeMetadata, CssSelector, DirectiveAst, ElementAst, EmbeddedTemplateAst, HtmlAstPath, Node as HtmlNode, ParseSourceSpan, RecursiveTemplateAstVisitor, RecursiveVisitor, TemplateAst, TemplateAstPath, identifierName, templateVisitAll, visitAll} from '@angular/compiler';\nimport {DiagnosticTemplateInfo} from '@angular/compiler-cli';\nimport * as ts from 'typescript';\n\nimport {SelectorInfo, TemplateInfo} from './common';\nimport {Span} from './types';\n\nexport interface SpanHolder {\n sourceSpan: ParseSourceSpan;\n endSourceSpan?: ParseSourceSpan|null;\n children?: SpanHolder[];\n}\n\nexport function isParseSourceSpan(value: any): value is ParseSourceSpan {\n return value && !!value.start;\n}\n\nexport function spanOf(span: SpanHolder): Span;\nexport function spanOf(span: ParseSourceSpan): Span;\nexport function spanOf(span: SpanHolder | ParseSourceSpan | undefined): Span|undefined;\nexport function spanOf(span?: SpanHolder | ParseSourceSpan): Span|undefined {\n if (!span) return undefined;\n if (isParseSourceSpan(span)) {\n return {start: span.start.offset, end: span.end.offset};\n } else {\n if (span.endSourceSpan) {\n return {start: span.sourceSpan.start.offset, end: span.endSourceSpan.end.offset};\n } else if (span.children && span.children.length) {\n return {\n start: span.sourceSpan.start.offset,\n end: spanOf(span.children[span.children.length - 1]) !.end\n };\n }\n return {start: span.sourceSpan.start.offset, end: span.sourceSpan.end.offset};\n }\n}\n\nexport function inSpan(position: number, span?: Span, exclusive?: boolean): boolean {\n return span != null && (exclusive ? position >= span.start && position < span.end :\n position >= span.start && position <= span.end);\n}\n\nexport function offsetSpan(span: Span, amount: number): Span {\n return {start: span.start + amount, end: span.end + amount};\n}\n\nexport function isNarrower(spanA: Span, spanB: Span): boolean {\n return spanA.start >= spanB.start && spanA.end <= spanB.end;\n}\n\nexport function hasTemplateReference(type: CompileTypeMetadata): boolean {\n if (type.diDeps) {\n for (let diDep of type.diDeps) {\n if (diDep.token && diDep.token.identifier &&\n identifierName(diDep.token !.identifier !) == 'TemplateRef')\n return true;\n }\n }\n return false;\n}\n\nexport function getSelectors(info: TemplateInfo): SelectorInfo {\n const map = new Map<CssSelector, CompileDirectiveSummary>();\n const selectors: CssSelector[] = flatten(info.directives.map(directive => {\n const selectors: CssSelector[] = CssSelector.parse(directive.selector !);\n selectors.forEach(selector => map.set(selector, directive));\n return selectors;\n }));\n return {selectors, map};\n}\n\nexport function flatten<T>(a: T[][]) {\n return (<T[]>[]).concat(...a);\n}\n\nexport function removeSuffix(value: string, suffix: string) {\n if (value.endsWith(suffix)) return value.substring(0, value.length - suffix.length);\n return value;\n}\n\nexport function uniqueByName < T extends {\n name: string;\n}\n> (elements: T[] | undefined): T[]|undefined {\n if (elements) {\n const result: T[] = [];\n const set = new Set<string>();\n for (const element of elements) {\n if (!set.has(element.name)) {\n set.add(element.name);\n result.push(element);\n }\n }\n return result;\n }\n}\n\nexport function isTypescriptVersion(low: string, high?: string) {\n const version = ts.version;\n\n if (version.substring(0, low.length) < low) return false;\n\n if (high && (version.substring(0, high.length) > high)) return false;\n\n return true;\n}\n\nexport function diagnosticInfoFromTemplateInfo(info: TemplateInfo): DiagnosticTemplateInfo {\n return {\n fileName: info.fileName,\n offset: info.template.span.start,\n query: info.template.query,\n members: info.template.members,\n htmlAst: info.htmlAst,\n templateAst: info.templateAst\n };\n}\n\nexport function findTemplateAstAt(\n ast: TemplateAst[], position: number, allowWidening: boolean = false): TemplateAstPath {\n const path: TemplateAst[] = [];\n const visitor = new class extends RecursiveTemplateAstVisitor {\n visit(ast: TemplateAst, context: any): any {\n let span = spanOf(ast);\n if (inSpan(position, span)) {\n const len = path.length;\n if (!len || allowWidening || isNarrower(span, spanOf(path[len - 1]))) {\n path.push(ast);\n }\n } else {\n // Returning a value here will result in the children being skipped.\n return true;\n }\n }\n\n visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any {\n return this.visitChildren(context, visit => {\n // Ignore reference, variable and providers\n visit(ast.attrs);\n visit(ast.directives);\n visit(ast.children);\n });\n }\n\n visitElement(ast: ElementAst, context: any): any {\n return this.visitChildren(context, visit => {\n // Ingnore providers\n visit(ast.attrs);\n visit(ast.inputs);\n visit(ast.outputs);\n visit(ast.references);\n visit(ast.directives);\n visit(ast.children);\n });\n }\n\n visitDirective(ast: DirectiveAst, context: any): any {\n // Ignore the host properties of a directive\n const result = this.visitChildren(context, visit => { visit(ast.inputs); });\n // We never care about the diretive itself, just its inputs.\n if (path[path.length - 1] == ast) {\n path.pop();\n }\n return result;\n }\n };\n\n templateVisitAll(visitor, ast);\n\n return new AstPath<TemplateAst>(path, position);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CompileDirectiveMetadata, CompileMetadataResolver, CompilePipeSummary, NgAnalyzedModules, StaticSymbol} from '@angular/compiler';\nimport {BuiltinType, DeclarationKind, Definition, PipeInfo, Pipes, Signature, Span, Symbol, SymbolDeclaration, SymbolQuery, SymbolTable} from '@angular/compiler-cli';\n\nexport {\n BuiltinType,\n DeclarationKind,\n Definition,\n PipeInfo,\n Pipes,\n Signature,\n Span,\n Symbol,\n SymbolDeclaration,\n SymbolQuery,\n SymbolTable\n};\n\n/**\n * The information `LanguageService` needs from the `LanguageServiceHost` to describe the content of\n * a template and the language context the template is in.\n *\n * A host interface; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport interface TemplateSource {\n /**\n * The source of the template.\n */\n readonly source: string;\n\n /**\n * The version of the source. As files are modified the version should change. That is, if the\n * `LanguageService` requesting template infomration for a source file and that file has changed\n * since the last time the host was asked for the file then this version string should be\n * different. No assumptions are made about the format of this string.\n *\n * The version can change more often than the source but should not change less often.\n */\n readonly version: string;\n\n /**\n * The span of the template within the source file.\n */\n readonly span: Span;\n\n /**\n * A static symbol for the template's component.\n */\n readonly type: StaticSymbol;\n\n /**\n * The `SymbolTable` for the members of the component.\n */\n readonly members: SymbolTable;\n\n /**\n * A `SymbolQuery` for the context of the template.\n */\n readonly query: SymbolQuery;\n}\n\n/**\n * A sequence of template sources.\n *\n * A host type; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport type TemplateSources = TemplateSource[] | undefined;\n\n\n/**\n * Error information found getting declaration information\n *\n * A host type; see `LanagueServiceHost`.\n *\n * @experimental\n */\nexport interface DeclarationError {\n /**\n * The span of the error in the declaration's module.\n */\n readonly span: Span;\n\n /**\n * The message to display describing the error.\n */\n readonly message: string;\n}\n\n/**\n * Information about the component declarations.\n *\n * A file might contain a declaration without a template because the file contains only\n * templateUrl references. However, the compoennt declaration might contain errors that\n * need to be reported such as the template string is missing or the component is not\n * declared in a module. These error should be reported on the declaration, not the\n * template.\n *\n * A host type; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport interface Declaration {\n /**\n * The static symbol of the compponent being declared.\n */\n readonly type: StaticSymbol;\n\n /**\n * The span of the declaration annotation reference (e.g. the 'Component' or 'Directive'\n * reference).\n */\n readonly declarationSpan: Span;\n\n /**\n * Reference to the compiler directive metadata for the declaration.\n */\n readonly metadata?: CompileDirectiveMetadata;\n\n /**\n * Error reported trying to get the metadata.\n */\n readonly errors: DeclarationError[];\n}\n\n/**\n * A sequence of declarations.\n *\n * A host type; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport type Declarations = Declaration[];\n\n/**\n * The host for a `LanguageService`. This provides all the `LanguageService` requires to respond\n * to\n * the `LanguageService` requests.\n *\n * This interface describes the requirements of the `LanguageService` on its host.\n *\n * The host interface is host language agnostic.\n *\n * Adding optional member to this interface or any interface that is described as a\n * `LanguageServiceHost` interface is not considered a breaking change as defined by SemVer.\n * Removing a method or changing a member from required to optional will also not be considered a\n * breaking change.\n *\n * If a member is deprecated it will be changed to optional in a minor release before it is\n * removed in a major release.\n *\n * Adding a required member or changing a method's parameters, is considered a breaking change and\n * will only be done when breaking changes are allowed. When possible, a new optional member will\n * be added and the old member will be deprecated. The new member will then be made required in\n * and the old member will be removed only when breaking chnages are allowed.\n *\n * While an interface is marked as experimental breaking-changes will be allowed between minor\n * releases. After an interface is marked as stable breaking-changes will only be allowed between\n * major releases. No breaking changes are allowed between patch releases.\n *\n * @experimental\n */\nexport interface LanguageServiceHost {\n /**\n * The resolver to use to find compiler metadata.\n */\n readonly resolver: CompileMetadataResolver;\n\n /**\n * Returns the template information for templates in `fileName` at the given location. If\n * `fileName` refers to a template file then the `position` should be ignored. If the `position`\n * is not in a template literal string then this method should return `undefined`.\n */\n getTemplateAt(fileName: string, position: number): TemplateSource|undefined;\n\n /**\n * Return the template source information for all templates in `fileName` or for `fileName` if\n * it\n * is a template file.\n */\n getTemplates(fileName: string): TemplateSources;\n\n /**\n * Returns the Angular declarations in the given file.\n */\n getDeclarations(fileName: string): Declarations;\n\n /**\n * Return a summary of all Angular modules in the project.\n */\n getAnalyzedModules(): NgAnalyzedModules;\n\n /**\n * Return a list all the template files referenced by the project.\n */\n getTemplateReferences(): string[];\n}\n\n/**\n * An item of the completion result to be displayed by an editor.\n *\n * A `LanguageService` interface.\n *\n * @experimental\n */\nexport interface Completion {\n /**\n * The kind of comletion.\n */\n kind: DeclarationKind;\n\n /**\n * The name of the completion to be displayed\n */\n name: string;\n\n /**\n * The key to use to sort the completions for display.\n */\n sort: string;\n}\n\n/**\n * A sequence of completions.\n *\n * @experimental\n */\nexport type Completions = Completion[] | undefined;\n\n/**\n * A file and span.\n */\nexport interface Location {\n fileName: string;\n span: Span;\n}\n\n/**\n * The kind of diagnostic message.\n *\n * @experimental\n */\nexport enum DiagnosticKind {\n Error,\n Warning,\n}\n\n/**\n * An template diagnostic message to display.\n *\n * @experimental\n */\nexport interface Diagnostic {\n /**\n * The kind of diagnostic message\n */\n kind: DiagnosticKind;\n\n /**\n * The source span that should be highlighted.\n */\n span: Span;\n\n /**\n * The text of the diagnostic message to display.\n */\n message: string;\n}\n\n/**\n * A sequence of diagnostic message.\n *\n * @experimental\n */\nexport type Diagnostics = Diagnostic[];\n\n/**\n * A section of hover text. If the text is code then langauge should be provided.\n * Otherwise the text is assumed to be Markdown text that will be sanitized.\n */\nexport interface HoverTextSection {\n /**\n * Source code or markdown text describing the symbol a the hover location.\n */\n readonly text: string;\n\n /**\n * The langauge of the source if `text` is a souce code fragment.\n */\n readonly language?: string;\n}\n\n/**\n * Hover infomration for a symbol at the hover location.\n */\nexport interface Hover {\n /**\n * The hover text to display for the symbol at the hover location. If the text includes\n * source code, the section will specify which langauge it should be interpreted as.\n */\n readonly text: HoverTextSection[];\n\n /**\n * The span of source the hover covers.\n */\n readonly span: Span;\n}\n\n/**\n * An instance of an Angular language service created by `createLanguageService()`.\n *\n * The language service returns information about Angular templates that are included in a project\n * as defined by the `LanguageServiceHost`.\n *\n * When a method expects a `fileName` this file can either be source file in the project that\n * contains a template in a string literal or a template file referenced by the project returned\n * by `getTemplateReference()`. All other files will cause the method to return `undefined`.\n *\n * If a method takes a `position`, it is the offset of the UTF-16 code-point relative to the\n * beginning of the file reference by `fileName`.\n *\n * This interface and all interfaces and types marked as `LanguageService` types, describe a\n * particlar implementation of the Angular language service and is not intented to be\n * implemented. Adding members to the interface will not be considered a breaking change as\n * defined by SemVer.\n *\n * Removing a member or making a member optional, changing a method parameters, or changing a\n * member's type will all be considered a breaking change.\n *\n * While an interface is marked as experimental breaking-changes will be allowed between minor\n * releases. After an interface is marked as stable breaking-changes will only be allowed between\n * major releases. No breaking changes are allowed between patch releases.\n *\n * @experimental\n */\nexport interface LanguageService {\n /**\n * Returns a list of all the external templates referenced by the project.\n */\n getTemplateReferences(): string[]|undefined;\n\n /**\n * Returns a list of all error for all templates in the given file.\n */\n getDiagnostics(fileName: string): Diagnostics|undefined;\n\n /**\n * Return the completions at the given position.\n */\n getCompletionsAt(fileName: string, position: number): Completions|undefined;\n\n /**\n * Return the definition location for the symbol at position.\n */\n getDefinitionAt(fileName: string, position: number): Definition|undefined;\n\n /**\n * Return the hover information for the symbol at position.\n */\n getHoverAt(fileName: string, position: number): Hover|undefined;\n\n /**\n * Return the pipes that are available at the given position.\n */\n getPipesAt(fileName: string, position: number): CompilePipeSummary[];\n}\n"],"names":["ts.DiagnosticCategory","ts.forEachChild","ts.SyntaxKind","ts.getPositionOfLineAndCharacter","spanOf","path.dirname","fs.existsSync","path.join","version","Console","__extends","path","getExpressionScope","AstPathBase"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"language-service.js","sources":["../../../../packages/language-service/index.ts","../../../../packages/language-service/src/version.ts","../../../../packages/language-service/src/ts_plugin.ts","../../../../packages/language-service/src/typescript_host.ts","../../../../packages/language-service/src/reflector_host.ts","../../../../packages/language-service/src/language_service.ts","../../../../packages/language-service/src/hover.ts","../../../../packages/language-service/src/diagnostics.ts","../../../../packages/language-service/src/definitions.ts","../../../../packages/language-service/src/locate_symbol.ts","../../../../packages/language-service/src/completions.ts","../../../../packages/language-service/src/html_info.ts","../../../../packages/language-service/src/expressions.ts","../../../../packages/language-service/src/utils.ts","../../../../packages/language-service/src/types.ts"],"sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the language service package.\n */\nexport {createLanguageService} from './src/language_service';\nexport * from './src/ts_plugin';\nexport {Completion, Completions, Declaration, Declarations, Definition, Diagnostic, Diagnostics, Hover, HoverTextSection, LanguageService, LanguageServiceHost, Location, Span, TemplateSource, TemplateSources} from './src/types';\nexport {TypeScriptServiceHost, createLanguageServiceFromTypescript} from './src/typescript_host';\nexport {VERSION} from './src/version';\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/core';\n/**\n * @stable\n */\nexport const VERSION = new Version('4.4.4');\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as ts from 'typescript';\n\nimport {createLanguageService} from './language_service';\nimport {Completion, Diagnostic, LanguageService, LanguageServiceHost} from './types';\nimport {TypeScriptServiceHost} from './typescript_host';\n\nconst projectHostMap = new WeakMap<any, TypeScriptServiceHost>();\n\nexport function getExternalFiles(project: any): string[]|undefined {\n const host = projectHostMap.get(project);\n if (host) {\n return host.getTemplateReferences();\n }\n}\n\nconst angularOnlyResults = process.argv.indexOf('--angularOnlyResults') >= 0;\n\nfunction angularOnlyFilter(ls: ts.LanguageService): ts.LanguageService {\n return {\n cleanupSemanticCache: () => ls.cleanupSemanticCache(),\n getSyntacticDiagnostics: fileName => <ts.Diagnostic[]>[],\n getSemanticDiagnostics: fileName => <ts.Diagnostic[]>[],\n getCompilerOptionsDiagnostics: () => <ts.Diagnostic[]>[],\n getSyntacticClassifications: (fileName, span) => [],\n getSemanticClassifications: (fileName, span) => [],\n getEncodedSyntacticClassifications: (fileName, span) => <ts.Classifications><any>{undefined},\n getEncodedSemanticClassifications: (fileName, span) => <ts.Classifications><any>undefined,\n getCompletionsAtPosition: (fileName, position) => <ts.CompletionInfo><any>undefined,\n getCompletionEntryDetails: (fileName, position, entryName) =>\n <ts.CompletionEntryDetails><any>undefined,\n getCompletionEntrySymbol: (fileName, position, entryName) => <ts.Symbol><any>undefined,\n getQuickInfoAtPosition: (fileName, position) => <ts.QuickInfo><any>undefined,\n getNameOrDottedNameSpan: (fileName, startPos, endPos) => <ts.TextSpan><any>undefined,\n getBreakpointStatementAtPosition: (fileName, position) => <ts.TextSpan><any>undefined,\n getSignatureHelpItems: (fileName, position) => <ts.SignatureHelpItems><any>undefined,\n getRenameInfo: (fileName, position) => <ts.RenameInfo><any>undefined,\n findRenameLocations: (fileName, position, findInStrings, findInComments) =>\n <ts.RenameLocation[]>[],\n getDefinitionAtPosition: (fileName, position) => <ts.DefinitionInfo[]>[],\n getTypeDefinitionAtPosition: (fileName, position) => <ts.DefinitionInfo[]>[],\n getImplementationAtPosition: (fileName, position) => <ts.ImplementationLocation[]>[],\n getReferencesAtPosition: (fileName: string, position: number) => <ts.ReferenceEntry[]>[],\n findReferences: (fileName: string, position: number) => <ts.ReferencedSymbol[]>[],\n getDocumentHighlights: (fileName, position, filesToSearch) => <ts.DocumentHighlights[]>[],\n /** @deprecated */\n getOccurrencesAtPosition: (fileName, position) => <ts.ReferenceEntry[]>[],\n getNavigateToItems: searchValue => <ts.NavigateToItem[]>[],\n getNavigationBarItems: fileName => <ts.NavigationBarItem[]>[],\n getNavigationTree: fileName => <ts.NavigationTree><any>undefined,\n getOutliningSpans: fileName => <ts.OutliningSpan[]>[],\n getTodoComments: (fileName, descriptors) => <ts.TodoComment[]>[],\n getBraceMatchingAtPosition: (fileName, position) => <ts.TextSpan[]>[],\n getIndentationAtPosition: (fileName, position, options) => <number><any>undefined,\n getFormattingEditsForRange: (fileName, start, end, options) => <ts.TextChange[]>[],\n getFormattingEditsForDocument: (fileName, options) => <ts.TextChange[]>[],\n getFormattingEditsAfterKeystroke: (fileName, position, key, options) => <ts.TextChange[]>[],\n getDocCommentTemplateAtPosition: (fileName, position) => <ts.TextInsertion><any>undefined,\n isValidBraceCompletionAtPosition: (fileName, position, openingBrace) => <boolean><any>undefined,\n getCodeFixesAtPosition: (fileName, start, end, errorCodes) => <ts.CodeAction[]>[],\n getEmitOutput: fileName => <ts.EmitOutput><any>undefined,\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose()\n };\n}\n\nexport function create(info: any /* ts.server.PluginCreateInfo */): ts.LanguageService {\n // Create the proxy\n const proxy: ts.LanguageService = Object.create(null);\n let oldLS: ts.LanguageService = info.languageService;\n\n if (angularOnlyResults) {\n oldLS = angularOnlyFilter(oldLS);\n }\n\n function tryCall<T>(fileName: string | undefined, callback: () => T): T {\n if (fileName && !oldLS.getProgram().getSourceFile(fileName)) {\n return undefined as any as T;\n }\n try {\n return callback();\n } catch (e) {\n return undefined as any as T;\n }\n }\n\n function tryFilenameCall<T>(m: (fileName: string) => T): (fileName: string) => T {\n return fileName => tryCall(fileName, () => <T>(m.call(ls, fileName)));\n }\n\n function tryFilenameOneCall<T, P>(m: (fileName: string, p: P) => T): (filename: string, p: P) =>\n T {\n return (fileName, p) => tryCall(fileName, () => <T>(m.call(ls, fileName, p)));\n }\n\n function tryFilenameTwoCall<T, P1, P2>(m: (fileName: string, p1: P1, p2: P2) => T): (\n filename: string, p1: P1, p2: P2) => T {\n return (fileName, p1, p2) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2)));\n }\n\n function tryFilenameThreeCall<T, P1, P2, P3>(m: (fileName: string, p1: P1, p2: P2, p3: P3) => T):\n (filename: string, p1: P1, p2: P2, p3: P3) => T {\n return (fileName, p1, p2, p3) => tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3)));\n }\n\n function tryFilenameFourCall<T, P1, P2, P3, P4>(\n m: (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) =>\n T): (fileName: string, p1: P1, p2: P2, p3: P3, p4: P4) => T {\n return (fileName, p1, p2, p3, p4) =>\n tryCall(fileName, () => <T>(m.call(ls, fileName, p1, p2, p3, p4)));\n }\n\n function typescriptOnly(ls: ts.LanguageService): ts.LanguageService {\n return {\n cleanupSemanticCache: () => ls.cleanupSemanticCache(),\n getSyntacticDiagnostics: tryFilenameCall(ls.getSyntacticDiagnostics),\n getSemanticDiagnostics: tryFilenameCall(ls.getSemanticDiagnostics),\n getCompilerOptionsDiagnostics: () => ls.getCompilerOptionsDiagnostics(),\n getSyntacticClassifications: tryFilenameOneCall(ls.getSemanticClassifications),\n getSemanticClassifications: tryFilenameOneCall(ls.getSemanticClassifications),\n getEncodedSyntacticClassifications: tryFilenameOneCall(ls.getEncodedSyntacticClassifications),\n getEncodedSemanticClassifications: tryFilenameOneCall(ls.getEncodedSemanticClassifications),\n getCompletionsAtPosition: tryFilenameOneCall(ls.getCompletionsAtPosition),\n getCompletionEntryDetails: tryFilenameTwoCall(ls.getCompletionEntryDetails),\n getCompletionEntrySymbol: tryFilenameTwoCall(ls.getCompletionEntrySymbol),\n getQuickInfoAtPosition: tryFilenameOneCall(ls.getQuickInfoAtPosition),\n getNameOrDottedNameSpan: tryFilenameTwoCall(ls.getNameOrDottedNameSpan),\n getBreakpointStatementAtPosition: tryFilenameOneCall(ls.getBreakpointStatementAtPosition),\n getSignatureHelpItems: tryFilenameOneCall(ls.getSignatureHelpItems),\n getRenameInfo: tryFilenameOneCall(ls.getRenameInfo),\n findRenameLocations: tryFilenameThreeCall(ls.findRenameLocations),\n getDefinitionAtPosition: tryFilenameOneCall(ls.getDefinitionAtPosition),\n getTypeDefinitionAtPosition: tryFilenameOneCall(ls.getTypeDefinitionAtPosition),\n getImplementationAtPosition: tryFilenameOneCall(ls.getImplementationAtPosition),\n getReferencesAtPosition: tryFilenameOneCall(ls.getReferencesAtPosition),\n findReferences: tryFilenameOneCall(ls.findReferences),\n getDocumentHighlights: tryFilenameTwoCall(ls.getDocumentHighlights),\n /** @deprecated */\n getOccurrencesAtPosition: tryFilenameOneCall(ls.getOccurrencesAtPosition),\n getNavigateToItems:\n (searchValue, maxResultCount, fileName, excludeDtsFiles) => tryCall(\n fileName,\n () => ls.getNavigateToItems(searchValue, maxResultCount, fileName, excludeDtsFiles)),\n getNavigationBarItems: tryFilenameCall(ls.getNavigationBarItems),\n getNavigationTree: tryFilenameCall(ls.getNavigationTree),\n getOutliningSpans: tryFilenameCall(ls.getOutliningSpans),\n getTodoComments: tryFilenameOneCall(ls.getTodoComments),\n getBraceMatchingAtPosition: tryFilenameOneCall(ls.getBraceMatchingAtPosition),\n getIndentationAtPosition: tryFilenameTwoCall(ls.getIndentationAtPosition),\n getFormattingEditsForRange: tryFilenameThreeCall(ls.getFormattingEditsForRange),\n getFormattingEditsForDocument: tryFilenameOneCall(ls.getFormattingEditsForDocument),\n getFormattingEditsAfterKeystroke: tryFilenameThreeCall(ls.getFormattingEditsAfterKeystroke),\n getDocCommentTemplateAtPosition: tryFilenameOneCall(ls.getDocCommentTemplateAtPosition),\n isValidBraceCompletionAtPosition: tryFilenameTwoCall(ls.isValidBraceCompletionAtPosition),\n getCodeFixesAtPosition: tryFilenameFourCall(ls.getCodeFixesAtPosition),\n getEmitOutput: tryFilenameCall(ls.getEmitOutput),\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose()\n };\n }\n\n oldLS = typescriptOnly(oldLS);\n\n for (const k in oldLS) {\n (<any>proxy)[k] = function() { return (oldLS as any)[k].apply(oldLS, arguments); };\n }\n\n function completionToEntry(c: Completion): ts.CompletionEntry {\n return {kind: c.kind, name: c.name, sortText: c.sort, kindModifiers: ''};\n }\n\n function diagnosticToDiagnostic(d: Diagnostic, file: ts.SourceFile): ts.Diagnostic {\n const result = {\n file,\n start: d.span.start,\n length: d.span.end - d.span.start,\n messageText: d.message,\n category: ts.DiagnosticCategory.Error,\n code: 0,\n source: 'ng'\n };\n return result;\n }\n\n function tryOperation<T>(attempting: string, callback: () => T): T|null {\n try {\n return callback();\n } catch (e) {\n info.project.projectService.logger.info(`Failed to ${attempting}: ${e.toString()}`);\n info.project.projectService.logger.info(`Stack trace: ${e.stack}`);\n return null;\n }\n }\n\n const serviceHost = new TypeScriptServiceHost(info.languageServiceHost, info.languageService);\n const ls = createLanguageService(serviceHost as any);\n serviceHost.setSite(ls);\n projectHostMap.set(info.project, serviceHost);\n\n proxy.getCompletionsAtPosition = function(fileName: string, position: number) {\n let base = oldLS.getCompletionsAtPosition(fileName, position) || {\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: false,\n entries: []\n };\n tryOperation('get completions', () => {\n const results = ls.getCompletionsAt(fileName, position);\n if (results && results.length) {\n if (base === undefined) {\n base = {\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: false,\n entries: []\n };\n }\n for (const entry of results) {\n base.entries.push(completionToEntry(entry));\n }\n }\n });\n return base;\n };\n\n proxy.getQuickInfoAtPosition = function(fileName: string, position: number): ts.QuickInfo {\n let base = oldLS.getQuickInfoAtPosition(fileName, position);\n // TODO(vicb): the tags property has been removed in TS 2.2\n tryOperation('get quick info', () => {\n const ours = ls.getHoverAt(fileName, position);\n if (ours) {\n const displayParts: ts.SymbolDisplayPart[] = [];\n for (const part of ours.text) {\n displayParts.push({kind: part.language || 'angular', text: part.text});\n }\n const tags = base && (<any>base).tags;\n base = <any>{\n displayParts,\n documentation: [],\n kind: 'angular',\n kindModifiers: 'what does this do?',\n textSpan: {start: ours.span.start, length: ours.span.end - ours.span.start},\n };\n if (tags) {\n (<any>base).tags = tags;\n }\n }\n });\n\n return base;\n };\n\n proxy.getSemanticDiagnostics = function(fileName: string) {\n let result = oldLS.getSemanticDiagnostics(fileName);\n const base = result || [];\n tryOperation('get diagnostics', () => {\n info.project.projectService.logger.info(`Computing Angular semantic diagnostics...`);\n const ours = ls.getDiagnostics(fileName);\n if (ours && ours.length) {\n const file = oldLS.getProgram().getSourceFile(fileName);\n base.push.apply(base, ours.map(d => diagnosticToDiagnostic(d, file)));\n }\n });\n\n return base;\n };\n\n proxy.getDefinitionAtPosition = function(\n fileName: string, position: number): ts.DefinitionInfo[] {\n let base = oldLS.getDefinitionAtPosition(fileName, position);\n if (base && base.length) {\n return base;\n }\n\n return tryOperation('get definition', () => {\n const ours = ls.getDefinitionAt(fileName, position);\n if (ours && ours.length) {\n base = base || [];\n for (const loc of ours) {\n base.push({\n fileName: loc.fileName,\n textSpan: {start: loc.span.start, length: loc.span.end - loc.span.start},\n name: '',\n kind: 'definition',\n containerName: loc.fileName,\n containerKind: 'file'\n });\n }\n }\n return base;\n }) || [];\n };\n\n return proxy;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AotSummaryResolver, CompileMetadataResolver, CompilerConfig, DEFAULT_INTERPOLATION_CONFIG, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, HtmlParser, InterpolationConfig, JitSummaryResolver, NgAnalyzedModules, NgModuleResolver, ParseTreeResult, PipeResolver, ResourceLoader, StaticReflector, StaticSymbol, StaticSymbolCache, StaticSymbolResolver, SummaryResolver, analyzeNgModules, createOfflineCompileUrlResolver, extractProgramSymbols} from '@angular/compiler';\nimport {AngularCompilerOptions, getClassMembersFromDeclaration, getPipesTable, getSymbolQuery} from '@angular/compiler-cli';\nimport {ViewEncapsulation, ɵConsole as Console} from '@angular/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\n\nimport {createLanguageService} from './language_service';\nimport {ReflectorHost} from './reflector_host';\nimport {BuiltinType, Declaration, DeclarationError, DeclarationKind, Declarations, Definition, LanguageService, LanguageServiceHost, PipeInfo, Pipes, Signature, Span, Symbol, SymbolDeclaration, SymbolQuery, SymbolTable, TemplateSource, TemplateSources} from './types';\nimport {isTypescriptVersion} from './utils';\n\n\n/**\n * Create a `LanguageServiceHost`\n */\nexport function createLanguageServiceFromTypescript(\n host: ts.LanguageServiceHost, service: ts.LanguageService): LanguageService {\n const ngHost = new TypeScriptServiceHost(host, service);\n const ngServer = createLanguageService(ngHost);\n ngHost.setSite(ngServer);\n return ngServer;\n}\n\n/**\n * The language service never needs the normalized versions of the metadata. To avoid parsing\n * the content and resolving references, return an empty file. This also allows normalizing\n * template that are syntatically incorrect which is required to provide completions in\n * syntactically incorrect templates.\n */\nexport class DummyHtmlParser extends HtmlParser {\n parse(\n source: string, url: string, parseExpansionForms: boolean = false,\n interpolationConfig: InterpolationConfig = DEFAULT_INTERPOLATION_CONFIG): ParseTreeResult {\n return new ParseTreeResult([], []);\n }\n}\n\n/**\n * Avoid loading resources in the language servcie by using a dummy loader.\n */\nexport class DummyResourceLoader extends ResourceLoader {\n get(url: string): Promise<string> { return Promise.resolve(''); }\n}\n\n/**\n * An implemntation of a `LanguageServiceHost` for a TypeScript project.\n *\n * The `TypeScriptServiceHost` implements the Angular `LanguageServiceHost` using\n * the TypeScript language services.\n *\n * @experimental\n */\nexport class TypeScriptServiceHost implements LanguageServiceHost {\n private _resolver: CompileMetadataResolver|null;\n private _staticSymbolCache = new StaticSymbolCache();\n private _summaryResolver: AotSummaryResolver;\n private _staticSymbolResolver: StaticSymbolResolver;\n private _reflector: StaticReflector|null;\n private _reflectorHost: ReflectorHost;\n private _checker: ts.TypeChecker|null;\n private _typeCache: Symbol[] = [];\n private context: string|undefined;\n private lastProgram: ts.Program|undefined;\n private modulesOutOfDate: boolean = true;\n private analyzedModules: NgAnalyzedModules|null;\n private service: LanguageService;\n private fileToComponent: Map<string, StaticSymbol>|null;\n private templateReferences: string[]|null;\n private collectedErrors: Map<string, any[]>|null;\n private fileVersions = new Map<string, string>();\n\n constructor(private host: ts.LanguageServiceHost, private tsService: ts.LanguageService) {}\n\n setSite(service: LanguageService) { this.service = service; }\n\n /**\n * Angular LanguageServiceHost implementation\n */\n get resolver(): CompileMetadataResolver {\n this.validate();\n let result = this._resolver;\n if (!result) {\n const moduleResolver = new NgModuleResolver(this.reflector);\n const directiveResolver = new DirectiveResolver(this.reflector);\n const pipeResolver = new PipeResolver(this.reflector);\n const elementSchemaRegistry = new DomElementSchemaRegistry();\n const resourceLoader = new DummyResourceLoader();\n const urlResolver = createOfflineCompileUrlResolver();\n const htmlParser = new DummyHtmlParser();\n // This tracks the CompileConfig in codegen.ts. Currently these options\n // are hard-coded.\n const config =\n new CompilerConfig({defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false});\n const directiveNormalizer =\n new DirectiveNormalizer(resourceLoader, urlResolver, htmlParser, config);\n\n result = this._resolver = new CompileMetadataResolver(\n config, moduleResolver, directiveResolver, pipeResolver, new JitSummaryResolver(),\n elementSchemaRegistry, directiveNormalizer, new Console(), this._staticSymbolCache,\n this.reflector, (error, type) => this.collectError(error, type && type.filePath));\n }\n return result;\n }\n\n getTemplateReferences(): string[] {\n this.ensureTemplateMap();\n return this.templateReferences || [];\n }\n\n getTemplateAt(fileName: string, position: number): TemplateSource|undefined {\n let sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.fileName;\n let node = this.findNode(sourceFile, position);\n if (node) {\n return this.getSourceFromNode(\n fileName, this.host.getScriptVersion(sourceFile.fileName), node);\n }\n } else {\n this.ensureTemplateMap();\n // TODO: Cannocalize the file?\n const componentType = this.fileToComponent !.get(fileName);\n if (componentType) {\n return this.getSourceFromType(\n fileName, this.host.getScriptVersion(fileName), componentType);\n }\n }\n return undefined;\n }\n\n getAnalyzedModules(): NgAnalyzedModules {\n this.validate();\n return this.ensureAnalyzedModules();\n }\n\n private ensureAnalyzedModules(): NgAnalyzedModules {\n let analyzedModules = this.analyzedModules;\n if (!analyzedModules) {\n const analyzeHost = {isSourceFile(filePath: string) { return true; }};\n const programSymbols = extractProgramSymbols(\n this.staticSymbolResolver, this.program.getSourceFiles().map(sf => sf.fileName),\n analyzeHost);\n\n analyzedModules = this.analyzedModules =\n analyzeNgModules(programSymbols, analyzeHost, this.resolver);\n }\n return analyzedModules;\n }\n\n getTemplates(fileName: string): TemplateSources {\n this.ensureTemplateMap();\n const componentType = this.fileToComponent !.get(fileName);\n if (componentType) {\n const templateSource = this.getTemplateAt(fileName, 0);\n if (templateSource) {\n return [templateSource];\n }\n } else {\n let version = this.host.getScriptVersion(fileName);\n let result: TemplateSource[] = [];\n\n // Find each template string in the file\n let visit = (child: ts.Node) => {\n let templateSource = this.getSourceFromNode(fileName, version, child);\n if (templateSource) {\n result.push(templateSource);\n } else {\n ts.forEachChild(child, visit);\n }\n };\n\n let sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = (sourceFile as any).path || sourceFile.fileName;\n ts.forEachChild(sourceFile, visit);\n }\n return result.length ? result : undefined;\n }\n }\n\n getDeclarations(fileName: string): Declarations {\n const result: Declarations = [];\n const sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n let visit = (child: ts.Node) => {\n let declaration = this.getDeclarationFromNode(sourceFile, child);\n if (declaration) {\n result.push(declaration);\n } else {\n ts.forEachChild(child, visit);\n }\n };\n ts.forEachChild(sourceFile, visit);\n }\n return result;\n }\n\n getSourceFile(fileName: string): ts.SourceFile {\n return this.tsService.getProgram().getSourceFile(fileName);\n }\n\n updateAnalyzedModules() {\n this.validate();\n if (this.modulesOutOfDate) {\n this.analyzedModules = null;\n this._reflector = null;\n this.templateReferences = null;\n this.fileToComponent = null;\n this.ensureAnalyzedModules();\n this.modulesOutOfDate = false;\n }\n }\n\n private get program() { return this.tsService.getProgram(); }\n\n private get checker() {\n let checker = this._checker;\n if (!checker) {\n checker = this._checker = this.program.getTypeChecker();\n }\n return checker;\n }\n\n private validate() {\n const program = this.program;\n if (this._staticSymbolResolver && this.lastProgram != program) {\n // Invalidate file that have changed in the static symbol resolver\n const invalidateFile = (fileName: string) =>\n this._staticSymbolResolver.invalidateFile(fileName);\n this.clearCaches();\n const seen = new Set<string>();\n for (let sourceFile of this.program.getSourceFiles()) {\n const fileName = sourceFile.fileName;\n seen.add(fileName);\n const version = this.host.getScriptVersion(fileName);\n const lastVersion = this.fileVersions.get(fileName);\n if (version != lastVersion) {\n this.fileVersions.set(fileName, version);\n invalidateFile(fileName);\n }\n }\n\n // Remove file versions that are no longer in the file and invalidate them.\n const missing = Array.from(this.fileVersions.keys()).filter(f => !seen.has(f));\n missing.forEach(f => this.fileVersions.delete(f));\n missing.forEach(invalidateFile);\n\n this.lastProgram = program;\n }\n }\n\n private clearCaches() {\n this._checker = null;\n this._typeCache = [];\n this._resolver = null;\n this.collectedErrors = null;\n this.modulesOutOfDate = true;\n }\n\n private ensureTemplateMap() {\n if (!this.fileToComponent || !this.templateReferences) {\n const fileToComponent = new Map<string, StaticSymbol>();\n const templateReference: string[] = [];\n const ngModuleSummary = this.getAnalyzedModules();\n const urlResolver = createOfflineCompileUrlResolver();\n for (const module of ngModuleSummary.ngModules) {\n for (const directive of module.declaredDirectives) {\n const {metadata} = this.resolver.getNonNormalizedDirectiveMetadata(directive.reference) !;\n if (metadata.isComponent && metadata.template && metadata.template.templateUrl) {\n const templateName = urlResolver.resolve(\n this.reflector.componentModuleUrl(directive.reference),\n metadata.template.templateUrl);\n fileToComponent.set(templateName, directive.reference);\n templateReference.push(templateName);\n }\n }\n }\n this.fileToComponent = fileToComponent;\n this.templateReferences = templateReference;\n }\n }\n\n private getSourceFromDeclaration(\n fileName: string, version: string, source: string, span: Span, type: StaticSymbol,\n declaration: ts.ClassDeclaration, node: ts.Node, sourceFile: ts.SourceFile): TemplateSource\n |undefined {\n let queryCache: SymbolQuery|undefined = undefined;\n const t = this;\n if (declaration) {\n return {\n version,\n source,\n span,\n type,\n get members() {\n return getClassMembersFromDeclaration(t.program, t.checker, sourceFile, declaration);\n },\n get query() {\n if (!queryCache) {\n const pipes = t.service.getPipesAt(fileName, node.getStart());\n queryCache = getSymbolQuery(\n t.program, t.checker, sourceFile,\n () => getPipesTable(sourceFile, t.program, t.checker, pipes));\n }\n return queryCache;\n }\n };\n }\n }\n\n private getSourceFromNode(fileName: string, version: string, node: ts.Node): TemplateSource\n |undefined {\n let result: TemplateSource|undefined = undefined;\n const t = this;\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n let [declaration, decorator] = this.getTemplateClassDeclFromNode(node);\n if (declaration && declaration.name) {\n const sourceFile = this.getSourceFile(fileName);\n return this.getSourceFromDeclaration(\n fileName, version, this.stringOf(node) || '', shrink(spanOf(node)),\n this.reflector.getStaticSymbol(sourceFile.fileName, declaration.name.text),\n declaration, node, sourceFile);\n }\n break;\n }\n return result;\n }\n\n private getSourceFromType(fileName: string, version: string, type: StaticSymbol): TemplateSource\n |undefined {\n let result: TemplateSource|undefined = undefined;\n const declaration = this.getTemplateClassFromStaticSymbol(type);\n if (declaration) {\n const snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n const source = snapshot.getText(0, snapshot.getLength());\n result = this.getSourceFromDeclaration(\n fileName, version, source, {start: 0, end: source.length}, type, declaration,\n declaration, declaration.getSourceFile());\n }\n }\n return result;\n }\n\n private get reflectorHost(): ReflectorHost {\n let result = this._reflectorHost;\n if (!result) {\n if (!this.context) {\n // Make up a context by finding the first script and using that as the base dir.\n this.context = this.host.getScriptFileNames()[0];\n }\n\n // Use the file context's directory as the base directory.\n // The host's getCurrentDirectory() is not reliable as it is always \"\" in\n // tsserver. We don't need the exact base directory, just one that contains\n // a source file.\n const source = this.tsService.getProgram().getSourceFile(this.context);\n if (!source) {\n throw new Error('Internal error: no context could be determined');\n }\n\n const tsConfigPath = findTsConfig(source.fileName);\n const basePath = path.dirname(tsConfigPath || this.context);\n const options: AngularCompilerOptions = {basePath, genDir: basePath};\n const compilerOptions = this.host.getCompilationSettings();\n if (compilerOptions && compilerOptions.baseUrl) {\n options.baseUrl = compilerOptions.baseUrl;\n }\n result = this._reflectorHost =\n new ReflectorHost(() => this.tsService.getProgram(), this.host, options);\n }\n return result;\n }\n\n private collectError(error: any, filePath: string|null) {\n if (filePath) {\n let errorMap = this.collectedErrors;\n if (!errorMap || !this.collectedErrors) {\n errorMap = this.collectedErrors = new Map();\n }\n let errors = errorMap.get(filePath);\n if (!errors) {\n errors = [];\n this.collectedErrors.set(filePath, errors);\n }\n errors.push(error);\n }\n }\n\n private get staticSymbolResolver(): StaticSymbolResolver {\n let result = this._staticSymbolResolver;\n if (!result) {\n this._summaryResolver = new AotSummaryResolver(\n {\n loadSummary(filePath: string) { return null; },\n isSourceFile(sourceFilePath: string) { return true; },\n getOutputFileName(sourceFilePath: string) { return sourceFilePath; }\n },\n this._staticSymbolCache);\n result = this._staticSymbolResolver = new StaticSymbolResolver(\n this.reflectorHost as any, this._staticSymbolCache, this._summaryResolver,\n (e, filePath) => this.collectError(e, filePath !));\n }\n return result;\n }\n\n private get reflector(): StaticReflector {\n let result = this._reflector;\n if (!result) {\n const ssr = this.staticSymbolResolver;\n result = this._reflector = new StaticReflector(\n this._summaryResolver, ssr, [], [], (e, filePath) => this.collectError(e, filePath !));\n }\n return result;\n }\n\n private getTemplateClassFromStaticSymbol(type: StaticSymbol): ts.ClassDeclaration|undefined {\n const source = this.getSourceFile(type.filePath);\n if (source) {\n const declarationNode = ts.forEachChild(source, child => {\n if (child.kind === ts.SyntaxKind.ClassDeclaration) {\n const classDeclaration = child as ts.ClassDeclaration;\n if (classDeclaration.name != null && classDeclaration.name.text === type.name) {\n return classDeclaration;\n }\n }\n });\n return declarationNode as ts.ClassDeclaration;\n }\n\n return undefined;\n }\n\n private static missingTemplate: [ts.ClassDeclaration | undefined, ts.Expression|undefined] =\n [undefined, undefined];\n\n /**\n * Given a template string node, see if it is an Angular template string, and if so return the\n * containing class.\n */\n private getTemplateClassDeclFromNode(currentToken: ts.Node):\n [ts.ClassDeclaration | undefined, ts.Expression|undefined] {\n // Verify we are in a 'template' property assignment, in an object literal, which is an call\n // arg, in a decorator\n let parentNode = currentToken.parent; // PropertyAssignment\n if (!parentNode) {\n return TypeScriptServiceHost.missingTemplate;\n }\n if (parentNode.kind !== ts.SyntaxKind.PropertyAssignment) {\n return TypeScriptServiceHost.missingTemplate;\n } else {\n // TODO: Is this different for a literal, i.e. a quoted property name like \"template\"?\n if ((parentNode as any).name.text !== 'template') {\n return TypeScriptServiceHost.missingTemplate;\n }\n }\n parentNode = parentNode.parent; // ObjectLiteralExpression\n if (!parentNode || parentNode.kind !== ts.SyntaxKind.ObjectLiteralExpression) {\n return TypeScriptServiceHost.missingTemplate;\n }\n\n parentNode = parentNode.parent; // CallExpression\n if (!parentNode || parentNode.kind !== ts.SyntaxKind.CallExpression) {\n return TypeScriptServiceHost.missingTemplate;\n }\n const callTarget = (<ts.CallExpression>parentNode).expression;\n\n let decorator = parentNode.parent; // Decorator\n if (!decorator || decorator.kind !== ts.SyntaxKind.Decorator) {\n return TypeScriptServiceHost.missingTemplate;\n }\n\n let declaration = <ts.ClassDeclaration>decorator.parent; // ClassDeclaration\n if (!declaration || declaration.kind !== ts.SyntaxKind.ClassDeclaration) {\n return TypeScriptServiceHost.missingTemplate;\n }\n return [declaration, callTarget];\n }\n\n private getCollectedErrors(defaultSpan: Span, sourceFile: ts.SourceFile): DeclarationError[] {\n const errors = (this.collectedErrors && this.collectedErrors.get(sourceFile.fileName));\n return (errors && errors.map((e: any) => {\n return {message: e.message, span: spanAt(sourceFile, e.line, e.column) || defaultSpan};\n })) ||\n [];\n }\n\n private getDeclarationFromNode(sourceFile: ts.SourceFile, node: ts.Node): Declaration|undefined {\n if (node.kind == ts.SyntaxKind.ClassDeclaration && node.decorators &&\n (node as ts.ClassDeclaration).name) {\n for (const decorator of node.decorators) {\n if (decorator.expression && decorator.expression.kind == ts.SyntaxKind.CallExpression) {\n const classDeclaration = node as ts.ClassDeclaration;\n if (classDeclaration.name) {\n const call = decorator.expression as ts.CallExpression;\n const target = call.expression;\n const type = this.checker.getTypeAtLocation(target);\n if (type) {\n const staticSymbol =\n this.reflector.getStaticSymbol(sourceFile.fileName, classDeclaration.name.text);\n try {\n if (this.resolver.isDirective(staticSymbol as any)) {\n const {metadata} =\n this.resolver.getNonNormalizedDirectiveMetadata(staticSymbol as any) !;\n const declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan,\n metadata,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n } catch (e) {\n if (e.message) {\n this.collectError(e, sourceFile.fileName);\n const declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n }\n }\n }\n }\n }\n }\n }\n\n private stringOf(node: ts.Node): string|undefined {\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n return (<ts.LiteralExpression>node).text;\n case ts.SyntaxKind.StringLiteral:\n return (<ts.StringLiteral>node).text;\n }\n }\n\n private findNode(sourceFile: ts.SourceFile, position: number): ts.Node|undefined {\n function find(node: ts.Node): ts.Node|undefined {\n if (position >= node.getStart() && position < node.getEnd()) {\n return ts.forEachChild(node, find) || node;\n }\n }\n\n return find(sourceFile);\n }\n}\n\n\nfunction findTsConfig(fileName: string): string|undefined {\n let dir = path.dirname(fileName);\n while (fs.existsSync(dir)) {\n const candidate = path.join(dir, 'tsconfig.json');\n if (fs.existsSync(candidate)) return candidate;\n const parentDir = path.dirname(dir);\n if (parentDir === dir) break;\n dir = parentDir;\n }\n}\n\nfunction spanOf(node: ts.Node): Span {\n return {start: node.getStart(), end: node.getEnd()};\n}\n\nfunction shrink(span: Span, offset?: number) {\n if (offset == null) offset = 1;\n return {start: span.start + offset, end: span.end - offset};\n}\n\nfunction spanAt(sourceFile: ts.SourceFile, line: number, column: number): Span|undefined {\n if (line != null && column != null) {\n const position = ts.getPositionOfLineAndCharacter(sourceFile, line, column);\n const findChild = function findChild(node: ts.Node): ts.Node | undefined {\n if (node.kind > ts.SyntaxKind.LastToken && node.pos <= position && node.end > position) {\n const betterNode = ts.forEachChild(node, findChild);\n return betterNode || node;\n }\n };\n\n const node = ts.forEachChild(sourceFile, findChild);\n if (node) {\n return {start: node.getStart(), end: node.getEnd()};\n }\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AngularCompilerOptions, AotCompilerHost, CompilerHost, ModuleResolutionHostAdapter} from '@angular/compiler-cli';\nimport * as ts from 'typescript';\n\nclass ReflectorModuleModuleResolutionHost implements ts.ModuleResolutionHost {\n constructor(private host: ts.LanguageServiceHost) {\n if (host.directoryExists)\n this.directoryExists = directoryName => this.host.directoryExists !(directoryName);\n }\n\n fileExists(fileName: string): boolean { return !!this.host.getScriptSnapshot(fileName); }\n\n readFile(fileName: string): string {\n let snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n return snapshot.getText(0, snapshot.getLength());\n }\n\n // Typescript readFile() declaration should be `readFile(fileName: string): string | undefined\n return undefined !;\n }\n\n directoryExists: (directoryName: string) => boolean;\n}\n\n// This reflector host's purpose is to first set verboseInvalidExpressions to true so the\n// reflector will collect errors instead of throwing, and second to all deferring the creation\n// of the program until it is actually needed.\nexport class ReflectorHost extends CompilerHost {\n constructor(\n private getProgram: () => ts.Program, serviceHost: ts.LanguageServiceHost,\n options: AngularCompilerOptions) {\n super(\n // The ancestor value for program is overridden below so passing null here is safe.\n /* program */ null !, options,\n new ModuleResolutionHostAdapter(new ReflectorModuleModuleResolutionHost(serviceHost)),\n {verboseInvalidExpression: true});\n }\n\n protected get program() { return this.getProgram(); }\n protected set program(value: ts.Program) {\n // Discard the result set by ancestor constructor\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CompileMetadataResolver, CompileNgModuleMetadata, CompilePipeSummary, CompilerConfig, DomElementSchemaRegistry, HtmlParser, I18NHtmlParser, Lexer, NgAnalyzedModules, Parser, TemplateParser} from '@angular/compiler';\n\nimport {AstResult, TemplateInfo} from './common';\nimport {getTemplateCompletions} from './completions';\nimport {getDefinition} from './definitions';\nimport {getDeclarationDiagnostics, getTemplateDiagnostics} from './diagnostics';\nimport {getHover} from './hover';\nimport {Completions, Definition, Diagnostic, DiagnosticKind, Diagnostics, Hover, LanguageService, LanguageServiceHost, Pipes, Span, TemplateSource} from './types';\n\n\n/**\n * Create an instance of an Angular `LanguageService`.\n *\n * @experimental\n */\nexport function createLanguageService(host: LanguageServiceHost): LanguageService {\n return new LanguageServiceImpl(host);\n}\n\nclass LanguageServiceImpl implements LanguageService {\n constructor(private host: LanguageServiceHost) {}\n\n private get metadataResolver(): CompileMetadataResolver { return this.host.resolver; }\n\n getTemplateReferences(): string[] { return this.host.getTemplateReferences(); }\n\n getDiagnostics(fileName: string): Diagnostics|undefined {\n let results: Diagnostics = [];\n let templates = this.host.getTemplates(fileName);\n if (templates && templates.length) {\n results.push(...getTemplateDiagnostics(fileName, this, templates));\n }\n\n let declarations = this.host.getDeclarations(fileName);\n if (declarations && declarations.length) {\n const summary = this.host.getAnalyzedModules();\n results.push(...getDeclarationDiagnostics(declarations, summary));\n }\n\n return uniqueBySpan(results);\n }\n\n getPipesAt(fileName: string, position: number): CompilePipeSummary[] {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return templateInfo.pipes;\n }\n return [];\n }\n\n getCompletionsAt(fileName: string, position: number): Completions {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getTemplateCompletions(templateInfo);\n }\n }\n\n getDefinitionAt(fileName: string, position: number): Definition {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getDefinition(templateInfo);\n }\n }\n\n getHoverAt(fileName: string, position: number): Hover|undefined {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getHover(templateInfo);\n }\n }\n\n private getTemplateAstAtPosition(fileName: string, position: number): TemplateInfo|undefined {\n let template = this.host.getTemplateAt(fileName, position);\n if (template) {\n let astResult = this.getTemplateAst(template, fileName);\n if (astResult && astResult.htmlAst && astResult.templateAst && astResult.directive &&\n astResult.directives && astResult.pipes && astResult.expressionParser)\n return {\n position,\n fileName,\n template,\n htmlAst: astResult.htmlAst,\n directive: astResult.directive,\n directives: astResult.directives,\n pipes: astResult.pipes,\n templateAst: astResult.templateAst,\n expressionParser: astResult.expressionParser\n };\n }\n return undefined;\n }\n\n getTemplateAst(template: TemplateSource, contextFile: string): AstResult {\n let result: AstResult|undefined = undefined;\n try {\n const resolvedMetadata =\n this.metadataResolver.getNonNormalizedDirectiveMetadata(template.type as any);\n const metadata = resolvedMetadata && resolvedMetadata.metadata;\n if (metadata) {\n const rawHtmlParser = new HtmlParser();\n const htmlParser = new I18NHtmlParser(rawHtmlParser);\n const expressionParser = new Parser(new Lexer());\n const config = new CompilerConfig();\n const parser = new TemplateParser(\n config, this.host.resolver.getReflector(), expressionParser,\n new DomElementSchemaRegistry(), htmlParser, null !, []);\n const htmlResult = htmlParser.parse(template.source, '', true);\n const analyzedModules = this.host.getAnalyzedModules();\n let errors: Diagnostic[]|undefined = undefined;\n let ngModule = analyzedModules.ngModuleByPipeOrDirective.get(template.type);\n if (!ngModule) {\n // Reported by the the declaration diagnostics.\n ngModule = findSuitableDefaultModule(analyzedModules);\n }\n if (ngModule) {\n const resolvedDirectives = ngModule.transitiveModule.directives.map(\n d => this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference));\n const directives = removeMissing(resolvedDirectives).map(d => d.metadata.toSummary());\n const pipes = ngModule.transitiveModule.pipes.map(\n p => this.host.resolver.getOrLoadPipeMetadata(p.reference).toSummary());\n const schemas = ngModule.schemas;\n const parseResult = parser.tryParseHtml(htmlResult, metadata, directives, pipes, schemas);\n result = {\n htmlAst: htmlResult.rootNodes,\n templateAst: parseResult.templateAst,\n directive: metadata, directives, pipes,\n parseErrors: parseResult.errors, expressionParser, errors\n };\n }\n }\n } catch (e) {\n let span = template.span;\n if (e.fileName == contextFile) {\n span = template.query.getSpanAt(e.line, e.column) || span;\n }\n result = {errors: [{kind: DiagnosticKind.Error, message: e.message, span}]};\n }\n return result || {};\n }\n}\n\nfunction removeMissing<T>(values: (T | null | undefined)[]): T[] {\n return values.filter(e => !!e) as T[];\n}\n\nfunction uniqueBySpan < T extends {\n span: Span;\n}\n> (elements: T[] | undefined): T[]|undefined {\n if (elements) {\n const result: T[] = [];\n const map = new Map<number, Set<number>>();\n for (const element of elements) {\n let span = element.span;\n let set = map.get(span.start);\n if (!set) {\n set = new Set();\n map.set(span.start, set);\n }\n if (!set.has(span.end)) {\n set.add(span.end);\n result.push(element);\n }\n }\n return result;\n }\n}\n\nfunction findSuitableDefaultModule(modules: NgAnalyzedModules): CompileNgModuleMetadata|undefined {\n let result: CompileNgModuleMetadata|undefined = undefined;\n let resultSize = 0;\n for (const module of modules.ngModules) {\n const moduleSize = module.transitiveModule.directives.length;\n if (moduleSize > resultSize) {\n result = module;\n resultSize = moduleSize;\n }\n }\n return result;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {TemplateInfo} from './common';\nimport {locateSymbol} from './locate_symbol';\nimport {Hover, HoverTextSection, Symbol} from './types';\n\nexport function getHover(info: TemplateInfo): Hover|undefined {\n const result = locateSymbol(info);\n if (result) {\n return {text: hoverTextOf(result.symbol), span: result.span};\n }\n}\n\nfunction hoverTextOf(symbol: Symbol): HoverTextSection[] {\n const result: HoverTextSection[] =\n [{text: symbol.kind}, {text: ' '}, {text: symbol.name, language: symbol.language}];\n const container = symbol.container;\n if (container) {\n result.push({text: ' of '}, {text: container.name, language: container.language});\n }\n return result;\n}","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {NgAnalyzedModules, StaticSymbol} from '@angular/compiler';\nimport {DiagnosticTemplateInfo, getTemplateExpressionDiagnostics} from '@angular/compiler-cli';\n\nimport {AstResult} from './common';\nimport {Declarations, Diagnostic, DiagnosticKind, Diagnostics, Span, TemplateSource} from './types';\nimport {offsetSpan, spanOf} from './utils';\n\nexport interface AstProvider {\n getTemplateAst(template: TemplateSource, fileName: string): AstResult;\n}\n\nexport function getTemplateDiagnostics(\n fileName: string, astProvider: AstProvider, templates: TemplateSource[]): Diagnostics {\n const results: Diagnostics = [];\n for (const template of templates) {\n const ast = astProvider.getTemplateAst(template, fileName);\n if (ast) {\n if (ast.parseErrors && ast.parseErrors.length) {\n results.push(...ast.parseErrors.map<Diagnostic>(\n e => ({\n kind: DiagnosticKind.Error,\n span: offsetSpan(spanOf(e.span), template.span.start),\n message: e.msg\n })));\n } else if (ast.templateAst && ast.htmlAst) {\n const info: DiagnosticTemplateInfo = {\n templateAst: ast.templateAst,\n htmlAst: ast.htmlAst,\n offset: template.span.start,\n query: template.query,\n members: template.members\n };\n const expressionDiagnostics = getTemplateExpressionDiagnostics(info);\n results.push(...expressionDiagnostics);\n }\n if (ast.errors) {\n results.push(...ast.errors.map<Diagnostic>(\n e => ({kind: e.kind, span: e.span || template.span, message: e.message})));\n }\n }\n }\n return results;\n}\n\nexport function getDeclarationDiagnostics(\n declarations: Declarations, modules: NgAnalyzedModules): Diagnostics {\n const results: Diagnostics = [];\n\n let directives: Set<StaticSymbol>|undefined = undefined;\n for (const declaration of declarations) {\n const report = (message: string, span?: Span) => {\n results.push(<Diagnostic>{\n kind: DiagnosticKind.Error,\n span: span || declaration.declarationSpan, message\n });\n };\n for (const error of declaration.errors) {\n report(error.message, error.span);\n }\n if (declaration.metadata) {\n if (declaration.metadata.isComponent) {\n if (!modules.ngModuleByPipeOrDirective.has(declaration.type)) {\n report(\n `Component '${declaration.type.name}' is not included in a module and will not be available inside a template. Consider adding it to a NgModule declaration`);\n }\n if (!declaration.metadata.template !.template &&\n !declaration.metadata.template !.templateUrl) {\n report(`Component ${declaration.type.name} must have a template or templateUrl`);\n }\n } else {\n if (!directives) {\n directives = new Set();\n modules.ngModules.forEach(module => {\n module.declaredDirectives.forEach(\n directive => { directives !.add(directive.reference); });\n });\n }\n if (!directives.has(declaration.type)) {\n report(\n `Directive '${declaration.type.name}' is not included in a module and will not be available inside a template. Consider adding it to a NgModule declaration`);\n }\n }\n }\n }\n\n return results;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {TemplateInfo} from './common';\nimport {locateSymbol} from './locate_symbol';\nimport {Definition} from './types';\n\nexport function getDefinition(info: TemplateInfo): Definition {\n const result = locateSymbol(info);\n return result && result.symbol.definition;\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AST, Attribute, BoundDirectivePropertyAst, BoundEventAst, ElementAst, TemplateAst, TemplateAstPath, findNode, tokenReference} from '@angular/compiler';\nimport {getExpressionScope} from '@angular/compiler-cli';\n\nimport {TemplateInfo} from './common';\nimport {getExpressionSymbol} from './expressions';\nimport {Definition, Location, Span, Symbol, SymbolTable} from './types';\nimport {diagnosticInfoFromTemplateInfo, findTemplateAstAt, inSpan, offsetSpan, spanOf} from './utils';\n\nexport interface SymbolInfo {\n symbol: Symbol;\n span: Span;\n}\n\nexport function locateSymbol(info: TemplateInfo): SymbolInfo|undefined {\n if (!info.position) return undefined;\n const templatePosition = info.position - info.template.span.start;\n const path = findTemplateAstAt(info.templateAst, templatePosition);\n if (path.tail) {\n let symbol: Symbol|undefined = undefined;\n let span: Span|undefined = undefined;\n const attributeValueSymbol = (ast: AST, inEvent: boolean = false): boolean => {\n const attribute = findAttribute(info);\n if (attribute) {\n if (inSpan(templatePosition, spanOf(attribute.valueSpan))) {\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n const scope = getExpressionScope(dinfo, path, inEvent);\n if (attribute.valueSpan) {\n const expressionOffset = attribute.valueSpan.start.offset + 1;\n const result = getExpressionSymbol(\n scope, ast, templatePosition - expressionOffset, info.template.query);\n if (result) {\n symbol = result.symbol;\n span = offsetSpan(result.span, expressionOffset);\n }\n }\n return true;\n }\n }\n return false;\n };\n path.tail.visit(\n {\n visitNgContent(ast) {},\n visitEmbeddedTemplate(ast) {},\n visitElement(ast) {\n const component = ast.directives.find(d => d.directive.isComponent);\n if (component) {\n symbol = info.template.query.getTypeSymbol(component.directive.type.reference);\n symbol = symbol && new OverrideKindSymbol(symbol, 'component');\n span = spanOf(ast);\n } else {\n // Find a directive that matches the element name\n const directive = ast.directives.find(\n d => d.directive.selector != null && d.directive.selector.indexOf(ast.name) >= 0);\n if (directive) {\n symbol = info.template.query.getTypeSymbol(directive.directive.type.reference);\n symbol = symbol && new OverrideKindSymbol(symbol, 'directive');\n span = spanOf(ast);\n }\n }\n },\n visitReference(ast) {\n symbol = ast.value && info.template.query.getTypeSymbol(tokenReference(ast.value));\n span = spanOf(ast);\n },\n visitVariable(ast) {},\n visitEvent(ast) {\n if (!attributeValueSymbol(ast.handler, /* inEvent */ true)) {\n symbol = findOutputBinding(info, path, ast);\n symbol = symbol && new OverrideKindSymbol(symbol, 'event');\n span = spanOf(ast);\n }\n },\n visitElementProperty(ast) { attributeValueSymbol(ast.value); },\n visitAttr(ast) {},\n visitBoundText(ast) {\n const expressionPosition = templatePosition - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n const scope = getExpressionScope(dinfo, path, /* includeEvent */ false);\n const result =\n getExpressionSymbol(scope, ast.value, expressionPosition, info.template.query);\n if (result) {\n symbol = result.symbol;\n span = offsetSpan(result.span, ast.sourceSpan.start.offset);\n }\n }\n },\n visitText(ast) {},\n visitDirective(ast) {\n symbol = info.template.query.getTypeSymbol(ast.directive.type.reference);\n span = spanOf(ast);\n },\n visitDirectiveProperty(ast) {\n if (!attributeValueSymbol(ast.value)) {\n symbol = findInputBinding(info, path, ast);\n span = spanOf(ast);\n }\n }\n },\n null);\n if (symbol && span) {\n return {symbol, span: offsetSpan(span, info.template.span.start)};\n }\n }\n}\n\nfunction findAttribute(info: TemplateInfo): Attribute|undefined {\n if (info.position) {\n const templatePosition = info.position - info.template.span.start;\n const path = findNode(info.htmlAst, templatePosition);\n return path.first(Attribute);\n }\n}\n\nfunction findInputBinding(\n info: TemplateInfo, path: TemplateAstPath, binding: BoundDirectivePropertyAst): Symbol|\n undefined {\n const element = path.first(ElementAst);\n if (element) {\n for (const directive of element.directives) {\n const invertedInput = invertMap(directive.directive.inputs);\n const fieldName = invertedInput[binding.templateName];\n if (fieldName) {\n const classSymbol = info.template.query.getTypeSymbol(directive.directive.type.reference);\n if (classSymbol) {\n return classSymbol.members().get(fieldName);\n }\n }\n }\n }\n}\n\nfunction findOutputBinding(\n info: TemplateInfo, path: TemplateAstPath, binding: BoundEventAst): Symbol|undefined {\n const element = path.first(ElementAst);\n if (element) {\n for (const directive of element.directives) {\n const invertedOutputs = invertMap(directive.directive.outputs);\n const fieldName = invertedOutputs[binding.name];\n if (fieldName) {\n const classSymbol = info.template.query.getTypeSymbol(directive.directive.type.reference);\n if (classSymbol) {\n return classSymbol.members().get(fieldName);\n }\n }\n }\n }\n}\n\nfunction invertMap(obj: {[name: string]: string}): {[name: string]: string} {\n const result: {[name: string]: string} = {};\n for (const name of Object.keys(obj)) {\n const v = obj[name];\n result[v] = name;\n }\n return result;\n}\n\n/**\n * Wrap a symbol and change its kind to component.\n */\nclass OverrideKindSymbol implements Symbol {\n constructor(private sym: Symbol, private kindOverride: string) {}\n\n get name(): string { return this.sym.name; }\n\n get kind(): string { return this.kindOverride; }\n\n get language(): string { return this.sym.language; }\n\n get type(): Symbol|undefined { return this.sym.type; }\n\n get container(): Symbol|undefined { return this.sym.container; }\n\n get public(): boolean { return this.sym.public; }\n\n get callable(): boolean { return this.sym.callable; }\n\n get nullable(): boolean { return this.sym.nullable; }\n\n get definition(): Definition { return this.sym.definition; }\n\n members() { return this.sym.members(); }\n\n signatures() { return this.sym.signatures(); }\n\n selectSignature(types: Symbol[]) { return this.sym.selectSignature(types); }\n\n indexed(argument: Symbol) { return this.sym.indexed(argument); }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AST, AstPath, AttrAst, Attribute, BoundDirectivePropertyAst, BoundElementPropertyAst, BoundEventAst, BoundTextAst, CssSelector, DirectiveAst, Element, ElementAst, EmbeddedTemplateAst, ImplicitReceiver, NAMED_ENTITIES, NgContentAst, Node as HtmlAst, NullTemplateVisitor, ParseSpan, PropertyRead, ReferenceAst, SelectorMatcher, TagContentType, TemplateAst, TemplateAstVisitor, Text, TextAst, VariableAst, findNode, getHtmlTagDefinition, splitNsName, templateVisitAll} from '@angular/compiler';\nimport {DiagnosticTemplateInfo, getExpressionScope} from '@angular/compiler-cli';\n\nimport {AstResult, AttrInfo, SelectorInfo, TemplateInfo} from './common';\nimport {getExpressionCompletions} from './expressions';\nimport {attributeNames, elementNames, eventNames, propertyNames} from './html_info';\nimport {BuiltinType, Completion, Completions, Span, Symbol, SymbolDeclaration, SymbolTable, TemplateSource} from './types';\nimport {diagnosticInfoFromTemplateInfo, findTemplateAstAt, flatten, getSelectors, hasTemplateReference, inSpan, removeSuffix, spanOf, uniqueByName} from './utils';\n\nconst TEMPLATE_ATTR_PREFIX = '*';\n\nconst hiddenHtmlElements = {\n html: true,\n script: true,\n noscript: true,\n base: true,\n body: true,\n title: true,\n head: true,\n link: true,\n};\n\nexport function getTemplateCompletions(templateInfo: TemplateInfo): Completions|undefined {\n let result: Completions|undefined = undefined;\n let {htmlAst, templateAst, template} = templateInfo;\n // The templateNode starts at the delimiter character so we add 1 to skip it.\n if (templateInfo.position != null) {\n let templatePosition = templateInfo.position - template.span.start;\n let path = findNode(htmlAst, templatePosition);\n let mostSpecific = path.tail;\n if (path.empty || !mostSpecific) {\n result = elementCompletions(templateInfo, path);\n } else {\n let astPosition = templatePosition - mostSpecific.sourceSpan.start.offset;\n mostSpecific.visit(\n {\n visitElement(ast) {\n let startTagSpan = spanOf(ast.sourceSpan);\n let tagLen = ast.name.length;\n if (templatePosition <=\n startTagSpan.start + tagLen + 1 /* 1 for the opening angle bracked */) {\n // If we are in the tag then return the element completions.\n result = elementCompletions(templateInfo, path);\n } else if (templatePosition < startTagSpan.end) {\n // We are in the attribute section of the element (but not in an attribute).\n // Return the attribute completions.\n result = attributeCompletions(templateInfo, path);\n }\n },\n visitAttribute(ast) {\n if (!ast.valueSpan || !inSpan(templatePosition, spanOf(ast.valueSpan))) {\n // We are in the name of an attribute. Show attribute completions.\n result = attributeCompletions(templateInfo, path);\n } else if (ast.valueSpan && inSpan(templatePosition, spanOf(ast.valueSpan))) {\n result = attributeValueCompletions(templateInfo, templatePosition, ast);\n }\n },\n visitText(ast) {\n // Check if we are in a entity.\n result = entityCompletions(getSourceText(template, spanOf(ast)), astPosition);\n if (result) return result;\n result = interpolationCompletions(templateInfo, templatePosition);\n if (result) return result;\n let element = path.first(Element);\n if (element) {\n let definition = getHtmlTagDefinition(element.name);\n if (definition.contentType === TagContentType.PARSABLE_DATA) {\n result = voidElementAttributeCompletions(templateInfo, path);\n if (!result) {\n // If the element can hold content Show element completions.\n result = elementCompletions(templateInfo, path);\n }\n }\n } else {\n // If no element container, implies parsable data so show elements.\n result = voidElementAttributeCompletions(templateInfo, path);\n if (!result) {\n result = elementCompletions(templateInfo, path);\n }\n }\n },\n visitComment(ast) {},\n visitExpansion(ast) {},\n visitExpansionCase(ast) {}\n },\n null);\n }\n }\n return result;\n}\n\nfunction attributeCompletions(info: TemplateInfo, path: AstPath<HtmlAst>): Completions|undefined {\n let item = path.tail instanceof Element ? path.tail : path.parentOf(path.tail);\n if (item instanceof Element) {\n return attributeCompletionsForElement(info, item.name, item);\n }\n return undefined;\n}\n\nfunction attributeCompletionsForElement(\n info: TemplateInfo, elementName: string, element?: Element): Completions {\n const attributes = getAttributeInfosForElement(info, elementName, element);\n\n // Map all the attributes to a completion\n return attributes.map<Completion>(attr => ({\n kind: attr.fromHtml ? 'html attribute' : 'attribute',\n name: nameOfAttr(attr),\n sort: attr.name\n }));\n}\n\nfunction getAttributeInfosForElement(\n info: TemplateInfo, elementName: string, element?: Element): AttrInfo[] {\n let attributes: AttrInfo[] = [];\n\n // Add html attributes\n let htmlAttributes = attributeNames(elementName) || [];\n if (htmlAttributes) {\n attributes.push(...htmlAttributes.map<AttrInfo>(name => ({name, fromHtml: true})));\n }\n\n // Add html properties\n let htmlProperties = propertyNames(elementName);\n if (htmlProperties) {\n attributes.push(...htmlProperties.map<AttrInfo>(name => ({name, input: true})));\n }\n\n // Add html events\n let htmlEvents = eventNames(elementName);\n if (htmlEvents) {\n attributes.push(...htmlEvents.map<AttrInfo>(name => ({name, output: true})));\n }\n\n let {selectors, map: selectorMap} = getSelectors(info);\n if (selectors && selectors.length) {\n // All the attributes that are selectable should be shown.\n const applicableSelectors =\n selectors.filter(selector => !selector.element || selector.element == elementName);\n const selectorAndAttributeNames =\n applicableSelectors.map(selector => ({selector, attrs: selector.attrs.filter(a => !!a)}));\n let attrs = flatten(selectorAndAttributeNames.map<AttrInfo[]>(selectorAndAttr => {\n const directive = selectorMap.get(selectorAndAttr.selector) !;\n const result = selectorAndAttr.attrs.map<AttrInfo>(\n name => ({name, input: name in directive.inputs, output: name in directive.outputs}));\n return result;\n }));\n\n // Add template attribute if a directive contains a template reference\n selectorAndAttributeNames.forEach(selectorAndAttr => {\n const selector = selectorAndAttr.selector;\n const directive = selectorMap.get(selector);\n if (directive && hasTemplateReference(directive.type) && selector.attrs.length &&\n selector.attrs[0]) {\n attrs.push({name: selector.attrs[0], template: true});\n }\n });\n\n // All input and output properties of the matching directives should be added.\n let elementSelector = element ?\n createElementCssSelector(element) :\n createElementCssSelector(new Element(elementName, [], [], null !, null, null));\n\n let matcher = new SelectorMatcher();\n matcher.addSelectables(selectors);\n matcher.match(elementSelector, selector => {\n let directive = selectorMap.get(selector);\n if (directive) {\n attrs.push(...Object.keys(directive.inputs).map(name => ({name, input: true})));\n attrs.push(...Object.keys(directive.outputs).map(name => ({name, output: true})));\n }\n });\n\n // If a name shows up twice, fold it into a single value.\n attrs = foldAttrs(attrs);\n\n // Now expand them back out to ensure that input/output shows up as well as input and\n // output.\n attributes.push(...flatten(attrs.map(expandedAttr)));\n }\n return attributes;\n}\n\nfunction attributeValueCompletions(\n info: TemplateInfo, position: number, attr: Attribute): Completions|undefined {\n const path = findTemplateAstAt(info.templateAst, position);\n const mostSpecific = path.tail;\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n if (mostSpecific) {\n const visitor =\n new ExpressionVisitor(info, position, attr, () => getExpressionScope(dinfo, path, false));\n mostSpecific.visit(visitor, null);\n if (!visitor.result || !visitor.result.length) {\n // Try allwoing widening the path\n const widerPath = findTemplateAstAt(info.templateAst, position, /* allowWidening */ true);\n if (widerPath.tail) {\n const widerVisitor = new ExpressionVisitor(\n info, position, attr, () => getExpressionScope(dinfo, widerPath, false));\n widerPath.tail.visit(widerVisitor, null);\n return widerVisitor.result;\n }\n }\n return visitor.result;\n }\n}\n\nfunction elementCompletions(info: TemplateInfo, path: AstPath<HtmlAst>): Completions|undefined {\n let htmlNames = elementNames().filter(name => !(name in hiddenHtmlElements));\n\n // Collect the elements referenced by the selectors\n let directiveElements = getSelectors(info)\n .selectors.map(selector => selector.element)\n .filter(name => !!name) as string[];\n\n let components =\n directiveElements.map<Completion>(name => ({kind: 'component', name, sort: name}));\n let htmlElements = htmlNames.map<Completion>(name => ({kind: 'element', name: name, sort: name}));\n\n // Return components and html elements\n return uniqueByName(htmlElements.concat(components));\n}\n\nfunction entityCompletions(value: string, position: number): Completions|undefined {\n // Look for entity completions\n const re = /&[A-Za-z]*;?(?!\\d)/g;\n let found: RegExpExecArray|null;\n let result: Completions|undefined = undefined;\n while (found = re.exec(value)) {\n let len = found[0].length;\n if (position >= found.index && position < (found.index + len)) {\n result = Object.keys(NAMED_ENTITIES)\n .map<Completion>(name => ({kind: 'entity', name: `&${name};`, sort: name}));\n break;\n }\n }\n return result;\n}\n\nfunction interpolationCompletions(info: TemplateInfo, position: number): Completions|undefined {\n // Look for an interpolation in at the position.\n const templatePath = findTemplateAstAt(info.templateAst, position);\n const mostSpecific = templatePath.tail;\n if (mostSpecific) {\n let visitor = new ExpressionVisitor(\n info, position, undefined,\n () => getExpressionScope(diagnosticInfoFromTemplateInfo(info), templatePath, false));\n mostSpecific.visit(visitor, null);\n return uniqueByName(visitor.result);\n }\n}\n\n// There is a special case of HTML where text that contains a unclosed tag is treated as\n// text. For exaple '<h1> Some <a text </h1>' produces a text nodes inside of the H1\n// element \"Some <a text\". We, however, want to treat this as if the user was requesting\n// the attributes of an \"a\" element, not requesting completion in the a text element. This\n// code checks for this case and returns element completions if it is detected or undefined\n// if it is not.\nfunction voidElementAttributeCompletions(info: TemplateInfo, path: AstPath<HtmlAst>): Completions|\n undefined {\n let tail = path.tail;\n if (tail instanceof Text) {\n let match = tail.value.match(/<(\\w(\\w|\\d|-)*:)?(\\w(\\w|\\d|-)*)\\s/);\n // The position must be after the match, otherwise we are still in a place where elements\n // are expected (such as `<|a` or `<a|`; we only want attributes for `<a |` or after).\n if (match &&\n path.position >= (match.index || 0) + match[0].length + tail.sourceSpan.start.offset) {\n return attributeCompletionsForElement(info, match[3]);\n }\n }\n}\n\nclass ExpressionVisitor extends NullTemplateVisitor {\n private getExpressionScope: () => SymbolTable;\n result: Completions;\n\n constructor(\n private info: TemplateInfo, private position: number, private attr?: Attribute,\n getExpressionScope?: () => SymbolTable) {\n super();\n this.getExpressionScope = getExpressionScope || (() => info.template.members);\n }\n\n visitDirectiveProperty(ast: BoundDirectivePropertyAst): void {\n this.attributeValueCompletions(ast.value);\n }\n\n visitElementProperty(ast: BoundElementPropertyAst): void {\n this.attributeValueCompletions(ast.value);\n }\n\n visitEvent(ast: BoundEventAst): void { this.attributeValueCompletions(ast.handler); }\n\n visitElement(ast: ElementAst): void {\n if (this.attr && getSelectors(this.info) && this.attr.name.startsWith(TEMPLATE_ATTR_PREFIX)) {\n // The value is a template expression but the expression AST was not produced when the\n // TemplateAst was produce so\n // do that now.\n\n const key = this.attr.name.substr(TEMPLATE_ATTR_PREFIX.length);\n\n // Find the selector\n const selectorInfo = getSelectors(this.info);\n const selectors = selectorInfo.selectors;\n const selector =\n selectors.filter(s => s.attrs.some((attr, i) => i % 2 == 0 && attr == key))[0];\n\n const templateBindingResult =\n this.info.expressionParser.parseTemplateBindings(key, this.attr.value, null);\n\n // find the template binding that contains the position\n if (!this.attr.valueSpan) return;\n const valueRelativePosition = this.position - this.attr.valueSpan.start.offset - 1;\n const bindings = templateBindingResult.templateBindings;\n const binding =\n bindings.find(\n binding => inSpan(valueRelativePosition, binding.span, /* exclusive */ true)) ||\n bindings.find(binding => inSpan(valueRelativePosition, binding.span));\n\n const keyCompletions = () => {\n let keys: string[] = [];\n if (selector) {\n const attrNames = selector.attrs.filter((_, i) => i % 2 == 0);\n keys = attrNames.filter(name => name.startsWith(key) && name != key)\n .map(name => lowerName(name.substr(key.length)));\n }\n keys.push('let');\n this.result = keys.map(key => <Completion>{kind: 'key', name: key, sort: key});\n };\n\n if (!binding || (binding.key == key && !binding.expression)) {\n // We are in the root binding. We should return `let` and keys that are left in the\n // selector.\n keyCompletions();\n } else if (binding.keyIsVar) {\n const equalLocation = this.attr.value.indexOf('=');\n this.result = [];\n if (equalLocation >= 0 && valueRelativePosition >= equalLocation) {\n // We are after the '=' in a let clause. The valid values here are the members of the\n // template reference's type parameter.\n const directiveMetadata = selectorInfo.map.get(selector);\n if (directiveMetadata) {\n const contextTable =\n this.info.template.query.getTemplateContext(directiveMetadata.type.reference);\n if (contextTable) {\n this.result = this.symbolsToCompletions(contextTable.values());\n }\n }\n } else if (binding.key && valueRelativePosition <= (binding.key.length - key.length)) {\n keyCompletions();\n }\n } else {\n // If the position is in the expression or after the key or there is no key, return the\n // expression completions\n if ((binding.expression && inSpan(valueRelativePosition, binding.expression.ast.span)) ||\n (binding.key &&\n valueRelativePosition > binding.span.start + (binding.key.length - key.length)) ||\n !binding.key) {\n const span = new ParseSpan(0, this.attr.value.length);\n this.attributeValueCompletions(\n binding.expression ? binding.expression.ast :\n new PropertyRead(span, new ImplicitReceiver(span), ''),\n valueRelativePosition);\n } else {\n keyCompletions();\n }\n }\n }\n }\n\n visitBoundText(ast: BoundTextAst) {\n const expressionPosition = this.position - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n const completions = getExpressionCompletions(\n this.getExpressionScope(), ast.value, expressionPosition, this.info.template.query);\n if (completions) {\n this.result = this.symbolsToCompletions(completions);\n }\n }\n }\n\n private attributeValueCompletions(value: AST, position?: number) {\n const symbols = getExpressionCompletions(\n this.getExpressionScope(), value, position == null ? this.attributeValuePosition : position,\n this.info.template.query);\n if (symbols) {\n this.result = this.symbolsToCompletions(symbols);\n }\n }\n\n private symbolsToCompletions(symbols: Symbol[]): Completions {\n return symbols.filter(s => !s.name.startsWith('__') && s.public)\n .map(symbol => <Completion>{kind: symbol.kind, name: symbol.name, sort: symbol.name});\n }\n\n private get attributeValuePosition() {\n if (this.attr && this.attr.valueSpan) {\n return this.position - this.attr.valueSpan.start.offset - 1;\n }\n return 0;\n }\n}\n\nfunction getSourceText(template: TemplateSource, span: Span): string {\n return template.source.substring(span.start, span.end);\n}\n\nfunction nameOfAttr(attr: AttrInfo): string {\n let name = attr.name;\n if (attr.output) {\n name = removeSuffix(name, 'Events');\n name = removeSuffix(name, 'Changed');\n }\n let result = [name];\n if (attr.input) {\n result.unshift('[');\n result.push(']');\n }\n if (attr.output) {\n result.unshift('(');\n result.push(')');\n }\n if (attr.template) {\n result.unshift('*');\n }\n return result.join('');\n}\n\nconst templateAttr = /^(\\w+:)?(template$|^\\*)/;\nfunction createElementCssSelector(element: Element): CssSelector {\n const cssSelector = new CssSelector();\n let elNameNoNs = splitNsName(element.name)[1];\n\n cssSelector.setElement(elNameNoNs);\n\n for (let attr of element.attrs) {\n if (!attr.name.match(templateAttr)) {\n let [_, attrNameNoNs] = splitNsName(attr.name);\n cssSelector.addAttribute(attrNameNoNs, attr.value);\n if (attr.name.toLowerCase() == 'class') {\n const classes = attr.value.split(/s+/g);\n classes.forEach(className => cssSelector.addClassName(className));\n }\n }\n }\n return cssSelector;\n}\n\nfunction foldAttrs(attrs: AttrInfo[]): AttrInfo[] {\n let inputOutput = new Map<string, AttrInfo>();\n let templates = new Map<string, AttrInfo>();\n let result: AttrInfo[] = [];\n attrs.forEach(attr => {\n if (attr.fromHtml) {\n return attr;\n }\n if (attr.template) {\n let duplicate = templates.get(attr.name);\n if (!duplicate) {\n result.push({name: attr.name, template: true});\n templates.set(attr.name, attr);\n }\n }\n if (attr.input || attr.output) {\n let duplicate = inputOutput.get(attr.name);\n if (duplicate) {\n duplicate.input = duplicate.input || attr.input;\n duplicate.output = duplicate.output || attr.output;\n } else {\n let cloneAttr: AttrInfo = {name: attr.name};\n if (attr.input) cloneAttr.input = true;\n if (attr.output) cloneAttr.output = true;\n result.push(cloneAttr);\n inputOutput.set(attr.name, cloneAttr);\n }\n }\n });\n return result;\n}\n\nfunction expandedAttr(attr: AttrInfo): AttrInfo[] {\n if (attr.input && attr.output) {\n return [\n attr, {name: attr.name, input: true, output: false},\n {name: attr.name, input: false, output: true}\n ];\n }\n return [attr];\n}\n\nfunction lowerName(name: string): string {\n return name && (name[0].toLowerCase() + name.substr(1));\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n// Information about the HTML DOM elements\n\n// This section defines the HTML elements and attribute surface of HTML 4\n// which is derived from https://www.w3.org/TR/html4/strict.dtd\ntype attrType = string | string[];\ntype hash<T> = {\n [name: string]: T\n};\n\nconst values: attrType[] = [\n 'ID',\n 'CDATA',\n 'NAME',\n ['ltr', 'rtl'],\n ['rect', 'circle', 'poly', 'default'],\n 'NUMBER',\n ['nohref'],\n ['ismap'],\n ['declare'],\n ['DATA', 'REF', 'OBJECT'],\n ['GET', 'POST'],\n 'IDREF',\n ['TEXT', 'PASSWORD', 'CHECKBOX', 'RADIO', 'SUBMIT', 'RESET', 'FILE', 'HIDDEN', 'IMAGE', 'BUTTON'],\n ['checked'],\n ['disabled'],\n ['readonly'],\n ['multiple'],\n ['selected'],\n ['button', 'submit', 'reset'],\n ['void', 'above', 'below', 'hsides', 'lhs', 'rhs', 'vsides', 'box', 'border'],\n ['none', 'groups', 'rows', 'cols', 'all'],\n ['left', 'center', 'right', 'justify', 'char'],\n ['top', 'middle', 'bottom', 'baseline'],\n 'IDREFS',\n ['row', 'col', 'rowgroup', 'colgroup'],\n ['defer']\n];\n\nconst groups: hash<number>[] = [\n {id: 0},\n {\n onclick: 1,\n ondblclick: 1,\n onmousedown: 1,\n onmouseup: 1,\n onmouseover: 1,\n onmousemove: 1,\n onmouseout: 1,\n onkeypress: 1,\n onkeydown: 1,\n onkeyup: 1\n },\n {lang: 2, dir: 3},\n {onload: 1, onunload: 1},\n {name: 1},\n {href: 1},\n {type: 1},\n {alt: 1},\n {tabindex: 5},\n {media: 1},\n {nohref: 6},\n {usemap: 1},\n {src: 1},\n {onfocus: 1, onblur: 1},\n {charset: 1},\n {declare: 8, classid: 1, codebase: 1, data: 1, codetype: 1, archive: 1, standby: 1},\n {title: 1},\n {value: 1},\n {cite: 1},\n {datetime: 1},\n {accept: 1},\n {shape: 4, coords: 1},\n { for: 11\n },\n {action: 1, method: 10, enctype: 1, onsubmit: 1, onreset: 1, 'accept-charset': 1},\n {valuetype: 9},\n {longdesc: 1},\n {width: 1},\n {disabled: 14},\n {readonly: 15, onselect: 1},\n {accesskey: 1},\n {size: 5, multiple: 16},\n {onchange: 1},\n {label: 1},\n {selected: 17},\n {type: 12, checked: 13, size: 1, maxlength: 5},\n {rows: 5, cols: 5},\n {type: 18},\n {height: 1},\n {summary: 1, border: 1, frame: 19, rules: 20, cellspacing: 1, cellpadding: 1, datapagesize: 1},\n {align: 21, char: 1, charoff: 1, valign: 22},\n {span: 5},\n {abbr: 1, axis: 1, headers: 23, scope: 24, rowspan: 5, colspan: 5},\n {profile: 1},\n {'http-equiv': 2, name: 2, content: 1, scheme: 1},\n {class: 1, style: 1},\n {hreflang: 2, rel: 1, rev: 1},\n {ismap: 7},\n { defer: 25, event: 1, for : 1 }\n];\n\nconst elements: {[name: string]: number[]} = {\n TT: [0, 1, 2, 16, 44],\n I: [0, 1, 2, 16, 44],\n B: [0, 1, 2, 16, 44],\n BIG: [0, 1, 2, 16, 44],\n SMALL: [0, 1, 2, 16, 44],\n EM: [0, 1, 2, 16, 44],\n STRONG: [0, 1, 2, 16, 44],\n DFN: [0, 1, 2, 16, 44],\n CODE: [0, 1, 2, 16, 44],\n SAMP: [0, 1, 2, 16, 44],\n KBD: [0, 1, 2, 16, 44],\n VAR: [0, 1, 2, 16, 44],\n CITE: [0, 1, 2, 16, 44],\n ABBR: [0, 1, 2, 16, 44],\n ACRONYM: [0, 1, 2, 16, 44],\n SUB: [0, 1, 2, 16, 44],\n SUP: [0, 1, 2, 16, 44],\n SPAN: [0, 1, 2, 16, 44],\n BDO: [0, 2, 16, 44],\n BR: [0, 16, 44],\n BODY: [0, 1, 2, 3, 16, 44],\n ADDRESS: [0, 1, 2, 16, 44],\n DIV: [0, 1, 2, 16, 44],\n A: [0, 1, 2, 4, 5, 6, 8, 13, 14, 16, 21, 29, 44, 45],\n MAP: [0, 1, 2, 4, 16, 44],\n AREA: [0, 1, 2, 5, 7, 8, 10, 13, 16, 21, 29, 44],\n LINK: [0, 1, 2, 5, 6, 9, 14, 16, 44, 45],\n IMG: [0, 1, 2, 4, 7, 11, 12, 16, 25, 26, 37, 44, 46],\n OBJECT: [0, 1, 2, 4, 6, 8, 11, 15, 16, 26, 37, 44],\n PARAM: [0, 4, 6, 17, 24],\n HR: [0, 1, 2, 16, 44],\n P: [0, 1, 2, 16, 44],\n H1: [0, 1, 2, 16, 44],\n H2: [0, 1, 2, 16, 44],\n H3: [0, 1, 2, 16, 44],\n H4: [0, 1, 2, 16, 44],\n H5: [0, 1, 2, 16, 44],\n H6: [0, 1, 2, 16, 44],\n PRE: [0, 1, 2, 16, 44],\n Q: [0, 1, 2, 16, 18, 44],\n BLOCKQUOTE: [0, 1, 2, 16, 18, 44],\n INS: [0, 1, 2, 16, 18, 19, 44],\n DEL: [0, 1, 2, 16, 18, 19, 44],\n DL: [0, 1, 2, 16, 44],\n DT: [0, 1, 2, 16, 44],\n DD: [0, 1, 2, 16, 44],\n OL: [0, 1, 2, 16, 44],\n UL: [0, 1, 2, 16, 44],\n LI: [0, 1, 2, 16, 44],\n FORM: [0, 1, 2, 4, 16, 20, 23, 44],\n LABEL: [0, 1, 2, 13, 16, 22, 29, 44],\n INPUT: [0, 1, 2, 4, 7, 8, 11, 12, 13, 16, 17, 20, 27, 28, 29, 31, 34, 44, 46],\n SELECT: [0, 1, 2, 4, 8, 13, 16, 27, 30, 31, 44],\n OPTGROUP: [0, 1, 2, 16, 27, 32, 44],\n OPTION: [0, 1, 2, 16, 17, 27, 32, 33, 44],\n TEXTAREA: [0, 1, 2, 4, 8, 13, 16, 27, 28, 29, 31, 35, 44],\n FIELDSET: [0, 1, 2, 16, 44],\n LEGEND: [0, 1, 2, 16, 29, 44],\n BUTTON: [0, 1, 2, 4, 8, 13, 16, 17, 27, 29, 36, 44],\n TABLE: [0, 1, 2, 16, 26, 38, 44],\n CAPTION: [0, 1, 2, 16, 44],\n COLGROUP: [0, 1, 2, 16, 26, 39, 40, 44],\n COL: [0, 1, 2, 16, 26, 39, 40, 44],\n THEAD: [0, 1, 2, 16, 39, 44],\n TBODY: [0, 1, 2, 16, 39, 44],\n TFOOT: [0, 1, 2, 16, 39, 44],\n TR: [0, 1, 2, 16, 39, 44],\n TH: [0, 1, 2, 16, 39, 41, 44],\n TD: [0, 1, 2, 16, 39, 41, 44],\n HEAD: [2, 42],\n TITLE: [2],\n BASE: [5],\n META: [2, 43],\n STYLE: [2, 6, 9, 16],\n SCRIPT: [6, 12, 14, 47],\n NOSCRIPT: [0, 1, 2, 16, 44],\n HTML: [2]\n};\n\nconst defaultAttributes = [0, 1, 2, 4];\n\nexport function elementNames(): string[] {\n return Object.keys(elements).sort().map(v => v.toLowerCase());\n}\n\nfunction compose(indexes: number[] | undefined): hash<attrType> {\n const result: hash<attrType> = {};\n if (indexes) {\n for (let index of indexes) {\n const group = groups[index];\n for (let name in group)\n if (group.hasOwnProperty(name)) result[name] = values[group[name]];\n }\n }\n return result;\n}\n\nexport function attributeNames(element: string): string[] {\n return Object.keys(compose(elements[element.toUpperCase()] || defaultAttributes)).sort();\n}\n\nexport function attributeType(element: string, attribute: string): string|string[]|undefined {\n return compose(elements[element.toUpperCase()] || defaultAttributes)[attribute.toLowerCase()];\n}\n\n// This section is describes the DOM property surface of a DOM element and is derivgulp formated\n// from\n// from the SCHEMA strings from the security context information. SCHEMA is copied here because\n// it would be an unnecessary risk to allow this array to be imported from the security context\n// schema registry.\nconst SCHEMA: string[] = [\n '[Element]|textContent,%classList,className,id,innerHTML,*beforecopy,*beforecut,*beforepaste,*copy,*cut,*paste,*search,*selectstart,*webkitfullscreenchange,*webkitfullscreenerror,*wheel,outerHTML,#scrollLeft,#scrollTop,slot' +\n /* added manually to avoid breaking changes */\n ',*message,*mozfullscreenchange,*mozfullscreenerror,*mozpointerlockchange,*mozpointerlockerror,*webglcontextcreationerror,*webglcontextlost,*webglcontextrestored',\n '[HTMLElement]^[Element]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'abbr,address,article,aside,b,bdi,bdo,cite,code,dd,dfn,dt,em,figcaption,figure,footer,header,i,kbd,main,mark,nav,noscript,rb,rp,rt,rtc,ruby,s,samp,section,small,strong,sub,sup,u,var,wbr^[HTMLElement]|accessKey,contentEditable,dir,!draggable,!hidden,innerText,lang,*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,outerText,!spellcheck,%style,#tabIndex,title,!translate',\n 'media^[HTMLElement]|!autoplay,!controls,%controlsList,%crossOrigin,#currentTime,!defaultMuted,#defaultPlaybackRate,!disableRemotePlayback,!loop,!muted,*encrypted,*waitingforkey,#playbackRate,preload,src,%srcObject,#volume',\n ':svg:^[HTMLElement]|*abort,*auxclick,*blur,*cancel,*canplay,*canplaythrough,*change,*click,*close,*contextmenu,*cuechange,*dblclick,*drag,*dragend,*dragenter,*dragleave,*dragover,*dragstart,*drop,*durationchange,*emptied,*ended,*error,*focus,*gotpointercapture,*input,*invalid,*keydown,*keypress,*keyup,*load,*loadeddata,*loadedmetadata,*loadstart,*lostpointercapture,*mousedown,*mouseenter,*mouseleave,*mousemove,*mouseout,*mouseover,*mouseup,*mousewheel,*pause,*play,*playing,*pointercancel,*pointerdown,*pointerenter,*pointerleave,*pointermove,*pointerout,*pointerover,*pointerup,*progress,*ratechange,*reset,*resize,*scroll,*seeked,*seeking,*select,*show,*stalled,*submit,*suspend,*timeupdate,*toggle,*volumechange,*waiting,%style,#tabIndex',\n ':svg:graphics^:svg:|',\n ':svg:animation^:svg:|*begin,*end,*repeat',\n ':svg:geometry^:svg:|',\n ':svg:componentTransferFunction^:svg:|',\n ':svg:gradient^:svg:|',\n ':svg:textContent^:svg:graphics|',\n ':svg:textPositioning^:svg:textContent|',\n 'a^[HTMLElement]|charset,coords,download,hash,host,hostname,href,hreflang,name,password,pathname,ping,port,protocol,referrerPolicy,rel,rev,search,shape,target,text,type,username',\n 'area^[HTMLElement]|alt,coords,download,hash,host,hostname,href,!noHref,password,pathname,ping,port,protocol,referrerPolicy,rel,search,shape,target,username',\n 'audio^media|',\n 'br^[HTMLElement]|clear',\n 'base^[HTMLElement]|href,target',\n 'body^[HTMLElement]|aLink,background,bgColor,link,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,text,vLink',\n 'button^[HTMLElement]|!autofocus,!disabled,formAction,formEnctype,formMethod,!formNoValidate,formTarget,name,type,value',\n 'canvas^[HTMLElement]|#height,#width',\n 'content^[HTMLElement]|select',\n 'dl^[HTMLElement]|!compact',\n 'datalist^[HTMLElement]|',\n 'details^[HTMLElement]|!open',\n 'dialog^[HTMLElement]|!open,returnValue',\n 'dir^[HTMLElement]|!compact',\n 'div^[HTMLElement]|align',\n 'embed^[HTMLElement]|align,height,name,src,type,width',\n 'fieldset^[HTMLElement]|!disabled,name',\n 'font^[HTMLElement]|color,face,size',\n 'form^[HTMLElement]|acceptCharset,action,autocomplete,encoding,enctype,method,name,!noValidate,target',\n 'frame^[HTMLElement]|frameBorder,longDesc,marginHeight,marginWidth,name,!noResize,scrolling,src',\n 'frameset^[HTMLElement]|cols,*beforeunload,*blur,*error,*focus,*hashchange,*languagechange,*load,*message,*offline,*online,*pagehide,*pageshow,*popstate,*rejectionhandled,*resize,*scroll,*storage,*unhandledrejection,*unload,rows',\n 'hr^[HTMLElement]|align,color,!noShade,size,width',\n 'head^[HTMLElement]|',\n 'h1,h2,h3,h4,h5,h6^[HTMLElement]|align',\n 'html^[HTMLElement]|version',\n 'iframe^[HTMLElement]|align,!allowFullscreen,frameBorder,height,longDesc,marginHeight,marginWidth,name,referrerPolicy,%sandbox,scrolling,src,srcdoc,width',\n 'img^[HTMLElement]|align,alt,border,%crossOrigin,#height,#hspace,!isMap,longDesc,lowsrc,name,referrerPolicy,sizes,src,srcset,useMap,#vspace,#width',\n 'input^[HTMLElement]|accept,align,alt,autocapitalize,autocomplete,!autofocus,!checked,!defaultChecked,defaultValue,dirName,!disabled,%files,formAction,formEnctype,formMethod,!formNoValidate,formTarget,#height,!incremental,!indeterminate,max,#maxLength,min,#minLength,!multiple,name,pattern,placeholder,!readOnly,!required,selectionDirection,#selectionEnd,#selectionStart,#size,src,step,type,useMap,value,%valueAsDate,#valueAsNumber,#width',\n 'li^[HTMLElement]|type,#value',\n 'label^[HTMLElement]|htmlFor',\n 'legend^[HTMLElement]|align',\n 'link^[HTMLElement]|as,charset,%crossOrigin,!disabled,href,hreflang,integrity,media,referrerPolicy,rel,%relList,rev,%sizes,target,type',\n 'map^[HTMLElement]|name',\n 'marquee^[HTMLElement]|behavior,bgColor,direction,height,#hspace,#loop,#scrollAmount,#scrollDelay,!trueSpeed,#vspace,width',\n 'menu^[HTMLElement]|!compact',\n 'meta^[HTMLElement]|content,httpEquiv,name,scheme',\n 'meter^[HTMLElement]|#high,#low,#max,#min,#optimum,#value',\n 'ins,del^[HTMLElement]|cite,dateTime',\n 'ol^[HTMLElement]|!compact,!reversed,#start,type',\n 'object^[HTMLElement]|align,archive,border,code,codeBase,codeType,data,!declare,height,#hspace,name,standby,type,useMap,#vspace,width',\n 'optgroup^[HTMLElement]|!disabled,label',\n 'option^[HTMLElement]|!defaultSelected,!disabled,label,!selected,text,value',\n 'output^[HTMLElement]|defaultValue,%htmlFor,name,value',\n 'p^[HTMLElement]|align',\n 'param^[HTMLElement]|name,type,value,valueType',\n 'picture^[HTMLElement]|',\n 'pre^[HTMLElement]|#width',\n 'progress^[HTMLElement]|#max,#value',\n 'q,blockquote,cite^[HTMLElement]|',\n 'script^[HTMLElement]|!async,charset,%crossOrigin,!defer,event,htmlFor,integrity,src,text,type',\n 'select^[HTMLElement]|!autofocus,!disabled,#length,!multiple,name,!required,#selectedIndex,#size,value',\n 'shadow^[HTMLElement]|',\n 'slot^[HTMLElement]|name',\n 'source^[HTMLElement]|media,sizes,src,srcset,type',\n 'span^[HTMLElement]|',\n 'style^[HTMLElement]|!disabled,media,type',\n 'caption^[HTMLElement]|align',\n 'th,td^[HTMLElement]|abbr,align,axis,bgColor,ch,chOff,#colSpan,headers,height,!noWrap,#rowSpan,scope,vAlign,width',\n 'col,colgroup^[HTMLElement]|align,ch,chOff,#span,vAlign,width',\n 'table^[HTMLElement]|align,bgColor,border,%caption,cellPadding,cellSpacing,frame,rules,summary,%tFoot,%tHead,width',\n 'tr^[HTMLElement]|align,bgColor,ch,chOff,vAlign',\n 'tfoot,thead,tbody^[HTMLElement]|align,ch,chOff,vAlign',\n 'template^[HTMLElement]|',\n 'textarea^[HTMLElement]|autocapitalize,!autofocus,#cols,defaultValue,dirName,!disabled,#maxLength,#minLength,name,placeholder,!readOnly,!required,#rows,selectionDirection,#selectionEnd,#selectionStart,value,wrap',\n 'title^[HTMLElement]|text',\n 'track^[HTMLElement]|!default,kind,label,src,srclang',\n 'ul^[HTMLElement]|!compact,type',\n 'unknown^[HTMLElement]|',\n 'video^media|#height,poster,#width',\n ':svg:a^:svg:graphics|',\n ':svg:animate^:svg:animation|',\n ':svg:animateMotion^:svg:animation|',\n ':svg:animateTransform^:svg:animation|',\n ':svg:circle^:svg:geometry|',\n ':svg:clipPath^:svg:graphics|',\n ':svg:defs^:svg:graphics|',\n ':svg:desc^:svg:|',\n ':svg:discard^:svg:|',\n ':svg:ellipse^:svg:geometry|',\n ':svg:feBlend^:svg:|',\n ':svg:feColorMatrix^:svg:|',\n ':svg:feComponentTransfer^:svg:|',\n ':svg:feComposite^:svg:|',\n ':svg:feConvolveMatrix^:svg:|',\n ':svg:feDiffuseLighting^:svg:|',\n ':svg:feDisplacementMap^:svg:|',\n ':svg:feDistantLight^:svg:|',\n ':svg:feDropShadow^:svg:|',\n ':svg:feFlood^:svg:|',\n ':svg:feFuncA^:svg:componentTransferFunction|',\n ':svg:feFuncB^:svg:componentTransferFunction|',\n ':svg:feFuncG^:svg:componentTransferFunction|',\n ':svg:feFuncR^:svg:componentTransferFunction|',\n ':svg:feGaussianBlur^:svg:|',\n ':svg:feImage^:svg:|',\n ':svg:feMerge^:svg:|',\n ':svg:feMergeNode^:svg:|',\n ':svg:feMorphology^:svg:|',\n ':svg:feOffset^:svg:|',\n ':svg:fePointLight^:svg:|',\n ':svg:feSpecularLighting^:svg:|',\n ':svg:feSpotLight^:svg:|',\n ':svg:feTile^:svg:|',\n ':svg:feTurbulence^:svg:|',\n ':svg:filter^:svg:|',\n ':svg:foreignObject^:svg:graphics|',\n ':svg:g^:svg:graphics|',\n ':svg:image^:svg:graphics|',\n ':svg:line^:svg:geometry|',\n ':svg:linearGradient^:svg:gradient|',\n ':svg:mpath^:svg:|',\n ':svg:marker^:svg:|',\n ':svg:mask^:svg:|',\n ':svg:metadata^:svg:|',\n ':svg:path^:svg:geometry|',\n ':svg:pattern^:svg:|',\n ':svg:polygon^:svg:geometry|',\n ':svg:polyline^:svg:geometry|',\n ':svg:radialGradient^:svg:gradient|',\n ':svg:rect^:svg:geometry|',\n ':svg:svg^:svg:graphics|#currentScale,#zoomAndPan',\n ':svg:script^:svg:|type',\n ':svg:set^:svg:animation|',\n ':svg:stop^:svg:|',\n ':svg:style^:svg:|!disabled,media,title,type',\n ':svg:switch^:svg:graphics|',\n ':svg:symbol^:svg:|',\n ':svg:tspan^:svg:textPositioning|',\n ':svg:text^:svg:textPositioning|',\n ':svg:textPath^:svg:textContent|',\n ':svg:title^:svg:|',\n ':svg:use^:svg:graphics|',\n ':svg:view^:svg:|#zoomAndPan',\n 'data^[HTMLElement]|value',\n 'keygen^[HTMLElement]|!autofocus,challenge,!disabled,form,keytype,name',\n 'menuitem^[HTMLElement]|type,label,icon,!disabled,!checked,radiogroup,!default',\n 'summary^[HTMLElement]|',\n 'time^[HTMLElement]|dateTime',\n ':svg:cursor^:svg:|',\n];\n\nconst attrToPropMap: {[name: string]: string} = <any>{\n 'class': 'className',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex'\n};\n\nconst EVENT = 'event';\nconst BOOLEAN = 'boolean';\nconst NUMBER = 'number';\nconst STRING = 'string';\nconst OBJECT = 'object';\n\nexport class SchemaInformation {\n schema = <{[element: string]: {[property: string]: string}}>{};\n\n constructor() {\n SCHEMA.forEach(encodedType => {\n const parts = encodedType.split('|');\n const properties = parts[1].split(',');\n const typeParts = (parts[0] + '^').split('^');\n const typeName = typeParts[0];\n const type = <{[property: string]: string}>{};\n typeName.split(',').forEach(tag => this.schema[tag.toLowerCase()] = type);\n const superName = typeParts[1];\n const superType = superName && this.schema[superName.toLowerCase()];\n if (superType) {\n for (const key in superType) {\n type[key] = superType[key];\n }\n }\n properties.forEach((property: string) => {\n if (property == '') {\n } else if (property.startsWith('*')) {\n type[property.substring(1)] = EVENT;\n } else if (property.startsWith('!')) {\n type[property.substring(1)] = BOOLEAN;\n } else if (property.startsWith('#')) {\n type[property.substring(1)] = NUMBER;\n } else if (property.startsWith('%')) {\n type[property.substring(1)] = OBJECT;\n } else {\n type[property] = STRING;\n }\n });\n });\n }\n\n allKnownElements(): string[] { return Object.keys(this.schema); }\n\n eventsOf(elementName: string): string[] {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] === EVENT);\n }\n\n propertiesOf(elementName: string): string[] {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] !== EVENT);\n }\n\n typeOf(elementName: string, property: string): string {\n return (this.schema[elementName.toLowerCase()] || {})[property];\n }\n\n private static _instance: SchemaInformation;\n\n static get instance(): SchemaInformation {\n let result = SchemaInformation._instance;\n if (!result) {\n result = SchemaInformation._instance = new SchemaInformation();\n }\n return result;\n }\n}\n\nexport function eventNames(elementName: string): string[] {\n return SchemaInformation.instance.eventsOf(elementName);\n}\n\nexport function propertyNames(elementName: string): string[] {\n return SchemaInformation.instance.propertiesOf(elementName);\n}\n\nexport function propertyType(elementName: string, propertyName: string): string {\n return SchemaInformation.instance.typeOf(elementName, propertyName);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AST, ASTWithSource, AstPath as AstPathBase, NullAstVisitor, visitAstChildren} from '@angular/compiler';\nimport {AstType} from '@angular/compiler-cli';\n\nimport {BuiltinType, Span, Symbol, SymbolQuery, SymbolTable} from './types';\nimport {inSpan} from './utils';\n\ntype AstPath = AstPathBase<AST>;\n\nfunction findAstAt(ast: AST, position: number, excludeEmpty: boolean = false): AstPath {\n const path: AST[] = [];\n const visitor = new class extends NullAstVisitor {\n visit(ast: AST) {\n if ((!excludeEmpty || ast.span.start < ast.span.end) && inSpan(position, ast.span)) {\n path.push(ast);\n visitAstChildren(ast, this);\n }\n }\n };\n\n // We never care about the ASTWithSource node and its visit() method calls its ast's visit so\n // the visit() method above would never see it.\n if (ast instanceof ASTWithSource) {\n ast = ast.ast;\n }\n\n visitor.visit(ast);\n\n return new AstPathBase<AST>(path, position);\n}\n\nexport function getExpressionCompletions(\n scope: SymbolTable, ast: AST, position: number, query: SymbolQuery): Symbol[]|undefined {\n const path = findAstAt(ast, position);\n if (path.empty) return undefined;\n const tail = path.tail !;\n let result: SymbolTable|undefined = scope;\n\n function getType(ast: AST): Symbol { return new AstType(scope, query, {}).getType(ast); }\n\n // If the completion request is in a not in a pipe or property access then the global scope\n // (that is the scope of the implicit receiver) is the right scope as the user is typing the\n // beginning of an expression.\n tail.visit({\n visitBinary(ast) {},\n visitChain(ast) {},\n visitConditional(ast) {},\n visitFunctionCall(ast) {},\n visitImplicitReceiver(ast) {},\n visitInterpolation(ast) { result = undefined; },\n visitKeyedRead(ast) {},\n visitKeyedWrite(ast) {},\n visitLiteralArray(ast) {},\n visitLiteralMap(ast) {},\n visitLiteralPrimitive(ast) {},\n visitMethodCall(ast) {},\n visitPipe(ast) {\n if (position >= ast.exp.span.end &&\n (!ast.args || !ast.args.length || position < (<AST>ast.args[0]).span.start)) {\n // We are in a position a pipe name is expected.\n result = query.getPipes();\n }\n },\n visitPrefixNot(ast) {},\n visitNonNullAssert(ast) {},\n visitPropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitPropertyWrite(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitQuote(ast) {\n // For a quote, return the members of any (if there are any).\n result = query.getBuiltinType(BuiltinType.Any).members();\n },\n visitSafeMethodCall(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitSafePropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n });\n\n return result && result.values();\n}\n\nexport function getExpressionSymbol(\n scope: SymbolTable, ast: AST, position: number,\n query: SymbolQuery): {symbol: Symbol, span: Span}|undefined {\n const path = findAstAt(ast, position, /* excludeEmpty */ true);\n if (path.empty) return undefined;\n const tail = path.tail !;\n\n function getType(ast: AST): Symbol { return new AstType(scope, query, {}).getType(ast); }\n\n let symbol: Symbol|undefined = undefined;\n let span: Span|undefined = undefined;\n\n // If the completion request is in a not in a pipe or property access then the global scope\n // (that is the scope of the implicit receiver) is the right scope as the user is typing the\n // beginning of an expression.\n tail.visit({\n visitBinary(ast) {},\n visitChain(ast) {},\n visitConditional(ast) {},\n visitFunctionCall(ast) {},\n visitImplicitReceiver(ast) {},\n visitInterpolation(ast) {},\n visitKeyedRead(ast) {},\n visitKeyedWrite(ast) {},\n visitLiteralArray(ast) {},\n visitLiteralMap(ast) {},\n visitLiteralPrimitive(ast) {},\n visitMethodCall(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPipe(ast) {\n if (position >= ast.exp.span.end &&\n (!ast.args || !ast.args.length || position < (<AST>ast.args[0]).span.start)) {\n // We are in a position a pipe name is expected.\n const pipes = query.getPipes();\n if (pipes) {\n symbol = pipes.get(ast.name);\n span = ast.span;\n }\n }\n },\n visitPrefixNot(ast) {},\n visitNonNullAssert(ast) {},\n visitPropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPropertyWrite(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitQuote(ast) {},\n visitSafeMethodCall(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitSafePropertyRead(ast) {\n const receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n });\n\n if (symbol && span) {\n return {symbol, span};\n }\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AstPath, CompileDirectiveSummary, CompileTypeMetadata, CssSelector, DirectiveAst, ElementAst, EmbeddedTemplateAst, HtmlAstPath, Node as HtmlNode, ParseSourceSpan, RecursiveTemplateAstVisitor, RecursiveVisitor, TemplateAst, TemplateAstPath, identifierName, templateVisitAll, visitAll} from '@angular/compiler';\nimport {DiagnosticTemplateInfo} from '@angular/compiler-cli';\nimport * as ts from 'typescript';\n\nimport {SelectorInfo, TemplateInfo} from './common';\nimport {Span} from './types';\n\nexport interface SpanHolder {\n sourceSpan: ParseSourceSpan;\n endSourceSpan?: ParseSourceSpan|null;\n children?: SpanHolder[];\n}\n\nexport function isParseSourceSpan(value: any): value is ParseSourceSpan {\n return value && !!value.start;\n}\n\nexport function spanOf(span: SpanHolder): Span;\nexport function spanOf(span: ParseSourceSpan): Span;\nexport function spanOf(span: SpanHolder | ParseSourceSpan | undefined): Span|undefined;\nexport function spanOf(span?: SpanHolder | ParseSourceSpan): Span|undefined {\n if (!span) return undefined;\n if (isParseSourceSpan(span)) {\n return {start: span.start.offset, end: span.end.offset};\n } else {\n if (span.endSourceSpan) {\n return {start: span.sourceSpan.start.offset, end: span.endSourceSpan.end.offset};\n } else if (span.children && span.children.length) {\n return {\n start: span.sourceSpan.start.offset,\n end: spanOf(span.children[span.children.length - 1]) !.end\n };\n }\n return {start: span.sourceSpan.start.offset, end: span.sourceSpan.end.offset};\n }\n}\n\nexport function inSpan(position: number, span?: Span, exclusive?: boolean): boolean {\n return span != null && (exclusive ? position >= span.start && position < span.end :\n position >= span.start && position <= span.end);\n}\n\nexport function offsetSpan(span: Span, amount: number): Span {\n return {start: span.start + amount, end: span.end + amount};\n}\n\nexport function isNarrower(spanA: Span, spanB: Span): boolean {\n return spanA.start >= spanB.start && spanA.end <= spanB.end;\n}\n\nexport function hasTemplateReference(type: CompileTypeMetadata): boolean {\n if (type.diDeps) {\n for (let diDep of type.diDeps) {\n if (diDep.token && diDep.token.identifier &&\n identifierName(diDep.token !.identifier !) == 'TemplateRef')\n return true;\n }\n }\n return false;\n}\n\nexport function getSelectors(info: TemplateInfo): SelectorInfo {\n const map = new Map<CssSelector, CompileDirectiveSummary>();\n const selectors: CssSelector[] = flatten(info.directives.map(directive => {\n const selectors: CssSelector[] = CssSelector.parse(directive.selector !);\n selectors.forEach(selector => map.set(selector, directive));\n return selectors;\n }));\n return {selectors, map};\n}\n\nexport function flatten<T>(a: T[][]) {\n return (<T[]>[]).concat(...a);\n}\n\nexport function removeSuffix(value: string, suffix: string) {\n if (value.endsWith(suffix)) return value.substring(0, value.length - suffix.length);\n return value;\n}\n\nexport function uniqueByName < T extends {\n name: string;\n}\n> (elements: T[] | undefined): T[]|undefined {\n if (elements) {\n const result: T[] = [];\n const set = new Set<string>();\n for (const element of elements) {\n if (!set.has(element.name)) {\n set.add(element.name);\n result.push(element);\n }\n }\n return result;\n }\n}\n\nexport function isTypescriptVersion(low: string, high?: string) {\n const version = ts.version;\n\n if (version.substring(0, low.length) < low) return false;\n\n if (high && (version.substring(0, high.length) > high)) return false;\n\n return true;\n}\n\nexport function diagnosticInfoFromTemplateInfo(info: TemplateInfo): DiagnosticTemplateInfo {\n return {\n fileName: info.fileName,\n offset: info.template.span.start,\n query: info.template.query,\n members: info.template.members,\n htmlAst: info.htmlAst,\n templateAst: info.templateAst\n };\n}\n\nexport function findTemplateAstAt(\n ast: TemplateAst[], position: number, allowWidening: boolean = false): TemplateAstPath {\n const path: TemplateAst[] = [];\n const visitor = new class extends RecursiveTemplateAstVisitor {\n visit(ast: TemplateAst, context: any): any {\n let span = spanOf(ast);\n if (inSpan(position, span)) {\n const len = path.length;\n if (!len || allowWidening || isNarrower(span, spanOf(path[len - 1]))) {\n path.push(ast);\n }\n } else {\n // Returning a value here will result in the children being skipped.\n return true;\n }\n }\n\n visitEmbeddedTemplate(ast: EmbeddedTemplateAst, context: any): any {\n return this.visitChildren(context, visit => {\n // Ignore reference, variable and providers\n visit(ast.attrs);\n visit(ast.directives);\n visit(ast.children);\n });\n }\n\n visitElement(ast: ElementAst, context: any): any {\n return this.visitChildren(context, visit => {\n // Ingnore providers\n visit(ast.attrs);\n visit(ast.inputs);\n visit(ast.outputs);\n visit(ast.references);\n visit(ast.directives);\n visit(ast.children);\n });\n }\n\n visitDirective(ast: DirectiveAst, context: any): any {\n // Ignore the host properties of a directive\n const result = this.visitChildren(context, visit => { visit(ast.inputs); });\n // We never care about the diretive itself, just its inputs.\n if (path[path.length - 1] == ast) {\n path.pop();\n }\n return result;\n }\n };\n\n templateVisitAll(visitor, ast);\n\n return new AstPath<TemplateAst>(path, position);\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {CompileDirectiveMetadata, CompileMetadataResolver, CompilePipeSummary, NgAnalyzedModules, StaticSymbol} from '@angular/compiler';\nimport {BuiltinType, DeclarationKind, Definition, PipeInfo, Pipes, Signature, Span, Symbol, SymbolDeclaration, SymbolQuery, SymbolTable} from '@angular/compiler-cli';\n\nexport {\n BuiltinType,\n DeclarationKind,\n Definition,\n PipeInfo,\n Pipes,\n Signature,\n Span,\n Symbol,\n SymbolDeclaration,\n SymbolQuery,\n SymbolTable\n};\n\n/**\n * The information `LanguageService` needs from the `LanguageServiceHost` to describe the content of\n * a template and the language context the template is in.\n *\n * A host interface; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport interface TemplateSource {\n /**\n * The source of the template.\n */\n readonly source: string;\n\n /**\n * The version of the source. As files are modified the version should change. That is, if the\n * `LanguageService` requesting template infomration for a source file and that file has changed\n * since the last time the host was asked for the file then this version string should be\n * different. No assumptions are made about the format of this string.\n *\n * The version can change more often than the source but should not change less often.\n */\n readonly version: string;\n\n /**\n * The span of the template within the source file.\n */\n readonly span: Span;\n\n /**\n * A static symbol for the template's component.\n */\n readonly type: StaticSymbol;\n\n /**\n * The `SymbolTable` for the members of the component.\n */\n readonly members: SymbolTable;\n\n /**\n * A `SymbolQuery` for the context of the template.\n */\n readonly query: SymbolQuery;\n}\n\n/**\n * A sequence of template sources.\n *\n * A host type; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport type TemplateSources = TemplateSource[] | undefined;\n\n\n/**\n * Error information found getting declaration information\n *\n * A host type; see `LanagueServiceHost`.\n *\n * @experimental\n */\nexport interface DeclarationError {\n /**\n * The span of the error in the declaration's module.\n */\n readonly span: Span;\n\n /**\n * The message to display describing the error.\n */\n readonly message: string;\n}\n\n/**\n * Information about the component declarations.\n *\n * A file might contain a declaration without a template because the file contains only\n * templateUrl references. However, the compoennt declaration might contain errors that\n * need to be reported such as the template string is missing or the component is not\n * declared in a module. These error should be reported on the declaration, not the\n * template.\n *\n * A host type; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport interface Declaration {\n /**\n * The static symbol of the compponent being declared.\n */\n readonly type: StaticSymbol;\n\n /**\n * The span of the declaration annotation reference (e.g. the 'Component' or 'Directive'\n * reference).\n */\n readonly declarationSpan: Span;\n\n /**\n * Reference to the compiler directive metadata for the declaration.\n */\n readonly metadata?: CompileDirectiveMetadata;\n\n /**\n * Error reported trying to get the metadata.\n */\n readonly errors: DeclarationError[];\n}\n\n/**\n * A sequence of declarations.\n *\n * A host type; see `LanguageSeriviceHost`.\n *\n * @experimental\n */\nexport type Declarations = Declaration[];\n\n/**\n * The host for a `LanguageService`. This provides all the `LanguageService` requires to respond\n * to\n * the `LanguageService` requests.\n *\n * This interface describes the requirements of the `LanguageService` on its host.\n *\n * The host interface is host language agnostic.\n *\n * Adding optional member to this interface or any interface that is described as a\n * `LanguageServiceHost` interface is not considered a breaking change as defined by SemVer.\n * Removing a method or changing a member from required to optional will also not be considered a\n * breaking change.\n *\n * If a member is deprecated it will be changed to optional in a minor release before it is\n * removed in a major release.\n *\n * Adding a required member or changing a method's parameters, is considered a breaking change and\n * will only be done when breaking changes are allowed. When possible, a new optional member will\n * be added and the old member will be deprecated. The new member will then be made required in\n * and the old member will be removed only when breaking chnages are allowed.\n *\n * While an interface is marked as experimental breaking-changes will be allowed between minor\n * releases. After an interface is marked as stable breaking-changes will only be allowed between\n * major releases. No breaking changes are allowed between patch releases.\n *\n * @experimental\n */\nexport interface LanguageServiceHost {\n /**\n * The resolver to use to find compiler metadata.\n */\n readonly resolver: CompileMetadataResolver;\n\n /**\n * Returns the template information for templates in `fileName` at the given location. If\n * `fileName` refers to a template file then the `position` should be ignored. If the `position`\n * is not in a template literal string then this method should return `undefined`.\n */\n getTemplateAt(fileName: string, position: number): TemplateSource|undefined;\n\n /**\n * Return the template source information for all templates in `fileName` or for `fileName` if\n * it\n * is a template file.\n */\n getTemplates(fileName: string): TemplateSources;\n\n /**\n * Returns the Angular declarations in the given file.\n */\n getDeclarations(fileName: string): Declarations;\n\n /**\n * Return a summary of all Angular modules in the project.\n */\n getAnalyzedModules(): NgAnalyzedModules;\n\n /**\n * Return a list all the template files referenced by the project.\n */\n getTemplateReferences(): string[];\n}\n\n/**\n * An item of the completion result to be displayed by an editor.\n *\n * A `LanguageService` interface.\n *\n * @experimental\n */\nexport interface Completion {\n /**\n * The kind of comletion.\n */\n kind: DeclarationKind;\n\n /**\n * The name of the completion to be displayed\n */\n name: string;\n\n /**\n * The key to use to sort the completions for display.\n */\n sort: string;\n}\n\n/**\n * A sequence of completions.\n *\n * @experimental\n */\nexport type Completions = Completion[] | undefined;\n\n/**\n * A file and span.\n */\nexport interface Location {\n fileName: string;\n span: Span;\n}\n\n/**\n * The kind of diagnostic message.\n *\n * @experimental\n */\nexport enum DiagnosticKind {\n Error,\n Warning,\n}\n\n/**\n * An template diagnostic message to display.\n *\n * @experimental\n */\nexport interface Diagnostic {\n /**\n * The kind of diagnostic message\n */\n kind: DiagnosticKind;\n\n /**\n * The source span that should be highlighted.\n */\n span: Span;\n\n /**\n * The text of the diagnostic message to display.\n */\n message: string;\n}\n\n/**\n * A sequence of diagnostic message.\n *\n * @experimental\n */\nexport type Diagnostics = Diagnostic[];\n\n/**\n * A section of hover text. If the text is code then langauge should be provided.\n * Otherwise the text is assumed to be Markdown text that will be sanitized.\n */\nexport interface HoverTextSection {\n /**\n * Source code or markdown text describing the symbol a the hover location.\n */\n readonly text: string;\n\n /**\n * The langauge of the source if `text` is a souce code fragment.\n */\n readonly language?: string;\n}\n\n/**\n * Hover infomration for a symbol at the hover location.\n */\nexport interface Hover {\n /**\n * The hover text to display for the symbol at the hover location. If the text includes\n * source code, the section will specify which langauge it should be interpreted as.\n */\n readonly text: HoverTextSection[];\n\n /**\n * The span of source the hover covers.\n */\n readonly span: Span;\n}\n\n/**\n * An instance of an Angular language service created by `createLanguageService()`.\n *\n * The language service returns information about Angular templates that are included in a project\n * as defined by the `LanguageServiceHost`.\n *\n * When a method expects a `fileName` this file can either be source file in the project that\n * contains a template in a string literal or a template file referenced by the project returned\n * by `getTemplateReference()`. All other files will cause the method to return `undefined`.\n *\n * If a method takes a `position`, it is the offset of the UTF-16 code-point relative to the\n * beginning of the file reference by `fileName`.\n *\n * This interface and all interfaces and types marked as `LanguageService` types, describe a\n * particlar implementation of the Angular language service and is not intented to be\n * implemented. Adding members to the interface will not be considered a breaking change as\n * defined by SemVer.\n *\n * Removing a member or making a member optional, changing a method parameters, or changing a\n * member's type will all be considered a breaking change.\n *\n * While an interface is marked as experimental breaking-changes will be allowed between minor\n * releases. After an interface is marked as stable breaking-changes will only be allowed between\n * major releases. No breaking changes are allowed between patch releases.\n *\n * @experimental\n */\nexport interface LanguageService {\n /**\n * Returns a list of all the external templates referenced by the project.\n */\n getTemplateReferences(): string[]|undefined;\n\n /**\n * Returns a list of all error for all templates in the given file.\n */\n getDiagnostics(fileName: string): Diagnostics|undefined;\n\n /**\n * Return the completions at the given position.\n */\n getCompletionsAt(fileName: string, position: number): Completions|undefined;\n\n /**\n * Return the definition location for the symbol at position.\n */\n getDefinitionAt(fileName: string, position: number): Definition|undefined;\n\n /**\n * Return the hover information for the symbol at position.\n */\n getHoverAt(fileName: string, position: number): Hover|undefined;\n\n /**\n * Return the pipes that are available at the given position.\n */\n getPipesAt(fileName: string, position: number): CompilePipeSummary[];\n}\n"],"names":["ts.DiagnosticCategory","ts.forEachChild","ts.SyntaxKind","ts.getPositionOfLineAndCharacter","spanOf","path.dirname","fs.existsSync","path.join","version","Console","__extends","path","getExpressionScope","AstPathBase"],"mappings":"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"}
|