1- import { isNull , isPromise , isNumber , fnToString , isInjectable , is , invoke , not , val , pattern , parse , isDefined , identity } from "../common/common" ;
1+ import { isNull , isPromise , isNumber , fnToString , maxLength , padString , isInjectable , is , invoke , not , val , pattern , parse , isDefined , identity } from "../common/common" ;
22import Resolvable from "../resolve/resolvable" ;
33import { Transition } from "../transition/transition" ;
44import { TransitionRejection } from "../transition/rejectFactory" ;
@@ -10,6 +10,12 @@ function promiseToString(p) {
1010 return `Promise(${ JSON . stringify ( p ) } )` ;
1111}
1212
13+ function functionToString ( fn ) {
14+ let fnStr = fnToString ( fn ) ;
15+ let namedFunctionMatch = fnStr . match ( / ^ ( f u n c t i o n [ ^ ] + \( [ ^ ) ] * \) ) / ) ;
16+ return namedFunctionMatch ? namedFunctionMatch [ 1 ] : fnStr ;
17+ }
18+
1319const uiViewString = ( viewData ) =>
1420 `ui-view id#${ viewData . id } , contextual name '${ viewData . name } @${ viewData . creationContext } ', fqn: '${ viewData . fqn } '` ;
1521
@@ -20,17 +26,6 @@ function normalizedCat(input: Category): string {
2026 return isNumber ( input ) ? Category [ input ] : Category [ Category [ input ] ] ;
2127}
2228
23- function padString ( length : number , str : string ) {
24- while ( str . length < length ) str += " " ;
25- return str ;
26- }
27-
28- function maxLength ( max : number , str : string ) {
29- if ( str . length <= max ) return str ;
30- return str . substr ( 0 , max - 3 ) + "..." ;
31-
32- }
33-
3429enum Category {
3530 RESOLVE , TRANSITION , HOOK , INVOKE , UIVIEW , VIEWCONFIG
3631}
@@ -43,7 +38,7 @@ class Trace {
4338 [ isPromise , promiseToString ] ,
4439 [ is ( Transition ) , invoke ( "toString" ) ] ,
4540 [ is ( Resolvable ) , invoke ( "toString" ) ] ,
46- [ isInjectable , fnToString ] ,
41+ [ isInjectable , functionToString ] ,
4742 [ val ( true ) , identity ]
4843 ] ) ;
4944
@@ -87,95 +82,99 @@ class Trace {
8782 traceTransitionStart ( transition : Transition ) {
8883 if ( ! this . enabled ( Category . TRANSITION ) ) return ;
8984 let tid = transition . $id ,
90- digest = this . approximateDigests ,
91- transitionStr = this . _stringify ( transition ) ;
85+ digest = this . approximateDigests ,
86+ transitionStr = this . _stringify ( transition ) ;
9287 this . _trace ( `Transition #${ tid } Digest #${ digest } : Started -> ${ transitionStr } ` ) ;
9388 }
9489
9590 traceTransitionIgnored ( transition : Transition ) {
9691 if ( ! this . enabled ( Category . TRANSITION ) ) return ;
9792 let tid = transition . $id ,
98- digest = this . approximateDigests ,
99- transitionStr = this . _stringify ( transition ) ;
93+ digest = this . approximateDigests ,
94+ transitionStr = this . _stringify ( transition ) ;
10095 this . _trace ( `Transition #${ tid } Digest #${ digest } : Ignored <> ${ transitionStr } ` ) ;
10196 }
10297
10398 traceHookInvocation ( step , options ) {
10499 if ( ! this . enabled ( Category . HOOK ) ) return ;
105100 let tid = parse ( "transition.$id" ) ( options ) ,
106- digest = this . approximateDigests ;
107- this . _trace ( `Transition #${ tid } Digest #${ digest } : Hook -> ${ step . toString ( ) } ` ) ;
101+ digest = this . approximateDigests ,
102+ event = parse ( "traceData.hookType" ) ( options ) || "internal" ,
103+ context = parse ( "traceData.context.state.name" ) ( options ) || parse ( "traceData.context" ) ( options ) || "unknown" ,
104+ name = functionToString ( step . fn ) ;
105+ this . _trace ( `Transition #${ tid } Digest #${ digest } : Hook -> ${ event } context: ${ context } , ${ maxLength ( 200 , name ) } ` ) ;
108106 }
109107
110108 traceHookResult ( hookResult , transitionResult , transitionOptions ) {
111109 if ( ! this . enabled ( Category . HOOK ) ) return ;
112110 let tid = parse ( "transition.$id" ) ( transitionOptions ) ,
113- digest = this . approximateDigests ,
114- hookResultStr = this . _stringify ( hookResult ) ,
115- transitionResultStr = this . _stringify ( transitionResult ) ;
116- this . _trace ( `Transition #${ tid } Digest #${ digest } : Hook <- returned: ${ hookResultStr } , transition result: ${ transitionResultStr } ` ) ;
111+ digest = this . approximateDigests ,
112+ hookResultStr = this . _stringify ( hookResult ) ,
113+ transitionResultStr = this . _stringify ( transitionResult ) ;
114+ this . _trace ( `Transition #${ tid } Digest #${ digest } : <- Hook returned: ${ maxLength ( 200 , hookResultStr ) } , transition result: ${ maxLength ( 200 , transitionResultStr ) } ` ) ;
117115 }
118116
119117 traceResolvePath ( path , options ) {
120118 if ( ! this . enabled ( Category . RESOLVE ) ) return ;
121119 let tid = parse ( "transition.$id" ) ( options ) ,
122- digest = this . approximateDigests ,
123- pathStr = path && path . toString ( ) ,
124- policyStr = options && options . resolvePolicy ;
120+ digest = this . approximateDigests ,
121+ pathStr = path && path . toString ( ) ,
122+ policyStr = options && options . resolvePolicy ;
125123 this . _trace ( `Transition #${ tid } Digest #${ digest } : Resolving ${ pathStr } (${ policyStr } )` ) ;
126124 }
127125
128126 traceResolvePathElement ( pathElement , resolvablePromises , options ) {
129127 if ( ! this . enabled ( Category . RESOLVE ) ) return ;
130128 if ( ! resolvablePromises . length ) return ;
131129 let tid = parse ( "transition.$id" ) ( options ) ,
132- digest = this . approximateDigests ,
133- resolvablePromisesStr = Object . keys ( resolvablePromises ) . join ( ", " ) ,
134- pathElementStr = pathElement && pathElement . toString ( ) ,
135- policyStr = options && options . resolvePolicy ;
130+ digest = this . approximateDigests ,
131+ resolvablePromisesStr = Object . keys ( resolvablePromises ) . join ( ", " ) ,
132+ pathElementStr = pathElement && pathElement . toString ( ) ,
133+ policyStr = options && options . resolvePolicy ;
136134 this . _trace ( `Transition #${ tid } Digest #${ digest } : Resolve ${ pathElementStr } resolvables: [${ resolvablePromisesStr } ] (${ policyStr } )` ) ;
137135 }
138136
139137 traceResolveResolvable ( resolvable , options ) {
140138 if ( ! this . enabled ( Category . RESOLVE ) ) return ;
141139 let tid = parse ( "transition.$id" ) ( options ) ,
142- digest = this . approximateDigests ,
143- resolvableStr = resolvable && resolvable . toString ( ) ;
140+ digest = this . approximateDigests ,
141+ resolvableStr = resolvable && resolvable . toString ( ) ;
144142 this . _trace ( `Transition #${ tid } Digest #${ digest } : Resolving -> ${ resolvableStr } ` ) ;
145143 }
146144
147145 traceResolvableResolved ( resolvable , options ) {
148146 if ( ! this . enabled ( Category . RESOLVE ) ) return ;
149147 let tid = parse ( "transition.$id" ) ( options ) ,
150- digest = this . approximateDigests ,
151- resolvableStr = resolvable && resolvable . toString ( ) ;
152- this . _trace ( `Transition #${ tid } Digest #${ digest } : Resolved <- ${ resolvableStr } to: ${ resolvable . data } ` ) ;
148+ digest = this . approximateDigests ,
149+ resolvableStr = resolvable && resolvable . toString ( ) ,
150+ result = this . _stringify ( resolvable . data ) ;
151+ this . _trace ( `Transition #${ tid } Digest #${ digest } : <- Resolved ${ resolvableStr } to: ${ maxLength ( 200 , result ) } ` ) ;
153152 }
154153
155- tracePathElementInvoke ( pathElement , fn , deps , options ) {
154+ tracePathElementInvoke ( state , fn , deps , options ) {
156155 if ( ! this . enabled ( Category . INVOKE ) ) return ;
157156 let tid = parse ( "transition.$id" ) ( options ) ,
158- digest = this . approximateDigests ,
159- pathElementStr = pathElement && pathElement . toString ( ) ,
160- fnName = fnToString ( fn ) ;
161- this . _trace ( `Transition #${ tid } Digest #${ digest } : Invoke ${ options . when } : context: ${ pathElementStr } ${ fnName } ` ) ;
157+ digest = this . approximateDigests ,
158+ stateName = state && state . toString ( ) ,
159+ fnName = functionToString ( fn ) ;
160+ this . _trace ( `Transition #${ tid } Digest #${ digest } : Invoke ${ options . when } : context: ${ stateName } ${ maxLength ( 200 , fnName ) } ` ) ;
162161 }
163162
164163 traceError ( error , transition : Transition ) {
165164 if ( ! this . enabled ( Category . TRANSITION ) ) return ;
166165 let tid = transition . $id ,
167- digest = this . approximateDigests ,
168- transitionStr = this . _stringify ( transition ) ;
169- this . _trace ( `Transition #${ tid } Digest #${ digest } : Rejected <- ${ transitionStr } , reason: ${ error } ` ) ;
166+ digest = this . approximateDigests ,
167+ transitionStr = this . _stringify ( transition ) ;
168+ this . _trace ( `Transition #${ tid } Digest #${ digest } : <- Rejected ${ transitionStr } , reason: ${ error } ` ) ;
170169 }
171170
172171 traceSuccess ( finalState , transition : Transition ) {
173172 if ( ! this . enabled ( Category . TRANSITION ) ) return ;
174173 let tid = transition . $id ,
175- digest = this . approximateDigests ,
176- state = finalState . name ,
177- transitionStr = this . _stringify ( transition ) ;
178- this . _trace ( `Transition #${ tid } Digest #${ digest } : Success <- ${ transitionStr } , final state: ${ state } ` ) ;
174+ digest = this . approximateDigests ,
175+ state = finalState . name ,
176+ transitionStr = this . _stringify ( transition ) ;
177+ this . _trace ( `Transition #${ tid } Digest #${ digest } : <- Success ${ transitionStr } , final state: ${ state } ` ) ;
179178 }
180179
181180 traceUiViewEvent ( event : string , viewData : IUiViewData , extra = "" ) {
@@ -195,7 +194,7 @@ class Trace {
195194
196195 traceUiViewFill ( viewData : IUiViewData , html ) {
197196 if ( ! this . enabled ( Category . UIVIEW ) ) return ;
198- this . traceUiViewEvent ( "Fill" , viewData , ` with: ${ maxLength ( 60 , html ) } ` ) ;
197+ this . traceUiViewEvent ( "Fill" , viewData , ` with: ${ maxLength ( 200 , html ) } ` ) ;
199198 }
200199
201200 traceViewServiceEvent ( event : string , viewConfig : ViewConfig ) {
0 commit comments