@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/esm5/src/types.js","../../../packages/language-service/esm5/src/utils.js","../../../packages/language-service/esm5/src/expressions.js","../../../packages/language-service/esm5/src/html_info.js","../../../packages/language-service/esm5/src/completions.js","../../../packages/language-service/esm5/src/locate_symbol.js","../../../packages/language-service/esm5/src/definitions.js","../../../packages/language-service/esm5/src/diagnostics.js","../../../packages/language-service/esm5/src/hover.js","../../../packages/language-service/esm5/src/language_service.js","../../../packages/language-service/esm5/src/reflector_host.js","../../../packages/language-service/esm5/src/typescript_host.js","../../../packages/language-service/esm5/src/ts_plugin.js","../../../packages/language-service/esm5/src/version.js","../../../packages/language-service/esm5/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 * as tslib_1 from \"tslib\";\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 (var _i = 0, _a = type.diDeps; _i < _a.length; _i++) {\n var diDep = _a[_i];\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 var map = new Map();\n var selectors = flatten(info.directives.map(function (directive) {\n var selectors = CssSelector.parse(directive.selector);\n selectors.forEach(function (selector) { return map.set(selector, directive); });\n return selectors;\n }));\n return { selectors: selectors, map: map };\n}\nexport function flatten(a) {\n return (_a = []).concat.apply(_a, a);\n var _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 var result = [];\n var set = new Set();\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\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 var 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) {\n if (allowWidening === void 0) { allowWidening = false; }\n var path = [];\n var visitor = new /** @class */ (function (_super) {\n tslib_1.__extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n class_1.prototype.visit = function (ast, context) {\n var span = spanOf(ast);\n if (inSpan(position, span)) {\n var 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 class_1.prototype.visitEmbeddedTemplate = function (ast, context) {\n return this.visitChildren(context, function (visit) {\n // Ignore reference, variable and providers\n visit(ast.attrs);\n visit(ast.directives);\n visit(ast.children);\n });\n };\n class_1.prototype.visitElement = function (ast, context) {\n return this.visitChildren(context, function (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 class_1.prototype.visitDirective = function (ast, context) {\n // Ignore the host properties of a directive\n var result = this.visitChildren(context, function (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 return class_1;\n }(RecursiveTemplateAstVisitor));\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 * as tslib_1 from \"tslib\";\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) {\n if (excludeEmpty === void 0) { excludeEmpty = false; }\n var path = [];\n var visitor = new /** @class */ (function (_super) {\n tslib_1.__extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n class_1.prototype.visit = function (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 return class_1;\n }(NullAstVisitor));\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 var path = findAstAt(ast, position);\n if (path.empty)\n return undefined;\n var tail = path.tail;\n var 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: function (ast) { },\n visitChain: function (ast) { },\n visitConditional: function (ast) { },\n visitFunctionCall: function (ast) { },\n visitImplicitReceiver: function (ast) { },\n visitInterpolation: function (ast) { result = undefined; },\n visitKeyedRead: function (ast) { },\n visitKeyedWrite: function (ast) { },\n visitLiteralArray: function (ast) { },\n visitLiteralMap: function (ast) { },\n visitLiteralPrimitive: function (ast) { },\n visitMethodCall: function (ast) { },\n visitPipe: function (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: function (ast) { },\n visitNonNullAssert: function (ast) { },\n visitPropertyRead: function (ast) {\n var receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitPropertyWrite: function (ast) {\n var receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitQuote: function (ast) {\n // For a quote, return the members of any (if there are any).\n result = query.getBuiltinType(BuiltinType.Any).members();\n },\n visitSafeMethodCall: function (ast) {\n var receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitSafePropertyRead: function (ast) {\n var 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 var path = findAstAt(ast, position, /* excludeEmpty */ true);\n if (path.empty)\n return undefined;\n var tail = path.tail;\n function getType(ast) { return new AstType(scope, query, {}).getType(ast); }\n var symbol = undefined;\n var 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: function (ast) { },\n visitChain: function (ast) { },\n visitConditional: function (ast) { },\n visitFunctionCall: function (ast) { },\n visitImplicitReceiver: function (ast) { },\n visitInterpolation: function (ast) { },\n visitKeyedRead: function (ast) { },\n visitKeyedWrite: function (ast) { },\n visitLiteralArray: function (ast) { },\n visitLiteralMap: function (ast) { },\n visitLiteralPrimitive: function (ast) { },\n visitMethodCall: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPipe: function (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 var pipes = query.getPipes();\n if (pipes) {\n symbol = pipes.get(ast.name);\n span = ast.span;\n }\n }\n },\n visitPrefixNot: function (ast) { },\n visitNonNullAssert: function (ast) { },\n visitPropertyRead: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPropertyWrite: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitQuote: function (ast) { },\n visitSafeMethodCall: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitSafePropertyRead: function (ast) {\n var 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: symbol, span: 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 */\nvar 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];\nvar 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];\nvar 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};\nvar defaultAttributes = [0, 1, 2, 4];\nexport function elementNames() {\n return Object.keys(elements).sort().map(function (v) { return v.toLowerCase(); });\n}\nfunction compose(indexes) {\n var result = {};\n if (indexes) {\n for (var _i = 0, indexes_1 = indexes; _i < indexes_1.length; _i++) {\n var index = indexes_1[_i];\n var group = groups[index];\n for (var name_1 in group)\n if (group.hasOwnProperty(name_1))\n result[name_1] = values[group[name_1]];\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.\nvar 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];\nvar attrToPropMap = {\n 'class': 'className',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex'\n};\nvar EVENT = 'event';\nvar BOOLEAN = 'boolean';\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar OBJECT = 'object';\nvar SchemaInformation = /** @class */ (function () {\n function SchemaInformation() {\n var _this = this;\n this.schema = {};\n SCHEMA.forEach(function (encodedType) {\n var parts = encodedType.split('|');\n var properties = parts[1].split(',');\n var typeParts = (parts[0] + '^').split('^');\n var typeName = typeParts[0];\n var type = {};\n typeName.split(',').forEach(function (tag) { return _this.schema[tag.toLowerCase()] = type; });\n var superName = typeParts[1];\n var superType = superName && _this.schema[superName.toLowerCase()];\n if (superType) {\n for (var key in superType) {\n type[key] = superType[key];\n }\n }\n properties.forEach(function (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 SchemaInformation.prototype.allKnownElements = function () { return Object.keys(this.schema); };\n SchemaInformation.prototype.eventsOf = function (elementName) {\n var elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(function (property) { return elementType[property] === EVENT; });\n };\n SchemaInformation.prototype.propertiesOf = function (elementName) {\n var elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(function (property) { return elementType[property] !== EVENT; });\n };\n SchemaInformation.prototype.typeOf = function (elementName, property) {\n return (this.schema[elementName.toLowerCase()] || {})[property];\n };\n Object.defineProperty(SchemaInformation, \"instance\", {\n get: function () {\n var result = SchemaInformation._instance;\n if (!result) {\n result = SchemaInformation._instance = new SchemaInformation();\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return SchemaInformation;\n}());\nexport { SchemaInformation };\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 * as tslib_1 from \"tslib\";\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';\nvar TEMPLATE_ATTR_PREFIX = '*';\nvar 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 var result = undefined;\n var htmlAst = templateInfo.htmlAst, templateAst = templateInfo.templateAst, template = templateInfo.template;\n // The templateNode starts at the delimiter character so we add 1 to skip it.\n if (templateInfo.position != null) {\n var templatePosition_1 = templateInfo.position - template.span.start;\n var path_1 = findNode(htmlAst, templatePosition_1);\n var mostSpecific = path_1.tail;\n if (path_1.empty || !mostSpecific) {\n result = elementCompletions(templateInfo, path_1);\n }\n else {\n var astPosition_1 = templatePosition_1 - mostSpecific.sourceSpan.start.offset;\n mostSpecific.visit({\n visitElement: function (ast) {\n var startTagSpan = spanOf(ast.sourceSpan);\n var tagLen = ast.name.length;\n if (templatePosition_1 <=\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_1);\n }\n else if (templatePosition_1 < 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_1);\n }\n },\n visitAttribute: function (ast) {\n if (!ast.valueSpan || !inSpan(templatePosition_1, spanOf(ast.valueSpan))) {\n // We are in the name of an attribute. Show attribute completions.\n result = attributeCompletions(templateInfo, path_1);\n }\n else if (ast.valueSpan && inSpan(templatePosition_1, spanOf(ast.valueSpan))) {\n result = attributeValueCompletions(templateInfo, templatePosition_1, ast);\n }\n },\n visitText: function (ast) {\n // Check if we are in a entity.\n result = entityCompletions(getSourceText(template, spanOf(ast)), astPosition_1);\n if (result)\n return result;\n result = interpolationCompletions(templateInfo, templatePosition_1);\n if (result)\n return result;\n var element = path_1.first(Element);\n if (element) {\n var definition = getHtmlTagDefinition(element.name);\n if (definition.contentType === TagContentType.PARSABLE_DATA) {\n result = voidElementAttributeCompletions(templateInfo, path_1);\n if (!result) {\n // If the element can hold content Show element completions.\n result = elementCompletions(templateInfo, path_1);\n }\n }\n }\n else {\n // If no element container, implies parsable data so show elements.\n result = voidElementAttributeCompletions(templateInfo, path_1);\n if (!result) {\n result = elementCompletions(templateInfo, path_1);\n }\n }\n },\n visitComment: function (ast) { },\n visitExpansion: function (ast) { },\n visitExpansionCase: function (ast) { }\n }, null);\n }\n }\n return result;\n}\nfunction attributeCompletions(info, path) {\n var 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 var attributes = getAttributeInfosForElement(info, elementName, element);\n // Map all the attributes to a completion\n return attributes.map(function (attr) { return ({\n kind: attr.fromHtml ? 'html attribute' : 'attribute',\n name: nameOfAttr(attr),\n sort: attr.name\n }); });\n}\nfunction getAttributeInfosForElement(info, elementName, element) {\n var attributes = [];\n // Add html attributes\n var htmlAttributes = attributeNames(elementName) || [];\n if (htmlAttributes) {\n attributes.push.apply(attributes, htmlAttributes.map(function (name) { return ({ name: name, fromHtml: true }); }));\n }\n // Add html properties\n var htmlProperties = propertyNames(elementName);\n if (htmlProperties) {\n attributes.push.apply(attributes, htmlProperties.map(function (name) { return ({ name: name, input: true }); }));\n }\n // Add html events\n var htmlEvents = eventNames(elementName);\n if (htmlEvents) {\n attributes.push.apply(attributes, htmlEvents.map(function (name) { return ({ name: name, output: true }); }));\n }\n var _a = getSelectors(info), selectors = _a.selectors, selectorMap = _a.map;\n if (selectors && selectors.length) {\n // All the attributes that are selectable should be shown.\n var applicableSelectors = selectors.filter(function (selector) { return !selector.element || selector.element == elementName; });\n var selectorAndAttributeNames = applicableSelectors.map(function (selector) { return ({ selector: selector, attrs: selector.attrs.filter(function (a) { return !!a; }) }); });\n var attrs_1 = flatten(selectorAndAttributeNames.map(function (selectorAndAttr) {\n var directive = selectorMap.get(selectorAndAttr.selector);\n var result = selectorAndAttr.attrs.map(function (name) { return ({ 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(function (selectorAndAttr) {\n var selector = selectorAndAttr.selector;\n var directive = selectorMap.get(selector);\n if (directive && hasTemplateReference(directive.type) && selector.attrs.length &&\n selector.attrs[0]) {\n attrs_1.push({ name: selector.attrs[0], template: true });\n }\n });\n // All input and output properties of the matching directives should be added.\n var elementSelector = element ?\n createElementCssSelector(element) :\n createElementCssSelector(new Element(elementName, [], [], null, null, null));\n var matcher = new SelectorMatcher();\n matcher.addSelectables(selectors);\n matcher.match(elementSelector, function (selector) {\n var directive = selectorMap.get(selector);\n if (directive) {\n attrs_1.push.apply(attrs_1, Object.keys(directive.inputs).map(function (name) { return ({ name: name, input: true }); }));\n attrs_1.push.apply(attrs_1, Object.keys(directive.outputs).map(function (name) { return ({ name: name, output: true }); }));\n }\n });\n // If a name shows up twice, fold it into a single value.\n attrs_1 = foldAttrs(attrs_1);\n // Now expand them back out to ensure that input/output shows up as well as input and\n // output.\n attributes.push.apply(attributes, flatten(attrs_1.map(expandedAttr)));\n }\n return attributes;\n}\nfunction attributeValueCompletions(info, position, attr) {\n var path = findTemplateAstAt(info.templateAst, position);\n var mostSpecific = path.tail;\n var dinfo = diagnosticInfoFromTemplateInfo(info);\n if (mostSpecific) {\n var visitor = new ExpressionVisitor(info, position, attr, function () { return getExpressionScope(dinfo, path, false); });\n mostSpecific.visit(visitor, null);\n if (!visitor.result || !visitor.result.length) {\n // Try allwoing widening the path\n var widerPath_1 = findTemplateAstAt(info.templateAst, position, /* allowWidening */ true);\n if (widerPath_1.tail) {\n var widerVisitor = new ExpressionVisitor(info, position, attr, function () { return getExpressionScope(dinfo, widerPath_1, false); });\n widerPath_1.tail.visit(widerVisitor, null);\n return widerVisitor.result;\n }\n }\n return visitor.result;\n }\n}\nfunction elementCompletions(info, path) {\n var htmlNames = elementNames().filter(function (name) { return !(name in hiddenHtmlElements); });\n // Collect the elements referenced by the selectors\n var directiveElements = getSelectors(info)\n .selectors.map(function (selector) { return selector.element; })\n .filter(function (name) { return !!name; });\n var components = directiveElements.map(function (name) { return ({ kind: 'component', name: name, sort: name }); });\n var htmlElements = htmlNames.map(function (name) { return ({ 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 var re = /&[A-Za-z]*;?(?!\\d)/g;\n var found;\n var result = undefined;\n while (found = re.exec(value)) {\n var len = found[0].length;\n if (position >= found.index && position < (found.index + len)) {\n result = Object.keys(NAMED_ENTITIES)\n .map(function (name) { return ({ 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 var templatePath = findTemplateAstAt(info.templateAst, position);\n var mostSpecific = templatePath.tail;\n if (mostSpecific) {\n var visitor = new ExpressionVisitor(info, position, undefined, function () { return 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 var tail = path.tail;\n if (tail instanceof Text) {\n var 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}\nvar ExpressionVisitor = /** @class */ (function (_super) {\n tslib_1.__extends(ExpressionVisitor, _super);\n function ExpressionVisitor(info, position, attr, getExpressionScope) {\n var _this = _super.call(this) || this;\n _this.info = info;\n _this.position = position;\n _this.attr = attr;\n _this.getExpressionScope = getExpressionScope || (function () { return info.template.members; });\n return _this;\n }\n ExpressionVisitor.prototype.visitDirectiveProperty = function (ast) {\n this.attributeValueCompletions(ast.value);\n };\n ExpressionVisitor.prototype.visitElementProperty = function (ast) {\n this.attributeValueCompletions(ast.value);\n };\n ExpressionVisitor.prototype.visitEvent = function (ast) { this.attributeValueCompletions(ast.handler); };\n ExpressionVisitor.prototype.visitElement = function (ast) {\n var _this = this;\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 var key_1 = this.attr.name.substr(TEMPLATE_ATTR_PREFIX.length);\n // Find the selector\n var selectorInfo = getSelectors(this.info);\n var selectors = selectorInfo.selectors;\n var selector_1 = selectors.filter(function (s) { return s.attrs.some(function (attr, i) { return i % 2 == 0 && attr == key_1; }); })[0];\n var templateBindingResult = this.info.expressionParser.parseTemplateBindings(key_1, this.attr.value, null);\n // find the template binding that contains the position\n if (!this.attr.valueSpan)\n return;\n var valueRelativePosition_1 = this.position - this.attr.valueSpan.start.offset - 1;\n var bindings = templateBindingResult.templateBindings;\n var binding = bindings.find(function (binding) { return inSpan(valueRelativePosition_1, binding.span, /* exclusive */ true); }) ||\n bindings.find(function (binding) { return inSpan(valueRelativePosition_1, binding.span); });\n var keyCompletions = function () {\n var keys = [];\n if (selector_1) {\n var attrNames = selector_1.attrs.filter(function (_, i) { return i % 2 == 0; });\n keys = attrNames.filter(function (name) { return name.startsWith(key_1) && name != key_1; })\n .map(function (name) { return lowerName(name.substr(key_1.length)); });\n }\n keys.push('let');\n _this.result = keys.map(function (key) { return ({ kind: 'key', name: key, sort: key }); });\n };\n if (!binding || (binding.key == key_1 && !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 var equalLocation = this.attr.value.indexOf('=');\n this.result = [];\n if (equalLocation >= 0 && valueRelativePosition_1 >= 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 var directiveMetadata = selectorInfo.map.get(selector_1);\n if (directiveMetadata) {\n var 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_1 <= (binding.key.length - key_1.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_1, binding.expression.ast.span)) ||\n (binding.key &&\n valueRelativePosition_1 > binding.span.start + (binding.key.length - key_1.length)) ||\n !binding.key) {\n var span = new ParseSpan(0, this.attr.value.length);\n this.attributeValueCompletions(binding.expression ? binding.expression.ast :\n new PropertyRead(span, new ImplicitReceiver(span), ''), valueRelativePosition_1);\n }\n else {\n keyCompletions();\n }\n }\n }\n };\n ExpressionVisitor.prototype.visitBoundText = function (ast) {\n var expressionPosition = this.position - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n var completions = getExpressionCompletions(this.getExpressionScope(), ast.value, expressionPosition, this.info.template.query);\n if (completions) {\n this.result = this.symbolsToCompletions(completions);\n }\n }\n };\n ExpressionVisitor.prototype.attributeValueCompletions = function (value, position) {\n var 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 ExpressionVisitor.prototype.symbolsToCompletions = function (symbols) {\n return symbols.filter(function (s) { return !s.name.startsWith('__') && s.public; })\n .map(function (symbol) { return ({ kind: symbol.kind, name: symbol.name, sort: symbol.name }); });\n };\n Object.defineProperty(ExpressionVisitor.prototype, \"attributeValuePosition\", {\n get: function () {\n if (this.attr && this.attr.valueSpan) {\n return this.position - this.attr.valueSpan.start.offset - 1;\n }\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n return ExpressionVisitor;\n}(NullTemplateVisitor));\nfunction getSourceText(template, span) {\n return template.source.substring(span.start, span.end);\n}\nfunction nameOfAttr(attr) {\n var name = attr.name;\n if (attr.output) {\n name = removeSuffix(name, 'Events');\n name = removeSuffix(name, 'Changed');\n }\n var 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}\nvar templateAttr = /^(\\w+:)?(template$|^\\*)/;\nfunction createElementCssSelector(element) {\n var cssSelector = new CssSelector();\n var elNameNoNs = splitNsName(element.name)[1];\n cssSelector.setElement(elNameNoNs);\n for (var _i = 0, _a = element.attrs; _i < _a.length; _i++) {\n var attr = _a[_i];\n if (!attr.name.match(templateAttr)) {\n var _b = splitNsName(attr.name), _ = _b[0], attrNameNoNs = _b[1];\n cssSelector.addAttribute(attrNameNoNs, attr.value);\n if (attr.name.toLowerCase() == 'class') {\n var classes = attr.value.split(/s+/g);\n classes.forEach(function (className) { return cssSelector.addClassName(className); });\n }\n }\n }\n return cssSelector;\n}\nfunction foldAttrs(attrs) {\n var inputOutput = new Map();\n var templates = new Map();\n var result = [];\n attrs.forEach(function (attr) {\n if (attr.fromHtml) {\n return attr;\n }\n if (attr.template) {\n var 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 var 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 var 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 var templatePosition = info.position - info.template.span.start;\n var path = findTemplateAstAt(info.templateAst, templatePosition);\n if (path.tail) {\n var symbol_1 = undefined;\n var span_1 = undefined;\n var attributeValueSymbol_1 = function (ast, inEvent) {\n if (inEvent === void 0) { inEvent = false; }\n var attribute = findAttribute(info);\n if (attribute) {\n if (inSpan(templatePosition, spanOf(attribute.valueSpan))) {\n var dinfo = diagnosticInfoFromTemplateInfo(info);\n var scope = getExpressionScope(dinfo, path, inEvent);\n if (attribute.valueSpan) {\n var expressionOffset = attribute.valueSpan.start.offset + 1;\n var result = getExpressionSymbol(scope, ast, templatePosition - expressionOffset, info.template.query);\n if (result) {\n symbol_1 = result.symbol;\n span_1 = offsetSpan(result.span, expressionOffset);\n }\n }\n return true;\n }\n }\n return false;\n };\n path.tail.visit({\n visitNgContent: function (ast) { },\n visitEmbeddedTemplate: function (ast) { },\n visitElement: function (ast) {\n var component = ast.directives.find(function (d) { return d.directive.isComponent; });\n if (component) {\n symbol_1 = info.template.query.getTypeSymbol(component.directive.type.reference);\n symbol_1 = symbol_1 && new OverrideKindSymbol(symbol_1, 'component');\n span_1 = spanOf(ast);\n }\n else {\n // Find a directive that matches the element name\n var directive = ast.directives.find(function (d) { return d.directive.selector != null && d.directive.selector.indexOf(ast.name) >= 0; });\n if (directive) {\n symbol_1 = info.template.query.getTypeSymbol(directive.directive.type.reference);\n symbol_1 = symbol_1 && new OverrideKindSymbol(symbol_1, 'directive');\n span_1 = spanOf(ast);\n }\n }\n },\n visitReference: function (ast) {\n symbol_1 = ast.value && info.template.query.getTypeSymbol(tokenReference(ast.value));\n span_1 = spanOf(ast);\n },\n visitVariable: function (ast) { },\n visitEvent: function (ast) {\n if (!attributeValueSymbol_1(ast.handler, /* inEvent */ true)) {\n symbol_1 = findOutputBinding(info, path, ast);\n symbol_1 = symbol_1 && new OverrideKindSymbol(symbol_1, 'event');\n span_1 = spanOf(ast);\n }\n },\n visitElementProperty: function (ast) { attributeValueSymbol_1(ast.value); },\n visitAttr: function (ast) { },\n visitBoundText: function (ast) {\n var expressionPosition = templatePosition - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n var dinfo = diagnosticInfoFromTemplateInfo(info);\n var scope = getExpressionScope(dinfo, path, /* includeEvent */ false);\n var result = getExpressionSymbol(scope, ast.value, expressionPosition, info.template.query);\n if (result) {\n symbol_1 = result.symbol;\n span_1 = offsetSpan(result.span, ast.sourceSpan.start.offset);\n }\n }\n },\n visitText: function (ast) { },\n visitDirective: function (ast) {\n symbol_1 = info.template.query.getTypeSymbol(ast.directive.type.reference);\n span_1 = spanOf(ast);\n },\n visitDirectiveProperty: function (ast) {\n if (!attributeValueSymbol_1(ast.value)) {\n symbol_1 = findInputBinding(info, path, ast);\n span_1 = spanOf(ast);\n }\n }\n }, null);\n if (symbol_1 && span_1) {\n return { symbol: symbol_1, span: offsetSpan(span_1, info.template.span.start) };\n }\n }\n}\nfunction findAttribute(info) {\n if (info.position) {\n var templatePosition = info.position - info.template.span.start;\n var path = findNode(info.htmlAst, templatePosition);\n return path.first(Attribute);\n }\n}\nfunction findInputBinding(info, path, binding) {\n var element = path.first(ElementAst);\n if (element) {\n for (var _i = 0, _a = element.directives; _i < _a.length; _i++) {\n var directive = _a[_i];\n var invertedInput = invertMap(directive.directive.inputs);\n var fieldName = invertedInput[binding.templateName];\n if (fieldName) {\n var 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 var element = path.first(ElementAst);\n if (element) {\n for (var _i = 0, _a = element.directives; _i < _a.length; _i++) {\n var directive = _a[_i];\n var invertedOutputs = invertMap(directive.directive.outputs);\n var fieldName = invertedOutputs[binding.name];\n if (fieldName) {\n var 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 var result = {};\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var name_1 = _a[_i];\n var v = obj[name_1];\n result[v] = name_1;\n }\n return result;\n}\n/**\n * Wrap a symbol and change its kind to component.\n */\nvar OverrideKindSymbol = /** @class */ (function () {\n function OverrideKindSymbol(sym, kindOverride) {\n this.sym = sym;\n this.kind = kindOverride;\n }\n Object.defineProperty(OverrideKindSymbol.prototype, \"name\", {\n get: function () { return this.sym.name; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"language\", {\n get: function () { return this.sym.language; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"type\", {\n get: function () { return this.sym.type; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"container\", {\n get: function () { return this.sym.container; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"public\", {\n get: function () { return this.sym.public; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"callable\", {\n get: function () { return this.sym.callable; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"nullable\", {\n get: function () { return this.sym.nullable; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"definition\", {\n get: function () { return this.sym.definition; },\n enumerable: true,\n configurable: true\n });\n OverrideKindSymbol.prototype.members = function () { return this.sym.members(); };\n OverrideKindSymbol.prototype.signatures = function () { return this.sym.signatures(); };\n OverrideKindSymbol.prototype.selectSignature = function (types) { return this.sym.selectSignature(types); };\n OverrideKindSymbol.prototype.indexed = function (argument) { return this.sym.indexed(argument); };\n return OverrideKindSymbol;\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 var 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 var results = [];\n var _loop_1 = function (template) {\n var ast = astProvider.getTemplateAst(template, fileName);\n if (ast) {\n if (ast.parseErrors && ast.parseErrors.length) {\n results.push.apply(results, ast.parseErrors.map(function (e) { return ({\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 var info = {\n templateAst: ast.templateAst,\n htmlAst: ast.htmlAst,\n offset: template.span.start,\n query: template.query,\n members: template.members\n };\n var expressionDiagnostics = getTemplateExpressionDiagnostics(info);\n results.push.apply(results, expressionDiagnostics);\n }\n if (ast.errors) {\n results.push.apply(results, ast.errors.map(function (e) { return ({ kind: e.kind, span: e.span || template.span, message: e.message }); }));\n }\n }\n };\n for (var _i = 0, templates_1 = templates; _i < templates_1.length; _i++) {\n var template = templates_1[_i];\n _loop_1(template);\n }\n return results;\n}\nexport function getDeclarationDiagnostics(declarations, modules) {\n var results = [];\n var directives = undefined;\n var _loop_2 = function (declaration) {\n var report = function (message, span) {\n results.push({\n kind: DiagnosticKind.Error,\n span: span || declaration.declarationSpan, message: message\n });\n };\n for (var _i = 0, _a = declaration.errors; _i < _a.length; _i++) {\n var error = _a[_i];\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 var _b = declaration.metadata.template, template = _b.template, templateUrl = _b.templateUrl;\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(function (module) {\n module.declaredDirectives.forEach(function (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 for (var _i = 0, declarations_1 = declarations; _i < declarations_1.length; _i++) {\n var declaration = declarations_1[_i];\n _loop_2(declaration);\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 var result = locateSymbol(info);\n if (result) {\n return { text: hoverTextOf(result.symbol), span: result.span };\n }\n}\nfunction hoverTextOf(symbol) {\n var result = [{ text: symbol.kind }, { text: ' ' }, { text: symbol.name, language: symbol.language }];\n var 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}\nvar LanguageServiceImpl = /** @class */ (function () {\n function LanguageServiceImpl(host) {\n this.host = host;\n }\n Object.defineProperty(LanguageServiceImpl.prototype, \"metadataResolver\", {\n get: function () { return this.host.resolver; },\n enumerable: true,\n configurable: true\n });\n LanguageServiceImpl.prototype.getTemplateReferences = function () { return this.host.getTemplateReferences(); };\n LanguageServiceImpl.prototype.getDiagnostics = function (fileName) {\n var results = [];\n var templates = this.host.getTemplates(fileName);\n if (templates && templates.length) {\n results.push.apply(results, getTemplateDiagnostics(fileName, this, templates));\n }\n var declarations = this.host.getDeclarations(fileName);\n if (declarations && declarations.length) {\n var summary = this.host.getAnalyzedModules();\n results.push.apply(results, getDeclarationDiagnostics(declarations, summary));\n }\n return uniqueBySpan(results);\n };\n LanguageServiceImpl.prototype.getPipesAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return templateInfo.pipes;\n }\n return [];\n };\n LanguageServiceImpl.prototype.getCompletionsAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getTemplateCompletions(templateInfo);\n }\n };\n LanguageServiceImpl.prototype.getDefinitionAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getDefinition(templateInfo);\n }\n };\n LanguageServiceImpl.prototype.getHoverAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getHover(templateInfo);\n }\n };\n LanguageServiceImpl.prototype.getTemplateAstAtPosition = function (fileName, position) {\n var template = this.host.getTemplateAt(fileName, position);\n if (template) {\n var 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: position,\n fileName: fileName,\n template: 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 LanguageServiceImpl.prototype.getTemplateAst = function (template, contextFile) {\n var _this = this;\n var result = undefined;\n try {\n var resolvedMetadata = this.metadataResolver.getNonNormalizedDirectiveMetadata(template.type);\n var metadata = resolvedMetadata && resolvedMetadata.metadata;\n if (metadata) {\n var rawHtmlParser = new HtmlParser();\n var htmlParser = new I18NHtmlParser(rawHtmlParser);\n var expressionParser = new Parser(new Lexer());\n var config = new CompilerConfig();\n var parser = new TemplateParser(config, this.host.resolver.getReflector(), expressionParser, new DomElementSchemaRegistry(), htmlParser, null, []);\n var htmlResult = htmlParser.parse(template.source, '', true);\n var analyzedModules = this.host.getAnalyzedModules();\n var errors = undefined;\n var 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 var resolvedDirectives = ngModule.transitiveModule.directives.map(function (d) { return _this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference); });\n var directives = removeMissing(resolvedDirectives).map(function (d) { return d.metadata.toSummary(); });\n var pipes = ngModule.transitiveModule.pipes.map(function (p) { return _this.host.resolver.getOrLoadPipeMetadata(p.reference).toSummary(); });\n var schemas = ngModule.schemas;\n var parseResult = parser.tryParseHtml(htmlResult, metadata, directives, pipes, schemas);\n result = {\n htmlAst: htmlResult.rootNodes,\n templateAst: parseResult.templateAst,\n directive: metadata, directives: directives, pipes: pipes,\n parseErrors: parseResult.errors, expressionParser: expressionParser, errors: errors\n };\n }\n }\n }\n catch (e) {\n var 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: span }] };\n }\n return result || {};\n };\n return LanguageServiceImpl;\n}());\nfunction removeMissing(values) {\n return values.filter(function (e) { return !!e; });\n}\nfunction uniqueBySpan(elements) {\n if (elements) {\n var result = [];\n var map = new Map();\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n var span = element.span;\n var 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 var result = undefined;\n var resultSize = 0;\n for (var _i = 0, _a = modules.ngModules; _i < _a.length; _i++) {\n var module_1 = _a[_i];\n var moduleSize = module_1.transitiveModule.directives.length;\n if (moduleSize > resultSize) {\n result = module_1;\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';\nvar ReflectorModuleModuleResolutionHost = /** @class */ (function () {\n function ReflectorModuleModuleResolutionHost(host, getProgram) {\n var _this = this;\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 = function (directoryName) { return _this.host.directoryExists(directoryName); };\n }\n ReflectorModuleModuleResolutionHost.prototype.fileExists = function (fileName) { return !!this.host.getScriptSnapshot(fileName); };\n ReflectorModuleModuleResolutionHost.prototype.readFile = function (fileName) {\n var 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 ReflectorModuleModuleResolutionHost.prototype.getSourceFileMetadata = function (fileName) {\n var sf = this.getProgram().getSourceFile(fileName);\n return sf ? this.metadataCollector.getMetadata(sf) : undefined;\n };\n ReflectorModuleModuleResolutionHost.prototype.cacheMetadata = function (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 return ReflectorModuleModuleResolutionHost;\n}());\nvar ReflectorHost = /** @class */ (function () {\n function ReflectorHost(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(), function (s) { return s; });\n }\n ReflectorHost.prototype.getMetadataFor = function (modulePath) {\n return readMetadata(modulePath, this.hostAdapter, this.metadataReaderCache);\n };\n ReflectorHost.prototype.moduleNameToFileName = function (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 var resolved = ts.resolveModuleName(moduleName, containingFile, this.options, this.hostAdapter)\n .resolvedModule;\n return resolved ? resolved.resolvedFileName : null;\n };\n ReflectorHost.prototype.getOutputName = function (filePath) { return filePath; };\n return ReflectorHost;\n}());\nexport { ReflectorHost };\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 * as tslib_1 from \"tslib\";\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 var ngHost = new TypeScriptServiceHost(host, service);\n var 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 */\nvar DummyHtmlParser = /** @class */ (function (_super) {\n tslib_1.__extends(DummyHtmlParser, _super);\n function DummyHtmlParser() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DummyHtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n return new ParseTreeResult([], []);\n };\n return DummyHtmlParser;\n}(HtmlParser));\nexport { DummyHtmlParser };\n/**\n * Avoid loading resources in the language servcie by using a dummy loader.\n */\nvar DummyResourceLoader = /** @class */ (function (_super) {\n tslib_1.__extends(DummyResourceLoader, _super);\n function DummyResourceLoader() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DummyResourceLoader.prototype.get = function (url) { return Promise.resolve(''); };\n return DummyResourceLoader;\n}(ResourceLoader));\nexport { DummyResourceLoader };\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 */\nvar TypeScriptServiceHost = /** @class */ (function () {\n function TypeScriptServiceHost(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 TypeScriptServiceHost.prototype.setSite = function (service) { this.service = service; };\n Object.defineProperty(TypeScriptServiceHost.prototype, \"resolver\", {\n /**\n * Angular LanguageServiceHost implementation\n */\n get: function () {\n var _this = this;\n this.validate();\n var result = this._resolver;\n if (!result) {\n var moduleResolver = new NgModuleResolver(this.reflector);\n var directiveResolver = new DirectiveResolver(this.reflector);\n var pipeResolver = new PipeResolver(this.reflector);\n var elementSchemaRegistry = new DomElementSchemaRegistry();\n var resourceLoader = new DummyResourceLoader();\n var urlResolver = createOfflineCompileUrlResolver();\n var htmlParser = new DummyHtmlParser();\n // This tracks the CompileConfig in codegen.ts. Currently these options\n // are hard-coded.\n var config = new CompilerConfig({ defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false });\n var 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, function (error, type) { return _this.collectError(error, type && type.filePath); });\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.getTemplateReferences = function () {\n this.ensureTemplateMap();\n return this.templateReferences || [];\n };\n TypeScriptServiceHost.prototype.getTemplateAt = function (fileName, position) {\n var sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.fileName;\n var 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 var 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 TypeScriptServiceHost.prototype.getAnalyzedModules = function () {\n this.updateAnalyzedModules();\n return this.ensureAnalyzedModules();\n };\n TypeScriptServiceHost.prototype.ensureAnalyzedModules = function () {\n var 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 var analyzeHost = { isSourceFile: function (filePath) { return true; } };\n var programFiles = this.program.getSourceFiles().map(function (sf) { return sf.fileName; });\n analyzedModules =\n analyzeNgModules(programFiles, analyzeHost, this.staticSymbolResolver, this.resolver);\n }\n this.analyzedModules = analyzedModules;\n }\n return analyzedModules;\n };\n TypeScriptServiceHost.prototype.getTemplates = function (fileName) {\n var _this = this;\n this.ensureTemplateMap();\n var componentType = this.fileToComponent.get(fileName);\n if (componentType) {\n var templateSource = this.getTemplateAt(fileName, 0);\n if (templateSource) {\n return [templateSource];\n }\n }\n else {\n var version_1 = this.host.getScriptVersion(fileName);\n var result_1 = [];\n // Find each template string in the file\n var visit_1 = function (child) {\n var templateSource = _this.getSourceFromNode(fileName, version_1, child);\n if (templateSource) {\n result_1.push(templateSource);\n }\n else {\n ts.forEachChild(child, visit_1);\n }\n };\n var sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.path || sourceFile.fileName;\n ts.forEachChild(sourceFile, visit_1);\n }\n return result_1.length ? result_1 : undefined;\n }\n };\n TypeScriptServiceHost.prototype.getDeclarations = function (fileName) {\n var _this = this;\n var result = [];\n var sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n var visit_2 = function (child) {\n var declaration = _this.getDeclarationFromNode(sourceFile, child);\n if (declaration) {\n result.push(declaration);\n }\n else {\n ts.forEachChild(child, visit_2);\n }\n };\n ts.forEachChild(sourceFile, visit_2);\n }\n return result;\n };\n TypeScriptServiceHost.prototype.getSourceFile = function (fileName) {\n return this.tsService.getProgram().getSourceFile(fileName);\n };\n TypeScriptServiceHost.prototype.updateAnalyzedModules = function () {\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 Object.defineProperty(TypeScriptServiceHost.prototype, \"program\", {\n get: function () { return this.tsService.getProgram(); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TypeScriptServiceHost.prototype, \"checker\", {\n get: function () {\n var checker = this._checker;\n if (!checker) {\n checker = this._checker = this.program.getTypeChecker();\n }\n return checker;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.validate = function () {\n var _this = this;\n var program = this.program;\n if (this.lastProgram !== program) {\n // Invalidate file that have changed in the static symbol resolver\n var invalidateFile = function (fileName) {\n return _this._staticSymbolResolver.invalidateFile(fileName);\n };\n this.clearCaches();\n var seen_1 = new Set();\n for (var _i = 0, _a = this.program.getSourceFiles(); _i < _a.length; _i++) {\n var sourceFile = _a[_i];\n var fileName = sourceFile.fileName;\n seen_1.add(fileName);\n var version = this.host.getScriptVersion(fileName);\n var 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 var missing = Array.from(this.fileVersions.keys()).filter(function (f) { return !seen_1.has(f); });\n missing.forEach(function (f) { return _this.fileVersions.delete(f); });\n if (this._staticSymbolResolver) {\n missing.forEach(invalidateFile);\n }\n this.lastProgram = program;\n }\n };\n TypeScriptServiceHost.prototype.clearCaches = function () {\n this._checker = null;\n this._typeCache = [];\n this._resolver = null;\n this.collectedErrors = null;\n this.modulesOutOfDate = true;\n };\n TypeScriptServiceHost.prototype.ensureTemplateMap = function () {\n if (!this.fileToComponent || !this.templateReferences) {\n var fileToComponent = new Map();\n var templateReference = [];\n var ngModuleSummary = this.getAnalyzedModules();\n var urlResolver = createOfflineCompileUrlResolver();\n for (var _i = 0, _a = ngModuleSummary.ngModules; _i < _a.length; _i++) {\n var module_1 = _a[_i];\n for (var _b = 0, _c = module_1.declaredDirectives; _b < _c.length; _b++) {\n var directive = _c[_b];\n var metadata = this.resolver.getNonNormalizedDirectiveMetadata(directive.reference).metadata;\n if (metadata.isComponent && metadata.template && metadata.template.templateUrl) {\n var 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 TypeScriptServiceHost.prototype.getSourceFromDeclaration = function (fileName, version, source, span, type, declaration, node, sourceFile) {\n var queryCache = undefined;\n var t = this;\n if (declaration) {\n return {\n version: version,\n source: source,\n span: span,\n type: type,\n get members() {\n return getClassMembersFromDeclaration(t.program, t.checker, sourceFile, declaration);\n },\n get query() {\n if (!queryCache) {\n var pipes_1 = t.service.getPipesAt(fileName, node.getStart());\n queryCache = getSymbolQuery(t.program, t.checker, sourceFile, function () { return getPipesTable(sourceFile, t.program, t.checker, pipes_1); });\n }\n return queryCache;\n }\n };\n }\n };\n TypeScriptServiceHost.prototype.getSourceFromNode = function (fileName, version, node) {\n var result = undefined;\n var t = this;\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n var _a = this.getTemplateClassDeclFromNode(node), declaration = _a[0], decorator = _a[1];\n if (declaration && declaration.name) {\n var 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 TypeScriptServiceHost.prototype.getSourceFromType = function (fileName, version, type) {\n var result = undefined;\n var declaration = this.getTemplateClassFromStaticSymbol(type);\n if (declaration) {\n var snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n var 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 Object.defineProperty(TypeScriptServiceHost.prototype, \"reflectorHost\", {\n get: function () {\n var _this = this;\n var 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 var 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 var source = this.tsService.getProgram().getSourceFile(this.context);\n if (!source) {\n throw new Error('Internal error: no context could be determined');\n }\n var tsConfigPath = findTsConfig(source.fileName);\n var basePath = path.dirname(tsConfigPath || this.context);\n var options = { basePath: basePath, genDir: basePath };\n var 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(function () { return _this.tsService.getProgram(); }, this.host, options);\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.collectError = function (error, filePath) {\n if (filePath) {\n var errorMap = this.collectedErrors;\n if (!errorMap || !this.collectedErrors) {\n errorMap = this.collectedErrors = new Map();\n }\n var errors = errorMap.get(filePath);\n if (!errors) {\n errors = [];\n this.collectedErrors.set(filePath, errors);\n }\n errors.push(error);\n }\n };\n Object.defineProperty(TypeScriptServiceHost.prototype, \"staticSymbolResolver\", {\n get: function () {\n var _this = this;\n var result = this._staticSymbolResolver;\n if (!result) {\n this._summaryResolver = new AotSummaryResolver({\n loadSummary: function (filePath) { return null; },\n isSourceFile: function (sourceFilePath) { return true; },\n toSummaryFileName: function (sourceFilePath) { return sourceFilePath; },\n fromSummaryFileName: function (filePath) { return filePath; },\n }, this._staticSymbolCache);\n result = this._staticSymbolResolver = new StaticSymbolResolver(this.reflectorHost, this._staticSymbolCache, this._summaryResolver, function (e, filePath) { return _this.collectError(e, filePath); });\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TypeScriptServiceHost.prototype, \"reflector\", {\n get: function () {\n var _this = this;\n var result = this._reflector;\n if (!result) {\n var ssr = this.staticSymbolResolver;\n result = this._reflector = new StaticReflector(this._summaryResolver, ssr, [], [], function (e, filePath) { return _this.collectError(e, filePath); });\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.getTemplateClassFromStaticSymbol = function (type) {\n var source = this.getSourceFile(type.filePath);\n if (source) {\n var declarationNode = ts.forEachChild(source, function (child) {\n if (child.kind === ts.SyntaxKind.ClassDeclaration) {\n var 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 TypeScriptServiceHost.prototype.getTemplateClassDeclFromNode = function (currentToken) {\n // Verify we are in a 'template' property assignment, in an object literal, which is an call\n // arg, in a decorator\n var 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 var callTarget = parentNode.expression;\n var decorator = parentNode.parent; // Decorator\n if (!decorator || decorator.kind !== ts.SyntaxKind.Decorator) {\n return TypeScriptServiceHost.missingTemplate;\n }\n var declaration = decorator.parent; // ClassDeclaration\n if (!declaration || declaration.kind !== ts.SyntaxKind.ClassDeclaration) {\n return TypeScriptServiceHost.missingTemplate;\n }\n return [declaration, callTarget];\n };\n TypeScriptServiceHost.prototype.getCollectedErrors = function (defaultSpan, sourceFile) {\n var errors = (this.collectedErrors && this.collectedErrors.get(sourceFile.fileName));\n return (errors && errors.map(function (e) {\n var line = e.line || (e.position && e.position.line);\n var column = e.column || (e.position && e.position.column);\n var span = spanAt(sourceFile, line, column) || defaultSpan;\n if (isFormattedError(e)) {\n return errorToDiagnosticWithChain(e, span);\n }\n return { message: e.message, span: span };\n })) ||\n [];\n };\n TypeScriptServiceHost.prototype.getDeclarationFromNode = function (sourceFile, node) {\n if (node.kind == ts.SyntaxKind.ClassDeclaration && node.decorators &&\n node.name) {\n for (var _i = 0, _a = node.decorators; _i < _a.length; _i++) {\n var decorator = _a[_i];\n if (decorator.expression && decorator.expression.kind == ts.SyntaxKind.CallExpression) {\n var classDeclaration = node;\n if (classDeclaration.name) {\n var call = decorator.expression;\n var target = call.expression;\n var type = this.checker.getTypeAtLocation(target);\n if (type) {\n var staticSymbol = this.reflector.getStaticSymbol(sourceFile.fileName, classDeclaration.name.text);\n try {\n if (this.resolver.isDirective(staticSymbol)) {\n var metadata = this.resolver.getNonNormalizedDirectiveMetadata(staticSymbol).metadata;\n var declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan: declarationSpan,\n metadata: metadata,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n }\n catch (e) {\n if (e.message) {\n this.collectError(e, sourceFile.fileName);\n var declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan: declarationSpan,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n }\n }\n }\n }\n }\n }\n };\n TypeScriptServiceHost.prototype.stringOf = function (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 TypeScriptServiceHost.prototype.findNode = function (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 TypeScriptServiceHost.missingTemplate = [undefined, undefined];\n return TypeScriptServiceHost;\n}());\nexport { TypeScriptServiceHost };\nfunction findTsConfig(fileName) {\n var dir = path.dirname(fileName);\n while (fs.existsSync(dir)) {\n var candidate = path.join(dir, 'tsconfig.json');\n if (fs.existsSync(candidate))\n return candidate;\n var 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 var position_1 = ts.getPositionOfLineAndCharacter(sourceFile, line, column);\n var findChild = function findChild(node) {\n if (node.kind > ts.SyntaxKind.LastToken && node.pos <= position_1 && node.end > position_1) {\n var betterNode = ts.forEachChild(node, findChild);\n return betterNode || node;\n }\n };\n var node = ts.forEachChild(sourceFile, findChild);\n if (node) {\n return { start: node.getStart(), end: node.getEnd() };\n }\n }\n}\nfunction chainedMessage(chain, indent) {\n if (indent === void 0) { indent = ''; }\n return indent + chain.message + (chain.next ? chainedMessage(chain.next, indent + ' ') : '');\n}\nvar DiagnosticMessageChainImpl = /** @class */ (function () {\n function DiagnosticMessageChainImpl(message, next) {\n this.message = message;\n this.next = next;\n }\n DiagnosticMessageChainImpl.prototype.toString = function () { return chainedMessage(this); };\n return DiagnosticMessageChainImpl;\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: 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';\nvar projectHostMap = new WeakMap();\nexport function getExternalFiles(project) {\n var host = projectHostMap.get(project);\n if (host) {\n return host.getTemplateReferences();\n }\n}\nvar angularOnlyResults = process.argv.indexOf('--angularOnlyResults') >= 0;\nfunction angularOnlyFilter(ls) {\n return {\n cleanupSemanticCache: function () { return ls.cleanupSemanticCache(); },\n getSyntacticDiagnostics: function (fileName) { return []; },\n getSemanticDiagnostics: function (fileName) { return []; },\n getCompilerOptionsDiagnostics: function () { return []; },\n getSyntacticClassifications: function (fileName, span) { return []; },\n getSemanticClassifications: function (fileName, span) { return []; },\n getEncodedSyntacticClassifications: function (fileName, span) { return ({ undefined: undefined }); },\n getEncodedSemanticClassifications: function (fileName, span) { return undefined; },\n getCompletionsAtPosition: function (fileName, position) { return undefined; },\n getCompletionEntryDetails: function (fileName, position, entryName) {\n return undefined;\n },\n getCompletionEntrySymbol: function (fileName, position, entryName) { return undefined; },\n getQuickInfoAtPosition: function (fileName, position) { return undefined; },\n getNameOrDottedNameSpan: function (fileName, startPos, endPos) { return undefined; },\n getBreakpointStatementAtPosition: function (fileName, position) { return undefined; },\n getSignatureHelpItems: function (fileName, position) { return undefined; },\n getRenameInfo: function (fileName, position) { return undefined; },\n findRenameLocations: function (fileName, position, findInStrings, findInComments) {\n return [];\n },\n getDefinitionAtPosition: function (fileName, position) { return []; },\n getTypeDefinitionAtPosition: function (fileName, position) { return []; },\n getImplementationAtPosition: function (fileName, position) { return []; },\n getReferencesAtPosition: function (fileName, position) { return []; },\n findReferences: function (fileName, position) { return []; },\n getDocumentHighlights: function (fileName, position, filesToSearch) { return []; },\n /** @deprecated */\n getOccurrencesAtPosition: function (fileName, position) { return []; },\n getNavigateToItems: function (searchValue) { return []; },\n getNavigationBarItems: function (fileName) { return []; },\n getNavigationTree: function (fileName) { return undefined; },\n getOutliningSpans: function (fileName) { return []; },\n getTodoComments: function (fileName, descriptors) { return []; },\n getBraceMatchingAtPosition: function (fileName, position) { return []; },\n getIndentationAtPosition: function (fileName, position, options) { return undefined; },\n getFormattingEditsForRange: function (fileName, start, end, options) { return []; },\n getFormattingEditsForDocument: function (fileName, options) { return []; },\n getFormattingEditsAfterKeystroke: function (fileName, position, key, options) { return []; },\n getDocCommentTemplateAtPosition: function (fileName, position) { return undefined; },\n isValidBraceCompletionAtPosition: function (fileName, position, openingBrace) { return undefined; },\n getSpanOfEnclosingComment: function (fileName, position, onlyMultiLine) { return undefined; },\n getCodeFixesAtPosition: function (fileName, start, end, errorCodes) { return []; },\n applyCodeActionCommand: function (action) { return Promise.resolve(undefined); },\n getEmitOutput: function (fileName) { return undefined; },\n getProgram: function () { return ls.getProgram(); },\n dispose: function () { return ls.dispose(); },\n getApplicableRefactors: function (fileName, positionOrRaneg) { return []; },\n getEditsForRefactor: function (fileName, formatOptions, positionOrRange, refactorName, actionName) {\n return undefined;\n }\n };\n}\nexport function create(info /* ts.server.PluginCreateInfo */) {\n // Create the proxy\n var proxy = Object.create(null);\n var 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 function (fileName) { return tryCall(fileName, function () { return (m.call(ls, fileName)); }); };\n }\n function tryFilenameOneCall(m) {\n return function (fileName, p) { return tryCall(fileName, function () { return (m.call(ls, fileName, p)); }); };\n }\n function tryFilenameTwoCall(m) {\n return function (fileName, p1, p2) { return tryCall(fileName, function () { return (m.call(ls, fileName, p1, p2)); }); };\n }\n function tryFilenameThreeCall(m) {\n return function (fileName, p1, p2, p3) { return tryCall(fileName, function () { return (m.call(ls, fileName, p1, p2, p3)); }); };\n }\n function tryFilenameFourCall(m) {\n return function (fileName, p1, p2, p3, p4) {\n return tryCall(fileName, function () { return (m.call(ls, fileName, p1, p2, p3, p4)); });\n };\n }\n function typescriptOnly(ls) {\n return {\n cleanupSemanticCache: function () { return ls.cleanupSemanticCache(); },\n getSyntacticDiagnostics: tryFilenameCall(ls.getSyntacticDiagnostics),\n getSemanticDiagnostics: tryFilenameCall(ls.getSemanticDiagnostics),\n getCompilerOptionsDiagnostics: function () { return 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: function (searchValue, maxResultCount, fileName, excludeDtsFiles) { return tryCall(fileName, function () { return 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: (function (action) { return tryCall(undefined, function () { return ls.applyCodeActionCommand(action); }); }),\n getEmitOutput: tryFilenameCall(ls.getEmitOutput),\n getProgram: function () { return ls.getProgram(); },\n dispose: function () { return ls.dispose(); },\n getApplicableRefactors: tryFilenameOneCall(ls.getApplicableRefactors),\n getEditsForRefactor: tryFilenameFourCall(ls.getEditsForRefactor)\n };\n }\n oldLS = typescriptOnly(oldLS);\n var _loop_1 = function (k) {\n proxy[k] = function () { return oldLS[k].apply(oldLS, arguments); };\n };\n for (var k in oldLS) {\n _loop_1(k);\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 var result = {\n file: 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 var serviceHost = new TypeScriptServiceHost(info.languageServiceHost, info.languageService);\n var ls = createLanguageService(serviceHost);\n serviceHost.setSite(ls);\n projectHostMap.set(info.project, serviceHost);\n proxy.getCompletionsAtPosition = function (fileName, position, options) {\n var base = oldLS.getCompletionsAtPosition(fileName, position, options) || {\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: false,\n entries: []\n };\n tryOperation('get completions', function () {\n var 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 (var _i = 0, results_1 = results; _i < results_1.length; _i++) {\n var entry = results_1[_i];\n base.entries.push(completionToEntry(entry));\n }\n }\n });\n return base;\n };\n proxy.getQuickInfoAtPosition = function (fileName, position) {\n var base = oldLS.getQuickInfoAtPosition(fileName, position);\n // TODO(vicb): the tags property has been removed in TS 2.2\n tryOperation('get quick info', function () {\n var ours = ls.getHoverAt(fileName, position);\n if (ours) {\n var displayParts = [];\n for (var _i = 0, _a = ours.text; _i < _a.length; _i++) {\n var part = _a[_i];\n displayParts.push({ kind: part.language || 'angular', text: part.text });\n }\n var tags = base && base.tags;\n base = {\n displayParts: 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 var result = oldLS.getSemanticDiagnostics(fileName);\n var base = result || [];\n tryOperation('get diagnostics', function () {\n info.project.projectService.logger.info(\"Computing Angular semantic diagnostics...\");\n var ours = ls.getDiagnostics(fileName);\n if (ours && ours.length) {\n var file_1 = oldLS.getProgram().getSourceFile(fileName);\n base.push.apply(base, ours.map(function (d) { return diagnosticToDiagnostic(d, file_1); }));\n }\n });\n return base;\n };\n proxy.getDefinitionAtPosition = function (fileName, position) {\n var base = oldLS.getDefinitionAtPosition(fileName, position);\n if (base && base.length) {\n return base;\n }\n return tryOperation('get definition', function () {\n var ours = ls.getDefinitionAt(fileName, position);\n if (ours && ours.length) {\n base = base || [];\n for (var _i = 0, ours_1 = ours; _i < ours_1.length; _i++) {\n var loc = ours_1[_i];\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 var 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","tslib_1.__extends","AstPathBase","getExpressionScope","ts.createModuleResolutionCache","path.join","ts.resolveModuleName","Console","ts.forEachChild","version","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/esm5/src/types.js","../../../packages/language-service/esm5/src/utils.js","../../../packages/language-service/esm5/src/expressions.js","../../../packages/language-service/esm5/src/html_info.js","../../../packages/language-service/esm5/src/completions.js","../../../packages/language-service/esm5/src/locate_symbol.js","../../../packages/language-service/esm5/src/definitions.js","../../../packages/language-service/esm5/src/diagnostics.js","../../../packages/language-service/esm5/src/hover.js","../../../packages/language-service/esm5/src/language_service.js","../../../packages/language-service/esm5/src/reflector_host.js","../../../packages/language-service/esm5/src/typescript_host.js","../../../packages/language-service/esm5/src/ts_plugin.js","../../../packages/language-service/esm5/src/version.js","../../../packages/language-service/esm5/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 * as tslib_1 from \"tslib\";\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 (var _i = 0, _a = type.diDeps; _i < _a.length; _i++) {\n var diDep = _a[_i];\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 var map = new Map();\n var selectors = flatten(info.directives.map(function (directive) {\n var selectors = CssSelector.parse(directive.selector);\n selectors.forEach(function (selector) { return map.set(selector, directive); });\n return selectors;\n }));\n return { selectors: selectors, map: map };\n}\nexport function flatten(a) {\n return (_a = []).concat.apply(_a, a);\n var _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 var result = [];\n var set = new Set();\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\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 var 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) {\n if (allowWidening === void 0) { allowWidening = false; }\n var path = [];\n var visitor = new /** @class */ (function (_super) {\n tslib_1.__extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n class_1.prototype.visit = function (ast, context) {\n var span = spanOf(ast);\n if (inSpan(position, span)) {\n var 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 class_1.prototype.visitEmbeddedTemplate = function (ast, context) {\n return this.visitChildren(context, function (visit) {\n // Ignore reference, variable and providers\n visit(ast.attrs);\n visit(ast.directives);\n visit(ast.children);\n });\n };\n class_1.prototype.visitElement = function (ast, context) {\n return this.visitChildren(context, function (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 class_1.prototype.visitDirective = function (ast, context) {\n // Ignore the host properties of a directive\n var result = this.visitChildren(context, function (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 return class_1;\n }(RecursiveTemplateAstVisitor));\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 * as tslib_1 from \"tslib\";\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) {\n if (excludeEmpty === void 0) { excludeEmpty = false; }\n var path = [];\n var visitor = new /** @class */ (function (_super) {\n tslib_1.__extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n class_1.prototype.visit = function (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 return class_1;\n }(NullAstVisitor));\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 var path = findAstAt(ast, position);\n if (path.empty)\n return undefined;\n var tail = path.tail;\n var 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: function (ast) { },\n visitChain: function (ast) { },\n visitConditional: function (ast) { },\n visitFunctionCall: function (ast) { },\n visitImplicitReceiver: function (ast) { },\n visitInterpolation: function (ast) { result = undefined; },\n visitKeyedRead: function (ast) { },\n visitKeyedWrite: function (ast) { },\n visitLiteralArray: function (ast) { },\n visitLiteralMap: function (ast) { },\n visitLiteralPrimitive: function (ast) { },\n visitMethodCall: function (ast) { },\n visitPipe: function (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: function (ast) { },\n visitNonNullAssert: function (ast) { },\n visitPropertyRead: function (ast) {\n var receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitPropertyWrite: function (ast) {\n var receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitQuote: function (ast) {\n // For a quote, return the members of any (if there are any).\n result = query.getBuiltinType(BuiltinType.Any).members();\n },\n visitSafeMethodCall: function (ast) {\n var receiverType = getType(ast.receiver);\n result = receiverType ? receiverType.members() : scope;\n },\n visitSafePropertyRead: function (ast) {\n var 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 var path = findAstAt(ast, position, /* excludeEmpty */ true);\n if (path.empty)\n return undefined;\n var tail = path.tail;\n function getType(ast) { return new AstType(scope, query, {}).getType(ast); }\n var symbol = undefined;\n var 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: function (ast) { },\n visitChain: function (ast) { },\n visitConditional: function (ast) { },\n visitFunctionCall: function (ast) { },\n visitImplicitReceiver: function (ast) { },\n visitInterpolation: function (ast) { },\n visitKeyedRead: function (ast) { },\n visitKeyedWrite: function (ast) { },\n visitLiteralArray: function (ast) { },\n visitLiteralMap: function (ast) { },\n visitLiteralPrimitive: function (ast) { },\n visitMethodCall: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPipe: function (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 var pipes = query.getPipes();\n if (pipes) {\n symbol = pipes.get(ast.name);\n span = ast.span;\n }\n }\n },\n visitPrefixNot: function (ast) { },\n visitNonNullAssert: function (ast) { },\n visitPropertyRead: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitPropertyWrite: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitQuote: function (ast) { },\n visitSafeMethodCall: function (ast) {\n var receiverType = getType(ast.receiver);\n symbol = receiverType && receiverType.members().get(ast.name);\n span = ast.span;\n },\n visitSafePropertyRead: function (ast) {\n var 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: symbol, span: 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 */\nvar 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];\nvar 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];\nvar 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};\nvar defaultAttributes = [0, 1, 2, 4];\nexport function elementNames() {\n return Object.keys(elements).sort().map(function (v) { return v.toLowerCase(); });\n}\nfunction compose(indexes) {\n var result = {};\n if (indexes) {\n for (var _i = 0, indexes_1 = indexes; _i < indexes_1.length; _i++) {\n var index = indexes_1[_i];\n var group = groups[index];\n for (var name_1 in group)\n if (group.hasOwnProperty(name_1))\n result[name_1] = values[group[name_1]];\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.\nvar 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];\nvar attrToPropMap = {\n 'class': 'className',\n 'formaction': 'formAction',\n 'innerHtml': 'innerHTML',\n 'readonly': 'readOnly',\n 'tabindex': 'tabIndex'\n};\nvar EVENT = 'event';\nvar BOOLEAN = 'boolean';\nvar NUMBER = 'number';\nvar STRING = 'string';\nvar OBJECT = 'object';\nvar SchemaInformation = /** @class */ (function () {\n function SchemaInformation() {\n var _this = this;\n this.schema = {};\n SCHEMA.forEach(function (encodedType) {\n var parts = encodedType.split('|');\n var properties = parts[1].split(',');\n var typeParts = (parts[0] + '^').split('^');\n var typeName = typeParts[0];\n var type = {};\n typeName.split(',').forEach(function (tag) { return _this.schema[tag.toLowerCase()] = type; });\n var superName = typeParts[1];\n var superType = superName && _this.schema[superName.toLowerCase()];\n if (superType) {\n for (var key in superType) {\n type[key] = superType[key];\n }\n }\n properties.forEach(function (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 SchemaInformation.prototype.allKnownElements = function () { return Object.keys(this.schema); };\n SchemaInformation.prototype.eventsOf = function (elementName) {\n var elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(function (property) { return elementType[property] === EVENT; });\n };\n SchemaInformation.prototype.propertiesOf = function (elementName) {\n var elementType = this.schema[elementName.toLowerCase()] || {};\n return Object.keys(elementType).filter(function (property) { return elementType[property] !== EVENT; });\n };\n SchemaInformation.prototype.typeOf = function (elementName, property) {\n return (this.schema[elementName.toLowerCase()] || {})[property];\n };\n Object.defineProperty(SchemaInformation, \"instance\", {\n get: function () {\n var result = SchemaInformation._instance;\n if (!result) {\n result = SchemaInformation._instance = new SchemaInformation();\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return SchemaInformation;\n}());\nexport { SchemaInformation };\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 * as tslib_1 from \"tslib\";\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';\nvar TEMPLATE_ATTR_PREFIX = '*';\nvar 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 var result = undefined;\n var htmlAst = templateInfo.htmlAst, templateAst = templateInfo.templateAst, template = templateInfo.template;\n // The templateNode starts at the delimiter character so we add 1 to skip it.\n if (templateInfo.position != null) {\n var templatePosition_1 = templateInfo.position - template.span.start;\n var path_1 = findNode(htmlAst, templatePosition_1);\n var mostSpecific = path_1.tail;\n if (path_1.empty || !mostSpecific) {\n result = elementCompletions(templateInfo, path_1);\n }\n else {\n var astPosition_1 = templatePosition_1 - mostSpecific.sourceSpan.start.offset;\n mostSpecific.visit({\n visitElement: function (ast) {\n var startTagSpan = spanOf(ast.sourceSpan);\n var tagLen = ast.name.length;\n if (templatePosition_1 <=\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_1);\n }\n else if (templatePosition_1 < 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_1);\n }\n },\n visitAttribute: function (ast) {\n if (!ast.valueSpan || !inSpan(templatePosition_1, spanOf(ast.valueSpan))) {\n // We are in the name of an attribute. Show attribute completions.\n result = attributeCompletions(templateInfo, path_1);\n }\n else if (ast.valueSpan && inSpan(templatePosition_1, spanOf(ast.valueSpan))) {\n result = attributeValueCompletions(templateInfo, templatePosition_1, ast);\n }\n },\n visitText: function (ast) {\n // Check if we are in a entity.\n result = entityCompletions(getSourceText(template, spanOf(ast)), astPosition_1);\n if (result)\n return result;\n result = interpolationCompletions(templateInfo, templatePosition_1);\n if (result)\n return result;\n var element = path_1.first(Element);\n if (element) {\n var definition = getHtmlTagDefinition(element.name);\n if (definition.contentType === TagContentType.PARSABLE_DATA) {\n result = voidElementAttributeCompletions(templateInfo, path_1);\n if (!result) {\n // If the element can hold content Show element completions.\n result = elementCompletions(templateInfo, path_1);\n }\n }\n }\n else {\n // If no element container, implies parsable data so show elements.\n result = voidElementAttributeCompletions(templateInfo, path_1);\n if (!result) {\n result = elementCompletions(templateInfo, path_1);\n }\n }\n },\n visitComment: function (ast) { },\n visitExpansion: function (ast) { },\n visitExpansionCase: function (ast) { }\n }, null);\n }\n }\n return result;\n}\nfunction attributeCompletions(info, path) {\n var 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 var attributes = getAttributeInfosForElement(info, elementName, element);\n // Map all the attributes to a completion\n return attributes.map(function (attr) { return ({\n kind: attr.fromHtml ? 'html attribute' : 'attribute',\n name: nameOfAttr(attr),\n sort: attr.name\n }); });\n}\nfunction getAttributeInfosForElement(info, elementName, element) {\n var attributes = [];\n // Add html attributes\n var htmlAttributes = attributeNames(elementName) || [];\n if (htmlAttributes) {\n attributes.push.apply(attributes, htmlAttributes.map(function (name) { return ({ name: name, fromHtml: true }); }));\n }\n // Add html properties\n var htmlProperties = propertyNames(elementName);\n if (htmlProperties) {\n attributes.push.apply(attributes, htmlProperties.map(function (name) { return ({ name: name, input: true }); }));\n }\n // Add html events\n var htmlEvents = eventNames(elementName);\n if (htmlEvents) {\n attributes.push.apply(attributes, htmlEvents.map(function (name) { return ({ name: name, output: true }); }));\n }\n var _a = getSelectors(info), selectors = _a.selectors, selectorMap = _a.map;\n if (selectors && selectors.length) {\n // All the attributes that are selectable should be shown.\n var applicableSelectors = selectors.filter(function (selector) { return !selector.element || selector.element == elementName; });\n var selectorAndAttributeNames = applicableSelectors.map(function (selector) { return ({ selector: selector, attrs: selector.attrs.filter(function (a) { return !!a; }) }); });\n var attrs_1 = flatten(selectorAndAttributeNames.map(function (selectorAndAttr) {\n var directive = selectorMap.get(selectorAndAttr.selector);\n var result = selectorAndAttr.attrs.map(function (name) { return ({ 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(function (selectorAndAttr) {\n var selector = selectorAndAttr.selector;\n var directive = selectorMap.get(selector);\n if (directive && hasTemplateReference(directive.type) && selector.attrs.length &&\n selector.attrs[0]) {\n attrs_1.push({ name: selector.attrs[0], template: true });\n }\n });\n // All input and output properties of the matching directives should be added.\n var elementSelector = element ?\n createElementCssSelector(element) :\n createElementCssSelector(new Element(elementName, [], [], null, null, null));\n var matcher = new SelectorMatcher();\n matcher.addSelectables(selectors);\n matcher.match(elementSelector, function (selector) {\n var directive = selectorMap.get(selector);\n if (directive) {\n attrs_1.push.apply(attrs_1, Object.keys(directive.inputs).map(function (name) { return ({ name: name, input: true }); }));\n attrs_1.push.apply(attrs_1, Object.keys(directive.outputs).map(function (name) { return ({ name: name, output: true }); }));\n }\n });\n // If a name shows up twice, fold it into a single value.\n attrs_1 = foldAttrs(attrs_1);\n // Now expand them back out to ensure that input/output shows up as well as input and\n // output.\n attributes.push.apply(attributes, flatten(attrs_1.map(expandedAttr)));\n }\n return attributes;\n}\nfunction attributeValueCompletions(info, position, attr) {\n var path = findTemplateAstAt(info.templateAst, position);\n var mostSpecific = path.tail;\n var dinfo = diagnosticInfoFromTemplateInfo(info);\n if (mostSpecific) {\n var visitor = new ExpressionVisitor(info, position, attr, function () { return getExpressionScope(dinfo, path, false); });\n mostSpecific.visit(visitor, null);\n if (!visitor.result || !visitor.result.length) {\n // Try allwoing widening the path\n var widerPath_1 = findTemplateAstAt(info.templateAst, position, /* allowWidening */ true);\n if (widerPath_1.tail) {\n var widerVisitor = new ExpressionVisitor(info, position, attr, function () { return getExpressionScope(dinfo, widerPath_1, false); });\n widerPath_1.tail.visit(widerVisitor, null);\n return widerVisitor.result;\n }\n }\n return visitor.result;\n }\n}\nfunction elementCompletions(info, path) {\n var htmlNames = elementNames().filter(function (name) { return !(name in hiddenHtmlElements); });\n // Collect the elements referenced by the selectors\n var directiveElements = getSelectors(info)\n .selectors.map(function (selector) { return selector.element; })\n .filter(function (name) { return !!name; });\n var components = directiveElements.map(function (name) { return ({ kind: 'component', name: name, sort: name }); });\n var htmlElements = htmlNames.map(function (name) { return ({ 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 var re = /&[A-Za-z]*;?(?!\\d)/g;\n var found;\n var result = undefined;\n while (found = re.exec(value)) {\n var len = found[0].length;\n if (position >= found.index && position < (found.index + len)) {\n result = Object.keys(NAMED_ENTITIES)\n .map(function (name) { return ({ 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 var templatePath = findTemplateAstAt(info.templateAst, position);\n var mostSpecific = templatePath.tail;\n if (mostSpecific) {\n var visitor = new ExpressionVisitor(info, position, undefined, function () { return 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 var tail = path.tail;\n if (tail instanceof Text) {\n var 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}\nvar ExpressionVisitor = /** @class */ (function (_super) {\n tslib_1.__extends(ExpressionVisitor, _super);\n function ExpressionVisitor(info, position, attr, getExpressionScope) {\n var _this = _super.call(this) || this;\n _this.info = info;\n _this.position = position;\n _this.attr = attr;\n _this.getExpressionScope = getExpressionScope || (function () { return info.template.members; });\n return _this;\n }\n ExpressionVisitor.prototype.visitDirectiveProperty = function (ast) {\n this.attributeValueCompletions(ast.value);\n };\n ExpressionVisitor.prototype.visitElementProperty = function (ast) {\n this.attributeValueCompletions(ast.value);\n };\n ExpressionVisitor.prototype.visitEvent = function (ast) { this.attributeValueCompletions(ast.handler); };\n ExpressionVisitor.prototype.visitElement = function (ast) {\n var _this = this;\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 var key_1 = this.attr.name.substr(TEMPLATE_ATTR_PREFIX.length);\n // Find the selector\n var selectorInfo = getSelectors(this.info);\n var selectors = selectorInfo.selectors;\n var selector_1 = selectors.filter(function (s) { return s.attrs.some(function (attr, i) { return i % 2 == 0 && attr == key_1; }); })[0];\n var templateBindingResult = this.info.expressionParser.parseTemplateBindings(key_1, this.attr.value, null);\n // find the template binding that contains the position\n if (!this.attr.valueSpan)\n return;\n var valueRelativePosition_1 = this.position - this.attr.valueSpan.start.offset - 1;\n var bindings = templateBindingResult.templateBindings;\n var binding = bindings.find(function (binding) { return inSpan(valueRelativePosition_1, binding.span, /* exclusive */ true); }) ||\n bindings.find(function (binding) { return inSpan(valueRelativePosition_1, binding.span); });\n var keyCompletions = function () {\n var keys = [];\n if (selector_1) {\n var attrNames = selector_1.attrs.filter(function (_, i) { return i % 2 == 0; });\n keys = attrNames.filter(function (name) { return name.startsWith(key_1) && name != key_1; })\n .map(function (name) { return lowerName(name.substr(key_1.length)); });\n }\n keys.push('let');\n _this.result = keys.map(function (key) { return ({ kind: 'key', name: key, sort: key }); });\n };\n if (!binding || (binding.key == key_1 && !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 var equalLocation = this.attr.value.indexOf('=');\n this.result = [];\n if (equalLocation >= 0 && valueRelativePosition_1 >= 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 var directiveMetadata = selectorInfo.map.get(selector_1);\n if (directiveMetadata) {\n var 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_1 <= (binding.key.length - key_1.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_1, binding.expression.ast.span)) ||\n (binding.key &&\n valueRelativePosition_1 > binding.span.start + (binding.key.length - key_1.length)) ||\n !binding.key) {\n var span = new ParseSpan(0, this.attr.value.length);\n this.attributeValueCompletions(binding.expression ? binding.expression.ast :\n new PropertyRead(span, new ImplicitReceiver(span), ''), valueRelativePosition_1);\n }\n else {\n keyCompletions();\n }\n }\n }\n };\n ExpressionVisitor.prototype.visitBoundText = function (ast) {\n var expressionPosition = this.position - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n var completions = getExpressionCompletions(this.getExpressionScope(), ast.value, expressionPosition, this.info.template.query);\n if (completions) {\n this.result = this.symbolsToCompletions(completions);\n }\n }\n };\n ExpressionVisitor.prototype.attributeValueCompletions = function (value, position) {\n var 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 ExpressionVisitor.prototype.symbolsToCompletions = function (symbols) {\n return symbols.filter(function (s) { return !s.name.startsWith('__') && s.public; })\n .map(function (symbol) { return ({ kind: symbol.kind, name: symbol.name, sort: symbol.name }); });\n };\n Object.defineProperty(ExpressionVisitor.prototype, \"attributeValuePosition\", {\n get: function () {\n if (this.attr && this.attr.valueSpan) {\n return this.position - this.attr.valueSpan.start.offset - 1;\n }\n return 0;\n },\n enumerable: true,\n configurable: true\n });\n return ExpressionVisitor;\n}(NullTemplateVisitor));\nfunction getSourceText(template, span) {\n return template.source.substring(span.start, span.end);\n}\nfunction nameOfAttr(attr) {\n var name = attr.name;\n if (attr.output) {\n name = removeSuffix(name, 'Events');\n name = removeSuffix(name, 'Changed');\n }\n var 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}\nvar templateAttr = /^(\\w+:)?(template$|^\\*)/;\nfunction createElementCssSelector(element) {\n var cssSelector = new CssSelector();\n var elNameNoNs = splitNsName(element.name)[1];\n cssSelector.setElement(elNameNoNs);\n for (var _i = 0, _a = element.attrs; _i < _a.length; _i++) {\n var attr = _a[_i];\n if (!attr.name.match(templateAttr)) {\n var _b = splitNsName(attr.name), _ = _b[0], attrNameNoNs = _b[1];\n cssSelector.addAttribute(attrNameNoNs, attr.value);\n if (attr.name.toLowerCase() == 'class') {\n var classes = attr.value.split(/s+/g);\n classes.forEach(function (className) { return cssSelector.addClassName(className); });\n }\n }\n }\n return cssSelector;\n}\nfunction foldAttrs(attrs) {\n var inputOutput = new Map();\n var templates = new Map();\n var result = [];\n attrs.forEach(function (attr) {\n if (attr.fromHtml) {\n return attr;\n }\n if (attr.template) {\n var 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 var 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 var 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 var templatePosition = info.position - info.template.span.start;\n var path = findTemplateAstAt(info.templateAst, templatePosition);\n if (path.tail) {\n var symbol_1 = undefined;\n var span_1 = undefined;\n var attributeValueSymbol_1 = function (ast, inEvent) {\n if (inEvent === void 0) { inEvent = false; }\n var attribute = findAttribute(info);\n if (attribute) {\n if (inSpan(templatePosition, spanOf(attribute.valueSpan))) {\n var dinfo = diagnosticInfoFromTemplateInfo(info);\n var scope = getExpressionScope(dinfo, path, inEvent);\n if (attribute.valueSpan) {\n var expressionOffset = attribute.valueSpan.start.offset + 1;\n var result = getExpressionSymbol(scope, ast, templatePosition - expressionOffset, info.template.query);\n if (result) {\n symbol_1 = result.symbol;\n span_1 = offsetSpan(result.span, expressionOffset);\n }\n }\n return true;\n }\n }\n return false;\n };\n path.tail.visit({\n visitNgContent: function (ast) { },\n visitEmbeddedTemplate: function (ast) { },\n visitElement: function (ast) {\n var component = ast.directives.find(function (d) { return d.directive.isComponent; });\n if (component) {\n symbol_1 = info.template.query.getTypeSymbol(component.directive.type.reference);\n symbol_1 = symbol_1 && new OverrideKindSymbol(symbol_1, 'component');\n span_1 = spanOf(ast);\n }\n else {\n // Find a directive that matches the element name\n var directive = ast.directives.find(function (d) { return d.directive.selector != null && d.directive.selector.indexOf(ast.name) >= 0; });\n if (directive) {\n symbol_1 = info.template.query.getTypeSymbol(directive.directive.type.reference);\n symbol_1 = symbol_1 && new OverrideKindSymbol(symbol_1, 'directive');\n span_1 = spanOf(ast);\n }\n }\n },\n visitReference: function (ast) {\n symbol_1 = ast.value && info.template.query.getTypeSymbol(tokenReference(ast.value));\n span_1 = spanOf(ast);\n },\n visitVariable: function (ast) { },\n visitEvent: function (ast) {\n if (!attributeValueSymbol_1(ast.handler, /* inEvent */ true)) {\n symbol_1 = findOutputBinding(info, path, ast);\n symbol_1 = symbol_1 && new OverrideKindSymbol(symbol_1, 'event');\n span_1 = spanOf(ast);\n }\n },\n visitElementProperty: function (ast) { attributeValueSymbol_1(ast.value); },\n visitAttr: function (ast) { },\n visitBoundText: function (ast) {\n var expressionPosition = templatePosition - ast.sourceSpan.start.offset;\n if (inSpan(expressionPosition, ast.value.span)) {\n var dinfo = diagnosticInfoFromTemplateInfo(info);\n var scope = getExpressionScope(dinfo, path, /* includeEvent */ false);\n var result = getExpressionSymbol(scope, ast.value, expressionPosition, info.template.query);\n if (result) {\n symbol_1 = result.symbol;\n span_1 = offsetSpan(result.span, ast.sourceSpan.start.offset);\n }\n }\n },\n visitText: function (ast) { },\n visitDirective: function (ast) {\n symbol_1 = info.template.query.getTypeSymbol(ast.directive.type.reference);\n span_1 = spanOf(ast);\n },\n visitDirectiveProperty: function (ast) {\n if (!attributeValueSymbol_1(ast.value)) {\n symbol_1 = findInputBinding(info, path, ast);\n span_1 = spanOf(ast);\n }\n }\n }, null);\n if (symbol_1 && span_1) {\n return { symbol: symbol_1, span: offsetSpan(span_1, info.template.span.start) };\n }\n }\n}\nfunction findAttribute(info) {\n if (info.position) {\n var templatePosition = info.position - info.template.span.start;\n var path = findNode(info.htmlAst, templatePosition);\n return path.first(Attribute);\n }\n}\nfunction findInputBinding(info, path, binding) {\n var element = path.first(ElementAst);\n if (element) {\n for (var _i = 0, _a = element.directives; _i < _a.length; _i++) {\n var directive = _a[_i];\n var invertedInput = invertMap(directive.directive.inputs);\n var fieldName = invertedInput[binding.templateName];\n if (fieldName) {\n var 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 var element = path.first(ElementAst);\n if (element) {\n for (var _i = 0, _a = element.directives; _i < _a.length; _i++) {\n var directive = _a[_i];\n var invertedOutputs = invertMap(directive.directive.outputs);\n var fieldName = invertedOutputs[binding.name];\n if (fieldName) {\n var 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 var result = {};\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var name_1 = _a[_i];\n var v = obj[name_1];\n result[v] = name_1;\n }\n return result;\n}\n/**\n * Wrap a symbol and change its kind to component.\n */\nvar OverrideKindSymbol = /** @class */ (function () {\n function OverrideKindSymbol(sym, kindOverride) {\n this.sym = sym;\n this.kind = kindOverride;\n }\n Object.defineProperty(OverrideKindSymbol.prototype, \"name\", {\n get: function () { return this.sym.name; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"language\", {\n get: function () { return this.sym.language; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"type\", {\n get: function () { return this.sym.type; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"container\", {\n get: function () { return this.sym.container; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"public\", {\n get: function () { return this.sym.public; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"callable\", {\n get: function () { return this.sym.callable; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"nullable\", {\n get: function () { return this.sym.nullable; },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(OverrideKindSymbol.prototype, \"definition\", {\n get: function () { return this.sym.definition; },\n enumerable: true,\n configurable: true\n });\n OverrideKindSymbol.prototype.members = function () { return this.sym.members(); };\n OverrideKindSymbol.prototype.signatures = function () { return this.sym.signatures(); };\n OverrideKindSymbol.prototype.selectSignature = function (types) { return this.sym.selectSignature(types); };\n OverrideKindSymbol.prototype.indexed = function (argument) { return this.sym.indexed(argument); };\n return OverrideKindSymbol;\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 var 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 var results = [];\n var _loop_1 = function (template) {\n var ast = astProvider.getTemplateAst(template, fileName);\n if (ast) {\n if (ast.parseErrors && ast.parseErrors.length) {\n results.push.apply(results, ast.parseErrors.map(function (e) { return ({\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 var info = {\n templateAst: ast.templateAst,\n htmlAst: ast.htmlAst,\n offset: template.span.start,\n query: template.query,\n members: template.members\n };\n var expressionDiagnostics = getTemplateExpressionDiagnostics(info);\n results.push.apply(results, expressionDiagnostics);\n }\n if (ast.errors) {\n results.push.apply(results, ast.errors.map(function (e) { return ({ kind: e.kind, span: e.span || template.span, message: e.message }); }));\n }\n }\n };\n for (var _i = 0, templates_1 = templates; _i < templates_1.length; _i++) {\n var template = templates_1[_i];\n _loop_1(template);\n }\n return results;\n}\nexport function getDeclarationDiagnostics(declarations, modules) {\n var results = [];\n var directives = undefined;\n var _loop_2 = function (declaration) {\n var report = function (message, span) {\n results.push({\n kind: DiagnosticKind.Error,\n span: span || declaration.declarationSpan, message: message\n });\n };\n for (var _i = 0, _a = declaration.errors; _i < _a.length; _i++) {\n var error = _a[_i];\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 var _b = declaration.metadata.template, template = _b.template, templateUrl = _b.templateUrl;\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(function (module) {\n module.declaredDirectives.forEach(function (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 for (var _i = 0, declarations_1 = declarations; _i < declarations_1.length; _i++) {\n var declaration = declarations_1[_i];\n _loop_2(declaration);\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 var result = locateSymbol(info);\n if (result) {\n return { text: hoverTextOf(result.symbol), span: result.span };\n }\n}\nfunction hoverTextOf(symbol) {\n var result = [{ text: symbol.kind }, { text: ' ' }, { text: symbol.name, language: symbol.language }];\n var 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}\nvar LanguageServiceImpl = /** @class */ (function () {\n function LanguageServiceImpl(host) {\n this.host = host;\n }\n Object.defineProperty(LanguageServiceImpl.prototype, \"metadataResolver\", {\n get: function () { return this.host.resolver; },\n enumerable: true,\n configurable: true\n });\n LanguageServiceImpl.prototype.getTemplateReferences = function () { return this.host.getTemplateReferences(); };\n LanguageServiceImpl.prototype.getDiagnostics = function (fileName) {\n var results = [];\n var templates = this.host.getTemplates(fileName);\n if (templates && templates.length) {\n results.push.apply(results, getTemplateDiagnostics(fileName, this, templates));\n }\n var declarations = this.host.getDeclarations(fileName);\n if (declarations && declarations.length) {\n var summary = this.host.getAnalyzedModules();\n results.push.apply(results, getDeclarationDiagnostics(declarations, summary));\n }\n return uniqueBySpan(results);\n };\n LanguageServiceImpl.prototype.getPipesAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return templateInfo.pipes;\n }\n return [];\n };\n LanguageServiceImpl.prototype.getCompletionsAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getTemplateCompletions(templateInfo);\n }\n };\n LanguageServiceImpl.prototype.getDefinitionAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getDefinition(templateInfo);\n }\n };\n LanguageServiceImpl.prototype.getHoverAt = function (fileName, position) {\n var templateInfo = this.getTemplateAstAtPosition(fileName, position);\n if (templateInfo) {\n return getHover(templateInfo);\n }\n };\n LanguageServiceImpl.prototype.getTemplateAstAtPosition = function (fileName, position) {\n var template = this.host.getTemplateAt(fileName, position);\n if (template) {\n var 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: position,\n fileName: fileName,\n template: 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 LanguageServiceImpl.prototype.getTemplateAst = function (template, contextFile) {\n var _this = this;\n var result = undefined;\n try {\n var resolvedMetadata = this.metadataResolver.getNonNormalizedDirectiveMetadata(template.type);\n var metadata = resolvedMetadata && resolvedMetadata.metadata;\n if (metadata) {\n var rawHtmlParser = new HtmlParser();\n var htmlParser = new I18NHtmlParser(rawHtmlParser);\n var expressionParser = new Parser(new Lexer());\n var config = new CompilerConfig();\n var parser = new TemplateParser(config, this.host.resolver.getReflector(), expressionParser, new DomElementSchemaRegistry(), htmlParser, null, []);\n var htmlResult = htmlParser.parse(template.source, '', true);\n var analyzedModules = this.host.getAnalyzedModules();\n var errors = undefined;\n var 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 var resolvedDirectives = ngModule.transitiveModule.directives.map(function (d) { return _this.host.resolver.getNonNormalizedDirectiveMetadata(d.reference); });\n var directives = removeMissing(resolvedDirectives).map(function (d) { return d.metadata.toSummary(); });\n var pipes = ngModule.transitiveModule.pipes.map(function (p) { return _this.host.resolver.getOrLoadPipeMetadata(p.reference).toSummary(); });\n var schemas = ngModule.schemas;\n var parseResult = parser.tryParseHtml(htmlResult, metadata, directives, pipes, schemas);\n result = {\n htmlAst: htmlResult.rootNodes,\n templateAst: parseResult.templateAst,\n directive: metadata, directives: directives, pipes: pipes,\n parseErrors: parseResult.errors, expressionParser: expressionParser, errors: errors\n };\n }\n }\n }\n catch (e) {\n var 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: span }] };\n }\n return result || {};\n };\n return LanguageServiceImpl;\n}());\nfunction removeMissing(values) {\n return values.filter(function (e) { return !!e; });\n}\nfunction uniqueBySpan(elements) {\n if (elements) {\n var result = [];\n var map = new Map();\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n var span = element.span;\n var 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 var result = undefined;\n var resultSize = 0;\n for (var _i = 0, _a = modules.ngModules; _i < _a.length; _i++) {\n var module_1 = _a[_i];\n var moduleSize = module_1.transitiveModule.directives.length;\n if (moduleSize > resultSize) {\n result = module_1;\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';\nvar ReflectorModuleModuleResolutionHost = /** @class */ (function () {\n function ReflectorModuleModuleResolutionHost(host, getProgram) {\n var _this = this;\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 = function (directoryName) { return _this.host.directoryExists(directoryName); };\n }\n ReflectorModuleModuleResolutionHost.prototype.fileExists = function (fileName) { return !!this.host.getScriptSnapshot(fileName); };\n ReflectorModuleModuleResolutionHost.prototype.readFile = function (fileName) {\n var 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 ReflectorModuleModuleResolutionHost.prototype.getSourceFileMetadata = function (fileName) {\n var sf = this.getProgram().getSourceFile(fileName);\n return sf ? this.metadataCollector.getMetadata(sf) : undefined;\n };\n ReflectorModuleModuleResolutionHost.prototype.cacheMetadata = function (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 return ReflectorModuleModuleResolutionHost;\n}());\nvar ReflectorHost = /** @class */ (function () {\n function ReflectorHost(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(), function (s) { return s; });\n }\n ReflectorHost.prototype.getMetadataFor = function (modulePath) {\n return readMetadata(modulePath, this.hostAdapter, this.metadataReaderCache);\n };\n ReflectorHost.prototype.moduleNameToFileName = function (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 var resolved = ts.resolveModuleName(moduleName, containingFile, this.options, this.hostAdapter)\n .resolvedModule;\n return resolved ? resolved.resolvedFileName : null;\n };\n ReflectorHost.prototype.getOutputName = function (filePath) { return filePath; };\n return ReflectorHost;\n}());\nexport { ReflectorHost };\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 * as tslib_1 from \"tslib\";\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 var ngHost = new TypeScriptServiceHost(host, service);\n var 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 */\nvar DummyHtmlParser = /** @class */ (function (_super) {\n tslib_1.__extends(DummyHtmlParser, _super);\n function DummyHtmlParser() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DummyHtmlParser.prototype.parse = function (source, url, parseExpansionForms, interpolationConfig) {\n if (parseExpansionForms === void 0) { parseExpansionForms = false; }\n if (interpolationConfig === void 0) { interpolationConfig = DEFAULT_INTERPOLATION_CONFIG; }\n return new ParseTreeResult([], []);\n };\n return DummyHtmlParser;\n}(HtmlParser));\nexport { DummyHtmlParser };\n/**\n * Avoid loading resources in the language servcie by using a dummy loader.\n */\nvar DummyResourceLoader = /** @class */ (function (_super) {\n tslib_1.__extends(DummyResourceLoader, _super);\n function DummyResourceLoader() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DummyResourceLoader.prototype.get = function (url) { return Promise.resolve(''); };\n return DummyResourceLoader;\n}(ResourceLoader));\nexport { DummyResourceLoader };\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 */\nvar TypeScriptServiceHost = /** @class */ (function () {\n function TypeScriptServiceHost(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 TypeScriptServiceHost.prototype.setSite = function (service) { this.service = service; };\n Object.defineProperty(TypeScriptServiceHost.prototype, \"resolver\", {\n /**\n * Angular LanguageServiceHost implementation\n */\n get: function () {\n var _this = this;\n this.validate();\n var result = this._resolver;\n if (!result) {\n var moduleResolver = new NgModuleResolver(this.reflector);\n var directiveResolver = new DirectiveResolver(this.reflector);\n var pipeResolver = new PipeResolver(this.reflector);\n var elementSchemaRegistry = new DomElementSchemaRegistry();\n var resourceLoader = new DummyResourceLoader();\n var urlResolver = createOfflineCompileUrlResolver();\n var htmlParser = new DummyHtmlParser();\n // This tracks the CompileConfig in codegen.ts. Currently these options\n // are hard-coded.\n var config = new CompilerConfig({ defaultEncapsulation: ViewEncapsulation.Emulated, useJit: false });\n var 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, function (error, type) { return _this.collectError(error, type && type.filePath); });\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.getTemplateReferences = function () {\n this.ensureTemplateMap();\n return this.templateReferences || [];\n };\n TypeScriptServiceHost.prototype.getTemplateAt = function (fileName, position) {\n var sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.fileName;\n var 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 var 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 TypeScriptServiceHost.prototype.getAnalyzedModules = function () {\n this.updateAnalyzedModules();\n return this.ensureAnalyzedModules();\n };\n TypeScriptServiceHost.prototype.ensureAnalyzedModules = function () {\n var 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 var analyzeHost = { isSourceFile: function (filePath) { return true; } };\n var programFiles = this.program.getSourceFiles().map(function (sf) { return sf.fileName; });\n analyzedModules =\n analyzeNgModules(programFiles, analyzeHost, this.staticSymbolResolver, this.resolver);\n }\n this.analyzedModules = analyzedModules;\n }\n return analyzedModules;\n };\n TypeScriptServiceHost.prototype.getTemplates = function (fileName) {\n var _this = this;\n this.ensureTemplateMap();\n var componentType = this.fileToComponent.get(fileName);\n if (componentType) {\n var templateSource = this.getTemplateAt(fileName, 0);\n if (templateSource) {\n return [templateSource];\n }\n }\n else {\n var version_1 = this.host.getScriptVersion(fileName);\n var result_1 = [];\n // Find each template string in the file\n var visit_1 = function (child) {\n var templateSource = _this.getSourceFromNode(fileName, version_1, child);\n if (templateSource) {\n result_1.push(templateSource);\n }\n else {\n ts.forEachChild(child, visit_1);\n }\n };\n var sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n this.context = sourceFile.path || sourceFile.fileName;\n ts.forEachChild(sourceFile, visit_1);\n }\n return result_1.length ? result_1 : undefined;\n }\n };\n TypeScriptServiceHost.prototype.getDeclarations = function (fileName) {\n var _this = this;\n var result = [];\n var sourceFile = this.getSourceFile(fileName);\n if (sourceFile) {\n var visit_2 = function (child) {\n var declaration = _this.getDeclarationFromNode(sourceFile, child);\n if (declaration) {\n result.push(declaration);\n }\n else {\n ts.forEachChild(child, visit_2);\n }\n };\n ts.forEachChild(sourceFile, visit_2);\n }\n return result;\n };\n TypeScriptServiceHost.prototype.getSourceFile = function (fileName) {\n return this.tsService.getProgram().getSourceFile(fileName);\n };\n TypeScriptServiceHost.prototype.updateAnalyzedModules = function () {\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 Object.defineProperty(TypeScriptServiceHost.prototype, \"program\", {\n get: function () { return this.tsService.getProgram(); },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TypeScriptServiceHost.prototype, \"checker\", {\n get: function () {\n var checker = this._checker;\n if (!checker) {\n checker = this._checker = this.program.getTypeChecker();\n }\n return checker;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.validate = function () {\n var _this = this;\n var program = this.program;\n if (this.lastProgram !== program) {\n // Invalidate file that have changed in the static symbol resolver\n var invalidateFile = function (fileName) {\n return _this._staticSymbolResolver.invalidateFile(fileName);\n };\n this.clearCaches();\n var seen_1 = new Set();\n for (var _i = 0, _a = this.program.getSourceFiles(); _i < _a.length; _i++) {\n var sourceFile = _a[_i];\n var fileName = sourceFile.fileName;\n seen_1.add(fileName);\n var version = this.host.getScriptVersion(fileName);\n var 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 var missing = Array.from(this.fileVersions.keys()).filter(function (f) { return !seen_1.has(f); });\n missing.forEach(function (f) { return _this.fileVersions.delete(f); });\n if (this._staticSymbolResolver) {\n missing.forEach(invalidateFile);\n }\n this.lastProgram = program;\n }\n };\n TypeScriptServiceHost.prototype.clearCaches = function () {\n this._checker = null;\n this._typeCache = [];\n this._resolver = null;\n this.collectedErrors = null;\n this.modulesOutOfDate = true;\n };\n TypeScriptServiceHost.prototype.ensureTemplateMap = function () {\n if (!this.fileToComponent || !this.templateReferences) {\n var fileToComponent = new Map();\n var templateReference = [];\n var ngModuleSummary = this.getAnalyzedModules();\n var urlResolver = createOfflineCompileUrlResolver();\n for (var _i = 0, _a = ngModuleSummary.ngModules; _i < _a.length; _i++) {\n var module_1 = _a[_i];\n for (var _b = 0, _c = module_1.declaredDirectives; _b < _c.length; _b++) {\n var directive = _c[_b];\n var metadata = this.resolver.getNonNormalizedDirectiveMetadata(directive.reference).metadata;\n if (metadata.isComponent && metadata.template && metadata.template.templateUrl) {\n var 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 TypeScriptServiceHost.prototype.getSourceFromDeclaration = function (fileName, version, source, span, type, declaration, node, sourceFile) {\n var queryCache = undefined;\n var t = this;\n if (declaration) {\n return {\n version: version,\n source: source,\n span: span,\n type: type,\n get members() {\n return getClassMembersFromDeclaration(t.program, t.checker, sourceFile, declaration);\n },\n get query() {\n if (!queryCache) {\n var pipes_1 = t.service.getPipesAt(fileName, node.getStart());\n queryCache = getSymbolQuery(t.program, t.checker, sourceFile, function () { return getPipesTable(sourceFile, t.program, t.checker, pipes_1); });\n }\n return queryCache;\n }\n };\n }\n };\n TypeScriptServiceHost.prototype.getSourceFromNode = function (fileName, version, node) {\n var result = undefined;\n var t = this;\n switch (node.kind) {\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n var _a = this.getTemplateClassDeclFromNode(node), declaration = _a[0], decorator = _a[1];\n if (declaration && declaration.name) {\n var 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 TypeScriptServiceHost.prototype.getSourceFromType = function (fileName, version, type) {\n var result = undefined;\n var declaration = this.getTemplateClassFromStaticSymbol(type);\n if (declaration) {\n var snapshot = this.host.getScriptSnapshot(fileName);\n if (snapshot) {\n var 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 Object.defineProperty(TypeScriptServiceHost.prototype, \"reflectorHost\", {\n get: function () {\n var _this = this;\n var 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 var 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 var source = this.tsService.getProgram().getSourceFile(this.context);\n if (!source) {\n throw new Error('Internal error: no context could be determined');\n }\n var tsConfigPath = findTsConfig(source.fileName);\n var basePath = path.dirname(tsConfigPath || this.context);\n var options = { basePath: basePath, genDir: basePath };\n var 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(function () { return _this.tsService.getProgram(); }, this.host, options);\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.collectError = function (error, filePath) {\n if (filePath) {\n var errorMap = this.collectedErrors;\n if (!errorMap || !this.collectedErrors) {\n errorMap = this.collectedErrors = new Map();\n }\n var errors = errorMap.get(filePath);\n if (!errors) {\n errors = [];\n this.collectedErrors.set(filePath, errors);\n }\n errors.push(error);\n }\n };\n Object.defineProperty(TypeScriptServiceHost.prototype, \"staticSymbolResolver\", {\n get: function () {\n var _this = this;\n var result = this._staticSymbolResolver;\n if (!result) {\n this._summaryResolver = new AotSummaryResolver({\n loadSummary: function (filePath) { return null; },\n isSourceFile: function (sourceFilePath) { return true; },\n toSummaryFileName: function (sourceFilePath) { return sourceFilePath; },\n fromSummaryFileName: function (filePath) { return filePath; },\n }, this._staticSymbolCache);\n result = this._staticSymbolResolver = new StaticSymbolResolver(this.reflectorHost, this._staticSymbolCache, this._summaryResolver, function (e, filePath) { return _this.collectError(e, filePath); });\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TypeScriptServiceHost.prototype, \"reflector\", {\n get: function () {\n var _this = this;\n var result = this._reflector;\n if (!result) {\n var ssr = this.staticSymbolResolver;\n result = this._reflector = new StaticReflector(this._summaryResolver, ssr, [], [], function (e, filePath) { return _this.collectError(e, filePath); });\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n TypeScriptServiceHost.prototype.getTemplateClassFromStaticSymbol = function (type) {\n var source = this.getSourceFile(type.filePath);\n if (source) {\n var declarationNode = ts.forEachChild(source, function (child) {\n if (child.kind === ts.SyntaxKind.ClassDeclaration) {\n var 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 TypeScriptServiceHost.prototype.getTemplateClassDeclFromNode = function (currentToken) {\n // Verify we are in a 'template' property assignment, in an object literal, which is an call\n // arg, in a decorator\n var 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 var callTarget = parentNode.expression;\n var decorator = parentNode.parent; // Decorator\n if (!decorator || decorator.kind !== ts.SyntaxKind.Decorator) {\n return TypeScriptServiceHost.missingTemplate;\n }\n var declaration = decorator.parent; // ClassDeclaration\n if (!declaration || declaration.kind !== ts.SyntaxKind.ClassDeclaration) {\n return TypeScriptServiceHost.missingTemplate;\n }\n return [declaration, callTarget];\n };\n TypeScriptServiceHost.prototype.getCollectedErrors = function (defaultSpan, sourceFile) {\n var errors = (this.collectedErrors && this.collectedErrors.get(sourceFile.fileName));\n return (errors && errors.map(function (e) {\n var line = e.line || (e.position && e.position.line);\n var column = e.column || (e.position && e.position.column);\n var span = spanAt(sourceFile, line, column) || defaultSpan;\n if (isFormattedError(e)) {\n return errorToDiagnosticWithChain(e, span);\n }\n return { message: e.message, span: span };\n })) ||\n [];\n };\n TypeScriptServiceHost.prototype.getDeclarationFromNode = function (sourceFile, node) {\n if (node.kind == ts.SyntaxKind.ClassDeclaration && node.decorators &&\n node.name) {\n for (var _i = 0, _a = node.decorators; _i < _a.length; _i++) {\n var decorator = _a[_i];\n if (decorator.expression && decorator.expression.kind == ts.SyntaxKind.CallExpression) {\n var classDeclaration = node;\n if (classDeclaration.name) {\n var call = decorator.expression;\n var target = call.expression;\n var type = this.checker.getTypeAtLocation(target);\n if (type) {\n var staticSymbol = this.reflector.getStaticSymbol(sourceFile.fileName, classDeclaration.name.text);\n try {\n if (this.resolver.isDirective(staticSymbol)) {\n var metadata = this.resolver.getNonNormalizedDirectiveMetadata(staticSymbol).metadata;\n var declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan: declarationSpan,\n metadata: metadata,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n }\n catch (e) {\n if (e.message) {\n this.collectError(e, sourceFile.fileName);\n var declarationSpan = spanOf(target);\n return {\n type: staticSymbol,\n declarationSpan: declarationSpan,\n errors: this.getCollectedErrors(declarationSpan, sourceFile)\n };\n }\n }\n }\n }\n }\n }\n }\n };\n TypeScriptServiceHost.prototype.stringOf = function (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 TypeScriptServiceHost.prototype.findNode = function (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 TypeScriptServiceHost.missingTemplate = [undefined, undefined];\n return TypeScriptServiceHost;\n}());\nexport { TypeScriptServiceHost };\nfunction findTsConfig(fileName) {\n var dir = path.dirname(fileName);\n while (fs.existsSync(dir)) {\n var candidate = path.join(dir, 'tsconfig.json');\n if (fs.existsSync(candidate))\n return candidate;\n var 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 var position_1 = ts.getPositionOfLineAndCharacter(sourceFile, line, column);\n var findChild = function findChild(node) {\n if (node.kind > ts.SyntaxKind.LastToken && node.pos <= position_1 && node.end > position_1) {\n var betterNode = ts.forEachChild(node, findChild);\n return betterNode || node;\n }\n };\n var node = ts.forEachChild(sourceFile, findChild);\n if (node) {\n return { start: node.getStart(), end: node.getEnd() };\n }\n }\n}\nfunction chainedMessage(chain, indent) {\n if (indent === void 0) { indent = ''; }\n return indent + chain.message + (chain.next ? chainedMessage(chain.next, indent + ' ') : '');\n}\nvar DiagnosticMessageChainImpl = /** @class */ (function () {\n function DiagnosticMessageChainImpl(message, next) {\n this.message = message;\n this.next = next;\n }\n DiagnosticMessageChainImpl.prototype.toString = function () { return chainedMessage(this); };\n return DiagnosticMessageChainImpl;\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: 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';\nvar projectHostMap = new WeakMap();\nexport function getExternalFiles(project) {\n var host = projectHostMap.get(project);\n if (host) {\n return host.getTemplateReferences();\n }\n}\nvar angularOnlyResults = process.argv.indexOf('--angularOnlyResults') >= 0;\nfunction angularOnlyFilter(ls) {\n return {\n cleanupSemanticCache: function () { return ls.cleanupSemanticCache(); },\n getSyntacticDiagnostics: function (fileName) { return []; },\n getSemanticDiagnostics: function (fileName) { return []; },\n getCompilerOptionsDiagnostics: function () { return []; },\n getSyntacticClassifications: function (fileName, span) { return []; },\n getSemanticClassifications: function (fileName, span) { return []; },\n getEncodedSyntacticClassifications: function (fileName, span) { return ({ undefined: undefined }); },\n getEncodedSemanticClassifications: function (fileName, span) { return undefined; },\n getCompletionsAtPosition: function (fileName, position) { return undefined; },\n getCompletionEntryDetails: function (fileName, position, entryName) {\n return undefined;\n },\n getCompletionEntrySymbol: function (fileName, position, entryName) { return undefined; },\n getQuickInfoAtPosition: function (fileName, position) { return undefined; },\n getNameOrDottedNameSpan: function (fileName, startPos, endPos) { return undefined; },\n getBreakpointStatementAtPosition: function (fileName, position) { return undefined; },\n getSignatureHelpItems: function (fileName, position) { return undefined; },\n getRenameInfo: function (fileName, position) { return undefined; },\n findRenameLocations: function (fileName, position, findInStrings, findInComments) {\n return [];\n },\n getDefinitionAtPosition: function (fileName, position) { return []; },\n getTypeDefinitionAtPosition: function (fileName, position) { return []; },\n getImplementationAtPosition: function (fileName, position) { return []; },\n getReferencesAtPosition: function (fileName, position) { return []; },\n findReferences: function (fileName, position) { return []; },\n getDocumentHighlights: function (fileName, position, filesToSearch) { return []; },\n /** @deprecated */\n getOccurrencesAtPosition: function (fileName, position) { return []; },\n getNavigateToItems: function (searchValue) { return []; },\n getNavigationBarItems: function (fileName) { return []; },\n getNavigationTree: function (fileName) { return undefined; },\n getOutliningSpans: function (fileName) { return []; },\n getTodoComments: function (fileName, descriptors) { return []; },\n getBraceMatchingAtPosition: function (fileName, position) { return []; },\n getIndentationAtPosition: function (fileName, position, options) { return undefined; },\n getFormattingEditsForRange: function (fileName, start, end, options) { return []; },\n getFormattingEditsForDocument: function (fileName, options) { return []; },\n getFormattingEditsAfterKeystroke: function (fileName, position, key, options) { return []; },\n getDocCommentTemplateAtPosition: function (fileName, position) { return undefined; },\n isValidBraceCompletionAtPosition: function (fileName, position, openingBrace) { return undefined; },\n getSpanOfEnclosingComment: function (fileName, position, onlyMultiLine) { return undefined; },\n getCodeFixesAtPosition: function (fileName, start, end, errorCodes) { return []; },\n applyCodeActionCommand: function (action) { return Promise.resolve(undefined); },\n getEmitOutput: function (fileName) { return undefined; },\n getProgram: function () { return ls.getProgram(); },\n dispose: function () { return ls.dispose(); },\n getApplicableRefactors: function (fileName, positionOrRaneg) { return []; },\n getEditsForRefactor: function (fileName, formatOptions, positionOrRange, refactorName, actionName) {\n return undefined;\n }\n };\n}\nexport function create(info /* ts.server.PluginCreateInfo */) {\n // Create the proxy\n var proxy = Object.create(null);\n var 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 function (fileName) { return tryCall(fileName, function () { return (m.call(ls, fileName)); }); };\n }\n function tryFilenameOneCall(m) {\n return function (fileName, p) { return tryCall(fileName, function () { return (m.call(ls, fileName, p)); }); };\n }\n function tryFilenameTwoCall(m) {\n return function (fileName, p1, p2) { return tryCall(fileName, function () { return (m.call(ls, fileName, p1, p2)); }); };\n }\n function tryFilenameThreeCall(m) {\n return function (fileName, p1, p2, p3) { return tryCall(fileName, function () { return (m.call(ls, fileName, p1, p2, p3)); }); };\n }\n function tryFilenameFourCall(m) {\n return function (fileName, p1, p2, p3, p4) {\n return tryCall(fileName, function () { return (m.call(ls, fileName, p1, p2, p3, p4)); });\n };\n }\n function typescriptOnly(ls) {\n return {\n cleanupSemanticCache: function () { return ls.cleanupSemanticCache(); },\n getSyntacticDiagnostics: tryFilenameCall(ls.getSyntacticDiagnostics),\n getSemanticDiagnostics: tryFilenameCall(ls.getSemanticDiagnostics),\n getCompilerOptionsDiagnostics: function () { return 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: function (searchValue, maxResultCount, fileName, excludeDtsFiles) { return tryCall(fileName, function () { return 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: (function (action) { return tryCall(undefined, function () { return ls.applyCodeActionCommand(action); }); }),\n getEmitOutput: tryFilenameCall(ls.getEmitOutput),\n getProgram: function () { return ls.getProgram(); },\n dispose: function () { return ls.dispose(); },\n getApplicableRefactors: tryFilenameOneCall(ls.getApplicableRefactors),\n getEditsForRefactor: tryFilenameFourCall(ls.getEditsForRefactor)\n };\n }\n oldLS = typescriptOnly(oldLS);\n var _loop_1 = function (k) {\n proxy[k] = function () { return oldLS[k].apply(oldLS, arguments); };\n };\n for (var k in oldLS) {\n _loop_1(k);\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 var result = {\n file: 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 var serviceHost = new TypeScriptServiceHost(info.languageServiceHost, info.languageService);\n var ls = createLanguageService(serviceHost);\n serviceHost.setSite(ls);\n projectHostMap.set(info.project, serviceHost);\n proxy.getCompletionsAtPosition = function (fileName, position, options) {\n var base = oldLS.getCompletionsAtPosition(fileName, position, options) || {\n isGlobalCompletion: false,\n isMemberCompletion: false,\n isNewIdentifierLocation: false,\n entries: []\n };\n tryOperation('get completions', function () {\n var 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 (var _i = 0, results_1 = results; _i < results_1.length; _i++) {\n var entry = results_1[_i];\n base.entries.push(completionToEntry(entry));\n }\n }\n });\n return base;\n };\n proxy.getQuickInfoAtPosition = function (fileName, position) {\n var base = oldLS.getQuickInfoAtPosition(fileName, position);\n // TODO(vicb): the tags property has been removed in TS 2.2\n tryOperation('get quick info', function () {\n var ours = ls.getHoverAt(fileName, position);\n if (ours) {\n var displayParts = [];\n for (var _i = 0, _a = ours.text; _i < _a.length; _i++) {\n var part = _a[_i];\n displayParts.push({ kind: part.language || 'angular', text: part.text });\n }\n var tags = base && base.tags;\n base = {\n displayParts: 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 var result = oldLS.getSemanticDiagnostics(fileName);\n var base = result || [];\n tryOperation('get diagnostics', function () {\n info.project.projectService.logger.info(\"Computing Angular semantic diagnostics...\");\n var ours = ls.getDiagnostics(fileName);\n if (ours && ours.length) {\n var file_1 = oldLS.getProgram().getSourceFile(fileName);\n base.push.apply(base, ours.map(function (d) { return diagnosticToDiagnostic(d, file_1); }));\n }\n });\n return base;\n };\n proxy.getDefinitionAtPosition = function (fileName, position) {\n var base = oldLS.getDefinitionAtPosition(fileName, position);\n if (base && base.length) {\n return base;\n }\n return tryOperation('get definition', function () {\n var ours = ls.getDefinitionAt(fileName, position);\n if (ours && ours.length) {\n base = base || [];\n for (var _i = 0, ours_1 = ours; _i < ours_1.length; _i++) {\n var loc = ours_1[_i];\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 var 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","tslib_1.__extends","AstPathBase","getExpressionScope","ts.createModuleResolutionCache","path.join","ts.resolveModuleName","Console","ts.forEachChild","version","ts.SyntaxKind","spanOf","path.dirname","fs.existsSync","ts.getPositionOfLineAndCharacter","ts.DiagnosticCategory"],"mappings":"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"}
|