refactor(common): rename LocationUpgradeService and remove angular/upgrade dependency (#30055)

PR Close #30055
This commit is contained in:
Jason Aden 2019-04-24 10:21:19 -07:00 committed by Ben Lesh
parent efdbbe1aa6
commit 071ee64d91
9 changed files with 60 additions and 100 deletions

View File

@ -8,8 +8,5 @@
"esm2015": "../esm2015/upgrade/upgrade.js", "esm2015": "../esm2015/upgrade/upgrade.js",
"fesm5": "../fesm5/upgrade.js", "fesm5": "../fesm5/upgrade.js",
"fesm2015": "../fesm2015/upgrade.js", "fesm2015": "../fesm2015/upgrade.js",
"sideEffects": false, "sideEffects": false
"peerDependencies": {
"@angular/upgrade": "0.0.0-PLACEHOLDER"
}
} }

View File

@ -26,7 +26,7 @@ const DEFAULT_PORTS: {[key: string]: number} = {
* *
* @publicApi * @publicApi
*/ */
export class LocationUpgradeService { export class $locationShim {
private initalizing = true; private initalizing = true;
private updateBrowser = false; private updateBrowser = false;
private $$absUrl: string = ''; private $$absUrl: string = '';
@ -664,14 +664,14 @@ export class LocationUpgradeService {
* *
* @publicApi * @publicApi
*/ */
export class LocationUpgradeProvider { export class $locationShimProvider {
constructor( constructor(
private ngUpgrade: UpgradeModule, private location: Location, private ngUpgrade: UpgradeModule, private location: Location,
private platformLocation: PlatformLocation, private urlCodec: UrlCodec, private platformLocation: PlatformLocation, private urlCodec: UrlCodec,
private locationStrategy: LocationStrategy) {} private locationStrategy: LocationStrategy) {}
$get() { $get() {
return new LocationUpgradeService( return new $locationShim(
this.ngUpgrade.$injector, this.location, this.platformLocation, this.urlCodec, this.ngUpgrade.$injector, this.location, this.platformLocation, this.urlCodec,
this.locationStrategy); this.locationStrategy);
} }

View File

@ -1,25 +0,0 @@
/**
* @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 {downgradeInjectable} from '@angular/upgrade/static';
import {LocationUpgradeProvider} from './$location';
/**
* Name of AngularJS module under which $location upgrade services are exported.
*
* @publicApi
*/
export const LOCATION_UPGRADE_MODULE = 'LOCATION_UPGRADE_MODULE';
/**
* Downgraded $location provider. API should match AngularJS $location and should be a drop-in
* replacement.
*
* @publicApi
*/
export const $locationProvider = downgradeInjectable(LocationUpgradeProvider);

View File

@ -7,6 +7,5 @@
*/ */
export * from './location_upgrade_module'; export * from './location_upgrade_module';
export * from './angular_js_module'; export * from './$location_shim';
export * from './$location';
export * from './params'; export * from './params';

View File

@ -10,9 +10,10 @@ import {APP_BASE_HREF, CommonModule, HashLocationStrategy, Location, LocationStr
import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core'; import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core';
import {UpgradeModule} from '@angular/upgrade/static'; import {UpgradeModule} from '@angular/upgrade/static';
import {LocationUpgradeProvider, LocationUpgradeService} from './$location'; import {$locationShim, $locationShimProvider} from './$location_shim';
import {AngularJSUrlCodec, UrlCodec} from './params'; import {AngularJSUrlCodec, UrlCodec} from './params';
/** /**
* Configuration options for LocationUpgrade. * Configuration options for LocationUpgrade.
* *
@ -49,7 +50,7 @@ export class LocationUpgradeModule {
providers: [ providers: [
Location, Location,
{ {
provide: LocationUpgradeService, provide: $locationShim,
useFactory: provide$location, useFactory: provide$location,
deps: [UpgradeModule, Location, PlatformLocation, UrlCodec, LocationStrategy] deps: [UpgradeModule, Location, PlatformLocation, UrlCodec, LocationStrategy]
}, },
@ -101,8 +102,8 @@ export function provideLocationStrategy(
export function provide$location( export function provide$location(
ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation, ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation,
urlCodec: UrlCodec, locationStrategy: LocationStrategy) { urlCodec: UrlCodec, locationStrategy: LocationStrategy) {
const $locationProvider = new LocationUpgradeProvider( const $locationProvider =
ngUpgrade, location, platformLocation, urlCodec, locationStrategy); new $locationShimProvider(ngUpgrade, location, platformLocation, urlCodec, locationStrategy);
return $locationProvider.$get(); return $locationProvider.$get();
} }

View File

@ -10,7 +10,7 @@ import {CommonModule, PathLocationStrategy} from '@angular/common';
import {TestBed, inject} from '@angular/core/testing'; import {TestBed, inject} from '@angular/core/testing';
import {UpgradeModule} from '@angular/upgrade/static'; import {UpgradeModule} from '@angular/upgrade/static';
import {LocationUpgradeService} from '../src/$location'; import {$locationShim} from '../src/$location_shim';
import {LocationUpgradeTestModule} from './upgrade_location_test_module'; import {LocationUpgradeTestModule} from './upgrade_location_test_module';
@ -79,17 +79,16 @@ describe('LocationProvider', () => {
upgradeModule.$injector = {get: injectorFactory()}; upgradeModule.$injector = {get: injectorFactory()};
}); });
it('should instantiate LocationProvider', it('should instantiate LocationProvider', inject([$locationShim], ($location: $locationShim) => {
inject([LocationUpgradeService], ($location: LocationUpgradeService) => {
expect($location).toBeDefined(); expect($location).toBeDefined();
expect($location instanceof LocationUpgradeService).toBe(true); expect($location instanceof $locationShim).toBe(true);
})); }));
}); });
describe('LocationHtml5Url', function() { describe('LocationHtml5Url', function() {
let $location: LocationUpgradeService; let $location: $locationShim;
let upgradeModule: UpgradeModule; let upgradeModule: UpgradeModule;
beforeEach(() => { beforeEach(() => {
@ -106,8 +105,7 @@ describe('LocationHtml5Url', function() {
upgradeModule.$injector = {get: injectorFactory()}; upgradeModule.$injector = {get: injectorFactory()};
}); });
beforeEach( beforeEach(inject([$locationShim], (loc: $locationShim) => { $location = loc; }));
inject([LocationUpgradeService], (loc: LocationUpgradeService) => { $location = loc; }));
it('should set the URL', () => { it('should set the URL', () => {
@ -166,7 +164,7 @@ describe('LocationHtml5Url', function() {
describe('NewUrl', function() { describe('NewUrl', function() {
let $location: LocationUpgradeService; let $location: $locationShim;
let upgradeModule: UpgradeModule; let upgradeModule: UpgradeModule;
beforeEach(() => { beforeEach(() => {
@ -182,8 +180,7 @@ describe('NewUrl', function() {
upgradeModule.$injector = {get: injectorFactory()}; upgradeModule.$injector = {get: injectorFactory()};
}); });
beforeEach( beforeEach(inject([$locationShim], (loc: $locationShim) => { $location = loc; }));
inject([LocationUpgradeService], (loc: LocationUpgradeService) => { $location = loc; }));
// Sets the default most of these tests rely on // Sets the default most of these tests rely on
function setupUrl(url = '/path/b?search=a&b=c&d#hash') { $location.url(url); } function setupUrl(url = '/path/b?search=a&b=c&d#hash') { $location.url(url); }
@ -472,7 +469,7 @@ describe('NewUrl', function() {
}); });
describe('New URL Parsing', () => { describe('New URL Parsing', () => {
let $location: LocationUpgradeService; let $location: $locationShim;
let upgradeModule: UpgradeModule; let upgradeModule: UpgradeModule;
beforeEach(() => { beforeEach(() => {
@ -489,8 +486,7 @@ describe('New URL Parsing', () => {
upgradeModule.$injector = {get: injectorFactory()}; upgradeModule.$injector = {get: injectorFactory()};
}); });
beforeEach( beforeEach(inject([$locationShim], (loc: $locationShim) => { $location = loc; }));
inject([LocationUpgradeService], (loc: LocationUpgradeService) => { $location = loc; }));
it('should prepend path with basePath', function() { it('should prepend path with basePath', function() {
$location.$$parse('http://server/base/abc?a'); $location.$$parse('http://server/base/abc?a');
@ -504,7 +500,7 @@ describe('New URL Parsing', () => {
}); });
describe('New URL Parsing', () => { describe('New URL Parsing', () => {
let $location: LocationUpgradeService; let $location: $locationShim;
let upgradeModule: UpgradeModule; let upgradeModule: UpgradeModule;
beforeEach(() => { beforeEach(() => {
@ -520,8 +516,7 @@ describe('New URL Parsing', () => {
upgradeModule.$injector = {get: injectorFactory()}; upgradeModule.$injector = {get: injectorFactory()};
}); });
beforeEach( beforeEach(inject([$locationShim], (loc: $locationShim) => { $location = loc; }));
inject([LocationUpgradeService], (loc: LocationUpgradeService) => { $location = loc; }));
it('should parse new url', function() { it('should parse new url', function() {
$location.$$parse('http://host.com/base'); $location.$$parse('http://host.com/base');
@ -629,7 +624,7 @@ describe('New URL Parsing', () => {
}); });
}); });
function parseLinkAndReturn(location: LocationUpgradeService, toUrl: string, relHref?: string) { function parseLinkAndReturn(location: $locationShim, toUrl: string, relHref?: string) {
const resetUrl = location.$$parseLinkUrl(toUrl, relHref); const resetUrl = location.$$parseLinkUrl(toUrl, relHref);
return resetUrl && location.absUrl() || undefined; return resetUrl && location.absUrl() || undefined;
} }

View File

@ -11,7 +11,7 @@ import {MockPlatformLocation} from '@angular/common/testing';
import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core'; import {Inject, InjectionToken, ModuleWithProviders, NgModule, Optional} from '@angular/core';
import {UpgradeModule} from '@angular/upgrade/static'; import {UpgradeModule} from '@angular/upgrade/static';
import {LocationUpgradeProvider, LocationUpgradeService} from '../src/$location'; import {$locationShim, $locationShimProvider} from '../src/$location_shim';
import {LocationUpgradeModule} from '../src/location_upgrade_module'; import {LocationUpgradeModule} from '../src/location_upgrade_module';
import {UrlCodec} from '../src/params'; import {UrlCodec} from '../src/params';
@ -60,7 +60,7 @@ export class LocationUpgradeTestModule {
deps: [[new Inject(APP_BASE_HREF), new Optional()]] deps: [[new Inject(APP_BASE_HREF), new Optional()]]
}, },
{ {
provide: LocationUpgradeService, provide: $locationShim,
useFactory: provide$location, useFactory: provide$location,
deps: [ deps: [
UpgradeModule, Location, PlatformLocation, UrlCodec, LocationStrategy, UpgradeModule, Location, PlatformLocation, UrlCodec, LocationStrategy,
@ -81,8 +81,8 @@ export class LocationUpgradeTestModule {
export function provide$location( export function provide$location(
ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation, ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation,
urlCodec: UrlCodec, locationStrategy: LocationStrategy, config?: LocationUpgradeTestingConfig) { urlCodec: UrlCodec, locationStrategy: LocationStrategy, config?: LocationUpgradeTestingConfig) {
const $locationProvider = new LocationUpgradeProvider( const $locationProvider =
ngUpgrade, location, platformLocation, urlCodec, locationStrategy); new $locationShimProvider(ngUpgrade, location, platformLocation, urlCodec, locationStrategy);
$locationProvider.hashPrefix(config && config.hashPrefix); $locationProvider.hashPrefix(config && config.hashPrefix);
$locationProvider.html5Mode(config && !config.useHash); $locationProvider.html5Mode(config && !config.useHash);

View File

@ -12,9 +12,6 @@
], ],
"@angular/platform-browser": [ "@angular/platform-browser": [
"../../../dist/packages/platform-browser" "../../../dist/packages/platform-browser"
],
"@angular/upgrade/static": [
"../../../dist/packages/upgrade/static"
] ]
}, },
"outDir": "../../../dist/packages/common" "outDir": "../../../dist/packages/common"

View File

@ -1,4 +1,37 @@
export declare const $locationProvider: Function; export declare class $locationShim {
constructor($injector: any, location: Location, platformLocation: PlatformLocation, urlCodec: UrlCodec, locationStrategy: LocationStrategy);
$$parse(url: string): void;
$$parseLinkUrl(url: string, relHref?: string | null): boolean;
absUrl(): string;
hash(hash: string | number | null): this;
hash(): string;
host(): string;
path(): string;
path(path: string | number | null): this;
port(): number | null;
protocol(): string;
replace(): this;
search(): {
[key: string]: unknown;
};
search(search: string | number | {
[key: string]: unknown;
}): this;
search(search: string | number | {
[key: string]: unknown;
}, paramValue: null | undefined | string | number | boolean | string[]): this;
state(state: unknown): this;
state(): unknown;
url(): string;
url(url: string): this;
}
export declare class $locationShimProvider {
constructor(ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation, urlCodec: UrlCodec, locationStrategy: LocationStrategy);
$get(): $locationShim;
hashPrefix(prefix?: string): void;
html5Mode(mode?: any): void;
}
export declare class AngularJSUrlCodec implements UrlCodec { export declare class AngularJSUrlCodec implements UrlCodec {
areEqual(a: string, b: string): boolean; areEqual(a: string, b: string): boolean;
@ -30,8 +63,6 @@ export declare class AngularJSUrlCodec implements UrlCodec {
export declare const LOCATION_UPGRADE_CONFIGURATION: InjectionToken<LocationUpgradeConfig>; export declare const LOCATION_UPGRADE_CONFIGURATION: InjectionToken<LocationUpgradeConfig>;
export declare const LOCATION_UPGRADE_MODULE = "LOCATION_UPGRADE_MODULE";
export interface LocationUpgradeConfig { export interface LocationUpgradeConfig {
appBaseHref?: string; appBaseHref?: string;
hashPrefix?: string; hashPrefix?: string;
@ -44,41 +75,6 @@ export declare class LocationUpgradeModule {
static config(config?: LocationUpgradeConfig): ModuleWithProviders<LocationUpgradeModule>; static config(config?: LocationUpgradeConfig): ModuleWithProviders<LocationUpgradeModule>;
} }
export declare class LocationUpgradeProvider {
constructor(ngUpgrade: UpgradeModule, location: Location, platformLocation: PlatformLocation, urlCodec: UrlCodec, locationStrategy: LocationStrategy);
$get(): LocationUpgradeService;
hashPrefix(prefix?: string): void;
html5Mode(mode?: any): void;
}
export declare class LocationUpgradeService {
constructor($injector: any, location: Location, platformLocation: PlatformLocation, urlCodec: UrlCodec, locationStrategy: LocationStrategy);
$$parse(url: string): void;
$$parseLinkUrl(url: string, relHref?: string | null): boolean;
absUrl(): string;
hash(hash: string | number | null): this;
hash(): string;
host(): string;
path(): string;
path(path: string | number | null): this;
port(): number | null;
protocol(): string;
replace(): this;
search(): {
[key: string]: unknown;
};
search(search: string | number | {
[key: string]: unknown;
}): this;
search(search: string | number | {
[key: string]: unknown;
}, paramValue: null | undefined | string | number | boolean | string[]): this;
state(state: unknown): this;
state(): unknown;
url(): string;
url(url: string): this;
}
export declare abstract class UrlCodec { export declare abstract class UrlCodec {
abstract areEqual(a: string, b: string): boolean; abstract areEqual(a: string, b: string): boolean;
abstract decodeHash(hash: string): string; abstract decodeHash(hash: string): string;