@angular/language-service 5.2.7 → 5.2.11
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/bundles/language-service.umd.js +78 -25
- package/bundles/language-service.umd.js.map +1 -1
- package/bundles/language-service.umd.min.js +9 -9
- package/bundles/language-service.umd.min.js.map +1 -1
- package/esm2015/language-service.js +2 -2
- package/esm2015/language-service.js.map +1 -1
- package/esm5/language-service.js +2 -2
- package/esm5/language-service.js.map +1 -1
- package/package.json +1 -1
- package/src/types.d.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language-service.js","sources":["../../../packages/language-service/src/types.js","../../../packages/language-service/src/utils.js","../../../packages/language-service/src/expressions.js","../../../packages/language-service/src/html_info.js","../../../packages/language-service/src/completions.js","../../../packages/language-service/src/locate_symbol.js","../../../packages/language-service/src/definitions.js","../../../packages/language-service/src/diagnostics.js","../../../packages/language-service/src/hover.js","../../../packages/language-service/src/language_service.js","../../../packages/language-service/src/reflector_host.js","../../../packages/language-service/src/typescript_host.js","../../../packages/language-service/src/ts_plugin.js","../../../packages/language-service/src/version.js","../../../packages/language-service/language-service.js"],"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 */\nimport { BuiltinType } from '@angular/compiler-cli/src/language_services';\nexport { BuiltinType };\n/**\n * The kind of diagnostic message.\n *\n * @experimental\n */\nexport var DiagnosticKind;\n(function (DiagnosticKind) {\n DiagnosticKind[DiagnosticKind[\"Error\"] = 0] = \"Error\";\n DiagnosticKind[DiagnosticKind[\"Warning\"] = 1] = \"Warning\";\n})(DiagnosticKind || (DiagnosticKind = {}));\n//# sourceMappingURL=types.js.map","/**\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 */\nimport { AstPath, CssSelector, RecursiveTemplateAstVisitor, identifierName, templateVisitAll } from '@angular/compiler';\nimport * as ts from 'typescript';\nexport function isParseSourceSpan(value) {\n return value && !!value.start;\n}\nexport function spanOf(span) {\n if (!span)\n return undefined;\n if (isParseSourceSpan(span)) {\n return { start: span.start.offset, end: span.end.offset };\n }\n else {\n if (span.endSourceSpan) {\n return { start: span.sourceSpan.start.offset, end: span.endSourceSpan.end.offset };\n }\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}\nexport function inSpan(position, span, exclusive) {\n return span != null && (exclusive ? position >= span.start && position < span.end :\n position >= span.start && position <= span.end);\n}\nexport function offsetSpan(span, amount) {\n return { start: span.start + amount, end: span.end + amount };\n}\nexport function isNarrower(spanA, spanB) {\n return spanA.start >= spanB.start && spanA.end <= spanB.end;\n}\nexport function hasTemplateReference(type) {\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}\nexport function getSelectors(info) {\n const map = new Map();\n const selectors = flatten(info.directives.map(directive => {\n const selectors = CssSelector.parse(directive.selector);\n selectors.forEach(selector => map.set(selector, directive));\n return selectors;\n }));\n return { selectors, map };\n}\nexport function flatten(a) {\n return [].concat(...a);\n}\nexport function removeSuffix(value, suffix) {\n if (value.endsWith(suffix))\n return value.substring(0, value.length - suffix.length);\n return value;\n}\nexport function uniqueByName(elements) {\n if (elements) {\n const result = [];\n const set = new Set();\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}\nexport function isTypescriptVersion(low, high) {\n const version = ts.version;\n if (version.substring(0, low.length) < low)\n return false;\n if (high && (version.substring(0, high.length) > high))\n return false;\n return true;\n}\nexport function diagnosticInfoFromTemplateInfo(info) {\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}\nexport function findTemplateAstAt(ast, position, allowWidening = false) {\n const path = [];\n const visitor = new class extends RecursiveTemplateAstVisitor {\n visit(ast, context) {\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 }\n else {\n // Returning a value here will result in the children being skipped.\n return true;\n }\n }\n visitEmbeddedTemplate(ast, context) {\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 visitElement(ast, context) {\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 visitDirective(ast, context) {\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 templateVisitAll(visitor, ast);\n return new AstPath(path, position);\n}\n//# sourceMappingURL=utils.js.map","/**\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 */\nimport { ASTWithSource, AstPath as AstPathBase, NullAstVisitor, visitAstChildren } from '@angular/compiler';\nimport { AstType } from '@angular/compiler-cli/src/language_services';\nimport { BuiltinType } from './types';\nimport { inSpan } from './utils';\nfunction findAstAt(ast, position, excludeEmpty = false) {\n const path = [];\n const visitor = new class extends NullAstVisitor {\n visit(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 // 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 visitor.visit(ast);\n return new AstPathBase(path, position);\n}\nexport function getExpressionCompletions(scope, ast, position, query) {\n const path = findAstAt(ast, position);\n if (path.empty)\n return undefined;\n const tail = path.tail;\n let result = scope;\n function getType(ast) { return new AstType(scope, query, {}).getType(ast); }\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.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 return result && result.values();\n}\nexport function getExpressionSymbol(scope, ast, position, query) {\n const path = findAstAt(ast, position, /* excludeEmpty */ true);\n if (path.empty)\n return undefined;\n const tail = path.tail;\n function getType(ast) { return new AstType(scope, query, {}).getType(ast); }\n let symbol = undefined;\n let span = undefined;\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.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 if (symbol && span) {\n return { symbol, span };\n }\n}\n//# sourceMappingURL=expressions.js.map","/**\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 */\nconst values = [\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];\nconst groups = [\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];\nconst elements = {\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};\nconst defaultAttributes = [0, 1, 2, 4];\nexport function elementNames() {\n return Object.keys(elements).sort().map(v => v.toLowerCase());\n}\nfunction compose(indexes) {\n const result = {};\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))\n result[name] = values[group[name]];\n }\n }\n return result;\n}\nexport function attributeNames(element) {\n return Object.keys(compose(elements[element.toUpperCase()] || defaultAttributes)).sort();\n}\nexport function attributeType(element, attribute) {\n return compose(elements[element.toUpperCase()] || defaultAttributes)[attribute.toLowerCase()];\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 = [\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];\nconst attrToPropMap = {\n 'class': 'className',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex'\n};\nconst EVENT = 'event';\nconst BOOLEAN = 'boolean';\nconst NUMBER = 'number';\nconst STRING = 'string';\nconst OBJECT = 'object';\nexport class SchemaInformation {\n constructor() {\n this.schema = {};\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 = {};\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) => {\n if (property == '') {\n }\n else if (property.startsWith('*')) {\n type[property.substring(1)] = EVENT;\n }\n else if (property.startsWith('!')) {\n type[property.substring(1)] = BOOLEAN;\n }\n else if (property.startsWith('#')) {\n type[property.substring(1)] = NUMBER;\n }\n else if (property.startsWith('%')) {\n type[property.substring(1)] = OBJECT;\n }\n else {\n type[property] = STRING;\n }\n });\n });\n }\n allKnownElements() { return Object.keys(this.schema); }\n eventsOf(elementName) {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] === EVENT);\n }\n propertiesOf(elementName) {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] !== EVENT);\n }\n typeOf(elementName, property) {\n return (this.schema[elementName.toLowerCase()] || {})[property];\n }\n static get instance() {\n let result = SchemaInformation._instance;\n if (!result) {\n result = SchemaInformation._instance = new SchemaInformation();\n }\n return result;\n }\n}\nexport function eventNames(elementName) {\n return SchemaInformation.instance.eventsOf(elementName);\n}\nexport function propertyNames(elementName) {\n return SchemaInformation.instance.propertiesOf(elementName);\n}\nexport function propertyType(elementName, propertyName) {\n return SchemaInformation.instance.typeOf(elementName, propertyName);\n}\n//# sourceMappingURL=html_info.js.map","/**\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 */\nimport { CssSelector, Element, ImplicitReceiver, NAMED_ENTITIES, NullTemplateVisitor, ParseSpan, PropertyRead, SelectorMatcher, TagContentType, Text, findNode, getHtmlTagDefinition, splitNsName } from '@angular/compiler';\nimport { getExpressionScope } from '@angular/compiler-cli/src/language_services';\nimport { getExpressionCompletions } from './expressions';\nimport { attributeNames, elementNames, eventNames, propertyNames } from './html_info';\nimport { diagnosticInfoFromTemplateInfo, findTemplateAstAt, flatten, getSelectors, hasTemplateReference, inSpan, removeSuffix, spanOf, uniqueByName } from './utils';\nconst TEMPLATE_ATTR_PREFIX = '*';\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};\nexport function getTemplateCompletions(templateInfo) {\n let result = 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 }\n else {\n let astPosition = templatePosition - mostSpecific.sourceSpan.start.offset;\n mostSpecific.visit({\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 }\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 }\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)\n return result;\n result = interpolationCompletions(templateInfo, templatePosition);\n if (result)\n 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 }\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 }, null);\n }\n }\n return result;\n}\nfunction attributeCompletions(info, path) {\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}\nfunction attributeCompletionsForElement(info, elementName, element) {\n const attributes = getAttributeInfosForElement(info, elementName, element);\n // Map all the attributes to a completion\n return attributes.map(attr => ({\n kind: attr.fromHtml ? 'html attribute' : 'attribute',\n name: nameOfAttr(attr),\n sort: attr.name\n }));\n}\nfunction getAttributeInfosForElement(info, elementName, element) {\n let attributes = [];\n // Add html attributes\n let htmlAttributes = attributeNames(elementName) || [];\n if (htmlAttributes) {\n attributes.push(...htmlAttributes.map(name => ({ name, fromHtml: true })));\n }\n // Add html properties\n let htmlProperties = propertyNames(elementName);\n if (htmlProperties) {\n attributes.push(...htmlProperties.map(name => ({ name, input: true })));\n }\n // Add html events\n let htmlEvents = eventNames(elementName);\n if (htmlEvents) {\n attributes.push(...htmlEvents.map(name => ({ name, output: true })));\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 = selectors.filter(selector => !selector.element || selector.element == elementName);\n const selectorAndAttributeNames = applicableSelectors.map(selector => ({ selector, attrs: selector.attrs.filter(a => !!a) }));\n let attrs = flatten(selectorAndAttributeNames.map(selectorAndAttr => {\n const directive = selectorMap.get(selectorAndAttr.selector);\n const result = selectorAndAttr.attrs.map(name => ({ name, input: name in directive.inputs, output: name in directive.outputs }));\n return result;\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 // 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 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 // If a name shows up twice, fold it into a single value.\n attrs = foldAttrs(attrs);\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}\nfunction attributeValueCompletions(info, position, attr) {\n const path = findTemplateAstAt(info.templateAst, position);\n const mostSpecific = path.tail;\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n if (mostSpecific) {\n const visitor = 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(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}\nfunction elementCompletions(info, path) {\n let htmlNames = elementNames().filter(name => !(name in hiddenHtmlElements));\n // Collect the elements referenced by the selectors\n let directiveElements = getSelectors(info)\n .selectors.map(selector => selector.element)\n .filter(name => !!name);\n let components = directiveElements.map(name => ({ kind: 'component', name, sort: name }));\n let htmlElements = htmlNames.map(name => ({ kind: 'element', name: name, sort: name }));\n // Return components and html elements\n return uniqueByName(htmlElements.concat(components));\n}\nfunction entityCompletions(value, position) {\n // Look for entity completions\n const re = /&[A-Za-z]*;?(?!\\d)/g;\n let found;\n let result = 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(name => ({ kind: 'entity', name: `&${name};`, sort: name }));\n break;\n }\n }\n return result;\n}\nfunction interpolationCompletions(info, position) {\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(info, position, undefined, () => getExpressionScope(diagnosticInfoFromTemplateInfo(info), templatePath, false));\n mostSpecific.visit(visitor, null);\n return uniqueByName(visitor.result);\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, path) {\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}\nclass ExpressionVisitor extends NullTemplateVisitor {\n constructor(info, position, attr, getExpressionScope) {\n super();\n this.info = info;\n this.position = position;\n this.attr = attr;\n this.getExpressionScope = getExpressionScope || (() => info.template.members);\n }\n visitDirectiveProperty(ast) {\n this.attributeValueCompletions(ast.value);\n }\n visitElementProperty(ast) {\n this.attributeValueCompletions(ast.value);\n }\n visitEvent(ast) { this.attributeValueCompletions(ast.handler); }\n visitElement(ast) {\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 const key = this.attr.name.substr(TEMPLATE_ATTR_PREFIX.length);\n // Find the selector\n const selectorInfo = getSelectors(this.info);\n const selectors = selectorInfo.selectors;\n const selector = selectors.filter(s => s.attrs.some((attr, i) => i % 2 == 0 && attr == key))[0];\n const templateBindingResult = this.info.expressionParser.parseTemplateBindings(key, this.attr.value, null);\n // find the template binding that contains the position\n if (!this.attr.valueSpan)\n return;\n const valueRelativePosition = this.position - this.attr.valueSpan.start.offset - 1;\n const bindings = templateBindingResult.templateBindings;\n const binding = bindings.find(binding => inSpan(valueRelativePosition, binding.span, /* exclusive */ true)) ||\n bindings.find(binding => inSpan(valueRelativePosition, binding.span));\n const keyCompletions = () => {\n let keys = [];\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 => ({ kind: 'key', name: key, sort: key }));\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 }\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 = this.info.template.query.getTemplateContext(directiveMetadata.type.reference);\n if (contextTable) {\n this.result = this.symbolsToCompletions(contextTable.values());\n }\n }\n }\n else if (binding.key && valueRelativePosition <= (binding.key.length - key.length)) {\n keyCompletions();\n }\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(binding.expression ? binding.expression.ast :\n new PropertyRead(span, new ImplicitReceiver(span), ''), valueRelativePosition);\n }\n else {\n keyCompletions();\n }\n }\n }\n }\n visitBoundText(ast) {\n const expressionPosition = this.position - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n const completions = getExpressionCompletions(this.getExpressionScope(), ast.value, expressionPosition, this.info.template.query);\n if (completions) {\n this.result = this.symbolsToCompletions(completions);\n }\n }\n }\n attributeValueCompletions(value, position) {\n const symbols = getExpressionCompletions(this.getExpressionScope(), value, position == null ? this.attributeValuePosition : position, this.info.template.query);\n if (symbols) {\n this.result = this.symbolsToCompletions(symbols);\n }\n }\n symbolsToCompletions(symbols) {\n return symbols.filter(s => !s.name.startsWith('__') && s.public)\n .map(symbol => ({ kind: symbol.kind, name: symbol.name, sort: symbol.name }));\n }\n 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}\nfunction getSourceText(template, span) {\n return template.source.substring(span.start, span.end);\n}\nfunction nameOfAttr(attr) {\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}\nconst templateAttr = /^(\\w+:)?(template$|^\\*)/;\nfunction createElementCssSelector(element) {\n const cssSelector = new CssSelector();\n let elNameNoNs = splitNsName(element.name)[1];\n cssSelector.setElement(elNameNoNs);\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}\nfunction foldAttrs(attrs) {\n let inputOutput = new Map();\n let templates = new Map();\n let result = [];\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 }\n else {\n let cloneAttr = { name: attr.name };\n if (attr.input)\n cloneAttr.input = true;\n if (attr.output)\n cloneAttr.output = true;\n result.push(cloneAttr);\n inputOutput.set(attr.name, cloneAttr);\n }\n }\n });\n return result;\n}\nfunction expandedAttr(attr) {\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}\nfunction lowerName(name) {\n return name && (name[0].toLowerCase() + name.substr(1));\n}\n//# sourceMappingURL=completions.js.map","/**\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 */\nimport { Attribute, ElementAst, findNode, tokenReference } from '@angular/compiler';\nimport { getExpressionScope } from '@angular/compiler-cli/src/language_services';\nimport { getExpressionSymbol } from './expressions';\nimport { diagnosticInfoFromTemplateInfo, findTemplateAstAt, inSpan, offsetSpan, spanOf } from './utils';\nexport function locateSymbol(info) {\n if (!info.position)\n 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 = undefined;\n let span = undefined;\n const attributeValueSymbol = (ast, inEvent = false) => {\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(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 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 }\n else {\n // Find a directive that matches the element name\n const directive = ast.directives.find(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 = 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 }, null);\n if (symbol && span) {\n return { symbol, span: offsetSpan(span, info.template.span.start) };\n }\n }\n}\nfunction findAttribute(info) {\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}\nfunction findInputBinding(info, path, binding) {\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}\nfunction findOutputBinding(info, path, binding) {\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}\nfunction invertMap(obj) {\n const result = {};\n for (const name of Object.keys(obj)) {\n const v = obj[name];\n result[v] = name;\n }\n return result;\n}\n/**\n * Wrap a symbol and change its kind to component.\n */\nclass OverrideKindSymbol {\n constructor(sym, kindOverride) {\n this.sym = sym;\n this.kind = kindOverride;\n }\n get name() { return this.sym.name; }\n get language() { return this.sym.language; }\n get type() { return this.sym.type; }\n get container() { return this.sym.container; }\n get public() { return this.sym.public; }\n get callable() { return this.sym.callable; }\n get nullable() { return this.sym.nullable; }\n get definition() { return this.sym.definition; }\n members() { return this.sym.members(); }\n signatures() { return this.sym.signatures(); }\n selectSignature(types) { return this.sym.selectSignature(types); }\n indexed(argument) { return this.sym.indexed(argument); }\n}\n//# sourceMappingURL=locate_symbol.js.map","/**\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 */\nimport { locateSymbol } from './locate_symbol';\nexport function getDefinition(info) {\n const result = locateSymbol(info);\n return result && result.symbol.definition;\n}\n//# sourceMappingURL=definitions.js.map","/**\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 */\nimport { getTemplateExpressionDiagnostics } from '@angular/compiler-cli/src/language_services';\nimport { DiagnosticKind } from './types';\nimport { offsetSpan, spanOf } from './utils';\nexport function getTemplateDiagnostics(fileName, astProvider, templates) {\n const results = [];\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(e => ({\n kind: DiagnosticKind.Error,\n span: offsetSpan(spanOf(e.span), template.span.start),\n message: e.msg\n })));\n }\n else if (ast.templateAst && ast.htmlAst) {\n const info = {\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(e => ({ kind: e.kind, span: e.span || template.span, message: e.message })));\n }\n }\n }\n return results;\n}\nexport function getDeclarationDiagnostics(declarations, modules) {\n const results = [];\n let directives = undefined;\n for (const declaration of declarations) {\n const report = (message, span) => {\n results.push({\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(`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 const { template, templateUrl } = declaration.metadata.template;\n if (template === null && !templateUrl) {\n report(`Component '${declaration.type.name}' must have a template or templateUrl`);\n }\n else if (template && templateUrl) {\n report(`Component '${declaration.type.name}' must not have both template and templateUrl`);\n }\n }\n else {\n if (!directives) {\n directives = new Set();\n modules.ngModules.forEach(module => {\n module.declaredDirectives.forEach(directive => { directives.add(directive.reference); });\n });\n }\n if (!directives.has(declaration.type)) {\n report(`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 return results;\n}\n//# sourceMappingURL=diagnostics.js.map","/**\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 */\nimport { locateSymbol } from './locate_symbol';\nexport function getHover(info) {\n const result = locateSymbol(info);\n if (result) {\n return { text: hoverTextOf(result.symbol), span: result.span };\n }\n}\nfunction hoverTextOf(symbol) {\n const result = [{ 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//# sourceMappingURL=hover.js.map","/**\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 */\nimport { CompilerConfig, DomElementSchemaRegistry, HtmlParser, I18NHtmlParser, Lexer, Parser, TemplateParser } from '@angular/compiler';\nimport { getTemplateCompletions } from './completions';\nimport { getDefinition } from './definitions';\nimport { getDeclarationDiagnostics, getTemplateDiagnostics } from './diagnostics';\nimport { getHover } from './hover';\nimport { DiagnosticKind } from './types';\n/**\n * Create an instance of an Angular `LanguageService`.\n *\n * @experimental\n */\nexport function createLanguageService(host) {\n return new LanguageServiceImpl(host);\n}\nclass LanguageServiceImpl {\n constructor(host) {\n this.host = host;\n }\n get metadataResolver() { return this.host.resolver; }\n getTemplateReferences() { return this.host.getTemplateReferences(); }\n getDiagnostics(fileName) {\n let results = [];\n let templates = this.host.getTemplates(fileName);\n if (templates && templates.length) {\n results.push(...getTemplateDiagnostics(fileName, this, templates));\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 return uniqueBySpan(results);\n }\n getPipesAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return templateInfo.pipes;\n }\n return [];\n }\n getCompletionsAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getTemplateCompletions(templateInfo);\n }\n }\n getDefinitionAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getDefinition(templateInfo);\n }\n }\n getHoverAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getHover(templateInfo);\n }\n }\n getTemplateAstAtPosition(fileName, position) {\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 getTemplateAst(template, contextFile) {\n let result = undefined;\n try {\n const resolvedMetadata = this.metadataResolver.getNonNormalizedDirectiveMetadata(template.type);\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(config, this.host.resolver.getReflector(), expressionParser, new DomElementSchemaRegistry(), htmlParser, null, []);\n const htmlResult = htmlParser.parse(template.source, '', true);\n const analyzedModules = this.host.getAnalyzedModules();\n let errors = 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(d => this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference));\n const directives = removeMissing(resolvedDirectives).map(d => d.metadata.toSummary());\n const pipes = ngModule.transitiveModule.pipes.map(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 }\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}\nfunction removeMissing(values) {\n return values.filter(e => !!e);\n}\nfunction uniqueBySpan(elements) {\n if (elements) {\n const result = [];\n const map = new Map();\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}\nfunction findSuitableDefaultModule(modules) {\n let result = 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//# sourceMappingURL=language_service.js.map","/**\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 */\nimport { MetadataCollector, createMetadataReaderCache, readMetadata } from '@angular/compiler-cli/src/language_services';\nimport * as path from 'path';\nimport * as ts from 'typescript';\nclass ReflectorModuleModuleResolutionHost {\n constructor(host, getProgram) {\n this.host = host;\n this.getProgram = getProgram;\n // Note: verboseInvalidExpressions is important so that\n // the collector will collect errors instead of throwing\n this.metadataCollector = new MetadataCollector({ verboseInvalidExpression: true });\n if (host.directoryExists)\n this.directoryExists = directoryName => this.host.directoryExists(directoryName);\n }\n fileExists(fileName) { return !!this.host.getScriptSnapshot(fileName); }\n readFile(fileName) {\n let snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n return snapshot.getText(0, snapshot.getLength());\n }\n // Typescript readFile() declaration should be `readFile(fileName: string): string | undefined\n return undefined;\n }\n getSourceFileMetadata(fileName) {\n const sf = this.getProgram().getSourceFile(fileName);\n return sf ? this.metadataCollector.getMetadata(sf) : undefined;\n }\n cacheMetadata(fileName) {\n // Don't cache the metadata for .ts files as they might change in the editor!\n return fileName.endsWith('.d.ts');\n }\n}\nexport class ReflectorHost {\n constructor(getProgram, serviceHost, options) {\n this.options = options;\n this.metadataReaderCache = createMetadataReaderCache();\n this.hostAdapter = new ReflectorModuleModuleResolutionHost(serviceHost, getProgram);\n this.moduleResolutionCache =\n ts.createModuleResolutionCache(serviceHost.getCurrentDirectory(), (s) => s);\n }\n getMetadataFor(modulePath) {\n return readMetadata(modulePath, this.hostAdapter, this.metadataReaderCache);\n }\n moduleNameToFileName(moduleName, containingFile) {\n if (!containingFile) {\n if (moduleName.indexOf('.') === 0) {\n throw new Error('Resolution of relative paths requires a containing file.');\n }\n // Any containing file gives the same result for absolute imports\n containingFile = path.join(this.options.basePath, 'index.ts').replace(/\\\\/g, '/');\n }\n const resolved = ts.resolveModuleName(moduleName, containingFile, this.options, this.hostAdapter)\n .resolvedModule;\n return resolved ? resolved.resolvedFileName : null;\n }\n getOutputName(filePath) { return filePath; }\n}\n//# sourceMappingURL=reflector_host.js.map","/**\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 */\nimport { AotSummaryResolver, CompileMetadataResolver, CompilerConfig, DEFAULT_INTERPOLATION_CONFIG, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, HtmlParser, JitSummaryResolver, NgModuleResolver, ParseTreeResult, PipeResolver, ResourceLoader, StaticReflector, StaticSymbolCache, StaticSymbolResolver, analyzeNgModules, createOfflineCompileUrlResolver, isFormattedError } from '@angular/compiler';\nimport { getClassMembersFromDeclaration, getPipesTable, getSymbolQuery } from '@angular/compiler-cli/src/language_services';\nimport { ViewEncapsulation, ɵConsole as Console } from '@angular/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\nimport { createLanguageService } from './language_service';\nimport { ReflectorHost } from './reflector_host';\n/**\n * Create a `LanguageServiceHost`\n */\nexport function createLanguageServiceFromTypescript(host, service) {\n const ngHost = new TypeScriptServiceHost(host, service);\n const ngServer = createLanguageService(ngHost);\n ngHost.setSite(ngServer);\n return ngServer;\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(source, url, parseExpansionForms = false, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n return new ParseTreeResult([], []);\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) { return Promise.resolve(''); }\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 {\n constructor(host, tsService) {\n this.host = host;\n this.tsService = tsService;\n this._staticSymbolCache = new StaticSymbolCache();\n this._typeCache = [];\n this.modulesOutOfDate = true;\n this.fileVersions = new Map();\n }\n setSite(service) { this.service = service; }\n /**\n * Angular LanguageServiceHost implementation\n */\n get resolver() {\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 = new CompilerConfig({ defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false });\n const directiveNormalizer = new DirectiveNormalizer(resourceLoader, urlResolver, htmlParser, config);\n result = this._resolver = new CompileMetadataResolver(config, htmlParser, moduleResolver, directiveResolver, pipeResolver, new JitSummaryResolver(), elementSchemaRegistry, directiveNormalizer, new Console(), this._staticSymbolCache, this.reflector, (error, type) => this.collectError(error, type && type.filePath));\n }\n return result;\n }\n getTemplateReferences() {\n this.ensureTemplateMap();\n return this.templateReferences || [];\n }\n getTemplateAt(fileName, position) {\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(fileName, this.host.getScriptVersion(sourceFile.fileName), node);\n }\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(fileName, this.host.getScriptVersion(fileName), componentType);\n }\n }\n return undefined;\n }\n getAnalyzedModules() {\n this.updateAnalyzedModules();\n return this.ensureAnalyzedModules();\n }\n ensureAnalyzedModules() {\n let analyzedModules = this.analyzedModules;\n if (!analyzedModules) {\n if (this.host.getScriptFileNames().length === 0) {\n analyzedModules = {\n files: [],\n ngModuleByPipeOrDirective: new Map(),\n ngModules: [],\n };\n }\n else {\n const analyzeHost = { isSourceFile(filePath) { return true; } };\n const programFiles = this.program.getSourceFiles().map(sf => sf.fileName);\n analyzedModules =\n analyzeNgModules(programFiles, analyzeHost, this.staticSymbolResolver, this.resolver);\n }\n this.analyzedModules = analyzedModules;\n }\n return analyzedModules;\n }\n getTemplates(fileName) {\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 }\n else {\n let version = this.host.getScriptVersion(fileName);\n let result = [];\n // Find each template string in the file\n let visit = (child) => {\n let templateSource = this.getSourceFromNode(fileName, version, child);\n if (templateSource) {\n result.push(templateSource);\n }\n else {\n ts.forEachChild(child, visit);\n }\n };\n let sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.path || sourceFile.fileName;\n ts.forEachChild(sourceFile, visit);\n }\n return result.length ? result : undefined;\n }\n }\n getDeclarations(fileName) {\n const result = [];\n const sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n let visit = (child) => {\n let declaration = this.getDeclarationFromNode(sourceFile, child);\n if (declaration) {\n result.push(declaration);\n }\n else {\n ts.forEachChild(child, visit);\n }\n };\n ts.forEachChild(sourceFile, visit);\n }\n return result;\n }\n getSourceFile(fileName) {\n return this.tsService.getProgram().getSourceFile(fileName);\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 get program() { return this.tsService.getProgram(); }\n get checker() {\n let checker = this._checker;\n if (!checker) {\n checker = this._checker = this.program.getTypeChecker();\n }\n return checker;\n }\n validate() {\n const program = this.program;\n if (this.lastProgram !== program) {\n // Invalidate file that have changed in the static symbol resolver\n const invalidateFile = (fileName) => this._staticSymbolResolver.invalidateFile(fileName);\n this.clearCaches();\n const seen = new Set();\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 if (this._staticSymbolResolver) {\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 if (this._staticSymbolResolver) {\n missing.forEach(invalidateFile);\n }\n this.lastProgram = program;\n }\n }\n clearCaches() {\n this._checker = null;\n this._typeCache = [];\n this._resolver = null;\n this.collectedErrors = null;\n this.modulesOutOfDate = true;\n }\n ensureTemplateMap() {\n if (!this.fileToComponent || !this.templateReferences) {\n const fileToComponent = new Map();\n const templateReference = [];\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(this.reflector.componentModuleUrl(directive.reference), 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 getSourceFromDeclaration(fileName, version, source, span, type, declaration, node, sourceFile) {\n let queryCache = 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(t.program, t.checker, sourceFile, () => getPipesTable(sourceFile, t.program, t.checker, pipes));\n }\n return queryCache;\n }\n };\n }\n }\n getSourceFromNode(fileName, version, node) {\n let result = 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(fileName, version, this.stringOf(node) || '', shrink(spanOf(node)), this.reflector.getStaticSymbol(sourceFile.fileName, declaration.name.text), declaration, node, sourceFile);\n }\n break;\n }\n return result;\n }\n getSourceFromType(fileName, version, type) {\n let result = 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(fileName, version, source, { start: 0, end: source.length }, type, declaration, declaration, declaration.getSourceFile());\n }\n }\n return result;\n }\n get 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 const scriptFileNames = this.host.getScriptFileNames();\n if (0 === scriptFileNames.length) {\n throw new Error('Internal error: no script file names found');\n }\n this.context = scriptFileNames[0];\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 const tsConfigPath = findTsConfig(source.fileName);\n const basePath = path.dirname(tsConfigPath || this.context);\n const options = { basePath, genDir: basePath };\n const compilerOptions = this.host.getCompilationSettings();\n if (compilerOptions && compilerOptions.baseUrl) {\n options.baseUrl = compilerOptions.baseUrl;\n }\n if (compilerOptions && compilerOptions.paths) {\n options.paths = compilerOptions.paths;\n }\n result = this._reflectorHost =\n new ReflectorHost(() => this.tsService.getProgram(), this.host, options);\n }\n return result;\n }\n collectError(error, filePath) {\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 get staticSymbolResolver() {\n let result = this._staticSymbolResolver;\n if (!result) {\n this._summaryResolver = new AotSummaryResolver({\n loadSummary(filePath) { return null; },\n isSourceFile(sourceFilePath) { return true; },\n toSummaryFileName(sourceFilePath) { return sourceFilePath; },\n fromSummaryFileName(filePath) { return filePath; },\n }, this._staticSymbolCache);\n result = this._staticSymbolResolver = new StaticSymbolResolver(this.reflectorHost, this._staticSymbolCache, this._summaryResolver, (e, filePath) => this.collectError(e, filePath));\n }\n return result;\n }\n get reflector() {\n let result = this._reflector;\n if (!result) {\n const ssr = this.staticSymbolResolver;\n result = this._reflector = new StaticReflector(this._summaryResolver, ssr, [], [], (e, filePath) => this.collectError(e, filePath));\n }\n return result;\n }\n getTemplateClassFromStaticSymbol(type) {\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;\n if (classDeclaration.name != null && classDeclaration.name.text === type.name) {\n return classDeclaration;\n }\n }\n });\n return declarationNode;\n }\n return 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 getTemplateClassDeclFromNode(currentToken) {\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 }\n else {\n // TODO: Is this different for a literal, i.e. a quoted property name like \"template\"?\n if (parentNode.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 parentNode = parentNode.parent; // CallExpression\n if (!parentNode || parentNode.kind !== ts.SyntaxKind.CallExpression) {\n return TypeScriptServiceHost.missingTemplate;\n }\n const callTarget = parentNode.expression;\n let decorator = parentNode.parent; // Decorator\n if (!decorator || decorator.kind !== ts.SyntaxKind.Decorator) {\n return TypeScriptServiceHost.missingTemplate;\n }\n let declaration = decorator.parent; // ClassDeclaration\n if (!declaration || declaration.kind !== ts.SyntaxKind.ClassDeclaration) {\n return TypeScriptServiceHost.missingTemplate;\n }\n return [declaration, callTarget];\n }\n getCollectedErrors(defaultSpan, sourceFile) {\n const errors = (this.collectedErrors && this.collectedErrors.get(sourceFile.fileName));\n return (errors && errors.map((e) => {\n const line = e.line || (e.position && e.position.line);\n const column = e.column || (e.position && e.position.column);\n const span = spanAt(sourceFile, line, column) || defaultSpan;\n if (isFormattedError(e)) {\n return errorToDiagnosticWithChain(e, span);\n }\n return { message: e.message, span };\n })) ||\n [];\n }\n getDeclarationFromNode(sourceFile, node) {\n if (node.kind == ts.SyntaxKind.ClassDeclaration && node.decorators &&\n node.name) {\n for (const decorator of node.decorators) {\n if (decorator.expression && decorator.expression.kind == ts.SyntaxKind.CallExpression) {\n const classDeclaration = node;\n if (classDeclaration.name) {\n const call = decorator.expression;\n const target = call.expression;\n const type = this.checker.getTypeAtLocation(target);\n if (type) {\n const staticSymbol = this.reflector.getStaticSymbol(sourceFile.fileName, classDeclaration.name.text);\n try {\n if (this.resolver.isDirective(staticSymbol)) {\n const { metadata } = this.resolver.getNonNormalizedDirectiveMetadata(staticSymbol);\n const declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan,\n metadata,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\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 stringOf(node) {\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n return node.text;\n case ts.SyntaxKind.StringLiteral:\n return node.text;\n }\n }\n findNode(sourceFile, position) {\n function find(node) {\n if (position >= node.getStart() && position < node.getEnd()) {\n return ts.forEachChild(node, find) || node;\n }\n }\n return find(sourceFile);\n }\n}\nTypeScriptServiceHost.missingTemplate = [undefined, undefined];\nfunction findTsConfig(fileName) {\n let dir = path.dirname(fileName);\n while (fs.existsSync(dir)) {\n const candidate = path.join(dir, 'tsconfig.json');\n if (fs.existsSync(candidate))\n return candidate;\n const parentDir = path.dirname(dir);\n if (parentDir === dir)\n break;\n dir = parentDir;\n }\n}\nfunction spanOf(node) {\n return { start: node.getStart(), end: node.getEnd() };\n}\nfunction shrink(span, offset) {\n if (offset == null)\n offset = 1;\n return { start: span.start + offset, end: span.end - offset };\n}\nfunction spanAt(sourceFile, line, column) {\n if (line != null && column != null) {\n const position = ts.getPositionOfLineAndCharacter(sourceFile, line, column);\n const findChild = function findChild(node) {\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 const node = ts.forEachChild(sourceFile, findChild);\n if (node) {\n return { start: node.getStart(), end: node.getEnd() };\n }\n }\n}\nfunction chainedMessage(chain, indent = '') {\n return indent + chain.message + (chain.next ? chainedMessage(chain.next, indent + ' ') : '');\n}\nclass DiagnosticMessageChainImpl {\n constructor(message, next) {\n this.message = message;\n this.next = next;\n }\n toString() { return chainedMessage(this); }\n}\nfunction convertChain(chain) {\n return { message: chain.message, next: chain.next ? convertChain(chain.next) : undefined };\n}\nfunction errorToDiagnosticWithChain(error, span) {\n return { message: error.chain ? convertChain(error.chain) : error.message, span };\n}\n//# sourceMappingURL=typescript_host.js.map","/**\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 */\nimport * as ts from 'typescript';\nimport { createLanguageService } from './language_service';\nimport { TypeScriptServiceHost } from './typescript_host';\nconst projectHostMap = new WeakMap();\nexport function getExternalFiles(project) {\n const host = projectHostMap.get(project);\n if (host) {\n return host.getTemplateReferences();\n }\n}\nconst angularOnlyResults = process.argv.indexOf('--angularOnlyResults') >= 0;\nfunction angularOnlyFilter(ls) {\n return {\n cleanupSemanticCache: () => ls.cleanupSemanticCache(),\n getSyntacticDiagnostics: fileName => [],\n getSemanticDiagnostics: fileName => [],\n getCompilerOptionsDiagnostics: () => [],\n getSyntacticClassifications: (fileName, span) => [],\n getSemanticClassifications: (fileName, span) => [],\n getEncodedSyntacticClassifications: (fileName, span) => ({ undefined }),\n getEncodedSemanticClassifications: (fileName, span) => undefined,\n getCompletionsAtPosition: (fileName, position) => undefined,\n getCompletionEntryDetails: (fileName, position, entryName) => undefined,\n getCompletionEntrySymbol: (fileName, position, entryName) => undefined,\n getQuickInfoAtPosition: (fileName, position) => undefined,\n getNameOrDottedNameSpan: (fileName, startPos, endPos) => undefined,\n getBreakpointStatementAtPosition: (fileName, position) => undefined,\n getSignatureHelpItems: (fileName, position) => undefined,\n getRenameInfo: (fileName, position) => undefined,\n findRenameLocations: (fileName, position, findInStrings, findInComments) => [],\n getDefinitionAtPosition: (fileName, position) => [],\n getTypeDefinitionAtPosition: (fileName, position) => [],\n getImplementationAtPosition: (fileName, position) => [],\n getReferencesAtPosition: (fileName, position) => [],\n findReferences: (fileName, position) => [],\n getDocumentHighlights: (fileName, position, filesToSearch) => [],\n /** @deprecated */\n getOccurrencesAtPosition: (fileName, position) => [],\n getNavigateToItems: searchValue => [],\n getNavigationBarItems: fileName => [],\n getNavigationTree: fileName => undefined,\n getOutliningSpans: fileName => [],\n getTodoComments: (fileName, descriptors) => [],\n getBraceMatchingAtPosition: (fileName, position) => [],\n getIndentationAtPosition: (fileName, position, options) => undefined,\n getFormattingEditsForRange: (fileName, start, end, options) => [],\n getFormattingEditsForDocument: (fileName, options) => [],\n getFormattingEditsAfterKeystroke: (fileName, position, key, options) => [],\n getDocCommentTemplateAtPosition: (fileName, position) => undefined,\n isValidBraceCompletionAtPosition: (fileName, position, openingBrace) => undefined,\n getSpanOfEnclosingComment: (fileName, position, onlyMultiLine) => undefined,\n getCodeFixesAtPosition: (fileName, start, end, errorCodes) => [],\n applyCodeActionCommand: (action) => Promise.resolve(undefined),\n getEmitOutput: fileName => undefined,\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose(),\n getApplicableRefactors: (fileName, positionOrRaneg) => [],\n getEditsForRefactor: (fileName, formatOptions, positionOrRange, refactorName, actionName) => undefined\n };\n}\nexport function create(info /* ts.server.PluginCreateInfo */) {\n // Create the proxy\n const proxy = Object.create(null);\n let oldLS = info.languageService;\n if (angularOnlyResults) {\n oldLS = angularOnlyFilter(oldLS);\n }\n function tryCall(fileName, callback) {\n if (fileName && !oldLS.getProgram().getSourceFile(fileName)) {\n return undefined;\n }\n try {\n return callback();\n }\n catch (e) {\n return undefined;\n }\n }\n function tryFilenameCall(m) {\n return fileName => tryCall(fileName, () => (m.call(ls, fileName)));\n }\n function tryFilenameOneCall(m) {\n return (fileName, p) => tryCall(fileName, () => (m.call(ls, fileName, p)));\n }\n function tryFilenameTwoCall(m) {\n return (fileName, p1, p2) => tryCall(fileName, () => (m.call(ls, fileName, p1, p2)));\n }\n function tryFilenameThreeCall(m) {\n return (fileName, p1, p2, p3) => tryCall(fileName, () => (m.call(ls, fileName, p1, p2, p3)));\n }\n function tryFilenameFourCall(m) {\n return (fileName, p1, p2, p3, p4) => tryCall(fileName, () => (m.call(ls, fileName, p1, p2, p3, p4)));\n }\n function typescriptOnly(ls) {\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: tryFilenameTwoCall(ls.getCompletionsAtPosition),\n getCompletionEntryDetails: tryFilenameFourCall(ls.getCompletionEntryDetails),\n getCompletionEntrySymbol: tryFilenameThreeCall(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: (searchValue, maxResultCount, fileName, excludeDtsFiles) => tryCall(fileName, () => 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 getSpanOfEnclosingComment: tryFilenameTwoCall(ls.getSpanOfEnclosingComment),\n getCodeFixesAtPosition: tryFilenameFourCall(ls.getCodeFixesAtPosition),\n applyCodeActionCommand: ((action) => tryCall(undefined, () => ls.applyCodeActionCommand(action))),\n getEmitOutput: tryFilenameCall(ls.getEmitOutput),\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose(),\n getApplicableRefactors: tryFilenameOneCall(ls.getApplicableRefactors),\n getEditsForRefactor: tryFilenameFourCall(ls.getEditsForRefactor)\n };\n }\n oldLS = typescriptOnly(oldLS);\n for (const k in oldLS) {\n proxy[k] = function () { return oldLS[k].apply(oldLS, arguments); };\n }\n function completionToEntry(c) {\n return {\n // TODO: remove any and fix type error.\n kind: c.kind,\n name: c.name,\n sortText: c.sort,\n kindModifiers: ''\n };\n }\n function diagnosticChainToDiagnosticChain(chain) {\n return {\n messageText: chain.message,\n category: ts.DiagnosticCategory.Error,\n code: 0,\n next: chain.next ? diagnosticChainToDiagnosticChain(chain.next) : undefined\n };\n }\n function diagnosticMessageToDiagnosticMessageText(message) {\n if (typeof message === 'string') {\n return message;\n }\n return diagnosticChainToDiagnosticChain(message);\n }\n function diagnosticToDiagnostic(d, file) {\n const result = {\n file,\n start: d.span.start,\n length: d.span.end - d.span.start,\n messageText: diagnosticMessageToDiagnosticMessageText(d.message),\n category: ts.DiagnosticCategory.Error,\n code: 0,\n source: 'ng'\n };\n return result;\n }\n function tryOperation(attempting, callback) {\n try {\n return callback();\n }\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 const serviceHost = new TypeScriptServiceHost(info.languageServiceHost, info.languageService);\n const ls = createLanguageService(serviceHost);\n serviceHost.setSite(ls);\n projectHostMap.set(info.project, serviceHost);\n proxy.getCompletionsAtPosition = function (fileName, position, options) {\n let base = oldLS.getCompletionsAtPosition(fileName, position, options) || {\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 proxy.getQuickInfoAtPosition = function (fileName, position) {\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 = [];\n for (const part of ours.text) {\n displayParts.push({ kind: part.language || 'angular', text: part.text });\n }\n const tags = base && base.tags;\n base = {\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 base.tags = tags;\n }\n }\n });\n return base;\n };\n proxy.getSemanticDiagnostics = function (fileName) {\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 return base;\n };\n proxy.getDefinitionAtPosition = function (fileName, position) {\n let base = oldLS.getDefinitionAtPosition(fileName, position);\n if (base && base.length) {\n return base;\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 // TODO: remove any and fix type error.\n kind: 'definition',\n containerName: loc.fileName,\n containerKind: 'file',\n });\n }\n }\n return base;\n }) || [];\n };\n return proxy;\n}\n//# sourceMappingURL=ts_plugin.js.map","/**\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 * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\nimport { Version } from '@angular/core';\n/**\n * @stable\n */\nexport const VERSION = new Version('5.2.7');\n//# sourceMappingURL=version.js.map","/**\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 * @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 { TypeScriptServiceHost, createLanguageServiceFromTypescript } from './src/typescript_host';\nexport { VERSION } from './src/version';\n//# sourceMappingURL=language-service.js.map"],"names":["path","AstPathBase","getExpressionScope","ts.createModuleResolutionCache","path.join","ts.resolveModuleName","Console","version","ts.forEachChild","ts.SyntaxKind","spanOf","path.dirname","fs.existsSync","ts.getPositionOfLineAndCharacter","ts.DiagnosticCategory"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"language-service.js","sources":["../../../packages/language-service/src/types.js","../../../packages/language-service/src/utils.js","../../../packages/language-service/src/expressions.js","../../../packages/language-service/src/html_info.js","../../../packages/language-service/src/completions.js","../../../packages/language-service/src/locate_symbol.js","../../../packages/language-service/src/definitions.js","../../../packages/language-service/src/diagnostics.js","../../../packages/language-service/src/hover.js","../../../packages/language-service/src/language_service.js","../../../packages/language-service/src/reflector_host.js","../../../packages/language-service/src/typescript_host.js","../../../packages/language-service/src/ts_plugin.js","../../../packages/language-service/src/version.js","../../../packages/language-service/language-service.js"],"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 */\nimport { BuiltinType } from '@angular/compiler-cli/src/language_services';\nexport { BuiltinType };\n/**\n * The kind of diagnostic message.\n *\n * @experimental\n */\nexport var DiagnosticKind;\n(function (DiagnosticKind) {\n DiagnosticKind[DiagnosticKind[\"Error\"] = 0] = \"Error\";\n DiagnosticKind[DiagnosticKind[\"Warning\"] = 1] = \"Warning\";\n})(DiagnosticKind || (DiagnosticKind = {}));\n//# sourceMappingURL=types.js.map","/**\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 */\nimport { AstPath, CssSelector, RecursiveTemplateAstVisitor, identifierName, templateVisitAll } from '@angular/compiler';\nimport * as ts from 'typescript';\nexport function isParseSourceSpan(value) {\n return value && !!value.start;\n}\nexport function spanOf(span) {\n if (!span)\n return undefined;\n if (isParseSourceSpan(span)) {\n return { start: span.start.offset, end: span.end.offset };\n }\n else {\n if (span.endSourceSpan) {\n return { start: span.sourceSpan.start.offset, end: span.endSourceSpan.end.offset };\n }\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}\nexport function inSpan(position, span, exclusive) {\n return span != null && (exclusive ? position >= span.start && position < span.end :\n position >= span.start && position <= span.end);\n}\nexport function offsetSpan(span, amount) {\n return { start: span.start + amount, end: span.end + amount };\n}\nexport function isNarrower(spanA, spanB) {\n return spanA.start >= spanB.start && spanA.end <= spanB.end;\n}\nexport function hasTemplateReference(type) {\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}\nexport function getSelectors(info) {\n const map = new Map();\n const selectors = flatten(info.directives.map(directive => {\n const selectors = CssSelector.parse(directive.selector);\n selectors.forEach(selector => map.set(selector, directive));\n return selectors;\n }));\n return { selectors, map };\n}\nexport function flatten(a) {\n return [].concat(...a);\n}\nexport function removeSuffix(value, suffix) {\n if (value.endsWith(suffix))\n return value.substring(0, value.length - suffix.length);\n return value;\n}\nexport function uniqueByName(elements) {\n if (elements) {\n const result = [];\n const set = new Set();\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}\nexport function isTypescriptVersion(low, high) {\n const version = ts.version;\n if (version.substring(0, low.length) < low)\n return false;\n if (high && (version.substring(0, high.length) > high))\n return false;\n return true;\n}\nexport function diagnosticInfoFromTemplateInfo(info) {\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}\nexport function findTemplateAstAt(ast, position, allowWidening = false) {\n const path = [];\n const visitor = new class extends RecursiveTemplateAstVisitor {\n visit(ast, context) {\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 }\n else {\n // Returning a value here will result in the children being skipped.\n return true;\n }\n }\n visitEmbeddedTemplate(ast, context) {\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 visitElement(ast, context) {\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 visitDirective(ast, context) {\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 templateVisitAll(visitor, ast);\n return new AstPath(path, position);\n}\n//# sourceMappingURL=utils.js.map","/**\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 */\nimport { ASTWithSource, AstPath as AstPathBase, NullAstVisitor, visitAstChildren } from '@angular/compiler';\nimport { AstType } from '@angular/compiler-cli/src/language_services';\nimport { BuiltinType } from './types';\nimport { inSpan } from './utils';\nfunction findAstAt(ast, position, excludeEmpty = false) {\n const path = [];\n const visitor = new class extends NullAstVisitor {\n visit(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 // 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 visitor.visit(ast);\n return new AstPathBase(path, position);\n}\nexport function getExpressionCompletions(scope, ast, position, query) {\n const path = findAstAt(ast, position);\n if (path.empty)\n return undefined;\n const tail = path.tail;\n let result = scope;\n function getType(ast) { return new AstType(scope, query, {}).getType(ast); }\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.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 return result && result.values();\n}\nexport function getExpressionSymbol(scope, ast, position, query) {\n const path = findAstAt(ast, position, /* excludeEmpty */ true);\n if (path.empty)\n return undefined;\n const tail = path.tail;\n function getType(ast) { return new AstType(scope, query, {}).getType(ast); }\n let symbol = undefined;\n let span = undefined;\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.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 if (symbol && span) {\n return { symbol, span };\n }\n}\n//# sourceMappingURL=expressions.js.map","/**\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 */\nconst values = [\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];\nconst groups = [\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];\nconst elements = {\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};\nconst defaultAttributes = [0, 1, 2, 4];\nexport function elementNames() {\n return Object.keys(elements).sort().map(v => v.toLowerCase());\n}\nfunction compose(indexes) {\n const result = {};\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))\n result[name] = values[group[name]];\n }\n }\n return result;\n}\nexport function attributeNames(element) {\n return Object.keys(compose(elements[element.toUpperCase()] || defaultAttributes)).sort();\n}\nexport function attributeType(element, attribute) {\n return compose(elements[element.toUpperCase()] || defaultAttributes)[attribute.toLowerCase()];\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 = [\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];\nconst attrToPropMap = {\n 'class': 'className',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex'\n};\nconst EVENT = 'event';\nconst BOOLEAN = 'boolean';\nconst NUMBER = 'number';\nconst STRING = 'string';\nconst OBJECT = 'object';\nexport class SchemaInformation {\n constructor() {\n this.schema = {};\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 = {};\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) => {\n if (property == '') {\n }\n else if (property.startsWith('*')) {\n type[property.substring(1)] = EVENT;\n }\n else if (property.startsWith('!')) {\n type[property.substring(1)] = BOOLEAN;\n }\n else if (property.startsWith('#')) {\n type[property.substring(1)] = NUMBER;\n }\n else if (property.startsWith('%')) {\n type[property.substring(1)] = OBJECT;\n }\n else {\n type[property] = STRING;\n }\n });\n });\n }\n allKnownElements() { return Object.keys(this.schema); }\n eventsOf(elementName) {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] === EVENT);\n }\n propertiesOf(elementName) {\n const elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(property => elementType[property] !== EVENT);\n }\n typeOf(elementName, property) {\n return (this.schema[elementName.toLowerCase()] || {})[property];\n }\n static get instance() {\n let result = SchemaInformation._instance;\n if (!result) {\n result = SchemaInformation._instance = new SchemaInformation();\n }\n return result;\n }\n}\nexport function eventNames(elementName) {\n return SchemaInformation.instance.eventsOf(elementName);\n}\nexport function propertyNames(elementName) {\n return SchemaInformation.instance.propertiesOf(elementName);\n}\nexport function propertyType(elementName, propertyName) {\n return SchemaInformation.instance.typeOf(elementName, propertyName);\n}\n//# sourceMappingURL=html_info.js.map","/**\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 */\nimport { CssSelector, Element, ImplicitReceiver, NAMED_ENTITIES, NullTemplateVisitor, ParseSpan, PropertyRead, SelectorMatcher, TagContentType, Text, findNode, getHtmlTagDefinition, splitNsName } from '@angular/compiler';\nimport { getExpressionScope } from '@angular/compiler-cli/src/language_services';\nimport { getExpressionCompletions } from './expressions';\nimport { attributeNames, elementNames, eventNames, propertyNames } from './html_info';\nimport { diagnosticInfoFromTemplateInfo, findTemplateAstAt, flatten, getSelectors, hasTemplateReference, inSpan, removeSuffix, spanOf, uniqueByName } from './utils';\nconst TEMPLATE_ATTR_PREFIX = '*';\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};\nexport function getTemplateCompletions(templateInfo) {\n let result = 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 }\n else {\n let astPosition = templatePosition - mostSpecific.sourceSpan.start.offset;\n mostSpecific.visit({\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 }\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 }\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)\n return result;\n result = interpolationCompletions(templateInfo, templatePosition);\n if (result)\n 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 }\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 }, null);\n }\n }\n return result;\n}\nfunction attributeCompletions(info, path) {\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}\nfunction attributeCompletionsForElement(info, elementName, element) {\n const attributes = getAttributeInfosForElement(info, elementName, element);\n // Map all the attributes to a completion\n return attributes.map(attr => ({\n kind: attr.fromHtml ? 'html attribute' : 'attribute',\n name: nameOfAttr(attr),\n sort: attr.name\n }));\n}\nfunction getAttributeInfosForElement(info, elementName, element) {\n let attributes = [];\n // Add html attributes\n let htmlAttributes = attributeNames(elementName) || [];\n if (htmlAttributes) {\n attributes.push(...htmlAttributes.map(name => ({ name, fromHtml: true })));\n }\n // Add html properties\n let htmlProperties = propertyNames(elementName);\n if (htmlProperties) {\n attributes.push(...htmlProperties.map(name => ({ name, input: true })));\n }\n // Add html events\n let htmlEvents = eventNames(elementName);\n if (htmlEvents) {\n attributes.push(...htmlEvents.map(name => ({ name, output: true })));\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 = selectors.filter(selector => !selector.element || selector.element == elementName);\n const selectorAndAttributeNames = applicableSelectors.map(selector => ({ selector, attrs: selector.attrs.filter(a => !!a) }));\n let attrs = flatten(selectorAndAttributeNames.map(selectorAndAttr => {\n const directive = selectorMap.get(selectorAndAttr.selector);\n const result = selectorAndAttr.attrs.map(name => ({ name, input: name in directive.inputs, output: name in directive.outputs }));\n return result;\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 // 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 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 // If a name shows up twice, fold it into a single value.\n attrs = foldAttrs(attrs);\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}\nfunction attributeValueCompletions(info, position, attr) {\n const path = findTemplateAstAt(info.templateAst, position);\n const mostSpecific = path.tail;\n const dinfo = diagnosticInfoFromTemplateInfo(info);\n if (mostSpecific) {\n const visitor = 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(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}\nfunction elementCompletions(info, path) {\n let htmlNames = elementNames().filter(name => !(name in hiddenHtmlElements));\n // Collect the elements referenced by the selectors\n let directiveElements = getSelectors(info)\n .selectors.map(selector => selector.element)\n .filter(name => !!name);\n let components = directiveElements.map(name => ({ kind: 'component', name, sort: name }));\n let htmlElements = htmlNames.map(name => ({ kind: 'element', name: name, sort: name }));\n // Return components and html elements\n return uniqueByName(htmlElements.concat(components));\n}\nfunction entityCompletions(value, position) {\n // Look for entity completions\n const re = /&[A-Za-z]*;?(?!\\d)/g;\n let found;\n let result = 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(name => ({ kind: 'entity', name: `&${name};`, sort: name }));\n break;\n }\n }\n return result;\n}\nfunction interpolationCompletions(info, position) {\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(info, position, undefined, () => getExpressionScope(diagnosticInfoFromTemplateInfo(info), templatePath, false));\n mostSpecific.visit(visitor, null);\n return uniqueByName(visitor.result);\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, path) {\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}\nclass ExpressionVisitor extends NullTemplateVisitor {\n constructor(info, position, attr, getExpressionScope) {\n super();\n this.info = info;\n this.position = position;\n this.attr = attr;\n this.getExpressionScope = getExpressionScope || (() => info.template.members);\n }\n visitDirectiveProperty(ast) {\n this.attributeValueCompletions(ast.value);\n }\n visitElementProperty(ast) {\n this.attributeValueCompletions(ast.value);\n }\n visitEvent(ast) { this.attributeValueCompletions(ast.handler); }\n visitElement(ast) {\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 const key = this.attr.name.substr(TEMPLATE_ATTR_PREFIX.length);\n // Find the selector\n const selectorInfo = getSelectors(this.info);\n const selectors = selectorInfo.selectors;\n const selector = selectors.filter(s => s.attrs.some((attr, i) => i % 2 == 0 && attr == key))[0];\n const templateBindingResult = this.info.expressionParser.parseTemplateBindings(key, this.attr.value, null);\n // find the template binding that contains the position\n if (!this.attr.valueSpan)\n return;\n const valueRelativePosition = this.position - this.attr.valueSpan.start.offset - 1;\n const bindings = templateBindingResult.templateBindings;\n const binding = bindings.find(binding => inSpan(valueRelativePosition, binding.span, /* exclusive */ true)) ||\n bindings.find(binding => inSpan(valueRelativePosition, binding.span));\n const keyCompletions = () => {\n let keys = [];\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 => ({ kind: 'key', name: key, sort: key }));\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 }\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 = this.info.template.query.getTemplateContext(directiveMetadata.type.reference);\n if (contextTable) {\n this.result = this.symbolsToCompletions(contextTable.values());\n }\n }\n }\n else if (binding.key && valueRelativePosition <= (binding.key.length - key.length)) {\n keyCompletions();\n }\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(binding.expression ? binding.expression.ast :\n new PropertyRead(span, new ImplicitReceiver(span), ''), valueRelativePosition);\n }\n else {\n keyCompletions();\n }\n }\n }\n }\n visitBoundText(ast) {\n const expressionPosition = this.position - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n const completions = getExpressionCompletions(this.getExpressionScope(), ast.value, expressionPosition, this.info.template.query);\n if (completions) {\n this.result = this.symbolsToCompletions(completions);\n }\n }\n }\n attributeValueCompletions(value, position) {\n const symbols = getExpressionCompletions(this.getExpressionScope(), value, position == null ? this.attributeValuePosition : position, this.info.template.query);\n if (symbols) {\n this.result = this.symbolsToCompletions(symbols);\n }\n }\n symbolsToCompletions(symbols) {\n return symbols.filter(s => !s.name.startsWith('__') && s.public)\n .map(symbol => ({ kind: symbol.kind, name: symbol.name, sort: symbol.name }));\n }\n 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}\nfunction getSourceText(template, span) {\n return template.source.substring(span.start, span.end);\n}\nfunction nameOfAttr(attr) {\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}\nconst templateAttr = /^(\\w+:)?(template$|^\\*)/;\nfunction createElementCssSelector(element) {\n const cssSelector = new CssSelector();\n let elNameNoNs = splitNsName(element.name)[1];\n cssSelector.setElement(elNameNoNs);\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}\nfunction foldAttrs(attrs) {\n let inputOutput = new Map();\n let templates = new Map();\n let result = [];\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 }\n else {\n let cloneAttr = { name: attr.name };\n if (attr.input)\n cloneAttr.input = true;\n if (attr.output)\n cloneAttr.output = true;\n result.push(cloneAttr);\n inputOutput.set(attr.name, cloneAttr);\n }\n }\n });\n return result;\n}\nfunction expandedAttr(attr) {\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}\nfunction lowerName(name) {\n return name && (name[0].toLowerCase() + name.substr(1));\n}\n//# sourceMappingURL=completions.js.map","/**\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 */\nimport { Attribute, ElementAst, findNode, tokenReference } from '@angular/compiler';\nimport { getExpressionScope } from '@angular/compiler-cli/src/language_services';\nimport { getExpressionSymbol } from './expressions';\nimport { diagnosticInfoFromTemplateInfo, findTemplateAstAt, inSpan, offsetSpan, spanOf } from './utils';\nexport function locateSymbol(info) {\n if (!info.position)\n 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 = undefined;\n let span = undefined;\n const attributeValueSymbol = (ast, inEvent = false) => {\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(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 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 }\n else {\n // Find a directive that matches the element name\n const directive = ast.directives.find(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 = 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 }, null);\n if (symbol && span) {\n return { symbol, span: offsetSpan(span, info.template.span.start) };\n }\n }\n}\nfunction findAttribute(info) {\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}\nfunction findInputBinding(info, path, binding) {\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}\nfunction findOutputBinding(info, path, binding) {\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}\nfunction invertMap(obj) {\n const result = {};\n for (const name of Object.keys(obj)) {\n const v = obj[name];\n result[v] = name;\n }\n return result;\n}\n/**\n * Wrap a symbol and change its kind to component.\n */\nclass OverrideKindSymbol {\n constructor(sym, kindOverride) {\n this.sym = sym;\n this.kind = kindOverride;\n }\n get name() { return this.sym.name; }\n get language() { return this.sym.language; }\n get type() { return this.sym.type; }\n get container() { return this.sym.container; }\n get public() { return this.sym.public; }\n get callable() { return this.sym.callable; }\n get nullable() { return this.sym.nullable; }\n get definition() { return this.sym.definition; }\n members() { return this.sym.members(); }\n signatures() { return this.sym.signatures(); }\n selectSignature(types) { return this.sym.selectSignature(types); }\n indexed(argument) { return this.sym.indexed(argument); }\n}\n//# sourceMappingURL=locate_symbol.js.map","/**\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 */\nimport { locateSymbol } from './locate_symbol';\nexport function getDefinition(info) {\n const result = locateSymbol(info);\n return result && result.symbol.definition;\n}\n//# sourceMappingURL=definitions.js.map","/**\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 */\nimport { getTemplateExpressionDiagnostics } from '@angular/compiler-cli/src/language_services';\nimport { DiagnosticKind } from './types';\nimport { offsetSpan, spanOf } from './utils';\nexport function getTemplateDiagnostics(fileName, astProvider, templates) {\n const results = [];\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(e => ({\n kind: DiagnosticKind.Error,\n span: offsetSpan(spanOf(e.span), template.span.start),\n message: e.msg\n })));\n }\n else if (ast.templateAst && ast.htmlAst) {\n const info = {\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(e => ({ kind: e.kind, span: e.span || template.span, message: e.message })));\n }\n }\n }\n return results;\n}\nexport function getDeclarationDiagnostics(declarations, modules) {\n const results = [];\n let directives = undefined;\n for (const declaration of declarations) {\n const report = (message, span) => {\n results.push({\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(`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 const { template, templateUrl } = declaration.metadata.template;\n if (template === null && !templateUrl) {\n report(`Component '${declaration.type.name}' must have a template or templateUrl`);\n }\n else if (template && templateUrl) {\n report(`Component '${declaration.type.name}' must not have both template and templateUrl`);\n }\n }\n else {\n if (!directives) {\n directives = new Set();\n modules.ngModules.forEach(module => {\n module.declaredDirectives.forEach(directive => { directives.add(directive.reference); });\n });\n }\n if (!directives.has(declaration.type)) {\n report(`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 return results;\n}\n//# sourceMappingURL=diagnostics.js.map","/**\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 */\nimport { locateSymbol } from './locate_symbol';\nexport function getHover(info) {\n const result = locateSymbol(info);\n if (result) {\n return { text: hoverTextOf(result.symbol), span: result.span };\n }\n}\nfunction hoverTextOf(symbol) {\n const result = [{ 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//# sourceMappingURL=hover.js.map","/**\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 */\nimport { CompilerConfig, DomElementSchemaRegistry, HtmlParser, I18NHtmlParser, Lexer, Parser, TemplateParser } from '@angular/compiler';\nimport { getTemplateCompletions } from './completions';\nimport { getDefinition } from './definitions';\nimport { getDeclarationDiagnostics, getTemplateDiagnostics } from './diagnostics';\nimport { getHover } from './hover';\nimport { DiagnosticKind } from './types';\n/**\n * Create an instance of an Angular `LanguageService`.\n *\n * @experimental\n */\nexport function createLanguageService(host) {\n return new LanguageServiceImpl(host);\n}\nclass LanguageServiceImpl {\n constructor(host) {\n this.host = host;\n }\n get metadataResolver() { return this.host.resolver; }\n getTemplateReferences() { return this.host.getTemplateReferences(); }\n getDiagnostics(fileName) {\n let results = [];\n let templates = this.host.getTemplates(fileName);\n if (templates && templates.length) {\n results.push(...getTemplateDiagnostics(fileName, this, templates));\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 return uniqueBySpan(results);\n }\n getPipesAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return templateInfo.pipes;\n }\n return [];\n }\n getCompletionsAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getTemplateCompletions(templateInfo);\n }\n }\n getDefinitionAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getDefinition(templateInfo);\n }\n }\n getHoverAt(fileName, position) {\n let templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getHover(templateInfo);\n }\n }\n getTemplateAstAtPosition(fileName, position) {\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 getTemplateAst(template, contextFile) {\n let result = undefined;\n try {\n const resolvedMetadata = this.metadataResolver.getNonNormalizedDirectiveMetadata(template.type);\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(config, this.host.resolver.getReflector(), expressionParser, new DomElementSchemaRegistry(), htmlParser, null, []);\n const htmlResult = htmlParser.parse(template.source, '', true);\n const analyzedModules = this.host.getAnalyzedModules();\n let errors = 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(d => this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference));\n const directives = removeMissing(resolvedDirectives).map(d => d.metadata.toSummary());\n const pipes = ngModule.transitiveModule.pipes.map(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 }\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}\nfunction removeMissing(values) {\n return values.filter(e => !!e);\n}\nfunction uniqueBySpan(elements) {\n if (elements) {\n const result = [];\n const map = new Map();\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}\nfunction findSuitableDefaultModule(modules) {\n let result = 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//# sourceMappingURL=language_service.js.map","/**\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 */\nimport { MetadataCollector, createMetadataReaderCache, readMetadata } from '@angular/compiler-cli/src/language_services';\nimport * as path from 'path';\nimport * as ts from 'typescript';\nclass ReflectorModuleModuleResolutionHost {\n constructor(host, getProgram) {\n this.host = host;\n this.getProgram = getProgram;\n // Note: verboseInvalidExpressions is important so that\n // the collector will collect errors instead of throwing\n this.metadataCollector = new MetadataCollector({ verboseInvalidExpression: true });\n if (host.directoryExists)\n this.directoryExists = directoryName => this.host.directoryExists(directoryName);\n }\n fileExists(fileName) { return !!this.host.getScriptSnapshot(fileName); }\n readFile(fileName) {\n let snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n return snapshot.getText(0, snapshot.getLength());\n }\n // Typescript readFile() declaration should be `readFile(fileName: string): string | undefined\n return undefined;\n }\n getSourceFileMetadata(fileName) {\n const sf = this.getProgram().getSourceFile(fileName);\n return sf ? this.metadataCollector.getMetadata(sf) : undefined;\n }\n cacheMetadata(fileName) {\n // Don't cache the metadata for .ts files as they might change in the editor!\n return fileName.endsWith('.d.ts');\n }\n}\nexport class ReflectorHost {\n constructor(getProgram, serviceHost, options) {\n this.options = options;\n this.metadataReaderCache = createMetadataReaderCache();\n this.hostAdapter = new ReflectorModuleModuleResolutionHost(serviceHost, getProgram);\n this.moduleResolutionCache =\n ts.createModuleResolutionCache(serviceHost.getCurrentDirectory(), (s) => s);\n }\n getMetadataFor(modulePath) {\n return readMetadata(modulePath, this.hostAdapter, this.metadataReaderCache);\n }\n moduleNameToFileName(moduleName, containingFile) {\n if (!containingFile) {\n if (moduleName.indexOf('.') === 0) {\n throw new Error('Resolution of relative paths requires a containing file.');\n }\n // Any containing file gives the same result for absolute imports\n containingFile = path.join(this.options.basePath, 'index.ts').replace(/\\\\/g, '/');\n }\n const resolved = ts.resolveModuleName(moduleName, containingFile, this.options, this.hostAdapter)\n .resolvedModule;\n return resolved ? resolved.resolvedFileName : null;\n }\n getOutputName(filePath) { return filePath; }\n}\n//# sourceMappingURL=reflector_host.js.map","/**\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 */\nimport { AotSummaryResolver, CompileMetadataResolver, CompilerConfig, DEFAULT_INTERPOLATION_CONFIG, DirectiveNormalizer, DirectiveResolver, DomElementSchemaRegistry, HtmlParser, JitSummaryResolver, NgModuleResolver, ParseTreeResult, PipeResolver, ResourceLoader, StaticReflector, StaticSymbolCache, StaticSymbolResolver, analyzeNgModules, createOfflineCompileUrlResolver, isFormattedError } from '@angular/compiler';\nimport { getClassMembersFromDeclaration, getPipesTable, getSymbolQuery } from '@angular/compiler-cli/src/language_services';\nimport { ViewEncapsulation, ɵConsole as Console } from '@angular/core';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\nimport { createLanguageService } from './language_service';\nimport { ReflectorHost } from './reflector_host';\n/**\n * Create a `LanguageServiceHost`\n */\nexport function createLanguageServiceFromTypescript(host, service) {\n const ngHost = new TypeScriptServiceHost(host, service);\n const ngServer = createLanguageService(ngHost);\n ngHost.setSite(ngServer);\n return ngServer;\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(source, url, parseExpansionForms = false, interpolationConfig = DEFAULT_INTERPOLATION_CONFIG) {\n return new ParseTreeResult([], []);\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) { return Promise.resolve(''); }\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 {\n constructor(host, tsService) {\n this.host = host;\n this.tsService = tsService;\n this._staticSymbolCache = new StaticSymbolCache();\n this._typeCache = [];\n this.modulesOutOfDate = true;\n this.fileVersions = new Map();\n }\n setSite(service) { this.service = service; }\n /**\n * Angular LanguageServiceHost implementation\n */\n get resolver() {\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 = new CompilerConfig({ defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false });\n const directiveNormalizer = new DirectiveNormalizer(resourceLoader, urlResolver, htmlParser, config);\n result = this._resolver = new CompileMetadataResolver(config, htmlParser, moduleResolver, directiveResolver, pipeResolver, new JitSummaryResolver(), elementSchemaRegistry, directiveNormalizer, new Console(), this._staticSymbolCache, this.reflector, (error, type) => this.collectError(error, type && type.filePath));\n }\n return result;\n }\n getTemplateReferences() {\n this.ensureTemplateMap();\n return this.templateReferences || [];\n }\n getTemplateAt(fileName, position) {\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(fileName, this.host.getScriptVersion(sourceFile.fileName), node);\n }\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(fileName, this.host.getScriptVersion(fileName), componentType);\n }\n }\n return undefined;\n }\n getAnalyzedModules() {\n this.updateAnalyzedModules();\n return this.ensureAnalyzedModules();\n }\n ensureAnalyzedModules() {\n let analyzedModules = this.analyzedModules;\n if (!analyzedModules) {\n if (this.host.getScriptFileNames().length === 0) {\n analyzedModules = {\n files: [],\n ngModuleByPipeOrDirective: new Map(),\n ngModules: [],\n };\n }\n else {\n const analyzeHost = { isSourceFile(filePath) { return true; } };\n const programFiles = this.program.getSourceFiles().map(sf => sf.fileName);\n analyzedModules =\n analyzeNgModules(programFiles, analyzeHost, this.staticSymbolResolver, this.resolver);\n }\n this.analyzedModules = analyzedModules;\n }\n return analyzedModules;\n }\n getTemplates(fileName) {\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 }\n else {\n let version = this.host.getScriptVersion(fileName);\n let result = [];\n // Find each template string in the file\n let visit = (child) => {\n let templateSource = this.getSourceFromNode(fileName, version, child);\n if (templateSource) {\n result.push(templateSource);\n }\n else {\n ts.forEachChild(child, visit);\n }\n };\n let sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.path || sourceFile.fileName;\n ts.forEachChild(sourceFile, visit);\n }\n return result.length ? result : undefined;\n }\n }\n getDeclarations(fileName) {\n const result = [];\n const sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n let visit = (child) => {\n let declaration = this.getDeclarationFromNode(sourceFile, child);\n if (declaration) {\n result.push(declaration);\n }\n else {\n ts.forEachChild(child, visit);\n }\n };\n ts.forEachChild(sourceFile, visit);\n }\n return result;\n }\n getSourceFile(fileName) {\n return this.tsService.getProgram().getSourceFile(fileName);\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 get program() { return this.tsService.getProgram(); }\n get checker() {\n let checker = this._checker;\n if (!checker) {\n checker = this._checker = this.program.getTypeChecker();\n }\n return checker;\n }\n validate() {\n const program = this.program;\n if (this.lastProgram !== program) {\n // Invalidate file that have changed in the static symbol resolver\n const invalidateFile = (fileName) => this._staticSymbolResolver.invalidateFile(fileName);\n this.clearCaches();\n const seen = new Set();\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 if (this._staticSymbolResolver) {\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 if (this._staticSymbolResolver) {\n missing.forEach(invalidateFile);\n }\n this.lastProgram = program;\n }\n }\n clearCaches() {\n this._checker = null;\n this._typeCache = [];\n this._resolver = null;\n this.collectedErrors = null;\n this.modulesOutOfDate = true;\n }\n ensureTemplateMap() {\n if (!this.fileToComponent || !this.templateReferences) {\n const fileToComponent = new Map();\n const templateReference = [];\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(this.reflector.componentModuleUrl(directive.reference), 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 getSourceFromDeclaration(fileName, version, source, span, type, declaration, node, sourceFile) {\n let queryCache = 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(t.program, t.checker, sourceFile, () => getPipesTable(sourceFile, t.program, t.checker, pipes));\n }\n return queryCache;\n }\n };\n }\n }\n getSourceFromNode(fileName, version, node) {\n let result = 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(fileName, version, this.stringOf(node) || '', shrink(spanOf(node)), this.reflector.getStaticSymbol(sourceFile.fileName, declaration.name.text), declaration, node, sourceFile);\n }\n break;\n }\n return result;\n }\n getSourceFromType(fileName, version, type) {\n let result = 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(fileName, version, source, { start: 0, end: source.length }, type, declaration, declaration, declaration.getSourceFile());\n }\n }\n return result;\n }\n get 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 const scriptFileNames = this.host.getScriptFileNames();\n if (0 === scriptFileNames.length) {\n throw new Error('Internal error: no script file names found');\n }\n this.context = scriptFileNames[0];\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 const tsConfigPath = findTsConfig(source.fileName);\n const basePath = path.dirname(tsConfigPath || this.context);\n const options = { basePath, genDir: basePath };\n const compilerOptions = this.host.getCompilationSettings();\n if (compilerOptions && compilerOptions.baseUrl) {\n options.baseUrl = compilerOptions.baseUrl;\n }\n if (compilerOptions && compilerOptions.paths) {\n options.paths = compilerOptions.paths;\n }\n result = this._reflectorHost =\n new ReflectorHost(() => this.tsService.getProgram(), this.host, options);\n }\n return result;\n }\n collectError(error, filePath) {\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 get staticSymbolResolver() {\n let result = this._staticSymbolResolver;\n if (!result) {\n this._summaryResolver = new AotSummaryResolver({\n loadSummary(filePath) { return null; },\n isSourceFile(sourceFilePath) { return true; },\n toSummaryFileName(sourceFilePath) { return sourceFilePath; },\n fromSummaryFileName(filePath) { return filePath; },\n }, this._staticSymbolCache);\n result = this._staticSymbolResolver = new StaticSymbolResolver(this.reflectorHost, this._staticSymbolCache, this._summaryResolver, (e, filePath) => this.collectError(e, filePath));\n }\n return result;\n }\n get reflector() {\n let result = this._reflector;\n if (!result) {\n const ssr = this.staticSymbolResolver;\n result = this._reflector = new StaticReflector(this._summaryResolver, ssr, [], [], (e, filePath) => this.collectError(e, filePath));\n }\n return result;\n }\n getTemplateClassFromStaticSymbol(type) {\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;\n if (classDeclaration.name != null && classDeclaration.name.text === type.name) {\n return classDeclaration;\n }\n }\n });\n return declarationNode;\n }\n return 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 getTemplateClassDeclFromNode(currentToken) {\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 }\n else {\n // TODO: Is this different for a literal, i.e. a quoted property name like \"template\"?\n if (parentNode.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 parentNode = parentNode.parent; // CallExpression\n if (!parentNode || parentNode.kind !== ts.SyntaxKind.CallExpression) {\n return TypeScriptServiceHost.missingTemplate;\n }\n const callTarget = parentNode.expression;\n let decorator = parentNode.parent; // Decorator\n if (!decorator || decorator.kind !== ts.SyntaxKind.Decorator) {\n return TypeScriptServiceHost.missingTemplate;\n }\n let declaration = decorator.parent; // ClassDeclaration\n if (!declaration || declaration.kind !== ts.SyntaxKind.ClassDeclaration) {\n return TypeScriptServiceHost.missingTemplate;\n }\n return [declaration, callTarget];\n }\n getCollectedErrors(defaultSpan, sourceFile) {\n const errors = (this.collectedErrors && this.collectedErrors.get(sourceFile.fileName));\n return (errors && errors.map((e) => {\n const line = e.line || (e.position && e.position.line);\n const column = e.column || (e.position && e.position.column);\n const span = spanAt(sourceFile, line, column) || defaultSpan;\n if (isFormattedError(e)) {\n return errorToDiagnosticWithChain(e, span);\n }\n return { message: e.message, span };\n })) ||\n [];\n }\n getDeclarationFromNode(sourceFile, node) {\n if (node.kind == ts.SyntaxKind.ClassDeclaration && node.decorators &&\n node.name) {\n for (const decorator of node.decorators) {\n if (decorator.expression && decorator.expression.kind == ts.SyntaxKind.CallExpression) {\n const classDeclaration = node;\n if (classDeclaration.name) {\n const call = decorator.expression;\n const target = call.expression;\n const type = this.checker.getTypeAtLocation(target);\n if (type) {\n const staticSymbol = this.reflector.getStaticSymbol(sourceFile.fileName, classDeclaration.name.text);\n try {\n if (this.resolver.isDirective(staticSymbol)) {\n const { metadata } = this.resolver.getNonNormalizedDirectiveMetadata(staticSymbol);\n const declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan,\n metadata,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\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 stringOf(node) {\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n return node.text;\n case ts.SyntaxKind.StringLiteral:\n return node.text;\n }\n }\n findNode(sourceFile, position) {\n function find(node) {\n if (position >= node.getStart() && position < node.getEnd()) {\n return ts.forEachChild(node, find) || node;\n }\n }\n return find(sourceFile);\n }\n}\nTypeScriptServiceHost.missingTemplate = [undefined, undefined];\nfunction findTsConfig(fileName) {\n let dir = path.dirname(fileName);\n while (fs.existsSync(dir)) {\n const candidate = path.join(dir, 'tsconfig.json');\n if (fs.existsSync(candidate))\n return candidate;\n const parentDir = path.dirname(dir);\n if (parentDir === dir)\n break;\n dir = parentDir;\n }\n}\nfunction spanOf(node) {\n return { start: node.getStart(), end: node.getEnd() };\n}\nfunction shrink(span, offset) {\n if (offset == null)\n offset = 1;\n return { start: span.start + offset, end: span.end - offset };\n}\nfunction spanAt(sourceFile, line, column) {\n if (line != null && column != null) {\n const position = ts.getPositionOfLineAndCharacter(sourceFile, line, column);\n const findChild = function findChild(node) {\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 const node = ts.forEachChild(sourceFile, findChild);\n if (node) {\n return { start: node.getStart(), end: node.getEnd() };\n }\n }\n}\nfunction chainedMessage(chain, indent = '') {\n return indent + chain.message + (chain.next ? chainedMessage(chain.next, indent + ' ') : '');\n}\nclass DiagnosticMessageChainImpl {\n constructor(message, next) {\n this.message = message;\n this.next = next;\n }\n toString() { return chainedMessage(this); }\n}\nfunction convertChain(chain) {\n return { message: chain.message, next: chain.next ? convertChain(chain.next) : undefined };\n}\nfunction errorToDiagnosticWithChain(error, span) {\n return { message: error.chain ? convertChain(error.chain) : error.message, span };\n}\n//# sourceMappingURL=typescript_host.js.map","/**\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 */\nimport * as ts from 'typescript';\nimport { createLanguageService } from './language_service';\nimport { TypeScriptServiceHost } from './typescript_host';\nconst projectHostMap = new WeakMap();\nexport function getExternalFiles(project) {\n const host = projectHostMap.get(project);\n if (host) {\n return host.getTemplateReferences();\n }\n}\nconst angularOnlyResults = process.argv.indexOf('--angularOnlyResults') >= 0;\nfunction angularOnlyFilter(ls) {\n return {\n cleanupSemanticCache: () => ls.cleanupSemanticCache(),\n getSyntacticDiagnostics: fileName => [],\n getSemanticDiagnostics: fileName => [],\n getCompilerOptionsDiagnostics: () => [],\n getSyntacticClassifications: (fileName, span) => [],\n getSemanticClassifications: (fileName, span) => [],\n getEncodedSyntacticClassifications: (fileName, span) => ({ undefined }),\n getEncodedSemanticClassifications: (fileName, span) => undefined,\n getCompletionsAtPosition: (fileName, position) => undefined,\n getCompletionEntryDetails: (fileName, position, entryName) => undefined,\n getCompletionEntrySymbol: (fileName, position, entryName) => undefined,\n getQuickInfoAtPosition: (fileName, position) => undefined,\n getNameOrDottedNameSpan: (fileName, startPos, endPos) => undefined,\n getBreakpointStatementAtPosition: (fileName, position) => undefined,\n getSignatureHelpItems: (fileName, position) => undefined,\n getRenameInfo: (fileName, position) => undefined,\n findRenameLocations: (fileName, position, findInStrings, findInComments) => [],\n getDefinitionAtPosition: (fileName, position) => [],\n getTypeDefinitionAtPosition: (fileName, position) => [],\n getImplementationAtPosition: (fileName, position) => [],\n getReferencesAtPosition: (fileName, position) => [],\n findReferences: (fileName, position) => [],\n getDocumentHighlights: (fileName, position, filesToSearch) => [],\n /** @deprecated */\n getOccurrencesAtPosition: (fileName, position) => [],\n getNavigateToItems: searchValue => [],\n getNavigationBarItems: fileName => [],\n getNavigationTree: fileName => undefined,\n getOutliningSpans: fileName => [],\n getTodoComments: (fileName, descriptors) => [],\n getBraceMatchingAtPosition: (fileName, position) => [],\n getIndentationAtPosition: (fileName, position, options) => undefined,\n getFormattingEditsForRange: (fileName, start, end, options) => [],\n getFormattingEditsForDocument: (fileName, options) => [],\n getFormattingEditsAfterKeystroke: (fileName, position, key, options) => [],\n getDocCommentTemplateAtPosition: (fileName, position) => undefined,\n isValidBraceCompletionAtPosition: (fileName, position, openingBrace) => undefined,\n getSpanOfEnclosingComment: (fileName, position, onlyMultiLine) => undefined,\n getCodeFixesAtPosition: (fileName, start, end, errorCodes) => [],\n applyCodeActionCommand: (action) => Promise.resolve(undefined),\n getEmitOutput: fileName => undefined,\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose(),\n getApplicableRefactors: (fileName, positionOrRaneg) => [],\n getEditsForRefactor: (fileName, formatOptions, positionOrRange, refactorName, actionName) => undefined\n };\n}\nexport function create(info /* ts.server.PluginCreateInfo */) {\n // Create the proxy\n const proxy = Object.create(null);\n let oldLS = info.languageService;\n if (angularOnlyResults) {\n oldLS = angularOnlyFilter(oldLS);\n }\n function tryCall(fileName, callback) {\n if (fileName && !oldLS.getProgram().getSourceFile(fileName)) {\n return undefined;\n }\n try {\n return callback();\n }\n catch (e) {\n return undefined;\n }\n }\n function tryFilenameCall(m) {\n return fileName => tryCall(fileName, () => (m.call(ls, fileName)));\n }\n function tryFilenameOneCall(m) {\n return (fileName, p) => tryCall(fileName, () => (m.call(ls, fileName, p)));\n }\n function tryFilenameTwoCall(m) {\n return (fileName, p1, p2) => tryCall(fileName, () => (m.call(ls, fileName, p1, p2)));\n }\n function tryFilenameThreeCall(m) {\n return (fileName, p1, p2, p3) => tryCall(fileName, () => (m.call(ls, fileName, p1, p2, p3)));\n }\n function tryFilenameFourCall(m) {\n return (fileName, p1, p2, p3, p4) => tryCall(fileName, () => (m.call(ls, fileName, p1, p2, p3, p4)));\n }\n function typescriptOnly(ls) {\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: tryFilenameTwoCall(ls.getCompletionsAtPosition),\n getCompletionEntryDetails: tryFilenameFourCall(ls.getCompletionEntryDetails),\n getCompletionEntrySymbol: tryFilenameThreeCall(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: (searchValue, maxResultCount, fileName, excludeDtsFiles) => tryCall(fileName, () => 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 getSpanOfEnclosingComment: tryFilenameTwoCall(ls.getSpanOfEnclosingComment),\n getCodeFixesAtPosition: tryFilenameFourCall(ls.getCodeFixesAtPosition),\n applyCodeActionCommand: ((action) => tryCall(undefined, () => ls.applyCodeActionCommand(action))),\n getEmitOutput: tryFilenameCall(ls.getEmitOutput),\n getProgram: () => ls.getProgram(),\n dispose: () => ls.dispose(),\n getApplicableRefactors: tryFilenameOneCall(ls.getApplicableRefactors),\n getEditsForRefactor: tryFilenameFourCall(ls.getEditsForRefactor)\n };\n }\n oldLS = typescriptOnly(oldLS);\n for (const k in oldLS) {\n proxy[k] = function () { return oldLS[k].apply(oldLS, arguments); };\n }\n function completionToEntry(c) {\n return {\n // TODO: remove any and fix type error.\n kind: c.kind,\n name: c.name,\n sortText: c.sort,\n kindModifiers: ''\n };\n }\n function diagnosticChainToDiagnosticChain(chain) {\n return {\n messageText: chain.message,\n category: ts.DiagnosticCategory.Error,\n code: 0,\n next: chain.next ? diagnosticChainToDiagnosticChain(chain.next) : undefined\n };\n }\n function diagnosticMessageToDiagnosticMessageText(message) {\n if (typeof message === 'string') {\n return message;\n }\n return diagnosticChainToDiagnosticChain(message);\n }\n function diagnosticToDiagnostic(d, file) {\n const result = {\n file,\n start: d.span.start,\n length: d.span.end - d.span.start,\n messageText: diagnosticMessageToDiagnosticMessageText(d.message),\n category: ts.DiagnosticCategory.Error,\n code: 0,\n source: 'ng'\n };\n return result;\n }\n function tryOperation(attempting, callback) {\n try {\n return callback();\n }\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 const serviceHost = new TypeScriptServiceHost(info.languageServiceHost, info.languageService);\n const ls = createLanguageService(serviceHost);\n serviceHost.setSite(ls);\n projectHostMap.set(info.project, serviceHost);\n proxy.getCompletionsAtPosition = function (fileName, position, options) {\n let base = oldLS.getCompletionsAtPosition(fileName, position, options) || {\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 proxy.getQuickInfoAtPosition = function (fileName, position) {\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 = [];\n for (const part of ours.text) {\n displayParts.push({ kind: part.language || 'angular', text: part.text });\n }\n const tags = base && base.tags;\n base = {\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 base.tags = tags;\n }\n }\n });\n return base;\n };\n proxy.getSemanticDiagnostics = function (fileName) {\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 return base;\n };\n proxy.getDefinitionAtPosition = function (fileName, position) {\n let base = oldLS.getDefinitionAtPosition(fileName, position);\n if (base && base.length) {\n return base;\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 // TODO: remove any and fix type error.\n kind: 'definition',\n containerName: loc.fileName,\n containerKind: 'file',\n });\n }\n }\n return base;\n }) || [];\n };\n return proxy;\n}\n//# sourceMappingURL=ts_plugin.js.map","/**\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 * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\nimport { Version } from '@angular/core';\n/**\n * @stable\n */\nexport const VERSION = new Version('5.2.11');\n//# sourceMappingURL=version.js.map","/**\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 * @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 { TypeScriptServiceHost, createLanguageServiceFromTypescript } from './src/typescript_host';\nexport { VERSION } from './src/version';\n//# sourceMappingURL=language-service.js.map"],"names":["path","AstPathBase","getExpressionScope","ts.createModuleResolutionCache","path.join","ts.resolveModuleName","Console","version","ts.forEachChild","ts.SyntaxKind","spanOf","path.dirname","fs.existsSync","ts.getPositionOfLineAndCharacter","ts.DiagnosticCategory"],"mappings":"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"}
|