Comparing version 4.0.4 to 4.1.0
Before contribute something: | ||
Follow simple rules: | ||
- Not violate [DRY](http://programmer.97things.oreilly.com/wiki/index.php/Don%27t_Repeat_Yourself). | ||
- [Boy Scout Rule](http://programmer.97things.oreilly.com/wiki/index.php/The_Boy_Scout_Rule) needs to have been applied. | ||
1. Your code should look like all the other code - this project should look like it was written by one man, always. | ||
@@ -4,0 +9,0 @@ 2. If you want to propose something - just create an issue and describe your question with as much description as you can. |
var gulp = require('gulp'); | ||
var $ = require('gulp-load-plugins')({ lazy: false }); | ||
var $ = require('gulp-load-plugins')({lazy: false}); | ||
@@ -12,36 +12,35 @@ var source = require('vinyl-source-stream2'); | ||
var banner = ['/**', | ||
' * <%= pkg.name %> - <%= pkg.description %>', | ||
' * @version v<%= pkg.version %>', | ||
' * @author <%= pkg.author %>', | ||
' * @link <%= pkg.homepage %>', | ||
' * @license <%= pkg.license %>', | ||
' */', | ||
''].join('\n'); | ||
' * <%= pkg.name %> - <%= pkg.description %>', | ||
' * @version v<%= pkg.version %>', | ||
' * @author <%= pkg.author %>', | ||
' * @link <%= pkg.homepage %>', | ||
' * @license <%= pkg.license %>', | ||
' */', | ||
''].join('\n'); | ||
gulp.task('test', function() { | ||
return gulp.src('test/**/*.test.js', { read: false }) | ||
.pipe($.mocha({ | ||
reporter: 'mocha-better-spec-reporter' | ||
})); | ||
return gulp.src('test/**/*.test.js', {read: false}) | ||
.pipe($.mocha({ | ||
reporter: 'mocha-better-spec-reporter' | ||
})); | ||
}); | ||
gulp.task('script', function () { | ||
var bundleStream = browserify({ | ||
entries: './lib/should.js', | ||
builtins: ['util', 'assert'] | ||
}) | ||
.bundle({ | ||
insertGlobals: false, | ||
detectGlobals: false, | ||
standalone: 'Should' | ||
}); | ||
gulp.task('script', function() { | ||
var bundleStream = browserify({ | ||
entries: './lib/should.js', | ||
builtins: ['util', 'assert'], | ||
insertGlobals: false, | ||
detectGlobals: false, | ||
standalone: 'Should' | ||
}) | ||
.bundle(); | ||
return bundleStream | ||
.pipe(source('should.js')) | ||
.pipe($.header(banner, { pkg : pkg } )) | ||
.pipe(gulp.dest('./')) | ||
.pipe($.uglify()) | ||
.pipe($.header(banner, { pkg : pkg } )) | ||
.pipe($.rename('should.min.js')) | ||
.pipe(gulp.dest('./')); | ||
}); | ||
return bundleStream | ||
.pipe(source('should.js')) | ||
.pipe($.header(banner, {pkg: pkg})) | ||
.pipe(gulp.dest('./')) | ||
.pipe($.uglify()) | ||
.pipe($.header(banner, {pkg: pkg})) | ||
.pipe($.rename('should.min.js')) | ||
.pipe(gulp.dest('./')); | ||
}); |
@@ -0,1 +1,10 @@ | ||
4.1.0 / 2014-10-19 | ||
================== | ||
* As inspect function was moved to repo, refine how it show Dates (added millis via custom format) | ||
* Added warnings for potential shoot in the leg: eql non strict and should unwrapping primitive wrappers | ||
* Added possibility to disable any warnings via environment variable SHOULDJS_WARN and should.warn = false | ||
* Added new deep equality check function | ||
* Nested assertions can contribute to parent assertions own messages | ||
4.0.4 / 2014-06-09 | ||
@@ -2,0 +11,0 @@ ================== |
module.exports = require('./lib/should.js'); |
@@ -0,0 +0,0 @@ /*! |
@@ -0,0 +0,0 @@ /*! |
@@ -0,0 +0,0 @@ /*! |
@@ -0,0 +0,0 @@ /*! |
@@ -0,0 +0,0 @@ /*! |
@@ -8,2 +8,4 @@ /*! | ||
var eql = require('../eql'); | ||
var strictEql = require('should-equal'); | ||
var warn = require('../warn'); | ||
@@ -14,3 +16,7 @@ module.exports = function(should, Assertion) { | ||
this.assert(eql(val, this.obj)); | ||
var nonStrictResult = eql(val, this.obj); | ||
warn.nonStrictEql(should.warn && nonStrictResult !== strictEql(val, this.obj)); | ||
this.assert(nonStrictResult); | ||
}); | ||
@@ -24,3 +30,11 @@ | ||
/* | ||
Assertion.add('strictEql', function(val, description) { | ||
this.params = { operator: 'to equal', expected: val, showDiff: true, message: description }; | ||
this.assert(strictEql(val, this.obj)); | ||
}); | ||
*/ | ||
Assertion.alias('equal', 'exactly'); | ||
}; |
@@ -0,0 +0,0 @@ /*! |
@@ -14,3 +14,3 @@ /*! | ||
Assertion.add('match', function(other, description) { | ||
this.params = { operator: 'to match ' + i(other), message: description }; | ||
this.params = {operator: 'to match ' + i(other), message: description}; | ||
@@ -33,9 +33,9 @@ if(!eql(this.obj, other)) { | ||
if(other.exec(value)) matchedProps.push(util.formatProp(name)); | ||
else notMatchedProps.push(util.formatProp(name) + ' (' + i(value) +')'); | ||
else notMatchedProps.push(util.formatProp(name) + ' (' + i(value) + ')'); | ||
}, this); | ||
if(notMatchedProps.length) | ||
this.params.operator += '\n\tnot matched properties: ' + notMatchedProps.join(', '); | ||
this.params.operator += '\n not matched properties: ' + notMatchedProps.join(', '); | ||
if(matchedProps.length) | ||
this.params.operator += '\n\tmatched properties: ' + matchedProps.join(', '); | ||
this.params.operator += '\n matched properties: ' + matchedProps.join(', '); | ||
@@ -46,13 +46,7 @@ this.assert(notMatchedProps.length == 0); | ||
var res; | ||
try { | ||
res = other(this.obj); | ||
} catch(e) { | ||
if(e instanceof should.AssertionError) { | ||
this.params.operator += '\n\t' + e.message; | ||
} | ||
throw e; | ||
} | ||
res = other(this.obj); | ||
if(res instanceof Assertion) { | ||
this.params.operator += '\n\t' + res.getMessage(); | ||
this.params.operator += '\n ' + res.getMessage(); | ||
} | ||
@@ -65,3 +59,4 @@ | ||
} else if(util.isObject(other)) { // try to match properties (for Object and Array) | ||
notMatchedProps = []; matchedProps = []; | ||
notMatchedProps = []; | ||
matchedProps = []; | ||
@@ -82,5 +77,5 @@ util.forOwn(other, function(value, key) { | ||
if(notMatchedProps.length) | ||
this.params.operator += '\n\tnot matched properties: ' + notMatchedProps.join(', '); | ||
this.params.operator += '\n not matched properties: ' + notMatchedProps.join(', '); | ||
if(matchedProps.length) | ||
this.params.operator += '\n\tmatched properties: ' + matchedProps.join(', '); | ||
this.params.operator += '\n matched properties: ' + matchedProps.join(', '); | ||
@@ -95,3 +90,3 @@ this.assert(notMatchedProps.length == 0); | ||
Assertion.add('matchEach', function(other, description) { | ||
this.params = { operator: 'to match each ' + i(other), message: description }; | ||
this.params = {operator: 'to match each ' + i(other), message: description}; | ||
@@ -98,0 +93,0 @@ var f = other; |
@@ -17,3 +17,3 @@ /*! | ||
this.is.a.Number | ||
this.obj.should.be.a.Number | ||
.and.not.a.NaN | ||
@@ -20,0 +20,0 @@ .and.assert(!isFinite(this.obj)); |
@@ -19,3 +19,3 @@ /*! | ||
this.params = { | ||
operator:"to have enumerable property " + util.formatProp(name) | ||
operator: "to have enumerable property " + util.formatProp(name) | ||
}; | ||
@@ -25,4 +25,4 @@ | ||
if(arguments.length > 1){ | ||
this.params.operator += " equal to "+i(val); | ||
if(arguments.length > 1) { | ||
this.params.operator += " equal to " + i(val); | ||
this.assert(eql(val, this.obj[name])); | ||
@@ -74,5 +74,5 @@ } | ||
var operator = (props.length === 1 ? | ||
'to have property ' : 'to have '+(this.anyOne? 'any of ' : '')+'properties ') + props.join(', '); | ||
'to have property ' : 'to have ' + (this.anyOne ? 'any of ' : '') + 'properties ') + props.join(', '); | ||
this.params = { operator: operator }; | ||
this.params = {obj: this.formattedObj(), operator: operator}; | ||
@@ -104,5 +104,5 @@ //check that all properties presented | ||
operator = (props.length === 1 ? | ||
'to have property ' : 'to have '+(this.anyOne? 'any of ' : '')+'properties ') + props.join(', '); | ||
'to have property ' : 'to have ' + (this.anyOne ? 'any of ' : '') + 'properties ') + props.join(', '); | ||
this.params = { operator: operator }; | ||
this.params = {obj: this.formattedObj(), operator: operator}; | ||
@@ -125,3 +125,7 @@ //if there is no not matched values | ||
name = String(name); | ||
this.params = { operator: 'to have own property ' + util.formatProp(name), message: description }; | ||
this.params = { | ||
obj: this.formattedObj(), | ||
operator: 'to have own property ' + util.formatProp(name), | ||
message: description | ||
}; | ||
@@ -136,10 +140,10 @@ this.assert(hasOwnProperty.call(this.obj, name)); | ||
Assertion.add('empty', function() { | ||
this.params = { operator: 'to be empty' }; | ||
this.params = {operator: 'to be empty'}; | ||
if(util.isString(this.obj) || util.isArray(this.obj) || util.isArguments(this.obj)) { | ||
this.have.property('length', 0); | ||
this.obj.should.have.property('length', 0); | ||
} else { | ||
var obj = Object(this.obj); // wrap to reference for booleans and numbers | ||
for(var prop in obj) { | ||
this.have.not.ownProperty(prop); | ||
this.obj.should.not.ownProperty(prop); | ||
} | ||
@@ -151,3 +155,3 @@ } | ||
if(arguments.length > 1) keys = aSlice.call(arguments); | ||
else if(arguments.length === 1 && util.isString(keys)) keys = [ keys ]; | ||
else if(arguments.length === 1 && util.isString(keys)) keys = [keys]; | ||
else if(arguments.length === 0) keys = []; | ||
@@ -175,5 +179,5 @@ | ||
var verb = keys.length === 0 ? 'to be empty' : | ||
'to have ' + (keys.length === 1 ? 'key ' : 'keys '); | ||
'to have ' + (keys.length === 1 ? 'key ' : 'keys '); | ||
this.params = { operator: verb + keys.map(util.formatProp).join(', ')}; | ||
this.params = {operator: verb + keys.map(util.formatProp).join(', ')}; | ||
@@ -193,6 +197,6 @@ if(missingKeys.length > 0) | ||
if(arguments.length > 1) properties = aSlice.call(arguments); | ||
else if(arguments.length === 1 && util.isString(properties)) properties = [ properties ]; | ||
else if(arguments.length === 1 && util.isString(properties)) properties = [properties]; | ||
else if(arguments.length === 0) properties = []; | ||
var allProps = properties.map(util.formatProp); | ||
var allProps = properties.map(util.formatProp); | ||
@@ -207,3 +211,3 @@ properties = properties.map(String); | ||
while(currentProperty = properties.shift()) { | ||
this.params = { operator: 'to have property by path ' + allProps.join(', ') + ' - failed on ' + util.formatProp(currentProperty) }; | ||
this.params = {operator: 'to have property by path ' + allProps.join(', ') + ' - failed on ' + util.formatProp(currentProperty)}; | ||
obj = obj.have.property(currentProperty); | ||
@@ -213,3 +217,3 @@ foundProperties.push(currentProperty); | ||
this.params = { operator: 'to have property by path ' + allProps.join(', ') }; | ||
this.params = {obj: this.formattedObj(), operator: 'to have property by path ' + allProps.join(', ')}; | ||
@@ -216,0 +220,0 @@ this.obj = obj.obj; |
@@ -0,0 +0,0 @@ /*! |
@@ -0,0 +0,0 @@ /*! |
@@ -196,3 +196,3 @@ // Copyright Joyent, Inc. and other Node contributors. | ||
if (isDate(value)) { | ||
return ctx.stylize(Date.prototype.toString.call(value), 'date'); | ||
return ctx.stylize(formatDate(value), 'date'); | ||
} | ||
@@ -235,3 +235,3 @@ // now check the `raw` value to handle boxed primitives | ||
if (isDate(value)) { | ||
base = ' ' + Date.prototype.toUTCString.call(value); | ||
base = ' ' + formatDate(value); | ||
} | ||
@@ -348,3 +348,20 @@ | ||
function pad2Zero(n) { | ||
return n < 10 ? '0'+n: ''+n; | ||
} | ||
function pad3Zero(n) { | ||
return n < 100 ? '0' + pad2Zero(n): '' + n; | ||
} | ||
function formatDate( value) { | ||
var to = value.getTimezoneOffset(); | ||
var absTo = Math.abs(to); | ||
var hours = Math.floor(absTo / 60); | ||
var minutes = absTo - hours * 60; | ||
var tzFormat = 'GMT' + (to < 0 ? '+': '-') + pad2Zero(hours) + pad2Zero(minutes); | ||
return value.toLocaleDateString() + ' ' + value.toLocaleTimeString() + '.' + pad3Zero(value.getMilliseconds()) + ' ' + tzFormat; | ||
} | ||
function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { | ||
@@ -351,0 +368,0 @@ var name, str, desc; |
@@ -8,5 +8,5 @@ /*! | ||
var util = require('./util'), | ||
AssertionError = util.AssertionError, | ||
inspect = util.inspect; | ||
var util = require('./util'); | ||
var inspect = require('./inspect').inspect; | ||
var warn = require('./warn'); | ||
@@ -16,85 +16,22 @@ /** | ||
* @param obj | ||
* @returns {Assertion} | ||
* @returns {should.Assertion} | ||
*/ | ||
var should = function(obj) { | ||
return new Assertion(util.isWrapperType(obj) ? obj.valueOf() : obj); | ||
}; | ||
var should = function should(obj) { | ||
warn.staticShouldUnWrap(util.isWrapperType(obj) && should.warn); | ||
/** | ||
* Initialize a new `Assertion` with the given _obj_. | ||
* | ||
* @param {*} obj | ||
* @api private | ||
*/ | ||
var Assertion = should.Assertion = function Assertion(obj) { | ||
this.obj = obj; | ||
var unwrappedObj = util.isWrapperType(obj) ? obj.valueOf() : obj; | ||
return new should.Assertion(unwrappedObj, should.format); | ||
}; | ||
var envVarName = 'SHOULDJS_WARN'; | ||
var envVarResult = typeof process !== 'undefined' && process.env[envVarName] && process.env[envVarName] === 'true'; | ||
should.warn = typeof envVarResult == 'undefined' ? true: envVarResult; | ||
/** | ||
Way to extend Assertion function. It uses some logic | ||
to define only positive assertions and itself rule with negative assertion. | ||
should.AssertionError = require('./assertion-error'); | ||
should.Assertion = require('./assertion'); | ||
All actions happen in subcontext and this method take care about negation. | ||
Potentially we can add some more modifiers that does not depends from state of assertion. | ||
*/ | ||
Assertion.add = function(name, f, isGetter) { | ||
var prop = { enumerable: true }; | ||
prop[isGetter ? 'get' : 'value'] = function() { | ||
var context = new Assertion(this.obj); | ||
context.copy = context.copyIfMissing; | ||
context.anyOne = this.anyOne; | ||
try { | ||
f.apply(context, arguments); | ||
} catch(e) { | ||
//copy data from sub context to this | ||
this.copy(context); | ||
//check for fail | ||
if(e instanceof should.AssertionError) { | ||
//negative fail | ||
if(this.negate) { | ||
this.obj = context.obj; | ||
this.negate = false; | ||
return this; | ||
} | ||
this.assert(false); | ||
} | ||
// throw if it is another exception | ||
throw e; | ||
} | ||
//copy data from sub context to this | ||
this.copy(context); | ||
if(this.negate) { | ||
this.assert(false); | ||
} | ||
this.obj = context.obj; | ||
this.negate = false; | ||
return this; | ||
}; | ||
Object.defineProperty(Assertion.prototype, name, prop); | ||
should.format = function(value) { | ||
return inspect(value, {depth: null}); | ||
}; | ||
Assertion.alias = function(from, to) { | ||
var desc = Object.getOwnPropertyDescriptor(Assertion.prototype, from); | ||
if(!desc) throw new Error('Alias ' + from + ' -> ' + to + ' could not be created as ' + from + ' not defined'); | ||
Object.defineProperty(Assertion.prototype, to, desc); | ||
}; | ||
should.AssertionError = AssertionError; | ||
should.format = function (value) { | ||
if(util.isDate(value) && typeof value.inspect !== 'function') return value.toISOString(); //show millis in dates | ||
return inspect(value, { depth: null }); | ||
}; | ||
should.use = function(f) { | ||
f(this, Assertion); | ||
return this; | ||
}; | ||
/** | ||
@@ -105,3 +42,16 @@ * Expose should to external world. | ||
should.extend = function(propertyName, proto) { | ||
propertyName = propertyName || 'should'; | ||
proto = proto || Object.prototype; | ||
Object.defineProperty(proto, propertyName, { | ||
set: function() { | ||
}, | ||
get: function() { | ||
return should(util.isWrapperType(this) ? this.valueOf() : this); | ||
}, | ||
configurable: true | ||
}); | ||
}; | ||
/** | ||
@@ -112,72 +62,7 @@ * Expose api via `Object#should`. | ||
*/ | ||
should.extend('should', Object.prototype); | ||
Object.defineProperty(Object.prototype, 'should', { | ||
set: function() { | ||
}, | ||
get: function() { | ||
return should(this); | ||
}, | ||
configurable: true | ||
}); | ||
Assertion.prototype = { | ||
constructor: Assertion, | ||
assert: function(expr) { | ||
if(expr) return this; | ||
var params = this.params; | ||
var msg = params.message, generatedMessage = false; | ||
if(!msg) { | ||
msg = this.getMessage(); | ||
generatedMessage = true; | ||
} | ||
var err = new AssertionError({ | ||
message: msg, actual: this.obj, expected: params.expected, stackStartFunction: this.assert | ||
}); | ||
err.showDiff = params.showDiff; | ||
err.operator = params.operator; | ||
err.generatedMessage = generatedMessage; | ||
throw err; | ||
}, | ||
getMessage: function() { | ||
return 'expected ' + ('obj' in this.params ? this.params.obj: should.format(this.obj)) + (this.negate ? ' not ': ' ') + | ||
this.params.operator + ('expected' in this.params ? ' ' + should.format(this.params.expected) : ''); | ||
}, | ||
copy: function(other) { | ||
this.params = other.params; | ||
}, | ||
copyIfMissing: function(other) { | ||
if(!this.params) this.params = other.params; | ||
}, | ||
/** | ||
* Negation modifier. | ||
* | ||
* @api public | ||
*/ | ||
get not() { | ||
this.negate = !this.negate; | ||
return this; | ||
}, | ||
/** | ||
* Any modifier - it affect on execution of sequenced assertion to do not check all, but any of | ||
* | ||
* @api public | ||
*/ | ||
get any() { | ||
this.anyOne = true; | ||
return this; | ||
} | ||
should.use = function(f) { | ||
f(this, this.Assertion); | ||
return this; | ||
}; | ||
@@ -184,0 +69,0 @@ |
@@ -14,3 +14,3 @@ /*! | ||
exports.isWrapperType = function(obj) { | ||
return isNumber(obj) || isString(obj) || isBoolean(obj); | ||
return obj instanceof Number || obj instanceof String || obj instanceof Boolean; | ||
}; | ||
@@ -49,3 +49,3 @@ | ||
function isNumber(arg) { | ||
return typeof arg === 'number' || arg instanceof Number; | ||
return typeof arg === 'number'; | ||
} | ||
@@ -56,7 +56,7 @@ | ||
function isString(arg) { | ||
return typeof arg === 'string' || arg instanceof String; | ||
return typeof arg === 'string'; | ||
} | ||
function isBoolean(arg) { | ||
return typeof arg === 'boolean' || arg instanceof Boolean; | ||
return typeof arg === 'boolean'; | ||
} | ||
@@ -127,4 +127,2 @@ exports.isBoolean = isBoolean; | ||
exports.inspect = require('./inspect').inspect; | ||
exports.AssertionError = require('assert').AssertionError; | ||
@@ -131,0 +129,0 @@ |
{ | ||
"name": "should", | ||
"description": "test framework agnostic BDD-style assertions", | ||
"version": "4.0.4", | ||
"version": "4.1.0", | ||
"author": "TJ Holowaychuk <tj@vision-media.ca> and contributors", | ||
@@ -13,9 +13,10 @@ "repository": { | ||
"test": "gulp test", | ||
"zuul": "zuul -- ./test/**/*.test.js ./test/*.test.js" | ||
"zuul": "zuul -- ./test/**/*.test.js ./test/*.test.js", | ||
"browser": "gulp script" | ||
}, | ||
"devDependencies": { | ||
"browserify": "latest", | ||
"mocha-better-spec-reporter": "0.0.2", | ||
"gulp-mocha": "^0.4.1", | ||
"gulp-uglify": "^0.3.0", | ||
"mocha-better-spec-reporter": "1.1.0", | ||
"gulp-mocha": "1.1.1", | ||
"gulp-uglify": "1.0.1", | ||
"gulp-util": "^2.2.14", | ||
@@ -27,4 +28,4 @@ "gulp": "^3.6.2", | ||
"gulp-header": "^1.0.2", | ||
"mocha": "^1.19.0", | ||
"zuul": "^1.6.5" | ||
"mocha": "latest", | ||
"zuul": "latest" | ||
}, | ||
@@ -37,3 +38,6 @@ "keywords": [ | ||
"main": "./lib/should.js", | ||
"license": "MIT" | ||
"license": "MIT", | ||
"dependencies": { | ||
"should-equal": "0.0.1" | ||
} | ||
} |
@@ -184,3 +184,3 @@ # should.js | ||
Assert if a chained object is *equal* to otherValue. The object is compared by its actual content, not just reference equality. | ||
Asserts if a chained object is *equal* to otherValue. The object is compared by its actual content, not just reference equality. | ||
@@ -195,3 +195,3 @@ ```javascript | ||
Asserts if a chained object is strictly equal to `otherValue` (using `===` - no type conversion for primitive types and reference equivalence for reference types). | ||
Asserts if a chained object is strictly equal to `otherValue` (using `===`). It means primitive values compared as is (there is no any type conversion) and reference values compared by references. | ||
@@ -626,3 +626,3 @@ ```javascript | ||
The methods that support this optional description are: `eql`, `equal`, `within`, `instanceof`, `above`, `below`, `match`, `length`, `property`, `ownProperty`. | ||
The methods that support this optional description are: `eql`, `equal`, `within`, `instanceof`, `above`, `below`, `match`, `length`, `ownProperty`. | ||
@@ -645,2 +645,65 @@ ## Mocha example | ||
## Adding own assertions | ||
To add own assertion you need to call `should.Assertion.add` function. It accept 3 arguments: | ||
1. name of assertion method (string) | ||
2. assertion function (function) | ||
3. optional boolean value to mark if this assertion should be getter | ||
What assertion function should do. It should check only positive case. `should` will handle `.not` itself. | ||
`this` in assertion function will be instance of `should.Assertion` and you **must** define in any way this.params object | ||
in your assertion function call before assertion check happen. | ||
`params` object can contain several fields: | ||
- `operator` - it is string which describe your assertion | ||
- `obj` it is string representation of this.obj if you need to define you own | ||
- `expected` it is any value that expected to be matched this.obj | ||
You can assume its usage in generating AssertionError message like: expected `obj`? || this.obj not? `operator` `expected`? | ||
In `should` sources appeared 2 kinds of usage of this method. | ||
First not preferred and used **only** for shortcuts to other assertions, e.g how `.should.be.true` defined: | ||
```javascript | ||
Assertion.add('true', function() { | ||
this.is.exactly(true); | ||
}, true); | ||
``` | ||
There you can see that assertion function do not define own `this.params` and instead call within the same assertion `.exactly` | ||
that will fill `this.params`. **You should use this way very carefully, but you can use it**. | ||
Second way preferred and i assume you will use it instead of first. | ||
```javascript | ||
Assertion.add('true', function() { | ||
this.params = { operator: 'to be true', expected: true }; | ||
this.obj.should.be.exactly(true); | ||
}, true); | ||
``` | ||
in this case this.params defined and then used new assertion context (because called `.should`). Internally this way does not | ||
create any edge cases as first. | ||
```javascript | ||
Assertion.add('asset', function() { | ||
this.params = { operator: 'to be asset' }; | ||
this.obj.should.have.property('id').which.is.a.Number; | ||
this.obj.should.have.property('path'); | ||
}) | ||
//then | ||
> ({ id: '10' }).should.be.an.asset(); | ||
AssertionError: expected { id: '10' } to be asset | ||
expected '10' to be a number | ||
> ({ id: 10 }).should.be.an.asset(); | ||
AssertionError: expected { id: 10 } to be asset | ||
expected { id: 10 } to have property path | ||
``` | ||
## Contributions | ||
@@ -647,0 +710,0 @@ |
/** | ||
* should - test framework agnostic BDD-style assertions | ||
* @version v4.0.4 | ||
* @version v4.1.0 | ||
* @author TJ Holowaychuk <tj@vision-media.ca> and contributors | ||
@@ -8,2 +8,3 @@ * @link https://github.com/shouldjs/should.js | ||
*/ | ||
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Should=t()}}(function(){return function t(e,r,n){function i(s,a){if(!r[s]){if(!e[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(o)return o(s,!0);throw new Error("Cannot find module '"+s+"'")}var c=r[s]={exports:{}};e[s][0].call(c.exports,function(t){var r=e[s][1][t];return i(r?r:t)},c,c.exports,t,e,r,n)}return r[s].exports}for(var o="function"==typeof require&&require,s=0;s<n.length;s++)i(n[s]);return i}({1:[function(t,e){function r(t,e){if(t===e)return!0;if(i.isBuffer(t)&&i.isBuffer(e)){if(t.length!=e.length)return!1;for(var r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}return i.isDate(t)&&i.isDate(e)?t.getTime()===e.getTime():i.isRegExp(t)&&i.isRegExp(e)?t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase:i.isObject(t)||i.isObject(e)?n(t,e):t==e}function n(t,e){if(i.isNullOrUndefined(t)||i.isNullOrUndefined(e))return!1;if(t.prototype!==e.prototype)return!1;if(i.isArguments(t))return i.isArguments(e)?(t=o.call(t),e=o.call(e),r(t,e)):!1;try{var n,s,a=Object.keys(t),u=Object.keys(e)}catch(c){return!1}if(a.length!=u.length)return!1;for(a.sort(),u.sort(),s=a.length-1;s>=0;s--)if(a[s]!=u[s])return!1;for(s=a.length-1;s>=0;s--)if(n=a[s],!r(t[n],e[n]))return!1;return!0}var i=t("./util");e.exports=r;var o=Array.prototype.slice},{"./util":15}],2:[function(t,e){var r=t("../util"),n=t("assert"),i=n.AssertionError;e.exports=function(t){var e=t.format;r.merge(t,n),t.exist=t.exists=function(r,n){if(null==r)throw new i({message:n||"expected "+e(r)+" to exist",stackStartFunction:t.exist})},t.not={},t.not.exist=t.not.exists=function(r,n){if(null!=r)throw new i({message:n||"expected "+e(r)+" to not exist",stackStartFunction:t.not.exist})}}},{"../util":15,assert:16}],3:[function(t,e){e.exports=function(t,e){e.add("true",function(){this.is.exactly(!0)},!0),e.alias("true","True"),e.add("false",function(){this.is.exactly(!1)},!0),e.alias("false","False"),e.add("ok",function(){this.params={operator:"to be truthy"},this.assert(this.obj)},!0)}},{}],4:[function(t,e){e.exports=function(t,e){function r(t){Object.defineProperty(e.prototype,t,{get:function(){return this},enumerable:!0})}["an","of","a","and","be","have","with","is","which","the"].forEach(r)}},{}],5:[function(t,e){var r=t("../util"),n=t("../eql");e.exports=function(t,e){var i=t.format;e.add("containEql",function(t){this.params={operator:"to contain "+i(t)};var e=this.obj;r.isArray(e)?this.assert(e.some(function(e){return n(e,t)})):r.isString(e)?this.assert(e.indexOf(String(t))>=0):r.isObject(e)?r.forOwn(t,function(t,r){e.should.have.property(r,t)}):this.assert(!1)}),e.add("containDeepOrdered",function(e){this.params={operator:"to contain "+i(e)};var n=this.obj;if(r.isArray(n))if(r.isArray(e)){var o=0;n.forEach(function(r){try{t(r).not.be.Null.and.containDeep(e[o]),o++}catch(n){if(n instanceof t.AssertionError)return;throw n}},this),this.assert(o==e.length)}else this.assert(!1);else r.isString(n)?this.assert(n.indexOf(String(e))>=0):r.isObject(n)?r.isObject(e)?r.forOwn(e,function(e,r){t(n[r]).not.be.Null.and.containDeep(e)}):this.assert(!1):this.eql(e)}),e.add("containDeep",function(e){this.params={operator:"to contain "+i(e)};var n=this.obj;if(r.isArray(n))if(r.isArray(e)){var o={};e.forEach(function(e){this.assert(n.some(function(r,n){if(n in o)return!1;try{return t(r).not.be.Null.and.containDeep(e),o[n]=!0,!0}catch(i){if(i instanceof t.AssertionError)return!1;throw i}}))},this)}else this.assert(!1);else r.isString(n)?this.assert(n.indexOf(String(e))>=0):r.isObject(n)?r.isObject(e)?r.forOwn(e,function(e,r){t(n[r]).not.be.Null.and.containDeep(e)}):this.assert(!1):this.eql(e)})}},{"../eql":1,"../util":15}],6:[function(t,e){var r=t("../eql");e.exports=function(t,e){e.add("eql",function(t,e){this.params={operator:"to equal",expected:t,showDiff:!0,message:e},this.assert(r(t,this.obj))}),e.add("equal",function(t,e){this.params={operator:"to be",expected:t,showDiff:!0,message:e},this.assert(t===this.obj)}),e.alias("equal","exactly")}},{"../eql":1}],7:[function(t,e){var r=t("../util");e.exports=function(t,e){var n=t.format;e.add("throw",function(e,i){var o=this.obj,s={},a="",u=!1,c=!0;try{o()}catch(f){u=!0,s=f}if(u)if(e){if("string"==typeof e)c=e==s.message;else if(e instanceof RegExp)c=e.test(s.message);else if("function"==typeof e)c=s instanceof e;else if(r.isObject(e))try{s.should.match(e)}catch(f){if(!(f instanceof t.AssertionError))throw f;a=": "+f.message,c=!1}if(c){if("function"==typeof e&&i)try{s.should.match(i)}catch(f){if(!(f instanceof t.AssertionError))throw f;a=": "+f.message,c=!1}}else"string"==typeof e||e instanceof RegExp?a=" with a message matching "+n(e)+", but got '"+s.message+"'":"function"==typeof e&&(a=" of type "+r.functionName(e)+", but got "+r.functionName(s.constructor))}else a=" (got "+n(s)+")";this.params={operator:"to throw exception"+a},this.assert(u),this.assert(c)}),e.alias("throw","throwError")}},{"../util":15}],8:[function(t,e){var r=t("../util"),n=t("../eql");e.exports=function(t,e){var i=t.format;e.add("match",function(o,s){if(this.params={operator:"to match "+i(o),message:s},!n(this.obj,o))if(r.isRegExp(o)){if(r.isString(this.obj))this.assert(o.exec(this.obj));else if(r.isArray(this.obj))this.obj.forEach(function(t){this.assert(o.exec(t))},this);else if(r.isObject(this.obj)){var a=[],u=[];r.forOwn(this.obj,function(t,e){o.exec(t)?u.push(r.formatProp(e)):a.push(r.formatProp(e)+" ("+i(t)+")")},this),a.length&&(this.params.operator+="\n not matched properties: "+a.join(", ")),u.length&&(this.params.operator+="\n matched properties: "+u.join(", ")),this.assert(0==a.length)}}else if(r.isFunction(o)){var c;try{c=o(this.obj)}catch(f){throw f instanceof t.AssertionError&&(this.params.operator+="\n "+f.message),f}c instanceof e&&(this.params.operator+="\n "+c.getMessage()),r.isBoolean(c)&&this.assert(c)}else r.isObject(o)?(a=[],u=[],r.forOwn(o,function(e,n){try{t(this.obj[n]).match(e),u.push(r.formatProp(n))}catch(o){if(!(o instanceof t.AssertionError))throw o;a.push(r.formatProp(n)+" ("+i(this.obj[n])+")")}},this),a.length&&(this.params.operator+="\n not matched properties: "+a.join(", ")),u.length&&(this.params.operator+="\n matched properties: "+u.join(", ")),this.assert(0==a.length)):this.assert(!1)}),e.add("matchEach",function(t,e){this.params={operator:"to match each "+i(t),message:e};var o=t;r.isRegExp(t)?o=function(e){return!!t.exec(e)}:r.isFunction(t)||(o=function(e){return n(e,t)}),r.forOwn(this.obj,function(t,e){var n=o(t,e);r.isBoolean(n)&&this.assert(n)},this)})}},{"../eql":1,"../util":15}],9:[function(t,e){e.exports=function(t,e){e.add("NaN",function(){this.params={operator:"to be NaN"},this.assert(this.obj!==this.obj)},!0),e.add("Infinity",function(){this.params={operator:"to be Infinity"},this.is.a.Number.and.not.a.NaN.and.assert(!isFinite(this.obj))},!0),e.add("within",function(t,e,r){this.params={operator:"to be within "+t+".."+e,message:r},this.assert(this.obj>=t&&this.obj<=e)}),e.add("approximately",function(t,e,r){this.params={operator:"to be approximately "+t+" ±"+e,message:r},this.assert(Math.abs(this.obj-t)<=e)}),e.add("above",function(t,e){this.params={operator:"to be above "+t,message:e},this.assert(this.obj>t)}),e.add("below",function(t,e){this.params={operator:"to be below "+t,message:e},this.assert(this.obj<t)}),e.alias("above","greaterThan"),e.alias("below","lessThan")}},{}],10:[function(t,e){var r=t("../util"),n=t("../eql"),i=Array.prototype.slice;e.exports=function(t,e){var o=t.format;e.add("enumerable",function(t,e){t=String(t),this.params={operator:"to have enumerable property "+r.formatProp(t)},this.assert(this.obj.propertyIsEnumerable(t)),arguments.length>1&&(this.params.operator+=" equal to "+o(e),this.assert(n(e,this.obj[t])))}),e.add("property",function(t,e){if(t=String(t),arguments.length>1){var r={};r[t]=e,this.have.properties(r)}else this.have.properties(t);this.obj=this.obj[t]}),e.add("properties",function(t){var e={};arguments.length>1?t=i.call(arguments):r.isArray(t)||(r.isString(t)?t=[t]:(e=t,t=Object.keys(t)));var s=Object(this.obj),a=[];t.forEach(function(t){t in s||a.push(r.formatProp(t))});var u=a;0===u.length?u=t.map(r.formatProp):this.anyOne&&(u=t.filter(function(t){return a.indexOf(r.formatProp(t))<0}).map(r.formatProp));var c=(1===u.length?"to have property ":"to have "+(this.anyOne?"any of ":"")+"properties ")+u.join(", ");this.params={operator:c},this.assert(0===a.length||this.anyOne&&a.length!=t.length);var f=Object.keys(e);if(f.length){var p=[];u=[],f.forEach(function(t){var i=e[t];n(s[t],i)?u.push(r.formatProp(t)+" of "+o(i)):p.push(r.formatProp(t)+" of "+o(i)+" (got "+o(s[t])+")")}),(0!==p.length&&!this.anyOne||this.anyOne&&0===u.length)&&(u=p),c=(1===u.length?"to have property ":"to have "+(this.anyOne?"any of ":"")+"properties ")+u.join(", "),this.params={operator:c},this.assert(0===p.length||this.anyOne&&p.length!=f.length)}}),e.add("length",function(t,e){this.have.property("length",t,e)}),e.alias("length","lengthOf");var s=Object.prototype.hasOwnProperty;e.add("ownProperty",function(t,e){t=String(t),this.params={operator:"to have own property "+r.formatProp(t),message:e},this.assert(s.call(this.obj,t)),this.obj=this.obj[t]}),e.alias("ownProperty","hasOwnProperty"),e.add("empty",function(){if(this.params={operator:"to be empty"},r.isString(this.obj)||r.isArray(this.obj)||r.isArguments(this.obj))this.have.property("length",0);else{var t=Object(this.obj);for(var e in t)this.have.not.ownProperty(e)}},!0),e.add("keys",function(t){arguments.length>1?t=i.call(arguments):1===arguments.length&&r.isString(t)?t=[t]:0===arguments.length&&(t=[]),t=t.map(String);var e=Object(this.obj),n=[];t.forEach(function(t){s.call(this.obj,t)||n.push(r.formatProp(t))},this);var o=[];Object.keys(e).forEach(function(e){t.indexOf(e)<0&&o.push(r.formatProp(e))});var a=0===t.length?"to be empty":"to have "+(1===t.length?"key ":"keys ");this.params={operator:a+t.map(r.formatProp).join(", ")},n.length>0&&(this.params.operator+="\n missing keys: "+n.join(", ")),o.length>0&&(this.params.operator+="\n extra keys: "+o.join(", ")),this.assert(0===n.length&&0===o.length)}),e.alias("keys","key"),e.add("propertyByPath",function(e){arguments.length>1?e=i.call(arguments):1===arguments.length&&r.isString(e)?e=[e]:0===arguments.length&&(e=[]);var n=e.map(r.formatProp);e=e.map(String);for(var o,s=t(Object(this.obj)),a=[];o=e.shift();)this.params={operator:"to have property by path "+n.join(", ")+" - failed on "+r.formatProp(o)},s=s.have.property(o),a.push(o);this.params={operator:"to have property by path "+n.join(", ")},this.obj=s.obj})}},{"../eql":1,"../util":15}],11:[function(t,e){e.exports=function(t,e){e.add("startWith",function(e,r){this.params={operator:"to start with "+t.format(e),message:r},this.assert(0===this.obj.indexOf(e))}),e.add("endWith",function(e,r){this.params={operator:"to end with "+t.format(e),message:r},this.assert(this.obj.indexOf(e,this.obj.length-e.length)>=0)})}},{}],12:[function(t,e){var r=t("../util");e.exports=function(t,e){e.add("Number",function(){this.params={operator:"to be a number"},this.assert(r.isNumber(this.obj))},!0),e.add("arguments",function(){this.params={operator:"to be arguments"},this.assert(r.isArguments(this.obj))},!0),e.add("type",function(t,e){this.params={operator:"to have type "+t,message:e},(typeof this.obj).should.be.exactly(t,e)}),e.add("instanceof",function(t,e){this.params={operator:"to be an instance of "+r.functionName(t),message:e},this.assert(Object(this.obj)instanceof t)}),e.add("Function",function(){this.params={operator:"to be a function"},this.assert(r.isFunction(this.obj))},!0),e.add("Object",function(){this.params={operator:"to be an object"},this.assert(r.isObject(this.obj))},!0),e.add("String",function(){this.params={operator:"to be a string"},this.assert(r.isString(this.obj))},!0),e.add("Array",function(){this.params={operator:"to be an array"},this.assert(r.isArray(this.obj))},!0),e.add("Boolean",function(){this.params={operator:"to be a boolean"},this.assert(r.isBoolean(this.obj))},!0),e.add("Error",function(){this.params={operator:"to be an error"},this.assert(r.isError(this.obj))},!0),e.add("null",function(){this.params={operator:"to be null"},this.assert(null===this.obj)},!0),e.alias("null","Null"),e.alias("instanceof","instanceOf")}},{"../util":15}],13:[function(t,e,r){function n(t,e){var n={seen:[],stylize:o};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),m(e)?n.showHidden=e:e&&r._extend(n,e),b(n.showHidden)&&(n.showHidden=!1),b(n.depth)&&(n.depth=2),b(n.colors)&&(n.colors=!1),b(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=i),a(n,t,n.depth)}function i(t,e){var r=n.styles[e];return r?"["+n.colors[r][0]+"m"+t+"["+n.colors[r][1]+"m":t}function o(t){return t}function s(t){var e={};return t.forEach(function(t){e[t]=!0}),e}function a(t,e,n){if(t.customInspect&&e&&j(e.inspect)&&e.inspect!==r.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(n,t);return v(i)||(i=a(t,i,n)),i}var o=u(t,e);if(o)return o;var g=Object.keys(e),y=s(g);t.showHidden&&(g=Object.getOwnPropertyNames(e));var d,b=e;try{E(e)||(b=e.valueOf())}catch(O){}if(v(b)&&(g=g.filter(function(t){return!(t>=0&&t<b.length)})),S(e))return f(e);if(0===g.length){if(j(e)){var N=e.name?": "+e.name:"";return t.stylize("[Function"+N+"]","special")}if(w(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(E(e))return t.stylize(Date.prototype.toString.call(e),"date");if(v(b))return d=c(t,b),t.stylize("[String: "+d+"]","string");if(x(b))return d=c(t,b),t.stylize("[Number: "+d+"]","number");if(m(b))return d=c(t,b),t.stylize("[Boolean: "+d+"]","boolean")}var z="",D=!1,P=["{","}"];if(A(e)&&(D=!0,P=["[","]"]),j(e)){var q=e.name?": "+e.name:"";z=" [Function"+q+"]"}if(w(e)&&(z=" "+RegExp.prototype.toString.call(e)),E(e)&&(z=" "+Date.prototype.toUTCString.call(e)),S(e)&&(z=" "+f(e)),v(b)&&(d=c(t,b),z=" [String: "+d+"]"),x(b)&&(d=c(t,b),z=" [Number: "+d+"]"),m(b)&&(d=c(t,b),z=" [Boolean: "+d+"]"),0===g.length&&(!D||0===e.length))return P[0]+z+P[1];if(0>n)return w(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var k;return k=D?p(t,e,n,y,g):g.map(function(r){return l(t,e,n,y,r,D)}),t.seen.pop(),h(k,z,P)}function u(t,e){if(b(e))return t.stylize("undefined","undefined");if(v(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return x(e)?0===e&&0>1/e?t.stylize("-0","number"):t.stylize(""+e,"number"):m(e)?t.stylize(""+e,"boolean"):O(e)?t.stylize("null","null"):void 0}function c(t,e){var r=t.stylize;t.stylize=o;var n=u(t,e);return t.stylize=r,n}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function p(t,e,r,n,i){for(var o=[],s=0,a=e.length;a>s;++s)o.push(g(e,String(s))?l(t,e,r,n,String(s),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(l(t,e,r,n,i,!0))}),o}function l(t,e,r,n,i,o){var s,u,c;if(c=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]},c.get?u=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(u=t.stylize("[Setter]","special")),g(n,i)||(s="["+i+"]"),u||(t.seen.indexOf(c.value)<0?(u=O(r)?a(t,c.value,null):a(t,c.value,r-1),u.indexOf("\n")>-1&&(u=o?u.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+u.split("\n").map(function(t){return" "+t}).join("\n"))):u=t.stylize("[Circular]","special")),b(s)){if(o&&i.match(/^\d+$/))return u;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'").replace(/\\\\/g,"\\"),s=t.stylize(s,"string"))}return s+": "+u}function h(t,e,r){var n=t.reduce(function(t,e){return t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return n>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function g(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var y=t("./util"),m=y.isBoolean,d=y.isObject,b=y.isUndefined,j=y.isFunction,v=y.isString,x=y.isNumber,O=y.isNull,w=y.isRegExp,E=y.isDate,S=y.isError,A=y.isArray;r.inspect=n,n.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]},n.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},r._extend=function(t,e){if(!e||!d(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}},{"./util":15}],14:[function(t,e,r){var n=t("./util"),i=n.AssertionError,o=n.inspect,s=function(t){return new a(n.isWrapperType(t)?t.valueOf():t)},a=s.Assertion=function(t){this.obj=t};a.add=function(t,e,r){var n={enumerable:!0};n[r?"get":"value"]=function(){var t=new a(this.obj);t.copy=t.copyIfMissing,t.anyOne=this.anyOne;try{e.apply(t,arguments)}catch(r){if(this.copy(t),r instanceof s.AssertionError){if(this.negate)return this.obj=t.obj,this.negate=!1,this;this.assert(!1)}throw r}return this.copy(t),this.negate&&this.assert(!1),this.obj=t.obj,this.negate=!1,this},Object.defineProperty(a.prototype,t,n)},a.alias=function(t,e){var r=Object.getOwnPropertyDescriptor(a.prototype,t);if(!r)throw new Error("Alias "+t+" -> "+e+" could not be created as "+t+" not defined");Object.defineProperty(a.prototype,e,r)},s.AssertionError=i,s.format=function(t){return n.isDate(t)&&"function"!=typeof t.inspect?t.toISOString():o(t,{depth:null})},s.use=function(t){return t(this,a),this},r=e.exports=s,Object.defineProperty(Object.prototype,"should",{set:function(){},get:function(){return s(this)},configurable:!0}),a.prototype={constructor:a,assert:function(t){if(t)return this;var e=this.params,r=e.message,n=!1;r||(r=this.getMessage(),n=!0);var o=new i({message:r,actual:this.obj,expected:e.expected,stackStartFunction:this.assert});throw o.showDiff=e.showDiff,o.operator=e.operator,o.generatedMessage=n,o},getMessage:function(){return"expected "+("obj"in this.params?this.params.obj:s.format(this.obj))+(this.negate?" not ":" ")+this.params.operator+("expected"in this.params?" "+s.format(this.params.expected):"")},copy:function(t){this.params=t.params},copyIfMissing:function(t){this.params||(this.params=t.params)},get not(){return this.negate=!this.negate,this},get any(){return this.anyOne=!0,this}},s.use(t("./ext/assert")).use(t("./ext/chain")).use(t("./ext/bool")).use(t("./ext/number")).use(t("./ext/eql")).use(t("./ext/type")).use(t("./ext/string")).use(t("./ext/property")).use(t("./ext/error")).use(t("./ext/match")).use(t("./ext/contain"))},{"./ext/assert":2,"./ext/bool":3,"./ext/chain":4,"./ext/contain":5,"./ext/eql":6,"./ext/error":7,"./ext/match":8,"./ext/number":9,"./ext/property":10,"./ext/string":11,"./ext/type":12,"./util":15}],15:[function(t,e,r){function n(t){return f(t)&&(t.__ArrayLike||Array.isArray(t))}function i(t){return"number"==typeof t||t instanceof Number}function o(t){return"string"==typeof t||t instanceof String}function s(t){return"boolean"==typeof t||t instanceof Boolean}function a(t){return"undefined"!=typeof Buffer&&t instanceof Buffer}function u(t){return f(t)&&"[object Date]"===c(t)}function c(t){return Object.prototype.toString.call(t)}function f(t){return"object"==typeof t&&null!==t}function p(t){return f(t)&&"[object RegExp]"===c(t)}function l(t){return null==t}function h(t){return null===t}function g(t){return"[object Arguments]"===c(t)}function y(t){return f(t)&&"[object Error]"===c(t)||t instanceof Error}function m(t){return void 0===t}r.isWrapperType=function(t){return i(t)||o(t)||s(t)},r.merge=function(t,e){if(t&&e)for(var r in e)t[r]=e[r];return t},r.isArray=n,r.isNumber=i,r.isBoolean=s,r.isString=o,r.isBuffer=a,r.isDate=u,r.isObject=f,r.isRegExp=p,r.isNullOrUndefined=l,r.isNull=h,r.isArguments=g,r.isFunction=function(t){return"function"==typeof t||t instanceof Function},r.isError=y,r.isUndefined=m,r.inspect=t("./inspect").inspect,r.AssertionError=t("assert").AssertionError;var d=Object.prototype.hasOwnProperty;r.forOwn=function(t,e,r){for(var n in t)d.call(t,n)&&e.call(r,t[n],n)};var b=/^\s*function\s*(\S*)\s*\(/;r.functionName=function(t){if(t.name)return t.name;var e=t.toString().match(b)[1];return e},r.formatProp=function(t){return t=JSON.stringify(""+t),t=t.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?t.substr(1,t.length-2):t.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'").replace(/\\\\/g,"\\")}},{"./inspect":13,assert:16}],16:[function(t,e){function r(t,e){return l.isUndefined(e)?""+e:!l.isNumber(e)||!isNaN(e)&&isFinite(e)?l.isFunction(e)||l.isRegExp(e)?e.toString():e:e.toString()}function n(t,e){return l.isString(t)?t.length<e?t:t.slice(0,e):t}function i(t){return n(JSON.stringify(t.actual,r),128)+" "+t.operator+" "+n(JSON.stringify(t.expected,r),128)}function o(t,e,r,n,i){throw new y.AssertionError({message:r,actual:t,expected:e,operator:n,stackStartFunction:i})}function s(t,e){t||o(t,!0,e,"==",y.ok)}function a(t,e){if(t===e)return!0;if(l.isBuffer(t)&&l.isBuffer(e)){if(t.length!=e.length)return!1;for(var r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}return l.isDate(t)&&l.isDate(e)?t.getTime()===e.getTime():l.isRegExp(t)&&l.isRegExp(e)?t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase:l.isObject(t)||l.isObject(e)?c(t,e):t==e}function u(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function c(t,e){if(l.isNullOrUndefined(t)||l.isNullOrUndefined(e))return!1;if(t.prototype!==e.prototype)return!1;if(u(t))return u(e)?(t=h.call(t),e=h.call(e),a(t,e)):!1;try{var r,n,i=m(t),o=m(e)}catch(s){return!1}if(i.length!=o.length)return!1;for(i.sort(),o.sort(),n=i.length-1;n>=0;n--)if(i[n]!=o[n])return!1;for(n=i.length-1;n>=0;n--)if(r=i[n],!a(t[r],e[r]))return!1;return!0}function f(t,e){return t&&e?"[object RegExp]"==Object.prototype.toString.call(e)?e.test(t):t instanceof e?!0:e.call({},t)===!0?!0:!1:!1}function p(t,e,r,n){var i;l.isString(r)&&(n=r,r=null);try{e()}catch(s){i=s}if(n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!i&&o(i,r,"Missing expected exception"+n),!t&&f(i,r)&&o(i,r,"Got unwanted exception"+n),t&&i&&r&&!f(i,r)||!t&&i)throw i}var l=t("util/"),h=Array.prototype.slice,g=Object.prototype.hasOwnProperty,y=e.exports=s;y.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=i(this),this.generatedMessage=!0);var e=t.stackStartFunction||o;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,s=e.name,a=n.indexOf("\n"+s);if(a>=0){var u=n.indexOf("\n",a+1);n=n.substring(u+1)}this.stack=n}}},l.inherits(y.AssertionError,Error),y.fail=o,y.ok=s,y.equal=function(t,e,r){t!=e&&o(t,e,r,"==",y.equal)},y.notEqual=function(t,e,r){t==e&&o(t,e,r,"!=",y.notEqual)},y.deepEqual=function(t,e,r){a(t,e)||o(t,e,r,"deepEqual",y.deepEqual)},y.notDeepEqual=function(t,e,r){a(t,e)&&o(t,e,r,"notDeepEqual",y.notDeepEqual)},y.strictEqual=function(t,e,r){t!==e&&o(t,e,r,"===",y.strictEqual)},y.notStrictEqual=function(t,e,r){t===e&&o(t,e,r,"!==",y.notStrictEqual)},y.throws=function(){p.apply(this,[!0].concat(h.call(arguments)))},y.doesNotThrow=function(){p.apply(this,[!1].concat(h.call(arguments)))},y.ifError=function(t){if(t)throw t};var m=Object.keys||function(t){var e=[];for(var r in t)g.call(t,r)&&e.push(r);return e}},{"util/":18}],17:[function(t,e){e.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},{}],18:[function(t,e,r){function n(t,e){var n={seen:[],stylize:o};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),g(e)?n.showHidden=e:e&&r._extend(n,e),v(n.showHidden)&&(n.showHidden=!1),v(n.depth)&&(n.depth=2),v(n.colors)&&(n.colors=!1),v(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=i),a(n,t,n.depth)}function i(t,e){var r=n.styles[e];return r?"["+n.colors[r][0]+"m"+t+"["+n.colors[r][1]+"m":t}function o(t){return t}function s(t){var e={};return t.forEach(function(t){e[t]=!0}),e}function a(t,e,n){if(t.customInspect&&e&&S(e.inspect)&&e.inspect!==r.inspect&&(!e.constructor||e.constructor.prototype!==e)){var i=e.inspect(n,t);return b(i)||(i=a(t,i,n)),i}var o=u(t,e);if(o)return o;var g=Object.keys(e),y=s(g);if(t.showHidden&&(g=Object.getOwnPropertyNames(e)),E(e)&&(g.indexOf("message")>=0||g.indexOf("description")>=0))return c(e);if(0===g.length){if(S(e)){var m=e.name?": "+e.name:"";return t.stylize("[Function"+m+"]","special")}if(x(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(w(e))return t.stylize(Date.prototype.toString.call(e),"date");if(E(e))return c(e)}var d="",j=!1,v=["{","}"];if(h(e)&&(j=!0,v=["[","]"]),S(e)){var O=e.name?": "+e.name:"";d=" [Function"+O+"]"}if(x(e)&&(d=" "+RegExp.prototype.toString.call(e)),w(e)&&(d=" "+Date.prototype.toUTCString.call(e)),E(e)&&(d=" "+c(e)),0===g.length&&(!j||0==e.length))return v[0]+d+v[1];if(0>n)return x(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var A;return A=j?f(t,e,n,y,g):g.map(function(r){return p(t,e,n,y,r,j)}),t.seen.pop(),l(A,d,v)}function u(t,e){if(v(e))return t.stylize("undefined","undefined");if(b(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return d(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):y(e)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,r,n,i){for(var o=[],s=0,a=e.length;a>s;++s)o.push(P(e,String(s))?p(t,e,r,n,String(s),!0):"");return i.forEach(function(i){i.match(/^\d+$/)||o.push(p(t,e,r,n,i,!0))}),o}function p(t,e,r,n,i,o){var s,u,c;if(c=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]},c.get?u=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(u=t.stylize("[Setter]","special")),P(n,i)||(s="["+i+"]"),u||(t.seen.indexOf(c.value)<0?(u=y(r)?a(t,c.value,null):a(t,c.value,r-1),u.indexOf("\n")>-1&&(u=o?u.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+u.split("\n").map(function(t){return" "+t}).join("\n"))):u=t.stylize("[Circular]","special")),v(s)){if(o&&i.match(/^\d+$/))return u;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+u}function l(t,e,r){var n=0,i=t.reduce(function(t,e){return n++,e.indexOf("\n")>=0&&n++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function h(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function y(t){return null===t}function m(t){return null==t}function d(t){return"number"==typeof t}function b(t){return"string"==typeof t}function j(t){return"symbol"==typeof t}function v(t){return void 0===t}function x(t){return O(t)&&"[object RegExp]"===N(t)}function O(t){return"object"==typeof t&&null!==t}function w(t){return O(t)&&"[object Date]"===N(t)}function E(t){return O(t)&&("[object Error]"===N(t)||t instanceof Error)}function S(t){return"function"==typeof t}function A(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function N(t){return Object.prototype.toString.call(t)}function z(t){return 10>t?"0"+t.toString(10):t.toString(10)}function D(){var t=new Date,e=[z(t.getHours()),z(t.getMinutes()),z(t.getSeconds())].join(":");return[t.getDate(),F[t.getMonth()],e].join(" ")}function P(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var q=/%[sdj%]/g;r.format=function(t){if(!b(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(n(arguments[r]));return e.join(" ")}for(var r=1,i=arguments,o=i.length,s=String(t).replace(q,function(t){if("%%"===t)return"%";if(r>=o)return t;switch(t){case"%s":return String(i[r++]);case"%d":return Number(i[r++]);case"%j":try{return JSON.stringify(i[r++])}catch(e){return"[Circular]"}default:return t}}),a=i[r];o>r;a=i[++r])s+=y(a)||!O(a)?" "+a:" "+n(a);return s},r.deprecate=function(t,e){function n(){if(!i){if(process.throwDeprecation)throw new Error(e);process.traceDeprecation?console.trace(e):console.error(e),i=!0}return t.apply(this,arguments)}if(v(global.process))return function(){return r.deprecate(t,e).apply(this,arguments)};if(process.noDeprecation===!0)return t;var i=!1;return n};var k,B={};r.debuglog=function(t){if(v(k)&&(k=process.env.NODE_DEBUG||""),t=t.toUpperCase(),!B[t])if(new RegExp("\\b"+t+"\\b","i").test(k)){var e=process.pid;B[t]=function(){var n=r.format.apply(r,arguments);console.error("%s %d: %s",t,e,n)}}else B[t]=function(){};return B[t]},r.inspect=n,n.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]},n.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},r.isArray=h,r.isBoolean=g,r.isNull=y,r.isNullOrUndefined=m,r.isNumber=d,r.isString=b,r.isSymbol=j,r.isUndefined=v,r.isRegExp=x,r.isObject=O,r.isDate=w,r.isError=E,r.isFunction=S,r.isPrimitive=A,r.isBuffer=t("./support/isBuffer");var F=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];r.log=function(){console.log("%s - %s",D(),r.format.apply(r,arguments))},r.inherits=t("inherits"),r._extend=function(t,e){if(!e||!O(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}},{"./support/isBuffer":17,inherits:19}],19:[function(t,e){e.exports="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}]},{},[14])(14)}); | ||
!function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;"undefined"!=typeof window?e=window:"undefined"!=typeof global?e=global:"undefined"!=typeof self&&(e=self),e.Should=t()}}(function(){return function t(e,r,n){function o(s,a){if(!r[s]){if(!e[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=r[s]={exports:{}};e[s][0].call(f.exports,function(t){var r=e[s][1][t];return o(r?r:t)},f,f.exports,t,e,r,n)}return r[s].exports}for(var i="function"==typeof require&&require,s=0;s<n.length;s++)o(n[s]);return o}({1:[function(t,e,r){var n=t("./util"),o=t("./inspect").inspect,i=t("./warn"),s=function c(t){i.staticShouldUnWrap(n.isWrapperType(t)&&c.warn);var e=n.isWrapperType(t)?t.valueOf():t;return new c.Assertion(e,c.format)},a="SHOULDJS_WARN",u="undefined"!=typeof process&&process.env[a]&&"true"===process.env[a];s.warn="undefined"==typeof u?!0:u,s.AssertionError=t("./assertion-error"),s.Assertion=t("./assertion"),s.format=function(t){return o(t,{depth:null})},r=e.exports=s,s.extend=function(t,e){t=t||"should",e=e||Object.prototype,Object.defineProperty(e,t,{set:function(){},get:function(){return s(n.isWrapperType(this)?this.valueOf():this)},configurable:!0})},s.extend("should",Object.prototype),s.use=function(t){return t(this,this.Assertion),this},s.use(t("./ext/assert")).use(t("./ext/chain")).use(t("./ext/bool")).use(t("./ext/number")).use(t("./ext/eql")).use(t("./ext/type")).use(t("./ext/string")).use(t("./ext/property")).use(t("./ext/error")).use(t("./ext/match")).use(t("./ext/contain"))},{"./assertion":3,"./assertion-error":2,"./ext/assert":5,"./ext/bool":6,"./ext/chain":7,"./ext/contain":8,"./ext/eql":9,"./ext/error":10,"./ext/match":11,"./ext/number":12,"./ext/property":13,"./ext/string":14,"./ext/type":15,"./inspect":16,"./util":17,"./warn":18}],2:[function(t,e){e.exports=t("./util").AssertionError},{"./util":17}],3:[function(t,e){function r(t,e){this.obj=t,this.format=e}function n(t){return s+t}function o(t){return t.split("\n").map(n).join("\n")}var i=t("./assertion-error");r.add=function(t,e,n){var o={enumerable:!0};o[n?"get":"value"]=function(){var t=new r(this.obj,this.format);t.anyOne=this.anyOne;try{e.apply(t,arguments)}catch(n){if(this.params=t.params,n instanceof i){if(this.negate)return this.obj=t.obj,this.negate=!1,this;this.nestedErrorMessage=n.message,this.fail()}throw n}return this.params=t.params,this.negate&&(t.negate=!0,this.nestedErrorMessage=t.params.message?t.params.message:t.getMessage(),this.fail()),this.obj=t.obj,this.negate=!1,this},Object.defineProperty(r.prototype,t,o)},r.alias=function(t,e){var n=Object.getOwnPropertyDescriptor(r.prototype,t);if(!n)throw new Error("Alias "+t+" -> "+e+" could not be created as "+t+" not defined");Object.defineProperty(r.prototype,e,n)};var s=" ";r.prototype={constructor:r,assert:function(t){if(t)return this;var e=this.params,r=e.message,n=!1;r||(r=this.getMessage(),n=!0),this.nestedErrorMessage&&r!=this.nestedErrorMessage&&(r=r+"\n"+o(this.nestedErrorMessage));var s=new i({message:r,actual:this.obj,expected:e.expected,stackStartFunction:this.assert});throw s.showDiff=e.showDiff,s.operator=e.operator,s.generatedMessage=n,s},fail:function(){return this.assert(!1)},formattedObj:function(){return this.format(this.obj)},getMessage:function(){var t="obj"in this.params?this.params.obj:this.formattedObj(),e="expected"in this.params?" "+this.format(this.params.expected):"";return"expected "+t+(this.negate?" not ":" ")+this.params.operator+e},get not(){return this.negate=!this.negate,this},get any(){return this.anyOne=!0,this}},e.exports=r},{"./assertion-error":2}],4:[function(t,e){function r(t,e){if(t===e)return!0;if(o.isBuffer(t)&&o.isBuffer(e)){if(t.length!=e.length)return!1;for(var r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}return o.isDate(t)&&o.isDate(e)?t.getTime()===e.getTime():o.isRegExp(t)&&o.isRegExp(e)?t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase:o.isObject(t)||o.isObject(e)?n(t,e):t==e}function n(t,e){if(o.isNullOrUndefined(t)||o.isNullOrUndefined(e))return!1;if(t.prototype!==e.prototype)return!1;if(o.isArguments(t))return o.isArguments(e)?(t=i.call(t),e=i.call(e),r(t,e)):!1;try{var n,s,a=Object.keys(t),u=Object.keys(e)}catch(c){return!1}if(a.length!=u.length)return!1;for(a.sort(),u.sort(),s=a.length-1;s>=0;s--)if(a[s]!=u[s])return!1;for(s=a.length-1;s>=0;s--)if(n=a[s],!r(t[n],e[n]))return!1;return!0}var o=t("./util");e.exports=r;var i=Array.prototype.slice},{"./util":17}],5:[function(t,e){var r=t("../util"),n=t("assert"),o=n.AssertionError;e.exports=function(t){var e=t.format;r.merge(t,n),t.exist=t.exists=function(r,n){if(null==r)throw new o({message:n||"expected "+e(r)+" to exist",stackStartFunction:t.exist})},t.not={},t.not.exist=t.not.exists=function(r,n){if(null!=r)throw new o({message:n||"expected "+e(r)+" to not exist",stackStartFunction:t.not.exist})}}},{"../util":17,assert:19}],6:[function(t,e){e.exports=function(t,e){e.add("true",function(){this.is.exactly(!0)},!0),e.alias("true","True"),e.add("false",function(){this.is.exactly(!1)},!0),e.alias("false","False"),e.add("ok",function(){this.params={operator:"to be truthy"},this.assert(this.obj)},!0)}},{}],7:[function(t,e){e.exports=function(t,e){function r(t){Object.defineProperty(e.prototype,t,{get:function(){return this},enumerable:!0})}["an","of","a","and","be","have","with","is","which","the"].forEach(r)}},{}],8:[function(t,e){var r=t("../util"),n=t("../eql");e.exports=function(t,e){var o=t.format;e.add("containEql",function(t){this.params={operator:"to contain "+o(t)};var e=this.obj;r.isArray(e)?this.assert(e.some(function(e){return n(e,t)})):r.isString(e)?this.assert(e.indexOf(String(t))>=0):r.isObject(e)?r.forOwn(t,function(t,r){e.should.have.property(r,t)}):this.assert(!1)}),e.add("containDeepOrdered",function(e){this.params={operator:"to contain "+o(e)};var n=this.obj;if(r.isArray(n))if(r.isArray(e)){var i=0;n.forEach(function(r){try{t(r).not.be.Null.and.containDeep(e[i]),i++}catch(n){if(n instanceof t.AssertionError)return;throw n}},this),this.assert(i==e.length)}else this.assert(!1);else r.isString(n)?this.assert(n.indexOf(String(e))>=0):r.isObject(n)?r.isObject(e)?r.forOwn(e,function(e,r){t(n[r]).not.be.Null.and.containDeep(e)}):this.assert(!1):this.eql(e)}),e.add("containDeep",function(e){this.params={operator:"to contain "+o(e)};var n=this.obj;if(r.isArray(n))if(r.isArray(e)){var i={};e.forEach(function(e){this.assert(n.some(function(r,n){if(n in i)return!1;try{return t(r).not.be.Null.and.containDeep(e),i[n]=!0,!0}catch(o){if(o instanceof t.AssertionError)return!1;throw o}}))},this)}else this.assert(!1);else r.isString(n)?this.assert(n.indexOf(String(e))>=0):r.isObject(n)?r.isObject(e)?r.forOwn(e,function(e,r){t(n[r]).not.be.Null.and.containDeep(e)}):this.assert(!1):this.eql(e)})}},{"../eql":4,"../util":17}],9:[function(t,e){var r=t("../eql"),n=t("should-equal"),o=t("../warn");e.exports=function(t,e){e.add("eql",function(e,i){this.params={operator:"to equal",expected:e,showDiff:!0,message:i};var s=r(e,this.obj);o.nonStrictEql(t.warn&&s!==n(e,this.obj)),this.assert(s)}),e.add("equal",function(t,e){this.params={operator:"to be",expected:t,showDiff:!0,message:e},this.assert(t===this.obj)}),e.alias("equal","exactly")}},{"../eql":4,"../warn":18,"should-equal":23}],10:[function(t,e){var r=t("../util");e.exports=function(t,e){var n=t.format;e.add("throw",function(e,o){var i=this.obj,s={},a="",u=!1,c=!0;try{i()}catch(f){u=!0,s=f}if(u)if(e){if("string"==typeof e)c=e==s.message;else if(e instanceof RegExp)c=e.test(s.message);else if("function"==typeof e)c=s instanceof e;else if(r.isObject(e))try{s.should.match(e)}catch(f){if(!(f instanceof t.AssertionError))throw f;a=": "+f.message,c=!1}if(c){if("function"==typeof e&&o)try{s.should.match(o)}catch(f){if(!(f instanceof t.AssertionError))throw f;a=": "+f.message,c=!1}}else"string"==typeof e||e instanceof RegExp?a=" with a message matching "+n(e)+", but got '"+s.message+"'":"function"==typeof e&&(a=" of type "+r.functionName(e)+", but got "+r.functionName(s.constructor))}else a=" (got "+n(s)+")";this.params={operator:"to throw exception"+a},this.assert(u),this.assert(c)}),e.alias("throw","throwError")}},{"../util":17}],11:[function(t,e){var r=t("../util"),n=t("../eql");e.exports=function(t,e){var o=t.format;e.add("match",function(i,s){if(this.params={operator:"to match "+o(i),message:s},!n(this.obj,i))if(r.isRegExp(i)){if(r.isString(this.obj))this.assert(i.exec(this.obj));else if(r.isArray(this.obj))this.obj.forEach(function(t){this.assert(i.exec(t))},this);else if(r.isObject(this.obj)){var a=[],u=[];r.forOwn(this.obj,function(t,e){i.exec(t)?u.push(r.formatProp(e)):a.push(r.formatProp(e)+" ("+o(t)+")")},this),a.length&&(this.params.operator+="\n not matched properties: "+a.join(", ")),u.length&&(this.params.operator+="\n matched properties: "+u.join(", ")),this.assert(0==a.length)}}else if(r.isFunction(i)){var c;c=i(this.obj),c instanceof e&&(this.params.operator+="\n "+c.getMessage()),r.isBoolean(c)&&this.assert(c)}else r.isObject(i)?(a=[],u=[],r.forOwn(i,function(e,n){try{t(this.obj[n]).match(e),u.push(r.formatProp(n))}catch(i){if(!(i instanceof t.AssertionError))throw i;a.push(r.formatProp(n)+" ("+o(this.obj[n])+")")}},this),a.length&&(this.params.operator+="\n not matched properties: "+a.join(", ")),u.length&&(this.params.operator+="\n matched properties: "+u.join(", ")),this.assert(0==a.length)):this.assert(!1)}),e.add("matchEach",function(t,e){this.params={operator:"to match each "+o(t),message:e};var i=t;r.isRegExp(t)?i=function(e){return!!t.exec(e)}:r.isFunction(t)||(i=function(e){return n(e,t)}),r.forOwn(this.obj,function(t,e){var n=i(t,e);r.isBoolean(n)&&this.assert(n)},this)})}},{"../eql":4,"../util":17}],12:[function(t,e){e.exports=function(t,e){e.add("NaN",function(){this.params={operator:"to be NaN"},this.assert(this.obj!==this.obj)},!0),e.add("Infinity",function(){this.params={operator:"to be Infinity"},this.obj.should.be.a.Number.and.not.a.NaN.and.assert(!isFinite(this.obj))},!0),e.add("within",function(t,e,r){this.params={operator:"to be within "+t+".."+e,message:r},this.assert(this.obj>=t&&this.obj<=e)}),e.add("approximately",function(t,e,r){this.params={operator:"to be approximately "+t+" ±"+e,message:r},this.assert(Math.abs(this.obj-t)<=e)}),e.add("above",function(t,e){this.params={operator:"to be above "+t,message:e},this.assert(this.obj>t)}),e.add("below",function(t,e){this.params={operator:"to be below "+t,message:e},this.assert(this.obj<t)}),e.alias("above","greaterThan"),e.alias("below","lessThan")}},{}],13:[function(t,e){var r=t("../util"),n=t("../eql"),o=Array.prototype.slice;e.exports=function(t,e){var i=t.format;e.add("enumerable",function(t,e){t=String(t),this.params={operator:"to have enumerable property "+r.formatProp(t)},this.assert(this.obj.propertyIsEnumerable(t)),arguments.length>1&&(this.params.operator+=" equal to "+i(e),this.assert(n(e,this.obj[t])))}),e.add("property",function(t,e){if(t=String(t),arguments.length>1){var r={};r[t]=e,this.have.properties(r)}else this.have.properties(t);this.obj=this.obj[t]}),e.add("properties",function(t){var e={};arguments.length>1?t=o.call(arguments):r.isArray(t)||(r.isString(t)?t=[t]:(e=t,t=Object.keys(t)));var s=Object(this.obj),a=[];t.forEach(function(t){t in s||a.push(r.formatProp(t))});var u=a;0===u.length?u=t.map(r.formatProp):this.anyOne&&(u=t.filter(function(t){return a.indexOf(r.formatProp(t))<0}).map(r.formatProp));var c=(1===u.length?"to have property ":"to have "+(this.anyOne?"any of ":"")+"properties ")+u.join(", ");this.params={obj:this.formattedObj(),operator:c},this.assert(0===a.length||this.anyOne&&a.length!=t.length);var f=Object.keys(e);if(f.length){var l=[];u=[],f.forEach(function(t){var o=e[t];n(s[t],o)?u.push(r.formatProp(t)+" of "+i(o)):l.push(r.formatProp(t)+" of "+i(o)+" (got "+i(s[t])+")")}),(0!==l.length&&!this.anyOne||this.anyOne&&0===u.length)&&(u=l),c=(1===u.length?"to have property ":"to have "+(this.anyOne?"any of ":"")+"properties ")+u.join(", "),this.params={obj:this.formattedObj(),operator:c},this.assert(0===l.length||this.anyOne&&l.length!=f.length)}}),e.add("length",function(t,e){this.have.property("length",t,e)}),e.alias("length","lengthOf");var s=Object.prototype.hasOwnProperty;e.add("ownProperty",function(t,e){t=String(t),this.params={obj:this.formattedObj(),operator:"to have own property "+r.formatProp(t),message:e},this.assert(s.call(this.obj,t)),this.obj=this.obj[t]}),e.alias("ownProperty","hasOwnProperty"),e.add("empty",function(){if(this.params={operator:"to be empty"},r.isString(this.obj)||r.isArray(this.obj)||r.isArguments(this.obj))this.obj.should.have.property("length",0);else{var t=Object(this.obj);for(var e in t)this.obj.should.not.ownProperty(e)}},!0),e.add("keys",function(t){arguments.length>1?t=o.call(arguments):1===arguments.length&&r.isString(t)?t=[t]:0===arguments.length&&(t=[]),t=t.map(String);var e=Object(this.obj),n=[];t.forEach(function(t){s.call(this.obj,t)||n.push(r.formatProp(t))},this);var i=[];Object.keys(e).forEach(function(e){t.indexOf(e)<0&&i.push(r.formatProp(e))});var a=0===t.length?"to be empty":"to have "+(1===t.length?"key ":"keys ");this.params={operator:a+t.map(r.formatProp).join(", ")},n.length>0&&(this.params.operator+="\n missing keys: "+n.join(", ")),i.length>0&&(this.params.operator+="\n extra keys: "+i.join(", ")),this.assert(0===n.length&&0===i.length)}),e.alias("keys","key"),e.add("propertyByPath",function(e){arguments.length>1?e=o.call(arguments):1===arguments.length&&r.isString(e)?e=[e]:0===arguments.length&&(e=[]);var n=e.map(r.formatProp);e=e.map(String);for(var i,s=t(Object(this.obj)),a=[];i=e.shift();)this.params={operator:"to have property by path "+n.join(", ")+" - failed on "+r.formatProp(i)},s=s.have.property(i),a.push(i);this.params={obj:this.formattedObj(),operator:"to have property by path "+n.join(", ")},this.obj=s.obj})}},{"../eql":4,"../util":17}],14:[function(t,e){e.exports=function(t,e){e.add("startWith",function(e,r){this.params={operator:"to start with "+t.format(e),message:r},this.assert(0===this.obj.indexOf(e))}),e.add("endWith",function(e,r){this.params={operator:"to end with "+t.format(e),message:r},this.assert(this.obj.indexOf(e,this.obj.length-e.length)>=0)})}},{}],15:[function(t,e){var r=t("../util");e.exports=function(t,e){e.add("Number",function(){this.params={operator:"to be a number"},this.assert(r.isNumber(this.obj))},!0),e.add("arguments",function(){this.params={operator:"to be arguments"},this.assert(r.isArguments(this.obj))},!0),e.add("type",function(t,e){this.params={operator:"to have type "+t,message:e},(typeof this.obj).should.be.exactly(t,e)}),e.add("instanceof",function(t,e){this.params={operator:"to be an instance of "+r.functionName(t),message:e},this.assert(Object(this.obj)instanceof t)}),e.add("Function",function(){this.params={operator:"to be a function"},this.assert(r.isFunction(this.obj))},!0),e.add("Object",function(){this.params={operator:"to be an object"},this.assert(r.isObject(this.obj))},!0),e.add("String",function(){this.params={operator:"to be a string"},this.assert(r.isString(this.obj))},!0),e.add("Array",function(){this.params={operator:"to be an array"},this.assert(r.isArray(this.obj))},!0),e.add("Boolean",function(){this.params={operator:"to be a boolean"},this.assert(r.isBoolean(this.obj))},!0),e.add("Error",function(){this.params={operator:"to be an error"},this.assert(r.isError(this.obj))},!0),e.add("null",function(){this.params={operator:"to be null"},this.assert(null===this.obj)},!0),e.alias("null","Null"),e.alias("instanceof","instanceOf")}},{"../util":17}],16:[function(t,e,r){function n(t,e){var n={seen:[],stylize:i};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),j(e)?n.showHidden=e:e&&r._extend(n,e),x(n.showHidden)&&(n.showHidden=!1),x(n.depth)&&(n.depth=2),x(n.colors)&&(n.colors=!1),x(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),a(n,t,n.depth)}function o(t,e){var r=n.styles[e];return r?"["+n.colors[r][0]+"m"+t+"["+n.colors[r][1]+"m":t}function i(t){return t}function s(t){var e={};return t.forEach(function(t){e[t]=!0}),e}function a(t,e,n){if(t.customInspect&&e&&O(e.inspect)&&e.inspect!==r.inspect&&(!e.constructor||e.constructor.prototype!==e)){var o=e.inspect(n,t);return w(o)||(o=a(t,o,n)),o}var i=u(t,e);if(i)return i;var p=Object.keys(e),h=s(p);t.showHidden&&(p=Object.getOwnPropertyNames(e));var b,y=e;try{N(e)||(y=e.valueOf())}catch(v){}if(w(y)&&(p=p.filter(function(t){return!(t>=0&&t<y.length)})),z(e))return f(e);if(0===p.length){if(O(e)){var x=e.name?": "+e.name:"";return t.stylize("[Function"+x+"]","special")}if(A(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(N(e))return t.stylize(g(e),"date");if(w(y))return b=c(t,y),t.stylize("[String: "+b+"]","string");if(E(y))return b=c(t,y),t.stylize("[Number: "+b+"]","number");if(j(y))return b=c(t,y),t.stylize("[Boolean: "+b+"]","boolean")}var S="",q=!1,D=["{","}"];if(k(e)&&(q=!0,D=["[","]"]),O(e)){var P=e.name?": "+e.name:"";S=" [Function"+P+"]"}if(A(e)&&(S=" "+RegExp.prototype.toString.call(e)),N(e)&&(S=" "+g(e)),z(e)&&(S=" "+f(e)),w(y)&&(b=c(t,y),S=" [String: "+b+"]"),E(y)&&(b=c(t,y),S=" [Number: "+b+"]"),j(y)&&(b=c(t,y),S=" [Boolean: "+b+"]"),0===p.length&&(!q||0===e.length))return D[0]+S+D[1];if(0>n)return A(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var M;return M=q?l(t,e,n,h,p):p.map(function(r){return m(t,e,n,h,r,q)}),t.seen.pop(),d(M,S,D)}function u(t,e){if(x(e))return t.stylize("undefined","undefined");if(w(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return E(e)?0===e&&0>1/e?t.stylize("-0","number"):t.stylize(""+e,"number"):j(e)?t.stylize(""+e,"boolean"):S(e)?t.stylize("null","null"):void 0}function c(t,e){var r=t.stylize;t.stylize=i;var n=u(t,e);return t.stylize=r,n}function f(t){return"["+Error.prototype.toString.call(t)+"]"}function l(t,e,r,n,o){for(var i=[],s=0,a=e.length;a>s;++s)i.push(b(e,String(s))?m(t,e,r,n,String(s),!0):"");return o.forEach(function(o){o.match(/^\d+$/)||i.push(m(t,e,r,n,o,!0))}),i}function p(t){return 10>t?"0"+t:""+t}function h(t){return 100>t?"0"+p(t):""+t}function g(t){var e=t.getTimezoneOffset(),r=Math.abs(e),n=Math.floor(r/60),o=r-60*n,i="GMT"+(0>e?"+":"-")+p(n)+p(o);return t.toLocaleDateString()+" "+t.toLocaleTimeString()+"."+h(t.getMilliseconds())+" "+i}function m(t,e,r,n,o,i){var s,u,c;if(c=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]},c.get?u=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(u=t.stylize("[Setter]","special")),b(n,o)||(s="["+o+"]"),u||(t.seen.indexOf(c.value)<0?(u=S(r)?a(t,c.value,null):a(t,c.value,r-1),u.indexOf("\n")>-1&&(u=i?u.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+u.split("\n").map(function(t){return" "+t}).join("\n"))):u=t.stylize("[Circular]","special")),x(s)){if(i&&o.match(/^\d+$/))return u;s=JSON.stringify(""+o),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'").replace(/\\\\/g,"\\"),s=t.stylize(s,"string"))}return s+": "+u}function d(t,e,r){var n=t.reduce(function(t,e){return t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return n>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function b(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var y=t("./util"),j=y.isBoolean,v=y.isObject,x=y.isUndefined,O=y.isFunction,w=y.isString,E=y.isNumber,S=y.isNull,A=y.isRegExp,N=y.isDate,z=y.isError,k=y.isArray;r.inspect=n,n.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]},n.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},r._extend=function(t,e){if(!e||!v(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}},{"./util":17}],17:[function(t,e,r){function n(t){return f(t)&&(t.__ArrayLike||Array.isArray(t))}function o(t){return"number"==typeof t}function i(t){return"string"==typeof t}function s(t){return"boolean"==typeof t}function a(t){return"undefined"!=typeof Buffer&&t instanceof Buffer}function u(t){return f(t)&&"[object Date]"===c(t)}function c(t){return Object.prototype.toString.call(t)}function f(t){return"object"==typeof t&&null!==t}function l(t){return f(t)&&"[object RegExp]"===c(t)}function p(t){return null==t}function h(t){return null===t}function g(t){return"[object Arguments]"===c(t)}function m(t){return f(t)&&"[object Error]"===c(t)||t instanceof Error}function d(t){return void 0===t}r.isWrapperType=function(t){return t instanceof Number||t instanceof String||t instanceof Boolean},r.merge=function(t,e){if(t&&e)for(var r in e)t[r]=e[r];return t},r.isArray=n,r.isNumber=o,r.isBoolean=s,r.isString=i,r.isBuffer=a,r.isDate=u,r.isObject=f,r.isRegExp=l,r.isNullOrUndefined=p,r.isNull=h,r.isArguments=g,r.isFunction=function(t){return"function"==typeof t||t instanceof Function},r.isError=m,r.isUndefined=d,r.AssertionError=t("assert").AssertionError;var b=Object.prototype.hasOwnProperty;r.forOwn=function(t,e,r){for(var n in t)b.call(t,n)&&e.call(r,t[n],n)};var y=/^\s*function\s*(\S*)\s*\(/;r.functionName=function(t){if(t.name)return t.name;var e=t.toString().match(y)[1];return e},r.formatProp=function(t){return t=JSON.stringify(""+t),t=t.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?t.substr(1,t.length-2):t.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'").replace(/\\\\/g,"\\")}},{assert:19}],18:[function(t,e,r){function n(t){return function(e){e&&t.concat(i).forEach(function(t){console.warn(o,t)})}}var o="[33mWARN[39m",i=["To disable any warnings add [33mshould.warn = false[39m","If you think that is not right, raise issue on github https://github.com/shouldjs/should.js/issues"];r.staticShouldUnWrap=n(["Static version of should was called with primitive type wrapper like should(new Number(10))","current version will unwrap it to assert on primitive value for you","but that will be changed in future versions, make sure you know what are you doing"]),r.nonStrictEql=n(["Strict version of eql return different result for this comparison",'it means that e.g { a: 10 } is equal to { a: "10" }, make sure it is expected'])},{}],19:[function(t,e){function r(t,e){return p.isUndefined(e)?""+e:!p.isNumber(e)||!isNaN(e)&&isFinite(e)?p.isFunction(e)||p.isRegExp(e)?e.toString():e:e.toString()}function n(t,e){return p.isString(t)?t.length<e?t:t.slice(0,e):t}function o(t){return n(JSON.stringify(t.actual,r),128)+" "+t.operator+" "+n(JSON.stringify(t.expected,r),128)}function i(t,e,r,n,o){throw new m.AssertionError({message:r,actual:t,expected:e,operator:n,stackStartFunction:o})}function s(t,e){t||i(t,!0,e,"==",m.ok)}function a(t,e){if(t===e)return!0;if(p.isBuffer(t)&&p.isBuffer(e)){if(t.length!=e.length)return!1;for(var r=0;r<t.length;r++)if(t[r]!==e[r])return!1;return!0}return p.isDate(t)&&p.isDate(e)?t.getTime()===e.getTime():p.isRegExp(t)&&p.isRegExp(e)?t.source===e.source&&t.global===e.global&&t.multiline===e.multiline&&t.lastIndex===e.lastIndex&&t.ignoreCase===e.ignoreCase:p.isObject(t)||p.isObject(e)?c(t,e):t==e}function u(t){return"[object Arguments]"==Object.prototype.toString.call(t)}function c(t,e){if(p.isNullOrUndefined(t)||p.isNullOrUndefined(e))return!1;if(t.prototype!==e.prototype)return!1;if(u(t))return u(e)?(t=h.call(t),e=h.call(e),a(t,e)):!1;try{var r,n,o=d(t),i=d(e)}catch(s){return!1}if(o.length!=i.length)return!1;for(o.sort(),i.sort(),n=o.length-1;n>=0;n--)if(o[n]!=i[n])return!1;for(n=o.length-1;n>=0;n--)if(r=o[n],!a(t[r],e[r]))return!1;return!0}function f(t,e){return t&&e?"[object RegExp]"==Object.prototype.toString.call(e)?e.test(t):t instanceof e?!0:e.call({},t)===!0?!0:!1:!1}function l(t,e,r,n){var o;p.isString(r)&&(n=r,r=null);try{e()}catch(s){o=s}if(n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),t&&!o&&i(o,r,"Missing expected exception"+n),!t&&f(o,r)&&i(o,r,"Got unwanted exception"+n),t&&o&&r&&!f(o,r)||!t&&o)throw o}var p=t("util/"),h=Array.prototype.slice,g=Object.prototype.hasOwnProperty,m=e.exports=s;m.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=o(this),this.generatedMessage=!0);var e=t.stackStartFunction||i;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var n=r.stack,s=e.name,a=n.indexOf("\n"+s);if(a>=0){var u=n.indexOf("\n",a+1);n=n.substring(u+1)}this.stack=n}}},p.inherits(m.AssertionError,Error),m.fail=i,m.ok=s,m.equal=function(t,e,r){t!=e&&i(t,e,r,"==",m.equal)},m.notEqual=function(t,e,r){t==e&&i(t,e,r,"!=",m.notEqual)},m.deepEqual=function(t,e,r){a(t,e)||i(t,e,r,"deepEqual",m.deepEqual)},m.notDeepEqual=function(t,e,r){a(t,e)&&i(t,e,r,"notDeepEqual",m.notDeepEqual)},m.strictEqual=function(t,e,r){t!==e&&i(t,e,r,"===",m.strictEqual)},m.notStrictEqual=function(t,e,r){t===e&&i(t,e,r,"!==",m.notStrictEqual)},m.throws=function(){l.apply(this,[!0].concat(h.call(arguments)))},m.doesNotThrow=function(){l.apply(this,[!1].concat(h.call(arguments)))},m.ifError=function(t){if(t)throw t};var d=Object.keys||function(t){var e=[];for(var r in t)g.call(t,r)&&e.push(r);return e}},{"util/":22}],20:[function(t,e){e.exports="function"==typeof Object.create?function(t,e){t.super_=e,t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:function(t,e){t.super_=e;var r=function(){};r.prototype=e.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],21:[function(t,e){e.exports=function(t){return t&&"object"==typeof t&&"function"==typeof t.copy&&"function"==typeof t.fill&&"function"==typeof t.readUInt8}},{}],22:[function(t,e,r){function n(t,e){var n={seen:[],stylize:i};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),g(e)?n.showHidden=e:e&&r._extend(n,e),v(n.showHidden)&&(n.showHidden=!1),v(n.depth)&&(n.depth=2),v(n.colors)&&(n.colors=!1),v(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=o),a(n,t,n.depth)}function o(t,e){var r=n.styles[e];return r?"["+n.colors[r][0]+"m"+t+"["+n.colors[r][1]+"m":t}function i(t){return t}function s(t){var e={};return t.forEach(function(t){e[t]=!0}),e}function a(t,e,n){if(t.customInspect&&e&&S(e.inspect)&&e.inspect!==r.inspect&&(!e.constructor||e.constructor.prototype!==e)){var o=e.inspect(n,t);return y(o)||(o=a(t,o,n)),o}var i=u(t,e);if(i)return i;var g=Object.keys(e),m=s(g);if(t.showHidden&&(g=Object.getOwnPropertyNames(e)),E(e)&&(g.indexOf("message")>=0||g.indexOf("description")>=0))return c(e);if(0===g.length){if(S(e)){var d=e.name?": "+e.name:"";return t.stylize("[Function"+d+"]","special")}if(x(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(w(e))return t.stylize(Date.prototype.toString.call(e),"date");if(E(e))return c(e)}var b="",j=!1,v=["{","}"];if(h(e)&&(j=!0,v=["[","]"]),S(e)){var O=e.name?": "+e.name:"";b=" [Function"+O+"]"}if(x(e)&&(b=" "+RegExp.prototype.toString.call(e)),w(e)&&(b=" "+Date.prototype.toUTCString.call(e)),E(e)&&(b=" "+c(e)),0===g.length&&(!j||0==e.length))return v[0]+b+v[1];if(0>n)return x(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special");t.seen.push(e);var A;return A=j?f(t,e,n,m,g):g.map(function(r){return l(t,e,n,m,r,j)}),t.seen.pop(),p(A,b,v)}function u(t,e){if(v(e))return t.stylize("undefined","undefined");if(y(e)){var r="'"+JSON.stringify(e).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return t.stylize(r,"string")}return b(e)?t.stylize(""+e,"number"):g(e)?t.stylize(""+e,"boolean"):m(e)?t.stylize("null","null"):void 0}function c(t){return"["+Error.prototype.toString.call(t)+"]"}function f(t,e,r,n,o){for(var i=[],s=0,a=e.length;a>s;++s)i.push(q(e,String(s))?l(t,e,r,n,String(s),!0):"");return o.forEach(function(o){o.match(/^\d+$/)||i.push(l(t,e,r,n,o,!0))}),i}function l(t,e,r,n,o,i){var s,u,c;if(c=Object.getOwnPropertyDescriptor(e,o)||{value:e[o]},c.get?u=c.set?t.stylize("[Getter/Setter]","special"):t.stylize("[Getter]","special"):c.set&&(u=t.stylize("[Setter]","special")),q(n,o)||(s="["+o+"]"),u||(t.seen.indexOf(c.value)<0?(u=m(r)?a(t,c.value,null):a(t,c.value,r-1),u.indexOf("\n")>-1&&(u=i?u.split("\n").map(function(t){return" "+t}).join("\n").substr(2):"\n"+u.split("\n").map(function(t){return" "+t}).join("\n"))):u=t.stylize("[Circular]","special")),v(s)){if(i&&o.match(/^\d+$/))return u;s=JSON.stringify(""+o),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=t.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=t.stylize(s,"string"))}return s+": "+u}function p(t,e,r){var n=0,o=t.reduce(function(t,e){return n++,e.indexOf("\n")>=0&&n++,t+e.replace(/\u001b\[\d\d?m/g,"").length+1},0);return o>60?r[0]+(""===e?"":e+"\n ")+" "+t.join(",\n ")+" "+r[1]:r[0]+e+" "+t.join(", ")+" "+r[1]}function h(t){return Array.isArray(t)}function g(t){return"boolean"==typeof t}function m(t){return null===t}function d(t){return null==t}function b(t){return"number"==typeof t}function y(t){return"string"==typeof t}function j(t){return"symbol"==typeof t}function v(t){return void 0===t}function x(t){return O(t)&&"[object RegExp]"===N(t)}function O(t){return"object"==typeof t&&null!==t}function w(t){return O(t)&&"[object Date]"===N(t)}function E(t){return O(t)&&("[object Error]"===N(t)||t instanceof Error)}function S(t){return"function"==typeof t}function A(t){return null===t||"boolean"==typeof t||"number"==typeof t||"string"==typeof t||"symbol"==typeof t||"undefined"==typeof t}function N(t){return Object.prototype.toString.call(t)}function z(t){return 10>t?"0"+t.toString(10):t.toString(10)}function k(){var t=new Date,e=[z(t.getHours()),z(t.getMinutes()),z(t.getSeconds())].join(":");return[t.getDate(),B[t.getMonth()],e].join(" ")}function q(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var D=/%[sdj%]/g;r.format=function(t){if(!y(t)){for(var e=[],r=0;r<arguments.length;r++)e.push(n(arguments[r]));return e.join(" ")}for(var r=1,o=arguments,i=o.length,s=String(t).replace(D,function(t){if("%%"===t)return"%";if(r>=i)return t;switch(t){case"%s":return String(o[r++]);case"%d":return Number(o[r++]);case"%j":try{return JSON.stringify(o[r++])}catch(e){return"[Circular]"}default:return t}}),a=o[r];i>r;a=o[++r])s+=m(a)||!O(a)?" "+a:" "+n(a);return s},r.deprecate=function(t,e){function n(){if(!o){if(process.throwDeprecation)throw new Error(e);process.traceDeprecation?console.trace(e):console.error(e),o=!0}return t.apply(this,arguments)}if(v(global.process))return function(){return r.deprecate(t,e).apply(this,arguments)};if(process.noDeprecation===!0)return t;var o=!1;return n};var P,M={};r.debuglog=function(t){if(v(P)&&(P=process.env.NODE_DEBUG||""),t=t.toUpperCase(),!M[t])if(new RegExp("\\b"+t+"\\b","i").test(P)){var e=process.pid;M[t]=function(){var n=r.format.apply(r,arguments);console.error("%s %d: %s",t,e,n)}}else M[t]=function(){};return M[t]},r.inspect=n,n.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]},n.styles={special:"cyan",number:"yellow","boolean":"yellow",undefined:"grey","null":"bold",string:"green",date:"magenta",regexp:"red"},r.isArray=h,r.isBoolean=g,r.isNull=m,r.isNullOrUndefined=d,r.isNumber=b,r.isString=y,r.isSymbol=j,r.isUndefined=v,r.isRegExp=x,r.isObject=O,r.isDate=w,r.isError=E,r.isFunction=S,r.isPrimitive=A,r.isBuffer=t("./support/isBuffer"); | ||
var B=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];r.log=function(){console.log("%s - %s",k(),r.format.apply(r,arguments))},r.inherits=t("inherits"),r._extend=function(t,e){if(!e||!O(e))return t;for(var r=Object.keys(e),n=r.length;n--;)t[r[n]]=e[r[n]];return t}},{"./support/isBuffer":21,inherits:20}],23:[function(t,e){function r(t){var e=typeof t;switch(e){case u:return u;case c:return c;case f:return f;case l:return l;case h:return h;case v:return v;case p:if(null===t)return g;var r=o.call(t);switch(r){case"[object String]":return f;case"[object Boolean]":return l;case"[object Number]":return u;case"[object Array]":return m;case"[object RegExp]":return d;case"[object Error]":return y;case"[object Date]":return b;case"[object Arguments]":return j;case"[object Math]":return p;case"[object JSON]":return p;case"[object ArrayBuffer]":return x;case"[object Int8Array]":return O;case"[object Uint8Array]":return O;case"[object Uint8ClampedArray]":return O;case"[object Int16Array]":return O;case"[object Uint16Array]":return O;case"[object Int32Array]":return O;case"[object Uint32Array]":return O;case"[object Float32Array]":return O;case"[object Float64Array]":return O;case"[object DataView]":return w;case"[object Map]":return E;case"[object WeakMap]":return N;case"[object Set]":return S;case"[object WeakSet]":return A;case"[object Promise]":return z;case"[object Window]":return P;case"[object HTMLDocument]":return D;case"[object Blob]":return F;case"[object File]":return M;case"[object FileList]":return B;default:if(s&&t instanceof Promise)return z;if(a&&t instanceof Buffer)return k;if(/^\[object HTML\w+Element\]$/.test(r))return q;if("[object Object]"===r)return p}}}function n(t,e,o,s){if(t===e)return 0!==t||1/t==1/e;var a=r(t),c=r(e);if(a!==c)return!1;switch(a){case u:return t!==t?e!==e:0===t?1/t===1/e:t===e;case d:return String(t)===String(e);case l:case f:return t===e;case b:return+t===+e;case k:if(t.length!==e.length)return!1;for(var p=t.length;p--;)if(t[p]!==e[p])return!1;return!0;case y:if(t.name!==e.name||t.message!==e.message)return!1;break;case x:if(t.byteLength!==e.byteLength)return!1;if("undefined"!=typeof Int8Array){for(var p=(new Int8Array(t),new Int8Array(e),t.byteLength);p--;)if(t[p]!==e[p])return!1;return!0}return!1}o||(o=[]),s||(s=[]);for(var g=o.length;g--;)if(o[g]==t)return s[g]==e;o.push(t),s.push(e);var v,O=0,w=!0;if((a===m||a===j)&&t.length!==e.length)return!1;if(c===h&&t.toString()!==e.toString())return!1;for(v in e)if(i.call(e,v)&&(O++,w=w&&i.call(t,v)&&n(t[v],e[v],o,s),!w))return w;for(v in t)if(i.call(t,v)&&(w=w&&--O>-1,!w))return w;return o.pop(),s.pop(),c===h&&(w=w&&n(t.prototype,e.prototype)),w}var o=Object.prototype.toString,i=Object.prototype.hasOwnProperty,s="undefined"!=typeof Promise,a="undefined"!=typeof Buffer,u="number",c="undefined",f="string",l="boolean",p="object",h="function",g="null",m="array",d="regexp",b="date",y="error",j="arguments",v="symbol",x="array-buffer",O="typed-array",w="data-view",E="map",S="set",A="weak-set",N="weak-map",z="promise",k="buffer",q="html-element",D="document",P="window",M="file",B="file-list",F="blob";e.exports=n},{}]},{},[1])(1)}); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
253673
41
4136
722
1
12
+ Addedshould-equal@0.0.1
+ Addedshould-equal@0.0.1(transitive)