aboutsummaryrefslogtreecommitdiff
path: root/node_modules/when/monitor/ConsoleReporter.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/when/monitor/ConsoleReporter.js')
-rw-r--r--node_modules/when/monitor/ConsoleReporter.js102
1 files changed, 102 insertions, 0 deletions
diff --git a/node_modules/when/monitor/ConsoleReporter.js b/node_modules/when/monitor/ConsoleReporter.js
new file mode 100644
index 00000000..79e56ed9
--- /dev/null
+++ b/node_modules/when/monitor/ConsoleReporter.js
@@ -0,0 +1,102 @@
+/** @license MIT License (c) copyright 2010-2014 original author or authors */
+/** @author Brian Cavalier */
+/** @author John Hann */
+
+(function(define) { 'use strict';
+define(function(require) {
+
+ var error = require('./error');
+ var unhandledRejectionsMsg = '[promises] Unhandled rejections: ';
+ var allHandledMsg = '[promises] All previously unhandled rejections have now been handled';
+
+ function ConsoleReporter() {
+ this._previouslyReported = false;
+ }
+
+ ConsoleReporter.prototype = initDefaultLogging();
+
+ ConsoleReporter.prototype.log = function(traces) {
+ if(traces.length === 0) {
+ if(this._previouslyReported) {
+ this._previouslyReported = false;
+ this.msg(allHandledMsg);
+ }
+ return;
+ }
+
+ this._previouslyReported = true;
+ this.groupStart(unhandledRejectionsMsg + traces.length);
+ try {
+ this._log(traces);
+ } finally {
+ this.groupEnd();
+ }
+ };
+
+ ConsoleReporter.prototype._log = function(traces) {
+ for(var i=0; i<traces.length; ++i) {
+ this.warn(error.format(traces[i]));
+ }
+ };
+
+ function initDefaultLogging() {
+ /*jshint maxcomplexity:7*/
+ var log, warn, groupStart, groupEnd;
+
+ if(typeof console === 'undefined') {
+ log = warn = consoleNotAvailable;
+ } else {
+ // Alias console to prevent things like uglify's drop_console option from
+ // removing console.log/error. Unhandled rejections fall into the same
+ // category as uncaught exceptions, and build tools shouldn't silence them.
+ var localConsole = console;
+ if(typeof localConsole.error === 'function'
+ && typeof localConsole.dir === 'function') {
+ warn = function(s) {
+ localConsole.error(s);
+ };
+
+ log = function(s) {
+ localConsole.log(s);
+ };
+
+ if(typeof localConsole.groupCollapsed === 'function') {
+ groupStart = function(s) {
+ localConsole.groupCollapsed(s);
+ };
+ groupEnd = function() {
+ localConsole.groupEnd();
+ };
+ }
+ } else {
+ // IE8 has console.log and JSON, so we can make a
+ // reasonably useful warn() from those.
+ // Credit to webpro (https://github.com/webpro) for this idea
+ if (typeof localConsole.log ==='function'
+ && typeof JSON !== 'undefined') {
+ log = warn = function (x) {
+ if(typeof x !== 'string') {
+ try {
+ x = JSON.stringify(x);
+ } catch(e) {}
+ }
+ localConsole.log(x);
+ };
+ }
+ }
+ }
+
+ return {
+ msg: log,
+ warn: warn,
+ groupStart: groupStart || warn,
+ groupEnd: groupEnd || consoleNotAvailable
+ };
+ }
+
+ function consoleNotAvailable() {}
+
+ return ConsoleReporter;
+
+});
+}(typeof define === 'function' && define.amd ? define : function(factory) { module.exports = factory(require); }));