raspberryGPIOhtmlserver/node_modules/socket.io-parser/node_modules/debug/debug.js
node_modules/socket.io-parser/node_modules/debug/debug.jsRaw
1
2/**
3 * Expose `debug()` as the module.
4 */
5
6module.exports = debug;
7
8/**
9 * Create a debugger with the given `name`.
10 *
11 * @param {String} name
12 * @return {Type}
13 * @api public
14 */
15
16function debug(name) {
17 if (!debug.enabled(name)) return function(){};
18
19 return function(fmt){
20 fmt = coerce(fmt);
21
22 var curr = new Date;
23 var ms = curr - (debug[name] || curr);
24 debug[name] = curr;
25
26 fmt = name
27 + ' '
28 + fmt
29 + ' +' + debug.humanize(ms);
30
31 // This hackery is required for IE8
32 // where `console.log` doesn't have 'apply'
33 window.console
34 && console.log
35 && Function.prototype.apply.call(console.log, console, arguments);
36 }
37}
38
39/**
40 * The currently active debug mode names.
41 */
42
43debug.names = [];
44debug.skips = [];
45
46/**
47 * Enables a debug mode by name. This can include modes
48 * separated by a colon and wildcards.
49 *
50 * @param {String} name
51 * @api public
52 */
53
54debug.enable = function(name) {
55 try {
56 localStorage.debug = name;
57 } catch(e){}
58
59 var split = (name || '').split(/[\s,]+/)
60 , len = split.length;
61
62 for (var i = 0; i < len; i++) {
63 name = split[i].replace('*', '.*?');
64 if (name[0] === '-') {
65 debug.skips.push(new RegExp('^' + name.substr(1) + '$'));
66 }
67 else {
68 debug.names.push(new RegExp('^' + name + '$'));
69 }
70 }
71};
72
73/**
74 * Disable debug output.
75 *
76 * @api public
77 */
78
79debug.disable = function(){
80 debug.enable('');
81};
82
83/**
84 * Humanize the given `ms`.
85 *
86 * @param {Number} m
87 * @return {String}
88 * @api private
89 */
90
91debug.humanize = function(ms) {
92 var sec = 1000
93 , min = 60 * 1000
94 , hour = 60 * min;
95
96 if (ms >= hour) return (ms / hour).toFixed(1) + 'h';
97 if (ms >= min) return (ms / min).toFixed(1) + 'm';
98 if (ms >= sec) return (ms / sec | 0) + 's';
99 return ms + 'ms';
100};
101
102/**
103 * Returns true if the given mode name is enabled, false otherwise.
104 *
105 * @param {String} name
106 * @return {Boolean}
107 * @api public
108 */
109
110debug.enabled = function(name) {
111 for (var i = 0, len = debug.skips.length; i < len; i++) {
112 if (debug.skips[i].test(name)) {
113 return false;
114 }
115 }
116 for (var i = 0, len = debug.names.length; i < len; i++) {
117 if (debug.names[i].test(name)) {
118 return true;
119 }
120 }
121 return false;
122};
123
124/**
125 * Coerce `val`.
126 */
127
128function coerce(val) {
129 if (val instanceof Error) return val.stack || val.message;
130 return val;
131}
132
133// persist
134
135try {
136 if (window.localStorage) debug.enable(localStorage.debug);
137} catch(e){}