@angular/router 2.0.0-rc.1 → 2.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/{router.umd.js → bundles/router.umd.js} +727 -637
  2. package/bundles/router.umd.min.js +2 -0
  3. package/esm/index.d.ts +7 -25
  4. package/esm/index.js +10 -30
  5. package/esm/index.js.map +1 -1
  6. package/esm/src/constants.js +4 -4
  7. package/esm/src/constants.js.map +1 -1
  8. package/esm/src/constants.metadata.json +1 -1
  9. package/esm/src/core_private.d.ts +3 -2
  10. package/esm/src/core_private.js +3 -2
  11. package/esm/src/core_private.js.map +1 -1
  12. package/esm/src/core_private.metadata.json +1 -1
  13. package/esm/src/directives/router_directives.d.ts +21 -0
  14. package/esm/src/directives/router_directives.js +24 -0
  15. package/esm/src/directives/router_directives.js.map +1 -0
  16. package/esm/src/directives/router_directives.metadata.json +1 -0
  17. package/esm/src/directives/router_link.d.ts +4 -2
  18. package/esm/src/directives/router_link.js +21 -13
  19. package/esm/src/directives/router_link.js.map +1 -1
  20. package/esm/src/directives/router_link.metadata.json +1 -1
  21. package/esm/src/directives/router_outlet.d.ts +6 -6
  22. package/esm/src/directives/router_outlet.js +13 -11
  23. package/esm/src/directives/router_outlet.js.map +1 -1
  24. package/esm/src/directives/router_outlet.metadata.json +1 -1
  25. package/esm/src/facade/async.d.ts +11 -4
  26. package/esm/src/facade/async.js +25 -15
  27. package/esm/src/facade/async.js.map +1 -1
  28. package/esm/src/facade/base_wrapped_exception.js +4 -4
  29. package/esm/src/facade/base_wrapped_exception.js.map +1 -1
  30. package/esm/src/facade/collection.js +1 -1
  31. package/esm/src/facade/collection.js.map +1 -1
  32. package/esm/src/facade/collection.metadata.json +1 -1
  33. package/esm/src/facade/exception_handler.d.ts +2 -11
  34. package/esm/src/facade/exception_handler.js +8 -7
  35. package/esm/src/facade/exception_handler.js.map +1 -1
  36. package/esm/src/facade/exceptions.d.ts +4 -0
  37. package/esm/src/facade/exceptions.js +6 -2
  38. package/esm/src/facade/exceptions.js.map +1 -1
  39. package/esm/src/facade/exceptions.metadata.json +1 -0
  40. package/esm/src/facade/lang.d.ts +6 -4
  41. package/esm/src/facade/lang.js +12 -11
  42. package/esm/src/facade/lang.js.map +1 -1
  43. package/esm/src/facade/lang.metadata.json +1 -1
  44. package/esm/src/facade/promise.js.map +1 -1
  45. package/esm/src/interfaces.js.map +1 -1
  46. package/esm/src/lifecycle_reflector.js.map +1 -1
  47. package/esm/src/link.d.ts +1 -1
  48. package/esm/src/link.js +31 -18
  49. package/esm/src/link.js.map +1 -1
  50. package/esm/src/metadata/decorators.d.ts +1 -1
  51. package/esm/src/metadata/decorators.js +1 -1
  52. package/esm/src/metadata/decorators.js.map +1 -1
  53. package/esm/src/metadata/decorators.metadata.json +1 -1
  54. package/esm/src/metadata/metadata.d.ts +3 -3
  55. package/esm/src/metadata/metadata.js +1 -1
  56. package/esm/src/metadata/metadata.js.map +1 -1
  57. package/esm/src/recognize.d.ts +3 -3
  58. package/esm/src/recognize.js +57 -41
  59. package/esm/src/recognize.js.map +1 -1
  60. package/esm/src/router.d.ts +3 -23
  61. package/esm/src/router.js +54 -58
  62. package/esm/src/router.js.map +1 -1
  63. package/esm/src/router_providers.d.ts +1 -1
  64. package/esm/src/router_providers.js +3 -7
  65. package/esm/src/router_providers.js.map +1 -1
  66. package/esm/src/router_providers.metadata.json +1 -1
  67. package/esm/src/router_providers_common.d.ts +7 -0
  68. package/esm/src/router_providers_common.js +10 -7
  69. package/esm/src/router_providers_common.js.map +1 -1
  70. package/esm/src/router_providers_common.metadata.json +1 -1
  71. package/esm/src/router_url_serializer.js +9 -9
  72. package/esm/src/router_url_serializer.js.map +1 -1
  73. package/esm/src/segments.d.ts +7 -12
  74. package/esm/src/segments.js +27 -45
  75. package/esm/src/segments.js.map +1 -1
  76. package/esm/src/segments.metadata.json +1 -0
  77. package/esm/testing/router_testing_providers.js +10 -3
  78. package/esm/testing/router_testing_providers.js.map +1 -1
  79. package/esm/testing/router_testing_providers.metadata.json +1 -1
  80. package/esm/testing.js.map +1 -1
  81. package/index.d.ts +7 -25
  82. package/index.js +22 -39
  83. package/index.js.map +1 -1
  84. package/package.json +8 -4
  85. package/src/constants.js +4 -4
  86. package/src/constants.js.map +1 -1
  87. package/src/constants.metadata.json +1 -1
  88. package/src/core_private.d.ts +3 -2
  89. package/src/core_private.js +1 -0
  90. package/src/core_private.js.map +1 -1
  91. package/src/core_private.metadata.json +1 -1
  92. package/src/directives/router_directives.d.ts +21 -0
  93. package/src/directives/router_directives.js +25 -0
  94. package/src/directives/router_directives.js.map +1 -0
  95. package/src/directives/router_directives.metadata.json +1 -0
  96. package/src/directives/router_link.d.ts +4 -2
  97. package/src/directives/router_link.js +20 -12
  98. package/src/directives/router_link.js.map +1 -1
  99. package/src/directives/router_link.metadata.json +1 -1
  100. package/src/directives/router_outlet.d.ts +6 -6
  101. package/src/directives/router_outlet.js +13 -11
  102. package/src/directives/router_outlet.js.map +1 -1
  103. package/src/directives/router_outlet.metadata.json +1 -1
  104. package/src/facade/async.d.ts +11 -4
  105. package/src/facade/async.js +27 -17
  106. package/src/facade/async.js.map +1 -1
  107. package/src/facade/base_wrapped_exception.js +4 -4
  108. package/src/facade/base_wrapped_exception.js.map +1 -1
  109. package/src/facade/collection.js.map +1 -1
  110. package/src/facade/collection.metadata.json +1 -1
  111. package/src/facade/exception_handler.d.ts +2 -11
  112. package/src/facade/exception_handler.js +8 -7
  113. package/src/facade/exception_handler.js.map +1 -1
  114. package/src/facade/exceptions.d.ts +4 -0
  115. package/src/facade/exceptions.js +6 -2
  116. package/src/facade/exceptions.js.map +1 -1
  117. package/src/facade/exceptions.metadata.json +1 -0
  118. package/src/facade/lang.d.ts +6 -4
  119. package/src/facade/lang.js +12 -11
  120. package/src/facade/lang.js.map +1 -1
  121. package/src/facade/lang.metadata.json +1 -1
  122. package/src/facade/promise.js.map +1 -1
  123. package/src/interfaces.js.map +1 -1
  124. package/src/lifecycle_reflector.js.map +1 -1
  125. package/src/link.d.ts +1 -1
  126. package/src/link.js +33 -18
  127. package/src/link.js.map +1 -1
  128. package/src/metadata/decorators.d.ts +1 -1
  129. package/src/metadata/decorators.js +1 -1
  130. package/src/metadata/decorators.js.map +1 -1
  131. package/src/metadata/decorators.metadata.json +1 -1
  132. package/src/metadata/metadata.d.ts +3 -3
  133. package/src/metadata/metadata.js +1 -1
  134. package/src/metadata/metadata.js.map +1 -1
  135. package/src/recognize.d.ts +3 -3
  136. package/src/recognize.js +62 -42
  137. package/src/recognize.js.map +1 -1
  138. package/src/router.d.ts +3 -23
  139. package/src/router.js +64 -64
  140. package/src/router.js.map +1 -1
  141. package/src/router_providers.d.ts +1 -1
  142. package/src/router_providers.js +3 -7
  143. package/src/router_providers.js.map +1 -1
  144. package/src/router_providers.metadata.json +1 -1
  145. package/src/router_providers_common.d.ts +7 -0
  146. package/src/router_providers_common.js +10 -5
  147. package/src/router_providers_common.js.map +1 -1
  148. package/src/router_providers_common.metadata.json +1 -1
  149. package/src/router_url_serializer.js +8 -8
  150. package/src/router_url_serializer.js.map +1 -1
  151. package/src/segments.d.ts +7 -12
  152. package/src/segments.js +26 -44
  153. package/src/segments.js.map +1 -1
  154. package/src/segments.metadata.json +1 -0
  155. package/testing/router_testing_providers.js +9 -2
  156. package/testing/router_testing_providers.js.map +1 -1
  157. package/testing/router_testing_providers.metadata.json +1 -1
  158. package/testing.js.map +1 -1
  159. package/esm/index.metadata.json +0 -1
  160. package/index.metadata.json +0 -1
package/src/router.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {OnInit, provide, ReflectiveInjector, ComponentResolver} from '@angular/core';\nimport {RouterOutlet} from './directives/router_outlet';\nimport {Type, isBlank, isPresent} from './facade/lang';\nimport {ListWrapper} from './facade/collection';\nimport {EventEmitter, Observable, PromiseWrapper, ObservableWrapper} from './facade/async';\nimport {StringMapWrapper} from './facade/collection';\nimport {BaseException} from '@angular/core';\nimport {RouterUrlSerializer} from './router_url_serializer';\nimport {CanDeactivate} from './interfaces';\nimport {recognize} from './recognize';\nimport {Location} from '@angular/common';\nimport {link} from './link';\n\nimport {\n equalSegments,\n routeSegmentComponentFactory,\n RouteSegment,\n UrlTree,\n RouteTree,\n rootNode,\n TreeNode,\n UrlSegment,\n serializeRouteSegmentTree\n} from './segments';\nimport {hasLifecycleHook} from './lifecycle_reflector';\nimport {DEFAULT_OUTLET_NAME} from './constants';\n\n/**\n * @internal\n */\nexport class RouterOutletMap {\n /** @internal */\n _outlets: {[name: string]: RouterOutlet} = {};\n registerOutlet(name: string, outlet: RouterOutlet): void { this._outlets[name] = outlet; }\n}\n\n/**\n * The `Router` is responsible for mapping URLs to components.\n *\n * You can see the state of the router by inspecting the read-only fields `router.urlTree`\n * and `router.routeTree`.\n */\nexport class Router {\n private _prevTree: RouteTree;\n private _urlTree: UrlTree;\n private _locationSubscription: any;\n private _changes: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @internal\n */\n constructor(private _rootComponent: Object, private _rootComponentType: Type,\n private _componentResolver: ComponentResolver,\n private _urlSerializer: RouterUrlSerializer,\n private _routerOutletMap: RouterOutletMap, private _location: Location) {\n this._prevTree = this._createInitialTree();\n this._setUpLocationChangeListener();\n this.navigateByUrl(this._location.path());\n }\n\n /**\n * Returns the current url tree.\n */\n get urlTree(): UrlTree { return this._urlTree; }\n\n /**\n * Returns the current route tree.\n */\n get routeTree(): RouteTree { return this._prevTree; }\n\n /**\n * An observable or url changes from the router.\n */\n get changes(): Observable<void> { return this._changes; }\n\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n * ```\n */\n navigateByUrl(url: string): Promise<void> {\n return this._navigate(this._urlSerializer.parse(url));\n }\n\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no segment is provided, the navigation is absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'team', '11], segment);\n * ```\n */\n navigate(commands: any[], segment?: RouteSegment): Promise<void> {\n return this._navigate(this.createUrlTree(commands, segment));\n }\n\n /**\n * @internal\n */\n dispose(): void { ObservableWrapper.dispose(this._locationSubscription); }\n\n /**\n * Applies an array of commands to the current url tree and creates\n * a new url tree.\n *\n * When given a segment, applies the given commands starting from the segment.\n * When not given a segment, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static fragments like this\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // assuming the current url is `/team/33/user/11` and the segment points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], segment);\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], segment);\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], segment);\n * ```\n */\n createUrlTree(commands: any[], segment?: RouteSegment): UrlTree {\n let s = isPresent(segment) ? segment : this._prevTree.root;\n return link(s, this._prevTree, this.urlTree, commands);\n }\n\n /**\n * Serializes a {@link UrlTree} into a string.\n */\n serializeUrl(url: UrlTree): string { return this._urlSerializer.serialize(url); }\n\n private _createInitialTree(): RouteTree {\n let root = new RouteSegment([new UrlSegment(\"\", {}, null)], {}, DEFAULT_OUTLET_NAME,\n this._rootComponentType, null);\n return new RouteTree(new TreeNode<RouteSegment>(root, []));\n }\n\n private _setUpLocationChangeListener(): void {\n this._locationSubscription = this._location.subscribe(\n (change) => { this._navigate(this._urlSerializer.parse(change['url'])); });\n }\n\n private _navigate(url: UrlTree): Promise<void> {\n this._urlTree = url;\n return recognize(this._componentResolver, this._rootComponentType, url)\n .then(currTree => {\n return new _LoadSegments(currTree, this._prevTree)\n .load(this._routerOutletMap, this._rootComponent)\n .then(updated => {\n if (updated) {\n this._prevTree = currTree;\n this._location.go(this._urlSerializer.serialize(this._urlTree));\n this._changes.emit(null);\n }\n });\n });\n }\n}\n\n\nclass _LoadSegments {\n private deactivations: Object[][] = [];\n private performMutation: boolean = true;\n\n constructor(private currTree: RouteTree, private prevTree: RouteTree) {}\n\n load(parentOutletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n let prevRoot = isPresent(this.prevTree) ? rootNode(this.prevTree) : null;\n let currRoot = rootNode(this.currTree);\n\n return this.canDeactivate(currRoot, prevRoot, parentOutletMap, rootComponent)\n .then(res => {\n this.performMutation = true;\n if (res) {\n this.loadChildSegments(currRoot, prevRoot, parentOutletMap, [rootComponent]);\n }\n return res;\n });\n }\n\n private canDeactivate(currRoot: TreeNode<RouteSegment>, prevRoot: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n this.performMutation = false;\n this.loadChildSegments(currRoot, prevRoot, outletMap, [rootComponent]);\n\n let allPaths = PromiseWrapper.all(this.deactivations.map(r => this.checkCanDeactivatePath(r)));\n return allPaths.then((values: boolean[]) => values.filter(v => v).length === values.length);\n }\n\n private checkCanDeactivatePath(path: Object[]): Promise<boolean> {\n let curr = PromiseWrapper.resolve(true);\n for (let p of ListWrapper.reversed(path)) {\n curr = curr.then(_ => {\n if (hasLifecycleHook(\"routerCanDeactivate\", p)) {\n return (<CanDeactivate>p).routerCanDeactivate(this.prevTree, this.currTree);\n } else {\n return _;\n }\n });\n }\n return curr;\n }\n\n private loadChildSegments(currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, components: Object[]): void {\n let prevChildren = isPresent(prevNode) ?\n prevNode.children.reduce(\n (m, c) => {\n m[c.value.outlet] = c;\n return m;\n },\n {}) :\n {};\n\n currNode.children.forEach(c => {\n this.loadSegments(c, prevChildren[c.value.outlet], outletMap, components);\n StringMapWrapper.delete(prevChildren, c.value.outlet);\n });\n\n StringMapWrapper.forEach(prevChildren,\n (v, k) => this.unloadOutlet(outletMap._outlets[k], components));\n }\n\n loadSegments(currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n parentOutletMap: RouterOutletMap, components: Object[]): void {\n let curr = currNode.value;\n let prev = isPresent(prevNode) ? prevNode.value : null;\n let outlet = this.getOutlet(parentOutletMap, currNode.value);\n\n if (equalSegments(curr, prev)) {\n this.loadChildSegments(currNode, prevNode, outlet.outletMap,\n components.concat([outlet.loadedComponent]));\n } else {\n this.unloadOutlet(outlet, components);\n if (this.performMutation) {\n let outletMap = new RouterOutletMap();\n let loadedComponent = this.loadNewSegment(outletMap, curr, prev, outlet);\n this.loadChildSegments(currNode, prevNode, outletMap, components.concat([loadedComponent]));\n }\n }\n }\n\n private loadNewSegment(outletMap: RouterOutletMap, curr: RouteSegment, prev: RouteSegment,\n outlet: RouterOutlet): Object {\n let resolved = ReflectiveInjector.resolve(\n [provide(RouterOutletMap, {useValue: outletMap}), provide(RouteSegment, {useValue: curr})]);\n let ref = outlet.load(routeSegmentComponentFactory(curr), resolved, outletMap);\n if (hasLifecycleHook(\"routerOnActivate\", ref.instance)) {\n ref.instance.routerOnActivate(curr, prev, this.currTree, this.prevTree);\n }\n return ref.instance;\n }\n\n private getOutlet(outletMap: RouterOutletMap, segment: RouteSegment): RouterOutlet {\n let outlet = outletMap._outlets[segment.outlet];\n if (isBlank(outlet)) {\n if (segment.outlet == DEFAULT_OUTLET_NAME) {\n throw new BaseException(`Cannot find default outlet`);\n } else {\n throw new BaseException(`Cannot find the outlet ${segment.outlet}`);\n }\n }\n return outlet;\n }\n\n private unloadOutlet(outlet: RouterOutlet, components: Object[]): void {\n if (isPresent(outlet) && outlet.isLoaded) {\n StringMapWrapper.forEach(outlet.outletMap._outlets,\n (v, k) => this.unloadOutlet(v, components));\n if (this.performMutation) {\n outlet.unload();\n } else {\n this.deactivations.push(components.concat([outlet.loadedComponent]));\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router.ts"],"names":[],"mappings":"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","sourcesContent":["import {Location} from '@angular/common';\nimport {BaseException, ComponentResolver, ReflectiveInjector, provide} from '@angular/core';\n\nimport {DEFAULT_OUTLET_NAME} from './constants';\nimport {RouterOutlet} from './directives/router_outlet';\nimport {EventEmitter, Observable, ObservableWrapper, PromiseWrapper} from './facade/async';\nimport {ListWrapper, StringMapWrapper} from './facade/collection';\nimport {Type, isBlank, isPresent} from './facade/lang';\nimport {CanDeactivate} from './interfaces';\nimport {hasLifecycleHook} from './lifecycle_reflector';\nimport {link} from './link';\nimport {recognize} from './recognize';\nimport {RouterUrlSerializer} from './router_url_serializer';\nimport {RouteSegment, RouteTree, TreeNode, UrlSegment, UrlTree, createEmptyRouteTree, rootNode, routeSegmentComponentFactory, serializeRouteSegmentTree} from './segments';\n\nexport class RouterOutletMap {\n /** @internal */\n _outlets: {[name: string]: RouterOutlet} = {};\n registerOutlet(name: string, outlet: RouterOutlet): void { this._outlets[name] = outlet; }\n}\n\n/**\n * The `Router` is responsible for mapping URLs to components.\n *\n * You can see the state of the router by inspecting the read-only fields `router.urlTree`\n * and `router.routeTree`.\n */\nexport class Router {\n private _routeTree: RouteTree;\n private _urlTree: UrlTree;\n private _locationSubscription: any;\n private _changes: EventEmitter<void> = new EventEmitter<void>();\n\n /**\n * @internal\n */\n constructor(\n private _rootComponent: Object, private _rootComponentType: Type,\n private _componentResolver: ComponentResolver, private _urlSerializer: RouterUrlSerializer,\n private _routerOutletMap: RouterOutletMap, private _location: Location) {\n this._routeTree = createEmptyRouteTree(this._rootComponentType);\n this._setUpLocationChangeListener();\n this.navigateByUrl(this._location.path());\n }\n\n /**\n * Returns the current url tree.\n */\n get urlTree(): UrlTree { return this._urlTree; }\n\n /**\n * Returns the current route tree.\n */\n get routeTree(): RouteTree { return this._routeTree; }\n\n /**\n * An observable or url changes from the router.\n */\n get changes(): Observable<void> { return this._changes; }\n\n /**\n * Navigate based on the provided url. This navigation is always absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigateByUrl(\"/team/33/user/11\");\n * ```\n */\n navigateByUrl(url: string): Promise<void> {\n return this._navigate(this._urlSerializer.parse(url));\n }\n\n /**\n * Navigate based on the provided array of commands and a starting point.\n * If no segment is provided, the navigation is absolute.\n *\n * ### Usage\n *\n * ```\n * router.navigate(['team', 33, 'team', '11], segment);\n * ```\n */\n navigate(commands: any[], segment?: RouteSegment): Promise<void> {\n return this._navigate(this.createUrlTree(commands, segment));\n }\n\n /**\n * @internal\n */\n dispose(): void { ObservableWrapper.dispose(this._locationSubscription); }\n\n /**\n * Applies an array of commands to the current url tree and creates\n * a new url tree.\n *\n * When given a segment, applies the given commands starting from the segment.\n * When not given a segment, applies the given command starting from the root.\n *\n * ### Usage\n *\n * ```\n * // create /team/33/user/11\n * router.createUrlTree(['/team', 33, 'user', 11]);\n *\n * // create /team/33;expand=true/user/11\n * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);\n *\n * // you can collapse static fragments like this\n * router.createUrlTree(['/team/33/user', userId]);\n *\n * // assuming the current url is `/team/33/user/11` and the segment points to `user/11`\n *\n * // navigate to /team/33/user/11/details\n * router.createUrlTree(['details'], segment);\n *\n * // navigate to /team/33/user/22\n * router.createUrlTree(['../22'], segment);\n *\n * // navigate to /team/44/user/22\n * router.createUrlTree(['../../team/44/user/22'], segment);\n * ```\n */\n createUrlTree(commands: any[], segment?: RouteSegment): UrlTree {\n let s = isPresent(segment) ? segment : this._routeTree.root;\n return link(s, this._routeTree, this.urlTree, commands);\n }\n\n /**\n * Serializes a {@link UrlTree} into a string.\n */\n serializeUrl(url: UrlTree): string { return this._urlSerializer.serialize(url); }\n\n private _setUpLocationChangeListener(): void {\n this._locationSubscription = this._location.subscribe(\n (change) => { this._navigate(this._urlSerializer.parse(change['url']), change['pop']); });\n }\n\n private _navigate(url: UrlTree, preventPushState?: boolean): Promise<void> {\n this._urlTree = url;\n return recognize(this._componentResolver, this._rootComponentType, url, this._routeTree)\n .then(currTree => {\n return new _ActivateSegments(currTree, this._routeTree)\n .activate(this._routerOutletMap, this._rootComponent)\n .then(updated => {\n if (updated) {\n this._routeTree = currTree;\n if (isBlank(preventPushState) || !preventPushState) {\n let path = this._urlSerializer.serialize(this._urlTree);\n if (this._location.isCurrentPathEqualTo(path)) {\n this._location.replaceState(path);\n } else {\n this._location.go(path);\n }\n }\n this._changes.emit(null);\n }\n });\n });\n }\n}\n\n\nclass _ActivateSegments {\n private deactivations: Object[][] = [];\n private performMutation: boolean = true;\n\n constructor(private currTree: RouteTree, private prevTree: RouteTree) {}\n\n activate(parentOutletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n let prevRoot = isPresent(this.prevTree) ? rootNode(this.prevTree) : null;\n let currRoot = rootNode(this.currTree);\n\n return this.canDeactivate(currRoot, prevRoot, parentOutletMap, rootComponent).then(res => {\n this.performMutation = true;\n if (res) {\n this.activateChildSegments(currRoot, prevRoot, parentOutletMap, [rootComponent]);\n }\n return res;\n });\n }\n\n private canDeactivate(\n currRoot: TreeNode<RouteSegment>, prevRoot: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, rootComponent: Object): Promise<boolean> {\n this.performMutation = false;\n this.activateChildSegments(currRoot, prevRoot, outletMap, [rootComponent]);\n\n let allPaths = PromiseWrapper.all(this.deactivations.map(r => this.checkCanDeactivatePath(r)));\n return allPaths.then((values: boolean[]) => values.filter(v => v).length === values.length);\n }\n\n private checkCanDeactivatePath(path: Object[]): Promise<boolean> {\n let curr = PromiseWrapper.resolve(true);\n for (let p of ListWrapper.reversed(path)) {\n curr = curr.then(_ => {\n if (hasLifecycleHook('routerCanDeactivate', p)) {\n return (<CanDeactivate>p).routerCanDeactivate(this.prevTree, this.currTree);\n } else {\n return _;\n }\n });\n }\n return curr;\n }\n\n private activateChildSegments(\n currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n outletMap: RouterOutletMap, components: Object[]): void {\n let prevChildren = isPresent(prevNode) ? prevNode.children.reduce((m, c) => {\n (m as any /** TODO #9100 */)[c.value.outlet] = c;\n return m;\n }, {}) : {};\n\n currNode.children.forEach(c => {\n this.activateSegments(\n c, (prevChildren as any /** TODO #9100 */)[c.value.outlet], outletMap, components);\n StringMapWrapper.delete(prevChildren, c.value.outlet);\n });\n\n StringMapWrapper.forEach(\n prevChildren, (v: any /** TODO #9100 */, k: any /** TODO #9100 */) =>\n this.deactivateOutlet(outletMap._outlets[k], components));\n }\n\n activateSegments(\n currNode: TreeNode<RouteSegment>, prevNode: TreeNode<RouteSegment>,\n parentOutletMap: RouterOutletMap, components: Object[]): void {\n let curr = currNode.value;\n let prev = isPresent(prevNode) ? prevNode.value : null;\n let outlet = this.getOutlet(parentOutletMap, currNode.value);\n\n if (curr === prev) {\n this.activateChildSegments(\n currNode, prevNode, outlet.outletMap, components.concat([outlet.component]));\n } else {\n this.deactivateOutlet(outlet, components);\n if (this.performMutation) {\n let outletMap = new RouterOutletMap();\n let component = this.activateNewSegments(outletMap, curr, prev, outlet);\n this.activateChildSegments(currNode, prevNode, outletMap, components.concat([component]));\n }\n }\n }\n\n private activateNewSegments(\n outletMap: RouterOutletMap, curr: RouteSegment, prev: RouteSegment,\n outlet: RouterOutlet): Object {\n let resolved = ReflectiveInjector.resolve(\n [{provide: RouterOutletMap, useValue: outletMap}, {provide: RouteSegment, useValue: curr}]);\n let ref = outlet.activate(routeSegmentComponentFactory(curr), resolved, outletMap);\n if (hasLifecycleHook('routerOnActivate', ref.instance)) {\n ref.instance.routerOnActivate(curr, prev, this.currTree, this.prevTree);\n }\n return ref.instance;\n }\n\n private getOutlet(outletMap: RouterOutletMap, segment: RouteSegment): RouterOutlet {\n let outlet = outletMap._outlets[segment.outlet];\n if (isBlank(outlet)) {\n if (segment.outlet == DEFAULT_OUTLET_NAME) {\n throw new BaseException(`Cannot find default outlet`);\n } else {\n throw new BaseException(`Cannot find the outlet ${segment.outlet}`);\n }\n }\n return outlet;\n }\n\n private deactivateOutlet(outlet: RouterOutlet, components: Object[]): void {\n if (isPresent(outlet) && outlet.isActivated) {\n StringMapWrapper.forEach(\n outlet.outletMap._outlets, (v: any /** TODO #9100 */, k: any /** TODO #9100 */) =>\n this.deactivateOutlet(v, components));\n if (this.performMutation) {\n outlet.deactivate();\n } else {\n this.deactivations.push(components.concat([outlet.component]));\n }\n }\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * A list of {@link Provider}s. To use the router, you must add this to your application.
2
+ * A list of providers. To use the router, you must add this to your application.
3
3
  *
4
4
  * ```
5
5
  * import {Component} from '@angular/core';
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
  var router_providers_common_1 = require('./router_providers_common');
3
- var platform_browser_1 = require('@angular/platform-browser');
4
- var common_1 = require('@angular/common');
5
3
  /**
6
- * A list of {@link Provider}s. To use the router, you must add this to your application.
4
+ * A list of providers. To use the router, you must add this to your application.
7
5
  *
8
6
  * ```
9
7
  * import {Component} from '@angular/core';
@@ -24,8 +22,6 @@ var common_1 = require('@angular/common');
24
22
  * bootstrap(AppCmp, [ROUTER_PROVIDERS]);
25
23
  * ```
26
24
  */
27
- exports.ROUTER_PROVIDERS = [
28
- router_providers_common_1.ROUTER_PROVIDERS_COMMON,
29
- /*@ts2dart_Provider*/ { provide: common_1.PlatformLocation, useClass: platform_browser_1.BrowserPlatformLocation },
30
- ];
25
+ // TODO: merge with router_providers_common.ts
26
+ exports.ROUTER_PROVIDERS = [router_providers_common_1.ROUTER_PROVIDERS_COMMON];
31
27
  //# sourceMappingURL=router_providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router_providers.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers.ts"],"names":[],"mappings":";AAIE,wCAAsC,2BAA2B,CAAC,CAAA;AACpE,iCAAsC,2BAA2B,CAAC,CAAA;AAClE,uBAA+B,iBAAiB,CAAC,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACU,wBAAgB,GAA4B;IACvD,iDAAuB;IACvB,qBAAqB,CAAC,EAAC,OAAO,EAAE,yBAAgB,EAAE,QAAQ,EAAE,0CAAuB,EAAC;CACrF,CAAC","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {ROUTER_PROVIDERS_COMMON} from './router_providers_common';\nimport {BrowserPlatformLocation} from '@angular/platform-browser';\nimport {PlatformLocation} from '@angular/common';\n\n/**\n * A list of {@link Provider}s. To use the router, you must add this to your application.\n *\n * ```\n * import {Component} from '@angular/core';\n * import {\n * ROUTER_DIRECTIVES,\n * ROUTER_PROVIDERS,\n * Routes\n * } from '@angular/router';\n *\n * @Component({directives: [ROUTER_DIRECTIVES]})\n * @Routes([\n * {...},\n * ])\n * class AppCmp {\n * // ...\n * }\n *\n * bootstrap(AppCmp, [ROUTER_PROVIDERS]);\n * ```\n */\nexport const ROUTER_PROVIDERS: any[] = /*@ts2dart_const*/[\n ROUTER_PROVIDERS_COMMON,\n /*@ts2dart_Provider*/ {provide: PlatformLocation, useClass: BrowserPlatformLocation},\n];\n"]}
1
+ {"version":3,"file":"router_providers.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers.ts"],"names":[],"mappings":";AAAA,wCAAsC,2BAA2B,CAAC,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8CAA8C;AACjC,wBAAgB,GAA4B,CAAC,iDAAuB,CAAC,CAAC","sourcesContent":["import {ROUTER_PROVIDERS_COMMON} from './router_providers_common';\n\n/**\n * A list of providers. To use the router, you must add this to your application.\n *\n * ```\n * import {Component} from '@angular/core';\n * import {\n * ROUTER_DIRECTIVES,\n * ROUTER_PROVIDERS,\n * Routes\n * } from '@angular/router';\n *\n * @Component({directives: [ROUTER_DIRECTIVES]})\n * @Routes([\n * {...},\n * ])\n * class AppCmp {\n * // ...\n * }\n *\n * bootstrap(AppCmp, [ROUTER_PROVIDERS]);\n * ```\n */\n// TODO: merge with router_providers_common.ts\nexport const ROUTER_PROVIDERS: any[] = /*@ts2dart_const*/[ROUTER_PROVIDERS_COMMON];\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -1 +1 @@
1
- {"__symbolic":"module","metadata":{"ROUTER_PROVIDERS":[{"__symbolic":"reference","name":"ROUTER_PROVIDERS_COMMON","module":"./router_providers_common"},{"provide":{"__symbolic":"reference","name":"PlatformLocation","module":"@angular/common"},"useClass":{"__symbolic":"reference","name":"BrowserPlatformLocation","module":"@angular/platform-browser"}}]}}
1
+ {"__symbolic":"module","version":1,"metadata":{"ROUTER_PROVIDERS":[{"__symbolic":"reference","module":"./router_providers_common","name":"ROUTER_PROVIDERS_COMMON"}]}}
@@ -1,4 +1,11 @@
1
+ import { Location } from '@angular/common';
2
+ import { ApplicationRef, ComponentResolver } from '@angular/core';
3
+ import { Router, RouterOutletMap } from './router';
4
+ import { RouterUrlSerializer } from './router_url_serializer';
5
+ import { RouteSegment } from './segments';
1
6
  /**
2
7
  * The Platform agnostic ROUTER PROVIDERS
3
8
  */
4
9
  export declare const ROUTER_PROVIDERS_COMMON: any[];
10
+ export declare function routerFactory(app: ApplicationRef, componentResolver: ComponentResolver, urlSerializer: RouterUrlSerializer, routerOutletMap: RouterOutletMap, location: Location): Router;
11
+ export declare function routeSegmentFactory(router: Router): RouteSegment;
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
- var core_1 = require('@angular/core');
3
2
  var common_1 = require('@angular/common');
3
+ var core_1 = require('@angular/core');
4
4
  var router_1 = require('./router');
5
5
  var router_url_serializer_1 = require('./router_url_serializer');
6
- var core_2 = require('@angular/core');
7
- var core_3 = require('@angular/core');
6
+ var segments_1 = require('./segments');
8
7
  /**
9
8
  * The Platform agnostic ROUTER PROVIDERS
10
9
  */
@@ -15,16 +14,22 @@ exports.ROUTER_PROVIDERS_COMMON = [
15
14
  /*@ts2dart_Provider*/ {
16
15
  provide: router_1.Router,
17
16
  useFactory: routerFactory,
18
- deps: /*@ts2dart_const*/ [core_2.ApplicationRef, core_1.ComponentResolver, router_url_serializer_1.RouterUrlSerializer, router_1.RouterOutletMap, common_1.Location],
17
+ deps: /*@ts2dart_const*/ [core_1.ApplicationRef, core_1.ComponentResolver, router_url_serializer_1.RouterUrlSerializer, router_1.RouterOutletMap, common_1.Location],
19
18
  },
19
+ /*@ts2dart_Provider*/ { provide: segments_1.RouteSegment, useFactory: routeSegmentFactory, deps: [router_1.Router] }
20
20
  ];
21
21
  function routerFactory(app, componentResolver, urlSerializer, routerOutletMap, location) {
22
22
  if (app.componentTypes.length == 0) {
23
- throw new core_3.BaseException("Bootstrap at least one component before injecting Router.");
23
+ throw new core_1.BaseException('Bootstrap at least one component before injecting Router.');
24
24
  }
25
25
  // TODO: vsavkin this should not be null
26
26
  var router = new router_1.Router(null, app.componentTypes[0], componentResolver, urlSerializer, routerOutletMap, location);
27
27
  app.registerDisposeListener(function () { return router.dispose(); });
28
28
  return router;
29
29
  }
30
+ exports.routerFactory = routerFactory;
31
+ function routeSegmentFactory(router) {
32
+ return router.routeTree.root;
33
+ }
34
+ exports.routeSegmentFactory = routeSegmentFactory;
30
35
  //# sourceMappingURL=router_providers_common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router_providers_common.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers_common.ts"],"names":[],"mappings":";AAIE,qBAA6C,eAAe,CAAC,CAAA;AAC/D,uBAA+D,iBAAiB,CAAC,CAAA;AACjF,uBAAsC,UAAU,CAAC,CAAA;AACjD,sCAA8D,yBAAyB,CAAC,CAAA;AACxF,qBAA6B,eAAe,CAAC,CAAA;AAC7C,qBAA4B,eAAe,CAAC,CAAA;AAE5C;;GAEG;AACU,+BAAuB,GAA4B;IAC9D,wBAAe;IACf,qBAAqB,CAAC,EAAC,OAAO,EAAE,2CAAmB,EAAE,QAAQ,EAAE,kDAA0B,EAAC;IAC1F,qBAAqB,CAAC,EAAC,OAAO,EAAE,yBAAgB,EAAE,QAAQ,EAAE,6BAAoB,EAAC,EAAE,iBAAQ;IAC3F,qBAAqB,CAAC;QACpB,OAAO,EAAE,eAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,qBAAc,EAAE,wBAAiB,EAAE,2CAAmB,EAAE,wBAAe,EAAE,iBAAQ,CAAC;KACxF;CACF,CAAC;AAEF,uBAAuB,GAAmB,EAAE,iBAAoC,EACzD,aAAkC,EAAE,eAAgC,EACpE,QAAkB;IACvC,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,oBAAa,CAAC,2DAA2D,CAAC,CAAC;IACvF,CAAC;IACD,wCAAwC;IACxC,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAC7D,eAAe,EAAE,QAAQ,CAAC,CAAC;IACnD,GAAG,CAAC,uBAAuB,CAAC,cAAM,OAAA,MAAM,CAAC,OAAO,EAAE,EAAhB,CAAgB,CAAC,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC;AAChB,CAAC","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {OpaqueToken, ComponentResolver} from '@angular/core';\nimport {LocationStrategy, PathLocationStrategy, Location} from '@angular/common';\nimport {Router, RouterOutletMap} from './router';\nimport {RouterUrlSerializer, DefaultRouterUrlSerializer} from './router_url_serializer';\nimport {ApplicationRef} from '@angular/core';\nimport {BaseException} from '@angular/core';\n\n/**\n * The Platform agnostic ROUTER PROVIDERS\n */\nexport const ROUTER_PROVIDERS_COMMON: any[] = /*@ts2dart_const*/[\n RouterOutletMap,\n /*@ts2dart_Provider*/ {provide: RouterUrlSerializer, useClass: DefaultRouterUrlSerializer},\n /*@ts2dart_Provider*/ {provide: LocationStrategy, useClass: PathLocationStrategy}, Location,\n /*@ts2dart_Provider*/ {\n provide: Router,\n useFactory: routerFactory,\n deps: /*@ts2dart_const*/\n [ApplicationRef, ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location],\n },\n];\n\nfunction routerFactory(app: ApplicationRef, componentResolver: ComponentResolver,\n urlSerializer: RouterUrlSerializer, routerOutletMap: RouterOutletMap,\n location: Location): Router {\n if (app.componentTypes.length == 0) {\n throw new BaseException(\"Bootstrap at least one component before injecting Router.\");\n }\n // TODO: vsavkin this should not be null\n let router = new Router(null, app.componentTypes[0], componentResolver, urlSerializer,\n routerOutletMap, location);\n app.registerDisposeListener(() => router.dispose());\n return router;\n}\n"]}
1
+ {"version":3,"file":"router_providers_common.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_providers_common.ts"],"names":[],"mappings":";AAAA,uBAA+D,iBAAiB,CAAC,CAAA;AACjF,qBAA+D,eAAe,CAAC,CAAA;AAE/E,uBAAsC,UAAU,CAAC,CAAA;AACjD,sCAA8D,yBAAyB,CAAC,CAAA;AACxF,yBAA2B,YAAY,CAAC,CAAA;AAGxC;;GAEG;AACU,+BAAuB,GAA4B;IAC9D,wBAAe;IACf,qBAAqB,CAAC,EAAC,OAAO,EAAE,2CAAmB,EAAE,QAAQ,EAAE,kDAA0B,EAAC;IAC1F,qBAAqB,CAAC,EAAC,OAAO,EAAE,yBAAgB,EAAE,QAAQ,EAAE,6BAAoB,EAAC,EAAE,iBAAQ;IAC3F,qBAAqB,CAAC;QACpB,OAAO,EAAE,eAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,qBAAc,EAAE,wBAAiB,EAAE,2CAAmB,EAAE,wBAAe,EAAE,iBAAQ,CAAC;KACxF;IACD,qBAAqB,CAAC,EAAC,OAAO,EAAE,uBAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,eAAM,CAAC,EAAC;CAC/F,CAAC;AAEF,uBACI,GAAmB,EAAE,iBAAoC,EAAE,aAAkC,EAC7F,eAAgC,EAAE,QAAkB;IACtD,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,oBAAa,CAAC,2DAA2D,CAAC,CAAC;IACvF,CAAC;IACD,wCAAwC;IACxC,IAAI,MAAM,GAAG,IAAI,eAAM,CACnB,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9F,GAAG,CAAC,uBAAuB,CAAC,cAAM,OAAA,MAAM,CAAC,OAAO,EAAE,EAAhB,CAAgB,CAAC,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC;AAChB,CAAC;AAXe,qBAAa,gBAW5B,CAAA;AAED,6BAAoC,MAAc;IAChD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,CAAC;AAFe,2BAAmB,sBAElC,CAAA","sourcesContent":["import {Location, LocationStrategy, PathLocationStrategy} from '@angular/common';\nimport {ApplicationRef, BaseException, ComponentResolver} from '@angular/core';\n\nimport {Router, RouterOutletMap} from './router';\nimport {DefaultRouterUrlSerializer, RouterUrlSerializer} from './router_url_serializer';\nimport {RouteSegment} from './segments';\n\n\n/**\n * The Platform agnostic ROUTER PROVIDERS\n */\nexport const ROUTER_PROVIDERS_COMMON: any[] = /*@ts2dart_const*/[\n RouterOutletMap,\n /*@ts2dart_Provider*/ {provide: RouterUrlSerializer, useClass: DefaultRouterUrlSerializer},\n /*@ts2dart_Provider*/ {provide: LocationStrategy, useClass: PathLocationStrategy}, Location,\n /*@ts2dart_Provider*/ {\n provide: Router,\n useFactory: routerFactory,\n deps: /*@ts2dart_const*/\n [ApplicationRef, ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location],\n },\n /*@ts2dart_Provider*/ {provide: RouteSegment, useFactory: routeSegmentFactory, deps: [Router]}\n];\n\nexport function routerFactory(\n app: ApplicationRef, componentResolver: ComponentResolver, urlSerializer: RouterUrlSerializer,\n routerOutletMap: RouterOutletMap, location: Location): Router {\n if (app.componentTypes.length == 0) {\n throw new BaseException('Bootstrap at least one component before injecting Router.');\n }\n // TODO: vsavkin this should not be null\n let router = new Router(\n null, app.componentTypes[0], componentResolver, urlSerializer, routerOutletMap, location);\n app.registerDisposeListener(() => router.dispose());\n return router;\n}\n\nexport function routeSegmentFactory(router: Router): RouteSegment {\n return router.routeTree.root;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -1 +1 @@
1
- {"__symbolic":"module","metadata":{"ROUTER_PROVIDERS_COMMON":[{"__symbolic":"reference","name":"RouterOutletMap","module":"./router"},{"provide":{"__symbolic":"reference","name":"RouterUrlSerializer","module":"./router_url_serializer"},"useClass":{"__symbolic":"reference","name":"DefaultRouterUrlSerializer","module":"./router_url_serializer"}},{"provide":{"__symbolic":"reference","name":"LocationStrategy","module":"@angular/common"},"useClass":{"__symbolic":"reference","name":"PathLocationStrategy","module":"@angular/common"}},{"__symbolic":"reference","name":"Location","module":"@angular/common"},{"provide":{"__symbolic":"reference","name":"Router","module":"./router"},"useFactory":{"__symbolic":"reference","name":"routerFactory"},"deps":[{"__symbolic":"reference","name":"ApplicationRef","module":"@angular/core"},{"__symbolic":"reference","name":"ComponentResolver","module":"@angular/core"},{"__symbolic":"reference","name":"RouterUrlSerializer","module":"./router_url_serializer"},{"__symbolic":"reference","name":"RouterOutletMap","module":"./router"},{"__symbolic":"reference","name":"Location","module":"@angular/common"}]}]}}
1
+ {"__symbolic":"module","version":1,"metadata":{"ROUTER_PROVIDERS_COMMON":[{"__symbolic":"reference","module":"./router","name":"RouterOutletMap"},{"provide":{"__symbolic":"reference","module":"./router_url_serializer","name":"RouterUrlSerializer"},"useClass":{"__symbolic":"reference","module":"./router_url_serializer","name":"DefaultRouterUrlSerializer"}},{"provide":{"__symbolic":"reference","module":"@angular/common","name":"LocationStrategy"},"useClass":{"__symbolic":"reference","module":"@angular/common","name":"PathLocationStrategy"}},{"__symbolic":"reference","module":"@angular/common","name":"Location"},{"provide":{"__symbolic":"reference","module":"./router","name":"Router"},"useFactory":{"__symbolic":"reference","name":"routerFactory"},"deps":[{"__symbolic":"reference","module":"@angular/core","name":"ApplicationRef"},{"__symbolic":"reference","module":"@angular/core","name":"ComponentResolver"},{"__symbolic":"reference","module":"./router_url_serializer","name":"RouterUrlSerializer"},{"__symbolic":"reference","module":"./router","name":"RouterOutletMap"},{"__symbolic":"reference","module":"@angular/common","name":"Location"}]},{"provide":{"__symbolic":"reference","module":"./segments","name":"RouteSegment"},"useFactory":{"__symbolic":"reference","name":"routeSegmentFactory"},"deps":[{"__symbolic":"reference","module":"./router","name":"Router"}]}],"routeSegmentFactory":{"__symbolic":"function","parameters":["router"],"value":{"__symbolic":"select","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"router"},"member":"routeTree"},"member":"root"}}}}
@@ -4,9 +4,9 @@ var __extends = (this && this.__extends) || function (d, b) {
4
4
  function __() { this.constructor = d; }
5
5
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6
6
  };
7
- var segments_1 = require('./segments');
8
7
  var core_1 = require('@angular/core');
9
8
  var lang_1 = require('./facade/lang');
9
+ var segments_1 = require('./segments');
10
10
  /**
11
11
  * Defines a way to serialize/deserialize a url tree.
12
12
  */
@@ -38,7 +38,7 @@ function _serializeUrlTreeNode(node) {
38
38
  function _serializeUrlTreeNodes(nodes) {
39
39
  var main = nodes[0].value.toString();
40
40
  var auxNodes = nodes.slice(1);
41
- var aux = auxNodes.length > 0 ? "(" + auxNodes.map(_serializeUrlTreeNode).join("//") + ")" : "";
41
+ var aux = auxNodes.length > 0 ? "(" + auxNodes.map(_serializeUrlTreeNode).join("//") + ")" : '';
42
42
  var children = _serializeChildren(nodes[0]);
43
43
  return "" + main + aux + children;
44
44
  }
@@ -47,7 +47,7 @@ function _serializeChildren(node) {
47
47
  return "/" + _serializeUrlTreeNodes(node.children);
48
48
  }
49
49
  else {
50
- return "";
50
+ return '';
51
51
  }
52
52
  }
53
53
  var SEGMENT_RE = lang_1.RegExpWrapper.create('^[^\\/\\(\\)\\?;=&#]+');
@@ -93,8 +93,8 @@ var _UrlParser = (function () {
93
93
  }
94
94
  var path = matchUrlSegment(this._remaining);
95
95
  this.capture(path);
96
- if (path.indexOf(":") > -1) {
97
- var parts = path.split(":");
96
+ if (path.indexOf(':') > -1) {
97
+ var parts = path.split(':');
98
98
  outletName = parts[0];
99
99
  path = parts[1];
100
100
  }
@@ -139,7 +139,7 @@ var _UrlParser = (function () {
139
139
  return;
140
140
  }
141
141
  this.capture(key);
142
- var value = "true";
142
+ var value = 'true';
143
143
  if (this.peekStartsWith('=')) {
144
144
  this.capture('=');
145
145
  var valueMatch = matchUrlSegment(this._remaining);
@@ -156,7 +156,7 @@ var _UrlParser = (function () {
156
156
  return;
157
157
  }
158
158
  this.capture(key);
159
- var value = "true";
159
+ var value = 'true';
160
160
  if (this.peekStartsWith('=')) {
161
161
  this.capture('=');
162
162
  var valueMatch = matchUrlQueryParamValue(this._remaining);
@@ -171,7 +171,7 @@ var _UrlParser = (function () {
171
171
  var segments = [];
172
172
  this.capture('(');
173
173
  while (!this.peekStartsWith(')') && this._remaining.length > 0) {
174
- segments = segments.concat(this.parseSegments("aux"));
174
+ segments = segments.concat(this.parseSegments('aux'));
175
175
  if (this.peekStartsWith('//')) {
176
176
  this.capture('//');
177
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"router_url_serializer.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_url_serializer.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {UrlSegment, Tree, TreeNode, rootNode, UrlTree} from './segments';\nimport {BaseException} from '@angular/core';\nimport {isBlank, isPresent, RegExpWrapper} from './facade/lang';\n\n/**\n * Defines a way to serialize/deserialize a url tree.\n */\nexport abstract class RouterUrlSerializer {\n /**\n * Parse a url into a {@Link UrlTree}\n */\n abstract parse(url: string): UrlTree;\n\n /**\n * Converts a {@Link UrlTree} into a url\n */\n abstract serialize(tree: UrlTree): string;\n}\n\n/**\n * A default implementation of the serialization.\n */\nexport class DefaultRouterUrlSerializer extends RouterUrlSerializer {\n parse(url: string): UrlTree {\n let root = new _UrlParser().parse(url);\n return new UrlTree(root);\n }\n\n serialize(tree: UrlTree): string { return _serializeUrlTreeNode(rootNode(tree)); }\n}\n\nfunction _serializeUrlTreeNode(node: TreeNode<UrlSegment>): string {\n return `${node.value}${_serializeChildren(node)}`;\n}\n\nfunction _serializeUrlTreeNodes(nodes: TreeNode<UrlSegment>[]): string {\n let main = nodes[0].value.toString();\n let auxNodes = nodes.slice(1);\n let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join(\"//\")})` : \"\";\n let children = _serializeChildren(nodes[0]);\n return `${main}${aux}${children}`;\n}\n\nfunction _serializeChildren(node: TreeNode<UrlSegment>): string {\n if (node.children.length > 0) {\n return `/${_serializeUrlTreeNodes(node.children)}`;\n } else {\n return \"\";\n }\n}\n\nvar SEGMENT_RE = RegExpWrapper.create('^[^\\\\/\\\\(\\\\)\\\\?;=&#]+');\nfunction matchUrlSegment(str: string): string {\n var match = RegExpWrapper.firstMatch(SEGMENT_RE, str);\n return isPresent(match) ? match[0] : '';\n}\nvar QUERY_PARAM_VALUE_RE = RegExpWrapper.create('^[^\\\\(\\\\)\\\\?;&#]+');\nfunction matchUrlQueryParamValue(str: string): string {\n var match = RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);\n return isPresent(match) ? match[0] : '';\n}\n\nclass _UrlParser {\n private _remaining: string;\n\n peekStartsWith(str: string): boolean { return this._remaining.startsWith(str); }\n\n capture(str: string): void {\n if (!this._remaining.startsWith(str)) {\n throw new BaseException(`Expected \"${str}\".`);\n }\n this._remaining = this._remaining.substring(str.length);\n }\n\n parse(url: string): TreeNode<UrlSegment> {\n this._remaining = url;\n if (url == '' || url == '/') {\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), []);\n } else {\n return this.parseRoot();\n }\n }\n\n parseRoot(): TreeNode<UrlSegment> {\n let segments = this.parseSegments();\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), segments);\n }\n\n parseSegments(outletName: string = null): TreeNode<UrlSegment>[] {\n if (this._remaining.length == 0) {\n return [];\n }\n if (this.peekStartsWith('/')) {\n this.capture('/');\n }\n var path = matchUrlSegment(this._remaining);\n this.capture(path);\n\n\n if (path.indexOf(\":\") > -1) {\n let parts = path.split(\":\");\n outletName = parts[0];\n path = parts[1];\n }\n\n var matrixParams: {[key: string]: any} = {};\n if (this.peekStartsWith(';')) {\n matrixParams = this.parseMatrixParams();\n }\n\n var aux = [];\n if (this.peekStartsWith('(')) {\n aux = this.parseAuxiliaryRoutes();\n }\n\n var children: TreeNode<UrlSegment>[] = [];\n if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {\n this.capture('/');\n children = this.parseSegments();\n }\n\n let segment = new UrlSegment(path, matrixParams, outletName);\n let node = new TreeNode<UrlSegment>(segment, children);\n return [node].concat(aux);\n }\n\n parseQueryParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n this.capture('?');\n this.parseQueryParam(params);\n while (this._remaining.length > 0 && this.peekStartsWith('&')) {\n this.capture('&');\n this.parseQueryParam(params);\n }\n return params;\n }\n\n parseMatrixParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n while (this._remaining.length > 0 && this.peekStartsWith(';')) {\n this.capture(';');\n this.parseParam(params);\n }\n return params;\n }\n\n parseParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = \"true\";\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlSegment(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseQueryParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = \"true\";\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlQueryParamValue(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseAuxiliaryRoutes(): TreeNode<UrlSegment>[] {\n var segments = [];\n this.capture('(');\n\n while (!this.peekStartsWith(')') && this._remaining.length > 0) {\n segments = segments.concat(this.parseSegments(\"aux\"));\n if (this.peekStartsWith('//')) {\n this.capture('//');\n }\n }\n this.capture(')');\n\n return segments;\n }\n}\n"]}
1
+ {"version":3,"file":"router_url_serializer.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_url_serializer.ts"],"names":[],"mappings":";;;;;;AAAA,qBAA4B,eAAe,CAAC,CAAA;AAE5C,qBAAgD,eAAe,CAAC,CAAA;AAChE,yBAA4D,YAAY,CAAC,CAAA;AAGzE;;GAEG;AACH;IAAA;IAUA,CAAC;IAAD,0BAAC;AAAD,CAAC,AAVD,IAUC;AAVqB,2BAAmB,sBAUxC,CAAA;AAED;;GAEG;AACH;IAAgD,8CAAmB;IAAnE;QAAgD,8BAAmB;IAOnE,CAAC;IANC,0CAAK,GAAL,UAAM,GAAW;QACf,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,kBAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,8CAAS,GAAT,UAAU,IAAa,IAAY,MAAM,CAAC,qBAAqB,CAAC,mBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,iCAAC;AAAD,CAAC,AAPD,CAAgD,mBAAmB,GAOlE;AAPY,kCAA0B,6BAOtC,CAAA;AAED,+BAA+B,IAA0B;IACvD,MAAM,CAAC,KAAG,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAG,CAAC;AACpD,CAAC;AAED,gCAAgC,KAA6B;IAC3D,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IACrC,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,MAAI,QAAQ,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAG,GAAG,EAAE,CAAC;IAC3F,IAAI,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAG,IAAI,GAAG,GAAG,GAAG,QAAU,CAAC;AACpC,CAAC;AAED,4BAA4B,IAA0B;IACpD,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAI,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAG,CAAC;IACrD,CAAC;IAAC,IAAI,CAAC,CAAC;QACN,MAAM,CAAC,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,IAAI,UAAU,GAAG,oBAAa,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;AAC/D,yBAAyB,GAAW;IAClC,IAAI,KAAK,GAAG,oBAAa,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,CAAC,gBAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC1C,CAAC;AACD,IAAI,oBAAoB,GAAG,oBAAa,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AACrE,iCAAiC,GAAW;IAC1C,IAAI,KAAK,GAAG,oBAAa,CAAC,UAAU,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,CAAC,gBAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC1C,CAAC;AAED;IAAA;IAwIA,CAAC;IArIC,mCAAc,GAAd,UAAe,GAAW,IAAa,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAEhF,4BAAO,GAAP,UAAQ,GAAW;QACjB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,IAAI,oBAAa,CAAC,gBAAa,GAAG,QAAI,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,0BAAK,GAAL,UAAM,GAAW;QACf,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;QACtB,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,mBAAQ,CAAa,IAAI,qBAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,IAAI,CAAC,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,8BAAS,GAAT;QACE,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACpC,MAAM,CAAC,IAAI,mBAAQ,CAAa,IAAI,qBAAU,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1E,CAAC;IAED,kCAAa,GAAb,UAAc,UAAyB;QAAzB,0BAAyB,GAAzB,iBAAyB;QACrC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,EAAE,CAAC;QACZ,CAAC;QACD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpB,CAAC;QACD,IAAI,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAGnB,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,YAAY,GAAyB,EAAE,CAAC;QAC5C,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1C,CAAC;QAED,IAAI,GAAG,GAA4B,EAAE,CAAC;QACtC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,GAAG,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpC,CAAC;QAED,IAAI,QAAQ,GAA2B,EAAE,CAAC;QAC1C,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,OAAO,GAAG,IAAI,qBAAU,CAAC,IAAI,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,IAAI,GAAG,IAAI,mBAAQ,CAAa,OAAO,EAAE,QAAQ,CAAC,CAAC;QACvD,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,qCAAgB,GAAhB;QACE,IAAI,MAAM,GAAyB,EAAE,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAED,sCAAiB,GAAjB;QACE,IAAI,MAAM,GAAyB,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QACD,MAAM,CAAC,MAAM,CAAC;IAChB,CAAC;IAED,+BAAU,GAAV,UAAW,MAA4B;QACrC,IAAI,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,EAAE,CAAC,CAAC,cAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,KAAK,GAAQ,MAAM,CAAC;QACxB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAClD,EAAE,CAAC,CAAC,gBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,GAAG,UAAU,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,oCAAe,GAAf,UAAgB,MAA4B;QAC1C,IAAI,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,EAAE,CAAC,CAAC,cAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC;QACT,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,KAAK,GAAQ,MAAM,CAAC;QACxB,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1D,EAAE,CAAC,CAAC,gBAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,KAAK,GAAG,UAAU,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,yCAAoB,GAApB;QACE,IAAI,QAAQ,GAA4B,EAAE,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAElB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/D,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YACtD,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAElB,MAAM,CAAC,QAAQ,CAAC;IAClB,CAAC;IACH,iBAAC;AAAD,CAAC,AAxID,IAwIC","sourcesContent":["import {BaseException} from '@angular/core';\n\nimport {RegExpWrapper, isBlank, isPresent} from './facade/lang';\nimport {Tree, TreeNode, UrlSegment, UrlTree, rootNode} from './segments';\n\n\n/**\n * Defines a way to serialize/deserialize a url tree.\n */\nexport abstract class RouterUrlSerializer {\n /**\n * Parse a url into a {@Link UrlTree}\n */\n abstract parse(url: string): UrlTree;\n\n /**\n * Converts a {@Link UrlTree} into a url\n */\n abstract serialize(tree: UrlTree): string;\n}\n\n/**\n * A default implementation of the serialization.\n */\nexport class DefaultRouterUrlSerializer extends RouterUrlSerializer {\n parse(url: string): UrlTree {\n let root = new _UrlParser().parse(url);\n return new UrlTree(root);\n }\n\n serialize(tree: UrlTree): string { return _serializeUrlTreeNode(rootNode(tree)); }\n}\n\nfunction _serializeUrlTreeNode(node: TreeNode<UrlSegment>): string {\n return `${node.value}${_serializeChildren(node)}`;\n}\n\nfunction _serializeUrlTreeNodes(nodes: TreeNode<UrlSegment>[]): string {\n let main = nodes[0].value.toString();\n let auxNodes = nodes.slice(1);\n let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join(\"//\")})` : '';\n let children = _serializeChildren(nodes[0]);\n return `${main}${aux}${children}`;\n}\n\nfunction _serializeChildren(node: TreeNode<UrlSegment>): string {\n if (node.children.length > 0) {\n return `/${_serializeUrlTreeNodes(node.children)}`;\n } else {\n return '';\n }\n}\n\nvar SEGMENT_RE = RegExpWrapper.create('^[^\\\\/\\\\(\\\\)\\\\?;=&#]+');\nfunction matchUrlSegment(str: string): string {\n var match = RegExpWrapper.firstMatch(SEGMENT_RE, str);\n return isPresent(match) ? match[0] : '';\n}\nvar QUERY_PARAM_VALUE_RE = RegExpWrapper.create('^[^\\\\(\\\\)\\\\?;&#]+');\nfunction matchUrlQueryParamValue(str: string): string {\n var match = RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);\n return isPresent(match) ? match[0] : '';\n}\n\nclass _UrlParser {\n private _remaining: string;\n\n peekStartsWith(str: string): boolean { return this._remaining.startsWith(str); }\n\n capture(str: string): void {\n if (!this._remaining.startsWith(str)) {\n throw new BaseException(`Expected \"${str}\".`);\n }\n this._remaining = this._remaining.substring(str.length);\n }\n\n parse(url: string): TreeNode<UrlSegment> {\n this._remaining = url;\n if (url == '' || url == '/') {\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), []);\n } else {\n return this.parseRoot();\n }\n }\n\n parseRoot(): TreeNode<UrlSegment> {\n let segments = this.parseSegments();\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), segments);\n }\n\n parseSegments(outletName: string = null): TreeNode<UrlSegment>[] {\n if (this._remaining.length == 0) {\n return [];\n }\n if (this.peekStartsWith('/')) {\n this.capture('/');\n }\n var path = matchUrlSegment(this._remaining);\n this.capture(path);\n\n\n if (path.indexOf(':') > -1) {\n let parts = path.split(':');\n outletName = parts[0];\n path = parts[1];\n }\n\n var matrixParams: {[key: string]: any} = {};\n if (this.peekStartsWith(';')) {\n matrixParams = this.parseMatrixParams();\n }\n\n var aux: any[] /** TODO #9100 */ = [];\n if (this.peekStartsWith('(')) {\n aux = this.parseAuxiliaryRoutes();\n }\n\n var children: TreeNode<UrlSegment>[] = [];\n if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {\n this.capture('/');\n children = this.parseSegments();\n }\n\n let segment = new UrlSegment(path, matrixParams, outletName);\n let node = new TreeNode<UrlSegment>(segment, children);\n return [node].concat(aux);\n }\n\n parseQueryParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n this.capture('?');\n this.parseQueryParam(params);\n while (this._remaining.length > 0 && this.peekStartsWith('&')) {\n this.capture('&');\n this.parseQueryParam(params);\n }\n return params;\n }\n\n parseMatrixParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n while (this._remaining.length > 0 && this.peekStartsWith(';')) {\n this.capture(';');\n this.parseParam(params);\n }\n return params;\n }\n\n parseParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = 'true';\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlSegment(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseQueryParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = 'true';\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlQueryParamValue(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseAuxiliaryRoutes(): TreeNode<UrlSegment>[] {\n var segments: any[] /** TODO #9100 */ = [];\n this.capture('(');\n\n while (!this.peekStartsWith(')') && this._remaining.length > 0) {\n segments = segments.concat(this.parseSegments('aux'));\n if (this.peekStartsWith('//')) {\n this.capture('//');\n }\n }\n this.capture(')');\n\n return segments;\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
package/src/segments.d.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  import { ComponentFactory, Type } from '@angular/core';
2
2
  export declare class Tree<T> {
3
- /** @internal */
4
- _root: TreeNode<T>;
5
3
  constructor(root: TreeNode<T>);
6
4
  root: T;
7
5
  parent(t: T): T;
@@ -25,32 +23,29 @@ export declare class TreeNode<T> {
25
23
  export declare class UrlSegment {
26
24
  segment: any;
27
25
  parameters: {
28
- [key: string]: any;
26
+ [key: string]: string;
29
27
  };
30
28
  outlet: string;
31
29
  constructor(segment: any, parameters: {
32
- [key: string]: any;
30
+ [key: string]: string;
33
31
  }, outlet: string);
34
32
  toString(): string;
35
33
  }
36
34
  export declare class RouteSegment {
37
35
  urlSegments: UrlSegment[];
38
36
  parameters: {
39
- [key: string]: any;
37
+ [key: string]: string;
40
38
  };
41
39
  outlet: string;
42
- /** @internal */
43
- _type: Type;
44
- /** @internal */
45
- _componentFactory: ComponentFactory<any>;
46
40
  constructor(urlSegments: UrlSegment[], parameters: {
47
- [key: string]: any;
41
+ [key: string]: string;
48
42
  }, outlet: string, type: Type, componentFactory: ComponentFactory<any>);
49
43
  getParam(param: string): string;
44
+ getParamAsNumber(param: string): number;
50
45
  type: Type;
51
46
  stringifiedUrlSegments: string;
52
47
  }
48
+ export declare function createEmptyRouteTree(type: Type): RouteTree;
53
49
  export declare function serializeRouteSegmentTree(tree: RouteTree): string;
54
- export declare function equalSegments(a: RouteSegment, b: RouteSegment): boolean;
55
- export declare function equalUrlSegments(a: UrlSegment, b: UrlSegment): boolean;
50
+ export declare function equalUrlSegments(a: UrlSegment[], b: UrlSegment[]): boolean;
56
51
  export declare function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any>;
package/src/segments.js CHANGED
@@ -4,6 +4,7 @@ var __extends = (this && this.__extends) || function (d, b) {
4
4
  function __() { this.constructor = d; }
5
5
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
6
6
  };
7
+ var constants_1 = require('./constants');
7
8
  var collection_1 = require('./facade/collection');
8
9
  var lang_1 = require('./facade/lang');
9
10
  var Tree = (function () {
@@ -53,9 +54,6 @@ function rootNode(tree) {
53
54
  }
54
55
  exports.rootNode = rootNode;
55
56
  function _findNode(expected, c) {
56
- // TODO: vsavkin remove it once recognize is fixed
57
- if (expected instanceof RouteSegment && equalSegments(expected, c.value))
58
- return c;
59
57
  if (expected === c.value)
60
58
  return c;
61
59
  for (var _i = 0, _a = c.children; _i < _a.length; _i++) {
@@ -68,8 +66,7 @@ function _findNode(expected, c) {
68
66
  }
69
67
  function _findPath(expected, c, collected) {
70
68
  collected.push(c);
71
- // TODO: vsavkin remove it once recognize is fixed
72
- if (_equalValues(expected, c.value))
69
+ if (expected === c.value)
73
70
  return collected;
74
71
  for (var _i = 0, _a = c.children; _i < _a.length; _i++) {
75
72
  var cc = _a[_i];
@@ -80,10 +77,10 @@ function _findPath(expected, c, collected) {
80
77
  return null;
81
78
  }
82
79
  function _contains(tree, subtree) {
83
- if (!_equalValues(tree.value, subtree.value))
80
+ if (tree.value !== subtree.value)
84
81
  return false;
85
82
  var _loop_1 = function(subtreeNode) {
86
- var s = tree.children.filter(function (child) { return _equalValues(child.value, subtreeNode.value); });
83
+ var s = tree.children.filter(function (child) { return child.value === subtreeNode.value; });
87
84
  if (s.length === 0)
88
85
  return { value: false };
89
86
  if (!_contains(s[0], subtreeNode))
@@ -96,13 +93,6 @@ function _contains(tree, subtree) {
96
93
  }
97
94
  return true;
98
95
  }
99
- function _equalValues(a, b) {
100
- if (a instanceof RouteSegment)
101
- return equalSegments(a, b);
102
- if (a instanceof UrlSegment)
103
- return equalUrlSegments(a, b);
104
- return a === b;
105
- }
106
96
  var TreeNode = (function () {
107
97
  function TreeNode(value, children) {
108
98
  this.value = value;
@@ -118,15 +108,15 @@ var UrlSegment = (function () {
118
108
  this.outlet = outlet;
119
109
  }
120
110
  UrlSegment.prototype.toString = function () {
121
- var outletPrefix = lang_1.isBlank(this.outlet) ? "" : this.outlet + ":";
111
+ var outletPrefix = lang_1.isBlank(this.outlet) ? '' : this.outlet + ":";
122
112
  return "" + outletPrefix + this.segment + _serializeParams(this.parameters);
123
113
  };
124
114
  return UrlSegment;
125
115
  }());
126
116
  exports.UrlSegment = UrlSegment;
127
117
  function _serializeParams(params) {
128
- var res = "";
129
- collection_1.StringMapWrapper.forEach(params, function (v, k) { return res += ";" + k + "=" + v; });
118
+ var res = '';
119
+ collection_1.StringMapWrapper.forEach(params, function (v /** TODO #9100 */, k /** TODO #9100 */) { return res += ";" + k + "=" + v; });
130
120
  return res;
131
121
  }
132
122
  var RouteSegment = (function () {
@@ -140,56 +130,48 @@ var RouteSegment = (function () {
140
130
  RouteSegment.prototype.getParam = function (param) {
141
131
  return lang_1.isPresent(this.parameters) ? this.parameters[param] : null;
142
132
  };
133
+ RouteSegment.prototype.getParamAsNumber = function (param) {
134
+ return lang_1.isPresent(this.parameters) ? lang_1.NumberWrapper.parseFloat(this.parameters[param]) : null;
135
+ };
143
136
  Object.defineProperty(RouteSegment.prototype, "type", {
144
137
  get: function () { return this._type; },
145
138
  enumerable: true,
146
139
  configurable: true
147
140
  });
148
141
  Object.defineProperty(RouteSegment.prototype, "stringifiedUrlSegments", {
149
- get: function () { return this.urlSegments.map(function (s) { return s.toString(); }).join("/"); },
142
+ get: function () { return this.urlSegments.map(function (s) { return s.toString(); }).join('/'); },
150
143
  enumerable: true,
151
144
  configurable: true
152
145
  });
153
146
  return RouteSegment;
154
147
  }());
155
148
  exports.RouteSegment = RouteSegment;
149
+ function createEmptyRouteTree(type) {
150
+ var root = new RouteSegment([new UrlSegment('', {}, null)], {}, constants_1.DEFAULT_OUTLET_NAME, type, null);
151
+ return new RouteTree(new TreeNode(root, []));
152
+ }
153
+ exports.createEmptyRouteTree = createEmptyRouteTree;
156
154
  function serializeRouteSegmentTree(tree) {
157
155
  return _serializeRouteSegmentTree(tree._root);
158
156
  }
159
157
  exports.serializeRouteSegmentTree = serializeRouteSegmentTree;
160
158
  function _serializeRouteSegmentTree(node) {
161
159
  var v = node.value;
162
- var children = node.children.map(function (c) { return _serializeRouteSegmentTree(c); }).join(", ");
160
+ var children = node.children.map(function (c) { return _serializeRouteSegmentTree(c); }).join(', ');
163
161
  return v.outlet + ":" + v.stringifiedUrlSegments + "(" + lang_1.stringify(v.type) + ") [" + children + "]";
164
162
  }
165
- function equalSegments(a, b) {
166
- if (lang_1.isBlank(a) && !lang_1.isBlank(b))
167
- return false;
168
- if (!lang_1.isBlank(a) && lang_1.isBlank(b))
169
- return false;
170
- if (a._type !== b._type)
171
- return false;
172
- if (a.outlet != b.outlet)
173
- return false;
174
- return collection_1.StringMapWrapper.equals(a.parameters, b.parameters);
175
- }
176
- exports.equalSegments = equalSegments;
177
163
  function equalUrlSegments(a, b) {
178
- if (lang_1.isBlank(a) && !lang_1.isBlank(b))
179
- return false;
180
- if (!lang_1.isBlank(a) && lang_1.isBlank(b))
181
- return false;
182
- if (a.segment != b.segment)
164
+ if (a.length !== b.length)
183
165
  return false;
184
- if (a.outlet != b.outlet)
185
- return false;
186
- if (lang_1.isBlank(a.parameters)) {
187
- console.log("a", a);
188
- }
189
- if (lang_1.isBlank(b.parameters)) {
190
- console.log("b", b);
166
+ for (var i = 0; i < a.length; ++i) {
167
+ if (a[i].segment != b[i].segment)
168
+ return false;
169
+ if (a[i].outlet != b[i].outlet)
170
+ return false;
171
+ if (!collection_1.StringMapWrapper.equals(a[i].parameters, b[i].parameters))
172
+ return false;
191
173
  }
192
- return collection_1.StringMapWrapper.equals(a.parameters, b.parameters);
174
+ return true;
193
175
  }
194
176
  exports.equalUrlSegments = equalUrlSegments;
195
177
  function routeSegmentComponentFactory(a) {
@@ -1 +1 @@
1
- {"version":3,"file":"segments.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/segments.ts"],"names":[],"mappings":"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","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {ComponentFactory, Type} from '@angular/core';\nimport {StringMapWrapper, ListWrapper} from './facade/collection';\nimport {isBlank, isPresent, stringify} from './facade/lang';\n\nexport class Tree<T> {\n /** @internal */\n _root: TreeNode<T>;\n\n constructor(root: TreeNode<T>) { this._root = root; }\n\n get root(): T { return this._root.value; }\n\n parent(t: T): T {\n let p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n\n children(t: T): T[] {\n let n = _findNode(t, this._root);\n return isPresent(n) ? n.children.map(t => t.value) : null;\n }\n\n firstChild(t: T): T {\n let n = _findNode(t, this._root);\n return isPresent(n) && n.children.length > 0 ? n.children[0].value : null;\n }\n\n pathFromRoot(t: T): T[] { return _findPath(t, this._root, []).map(s => s.value); }\n\n contains(tree: Tree<T>): boolean { return _contains(this._root, tree._root); }\n}\n\nexport class UrlTree extends Tree<UrlSegment> {\n constructor(root: TreeNode<UrlSegment>) { super(root); }\n}\n\nexport class RouteTree extends Tree<RouteSegment> {\n constructor(root: TreeNode<RouteSegment>) { super(root); }\n}\n\nexport function rootNode<T>(tree: Tree<T>): TreeNode<T> {\n return tree._root;\n}\n\nfunction _findNode<T>(expected: T, c: TreeNode<T>): TreeNode<T> {\n // TODO: vsavkin remove it once recognize is fixed\n if (expected instanceof RouteSegment && equalSegments(<any>expected, <any>c.value)) return c;\n if (expected === c.value) return c;\n for (let cc of c.children) {\n let r = _findNode(expected, cc);\n if (isPresent(r)) return r;\n }\n return null;\n}\n\nfunction _findPath<T>(expected: T, c: TreeNode<T>, collected: TreeNode<T>[]): TreeNode<T>[] {\n collected.push(c);\n\n // TODO: vsavkin remove it once recognize is fixed\n if (_equalValues(expected, c.value)) return collected;\n\n for (let cc of c.children) {\n let r = _findPath(expected, cc, ListWrapper.clone(collected));\n if (isPresent(r)) return r;\n }\n\n return null;\n}\n\nfunction _contains<T>(tree: TreeNode<T>, subtree: TreeNode<T>): boolean {\n if (!_equalValues(tree.value, subtree.value)) return false;\n\n for (let subtreeNode of subtree.children) {\n let s = tree.children.filter(child => _equalValues(child.value, subtreeNode.value));\n if (s.length === 0) return false;\n if (!_contains(s[0], subtreeNode)) return false;\n }\n\n return true;\n}\n\nfunction _equalValues(a: any, b: any): boolean {\n if (a instanceof RouteSegment) return equalSegments(<any>a, <any>b);\n if (a instanceof UrlSegment) return equalUrlSegments(<any>a, <any>b);\n return a === b;\n}\n\nexport class TreeNode<T> {\n constructor(public value: T, public children: TreeNode<T>[]) {}\n}\n\nexport class UrlSegment {\n constructor(public segment: any, public parameters: {[key: string]: any},\n public outlet: string) {}\n\n toString(): string {\n let outletPrefix = isBlank(this.outlet) ? \"\" : `${this.outlet}:`;\n return `${outletPrefix}${this.segment}${_serializeParams(this.parameters)}`;\n }\n}\n\nfunction _serializeParams(params: {[key: string]: string}): string {\n let res = \"\";\n StringMapWrapper.forEach(params, (v, k) => res += `;${k}=${v}`);\n return res;\n}\n\nexport class RouteSegment {\n /** @internal */\n _type: Type;\n\n /** @internal */\n _componentFactory: ComponentFactory<any>;\n\n constructor(public urlSegments: UrlSegment[], public parameters: {[key: string]: any},\n public outlet: string, type: Type, componentFactory: ComponentFactory<any>) {\n this._type = type;\n this._componentFactory = componentFactory;\n }\n\n getParam(param: string): string {\n return isPresent(this.parameters) ? this.parameters[param] : null;\n }\n\n get type(): Type { return this._type; }\n\n get stringifiedUrlSegments(): string { return this.urlSegments.map(s => s.toString()).join(\"/\"); }\n}\n\nexport function serializeRouteSegmentTree(tree: RouteTree): string {\n return _serializeRouteSegmentTree(tree._root);\n}\n\nfunction _serializeRouteSegmentTree(node: TreeNode<RouteSegment>): string {\n let v = node.value;\n let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(\", \");\n return `${v.outlet}:${v.stringifiedUrlSegments}(${stringify(v.type)}) [${children}]`;\n}\n\nexport function equalSegments(a: RouteSegment, b: RouteSegment): boolean {\n if (isBlank(a) && !isBlank(b)) return false;\n if (!isBlank(a) && isBlank(b)) return false;\n if (a._type !== b._type) return false;\n if (a.outlet != b.outlet) return false;\n return StringMapWrapper.equals(a.parameters, b.parameters);\n}\n\nexport function equalUrlSegments(a: UrlSegment, b: UrlSegment): boolean {\n if (isBlank(a) && !isBlank(b)) return false;\n if (!isBlank(a) && isBlank(b)) return false;\n if (a.segment != b.segment) return false;\n if (a.outlet != b.outlet) return false;\n if (isBlank(a.parameters)) {\n console.log(\"a\", a);\n }\n if (isBlank(b.parameters)) {\n console.log(\"b\", b);\n }\n return StringMapWrapper.equals(a.parameters, b.parameters);\n}\n\nexport function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any> {\n return a._componentFactory;\n}\n"]}
1
+ {"version":3,"file":"segments.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/segments.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComponentFactory, Type} from '@angular/core';\n\nimport {DEFAULT_OUTLET_NAME} from './constants';\nimport {ListWrapper, StringMapWrapper} from './facade/collection';\nimport {NumberWrapper, isBlank, isPresent, stringify} from './facade/lang';\n\nexport class Tree<T> {\n /** @internal */\n _root: TreeNode<T>;\n\n constructor(root: TreeNode<T>) { this._root = root; }\n\n get root(): T { return this._root.value; }\n\n parent(t: T): T {\n let p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n\n children(t: T): T[] {\n let n = _findNode(t, this._root);\n return isPresent(n) ? n.children.map(t => t.value) : null;\n }\n\n firstChild(t: T): T {\n let n = _findNode(t, this._root);\n return isPresent(n) && n.children.length > 0 ? n.children[0].value : null;\n }\n\n pathFromRoot(t: T): T[] { return _findPath(t, this._root, []).map(s => s.value); }\n\n contains(tree: Tree<T>): boolean { return _contains(this._root, tree._root); }\n}\n\nexport class UrlTree extends Tree<UrlSegment> {\n constructor(root: TreeNode<UrlSegment>) { super(root); }\n}\n\nexport class RouteTree extends Tree<RouteSegment> {\n constructor(root: TreeNode<RouteSegment>) { super(root); }\n}\n\nexport function rootNode<T>(tree: Tree<T>): TreeNode<T> {\n return tree._root;\n}\n\nfunction _findNode<T>(expected: T, c: TreeNode<T>): TreeNode<T> {\n if (expected === c.value) return c;\n for (let cc of c.children) {\n let r = _findNode(expected, cc);\n if (isPresent(r)) return r;\n }\n return null;\n}\n\nfunction _findPath<T>(expected: T, c: TreeNode<T>, collected: TreeNode<T>[]): TreeNode<T>[] {\n collected.push(c);\n if (expected === c.value) return collected;\n\n for (let cc of c.children) {\n let r = _findPath(expected, cc, ListWrapper.clone(collected));\n if (isPresent(r)) return r;\n }\n\n return null;\n}\n\nfunction _contains<T>(tree: TreeNode<T>, subtree: TreeNode<T>): boolean {\n if (tree.value !== subtree.value) return false;\n\n for (let subtreeNode of subtree.children) {\n let s = tree.children.filter(child => child.value === subtreeNode.value);\n if (s.length === 0) return false;\n if (!_contains(s[0], subtreeNode)) return false;\n }\n\n return true;\n}\n\nexport class TreeNode<T> {\n constructor(public value: T, public children: TreeNode<T>[]) {}\n}\n\nexport class UrlSegment {\n constructor(\n public segment: any, public parameters: {[key: string]: string}, public outlet: string) {}\n\n toString(): string {\n let outletPrefix = isBlank(this.outlet) ? '' : `${this.outlet}:`;\n return `${outletPrefix}${this.segment}${_serializeParams(this.parameters)}`;\n }\n}\n\nfunction _serializeParams(params: {[key: string]: string}): string {\n let res = '';\n StringMapWrapper.forEach(\n params, (v: any /** TODO #9100 */, k: any /** TODO #9100 */) => res += `;${k}=${v}`);\n return res;\n}\n\nexport class RouteSegment {\n /** @internal */\n _type: Type;\n\n /** @internal */\n _componentFactory: ComponentFactory<any>;\n\n constructor(\n public urlSegments: UrlSegment[], public parameters: {[key: string]: string},\n public outlet: string, type: Type, componentFactory: ComponentFactory<any>) {\n this._type = type;\n this._componentFactory = componentFactory;\n }\n\n getParam(param: string): string {\n return isPresent(this.parameters) ? this.parameters[param] : null;\n }\n\n getParamAsNumber(param: string): number {\n return isPresent(this.parameters) ? NumberWrapper.parseFloat(this.parameters[param]) : null;\n }\n\n get type(): Type { return this._type; }\n\n get stringifiedUrlSegments(): string { return this.urlSegments.map(s => s.toString()).join('/'); }\n}\n\nexport function createEmptyRouteTree(type: Type): RouteTree {\n let root = new RouteSegment([new UrlSegment('', {}, null)], {}, DEFAULT_OUTLET_NAME, type, null);\n return new RouteTree(new TreeNode<RouteSegment>(root, []));\n}\n\nexport function serializeRouteSegmentTree(tree: RouteTree): string {\n return _serializeRouteSegmentTree(tree._root);\n}\n\nfunction _serializeRouteSegmentTree(node: TreeNode<RouteSegment>): string {\n let v = node.value;\n let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(', ');\n return `${v.outlet}:${v.stringifiedUrlSegments}(${stringify(v.type)}) [${children}]`;\n}\n\nexport function equalUrlSegments(a: UrlSegment[], b: UrlSegment[]): boolean {\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; ++i) {\n if (a[i].segment != b[i].segment) return false;\n if (a[i].outlet != b[i].outlet) return false;\n if (!StringMapWrapper.equals(a[i].parameters, b[i].parameters)) return false;\n }\n\n return true;\n}\n\nexport function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any> {\n return a._componentFactory;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -0,0 +1 @@
1
+ {"__symbolic":"module","version":1,"metadata":{"rootNode":{"__symbolic":"function","parameters":["tree"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"tree"},"member":"_root"}},"serializeRouteSegmentTree":{"__symbolic":"function","parameters":["tree"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"_serializeRouteSegmentTree"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"tree"},"member":"_root"}]}},"routeSegmentComponentFactory":{"__symbolic":"function","parameters":["a"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"a"},"member":"_componentFactory"}}}}