@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
@@ -1 +1 @@
1
- {"version":3,"file":"router_providers.js","sourceRoot":"","sources":["../../../../../modules/@angular/router/src/router_providers.ts"],"names":[],"mappings":"OAIS,EAAC,uBAAuB,EAAC,MAAM,2BAA2B;OAC5D,EAAC,uBAAuB,EAAC,MAAM,2BAA2B;OAC1D,EAAC,gBAAgB,EAAC,MAAM,iBAAiB;AAEhD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,MAAM,gBAAgB,GAA4B;IACvD,uBAAuB;IACvB,qBAAqB,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,uBAAuB,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":"OAAO,EAAC,uBAAuB,EAAC,MAAM,2BAA2B;AAEjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8CAA8C;AAC9C,OAAO,MAAM,gBAAgB,GAA4B,CAAC,uBAAuB,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,9 +1,8 @@
1
- import { ComponentResolver } from '@angular/core';
2
- import { LocationStrategy, PathLocationStrategy, Location } from '@angular/common';
1
+ import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';
2
+ import { ApplicationRef, BaseException, ComponentResolver } from '@angular/core';
3
3
  import { Router, RouterOutletMap } from './router';
4
- import { RouterUrlSerializer, DefaultRouterUrlSerializer } from './router_url_serializer';
5
- import { ApplicationRef } from '@angular/core';
6
- import { BaseException } from '@angular/core';
4
+ import { DefaultRouterUrlSerializer, RouterUrlSerializer } from './router_url_serializer';
5
+ import { RouteSegment } from './segments';
7
6
  /**
8
7
  * The Platform agnostic ROUTER PROVIDERS
9
8
  */
@@ -16,14 +15,18 @@ export const ROUTER_PROVIDERS_COMMON = [
16
15
  useFactory: routerFactory,
17
16
  deps: /*@ts2dart_const*/ [ApplicationRef, ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location],
18
17
  },
18
+ /*@ts2dart_Provider*/ { provide: RouteSegment, useFactory: routeSegmentFactory, deps: [Router] }
19
19
  ];
20
- function routerFactory(app, componentResolver, urlSerializer, routerOutletMap, location) {
20
+ export function routerFactory(app, componentResolver, urlSerializer, routerOutletMap, location) {
21
21
  if (app.componentTypes.length == 0) {
22
- throw new BaseException("Bootstrap at least one component before injecting Router.");
22
+ throw new BaseException('Bootstrap at least one component before injecting Router.');
23
23
  }
24
24
  // TODO: vsavkin this should not be null
25
25
  let router = new Router(null, app.componentTypes[0], componentResolver, urlSerializer, routerOutletMap, location);
26
26
  app.registerDisposeListener(() => router.dispose());
27
27
  return router;
28
28
  }
29
+ export function routeSegmentFactory(router) {
30
+ return router.routeTree.root;
31
+ }
29
32
  //# 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":"OAIS,EAAc,iBAAiB,EAAC,MAAM,eAAe;OACvD,EAAC,gBAAgB,EAAE,oBAAoB,EAAE,QAAQ,EAAC,MAAM,iBAAiB;OACzE,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,UAAU;OACzC,EAAC,mBAAmB,EAAE,0BAA0B,EAAC,MAAM,yBAAyB;OAChF,EAAC,cAAc,EAAC,MAAM,eAAe;OACrC,EAAC,aAAa,EAAC,MAAM,eAAe;AAE3C;;GAEG;AACH,OAAO,MAAM,uBAAuB,GAA4B;IAC9D,eAAe;IACf,qBAAqB,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,0BAA0B,EAAC;IAC1F,qBAAqB,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAC,EAAE,QAAQ;IAC3F,qBAAqB,CAAC;QACpB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,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,aAAa,CAAC,2DAA2D,CAAC,CAAC;IACvF,CAAC;IACD,wCAAwC;IACxC,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAC7D,eAAe,EAAE,QAAQ,CAAC,CAAC;IACnD,GAAG,CAAC,uBAAuB,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,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":"OAAO,EAAC,QAAQ,EAAE,gBAAgB,EAAE,oBAAoB,EAAC,MAAM,iBAAiB;OACzE,EAAC,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAC,MAAM,eAAe;OAEvE,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,UAAU;OACzC,EAAC,0BAA0B,EAAE,mBAAmB,EAAC,MAAM,yBAAyB;OAChF,EAAC,YAAY,EAAC,MAAM,YAAY;AAGvC;;GAEG;AACH,OAAO,MAAM,uBAAuB,GAA4B;IAC9D,eAAe;IACf,qBAAqB,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,0BAA0B,EAAC;IAC1F,qBAAqB,CAAC,EAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,oBAAoB,EAAC,EAAE,QAAQ;IAC3F,qBAAqB,CAAC;QACpB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,cAAc,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,CAAC;KACxF;IACD,qBAAqB,CAAC,EAAC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAC;CAC/F,CAAC;AAEF,8BACI,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,aAAa,CAAC,2DAA2D,CAAC,CAAC;IACvF,CAAC;IACD,wCAAwC;IACxC,IAAI,MAAM,GAAG,IAAI,MAAM,CACnB,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC9F,GAAG,CAAC,uBAAuB,CAAC,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,MAAM,CAAC;AAChB,CAAC;AAED,oCAAoC,MAAc;IAChD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;AAC/B,CAAC","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"}}}}
@@ -1,6 +1,6 @@
1
- import { UrlSegment, TreeNode, rootNode, UrlTree } from './segments';
2
1
  import { BaseException } from '@angular/core';
3
- import { isBlank, isPresent, RegExpWrapper } from './facade/lang';
2
+ import { RegExpWrapper, isBlank, isPresent } from './facade/lang';
3
+ import { TreeNode, UrlSegment, UrlTree, rootNode } from './segments';
4
4
  /**
5
5
  * Defines a way to serialize/deserialize a url tree.
6
6
  */
@@ -22,7 +22,7 @@ function _serializeUrlTreeNode(node) {
22
22
  function _serializeUrlTreeNodes(nodes) {
23
23
  let main = nodes[0].value.toString();
24
24
  let auxNodes = nodes.slice(1);
25
- let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join("//")})` : "";
25
+ let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join("//")})` : '';
26
26
  let children = _serializeChildren(nodes[0]);
27
27
  return `${main}${aux}${children}`;
28
28
  }
@@ -31,7 +31,7 @@ function _serializeChildren(node) {
31
31
  return `/${_serializeUrlTreeNodes(node.children)}`;
32
32
  }
33
33
  else {
34
- return "";
34
+ return '';
35
35
  }
36
36
  }
37
37
  var SEGMENT_RE = RegExpWrapper.create('^[^\\/\\(\\)\\?;=&#]+');
@@ -74,8 +74,8 @@ class _UrlParser {
74
74
  }
75
75
  var path = matchUrlSegment(this._remaining);
76
76
  this.capture(path);
77
- if (path.indexOf(":") > -1) {
78
- let parts = path.split(":");
77
+ if (path.indexOf(':') > -1) {
78
+ let parts = path.split(':');
79
79
  outletName = parts[0];
80
80
  path = parts[1];
81
81
  }
@@ -120,7 +120,7 @@ class _UrlParser {
120
120
  return;
121
121
  }
122
122
  this.capture(key);
123
- var value = "true";
123
+ var value = 'true';
124
124
  if (this.peekStartsWith('=')) {
125
125
  this.capture('=');
126
126
  var valueMatch = matchUrlSegment(this._remaining);
@@ -137,7 +137,7 @@ class _UrlParser {
137
137
  return;
138
138
  }
139
139
  this.capture(key);
140
- var value = "true";
140
+ var value = 'true';
141
141
  if (this.peekStartsWith('=')) {
142
142
  this.capture('=');
143
143
  var valueMatch = matchUrlQueryParamValue(this._remaining);
@@ -152,7 +152,7 @@ class _UrlParser {
152
152
  var segments = [];
153
153
  this.capture('(');
154
154
  while (!this.peekStartsWith(')') && this._remaining.length > 0) {
155
- segments = segments.concat(this.parseSegments("aux"));
155
+ segments = segments.concat(this.parseSegments('aux'));
156
156
  if (this.peekStartsWith('//')) {
157
157
  this.capture('//');
158
158
  }
@@ -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":"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","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"]}
@@ -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
  readonly 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
  readonly type: Type;
51
46
  readonly 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>;
@@ -1,5 +1,6 @@
1
- import { StringMapWrapper, ListWrapper } from './facade/collection';
2
- import { isBlank, isPresent, stringify } from './facade/lang';
1
+ import { DEFAULT_OUTLET_NAME } from './constants';
2
+ import { ListWrapper, StringMapWrapper } from './facade/collection';
3
+ import { NumberWrapper, isBlank, isPresent, stringify } from './facade/lang';
3
4
  export class Tree {
4
5
  constructor(root) {
5
6
  this._root = root;
@@ -34,9 +35,6 @@ export function rootNode(tree) {
34
35
  return tree._root;
35
36
  }
36
37
  function _findNode(expected, c) {
37
- // TODO: vsavkin remove it once recognize is fixed
38
- if (expected instanceof RouteSegment && equalSegments(expected, c.value))
39
- return c;
40
38
  if (expected === c.value)
41
39
  return c;
42
40
  for (let cc of c.children) {
@@ -48,8 +46,7 @@ function _findNode(expected, c) {
48
46
  }
49
47
  function _findPath(expected, c, collected) {
50
48
  collected.push(c);
51
- // TODO: vsavkin remove it once recognize is fixed
52
- if (_equalValues(expected, c.value))
49
+ if (expected === c.value)
53
50
  return collected;
54
51
  for (let cc of c.children) {
55
52
  let r = _findPath(expected, cc, ListWrapper.clone(collected));
@@ -59,10 +56,10 @@ function _findPath(expected, c, collected) {
59
56
  return null;
60
57
  }
61
58
  function _contains(tree, subtree) {
62
- if (!_equalValues(tree.value, subtree.value))
59
+ if (tree.value !== subtree.value)
63
60
  return false;
64
61
  for (let subtreeNode of subtree.children) {
65
- let s = tree.children.filter(child => _equalValues(child.value, subtreeNode.value));
62
+ let s = tree.children.filter(child => child.value === subtreeNode.value);
66
63
  if (s.length === 0)
67
64
  return false;
68
65
  if (!_contains(s[0], subtreeNode))
@@ -70,13 +67,6 @@ function _contains(tree, subtree) {
70
67
  }
71
68
  return true;
72
69
  }
73
- function _equalValues(a, b) {
74
- if (a instanceof RouteSegment)
75
- return equalSegments(a, b);
76
- if (a instanceof UrlSegment)
77
- return equalUrlSegments(a, b);
78
- return a === b;
79
- }
80
70
  export class TreeNode {
81
71
  constructor(value, children) {
82
72
  this.value = value;
@@ -90,13 +80,13 @@ export class UrlSegment {
90
80
  this.outlet = outlet;
91
81
  }
92
82
  toString() {
93
- let outletPrefix = isBlank(this.outlet) ? "" : `${this.outlet}:`;
83
+ let outletPrefix = isBlank(this.outlet) ? '' : `${this.outlet}:`;
94
84
  return `${outletPrefix}${this.segment}${_serializeParams(this.parameters)}`;
95
85
  }
96
86
  }
97
87
  function _serializeParams(params) {
98
- let res = "";
99
- StringMapWrapper.forEach(params, (v, k) => res += `;${k}=${v}`);
88
+ let res = '';
89
+ StringMapWrapper.forEach(params, (v /** TODO #9100 */, k /** TODO #9100 */) => res += `;${k}=${v}`);
100
90
  return res;
101
91
  }
102
92
  export class RouteSegment {
@@ -110,44 +100,36 @@ export class RouteSegment {
110
100
  getParam(param) {
111
101
  return isPresent(this.parameters) ? this.parameters[param] : null;
112
102
  }
103
+ getParamAsNumber(param) {
104
+ return isPresent(this.parameters) ? NumberWrapper.parseFloat(this.parameters[param]) : null;
105
+ }
113
106
  get type() { return this._type; }
114
- get stringifiedUrlSegments() { return this.urlSegments.map(s => s.toString()).join("/"); }
107
+ get stringifiedUrlSegments() { return this.urlSegments.map(s => s.toString()).join('/'); }
108
+ }
109
+ export function createEmptyRouteTree(type) {
110
+ let root = new RouteSegment([new UrlSegment('', {}, null)], {}, DEFAULT_OUTLET_NAME, type, null);
111
+ return new RouteTree(new TreeNode(root, []));
115
112
  }
116
113
  export function serializeRouteSegmentTree(tree) {
117
114
  return _serializeRouteSegmentTree(tree._root);
118
115
  }
119
116
  function _serializeRouteSegmentTree(node) {
120
117
  let v = node.value;
121
- let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(", ");
118
+ let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(', ');
122
119
  return `${v.outlet}:${v.stringifiedUrlSegments}(${stringify(v.type)}) [${children}]`;
123
120
  }
124
- export function equalSegments(a, b) {
125
- if (isBlank(a) && !isBlank(b))
126
- return false;
127
- if (!isBlank(a) && isBlank(b))
128
- return false;
129
- if (a._type !== b._type)
130
- return false;
131
- if (a.outlet != b.outlet)
132
- return false;
133
- return StringMapWrapper.equals(a.parameters, b.parameters);
134
- }
135
121
  export function equalUrlSegments(a, b) {
136
- if (isBlank(a) && !isBlank(b))
137
- return false;
138
- if (!isBlank(a) && isBlank(b))
139
- return false;
140
- if (a.segment != b.segment)
122
+ if (a.length !== b.length)
141
123
  return false;
142
- if (a.outlet != b.outlet)
143
- return false;
144
- if (isBlank(a.parameters)) {
145
- console.log("a", a);
146
- }
147
- if (isBlank(b.parameters)) {
148
- console.log("b", b);
124
+ for (let i = 0; i < a.length; ++i) {
125
+ if (a[i].segment != b[i].segment)
126
+ return false;
127
+ if (a[i].outlet != b[i].outlet)
128
+ return false;
129
+ if (!StringMapWrapper.equals(a[i].parameters, b[i].parameters))
130
+ return false;
149
131
  }
150
- return StringMapWrapper.equals(a.parameters, b.parameters);
132
+ return true;
151
133
  }
152
134
  export function routeSegmentComponentFactory(a) {
153
135
  return a._componentFactory;
@@ -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"}}}}
@@ -1,10 +1,12 @@
1
- import { SpyLocation } from '@angular/common/testing';
2
1
  import { Location } from '@angular/common';
3
- import { Router, RouterOutletMap } from '../src/router';
4
- import { RouterUrlSerializer, DefaultRouterUrlSerializer } from '../src/router_url_serializer';
2
+ import { SpyLocation } from '@angular/common/testing';
5
3
  import { Component, ComponentResolver } from '@angular/core';
4
+ import { Router, RouterOutletMap } from '../src/router';
5
+ import { DefaultRouterUrlSerializer, RouterUrlSerializer } from '../src/router_url_serializer';
6
+ import { RouteSegment } from '../src/segments';
6
7
  class FakeAppRootCmp {
7
8
  }
9
+ /** @nocollapse */
8
10
  FakeAppRootCmp.decorators = [
9
11
  { type: Component, args: [{ selector: 'fake-app-root-comp', template: `<span></span>` },] },
10
12
  ];
@@ -20,5 +22,10 @@ export const ROUTER_FAKE_PROVIDERS = [
20
22
  useFactory: routerFactory,
21
23
  deps: /*@ts2dart_const*/ [ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location]
22
24
  },
25
+ /*@ts2dart_Provider*/ {
26
+ provide: RouteSegment,
27
+ useFactory: (r /** TODO #9100 */) => r.routeTree.root,
28
+ deps: [Router]
29
+ }
23
30
  ];
24
31
  //# sourceMappingURL=router_testing_providers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router_testing_providers.js","sourceRoot":"","sources":["../../../../../modules/@angular/router/testing/router_testing_providers.ts"],"names":[],"mappings":"OAIS,EAAC,WAAW,EAAC,MAAM,yBAAyB;OAC9C,EAAC,QAAQ,EAAC,MAAM,iBAAiB;OACjC,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe;OAC9C,EAAC,mBAAmB,EAAE,0BAA0B,EAAC,MAAM,8BAA8B;OACrF,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,eAAe;AAC1D;AAIA,CAAC;AAHM,yBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAC,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAC,EAAG,EAAE;CACzF,CACA;AAED,uBAAuB,iBAAoC,EAAE,aAAkC,EACxE,eAAgC,EAAE,QAAkB;IACzE,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EACvE,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,OAAO,MAAM,qBAAqB,GAA6B;IAC7D,eAAe;IACf,uBAAuB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAC;IAClE,uBAAuB,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,0BAA0B,EAAC;IAC5F,uBAAuB,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,CAAC;KACxE;CACF,CAAC","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n import {SpyLocation} from '@angular/common/testing';\nimport {Location} from '@angular/common';\nimport {Router, RouterOutletMap} from '../src/router';\nimport {RouterUrlSerializer, DefaultRouterUrlSerializer} from '../src/router_url_serializer';\nimport {Component, ComponentResolver} from '@angular/core';\nclass FakeAppRootCmp {\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{selector: 'fake-app-root-comp', template: `<span></span>`}, ] },\n];\n}\n\nfunction routerFactory(componentResolver: ComponentResolver, urlSerializer: RouterUrlSerializer,\n routerOutletMap: RouterOutletMap, location: Location): Router {\n return new Router(null, FakeAppRootCmp, componentResolver, urlSerializer, routerOutletMap,\n location);\n}\n\nexport const ROUTER_FAKE_PROVIDERS: any[] = /*@ts2dart_const*/ [\n RouterOutletMap,\n /* @ts2dart_Provider */ {provide: Location, useClass: SpyLocation},\n /* @ts2dart_Provider */ {provide: RouterUrlSerializer, useClass: DefaultRouterUrlSerializer},\n /* @ts2dart_Provider */ {\n provide: Router,\n useFactory: routerFactory,\n deps: /*@ts2dart_const*/\n [ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location]\n },\n];\n"]}
1
+ {"version":3,"file":"router_testing_providers.js","sourceRoot":"","sources":["../../../../../modules/@angular/router/testing/router_testing_providers.ts"],"names":[],"mappings":"OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB;OACjC,EAAC,WAAW,EAAC,MAAM,yBAAyB;OAC5C,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,eAAe;OAEnD,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe;OAC9C,EAAC,0BAA0B,EAAE,mBAAmB,EAAC,MAAM,8BAA8B;OACrF,EAAC,YAAY,EAAC,MAAM,iBAAiB;AAC5C;AAKA,CAAC;AAJD,kBAAkB;AACX,yBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAC,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAC,EAAG,EAAE;CACzF,CACA;AAED,uBACI,iBAAoC,EAAE,aAAkC,EACxE,eAAgC,EAAE,QAAkB;IACtD,MAAM,CAAC,IAAI,MAAM,CACb,IAAI,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AACzF,CAAC;AAED,OAAO,MAAM,qBAAqB,GAA4B;IAC5D,eAAe;IACf,uBAAuB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAC;IAClE,uBAAuB,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,0BAA0B,EAAC;IAC5F,uBAAuB,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,CAAC;KACxE;IACD,qBAAqB,CAAC;QACpB,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,CAAC,CAAM,CAAC,iBAAiB,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI;QAC1D,IAAI,EAAE,CAAC,MAAM,CAAC;KACf;CACF,CAAC","sourcesContent":["import {Location} from '@angular/common';\nimport {SpyLocation} from '@angular/common/testing';\nimport {Component, ComponentResolver} from '@angular/core';\n\nimport {Router, RouterOutletMap} from '../src/router';\nimport {DefaultRouterUrlSerializer, RouterUrlSerializer} from '../src/router_url_serializer';\nimport {RouteSegment} from '../src/segments';\nclass FakeAppRootCmp {\n/** @nocollapse */\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{selector: 'fake-app-root-comp', template: `<span></span>`}, ] },\n];\n}\n\nfunction routerFactory(\n componentResolver: ComponentResolver, urlSerializer: RouterUrlSerializer,\n routerOutletMap: RouterOutletMap, location: Location): Router {\n return new Router(\n null, FakeAppRootCmp, componentResolver, urlSerializer, routerOutletMap, location);\n}\n\nexport const ROUTER_FAKE_PROVIDERS: any[] = /*@ts2dart_const*/[\n RouterOutletMap,\n /* @ts2dart_Provider */ {provide: Location, useClass: SpyLocation},\n /* @ts2dart_Provider */ {provide: RouterUrlSerializer, useClass: DefaultRouterUrlSerializer},\n /* @ts2dart_Provider */ {\n provide: Router,\n useFactory: routerFactory,\n deps: /*@ts2dart_const*/\n [ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location]\n },\n /*@ts2dart_Provider*/ {\n provide: RouteSegment,\n useFactory: (r: any /** TODO #9100 */) => r.routeTree.root,\n deps: [Router]\n }\n];\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
@@ -1 +1 @@
1
- {"__symbolic":"module","metadata":{"ROUTER_FAKE_PROVIDERS":[{"__symbolic":"reference","name":"RouterOutletMap","module":"../src/router"},{"provide":{"__symbolic":"reference","name":"Location","module":"@angular/common"},"useClass":{"__symbolic":"reference","name":"SpyLocation","module":"@angular/common/testing"}},{"provide":{"__symbolic":"reference","name":"RouterUrlSerializer","module":"../src/router_url_serializer"},"useClass":{"__symbolic":"reference","name":"DefaultRouterUrlSerializer","module":"../src/router_url_serializer"}},{"provide":{"__symbolic":"reference","name":"Router","module":"../src/router"},"useFactory":{"__symbolic":"reference","name":"routerFactory"},"deps":[{"__symbolic":"reference","name":"ComponentResolver","module":"@angular/core"},{"__symbolic":"reference","name":"RouterUrlSerializer","module":"../src/router_url_serializer"},{"__symbolic":"reference","name":"RouterOutletMap","module":"../src/router"},{"__symbolic":"reference","name":"Location","module":"@angular/common"}]}]}}
1
+ {"__symbolic":"module","version":1,"metadata":{"ROUTER_FAKE_PROVIDERS":{"__symbolic":"error","message":"Function call not supported","line":31,"character":15}}}
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../modules/@angular/router/testing.ts"],"names":[],"mappings":"AAIE,cAAc,oCAAoC,CAAC","sourcesContent":["interface DecoratorInvocation {\n type: Function;\n args?: any[];\n }\n export * from './testing/router_testing_providers';\n"]}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../modules/@angular/router/testing.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC","sourcesContent":["export * from './testing/router_testing_providers';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
package/index.d.ts CHANGED
@@ -3,31 +3,13 @@
3
3
  * @description
4
4
  * Maps application URLs into application states, to support deep-linking and navigation.
5
5
  */
6
- export { Router, RouterOutletMap } from './src/router';
7
- export { RouteSegment, UrlSegment, Tree, UrlTree, RouteTree } from './src/segments';
6
+ export { ROUTER_DIRECTIVES } from './src/directives/router_directives';
7
+ export { RouterLink } from './src/directives/router_link';
8
+ export { RouterOutlet } from './src/directives/router_outlet';
9
+ export { CanDeactivate, OnActivate } from './src/interfaces';
8
10
  export { Routes } from './src/metadata/decorators';
9
11
  export { Route } from './src/metadata/metadata';
10
- export { RouterUrlSerializer, DefaultRouterUrlSerializer } from './src/router_url_serializer';
11
- export { OnActivate, CanDeactivate } from './src/interfaces';
12
+ export { Router, RouterOutletMap } from './src/router';
12
13
  export { ROUTER_PROVIDERS } from './src/router_providers';
13
- /**
14
- * A list of directives. To use the router directives like {@link RouterOutlet} and
15
- * {@link RouterLink}, add this to your `directives` array in the {@link View} decorator of your
16
- * component.
17
- *
18
- * ```
19
- * import {Component} from '@angular/core';
20
- * import {ROUTER_DIRECTIVES, Routes} from '@angular/router-deprecated';
21
- *
22
- * @Component({directives: [ROUTER_DIRECTIVES]})
23
- * @RouteConfig([
24
- * {...},
25
- * ])
26
- * class AppCmp {
27
- * // ...
28
- * }
29
- *
30
- * bootstrap(AppCmp);
31
- * ```
32
- */
33
- export declare const ROUTER_DIRECTIVES: any[];
14
+ export { DefaultRouterUrlSerializer, RouterUrlSerializer } from './src/router_url_serializer';
15
+ export { RouteSegment, RouteTree, Tree, UrlSegment, UrlTree } from './src/segments';