@angular/compiler-cli 5.2.1 → 5.2.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angular/compiler-cli",
3
- "version": "5.2.1",
3
+ "version": "5.2.5",
4
4
  "description": "Angular - the compiler CLI for Node.js",
5
5
  "main": "index.js",
6
6
  "typings": "index.d.ts",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "peerDependencies": {
18
18
  "typescript": ">=2.4.2 <2.7",
19
- "@angular/compiler": "5.2.1"
19
+ "@angular/compiler": "5.2.5"
20
20
  },
21
21
  "repository": {
22
22
  "type": "git",
@@ -249,7 +249,7 @@ var MetadataCollector = /** @class */ (function () {
249
249
  return identifier && (exportMap.get(identifier.text) || identifier.text);
250
250
  };
251
251
  var exportedName = function (node) { return exportedIdentifierName(node.name); };
252
- // Predeclare classes and functions
252
+ // Pre-declare classes and functions
253
253
  ts.forEachChild(sourceFile, function (node) {
254
254
  switch (node.kind) {
255
255
  case ts.SyntaxKind.ClassDeclaration:
@@ -410,7 +410,7 @@ var MetadataCollector = /** @class */ (function () {
410
410
  }
411
411
  else {
412
412
  nextDefaultValue =
413
- recordEntry(errorSym('Unsuppported enum member name', member.name), node);
413
+ recordEntry(errorSym('Unsupported enum member name', member.name), node);
414
414
  }
415
415
  }
416
416
  if (writtenMembers) {
@@ -1 +1 @@
1
- {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/metadata/collector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as ts from 'typescript';\n\nimport {Evaluator, errorSymbol, recordMapEntry} from './evaluator';\nimport {ClassMetadata, ConstructorMetadata, FunctionMetadata, InterfaceMetadata, METADATA_VERSION, MemberMetadata, MetadataEntry, MetadataError, MetadataMap, MetadataSymbolicBinaryExpression, MetadataSymbolicCallExpression, MetadataSymbolicExpression, MetadataSymbolicIfExpression, MetadataSymbolicIndexExpression, MetadataSymbolicPrefixExpression, MetadataSymbolicReferenceExpression, MetadataSymbolicSelectExpression, MetadataSymbolicSpreadExpression, MetadataValue, MethodMetadata, ModuleExportMetadata, ModuleMetadata, isClassMetadata, isConstructorMetadata, isFunctionMetadata, isMetadataError, isMetadataGlobalReferenceExpression, isMetadataImportDefaultReference, isMetadataImportedSymbolReferenceExpression, isMetadataSymbolicExpression, isMetadataSymbolicReferenceExpression, isMetadataSymbolicSelectExpression, isMethodMetadata} from './schema';\nimport {Symbols} from './symbols';\n\nconst isStatic = (node: ts.Node) => ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Static;\n\n/**\n * A set of collector options to use when collecting metadata.\n */\nexport interface CollectorOptions {\n /**\n * Version of the metadata to collect.\n */\n version?: number;\n\n /**\n * Collect a hidden field \"$quoted$\" in objects literals that record when the key was quoted in\n * the source.\n */\n quotedNames?: boolean;\n\n /**\n * Do not simplify invalid expressions.\n */\n verboseInvalidExpression?: boolean;\n\n /**\n * An expression substitution callback.\n */\n substituteExpression?: (value: MetadataValue, node: ts.Node) => MetadataValue;\n}\n\n/**\n * Collect decorator metadata from a TypeScript module.\n */\nexport class MetadataCollector {\n constructor(private options: CollectorOptions = {}) {}\n\n /**\n * Returns a JSON.stringify friendly form describing the decorators of the exported classes from\n * the source file that is expected to correspond to a module.\n */\n public getMetadata(\n sourceFile: ts.SourceFile, strict: boolean = false,\n substituteExpression?: (value: MetadataValue, node: ts.Node) => MetadataValue): ModuleMetadata\n |undefined {\n const locals = new Symbols(sourceFile);\n const nodeMap =\n new Map<MetadataValue|ClassMetadata|InterfaceMetadata|FunctionMetadata, ts.Node>();\n const composedSubstituter = substituteExpression && this.options.substituteExpression ?\n (value: MetadataValue, node: ts.Node) =>\n this.options.substituteExpression !(substituteExpression(value, node), node) :\n substituteExpression;\n const evaluatorOptions = substituteExpression ?\n {...this.options, substituteExpression: composedSubstituter} :\n this.options;\n let metadata: {[name: string]: MetadataValue | ClassMetadata | FunctionMetadata}|undefined;\n const evaluator = new Evaluator(locals, nodeMap, evaluatorOptions, (name, value) => {\n if (!metadata) metadata = {};\n metadata[name] = value;\n });\n let exports: ModuleExportMetadata[]|undefined = undefined;\n\n function objFromDecorator(decoratorNode: ts.Decorator): MetadataSymbolicExpression {\n return <MetadataSymbolicExpression>evaluator.evaluateNode(decoratorNode.expression);\n }\n\n function recordEntry<T extends MetadataEntry>(entry: T, node: ts.Node): T {\n return recordMapEntry(entry, node, nodeMap, sourceFile);\n }\n\n function errorSym(\n message: string, node?: ts.Node, context?: {[name: string]: string}): MetadataError {\n return errorSymbol(message, node, context, sourceFile);\n }\n\n function maybeGetSimpleFunction(\n functionDeclaration: ts.FunctionDeclaration |\n ts.MethodDeclaration): {func: FunctionMetadata, name: string}|undefined {\n if (functionDeclaration.name && functionDeclaration.name.kind == ts.SyntaxKind.Identifier) {\n const nameNode = <ts.Identifier>functionDeclaration.name;\n const functionName = nameNode.text;\n const functionBody = functionDeclaration.body;\n if (functionBody && functionBody.statements.length == 1) {\n const statement = functionBody.statements[0];\n if (statement.kind === ts.SyntaxKind.ReturnStatement) {\n const returnStatement = <ts.ReturnStatement>statement;\n if (returnStatement.expression) {\n const func: FunctionMetadata = {\n __symbolic: 'function',\n parameters: namesOf(functionDeclaration.parameters),\n value: evaluator.evaluateNode(returnStatement.expression)\n };\n if (functionDeclaration.parameters.some(p => p.initializer != null)) {\n func.defaults = functionDeclaration.parameters.map(\n p => p.initializer && evaluator.evaluateNode(p.initializer));\n }\n return recordEntry({func, name: functionName}, functionDeclaration);\n }\n }\n }\n }\n }\n\n function classMetadataOf(classDeclaration: ts.ClassDeclaration): ClassMetadata {\n const result: ClassMetadata = {__symbolic: 'class'};\n\n function getDecorators(decorators: ReadonlyArray<ts.Decorator>| undefined):\n MetadataSymbolicExpression[]|undefined {\n if (decorators && decorators.length)\n return decorators.map(decorator => objFromDecorator(decorator));\n return undefined;\n }\n\n function referenceFrom(node: ts.Node): MetadataSymbolicReferenceExpression|MetadataError|\n MetadataSymbolicSelectExpression {\n const result = evaluator.evaluateNode(node);\n if (isMetadataError(result) || isMetadataSymbolicReferenceExpression(result) ||\n isMetadataSymbolicSelectExpression(result)) {\n return result;\n } else {\n return errorSym('Symbol reference expected', node);\n }\n }\n\n // Add class parents\n if (classDeclaration.heritageClauses) {\n classDeclaration.heritageClauses.forEach((hc) => {\n if (hc.token === ts.SyntaxKind.ExtendsKeyword && hc.types) {\n hc.types.forEach(type => result.extends = referenceFrom(type.expression));\n }\n });\n }\n\n // Add arity if the type is generic\n const typeParameters = classDeclaration.typeParameters;\n if (typeParameters && typeParameters.length) {\n result.arity = typeParameters.length;\n }\n\n // Add class decorators\n if (classDeclaration.decorators) {\n result.decorators = getDecorators(classDeclaration.decorators);\n }\n\n // member decorators\n let members: MetadataMap|null = null;\n function recordMember(name: string, metadata: MemberMetadata) {\n if (!members) members = {};\n const data = members.hasOwnProperty(name) ? members[name] : [];\n data.push(metadata);\n members[name] = data;\n }\n\n // static member\n let statics: {[name: string]: MetadataValue | FunctionMetadata}|null = null;\n function recordStaticMember(name: string, value: MetadataValue | FunctionMetadata) {\n if (!statics) statics = {};\n statics[name] = value;\n }\n\n for (const member of classDeclaration.members) {\n let isConstructor = false;\n switch (member.kind) {\n case ts.SyntaxKind.Constructor:\n case ts.SyntaxKind.MethodDeclaration:\n isConstructor = member.kind === ts.SyntaxKind.Constructor;\n const method = <ts.MethodDeclaration|ts.ConstructorDeclaration>member;\n if (isStatic(method)) {\n const maybeFunc = maybeGetSimpleFunction(<ts.MethodDeclaration>method);\n if (maybeFunc) {\n recordStaticMember(maybeFunc.name, maybeFunc.func);\n }\n continue;\n }\n const methodDecorators = getDecorators(method.decorators);\n const parameters = method.parameters;\n const parameterDecoratorData:\n ((MetadataSymbolicExpression | MetadataError)[] | undefined)[] = [];\n const parametersData:\n (MetadataSymbolicReferenceExpression | MetadataError |\n MetadataSymbolicSelectExpression | null)[] = [];\n let hasDecoratorData: boolean = false;\n let hasParameterData: boolean = false;\n for (const parameter of parameters) {\n const parameterData = getDecorators(parameter.decorators);\n parameterDecoratorData.push(parameterData);\n hasDecoratorData = hasDecoratorData || !!parameterData;\n if (isConstructor) {\n if (parameter.type) {\n parametersData.push(referenceFrom(parameter.type));\n } else {\n parametersData.push(null);\n }\n hasParameterData = true;\n }\n }\n const data: MethodMetadata = {__symbolic: isConstructor ? 'constructor' : 'method'};\n const name = isConstructor ? '__ctor__' : evaluator.nameOf(member.name);\n if (methodDecorators) {\n data.decorators = methodDecorators;\n }\n if (hasDecoratorData) {\n data.parameterDecorators = parameterDecoratorData;\n }\n if (hasParameterData) {\n (<ConstructorMetadata>data).parameters = parametersData;\n }\n if (!isMetadataError(name)) {\n recordMember(name, data);\n }\n break;\n case ts.SyntaxKind.PropertyDeclaration:\n case ts.SyntaxKind.GetAccessor:\n case ts.SyntaxKind.SetAccessor:\n const property = <ts.PropertyDeclaration>member;\n if (isStatic(property)) {\n const name = evaluator.nameOf(property.name);\n if (!isMetadataError(name)) {\n if (property.initializer) {\n const value = evaluator.evaluateNode(property.initializer);\n recordStaticMember(name, value);\n } else {\n recordStaticMember(name, errorSym('Variable not initialized', property.name));\n }\n }\n }\n const propertyDecorators = getDecorators(property.decorators);\n if (propertyDecorators) {\n const name = evaluator.nameOf(property.name);\n if (!isMetadataError(name)) {\n recordMember(name, {__symbolic: 'property', decorators: propertyDecorators});\n }\n }\n break;\n }\n }\n if (members) {\n result.members = members;\n }\n if (statics) {\n result.statics = statics;\n }\n\n return recordEntry(result, classDeclaration);\n }\n\n // Collect all exported symbols from an exports clause.\n const exportMap = new Map<string, string>();\n ts.forEachChild(sourceFile, node => {\n switch (node.kind) {\n case ts.SyntaxKind.ExportDeclaration:\n const exportDeclaration = <ts.ExportDeclaration>node;\n const {moduleSpecifier, exportClause} = exportDeclaration;\n\n if (!moduleSpecifier) {\n // If there is a module specifier there is also an exportClause\n exportClause !.elements.forEach(spec => {\n const exportedAs = spec.name.text;\n const name = (spec.propertyName || spec.name).text;\n exportMap.set(name, exportedAs);\n });\n }\n }\n });\n\n const isExport = (node: ts.Node) =>\n sourceFile.isDeclarationFile || ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export;\n const isExportedIdentifier = (identifier?: ts.Identifier) =>\n identifier && exportMap.has(identifier.text);\n const isExported =\n (node: ts.FunctionDeclaration | ts.ClassDeclaration | ts.TypeAliasDeclaration |\n ts.InterfaceDeclaration | ts.EnumDeclaration) =>\n isExport(node) || isExportedIdentifier(node.name);\n const exportedIdentifierName = (identifier?: ts.Identifier) =>\n identifier && (exportMap.get(identifier.text) || identifier.text);\n const exportedName =\n (node: ts.FunctionDeclaration | ts.ClassDeclaration | ts.InterfaceDeclaration |\n ts.TypeAliasDeclaration | ts.EnumDeclaration) => exportedIdentifierName(node.name);\n\n\n // Predeclare classes and functions\n ts.forEachChild(sourceFile, node => {\n switch (node.kind) {\n case ts.SyntaxKind.ClassDeclaration:\n const classDeclaration = <ts.ClassDeclaration>node;\n if (classDeclaration.name) {\n const className = classDeclaration.name.text;\n if (isExported(classDeclaration)) {\n locals.define(\n className, {__symbolic: 'reference', name: exportedName(classDeclaration)});\n } else {\n locals.define(\n className, errorSym('Reference to non-exported class', node, {className}));\n }\n }\n break;\n\n case ts.SyntaxKind.InterfaceDeclaration:\n const interfaceDeclaration = <ts.InterfaceDeclaration>node;\n if (interfaceDeclaration.name) {\n const interfaceName = interfaceDeclaration.name.text;\n // All references to interfaces should be converted to references to `any`.\n locals.define(interfaceName, {__symbolic: 'reference', name: 'any'});\n }\n break;\n\n case ts.SyntaxKind.FunctionDeclaration:\n const functionDeclaration = <ts.FunctionDeclaration>node;\n if (!isExported(functionDeclaration)) {\n // Report references to this function as an error.\n const nameNode = functionDeclaration.name;\n if (nameNode && nameNode.text) {\n locals.define(\n nameNode.text,\n errorSym(\n 'Reference to a non-exported function', nameNode, {name: nameNode.text}));\n }\n }\n break;\n }\n });\n\n ts.forEachChild(sourceFile, node => {\n switch (node.kind) {\n case ts.SyntaxKind.ExportDeclaration:\n // Record export declarations\n const exportDeclaration = <ts.ExportDeclaration>node;\n const {moduleSpecifier, exportClause} = exportDeclaration;\n\n if (!moduleSpecifier) {\n // no module specifier -> export {propName as name};\n if (exportClause) {\n exportClause.elements.forEach(spec => {\n const name = spec.name.text;\n // If the symbol was not already exported, export a reference since it is a\n // reference to an import\n if (!metadata || !metadata[name]) {\n const propNode = spec.propertyName || spec.name;\n const value: MetadataValue = evaluator.evaluateNode(propNode);\n if (!metadata) metadata = {};\n metadata[name] = recordEntry(value, node);\n }\n });\n }\n }\n\n if (moduleSpecifier && moduleSpecifier.kind == ts.SyntaxKind.StringLiteral) {\n // Ignore exports that don't have string literals as exports.\n // This is allowed by the syntax but will be flagged as an error by the type checker.\n const from = (<ts.StringLiteral>moduleSpecifier).text;\n const moduleExport: ModuleExportMetadata = {from};\n if (exportClause) {\n moduleExport.export = exportClause.elements.map(\n spec => spec.propertyName ? {name: spec.propertyName.text, as: spec.name.text} :\n spec.name.text);\n }\n if (!exports) exports = [];\n exports.push(moduleExport);\n }\n break;\n case ts.SyntaxKind.ClassDeclaration:\n const classDeclaration = <ts.ClassDeclaration>node;\n if (classDeclaration.name) {\n if (isExported(classDeclaration)) {\n const name = exportedName(classDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = classMetadataOf(classDeclaration);\n }\n }\n }\n // Otherwise don't record metadata for the class.\n break;\n\n case ts.SyntaxKind.TypeAliasDeclaration:\n const typeDeclaration = <ts.TypeAliasDeclaration>node;\n if (typeDeclaration.name && isExported(typeDeclaration)) {\n const name = exportedName(typeDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = {__symbolic: 'interface'};\n }\n }\n break;\n\n case ts.SyntaxKind.InterfaceDeclaration:\n const interfaceDeclaration = <ts.InterfaceDeclaration>node;\n if (interfaceDeclaration.name && isExported(interfaceDeclaration)) {\n const name = exportedName(interfaceDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = {__symbolic: 'interface'};\n }\n }\n break;\n\n case ts.SyntaxKind.FunctionDeclaration:\n // Record functions that return a single value. Record the parameter\n // names substitution will be performed by the StaticReflector.\n const functionDeclaration = <ts.FunctionDeclaration>node;\n if (isExported(functionDeclaration) && functionDeclaration.name) {\n const name = exportedName(functionDeclaration);\n const maybeFunc = maybeGetSimpleFunction(functionDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] =\n maybeFunc ? recordEntry(maybeFunc.func, node) : {__symbolic: 'function'};\n }\n }\n break;\n\n case ts.SyntaxKind.EnumDeclaration:\n const enumDeclaration = <ts.EnumDeclaration>node;\n if (isExported(enumDeclaration)) {\n const enumValueHolder: {[name: string]: MetadataValue} = {};\n const enumName = exportedName(enumDeclaration);\n let nextDefaultValue: MetadataValue = 0;\n let writtenMembers = 0;\n for (const member of enumDeclaration.members) {\n let enumValue: MetadataValue;\n if (!member.initializer) {\n enumValue = nextDefaultValue;\n } else {\n enumValue = evaluator.evaluateNode(member.initializer);\n }\n let name: string|undefined = undefined;\n if (member.name.kind == ts.SyntaxKind.Identifier) {\n const identifier = <ts.Identifier>member.name;\n name = identifier.text;\n enumValueHolder[name] = enumValue;\n writtenMembers++;\n }\n if (typeof enumValue === 'number') {\n nextDefaultValue = enumValue + 1;\n } else if (name) {\n nextDefaultValue = {\n __symbolic: 'binary',\n operator: '+',\n left: {\n __symbolic: 'select',\n expression: recordEntry({__symbolic: 'reference', name: enumName}, node), name\n }\n };\n } else {\n nextDefaultValue =\n recordEntry(errorSym('Unsuppported enum member name', member.name), node);\n }\n }\n if (writtenMembers) {\n if (enumName) {\n if (!metadata) metadata = {};\n metadata[enumName] = recordEntry(enumValueHolder, node);\n }\n }\n }\n break;\n\n case ts.SyntaxKind.VariableStatement:\n const variableStatement = <ts.VariableStatement>node;\n for (const variableDeclaration of variableStatement.declarationList.declarations) {\n if (variableDeclaration.name.kind == ts.SyntaxKind.Identifier) {\n const nameNode = <ts.Identifier>variableDeclaration.name;\n let varValue: MetadataValue;\n if (variableDeclaration.initializer) {\n varValue = evaluator.evaluateNode(variableDeclaration.initializer);\n } else {\n varValue = recordEntry(errorSym('Variable not initialized', nameNode), nameNode);\n }\n let exported = false;\n if (isExport(variableStatement) || isExport(variableDeclaration) ||\n isExportedIdentifier(nameNode)) {\n const name = exportedIdentifierName(nameNode);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = recordEntry(varValue, node);\n }\n exported = true;\n }\n if (typeof varValue == 'string' || typeof varValue == 'number' ||\n typeof varValue == 'boolean') {\n locals.define(nameNode.text, varValue);\n if (exported) {\n locals.defineReference(\n nameNode.text, {__symbolic: 'reference', name: nameNode.text});\n }\n } else if (!exported) {\n if (varValue && !isMetadataError(varValue)) {\n locals.define(nameNode.text, recordEntry(varValue, node));\n } else {\n locals.define(\n nameNode.text,\n recordEntry(\n errorSym('Reference to a local symbol', nameNode, {name: nameNode.text}),\n node));\n }\n }\n } else {\n // Destructuring (or binding) declarations are not supported,\n // var {<identifier>[, <identifier>]+} = <expression>;\n // or\n // var [<identifier>[, <identifier}+] = <expression>;\n // are not supported.\n const report: (nameNode: ts.Node) => void = (nameNode: ts.Node) => {\n switch (nameNode.kind) {\n case ts.SyntaxKind.Identifier:\n const name = <ts.Identifier>nameNode;\n const varValue = errorSym('Destructuring not supported', name);\n locals.define(name.text, varValue);\n if (isExport(node)) {\n if (!metadata) metadata = {};\n metadata[name.text] = varValue;\n }\n break;\n case ts.SyntaxKind.BindingElement:\n const bindingElement = <ts.BindingElement>nameNode;\n report(bindingElement.name);\n break;\n case ts.SyntaxKind.ObjectBindingPattern:\n case ts.SyntaxKind.ArrayBindingPattern:\n const bindings = <ts.BindingPattern>nameNode;\n (bindings as any).elements.forEach(report);\n break;\n }\n };\n report(variableDeclaration.name);\n }\n }\n break;\n }\n });\n\n if (metadata || exports) {\n if (!metadata)\n metadata = {};\n else if (strict) {\n validateMetadata(sourceFile, nodeMap, metadata);\n }\n const result: ModuleMetadata = {\n __symbolic: 'module',\n version: this.options.version || METADATA_VERSION, metadata\n };\n if (sourceFile.moduleName) result.importAs = sourceFile.moduleName;\n if (exports) result.exports = exports;\n return result;\n }\n }\n}\n\n// This will throw if the metadata entry given contains an error node.\nfunction validateMetadata(\n sourceFile: ts.SourceFile, nodeMap: Map<MetadataEntry, ts.Node>,\n metadata: {[name: string]: MetadataEntry}) {\n let locals: Set<string> = new Set(['Array', 'Object', 'Set', 'Map', 'string', 'number', 'any']);\n\n function validateExpression(\n expression: MetadataValue | MetadataSymbolicExpression | MetadataError) {\n if (!expression) {\n return;\n } else if (Array.isArray(expression)) {\n expression.forEach(validateExpression);\n } else if (typeof expression === 'object' && !expression.hasOwnProperty('__symbolic')) {\n Object.getOwnPropertyNames(expression).forEach(v => validateExpression((<any>expression)[v]));\n } else if (isMetadataError(expression)) {\n reportError(expression);\n } else if (isMetadataGlobalReferenceExpression(expression)) {\n if (!locals.has(expression.name)) {\n const reference = <MetadataValue>metadata[expression.name];\n if (reference) {\n validateExpression(reference);\n }\n }\n } else if (isFunctionMetadata(expression)) {\n validateFunction(<any>expression);\n } else if (isMetadataSymbolicExpression(expression)) {\n switch (expression.__symbolic) {\n case 'binary':\n const binaryExpression = <MetadataSymbolicBinaryExpression>expression;\n validateExpression(binaryExpression.left);\n validateExpression(binaryExpression.right);\n break;\n case 'call':\n case 'new':\n const callExpression = <MetadataSymbolicCallExpression>expression;\n validateExpression(callExpression.expression);\n if (callExpression.arguments) callExpression.arguments.forEach(validateExpression);\n break;\n case 'index':\n const indexExpression = <MetadataSymbolicIndexExpression>expression;\n validateExpression(indexExpression.expression);\n validateExpression(indexExpression.index);\n break;\n case 'pre':\n const prefixExpression = <MetadataSymbolicPrefixExpression>expression;\n validateExpression(prefixExpression.operand);\n break;\n case 'select':\n const selectExpression = <MetadataSymbolicSelectExpression>expression;\n validateExpression(selectExpression.expression);\n break;\n case 'spread':\n const spreadExpression = <MetadataSymbolicSpreadExpression>expression;\n validateExpression(spreadExpression.expression);\n break;\n case 'if':\n const ifExpression = <MetadataSymbolicIfExpression>expression;\n validateExpression(ifExpression.condition);\n validateExpression(ifExpression.elseExpression);\n validateExpression(ifExpression.thenExpression);\n break;\n }\n }\n }\n\n function validateMember(classData: ClassMetadata, member: MemberMetadata) {\n if (member.decorators) {\n member.decorators.forEach(validateExpression);\n }\n if (isMethodMetadata(member) && member.parameterDecorators) {\n member.parameterDecorators.forEach(validateExpression);\n }\n // Only validate parameters of classes for which we know that are used with our DI\n if (classData.decorators && isConstructorMetadata(member) && member.parameters) {\n member.parameters.forEach(validateExpression);\n }\n }\n\n function validateClass(classData: ClassMetadata) {\n if (classData.decorators) {\n classData.decorators.forEach(validateExpression);\n }\n if (classData.members) {\n Object.getOwnPropertyNames(classData.members)\n .forEach(name => classData.members ![name].forEach((m) => validateMember(classData, m)));\n }\n if (classData.statics) {\n Object.getOwnPropertyNames(classData.statics).forEach(name => {\n const staticMember = classData.statics ![name];\n if (isFunctionMetadata(staticMember)) {\n validateExpression(staticMember.value);\n } else {\n validateExpression(staticMember);\n }\n });\n }\n }\n\n function validateFunction(functionDeclaration: FunctionMetadata) {\n if (functionDeclaration.value) {\n const oldLocals = locals;\n if (functionDeclaration.parameters) {\n locals = new Set(oldLocals.values());\n if (functionDeclaration.parameters)\n functionDeclaration.parameters.forEach(n => locals.add(n));\n }\n validateExpression(functionDeclaration.value);\n locals = oldLocals;\n }\n }\n\n function shouldReportNode(node: ts.Node | undefined) {\n if (node) {\n const nodeStart = node.getStart();\n return !(\n node.pos != nodeStart &&\n sourceFile.text.substring(node.pos, nodeStart).indexOf('@dynamic') >= 0);\n }\n return true;\n }\n\n function reportError(error: MetadataError) {\n const node = nodeMap.get(error);\n if (shouldReportNode(node)) {\n const lineInfo = error.line != undefined ?\n error.character != undefined ? `:${error.line + 1}:${error.character + 1}` :\n `:${error.line + 1}` :\n '';\n throw new Error(\n `${sourceFile.fileName}${lineInfo}: Metadata collected contains an error that will be reported at runtime: ${expandedMessage(error)}.\\n ${JSON.stringify(error)}`);\n }\n }\n\n Object.getOwnPropertyNames(metadata).forEach(name => {\n const entry = metadata[name];\n try {\n if (isClassMetadata(entry)) {\n validateClass(entry);\n }\n } catch (e) {\n const node = nodeMap.get(entry);\n if (shouldReportNode(node)) {\n if (node) {\n const {line, character} = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n throw new Error(\n `${sourceFile.fileName}:${line + 1}:${character + 1}: Error encountered in metadata generated for exported symbol '${name}': \\n ${e.message}`);\n }\n throw new Error(\n `Error encountered in metadata generated for exported symbol ${name}: \\n ${e.message}`);\n }\n }\n });\n}\n\n// Collect parameter names from a function.\nfunction namesOf(parameters: ts.NodeArray<ts.ParameterDeclaration>): string[] {\n const result: string[] = [];\n\n function addNamesOf(name: ts.Identifier | ts.BindingPattern) {\n if (name.kind == ts.SyntaxKind.Identifier) {\n const identifier = <ts.Identifier>name;\n result.push(identifier.text);\n } else {\n const bindingPattern = <ts.BindingPattern>name;\n for (const element of bindingPattern.elements) {\n const name = (element as any).name;\n if (name) {\n addNamesOf(name);\n }\n }\n }\n }\n\n for (const parameter of parameters) {\n addNamesOf(parameter.name);\n }\n\n return result;\n}\n\nfunction expandedMessage(error: any): string {\n switch (error.message) {\n case 'Reference to non-exported class':\n if (error.context && error.context.className) {\n return `Reference to a non-exported class ${error.context.className}. Consider exporting the class`;\n }\n break;\n case 'Variable not initialized':\n return 'Only initialized variables and constants can be referenced because the value of this variable is needed by the template compiler';\n case 'Destructuring not supported':\n return 'Referencing an exported destructured variable or constant is not supported by the template compiler. Consider simplifying this to avoid destructuring';\n case 'Could not resolve type':\n if (error.context && error.context.typeName) {\n return `Could not resolve type ${error.context.typeName}`;\n }\n break;\n case 'Function call not supported':\n let prefix =\n error.context && error.context.name ? `Calling function '${error.context.name}', f` : 'F';\n return prefix +\n 'unction calls are not supported. Consider replacing the function or lambda with a reference to an exported function';\n case 'Reference to a local symbol':\n if (error.context && error.context.name) {\n return `Reference to a local (non-exported) symbol '${error.context.name}'. Consider exporting the symbol`;\n }\n }\n return error.message;\n}\n"]}
1
+ {"version":3,"file":"collector.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/metadata/collector.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as ts from 'typescript';\n\nimport {Evaluator, errorSymbol, recordMapEntry} from './evaluator';\nimport {ClassMetadata, ConstructorMetadata, FunctionMetadata, InterfaceMetadata, METADATA_VERSION, MemberMetadata, MetadataEntry, MetadataError, MetadataMap, MetadataSymbolicBinaryExpression, MetadataSymbolicCallExpression, MetadataSymbolicExpression, MetadataSymbolicIfExpression, MetadataSymbolicIndexExpression, MetadataSymbolicPrefixExpression, MetadataSymbolicReferenceExpression, MetadataSymbolicSelectExpression, MetadataSymbolicSpreadExpression, MetadataValue, MethodMetadata, ModuleExportMetadata, ModuleMetadata, isClassMetadata, isConstructorMetadata, isFunctionMetadata, isMetadataError, isMetadataGlobalReferenceExpression, isMetadataImportDefaultReference, isMetadataImportedSymbolReferenceExpression, isMetadataSymbolicExpression, isMetadataSymbolicReferenceExpression, isMetadataSymbolicSelectExpression, isMethodMetadata} from './schema';\nimport {Symbols} from './symbols';\n\nconst isStatic = (node: ts.Node) => ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Static;\n\n/**\n * A set of collector options to use when collecting metadata.\n */\nexport interface CollectorOptions {\n /**\n * Version of the metadata to collect.\n */\n version?: number;\n\n /**\n * Collect a hidden field \"$quoted$\" in objects literals that record when the key was quoted in\n * the source.\n */\n quotedNames?: boolean;\n\n /**\n * Do not simplify invalid expressions.\n */\n verboseInvalidExpression?: boolean;\n\n /**\n * An expression substitution callback.\n */\n substituteExpression?: (value: MetadataValue, node: ts.Node) => MetadataValue;\n}\n\n/**\n * Collect decorator metadata from a TypeScript module.\n */\nexport class MetadataCollector {\n constructor(private options: CollectorOptions = {}) {}\n\n /**\n * Returns a JSON.stringify friendly form describing the decorators of the exported classes from\n * the source file that is expected to correspond to a module.\n */\n public getMetadata(\n sourceFile: ts.SourceFile, strict: boolean = false,\n substituteExpression?: (value: MetadataValue, node: ts.Node) => MetadataValue): ModuleMetadata\n |undefined {\n const locals = new Symbols(sourceFile);\n const nodeMap =\n new Map<MetadataValue|ClassMetadata|InterfaceMetadata|FunctionMetadata, ts.Node>();\n const composedSubstituter = substituteExpression && this.options.substituteExpression ?\n (value: MetadataValue, node: ts.Node) =>\n this.options.substituteExpression !(substituteExpression(value, node), node) :\n substituteExpression;\n const evaluatorOptions = substituteExpression ?\n {...this.options, substituteExpression: composedSubstituter} :\n this.options;\n let metadata: {[name: string]: MetadataValue | ClassMetadata | FunctionMetadata}|undefined;\n const evaluator = new Evaluator(locals, nodeMap, evaluatorOptions, (name, value) => {\n if (!metadata) metadata = {};\n metadata[name] = value;\n });\n let exports: ModuleExportMetadata[]|undefined = undefined;\n\n function objFromDecorator(decoratorNode: ts.Decorator): MetadataSymbolicExpression {\n return <MetadataSymbolicExpression>evaluator.evaluateNode(decoratorNode.expression);\n }\n\n function recordEntry<T extends MetadataEntry>(entry: T, node: ts.Node): T {\n return recordMapEntry(entry, node, nodeMap, sourceFile);\n }\n\n function errorSym(\n message: string, node?: ts.Node, context?: {[name: string]: string}): MetadataError {\n return errorSymbol(message, node, context, sourceFile);\n }\n\n function maybeGetSimpleFunction(\n functionDeclaration: ts.FunctionDeclaration |\n ts.MethodDeclaration): {func: FunctionMetadata, name: string}|undefined {\n if (functionDeclaration.name && functionDeclaration.name.kind == ts.SyntaxKind.Identifier) {\n const nameNode = <ts.Identifier>functionDeclaration.name;\n const functionName = nameNode.text;\n const functionBody = functionDeclaration.body;\n if (functionBody && functionBody.statements.length == 1) {\n const statement = functionBody.statements[0];\n if (statement.kind === ts.SyntaxKind.ReturnStatement) {\n const returnStatement = <ts.ReturnStatement>statement;\n if (returnStatement.expression) {\n const func: FunctionMetadata = {\n __symbolic: 'function',\n parameters: namesOf(functionDeclaration.parameters),\n value: evaluator.evaluateNode(returnStatement.expression)\n };\n if (functionDeclaration.parameters.some(p => p.initializer != null)) {\n func.defaults = functionDeclaration.parameters.map(\n p => p.initializer && evaluator.evaluateNode(p.initializer));\n }\n return recordEntry({func, name: functionName}, functionDeclaration);\n }\n }\n }\n }\n }\n\n function classMetadataOf(classDeclaration: ts.ClassDeclaration): ClassMetadata {\n const result: ClassMetadata = {__symbolic: 'class'};\n\n function getDecorators(decorators: ReadonlyArray<ts.Decorator>| undefined):\n MetadataSymbolicExpression[]|undefined {\n if (decorators && decorators.length)\n return decorators.map(decorator => objFromDecorator(decorator));\n return undefined;\n }\n\n function referenceFrom(node: ts.Node): MetadataSymbolicReferenceExpression|MetadataError|\n MetadataSymbolicSelectExpression {\n const result = evaluator.evaluateNode(node);\n if (isMetadataError(result) || isMetadataSymbolicReferenceExpression(result) ||\n isMetadataSymbolicSelectExpression(result)) {\n return result;\n } else {\n return errorSym('Symbol reference expected', node);\n }\n }\n\n // Add class parents\n if (classDeclaration.heritageClauses) {\n classDeclaration.heritageClauses.forEach((hc) => {\n if (hc.token === ts.SyntaxKind.ExtendsKeyword && hc.types) {\n hc.types.forEach(type => result.extends = referenceFrom(type.expression));\n }\n });\n }\n\n // Add arity if the type is generic\n const typeParameters = classDeclaration.typeParameters;\n if (typeParameters && typeParameters.length) {\n result.arity = typeParameters.length;\n }\n\n // Add class decorators\n if (classDeclaration.decorators) {\n result.decorators = getDecorators(classDeclaration.decorators);\n }\n\n // member decorators\n let members: MetadataMap|null = null;\n function recordMember(name: string, metadata: MemberMetadata) {\n if (!members) members = {};\n const data = members.hasOwnProperty(name) ? members[name] : [];\n data.push(metadata);\n members[name] = data;\n }\n\n // static member\n let statics: {[name: string]: MetadataValue | FunctionMetadata}|null = null;\n function recordStaticMember(name: string, value: MetadataValue | FunctionMetadata) {\n if (!statics) statics = {};\n statics[name] = value;\n }\n\n for (const member of classDeclaration.members) {\n let isConstructor = false;\n switch (member.kind) {\n case ts.SyntaxKind.Constructor:\n case ts.SyntaxKind.MethodDeclaration:\n isConstructor = member.kind === ts.SyntaxKind.Constructor;\n const method = <ts.MethodDeclaration|ts.ConstructorDeclaration>member;\n if (isStatic(method)) {\n const maybeFunc = maybeGetSimpleFunction(<ts.MethodDeclaration>method);\n if (maybeFunc) {\n recordStaticMember(maybeFunc.name, maybeFunc.func);\n }\n continue;\n }\n const methodDecorators = getDecorators(method.decorators);\n const parameters = method.parameters;\n const parameterDecoratorData:\n ((MetadataSymbolicExpression | MetadataError)[] | undefined)[] = [];\n const parametersData:\n (MetadataSymbolicReferenceExpression | MetadataError |\n MetadataSymbolicSelectExpression | null)[] = [];\n let hasDecoratorData: boolean = false;\n let hasParameterData: boolean = false;\n for (const parameter of parameters) {\n const parameterData = getDecorators(parameter.decorators);\n parameterDecoratorData.push(parameterData);\n hasDecoratorData = hasDecoratorData || !!parameterData;\n if (isConstructor) {\n if (parameter.type) {\n parametersData.push(referenceFrom(parameter.type));\n } else {\n parametersData.push(null);\n }\n hasParameterData = true;\n }\n }\n const data: MethodMetadata = {__symbolic: isConstructor ? 'constructor' : 'method'};\n const name = isConstructor ? '__ctor__' : evaluator.nameOf(member.name);\n if (methodDecorators) {\n data.decorators = methodDecorators;\n }\n if (hasDecoratorData) {\n data.parameterDecorators = parameterDecoratorData;\n }\n if (hasParameterData) {\n (<ConstructorMetadata>data).parameters = parametersData;\n }\n if (!isMetadataError(name)) {\n recordMember(name, data);\n }\n break;\n case ts.SyntaxKind.PropertyDeclaration:\n case ts.SyntaxKind.GetAccessor:\n case ts.SyntaxKind.SetAccessor:\n const property = <ts.PropertyDeclaration>member;\n if (isStatic(property)) {\n const name = evaluator.nameOf(property.name);\n if (!isMetadataError(name)) {\n if (property.initializer) {\n const value = evaluator.evaluateNode(property.initializer);\n recordStaticMember(name, value);\n } else {\n recordStaticMember(name, errorSym('Variable not initialized', property.name));\n }\n }\n }\n const propertyDecorators = getDecorators(property.decorators);\n if (propertyDecorators) {\n const name = evaluator.nameOf(property.name);\n if (!isMetadataError(name)) {\n recordMember(name, {__symbolic: 'property', decorators: propertyDecorators});\n }\n }\n break;\n }\n }\n if (members) {\n result.members = members;\n }\n if (statics) {\n result.statics = statics;\n }\n\n return recordEntry(result, classDeclaration);\n }\n\n // Collect all exported symbols from an exports clause.\n const exportMap = new Map<string, string>();\n ts.forEachChild(sourceFile, node => {\n switch (node.kind) {\n case ts.SyntaxKind.ExportDeclaration:\n const exportDeclaration = <ts.ExportDeclaration>node;\n const {moduleSpecifier, exportClause} = exportDeclaration;\n\n if (!moduleSpecifier) {\n // If there is a module specifier there is also an exportClause\n exportClause !.elements.forEach(spec => {\n const exportedAs = spec.name.text;\n const name = (spec.propertyName || spec.name).text;\n exportMap.set(name, exportedAs);\n });\n }\n }\n });\n\n const isExport = (node: ts.Node) =>\n sourceFile.isDeclarationFile || ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export;\n const isExportedIdentifier = (identifier?: ts.Identifier) =>\n identifier && exportMap.has(identifier.text);\n const isExported =\n (node: ts.FunctionDeclaration | ts.ClassDeclaration | ts.TypeAliasDeclaration |\n ts.InterfaceDeclaration | ts.EnumDeclaration) =>\n isExport(node) || isExportedIdentifier(node.name);\n const exportedIdentifierName = (identifier?: ts.Identifier) =>\n identifier && (exportMap.get(identifier.text) || identifier.text);\n const exportedName =\n (node: ts.FunctionDeclaration | ts.ClassDeclaration | ts.InterfaceDeclaration |\n ts.TypeAliasDeclaration | ts.EnumDeclaration) => exportedIdentifierName(node.name);\n\n\n // Pre-declare classes and functions\n ts.forEachChild(sourceFile, node => {\n switch (node.kind) {\n case ts.SyntaxKind.ClassDeclaration:\n const classDeclaration = <ts.ClassDeclaration>node;\n if (classDeclaration.name) {\n const className = classDeclaration.name.text;\n if (isExported(classDeclaration)) {\n locals.define(\n className, {__symbolic: 'reference', name: exportedName(classDeclaration)});\n } else {\n locals.define(\n className, errorSym('Reference to non-exported class', node, {className}));\n }\n }\n break;\n\n case ts.SyntaxKind.InterfaceDeclaration:\n const interfaceDeclaration = <ts.InterfaceDeclaration>node;\n if (interfaceDeclaration.name) {\n const interfaceName = interfaceDeclaration.name.text;\n // All references to interfaces should be converted to references to `any`.\n locals.define(interfaceName, {__symbolic: 'reference', name: 'any'});\n }\n break;\n\n case ts.SyntaxKind.FunctionDeclaration:\n const functionDeclaration = <ts.FunctionDeclaration>node;\n if (!isExported(functionDeclaration)) {\n // Report references to this function as an error.\n const nameNode = functionDeclaration.name;\n if (nameNode && nameNode.text) {\n locals.define(\n nameNode.text,\n errorSym(\n 'Reference to a non-exported function', nameNode, {name: nameNode.text}));\n }\n }\n break;\n }\n });\n\n ts.forEachChild(sourceFile, node => {\n switch (node.kind) {\n case ts.SyntaxKind.ExportDeclaration:\n // Record export declarations\n const exportDeclaration = <ts.ExportDeclaration>node;\n const {moduleSpecifier, exportClause} = exportDeclaration;\n\n if (!moduleSpecifier) {\n // no module specifier -> export {propName as name};\n if (exportClause) {\n exportClause.elements.forEach(spec => {\n const name = spec.name.text;\n // If the symbol was not already exported, export a reference since it is a\n // reference to an import\n if (!metadata || !metadata[name]) {\n const propNode = spec.propertyName || spec.name;\n const value: MetadataValue = evaluator.evaluateNode(propNode);\n if (!metadata) metadata = {};\n metadata[name] = recordEntry(value, node);\n }\n });\n }\n }\n\n if (moduleSpecifier && moduleSpecifier.kind == ts.SyntaxKind.StringLiteral) {\n // Ignore exports that don't have string literals as exports.\n // This is allowed by the syntax but will be flagged as an error by the type checker.\n const from = (<ts.StringLiteral>moduleSpecifier).text;\n const moduleExport: ModuleExportMetadata = {from};\n if (exportClause) {\n moduleExport.export = exportClause.elements.map(\n spec => spec.propertyName ? {name: spec.propertyName.text, as: spec.name.text} :\n spec.name.text);\n }\n if (!exports) exports = [];\n exports.push(moduleExport);\n }\n break;\n case ts.SyntaxKind.ClassDeclaration:\n const classDeclaration = <ts.ClassDeclaration>node;\n if (classDeclaration.name) {\n if (isExported(classDeclaration)) {\n const name = exportedName(classDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = classMetadataOf(classDeclaration);\n }\n }\n }\n // Otherwise don't record metadata for the class.\n break;\n\n case ts.SyntaxKind.TypeAliasDeclaration:\n const typeDeclaration = <ts.TypeAliasDeclaration>node;\n if (typeDeclaration.name && isExported(typeDeclaration)) {\n const name = exportedName(typeDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = {__symbolic: 'interface'};\n }\n }\n break;\n\n case ts.SyntaxKind.InterfaceDeclaration:\n const interfaceDeclaration = <ts.InterfaceDeclaration>node;\n if (interfaceDeclaration.name && isExported(interfaceDeclaration)) {\n const name = exportedName(interfaceDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = {__symbolic: 'interface'};\n }\n }\n break;\n\n case ts.SyntaxKind.FunctionDeclaration:\n // Record functions that return a single value. Record the parameter\n // names substitution will be performed by the StaticReflector.\n const functionDeclaration = <ts.FunctionDeclaration>node;\n if (isExported(functionDeclaration) && functionDeclaration.name) {\n const name = exportedName(functionDeclaration);\n const maybeFunc = maybeGetSimpleFunction(functionDeclaration);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] =\n maybeFunc ? recordEntry(maybeFunc.func, node) : {__symbolic: 'function'};\n }\n }\n break;\n\n case ts.SyntaxKind.EnumDeclaration:\n const enumDeclaration = <ts.EnumDeclaration>node;\n if (isExported(enumDeclaration)) {\n const enumValueHolder: {[name: string]: MetadataValue} = {};\n const enumName = exportedName(enumDeclaration);\n let nextDefaultValue: MetadataValue = 0;\n let writtenMembers = 0;\n for (const member of enumDeclaration.members) {\n let enumValue: MetadataValue;\n if (!member.initializer) {\n enumValue = nextDefaultValue;\n } else {\n enumValue = evaluator.evaluateNode(member.initializer);\n }\n let name: string|undefined = undefined;\n if (member.name.kind == ts.SyntaxKind.Identifier) {\n const identifier = <ts.Identifier>member.name;\n name = identifier.text;\n enumValueHolder[name] = enumValue;\n writtenMembers++;\n }\n if (typeof enumValue === 'number') {\n nextDefaultValue = enumValue + 1;\n } else if (name) {\n nextDefaultValue = {\n __symbolic: 'binary',\n operator: '+',\n left: {\n __symbolic: 'select',\n expression: recordEntry({__symbolic: 'reference', name: enumName}, node), name\n }\n };\n } else {\n nextDefaultValue =\n recordEntry(errorSym('Unsupported enum member name', member.name), node);\n }\n }\n if (writtenMembers) {\n if (enumName) {\n if (!metadata) metadata = {};\n metadata[enumName] = recordEntry(enumValueHolder, node);\n }\n }\n }\n break;\n\n case ts.SyntaxKind.VariableStatement:\n const variableStatement = <ts.VariableStatement>node;\n for (const variableDeclaration of variableStatement.declarationList.declarations) {\n if (variableDeclaration.name.kind == ts.SyntaxKind.Identifier) {\n const nameNode = <ts.Identifier>variableDeclaration.name;\n let varValue: MetadataValue;\n if (variableDeclaration.initializer) {\n varValue = evaluator.evaluateNode(variableDeclaration.initializer);\n } else {\n varValue = recordEntry(errorSym('Variable not initialized', nameNode), nameNode);\n }\n let exported = false;\n if (isExport(variableStatement) || isExport(variableDeclaration) ||\n isExportedIdentifier(nameNode)) {\n const name = exportedIdentifierName(nameNode);\n if (name) {\n if (!metadata) metadata = {};\n metadata[name] = recordEntry(varValue, node);\n }\n exported = true;\n }\n if (typeof varValue == 'string' || typeof varValue == 'number' ||\n typeof varValue == 'boolean') {\n locals.define(nameNode.text, varValue);\n if (exported) {\n locals.defineReference(\n nameNode.text, {__symbolic: 'reference', name: nameNode.text});\n }\n } else if (!exported) {\n if (varValue && !isMetadataError(varValue)) {\n locals.define(nameNode.text, recordEntry(varValue, node));\n } else {\n locals.define(\n nameNode.text,\n recordEntry(\n errorSym('Reference to a local symbol', nameNode, {name: nameNode.text}),\n node));\n }\n }\n } else {\n // Destructuring (or binding) declarations are not supported,\n // var {<identifier>[, <identifier>]+} = <expression>;\n // or\n // var [<identifier>[, <identifier}+] = <expression>;\n // are not supported.\n const report: (nameNode: ts.Node) => void = (nameNode: ts.Node) => {\n switch (nameNode.kind) {\n case ts.SyntaxKind.Identifier:\n const name = <ts.Identifier>nameNode;\n const varValue = errorSym('Destructuring not supported', name);\n locals.define(name.text, varValue);\n if (isExport(node)) {\n if (!metadata) metadata = {};\n metadata[name.text] = varValue;\n }\n break;\n case ts.SyntaxKind.BindingElement:\n const bindingElement = <ts.BindingElement>nameNode;\n report(bindingElement.name);\n break;\n case ts.SyntaxKind.ObjectBindingPattern:\n case ts.SyntaxKind.ArrayBindingPattern:\n const bindings = <ts.BindingPattern>nameNode;\n (bindings as any).elements.forEach(report);\n break;\n }\n };\n report(variableDeclaration.name);\n }\n }\n break;\n }\n });\n\n if (metadata || exports) {\n if (!metadata)\n metadata = {};\n else if (strict) {\n validateMetadata(sourceFile, nodeMap, metadata);\n }\n const result: ModuleMetadata = {\n __symbolic: 'module',\n version: this.options.version || METADATA_VERSION, metadata\n };\n if (sourceFile.moduleName) result.importAs = sourceFile.moduleName;\n if (exports) result.exports = exports;\n return result;\n }\n }\n}\n\n// This will throw if the metadata entry given contains an error node.\nfunction validateMetadata(\n sourceFile: ts.SourceFile, nodeMap: Map<MetadataEntry, ts.Node>,\n metadata: {[name: string]: MetadataEntry}) {\n let locals: Set<string> = new Set(['Array', 'Object', 'Set', 'Map', 'string', 'number', 'any']);\n\n function validateExpression(\n expression: MetadataValue | MetadataSymbolicExpression | MetadataError) {\n if (!expression) {\n return;\n } else if (Array.isArray(expression)) {\n expression.forEach(validateExpression);\n } else if (typeof expression === 'object' && !expression.hasOwnProperty('__symbolic')) {\n Object.getOwnPropertyNames(expression).forEach(v => validateExpression((<any>expression)[v]));\n } else if (isMetadataError(expression)) {\n reportError(expression);\n } else if (isMetadataGlobalReferenceExpression(expression)) {\n if (!locals.has(expression.name)) {\n const reference = <MetadataValue>metadata[expression.name];\n if (reference) {\n validateExpression(reference);\n }\n }\n } else if (isFunctionMetadata(expression)) {\n validateFunction(<any>expression);\n } else if (isMetadataSymbolicExpression(expression)) {\n switch (expression.__symbolic) {\n case 'binary':\n const binaryExpression = <MetadataSymbolicBinaryExpression>expression;\n validateExpression(binaryExpression.left);\n validateExpression(binaryExpression.right);\n break;\n case 'call':\n case 'new':\n const callExpression = <MetadataSymbolicCallExpression>expression;\n validateExpression(callExpression.expression);\n if (callExpression.arguments) callExpression.arguments.forEach(validateExpression);\n break;\n case 'index':\n const indexExpression = <MetadataSymbolicIndexExpression>expression;\n validateExpression(indexExpression.expression);\n validateExpression(indexExpression.index);\n break;\n case 'pre':\n const prefixExpression = <MetadataSymbolicPrefixExpression>expression;\n validateExpression(prefixExpression.operand);\n break;\n case 'select':\n const selectExpression = <MetadataSymbolicSelectExpression>expression;\n validateExpression(selectExpression.expression);\n break;\n case 'spread':\n const spreadExpression = <MetadataSymbolicSpreadExpression>expression;\n validateExpression(spreadExpression.expression);\n break;\n case 'if':\n const ifExpression = <MetadataSymbolicIfExpression>expression;\n validateExpression(ifExpression.condition);\n validateExpression(ifExpression.elseExpression);\n validateExpression(ifExpression.thenExpression);\n break;\n }\n }\n }\n\n function validateMember(classData: ClassMetadata, member: MemberMetadata) {\n if (member.decorators) {\n member.decorators.forEach(validateExpression);\n }\n if (isMethodMetadata(member) && member.parameterDecorators) {\n member.parameterDecorators.forEach(validateExpression);\n }\n // Only validate parameters of classes for which we know that are used with our DI\n if (classData.decorators && isConstructorMetadata(member) && member.parameters) {\n member.parameters.forEach(validateExpression);\n }\n }\n\n function validateClass(classData: ClassMetadata) {\n if (classData.decorators) {\n classData.decorators.forEach(validateExpression);\n }\n if (classData.members) {\n Object.getOwnPropertyNames(classData.members)\n .forEach(name => classData.members ![name].forEach((m) => validateMember(classData, m)));\n }\n if (classData.statics) {\n Object.getOwnPropertyNames(classData.statics).forEach(name => {\n const staticMember = classData.statics ![name];\n if (isFunctionMetadata(staticMember)) {\n validateExpression(staticMember.value);\n } else {\n validateExpression(staticMember);\n }\n });\n }\n }\n\n function validateFunction(functionDeclaration: FunctionMetadata) {\n if (functionDeclaration.value) {\n const oldLocals = locals;\n if (functionDeclaration.parameters) {\n locals = new Set(oldLocals.values());\n if (functionDeclaration.parameters)\n functionDeclaration.parameters.forEach(n => locals.add(n));\n }\n validateExpression(functionDeclaration.value);\n locals = oldLocals;\n }\n }\n\n function shouldReportNode(node: ts.Node | undefined) {\n if (node) {\n const nodeStart = node.getStart();\n return !(\n node.pos != nodeStart &&\n sourceFile.text.substring(node.pos, nodeStart).indexOf('@dynamic') >= 0);\n }\n return true;\n }\n\n function reportError(error: MetadataError) {\n const node = nodeMap.get(error);\n if (shouldReportNode(node)) {\n const lineInfo = error.line != undefined ?\n error.character != undefined ? `:${error.line + 1}:${error.character + 1}` :\n `:${error.line + 1}` :\n '';\n throw new Error(\n `${sourceFile.fileName}${lineInfo}: Metadata collected contains an error that will be reported at runtime: ${expandedMessage(error)}.\\n ${JSON.stringify(error)}`);\n }\n }\n\n Object.getOwnPropertyNames(metadata).forEach(name => {\n const entry = metadata[name];\n try {\n if (isClassMetadata(entry)) {\n validateClass(entry);\n }\n } catch (e) {\n const node = nodeMap.get(entry);\n if (shouldReportNode(node)) {\n if (node) {\n const {line, character} = sourceFile.getLineAndCharacterOfPosition(node.getStart());\n throw new Error(\n `${sourceFile.fileName}:${line + 1}:${character + 1}: Error encountered in metadata generated for exported symbol '${name}': \\n ${e.message}`);\n }\n throw new Error(\n `Error encountered in metadata generated for exported symbol ${name}: \\n ${e.message}`);\n }\n }\n });\n}\n\n// Collect parameter names from a function.\nfunction namesOf(parameters: ts.NodeArray<ts.ParameterDeclaration>): string[] {\n const result: string[] = [];\n\n function addNamesOf(name: ts.Identifier | ts.BindingPattern) {\n if (name.kind == ts.SyntaxKind.Identifier) {\n const identifier = <ts.Identifier>name;\n result.push(identifier.text);\n } else {\n const bindingPattern = <ts.BindingPattern>name;\n for (const element of bindingPattern.elements) {\n const name = (element as any).name;\n if (name) {\n addNamesOf(name);\n }\n }\n }\n }\n\n for (const parameter of parameters) {\n addNamesOf(parameter.name);\n }\n\n return result;\n}\n\nfunction expandedMessage(error: any): string {\n switch (error.message) {\n case 'Reference to non-exported class':\n if (error.context && error.context.className) {\n return `Reference to a non-exported class ${error.context.className}. Consider exporting the class`;\n }\n break;\n case 'Variable not initialized':\n return 'Only initialized variables and constants can be referenced because the value of this variable is needed by the template compiler';\n case 'Destructuring not supported':\n return 'Referencing an exported destructured variable or constant is not supported by the template compiler. Consider simplifying this to avoid destructuring';\n case 'Could not resolve type':\n if (error.context && error.context.typeName) {\n return `Could not resolve type ${error.context.typeName}`;\n }\n break;\n case 'Function call not supported':\n let prefix =\n error.context && error.context.name ? `Calling function '${error.context.name}', f` : 'F';\n return prefix +\n 'unction calls are not supported. Consider replacing the function or lambda with a reference to an exported function';\n case 'Reference to a local symbol':\n if (error.context && error.context.name) {\n return `Reference to a local (non-exported) symbol '${error.context.name}'. Consider exporting the symbol`;\n }\n }\n return error.message;\n}\n"]}
@@ -330,9 +330,6 @@ var Evaluator = /** @class */ (function () {
330
330
  }
331
331
  }
332
332
  var args = arrayOrEmpty(callExpression.arguments).map(function (arg) { return _this.evaluateNode(arg); });
333
- if (!this.options.verboseInvalidExpression && args.some(schema_1.isMetadataError)) {
334
- return args.find(schema_1.isMetadataError);
335
- }
336
333
  if (this.isFoldable(callExpression)) {
337
334
  if (isMethodCallOf(callExpression, 'concat')) {
338
335
  var arrayValue = this.evaluateNode(callExpression.expression.expression);
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/metadata/evaluator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as ts from 'typescript';\n\nimport {CollectorOptions} from './collector';\nimport {ClassMetadata, FunctionMetadata, InterfaceMetadata, MetadataEntry, MetadataError, MetadataImportedSymbolReferenceExpression, MetadataSourceLocationInfo, MetadataSymbolicCallExpression, MetadataValue, isMetadataError, isMetadataGlobalReferenceExpression, isMetadataImportDefaultReference, isMetadataImportedSymbolReferenceExpression, isMetadataModuleReferenceExpression, isMetadataSymbolicReferenceExpression, isMetadataSymbolicSpreadExpression} from './schema';\nimport {Symbols} from './symbols';\n\n\n\n// In TypeScript 2.1 the spread element kind was renamed.\nconst spreadElementSyntaxKind: ts.SyntaxKind =\n (ts.SyntaxKind as any).SpreadElement || (ts.SyntaxKind as any).SpreadElementExpression;\n\nfunction isMethodCallOf(callExpression: ts.CallExpression, memberName: string): boolean {\n const expression = callExpression.expression;\n if (expression.kind === ts.SyntaxKind.PropertyAccessExpression) {\n const propertyAccessExpression = <ts.PropertyAccessExpression>expression;\n const name = propertyAccessExpression.name;\n if (name.kind == ts.SyntaxKind.Identifier) {\n return name.text === memberName;\n }\n }\n return false;\n}\n\nfunction isCallOf(callExpression: ts.CallExpression, ident: string): boolean {\n const expression = callExpression.expression;\n if (expression.kind === ts.SyntaxKind.Identifier) {\n const identifier = <ts.Identifier>expression;\n return identifier.text === ident;\n }\n return false;\n}\n\n/* @internal */\nexport function recordMapEntry<T extends MetadataEntry>(\n entry: T, node: ts.Node,\n nodeMap: Map<MetadataValue|ClassMetadata|InterfaceMetadata|FunctionMetadata, ts.Node>,\n sourceFile?: ts.SourceFile) {\n if (!nodeMap.has(entry)) {\n nodeMap.set(entry, node);\n if (node && (isMetadataImportedSymbolReferenceExpression(entry) ||\n isMetadataImportDefaultReference(entry)) &&\n entry.line == null) {\n const info = sourceInfo(node, sourceFile);\n if (info.line != null) entry.line = info.line;\n if (info.character != null) entry.character = info.character;\n }\n }\n return entry;\n}\n\n/**\n * ts.forEachChild stops iterating children when the callback return a truthy value.\n * This method inverts this to implement an `every` style iterator. It will return\n * true if every call to `cb` returns `true`.\n */\nfunction everyNodeChild(node: ts.Node, cb: (node: ts.Node) => boolean) {\n return !ts.forEachChild(node, node => !cb(node));\n}\n\nexport function isPrimitive(value: any): boolean {\n return Object(value) !== value;\n}\n\nfunction isDefined(obj: any): boolean {\n return obj !== undefined;\n}\n\n// import {propertyName as name} from 'place'\n// import {name} from 'place'\nexport interface ImportSpecifierMetadata {\n name: string;\n propertyName?: string;\n}\nexport interface ImportMetadata {\n defaultName?: string; // import d from 'place'\n namespace?: string; // import * as d from 'place'\n namedImports?: ImportSpecifierMetadata[]; // import {a} from 'place'\n from: string; // from 'place'\n}\n\n\nfunction getSourceFileOfNode(node: ts.Node | undefined): ts.SourceFile {\n while (node && node.kind != ts.SyntaxKind.SourceFile) {\n node = node.parent;\n }\n return <ts.SourceFile>node;\n}\n\n/* @internal */\nexport function sourceInfo(\n node: ts.Node | undefined, sourceFile: ts.SourceFile | undefined): MetadataSourceLocationInfo {\n if (node) {\n sourceFile = sourceFile || getSourceFileOfNode(node);\n if (sourceFile) {\n return ts.getLineAndCharacterOfPosition(sourceFile, node.getStart(sourceFile));\n }\n }\n return {};\n}\n\n/* @internal */\nexport function errorSymbol(\n message: string, node?: ts.Node, context?: {[name: string]: string},\n sourceFile?: ts.SourceFile): MetadataError {\n const result: MetadataError = {__symbolic: 'error', message, ...sourceInfo(node, sourceFile)};\n if (context) {\n result.context = context;\n }\n return result;\n}\n\n/**\n * Produce a symbolic representation of an expression folding values into their final value when\n * possible.\n */\nexport class Evaluator {\n constructor(\n private symbols: Symbols, private nodeMap: Map<MetadataEntry, ts.Node>,\n private options: CollectorOptions = {},\n private recordExport?: (name: string, value: MetadataValue) => void) {}\n\n nameOf(node: ts.Node|undefined): string|MetadataError {\n if (node && node.kind == ts.SyntaxKind.Identifier) {\n return (<ts.Identifier>node).text;\n }\n const result = node && this.evaluateNode(node);\n if (isMetadataError(result) || typeof result === 'string') {\n return result;\n } else {\n return errorSymbol(\n 'Name expected', node, {received: (node && node.getText()) || '<missing>'});\n }\n }\n\n /**\n * Returns true if the expression represented by `node` can be folded into a literal expression.\n *\n * For example, a literal is always foldable. This means that literal expressions such as `1.2`\n * `\"Some value\"` `true` `false` are foldable.\n *\n * - An object literal is foldable if all the properties in the literal are foldable.\n * - An array literal is foldable if all the elements are foldable.\n * - A call is foldable if it is a call to a Array.prototype.concat or a call to CONST_EXPR.\n * - A property access is foldable if the object is foldable.\n * - A array index is foldable if index expression is foldable and the array is foldable.\n * - Binary operator expressions are foldable if the left and right expressions are foldable and\n * it is one of '+', '-', '*', '/', '%', '||', and '&&'.\n * - An identifier is foldable if a value can be found for its symbol in the evaluator symbol\n * table.\n */\n public isFoldable(node: ts.Node): boolean {\n return this.isFoldableWorker(node, new Map<ts.Node, boolean>());\n }\n\n private isFoldableWorker(node: ts.Node|undefined, folding: Map<ts.Node, boolean>): boolean {\n if (node) {\n switch (node.kind) {\n case ts.SyntaxKind.ObjectLiteralExpression:\n return everyNodeChild(node, child => {\n if (child.kind === ts.SyntaxKind.PropertyAssignment) {\n const propertyAssignment = <ts.PropertyAssignment>child;\n return this.isFoldableWorker(propertyAssignment.initializer, folding);\n }\n return false;\n });\n case ts.SyntaxKind.ArrayLiteralExpression:\n return everyNodeChild(node, child => this.isFoldableWorker(child, folding));\n case ts.SyntaxKind.CallExpression:\n const callExpression = <ts.CallExpression>node;\n // We can fold a <array>.concat(<v>).\n if (isMethodCallOf(callExpression, 'concat') &&\n arrayOrEmpty(callExpression.arguments).length === 1) {\n const arrayNode = (<ts.PropertyAccessExpression>callExpression.expression).expression;\n if (this.isFoldableWorker(arrayNode, folding) &&\n this.isFoldableWorker(callExpression.arguments[0], folding)) {\n // It needs to be an array.\n const arrayValue = this.evaluateNode(arrayNode);\n if (arrayValue && Array.isArray(arrayValue)) {\n return true;\n }\n }\n }\n\n // We can fold a call to CONST_EXPR\n if (isCallOf(callExpression, 'CONST_EXPR') &&\n arrayOrEmpty(callExpression.arguments).length === 1)\n return this.isFoldableWorker(callExpression.arguments[0], folding);\n return false;\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n case ts.SyntaxKind.NumericLiteral:\n case ts.SyntaxKind.NullKeyword:\n case ts.SyntaxKind.TrueKeyword:\n case ts.SyntaxKind.FalseKeyword:\n case ts.SyntaxKind.TemplateHead:\n case ts.SyntaxKind.TemplateMiddle:\n case ts.SyntaxKind.TemplateTail:\n return true;\n case ts.SyntaxKind.ParenthesizedExpression:\n const parenthesizedExpression = <ts.ParenthesizedExpression>node;\n return this.isFoldableWorker(parenthesizedExpression.expression, folding);\n case ts.SyntaxKind.BinaryExpression:\n const binaryExpression = <ts.BinaryExpression>node;\n switch (binaryExpression.operatorToken.kind) {\n case ts.SyntaxKind.PlusToken:\n case ts.SyntaxKind.MinusToken:\n case ts.SyntaxKind.AsteriskToken:\n case ts.SyntaxKind.SlashToken:\n case ts.SyntaxKind.PercentToken:\n case ts.SyntaxKind.AmpersandAmpersandToken:\n case ts.SyntaxKind.BarBarToken:\n return this.isFoldableWorker(binaryExpression.left, folding) &&\n this.isFoldableWorker(binaryExpression.right, folding);\n default:\n return false;\n }\n case ts.SyntaxKind.PropertyAccessExpression:\n const propertyAccessExpression = <ts.PropertyAccessExpression>node;\n return this.isFoldableWorker(propertyAccessExpression.expression, folding);\n case ts.SyntaxKind.ElementAccessExpression:\n const elementAccessExpression = <ts.ElementAccessExpression>node;\n return this.isFoldableWorker(elementAccessExpression.expression, folding) &&\n this.isFoldableWorker(elementAccessExpression.argumentExpression, folding);\n case ts.SyntaxKind.Identifier:\n let identifier = <ts.Identifier>node;\n let reference = this.symbols.resolve(identifier.text);\n if (reference !== undefined && isPrimitive(reference)) {\n return true;\n }\n break;\n case ts.SyntaxKind.TemplateExpression:\n const templateExpression = <ts.TemplateExpression>node;\n return templateExpression.templateSpans.every(\n span => this.isFoldableWorker(span.expression, folding));\n }\n }\n return false;\n }\n\n /**\n * Produce a JSON serialiable object representing `node`. The foldable values in the expression\n * tree are folded. For example, a node representing `1 + 2` is folded into `3`.\n */\n public evaluateNode(node: ts.Node, preferReference?: boolean): MetadataValue {\n const t = this;\n let error: MetadataError|undefined;\n\n function recordEntry(entry: MetadataValue, node: ts.Node): MetadataValue {\n if (t.options.substituteExpression) {\n const newEntry = t.options.substituteExpression(entry, node);\n if (t.recordExport && newEntry != entry && isMetadataGlobalReferenceExpression(newEntry)) {\n t.recordExport(newEntry.name, entry);\n }\n entry = newEntry;\n }\n return recordMapEntry(entry, node, t.nodeMap);\n }\n\n function isFoldableError(value: any): value is MetadataError {\n return !t.options.verboseInvalidExpression && isMetadataError(value);\n }\n\n const resolveName = (name: string, preferReference?: boolean): MetadataValue => {\n const reference = this.symbols.resolve(name, preferReference);\n if (reference === undefined) {\n // Encode as a global reference. StaticReflector will check the reference.\n return recordEntry({__symbolic: 'reference', name}, node);\n }\n if (reference && isMetadataSymbolicReferenceExpression(reference)) {\n return recordEntry({...reference}, node);\n }\n return reference;\n };\n\n switch (node.kind) {\n case ts.SyntaxKind.ObjectLiteralExpression:\n let obj: {[name: string]: any} = {};\n let quoted: string[] = [];\n ts.forEachChild(node, child => {\n switch (child.kind) {\n case ts.SyntaxKind.ShorthandPropertyAssignment:\n case ts.SyntaxKind.PropertyAssignment:\n const assignment = <ts.PropertyAssignment|ts.ShorthandPropertyAssignment>child;\n if (assignment.name.kind == ts.SyntaxKind.StringLiteral) {\n const name = (assignment.name as ts.StringLiteral).text;\n quoted.push(name);\n }\n const propertyName = this.nameOf(assignment.name);\n if (isFoldableError(propertyName)) {\n error = propertyName;\n return true;\n }\n const propertyValue = isPropertyAssignment(assignment) ?\n this.evaluateNode(assignment.initializer, /* preferReference */ true) :\n resolveName(propertyName, /* preferReference */ true);\n if (isFoldableError(propertyValue)) {\n error = propertyValue;\n return true; // Stop the forEachChild.\n } else {\n obj[<string>propertyName] = isPropertyAssignment(assignment) ?\n recordEntry(propertyValue, assignment.initializer) :\n propertyValue;\n }\n }\n });\n if (error) return error;\n if (this.options.quotedNames && quoted.length) {\n obj['$quoted$'] = quoted;\n }\n return recordEntry(obj, node);\n case ts.SyntaxKind.ArrayLiteralExpression:\n let arr: MetadataValue[] = [];\n ts.forEachChild(node, child => {\n const value = this.evaluateNode(child, /* preferReference */ true);\n\n // Check for error\n if (isFoldableError(value)) {\n error = value;\n return true; // Stop the forEachChild.\n }\n\n // Handle spread expressions\n if (isMetadataSymbolicSpreadExpression(value)) {\n if (Array.isArray(value.expression)) {\n for (const spreadValue of value.expression) {\n arr.push(spreadValue);\n }\n return;\n }\n }\n\n arr.push(value);\n });\n if (error) return error;\n return recordEntry(arr, node);\n case spreadElementSyntaxKind:\n let spreadExpression = this.evaluateNode((node as any).expression);\n return recordEntry({__symbolic: 'spread', expression: spreadExpression}, node);\n case ts.SyntaxKind.CallExpression:\n const callExpression = <ts.CallExpression>node;\n if (isCallOf(callExpression, 'forwardRef') &&\n arrayOrEmpty(callExpression.arguments).length === 1) {\n const firstArgument = callExpression.arguments[0];\n if (firstArgument.kind == ts.SyntaxKind.ArrowFunction) {\n const arrowFunction = <ts.ArrowFunction>firstArgument;\n return recordEntry(this.evaluateNode(arrowFunction.body), node);\n }\n }\n const args = arrayOrEmpty(callExpression.arguments).map(arg => this.evaluateNode(arg));\n if (!this.options.verboseInvalidExpression && args.some(isMetadataError)) {\n return args.find(isMetadataError);\n }\n if (this.isFoldable(callExpression)) {\n if (isMethodCallOf(callExpression, 'concat')) {\n const arrayValue = <MetadataValue[]>this.evaluateNode(\n (<ts.PropertyAccessExpression>callExpression.expression).expression);\n if (isFoldableError(arrayValue)) return arrayValue;\n return arrayValue.concat(args[0]);\n }\n }\n // Always fold a CONST_EXPR even if the argument is not foldable.\n if (isCallOf(callExpression, 'CONST_EXPR') &&\n arrayOrEmpty(callExpression.arguments).length === 1) {\n return recordEntry(args[0], node);\n }\n const expression = this.evaluateNode(callExpression.expression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n let result: MetadataSymbolicCallExpression = {__symbolic: 'call', expression: expression};\n if (args && args.length) {\n result.arguments = args;\n }\n return recordEntry(result, node);\n case ts.SyntaxKind.NewExpression:\n const newExpression = <ts.NewExpression>node;\n const newArgs = arrayOrEmpty(newExpression.arguments).map(arg => this.evaluateNode(arg));\n if (!this.options.verboseInvalidExpression && newArgs.some(isMetadataError)) {\n return recordEntry(newArgs.find(isMetadataError), node);\n }\n const newTarget = this.evaluateNode(newExpression.expression);\n if (isMetadataError(newTarget)) {\n return recordEntry(newTarget, node);\n }\n const call: MetadataSymbolicCallExpression = {__symbolic: 'new', expression: newTarget};\n if (newArgs.length) {\n call.arguments = newArgs;\n }\n return recordEntry(call, node);\n case ts.SyntaxKind.PropertyAccessExpression: {\n const propertyAccessExpression = <ts.PropertyAccessExpression>node;\n const expression = this.evaluateNode(propertyAccessExpression.expression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n const member = this.nameOf(propertyAccessExpression.name);\n if (isFoldableError(member)) {\n return recordEntry(member, node);\n }\n if (expression && this.isFoldable(propertyAccessExpression.expression))\n return (<any>expression)[<string>member];\n if (isMetadataModuleReferenceExpression(expression)) {\n // A select into a module reference and be converted into a reference to the symbol\n // in the module\n return recordEntry(\n {__symbolic: 'reference', module: expression.module, name: member}, node);\n }\n return recordEntry({__symbolic: 'select', expression, member}, node);\n }\n case ts.SyntaxKind.ElementAccessExpression: {\n const elementAccessExpression = <ts.ElementAccessExpression>node;\n const expression = this.evaluateNode(elementAccessExpression.expression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n if (!elementAccessExpression.argumentExpression) {\n return recordEntry(errorSymbol('Expression form not supported', node), node);\n }\n const index = this.evaluateNode(elementAccessExpression.argumentExpression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n if (this.isFoldable(elementAccessExpression.expression) &&\n this.isFoldable(elementAccessExpression.argumentExpression))\n return (<any>expression)[<string|number>index];\n return recordEntry({__symbolic: 'index', expression, index}, node);\n }\n case ts.SyntaxKind.Identifier:\n const identifier = <ts.Identifier>node;\n const name = identifier.text;\n return resolveName(name, preferReference);\n case ts.SyntaxKind.TypeReference:\n const typeReferenceNode = <ts.TypeReferenceNode>node;\n const typeNameNode = typeReferenceNode.typeName;\n const getReference: (typeNameNode: ts.Identifier | ts.QualifiedName) => MetadataValue =\n node => {\n if (typeNameNode.kind === ts.SyntaxKind.QualifiedName) {\n const qualifiedName = <ts.QualifiedName>node;\n const left = this.evaluateNode(qualifiedName.left);\n if (isMetadataModuleReferenceExpression(left)) {\n return recordEntry(\n <MetadataImportedSymbolReferenceExpression>{\n __symbolic: 'reference',\n module: left.module,\n name: qualifiedName.right.text\n },\n node);\n }\n // Record a type reference to a declared type as a select.\n return {__symbolic: 'select', expression: left, member: qualifiedName.right.text};\n } else {\n const identifier = <ts.Identifier>typeNameNode;\n const symbol = this.symbols.resolve(identifier.text);\n if (isFoldableError(symbol) || isMetadataSymbolicReferenceExpression(symbol)) {\n return recordEntry(symbol, node);\n }\n return recordEntry(\n errorSymbol('Could not resolve type', node, {typeName: identifier.text}), node);\n }\n };\n const typeReference = getReference(typeNameNode);\n if (isFoldableError(typeReference)) {\n return recordEntry(typeReference, node);\n }\n if (!isMetadataModuleReferenceExpression(typeReference) &&\n typeReferenceNode.typeArguments && typeReferenceNode.typeArguments.length) {\n const args = typeReferenceNode.typeArguments.map(element => this.evaluateNode(element));\n // TODO: Remove typecast when upgraded to 2.0 as it will be corretly inferred.\n // Some versions of 1.9 do not infer this correctly.\n (<MetadataImportedSymbolReferenceExpression>typeReference).arguments = args;\n }\n return recordEntry(typeReference, node);\n case ts.SyntaxKind.UnionType:\n const unionType = <ts.UnionTypeNode>node;\n\n // Remove null and undefined from the list of unions.\n const references = unionType.types\n .filter(\n n => n.kind != ts.SyntaxKind.NullKeyword &&\n n.kind != ts.SyntaxKind.UndefinedKeyword)\n .map(n => this.evaluateNode(n));\n\n // The remmaining reference must be the same. If two have type arguments consider them\n // different even if the type arguments are the same.\n let candidate: any = null;\n for (let i = 0; i < references.length; i++) {\n const reference = references[i];\n if (isMetadataSymbolicReferenceExpression(reference)) {\n if (candidate) {\n if ((reference as any).name == candidate.name &&\n (reference as any).module == candidate.module && !(reference as any).arguments) {\n candidate = reference;\n }\n } else {\n candidate = reference;\n }\n } else {\n return reference;\n }\n }\n if (candidate) return candidate;\n break;\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n case ts.SyntaxKind.TemplateHead:\n case ts.SyntaxKind.TemplateTail:\n case ts.SyntaxKind.TemplateMiddle:\n return (<ts.LiteralLikeNode>node).text;\n case ts.SyntaxKind.NumericLiteral:\n return parseFloat((<ts.LiteralExpression>node).text);\n case ts.SyntaxKind.AnyKeyword:\n return recordEntry({__symbolic: 'reference', name: 'any'}, node);\n case ts.SyntaxKind.StringKeyword:\n return recordEntry({__symbolic: 'reference', name: 'string'}, node);\n case ts.SyntaxKind.NumberKeyword:\n return recordEntry({__symbolic: 'reference', name: 'number'}, node);\n case ts.SyntaxKind.BooleanKeyword:\n return recordEntry({__symbolic: 'reference', name: 'boolean'}, node);\n case ts.SyntaxKind.ArrayType:\n const arrayTypeNode = <ts.ArrayTypeNode>node;\n return recordEntry(\n {\n __symbolic: 'reference',\n name: 'Array',\n arguments: [this.evaluateNode(arrayTypeNode.elementType)]\n },\n node);\n case ts.SyntaxKind.NullKeyword:\n return null;\n case ts.SyntaxKind.TrueKeyword:\n return true;\n case ts.SyntaxKind.FalseKeyword:\n return false;\n case ts.SyntaxKind.ParenthesizedExpression:\n const parenthesizedExpression = <ts.ParenthesizedExpression>node;\n return this.evaluateNode(parenthesizedExpression.expression);\n case ts.SyntaxKind.TypeAssertionExpression:\n const typeAssertion = <ts.TypeAssertion>node;\n return this.evaluateNode(typeAssertion.expression);\n case ts.SyntaxKind.PrefixUnaryExpression:\n const prefixUnaryExpression = <ts.PrefixUnaryExpression>node;\n const operand = this.evaluateNode(prefixUnaryExpression.operand);\n if (isDefined(operand) && isPrimitive(operand)) {\n switch (prefixUnaryExpression.operator) {\n case ts.SyntaxKind.PlusToken:\n return +(operand as any);\n case ts.SyntaxKind.MinusToken:\n return -(operand as any);\n case ts.SyntaxKind.TildeToken:\n return ~(operand as any);\n case ts.SyntaxKind.ExclamationToken:\n return !operand;\n }\n }\n let operatorText: string;\n switch (prefixUnaryExpression.operator) {\n case ts.SyntaxKind.PlusToken:\n operatorText = '+';\n break;\n case ts.SyntaxKind.MinusToken:\n operatorText = '-';\n break;\n case ts.SyntaxKind.TildeToken:\n operatorText = '~';\n break;\n case ts.SyntaxKind.ExclamationToken:\n operatorText = '!';\n break;\n default:\n return undefined;\n }\n return recordEntry({__symbolic: 'pre', operator: operatorText, operand: operand}, node);\n case ts.SyntaxKind.BinaryExpression:\n const binaryExpression = <ts.BinaryExpression>node;\n const left = this.evaluateNode(binaryExpression.left);\n const right = this.evaluateNode(binaryExpression.right);\n if (isDefined(left) && isDefined(right)) {\n if (isPrimitive(left) && isPrimitive(right))\n switch (binaryExpression.operatorToken.kind) {\n case ts.SyntaxKind.BarBarToken:\n return <any>left || <any>right;\n case ts.SyntaxKind.AmpersandAmpersandToken:\n return <any>left && <any>right;\n case ts.SyntaxKind.AmpersandToken:\n return <any>left & <any>right;\n case ts.SyntaxKind.BarToken:\n return <any>left | <any>right;\n case ts.SyntaxKind.CaretToken:\n return <any>left ^ <any>right;\n case ts.SyntaxKind.EqualsEqualsToken:\n return <any>left == <any>right;\n case ts.SyntaxKind.ExclamationEqualsToken:\n return <any>left != <any>right;\n case ts.SyntaxKind.EqualsEqualsEqualsToken:\n return <any>left === <any>right;\n case ts.SyntaxKind.ExclamationEqualsEqualsToken:\n return <any>left !== <any>right;\n case ts.SyntaxKind.LessThanToken:\n return <any>left < <any>right;\n case ts.SyntaxKind.GreaterThanToken:\n return <any>left > <any>right;\n case ts.SyntaxKind.LessThanEqualsToken:\n return <any>left <= <any>right;\n case ts.SyntaxKind.GreaterThanEqualsToken:\n return <any>left >= <any>right;\n case ts.SyntaxKind.LessThanLessThanToken:\n return (<any>left) << (<any>right);\n case ts.SyntaxKind.GreaterThanGreaterThanToken:\n return <any>left >> <any>right;\n case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:\n return <any>left >>> <any>right;\n case ts.SyntaxKind.PlusToken:\n return <any>left + <any>right;\n case ts.SyntaxKind.MinusToken:\n return <any>left - <any>right;\n case ts.SyntaxKind.AsteriskToken:\n return <any>left * <any>right;\n case ts.SyntaxKind.SlashToken:\n return <any>left / <any>right;\n case ts.SyntaxKind.PercentToken:\n return <any>left % <any>right;\n }\n return recordEntry(\n {\n __symbolic: 'binop',\n operator: binaryExpression.operatorToken.getText(),\n left: left,\n right: right\n },\n node);\n }\n break;\n case ts.SyntaxKind.ConditionalExpression:\n const conditionalExpression = <ts.ConditionalExpression>node;\n const condition = this.evaluateNode(conditionalExpression.condition);\n const thenExpression = this.evaluateNode(conditionalExpression.whenTrue);\n const elseExpression = this.evaluateNode(conditionalExpression.whenFalse);\n if (isPrimitive(condition)) {\n return condition ? thenExpression : elseExpression;\n }\n return recordEntry({__symbolic: 'if', condition, thenExpression, elseExpression}, node);\n case ts.SyntaxKind.FunctionExpression:\n case ts.SyntaxKind.ArrowFunction:\n return recordEntry(errorSymbol('Lambda not supported', node), node);\n case ts.SyntaxKind.TaggedTemplateExpression:\n return recordEntry(\n errorSymbol('Tagged template expressions are not supported in metadata', node), node);\n case ts.SyntaxKind.TemplateExpression:\n const templateExpression = <ts.TemplateExpression>node;\n if (this.isFoldable(node)) {\n return templateExpression.templateSpans.reduce(\n (previous, current) => previous + <string>this.evaluateNode(current.expression) +\n <string>this.evaluateNode(current.literal),\n this.evaluateNode(templateExpression.head));\n } else {\n return templateExpression.templateSpans.reduce((previous, current) => {\n const expr = this.evaluateNode(current.expression);\n const literal = this.evaluateNode(current.literal);\n if (isFoldableError(expr)) return expr;\n if (isFoldableError(literal)) return literal;\n if (typeof previous === 'string' && typeof expr === 'string' &&\n typeof literal === 'string') {\n return previous + expr + literal;\n }\n let result = expr;\n if (previous !== '') {\n result = {__symbolic: 'binop', operator: '+', left: previous, right: expr};\n }\n if (literal != '') {\n result = {__symbolic: 'binop', operator: '+', left: result, right: literal};\n }\n return result;\n }, this.evaluateNode(templateExpression.head));\n }\n case ts.SyntaxKind.AsExpression:\n const asExpression = <ts.AsExpression>node;\n return this.evaluateNode(asExpression.expression);\n case ts.SyntaxKind.ClassExpression:\n return {__symbolic: 'class'};\n }\n return recordEntry(errorSymbol('Expression form not supported', node), node);\n }\n}\n\nfunction isPropertyAssignment(node: ts.Node): node is ts.PropertyAssignment {\n return node.kind == ts.SyntaxKind.PropertyAssignment;\n}\n\nconst empty = ts.createNodeArray<any>();\n\nfunction arrayOrEmpty<T extends ts.Node>(v: ts.NodeArray<T>| undefined): ts.NodeArray<T> {\n return v || empty;\n}"]}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/metadata/evaluator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport * as ts from 'typescript';\n\nimport {CollectorOptions} from './collector';\nimport {ClassMetadata, FunctionMetadata, InterfaceMetadata, MetadataEntry, MetadataError, MetadataImportedSymbolReferenceExpression, MetadataSourceLocationInfo, MetadataSymbolicCallExpression, MetadataValue, isMetadataError, isMetadataGlobalReferenceExpression, isMetadataImportDefaultReference, isMetadataImportedSymbolReferenceExpression, isMetadataModuleReferenceExpression, isMetadataSymbolicReferenceExpression, isMetadataSymbolicSpreadExpression} from './schema';\nimport {Symbols} from './symbols';\n\n\n\n// In TypeScript 2.1 the spread element kind was renamed.\nconst spreadElementSyntaxKind: ts.SyntaxKind =\n (ts.SyntaxKind as any).SpreadElement || (ts.SyntaxKind as any).SpreadElementExpression;\n\nfunction isMethodCallOf(callExpression: ts.CallExpression, memberName: string): boolean {\n const expression = callExpression.expression;\n if (expression.kind === ts.SyntaxKind.PropertyAccessExpression) {\n const propertyAccessExpression = <ts.PropertyAccessExpression>expression;\n const name = propertyAccessExpression.name;\n if (name.kind == ts.SyntaxKind.Identifier) {\n return name.text === memberName;\n }\n }\n return false;\n}\n\nfunction isCallOf(callExpression: ts.CallExpression, ident: string): boolean {\n const expression = callExpression.expression;\n if (expression.kind === ts.SyntaxKind.Identifier) {\n const identifier = <ts.Identifier>expression;\n return identifier.text === ident;\n }\n return false;\n}\n\n/* @internal */\nexport function recordMapEntry<T extends MetadataEntry>(\n entry: T, node: ts.Node,\n nodeMap: Map<MetadataValue|ClassMetadata|InterfaceMetadata|FunctionMetadata, ts.Node>,\n sourceFile?: ts.SourceFile) {\n if (!nodeMap.has(entry)) {\n nodeMap.set(entry, node);\n if (node && (isMetadataImportedSymbolReferenceExpression(entry) ||\n isMetadataImportDefaultReference(entry)) &&\n entry.line == null) {\n const info = sourceInfo(node, sourceFile);\n if (info.line != null) entry.line = info.line;\n if (info.character != null) entry.character = info.character;\n }\n }\n return entry;\n}\n\n/**\n * ts.forEachChild stops iterating children when the callback return a truthy value.\n * This method inverts this to implement an `every` style iterator. It will return\n * true if every call to `cb` returns `true`.\n */\nfunction everyNodeChild(node: ts.Node, cb: (node: ts.Node) => boolean) {\n return !ts.forEachChild(node, node => !cb(node));\n}\n\nexport function isPrimitive(value: any): boolean {\n return Object(value) !== value;\n}\n\nfunction isDefined(obj: any): boolean {\n return obj !== undefined;\n}\n\n// import {propertyName as name} from 'place'\n// import {name} from 'place'\nexport interface ImportSpecifierMetadata {\n name: string;\n propertyName?: string;\n}\nexport interface ImportMetadata {\n defaultName?: string; // import d from 'place'\n namespace?: string; // import * as d from 'place'\n namedImports?: ImportSpecifierMetadata[]; // import {a} from 'place'\n from: string; // from 'place'\n}\n\n\nfunction getSourceFileOfNode(node: ts.Node | undefined): ts.SourceFile {\n while (node && node.kind != ts.SyntaxKind.SourceFile) {\n node = node.parent;\n }\n return <ts.SourceFile>node;\n}\n\n/* @internal */\nexport function sourceInfo(\n node: ts.Node | undefined, sourceFile: ts.SourceFile | undefined): MetadataSourceLocationInfo {\n if (node) {\n sourceFile = sourceFile || getSourceFileOfNode(node);\n if (sourceFile) {\n return ts.getLineAndCharacterOfPosition(sourceFile, node.getStart(sourceFile));\n }\n }\n return {};\n}\n\n/* @internal */\nexport function errorSymbol(\n message: string, node?: ts.Node, context?: {[name: string]: string},\n sourceFile?: ts.SourceFile): MetadataError {\n const result: MetadataError = {__symbolic: 'error', message, ...sourceInfo(node, sourceFile)};\n if (context) {\n result.context = context;\n }\n return result;\n}\n\n/**\n * Produce a symbolic representation of an expression folding values into their final value when\n * possible.\n */\nexport class Evaluator {\n constructor(\n private symbols: Symbols, private nodeMap: Map<MetadataEntry, ts.Node>,\n private options: CollectorOptions = {},\n private recordExport?: (name: string, value: MetadataValue) => void) {}\n\n nameOf(node: ts.Node|undefined): string|MetadataError {\n if (node && node.kind == ts.SyntaxKind.Identifier) {\n return (<ts.Identifier>node).text;\n }\n const result = node && this.evaluateNode(node);\n if (isMetadataError(result) || typeof result === 'string') {\n return result;\n } else {\n return errorSymbol(\n 'Name expected', node, {received: (node && node.getText()) || '<missing>'});\n }\n }\n\n /**\n * Returns true if the expression represented by `node` can be folded into a literal expression.\n *\n * For example, a literal is always foldable. This means that literal expressions such as `1.2`\n * `\"Some value\"` `true` `false` are foldable.\n *\n * - An object literal is foldable if all the properties in the literal are foldable.\n * - An array literal is foldable if all the elements are foldable.\n * - A call is foldable if it is a call to a Array.prototype.concat or a call to CONST_EXPR.\n * - A property access is foldable if the object is foldable.\n * - A array index is foldable if index expression is foldable and the array is foldable.\n * - Binary operator expressions are foldable if the left and right expressions are foldable and\n * it is one of '+', '-', '*', '/', '%', '||', and '&&'.\n * - An identifier is foldable if a value can be found for its symbol in the evaluator symbol\n * table.\n */\n public isFoldable(node: ts.Node): boolean {\n return this.isFoldableWorker(node, new Map<ts.Node, boolean>());\n }\n\n private isFoldableWorker(node: ts.Node|undefined, folding: Map<ts.Node, boolean>): boolean {\n if (node) {\n switch (node.kind) {\n case ts.SyntaxKind.ObjectLiteralExpression:\n return everyNodeChild(node, child => {\n if (child.kind === ts.SyntaxKind.PropertyAssignment) {\n const propertyAssignment = <ts.PropertyAssignment>child;\n return this.isFoldableWorker(propertyAssignment.initializer, folding);\n }\n return false;\n });\n case ts.SyntaxKind.ArrayLiteralExpression:\n return everyNodeChild(node, child => this.isFoldableWorker(child, folding));\n case ts.SyntaxKind.CallExpression:\n const callExpression = <ts.CallExpression>node;\n // We can fold a <array>.concat(<v>).\n if (isMethodCallOf(callExpression, 'concat') &&\n arrayOrEmpty(callExpression.arguments).length === 1) {\n const arrayNode = (<ts.PropertyAccessExpression>callExpression.expression).expression;\n if (this.isFoldableWorker(arrayNode, folding) &&\n this.isFoldableWorker(callExpression.arguments[0], folding)) {\n // It needs to be an array.\n const arrayValue = this.evaluateNode(arrayNode);\n if (arrayValue && Array.isArray(arrayValue)) {\n return true;\n }\n }\n }\n\n // We can fold a call to CONST_EXPR\n if (isCallOf(callExpression, 'CONST_EXPR') &&\n arrayOrEmpty(callExpression.arguments).length === 1)\n return this.isFoldableWorker(callExpression.arguments[0], folding);\n return false;\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n case ts.SyntaxKind.NumericLiteral:\n case ts.SyntaxKind.NullKeyword:\n case ts.SyntaxKind.TrueKeyword:\n case ts.SyntaxKind.FalseKeyword:\n case ts.SyntaxKind.TemplateHead:\n case ts.SyntaxKind.TemplateMiddle:\n case ts.SyntaxKind.TemplateTail:\n return true;\n case ts.SyntaxKind.ParenthesizedExpression:\n const parenthesizedExpression = <ts.ParenthesizedExpression>node;\n return this.isFoldableWorker(parenthesizedExpression.expression, folding);\n case ts.SyntaxKind.BinaryExpression:\n const binaryExpression = <ts.BinaryExpression>node;\n switch (binaryExpression.operatorToken.kind) {\n case ts.SyntaxKind.PlusToken:\n case ts.SyntaxKind.MinusToken:\n case ts.SyntaxKind.AsteriskToken:\n case ts.SyntaxKind.SlashToken:\n case ts.SyntaxKind.PercentToken:\n case ts.SyntaxKind.AmpersandAmpersandToken:\n case ts.SyntaxKind.BarBarToken:\n return this.isFoldableWorker(binaryExpression.left, folding) &&\n this.isFoldableWorker(binaryExpression.right, folding);\n default:\n return false;\n }\n case ts.SyntaxKind.PropertyAccessExpression:\n const propertyAccessExpression = <ts.PropertyAccessExpression>node;\n return this.isFoldableWorker(propertyAccessExpression.expression, folding);\n case ts.SyntaxKind.ElementAccessExpression:\n const elementAccessExpression = <ts.ElementAccessExpression>node;\n return this.isFoldableWorker(elementAccessExpression.expression, folding) &&\n this.isFoldableWorker(elementAccessExpression.argumentExpression, folding);\n case ts.SyntaxKind.Identifier:\n let identifier = <ts.Identifier>node;\n let reference = this.symbols.resolve(identifier.text);\n if (reference !== undefined && isPrimitive(reference)) {\n return true;\n }\n break;\n case ts.SyntaxKind.TemplateExpression:\n const templateExpression = <ts.TemplateExpression>node;\n return templateExpression.templateSpans.every(\n span => this.isFoldableWorker(span.expression, folding));\n }\n }\n return false;\n }\n\n /**\n * Produce a JSON serialiable object representing `node`. The foldable values in the expression\n * tree are folded. For example, a node representing `1 + 2` is folded into `3`.\n */\n public evaluateNode(node: ts.Node, preferReference?: boolean): MetadataValue {\n const t = this;\n let error: MetadataError|undefined;\n\n function recordEntry(entry: MetadataValue, node: ts.Node): MetadataValue {\n if (t.options.substituteExpression) {\n const newEntry = t.options.substituteExpression(entry, node);\n if (t.recordExport && newEntry != entry && isMetadataGlobalReferenceExpression(newEntry)) {\n t.recordExport(newEntry.name, entry);\n }\n entry = newEntry;\n }\n return recordMapEntry(entry, node, t.nodeMap);\n }\n\n function isFoldableError(value: any): value is MetadataError {\n return !t.options.verboseInvalidExpression && isMetadataError(value);\n }\n\n const resolveName = (name: string, preferReference?: boolean): MetadataValue => {\n const reference = this.symbols.resolve(name, preferReference);\n if (reference === undefined) {\n // Encode as a global reference. StaticReflector will check the reference.\n return recordEntry({__symbolic: 'reference', name}, node);\n }\n if (reference && isMetadataSymbolicReferenceExpression(reference)) {\n return recordEntry({...reference}, node);\n }\n return reference;\n };\n\n switch (node.kind) {\n case ts.SyntaxKind.ObjectLiteralExpression:\n let obj: {[name: string]: any} = {};\n let quoted: string[] = [];\n ts.forEachChild(node, child => {\n switch (child.kind) {\n case ts.SyntaxKind.ShorthandPropertyAssignment:\n case ts.SyntaxKind.PropertyAssignment:\n const assignment = <ts.PropertyAssignment|ts.ShorthandPropertyAssignment>child;\n if (assignment.name.kind == ts.SyntaxKind.StringLiteral) {\n const name = (assignment.name as ts.StringLiteral).text;\n quoted.push(name);\n }\n const propertyName = this.nameOf(assignment.name);\n if (isFoldableError(propertyName)) {\n error = propertyName;\n return true;\n }\n const propertyValue = isPropertyAssignment(assignment) ?\n this.evaluateNode(assignment.initializer, /* preferReference */ true) :\n resolveName(propertyName, /* preferReference */ true);\n if (isFoldableError(propertyValue)) {\n error = propertyValue;\n return true; // Stop the forEachChild.\n } else {\n obj[<string>propertyName] = isPropertyAssignment(assignment) ?\n recordEntry(propertyValue, assignment.initializer) :\n propertyValue;\n }\n }\n });\n if (error) return error;\n if (this.options.quotedNames && quoted.length) {\n obj['$quoted$'] = quoted;\n }\n return recordEntry(obj, node);\n case ts.SyntaxKind.ArrayLiteralExpression:\n let arr: MetadataValue[] = [];\n ts.forEachChild(node, child => {\n const value = this.evaluateNode(child, /* preferReference */ true);\n\n // Check for error\n if (isFoldableError(value)) {\n error = value;\n return true; // Stop the forEachChild.\n }\n\n // Handle spread expressions\n if (isMetadataSymbolicSpreadExpression(value)) {\n if (Array.isArray(value.expression)) {\n for (const spreadValue of value.expression) {\n arr.push(spreadValue);\n }\n return;\n }\n }\n\n arr.push(value);\n });\n if (error) return error;\n return recordEntry(arr, node);\n case spreadElementSyntaxKind:\n let spreadExpression = this.evaluateNode((node as any).expression);\n return recordEntry({__symbolic: 'spread', expression: spreadExpression}, node);\n case ts.SyntaxKind.CallExpression:\n const callExpression = <ts.CallExpression>node;\n if (isCallOf(callExpression, 'forwardRef') &&\n arrayOrEmpty(callExpression.arguments).length === 1) {\n const firstArgument = callExpression.arguments[0];\n if (firstArgument.kind == ts.SyntaxKind.ArrowFunction) {\n const arrowFunction = <ts.ArrowFunction>firstArgument;\n return recordEntry(this.evaluateNode(arrowFunction.body), node);\n }\n }\n const args = arrayOrEmpty(callExpression.arguments).map(arg => this.evaluateNode(arg));\n if (this.isFoldable(callExpression)) {\n if (isMethodCallOf(callExpression, 'concat')) {\n const arrayValue = <MetadataValue[]>this.evaluateNode(\n (<ts.PropertyAccessExpression>callExpression.expression).expression);\n if (isFoldableError(arrayValue)) return arrayValue;\n return arrayValue.concat(args[0]);\n }\n }\n // Always fold a CONST_EXPR even if the argument is not foldable.\n if (isCallOf(callExpression, 'CONST_EXPR') &&\n arrayOrEmpty(callExpression.arguments).length === 1) {\n return recordEntry(args[0], node);\n }\n const expression = this.evaluateNode(callExpression.expression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n let result: MetadataSymbolicCallExpression = {__symbolic: 'call', expression: expression};\n if (args && args.length) {\n result.arguments = args;\n }\n return recordEntry(result, node);\n case ts.SyntaxKind.NewExpression:\n const newExpression = <ts.NewExpression>node;\n const newArgs = arrayOrEmpty(newExpression.arguments).map(arg => this.evaluateNode(arg));\n if (!this.options.verboseInvalidExpression && newArgs.some(isMetadataError)) {\n return recordEntry(newArgs.find(isMetadataError), node);\n }\n const newTarget = this.evaluateNode(newExpression.expression);\n if (isMetadataError(newTarget)) {\n return recordEntry(newTarget, node);\n }\n const call: MetadataSymbolicCallExpression = {__symbolic: 'new', expression: newTarget};\n if (newArgs.length) {\n call.arguments = newArgs;\n }\n return recordEntry(call, node);\n case ts.SyntaxKind.PropertyAccessExpression: {\n const propertyAccessExpression = <ts.PropertyAccessExpression>node;\n const expression = this.evaluateNode(propertyAccessExpression.expression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n const member = this.nameOf(propertyAccessExpression.name);\n if (isFoldableError(member)) {\n return recordEntry(member, node);\n }\n if (expression && this.isFoldable(propertyAccessExpression.expression))\n return (<any>expression)[<string>member];\n if (isMetadataModuleReferenceExpression(expression)) {\n // A select into a module reference and be converted into a reference to the symbol\n // in the module\n return recordEntry(\n {__symbolic: 'reference', module: expression.module, name: member}, node);\n }\n return recordEntry({__symbolic: 'select', expression, member}, node);\n }\n case ts.SyntaxKind.ElementAccessExpression: {\n const elementAccessExpression = <ts.ElementAccessExpression>node;\n const expression = this.evaluateNode(elementAccessExpression.expression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n if (!elementAccessExpression.argumentExpression) {\n return recordEntry(errorSymbol('Expression form not supported', node), node);\n }\n const index = this.evaluateNode(elementAccessExpression.argumentExpression);\n if (isFoldableError(expression)) {\n return recordEntry(expression, node);\n }\n if (this.isFoldable(elementAccessExpression.expression) &&\n this.isFoldable(elementAccessExpression.argumentExpression))\n return (<any>expression)[<string|number>index];\n return recordEntry({__symbolic: 'index', expression, index}, node);\n }\n case ts.SyntaxKind.Identifier:\n const identifier = <ts.Identifier>node;\n const name = identifier.text;\n return resolveName(name, preferReference);\n case ts.SyntaxKind.TypeReference:\n const typeReferenceNode = <ts.TypeReferenceNode>node;\n const typeNameNode = typeReferenceNode.typeName;\n const getReference: (typeNameNode: ts.Identifier | ts.QualifiedName) => MetadataValue =\n node => {\n if (typeNameNode.kind === ts.SyntaxKind.QualifiedName) {\n const qualifiedName = <ts.QualifiedName>node;\n const left = this.evaluateNode(qualifiedName.left);\n if (isMetadataModuleReferenceExpression(left)) {\n return recordEntry(\n <MetadataImportedSymbolReferenceExpression>{\n __symbolic: 'reference',\n module: left.module,\n name: qualifiedName.right.text\n },\n node);\n }\n // Record a type reference to a declared type as a select.\n return {__symbolic: 'select', expression: left, member: qualifiedName.right.text};\n } else {\n const identifier = <ts.Identifier>typeNameNode;\n const symbol = this.symbols.resolve(identifier.text);\n if (isFoldableError(symbol) || isMetadataSymbolicReferenceExpression(symbol)) {\n return recordEntry(symbol, node);\n }\n return recordEntry(\n errorSymbol('Could not resolve type', node, {typeName: identifier.text}), node);\n }\n };\n const typeReference = getReference(typeNameNode);\n if (isFoldableError(typeReference)) {\n return recordEntry(typeReference, node);\n }\n if (!isMetadataModuleReferenceExpression(typeReference) &&\n typeReferenceNode.typeArguments && typeReferenceNode.typeArguments.length) {\n const args = typeReferenceNode.typeArguments.map(element => this.evaluateNode(element));\n // TODO: Remove typecast when upgraded to 2.0 as it will be corretly inferred.\n // Some versions of 1.9 do not infer this correctly.\n (<MetadataImportedSymbolReferenceExpression>typeReference).arguments = args;\n }\n return recordEntry(typeReference, node);\n case ts.SyntaxKind.UnionType:\n const unionType = <ts.UnionTypeNode>node;\n\n // Remove null and undefined from the list of unions.\n const references = unionType.types\n .filter(\n n => n.kind != ts.SyntaxKind.NullKeyword &&\n n.kind != ts.SyntaxKind.UndefinedKeyword)\n .map(n => this.evaluateNode(n));\n\n // The remmaining reference must be the same. If two have type arguments consider them\n // different even if the type arguments are the same.\n let candidate: any = null;\n for (let i = 0; i < references.length; i++) {\n const reference = references[i];\n if (isMetadataSymbolicReferenceExpression(reference)) {\n if (candidate) {\n if ((reference as any).name == candidate.name &&\n (reference as any).module == candidate.module && !(reference as any).arguments) {\n candidate = reference;\n }\n } else {\n candidate = reference;\n }\n } else {\n return reference;\n }\n }\n if (candidate) return candidate;\n break;\n case ts.SyntaxKind.NoSubstitutionTemplateLiteral:\n case ts.SyntaxKind.StringLiteral:\n case ts.SyntaxKind.TemplateHead:\n case ts.SyntaxKind.TemplateTail:\n case ts.SyntaxKind.TemplateMiddle:\n return (<ts.LiteralLikeNode>node).text;\n case ts.SyntaxKind.NumericLiteral:\n return parseFloat((<ts.LiteralExpression>node).text);\n case ts.SyntaxKind.AnyKeyword:\n return recordEntry({__symbolic: 'reference', name: 'any'}, node);\n case ts.SyntaxKind.StringKeyword:\n return recordEntry({__symbolic: 'reference', name: 'string'}, node);\n case ts.SyntaxKind.NumberKeyword:\n return recordEntry({__symbolic: 'reference', name: 'number'}, node);\n case ts.SyntaxKind.BooleanKeyword:\n return recordEntry({__symbolic: 'reference', name: 'boolean'}, node);\n case ts.SyntaxKind.ArrayType:\n const arrayTypeNode = <ts.ArrayTypeNode>node;\n return recordEntry(\n {\n __symbolic: 'reference',\n name: 'Array',\n arguments: [this.evaluateNode(arrayTypeNode.elementType)]\n },\n node);\n case ts.SyntaxKind.NullKeyword:\n return null;\n case ts.SyntaxKind.TrueKeyword:\n return true;\n case ts.SyntaxKind.FalseKeyword:\n return false;\n case ts.SyntaxKind.ParenthesizedExpression:\n const parenthesizedExpression = <ts.ParenthesizedExpression>node;\n return this.evaluateNode(parenthesizedExpression.expression);\n case ts.SyntaxKind.TypeAssertionExpression:\n const typeAssertion = <ts.TypeAssertion>node;\n return this.evaluateNode(typeAssertion.expression);\n case ts.SyntaxKind.PrefixUnaryExpression:\n const prefixUnaryExpression = <ts.PrefixUnaryExpression>node;\n const operand = this.evaluateNode(prefixUnaryExpression.operand);\n if (isDefined(operand) && isPrimitive(operand)) {\n switch (prefixUnaryExpression.operator) {\n case ts.SyntaxKind.PlusToken:\n return +(operand as any);\n case ts.SyntaxKind.MinusToken:\n return -(operand as any);\n case ts.SyntaxKind.TildeToken:\n return ~(operand as any);\n case ts.SyntaxKind.ExclamationToken:\n return !operand;\n }\n }\n let operatorText: string;\n switch (prefixUnaryExpression.operator) {\n case ts.SyntaxKind.PlusToken:\n operatorText = '+';\n break;\n case ts.SyntaxKind.MinusToken:\n operatorText = '-';\n break;\n case ts.SyntaxKind.TildeToken:\n operatorText = '~';\n break;\n case ts.SyntaxKind.ExclamationToken:\n operatorText = '!';\n break;\n default:\n return undefined;\n }\n return recordEntry({__symbolic: 'pre', operator: operatorText, operand: operand}, node);\n case ts.SyntaxKind.BinaryExpression:\n const binaryExpression = <ts.BinaryExpression>node;\n const left = this.evaluateNode(binaryExpression.left);\n const right = this.evaluateNode(binaryExpression.right);\n if (isDefined(left) && isDefined(right)) {\n if (isPrimitive(left) && isPrimitive(right))\n switch (binaryExpression.operatorToken.kind) {\n case ts.SyntaxKind.BarBarToken:\n return <any>left || <any>right;\n case ts.SyntaxKind.AmpersandAmpersandToken:\n return <any>left && <any>right;\n case ts.SyntaxKind.AmpersandToken:\n return <any>left & <any>right;\n case ts.SyntaxKind.BarToken:\n return <any>left | <any>right;\n case ts.SyntaxKind.CaretToken:\n return <any>left ^ <any>right;\n case ts.SyntaxKind.EqualsEqualsToken:\n return <any>left == <any>right;\n case ts.SyntaxKind.ExclamationEqualsToken:\n return <any>left != <any>right;\n case ts.SyntaxKind.EqualsEqualsEqualsToken:\n return <any>left === <any>right;\n case ts.SyntaxKind.ExclamationEqualsEqualsToken:\n return <any>left !== <any>right;\n case ts.SyntaxKind.LessThanToken:\n return <any>left < <any>right;\n case ts.SyntaxKind.GreaterThanToken:\n return <any>left > <any>right;\n case ts.SyntaxKind.LessThanEqualsToken:\n return <any>left <= <any>right;\n case ts.SyntaxKind.GreaterThanEqualsToken:\n return <any>left >= <any>right;\n case ts.SyntaxKind.LessThanLessThanToken:\n return (<any>left) << (<any>right);\n case ts.SyntaxKind.GreaterThanGreaterThanToken:\n return <any>left >> <any>right;\n case ts.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:\n return <any>left >>> <any>right;\n case ts.SyntaxKind.PlusToken:\n return <any>left + <any>right;\n case ts.SyntaxKind.MinusToken:\n return <any>left - <any>right;\n case ts.SyntaxKind.AsteriskToken:\n return <any>left * <any>right;\n case ts.SyntaxKind.SlashToken:\n return <any>left / <any>right;\n case ts.SyntaxKind.PercentToken:\n return <any>left % <any>right;\n }\n return recordEntry(\n {\n __symbolic: 'binop',\n operator: binaryExpression.operatorToken.getText(),\n left: left,\n right: right\n },\n node);\n }\n break;\n case ts.SyntaxKind.ConditionalExpression:\n const conditionalExpression = <ts.ConditionalExpression>node;\n const condition = this.evaluateNode(conditionalExpression.condition);\n const thenExpression = this.evaluateNode(conditionalExpression.whenTrue);\n const elseExpression = this.evaluateNode(conditionalExpression.whenFalse);\n if (isPrimitive(condition)) {\n return condition ? thenExpression : elseExpression;\n }\n return recordEntry({__symbolic: 'if', condition, thenExpression, elseExpression}, node);\n case ts.SyntaxKind.FunctionExpression:\n case ts.SyntaxKind.ArrowFunction:\n return recordEntry(errorSymbol('Lambda not supported', node), node);\n case ts.SyntaxKind.TaggedTemplateExpression:\n return recordEntry(\n errorSymbol('Tagged template expressions are not supported in metadata', node), node);\n case ts.SyntaxKind.TemplateExpression:\n const templateExpression = <ts.TemplateExpression>node;\n if (this.isFoldable(node)) {\n return templateExpression.templateSpans.reduce(\n (previous, current) => previous + <string>this.evaluateNode(current.expression) +\n <string>this.evaluateNode(current.literal),\n this.evaluateNode(templateExpression.head));\n } else {\n return templateExpression.templateSpans.reduce((previous, current) => {\n const expr = this.evaluateNode(current.expression);\n const literal = this.evaluateNode(current.literal);\n if (isFoldableError(expr)) return expr;\n if (isFoldableError(literal)) return literal;\n if (typeof previous === 'string' && typeof expr === 'string' &&\n typeof literal === 'string') {\n return previous + expr + literal;\n }\n let result = expr;\n if (previous !== '') {\n result = {__symbolic: 'binop', operator: '+', left: previous, right: expr};\n }\n if (literal != '') {\n result = {__symbolic: 'binop', operator: '+', left: result, right: literal};\n }\n return result;\n }, this.evaluateNode(templateExpression.head));\n }\n case ts.SyntaxKind.AsExpression:\n const asExpression = <ts.AsExpression>node;\n return this.evaluateNode(asExpression.expression);\n case ts.SyntaxKind.ClassExpression:\n return {__symbolic: 'class'};\n }\n return recordEntry(errorSymbol('Expression form not supported', node), node);\n }\n}\n\nfunction isPropertyAssignment(node: ts.Node): node is ts.PropertyAssignment {\n return node.kind == ts.SyntaxKind.PropertyAssignment;\n}\n\nconst empty = ts.createNodeArray<any>();\n\nfunction arrayOrEmpty<T extends ts.Node>(v: ts.NodeArray<T>| undefined): ts.NodeArray<T> {\n return v || empty;\n}"]}
@@ -199,7 +199,12 @@ var TsCompilerAotCompilerTypeCheckHostAdapter = /** @class */ (function () {
199
199
  resourceName = "./" + resourceName;
200
200
  }
201
201
  var filePathWithNgResource = this.moduleNameToFileName(addNgResourceSuffix(resourceName), containingFile);
202
- return filePathWithNgResource ? stripNgResourceSuffix(filePathWithNgResource) : null;
202
+ var result = filePathWithNgResource ? stripNgResourceSuffix(filePathWithNgResource) : null;
203
+ // Used under Bazel to report more specific error with remediation advice
204
+ if (!result && this.context.reportMissingResource) {
205
+ this.context.reportMissingResource(resourceName);
206
+ }
207
+ return result;
203
208
  };
204
209
  TsCompilerAotCompilerTypeCheckHostAdapter.prototype.toSummaryFileName = function (fileName, referringSrcFileName) {
205
210
  return this.fileNameToModuleName(fileName, referringSrcFileName);
@@ -1 +1 @@
1
- {"version":3,"file":"compiler_host.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/transformers/compiler_host.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AotCompilerHost, EmitterVisitorContext, ExternalReference, GeneratedFile, ParseSourceSpan, TypeScriptEmitter, collectExternalReferences, syntaxError} from '@angular/compiler';\nimport * as path from 'path';\nimport * as ts from 'typescript';\n\nimport {TypeCheckHost} from '../diagnostics/translate_diagnostics';\nimport {METADATA_VERSION, ModuleMetadata} from '../metadata/index';\n\nimport {CompilerHost, CompilerOptions, LibrarySummary} from './api';\nimport {MetadataReaderHost, createMetadataReaderCache, readMetadata} from './metadata_reader';\nimport {DTS, GENERATED_FILES, isInRootDir, relativeToRootDirs} from './util';\n\nconst NODE_MODULES_PACKAGE_NAME = /node_modules\\/((\\w|-)+|(@(\\w|-)+\\/(\\w|-)+))/;\nconst EXT = /(\\.ts|\\.d\\.ts|\\.js|\\.jsx|\\.tsx)$/;\n\nexport function createCompilerHost(\n {options, tsHost = ts.createCompilerHost(options, true)}:\n {options: CompilerOptions, tsHost?: ts.CompilerHost}): CompilerHost {\n return tsHost;\n}\n\nexport interface MetadataProvider {\n getMetadata(sourceFile: ts.SourceFile): ModuleMetadata|undefined;\n}\n\ninterface GenSourceFile {\n externalReferences: Set<string>;\n sourceFile: ts.SourceFile;\n emitCtx: EmitterVisitorContext;\n}\n\nexport interface CodeGenerator {\n generateFile(genFileName: string, baseFileName?: string): GeneratedFile;\n findGeneratedFileNames(fileName: string): string[];\n}\n\nfunction assert<T>(condition: T | null | undefined) {\n if (!condition) {\n // TODO(chuckjaz): do the right thing\n }\n return condition !;\n}\n\n/**\n * Implements the following hosts based on an api.CompilerHost:\n * - ts.CompilerHost to be consumed by a ts.Program\n * - AotCompilerHost for @angular/compiler\n * - TypeCheckHost for mapping ts errors to ng errors (via translateDiagnostics)\n */\nexport class TsCompilerAotCompilerTypeCheckHostAdapter implements ts.CompilerHost, AotCompilerHost,\n TypeCheckHost {\n private metadataReaderCache = createMetadataReaderCache();\n private flatModuleIndexCache = new Map<string, boolean>();\n private flatModuleIndexNames = new Set<string>();\n private flatModuleIndexRedirectNames = new Set<string>();\n private rootDirs: string[];\n private moduleResolutionCache: ts.ModuleResolutionCache;\n private originalSourceFiles = new Map<string, ts.SourceFile|null>();\n private originalFileExistsCache = new Map<string, boolean>();\n private generatedSourceFiles = new Map<string, GenSourceFile>();\n private generatedCodeFor = new Map<string, string[]>();\n private emitter = new TypeScriptEmitter();\n private metadataReaderHost: MetadataReaderHost;\n\n getCancellationToken: () => ts.CancellationToken;\n getDefaultLibLocation: () => string;\n trace: (s: string) => void;\n getDirectories: (path: string) => string[];\n directoryExists?: (directoryName: string) => boolean;\n\n constructor(\n private rootFiles: ReadonlyArray<string>, private options: CompilerOptions,\n private context: CompilerHost, private metadataProvider: MetadataProvider,\n private codeGenerator: CodeGenerator,\n private librarySummaries = new Map<string, LibrarySummary>()) {\n this.moduleResolutionCache = ts.createModuleResolutionCache(\n this.context.getCurrentDirectory !(), this.context.getCanonicalFileName.bind(this.context));\n const basePath = this.options.basePath !;\n this.rootDirs =\n (this.options.rootDirs || [this.options.basePath !]).map(p => path.resolve(basePath, p));\n if (context.getDirectories) {\n this.getDirectories = path => context.getDirectories !(path);\n }\n if (context.directoryExists) {\n this.directoryExists = directoryName => context.directoryExists !(directoryName);\n }\n if (context.getCancellationToken) {\n this.getCancellationToken = () => context.getCancellationToken !();\n }\n if (context.getDefaultLibLocation) {\n this.getDefaultLibLocation = () => context.getDefaultLibLocation !();\n }\n if (context.trace) {\n this.trace = s => context.trace !(s);\n }\n if (context.fileNameToModuleName) {\n this.fileNameToModuleName = context.fileNameToModuleName.bind(context);\n }\n // Note: don't copy over context.moduleNameToFileName as we first\n // normalize undefined containingFile to a filled containingFile.\n if (context.resourceNameToFileName) {\n this.resourceNameToFileName = context.resourceNameToFileName.bind(context);\n }\n if (context.toSummaryFileName) {\n this.toSummaryFileName = context.toSummaryFileName.bind(context);\n }\n if (context.fromSummaryFileName) {\n this.fromSummaryFileName = context.fromSummaryFileName.bind(context);\n }\n this.metadataReaderHost = {\n cacheMetadata: () => true,\n getSourceFileMetadata: (filePath) => {\n const sf = this.getOriginalSourceFile(filePath);\n return sf ? this.metadataProvider.getMetadata(sf) : undefined;\n },\n fileExists: (filePath) => this.originalFileExists(filePath),\n readFile: (filePath) => assert(this.context.readFile(filePath)),\n };\n }\n\n private resolveModuleName(moduleName: string, containingFile: string): ts.ResolvedModule\n |undefined {\n const rm = ts.resolveModuleName(\n moduleName, containingFile.replace(/\\\\/g, '/'), this.options, this,\n this.moduleResolutionCache)\n .resolvedModule;\n if (rm && this.isSourceFile(rm.resolvedFileName) && DTS.test(rm.resolvedFileName)) {\n // Case: generateCodeForLibraries = true and moduleName is\n // a .d.ts file in a node_modules folder.\n // Need to set isExternalLibraryImport to false so that generated files for that file\n // are emitted.\n rm.isExternalLibraryImport = false;\n }\n return rm;\n }\n\n // Note: We implement this method so that TypeScript and Angular share the same\n // ts.ModuleResolutionCache\n // and that we can tell ts.Program about our different opinion about\n // ResolvedModule.isExternalLibraryImport\n // (see our isSourceFile method).\n resolveModuleNames(moduleNames: string[], containingFile: string): ts.ResolvedModule[] {\n // TODO(tbosch): this seems to be a typing error in TypeScript,\n // as it contains assertions that the result contains the same number of entries\n // as the given module names.\n return <ts.ResolvedModule[]>moduleNames.map(\n moduleName => this.resolveModuleName(moduleName, containingFile));\n }\n\n moduleNameToFileName(m: string, containingFile?: string): string|null {\n if (!containingFile) {\n if (m.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 = this.rootFiles[0];\n }\n if (this.context.moduleNameToFileName) {\n return this.context.moduleNameToFileName(m, containingFile);\n }\n const resolved = this.resolveModuleName(m, containingFile);\n return resolved ? resolved.resolvedFileName : null;\n }\n\n /**\n * We want a moduleId that will appear in import statements in the generated code\n * which will be written to `containingFile`.\n *\n * Note that we also generate files for files in node_modules, as libraries\n * only ship .metadata.json files but not the generated code.\n *\n * Logic:\n * 1. if the importedFile and the containingFile are from the project sources\n * or from the same node_modules package, use a relative path\n * 2. if the importedFile is in a node_modules package,\n * use a path that starts with the package name.\n * 3. Error if the containingFile is in the node_modules package\n * and the importedFile is in the project soures,\n * as that is a violation of the principle that node_modules packages cannot\n * import project sources.\n */\n fileNameToModuleName(importedFile: string, containingFile: string): string {\n const originalImportedFile = importedFile;\n if (this.options.traceResolution) {\n console.error(\n 'fileNameToModuleName from containingFile', containingFile, 'to importedFile',\n importedFile);\n }\n\n // drop extension\n importedFile = importedFile.replace(EXT, '');\n const importedFilePackagName = getPackageName(importedFile);\n const containingFilePackageName = getPackageName(containingFile);\n\n let moduleName: string;\n if (importedFilePackagName === containingFilePackageName ||\n GENERATED_FILES.test(originalImportedFile)) {\n const rootedContainingFile = relativeToRootDirs(containingFile, this.rootDirs);\n const rootedImportedFile = relativeToRootDirs(importedFile, this.rootDirs);\n\n if (rootedContainingFile !== containingFile && rootedImportedFile !== importedFile) {\n // if both files are contained in the `rootDirs`, then strip the rootDirs\n containingFile = rootedContainingFile;\n importedFile = rootedImportedFile;\n }\n moduleName = dotRelative(path.dirname(containingFile), importedFile);\n } else if (importedFilePackagName) {\n moduleName = stripNodeModulesPrefix(importedFile);\n } else {\n throw new Error(\n `Trying to import a source file from a node_modules package: import ${originalImportedFile} from ${containingFile}`);\n }\n return moduleName;\n }\n\n resourceNameToFileName(resourceName: string, containingFile: string): string|null {\n // Note: we convert package paths into relative paths to be compatible with the the\n // previous implementation of UrlResolver.\n const firstChar = resourceName[0];\n if (firstChar === '/') {\n resourceName = resourceName.slice(1);\n } else if (firstChar !== '.') {\n resourceName = `./${resourceName}`;\n }\n const filePathWithNgResource =\n this.moduleNameToFileName(addNgResourceSuffix(resourceName), containingFile);\n return filePathWithNgResource ? stripNgResourceSuffix(filePathWithNgResource) : null;\n }\n\n toSummaryFileName(fileName: string, referringSrcFileName: string): string {\n return this.fileNameToModuleName(fileName, referringSrcFileName);\n }\n\n fromSummaryFileName(fileName: string, referringLibFileName: string): string {\n const resolved = this.moduleNameToFileName(fileName, referringLibFileName);\n if (!resolved) {\n throw new Error(`Could not resolve ${fileName} from ${referringLibFileName}`);\n }\n return resolved;\n }\n\n parseSourceSpanOf(fileName: string, line: number, character: number): ParseSourceSpan|null {\n const data = this.generatedSourceFiles.get(fileName);\n if (data && data.emitCtx) {\n return data.emitCtx.spanOf(line, character);\n }\n return null;\n }\n\n private getOriginalSourceFile(\n filePath: string, languageVersion?: ts.ScriptTarget,\n onError?: ((message: string) => void)|undefined): ts.SourceFile|null {\n // Note: we need the explicit check via `has` as we also cache results\n // that were null / undefined.\n if (this.originalSourceFiles.has(filePath)) {\n return this.originalSourceFiles.get(filePath) !;\n }\n if (!languageVersion) {\n languageVersion = this.options.target || ts.ScriptTarget.Latest;\n }\n // Note: This can also return undefined,\n // as the TS typings are not correct!\n const sf = this.context.getSourceFile(filePath, languageVersion, onError) || null;\n this.originalSourceFiles.set(filePath, sf);\n return sf;\n }\n\n updateGeneratedFile(genFile: GeneratedFile): ts.SourceFile {\n if (!genFile.stmts) {\n throw new Error(\n `Invalid Argument: Expected a GenerateFile with statements. ${genFile.genFileUrl}`);\n }\n const oldGenFile = this.generatedSourceFiles.get(genFile.genFileUrl);\n if (!oldGenFile) {\n throw new Error(`Illegal State: previous GeneratedFile not found for ${genFile.genFileUrl}.`);\n }\n const newRefs = genFileExternalReferences(genFile);\n const oldRefs = oldGenFile.externalReferences;\n let refsAreEqual = oldRefs.size === newRefs.size;\n if (refsAreEqual) {\n newRefs.forEach(r => refsAreEqual = refsAreEqual && oldRefs.has(r));\n }\n if (!refsAreEqual) {\n throw new Error(\n `Illegal State: external references changed in ${genFile.genFileUrl}.\\nOld: ${Array.from(oldRefs)}.\\nNew: ${Array.from(newRefs)}`);\n }\n return this.addGeneratedFile(genFile, newRefs);\n }\n\n private addGeneratedFile(genFile: GeneratedFile, externalReferences: Set<string>): ts.SourceFile {\n if (!genFile.stmts) {\n throw new Error(\n `Invalid Argument: Expected a GenerateFile with statements. ${genFile.genFileUrl}`);\n }\n const {sourceText, context} = this.emitter.emitStatementsAndContext(\n genFile.genFileUrl, genFile.stmts, /* preamble */ '',\n /* emitSourceMaps */ false);\n const sf = ts.createSourceFile(\n genFile.genFileUrl, sourceText, this.options.target || ts.ScriptTarget.Latest);\n if ((this.options.module === ts.ModuleKind.AMD || this.options.module === ts.ModuleKind.UMD) &&\n this.context.amdModuleName) {\n const moduleName = this.context.amdModuleName(sf);\n if (moduleName) sf.moduleName = moduleName;\n }\n this.generatedSourceFiles.set(genFile.genFileUrl, {\n sourceFile: sf,\n emitCtx: context, externalReferences,\n });\n return sf;\n }\n\n shouldGenerateFile(fileName: string): {generate: boolean, baseFileName?: string} {\n // TODO(tbosch): allow generating files that are not in the rootDir\n // See https://github.com/angular/angular/issues/19337\n if (!isInRootDir(fileName, this.options)) {\n return {generate: false};\n }\n const genMatch = GENERATED_FILES.exec(fileName);\n if (!genMatch) {\n return {generate: false};\n }\n const [, base, genSuffix, suffix] = genMatch;\n if (suffix !== 'ts' && suffix !== 'tsx') {\n return {generate: false};\n }\n let baseFileName: string|undefined;\n if (genSuffix.indexOf('ngstyle') >= 0) {\n // Note: ngstyle files have names like `afile.css.ngstyle.ts`\n if (!this.originalFileExists(base)) {\n return {generate: false};\n }\n } else {\n // Note: on-the-fly generated files always have a `.ts` suffix,\n // but the file from which we generated it can be a `.ts`/ `.tsx`/ `.d.ts`\n // (see options.generateCodeForLibraries).\n baseFileName = [`${base}.ts`, `${base}.tsx`, `${base}.d.ts`].find(\n baseFileName => this.isSourceFile(baseFileName) && this.originalFileExists(baseFileName));\n if (!baseFileName) {\n return {generate: false};\n }\n }\n return {generate: true, baseFileName};\n }\n\n shouldGenerateFilesFor(fileName: string) {\n // TODO(tbosch): allow generating files that are not in the rootDir\n // See https://github.com/angular/angular/issues/19337\n return !GENERATED_FILES.test(fileName) && this.isSourceFile(fileName) &&\n isInRootDir(fileName, this.options);\n }\n\n getSourceFile(\n fileName: string, languageVersion: ts.ScriptTarget,\n onError?: ((message: string) => void)|undefined): ts.SourceFile {\n // Note: Don't exit early in this method to make sure\n // we always have up to date references on the file!\n let genFileNames: string[] = [];\n let sf = this.getGeneratedFile(fileName);\n if (!sf) {\n const summary = this.librarySummaries.get(fileName);\n if (summary) {\n if (!summary.sourceFile) {\n summary.sourceFile = ts.createSourceFile(\n fileName, summary.text, this.options.target || ts.ScriptTarget.Latest);\n }\n sf = summary.sourceFile;\n genFileNames = [];\n }\n }\n if (!sf) {\n sf = this.getOriginalSourceFile(fileName);\n const cachedGenFiles = this.generatedCodeFor.get(fileName);\n if (cachedGenFiles) {\n genFileNames = cachedGenFiles;\n } else {\n if (!this.options.noResolve && this.shouldGenerateFilesFor(fileName)) {\n genFileNames = this.codeGenerator.findGeneratedFileNames(fileName).filter(\n fileName => this.shouldGenerateFile(fileName).generate);\n }\n this.generatedCodeFor.set(fileName, genFileNames);\n }\n }\n if (sf) {\n addReferencesToSourceFile(sf, genFileNames);\n }\n // TODO(tbosch): TypeScript's typings for getSourceFile are incorrect,\n // as it can very well return undefined.\n return sf !;\n }\n\n private getGeneratedFile(fileName: string): ts.SourceFile|null {\n const genSrcFile = this.generatedSourceFiles.get(fileName);\n if (genSrcFile) {\n return genSrcFile.sourceFile;\n }\n const {generate, baseFileName} = this.shouldGenerateFile(fileName);\n if (generate) {\n const genFile = this.codeGenerator.generateFile(fileName, baseFileName);\n return this.addGeneratedFile(genFile, genFileExternalReferences(genFile));\n }\n return null;\n }\n\n private originalFileExists(fileName: string): boolean {\n let fileExists = this.originalFileExistsCache.get(fileName);\n if (fileExists == null) {\n fileExists = this.context.fileExists(fileName);\n this.originalFileExistsCache.set(fileName, fileExists);\n }\n return fileExists;\n }\n\n fileExists(fileName: string): boolean {\n fileName = stripNgResourceSuffix(fileName);\n if (this.librarySummaries.has(fileName) || this.generatedSourceFiles.has(fileName)) {\n return true;\n }\n if (this.shouldGenerateFile(fileName).generate) {\n return true;\n }\n return this.originalFileExists(fileName);\n }\n\n loadSummary(filePath: string): string|null {\n const summary = this.librarySummaries.get(filePath);\n if (summary) {\n return summary.text;\n }\n if (this.originalFileExists(filePath)) {\n return assert(this.context.readFile(filePath));\n }\n return null;\n }\n\n isSourceFile(filePath: string): boolean {\n // Don't generate any files nor typecheck them\n // if skipTemplateCodegen is set and fullTemplateTypeCheck is not yet set,\n // for backwards compatibility.\n if (this.options.skipTemplateCodegen && !this.options.fullTemplateTypeCheck) {\n return false;\n }\n // If we have a summary from a previous compilation,\n // treat the file never as a source file.\n if (this.librarySummaries.has(filePath)) {\n return false;\n }\n if (GENERATED_FILES.test(filePath)) {\n return false;\n }\n if (this.options.generateCodeForLibraries === false && DTS.test(filePath)) {\n return false;\n }\n if (DTS.test(filePath)) {\n // Check for a bundle index.\n if (this.hasBundleIndex(filePath)) {\n const normalFilePath = path.normalize(filePath);\n return this.flatModuleIndexNames.has(normalFilePath) ||\n this.flatModuleIndexRedirectNames.has(normalFilePath);\n }\n }\n return true;\n }\n\n readFile(fileName: string) {\n const summary = this.librarySummaries.get(fileName);\n if (summary) {\n return summary.text;\n }\n return this.context.readFile(fileName);\n }\n\n getMetadataFor(filePath: string): ModuleMetadata[]|undefined {\n return readMetadata(filePath, this.metadataReaderHost, this.metadataReaderCache);\n }\n\n loadResource(filePath: string): Promise<string>|string {\n if (this.context.readResource) return this.context.readResource(filePath);\n if (!this.originalFileExists(filePath)) {\n throw syntaxError(`Error: Resource file not found: ${filePath}`);\n }\n return assert(this.context.readFile(filePath));\n }\n\n getOutputName(filePath: string): string {\n return path.relative(this.getCurrentDirectory(), filePath);\n }\n\n private hasBundleIndex(filePath: string): boolean {\n const checkBundleIndex = (directory: string): boolean => {\n let result = this.flatModuleIndexCache.get(directory);\n if (result == null) {\n if (path.basename(directory) == 'node_module') {\n // Don't look outside the node_modules this package is installed in.\n result = false;\n } else {\n // A bundle index exists if the typings .d.ts file has a metadata.json that has an\n // importAs.\n try {\n const packageFile = path.join(directory, 'package.json');\n if (this.originalFileExists(packageFile)) {\n // Once we see a package.json file, assume false until it we find the bundle index.\n result = false;\n const packageContent: any = JSON.parse(assert(this.context.readFile(packageFile)));\n if (packageContent.typings) {\n const typings = path.normalize(path.join(directory, packageContent.typings));\n if (DTS.test(typings)) {\n const metadataFile = typings.replace(DTS, '.metadata.json');\n if (this.originalFileExists(metadataFile)) {\n const metadata = JSON.parse(assert(this.context.readFile(metadataFile)));\n if (metadata.flatModuleIndexRedirect) {\n this.flatModuleIndexRedirectNames.add(typings);\n // Note: don't set result = true,\n // as this would mark this folder\n // as having a bundleIndex too early without\n // filling the bundleIndexNames.\n } else if (metadata.importAs) {\n this.flatModuleIndexNames.add(typings);\n result = true;\n }\n }\n }\n }\n } else {\n const parent = path.dirname(directory);\n if (parent != directory) {\n // Try the parent directory.\n result = checkBundleIndex(parent);\n } else {\n result = false;\n }\n }\n } catch (e) {\n // If we encounter any errors assume we this isn't a bundle index.\n result = false;\n }\n }\n this.flatModuleIndexCache.set(directory, result);\n }\n return result;\n };\n\n return checkBundleIndex(path.dirname(filePath));\n }\n\n getDefaultLibFileName = (options: ts.CompilerOptions) =>\n this.context.getDefaultLibFileName(options)\n getCurrentDirectory = () => this.context.getCurrentDirectory();\n getCanonicalFileName = (fileName: string) => this.context.getCanonicalFileName(fileName);\n useCaseSensitiveFileNames = () => this.context.useCaseSensitiveFileNames();\n getNewLine = () => this.context.getNewLine();\n // Make sure we do not `host.realpath()` from TS as we do not want to resolve symlinks.\n // https://github.com/Microsoft/TypeScript/issues/9552\n realPath = (p: string) => p;\n writeFile = this.context.writeFile.bind(this.context);\n}\n\nfunction genFileExternalReferences(genFile: GeneratedFile): Set<string> {\n return new Set(collectExternalReferences(genFile.stmts !).map(er => er.moduleName !));\n}\n\nfunction addReferencesToSourceFile(sf: ts.SourceFile, genFileNames: string[]) {\n // Note: as we modify ts.SourceFiles we need to keep the original\n // value for `referencedFiles` around in cache the original host is caching ts.SourceFiles.\n // Note: cloning the ts.SourceFile is expensive as the nodes in have parent pointers,\n // i.e. we would also need to clone and adjust all nodes.\n let originalReferencedFiles: ReadonlyArray<ts.FileReference> =\n (sf as any).originalReferencedFiles;\n if (!originalReferencedFiles) {\n originalReferencedFiles = sf.referencedFiles;\n (sf as any).originalReferencedFiles = originalReferencedFiles;\n }\n const newReferencedFiles = [...originalReferencedFiles];\n genFileNames.forEach(gf => newReferencedFiles.push({fileName: gf, pos: 0, end: 0}));\n sf.referencedFiles = newReferencedFiles;\n}\n\nexport function getOriginalReferences(sourceFile: ts.SourceFile): ts.FileReference[]|undefined {\n return sourceFile && (sourceFile as any).originalReferencedFiles;\n}\n\nfunction dotRelative(from: string, to: string): string {\n const rPath: string = path.relative(from, to).replace(/\\\\/g, '/');\n return rPath.startsWith('.') ? rPath : './' + rPath;\n}\n\n/**\n * Moves the path into `genDir` folder while preserving the `node_modules` directory.\n */\nfunction getPackageName(filePath: string): string|null {\n const match = NODE_MODULES_PACKAGE_NAME.exec(filePath);\n return match ? match[1] : null;\n}\n\nfunction stripNodeModulesPrefix(filePath: string): string {\n return filePath.replace(/.*node_modules\\//, '');\n}\n\nfunction getNodeModulesPrefix(filePath: string): string|null {\n const match = /.*node_modules\\//.exec(filePath);\n return match ? match[1] : null;\n}\n\nfunction stripNgResourceSuffix(fileName: string): string {\n return fileName.replace(/\\.\\$ngresource\\$.*/, '');\n}\n\nfunction addNgResourceSuffix(fileName: string): string {\n return `${fileName}.$ngresource$`;\n}\n"]}
1
+ {"version":3,"file":"compiler_host.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/transformers/compiler_host.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {AotCompilerHost, EmitterVisitorContext, ExternalReference, GeneratedFile, ParseSourceSpan, TypeScriptEmitter, collectExternalReferences, syntaxError} from '@angular/compiler';\nimport * as path from 'path';\nimport * as ts from 'typescript';\n\nimport {TypeCheckHost} from '../diagnostics/translate_diagnostics';\nimport {METADATA_VERSION, ModuleMetadata} from '../metadata/index';\n\nimport {CompilerHost, CompilerOptions, LibrarySummary} from './api';\nimport {MetadataReaderHost, createMetadataReaderCache, readMetadata} from './metadata_reader';\nimport {DTS, GENERATED_FILES, isInRootDir, relativeToRootDirs} from './util';\n\nconst NODE_MODULES_PACKAGE_NAME = /node_modules\\/((\\w|-)+|(@(\\w|-)+\\/(\\w|-)+))/;\nconst EXT = /(\\.ts|\\.d\\.ts|\\.js|\\.jsx|\\.tsx)$/;\n\nexport function createCompilerHost(\n {options, tsHost = ts.createCompilerHost(options, true)}:\n {options: CompilerOptions, tsHost?: ts.CompilerHost}): CompilerHost {\n return tsHost;\n}\n\nexport interface MetadataProvider {\n getMetadata(sourceFile: ts.SourceFile): ModuleMetadata|undefined;\n}\n\ninterface GenSourceFile {\n externalReferences: Set<string>;\n sourceFile: ts.SourceFile;\n emitCtx: EmitterVisitorContext;\n}\n\nexport interface CodeGenerator {\n generateFile(genFileName: string, baseFileName?: string): GeneratedFile;\n findGeneratedFileNames(fileName: string): string[];\n}\n\nfunction assert<T>(condition: T | null | undefined) {\n if (!condition) {\n // TODO(chuckjaz): do the right thing\n }\n return condition !;\n}\n\n/**\n * Implements the following hosts based on an api.CompilerHost:\n * - ts.CompilerHost to be consumed by a ts.Program\n * - AotCompilerHost for @angular/compiler\n * - TypeCheckHost for mapping ts errors to ng errors (via translateDiagnostics)\n */\nexport class TsCompilerAotCompilerTypeCheckHostAdapter implements ts.CompilerHost, AotCompilerHost,\n TypeCheckHost {\n private metadataReaderCache = createMetadataReaderCache();\n private flatModuleIndexCache = new Map<string, boolean>();\n private flatModuleIndexNames = new Set<string>();\n private flatModuleIndexRedirectNames = new Set<string>();\n private rootDirs: string[];\n private moduleResolutionCache: ts.ModuleResolutionCache;\n private originalSourceFiles = new Map<string, ts.SourceFile|null>();\n private originalFileExistsCache = new Map<string, boolean>();\n private generatedSourceFiles = new Map<string, GenSourceFile>();\n private generatedCodeFor = new Map<string, string[]>();\n private emitter = new TypeScriptEmitter();\n private metadataReaderHost: MetadataReaderHost;\n\n getCancellationToken: () => ts.CancellationToken;\n getDefaultLibLocation: () => string;\n trace: (s: string) => void;\n getDirectories: (path: string) => string[];\n directoryExists?: (directoryName: string) => boolean;\n\n constructor(\n private rootFiles: ReadonlyArray<string>, private options: CompilerOptions,\n private context: CompilerHost, private metadataProvider: MetadataProvider,\n private codeGenerator: CodeGenerator,\n private librarySummaries = new Map<string, LibrarySummary>()) {\n this.moduleResolutionCache = ts.createModuleResolutionCache(\n this.context.getCurrentDirectory !(), this.context.getCanonicalFileName.bind(this.context));\n const basePath = this.options.basePath !;\n this.rootDirs =\n (this.options.rootDirs || [this.options.basePath !]).map(p => path.resolve(basePath, p));\n if (context.getDirectories) {\n this.getDirectories = path => context.getDirectories !(path);\n }\n if (context.directoryExists) {\n this.directoryExists = directoryName => context.directoryExists !(directoryName);\n }\n if (context.getCancellationToken) {\n this.getCancellationToken = () => context.getCancellationToken !();\n }\n if (context.getDefaultLibLocation) {\n this.getDefaultLibLocation = () => context.getDefaultLibLocation !();\n }\n if (context.trace) {\n this.trace = s => context.trace !(s);\n }\n if (context.fileNameToModuleName) {\n this.fileNameToModuleName = context.fileNameToModuleName.bind(context);\n }\n // Note: don't copy over context.moduleNameToFileName as we first\n // normalize undefined containingFile to a filled containingFile.\n if (context.resourceNameToFileName) {\n this.resourceNameToFileName = context.resourceNameToFileName.bind(context);\n }\n if (context.toSummaryFileName) {\n this.toSummaryFileName = context.toSummaryFileName.bind(context);\n }\n if (context.fromSummaryFileName) {\n this.fromSummaryFileName = context.fromSummaryFileName.bind(context);\n }\n this.metadataReaderHost = {\n cacheMetadata: () => true,\n getSourceFileMetadata: (filePath) => {\n const sf = this.getOriginalSourceFile(filePath);\n return sf ? this.metadataProvider.getMetadata(sf) : undefined;\n },\n fileExists: (filePath) => this.originalFileExists(filePath),\n readFile: (filePath) => assert(this.context.readFile(filePath)),\n };\n }\n\n private resolveModuleName(moduleName: string, containingFile: string): ts.ResolvedModule\n |undefined {\n const rm = ts.resolveModuleName(\n moduleName, containingFile.replace(/\\\\/g, '/'), this.options, this,\n this.moduleResolutionCache)\n .resolvedModule;\n if (rm && this.isSourceFile(rm.resolvedFileName) && DTS.test(rm.resolvedFileName)) {\n // Case: generateCodeForLibraries = true and moduleName is\n // a .d.ts file in a node_modules folder.\n // Need to set isExternalLibraryImport to false so that generated files for that file\n // are emitted.\n rm.isExternalLibraryImport = false;\n }\n return rm;\n }\n\n // Note: We implement this method so that TypeScript and Angular share the same\n // ts.ModuleResolutionCache\n // and that we can tell ts.Program about our different opinion about\n // ResolvedModule.isExternalLibraryImport\n // (see our isSourceFile method).\n resolveModuleNames(moduleNames: string[], containingFile: string): ts.ResolvedModule[] {\n // TODO(tbosch): this seems to be a typing error in TypeScript,\n // as it contains assertions that the result contains the same number of entries\n // as the given module names.\n return <ts.ResolvedModule[]>moduleNames.map(\n moduleName => this.resolveModuleName(moduleName, containingFile));\n }\n\n moduleNameToFileName(m: string, containingFile?: string): string|null {\n if (!containingFile) {\n if (m.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 = this.rootFiles[0];\n }\n if (this.context.moduleNameToFileName) {\n return this.context.moduleNameToFileName(m, containingFile);\n }\n const resolved = this.resolveModuleName(m, containingFile);\n return resolved ? resolved.resolvedFileName : null;\n }\n\n /**\n * We want a moduleId that will appear in import statements in the generated code\n * which will be written to `containingFile`.\n *\n * Note that we also generate files for files in node_modules, as libraries\n * only ship .metadata.json files but not the generated code.\n *\n * Logic:\n * 1. if the importedFile and the containingFile are from the project sources\n * or from the same node_modules package, use a relative path\n * 2. if the importedFile is in a node_modules package,\n * use a path that starts with the package name.\n * 3. Error if the containingFile is in the node_modules package\n * and the importedFile is in the project soures,\n * as that is a violation of the principle that node_modules packages cannot\n * import project sources.\n */\n fileNameToModuleName(importedFile: string, containingFile: string): string {\n const originalImportedFile = importedFile;\n if (this.options.traceResolution) {\n console.error(\n 'fileNameToModuleName from containingFile', containingFile, 'to importedFile',\n importedFile);\n }\n\n // drop extension\n importedFile = importedFile.replace(EXT, '');\n const importedFilePackagName = getPackageName(importedFile);\n const containingFilePackageName = getPackageName(containingFile);\n\n let moduleName: string;\n if (importedFilePackagName === containingFilePackageName ||\n GENERATED_FILES.test(originalImportedFile)) {\n const rootedContainingFile = relativeToRootDirs(containingFile, this.rootDirs);\n const rootedImportedFile = relativeToRootDirs(importedFile, this.rootDirs);\n\n if (rootedContainingFile !== containingFile && rootedImportedFile !== importedFile) {\n // if both files are contained in the `rootDirs`, then strip the rootDirs\n containingFile = rootedContainingFile;\n importedFile = rootedImportedFile;\n }\n moduleName = dotRelative(path.dirname(containingFile), importedFile);\n } else if (importedFilePackagName) {\n moduleName = stripNodeModulesPrefix(importedFile);\n } else {\n throw new Error(\n `Trying to import a source file from a node_modules package: import ${originalImportedFile} from ${containingFile}`);\n }\n return moduleName;\n }\n\n resourceNameToFileName(resourceName: string, containingFile: string): string|null {\n // Note: we convert package paths into relative paths to be compatible with the the\n // previous implementation of UrlResolver.\n const firstChar = resourceName[0];\n if (firstChar === '/') {\n resourceName = resourceName.slice(1);\n } else if (firstChar !== '.') {\n resourceName = `./${resourceName}`;\n }\n const filePathWithNgResource =\n this.moduleNameToFileName(addNgResourceSuffix(resourceName), containingFile);\n const result = filePathWithNgResource ? stripNgResourceSuffix(filePathWithNgResource) : null;\n // Used under Bazel to report more specific error with remediation advice\n if (!result && (this.context as any).reportMissingResource) {\n (this.context as any).reportMissingResource(resourceName);\n }\n return result;\n }\n\n toSummaryFileName(fileName: string, referringSrcFileName: string): string {\n return this.fileNameToModuleName(fileName, referringSrcFileName);\n }\n\n fromSummaryFileName(fileName: string, referringLibFileName: string): string {\n const resolved = this.moduleNameToFileName(fileName, referringLibFileName);\n if (!resolved) {\n throw new Error(`Could not resolve ${fileName} from ${referringLibFileName}`);\n }\n return resolved;\n }\n\n parseSourceSpanOf(fileName: string, line: number, character: number): ParseSourceSpan|null {\n const data = this.generatedSourceFiles.get(fileName);\n if (data && data.emitCtx) {\n return data.emitCtx.spanOf(line, character);\n }\n return null;\n }\n\n private getOriginalSourceFile(\n filePath: string, languageVersion?: ts.ScriptTarget,\n onError?: ((message: string) => void)|undefined): ts.SourceFile|null {\n // Note: we need the explicit check via `has` as we also cache results\n // that were null / undefined.\n if (this.originalSourceFiles.has(filePath)) {\n return this.originalSourceFiles.get(filePath) !;\n }\n if (!languageVersion) {\n languageVersion = this.options.target || ts.ScriptTarget.Latest;\n }\n // Note: This can also return undefined,\n // as the TS typings are not correct!\n const sf = this.context.getSourceFile(filePath, languageVersion, onError) || null;\n this.originalSourceFiles.set(filePath, sf);\n return sf;\n }\n\n updateGeneratedFile(genFile: GeneratedFile): ts.SourceFile {\n if (!genFile.stmts) {\n throw new Error(\n `Invalid Argument: Expected a GenerateFile with statements. ${genFile.genFileUrl}`);\n }\n const oldGenFile = this.generatedSourceFiles.get(genFile.genFileUrl);\n if (!oldGenFile) {\n throw new Error(`Illegal State: previous GeneratedFile not found for ${genFile.genFileUrl}.`);\n }\n const newRefs = genFileExternalReferences(genFile);\n const oldRefs = oldGenFile.externalReferences;\n let refsAreEqual = oldRefs.size === newRefs.size;\n if (refsAreEqual) {\n newRefs.forEach(r => refsAreEqual = refsAreEqual && oldRefs.has(r));\n }\n if (!refsAreEqual) {\n throw new Error(\n `Illegal State: external references changed in ${genFile.genFileUrl}.\\nOld: ${Array.from(oldRefs)}.\\nNew: ${Array.from(newRefs)}`);\n }\n return this.addGeneratedFile(genFile, newRefs);\n }\n\n private addGeneratedFile(genFile: GeneratedFile, externalReferences: Set<string>): ts.SourceFile {\n if (!genFile.stmts) {\n throw new Error(\n `Invalid Argument: Expected a GenerateFile with statements. ${genFile.genFileUrl}`);\n }\n const {sourceText, context} = this.emitter.emitStatementsAndContext(\n genFile.genFileUrl, genFile.stmts, /* preamble */ '',\n /* emitSourceMaps */ false);\n const sf = ts.createSourceFile(\n genFile.genFileUrl, sourceText, this.options.target || ts.ScriptTarget.Latest);\n if ((this.options.module === ts.ModuleKind.AMD || this.options.module === ts.ModuleKind.UMD) &&\n this.context.amdModuleName) {\n const moduleName = this.context.amdModuleName(sf);\n if (moduleName) sf.moduleName = moduleName;\n }\n this.generatedSourceFiles.set(genFile.genFileUrl, {\n sourceFile: sf,\n emitCtx: context, externalReferences,\n });\n return sf;\n }\n\n shouldGenerateFile(fileName: string): {generate: boolean, baseFileName?: string} {\n // TODO(tbosch): allow generating files that are not in the rootDir\n // See https://github.com/angular/angular/issues/19337\n if (!isInRootDir(fileName, this.options)) {\n return {generate: false};\n }\n const genMatch = GENERATED_FILES.exec(fileName);\n if (!genMatch) {\n return {generate: false};\n }\n const [, base, genSuffix, suffix] = genMatch;\n if (suffix !== 'ts' && suffix !== 'tsx') {\n return {generate: false};\n }\n let baseFileName: string|undefined;\n if (genSuffix.indexOf('ngstyle') >= 0) {\n // Note: ngstyle files have names like `afile.css.ngstyle.ts`\n if (!this.originalFileExists(base)) {\n return {generate: false};\n }\n } else {\n // Note: on-the-fly generated files always have a `.ts` suffix,\n // but the file from which we generated it can be a `.ts`/ `.tsx`/ `.d.ts`\n // (see options.generateCodeForLibraries).\n baseFileName = [`${base}.ts`, `${base}.tsx`, `${base}.d.ts`].find(\n baseFileName => this.isSourceFile(baseFileName) && this.originalFileExists(baseFileName));\n if (!baseFileName) {\n return {generate: false};\n }\n }\n return {generate: true, baseFileName};\n }\n\n shouldGenerateFilesFor(fileName: string) {\n // TODO(tbosch): allow generating files that are not in the rootDir\n // See https://github.com/angular/angular/issues/19337\n return !GENERATED_FILES.test(fileName) && this.isSourceFile(fileName) &&\n isInRootDir(fileName, this.options);\n }\n\n getSourceFile(\n fileName: string, languageVersion: ts.ScriptTarget,\n onError?: ((message: string) => void)|undefined): ts.SourceFile {\n // Note: Don't exit early in this method to make sure\n // we always have up to date references on the file!\n let genFileNames: string[] = [];\n let sf = this.getGeneratedFile(fileName);\n if (!sf) {\n const summary = this.librarySummaries.get(fileName);\n if (summary) {\n if (!summary.sourceFile) {\n summary.sourceFile = ts.createSourceFile(\n fileName, summary.text, this.options.target || ts.ScriptTarget.Latest);\n }\n sf = summary.sourceFile;\n genFileNames = [];\n }\n }\n if (!sf) {\n sf = this.getOriginalSourceFile(fileName);\n const cachedGenFiles = this.generatedCodeFor.get(fileName);\n if (cachedGenFiles) {\n genFileNames = cachedGenFiles;\n } else {\n if (!this.options.noResolve && this.shouldGenerateFilesFor(fileName)) {\n genFileNames = this.codeGenerator.findGeneratedFileNames(fileName).filter(\n fileName => this.shouldGenerateFile(fileName).generate);\n }\n this.generatedCodeFor.set(fileName, genFileNames);\n }\n }\n if (sf) {\n addReferencesToSourceFile(sf, genFileNames);\n }\n // TODO(tbosch): TypeScript's typings for getSourceFile are incorrect,\n // as it can very well return undefined.\n return sf !;\n }\n\n private getGeneratedFile(fileName: string): ts.SourceFile|null {\n const genSrcFile = this.generatedSourceFiles.get(fileName);\n if (genSrcFile) {\n return genSrcFile.sourceFile;\n }\n const {generate, baseFileName} = this.shouldGenerateFile(fileName);\n if (generate) {\n const genFile = this.codeGenerator.generateFile(fileName, baseFileName);\n return this.addGeneratedFile(genFile, genFileExternalReferences(genFile));\n }\n return null;\n }\n\n private originalFileExists(fileName: string): boolean {\n let fileExists = this.originalFileExistsCache.get(fileName);\n if (fileExists == null) {\n fileExists = this.context.fileExists(fileName);\n this.originalFileExistsCache.set(fileName, fileExists);\n }\n return fileExists;\n }\n\n fileExists(fileName: string): boolean {\n fileName = stripNgResourceSuffix(fileName);\n if (this.librarySummaries.has(fileName) || this.generatedSourceFiles.has(fileName)) {\n return true;\n }\n if (this.shouldGenerateFile(fileName).generate) {\n return true;\n }\n return this.originalFileExists(fileName);\n }\n\n loadSummary(filePath: string): string|null {\n const summary = this.librarySummaries.get(filePath);\n if (summary) {\n return summary.text;\n }\n if (this.originalFileExists(filePath)) {\n return assert(this.context.readFile(filePath));\n }\n return null;\n }\n\n isSourceFile(filePath: string): boolean {\n // Don't generate any files nor typecheck them\n // if skipTemplateCodegen is set and fullTemplateTypeCheck is not yet set,\n // for backwards compatibility.\n if (this.options.skipTemplateCodegen && !this.options.fullTemplateTypeCheck) {\n return false;\n }\n // If we have a summary from a previous compilation,\n // treat the file never as a source file.\n if (this.librarySummaries.has(filePath)) {\n return false;\n }\n if (GENERATED_FILES.test(filePath)) {\n return false;\n }\n if (this.options.generateCodeForLibraries === false && DTS.test(filePath)) {\n return false;\n }\n if (DTS.test(filePath)) {\n // Check for a bundle index.\n if (this.hasBundleIndex(filePath)) {\n const normalFilePath = path.normalize(filePath);\n return this.flatModuleIndexNames.has(normalFilePath) ||\n this.flatModuleIndexRedirectNames.has(normalFilePath);\n }\n }\n return true;\n }\n\n readFile(fileName: string) {\n const summary = this.librarySummaries.get(fileName);\n if (summary) {\n return summary.text;\n }\n return this.context.readFile(fileName);\n }\n\n getMetadataFor(filePath: string): ModuleMetadata[]|undefined {\n return readMetadata(filePath, this.metadataReaderHost, this.metadataReaderCache);\n }\n\n loadResource(filePath: string): Promise<string>|string {\n if (this.context.readResource) return this.context.readResource(filePath);\n if (!this.originalFileExists(filePath)) {\n throw syntaxError(`Error: Resource file not found: ${filePath}`);\n }\n return assert(this.context.readFile(filePath));\n }\n\n getOutputName(filePath: string): string {\n return path.relative(this.getCurrentDirectory(), filePath);\n }\n\n private hasBundleIndex(filePath: string): boolean {\n const checkBundleIndex = (directory: string): boolean => {\n let result = this.flatModuleIndexCache.get(directory);\n if (result == null) {\n if (path.basename(directory) == 'node_module') {\n // Don't look outside the node_modules this package is installed in.\n result = false;\n } else {\n // A bundle index exists if the typings .d.ts file has a metadata.json that has an\n // importAs.\n try {\n const packageFile = path.join(directory, 'package.json');\n if (this.originalFileExists(packageFile)) {\n // Once we see a package.json file, assume false until it we find the bundle index.\n result = false;\n const packageContent: any = JSON.parse(assert(this.context.readFile(packageFile)));\n if (packageContent.typings) {\n const typings = path.normalize(path.join(directory, packageContent.typings));\n if (DTS.test(typings)) {\n const metadataFile = typings.replace(DTS, '.metadata.json');\n if (this.originalFileExists(metadataFile)) {\n const metadata = JSON.parse(assert(this.context.readFile(metadataFile)));\n if (metadata.flatModuleIndexRedirect) {\n this.flatModuleIndexRedirectNames.add(typings);\n // Note: don't set result = true,\n // as this would mark this folder\n // as having a bundleIndex too early without\n // filling the bundleIndexNames.\n } else if (metadata.importAs) {\n this.flatModuleIndexNames.add(typings);\n result = true;\n }\n }\n }\n }\n } else {\n const parent = path.dirname(directory);\n if (parent != directory) {\n // Try the parent directory.\n result = checkBundleIndex(parent);\n } else {\n result = false;\n }\n }\n } catch (e) {\n // If we encounter any errors assume we this isn't a bundle index.\n result = false;\n }\n }\n this.flatModuleIndexCache.set(directory, result);\n }\n return result;\n };\n\n return checkBundleIndex(path.dirname(filePath));\n }\n\n getDefaultLibFileName = (options: ts.CompilerOptions) =>\n this.context.getDefaultLibFileName(options)\n getCurrentDirectory = () => this.context.getCurrentDirectory();\n getCanonicalFileName = (fileName: string) => this.context.getCanonicalFileName(fileName);\n useCaseSensitiveFileNames = () => this.context.useCaseSensitiveFileNames();\n getNewLine = () => this.context.getNewLine();\n // Make sure we do not `host.realpath()` from TS as we do not want to resolve symlinks.\n // https://github.com/Microsoft/TypeScript/issues/9552\n realPath = (p: string) => p;\n writeFile = this.context.writeFile.bind(this.context);\n}\n\nfunction genFileExternalReferences(genFile: GeneratedFile): Set<string> {\n return new Set(collectExternalReferences(genFile.stmts !).map(er => er.moduleName !));\n}\n\nfunction addReferencesToSourceFile(sf: ts.SourceFile, genFileNames: string[]) {\n // Note: as we modify ts.SourceFiles we need to keep the original\n // value for `referencedFiles` around in cache the original host is caching ts.SourceFiles.\n // Note: cloning the ts.SourceFile is expensive as the nodes in have parent pointers,\n // i.e. we would also need to clone and adjust all nodes.\n let originalReferencedFiles: ReadonlyArray<ts.FileReference> =\n (sf as any).originalReferencedFiles;\n if (!originalReferencedFiles) {\n originalReferencedFiles = sf.referencedFiles;\n (sf as any).originalReferencedFiles = originalReferencedFiles;\n }\n const newReferencedFiles = [...originalReferencedFiles];\n genFileNames.forEach(gf => newReferencedFiles.push({fileName: gf, pos: 0, end: 0}));\n sf.referencedFiles = newReferencedFiles;\n}\n\nexport function getOriginalReferences(sourceFile: ts.SourceFile): ts.FileReference[]|undefined {\n return sourceFile && (sourceFile as any).originalReferencedFiles;\n}\n\nfunction dotRelative(from: string, to: string): string {\n const rPath: string = path.relative(from, to).replace(/\\\\/g, '/');\n return rPath.startsWith('.') ? rPath : './' + rPath;\n}\n\n/**\n * Moves the path into `genDir` folder while preserving the `node_modules` directory.\n */\nfunction getPackageName(filePath: string): string|null {\n const match = NODE_MODULES_PACKAGE_NAME.exec(filePath);\n return match ? match[1] : null;\n}\n\nfunction stripNodeModulesPrefix(filePath: string): string {\n return filePath.replace(/.*node_modules\\//, '');\n}\n\nfunction getNodeModulesPrefix(filePath: string): string|null {\n const match = /.*node_modules\\//.exec(filePath);\n return match ? match[1] : null;\n}\n\nfunction stripNgResourceSuffix(fileName: string): string {\n return fileName.replace(/\\.\\$ngresource\\$.*/, '');\n}\n\nfunction addNgResourceSuffix(fileName: string): string {\n return `${fileName}.$ngresource$`;\n}\n"]}
@@ -257,10 +257,11 @@ var LowerMetadataCache = /** @class */ (function () {
257
257
  return value;
258
258
  };
259
259
  // Do not validate or lower metadata in a declaration file. Declaration files are requested
260
- // when we need to update the version of the metadata to add informatoin that might be missing
260
+ // when we need to update the version of the metadata to add information that might be missing
261
261
  // in the out-of-date version that can be recovered from the .d.ts file.
262
262
  var declarationFile = sourceFile.isDeclarationFile;
263
- var metadata = this.collector.getMetadata(sourceFile, this.strict && !declarationFile, declarationFile ? undefined : substituteExpression);
263
+ var moduleFile = ts.isExternalModule(sourceFile);
264
+ var metadata = this.collector.getMetadata(sourceFile, this.strict && !declarationFile, moduleFile && !declarationFile ? substituteExpression : undefined);
264
265
  return { metadata: metadata, requests: requests };
265
266
  };
266
267
  return LowerMetadataCache;
@@ -1 +1 @@
1
- {"version":3,"file":"lower_expressions.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/transformers/lower_expressions.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {createLoweredSymbol, isLoweredSymbol} from '@angular/compiler';\nimport * as ts from 'typescript';\n\nimport {CollectorOptions, MetadataCollector, MetadataValue, ModuleMetadata, isMetadataGlobalReferenceExpression} from '../metadata/index';\n\nexport interface LoweringRequest {\n kind: ts.SyntaxKind;\n location: number;\n end: number;\n name: string;\n}\n\nexport type RequestLocationMap = Map<number, LoweringRequest>;\n\nconst enum DeclarationOrder { BeforeStmt, AfterStmt }\n\ninterface Declaration {\n name: string;\n node: ts.Node;\n order: DeclarationOrder;\n}\n\ninterface DeclarationInsert {\n declarations: Declaration[];\n relativeTo: ts.Node;\n}\n\nfunction toMap<T, K>(items: T[], select: (item: T) => K): Map<K, T> {\n return new Map(items.map<[K, T]>(i => [select(i), i]));\n}\n\n// We will never lower expressions in a nested lexical scope so avoid entering them.\n// This also avoids a bug in TypeScript 2.3 where the lexical scopes get out of sync\n// when using visitEachChild.\nfunction isLexicalScope(node: ts.Node): boolean {\n switch (node.kind) {\n case ts.SyntaxKind.ArrowFunction:\n case ts.SyntaxKind.FunctionExpression:\n case ts.SyntaxKind.FunctionDeclaration:\n case ts.SyntaxKind.ClassExpression:\n case ts.SyntaxKind.ClassDeclaration:\n case ts.SyntaxKind.FunctionType:\n case ts.SyntaxKind.TypeLiteral:\n case ts.SyntaxKind.ArrayType:\n return true;\n }\n return false;\n}\n\nfunction transformSourceFile(\n sourceFile: ts.SourceFile, requests: RequestLocationMap,\n context: ts.TransformationContext): ts.SourceFile {\n const inserts: DeclarationInsert[] = [];\n\n // Calculate the range of interesting locations. The transform will only visit nodes in this\n // range to improve the performance on large files.\n const locations = Array.from(requests.keys());\n const min = Math.min(...locations);\n const max = Math.max(...locations);\n\n // Visit nodes matching the request and synthetic nodes added by tsickle\n function shouldVisit(pos: number, end: number): boolean {\n return (pos <= max && end >= min) || pos == -1;\n }\n\n function visitSourceFile(sourceFile: ts.SourceFile): ts.SourceFile {\n function topLevelStatement(node: ts.Statement): ts.Statement {\n const declarations: Declaration[] = [];\n\n function visitNode(node: ts.Node): ts.Node {\n // Get the original node before tsickle\n const {pos, end, kind, parent: originalParent} = ts.getOriginalNode(node);\n const nodeRequest = requests.get(pos);\n if (nodeRequest && nodeRequest.kind == kind && nodeRequest.end == end) {\n // This node is requested to be rewritten as a reference to the exported name.\n if (originalParent && originalParent.kind === ts.SyntaxKind.VariableDeclaration) {\n // As the value represents the whole initializer of a variable declaration,\n // just refer to that variable. This e.g. helps to preserve closure comments\n // at the right place.\n const varParent = originalParent as ts.VariableDeclaration;\n if (varParent.name.kind === ts.SyntaxKind.Identifier) {\n const varName = varParent.name.text;\n const exportName = nodeRequest.name;\n declarations.push({\n name: exportName,\n node: ts.createIdentifier(varName),\n order: DeclarationOrder.AfterStmt\n });\n return node;\n }\n }\n // Record that the node needs to be moved to an exported variable with the given name\n const exportName = nodeRequest.name;\n declarations.push({name: exportName, node, order: DeclarationOrder.BeforeStmt});\n return ts.createIdentifier(exportName);\n }\n let result = node;\n if (shouldVisit(pos, end) && !isLexicalScope(node)) {\n result = ts.visitEachChild(node, visitNode, context);\n }\n return result;\n }\n\n // Get the original node before tsickle\n const {pos, end} = ts.getOriginalNode(node);\n let resultStmt: ts.Statement;\n if (shouldVisit(pos, end)) {\n resultStmt = ts.visitEachChild(node, visitNode, context);\n } else {\n resultStmt = node;\n }\n\n if (declarations.length) {\n inserts.push({relativeTo: resultStmt, declarations});\n }\n return resultStmt;\n }\n\n let newStatements = sourceFile.statements.map(topLevelStatement);\n\n if (inserts.length) {\n // Insert the declarations relative to the rewritten statement that references them.\n const insertMap = toMap(inserts, i => i.relativeTo);\n const tmpStatements: ts.Statement[] = [];\n newStatements.forEach(statement => {\n const insert = insertMap.get(statement);\n if (insert) {\n const before = insert.declarations.filter(d => d.order === DeclarationOrder.BeforeStmt);\n if (before.length) {\n tmpStatements.push(createVariableStatementForDeclarations(before));\n }\n tmpStatements.push(statement);\n const after = insert.declarations.filter(d => d.order === DeclarationOrder.AfterStmt);\n if (after.length) {\n tmpStatements.push(createVariableStatementForDeclarations(after));\n }\n } else {\n tmpStatements.push(statement);\n }\n });\n\n // Insert an exports clause to export the declarations\n tmpStatements.push(ts.createExportDeclaration(\n /* decorators */ undefined,\n /* modifiers */ undefined,\n ts.createNamedExports(\n inserts\n .reduce(\n (accumulator, insert) => [...accumulator, ...insert.declarations],\n [] as Declaration[])\n .map(\n declaration => ts.createExportSpecifier(\n /* propertyName */ undefined, declaration.name)))));\n\n newStatements = tmpStatements;\n }\n // Note: We cannot use ts.updateSourcefile here as\n // it does not work well with decorators.\n // See https://github.com/Microsoft/TypeScript/issues/17384\n const newSf = ts.getMutableClone(sourceFile);\n if (!(sourceFile.flags & ts.NodeFlags.Synthesized)) {\n newSf.flags &= ~ts.NodeFlags.Synthesized;\n }\n newSf.statements = ts.setTextRange(ts.createNodeArray(newStatements), sourceFile.statements);\n return newSf;\n }\n\n return visitSourceFile(sourceFile);\n}\n\nfunction createVariableStatementForDeclarations(declarations: Declaration[]): ts.VariableStatement {\n const varDecls = declarations.map(\n i => ts.createVariableDeclaration(i.name, /* type */ undefined, i.node as ts.Expression));\n return ts.createVariableStatement(\n /* modifiers */ undefined, ts.createVariableDeclarationList(varDecls, ts.NodeFlags.Const));\n}\n\nexport function getExpressionLoweringTransformFactory(\n requestsMap: RequestsMap, program: ts.Program): (context: ts.TransformationContext) =>\n (sourceFile: ts.SourceFile) => ts.SourceFile {\n // Return the factory\n return (context: ts.TransformationContext) => (sourceFile: ts.SourceFile): ts.SourceFile => {\n // We need to use the original SourceFile for reading metadata, and not the transformed one.\n const requests = requestsMap.getRequests(program.getSourceFile(sourceFile.fileName));\n if (requests && requests.size) {\n return transformSourceFile(sourceFile, requests, context);\n }\n return sourceFile;\n };\n}\n\nexport interface RequestsMap { getRequests(sourceFile: ts.SourceFile): RequestLocationMap; }\n\ninterface MetadataAndLoweringRequests {\n metadata: ModuleMetadata|undefined;\n requests: RequestLocationMap;\n}\n\nfunction shouldLower(node: ts.Node | undefined): boolean {\n if (node) {\n switch (node.kind) {\n case ts.SyntaxKind.SourceFile:\n case ts.SyntaxKind.Decorator:\n // Lower expressions that are local to the module scope or\n // in a decorator.\n return true;\n case ts.SyntaxKind.ClassDeclaration:\n case ts.SyntaxKind.InterfaceDeclaration:\n case ts.SyntaxKind.EnumDeclaration:\n case ts.SyntaxKind.FunctionDeclaration:\n // Don't lower expressions in a declaration.\n return false;\n case ts.SyntaxKind.VariableDeclaration:\n // Avoid lowering expressions already in an exported variable declaration\n return (ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) == 0;\n }\n return shouldLower(node.parent);\n }\n return true;\n}\n\nfunction isPrimitive(value: any): boolean {\n return Object(value) !== value;\n}\n\nfunction isRewritten(value: any): boolean {\n return isMetadataGlobalReferenceExpression(value) && isLoweredSymbol(value.name);\n}\n\nfunction isLiteralFieldNamed(node: ts.Node, names: Set<string>): boolean {\n if (node.parent && node.parent.kind == ts.SyntaxKind.PropertyAssignment) {\n const property = node.parent as ts.PropertyAssignment;\n if (property.parent && property.parent.kind == ts.SyntaxKind.ObjectLiteralExpression &&\n property.name && property.name.kind == ts.SyntaxKind.Identifier) {\n const propertyName = property.name as ts.Identifier;\n return names.has(propertyName.text);\n }\n }\n return false;\n}\n\nconst LOWERABLE_FIELD_NAMES = new Set(['useValue', 'useFactory', 'data']);\n\nexport class LowerMetadataCache implements RequestsMap {\n private collector: MetadataCollector;\n private metadataCache = new Map<string, MetadataAndLoweringRequests>();\n\n constructor(options: CollectorOptions, private strict?: boolean) {\n this.collector = new MetadataCollector(options);\n }\n\n getMetadata(sourceFile: ts.SourceFile): ModuleMetadata|undefined {\n return this.ensureMetadataAndRequests(sourceFile).metadata;\n }\n\n getRequests(sourceFile: ts.SourceFile): RequestLocationMap {\n return this.ensureMetadataAndRequests(sourceFile).requests;\n }\n\n private ensureMetadataAndRequests(sourceFile: ts.SourceFile): MetadataAndLoweringRequests {\n let result = this.metadataCache.get(sourceFile.fileName);\n if (!result) {\n result = this.getMetadataAndRequests(sourceFile);\n this.metadataCache.set(sourceFile.fileName, result);\n }\n return result;\n }\n\n private getMetadataAndRequests(sourceFile: ts.SourceFile): MetadataAndLoweringRequests {\n let identNumber = 0;\n const freshIdent = () => createLoweredSymbol(identNumber++);\n const requests = new Map<number, LoweringRequest>();\n\n const isExportedSymbol = (() => {\n let exportTable: Set<string>;\n return (node: ts.Node) => {\n if (node.kind == ts.SyntaxKind.Identifier) {\n const ident = node as ts.Identifier;\n\n if (!exportTable) {\n exportTable = createExportTableFor(sourceFile);\n }\n return exportTable.has(ident.text);\n }\n return false;\n };\n })();\n\n const isExportedPropertyAccess = (node: ts.Node) => {\n if (node.kind === ts.SyntaxKind.PropertyAccessExpression) {\n const pae = node as ts.PropertyAccessExpression;\n if (isExportedSymbol(pae.expression)) {\n return true;\n }\n }\n return false;\n };\n const replaceNode = (node: ts.Node) => {\n const name = freshIdent();\n requests.set(node.pos, {name, kind: node.kind, location: node.pos, end: node.end});\n return {__symbolic: 'reference', name};\n };\n\n const substituteExpression = (value: MetadataValue, node: ts.Node): MetadataValue => {\n if (!isPrimitive(value) && !isRewritten(value)) {\n if ((node.kind === ts.SyntaxKind.ArrowFunction ||\n node.kind === ts.SyntaxKind.FunctionExpression) &&\n shouldLower(node)) {\n return replaceNode(node);\n }\n if (isLiteralFieldNamed(node, LOWERABLE_FIELD_NAMES) && shouldLower(node) &&\n !isExportedSymbol(node) && !isExportedPropertyAccess(node)) {\n return replaceNode(node);\n }\n }\n return value;\n };\n\n // Do not validate or lower metadata in a declaration file. Declaration files are requested\n // when we need to update the version of the metadata to add informatoin that might be missing\n // in the out-of-date version that can be recovered from the .d.ts file.\n const declarationFile = sourceFile.isDeclarationFile;\n\n const metadata = this.collector.getMetadata(\n sourceFile, this.strict && !declarationFile,\n declarationFile ? undefined : substituteExpression);\n\n return {metadata, requests};\n }\n}\n\nfunction createExportTableFor(sourceFile: ts.SourceFile): Set<string> {\n const exportTable = new Set<string>();\n // Lazily collect all the exports from the source file\n ts.forEachChild(sourceFile, function scan(node) {\n switch (node.kind) {\n case ts.SyntaxKind.ClassDeclaration:\n case ts.SyntaxKind.FunctionDeclaration:\n case ts.SyntaxKind.InterfaceDeclaration:\n if ((ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) != 0) {\n const classDeclaration =\n node as(ts.ClassDeclaration | ts.FunctionDeclaration | ts.InterfaceDeclaration);\n const name = classDeclaration.name;\n if (name) exportTable.add(name.text);\n }\n break;\n case ts.SyntaxKind.VariableStatement:\n const variableStatement = node as ts.VariableStatement;\n for (const declaration of variableStatement.declarationList.declarations) {\n scan(declaration);\n }\n break;\n case ts.SyntaxKind.VariableDeclaration:\n const variableDeclaration = node as ts.VariableDeclaration;\n if ((ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) != 0 &&\n variableDeclaration.name.kind == ts.SyntaxKind.Identifier) {\n const name = variableDeclaration.name as ts.Identifier;\n exportTable.add(name.text);\n }\n break;\n case ts.SyntaxKind.ExportDeclaration:\n const exportDeclaration = node as ts.ExportDeclaration;\n const {moduleSpecifier, exportClause} = exportDeclaration;\n if (!moduleSpecifier && exportClause) {\n exportClause.elements.forEach(spec => { exportTable.add(spec.name.text); });\n }\n }\n });\n return exportTable;\n}\n"]}
1
+ {"version":3,"file":"lower_expressions.js","sourceRoot":"","sources":["../../../../../packages/compiler-cli/src/transformers/lower_expressions.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport {createLoweredSymbol, isLoweredSymbol} from '@angular/compiler';\nimport * as ts from 'typescript';\n\nimport {CollectorOptions, MetadataCollector, MetadataValue, ModuleMetadata, isMetadataGlobalReferenceExpression} from '../metadata/index';\n\nexport interface LoweringRequest {\n kind: ts.SyntaxKind;\n location: number;\n end: number;\n name: string;\n}\n\nexport type RequestLocationMap = Map<number, LoweringRequest>;\n\nconst enum DeclarationOrder { BeforeStmt, AfterStmt }\n\ninterface Declaration {\n name: string;\n node: ts.Node;\n order: DeclarationOrder;\n}\n\ninterface DeclarationInsert {\n declarations: Declaration[];\n relativeTo: ts.Node;\n}\n\nfunction toMap<T, K>(items: T[], select: (item: T) => K): Map<K, T> {\n return new Map(items.map<[K, T]>(i => [select(i), i]));\n}\n\n// We will never lower expressions in a nested lexical scope so avoid entering them.\n// This also avoids a bug in TypeScript 2.3 where the lexical scopes get out of sync\n// when using visitEachChild.\nfunction isLexicalScope(node: ts.Node): boolean {\n switch (node.kind) {\n case ts.SyntaxKind.ArrowFunction:\n case ts.SyntaxKind.FunctionExpression:\n case ts.SyntaxKind.FunctionDeclaration:\n case ts.SyntaxKind.ClassExpression:\n case ts.SyntaxKind.ClassDeclaration:\n case ts.SyntaxKind.FunctionType:\n case ts.SyntaxKind.TypeLiteral:\n case ts.SyntaxKind.ArrayType:\n return true;\n }\n return false;\n}\n\nfunction transformSourceFile(\n sourceFile: ts.SourceFile, requests: RequestLocationMap,\n context: ts.TransformationContext): ts.SourceFile {\n const inserts: DeclarationInsert[] = [];\n\n // Calculate the range of interesting locations. The transform will only visit nodes in this\n // range to improve the performance on large files.\n const locations = Array.from(requests.keys());\n const min = Math.min(...locations);\n const max = Math.max(...locations);\n\n // Visit nodes matching the request and synthetic nodes added by tsickle\n function shouldVisit(pos: number, end: number): boolean {\n return (pos <= max && end >= min) || pos == -1;\n }\n\n function visitSourceFile(sourceFile: ts.SourceFile): ts.SourceFile {\n function topLevelStatement(node: ts.Statement): ts.Statement {\n const declarations: Declaration[] = [];\n\n function visitNode(node: ts.Node): ts.Node {\n // Get the original node before tsickle\n const {pos, end, kind, parent: originalParent} = ts.getOriginalNode(node);\n const nodeRequest = requests.get(pos);\n if (nodeRequest && nodeRequest.kind == kind && nodeRequest.end == end) {\n // This node is requested to be rewritten as a reference to the exported name.\n if (originalParent && originalParent.kind === ts.SyntaxKind.VariableDeclaration) {\n // As the value represents the whole initializer of a variable declaration,\n // just refer to that variable. This e.g. helps to preserve closure comments\n // at the right place.\n const varParent = originalParent as ts.VariableDeclaration;\n if (varParent.name.kind === ts.SyntaxKind.Identifier) {\n const varName = varParent.name.text;\n const exportName = nodeRequest.name;\n declarations.push({\n name: exportName,\n node: ts.createIdentifier(varName),\n order: DeclarationOrder.AfterStmt\n });\n return node;\n }\n }\n // Record that the node needs to be moved to an exported variable with the given name\n const exportName = nodeRequest.name;\n declarations.push({name: exportName, node, order: DeclarationOrder.BeforeStmt});\n return ts.createIdentifier(exportName);\n }\n let result = node;\n if (shouldVisit(pos, end) && !isLexicalScope(node)) {\n result = ts.visitEachChild(node, visitNode, context);\n }\n return result;\n }\n\n // Get the original node before tsickle\n const {pos, end} = ts.getOriginalNode(node);\n let resultStmt: ts.Statement;\n if (shouldVisit(pos, end)) {\n resultStmt = ts.visitEachChild(node, visitNode, context);\n } else {\n resultStmt = node;\n }\n\n if (declarations.length) {\n inserts.push({relativeTo: resultStmt, declarations});\n }\n return resultStmt;\n }\n\n let newStatements = sourceFile.statements.map(topLevelStatement);\n\n if (inserts.length) {\n // Insert the declarations relative to the rewritten statement that references them.\n const insertMap = toMap(inserts, i => i.relativeTo);\n const tmpStatements: ts.Statement[] = [];\n newStatements.forEach(statement => {\n const insert = insertMap.get(statement);\n if (insert) {\n const before = insert.declarations.filter(d => d.order === DeclarationOrder.BeforeStmt);\n if (before.length) {\n tmpStatements.push(createVariableStatementForDeclarations(before));\n }\n tmpStatements.push(statement);\n const after = insert.declarations.filter(d => d.order === DeclarationOrder.AfterStmt);\n if (after.length) {\n tmpStatements.push(createVariableStatementForDeclarations(after));\n }\n } else {\n tmpStatements.push(statement);\n }\n });\n\n // Insert an exports clause to export the declarations\n tmpStatements.push(ts.createExportDeclaration(\n /* decorators */ undefined,\n /* modifiers */ undefined,\n ts.createNamedExports(\n inserts\n .reduce(\n (accumulator, insert) => [...accumulator, ...insert.declarations],\n [] as Declaration[])\n .map(\n declaration => ts.createExportSpecifier(\n /* propertyName */ undefined, declaration.name)))));\n\n newStatements = tmpStatements;\n }\n // Note: We cannot use ts.updateSourcefile here as\n // it does not work well with decorators.\n // See https://github.com/Microsoft/TypeScript/issues/17384\n const newSf = ts.getMutableClone(sourceFile);\n if (!(sourceFile.flags & ts.NodeFlags.Synthesized)) {\n newSf.flags &= ~ts.NodeFlags.Synthesized;\n }\n newSf.statements = ts.setTextRange(ts.createNodeArray(newStatements), sourceFile.statements);\n return newSf;\n }\n\n return visitSourceFile(sourceFile);\n}\n\nfunction createVariableStatementForDeclarations(declarations: Declaration[]): ts.VariableStatement {\n const varDecls = declarations.map(\n i => ts.createVariableDeclaration(i.name, /* type */ undefined, i.node as ts.Expression));\n return ts.createVariableStatement(\n /* modifiers */ undefined, ts.createVariableDeclarationList(varDecls, ts.NodeFlags.Const));\n}\n\nexport function getExpressionLoweringTransformFactory(\n requestsMap: RequestsMap, program: ts.Program): (context: ts.TransformationContext) =>\n (sourceFile: ts.SourceFile) => ts.SourceFile {\n // Return the factory\n return (context: ts.TransformationContext) => (sourceFile: ts.SourceFile): ts.SourceFile => {\n // We need to use the original SourceFile for reading metadata, and not the transformed one.\n const requests = requestsMap.getRequests(program.getSourceFile(sourceFile.fileName));\n if (requests && requests.size) {\n return transformSourceFile(sourceFile, requests, context);\n }\n return sourceFile;\n };\n}\n\nexport interface RequestsMap { getRequests(sourceFile: ts.SourceFile): RequestLocationMap; }\n\ninterface MetadataAndLoweringRequests {\n metadata: ModuleMetadata|undefined;\n requests: RequestLocationMap;\n}\n\nfunction shouldLower(node: ts.Node | undefined): boolean {\n if (node) {\n switch (node.kind) {\n case ts.SyntaxKind.SourceFile:\n case ts.SyntaxKind.Decorator:\n // Lower expressions that are local to the module scope or\n // in a decorator.\n return true;\n case ts.SyntaxKind.ClassDeclaration:\n case ts.SyntaxKind.InterfaceDeclaration:\n case ts.SyntaxKind.EnumDeclaration:\n case ts.SyntaxKind.FunctionDeclaration:\n // Don't lower expressions in a declaration.\n return false;\n case ts.SyntaxKind.VariableDeclaration:\n // Avoid lowering expressions already in an exported variable declaration\n return (ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) == 0;\n }\n return shouldLower(node.parent);\n }\n return true;\n}\n\nfunction isPrimitive(value: any): boolean {\n return Object(value) !== value;\n}\n\nfunction isRewritten(value: any): boolean {\n return isMetadataGlobalReferenceExpression(value) && isLoweredSymbol(value.name);\n}\n\nfunction isLiteralFieldNamed(node: ts.Node, names: Set<string>): boolean {\n if (node.parent && node.parent.kind == ts.SyntaxKind.PropertyAssignment) {\n const property = node.parent as ts.PropertyAssignment;\n if (property.parent && property.parent.kind == ts.SyntaxKind.ObjectLiteralExpression &&\n property.name && property.name.kind == ts.SyntaxKind.Identifier) {\n const propertyName = property.name as ts.Identifier;\n return names.has(propertyName.text);\n }\n }\n return false;\n}\n\nconst LOWERABLE_FIELD_NAMES = new Set(['useValue', 'useFactory', 'data']);\n\nexport class LowerMetadataCache implements RequestsMap {\n private collector: MetadataCollector;\n private metadataCache = new Map<string, MetadataAndLoweringRequests>();\n\n constructor(options: CollectorOptions, private strict?: boolean) {\n this.collector = new MetadataCollector(options);\n }\n\n getMetadata(sourceFile: ts.SourceFile): ModuleMetadata|undefined {\n return this.ensureMetadataAndRequests(sourceFile).metadata;\n }\n\n getRequests(sourceFile: ts.SourceFile): RequestLocationMap {\n return this.ensureMetadataAndRequests(sourceFile).requests;\n }\n\n private ensureMetadataAndRequests(sourceFile: ts.SourceFile): MetadataAndLoweringRequests {\n let result = this.metadataCache.get(sourceFile.fileName);\n if (!result) {\n result = this.getMetadataAndRequests(sourceFile);\n this.metadataCache.set(sourceFile.fileName, result);\n }\n return result;\n }\n\n private getMetadataAndRequests(sourceFile: ts.SourceFile): MetadataAndLoweringRequests {\n let identNumber = 0;\n const freshIdent = () => createLoweredSymbol(identNumber++);\n const requests = new Map<number, LoweringRequest>();\n\n const isExportedSymbol = (() => {\n let exportTable: Set<string>;\n return (node: ts.Node) => {\n if (node.kind == ts.SyntaxKind.Identifier) {\n const ident = node as ts.Identifier;\n\n if (!exportTable) {\n exportTable = createExportTableFor(sourceFile);\n }\n return exportTable.has(ident.text);\n }\n return false;\n };\n })();\n\n const isExportedPropertyAccess = (node: ts.Node) => {\n if (node.kind === ts.SyntaxKind.PropertyAccessExpression) {\n const pae = node as ts.PropertyAccessExpression;\n if (isExportedSymbol(pae.expression)) {\n return true;\n }\n }\n return false;\n };\n const replaceNode = (node: ts.Node) => {\n const name = freshIdent();\n requests.set(node.pos, {name, kind: node.kind, location: node.pos, end: node.end});\n return {__symbolic: 'reference', name};\n };\n\n const substituteExpression = (value: MetadataValue, node: ts.Node): MetadataValue => {\n if (!isPrimitive(value) && !isRewritten(value)) {\n if ((node.kind === ts.SyntaxKind.ArrowFunction ||\n node.kind === ts.SyntaxKind.FunctionExpression) &&\n shouldLower(node)) {\n return replaceNode(node);\n }\n if (isLiteralFieldNamed(node, LOWERABLE_FIELD_NAMES) && shouldLower(node) &&\n !isExportedSymbol(node) && !isExportedPropertyAccess(node)) {\n return replaceNode(node);\n }\n }\n return value;\n };\n\n // Do not validate or lower metadata in a declaration file. Declaration files are requested\n // when we need to update the version of the metadata to add information that might be missing\n // in the out-of-date version that can be recovered from the .d.ts file.\n const declarationFile = sourceFile.isDeclarationFile;\n const moduleFile = ts.isExternalModule(sourceFile);\n\n const metadata = this.collector.getMetadata(\n sourceFile, this.strict && !declarationFile,\n moduleFile && !declarationFile ? substituteExpression : undefined);\n\n return {metadata, requests};\n }\n}\n\nfunction createExportTableFor(sourceFile: ts.SourceFile): Set<string> {\n const exportTable = new Set<string>();\n // Lazily collect all the exports from the source file\n ts.forEachChild(sourceFile, function scan(node) {\n switch (node.kind) {\n case ts.SyntaxKind.ClassDeclaration:\n case ts.SyntaxKind.FunctionDeclaration:\n case ts.SyntaxKind.InterfaceDeclaration:\n if ((ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) != 0) {\n const classDeclaration =\n node as(ts.ClassDeclaration | ts.FunctionDeclaration | ts.InterfaceDeclaration);\n const name = classDeclaration.name;\n if (name) exportTable.add(name.text);\n }\n break;\n case ts.SyntaxKind.VariableStatement:\n const variableStatement = node as ts.VariableStatement;\n for (const declaration of variableStatement.declarationList.declarations) {\n scan(declaration);\n }\n break;\n case ts.SyntaxKind.VariableDeclaration:\n const variableDeclaration = node as ts.VariableDeclaration;\n if ((ts.getCombinedModifierFlags(node) & ts.ModifierFlags.Export) != 0 &&\n variableDeclaration.name.kind == ts.SyntaxKind.Identifier) {\n const name = variableDeclaration.name as ts.Identifier;\n exportTable.add(name.text);\n }\n break;\n case ts.SyntaxKind.ExportDeclaration:\n const exportDeclaration = node as ts.ExportDeclaration;\n const {moduleSpecifier, exportClause} = exportDeclaration;\n if (!moduleSpecifier && exportClause) {\n exportClause.elements.forEach(spec => { exportTable.add(spec.name.text); });\n }\n }\n });\n return exportTable;\n}\n"]}
package/src/version.js CHANGED
@@ -16,5 +16,5 @@ var compiler_1 = require("@angular/compiler");
16
16
  /**
17
17
  * @stable
18
18
  */
19
- exports.VERSION = new compiler_1.Version('5.2.1');
19
+ exports.VERSION = new compiler_1.Version('5.2.5');
20
20
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../packages/compiler-cli/src/version.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH;;;;GAIG;AAEH,8CAA0C;AAC1C;;GAEG;AACU,QAAA,OAAO,GAAG,IAAI,kBAAO,CAAC,mBAAmB,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/compiler';\n/**\n * @stable\n */\nexport const VERSION = new Version('5.2.1');\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../../packages/compiler-cli/src/version.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAEH;;;;GAIG;AAEH,8CAA0C;AAC1C;;GAEG;AACU,QAAA,OAAO,GAAG,IAAI,kBAAO,CAAC,mBAAmB,CAAC,CAAC","sourcesContent":["/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * @module\n * @description\n * Entry point for all public APIs of the common package.\n */\n\nimport {Version} from '@angular/compiler';\n/**\n * @stable\n */\nexport const VERSION = new Version('5.2.5');\n"]}