rails-angularjs2 2.0.0.pre.alpha.31 → 2.0.0.pre.alpha.32

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.
@@ -213,6 +213,84 @@ System.register("angular2/src/router/url", ["angular2/src/facade/lang"], functio
213
213
  };
214
214
  });
215
215
 
216
+ System.register("angular2/src/router/route_config_impl", ["angular2/src/facade/lang"], function($__export) {
217
+ "use strict";
218
+ var __moduleName = "angular2/src/router/route_config_impl";
219
+ var __decorate,
220
+ __metadata,
221
+ CONST,
222
+ RouteConfig,
223
+ Route,
224
+ AsyncRoute,
225
+ Redirect;
226
+ return {
227
+ setters: [function($__m) {
228
+ CONST = $__m.CONST;
229
+ }],
230
+ execute: function() {
231
+ __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
232
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
233
+ return Reflect.decorate(decorators, target, key, desc);
234
+ switch (arguments.length) {
235
+ case 2:
236
+ return decorators.reduceRight(function(o, d) {
237
+ return (d && d(o)) || o;
238
+ }, target);
239
+ case 3:
240
+ return decorators.reduceRight(function(o, d) {
241
+ return (d && d(target, key)), void 0;
242
+ }, void 0);
243
+ case 4:
244
+ return decorators.reduceRight(function(o, d) {
245
+ return (d && d(target, key, o)) || o;
246
+ }, desc);
247
+ }
248
+ };
249
+ __metadata = (this && this.__metadata) || function(k, v) {
250
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
251
+ return Reflect.metadata(k, v);
252
+ };
253
+ RouteConfig = (($traceurRuntime.createClass)(function(configs) {
254
+ this.configs = configs;
255
+ }, {}, {}));
256
+ $__export("RouteConfig", RouteConfig);
257
+ $__export("RouteConfig", RouteConfig = __decorate([CONST(), __metadata('design:paramtypes', [Object])], RouteConfig));
258
+ Route = (($traceurRuntime.createClass)(function($__2) {
259
+ var $__3 = $__2,
260
+ path = $__3.path,
261
+ component = $__3.component,
262
+ as = $__3.as;
263
+ this.path = path;
264
+ this.component = component;
265
+ this.as = as;
266
+ }, {}, {}));
267
+ $__export("Route", Route);
268
+ $__export("Route", Route = __decorate([CONST(), __metadata('design:paramtypes', [Object])], Route));
269
+ AsyncRoute = (($traceurRuntime.createClass)(function($__2) {
270
+ var $__3 = $__2,
271
+ path = $__3.path,
272
+ loader = $__3.loader,
273
+ as = $__3.as;
274
+ this.path = path;
275
+ this.loader = loader;
276
+ this.as = as;
277
+ }, {}, {}));
278
+ $__export("AsyncRoute", AsyncRoute);
279
+ $__export("AsyncRoute", AsyncRoute = __decorate([CONST(), __metadata('design:paramtypes', [Object])], AsyncRoute));
280
+ Redirect = (($traceurRuntime.createClass)(function($__2) {
281
+ var $__3 = $__2,
282
+ path = $__3.path,
283
+ redirectTo = $__3.redirectTo;
284
+ this.as = null;
285
+ this.path = path;
286
+ this.redirectTo = redirectTo;
287
+ }, {}, {}));
288
+ $__export("Redirect", Redirect);
289
+ $__export("Redirect", Redirect = __decorate([CONST(), __metadata('design:paramtypes', [Object])], Redirect));
290
+ }
291
+ };
292
+ });
293
+
216
294
  System.register("angular2/src/router/async_route_handler", ["angular2/src/facade/lang"], function($__export) {
217
295
  "use strict";
218
296
  var __moduleName = "angular2/src/router/async_route_handler";
@@ -269,45 +347,24 @@ System.register("angular2/src/router/sync_route_handler", ["angular2/src/facade/
269
347
  };
270
348
  });
271
349
 
272
- System.register("angular2/src/router/route_config_impl", ["angular2/src/facade/lang"], function($__export) {
350
+ System.register("angular2/src/router/route_config_decorator", ["angular2/src/router/route_config_impl", "angular2/src/util/decorators"], function($__export) {
273
351
  "use strict";
274
- var __moduleName = "angular2/src/router/route_config_impl";
275
- var __decorate,
276
- __metadata,
277
- CONST,
352
+ var __moduleName = "angular2/src/router/route_config_decorator";
353
+ var RouteConfigAnnotation,
354
+ makeDecorator,
278
355
  RouteConfig;
279
356
  return {
280
357
  setters: [function($__m) {
281
- CONST = $__m.CONST;
358
+ RouteConfigAnnotation = $__m.RouteConfig;
359
+ $__export("Route", $__m.Route);
360
+ $__export("Redirect", $__m.Redirect);
361
+ $__export("AsyncRoute", $__m.AsyncRoute);
362
+ }, function($__m) {
363
+ makeDecorator = $__m.makeDecorator;
282
364
  }],
283
365
  execute: function() {
284
- __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
285
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
286
- return Reflect.decorate(decorators, target, key, desc);
287
- switch (arguments.length) {
288
- case 2:
289
- return decorators.reduceRight(function(o, d) {
290
- return (d && d(o)) || o;
291
- }, target);
292
- case 3:
293
- return decorators.reduceRight(function(o, d) {
294
- return (d && d(target, key)), void 0;
295
- }, void 0);
296
- case 4:
297
- return decorators.reduceRight(function(o, d) {
298
- return (d && d(target, key, o)) || o;
299
- }, desc);
300
- }
301
- };
302
- __metadata = (this && this.__metadata) || function(k, v) {
303
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
304
- return Reflect.metadata(k, v);
305
- };
306
- RouteConfig = (($traceurRuntime.createClass)(function(configs) {
307
- this.configs = configs;
308
- }, {}, {}));
366
+ RouteConfig = makeDecorator(RouteConfigAnnotation);
309
367
  $__export("RouteConfig", RouteConfig);
310
- $__export("RouteConfig", RouteConfig = __decorate([CONST(), __metadata('design:paramtypes', [Object])], RouteConfig));
311
368
  }
312
369
  };
313
370
  });
@@ -521,25 +578,6 @@ System.register("angular2/src/router/pipeline", ["angular2/src/facade/async", "a
521
578
  };
522
579
  });
523
580
 
524
- System.register("angular2/src/router/route_config_decorator", ["angular2/src/router/route_config_impl", "angular2/src/util/decorators"], function($__export) {
525
- "use strict";
526
- var __moduleName = "angular2/src/router/route_config_decorator";
527
- var RouteConfigAnnotation,
528
- makeDecorator,
529
- RouteConfig;
530
- return {
531
- setters: [function($__m) {
532
- RouteConfigAnnotation = $__m.RouteConfig;
533
- }, function($__m) {
534
- makeDecorator = $__m.makeDecorator;
535
- }],
536
- execute: function() {
537
- RouteConfig = makeDecorator(RouteConfigAnnotation);
538
- $__export("RouteConfig", RouteConfig);
539
- }
540
- };
541
- });
542
-
543
581
  System.register("angular2/src/router/location", ["angular2/src/router/location_strategy", "angular2/src/facade/lang", "angular2/src/facade/async", "angular2/di"], function($__export) {
544
582
  "use strict";
545
583
  var __moduleName = "angular2/src/router/location";
@@ -551,6 +589,8 @@ System.register("angular2/src/router/location", ["angular2/src/router/location_s
551
589
  CONST_EXPR,
552
590
  EventEmitter,
553
591
  ObservableWrapper,
592
+ BaseException,
593
+ isBlank,
554
594
  OpaqueToken,
555
595
  Injectable,
556
596
  Optional,
@@ -575,6 +615,8 @@ System.register("angular2/src/router/location", ["angular2/src/router/location_s
575
615
  }, function($__m) {
576
616
  isPresent = $__m.isPresent;
577
617
  CONST_EXPR = $__m.CONST_EXPR;
618
+ BaseException = $__m.BaseException;
619
+ isBlank = $__m.isBlank;
578
620
  }, function($__m) {
579
621
  EventEmitter = $__m.EventEmitter;
580
622
  ObservableWrapper = $__m.ObservableWrapper;
@@ -618,7 +660,11 @@ System.register("angular2/src/router/location", ["angular2/src/router/location_s
618
660
  var $__0 = this;
619
661
  this._platformStrategy = _platformStrategy;
620
662
  this._subject = new EventEmitter();
621
- this._baseHref = stripTrailingSlash(stripIndexHtml(isPresent(href) ? href : this._platformStrategy.getBaseHref()));
663
+ var browserBaseHref = isPresent(href) ? href : this._platformStrategy.getBaseHref();
664
+ if (isBlank(browserBaseHref)) {
665
+ throw new BaseException("No base href set. Either provide a binding to \"appBaseHrefToken\" or add a base element.");
666
+ }
667
+ this._baseHref = stripTrailingSlash(stripIndexHtml(browserBaseHref));
622
668
  this._platformStrategy.onPopState((function(_) {
623
669
  return $__0._onPopState(_);
624
670
  }));
@@ -694,6 +740,7 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
694
740
  StarSegment,
695
741
  paramMatcher,
696
742
  wildcardMatcher,
743
+ RESERVED_CHARS,
697
744
  PathRecognizer;
698
745
  function normalizeString(obj) {
699
746
  if (isBlank(obj)) {
@@ -750,6 +797,15 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
750
797
  function splitBySlash(url) {
751
798
  return url.split('/');
752
799
  }
800
+ function assertPath(path) {
801
+ if (StringWrapper.contains(path, '#')) {
802
+ throw new BaseException(("Path \"" + path + "\" should not include \"#\". Use \"HashLocationStrategy\" instead."));
803
+ }
804
+ var illegalCharacter = RegExpWrapper.firstMatch(RESERVED_CHARS, path);
805
+ if (isPresent(illegalCharacter)) {
806
+ throw new BaseException(("Path \"" + path + "\" contains \"" + illegalCharacter[0] + "\" which is not allowed in a route config."));
807
+ }
808
+ }
753
809
  return {
754
810
  setters: [function($__m) {
755
811
  RegExpWrapper = $__m.RegExpWrapper;
@@ -861,12 +917,14 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
861
917
  }());
862
918
  paramMatcher = /^:([^\/]+)$/g;
863
919
  wildcardMatcher = /^\*([^\/]+)$/g;
920
+ RESERVED_CHARS = RegExpWrapper.create('//|\\(|\\)|;|\\?|=');
864
921
  PathRecognizer = (function() {
865
922
  function PathRecognizer(path, handler) {
866
923
  var $__0 = this;
867
924
  this.path = path;
868
925
  this.handler = handler;
869
926
  this.terminal = true;
927
+ assertPath(path);
870
928
  var parsed = parsePathString(path);
871
929
  var specificity = parsed['specificity'];
872
930
  var segments = parsed['segments'];
@@ -950,6 +1008,63 @@ System.register("angular2/src/router/path_recognizer", ["angular2/src/facade/lan
950
1008
  };
951
1009
  });
952
1010
 
1011
+ System.register("angular2/src/router/route_config_nomalizer", ["angular2/src/router/route_config_decorator", "angular2/src/facade/lang"], function($__export) {
1012
+ "use strict";
1013
+ var __moduleName = "angular2/src/router/route_config_nomalizer";
1014
+ var AsyncRoute,
1015
+ Route,
1016
+ Redirect,
1017
+ BaseException;
1018
+ function normalizeRouteConfig(config) {
1019
+ if (config instanceof Route || config instanceof Redirect || config instanceof AsyncRoute) {
1020
+ return config;
1021
+ }
1022
+ if ((!config.component) == (!config.redirectTo)) {
1023
+ throw new BaseException("Route config should contain exactly one 'component', or 'redirectTo' property");
1024
+ }
1025
+ if (config.component) {
1026
+ if (typeof config.component == 'object') {
1027
+ var componentDefinitionObject = config.component;
1028
+ if (componentDefinitionObject.type == 'constructor') {
1029
+ return new Route({
1030
+ path: config.path,
1031
+ component: componentDefinitionObject.constructor,
1032
+ as: config.as
1033
+ });
1034
+ } else if (componentDefinitionObject.type == 'loader') {
1035
+ return new AsyncRoute({
1036
+ path: config.path,
1037
+ loader: componentDefinitionObject.loader,
1038
+ as: config.as
1039
+ });
1040
+ } else {
1041
+ throw new BaseException(("Invalid component type '" + componentDefinitionObject.type + "'. Valid types are \"constructor\" and \"loader\"."));
1042
+ }
1043
+ }
1044
+ return new Route(config);
1045
+ }
1046
+ if (config.redirectTo) {
1047
+ return new Redirect({
1048
+ path: config.path,
1049
+ redirectTo: config.redirectTo
1050
+ });
1051
+ }
1052
+ return config;
1053
+ }
1054
+ $__export("normalizeRouteConfig", normalizeRouteConfig);
1055
+ return {
1056
+ setters: [function($__m) {
1057
+ AsyncRoute = $__m.AsyncRoute;
1058
+ Route = $__m.Route;
1059
+ Redirect = $__m.Redirect;
1060
+ }, function($__m) {
1061
+ BaseException = $__m.BaseException;
1062
+ }],
1063
+ execute: function() {
1064
+ }
1065
+ };
1066
+ });
1067
+
953
1068
  System.register("angular2/src/router/route_lifecycle_reflector", ["angular2/src/facade/lang", "angular2/src/router/lifecycle_annotations_impl", "angular2/src/reflection/reflection"], function($__export) {
954
1069
  "use strict";
955
1070
  var __moduleName = "angular2/src/router/route_lifecycle_reflector";
@@ -1053,7 +1168,7 @@ System.register("angular2/src/router/router_link", ["angular2/src/core/annotatio
1053
1168
  };
1054
1169
  });
1055
1170
 
1056
- System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/router/path_recognizer", "angular2/src/router/async_route_handler", "angular2/src/router/sync_route_handler"], function($__export) {
1171
+ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/lang", "angular2/src/facade/collection", "angular2/src/router/path_recognizer", "angular2/src/router/route_config_impl", "angular2/src/router/async_route_handler", "angular2/src/router/sync_route_handler"], function($__export) {
1057
1172
  "use strict";
1058
1173
  var __moduleName = "angular2/src/router/route_recognizer";
1059
1174
  var RegExpWrapper,
@@ -1065,6 +1180,9 @@ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/la
1065
1180
  Map,
1066
1181
  MapWrapper,
1067
1182
  PathRecognizer,
1183
+ Route,
1184
+ AsyncRoute,
1185
+ Redirect,
1068
1186
  AsyncRouteHandler,
1069
1187
  SyncRouteHandler,
1070
1188
  RouteRecognizer,
@@ -1100,6 +1218,10 @@ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/la
1100
1218
  MapWrapper = $__m.MapWrapper;
1101
1219
  }, function($__m) {
1102
1220
  PathRecognizer = $__m.PathRecognizer;
1221
+ }, function($__m) {
1222
+ Route = $__m.Route;
1223
+ AsyncRoute = $__m.AsyncRoute;
1224
+ Redirect = $__m.Redirect;
1103
1225
  }, function($__m) {
1104
1226
  AsyncRouteHandler = $__m.AsyncRouteHandler;
1105
1227
  }, function($__m) {
@@ -1113,24 +1235,26 @@ System.register("angular2/src/router/route_recognizer", ["angular2/src/facade/la
1113
1235
  this.matchers = new Map();
1114
1236
  }
1115
1237
  return ($traceurRuntime.createClass)(RouteRecognizer, {
1116
- addRedirect: function(path, target) {
1117
- if (path == '/') {
1118
- path = '';
1238
+ config: function(config) {
1239
+ var handler;
1240
+ if (config instanceof Redirect) {
1241
+ var path = config.path == '/' ? '' : config.path;
1242
+ this.redirects.set(path, config.redirectTo);
1243
+ return true;
1244
+ } else if (config instanceof Route) {
1245
+ handler = new SyncRouteHandler(config.component);
1246
+ } else if (config instanceof AsyncRoute) {
1247
+ handler = new AsyncRouteHandler(config.loader);
1119
1248
  }
1120
- this.redirects.set(path, target);
1121
- },
1122
- addConfig: function(path, handlerObj) {
1123
- var alias = arguments[2] !== (void 0) ? arguments[2] : null;
1124
- var handler = configObjToHandler(handlerObj['component']);
1125
- var recognizer = new PathRecognizer(path, handler);
1249
+ var recognizer = new PathRecognizer(config.path, handler);
1126
1250
  MapWrapper.forEach(this.matchers, (function(matcher, _) {
1127
1251
  if (recognizer.regex.toString() == matcher.regex.toString()) {
1128
- throw new BaseException(("Configuration '" + path + "' conflicts with existing route '" + matcher.path + "'"));
1252
+ throw new BaseException(("Configuration '" + config.path + "' conflicts with existing route '" + matcher.path + "'"));
1129
1253
  }
1130
1254
  }));
1131
1255
  this.matchers.set(recognizer.regex, recognizer);
1132
- if (isPresent(alias)) {
1133
- this.names.set(alias, recognizer);
1256
+ if (isPresent(config.as)) {
1257
+ this.names.set(config.as, recognizer);
1134
1258
  }
1135
1259
  return recognizer.terminal;
1136
1260
  },
@@ -1205,7 +1329,6 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
1205
1329
  isString,
1206
1330
  StringWrapper,
1207
1331
  isPresent,
1208
- isArray,
1209
1332
  BaseException,
1210
1333
  getCanActivateHook,
1211
1334
  _resolveToTrue,
@@ -1254,7 +1377,6 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
1254
1377
  isString = $__m.isString;
1255
1378
  StringWrapper = $__m.StringWrapper;
1256
1379
  isPresent = $__m.isPresent;
1257
- isArray = $__m.isArray;
1258
1380
  BaseException = $__m.BaseException;
1259
1381
  }, function($__m) {
1260
1382
  getCanActivateHook = $__m.getCanActivateHook;
@@ -1285,15 +1407,11 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
1285
1407
  }
1286
1408
  return _resolveToTrue;
1287
1409
  },
1288
- config: function(config) {
1410
+ config: function(definitions) {
1289
1411
  var $__0 = this;
1290
- if (isArray(config)) {
1291
- config.forEach((function(configObject) {
1292
- $__0.registry.config($__0.hostComponent, configObject);
1293
- }));
1294
- } else {
1295
- this.registry.config(this.hostComponent, config);
1296
- }
1412
+ definitions.forEach((function(routeDefinition) {
1413
+ $__0.registry.config($__0.hostComponent, routeDefinition);
1414
+ }));
1297
1415
  return this.renavigate();
1298
1416
  },
1299
1417
  navigate: function(url) {
@@ -1472,7 +1590,7 @@ System.register("angular2/src/router/router", ["angular2/src/facade/async", "ang
1472
1590
  };
1473
1591
  });
1474
1592
 
1475
- System.register("angular2/src/router/route_registry", ["angular2/src/router/route_recognizer", "angular2/src/router/instruction", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/src/facade/lang", "angular2/src/router/route_config_impl", "angular2/src/reflection/reflection", "angular2/di"], function($__export) {
1593
+ System.register("angular2/src/router/route_registry", ["angular2/src/router/route_recognizer", "angular2/src/router/instruction", "angular2/src/facade/collection", "angular2/src/facade/async", "angular2/src/facade/lang", "angular2/src/router/route_config_impl", "angular2/src/reflection/reflection", "angular2/di", "angular2/src/router/route_config_nomalizer"], function($__export) {
1476
1594
  "use strict";
1477
1595
  var __moduleName = "angular2/src/router/route_registry";
1478
1596
  var __decorate,
@@ -1481,7 +1599,6 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1481
1599
  Instruction,
1482
1600
  ListWrapper,
1483
1601
  Map,
1484
- StringMapWrapper,
1485
1602
  PromiseWrapper,
1486
1603
  isPresent,
1487
1604
  isBlank,
@@ -1489,45 +1606,13 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1489
1606
  isString,
1490
1607
  isStringMap,
1491
1608
  BaseException,
1609
+ getTypeNameForDebugging,
1492
1610
  RouteConfig,
1611
+ Route,
1493
1612
  reflector,
1494
1613
  Injectable,
1495
- RouteRegistry,
1496
- ALLOWED_TARGETS,
1497
- VALID_COMPONENT_TYPES;
1498
- function assertValidConfig(config) {
1499
- if (!StringMapWrapper.contains(config, 'path')) {
1500
- throw new BaseException("Route config should contain a \"path\" property");
1501
- }
1502
- var targets = 0;
1503
- ListWrapper.forEach(ALLOWED_TARGETS, (function(target) {
1504
- if (StringMapWrapper.contains(config, target)) {
1505
- targets += 1;
1506
- }
1507
- }));
1508
- if (targets != 1) {
1509
- throw new BaseException("Route config should contain exactly one 'component', or 'redirectTo' property");
1510
- }
1511
- }
1512
- function normalizeComponentDeclaration(config) {
1513
- if (isType(config)) {
1514
- return {
1515
- 'constructor': config,
1516
- 'type': 'constructor'
1517
- };
1518
- } else if (isStringMap(config)) {
1519
- if (isBlank(config['type'])) {
1520
- throw new BaseException("Component declaration when provided as a map should include a 'type' property");
1521
- }
1522
- var componentType = config['type'];
1523
- if (!ListWrapper.contains(VALID_COMPONENT_TYPES, componentType)) {
1524
- throw new BaseException(("Invalid component type '" + componentType + "'"));
1525
- }
1526
- return config;
1527
- } else {
1528
- throw new BaseException("Component declaration should be either a Map or a Type");
1529
- }
1530
- }
1614
+ normalizeRouteConfig,
1615
+ RouteRegistry;
1531
1616
  function mostSpecific(instructions) {
1532
1617
  var mostSpecificSolution = instructions[0];
1533
1618
  for (var solutionIndex = 1; solutionIndex < instructions.length; solutionIndex++) {
@@ -1560,7 +1645,6 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1560
1645
  }, function($__m) {
1561
1646
  ListWrapper = $__m.ListWrapper;
1562
1647
  Map = $__m.Map;
1563
- StringMapWrapper = $__m.StringMapWrapper;
1564
1648
  }, function($__m) {
1565
1649
  PromiseWrapper = $__m.PromiseWrapper;
1566
1650
  }, function($__m) {
@@ -1570,12 +1654,16 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1570
1654
  isString = $__m.isString;
1571
1655
  isStringMap = $__m.isStringMap;
1572
1656
  BaseException = $__m.BaseException;
1657
+ getTypeNameForDebugging = $__m.getTypeNameForDebugging;
1573
1658
  }, function($__m) {
1574
1659
  RouteConfig = $__m.RouteConfig;
1660
+ Route = $__m.Route;
1575
1661
  }, function($__m) {
1576
1662
  reflector = $__m.reflector;
1577
1663
  }, function($__m) {
1578
1664
  Injectable = $__m.Injectable;
1665
+ }, function($__m) {
1666
+ normalizeRouteConfig = $__m.normalizeRouteConfig;
1579
1667
  }],
1580
1668
  execute: function() {
1581
1669
  __decorate = (this && this.__decorate) || function(decorators, target, key, desc) {
@@ -1604,24 +1692,18 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1604
1692
  this._rules = new Map();
1605
1693
  }, {
1606
1694
  config: function(parentComponent, config) {
1607
- assertValidConfig(config);
1695
+ config = normalizeRouteConfig(config);
1608
1696
  var recognizer = this._rules.get(parentComponent);
1609
1697
  if (isBlank(recognizer)) {
1610
1698
  recognizer = new RouteRecognizer();
1611
1699
  this._rules.set(parentComponent, recognizer);
1612
1700
  }
1613
- if (StringMapWrapper.contains(config, 'redirectTo')) {
1614
- recognizer.addRedirect(config['path'], config['redirectTo']);
1615
- return ;
1616
- }
1617
- config = StringMapWrapper.merge(config, {'component': normalizeComponentDeclaration(config['component'])});
1618
- var component = config['component'];
1619
- var terminal = recognizer.addConfig(config['path'], config, config['as']);
1620
- if (component['type'] == 'constructor') {
1701
+ var terminal = recognizer.config(config);
1702
+ if (config instanceof Route) {
1621
1703
  if (terminal) {
1622
- assertTerminalComponent(component['constructor'], config['path']);
1704
+ assertTerminalComponent(config.component, config.path);
1623
1705
  } else {
1624
- this.configFromComponent(component['constructor']);
1706
+ this.configFromComponent(config.component);
1625
1707
  }
1626
1708
  }
1627
1709
  },
@@ -1692,6 +1774,9 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1692
1774
  var componentCursor = parentComponent;
1693
1775
  for (var i = 0; i < linkParams.length; i += 1) {
1694
1776
  var segment = linkParams[i];
1777
+ if (isBlank(componentCursor)) {
1778
+ throw new BaseException(("Could not find route named \"" + segment + "\"."));
1779
+ }
1695
1780
  if (!isString(segment)) {
1696
1781
  throw new BaseException(("Unexpected segment \"" + segment + "\" in link DSL. Expected a string."));
1697
1782
  } else if (segment == '' || segment == '.' || segment == '..') {
@@ -1707,9 +1792,12 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1707
1792
  }
1708
1793
  var componentRecognizer = this._rules.get(componentCursor);
1709
1794
  if (isBlank(componentRecognizer)) {
1710
- throw new BaseException(("Could not find route config for \"" + segment + "\"."));
1795
+ throw new BaseException(("Component \"" + getTypeNameForDebugging(componentCursor) + "\" has no route config."));
1711
1796
  }
1712
1797
  var response = componentRecognizer.generate(segment, params);
1798
+ if (isBlank(response)) {
1799
+ throw new BaseException(("Component \"" + getTypeNameForDebugging(componentCursor) + "\" has no route named \"" + segment + "\"."));
1800
+ }
1713
1801
  url += response['url'];
1714
1802
  componentCursor = response['nextComponent'];
1715
1803
  }
@@ -1718,8 +1806,6 @@ System.register("angular2/src/router/route_registry", ["angular2/src/router/rout
1718
1806
  }, {}));
1719
1807
  $__export("RouteRegistry", RouteRegistry);
1720
1808
  $__export("RouteRegistry", RouteRegistry = __decorate([Injectable(), __metadata('design:paramtypes', [])], RouteRegistry));
1721
- ALLOWED_TARGETS = ['component', 'redirectTo'];
1722
- VALID_COMPONENT_TYPES = ['constructor', 'loader'];
1723
1809
  }
1724
1810
  };
1725
1811
  });