2017-03-29 07:08:09 +00:00
( function e ( t , n , r ) { function s ( o , u ) { if ( ! n [ o ] ) { if ( ! t [ o ] ) { var a = typeof require == "function" && require ; if ( ! u && a ) return a ( o , ! 0 ) ; if ( i ) return i ( o , ! 0 ) ; var f = new Error ( "Cannot find module '" + o + "'" ) ; throw f . code = "MODULE_NOT_FOUND" , f } var l = n [ o ] = { exports : { } } ; t [ o ] [ 0 ] . call ( l . exports , function ( e ) { var n = t [ o ] [ 1 ] [ e ] ; return s ( n ? n : e ) } , l , l . exports , e , t , n , r ) } return n [ o ] . exports } var i = typeof require == "function" && require ; for ( var o = 0 ; o < r . length ; o ++ ) s ( r [ o ] ) ; return s } ) ( { 1 : [ function ( require , module , exports ) {
/* frac.js (C) 2012-present SheetJS -- http://sheetjs.com */
var frac = function frac ( x , D , mixed ) {
var n1 = Math . floor ( x ) , d1 = 1 ;
var n2 = n1 + 1 , d2 = 1 ;
if ( x !== n1 ) while ( d1 <= D && d2 <= D ) {
var m = ( n1 + n2 ) / ( d1 + d2 ) ;
if ( x === m ) {
if ( d1 + d2 <= D ) { d1 += d2 ; n1 += n2 ; d2 = D + 1 ; }
else if ( d1 > d2 ) d2 = D + 1 ;
else d1 = D + 1 ;
break ;
}
else if ( x < m ) { n2 = n1 + n2 ; d2 = d1 + d2 ; }
else { n1 = n1 + n2 ; d1 = d1 + d2 ; }
}
if ( d1 > D ) { d1 = d2 ; n1 = n2 ; }
if ( ! mixed ) return [ 0 , n1 , d1 ] ;
var q = Math . floor ( n1 / d1 ) ;
return [ q , n1 - q * d1 , d1 ] ;
} ;
frac . cont = function cont ( x , D , mixed ) {
var sgn = x < 0 ? - 1 : 1 ;
var B = x * sgn ;
var P _2 = 0 , P _1 = 1 , P = 0 ;
var Q _2 = 1 , Q _1 = 0 , Q = 0 ;
var A = Math . floor ( B ) ;
while ( Q _1 < D ) {
A = Math . floor ( B ) ;
P = A * P _1 + P _2 ;
Q = A * Q _1 + Q _2 ;
if ( ( B - A ) < 0.00000005 ) break ;
B = 1 / ( B - A ) ;
P _2 = P _1 ; P _1 = P ;
Q _2 = Q _1 ; Q _1 = Q ;
}
if ( Q > D ) { if ( Q _1 > D ) { Q = Q _2 ; P = P _2 ; } else { Q = Q _1 ; P = P _1 ; } }
if ( ! mixed ) return [ 0 , sgn * P , Q ] ;
var q = Math . floor ( sgn * P / Q ) ;
return [ q , sgn * P - q * Q , Q ] ;
} ;
2018-01-19 05:03:42 +00:00
// eslint-disable-next-line no-undef
2017-03-29 07:08:09 +00:00
if ( typeof module !== 'undefined' && typeof DO _NOT _EXPORT _FRAC === 'undefined' ) module . exports = frac ;
} , { } ] , 2 : [ function ( require , module , exports ) {
var assert = require ( 'assert' ) ;
var frac ;
describe ( 'source' , function ( ) { it ( 'should load' , function ( ) { frac = require ( './' ) ; } ) ; } ) ;
var xltestfiles = [
[ 'xl.00001.tsv' , 10000 ] ,
[ 'xl.0001.tsv' , 10000 ] ,
[ 'xl.001.tsv' , 10000 ] ,
[ 'xl.01.tsv' , 10000 ] ,
[ 'oddities.tsv' , 25 ]
] ;
function xlline ( o , j , m , w ) {
it ( j . toString ( ) , function ( ) {
var d , q , qq , f = 0.1 ;
var q0 = 0 , q1 = 0 , q2 = 0
for ( var i = j * w ; i < m - 3 && i < ( j + 1 ) * w ; ++ i ) {
d = o [ i ] . split ( "\t" ) ;
if ( d . length < 3 ) continue ;
f = parseFloat ( d [ 0 ] ) ;
q = frac . cont ( f , 9 , true ) ;
q0 = q [ 0 ] ; q1 = q [ 1 ] ; q2 = q [ 2 ] ;
qq = ( q0 != 0 || q1 != 0 ) ? ( q0 != 0 ? q0 . toString ( ) : "" ) + " " + ( q1 != 0 ? q1 . toString ( ) + "/" + q2 . toString ( ) : " " ) : "0 " ;
assert . equal ( qq , d [ 1 ] , d [ 1 ] + " 1" ) ;
q = frac . cont ( f , 99 , true ) ;
qq = ( q [ 0 ] != 0 || q [ 1 ] != 0 ) ? ( q [ 0 ] != 0 ? q [ 0 ] . toString ( ) : "" ) + " " + ( q [ 1 ] != 0 ? ( q [ 1 ] < 10 ? " " : "" ) + q [ 1 ] . toString ( ) + "/" + q [ 2 ] . toString ( ) + ( q [ 2 ] < 10 ? " " : "" ) : " " ) : "0 " ;
assert . equal ( qq , d [ 2 ] , d [ 2 ] + " 2" ) ;
q = frac . cont ( f , 999 , true ) ;
qq = ( q [ 0 ] != 0 || q [ 1 ] != 0 ) ? ( q [ 0 ] != 0 ? q [ 0 ] . toString ( ) : "" ) + " " + ( q [ 1 ] != 0 ? ( q [ 1 ] < 100 ? " " : "" ) + ( q [ 1 ] < 10 ? " " : "" ) + q [ 1 ] . toString ( ) + "/" + q [ 2 ] . toString ( ) + ( q [ 2 ] < 10 ? " " : "" ) + ( q [ 2 ] < 100 ? " " : "" ) : " " ) : "0 " ;
assert . equal ( qq , d [ 3 ] , d [ 3 ] + " 3" ) ;
}
} ) ;
}
function parsexl ( f , w ) {
if ( ! fs . existsSync ( f ) ) return ;
var o = fs . readFileSync ( f , 'utf-8' ) . split ( "\n" ) ;
for ( var j = 0 , m = o . length - 3 ; j < m / w ; ++ j ) xlline ( o , j , m , w ) ;
}
function cmp ( a , b ) { assert . equal ( a . length , b . length ) ; for ( var i = 0 ; i != a . length ; ++ i ) assert . equal ( a [ i ] , b [ i ] ) ; }
describe ( 'mediant' , function ( ) {
it ( 'should do the right thing for tenths' , function ( ) {
cmp ( frac ( 0.1 , 9 , false ) , [ 0 , 1 , 9 ] ) ;
cmp ( frac ( 0.2 , 9 , false ) , [ 0 , 1 , 5 ] ) ;
cmp ( frac ( 0.3 , 9 , false ) , [ 0 , 2 , 7 ] ) ;
cmp ( frac ( 0.4 , 9 , false ) , [ 0 , 2 , 5 ] ) ;
cmp ( frac ( 0.5 , 9 , false ) , [ 0 , 1 , 2 ] ) ;
cmp ( frac ( 0.6 , 9 , false ) , [ 0 , 3 , 5 ] ) ;
cmp ( frac ( 0.7 , 9 , false ) , [ 0 , 5 , 7 ] ) ;
cmp ( frac ( 0.8 , 9 , false ) , [ 0 , 4 , 5 ] ) ;
cmp ( frac ( 0.9 , 9 , false ) , [ 0 , 8 , 9 ] ) ;
cmp ( frac ( 1.0 , 9 , false ) , [ 0 , 1 , 1 ] ) ;
cmp ( frac ( 1.0 , 9 , true ) , [ 1 , 0 , 1 ] ) ;
cmp ( frac ( 1.7 , 9 , true ) , [ 1 , 5 , 7 ] ) ;
cmp ( frac ( 1.7 , 9 , false ) , [ 0 , 12 , 7 ] ) ;
} ) ;
} ) ;
xltestfiles . forEach ( function ( x ) {
var f = './test_files/' + x [ 0 ] ;
describe ( x [ 0 ] , function ( ) {
parsexl ( f , x [ 1 ] ) ;
} ) ;
} ) ;
} , { "./" : 1 , "assert" : 3 } ] , 3 : [ function ( require , module , exports ) {
2018-01-19 05:03:42 +00:00
( function ( global ) {
'use strict' ;
// compare and isBuffer taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js
// original notice:
/ * !
* The buffer module from node . js , for the browser .
*
* @ author Feross Aboukhadijeh < feross @ feross . org > < http : //feross.org>
* @ license MIT
* /
function compare ( a , b ) {
if ( a === b ) {
return 0 ;
}
var x = a . length ;
var y = b . length ;
for ( var i = 0 , len = Math . min ( x , y ) ; i < len ; ++ i ) {
if ( a [ i ] !== b [ i ] ) {
x = a [ i ] ;
y = b [ i ] ;
break ;
}
}
if ( x < y ) {
return - 1 ;
}
if ( y < x ) {
return 1 ;
}
return 0 ;
}
function isBuffer ( b ) {
if ( global . Buffer && typeof global . Buffer . isBuffer === 'function' ) {
return global . Buffer . isBuffer ( b ) ;
}
return ! ! ( b != null && b . _isBuffer ) ;
}
// based on node assert, original notice:
2017-03-29 07:08:09 +00:00
// http://wiki.commonjs.org/wiki/Unit_Testing/1.0
//
// THIS IS NOT TESTED NOR LIKELY TO WORK OUTSIDE V8!
//
// Originally from narwhal.js (http://narwhaljs.org)
// Copyright (c) 2009 Thomas Robinson <280north.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the 'Software'), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
var util = require ( 'util/' ) ;
var hasOwn = Object . prototype . hasOwnProperty ;
2018-01-19 05:03:42 +00:00
var pSlice = Array . prototype . slice ;
var functionsHaveNames = ( function ( ) {
return function foo ( ) { } . name === 'foo' ;
} ( ) ) ;
function pToString ( obj ) {
return Object . prototype . toString . call ( obj ) ;
}
function isView ( arrbuf ) {
if ( isBuffer ( arrbuf ) ) {
return false ;
}
if ( typeof global . ArrayBuffer !== 'function' ) {
return false ;
}
if ( typeof ArrayBuffer . isView === 'function' ) {
return ArrayBuffer . isView ( arrbuf ) ;
}
if ( ! arrbuf ) {
return false ;
}
if ( arrbuf instanceof DataView ) {
return true ;
}
if ( arrbuf . buffer && arrbuf . buffer instanceof ArrayBuffer ) {
return true ;
}
return false ;
}
2017-03-29 07:08:09 +00:00
// 1. The assert module provides functions that throw
// AssertionError's when particular conditions are not met. The
// assert module must conform to the following interface.
var assert = module . exports = ok ;
// 2. The AssertionError is defined in assert.
// new assert.AssertionError({ message: message,
// actual: actual,
// expected: expected })
2018-01-19 05:03:42 +00:00
var regex = /\s*function\s+([^\(\s]*)\s*/ ;
// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
function getName ( func ) {
if ( ! util . isFunction ( func ) ) {
return ;
}
if ( functionsHaveNames ) {
return func . name ;
}
var str = func . toString ( ) ;
var match = str . match ( regex ) ;
return match && match [ 1 ] ;
}
2017-03-29 07:08:09 +00:00
assert . AssertionError = function AssertionError ( options ) {
this . name = 'AssertionError' ;
this . actual = options . actual ;
this . expected = options . expected ;
this . operator = options . operator ;
if ( options . message ) {
this . message = options . message ;
this . generatedMessage = false ;
} else {
this . message = getMessage ( this ) ;
this . generatedMessage = true ;
}
var stackStartFunction = options . stackStartFunction || fail ;
if ( Error . captureStackTrace ) {
Error . captureStackTrace ( this , stackStartFunction ) ;
2018-01-19 05:03:42 +00:00
} else {
2017-03-29 07:08:09 +00:00
// non v8 browsers so we can have a stacktrace
var err = new Error ( ) ;
if ( err . stack ) {
var out = err . stack ;
// try to strip useless frames
2018-01-19 05:03:42 +00:00
var fn _name = getName ( stackStartFunction ) ;
2017-03-29 07:08:09 +00:00
var idx = out . indexOf ( '\n' + fn _name ) ;
if ( idx >= 0 ) {
// once we have located the function frame
// we need to strip out everything before it (and its line)
var next _line = out . indexOf ( '\n' , idx + 1 ) ;
out = out . substring ( next _line + 1 ) ;
}
this . stack = out ;
}
}
} ;
// assert.AssertionError instanceof Error
util . inherits ( assert . AssertionError , Error ) ;
function truncate ( s , n ) {
2018-01-19 05:03:42 +00:00
if ( typeof s === 'string' ) {
2017-03-29 07:08:09 +00:00
return s . length < n ? s : s . slice ( 0 , n ) ;
} else {
return s ;
}
}
2018-01-19 05:03:42 +00:00
function inspect ( something ) {
if ( functionsHaveNames || ! util . isFunction ( something ) ) {
return util . inspect ( something ) ;
}
var rawname = getName ( something ) ;
var name = rawname ? ': ' + rawname : '' ;
return '[Function' + name + ']' ;
}
2017-03-29 07:08:09 +00:00
function getMessage ( self ) {
2018-01-19 05:03:42 +00:00
return truncate ( inspect ( self . actual ) , 128 ) + ' ' +
2017-03-29 07:08:09 +00:00
self . operator + ' ' +
2018-01-19 05:03:42 +00:00
truncate ( inspect ( self . expected ) , 128 ) ;
2017-03-29 07:08:09 +00:00
}
// At present only the three keys mentioned above are used and
// understood by the spec. Implementations or sub modules can pass
// other keys to the AssertionError's constructor - they will be
// ignored.
// 3. All of the following functions must throw an AssertionError
// when a corresponding condition is not met, with a message that
// may be undefined if not provided. All assertion methods provide
// both the actual and expected values to the assertion error for
// display purposes.
function fail ( actual , expected , message , operator , stackStartFunction ) {
throw new assert . AssertionError ( {
message : message ,
actual : actual ,
expected : expected ,
operator : operator ,
stackStartFunction : stackStartFunction
} ) ;
}
// EXTENSION! allows for well behaved errors defined elsewhere.
assert . fail = fail ;
// 4. Pure assertion tests whether a value is truthy, as determined
// by !!guard.
// assert.ok(guard, message_opt);
// This statement is equivalent to assert.equal(true, !!guard,
// message_opt);. To test strictly for the value true, use
// assert.strictEqual(true, guard, message_opt);.
function ok ( value , message ) {
if ( ! value ) fail ( value , true , message , '==' , assert . ok ) ;
}
assert . ok = ok ;
// 5. The equality assertion tests shallow, coercive equality with
// ==.
// assert.equal(actual, expected, message_opt);
assert . equal = function equal ( actual , expected , message ) {
if ( actual != expected ) fail ( actual , expected , message , '==' , assert . equal ) ;
} ;
// 6. The non-equality assertion tests for whether two objects are not equal
// with != assert.notEqual(actual, expected, message_opt);
assert . notEqual = function notEqual ( actual , expected , message ) {
if ( actual == expected ) {
fail ( actual , expected , message , '!=' , assert . notEqual ) ;
}
} ;
// 7. The equivalence assertion tests a deep equality relation.
// assert.deepEqual(actual, expected, message_opt);
assert . deepEqual = function deepEqual ( actual , expected , message ) {
2018-01-19 05:03:42 +00:00
if ( ! _deepEqual ( actual , expected , false ) ) {
2017-03-29 07:08:09 +00:00
fail ( actual , expected , message , 'deepEqual' , assert . deepEqual ) ;
}
} ;
2018-01-19 05:03:42 +00:00
assert . deepStrictEqual = function deepStrictEqual ( actual , expected , message ) {
if ( ! _deepEqual ( actual , expected , true ) ) {
fail ( actual , expected , message , 'deepStrictEqual' , assert . deepStrictEqual ) ;
}
} ;
function _deepEqual ( actual , expected , strict , memos ) {
2017-03-29 07:08:09 +00:00
// 7.1. All identical values are equivalent, as determined by ===.
if ( actual === expected ) {
return true ;
2018-01-19 05:03:42 +00:00
} else if ( isBuffer ( actual ) && isBuffer ( expected ) ) {
return compare ( actual , expected ) === 0 ;
2017-03-29 07:08:09 +00:00
// 7.2. If the expected value is a Date object, the actual value is
// equivalent if it is also a Date object that refers to the same time.
} else if ( util . isDate ( actual ) && util . isDate ( expected ) ) {
return actual . getTime ( ) === expected . getTime ( ) ;
// 7.3 If the expected value is a RegExp object, the actual value is
// equivalent if it is also a RegExp object with the same source and
// properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
} else if ( util . isRegExp ( actual ) && util . isRegExp ( expected ) ) {
return actual . source === expected . source &&
actual . global === expected . global &&
actual . multiline === expected . multiline &&
actual . lastIndex === expected . lastIndex &&
actual . ignoreCase === expected . ignoreCase ;
// 7.4. Other pairs that do not both pass typeof value == 'object',
// equivalence is determined by ==.
2018-01-19 05:03:42 +00:00
} else if ( ( actual === null || typeof actual !== 'object' ) &&
( expected === null || typeof expected !== 'object' ) ) {
return strict ? actual === expected : actual == expected ;
// If both values are instances of typed arrays, wrap their underlying
// ArrayBuffers in a Buffer each to increase performance
// This optimization requires the arrays to have the same type as checked by
// Object.prototype.toString (aka pToString). Never perform binary
// comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
// bit patterns are not identical.
} else if ( isView ( actual ) && isView ( expected ) &&
pToString ( actual ) === pToString ( expected ) &&
! ( actual instanceof Float32Array ||
actual instanceof Float64Array ) ) {
return compare ( new Uint8Array ( actual . buffer ) ,
new Uint8Array ( expected . buffer ) ) === 0 ;
2017-03-29 07:08:09 +00:00
// 7.5 For all other Object pairs, including Array objects, equivalence is
// determined by having the same number of owned properties (as verified
// with Object.prototype.hasOwnProperty.call), the same set of keys
// (although not necessarily the same order), equivalent values for every
// corresponding key, and an identical 'prototype' property. Note: this
// accounts for both named and indexed properties on Arrays.
2018-01-19 05:03:42 +00:00
} else if ( isBuffer ( actual ) !== isBuffer ( expected ) ) {
return false ;
2017-03-29 07:08:09 +00:00
} else {
2018-01-19 05:03:42 +00:00
memos = memos || { actual : [ ] , expected : [ ] } ;
var actualIndex = memos . actual . indexOf ( actual ) ;
if ( actualIndex !== - 1 ) {
if ( actualIndex === memos . expected . indexOf ( expected ) ) {
return true ;
}
}
memos . actual . push ( actual ) ;
memos . expected . push ( expected ) ;
return objEquiv ( actual , expected , strict , memos ) ;
2017-03-29 07:08:09 +00:00
}
}
function isArguments ( object ) {
return Object . prototype . toString . call ( object ) == '[object Arguments]' ;
}
2018-01-19 05:03:42 +00:00
function objEquiv ( a , b , strict , actualVisitedObjects ) {
if ( a === null || a === undefined || b === null || b === undefined )
2017-03-29 07:08:09 +00:00
return false ;
// if one is a primitive, the other must be same
2018-01-19 05:03:42 +00:00
if ( util . isPrimitive ( a ) || util . isPrimitive ( b ) )
2017-03-29 07:08:09 +00:00
return a === b ;
2018-01-19 05:03:42 +00:00
if ( strict && Object . getPrototypeOf ( a ) !== Object . getPrototypeOf ( b ) )
return false ;
var aIsArgs = isArguments ( a ) ;
var bIsArgs = isArguments ( b ) ;
2017-03-29 07:08:09 +00:00
if ( ( aIsArgs && ! bIsArgs ) || ( ! aIsArgs && bIsArgs ) )
return false ;
if ( aIsArgs ) {
a = pSlice . call ( a ) ;
b = pSlice . call ( b ) ;
2018-01-19 05:03:42 +00:00
return _deepEqual ( a , b , strict ) ;
2017-03-29 07:08:09 +00:00
}
2018-01-19 05:03:42 +00:00
var ka = objectKeys ( a ) ;
var kb = objectKeys ( b ) ;
var key , i ;
2017-03-29 07:08:09 +00:00
// having the same number of owned properties (keys incorporates
// hasOwnProperty)
2018-01-19 05:03:42 +00:00
if ( ka . length !== kb . length )
2017-03-29 07:08:09 +00:00
return false ;
//the same set of keys (although not necessarily the same order),
ka . sort ( ) ;
kb . sort ( ) ;
//~~~cheap key test
for ( i = ka . length - 1 ; i >= 0 ; i -- ) {
2018-01-19 05:03:42 +00:00
if ( ka [ i ] !== kb [ i ] )
2017-03-29 07:08:09 +00:00
return false ;
}
//equivalent values for every corresponding key, and
//~~~possibly expensive deep test
for ( i = ka . length - 1 ; i >= 0 ; i -- ) {
key = ka [ i ] ;
2018-01-19 05:03:42 +00:00
if ( ! _deepEqual ( a [ key ] , b [ key ] , strict , actualVisitedObjects ) )
return false ;
2017-03-29 07:08:09 +00:00
}
return true ;
}
// 8. The non-equivalence assertion tests for any deep inequality.
// assert.notDeepEqual(actual, expected, message_opt);
assert . notDeepEqual = function notDeepEqual ( actual , expected , message ) {
2018-01-19 05:03:42 +00:00
if ( _deepEqual ( actual , expected , false ) ) {
2017-03-29 07:08:09 +00:00
fail ( actual , expected , message , 'notDeepEqual' , assert . notDeepEqual ) ;
}
} ;
2018-01-19 05:03:42 +00:00
assert . notDeepStrictEqual = notDeepStrictEqual ;
function notDeepStrictEqual ( actual , expected , message ) {
if ( _deepEqual ( actual , expected , true ) ) {
fail ( actual , expected , message , 'notDeepStrictEqual' , notDeepStrictEqual ) ;
}
}
2017-03-29 07:08:09 +00:00
// 9. The strict equality assertion tests strict equality, as determined by ===.
// assert.strictEqual(actual, expected, message_opt);
assert . strictEqual = function strictEqual ( actual , expected , message ) {
if ( actual !== expected ) {
fail ( actual , expected , message , '===' , assert . strictEqual ) ;
}
} ;
// 10. The strict non-equality assertion tests for strict inequality, as
// determined by !==. assert.notStrictEqual(actual, expected, message_opt);
assert . notStrictEqual = function notStrictEqual ( actual , expected , message ) {
if ( actual === expected ) {
fail ( actual , expected , message , '!==' , assert . notStrictEqual ) ;
}
} ;
function expectedException ( actual , expected ) {
if ( ! actual || ! expected ) {
return false ;
}
if ( Object . prototype . toString . call ( expected ) == '[object RegExp]' ) {
return expected . test ( actual ) ;
}
2018-01-19 05:03:42 +00:00
try {
if ( actual instanceof expected ) {
return true ;
}
} catch ( e ) {
// Ignore. The instanceof check doesn't work for arrow functions.
}
if ( Error . isPrototypeOf ( expected ) ) {
return false ;
}
return expected . call ( { } , actual ) === true ;
}
function _tryBlock ( block ) {
var error ;
try {
block ( ) ;
} catch ( e ) {
error = e ;
}
return error ;
2017-03-29 07:08:09 +00:00
}
function _throws ( shouldThrow , block , expected , message ) {
var actual ;
2018-01-19 05:03:42 +00:00
if ( typeof block !== 'function' ) {
throw new TypeError ( '"block" argument must be a function' ) ;
}
if ( typeof expected === 'string' ) {
2017-03-29 07:08:09 +00:00
message = expected ;
expected = null ;
}
2018-01-19 05:03:42 +00:00
actual = _tryBlock ( block ) ;
2017-03-29 07:08:09 +00:00
message = ( expected && expected . name ? ' (' + expected . name + ').' : '.' ) +
( message ? ' ' + message : '.' ) ;
if ( shouldThrow && ! actual ) {
fail ( actual , expected , 'Missing expected exception' + message ) ;
}
2018-01-19 05:03:42 +00:00
var userProvidedMessage = typeof message === 'string' ;
var isUnwantedException = ! shouldThrow && util . isError ( actual ) ;
var isUnexpectedException = ! shouldThrow && actual && ! expected ;
if ( ( isUnwantedException &&
userProvidedMessage &&
expectedException ( actual , expected ) ) ||
isUnexpectedException ) {
2017-03-29 07:08:09 +00:00
fail ( actual , expected , 'Got unwanted exception' + message ) ;
}
if ( ( shouldThrow && actual && expected &&
! expectedException ( actual , expected ) ) || ( ! shouldThrow && actual ) ) {
throw actual ;
}
}
// 11. Expected to throw an error:
// assert.throws(block, Error_opt, message_opt);
assert . throws = function ( block , /*optional*/ error , /*optional*/ message ) {
2018-01-19 05:03:42 +00:00
_throws ( true , block , error , message ) ;
2017-03-29 07:08:09 +00:00
} ;
// EXTENSION! This is annoying to write outside this module.
2018-01-19 05:03:42 +00:00
assert . doesNotThrow = function ( block , /*optional*/ error , /*optional*/ message ) {
_throws ( false , block , error , message ) ;
2017-03-29 07:08:09 +00:00
} ;
2018-01-19 05:03:42 +00:00
assert . ifError = function ( err ) { if ( err ) throw err ; } ;
2017-03-29 07:08:09 +00:00
var objectKeys = Object . keys || function ( obj ) {
var keys = [ ] ;
for ( var key in obj ) {
if ( hasOwn . call ( obj , key ) ) keys . push ( key ) ;
}
return keys ;
} ;
2018-01-19 05:03:42 +00:00
} ) . call ( this , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
2017-03-29 07:08:09 +00:00
} , { "util/" : 7 } ] , 4 : [ function ( require , module , exports ) {
// shim for using process in browser
var process = module . exports = { } ;
// cached from whatever global is present so that test runners that stub it
// don't break things. But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals. It's inside a
// function because try/catches deoptimize in certain engines.
var cachedSetTimeout ;
var cachedClearTimeout ;
function defaultSetTimout ( ) {
throw new Error ( 'setTimeout has not been defined' ) ;
}
function defaultClearTimeout ( ) {
throw new Error ( 'clearTimeout has not been defined' ) ;
}
( function ( ) {
try {
if ( typeof setTimeout === 'function' ) {
cachedSetTimeout = setTimeout ;
} else {
cachedSetTimeout = defaultSetTimout ;
}
} catch ( e ) {
cachedSetTimeout = defaultSetTimout ;
}
try {
if ( typeof clearTimeout === 'function' ) {
cachedClearTimeout = clearTimeout ;
} else {
cachedClearTimeout = defaultClearTimeout ;
}
} catch ( e ) {
cachedClearTimeout = defaultClearTimeout ;
}
} ( ) )
function runTimeout ( fun ) {
if ( cachedSetTimeout === setTimeout ) {
//normal enviroments in sane situations
return setTimeout ( fun , 0 ) ;
}
// if setTimeout wasn't available but was latter defined
if ( ( cachedSetTimeout === defaultSetTimout || ! cachedSetTimeout ) && setTimeout ) {
cachedSetTimeout = setTimeout ;
return setTimeout ( fun , 0 ) ;
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout ( fun , 0 ) ;
} catch ( e ) {
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout . call ( null , fun , 0 ) ;
} catch ( e ) {
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout . call ( this , fun , 0 ) ;
}
}
}
function runClearTimeout ( marker ) {
if ( cachedClearTimeout === clearTimeout ) {
//normal enviroments in sane situations
return clearTimeout ( marker ) ;
}
// if clearTimeout wasn't available but was latter defined
if ( ( cachedClearTimeout === defaultClearTimeout || ! cachedClearTimeout ) && clearTimeout ) {
cachedClearTimeout = clearTimeout ;
return clearTimeout ( marker ) ;
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout ( marker ) ;
} catch ( e ) {
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout . call ( null , marker ) ;
} catch ( e ) {
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout . call ( this , marker ) ;
}
}
}
var queue = [ ] ;
var draining = false ;
var currentQueue ;
var queueIndex = - 1 ;
function cleanUpNextTick ( ) {
if ( ! draining || ! currentQueue ) {
return ;
}
draining = false ;
if ( currentQueue . length ) {
queue = currentQueue . concat ( queue ) ;
} else {
queueIndex = - 1 ;
}
if ( queue . length ) {
drainQueue ( ) ;
}
}
function drainQueue ( ) {
if ( draining ) {
return ;
}
var timeout = runTimeout ( cleanUpNextTick ) ;
draining = true ;
var len = queue . length ;
while ( len ) {
currentQueue = queue ;
queue = [ ] ;
while ( ++ queueIndex < len ) {
if ( currentQueue ) {
currentQueue [ queueIndex ] . run ( ) ;
}
}
queueIndex = - 1 ;
len = queue . length ;
}
currentQueue = null ;
draining = false ;
runClearTimeout ( timeout ) ;
}
process . nextTick = function ( fun ) {
var args = new Array ( arguments . length - 1 ) ;
if ( arguments . length > 1 ) {
for ( var i = 1 ; i < arguments . length ; i ++ ) {
args [ i - 1 ] = arguments [ i ] ;
}
}
queue . push ( new Item ( fun , args ) ) ;
if ( queue . length === 1 && ! draining ) {
runTimeout ( drainQueue ) ;
}
} ;
// v8 likes predictible objects
function Item ( fun , array ) {
this . fun = fun ;
this . array = array ;
}
Item . prototype . run = function ( ) {
this . fun . apply ( null , this . array ) ;
} ;
process . title = 'browser' ;
process . browser = true ;
process . env = { } ;
process . argv = [ ] ;
process . version = '' ; // empty string to avoid regexp issues
process . versions = { } ;
function noop ( ) { }
process . on = noop ;
process . addListener = noop ;
process . once = noop ;
process . off = noop ;
process . removeListener = noop ;
process . removeAllListeners = noop ;
process . emit = noop ;
2018-01-19 05:03:42 +00:00
process . prependListener = noop ;
process . prependOnceListener = noop ;
process . listeners = function ( name ) { return [ ] }
2017-03-29 07:08:09 +00:00
process . binding = function ( name ) {
throw new Error ( 'process.binding is not supported' ) ;
} ;
process . cwd = function ( ) { return '/' } ;
process . chdir = function ( dir ) {
throw new Error ( 'process.chdir is not supported' ) ;
} ;
process . umask = function ( ) { return 0 ; } ;
} , { } ] , 5 : [ function ( require , module , exports ) {
if ( typeof Object . create === 'function' ) {
// implementation from standard node.js 'util' module
module . exports = function inherits ( ctor , superCtor ) {
ctor . super _ = superCtor
ctor . prototype = Object . create ( superCtor . prototype , {
constructor : {
value : ctor ,
enumerable : false ,
writable : true ,
configurable : true
}
} ) ;
} ;
} else {
// old school shim for old browsers
module . exports = function inherits ( ctor , superCtor ) {
ctor . super _ = superCtor
var TempCtor = function ( ) { }
TempCtor . prototype = superCtor . prototype
ctor . prototype = new TempCtor ( )
ctor . prototype . constructor = ctor
}
}
} , { } ] , 6 : [ function ( require , module , exports ) {
module . exports = function isBuffer ( arg ) {
return arg && typeof arg === 'object'
&& typeof arg . copy === 'function'
&& typeof arg . fill === 'function'
&& typeof arg . readUInt8 === 'function' ;
}
} , { } ] , 7 : [ function ( require , module , exports ) {
( function ( process , global ) {
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var formatRegExp = /%[sdj%]/g ;
exports . format = function ( f ) {
if ( ! isString ( f ) ) {
var objects = [ ] ;
for ( var i = 0 ; i < arguments . length ; i ++ ) {
objects . push ( inspect ( arguments [ i ] ) ) ;
}
return objects . join ( ' ' ) ;
}
var i = 1 ;
var args = arguments ;
var len = args . length ;
var str = String ( f ) . replace ( formatRegExp , function ( x ) {
if ( x === '%%' ) return '%' ;
if ( i >= len ) return x ;
switch ( x ) {
case '%s' : return String ( args [ i ++ ] ) ;
case '%d' : return Number ( args [ i ++ ] ) ;
case '%j' :
try {
return JSON . stringify ( args [ i ++ ] ) ;
} catch ( _ ) {
return '[Circular]' ;
}
default :
return x ;
}
} ) ;
for ( var x = args [ i ] ; i < len ; x = args [ ++ i ] ) {
if ( isNull ( x ) || ! isObject ( x ) ) {
str += ' ' + x ;
} else {
str += ' ' + inspect ( x ) ;
}
}
return str ;
} ;
// Mark that a method should not be used.
// Returns a modified function which warns once by default.
// If --no-deprecation is set, then it is a no-op.
exports . deprecate = function ( fn , msg ) {
// Allow for deprecating things in the process of starting up.
if ( isUndefined ( global . process ) ) {
return function ( ) {
return exports . deprecate ( fn , msg ) . apply ( this , arguments ) ;
} ;
}
if ( process . noDeprecation === true ) {
return fn ;
}
var warned = false ;
function deprecated ( ) {
if ( ! warned ) {
if ( process . throwDeprecation ) {
throw new Error ( msg ) ;
} else if ( process . traceDeprecation ) {
console . trace ( msg ) ;
} else {
console . error ( msg ) ;
}
warned = true ;
}
return fn . apply ( this , arguments ) ;
}
return deprecated ;
} ;
var debugs = { } ;
var debugEnviron ;
exports . debuglog = function ( set ) {
if ( isUndefined ( debugEnviron ) )
debugEnviron = process . env . NODE _DEBUG || '' ;
set = set . toUpperCase ( ) ;
if ( ! debugs [ set ] ) {
if ( new RegExp ( '\\b' + set + '\\b' , 'i' ) . test ( debugEnviron ) ) {
var pid = process . pid ;
debugs [ set ] = function ( ) {
var msg = exports . format . apply ( exports , arguments ) ;
console . error ( '%s %d: %s' , set , pid , msg ) ;
} ;
} else {
debugs [ set ] = function ( ) { } ;
}
}
return debugs [ set ] ;
} ;
/ * *
* Echos the value of a value . Trys to print the value out
* in the best way possible given the different types .
*
* @ param { Object } obj The object to print out .
* @ param { Object } opts Optional options object that alters the output .
* /
/* legacy: obj, showHidden, depth, colors*/
function inspect ( obj , opts ) {
// default options
var ctx = {
seen : [ ] ,
stylize : stylizeNoColor
} ;
// legacy...
if ( arguments . length >= 3 ) ctx . depth = arguments [ 2 ] ;
if ( arguments . length >= 4 ) ctx . colors = arguments [ 3 ] ;
if ( isBoolean ( opts ) ) {
// legacy...
ctx . showHidden = opts ;
} else if ( opts ) {
// got an "options" object
exports . _extend ( ctx , opts ) ;
}
// set default options
if ( isUndefined ( ctx . showHidden ) ) ctx . showHidden = false ;
if ( isUndefined ( ctx . depth ) ) ctx . depth = 2 ;
if ( isUndefined ( ctx . colors ) ) ctx . colors = false ;
if ( isUndefined ( ctx . customInspect ) ) ctx . customInspect = true ;
if ( ctx . colors ) ctx . stylize = stylizeWithColor ;
return formatValue ( ctx , obj , ctx . depth ) ;
}
exports . inspect = inspect ;
// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
inspect . colors = {
'bold' : [ 1 , 22 ] ,
'italic' : [ 3 , 23 ] ,
'underline' : [ 4 , 24 ] ,
'inverse' : [ 7 , 27 ] ,
'white' : [ 37 , 39 ] ,
'grey' : [ 90 , 39 ] ,
'black' : [ 30 , 39 ] ,
'blue' : [ 34 , 39 ] ,
'cyan' : [ 36 , 39 ] ,
'green' : [ 32 , 39 ] ,
'magenta' : [ 35 , 39 ] ,
'red' : [ 31 , 39 ] ,
'yellow' : [ 33 , 39 ]
} ;
// Don't use 'blue' not visible on cmd.exe
inspect . styles = {
'special' : 'cyan' ,
'number' : 'yellow' ,
'boolean' : 'yellow' ,
'undefined' : 'grey' ,
'null' : 'bold' ,
'string' : 'green' ,
'date' : 'magenta' ,
// "name": intentionally not styling
'regexp' : 'red'
} ;
function stylizeWithColor ( str , styleType ) {
var style = inspect . styles [ styleType ] ;
if ( style ) {
return '\u001b[' + inspect . colors [ style ] [ 0 ] + 'm' + str +
'\u001b[' + inspect . colors [ style ] [ 1 ] + 'm' ;
} else {
return str ;
}
}
function stylizeNoColor ( str , styleType ) {
return str ;
}
function arrayToHash ( array ) {
var hash = { } ;
array . forEach ( function ( val , idx ) {
hash [ val ] = true ;
} ) ;
return hash ;
}
function formatValue ( ctx , value , recurseTimes ) {
// Provide a hook for user-specified inspect functions.
// Check that value is an object with an inspect function on it
if ( ctx . customInspect &&
value &&
isFunction ( value . inspect ) &&
// Filter out the util module, it's inspect function is special
value . inspect !== exports . inspect &&
// Also filter out any prototype objects using the circular check.
! ( value . constructor && value . constructor . prototype === value ) ) {
var ret = value . inspect ( recurseTimes , ctx ) ;
if ( ! isString ( ret ) ) {
ret = formatValue ( ctx , ret , recurseTimes ) ;
}
return ret ;
}
// Primitive types cannot have properties
var primitive = formatPrimitive ( ctx , value ) ;
if ( primitive ) {
return primitive ;
}
// Look up the keys of the object.
var keys = Object . keys ( value ) ;
var visibleKeys = arrayToHash ( keys ) ;
if ( ctx . showHidden ) {
keys = Object . getOwnPropertyNames ( value ) ;
}
// IE doesn't make error fields non-enumerable
// http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
if ( isError ( value )
&& ( keys . indexOf ( 'message' ) >= 0 || keys . indexOf ( 'description' ) >= 0 ) ) {
return formatError ( value ) ;
}
// Some type of object without properties can be shortcutted.
if ( keys . length === 0 ) {
if ( isFunction ( value ) ) {
var name = value . name ? ': ' + value . name : '' ;
return ctx . stylize ( '[Function' + name + ']' , 'special' ) ;
}
if ( isRegExp ( value ) ) {
return ctx . stylize ( RegExp . prototype . toString . call ( value ) , 'regexp' ) ;
}
if ( isDate ( value ) ) {
return ctx . stylize ( Date . prototype . toString . call ( value ) , 'date' ) ;
}
if ( isError ( value ) ) {
return formatError ( value ) ;
}
}
var base = '' , array = false , braces = [ '{' , '}' ] ;
// Make Array say that they are Array
if ( isArray ( value ) ) {
array = true ;
braces = [ '[' , ']' ] ;
}
// Make functions say that they are functions
if ( isFunction ( value ) ) {
var n = value . name ? ': ' + value . name : '' ;
base = ' [Function' + n + ']' ;
}
// Make RegExps say that they are RegExps
if ( isRegExp ( value ) ) {
base = ' ' + RegExp . prototype . toString . call ( value ) ;
}
// Make dates with properties first say the date
if ( isDate ( value ) ) {
base = ' ' + Date . prototype . toUTCString . call ( value ) ;
}
// Make error with message first say the error
if ( isError ( value ) ) {
base = ' ' + formatError ( value ) ;
}
if ( keys . length === 0 && ( ! array || value . length == 0 ) ) {
return braces [ 0 ] + base + braces [ 1 ] ;
}
if ( recurseTimes < 0 ) {
if ( isRegExp ( value ) ) {
return ctx . stylize ( RegExp . prototype . toString . call ( value ) , 'regexp' ) ;
} else {
return ctx . stylize ( '[Object]' , 'special' ) ;
}
}
ctx . seen . push ( value ) ;
var output ;
if ( array ) {
output = formatArray ( ctx , value , recurseTimes , visibleKeys , keys ) ;
} else {
output = keys . map ( function ( key ) {
return formatProperty ( ctx , value , recurseTimes , visibleKeys , key , array ) ;
} ) ;
}
ctx . seen . pop ( ) ;
return reduceToSingleString ( output , base , braces ) ;
}
function formatPrimitive ( ctx , value ) {
if ( isUndefined ( value ) )
return ctx . stylize ( 'undefined' , 'undefined' ) ;
if ( isString ( value ) ) {
var simple = '\'' + JSON . stringify ( value ) . replace ( /^"|"$/g , '' )
. replace ( /'/g , "\\'" )
. replace ( /\\"/g , '"' ) + '\'' ;
return ctx . stylize ( simple , 'string' ) ;
}
if ( isNumber ( value ) )
return ctx . stylize ( '' + value , 'number' ) ;
if ( isBoolean ( value ) )
return ctx . stylize ( '' + value , 'boolean' ) ;
// For some reason typeof null is "object", so special case here.
if ( isNull ( value ) )
return ctx . stylize ( 'null' , 'null' ) ;
}
function formatError ( value ) {
return '[' + Error . prototype . toString . call ( value ) + ']' ;
}
function formatArray ( ctx , value , recurseTimes , visibleKeys , keys ) {
var output = [ ] ;
for ( var i = 0 , l = value . length ; i < l ; ++ i ) {
if ( hasOwnProperty ( value , String ( i ) ) ) {
output . push ( formatProperty ( ctx , value , recurseTimes , visibleKeys ,
String ( i ) , true ) ) ;
} else {
output . push ( '' ) ;
}
}
keys . forEach ( function ( key ) {
if ( ! key . match ( /^\d+$/ ) ) {
output . push ( formatProperty ( ctx , value , recurseTimes , visibleKeys ,
key , true ) ) ;
}
} ) ;
return output ;
}
function formatProperty ( ctx , value , recurseTimes , visibleKeys , key , array ) {
var name , str , desc ;
desc = Object . getOwnPropertyDescriptor ( value , key ) || { value : value [ key ] } ;
if ( desc . get ) {
if ( desc . set ) {
str = ctx . stylize ( '[Getter/Setter]' , 'special' ) ;
} else {
str = ctx . stylize ( '[Getter]' , 'special' ) ;
}
} else {
if ( desc . set ) {
str = ctx . stylize ( '[Setter]' , 'special' ) ;
}
}
if ( ! hasOwnProperty ( visibleKeys , key ) ) {
name = '[' + key + ']' ;
}
if ( ! str ) {
if ( ctx . seen . indexOf ( desc . value ) < 0 ) {
if ( isNull ( recurseTimes ) ) {
str = formatValue ( ctx , desc . value , null ) ;
} else {
str = formatValue ( ctx , desc . value , recurseTimes - 1 ) ;
}
if ( str . indexOf ( '\n' ) > - 1 ) {
if ( array ) {
str = str . split ( '\n' ) . map ( function ( line ) {
return ' ' + line ;
} ) . join ( '\n' ) . substr ( 2 ) ;
} else {
str = '\n' + str . split ( '\n' ) . map ( function ( line ) {
return ' ' + line ;
} ) . join ( '\n' ) ;
}
}
} else {
str = ctx . stylize ( '[Circular]' , 'special' ) ;
}
}
if ( isUndefined ( name ) ) {
if ( array && key . match ( /^\d+$/ ) ) {
return str ;
}
name = JSON . stringify ( '' + key ) ;
if ( name . match ( /^"([a-zA-Z_][a-zA-Z_0-9]*)"$/ ) ) {
name = name . substr ( 1 , name . length - 2 ) ;
name = ctx . stylize ( name , 'name' ) ;
} else {
name = name . replace ( /'/g , "\\'" )
. replace ( /\\"/g , '"' )
. replace ( /(^"|"$)/g , "'" ) ;
name = ctx . stylize ( name , 'string' ) ;
}
}
return name + ': ' + str ;
}
function reduceToSingleString ( output , base , braces ) {
var numLinesEst = 0 ;
var length = output . reduce ( function ( prev , cur ) {
numLinesEst ++ ;
if ( cur . indexOf ( '\n' ) >= 0 ) numLinesEst ++ ;
return prev + cur . replace ( /\u001b\[\d\d?m/g , '' ) . length + 1 ;
} , 0 ) ;
if ( length > 60 ) {
return braces [ 0 ] +
( base === '' ? '' : base + '\n ' ) +
' ' +
output . join ( ',\n ' ) +
' ' +
braces [ 1 ] ;
}
return braces [ 0 ] + base + ' ' + output . join ( ', ' ) + ' ' + braces [ 1 ] ;
}
// NOTE: These type checking functions intentionally don't use `instanceof`
// because it is fragile and can be easily faked with `Object.create()`.
function isArray ( ar ) {
return Array . isArray ( ar ) ;
}
exports . isArray = isArray ;
function isBoolean ( arg ) {
return typeof arg === 'boolean' ;
}
exports . isBoolean = isBoolean ;
function isNull ( arg ) {
return arg === null ;
}
exports . isNull = isNull ;
function isNullOrUndefined ( arg ) {
return arg == null ;
}
exports . isNullOrUndefined = isNullOrUndefined ;
function isNumber ( arg ) {
return typeof arg === 'number' ;
}
exports . isNumber = isNumber ;
function isString ( arg ) {
return typeof arg === 'string' ;
}
exports . isString = isString ;
function isSymbol ( arg ) {
return typeof arg === 'symbol' ;
}
exports . isSymbol = isSymbol ;
function isUndefined ( arg ) {
return arg === void 0 ;
}
exports . isUndefined = isUndefined ;
function isRegExp ( re ) {
return isObject ( re ) && objectToString ( re ) === '[object RegExp]' ;
}
exports . isRegExp = isRegExp ;
function isObject ( arg ) {
return typeof arg === 'object' && arg !== null ;
}
exports . isObject = isObject ;
function isDate ( d ) {
return isObject ( d ) && objectToString ( d ) === '[object Date]' ;
}
exports . isDate = isDate ;
function isError ( e ) {
return isObject ( e ) &&
( objectToString ( e ) === '[object Error]' || e instanceof Error ) ;
}
exports . isError = isError ;
function isFunction ( arg ) {
return typeof arg === 'function' ;
}
exports . isFunction = isFunction ;
function isPrimitive ( arg ) {
return arg === null ||
typeof arg === 'boolean' ||
typeof arg === 'number' ||
typeof arg === 'string' ||
typeof arg === 'symbol' || // ES6 symbol
typeof arg === 'undefined' ;
}
exports . isPrimitive = isPrimitive ;
exports . isBuffer = require ( './support/isBuffer' ) ;
function objectToString ( o ) {
return Object . prototype . toString . call ( o ) ;
}
function pad ( n ) {
return n < 10 ? '0' + n . toString ( 10 ) : n . toString ( 10 ) ;
}
var months = [ 'Jan' , 'Feb' , 'Mar' , 'Apr' , 'May' , 'Jun' , 'Jul' , 'Aug' , 'Sep' ,
'Oct' , 'Nov' , 'Dec' ] ;
// 26 Feb 16:19:34
function timestamp ( ) {
var d = new Date ( ) ;
var time = [ pad ( d . getHours ( ) ) ,
pad ( d . getMinutes ( ) ) ,
pad ( d . getSeconds ( ) ) ] . join ( ':' ) ;
return [ d . getDate ( ) , months [ d . getMonth ( ) ] , time ] . join ( ' ' ) ;
}
// log is just a thin wrapper to console.log that prepends a timestamp
exports . log = function ( ) {
console . log ( '%s - %s' , timestamp ( ) , exports . format . apply ( exports , arguments ) ) ;
} ;
/ * *
* Inherit the prototype methods from one constructor into another .
*
* The Function . prototype . inherits from lang . js rewritten as a standalone
* function ( not on Function . prototype ) . NOTE : If this file is to be loaded
* during bootstrapping this function needs to be rewritten using some native
* functions as prototype setup using normal JavaScript does not work as
* expected during bootstrapping ( see mirror . js in r114903 ) .
*
* @ param { function } ctor Constructor function which needs to inherit the
* prototype .
* @ param { function } superCtor Constructor function to inherit prototype from .
* /
exports . inherits = require ( 'inherits' ) ;
exports . _extend = function ( origin , add ) {
// Don't do anything if add isn't an object
if ( ! add || ! isObject ( add ) ) return origin ;
var keys = Object . keys ( add ) ;
var i = keys . length ;
while ( i -- ) {
origin [ keys [ i ] ] = add [ keys [ i ] ] ;
}
return origin ;
} ;
function hasOwnProperty ( obj , prop ) {
return Object . prototype . hasOwnProperty . call ( obj , prop ) ;
}
} ) . call ( this , require ( '_process' ) , typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : { } )
} , { "./support/isBuffer" : 6 , "_process" : 4 , "inherits" : 5 } ] } , { } , [ 2 ] ) ;