@@ -6,6 +6,7 @@ define("router/handler-info",
66 var merge = __dependency1__ . merge ;
77 var oCreate = __dependency1__ . oCreate ;
88 var serialize = __dependency1__ . serialize ;
9+ var promiseLabel = __dependency1__ . promiseLabel ;
910 var resolve = __dependency2__ . resolve ;
1011
1112 function HandlerInfo ( props ) {
@@ -26,21 +27,26 @@ define("router/handler-info",
2627 }
2728 } ,
2829
30+ promiseLabel : function ( label ) {
31+ return promiseLabel ( "'" + this . name + "' " + label ) ;
32+ } ,
33+
2934 resolve : function ( async , shouldContinue , payload ) {
3035 var checkForAbort = bind ( this . checkForAbort , this , shouldContinue ) ,
3136 beforeModel = bind ( this . runBeforeModelHook , this , async , payload ) ,
3237 model = bind ( this . getModel , this , async , payload ) ,
3338 afterModel = bind ( this . runAfterModelHook , this , async , payload ) ,
3439 becomeResolved = bind ( this . becomeResolved , this , payload ) ;
3540
36- return resolve ( ) . then ( checkForAbort )
37- . then ( beforeModel )
38- . then ( checkForAbort )
39- . then ( model )
40- . then ( checkForAbort )
41- . then ( afterModel )
42- . then ( checkForAbort )
43- . then ( becomeResolved ) ;
41+ return resolve ( undefined , this . promiseLabel ( "Start handler" ) )
42+ . then ( checkForAbort , null , this . promiseLabel ( "Check for abort" ) )
43+ . then ( beforeModel , null , this . promiseLabel ( "Before model" ) )
44+ . then ( checkForAbort , null , this . promiseLabel ( "Check if aborted during 'beforeModel' hook" ) )
45+ . then ( model , null , this . promiseLabel ( "Model" ) )
46+ . then ( checkForAbort , null , this . promiseLabel ( "Check if aborted in 'model' hook" ) )
47+ . then ( afterModel , null , this . promiseLabel ( "After model" ) )
48+ . then ( checkForAbort , null , this . promiseLabel ( "Check if aborted in 'afterModel' hook" ) )
49+ . then ( becomeResolved , null , this . promiseLabel ( "Become resolved" ) ) ;
4450 } ,
4551
4652 runBeforeModelHook : function ( async , payload ) {
@@ -63,7 +69,7 @@ define("router/handler-info",
6369 // Return the value stashed in resolvedModels, which
6470 // might have been swapped out in afterModel.
6571 return payload . resolvedModels [ name ] ;
66- } ) ;
72+ } , null , this . promiseLabel ( "Ignore fulfillment value and return model value" ) ) ;
6773 } ,
6874
6975 runSharedModelHook : function ( async , payload , hookName , args ) {
@@ -77,19 +83,19 @@ define("router/handler-info",
7783 var handler = this . handler ;
7884 return async ( function ( ) {
7985 return handler [ hookName ] && handler [ hookName ] . apply ( handler , args ) ;
80- } ) ;
86+ } , this . promiseLabel ( "Handle " + hookName ) ) ;
8187 } ,
8288
8389 getModel : function ( payload ) {
8490 throw new Error ( "This should be overridden by a subclass of HandlerInfo" ) ;
8591 } ,
8692
8793 checkForAbort : function ( shouldContinue , promiseValue ) {
88- return resolve ( shouldContinue ( ) ) . then ( function ( ) {
94+ return resolve ( shouldContinue ( ) , this . promiseLabel ( "Check for abort" ) ) . then ( function ( ) {
8995 // We don't care about shouldContinue's resolve value;
9096 // pass along the original value passed to this fn.
9197 return promiseValue ;
92- } ) ;
98+ } , null , this . promiseLabel ( "Ignore fulfillment value and continue" ) ) ;
9399 } ,
94100
95101 stashResolvedModel : function ( payload , resolvedModel ) {
@@ -140,7 +146,7 @@ define("router/handler-info",
140146 if ( payload && payload . resolvedModels ) {
141147 payload . resolvedModels [ this . name ] = this . context ;
142148 }
143- return resolve ( this ) ;
149+ return resolve ( this , this . promiseLabel ( "Resolve" ) ) ;
144150 } ;
145151
146152 // These are generated by URL transitions and
@@ -222,6 +228,7 @@ define("router/router",
222228 var serialize = __dependency3__ . serialize ;
223229 var extractQueryParams = __dependency3__ . extractQueryParams ;
224230 var getChangelist = __dependency3__ . getChangelist ;
231+ var promiseLabel = __dependency3__ . promiseLabel ;
225232 var TransitionState = __dependency4__ . TransitionState ;
226233 var logAbort = __dependency5__ . logAbort ;
227234 var Transition = __dependency5__ . Transition ;
@@ -250,10 +257,12 @@ define("router/router",
250257 map : function ( callback ) {
251258 this . recognizer . delegate = this . delegate ;
252259
253- this . recognizer . map ( callback , function ( recognizer , route ) {
254- var lastHandler = route [ route . length - 1 ] . handler ;
255- var args = [ route , { as : lastHandler } ] ;
256- recognizer . add . apply ( recognizer , args ) ;
260+ this . recognizer . map ( callback , function ( recognizer , routes ) {
261+ for ( var i = routes . length - 1 , proceed = true ; i >= 0 && proceed ; -- i ) {
262+ var route = routes [ i ] ;
263+ recognizer . add ( routes , { as : route . handler } ) ;
264+ proceed = route . path === '/' || route . path === '' || route . handler . slice ( - 6 ) === '.index' ;
265+ }
257266 } ) ;
258267 } ,
259268
@@ -308,7 +317,7 @@ define("router/router",
308317 router . didTransition ( router . currentHandlerInfos ) ;
309318 }
310319 return result ;
311- } ) ;
320+ } , null , promiseLabel ( "Transition complete" ) ) ;
312321 return newTransition ;
313322 }
314323 }
@@ -337,8 +346,8 @@ define("router/router",
337346 newTransition . promise = newTransition . promise . then ( function ( result ) {
338347 return router . async ( function ( ) {
339348 return finalizeTransition ( newTransition , result . state ) ;
340- } ) ;
341- } ) ;
349+ } , "Finalize transition" ) ;
350+ } , null , promiseLabel ( "Settle transition promise when transition is finalized" ) ) ;
342351
343352 if ( ! wasTransitioning ) {
344353 trigger ( this , this . state . handlerInfos , true , [ 'willTransition' , newTransition ] ) ;
@@ -532,7 +541,7 @@ define("router/router",
532541
533542 var newState = intent . applyToHandlers ( state , recogHandlers , this . getHandler , targetHandler , true , true ) ;
534543
535- return handlerInfosEqual ( newState . handlerInfos , state . handlerInfos ) &&
544+ return handlerInfosEqual ( newState . handlerInfos , state . handlerInfos ) &&
536545 ! getChangelist ( activeQueryParams , queryParams ) ;
537546 } ,
538547
@@ -553,10 +562,10 @@ define("router/router",
553562 @return {Promise } a promise that fulfills with the
554563 value returned from the callback
555564 */
556- async : function ( callback ) {
565+ async : function ( callback , label ) {
557566 return new Promise ( function ( resolve ) {
558567 resolve ( callback ( ) ) ;
559- } ) ;
568+ } , label ) ;
560569 } ,
561570
562571 /**
@@ -1217,6 +1226,7 @@ define("router/transition-state",
12171226 "use strict" ;
12181227 var ResolvedHandlerInfo = __dependency1__ . ResolvedHandlerInfo ;
12191228 var forEach = __dependency2__ . forEach ;
1229+ var promiseLabel = __dependency2__ . promiseLabel ;
12201230 var resolve = __dependency3__ . resolve ;
12211231
12221232 function TransitionState ( other ) {
@@ -1230,8 +1240,19 @@ define("router/transition-state",
12301240 queryParams : null ,
12311241 params : null ,
12321242
1233- resolve : function ( async , shouldContinue , payload ) {
1243+ promiseLabel : function ( label ) {
1244+ var targetName = '' ;
1245+ forEach ( this . handlerInfos , function ( handlerInfo ) {
1246+ if ( targetName !== '' ) {
1247+ targetName += '.' ;
1248+ }
1249+ targetName += handlerInfo . name ;
1250+ } ) ;
1251+ return promiseLabel ( "'" + targetName + "': " + label ) ;
1252+ } ,
12341253
1254+ resolve : function ( async , shouldContinue , payload ) {
1255+ var self = this ;
12351256 // First, calculate params for this state. This is useful
12361257 // information to provide to the various route hooks.
12371258 var params = this . params ;
@@ -1246,16 +1267,17 @@ define("router/transition-state",
12461267 var wasAborted = false ;
12471268
12481269 // The prelude RSVP.resolve() asyncs us into the promise land.
1249- return resolve ( ) . then ( resolveOneHandlerInfo ) [ 'catch' ] ( handleError ) ;
1270+ return resolve ( null , this . promiseLabel ( "Start transition" ) )
1271+ . then ( resolveOneHandlerInfo , null , this . promiseLabel ( 'Resolve handler' ) ) [ 'catch' ] ( handleError , this . promiseLabel ( 'Handle error' ) ) ;
12501272
12511273 function innerShouldContinue ( ) {
1252- return resolve ( shouldContinue ( ) ) [ 'catch' ] ( function ( reason ) {
1274+ return resolve ( shouldContinue ( ) , promiseLabel ( "Check if should continue" ) ) [ 'catch' ] ( function ( reason ) {
12531275 // We distinguish between errors that occurred
12541276 // during resolution (e.g. beforeModel/model/afterModel),
12551277 // and aborts due to a rejecting promise from shouldContinue().
12561278 wasAborted = true ;
12571279 throw reason ;
1258- } ) ;
1280+ } , promiseLabel ( "Handle abort" ) ) ;
12591281 }
12601282
12611283 function handleError ( error ) {
@@ -1285,7 +1307,7 @@ define("router/transition-state",
12851307
12861308 // Proceed after ensuring that the redirect hook
12871309 // didn't abort this transition by transitioning elsewhere.
1288- return innerShouldContinue ( ) . then ( resolveOneHandlerInfo ) ;
1310+ return innerShouldContinue ( ) . then ( resolveOneHandlerInfo , null , promiseLabel ( 'Resolve handler' ) ) ;
12891311 }
12901312
12911313 function resolveOneHandlerInfo ( ) {
@@ -1301,7 +1323,7 @@ define("router/transition-state",
13011323 var handlerInfo = currentState . handlerInfos [ payload . resolveIndex ] ;
13021324
13031325 return handlerInfo . resolve ( async , innerShouldContinue , payload )
1304- . then ( proceed ) ;
1326+ . then ( proceed , null , promiseLabel ( 'Proceed' ) ) ;
13051327 }
13061328 }
13071329 } ;
@@ -1318,6 +1340,7 @@ define("router/transition",
13181340 var trigger = __dependency3__ . trigger ;
13191341 var slice = __dependency3__ . slice ;
13201342 var log = __dependency3__ . log ;
1343+ var promiseLabel = __dependency3__ . promiseLabel ;
13211344
13221345 /**
13231346 @private
@@ -1368,15 +1391,15 @@ define("router/transition",
13681391 transition . abort ( ) ;
13691392 throw result . error ;
13701393 }
1371- } ) ;
1394+ } , promiseLabel ( 'Handle Abort' ) ) ;
13721395 } else {
13731396 this . promise = resolve ( this . state ) ;
13741397 this . params = { } ;
13751398 }
13761399
13771400 function checkForAbort ( ) {
13781401 if ( transition . isAborted ) {
1379- return reject ( ) ;
1402+ return reject ( undefined , promiseLabel ( "Transition aborted - reject" ) ) ;
13801403 }
13811404 }
13821405 }
@@ -1774,6 +1797,10 @@ define("router/utils",
17741797 return didChange && results ;
17751798 }
17761799
1800+ function promiseLabel ( label ) {
1801+ return 'Router: ' + label ;
1802+ }
1803+
17771804 __exports__ . trigger = trigger ;
17781805 __exports__ . log = log ;
17791806 __exports__ . oCreate = oCreate ;
@@ -1786,6 +1813,7 @@ define("router/utils",
17861813 __exports__ . serialize = serialize ;
17871814 __exports__ . getChangelist = getChangelist ;
17881815 __exports__ . coerceQueryParamsToString = coerceQueryParamsToString ;
1816+ __exports__ . promiseLabel = promiseLabel ;
17891817 } ) ;
17901818define ( "router" ,
17911819 [ "./router/router" , "exports" ] ,
0 commit comments