Skip to content

Commit 606b8fa

Browse files
DzmitryShylovichvicb
authored andcommitted
refactor(router): use object spread operator instead of merge fn
1 parent b7fa5de commit 606b8fa

5 files changed

Lines changed: 12 additions & 30 deletions

File tree

‎packages/router/src/apply_redirects.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import {Route, Routes} from './config';
2222
import {LoadedRouterConfig, RouterConfigLoader} from './router_config_loader';
2323
import {PRIMARY_OUTLET, Params, defaultUrlMatcher, navigationCancelingError} from './shared';
2424
import {UrlSegment, UrlSegmentGroup, UrlSerializer, UrlTree} from './url_tree';
25-
import {andObservables, forEach, merge, waitForMap, wrapIntoObservable} from './utils/collection';
25+
import {andObservables, forEach, waitForMap, wrapIntoObservable} from './utils/collection';
2626

2727
class NoMatch {
2828
constructor(public segmentGroup: UrlSegmentGroup = null) {}
@@ -478,7 +478,7 @@ function addEmptySegmentsToChildrenIfNeeded(
478478
res[getOutlet(r)] = new UrlSegmentGroup([], {});
479479
}
480480
}
481-
return merge(children, res);
481+
return {...children, ...res};
482482
}
483483

484484
function createChildrenForEmptySegments(

‎packages/router/src/recognize.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {Data, ResolveData, Route, Routes} from './config';
1515
import {ActivatedRouteSnapshot, RouterStateSnapshot, inheritedParamsDataResolve} from './router_state';
1616
import {PRIMARY_OUTLET, defaultUrlMatcher} from './shared';
1717
import {UrlSegment, UrlSegmentGroup, UrlTree, mapChildrenIntoArray} from './url_tree';
18-
import {forEach, last, merge} from './utils/collection';
18+
import {forEach, last} from './utils/collection';
1919
import {TreeNode} from './utils/tree';
2020

2121
class NoMatch {}
@@ -180,7 +180,7 @@ function match(segmentGroup: UrlSegmentGroup, route: Route, segments: UrlSegment
180180

181181
const posParams: {[n: string]: string} = {};
182182
forEach(res.posParams, (v: UrlSegment, k: string) => { posParams[k] = v.path; });
183-
const parameters = merge(posParams, res.consumed[res.consumed.length - 1].parameters);
183+
const parameters = {...posParams, ...res.consumed[res.consumed.length - 1].parameters};
184184

185185
return {consumedSegments: res.consumed, lastChild: res.consumed.length, parameters};
186186
}
@@ -259,7 +259,7 @@ function addEmptyPathsToChildrenIfNeeded(
259259
res[getOutlet(r)] = s;
260260
}
261261
}
262-
return merge(children, res);
262+
return {...children, ...res};
263263
}
264264

265265
function createChildrenForEmptyPaths(

‎packages/router/src/router.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ import {ActivatedRoute, ActivatedRouteSnapshot, RouterState, RouterStateSnapshot
3535
import {PRIMARY_OUTLET, Params, isNavigationCancelingError} from './shared';
3636
import {DefaultUrlHandlingStrategy, UrlHandlingStrategy} from './url_handling_strategy';
3737
import {UrlSerializer, UrlTree, containsTree, createEmptyUrlTree} from './url_tree';
38-
import {andObservables, forEach, merge, shallowEqual, waitForMap, wrapIntoObservable} from './utils/collection';
38+
import {andObservables, forEach, shallowEqual, waitForMap, wrapIntoObservable} from './utils/collection';
3939
import {TreeNode} from './utils/tree';
4040

4141
declare let Zone: any;
@@ -411,7 +411,7 @@ export class Router {
411411
if (queryParamsHandling) {
412412
switch (queryParamsHandling) {
413413
case 'merge':
414-
q = merge(this.currentUrlTree.queryParams, queryParams);
414+
q = {...this.currentUrlTree.queryParams, ...queryParams};
415415
break;
416416
case 'preserve':
417417
q = this.currentUrlTree.queryParams;
@@ -981,7 +981,7 @@ export class PreActivation {
981981
const resolve = future._resolve;
982982
return map.call(this.resolveNode(resolve, future), (resolvedData: any): any => {
983983
future._resolvedData = resolvedData;
984-
future.data = merge(future.data, inheritedParamsDataResolve(future).resolve);
984+
future.data = {...future.data, ...inheritedParamsDataResolve(future).resolve};
985985
return null;
986986
});
987987
}

‎packages/router/src/router_state.ts‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {map} from 'rxjs/operator/map';
1414
import {Data, ResolveData, Route} from './config';
1515
import {PRIMARY_OUTLET, ParamMap, Params, convertToParamMap} from './shared';
1616
import {UrlSegment, UrlSegmentGroup, UrlTree, equalSegments} from './url_tree';
17-
import {merge, shallowEqual, shallowEqualArrays} from './utils/collection';
17+
import {shallowEqual, shallowEqualArrays} from './utils/collection';
1818
import {Tree, TreeNode} from './utils/tree';
1919

2020

@@ -205,9 +205,9 @@ export function inheritedParamsDataResolve(route: ActivatedRouteSnapshot): Inher
205205
}
206206

207207
return pathToRoot.slice(inhertingStartingFrom).reduce((res, curr) => {
208-
const params = merge(res.params, curr.params);
209-
const data = merge(res.data, curr.data);
210-
const resolve = merge(res.resolve, curr._resolvedData);
208+
const params = {...res.params, ...curr.params};
209+
const data = {...res.data, ...curr.data};
210+
const resolve = {...res.resolve, ...curr._resolvedData};
211211
return {params, data, resolve};
212212
}, <any>{params: {}, data: {}, resolve: {}});
213213
}

‎packages/router/src/utils/collection.ts‎

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -63,24 +63,6 @@ export function and(bools: boolean[]): boolean {
6363
return !bools.some(v => !v);
6464
}
6565

66-
export function merge<V>(m1: {[key: string]: V}, m2: {[key: string]: V}): {[key: string]: V} {
67-
const m: {[key: string]: V} = {};
68-
69-
for (const attr in m1) {
70-
if (m1.hasOwnProperty(attr)) {
71-
m[attr] = m1[attr];
72-
}
73-
}
74-
75-
for (const attr in m2) {
76-
if (m2.hasOwnProperty(attr)) {
77-
m[attr] = m2[attr];
78-
}
79-
}
80-
81-
return m;
82-
}
83-
8466
export function forEach<K, V>(map: {[key: string]: V}, callback: (v: V, k: string) => void): void {
8567
for (const prop in map) {
8668
if (map.hasOwnProperty(prop)) {

0 commit comments

Comments
 (0)