Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
function typeKindOf(type) {
var e_7, _a;
if (type) {
if (type.flags & ts.TypeFlags.Any) {
return symbols_1.BuiltinType.Any;
}
else if (type.flags & (ts.TypeFlags.String | ts.TypeFlags.StringLike | ts.TypeFlags.StringLiteral)) {
return symbols_1.BuiltinType.String;
}
else if (type.flags & (ts.TypeFlags.Number | ts.TypeFlags.NumberLike)) {
return symbols_1.BuiltinType.Number;
}
else if (type.flags & (ts.TypeFlags.Undefined)) {
return symbols_1.BuiltinType.Undefined;
}
else if (type.flags & (ts.TypeFlags.Null)) {
return symbols_1.BuiltinType.Null;
}
else if (type.flags & ts.TypeFlags.Union) {
// If all the constituent types of a union are the same kind, it is also that kind.
var candidate = null;
var unionType = type;
if (unionType.types.length > 0) {
candidate = typeKindOf(unionType.types[0]);
try {
for (var _b = tslib_1.__values(unionType.types), _c = _b.next(); !_c.done; _c = _b.next()) {
var subType = _c.value;
function getEventDeclaration(info, includeEvent) {
var result = [];
if (includeEvent) {
// TODO: Determine the type of the event parameter based on the Observable or EventEmitter
// of the event.
result = [{ name: '$event', kind: 'variable', type: info.query.getBuiltinType(symbols_1.BuiltinType.Any) }];
}
return result;
}
function getExpressionScope(info, path, includeEvent) {
var _loop_2 = function (variable) {
var name = variable.name;
// Find the first directive with a context.
var context = current.directives.map(function (d) { return info.query.getTemplateContext(d.directive.type.reference); })
.find(function (c) { return !!c; });
// Determine the type of the context field referenced by variable.value.
var type = undefined;
if (context) {
var value = context.get(variable.value);
if (value) {
type = value.type;
var kind = info.query.getTypeKind(type);
if (kind === symbols_1.BuiltinType.Any || kind == symbols_1.BuiltinType.Unbound) {
// The any type is not very useful here. For special cases, such as ngFor, we can do
// better.
type = refinedVariableType(type, info, current);
}
}
}
if (!type) {
type = info.query.getBuiltinType(symbols_1.BuiltinType.Any);
}
result.push({
name: name,
kind: 'variable', type: type, get definition() { return getDefinitionOf(info, variable); }
});
};
try {
}
}
catch (e_7_1) { e_7 = { error: e_7_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_7) throw e_7.error; }
}
}
if (candidate != null) {
return candidate;
}
}
else if (type.flags & ts.TypeFlags.TypeParameter) {
return symbols_1.BuiltinType.Unbound;
}
}
return symbols_1.BuiltinType.Other;
}
function getFromSymbolTable(symbolTable, key) {
var _loop_1 = function (reference) {
var type = undefined;
if (reference.value) {
type = info.query.getTypeSymbol(compiler_1.tokenReference(reference.value));
}
result.push({
name: reference.name,
kind: 'reference',
type: type || info.query.getBuiltinType(symbols_1.BuiltinType.Any),
get definition() { return getDefinitionOf(info, reference); }
});
};
try {
var type;
var checker = context.checker;
var node = context.node;
switch (kind) {
case symbols_1.BuiltinType.Any:
type = checker.getTypeAtLocation(setParents({
kind: ts.SyntaxKind.AsExpression,
expression: { kind: ts.SyntaxKind.TrueKeyword },
type: { kind: ts.SyntaxKind.AnyKeyword }
}, node));
break;
case symbols_1.BuiltinType.Boolean:
type =
checker.getTypeAtLocation(setParents({ kind: ts.SyntaxKind.TrueKeyword }, node));
break;
case symbols_1.BuiltinType.Null:
type =
checker.getTypeAtLocation(setParents({ kind: ts.SyntaxKind.NullKeyword }, node));
break;
case symbols_1.BuiltinType.Number:
var numeric = {
kind: ts.SyntaxKind.NumericLiteral,
text: node.getText(),
};
setParents({ kind: ts.SyntaxKind.ExpressionStatement, expression: numeric }, node);
type = checker.getTypeAtLocation(numeric);
break;
case symbols_1.BuiltinType.String:
type = checker.getTypeAtLocation(setParents({
kind: ts.SyntaxKind.NoSubstitutionTemplateLiteral,
text: node.getText(),
}, node));
function getBuiltinTypeFromTs(kind, context) {
var type;
var checker = context.checker;
var node = context.node;
switch (kind) {
case symbols_1.BuiltinType.Any:
type = checker.getTypeAtLocation(setParents({
kind: ts.SyntaxKind.AsExpression,
expression: { kind: ts.SyntaxKind.TrueKeyword },
type: { kind: ts.SyntaxKind.AnyKeyword }
}, node));
break;
case symbols_1.BuiltinType.Boolean:
type =
checker.getTypeAtLocation(setParents({ kind: ts.SyntaxKind.TrueKeyword }, node));
break;
case symbols_1.BuiltinType.Null:
type =
checker.getTypeAtLocation(setParents({ kind: ts.SyntaxKind.NullKeyword }, node));
break;
case symbols_1.BuiltinType.Number:
var numeric = {
kind: ts.SyntaxKind.NumericLiteral,
text: node.getText(),
};
setParents({ kind: ts.SyntaxKind.ExpressionStatement, expression: numeric }, node);
type = checker.getTypeAtLocation(numeric);
break;
case symbols_1.BuiltinType.String:
function normalize(kind, other) {
switch (kind) {
case symbols_1.BuiltinType.Undefined:
case symbols_1.BuiltinType.Null:
return normalize(other, symbols_1.BuiltinType.Other);
}
return kind;
}
var getType = function (ast, operation) {
case symbols_1.BuiltinType.Other << 8 | symbols_1.BuiltinType.Any:
return this.anyType;
case symbols_1.BuiltinType.Any << 8 | symbols_1.BuiltinType.String:
case symbols_1.BuiltinType.Boolean << 8 | symbols_1.BuiltinType.String:
case symbols_1.BuiltinType.Number << 8 | symbols_1.BuiltinType.String:
case symbols_1.BuiltinType.String << 8 | symbols_1.BuiltinType.Any:
case symbols_1.BuiltinType.String << 8 | symbols_1.BuiltinType.Boolean:
case symbols_1.BuiltinType.String << 8 | symbols_1.BuiltinType.Number:
case symbols_1.BuiltinType.String << 8 | symbols_1.BuiltinType.String:
case symbols_1.BuiltinType.String << 8 | symbols_1.BuiltinType.Other:
case symbols_1.BuiltinType.Other << 8 | symbols_1.BuiltinType.String:
return this.query.getBuiltinType(symbols_1.BuiltinType.String);
case symbols_1.BuiltinType.Number << 8 | symbols_1.BuiltinType.Number:
return this.query.getBuiltinType(symbols_1.BuiltinType.Number);
case symbols_1.BuiltinType.Boolean << 8 | symbols_1.BuiltinType.Number:
case symbols_1.BuiltinType.Other << 8 | symbols_1.BuiltinType.Number:
return this.reportError('Expected a number type', ast.left);
case symbols_1.BuiltinType.Number << 8 | symbols_1.BuiltinType.Boolean:
case symbols_1.BuiltinType.Number << 8 | symbols_1.BuiltinType.Other:
return this.reportError('Expected a number type', ast.right);
default:
return this.reportError('Expected operands to be a string or number type', ast);
}
case '>':
case '<':
case '<=':
case '>=':
case '==':
case '!=':
case '===':
case '!==':
switch (operKind) {
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
var compiler_1 = require("@angular/compiler");
exports.StaticReflector = compiler_1.StaticReflector;
exports.StaticSymbol = compiler_1.StaticSymbol;
var expression_diagnostics_1 = require("@angular/compiler-cli/src/diagnostics/expression_diagnostics");
exports.getExpressionScope = expression_diagnostics_1.getExpressionScope;
exports.getTemplateExpressionDiagnostics = expression_diagnostics_1.getTemplateExpressionDiagnostics;
var expression_type_1 = require("@angular/compiler-cli/src/diagnostics/expression_type");
exports.AstType = expression_type_1.AstType;
var symbols_1 = require("@angular/compiler-cli/src/diagnostics/symbols");
exports.BuiltinType = symbols_1.BuiltinType;
var typescript_symbols_1 = require("@angular/compiler-cli/src/diagnostics/typescript_symbols");
exports.getClassMembersFromDeclaration = typescript_symbols_1.getClassMembersFromDeclaration;
exports.getPipesTable = typescript_symbols_1.getPipesTable;
exports.getSymbolQuery = typescript_symbols_1.getSymbolQuery;
var version_1 = require("@angular/compiler-cli/src/version");
exports.VERSION = version_1.VERSION;
tslib_1.__exportStar(require("@angular/compiler-cli/src/metadata/index"), exports);
tslib_1.__exportStar(require("@angular/compiler-cli/src/transformers/api"), exports);
tslib_1.__exportStar(require("@angular/compiler-cli/src/transformers/entry_points"), exports);
tslib_1.__exportStar(require("@angular/compiler-cli/src/perform_compile"), exports);
var ngtools_api_1 = require("@angular/compiler-cli/src/ngtools_api");
exports.__NGTOOLS_PRIVATE_API_2 = ngtools_api_1.NgTools_InternalApi_NG_2;
var util_1 = require("@angular/compiler-cli/src/transformers/util");
exports.ngToTsDiagnostic = util_1.ngToTsDiagnostic;
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vIiwic291cmNlcyI6WyJwYWNrYWdlcy9jb21waWxlci1jbGkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7OztPQU1HO0lBQ0gsOENBQXlIO0lBQXhELHFDQUFBLGVBQWUsQ0FBQTtJQUFFLGtDQUFBLFlBQVksQ0FBQTtJQUM5Rix1R0FBc0k7SUFBdEcsc0RBQUEsa0JBQWtCLENBQUE7SUFBRSxvRUFBQSxnQ0FBZ0MsQ0FBQTtJQUNwRix5RkFBd0Y7SUFBaEYsb0NBQUEsT0FBTyxDQUFBO0lBQ2YseUVBQTBLO0lBQWxLLGdDQUFBLFdBQVcsQ0FBQTtJQUNuQiwrRkFBbUg7SUFBM0csOERBQUEsOEJBQThCLENBQUE7SUFBRSw2Q0FBQSxhQUFhLENBQUE7SUFBRSw4Q0FBQSxjQUFjLENBQUE7SUFDckUsNkRBQXNDO0lBQTlCLDRCQUFBLE9BQU8sQ0FBQTtJQUVmLG1GQUErQjtJQUMvQixxRkFBdUM7SUFDdkMsOEZBQWdEO0lBRWhELG9GQUFzQztJQUt0QyxxRUFBc0Y7SUFBOUUsZ0RBQUEsd0JBQXdCLENBQTJCO0lBRTNELG9FQUF5RDtJQUFqRCxrQ0FBQSxnQkFBZ0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmV4cG9ydCB7QW90Q29tcGlsZXJIb3N0LCBBb3RDb21waWxlckhvc3QgYXMgU3RhdGljUmVmbGVjdG9ySG9zdCwgU3RhdGljUmVmbGVjdG9yLCBTdGF0aWNTeW1ib2x9IGZyb20gJ0Bhbmd1bGFyL2NvbXBpbGVyJztcbmV4cG9ydCB7RGlhZ25vc3RpY1RlbXBsYXRlSW5mbywgZ2V0RXhwcmVzc2lvblNjb3BlLCBnZXRUZW1wbGF0ZUV4cHJlc3Npb25EaWFnbm9zdGljc30gZnJvbSAnLi9zcmMvZGlhZ25vc3RpY3MvZXhwcmVzc2lvbl9kaWFnbm9zdGljcyc7XG5leHBvcnQge0FzdFR5cGUsIEV4cHJlc3Npb25EaWFnbm9zdGljc0NvbnRleHR9IGZyb20gJy4vc3JjL2RpYWdub3N0aWNzL2V4cHJlc3Npb25fdHlwZSc7XG5leHBvcnQge0J1aWx0aW5UeXBlLCBEZWNsYXJhdGlvbktpbmQsIERlZmluaXRpb24sIFBpcGVJbmZvLCBQaXBlcywgU2lnbmF0dXJlLCBTcGFuLCBTeW1ib2wsIFN5bWJvbERlY2xhcmF0aW9uLCBTeW1ib2xRdWVyeSwgU3ltYm9sVGFibGV9IGZyb20gJy4vc3JjL2RpYWdub3N0aWNzL3N5bWJvbHMnO1xuZXhwb3J0IHtnZXRDbGFzc01lbWJlcnNGcm9tRGVjbGFyYXRpb24sIGdldFBpcGVzVGFibGUsIGdldFN5bWJvbFF1ZXJ5fSBmcm9tICcuL3NyYy9kaWFnbm9zdGljcy90eXBlc2NyaXB0X3N5bWJvbHMnO1xuZXhwb3J0IHtWRVJTSU9OfSBmcm9tICcuL3NyYy92ZXJzaW9uJztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvbWV0YWRhdGEnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvdHJhbnNmb3JtZXJzL2FwaSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy90cmFuc2Zvcm1lcnMvZW50cnlfcG9pbnRzJztcblxuZXhwb3J0ICogZnJvbSAnLi9zcmMvcGVyZm9ybV9jb21waWxlJztcblxuLy8gVE9ETyh0Ym9zY2gpOiByZW1vdmUgdGhpcyBvbmNlIGNsaSAxLjUgaXMgZnVsbHkgcmVsZWFzZWQsXG4vLyBhbmQgdXNhZ2VzIGluIEczIGFyZSBjaGFuZ2VkIHRvIGBDb21waWxlck9wdGlvbnNgLlxuZXhwb3J0IHtDb21waWxlck9wdGlvbnMgYXMgQW5ndWxhckNvbXBpbGVyT3B0aW9uc30gZnJvbSAnLi9zcmMvdHJhbnNmb3JtZXJzL2FwaSc7XG5leHBvcnQge05nVG9vbHNfSW50ZXJuYWxBcGlfTkdfMiBhcyBfX05HVE9PTFNfUFJJVkFURV9BUElfMn0gZnJvbSAnLi9zcmMvbmd0b29sc19hcGknO1xuXG5leHBvcnQge25nVG9Uc0RpYWdub3N0aWN9IGZyb20gJy4vc3JjL3RyYW5zZm9ybWVycy91dGlsJztcbiJdfQ==