]>
git.wh0rd.org - tt-rss.git/blob - lib/dojo/promise/instrumentation.js.uncompressed.js
b32bb9841fb20307dda7ee36a37e0cb1139522d4
1 define("dojo/promise/instrumentation", [
6 ], function(tracer
, has
, lang
, arrayUtil
){
7 function logError(error
, rejection
, deferred
){
9 if(error
&& error
.stack
){
12 if(rejection
&& rejection
.stack
){
13 stack
+= "\n ----------------------------------------\n rejected" + rejection
.stack
.split("\n").slice(1).join("\n").replace(/^\s+/, " ");
15 if(deferred
&& deferred
.stack
){
16 stack
+= "\n ----------------------------------------\n" + deferred
.stack
;
18 console
.error(error
, stack
);
21 function reportRejections(error
, handled
, rejection
, deferred
){
23 logError(error
, rejection
, deferred
);
28 var activeTimeout
= false;
29 var unhandledWait
= 1000;
30 function trackUnhandledRejections(error
, handled
, rejection
, deferred
){
32 arrayUtil
.some(errors
, function(obj
, ix
){
33 if(obj
.error
=== error
){
38 }else if(!arrayUtil
.some(errors
, function(obj
){ return obj
.error
=== error
; })){
43 timestamp
: new Date().getTime()
48 activeTimeout
= setTimeout(logRejected
, unhandledWait
);
52 function logRejected(){
53 var now
= new Date().getTime();
54 var reportBefore
= now
- unhandledWait
;
55 errors
= arrayUtil
.filter(errors
, function(obj
){
56 if(obj
.timestamp
< reportBefore
){
57 logError(obj
.error
, obj
.rejection
, obj
.deferred
);
64 activeTimeout
= setTimeout(logRejected
, errors
[0].timestamp
+ unhandledWait
- now
);
66 activeTimeout
= false;
70 return function(Deferred
){
72 // Initialize instrumentation for the Deferred class.
74 // Initialize instrumentation for the Deferred class.
75 // Done automatically by `dojo/Deferred` if the
76 // `deferredInstrumentation` and `useDeferredInstrumentation`
77 // config options are set.
79 // Sets up `dojo/promise/tracer` to log to the console.
81 // Sets up instrumentation of rejected deferreds so unhandled
82 // errors are logged to the console.
84 var usage
= has("config-useDeferredInstrumentation");
86 tracer
.on("resolved", lang
.hitch(console
, "log", "resolved"));
87 tracer
.on("rejected", lang
.hitch(console
, "log", "rejected"));
88 tracer
.on("progress", lang
.hitch(console
, "log", "progress"));
91 if(typeof usage
=== "string"){
92 args
= usage
.split(",");
95 if(usage
=== "report-rejections"){
96 Deferred
.instrumentRejected
= reportRejections
;
97 }else if(usage
=== "report-unhandled-rejections" || usage
=== true || usage
=== 1){
98 Deferred
.instrumentRejected
= trackUnhandledRejections
;
99 unhandledWait
= parseInt(args
[0], 10) || unhandledWait
;
101 throw new Error("Unsupported instrumentation usage <" + usage
+ ">");