@angular/router 0.1.0 → 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 (190) hide show
  1. package/bundles/router.umd.js +1812 -0
  2. package/bundles/router.umd.min.js +2 -0
  3. package/esm/index.d.ts +15 -0
  4. package/esm/index.js +15 -0
  5. package/esm/index.js.map +1 -0
  6. package/esm/src/constants.d.ts +5 -0
  7. package/esm/src/constants.js +6 -0
  8. package/esm/src/constants.js.map +1 -0
  9. package/esm/src/constants.metadata.json +1 -0
  10. package/esm/src/core_private.d.ts +3 -0
  11. package/esm/src/core_private.js +4 -0
  12. package/esm/src/core_private.js.map +1 -0
  13. package/esm/src/core_private.metadata.json +1 -0
  14. package/esm/src/directives/router_directives.d.ts +21 -0
  15. package/esm/src/directives/router_directives.js +24 -0
  16. package/esm/src/directives/router_directives.js.map +1 -0
  17. package/esm/src/directives/router_directives.metadata.json +1 -0
  18. package/esm/src/directives/router_link.d.ts +49 -0
  19. package/esm/src/directives/router_link.js +68 -0
  20. package/esm/src/directives/router_link.js.map +1 -0
  21. package/esm/src/directives/router_link.metadata.json +1 -0
  22. package/esm/src/directives/router_outlet.d.ts +36 -0
  23. package/esm/src/directives/router_outlet.js +42 -0
  24. package/esm/src/directives/router_outlet.js.map +1 -0
  25. package/esm/src/directives/router_outlet.metadata.json +1 -0
  26. package/esm/src/facade/async.d.ts +90 -0
  27. package/esm/src/facade/async.js +137 -0
  28. package/esm/src/facade/async.js.map +1 -0
  29. package/esm/src/facade/base_wrapped_exception.d.ts +14 -0
  30. package/esm/src/facade/base_wrapped_exception.js +17 -0
  31. package/esm/src/facade/base_wrapped_exception.js.map +1 -0
  32. package/esm/src/facade/collection.d.ts +103 -0
  33. package/esm/src/facade/collection.js +343 -0
  34. package/esm/src/facade/collection.js.map +1 -0
  35. package/esm/src/facade/collection.metadata.json +1 -0
  36. package/esm/src/facade/exception_handler.d.ts +29 -0
  37. package/esm/src/facade/exception_handler.js +124 -0
  38. package/esm/src/facade/exception_handler.js.map +1 -0
  39. package/esm/src/facade/exceptions.d.ts +32 -0
  40. package/esm/src/facade/exceptions.js +42 -0
  41. package/esm/src/facade/exceptions.js.map +1 -0
  42. package/esm/src/facade/exceptions.metadata.json +1 -0
  43. package/esm/src/facade/lang.d.ts +158 -0
  44. package/esm/src/facade/lang.js +386 -0
  45. package/esm/src/facade/lang.js.map +1 -0
  46. package/esm/src/facade/lang.metadata.json +1 -0
  47. package/esm/src/facade/promise.d.ts +17 -0
  48. package/esm/src/facade/promise.js +41 -0
  49. package/esm/src/facade/promise.js.map +1 -0
  50. package/esm/src/interfaces.d.ts +23 -0
  51. package/esm/src/interfaces.js +1 -0
  52. package/esm/src/interfaces.js.map +1 -0
  53. package/esm/src/lifecycle_reflector.d.ts +1 -0
  54. package/esm/src/lifecycle_reflector.js +10 -0
  55. package/esm/src/lifecycle_reflector.js.map +1 -0
  56. package/esm/src/link.d.ts +2 -0
  57. package/esm/src/link.js +183 -0
  58. package/esm/src/link.js.map +1 -0
  59. package/esm/src/metadata/decorators.d.ts +16 -0
  60. package/esm/src/metadata/decorators.js +9 -0
  61. package/esm/src/metadata/decorators.js.map +1 -0
  62. package/esm/src/metadata/decorators.metadata.json +1 -0
  63. package/esm/src/metadata/metadata.d.ts +48 -0
  64. package/esm/src/metadata/metadata.js +48 -0
  65. package/esm/src/metadata/metadata.js.map +1 -0
  66. package/esm/src/recognize.d.ts +4 -0
  67. package/esm/src/recognize.js +164 -0
  68. package/esm/src/recognize.js.map +1 -0
  69. package/esm/src/router.d.ts +95 -0
  70. package/esm/src/router.js +243 -0
  71. package/esm/src/router.js.map +1 -0
  72. package/esm/src/router_providers.d.ts +23 -0
  73. package/esm/src/router_providers.js +26 -0
  74. package/esm/src/router_providers.js.map +1 -0
  75. package/esm/src/router_providers.metadata.json +1 -0
  76. package/esm/src/router_providers_common.d.ts +11 -0
  77. package/esm/src/router_providers_common.js +32 -0
  78. package/esm/src/router_providers_common.js.map +1 -0
  79. package/esm/src/router_providers_common.metadata.json +1 -0
  80. package/esm/src/router_url_serializer.d.ts +21 -0
  81. package/esm/src/router_url_serializer.js +164 -0
  82. package/esm/src/router_url_serializer.js.map +1 -0
  83. package/esm/src/segments.d.ts +51 -0
  84. package/esm/src/segments.js +137 -0
  85. package/esm/src/segments.js.map +1 -0
  86. package/esm/src/segments.metadata.json +1 -0
  87. package/esm/testing/router_testing_providers.d.ts +1 -0
  88. package/esm/testing/router_testing_providers.js +31 -0
  89. package/esm/testing/router_testing_providers.js.map +1 -0
  90. package/esm/testing/router_testing_providers.metadata.json +1 -0
  91. package/esm/testing.d.ts +1 -0
  92. package/esm/testing.js +2 -0
  93. package/esm/testing.js.map +1 -0
  94. package/index.d.ts +15 -0
  95. package/index.js +31 -0
  96. package/index.js.map +1 -0
  97. package/package.json +16 -1
  98. package/src/constants.d.ts +5 -0
  99. package/src/constants.js +7 -0
  100. package/src/constants.js.map +1 -0
  101. package/src/constants.metadata.json +1 -0
  102. package/src/core_private.d.ts +3 -0
  103. package/src/core_private.js +5 -0
  104. package/src/core_private.js.map +1 -0
  105. package/src/core_private.metadata.json +1 -0
  106. package/src/directives/router_directives.d.ts +21 -0
  107. package/src/directives/router_directives.js +25 -0
  108. package/src/directives/router_directives.js.map +1 -0
  109. package/src/directives/router_directives.metadata.json +1 -0
  110. package/src/directives/router_link.d.ts +49 -0
  111. package/src/directives/router_link.js +76 -0
  112. package/src/directives/router_link.js.map +1 -0
  113. package/src/directives/router_link.metadata.json +1 -0
  114. package/src/directives/router_outlet.d.ts +36 -0
  115. package/src/directives/router_outlet.js +53 -0
  116. package/src/directives/router_outlet.js.map +1 -0
  117. package/src/directives/router_outlet.metadata.json +1 -0
  118. package/src/facade/async.d.ts +90 -0
  119. package/src/facade/async.js +160 -0
  120. package/src/facade/async.js.map +1 -0
  121. package/src/facade/base_wrapped_exception.d.ts +14 -0
  122. package/src/facade/base_wrapped_exception.js +50 -0
  123. package/src/facade/base_wrapped_exception.js.map +1 -0
  124. package/src/facade/collection.d.ts +103 -0
  125. package/src/facade/collection.js +368 -0
  126. package/src/facade/collection.js.map +1 -0
  127. package/src/facade/collection.metadata.json +1 -0
  128. package/src/facade/exception_handler.d.ts +29 -0
  129. package/src/facade/exception_handler.js +133 -0
  130. package/src/facade/exception_handler.js.map +1 -0
  131. package/src/facade/exceptions.d.ts +32 -0
  132. package/src/facade/exceptions.js +82 -0
  133. package/src/facade/exceptions.js.map +1 -0
  134. package/src/facade/exceptions.metadata.json +1 -0
  135. package/src/facade/lang.d.ts +158 -0
  136. package/src/facade/lang.js +480 -0
  137. package/src/facade/lang.js.map +1 -0
  138. package/src/facade/lang.metadata.json +1 -0
  139. package/src/facade/promise.d.ts +17 -0
  140. package/src/facade/promise.js +49 -0
  141. package/src/facade/promise.js.map +1 -0
  142. package/src/interfaces.d.ts +23 -0
  143. package/src/interfaces.js +2 -0
  144. package/src/interfaces.js.map +1 -0
  145. package/src/lifecycle_reflector.d.ts +1 -0
  146. package/src/lifecycle_reflector.js +12 -0
  147. package/src/lifecycle_reflector.js.map +1 -0
  148. package/src/link.d.ts +2 -0
  149. package/src/link.js +189 -0
  150. package/src/link.js.map +1 -0
  151. package/src/metadata/decorators.d.ts +16 -0
  152. package/src/metadata/decorators.js +10 -0
  153. package/src/metadata/decorators.js.map +1 -0
  154. package/src/metadata/decorators.metadata.json +1 -0
  155. package/src/metadata/metadata.d.ts +48 -0
  156. package/src/metadata/metadata.js +66 -0
  157. package/src/metadata/metadata.js.map +1 -0
  158. package/src/recognize.d.ts +4 -0
  159. package/src/recognize.js +172 -0
  160. package/src/recognize.js.map +1 -0
  161. package/src/router.d.ts +95 -0
  162. package/src/router.js +276 -0
  163. package/src/router.js.map +1 -0
  164. package/src/router_providers.d.ts +23 -0
  165. package/src/router_providers.js +27 -0
  166. package/src/router_providers.js.map +1 -0
  167. package/src/router_providers.metadata.json +1 -0
  168. package/src/router_providers_common.d.ts +11 -0
  169. package/src/router_providers_common.js +35 -0
  170. package/src/router_providers_common.js.map +1 -0
  171. package/src/router_providers_common.metadata.json +1 -0
  172. package/src/router_url_serializer.d.ts +21 -0
  173. package/src/router_url_serializer.js +184 -0
  174. package/src/router_url_serializer.js.map +1 -0
  175. package/src/segments.d.ts +51 -0
  176. package/src/segments.js +181 -0
  177. package/src/segments.js.map +1 -0
  178. package/src/segments.metadata.json +1 -0
  179. package/testing/router_testing_providers.d.ts +1 -0
  180. package/testing/router_testing_providers.js +35 -0
  181. package/testing/router_testing_providers.js.map +1 -0
  182. package/testing/router_testing_providers.metadata.json +1 -0
  183. package/testing.d.ts +1 -0
  184. package/testing.js +6 -0
  185. package/testing.js.map +1 -0
  186. package/angular1/angular_1_router.js +0 -2922
  187. package/angular1/ng_route_shim.js +0 -349
  188. package/angular2/router.dev.js +0 -3107
  189. package/angular2/router.js +0 -3107
  190. package/angular2/router.min.js +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recognize.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/recognize.ts"],"names":[],"mappings":"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","sourcesContent":["import {BaseException, ComponentFactory, ComponentResolver} from '@angular/core';\n\nimport {DEFAULT_OUTLET_NAME} from './constants';\nimport {reflector} from './core_private';\nimport {ListWrapper, StringMapWrapper} from './facade/collection';\nimport {Type, isBlank, isPresent, stringify} from './facade/lang';\nimport {PromiseWrapper} from './facade/promise';\nimport {RouteMetadata, RoutesMetadata} from './metadata/metadata';\nimport {RouteSegment, RouteTree, Tree, TreeNode, UrlSegment, UrlTree, equalUrlSegments, rootNode} from './segments';\n\nexport function recognize(\n componentResolver: ComponentResolver, rootComponent: Type, url: UrlTree,\n existingTree: RouteTree): Promise<RouteTree> {\n let matched = new _MatchResult(rootComponent, [url.root], {}, rootNode(url).children, []);\n return _constructSegment(componentResolver, matched, rootNode(existingTree))\n .then(roots => new RouteTree(roots[0]));\n}\n\nfunction _recognize(\n componentResolver: ComponentResolver, parentComponent: Type, url: TreeNode<UrlSegment>,\n existingSegments: TreeNode<RouteSegment>[]): Promise<TreeNode<RouteSegment>[]> {\n let metadata = _readMetadata(parentComponent); // should read from the factory instead\n if (isBlank(metadata)) {\n throw new BaseException(\n `Component '${stringify(parentComponent)}' does not have route configuration`);\n }\n\n let match: any /** TODO #9100 */;\n try {\n match = _match(metadata, url);\n } catch (e) {\n return PromiseWrapper.reject(e, null);\n }\n\n let segmentsWithRightOutlet = existingSegments.filter(r => r.value.outlet == match.outlet);\n let segmentWithRightOutlet =\n segmentsWithRightOutlet.length > 0 ? segmentsWithRightOutlet[0] : null;\n\n let main = _constructSegment(componentResolver, match, segmentWithRightOutlet);\n let aux = _recognizeMany(componentResolver, parentComponent, match.aux, existingSegments)\n .then(_checkOutletNameUniqueness);\n return PromiseWrapper.all([main, aux]).then(ListWrapper.flatten);\n}\n\nfunction _recognizeMany(\n componentResolver: ComponentResolver, parentComponent: Type, urls: TreeNode<UrlSegment>[],\n existingSegments: TreeNode<RouteSegment>[]): Promise<TreeNode<RouteSegment>[]> {\n let recognized =\n urls.map(u => _recognize(componentResolver, parentComponent, u, existingSegments));\n return PromiseWrapper.all(recognized).then(ListWrapper.flatten);\n}\n\nfunction _constructSegment(\n componentResolver: ComponentResolver, matched: _MatchResult,\n existingSegment: TreeNode<RouteSegment>): Promise<TreeNode<RouteSegment>[]> {\n return componentResolver.resolveComponent(matched.component).then(factory => {\n let segment = _createOrReuseSegment(matched, factory, existingSegment);\n let existingChildren = isPresent(existingSegment) ? existingSegment.children : [];\n\n if (matched.leftOverUrl.length > 0) {\n return _recognizeMany(\n componentResolver, factory.componentType, matched.leftOverUrl, existingChildren)\n .then(children => [new TreeNode<RouteSegment>(segment, children)]);\n } else {\n return _recognizeLeftOvers(componentResolver, factory.componentType, existingChildren)\n .then(children => [new TreeNode<RouteSegment>(segment, children)]);\n }\n });\n}\n\nfunction _createOrReuseSegment(\n matched: _MatchResult, factory: ComponentFactory<any>,\n segmentNode: TreeNode<RouteSegment>): RouteSegment {\n let segment = isPresent(segmentNode) ? segmentNode.value : null;\n\n if (isPresent(segment) && equalUrlSegments(segment.urlSegments, matched.consumedUrlSegments) &&\n StringMapWrapper.equals(segment.parameters, matched.parameters) &&\n segment.outlet == matched.outlet && factory.componentType == segment.type) {\n return segment;\n } else {\n return new RouteSegment(\n matched.consumedUrlSegments, matched.parameters, matched.outlet, factory.componentType,\n factory);\n }\n}\n\nfunction _recognizeLeftOvers(\n componentResolver: ComponentResolver, parentComponent: Type,\n existingSegments: TreeNode<RouteSegment>[]): Promise<TreeNode<RouteSegment>[]> {\n return componentResolver.resolveComponent(parentComponent).then(factory => {\n let metadata = _readMetadata(factory.componentType);\n if (isBlank(metadata)) {\n return [];\n }\n\n let r = (<any[]>metadata.routes).filter(r => r.path == '' || r.path == '/');\n if (r.length === 0) {\n return PromiseWrapper.resolve([]);\n } else {\n let segmentsWithMatchingOutlet =\n existingSegments.filter(r => r.value.outlet == DEFAULT_OUTLET_NAME);\n let segmentWithMatchingOutlet =\n segmentsWithMatchingOutlet.length > 0 ? segmentsWithMatchingOutlet[0] : null;\n let existingChildren =\n isPresent(segmentWithMatchingOutlet) ? segmentWithMatchingOutlet.children : [];\n\n return _recognizeLeftOvers(componentResolver, r[0].component, existingChildren)\n .then(children => {\n return componentResolver.resolveComponent(r[0].component).then(factory => {\n let segment = _createOrReuseSegment(\n new _MatchResult(r[0].component, [], {}, [], []), factory,\n segmentWithMatchingOutlet);\n return [new TreeNode<RouteSegment>(segment, children)];\n });\n });\n }\n });\n}\n\nfunction _match(metadata: RoutesMetadata, url: TreeNode<UrlSegment>): _MatchResult {\n for (let r of metadata.routes) {\n let matchingResult = _matchWithParts(r, url);\n if (isPresent(matchingResult)) {\n return matchingResult;\n }\n }\n let availableRoutes = metadata.routes.map(r => `'${r.path}'`).join(', ');\n throw new BaseException(\n `Cannot match any routes. Current segment: '${url.value}'. Available routes: [${availableRoutes}].`);\n}\n\nfunction _matchWithParts(route: RouteMetadata, url: TreeNode<UrlSegment>): _MatchResult {\n let path = route.path.startsWith('/') ? route.path.substring(1) : route.path;\n\n if (path == '*') {\n return new _MatchResult(route.component, [], null, [], []);\n }\n\n let parts = path.split('/');\n let positionalParams = {};\n let consumedUrlSegments: any[] /** TODO #9100 */ = [];\n\n let lastParent: TreeNode<UrlSegment> = null;\n let lastSegment: TreeNode<UrlSegment> = null;\n\n let current = url;\n for (let i = 0; i < parts.length; ++i) {\n if (isBlank(current)) return null;\n\n let p = parts[i];\n let isLastSegment = i === parts.length - 1;\n let isLastParent = i === parts.length - 2;\n let isPosParam = p.startsWith(':');\n\n if (!isPosParam && p != current.value.segment) return null;\n if (isLastSegment) {\n lastSegment = current;\n }\n if (isLastParent) {\n lastParent = current;\n }\n\n if (isPosParam) {\n (positionalParams as any /** TODO #9100 */)[p.substring(1)] = current.value.segment;\n }\n\n consumedUrlSegments.push(current.value);\n\n current = ListWrapper.first(current.children);\n }\n\n let p = lastSegment.value.parameters;\n let parameters = <{[key: string]: string}>StringMapWrapper.merge(p, positionalParams);\n let axuUrlSubtrees = isPresent(lastParent) ? lastParent.children.slice(1) : [];\n\n return new _MatchResult(\n route.component, consumedUrlSegments, parameters, lastSegment.children, axuUrlSubtrees);\n}\n\nfunction _checkOutletNameUniqueness(nodes: TreeNode<RouteSegment>[]): TreeNode<RouteSegment>[] {\n let names = {};\n nodes.forEach(n => {\n let segmentWithSameOutletName = (names as any /** TODO #9100 */)[n.value.outlet];\n if (isPresent(segmentWithSameOutletName)) {\n let p = segmentWithSameOutletName.stringifiedUrlSegments;\n let c = n.value.stringifiedUrlSegments;\n throw new BaseException(`Two segments cannot have the same outlet name: '${p}' and '${c}'.`);\n }\n (names as any /** TODO #9100 */)[n.value.outlet] = n.value;\n });\n return nodes;\n}\n\nclass _MatchResult {\n constructor(\n public component: Type|string, public consumedUrlSegments: UrlSegment[],\n public parameters: {[key: string]: string}, public leftOverUrl: TreeNode<UrlSegment>[],\n public aux: TreeNode<UrlSegment>[]) {}\n\n get outlet(): string {\n return this.consumedUrlSegments.length === 0 || isBlank(this.consumedUrlSegments[0].outlet) ?\n DEFAULT_OUTLET_NAME :\n this.consumedUrlSegments[0].outlet;\n }\n}\n\nfunction _readMetadata(componentType: Type) {\n let metadata = reflector.annotations(componentType).filter(f => f instanceof RoutesMetadata);\n return ListWrapper.first(metadata);\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -0,0 +1,95 @@
1
+ import { RouterOutlet } from './directives/router_outlet';
2
+ import { Observable } from './facade/async';
3
+ import { RouteSegment, RouteTree, UrlTree } from './segments';
4
+ export declare class RouterOutletMap {
5
+ registerOutlet(name: string, outlet: RouterOutlet): void;
6
+ }
7
+ /**
8
+ * The `Router` is responsible for mapping URLs to components.
9
+ *
10
+ * You can see the state of the router by inspecting the read-only fields `router.urlTree`
11
+ * and `router.routeTree`.
12
+ */
13
+ export declare class Router {
14
+ private _rootComponent;
15
+ private _rootComponentType;
16
+ private _componentResolver;
17
+ private _urlSerializer;
18
+ private _routerOutletMap;
19
+ private _location;
20
+ private _routeTree;
21
+ private _urlTree;
22
+ private _locationSubscription;
23
+ private _changes;
24
+ /**
25
+ * Returns the current url tree.
26
+ */
27
+ urlTree: UrlTree;
28
+ /**
29
+ * Returns the current route tree.
30
+ */
31
+ routeTree: RouteTree;
32
+ /**
33
+ * An observable or url changes from the router.
34
+ */
35
+ changes: Observable<void>;
36
+ /**
37
+ * Navigate based on the provided url. This navigation is always absolute.
38
+ *
39
+ * ### Usage
40
+ *
41
+ * ```
42
+ * router.navigateByUrl("/team/33/user/11");
43
+ * ```
44
+ */
45
+ navigateByUrl(url: string): Promise<void>;
46
+ /**
47
+ * Navigate based on the provided array of commands and a starting point.
48
+ * If no segment is provided, the navigation is absolute.
49
+ *
50
+ * ### Usage
51
+ *
52
+ * ```
53
+ * router.navigate(['team', 33, 'team', '11], segment);
54
+ * ```
55
+ */
56
+ navigate(commands: any[], segment?: RouteSegment): Promise<void>;
57
+ /**
58
+ * Applies an array of commands to the current url tree and creates
59
+ * a new url tree.
60
+ *
61
+ * When given a segment, applies the given commands starting from the segment.
62
+ * When not given a segment, applies the given command starting from the root.
63
+ *
64
+ * ### Usage
65
+ *
66
+ * ```
67
+ * // create /team/33/user/11
68
+ * router.createUrlTree(['/team', 33, 'user', 11]);
69
+ *
70
+ * // create /team/33;expand=true/user/11
71
+ * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);
72
+ *
73
+ * // you can collapse static fragments like this
74
+ * router.createUrlTree(['/team/33/user', userId]);
75
+ *
76
+ * // assuming the current url is `/team/33/user/11` and the segment points to `user/11`
77
+ *
78
+ * // navigate to /team/33/user/11/details
79
+ * router.createUrlTree(['details'], segment);
80
+ *
81
+ * // navigate to /team/33/user/22
82
+ * router.createUrlTree(['../22'], segment);
83
+ *
84
+ * // navigate to /team/44/user/22
85
+ * router.createUrlTree(['../../team/44/user/22'], segment);
86
+ * ```
87
+ */
88
+ createUrlTree(commands: any[], segment?: RouteSegment): UrlTree;
89
+ /**
90
+ * Serializes a {@link UrlTree} into a string.
91
+ */
92
+ serializeUrl(url: UrlTree): string;
93
+ private _setUpLocationChangeListener();
94
+ private _navigate(url, preventPushState?);
95
+ }
package/src/router.js ADDED
@@ -0,0 +1,276 @@
1
+ "use strict";
2
+ var core_1 = require('@angular/core');
3
+ var constants_1 = require('./constants');
4
+ var async_1 = require('./facade/async');
5
+ var collection_1 = require('./facade/collection');
6
+ var lang_1 = require('./facade/lang');
7
+ var lifecycle_reflector_1 = require('./lifecycle_reflector');
8
+ var link_1 = require('./link');
9
+ var recognize_1 = require('./recognize');
10
+ var segments_1 = require('./segments');
11
+ var RouterOutletMap = (function () {
12
+ function RouterOutletMap() {
13
+ /** @internal */
14
+ this._outlets = {};
15
+ }
16
+ RouterOutletMap.prototype.registerOutlet = function (name, outlet) { this._outlets[name] = outlet; };
17
+ return RouterOutletMap;
18
+ }());
19
+ exports.RouterOutletMap = RouterOutletMap;
20
+ /**
21
+ * The `Router` is responsible for mapping URLs to components.
22
+ *
23
+ * You can see the state of the router by inspecting the read-only fields `router.urlTree`
24
+ * and `router.routeTree`.
25
+ */
26
+ var Router = (function () {
27
+ /**
28
+ * @internal
29
+ */
30
+ function Router(_rootComponent, _rootComponentType, _componentResolver, _urlSerializer, _routerOutletMap, _location) {
31
+ this._rootComponent = _rootComponent;
32
+ this._rootComponentType = _rootComponentType;
33
+ this._componentResolver = _componentResolver;
34
+ this._urlSerializer = _urlSerializer;
35
+ this._routerOutletMap = _routerOutletMap;
36
+ this._location = _location;
37
+ this._changes = new async_1.EventEmitter();
38
+ this._routeTree = segments_1.createEmptyRouteTree(this._rootComponentType);
39
+ this._setUpLocationChangeListener();
40
+ this.navigateByUrl(this._location.path());
41
+ }
42
+ Object.defineProperty(Router.prototype, "urlTree", {
43
+ /**
44
+ * Returns the current url tree.
45
+ */
46
+ get: function () { return this._urlTree; },
47
+ enumerable: true,
48
+ configurable: true
49
+ });
50
+ Object.defineProperty(Router.prototype, "routeTree", {
51
+ /**
52
+ * Returns the current route tree.
53
+ */
54
+ get: function () { return this._routeTree; },
55
+ enumerable: true,
56
+ configurable: true
57
+ });
58
+ Object.defineProperty(Router.prototype, "changes", {
59
+ /**
60
+ * An observable or url changes from the router.
61
+ */
62
+ get: function () { return this._changes; },
63
+ enumerable: true,
64
+ configurable: true
65
+ });
66
+ /**
67
+ * Navigate based on the provided url. This navigation is always absolute.
68
+ *
69
+ * ### Usage
70
+ *
71
+ * ```
72
+ * router.navigateByUrl("/team/33/user/11");
73
+ * ```
74
+ */
75
+ Router.prototype.navigateByUrl = function (url) {
76
+ return this._navigate(this._urlSerializer.parse(url));
77
+ };
78
+ /**
79
+ * Navigate based on the provided array of commands and a starting point.
80
+ * If no segment is provided, the navigation is absolute.
81
+ *
82
+ * ### Usage
83
+ *
84
+ * ```
85
+ * router.navigate(['team', 33, 'team', '11], segment);
86
+ * ```
87
+ */
88
+ Router.prototype.navigate = function (commands, segment) {
89
+ return this._navigate(this.createUrlTree(commands, segment));
90
+ };
91
+ /**
92
+ * @internal
93
+ */
94
+ Router.prototype.dispose = function () { async_1.ObservableWrapper.dispose(this._locationSubscription); };
95
+ /**
96
+ * Applies an array of commands to the current url tree and creates
97
+ * a new url tree.
98
+ *
99
+ * When given a segment, applies the given commands starting from the segment.
100
+ * When not given a segment, applies the given command starting from the root.
101
+ *
102
+ * ### Usage
103
+ *
104
+ * ```
105
+ * // create /team/33/user/11
106
+ * router.createUrlTree(['/team', 33, 'user', 11]);
107
+ *
108
+ * // create /team/33;expand=true/user/11
109
+ * router.createUrlTree(['/team', 33, {expand: true}, 'user', 11]);
110
+ *
111
+ * // you can collapse static fragments like this
112
+ * router.createUrlTree(['/team/33/user', userId]);
113
+ *
114
+ * // assuming the current url is `/team/33/user/11` and the segment points to `user/11`
115
+ *
116
+ * // navigate to /team/33/user/11/details
117
+ * router.createUrlTree(['details'], segment);
118
+ *
119
+ * // navigate to /team/33/user/22
120
+ * router.createUrlTree(['../22'], segment);
121
+ *
122
+ * // navigate to /team/44/user/22
123
+ * router.createUrlTree(['../../team/44/user/22'], segment);
124
+ * ```
125
+ */
126
+ Router.prototype.createUrlTree = function (commands, segment) {
127
+ var s = lang_1.isPresent(segment) ? segment : this._routeTree.root;
128
+ return link_1.link(s, this._routeTree, this.urlTree, commands);
129
+ };
130
+ /**
131
+ * Serializes a {@link UrlTree} into a string.
132
+ */
133
+ Router.prototype.serializeUrl = function (url) { return this._urlSerializer.serialize(url); };
134
+ Router.prototype._setUpLocationChangeListener = function () {
135
+ var _this = this;
136
+ this._locationSubscription = this._location.subscribe(function (change) { _this._navigate(_this._urlSerializer.parse(change['url']), change['pop']); });
137
+ };
138
+ Router.prototype._navigate = function (url, preventPushState) {
139
+ var _this = this;
140
+ this._urlTree = url;
141
+ return recognize_1.recognize(this._componentResolver, this._rootComponentType, url, this._routeTree)
142
+ .then(function (currTree) {
143
+ return new _ActivateSegments(currTree, _this._routeTree)
144
+ .activate(_this._routerOutletMap, _this._rootComponent)
145
+ .then(function (updated) {
146
+ if (updated) {
147
+ _this._routeTree = currTree;
148
+ if (lang_1.isBlank(preventPushState) || !preventPushState) {
149
+ var path = _this._urlSerializer.serialize(_this._urlTree);
150
+ if (_this._location.isCurrentPathEqualTo(path)) {
151
+ _this._location.replaceState(path);
152
+ }
153
+ else {
154
+ _this._location.go(path);
155
+ }
156
+ }
157
+ _this._changes.emit(null);
158
+ }
159
+ });
160
+ });
161
+ };
162
+ return Router;
163
+ }());
164
+ exports.Router = Router;
165
+ var _ActivateSegments = (function () {
166
+ function _ActivateSegments(currTree, prevTree) {
167
+ this.currTree = currTree;
168
+ this.prevTree = prevTree;
169
+ this.deactivations = [];
170
+ this.performMutation = true;
171
+ }
172
+ _ActivateSegments.prototype.activate = function (parentOutletMap, rootComponent) {
173
+ var _this = this;
174
+ var prevRoot = lang_1.isPresent(this.prevTree) ? segments_1.rootNode(this.prevTree) : null;
175
+ var currRoot = segments_1.rootNode(this.currTree);
176
+ return this.canDeactivate(currRoot, prevRoot, parentOutletMap, rootComponent).then(function (res) {
177
+ _this.performMutation = true;
178
+ if (res) {
179
+ _this.activateChildSegments(currRoot, prevRoot, parentOutletMap, [rootComponent]);
180
+ }
181
+ return res;
182
+ });
183
+ };
184
+ _ActivateSegments.prototype.canDeactivate = function (currRoot, prevRoot, outletMap, rootComponent) {
185
+ var _this = this;
186
+ this.performMutation = false;
187
+ this.activateChildSegments(currRoot, prevRoot, outletMap, [rootComponent]);
188
+ var allPaths = async_1.PromiseWrapper.all(this.deactivations.map(function (r) { return _this.checkCanDeactivatePath(r); }));
189
+ return allPaths.then(function (values) { return values.filter(function (v) { return v; }).length === values.length; });
190
+ };
191
+ _ActivateSegments.prototype.checkCanDeactivatePath = function (path) {
192
+ var _this = this;
193
+ var curr = async_1.PromiseWrapper.resolve(true);
194
+ var _loop_1 = function(p) {
195
+ curr = curr.then(function (_) {
196
+ if (lifecycle_reflector_1.hasLifecycleHook('routerCanDeactivate', p)) {
197
+ return p.routerCanDeactivate(_this.prevTree, _this.currTree);
198
+ }
199
+ else {
200
+ return _;
201
+ }
202
+ });
203
+ };
204
+ for (var _i = 0, _a = collection_1.ListWrapper.reversed(path); _i < _a.length; _i++) {
205
+ var p = _a[_i];
206
+ _loop_1(p);
207
+ }
208
+ return curr;
209
+ };
210
+ _ActivateSegments.prototype.activateChildSegments = function (currNode, prevNode, outletMap, components) {
211
+ var _this = this;
212
+ var prevChildren = lang_1.isPresent(prevNode) ? prevNode.children.reduce(function (m, c) {
213
+ m[c.value.outlet] = c;
214
+ return m;
215
+ }, {}) : {};
216
+ currNode.children.forEach(function (c) {
217
+ _this.activateSegments(c, prevChildren[c.value.outlet], outletMap, components);
218
+ collection_1.StringMapWrapper.delete(prevChildren, c.value.outlet);
219
+ });
220
+ collection_1.StringMapWrapper.forEach(prevChildren, function (v /** TODO #9100 */, k /** TODO #9100 */) {
221
+ return _this.deactivateOutlet(outletMap._outlets[k], components);
222
+ });
223
+ };
224
+ _ActivateSegments.prototype.activateSegments = function (currNode, prevNode, parentOutletMap, components) {
225
+ var curr = currNode.value;
226
+ var prev = lang_1.isPresent(prevNode) ? prevNode.value : null;
227
+ var outlet = this.getOutlet(parentOutletMap, currNode.value);
228
+ if (curr === prev) {
229
+ this.activateChildSegments(currNode, prevNode, outlet.outletMap, components.concat([outlet.component]));
230
+ }
231
+ else {
232
+ this.deactivateOutlet(outlet, components);
233
+ if (this.performMutation) {
234
+ var outletMap = new RouterOutletMap();
235
+ var component = this.activateNewSegments(outletMap, curr, prev, outlet);
236
+ this.activateChildSegments(currNode, prevNode, outletMap, components.concat([component]));
237
+ }
238
+ }
239
+ };
240
+ _ActivateSegments.prototype.activateNewSegments = function (outletMap, curr, prev, outlet) {
241
+ var resolved = core_1.ReflectiveInjector.resolve([{ provide: RouterOutletMap, useValue: outletMap }, { provide: segments_1.RouteSegment, useValue: curr }]);
242
+ var ref = outlet.activate(segments_1.routeSegmentComponentFactory(curr), resolved, outletMap);
243
+ if (lifecycle_reflector_1.hasLifecycleHook('routerOnActivate', ref.instance)) {
244
+ ref.instance.routerOnActivate(curr, prev, this.currTree, this.prevTree);
245
+ }
246
+ return ref.instance;
247
+ };
248
+ _ActivateSegments.prototype.getOutlet = function (outletMap, segment) {
249
+ var outlet = outletMap._outlets[segment.outlet];
250
+ if (lang_1.isBlank(outlet)) {
251
+ if (segment.outlet == constants_1.DEFAULT_OUTLET_NAME) {
252
+ throw new core_1.BaseException("Cannot find default outlet");
253
+ }
254
+ else {
255
+ throw new core_1.BaseException("Cannot find the outlet " + segment.outlet);
256
+ }
257
+ }
258
+ return outlet;
259
+ };
260
+ _ActivateSegments.prototype.deactivateOutlet = function (outlet, components) {
261
+ var _this = this;
262
+ if (lang_1.isPresent(outlet) && outlet.isActivated) {
263
+ collection_1.StringMapWrapper.forEach(outlet.outletMap._outlets, function (v /** TODO #9100 */, k /** TODO #9100 */) {
264
+ return _this.deactivateOutlet(v, components);
265
+ });
266
+ if (this.performMutation) {
267
+ outlet.deactivate();
268
+ }
269
+ else {
270
+ this.deactivations.push(components.concat([outlet.component]));
271
+ }
272
+ }
273
+ };
274
+ return _ActivateSegments;
275
+ }());
276
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A list of providers. To use the router, you must add this to your application.
3
+ *
4
+ * ```
5
+ * import {Component} from '@angular/core';
6
+ * import {
7
+ * ROUTER_DIRECTIVES,
8
+ * ROUTER_PROVIDERS,
9
+ * Routes
10
+ * } from '@angular/router';
11
+ *
12
+ * @Component({directives: [ROUTER_DIRECTIVES]})
13
+ * @Routes([
14
+ * {...},
15
+ * ])
16
+ * class AppCmp {
17
+ * // ...
18
+ * }
19
+ *
20
+ * bootstrap(AppCmp, [ROUTER_PROVIDERS]);
21
+ * ```
22
+ */
23
+ export declare const ROUTER_PROVIDERS: any[];
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var router_providers_common_1 = require('./router_providers_common');
3
+ /**
4
+ * A list of providers. To use the router, you must add this to your application.
5
+ *
6
+ * ```
7
+ * import {Component} from '@angular/core';
8
+ * import {
9
+ * ROUTER_DIRECTIVES,
10
+ * ROUTER_PROVIDERS,
11
+ * Routes
12
+ * } from '@angular/router';
13
+ *
14
+ * @Component({directives: [ROUTER_DIRECTIVES]})
15
+ * @Routes([
16
+ * {...},
17
+ * ])
18
+ * class AppCmp {
19
+ * // ...
20
+ * }
21
+ *
22
+ * bootstrap(AppCmp, [ROUTER_PROVIDERS]);
23
+ * ```
24
+ */
25
+ // TODO: merge with router_providers_common.ts
26
+ exports.ROUTER_PROVIDERS = [router_providers_common_1.ROUTER_PROVIDERS_COMMON];
27
+ //# sourceMappingURL=router_providers.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1 @@
1
+ {"__symbolic":"module","version":1,"metadata":{"ROUTER_PROVIDERS":[{"__symbolic":"reference","module":"./router_providers_common","name":"ROUTER_PROVIDERS_COMMON"}]}}
@@ -0,0 +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';
6
+ /**
7
+ * The Platform agnostic ROUTER PROVIDERS
8
+ */
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;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var common_1 = require('@angular/common');
3
+ var core_1 = require('@angular/core');
4
+ var router_1 = require('./router');
5
+ var router_url_serializer_1 = require('./router_url_serializer');
6
+ var segments_1 = require('./segments');
7
+ /**
8
+ * The Platform agnostic ROUTER PROVIDERS
9
+ */
10
+ exports.ROUTER_PROVIDERS_COMMON = [
11
+ router_1.RouterOutletMap,
12
+ /*@ts2dart_Provider*/ { provide: router_url_serializer_1.RouterUrlSerializer, useClass: router_url_serializer_1.DefaultRouterUrlSerializer },
13
+ /*@ts2dart_Provider*/ { provide: common_1.LocationStrategy, useClass: common_1.PathLocationStrategy }, common_1.Location,
14
+ /*@ts2dart_Provider*/ {
15
+ provide: router_1.Router,
16
+ useFactory: routerFactory,
17
+ deps: /*@ts2dart_const*/ [core_1.ApplicationRef, core_1.ComponentResolver, router_url_serializer_1.RouterUrlSerializer, router_1.RouterOutletMap, common_1.Location],
18
+ },
19
+ /*@ts2dart_Provider*/ { provide: segments_1.RouteSegment, useFactory: routeSegmentFactory, deps: [router_1.Router] }
20
+ ];
21
+ function routerFactory(app, componentResolver, urlSerializer, routerOutletMap, location) {
22
+ if (app.componentTypes.length == 0) {
23
+ throw new core_1.BaseException('Bootstrap at least one component before injecting Router.');
24
+ }
25
+ // TODO: vsavkin this should not be null
26
+ var router = new router_1.Router(null, app.componentTypes[0], componentResolver, urlSerializer, routerOutletMap, location);
27
+ app.registerDisposeListener(function () { return router.dispose(); });
28
+ return router;
29
+ }
30
+ exports.routerFactory = routerFactory;
31
+ function routeSegmentFactory(router) {
32
+ return router.routeTree.root;
33
+ }
34
+ exports.routeSegmentFactory = routeSegmentFactory;
35
+ //# sourceMappingURL=router_providers_common.js.map
@@ -0,0 +1 @@
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"]}
@@ -0,0 +1 @@
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"}}}}
@@ -0,0 +1,21 @@
1
+ import { UrlTree } from './segments';
2
+ /**
3
+ * Defines a way to serialize/deserialize a url tree.
4
+ */
5
+ export declare abstract class RouterUrlSerializer {
6
+ /**
7
+ * Parse a url into a {@Link UrlTree}
8
+ */
9
+ abstract parse(url: string): UrlTree;
10
+ /**
11
+ * Converts a {@Link UrlTree} into a url
12
+ */
13
+ abstract serialize(tree: UrlTree): string;
14
+ }
15
+ /**
16
+ * A default implementation of the serialization.
17
+ */
18
+ export declare class DefaultRouterUrlSerializer extends RouterUrlSerializer {
19
+ parse(url: string): UrlTree;
20
+ serialize(tree: UrlTree): string;
21
+ }