From 6de4cbdd4141ac3ade2fcc3fffb3a18e75978460 Mon Sep 17 00:00:00 2001 From: Brandon Roberts Date: Thu, 25 Apr 2019 09:36:49 -0500 Subject: [PATCH] fix(common): add upgrade sub-package to ng_package rule for @angular/common (#30117) Follow-up to #30055 to include @angular/common/upgrade in the npm package Closes #30116 PR Close #30117 --- integration/bazel/src/package.json | 3 ++- .../test/ng_package/common_package.spec.ts | 18 ++++++++++++++++++ packages/common/BUILD.bazel | 2 ++ .../testing/src/mock_platform_location.ts | 15 +++++++++++++-- packages/common/testing/src/testing.ts | 2 +- packages/common/upgrade/src/index.ts | 6 +++--- .../{$location_shim.ts => location_shim.ts} | 0 .../upgrade/src/location_upgrade_module.ts | 6 +----- packages/common/upgrade/test/upgrade.spec.ts | 2 +- .../test/upgrade_location_test_module.ts | 2 +- tools/public_api_guard/common/testing.d.ts | 7 +++++++ 11 files changed, 49 insertions(+), 14 deletions(-) rename packages/common/upgrade/src/{$location_shim.ts => location_shim.ts} (100%) diff --git a/integration/bazel/src/package.json b/integration/bazel/src/package.json index ec2e70c655..76ad1f0068 100644 --- a/integration/bazel/src/package.json +++ b/integration/bazel/src/package.json @@ -10,6 +10,7 @@ "@angular/platform-browser": "packages-dist:platform-browser", "@angular/platform-browser-dynamic": "packages-dist:platform-browser-dynamic", "@angular/router": "packages-dist:router", + "@angular/upgrade": "packages-dist:upgrade", "reflect-metadata": "0.1.12", "rxjs": "6.4.0", "tslib": "1.9.3", @@ -30,4 +31,4 @@ "postinstall": "ngc -p ./angular-metadata.tsconfig.json", "//": "TODO(gregmagolan): figure out how to keep dependencies here up to date with the root package.json" } -} +} \ No newline at end of file diff --git a/packages/bazel/test/ng_package/common_package.spec.ts b/packages/bazel/test/ng_package/common_package.spec.ts index e929a9fd41..5966ae1f24 100644 --- a/packages/bazel/test/ng_package/common_package.spec.ts +++ b/packages/bazel/test/ng_package/common_package.spec.ts @@ -48,6 +48,10 @@ describe('@angular/common ng_package', () => { 'common-testing.umd.js.map', 'common-testing.umd.min.js', 'common-testing.umd.min.js.map', + 'common-upgrade.umd.js', + 'common-upgrade.umd.js.map', + 'common-upgrade.umd.min.js', + 'common-upgrade.umd.min.js.map', 'common.umd.js', 'common.umd.js.map', 'common.umd.min.js', @@ -69,6 +73,8 @@ describe('@angular/common ng_package', () => { 'http/testing.js.map', 'testing.js', 'testing.js.map', + 'upgrade.js', + 'upgrade.js.map', ]; expect(shx.ls('-R', 'fesm5').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected); expect(shx.ls('-R', 'fesm2015').stdout.split('\n').filter(n => !!n).sort()).toEqual(expected); @@ -91,6 +97,10 @@ describe('@angular/common ng_package', () => { .toMatch('//# sourceMappingURL=testing.js.map'); expect(shx.grep('sourceMappingURL', 'fesm2015/testing.js')) .toMatch('//# sourceMappingURL=testing.js.map'); + expect(shx.grep('sourceMappingURL', 'fesm5/upgrade.js')) + .toMatch('//# sourceMappingURL=upgrade.js.map'); + expect(shx.grep('sourceMappingURL', 'fesm2015/upgrade.js')) + .toMatch('//# sourceMappingURL=upgrade.js.map'); }); describe('secondary entry-point', () => { @@ -129,5 +139,13 @@ describe('@angular/common ng_package', () => { expect(actual['module']).toEqual('../../fesm5/http/testing.js'); expect(actual['typings']).toEqual('./testing.d.ts'); }); + // https://github.com/angular/common-builds/blob/master/upgrade/package.json + it('/upgrade', () => { + const actual = JSON.parse(fs.readFileSync('upgrade/package.json', {encoding: 'utf-8'})); + expect(actual['main']).toEqual('../bundles/common-upgrade.umd.js'); + expect(actual['es2015']).toEqual('../fesm2015/upgrade.js'); + expect(actual['module']).toEqual('../fesm5/upgrade.js'); + expect(actual['typings']).toEqual('./upgrade.d.ts'); + }); }); }); diff --git a/packages/common/BUILD.bazel b/packages/common/BUILD.bazel index 8002aac074..7f0c4e83cd 100644 --- a/packages/common/BUILD.bazel +++ b/packages/common/BUILD.bazel @@ -23,6 +23,7 @@ ng_package( "//packages/common/http:package.json", "//packages/common/http/testing:package.json", "//packages/common/testing:package.json", + "//packages/common/upgrade:package.json", ], entry_point = "packages/common/index.js", packages = ["//packages/common/locales:package"], @@ -46,5 +47,6 @@ ng_package( "//packages/common/http", "//packages/common/http/testing", "//packages/common/testing", + "//packages/common/upgrade", ], ) diff --git a/packages/common/testing/src/mock_platform_location.ts b/packages/common/testing/src/mock_platform_location.ts index c352780f21..fc0819d825 100644 --- a/packages/common/testing/src/mock_platform_location.ts +++ b/packages/common/testing/src/mock_platform_location.ts @@ -7,7 +7,7 @@ */ import {LocationChangeEvent, LocationChangeListener, PlatformLocation} from '@angular/common'; -import {Injectable, InjectionToken, Optional} from '@angular/core'; +import {Inject, Injectable, InjectionToken, Optional} from '@angular/core'; import {Subject} from 'rxjs'; /** @@ -78,11 +78,21 @@ function parseUrl(urlStr: string, baseHref: string) { }; } +/** + * Mock platform location config + * + * @publicApi + */ export interface MockPlatformLocationConfig { startUrl?: string; appBaseHref?: string; } +/** + * Provider for mock platform location config + * + * @publicApi + */ export const MOCK_PLATFORM_LOCATION_CONFIG = new InjectionToken('MOCK_PLATFORM_LOCATION_CONFIG'); /** @@ -104,7 +114,8 @@ export class MockPlatformLocation implements PlatformLocation { state: unknown }[] = [{hostname: '', protocol: '', port: '', pathname: '/', search: '', hash: '', state: null}]; - constructor(@Optional() config?: MockPlatformLocationConfig) { + constructor(@Inject(MOCK_PLATFORM_LOCATION_CONFIG) @Optional() config?: + MockPlatformLocationConfig) { if (config) { this.baseHref = config.appBaseHref || ''; diff --git a/packages/common/testing/src/testing.ts b/packages/common/testing/src/testing.ts index 0906b3d189..39bf81751e 100644 --- a/packages/common/testing/src/testing.ts +++ b/packages/common/testing/src/testing.ts @@ -13,4 +13,4 @@ */ export {SpyLocation} from './location_mock'; export {MockLocationStrategy} from './mock_location_strategy'; -export {MockPlatformLocation} from './mock_platform_location'; \ No newline at end of file +export {MOCK_PLATFORM_LOCATION_CONFIG, MockPlatformLocation, MockPlatformLocationConfig} from './mock_platform_location'; diff --git a/packages/common/upgrade/src/index.ts b/packages/common/upgrade/src/index.ts index 0ed428fdf4..b40fc8bb81 100644 --- a/packages/common/upgrade/src/index.ts +++ b/packages/common/upgrade/src/index.ts @@ -6,6 +6,6 @@ * found in the LICENSE file at https://angular.io/license */ -export * from './location_upgrade_module'; -export * from './$location_shim'; -export * from './params'; \ No newline at end of file +export {$locationShim, $locationShimProvider} from './location_shim'; +export {LOCATION_UPGRADE_CONFIGURATION, LocationUpgradeConfig, LocationUpgradeModule} from './location_upgrade_module'; +export {AngularJSUrlCodec, UrlCodec} from './params'; diff --git a/packages/common/upgrade/src/$location_shim.ts b/packages/common/upgrade/src/location_shim.ts similarity index 100% rename from packages/common/upgrade/src/$location_shim.ts rename to packages/common/upgrade/src/location_shim.ts diff --git a/packages/common/upgrade/src/location_upgrade_module.ts b/packages/common/upgrade/src/location_upgrade_module.ts index ae8bd84ec4..4cd9ee35b4 100644 --- a/packages/common/upgrade/src/location_upgrade_module.ts +++ b/packages/common/upgrade/src/location_upgrade_module.ts @@ -10,7 +10,7 @@ import {APP_BASE_HREF, CommonModule, HashLocationStrategy, Location, LocationStr import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core'; import {UpgradeModule} from '@angular/upgrade/static'; -import {$locationShim, $locationShimProvider} from './$location_shim'; +import {$locationShim, $locationShimProvider} from './location_shim'; import {AngularJSUrlCodec, UrlCodec} from './params'; @@ -75,7 +75,6 @@ export class LocationUpgradeModule { } } -/** @internal */ export function provideAppBaseHref(config: LocationUpgradeConfig, appBaseHref?: string) { if (config && config.appBaseHref != null) { return config.appBaseHref; @@ -85,20 +84,17 @@ export function provideAppBaseHref(config: LocationUpgradeConfig, appBaseHref?: return ''; } -/** @internal */ export function provideUrlCodec(config: LocationUpgradeConfig) { const codec = config && config.urlCodec || AngularJSUrlCodec; return new (codec as any)(); } -/** @internal */ export function provideLocationStrategy( platformLocation: PlatformLocation, baseHref: string, options: LocationUpgradeConfig = {}) { return options.useHash ? new HashLocationStrategy(platformLocation, baseHref) : new PathLocationStrategy(platformLocation, baseHref); } -/** @internal */ export function provide$location( ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation, urlCodec: UrlCodec, locationStrategy: LocationStrategy) { diff --git a/packages/common/upgrade/test/upgrade.spec.ts b/packages/common/upgrade/test/upgrade.spec.ts index 2851a7d9d5..72b476eb9c 100644 --- a/packages/common/upgrade/test/upgrade.spec.ts +++ b/packages/common/upgrade/test/upgrade.spec.ts @@ -10,7 +10,7 @@ import {CommonModule, PathLocationStrategy} from '@angular/common'; import {TestBed, inject} from '@angular/core/testing'; import {UpgradeModule} from '@angular/upgrade/static'; -import {$locationShim} from '../src/$location_shim'; +import {$locationShim} from '../src/location_shim'; import {LocationUpgradeTestModule} from './upgrade_location_test_module'; diff --git a/packages/common/upgrade/test/upgrade_location_test_module.ts b/packages/common/upgrade/test/upgrade_location_test_module.ts index 10c982e1eb..efcb0ab607 100644 --- a/packages/common/upgrade/test/upgrade_location_test_module.ts +++ b/packages/common/upgrade/test/upgrade_location_test_module.ts @@ -11,7 +11,7 @@ import {MockPlatformLocation} from '@angular/common/testing'; import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core'; import {UpgradeModule} from '@angular/upgrade/static'; -import {$locationShim, $locationShimProvider} from '../src/$location_shim'; +import {$locationShim, $locationShimProvider} from '../src/location_shim'; import {LocationUpgradeModule} from '../src/location_upgrade_module'; import {UrlCodec} from '../src/params'; diff --git a/tools/public_api_guard/common/testing.d.ts b/tools/public_api_guard/common/testing.d.ts index c63eca7673..844fd24bd0 100644 --- a/tools/public_api_guard/common/testing.d.ts +++ b/tools/public_api_guard/common/testing.d.ts @@ -1,3 +1,5 @@ +export declare const MOCK_PLATFORM_LOCATION_CONFIG: InjectionToken<{}>; + export declare class MockLocationStrategy extends LocationStrategy { internalBaseHref: string; internalPath: string; @@ -37,6 +39,11 @@ export declare class MockPlatformLocation implements PlatformLocation { replaceState(state: any, title: string, newUrl: string): void; } +export interface MockPlatformLocationConfig { + appBaseHref?: string; + startUrl?: string; +} + export declare class SpyLocation implements Location { urlChanges: string[]; back(): void;