refactor(core): clean up platform bootstrap and initTestEnvironment
- Introduces `CompilerFactory` which can be part of a `PlatformRef`. - Introduces `WorkerAppModule`, `WorkerUiModule`, `ServerModule` - Introduces `serverDynamicPlatform` for applications using runtime compilation on the server. - Changes browser bootstrap for runtime and offline compilation (see below for an example). * introduces `bootstrapModule` and `bootstrapModuleFactory` in `@angular/core` * introduces new `browserDynamicPlatform` in `@angular/platform-browser-dynamic - Changes `initTestEnvironment` (which used to be `setBaseTestProviders`) to not take a compiler factory any more (see below for an example). BREAKING CHANGE: ## Migration from `setBaseTestProviders` to `initTestEnvironment`: - For the browser platform: BEFORE: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS} from ‘@angular/platform-browser-dynamic/testing’; setBaseTestProviders(TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); ``` AFTER: ``` import {initTestEnvironment} from ‘@angular/core/testing’; import {browserDynamicTestPlatform, BrowserDynamicTestModule} from ‘@angular/platform-browser-dynamic/testing’; initTestEnvironment( BrowserDynamicTestModule, browserDynamicTestPlatform()); ``` - For the server platform: BEFORE: ``` import {setBaseTestProviders} from ‘@angular/core/testing’; import {TEST_SERVER_PLATFORM_PROVIDERS, TEST_SERVER_APPLICATION_PROVIDERS} from ‘@angular/platform-server/testing/server’; setBaseTestProviders(TEST_SERVER_PLATFORM_PROVIDERS, TEST_SERVER_APPLICATION_PROVIDERS); ``` AFTER: ``` import {initTestEnvironment} from ‘@angular/core/testing’; import {serverTestPlatform, ServerTestModule} from ‘@angular/platform-browser-dynamic/testing’; initTestEnvironment( ServerTestModule, serverTestPlatform()); ``` ## Bootstrap changes ``` @AppModule({ modules: [BrowserModule], precompile: [MainComponent], providers: […], // additional providers directives: […], // additional platform directives pipes: […] // additional platform pipes }) class MyModule { constructor(appRef: ApplicationRef) { appRef.bootstrap(MainComponent); } } // offline compile import {browserPlatform} from ‘@angular/platform-browser’; import {bootstrapModuleFactory} from ‘@angular/core’; bootstrapModuleFactory(MyModuleNgFactory, browserPlatform()); // runtime compile long form import {browserDynamicPlatform} from ‘@angular/platform-browser-dynamic’; import {bootstrapModule} from ‘@angular/core’; bootstrapModule(MyModule, browserDynamicPlatform()); ``` Closes #9922 Part of #9726
This commit is contained in:
25
tools/public_api_guard/core/index.d.ts
vendored
25
tools/public_api_guard/core/index.d.ts
vendored
@ -256,6 +256,12 @@ export declare class Binding extends Provider {
|
||||
});
|
||||
}
|
||||
|
||||
/** @stable */
|
||||
export declare function bootstrapModule<M>(moduleType: ConcreteType<M>, platform: PlatformRef, compilerOptions?: CompilerOptions): Promise<AppModuleRef<M>>;
|
||||
|
||||
/** @experimental */
|
||||
export declare function bootstrapModuleFactory<M>(moduleFactory: AppModuleFactory<M>, platform: PlatformRef): AppModuleRef<M>;
|
||||
|
||||
/** @stable */
|
||||
export declare enum ChangeDetectionStrategy {
|
||||
OnPush = 0,
|
||||
@ -302,6 +308,22 @@ export declare class Compiler {
|
||||
compileComponentSync<T>(component: ConcreteType<T>): ComponentFactory<T>;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare abstract class CompilerFactory {
|
||||
abstract createCompiler(options?: CompilerOptions): Compiler;
|
||||
withDefaults(options?: CompilerOptions): CompilerFactory;
|
||||
static mergeOptions(defaultOptions?: CompilerOptions, newOptions?: CompilerOptions): CompilerOptions;
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare type CompilerOptions = {
|
||||
useDebug?: boolean;
|
||||
useJit?: boolean;
|
||||
defaultEncapsulation?: ViewEncapsulation;
|
||||
providers?: any[];
|
||||
deprecatedAppProviders?: any[];
|
||||
};
|
||||
|
||||
/** @stable */
|
||||
export declare var Component: ComponentMetadataFactory;
|
||||
|
||||
@ -513,6 +535,9 @@ export declare function coreLoadAndBootstrap(componentType: Type, injector: Inje
|
||||
/** @experimental */
|
||||
export declare function createPlatform(injector: Injector): PlatformRef;
|
||||
|
||||
/** @experimental */
|
||||
export declare function createPlatformFactory(name: string, providers: any[]): () => PlatformRef;
|
||||
|
||||
/** @stable */
|
||||
export declare class CyclicDependencyError extends AbstractProviderError {
|
||||
constructor(injector: ReflectiveInjector, key: ReflectiveKey);
|
||||
|
9
tools/public_api_guard/core/testing.d.ts
vendored
9
tools/public_api_guard/core/testing.d.ts
vendored
@ -83,7 +83,7 @@ export declare function getTestInjector(): TestInjector;
|
||||
export declare var iit: any;
|
||||
|
||||
/** @experimental */
|
||||
export declare function initTestEnvironment(compilerFactory: TestCompilerFactory, platform: PlatformRef, appModule: Type): void;
|
||||
export declare function initTestEnvironment(appModule: Type, platform: PlatformRef): void;
|
||||
|
||||
/** @stable */
|
||||
export declare function inject(tokens: any[], fn: Function): () => any;
|
||||
@ -106,12 +106,6 @@ export declare var it: any;
|
||||
/** @experimental */
|
||||
export declare function resetTestEnvironment(): void;
|
||||
|
||||
/** @experimental */
|
||||
export declare type TestCompilerFactory = (config: {
|
||||
providers?: Array<Type | Provider | any[]>;
|
||||
useJit?: boolean;
|
||||
}) => Compiler;
|
||||
|
||||
/** @stable */
|
||||
export declare class TestComponentBuilder {
|
||||
protected _injector: Injector;
|
||||
@ -136,7 +130,6 @@ export declare class TestComponentRenderer {
|
||||
/** @experimental */
|
||||
export declare class TestInjector implements Injector {
|
||||
appModule: Type;
|
||||
compilerFactory: TestCompilerFactory;
|
||||
platform: PlatformRef;
|
||||
configureCompiler(config: {
|
||||
providers?: any[];
|
||||
|
@ -1,9 +1,6 @@
|
||||
/** @experimental */
|
||||
export declare function bootstrap<C>(appComponentType: ConcreteType<C>, customProviders?: Array<any>): Promise<ComponentRef<C>>;
|
||||
|
||||
/** @stable */
|
||||
export declare function bootstrapModule<M>(moduleType: ConcreteType<M>, compiler?: Compiler): Promise<AppModuleRef<M>>;
|
||||
|
||||
/** @experimental */
|
||||
export declare function bootstrapWorkerApp(appComponentType: Type, customProviders?: Array<any>): Promise<ComponentRef<any>>;
|
||||
|
||||
@ -13,12 +10,14 @@ export declare function bootstrapWorkerUi(workerScriptUri: string, customProvide
|
||||
/** @experimental */
|
||||
export declare const BROWSER_APP_COMPILER_PROVIDERS: Array<any>;
|
||||
|
||||
/** @stable */
|
||||
export declare function browserCompiler({useDebug, useJit, providers}?: {
|
||||
useDebug?: boolean;
|
||||
useJit?: boolean;
|
||||
providers?: Array<any>;
|
||||
}): Compiler;
|
||||
/** @experimental */
|
||||
export declare const BROWSER_DYNAMIC_COMPILER_FACTORY: CompilerFactory;
|
||||
|
||||
/** @experimental */
|
||||
export declare const BROWSER_DYNAMIC_PLATFORM_PROVIDERS: Array<any>;
|
||||
|
||||
/** @experimental */
|
||||
export declare const browserDynamicPlatform: () => PlatformRef;
|
||||
|
||||
/** @experimental */
|
||||
export declare const CACHED_TEMPLATE_PROVIDER: Array<any>;
|
||||
|
@ -1,12 +1,9 @@
|
||||
/** @experimental */
|
||||
export declare const BROWSER_DYNAMIC_TEST_COMPILER_FACTORY: CompilerFactory;
|
||||
|
||||
/** @stable */
|
||||
export declare class BrowserDynamicTestModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare const browserDynamicTestPlatform: typeof browserTestPlatform;
|
||||
|
||||
/** @stable */
|
||||
export declare function browserTestCompiler({providers, useJit}?: {
|
||||
providers?: Array<Type | Provider | any[]>;
|
||||
useJit?: boolean;
|
||||
}): Compiler;
|
||||
export declare const browserDynamicTestPlatform: () => PlatformRef;
|
||||
|
@ -4,9 +4,6 @@ export declare abstract class AnimationDriver {
|
||||
static NOOP: AnimationDriver;
|
||||
}
|
||||
|
||||
/** @stable */
|
||||
export declare function bootstrapModuleFactory<M>(moduleFactory: AppModuleFactory<M>): AppModuleRef<M>;
|
||||
|
||||
/** @experimental */
|
||||
export declare const BROWSER_APP_PROVIDERS: Array<any>;
|
||||
|
||||
@ -16,12 +13,12 @@ export declare const BROWSER_PLATFORM_PROVIDERS: Array<any>;
|
||||
/** @experimental */
|
||||
export declare const BROWSER_SANITIZATION_PROVIDERS: Array<any>;
|
||||
|
||||
/** @stable */
|
||||
/** @experimental */
|
||||
export declare class BrowserModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare function browserPlatform(): PlatformRef;
|
||||
export declare const browserPlatform: () => PlatformRef;
|
||||
|
||||
/** @stable */
|
||||
export declare class BrowserPlatformLocation extends PlatformLocation {
|
||||
@ -227,7 +224,15 @@ export declare const WORKER_UI_PLATFORM_PROVIDERS: Array<any>;
|
||||
export declare const WORKER_UI_STARTABLE_MESSAGING_SERVICE: OpaqueToken;
|
||||
|
||||
/** @experimental */
|
||||
export declare function workerAppPlatform(): PlatformRef;
|
||||
export declare class WorkerAppModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare function workerUiPlatform(): PlatformRef;
|
||||
export declare const workerAppPlatform: () => PlatformRef;
|
||||
|
||||
/** @experimental */
|
||||
export declare class WorkerUiModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare const workerUiPlatform: () => PlatformRef;
|
||||
|
@ -3,4 +3,7 @@ export declare class BrowserTestModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare function browserTestPlatform(): PlatformRef;
|
||||
export declare const browserTestPlatform: () => PlatformRef;
|
||||
|
||||
/** @experimental */
|
||||
export declare const TEST_BROWSER_PLATFORM_PROVIDERS: Array<any>;
|
||||
|
@ -5,4 +5,7 @@ export declare const SERVER_PLATFORM_PROVIDERS: Array<any>;
|
||||
export declare function serverBootstrap(appComponentType: Type, providers: Array<any>): Promise<ComponentRef<any>>;
|
||||
|
||||
/** @experimental */
|
||||
export declare function serverPlatform(): PlatformRef;
|
||||
export declare const serverDynamicPlatform: () => PlatformRef;
|
||||
|
||||
/** @experimental */
|
||||
export declare const serverPlatform: () => PlatformRef;
|
||||
|
@ -1,9 +1,6 @@
|
||||
/** @stable */
|
||||
export declare const serverTestCompiler: typeof browserTestCompiler;
|
||||
|
||||
/** @stable */
|
||||
export declare class ServerTestModule {
|
||||
}
|
||||
|
||||
/** @experimental */
|
||||
export declare function serverTestPlatform(): PlatformRef;
|
||||
export declare const serverTestPlatform: () => PlatformRef;
|
||||
|
Reference in New Issue
Block a user