- Rename `DirectiveMetadata` into `CompileDirectiveMetadata`, merge with `NormalizedDirectiveMetadata` and remove `ChangeDetectionMetadata` - Store change detector factories not as array but directly at the `CompiledTemplate` or the embedded template to make instantiation easier later on - Already analyze variable values and map them to `Directive.exportAs` - Keep the directive sort order as specified in the `@View()` annotation - Allow to clear the runtime cache in `StyleCompiler` and `TemplateCompiler` - Ignore `script` elements to match the semantics of the current compiler - Make all components dynamically loadable and remove the previously introduced property `@Component#dynamicLoadable` for now until we find a better option to configure this - Don’t allow to specify bindings in `@View#directives` and `@View#pipes` as this was never supported by the transformer (see below for the breaking change) BREAKING CHANGE: - don't support DI bindings in `@View#directives` and `@View@pipes` any more in preparation of integrating the new compiler. Use `@Directive#bindings` to reexport directives under a different token instead. Part of #3605 Closes #4314
45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
import {StringWrapper, isBlank} from 'angular2/src/core/facade/lang';
|
|
|
|
var MODULE_REGEXP = /#MODULE\[([^\]]*)\]/g;
|
|
|
|
export function moduleRef(moduleId): string {
|
|
return `#MODULE[${moduleId}]`;
|
|
}
|
|
|
|
export class SourceModule {
|
|
constructor(public moduleId: string, public sourceWithModuleRefs: string) {}
|
|
|
|
getSourceWithImports(): SourceWithImports {
|
|
var moduleAliases = {};
|
|
var imports: string[][] = [];
|
|
var newSource =
|
|
StringWrapper.replaceAllMapped(this.sourceWithModuleRefs, MODULE_REGEXP, (match) => {
|
|
var moduleId = match[1];
|
|
var alias = moduleAliases[moduleId];
|
|
if (isBlank(alias)) {
|
|
if (moduleId == this.moduleId) {
|
|
alias = '';
|
|
} else {
|
|
alias = `import${imports.length}`;
|
|
imports.push([moduleId, alias]);
|
|
}
|
|
moduleAliases[moduleId] = alias;
|
|
}
|
|
return alias.length > 0 ? `${alias}.` : '';
|
|
});
|
|
return new SourceWithImports(newSource, imports);
|
|
}
|
|
}
|
|
|
|
export class SourceExpression {
|
|
constructor(public declarations: string[], public expression: string) {}
|
|
}
|
|
|
|
export class SourceExpressions {
|
|
constructor(public declarations: string[], public expressions: string[]) {}
|
|
}
|
|
|
|
export class SourceWithImports {
|
|
constructor(public source: string, public imports: string[][]) {}
|
|
}
|