refactor(compiler): split compiler and core (#18683)
After this, neither @angular/compiler nor @angular/comnpiler-cli depend on @angular/core. This add a duplication of some interfaces and enums which is stored in @angular/compiler/src/core.ts BREAKING CHANGE: - `@angular/platform-server` now additionally depends on `@angular/platform-browser-dynamic` as a peer dependency. PR Close #18683
This commit is contained in:

committed by
Miško Hevery

parent
a0ca01d580
commit
0cc77b4a69
149
packages/platform-browser-dynamic/src/compiler_reflector.ts
Normal file
149
packages/platform-browser-dynamic/src/compiler_reflector.ts
Normal file
@ -0,0 +1,149 @@
|
||||
/**
|
||||
* @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 {CompileReflector, ExternalReference, Identifiers, getUrlScheme, syntaxError} from '@angular/compiler';
|
||||
import {ANALYZE_FOR_ENTRY_COMPONENTS, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentFactory, ComponentFactoryResolver, ComponentRef, ElementRef, Inject, InjectionToken, Injector, LOCALE_ID, NgModuleFactory, NgModuleRef, Optional, PACKAGE_ROOT_URL, PlatformRef, QueryList, Renderer, SecurityContext, StaticProvider, TRANSLATIONS, TRANSLATIONS_FORMAT, TemplateRef, Type, ViewContainerRef, ViewEncapsulation, createPlatformFactory, isDevMode, platformCore, ɵCodegenComponentFactoryResolver, ɵConsole as Console, ɵEMPTY_ARRAY, ɵEMPTY_MAP, ɵReflectionCapabilities as ReflectionCapabilities, ɵand, ɵccf, ɵcmf, ɵcrt, ɵdid, ɵeld, ɵinlineInterpolate, ɵinterpolate, ɵmod, ɵmpd, ɵncd, ɵnov, ɵpad, ɵpid, ɵpod, ɵppd, ɵprd, ɵqud, ɵregisterModuleFactory, ɵstringify as stringify, ɵted, ɵunv, ɵvid} from '@angular/core';
|
||||
|
||||
export const MODULE_SUFFIX = '';
|
||||
const builtinExternalReferences = createBuiltinExternalReferencesMap();
|
||||
|
||||
export class JitReflector implements CompileReflector {
|
||||
private reflectionCapabilities: ReflectionCapabilities;
|
||||
private builtinExternalReferences = new Map<ExternalReference, any>();
|
||||
constructor() { this.reflectionCapabilities = new ReflectionCapabilities(); }
|
||||
componentModuleUrl(type: any, cmpMetadata: Component): string {
|
||||
const moduleId = cmpMetadata.moduleId;
|
||||
|
||||
if (typeof moduleId === 'string') {
|
||||
const scheme = getUrlScheme(moduleId);
|
||||
return scheme ? moduleId : `package:${moduleId}${MODULE_SUFFIX}`;
|
||||
} else if (moduleId !== null && moduleId !== void 0) {
|
||||
throw syntaxError(
|
||||
`moduleId should be a string in "${stringify(type)}". See https://goo.gl/wIDDiL for more information.\n` +
|
||||
`If you're using Webpack you should inline the template and the styles, see https://goo.gl/X2J8zc.`);
|
||||
}
|
||||
|
||||
return `./${stringify(type)}`;
|
||||
}
|
||||
parameters(typeOrFunc: /*Type*/ any): any[][] {
|
||||
return this.reflectionCapabilities.parameters(typeOrFunc);
|
||||
}
|
||||
annotations(typeOrFunc: /*Type*/ any): any[] {
|
||||
return this.reflectionCapabilities.annotations(typeOrFunc);
|
||||
}
|
||||
propMetadata(typeOrFunc: /*Type*/ any): {[key: string]: any[]} {
|
||||
return this.reflectionCapabilities.propMetadata(typeOrFunc);
|
||||
}
|
||||
hasLifecycleHook(type: any, lcProperty: string): boolean {
|
||||
return this.reflectionCapabilities.hasLifecycleHook(type, lcProperty);
|
||||
}
|
||||
resolveExternalReference(ref: ExternalReference): any {
|
||||
return builtinExternalReferences.get(ref) || ref.runtime;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function createBuiltinExternalReferencesMap() {
|
||||
const map = new Map<ExternalReference, any>();
|
||||
map.set(
|
||||
Identifiers.ANALYZE_FOR_ENTRY_COMPONENTS,
|
||||
|
||||
|
||||
ANALYZE_FOR_ENTRY_COMPONENTS);
|
||||
map.set(Identifiers.ElementRef, ElementRef);
|
||||
map.set(Identifiers.NgModuleRef, NgModuleRef);
|
||||
map.set(Identifiers.ViewContainerRef, ViewContainerRef);
|
||||
map.set(
|
||||
Identifiers.ChangeDetectorRef,
|
||||
|
||||
|
||||
ChangeDetectorRef);
|
||||
map.set(Identifiers.QueryList, QueryList);
|
||||
map.set(Identifiers.TemplateRef, TemplateRef);
|
||||
map.set(
|
||||
Identifiers.CodegenComponentFactoryResolver,
|
||||
|
||||
|
||||
ɵCodegenComponentFactoryResolver);
|
||||
map.set(
|
||||
Identifiers.ComponentFactoryResolver,
|
||||
|
||||
|
||||
ComponentFactoryResolver);
|
||||
map.set(Identifiers.ComponentFactory, ComponentFactory);
|
||||
map.set(Identifiers.ComponentRef, ComponentRef);
|
||||
map.set(Identifiers.NgModuleFactory, NgModuleFactory);
|
||||
map.set(
|
||||
Identifiers.createModuleFactory,
|
||||
|
||||
|
||||
ɵcmf, );
|
||||
map.set(
|
||||
Identifiers.moduleDef,
|
||||
|
||||
|
||||
ɵmod, );
|
||||
map.set(
|
||||
Identifiers.moduleProviderDef,
|
||||
|
||||
|
||||
ɵmpd, );
|
||||
map.set(
|
||||
Identifiers.RegisterModuleFactoryFn,
|
||||
|
||||
|
||||
ɵregisterModuleFactory, );
|
||||
map.set(Identifiers.Injector, Injector);
|
||||
map.set(
|
||||
Identifiers.ViewEncapsulation,
|
||||
|
||||
|
||||
ViewEncapsulation);
|
||||
map.set(
|
||||
Identifiers.ChangeDetectionStrategy,
|
||||
|
||||
|
||||
ChangeDetectionStrategy);
|
||||
map.set(
|
||||
Identifiers.SecurityContext,
|
||||
|
||||
|
||||
SecurityContext, );
|
||||
map.set(Identifiers.LOCALE_ID, LOCALE_ID);
|
||||
map.set(
|
||||
Identifiers.TRANSLATIONS_FORMAT,
|
||||
|
||||
|
||||
TRANSLATIONS_FORMAT);
|
||||
map.set(
|
||||
Identifiers.inlineInterpolate,
|
||||
|
||||
|
||||
ɵinlineInterpolate);
|
||||
map.set(Identifiers.interpolate, ɵinterpolate);
|
||||
map.set(Identifiers.EMPTY_ARRAY, ɵEMPTY_ARRAY);
|
||||
map.set(Identifiers.EMPTY_MAP, ɵEMPTY_MAP);
|
||||
map.set(Identifiers.Renderer, Renderer);
|
||||
map.set(Identifiers.viewDef, ɵvid);
|
||||
map.set(Identifiers.elementDef, ɵeld);
|
||||
map.set(Identifiers.anchorDef, ɵand);
|
||||
map.set(Identifiers.textDef, ɵted);
|
||||
map.set(Identifiers.directiveDef, ɵdid);
|
||||
map.set(Identifiers.providerDef, ɵprd);
|
||||
map.set(Identifiers.queryDef, ɵqud);
|
||||
map.set(Identifiers.pureArrayDef, ɵpad);
|
||||
map.set(Identifiers.pureObjectDef, ɵpod);
|
||||
map.set(Identifiers.purePipeDef, ɵppd);
|
||||
map.set(Identifiers.pipeDef, ɵpid);
|
||||
map.set(Identifiers.nodeValue, ɵnov);
|
||||
map.set(Identifiers.ngContentDef, ɵncd);
|
||||
map.set(Identifiers.unwrapValue, ɵunv);
|
||||
map.set(Identifiers.createRendererType2, ɵcrt);
|
||||
map.set(Identifiers.createComponentFactory, ɵccf);
|
||||
return map;
|
||||
}
|
Reference in New Issue
Block a user