@angular/compiler
Advanced tools
Comparing version 2.2.0 to 2.2.1
/** | ||
* @license Angular v2.2.0 | ||
* @license Angular v2.2.1 | ||
* (c) 2010-2016 Google, Inc. https://angular.io/ | ||
@@ -4,0 +4,0 @@ * License: MIT |
{ | ||
"name": "@angular/compiler", | ||
"version": "2.2.0", | ||
"version": "2.2.1", | ||
"description": "Angular - the compiler library", | ||
@@ -11,3 +11,3 @@ "main": "bundles/compiler.umd.js", | ||
"peerDependencies": { | ||
"@angular/core": "2.2.0" | ||
"@angular/core": "2.2.1" | ||
}, | ||
@@ -14,0 +14,0 @@ "repository": { |
@@ -45,3 +45,5 @@ /** | ||
var _ANIMATION_COLLECTED_STYLES = o.variable('collectedStyles'); | ||
var EMPTY_MAP = o.literalMap([]); | ||
var _PREVIOUS_ANIMATION_PLAYERS = o.variable('previousPlayers'); | ||
var _EMPTY_MAP = o.literalMap([]); | ||
var _EMPTY_ARRAY = o.literalArr([]); | ||
var _AnimationBuilder = (function () { | ||
@@ -97,6 +99,11 @@ function _AnimationBuilder(animationName, factoryName) { | ||
_AnimationBuilder.prototype._callAnimateMethod = function (ast, startingStylesExpr, keyframesExpr, context) { | ||
var previousStylesValue = _EMPTY_ARRAY; | ||
if (context.isExpectingFirstAnimateStep) { | ||
previousStylesValue = _PREVIOUS_ANIMATION_PLAYERS; | ||
context.isExpectingFirstAnimateStep = false; | ||
} | ||
context.totalTransitionTime += ast.duration + ast.delay; | ||
return _ANIMATION_FACTORY_RENDERER_VAR.callMethod('animate', [ | ||
_ANIMATION_FACTORY_ELEMENT_VAR, startingStylesExpr, keyframesExpr, o.literal(ast.duration), | ||
o.literal(ast.delay), o.literal(ast.easing) | ||
o.literal(ast.delay), o.literal(ast.easing), previousStylesValue | ||
]); | ||
@@ -131,2 +138,3 @@ }; | ||
context.isExpectingFirstStyleStep = true; | ||
context.isExpectingFirstAnimateStep = true; | ||
var stateChangePreconditions = []; | ||
@@ -157,9 +165,9 @@ ast.stateChanges.forEach(function (stateChange) { | ||
var statements = []; | ||
statements.push(_ANIMATION_FACTORY_VIEW_CONTEXT | ||
.callMethod('cancelActiveAnimation', [ | ||
statements.push(_PREVIOUS_ANIMATION_PLAYERS | ||
.set(_ANIMATION_FACTORY_VIEW_CONTEXT.callMethod('getAnimationPlayers', [ | ||
_ANIMATION_FACTORY_ELEMENT_VAR, o.literal(this.animationName), | ||
_ANIMATION_NEXT_STATE_VAR.equals(o.literal(EMPTY_STATE)) | ||
]) | ||
.toStmt()); | ||
statements.push(_ANIMATION_COLLECTED_STYLES.set(EMPTY_MAP).toDeclStmt()); | ||
])) | ||
.toDeclStmt()); | ||
statements.push(_ANIMATION_COLLECTED_STYLES.set(_EMPTY_MAP).toDeclStmt()); | ||
statements.push(_ANIMATION_PLAYER_VAR.set(o.NULL_EXPR).toDeclStmt()); | ||
@@ -176,12 +184,2 @@ statements.push(_ANIMATION_TIME_VAR.set(o.literal(0)).toDeclStmt()); | ||
var RENDER_STYLES_FN = o.importExpr(resolveIdentifier(Identifiers.renderStyles)); | ||
// before we start any animation we want to clear out the starting | ||
// styles from the element's style property (since they were placed | ||
// there at the end of the last animation | ||
statements.push(RENDER_STYLES_FN | ||
.callFn([ | ||
_ANIMATION_FACTORY_ELEMENT_VAR, _ANIMATION_FACTORY_RENDERER_VAR, | ||
o.importExpr(resolveIdentifier(Identifiers.clearStyles)) | ||
.callFn([_ANIMATION_START_STATE_STYLES_VAR]) | ||
]) | ||
.toStmt()); | ||
ast.stateTransitions.forEach(function (transAst) { return statements.push(transAst.visit(_this, context)); }); | ||
@@ -212,2 +210,16 @@ // this check ensures that the animation factory always returns a player | ||
.toStmt()); | ||
statements.push(o.importExpr(resolveIdentifier(Identifiers.AnimationSequencePlayer)) | ||
.instantiate([_PREVIOUS_ANIMATION_PLAYERS]) | ||
.callMethod('destroy', []) | ||
.toStmt()); | ||
// before we start any animation we want to clear out the starting | ||
// styles from the element's style property (since they were placed | ||
// there at the end of the last animation | ||
statements.push(RENDER_STYLES_FN | ||
.callFn([ | ||
_ANIMATION_FACTORY_ELEMENT_VAR, _ANIMATION_FACTORY_RENDERER_VAR, | ||
o.importExpr(resolveIdentifier(Identifiers.clearStyles)) | ||
.callFn([_ANIMATION_START_STATE_STYLES_VAR]) | ||
]) | ||
.toStmt()); | ||
statements.push(_ANIMATION_FACTORY_VIEW_CONTEXT | ||
@@ -237,3 +249,3 @@ .callMethod('queueAnimation', [ | ||
var value = context.stateMap.states[stateName]; | ||
var variableValue = EMPTY_MAP; | ||
var variableValue = _EMPTY_MAP; | ||
if (isPresent(value)) { | ||
@@ -257,2 +269,3 @@ var styleMap_1 = []; | ||
this.isExpectingFirstStyleStep = false; | ||
this.isExpectingFirstAnimateStep = false; | ||
this.totalTransitionTime = 0; | ||
@@ -259,0 +272,0 @@ } |
@@ -369,3 +369,3 @@ /** | ||
exportedModules: CompileNgModuleDirectiveSummary[]; | ||
loadingPromises: Promise<any>[]; | ||
directiveLoaders: (() => Promise<void>)[]; | ||
} | ||
@@ -416,6 +416,6 @@ export declare type CompileNgModuleSummary = CompileNgModuleInjectorSummary & CompileNgModuleDirectiveSummary; | ||
pipes: CompileIdentifierMetadata[]; | ||
loadingPromises: Promise<any>[]; | ||
directiveLoaders: (() => Promise<void>)[]; | ||
directivesSet: Set<any>; | ||
pipesSet: Set<any>; | ||
constructor(modules: CompileNgModuleInjectorSummary[], providers: CompileProviderMetadata[], entryComponents: CompileIdentifierMetadata[], directives: CompileIdentifierMetadata[], pipes: CompileIdentifierMetadata[], loadingPromises: Promise<any>[]); | ||
constructor(modules: CompileNgModuleInjectorSummary[], providers: CompileProviderMetadata[], entryComponents: CompileIdentifierMetadata[], directives: CompileIdentifierMetadata[], pipes: CompileIdentifierMetadata[], directiveLoaders: (() => Promise<void>)[]); | ||
} | ||
@@ -422,0 +422,0 @@ export declare function removeIdentifierDuplicates<T extends CompileMetadataWithIdentifier>(items: T[]): T[]; |
@@ -463,3 +463,3 @@ /** | ||
exportedPipes: this.exportedPipes, | ||
loadingPromises: this.transitiveModule.loadingPromises | ||
directiveLoaders: this.transitiveModule.directiveLoaders | ||
}; | ||
@@ -484,3 +484,3 @@ }; | ||
exportedModules: this.exportedModules, | ||
loadingPromises: this.transitiveModule.loadingPromises | ||
directiveLoaders: this.transitiveModule.directiveLoaders | ||
}; | ||
@@ -491,3 +491,3 @@ }; | ||
export var TransitiveCompileNgModuleMetadata = (function () { | ||
function TransitiveCompileNgModuleMetadata(modules, providers, entryComponents, directives, pipes, loadingPromises) { | ||
function TransitiveCompileNgModuleMetadata(modules, providers, entryComponents, directives, pipes, directiveLoaders) { | ||
var _this = this; | ||
@@ -499,3 +499,3 @@ this.modules = modules; | ||
this.pipes = pipes; | ||
this.loadingPromises = loadingPromises; | ||
this.directiveLoaders = directiveLoaders; | ||
this.directivesSet = new Set(); | ||
@@ -502,0 +502,0 @@ this.pipesSet = new Set(); |
@@ -0,1 +1,8 @@ | ||
/** | ||
* @license | ||
* Copyright Google Inc. All Rights Reserved. | ||
* | ||
* Use of this source code is governed by an MIT-style license that can be | ||
* found in the LICENSE file at https://angular.io/license | ||
*/ | ||
import * as ml from '../../ml_parser/ast'; | ||
@@ -2,0 +9,0 @@ import { HtmlParser } from '../../ml_parser/html_parser'; |
@@ -8,3 +8,2 @@ /** | ||
*/ | ||
import { ListWrapper } from '../../facade/collection'; | ||
import * as ml from '../../ml_parser/ast'; | ||
@@ -123,3 +122,4 @@ import { XmlParser } from '../../ml_parser/xml_parser'; | ||
this._isInIcu = false; | ||
return ListWrapper.flatten(nodes.map(function (node) { return node.visit(_this); })); | ||
return (_a = []).concat.apply(_a, nodes.map(function (node) { return node.visit(_this); })); | ||
var _a; | ||
}; | ||
@@ -126,0 +126,0 @@ return _WriteVisitor; |
@@ -0,1 +1,8 @@ | ||
/** | ||
* @license | ||
* Copyright Google Inc. All Rights Reserved. | ||
* | ||
* Use of this source code is governed by an MIT-style license that can be | ||
* found in the LICENSE file at https://angular.io/license | ||
*/ | ||
import * as html from '../../ml_parser/ast'; | ||
@@ -2,0 +9,0 @@ import * as i18n from '../i18n_ast'; |
@@ -8,3 +8,2 @@ /** | ||
*/ | ||
import { ListWrapper } from '../../facade/collection'; | ||
import * as xml from './xml_helper'; | ||
@@ -86,3 +85,4 @@ var _MESSAGES_TAG = 'messagebundle'; | ||
var _this = this; | ||
return ListWrapper.flatten(nodes.map(function (node) { return node.visit(_this); })); | ||
return (_a = []).concat.apply(_a, nodes.map(function (node) { return node.visit(_this); })); | ||
var _a; | ||
}; | ||
@@ -89,0 +89,0 @@ return _Visitor; |
@@ -40,2 +40,3 @@ /** | ||
private _loadDirectiveMetadata(directiveType, isSync); | ||
getNonNormalizedDirectiveMetadata(directiveType: any): cpl.CompileDirectiveMetadata; | ||
/** | ||
@@ -64,2 +65,6 @@ * Gets the metadata for the given directive. | ||
}; | ||
/** | ||
* Get the NgModule metadata without loading the directives. | ||
*/ | ||
getUnloadedNgModuleMetadata(moduleType: any, isSync: boolean, throwIfNotFound?: boolean): cpl.CompileNgModuleMetadata; | ||
private _loadNgModuleMetadata(moduleType, isSync, throwIfNotFound?); | ||
@@ -78,2 +83,3 @@ private _getTypeDescriptor(type); | ||
getPipeSummary(pipeType: any): cpl.CompilePipeSummary; | ||
getOrLoadPipeMetadata(pipeType: any): cpl.CompilePipeMetadata; | ||
private _loadPipeMetadata(pipeType); | ||
@@ -80,0 +86,0 @@ private _getDependenciesMetadata(typeOrFunc, dependencies); |
@@ -134,2 +134,58 @@ /** | ||
directiveType = resolveForwardRef(directiveType); | ||
var nonNormalizedMetadata = this.getNonNormalizedDirectiveMetadata(directiveType); | ||
var createDirectiveMetadata = function (templateMetadata) { | ||
var normalizedDirMeta = new cpl.CompileDirectiveMetadata({ | ||
type: nonNormalizedMetadata.type, | ||
isComponent: nonNormalizedMetadata.isComponent, | ||
selector: nonNormalizedMetadata.selector, | ||
exportAs: nonNormalizedMetadata.exportAs, | ||
changeDetection: nonNormalizedMetadata.changeDetection, | ||
inputs: nonNormalizedMetadata.inputs, | ||
outputs: nonNormalizedMetadata.outputs, | ||
hostListeners: nonNormalizedMetadata.hostListeners, | ||
hostProperties: nonNormalizedMetadata.hostProperties, | ||
hostAttributes: nonNormalizedMetadata.hostAttributes, | ||
providers: nonNormalizedMetadata.providers, | ||
viewProviders: nonNormalizedMetadata.viewProviders, | ||
queries: nonNormalizedMetadata.queries, | ||
viewQueries: nonNormalizedMetadata.viewQueries, | ||
entryComponents: nonNormalizedMetadata.entryComponents, | ||
template: templateMetadata | ||
}); | ||
_this._directiveCache.set(directiveType, normalizedDirMeta); | ||
_this._directiveSummaryCache.set(directiveType, normalizedDirMeta.toSummary()); | ||
return normalizedDirMeta; | ||
}; | ||
if (nonNormalizedMetadata.isComponent) { | ||
var templateMeta = this._directiveNormalizer.normalizeTemplate({ | ||
componentType: directiveType, | ||
moduleUrl: nonNormalizedMetadata.type.moduleUrl, | ||
encapsulation: nonNormalizedMetadata.template.encapsulation, | ||
template: nonNormalizedMetadata.template.template, | ||
templateUrl: nonNormalizedMetadata.template.templateUrl, | ||
styles: nonNormalizedMetadata.template.styles, | ||
styleUrls: nonNormalizedMetadata.template.styleUrls, | ||
animations: nonNormalizedMetadata.template.animations, | ||
interpolation: nonNormalizedMetadata.template.interpolation | ||
}); | ||
if (templateMeta.syncResult) { | ||
createDirectiveMetadata(templateMeta.syncResult); | ||
return null; | ||
} | ||
else { | ||
if (isSync) { | ||
throw new ComponentStillLoadingError(directiveType); | ||
} | ||
return templateMeta.asyncResult.then(createDirectiveMetadata); | ||
} | ||
} | ||
else { | ||
// directive | ||
createDirectiveMetadata(null); | ||
return null; | ||
} | ||
}; | ||
CompileMetadataResolver.prototype.getNonNormalizedDirectiveMetadata = function (directiveType) { | ||
var _this = this; | ||
directiveType = resolveForwardRef(directiveType); | ||
var dirMeta = this._directiveResolver.resolve(directiveType); | ||
@@ -140,59 +196,3 @@ if (!dirMeta) { | ||
var moduleUrl = staticTypeModuleUrl(directiveType); | ||
var createDirectiveMetadata = function (templateMeta) { | ||
var changeDetectionStrategy = null; | ||
var viewProviders = []; | ||
var entryComponentMetadata = []; | ||
var selector = dirMeta.selector; | ||
if (dirMeta instanceof Component) { | ||
// Component | ||
changeDetectionStrategy = dirMeta.changeDetection; | ||
if (dirMeta.viewProviders) { | ||
viewProviders = _this._getProvidersMetadata(dirMeta.viewProviders, entryComponentMetadata, "viewProviders for \"" + stringify(directiveType) + "\""); | ||
} | ||
if (dirMeta.entryComponents) { | ||
entryComponentMetadata = | ||
flattenAndDedupeArray(dirMeta.entryComponents) | ||
.map(function (type) { return _this._getIdentifierMetadata(type, staticTypeModuleUrl(type)); }) | ||
.concat(entryComponentMetadata); | ||
} | ||
if (!selector) { | ||
selector = _this._schemaRegistry.getDefaultComponentElementName(); | ||
} | ||
} | ||
else { | ||
// Directive | ||
if (!selector) { | ||
throw new Error("Directive " + stringify(directiveType) + " has no selector, please add it!"); | ||
} | ||
} | ||
var providers = []; | ||
if (isPresent(dirMeta.providers)) { | ||
providers = _this._getProvidersMetadata(dirMeta.providers, entryComponentMetadata, "providers for \"" + stringify(directiveType) + "\""); | ||
} | ||
var queries = []; | ||
var viewQueries = []; | ||
if (isPresent(dirMeta.queries)) { | ||
queries = _this._getQueriesMetadata(dirMeta.queries, false, directiveType); | ||
viewQueries = _this._getQueriesMetadata(dirMeta.queries, true, directiveType); | ||
} | ||
var meta = cpl.CompileDirectiveMetadata.create({ | ||
selector: selector, | ||
exportAs: dirMeta.exportAs, | ||
isComponent: !!templateMeta, | ||
type: _this._getTypeMetadata(directiveType, moduleUrl), | ||
template: templateMeta, | ||
changeDetection: changeDetectionStrategy, | ||
inputs: dirMeta.inputs, | ||
outputs: dirMeta.outputs, | ||
host: dirMeta.host, | ||
providers: providers, | ||
viewProviders: viewProviders, | ||
queries: queries, | ||
viewQueries: viewQueries, | ||
entryComponents: entryComponentMetadata | ||
}); | ||
_this._directiveCache.set(directiveType, meta); | ||
_this._directiveSummaryCache.set(directiveType, meta.toSummary()); | ||
return meta; | ||
}; | ||
var nonNormalizedTemplateMetadata; | ||
if (dirMeta instanceof Component) { | ||
@@ -207,5 +207,3 @@ // component | ||
null; | ||
var templateMeta = this._directiveNormalizer.normalizeTemplate({ | ||
componentType: directiveType, | ||
moduleUrl: moduleUrl, | ||
nonNormalizedTemplateMetadata = new cpl.CompileTemplateMetadata({ | ||
encapsulation: dirMeta.encapsulation, | ||
@@ -219,18 +217,55 @@ template: dirMeta.template, | ||
}); | ||
if (templateMeta.syncResult) { | ||
createDirectiveMetadata(templateMeta.syncResult); | ||
return null; | ||
} | ||
var changeDetectionStrategy = null; | ||
var viewProviders = []; | ||
var entryComponentMetadata = []; | ||
var selector = dirMeta.selector; | ||
if (dirMeta instanceof Component) { | ||
// Component | ||
changeDetectionStrategy = dirMeta.changeDetection; | ||
if (dirMeta.viewProviders) { | ||
viewProviders = this._getProvidersMetadata(dirMeta.viewProviders, entryComponentMetadata, "viewProviders for \"" + stringify(directiveType) + "\""); | ||
} | ||
else { | ||
if (isSync) { | ||
throw new ComponentStillLoadingError(directiveType); | ||
} | ||
return templateMeta.asyncResult.then(createDirectiveMetadata); | ||
if (dirMeta.entryComponents) { | ||
entryComponentMetadata = | ||
flattenAndDedupeArray(dirMeta.entryComponents) | ||
.map(function (type) { return _this._getIdentifierMetadata(type, staticTypeModuleUrl(type)); }) | ||
.concat(entryComponentMetadata); | ||
} | ||
if (!selector) { | ||
selector = this._schemaRegistry.getDefaultComponentElementName(); | ||
} | ||
} | ||
else { | ||
// directive | ||
createDirectiveMetadata(null); | ||
return null; | ||
// Directive | ||
if (!selector) { | ||
throw new Error("Directive " + stringify(directiveType) + " has no selector, please add it!"); | ||
} | ||
} | ||
var providers = []; | ||
if (isPresent(dirMeta.providers)) { | ||
providers = this._getProvidersMetadata(dirMeta.providers, entryComponentMetadata, "providers for \"" + stringify(directiveType) + "\""); | ||
} | ||
var queries = []; | ||
var viewQueries = []; | ||
if (isPresent(dirMeta.queries)) { | ||
queries = this._getQueriesMetadata(dirMeta.queries, false, directiveType); | ||
viewQueries = this._getQueriesMetadata(dirMeta.queries, true, directiveType); | ||
} | ||
return cpl.CompileDirectiveMetadata.create({ | ||
selector: selector, | ||
exportAs: dirMeta.exportAs, | ||
isComponent: !!nonNormalizedTemplateMetadata, | ||
type: this._getTypeMetadata(directiveType, moduleUrl), | ||
template: nonNormalizedTemplateMetadata, | ||
changeDetection: changeDetectionStrategy, | ||
inputs: dirMeta.inputs, | ||
outputs: dirMeta.outputs, | ||
host: dirMeta.host, | ||
providers: providers, | ||
viewProviders: viewProviders, | ||
queries: queries, | ||
viewQueries: viewQueries, | ||
entryComponents: entryComponentMetadata | ||
}); | ||
}; | ||
@@ -283,5 +318,14 @@ /** | ||
var ngModule = this._loadNgModuleMetadata(moduleType, isSync, throwIfNotFound); | ||
var loading = ngModule ? Promise.all(ngModule.transitiveModule.loadingPromises) : Promise.resolve(null); | ||
var loading = ngModule ? | ||
Promise.all(ngModule.transitiveModule.directiveLoaders.map(function (loader) { return loader(); })) : | ||
Promise.resolve(null); | ||
return { ngModule: ngModule, loading: loading }; | ||
}; | ||
/** | ||
* Get the NgModule metadata without loading the directives. | ||
*/ | ||
CompileMetadataResolver.prototype.getUnloadedNgModuleMetadata = function (moduleType, isSync, throwIfNotFound) { | ||
if (throwIfNotFound === void 0) { throwIfNotFound = true; } | ||
return this._loadNgModuleMetadata(moduleType, isSync, throwIfNotFound); | ||
}; | ||
CompileMetadataResolver.prototype._loadNgModuleMetadata = function (moduleType, isSync, throwIfNotFound) { | ||
@@ -361,6 +405,3 @@ var _this = this; | ||
_this._addTypeToModule(declaredType, moduleType); | ||
var loadingPromise = _this._loadDirectiveMetadata(declaredType, isSync); | ||
if (loadingPromise) { | ||
transitiveModule.loadingPromises.push(loadingPromise); | ||
} | ||
transitiveModule.directiveLoaders.push(function () { return _this._loadDirectiveMetadata(declaredType, isSync); }); | ||
} | ||
@@ -468,4 +509,4 @@ else if (_this._pipeResolver.isPipe(declaredType)) { | ||
var pipes = flattenArray(transitiveExportedModules.map(function (ngModule) { return ngModule.exportedPipes; })); | ||
var loadingPromises = ListWrapper.flatten(transitiveExportedModules.map(function (ngModule) { return ngModule.loadingPromises; })); | ||
return new cpl.TransitiveCompileNgModuleMetadata(transitiveModules, providers, entryComponents, directives, pipes, loadingPromises); | ||
var directiveLoaders = ListWrapper.flatten(transitiveExportedModules.map(function (ngModule) { return ngModule.directiveLoaders; })); | ||
return new cpl.TransitiveCompileNgModuleMetadata(transitiveModules, providers, entryComponents, directives, pipes, directiveLoaders); | ||
}; | ||
@@ -515,15 +556,20 @@ CompileMetadataResolver.prototype._getIdentifierMetadata = function (type, moduleUrl) { | ||
}; | ||
CompileMetadataResolver.prototype.getOrLoadPipeMetadata = function (pipeType) { | ||
var pipeMeta = this._pipeCache.get(pipeType); | ||
if (!pipeMeta) { | ||
pipeMeta = this._loadPipeMetadata(pipeType); | ||
} | ||
return pipeMeta; | ||
}; | ||
CompileMetadataResolver.prototype._loadPipeMetadata = function (pipeType) { | ||
pipeType = resolveForwardRef(pipeType); | ||
var pipeMeta = this._pipeResolver.resolve(pipeType); | ||
if (!pipeMeta) { | ||
return null; | ||
} | ||
var meta = new cpl.CompilePipeMetadata({ | ||
var pipeAnnotation = this._pipeResolver.resolve(pipeType); | ||
var pipeMeta = new cpl.CompilePipeMetadata({ | ||
type: this._getTypeMetadata(pipeType, staticTypeModuleUrl(pipeType)), | ||
name: pipeMeta.name, | ||
pure: pipeMeta.pure | ||
name: pipeAnnotation.name, | ||
pure: pipeAnnotation.pure | ||
}); | ||
this._pipeCache.set(pipeType, meta); | ||
this._pipeSummaryCache.set(pipeType, meta.toSummary()); | ||
this._pipeCache.set(pipeType, pipeMeta); | ||
this._pipeSummaryCache.set(pipeType, pipeMeta.toSummary()); | ||
return pipeMeta; | ||
}; | ||
@@ -530,0 +576,0 @@ CompileMetadataResolver.prototype._getDependenciesMetadata = function (typeOrFunc, dependencies) { |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":1,"metadata":{"CompileMetadataResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./ng_module_resolver","name":"NgModuleResolver"},{"__symbolic":"reference","module":"./directive_resolver","name":"DirectiveResolver"},{"__symbolic":"reference","module":"./pipe_resolver","name":"PipeResolver"},{"__symbolic":"reference","module":"./schema/element_schema_registry","name":"ElementSchemaRegistry"},{"__symbolic":"reference","module":"./directive_normalizer","name":"DirectiveNormalizer"},{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"sanitizeTokenName":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"getAnimationEntryMetadata":[{"__symbolic":"method"}],"_getAnimationStateMetadata":[{"__symbolic":"method"}],"_getAnimationStyleMetadata":[{"__symbolic":"method"}],"_getAnimationMetadata":[{"__symbolic":"method"}],"_loadDirectiveMetadata":[{"__symbolic":"method"}],"getDirectiveMetadata":[{"__symbolic":"method"}],"getDirectiveSummary":[{"__symbolic":"method"}],"isDirective":[{"__symbolic":"method"}],"isPipe":[{"__symbolic":"method"}],"getNgModuleMetadata":[{"__symbolic":"method"}],"_loadNgModuleSummary":[{"__symbolic":"method"}],"loadNgModuleMetadata":[{"__symbolic":"method"}],"_loadNgModuleMetadata":[{"__symbolic":"method"}],"_getTypeDescriptor":[{"__symbolic":"method"}],"_addTypeToModule":[{"__symbolic":"method"}],"_getTransitiveNgModuleMetadata":[{"__symbolic":"method"}],"_getIdentifierMetadata":[{"__symbolic":"method"}],"_getTypeMetadata":[{"__symbolic":"method"}],"_getFactoryMetadata":[{"__symbolic":"method"}],"getPipeMetadata":[{"__symbolic":"method"}],"getPipeSummary":[{"__symbolic":"method"}],"_loadPipeMetadata":[{"__symbolic":"method"}],"_getDependenciesMetadata":[{"__symbolic":"method"}],"_getTokenMetadata":[{"__symbolic":"method"}],"_getProvidersMetadata":[{"__symbolic":"method"}],"_getEntryComponentsFromProvider":[{"__symbolic":"method"}],"getProviderMetadata":[{"__symbolic":"method"}],"_getQueriesMetadata":[{"__symbolic":"method"}],"_queryVarBindings":[{"__symbolic":"method"}],"_getQueryMetadata":[{"__symbolic":"method"}]}}}} | ||
{"__symbolic":"module","version":1,"metadata":{"CompileMetadataResolver":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable"}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"./ng_module_resolver","name":"NgModuleResolver"},{"__symbolic":"reference","module":"./directive_resolver","name":"DirectiveResolver"},{"__symbolic":"reference","module":"./pipe_resolver","name":"PipeResolver"},{"__symbolic":"reference","module":"./schema/element_schema_registry","name":"ElementSchemaRegistry"},{"__symbolic":"reference","module":"./directive_normalizer","name":"DirectiveNormalizer"},{"__symbolic":"reference","module":"./private_import_core","name":"ReflectorReader"}]}],"sanitizeTokenName":[{"__symbolic":"method"}],"clearCacheFor":[{"__symbolic":"method"}],"clearCache":[{"__symbolic":"method"}],"getAnimationEntryMetadata":[{"__symbolic":"method"}],"_getAnimationStateMetadata":[{"__symbolic":"method"}],"_getAnimationStyleMetadata":[{"__symbolic":"method"}],"_getAnimationMetadata":[{"__symbolic":"method"}],"_loadDirectiveMetadata":[{"__symbolic":"method"}],"getNonNormalizedDirectiveMetadata":[{"__symbolic":"method"}],"getDirectiveMetadata":[{"__symbolic":"method"}],"getDirectiveSummary":[{"__symbolic":"method"}],"isDirective":[{"__symbolic":"method"}],"isPipe":[{"__symbolic":"method"}],"getNgModuleMetadata":[{"__symbolic":"method"}],"_loadNgModuleSummary":[{"__symbolic":"method"}],"loadNgModuleMetadata":[{"__symbolic":"method"}],"getUnloadedNgModuleMetadata":[{"__symbolic":"method"}],"_loadNgModuleMetadata":[{"__symbolic":"method"}],"_getTypeDescriptor":[{"__symbolic":"method"}],"_addTypeToModule":[{"__symbolic":"method"}],"_getTransitiveNgModuleMetadata":[{"__symbolic":"method"}],"_getIdentifierMetadata":[{"__symbolic":"method"}],"_getTypeMetadata":[{"__symbolic":"method"}],"_getFactoryMetadata":[{"__symbolic":"method"}],"getPipeMetadata":[{"__symbolic":"method"}],"getPipeSummary":[{"__symbolic":"method"}],"getOrLoadPipeMetadata":[{"__symbolic":"method"}],"_loadPipeMetadata":[{"__symbolic":"method"}],"_getDependenciesMetadata":[{"__symbolic":"method"}],"_getTokenMetadata":[{"__symbolic":"method"}],"_getProvidersMetadata":[{"__symbolic":"method"}],"_getEntryComponentsFromProvider":[{"__symbolic":"method"}],"getProviderMetadata":[{"__symbolic":"method"}],"_getQueriesMetadata":[{"__symbolic":"method"}],"_queryVarBindings":[{"__symbolic":"method"}],"_getQueryMetadata":[{"__symbolic":"method"}]}}}} |
@@ -16,5 +16,4 @@ import { AnimationParser } from './animation/animation_parser'; | ||
} | ||
export declare function analyzeNgModules(programStaticSymbols: StaticSymbol[], options: { | ||
transitiveModules: boolean; | ||
}, metadataResolver: CompileMetadataResolver): Promise<{ | ||
export interface NgAnalyzedModules { | ||
ngModules: CompileNgModuleMetadata[]; | ||
ngModuleByPipeOrDirective: Map<StaticSymbol, CompileNgModuleMetadata>; | ||
@@ -26,3 +25,11 @@ files: Array<{ | ||
}>; | ||
}>; | ||
symbolsMissingModule?: StaticSymbol[]; | ||
} | ||
export declare function analyzeNgModules(programStaticSymbols: StaticSymbol[], options: { | ||
transitiveModules: boolean; | ||
}, metadataResolver: CompileMetadataResolver): NgAnalyzedModules; | ||
export declare function analyzeAndValidateNgModules(programStaticSymbols: StaticSymbol[], options: { | ||
transitiveModules: boolean; | ||
}, metadataResolver: CompileMetadataResolver): NgAnalyzedModules; | ||
export declare function loadNgModuleDirectives(ngModules: CompileNgModuleMetadata[]): Promise<void>; | ||
export declare class OfflineCompiler { | ||
@@ -29,0 +36,0 @@ private _metadataResolver; |
@@ -24,5 +24,20 @@ /** | ||
export function analyzeNgModules(programStaticSymbols, options, metadataResolver) { | ||
return _loadNgModules(programStaticSymbols, options, metadataResolver).then(_analyzeNgModules); | ||
var _a = _createNgModules(programStaticSymbols, options, metadataResolver), ngModules = _a.ngModules, symbolsMissingModule = _a.symbolsMissingModule; | ||
return _analyzeNgModules(ngModules, symbolsMissingModule); | ||
} | ||
function _analyzeNgModules(ngModuleMetas) { | ||
export function analyzeAndValidateNgModules(programStaticSymbols, options, metadataResolver) { | ||
var result = analyzeNgModules(programStaticSymbols, options, metadataResolver); | ||
if (result.symbolsMissingModule && result.symbolsMissingModule.length) { | ||
var messages = result.symbolsMissingModule.map(function (s) { return ("Cannot determine the module for class " + s.name + " in " + s.filePath + "!"); }); | ||
throw new Error(messages.join('\n')); | ||
} | ||
return result; | ||
} | ||
// Wait for the directives in the given modules have been loaded | ||
export function loadNgModuleDirectives(ngModules) { | ||
return Promise | ||
.all(ListWrapper.flatten(ngModules.map(function (ngModule) { return ngModule.transitiveModule.directiveLoaders.map(function (loader) { return loader(); }); }))) | ||
.then(function () { }); | ||
} | ||
function _analyzeNgModules(ngModuleMetas, symbolsMissingModule) { | ||
var moduleMetasByRef = new Map(); | ||
@@ -65,2 +80,3 @@ ngModuleMetas.forEach(function (ngModule) { return moduleMetasByRef.set(ngModule.type.reference, ngModule); }); | ||
files: files, | ||
ngModules: ngModuleMetas, symbolsMissingModule: symbolsMissingModule | ||
}; | ||
@@ -85,5 +101,4 @@ } | ||
var _this = this; | ||
return analyzeNgModules(staticSymbols, options, this._metadataResolver) | ||
.then(function (_a) { | ||
var ngModuleByPipeOrDirective = _a.ngModuleByPipeOrDirective, files = _a.files; | ||
var _a = analyzeAndValidateNgModules(staticSymbols, options, this._metadataResolver), ngModuleByPipeOrDirective = _a.ngModuleByPipeOrDirective, files = _a.files, ngModules = _a.ngModules; | ||
return loadNgModuleDirectives(ngModules).then(function () { | ||
var sourceModules = files.map(function (file) { return _this._compileSrcFile(file.srcUrl, ngModuleByPipeOrDirective, file.directives, file.ngModules); }); | ||
@@ -248,7 +263,6 @@ return ListWrapper.flatten(sourceModules); | ||
// are also declared by a module. | ||
function _loadNgModules(programStaticSymbols, options, metadataResolver) { | ||
function _createNgModules(programStaticSymbols, options, metadataResolver) { | ||
var ngModules = new Map(); | ||
var programPipesAndDirectives = []; | ||
var ngModulePipesAndDirective = new Set(); | ||
var loadingPromises = []; | ||
var addNgModule = function (staticSymbol) { | ||
@@ -258,6 +272,5 @@ if (ngModules.has(staticSymbol)) { | ||
} | ||
var _a = metadataResolver.loadNgModuleMetadata(staticSymbol, false, false), ngModule = _a.ngModule, loading = _a.loading; | ||
var ngModule = metadataResolver.getUnloadedNgModuleMetadata(staticSymbol, false, false); | ||
if (ngModule) { | ||
ngModules.set(ngModule.type.reference, ngModule); | ||
loadingPromises.push(loading); | ||
ngModule.declaredDirectives.forEach(function (dir) { return ngModulePipesAndDirective.add(dir.reference); }); | ||
@@ -280,8 +293,4 @@ ngModule.declaredPipes.forEach(function (pipe) { return ngModulePipesAndDirective.add(pipe.reference); }); | ||
var symbolsMissingModule = programPipesAndDirectives.filter(function (s) { return !ngModulePipesAndDirective.has(s); }); | ||
if (symbolsMissingModule.length) { | ||
var messages = symbolsMissingModule.map(function (s) { return ("Cannot determine the module for class " + s.name + " in " + s.filePath + "!"); }); | ||
throw new Error(messages.join('\n')); | ||
} | ||
return Promise.all(loadingPromises).then(function () { return Array.from(ngModules.values()); }); | ||
return { ngModules: Array.from(ngModules.values()), symbolsMissingModule: symbolsMissingModule }; | ||
} | ||
//# sourceMappingURL=offline_compiler.js.map |
@@ -1,1 +0,1 @@ | ||
{"__symbolic":"module","version":1,"metadata":{"analyzeNgModules":{"__symbolic":"function","parameters":["programStaticSymbols","options","metadataResolver"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":39,"character":9,"context":{"name":"_analyzeNgModules"}}}}} | ||
{"__symbolic":"module","version":1,"metadata":{"loadNgModuleDirectives":{"__symbolic":"function","parameters":["ngModules"],"value":{"__symbolic":"error","message":"Function call not supported","line":63,"character":12}}}} |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
4137601
45430