From d3594fc1c5793c225480c237966f39d6f149be14 Mon Sep 17 00:00:00 2001 From: Alex Rickabaugh Date: Fri, 13 Jul 2018 14:32:46 -0700 Subject: [PATCH] fix(ivy): correctly export all *Def symbols as private (#24862) Previously, some of the *Def symbols were not exported or were exported as public API. This commit ensures every definition type is in the private export namespace. PR Close #24862 --- .../compiler-cli/src/ngtsc/transform/src/translator.ts | 2 +- packages/compiler-cli/test/ngtsc/ngtsc_spec.ts | 4 ++-- packages/compiler/src/identifiers.ts | 2 +- packages/core/src/core_private_export.ts | 1 + packages/core/src/core_render3_private_export.ts | 2 +- packages/core/src/di.ts | 2 +- packages/core/src/r3_symbols.ts | 2 +- packages/core/src/render3/index.ts | 2 +- packages/core/src/render3/ng_module_ref.ts | 5 ++--- packages/core/test/application_ref_integration_spec.ts | 7 +++---- tools/public_api_guard/core/core.d.ts | 6 ------ 11 files changed, 14 insertions(+), 21 deletions(-) diff --git a/packages/compiler-cli/src/ngtsc/transform/src/translator.ts b/packages/compiler-cli/src/ngtsc/transform/src/translator.ts index 2fd42200be..32b3ada9ec 100644 --- a/packages/compiler-cli/src/ngtsc/transform/src/translator.ts +++ b/packages/compiler-cli/src/ngtsc/transform/src/translator.ts @@ -43,7 +43,7 @@ const CORE_SUPPORTED_SYMBOLS = new Set([ 'defineInjector', 'ɵdefineNgModule', 'inject', - 'InjectableDef', + 'ɵInjectableDef', 'ɵInjectorDef', 'ɵNgModuleDef', ]); diff --git a/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts b/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts index 7934243bc2..38769fc2b9 100644 --- a/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts +++ b/packages/compiler-cli/test/ngtsc/ngtsc_spec.ts @@ -119,8 +119,8 @@ describe('ngtsc behavioral tests', () => { expect(jsContents).toContain('Service.ngInjectableDef ='); expect(jsContents).not.toContain('__decorate'); const dtsContents = getContents('test.d.ts'); - expect(dtsContents).toContain('static ngInjectableDef: i0.InjectableDef;'); - expect(dtsContents).toContain('static ngInjectableDef: i0.InjectableDef;'); + expect(dtsContents).toContain('static ngInjectableDef: i0.ɵInjectableDef;'); + expect(dtsContents).toContain('static ngInjectableDef: i0.ɵInjectableDef;'); }); it('should compile Components without errors', () => { diff --git a/packages/compiler/src/identifiers.ts b/packages/compiler/src/identifiers.ts index dcfc98598e..121f97f21b 100644 --- a/packages/compiler/src/identifiers.ts +++ b/packages/compiler/src/identifiers.ts @@ -65,7 +65,7 @@ export class Identifiers { static INJECTOR: o.ExternalReference = {name: 'INJECTOR', moduleName: CORE}; static Injector: o.ExternalReference = {name: 'Injector', moduleName: CORE}; static defineInjectable: o.ExternalReference = {name: 'defineInjectable', moduleName: CORE}; - static InjectableDef: o.ExternalReference = {name: 'InjectableDef', moduleName: CORE}; + static InjectableDef: o.ExternalReference = {name: 'ɵInjectableDef', moduleName: CORE}; static ViewEncapsulation: o.ExternalReference = { name: 'ViewEncapsulation', moduleName: CORE, diff --git a/packages/core/src/core_private_export.ts b/packages/core/src/core_private_export.ts index f5e015b94e..a9dd899762 100644 --- a/packages/core/src/core_private_export.ts +++ b/packages/core/src/core_private_export.ts @@ -13,6 +13,7 @@ export {devModeEqual as ɵdevModeEqual} from './change_detection/change_detectio export {isListLikeIterable as ɵisListLikeIterable} from './change_detection/change_detection_util'; export {ChangeDetectorStatus as ɵChangeDetectorStatus, isDefaultChangeDetectionStrategy as ɵisDefaultChangeDetectionStrategy} from './change_detection/constants'; export {Console as ɵConsole} from './console'; +export {InjectableDef as ɵInjectableDef, InjectorDef as ɵInjectorDef} from './di/defs'; export {inject as ɵinject, setCurrentInjector as ɵsetCurrentInjector} from './di/injector'; export {APP_ROOT as ɵAPP_ROOT} from './di/scope'; export {ivyEnabled as ɵivyEnabled} from './ivy_switch'; diff --git a/packages/core/src/core_render3_private_export.ts b/packages/core/src/core_render3_private_export.ts index 0bbf7810e3..eefb5c8ec9 100644 --- a/packages/core/src/core_render3_private_export.ts +++ b/packages/core/src/core_render3_private_export.ts @@ -25,7 +25,6 @@ export { PublicFeature as ɵPublicFeature, InheritDefinitionFeature as ɵInheritDefinitionFeature, NgOnChangesFeature as ɵNgOnChangesFeature, - NgModuleDef as ɵNgModuleDef, NgModuleType as ɵNgModuleType, CssSelectorList as ɵCssSelectorList, markDirty as ɵmarkDirty, @@ -100,6 +99,7 @@ export { I18nInstruction as ɵI18nInstruction, I18nExpInstruction as ɵI18nExpInstruction, } from './render3/index'; +export {NgModuleDef as ɵNgModuleDef} from './metadata/ng_module'; export { bypassSanitizationTrustHtml as ɵbypassSanitizationTrustHtml, bypassSanitizationTrustStyle as ɵbypassSanitizationTrustStyle, diff --git a/packages/core/src/di.ts b/packages/core/src/di.ts index 0a776ced01..1e6b201b84 100644 --- a/packages/core/src/di.ts +++ b/packages/core/src/di.ts @@ -13,7 +13,7 @@ */ export * from './di/metadata'; -export {InjectableType, InjectorDef, InjectorType, defineInjectable, defineInjector} from './di/defs'; +export {InjectableType, InjectorType, defineInjectable, defineInjector} from './di/defs'; export {forwardRef, resolveForwardRef, ForwardRefFn} from './di/forward_ref'; export {Injectable, InjectableDecorator, InjectableProvider} from './di/injectable'; export {inject, InjectFlags, INJECTOR, Injector} from './di/injector'; diff --git a/packages/core/src/r3_symbols.ts b/packages/core/src/r3_symbols.ts index ab344a1f06..10a3d014ee 100644 --- a/packages/core/src/r3_symbols.ts +++ b/packages/core/src/r3_symbols.ts @@ -19,7 +19,7 @@ * The below symbols are used for @Injectable and @NgModule compilation. */ -export {InjectableDef, InjectorDef as ɵInjectorDef, defineInjectable, defineInjector} from './di/defs'; +export {InjectableDef as ɵInjectableDef, InjectorDef as ɵInjectorDef, defineInjectable, defineInjector} from './di/defs'; export {inject} from './di/injector'; export {NgModuleDef as ɵNgModuleDef} from './metadata/ng_module'; export {defineNgModule as ɵdefineNgModule} from './render3/definition'; diff --git a/packages/core/src/render3/index.ts b/packages/core/src/render3/index.ts index e022bc4144..2838b658af 100644 --- a/packages/core/src/render3/index.ts +++ b/packages/core/src/render3/index.ts @@ -95,7 +95,7 @@ export { I18nExpInstruction } from './i18n'; -export {NgModuleDef, NgModuleFactory, NgModuleRef, NgModuleType} from './ng_module_ref'; +export {NgModuleFactory, NgModuleRef, NgModuleType} from './ng_module_ref'; export { AttributeMarker diff --git a/packages/core/src/render3/ng_module_ref.ts b/packages/core/src/render3/ng_module_ref.ts index 1844b3b57c..6b6aeb6198 100644 --- a/packages/core/src/render3/ng_module_ref.ts +++ b/packages/core/src/render3/ng_module_ref.ts @@ -11,14 +11,13 @@ import {StaticProvider} from '../di/provider'; import {createInjector} from '../di/r3_injector'; import {ComponentFactoryResolver as viewEngine_ComponentFactoryResolver} from '../linker/component_factory_resolver'; import {InternalNgModuleRef, NgModuleFactory as viewEngine_NgModuleFactory, NgModuleRef as viewEngine_NgModuleRef} from '../linker/ng_module_factory'; +import {NgModuleDefInternal} from '../metadata/ng_module'; import {Type} from '../type'; import {stringify} from '../util'; import {assertDefined} from './assert'; import {ComponentFactoryResolver} from './component_ref'; -export interface NgModuleType { ngModuleDef: NgModuleDef; } - -export interface NgModuleDef { bootstrap: Type[]; } +export interface NgModuleType { ngModuleDef: NgModuleDefInternal; } export const COMPONENT_FACTORY_RESOLVER: StaticProvider = { provide: viewEngine_ComponentFactoryResolver, diff --git a/packages/core/test/application_ref_integration_spec.ts b/packages/core/test/application_ref_integration_spec.ts index 9dee7acc17..31b57aaa24 100644 --- a/packages/core/test/application_ref_integration_spec.ts +++ b/packages/core/test/application_ref_integration_spec.ts @@ -86,10 +86,9 @@ describe('ApplicationRef bootstrap', () => { providers: APPLICATION_MODULE_PROVIDERS }); -export function defineNgModule({bootstrap}: {bootstrap?: Type[]}): NgModuleDef { - return { - bootstrap: bootstrap || [], - }; +export function defineNgModule({bootstrap}: {bootstrap?: Type[]}): + NgModuleDef { + return ({ bootstrap: bootstrap || [], } as any); } ///////////////////////////////////////////////////////// diff --git a/tools/public_api_guard/core/core.d.ts b/tools/public_api_guard/core/core.d.ts index dc2ebf8627..84a8114039 100644 --- a/tools/public_api_guard/core/core.d.ts +++ b/tools/public_api_guard/core/core.d.ts @@ -408,12 +408,6 @@ export declare abstract class Injector { /** @experimental */ export declare const INJECTOR: InjectionToken; -export interface InjectorDef { - factory: () => T; - imports: (InjectorType | InjectorTypeWithProviders)[]; - providers: (Type | ValueProvider | ExistingProvider | FactoryProvider | ConstructorProvider | StaticClassProvider | ClassProvider | any[])[]; -} - /** @experimental */ export interface InjectorType extends Type { ngInjectorDef: never;