[6a3a178] | 1 | diff --git a/lib/util.js b/lib/util.js
|
---|
| 2 | index a03e874..9074e8e 100644
|
---|
| 3 | --- a/lib/util.js
|
---|
| 4 | +++ b/lib/util.js
|
---|
| 5 | @@ -19,430 +19,6 @@
|
---|
| 6 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
---|
| 7 | // USE OR OTHER DEALINGS IN THE SOFTWARE.
|
---|
| 8 |
|
---|
| 9 | -var formatRegExp = /%[sdj%]/g;
|
---|
| 10 | -exports.format = function(f) {
|
---|
| 11 | - if (!isString(f)) {
|
---|
| 12 | - var objects = [];
|
---|
| 13 | - for (var i = 0; i < arguments.length; i++) {
|
---|
| 14 | - objects.push(inspect(arguments[i]));
|
---|
| 15 | - }
|
---|
| 16 | - return objects.join(' ');
|
---|
| 17 | - }
|
---|
| 18 | -
|
---|
| 19 | - var i = 1;
|
---|
| 20 | - var args = arguments;
|
---|
| 21 | - var len = args.length;
|
---|
| 22 | - var str = String(f).replace(formatRegExp, function(x) {
|
---|
| 23 | - if (x === '%%') return '%';
|
---|
| 24 | - if (i >= len) return x;
|
---|
| 25 | - switch (x) {
|
---|
| 26 | - case '%s': return String(args[i++]);
|
---|
| 27 | - case '%d': return Number(args[i++]);
|
---|
| 28 | - case '%j':
|
---|
| 29 | - try {
|
---|
| 30 | - return JSON.stringify(args[i++]);
|
---|
| 31 | - } catch (_) {
|
---|
| 32 | - return '[Circular]';
|
---|
| 33 | - }
|
---|
| 34 | - default:
|
---|
| 35 | - return x;
|
---|
| 36 | - }
|
---|
| 37 | - });
|
---|
| 38 | - for (var x = args[i]; i < len; x = args[++i]) {
|
---|
| 39 | - if (isNull(x) || !isObject(x)) {
|
---|
| 40 | - str += ' ' + x;
|
---|
| 41 | - } else {
|
---|
| 42 | - str += ' ' + inspect(x);
|
---|
| 43 | - }
|
---|
| 44 | - }
|
---|
| 45 | - return str;
|
---|
| 46 | -};
|
---|
| 47 | -
|
---|
| 48 | -
|
---|
| 49 | -// Mark that a method should not be used.
|
---|
| 50 | -// Returns a modified function which warns once by default.
|
---|
| 51 | -// If --no-deprecation is set, then it is a no-op.
|
---|
| 52 | -exports.deprecate = function(fn, msg) {
|
---|
| 53 | - // Allow for deprecating things in the process of starting up.
|
---|
| 54 | - if (isUndefined(global.process)) {
|
---|
| 55 | - return function() {
|
---|
| 56 | - return exports.deprecate(fn, msg).apply(this, arguments);
|
---|
| 57 | - };
|
---|
| 58 | - }
|
---|
| 59 | -
|
---|
| 60 | - if (process.noDeprecation === true) {
|
---|
| 61 | - return fn;
|
---|
| 62 | - }
|
---|
| 63 | -
|
---|
| 64 | - var warned = false;
|
---|
| 65 | - function deprecated() {
|
---|
| 66 | - if (!warned) {
|
---|
| 67 | - if (process.throwDeprecation) {
|
---|
| 68 | - throw new Error(msg);
|
---|
| 69 | - } else if (process.traceDeprecation) {
|
---|
| 70 | - console.trace(msg);
|
---|
| 71 | - } else {
|
---|
| 72 | - console.error(msg);
|
---|
| 73 | - }
|
---|
| 74 | - warned = true;
|
---|
| 75 | - }
|
---|
| 76 | - return fn.apply(this, arguments);
|
---|
| 77 | - }
|
---|
| 78 | -
|
---|
| 79 | - return deprecated;
|
---|
| 80 | -};
|
---|
| 81 | -
|
---|
| 82 | -
|
---|
| 83 | -var debugs = {};
|
---|
| 84 | -var debugEnviron;
|
---|
| 85 | -exports.debuglog = function(set) {
|
---|
| 86 | - if (isUndefined(debugEnviron))
|
---|
| 87 | - debugEnviron = process.env.NODE_DEBUG || '';
|
---|
| 88 | - set = set.toUpperCase();
|
---|
| 89 | - if (!debugs[set]) {
|
---|
| 90 | - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
|
---|
| 91 | - var pid = process.pid;
|
---|
| 92 | - debugs[set] = function() {
|
---|
| 93 | - var msg = exports.format.apply(exports, arguments);
|
---|
| 94 | - console.error('%s %d: %s', set, pid, msg);
|
---|
| 95 | - };
|
---|
| 96 | - } else {
|
---|
| 97 | - debugs[set] = function() {};
|
---|
| 98 | - }
|
---|
| 99 | - }
|
---|
| 100 | - return debugs[set];
|
---|
| 101 | -};
|
---|
| 102 | -
|
---|
| 103 | -
|
---|
| 104 | -/**
|
---|
| 105 | - * Echos the value of a value. Trys to print the value out
|
---|
| 106 | - * in the best way possible given the different types.
|
---|
| 107 | - *
|
---|
| 108 | - * @param {Object} obj The object to print out.
|
---|
| 109 | - * @param {Object} opts Optional options object that alters the output.
|
---|
| 110 | - */
|
---|
| 111 | -/* legacy: obj, showHidden, depth, colors*/
|
---|
| 112 | -function inspect(obj, opts) {
|
---|
| 113 | - // default options
|
---|
| 114 | - var ctx = {
|
---|
| 115 | - seen: [],
|
---|
| 116 | - stylize: stylizeNoColor
|
---|
| 117 | - };
|
---|
| 118 | - // legacy...
|
---|
| 119 | - if (arguments.length >= 3) ctx.depth = arguments[2];
|
---|
| 120 | - if (arguments.length >= 4) ctx.colors = arguments[3];
|
---|
| 121 | - if (isBoolean(opts)) {
|
---|
| 122 | - // legacy...
|
---|
| 123 | - ctx.showHidden = opts;
|
---|
| 124 | - } else if (opts) {
|
---|
| 125 | - // got an "options" object
|
---|
| 126 | - exports._extend(ctx, opts);
|
---|
| 127 | - }
|
---|
| 128 | - // set default options
|
---|
| 129 | - if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
|
---|
| 130 | - if (isUndefined(ctx.depth)) ctx.depth = 2;
|
---|
| 131 | - if (isUndefined(ctx.colors)) ctx.colors = false;
|
---|
| 132 | - if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
|
---|
| 133 | - if (ctx.colors) ctx.stylize = stylizeWithColor;
|
---|
| 134 | - return formatValue(ctx, obj, ctx.depth);
|
---|
| 135 | -}
|
---|
| 136 | -exports.inspect = inspect;
|
---|
| 137 | -
|
---|
| 138 | -
|
---|
| 139 | -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
|
---|
| 140 | -inspect.colors = {
|
---|
| 141 | - 'bold' : [1, 22],
|
---|
| 142 | - 'italic' : [3, 23],
|
---|
| 143 | - 'underline' : [4, 24],
|
---|
| 144 | - 'inverse' : [7, 27],
|
---|
| 145 | - 'white' : [37, 39],
|
---|
| 146 | - 'grey' : [90, 39],
|
---|
| 147 | - 'black' : [30, 39],
|
---|
| 148 | - 'blue' : [34, 39],
|
---|
| 149 | - 'cyan' : [36, 39],
|
---|
| 150 | - 'green' : [32, 39],
|
---|
| 151 | - 'magenta' : [35, 39],
|
---|
| 152 | - 'red' : [31, 39],
|
---|
| 153 | - 'yellow' : [33, 39]
|
---|
| 154 | -};
|
---|
| 155 | -
|
---|
| 156 | -// Don't use 'blue' not visible on cmd.exe
|
---|
| 157 | -inspect.styles = {
|
---|
| 158 | - 'special': 'cyan',
|
---|
| 159 | - 'number': 'yellow',
|
---|
| 160 | - 'boolean': 'yellow',
|
---|
| 161 | - 'undefined': 'grey',
|
---|
| 162 | - 'null': 'bold',
|
---|
| 163 | - 'string': 'green',
|
---|
| 164 | - 'date': 'magenta',
|
---|
| 165 | - // "name": intentionally not styling
|
---|
| 166 | - 'regexp': 'red'
|
---|
| 167 | -};
|
---|
| 168 | -
|
---|
| 169 | -
|
---|
| 170 | -function stylizeWithColor(str, styleType) {
|
---|
| 171 | - var style = inspect.styles[styleType];
|
---|
| 172 | -
|
---|
| 173 | - if (style) {
|
---|
| 174 | - return '\u001b[' + inspect.colors[style][0] + 'm' + str +
|
---|
| 175 | - '\u001b[' + inspect.colors[style][1] + 'm';
|
---|
| 176 | - } else {
|
---|
| 177 | - return str;
|
---|
| 178 | - }
|
---|
| 179 | -}
|
---|
| 180 | -
|
---|
| 181 | -
|
---|
| 182 | -function stylizeNoColor(str, styleType) {
|
---|
| 183 | - return str;
|
---|
| 184 | -}
|
---|
| 185 | -
|
---|
| 186 | -
|
---|
| 187 | -function arrayToHash(array) {
|
---|
| 188 | - var hash = {};
|
---|
| 189 | -
|
---|
| 190 | - array.forEach(function(val, idx) {
|
---|
| 191 | - hash[val] = true;
|
---|
| 192 | - });
|
---|
| 193 | -
|
---|
| 194 | - return hash;
|
---|
| 195 | -}
|
---|
| 196 | -
|
---|
| 197 | -
|
---|
| 198 | -function formatValue(ctx, value, recurseTimes) {
|
---|
| 199 | - // Provide a hook for user-specified inspect functions.
|
---|
| 200 | - // Check that value is an object with an inspect function on it
|
---|
| 201 | - if (ctx.customInspect &&
|
---|
| 202 | - value &&
|
---|
| 203 | - isFunction(value.inspect) &&
|
---|
| 204 | - // Filter out the util module, it's inspect function is special
|
---|
| 205 | - value.inspect !== exports.inspect &&
|
---|
| 206 | - // Also filter out any prototype objects using the circular check.
|
---|
| 207 | - !(value.constructor && value.constructor.prototype === value)) {
|
---|
| 208 | - var ret = value.inspect(recurseTimes, ctx);
|
---|
| 209 | - if (!isString(ret)) {
|
---|
| 210 | - ret = formatValue(ctx, ret, recurseTimes);
|
---|
| 211 | - }
|
---|
| 212 | - return ret;
|
---|
| 213 | - }
|
---|
| 214 | -
|
---|
| 215 | - // Primitive types cannot have properties
|
---|
| 216 | - var primitive = formatPrimitive(ctx, value);
|
---|
| 217 | - if (primitive) {
|
---|
| 218 | - return primitive;
|
---|
| 219 | - }
|
---|
| 220 | -
|
---|
| 221 | - // Look up the keys of the object.
|
---|
| 222 | - var keys = Object.keys(value);
|
---|
| 223 | - var visibleKeys = arrayToHash(keys);
|
---|
| 224 | -
|
---|
| 225 | - if (ctx.showHidden) {
|
---|
| 226 | - keys = Object.getOwnPropertyNames(value);
|
---|
| 227 | - }
|
---|
| 228 | -
|
---|
| 229 | - // Some type of object without properties can be shortcutted.
|
---|
| 230 | - if (keys.length === 0) {
|
---|
| 231 | - if (isFunction(value)) {
|
---|
| 232 | - var name = value.name ? ': ' + value.name : '';
|
---|
| 233 | - return ctx.stylize('[Function' + name + ']', 'special');
|
---|
| 234 | - }
|
---|
| 235 | - if (isRegExp(value)) {
|
---|
| 236 | - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
|
---|
| 237 | - }
|
---|
| 238 | - if (isDate(value)) {
|
---|
| 239 | - return ctx.stylize(Date.prototype.toString.call(value), 'date');
|
---|
| 240 | - }
|
---|
| 241 | - if (isError(value)) {
|
---|
| 242 | - return formatError(value);
|
---|
| 243 | - }
|
---|
| 244 | - }
|
---|
| 245 | -
|
---|
| 246 | - var base = '', array = false, braces = ['{', '}'];
|
---|
| 247 | -
|
---|
| 248 | - // Make Array say that they are Array
|
---|
| 249 | - if (isArray(value)) {
|
---|
| 250 | - array = true;
|
---|
| 251 | - braces = ['[', ']'];
|
---|
| 252 | - }
|
---|
| 253 | -
|
---|
| 254 | - // Make functions say that they are functions
|
---|
| 255 | - if (isFunction(value)) {
|
---|
| 256 | - var n = value.name ? ': ' + value.name : '';
|
---|
| 257 | - base = ' [Function' + n + ']';
|
---|
| 258 | - }
|
---|
| 259 | -
|
---|
| 260 | - // Make RegExps say that they are RegExps
|
---|
| 261 | - if (isRegExp(value)) {
|
---|
| 262 | - base = ' ' + RegExp.prototype.toString.call(value);
|
---|
| 263 | - }
|
---|
| 264 | -
|
---|
| 265 | - // Make dates with properties first say the date
|
---|
| 266 | - if (isDate(value)) {
|
---|
| 267 | - base = ' ' + Date.prototype.toUTCString.call(value);
|
---|
| 268 | - }
|
---|
| 269 | -
|
---|
| 270 | - // Make error with message first say the error
|
---|
| 271 | - if (isError(value)) {
|
---|
| 272 | - base = ' ' + formatError(value);
|
---|
| 273 | - }
|
---|
| 274 | -
|
---|
| 275 | - if (keys.length === 0 && (!array || value.length == 0)) {
|
---|
| 276 | - return braces[0] + base + braces[1];
|
---|
| 277 | - }
|
---|
| 278 | -
|
---|
| 279 | - if (recurseTimes < 0) {
|
---|
| 280 | - if (isRegExp(value)) {
|
---|
| 281 | - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
|
---|
| 282 | - } else {
|
---|
| 283 | - return ctx.stylize('[Object]', 'special');
|
---|
| 284 | - }
|
---|
| 285 | - }
|
---|
| 286 | -
|
---|
| 287 | - ctx.seen.push(value);
|
---|
| 288 | -
|
---|
| 289 | - var output;
|
---|
| 290 | - if (array) {
|
---|
| 291 | - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
|
---|
| 292 | - } else {
|
---|
| 293 | - output = keys.map(function(key) {
|
---|
| 294 | - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
|
---|
| 295 | - });
|
---|
| 296 | - }
|
---|
| 297 | -
|
---|
| 298 | - ctx.seen.pop();
|
---|
| 299 | -
|
---|
| 300 | - return reduceToSingleString(output, base, braces);
|
---|
| 301 | -}
|
---|
| 302 | -
|
---|
| 303 | -
|
---|
| 304 | -function formatPrimitive(ctx, value) {
|
---|
| 305 | - if (isUndefined(value))
|
---|
| 306 | - return ctx.stylize('undefined', 'undefined');
|
---|
| 307 | - if (isString(value)) {
|
---|
| 308 | - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
|
---|
| 309 | - .replace(/'/g, "\\'")
|
---|
| 310 | - .replace(/\\"/g, '"') + '\'';
|
---|
| 311 | - return ctx.stylize(simple, 'string');
|
---|
| 312 | - }
|
---|
| 313 | - if (isNumber(value)) {
|
---|
| 314 | - // Format -0 as '-0'. Strict equality won't distinguish 0 from -0,
|
---|
| 315 | - // so instead we use the fact that 1 / -0 < 0 whereas 1 / 0 > 0 .
|
---|
| 316 | - if (value === 0 && 1 / value < 0)
|
---|
| 317 | - return ctx.stylize('-0', 'number');
|
---|
| 318 | - return ctx.stylize('' + value, 'number');
|
---|
| 319 | - }
|
---|
| 320 | - if (isBoolean(value))
|
---|
| 321 | - return ctx.stylize('' + value, 'boolean');
|
---|
| 322 | - // For some reason typeof null is "object", so special case here.
|
---|
| 323 | - if (isNull(value))
|
---|
| 324 | - return ctx.stylize('null', 'null');
|
---|
| 325 | -}
|
---|
| 326 | -
|
---|
| 327 | -
|
---|
| 328 | -function formatError(value) {
|
---|
| 329 | - return '[' + Error.prototype.toString.call(value) + ']';
|
---|
| 330 | -}
|
---|
| 331 | -
|
---|
| 332 | -
|
---|
| 333 | -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
|
---|
| 334 | - var output = [];
|
---|
| 335 | - for (var i = 0, l = value.length; i < l; ++i) {
|
---|
| 336 | - if (hasOwnProperty(value, String(i))) {
|
---|
| 337 | - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
|
---|
| 338 | - String(i), true));
|
---|
| 339 | - } else {
|
---|
| 340 | - output.push('');
|
---|
| 341 | - }
|
---|
| 342 | - }
|
---|
| 343 | - keys.forEach(function(key) {
|
---|
| 344 | - if (!key.match(/^\d+$/)) {
|
---|
| 345 | - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
|
---|
| 346 | - key, true));
|
---|
| 347 | - }
|
---|
| 348 | - });
|
---|
| 349 | - return output;
|
---|
| 350 | -}
|
---|
| 351 | -
|
---|
| 352 | -
|
---|
| 353 | -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
|
---|
| 354 | - var name, str, desc;
|
---|
| 355 | - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
|
---|
| 356 | - if (desc.get) {
|
---|
| 357 | - if (desc.set) {
|
---|
| 358 | - str = ctx.stylize('[Getter/Setter]', 'special');
|
---|
| 359 | - } else {
|
---|
| 360 | - str = ctx.stylize('[Getter]', 'special');
|
---|
| 361 | - }
|
---|
| 362 | - } else {
|
---|
| 363 | - if (desc.set) {
|
---|
| 364 | - str = ctx.stylize('[Setter]', 'special');
|
---|
| 365 | - }
|
---|
| 366 | - }
|
---|
| 367 | - if (!hasOwnProperty(visibleKeys, key)) {
|
---|
| 368 | - name = '[' + key + ']';
|
---|
| 369 | - }
|
---|
| 370 | - if (!str) {
|
---|
| 371 | - if (ctx.seen.indexOf(desc.value) < 0) {
|
---|
| 372 | - if (isNull(recurseTimes)) {
|
---|
| 373 | - str = formatValue(ctx, desc.value, null);
|
---|
| 374 | - } else {
|
---|
| 375 | - str = formatValue(ctx, desc.value, recurseTimes - 1);
|
---|
| 376 | - }
|
---|
| 377 | - if (str.indexOf('\n') > -1) {
|
---|
| 378 | - if (array) {
|
---|
| 379 | - str = str.split('\n').map(function(line) {
|
---|
| 380 | - return ' ' + line;
|
---|
| 381 | - }).join('\n').substr(2);
|
---|
| 382 | - } else {
|
---|
| 383 | - str = '\n' + str.split('\n').map(function(line) {
|
---|
| 384 | - return ' ' + line;
|
---|
| 385 | - }).join('\n');
|
---|
| 386 | - }
|
---|
| 387 | - }
|
---|
| 388 | - } else {
|
---|
| 389 | - str = ctx.stylize('[Circular]', 'special');
|
---|
| 390 | - }
|
---|
| 391 | - }
|
---|
| 392 | - if (isUndefined(name)) {
|
---|
| 393 | - if (array && key.match(/^\d+$/)) {
|
---|
| 394 | - return str;
|
---|
| 395 | - }
|
---|
| 396 | - name = JSON.stringify('' + key);
|
---|
| 397 | - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
|
---|
| 398 | - name = name.substr(1, name.length - 2);
|
---|
| 399 | - name = ctx.stylize(name, 'name');
|
---|
| 400 | - } else {
|
---|
| 401 | - name = name.replace(/'/g, "\\'")
|
---|
| 402 | - .replace(/\\"/g, '"')
|
---|
| 403 | - .replace(/(^"|"$)/g, "'");
|
---|
| 404 | - name = ctx.stylize(name, 'string');
|
---|
| 405 | - }
|
---|
| 406 | - }
|
---|
| 407 | -
|
---|
| 408 | - return name + ': ' + str;
|
---|
| 409 | -}
|
---|
| 410 | -
|
---|
| 411 | -
|
---|
| 412 | -function reduceToSingleString(output, base, braces) {
|
---|
| 413 | - var numLinesEst = 0;
|
---|
| 414 | - var length = output.reduce(function(prev, cur) {
|
---|
| 415 | - numLinesEst++;
|
---|
| 416 | - if (cur.indexOf('\n') >= 0) numLinesEst++;
|
---|
| 417 | - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
|
---|
| 418 | - }, 0);
|
---|
| 419 | -
|
---|
| 420 | - if (length > 60) {
|
---|
| 421 | - return braces[0] +
|
---|
| 422 | - (base === '' ? '' : base + '\n ') +
|
---|
| 423 | - ' ' +
|
---|
| 424 | - output.join(',\n ') +
|
---|
| 425 | - ' ' +
|
---|
| 426 | - braces[1];
|
---|
| 427 | - }
|
---|
| 428 | -
|
---|
| 429 | - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
|
---|
| 430 | -}
|
---|
| 431 | -
|
---|
| 432 | -
|
---|
| 433 | // NOTE: These type checking functions intentionally don't use `instanceof`
|
---|
| 434 | // because it is fragile and can be easily faked with `Object.create()`.
|
---|
| 435 | function isArray(ar) {
|
---|
| 436 | @@ -522,166 +98,10 @@ function isPrimitive(arg) {
|
---|
| 437 | exports.isPrimitive = isPrimitive;
|
---|
| 438 |
|
---|
| 439 | function isBuffer(arg) {
|
---|
| 440 | - return arg instanceof Buffer;
|
---|
| 441 | + return Buffer.isBuffer(arg);
|
---|
| 442 | }
|
---|
| 443 | exports.isBuffer = isBuffer;
|
---|
| 444 |
|
---|
| 445 | function objectToString(o) {
|
---|
| 446 | return Object.prototype.toString.call(o);
|
---|
| 447 | -}
|
---|
| 448 | -
|
---|
| 449 | -
|
---|
| 450 | -function pad(n) {
|
---|
| 451 | - return n < 10 ? '0' + n.toString(10) : n.toString(10);
|
---|
| 452 | -}
|
---|
| 453 | -
|
---|
| 454 | -
|
---|
| 455 | -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
|
---|
| 456 | - 'Oct', 'Nov', 'Dec'];
|
---|
| 457 | -
|
---|
| 458 | -// 26 Feb 16:19:34
|
---|
| 459 | -function timestamp() {
|
---|
| 460 | - var d = new Date();
|
---|
| 461 | - var time = [pad(d.getHours()),
|
---|
| 462 | - pad(d.getMinutes()),
|
---|
| 463 | - pad(d.getSeconds())].join(':');
|
---|
| 464 | - return [d.getDate(), months[d.getMonth()], time].join(' ');
|
---|
| 465 | -}
|
---|
| 466 | -
|
---|
| 467 | -
|
---|
| 468 | -// log is just a thin wrapper to console.log that prepends a timestamp
|
---|
| 469 | -exports.log = function() {
|
---|
| 470 | - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
|
---|
| 471 | -};
|
---|
| 472 | -
|
---|
| 473 | -
|
---|
| 474 | -/**
|
---|
| 475 | - * Inherit the prototype methods from one constructor into another.
|
---|
| 476 | - *
|
---|
| 477 | - * The Function.prototype.inherits from lang.js rewritten as a standalone
|
---|
| 478 | - * function (not on Function.prototype). NOTE: If this file is to be loaded
|
---|
| 479 | - * during bootstrapping this function needs to be rewritten using some native
|
---|
| 480 | - * functions as prototype setup using normal JavaScript does not work as
|
---|
| 481 | - * expected during bootstrapping (see mirror.js in r114903).
|
---|
| 482 | - *
|
---|
| 483 | - * @param {function} ctor Constructor function which needs to inherit the
|
---|
| 484 | - * prototype.
|
---|
| 485 | - * @param {function} superCtor Constructor function to inherit prototype from.
|
---|
| 486 | - */
|
---|
| 487 | -exports.inherits = function(ctor, superCtor) {
|
---|
| 488 | - ctor.super_ = superCtor;
|
---|
| 489 | - ctor.prototype = Object.create(superCtor.prototype, {
|
---|
| 490 | - constructor: {
|
---|
| 491 | - value: ctor,
|
---|
| 492 | - enumerable: false,
|
---|
| 493 | - writable: true,
|
---|
| 494 | - configurable: true
|
---|
| 495 | - }
|
---|
| 496 | - });
|
---|
| 497 | -};
|
---|
| 498 | -
|
---|
| 499 | -exports._extend = function(origin, add) {
|
---|
| 500 | - // Don't do anything if add isn't an object
|
---|
| 501 | - if (!add || !isObject(add)) return origin;
|
---|
| 502 | -
|
---|
| 503 | - var keys = Object.keys(add);
|
---|
| 504 | - var i = keys.length;
|
---|
| 505 | - while (i--) {
|
---|
| 506 | - origin[keys[i]] = add[keys[i]];
|
---|
| 507 | - }
|
---|
| 508 | - return origin;
|
---|
| 509 | -};
|
---|
| 510 | -
|
---|
| 511 | -function hasOwnProperty(obj, prop) {
|
---|
| 512 | - return Object.prototype.hasOwnProperty.call(obj, prop);
|
---|
| 513 | -}
|
---|
| 514 | -
|
---|
| 515 | -
|
---|
| 516 | -// Deprecated old stuff.
|
---|
| 517 | -
|
---|
| 518 | -exports.p = exports.deprecate(function() {
|
---|
| 519 | - for (var i = 0, len = arguments.length; i < len; ++i) {
|
---|
| 520 | - console.error(exports.inspect(arguments[i]));
|
---|
| 521 | - }
|
---|
| 522 | -}, 'util.p: Use console.error() instead');
|
---|
| 523 | -
|
---|
| 524 | -
|
---|
| 525 | -exports.exec = exports.deprecate(function() {
|
---|
| 526 | - return require('child_process').exec.apply(this, arguments);
|
---|
| 527 | -}, 'util.exec is now called `child_process.exec`.');
|
---|
| 528 | -
|
---|
| 529 | -
|
---|
| 530 | -exports.print = exports.deprecate(function() {
|
---|
| 531 | - for (var i = 0, len = arguments.length; i < len; ++i) {
|
---|
| 532 | - process.stdout.write(String(arguments[i]));
|
---|
| 533 | - }
|
---|
| 534 | -}, 'util.print: Use console.log instead');
|
---|
| 535 | -
|
---|
| 536 | -
|
---|
| 537 | -exports.puts = exports.deprecate(function() {
|
---|
| 538 | - for (var i = 0, len = arguments.length; i < len; ++i) {
|
---|
| 539 | - process.stdout.write(arguments[i] + '\n');
|
---|
| 540 | - }
|
---|
| 541 | -}, 'util.puts: Use console.log instead');
|
---|
| 542 | -
|
---|
| 543 | -
|
---|
| 544 | -exports.debug = exports.deprecate(function(x) {
|
---|
| 545 | - process.stderr.write('DEBUG: ' + x + '\n');
|
---|
| 546 | -}, 'util.debug: Use console.error instead');
|
---|
| 547 | -
|
---|
| 548 | -
|
---|
| 549 | -exports.error = exports.deprecate(function(x) {
|
---|
| 550 | - for (var i = 0, len = arguments.length; i < len; ++i) {
|
---|
| 551 | - process.stderr.write(arguments[i] + '\n');
|
---|
| 552 | - }
|
---|
| 553 | -}, 'util.error: Use console.error instead');
|
---|
| 554 | -
|
---|
| 555 | -
|
---|
| 556 | -exports.pump = exports.deprecate(function(readStream, writeStream, callback) {
|
---|
| 557 | - var callbackCalled = false;
|
---|
| 558 | -
|
---|
| 559 | - function call(a, b, c) {
|
---|
| 560 | - if (callback && !callbackCalled) {
|
---|
| 561 | - callback(a, b, c);
|
---|
| 562 | - callbackCalled = true;
|
---|
| 563 | - }
|
---|
| 564 | - }
|
---|
| 565 | -
|
---|
| 566 | - readStream.addListener('data', function(chunk) {
|
---|
| 567 | - if (writeStream.write(chunk) === false) readStream.pause();
|
---|
| 568 | - });
|
---|
| 569 | -
|
---|
| 570 | - writeStream.addListener('drain', function() {
|
---|
| 571 | - readStream.resume();
|
---|
| 572 | - });
|
---|
| 573 | -
|
---|
| 574 | - readStream.addListener('end', function() {
|
---|
| 575 | - writeStream.end();
|
---|
| 576 | - });
|
---|
| 577 | -
|
---|
| 578 | - readStream.addListener('close', function() {
|
---|
| 579 | - call();
|
---|
| 580 | - });
|
---|
| 581 | -
|
---|
| 582 | - readStream.addListener('error', function(err) {
|
---|
| 583 | - writeStream.end();
|
---|
| 584 | - call(err);
|
---|
| 585 | - });
|
---|
| 586 | -
|
---|
| 587 | - writeStream.addListener('error', function(err) {
|
---|
| 588 | - readStream.destroy();
|
---|
| 589 | - call(err);
|
---|
| 590 | - });
|
---|
| 591 | -}, 'util.pump(): Use readableStream.pipe() instead');
|
---|
| 592 | -
|
---|
| 593 | -
|
---|
| 594 | -var uv;
|
---|
| 595 | -exports._errnoException = function(err, syscall) {
|
---|
| 596 | - if (isUndefined(uv)) uv = process.binding('uv');
|
---|
| 597 | - var errname = uv.errname(err);
|
---|
| 598 | - var e = new Error(syscall + ' ' + errname);
|
---|
| 599 | - e.code = errname;
|
---|
| 600 | - e.errno = errname;
|
---|
| 601 | - e.syscall = syscall;
|
---|
| 602 | - return e;
|
---|
| 603 | -};
|
---|
| 604 | +} |
---|