chai 4.3.8 → 4.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chai.js +68 -41
- package/package.json +2 -2
package/chai.js
CHANGED
|
@@ -9251,6 +9251,7 @@ AssertionError.prototype.toJSON = function (stack) {
|
|
|
9251
9251
|
* MIT Licensed
|
|
9252
9252
|
*/
|
|
9253
9253
|
|
|
9254
|
+
var getFunctionName = require('get-func-name');
|
|
9254
9255
|
/**
|
|
9255
9256
|
* ### .checkError
|
|
9256
9257
|
*
|
|
@@ -9330,34 +9331,6 @@ function compatibleMessage(thrown, errMatcher) {
|
|
|
9330
9331
|
return false;
|
|
9331
9332
|
}
|
|
9332
9333
|
|
|
9333
|
-
/**
|
|
9334
|
-
* ### .getFunctionName(constructorFn)
|
|
9335
|
-
*
|
|
9336
|
-
* Returns the name of a function.
|
|
9337
|
-
* This also includes a polyfill function if `constructorFn.name` is not defined.
|
|
9338
|
-
*
|
|
9339
|
-
* @name getFunctionName
|
|
9340
|
-
* @param {Function} constructorFn
|
|
9341
|
-
* @namespace Utils
|
|
9342
|
-
* @api private
|
|
9343
|
-
*/
|
|
9344
|
-
|
|
9345
|
-
var functionNameMatch = /\s*function(?:\s|\s*\/\*[^(?:*\/)]+\*\/\s*)*([^\(\/]+)/;
|
|
9346
|
-
function getFunctionName(constructorFn) {
|
|
9347
|
-
var name = '';
|
|
9348
|
-
if (typeof constructorFn.name === 'undefined') {
|
|
9349
|
-
// Here we run a polyfill if constructorFn.name is not defined
|
|
9350
|
-
var match = String(constructorFn).match(functionNameMatch);
|
|
9351
|
-
if (match) {
|
|
9352
|
-
name = match[1];
|
|
9353
|
-
}
|
|
9354
|
-
} else {
|
|
9355
|
-
name = constructorFn.name;
|
|
9356
|
-
}
|
|
9357
|
-
|
|
9358
|
-
return name;
|
|
9359
|
-
}
|
|
9360
|
-
|
|
9361
9334
|
/**
|
|
9362
9335
|
* ### .getConstructorName(errorLike)
|
|
9363
9336
|
*
|
|
@@ -9377,8 +9350,11 @@ function getConstructorName(errorLike) {
|
|
|
9377
9350
|
// If `err` is not an instance of Error it is an error constructor itself or another function.
|
|
9378
9351
|
// If we've got a common function we get its name, otherwise we may need to create a new instance
|
|
9379
9352
|
// of the error just in case it's a poorly-constructed error. Please see chaijs/chai/issues/45 to know more.
|
|
9380
|
-
constructorName = getFunctionName(errorLike)
|
|
9381
|
-
|
|
9353
|
+
constructorName = getFunctionName(errorLike);
|
|
9354
|
+
if (constructorName === '') {
|
|
9355
|
+
var newConstructorName = getFunctionName(new errorLike()); // eslint-disable-line new-cap
|
|
9356
|
+
constructorName = newConstructorName || constructorName;
|
|
9357
|
+
}
|
|
9382
9358
|
}
|
|
9383
9359
|
|
|
9384
9360
|
return constructorName;
|
|
@@ -9416,7 +9392,7 @@ module.exports = {
|
|
|
9416
9392
|
getConstructorName: getConstructorName,
|
|
9417
9393
|
};
|
|
9418
9394
|
|
|
9419
|
-
},{}],35:[function(require,module,exports){
|
|
9395
|
+
},{"get-func-name":36}],35:[function(require,module,exports){
|
|
9420
9396
|
'use strict';
|
|
9421
9397
|
/* globals Symbol: false, Uint8Array: false, WeakMap: false */
|
|
9422
9398
|
/*!
|
|
@@ -9811,8 +9787,15 @@ function getEnumerableKeys(target) {
|
|
|
9811
9787
|
return keys;
|
|
9812
9788
|
}
|
|
9813
9789
|
|
|
9814
|
-
function
|
|
9815
|
-
var keys =
|
|
9790
|
+
function getEnumerableSymbols(target) {
|
|
9791
|
+
var keys = [];
|
|
9792
|
+
var allKeys = Object.getOwnPropertySymbols(target);
|
|
9793
|
+
for (var i = 0; i < allKeys.length; i += 1) {
|
|
9794
|
+
var key = allKeys[i];
|
|
9795
|
+
if (Object.getOwnPropertyDescriptor(target, key).enumerable) {
|
|
9796
|
+
keys.push(key);
|
|
9797
|
+
}
|
|
9798
|
+
}
|
|
9816
9799
|
return keys;
|
|
9817
9800
|
}
|
|
9818
9801
|
|
|
@@ -9851,8 +9834,8 @@ function keysEqual(leftHandOperand, rightHandOperand, keys, options) {
|
|
|
9851
9834
|
function objectEqual(leftHandOperand, rightHandOperand, options) {
|
|
9852
9835
|
var leftHandKeys = getEnumerableKeys(leftHandOperand);
|
|
9853
9836
|
var rightHandKeys = getEnumerableKeys(rightHandOperand);
|
|
9854
|
-
var leftHandSymbols =
|
|
9855
|
-
var rightHandSymbols =
|
|
9837
|
+
var leftHandSymbols = getEnumerableSymbols(leftHandOperand);
|
|
9838
|
+
var rightHandSymbols = getEnumerableSymbols(rightHandOperand);
|
|
9856
9839
|
leftHandKeys = leftHandKeys.concat(leftHandSymbols);
|
|
9857
9840
|
rightHandKeys = rightHandKeys.concat(rightHandSymbols);
|
|
9858
9841
|
|
|
@@ -9928,6 +9911,7 @@ function mapSymbols(arr) {
|
|
|
9928
9911
|
|
|
9929
9912
|
var toString = Function.prototype.toString;
|
|
9930
9913
|
var functionNameMatch = /\s*function(?:\s|\s*\/\*[^(?:*\/)]+\*\/\s*)*([^\s\(\/]+)/;
|
|
9914
|
+
var maxFunctionSourceLength = 512;
|
|
9931
9915
|
function getFuncName(aFunc) {
|
|
9932
9916
|
if (typeof aFunc !== 'function') {
|
|
9933
9917
|
return null;
|
|
@@ -9935,8 +9919,15 @@ function getFuncName(aFunc) {
|
|
|
9935
9919
|
|
|
9936
9920
|
var name = '';
|
|
9937
9921
|
if (typeof Function.prototype.name === 'undefined' && typeof aFunc.name === 'undefined') {
|
|
9922
|
+
// eslint-disable-next-line prefer-reflect
|
|
9923
|
+
var functionSource = toString.call(aFunc);
|
|
9924
|
+
// To avoid unconstrained resource consumption due to pathalogically large function names,
|
|
9925
|
+
// we limit the available return value to be less than 512 characters.
|
|
9926
|
+
if (functionSource.indexOf('(') > maxFunctionSourceLength) {
|
|
9927
|
+
return name;
|
|
9928
|
+
}
|
|
9938
9929
|
// Here we run a polyfill if Function does not support the `name` property and if aFunc.name is not defined
|
|
9939
|
-
var match =
|
|
9930
|
+
var match = functionSource.match(functionNameMatch);
|
|
9940
9931
|
if (match) {
|
|
9941
9932
|
name = match[1];
|
|
9942
9933
|
}
|
|
@@ -10332,9 +10323,15 @@ module.exports = getFuncName;
|
|
|
10332
10323
|
}
|
|
10333
10324
|
|
|
10334
10325
|
function inspectDate(dateObject, options) {
|
|
10335
|
-
|
|
10336
|
-
|
|
10337
|
-
|
|
10326
|
+
var stringRepresentation = dateObject.toJSON();
|
|
10327
|
+
|
|
10328
|
+
if (stringRepresentation === null) {
|
|
10329
|
+
return 'Invalid Date';
|
|
10330
|
+
}
|
|
10331
|
+
|
|
10332
|
+
var split = stringRepresentation.split('T');
|
|
10333
|
+
var date = split[0]; // If we need to - truncate the time portion, but never the date
|
|
10334
|
+
|
|
10338
10335
|
return options.stylize("".concat(date, "T").concat(truncate(split[1], options.truncate - date.length - 1)), 'date');
|
|
10339
10336
|
}
|
|
10340
10337
|
|
|
@@ -10631,7 +10628,32 @@ module.exports = getFuncName;
|
|
|
10631
10628
|
nodeInspect = false;
|
|
10632
10629
|
}
|
|
10633
10630
|
|
|
10634
|
-
|
|
10631
|
+
function FakeMap() {
|
|
10632
|
+
// eslint-disable-next-line prefer-template
|
|
10633
|
+
this.key = 'chai/loupe__' + Math.random() + Date.now();
|
|
10634
|
+
}
|
|
10635
|
+
|
|
10636
|
+
FakeMap.prototype = {
|
|
10637
|
+
// eslint-disable-next-line object-shorthand
|
|
10638
|
+
get: function get(key) {
|
|
10639
|
+
return key[this.key];
|
|
10640
|
+
},
|
|
10641
|
+
// eslint-disable-next-line object-shorthand
|
|
10642
|
+
has: function has(key) {
|
|
10643
|
+
return this.key in key;
|
|
10644
|
+
},
|
|
10645
|
+
// eslint-disable-next-line object-shorthand
|
|
10646
|
+
set: function set(key, value) {
|
|
10647
|
+
if (Object.isExtensible(key)) {
|
|
10648
|
+
Object.defineProperty(key, this.key, {
|
|
10649
|
+
// eslint-disable-next-line object-shorthand
|
|
10650
|
+
value: value,
|
|
10651
|
+
configurable: true
|
|
10652
|
+
});
|
|
10653
|
+
}
|
|
10654
|
+
}
|
|
10655
|
+
};
|
|
10656
|
+
var constructorMap = new (typeof WeakMap === 'function' ? WeakMap : FakeMap)();
|
|
10635
10657
|
var stringTagMap = {};
|
|
10636
10658
|
var baseTypesMap = {
|
|
10637
10659
|
undefined: function undefined$1(value, options) {
|
|
@@ -10765,6 +10787,11 @@ module.exports = getFuncName;
|
|
|
10765
10787
|
} // If it is an object with an anonymous prototype, display it as an object.
|
|
10766
10788
|
|
|
10767
10789
|
|
|
10790
|
+
return inspectObject(value, options);
|
|
10791
|
+
} // last chance to check if it's an object
|
|
10792
|
+
|
|
10793
|
+
|
|
10794
|
+
if (value === Object(value)) {
|
|
10768
10795
|
return inspectObject(value, options);
|
|
10769
10796
|
} // We have run out of options! Just stringify the value
|
|
10770
10797
|
|
|
@@ -10776,7 +10803,7 @@ module.exports = getFuncName;
|
|
|
10776
10803
|
return false;
|
|
10777
10804
|
}
|
|
10778
10805
|
|
|
10779
|
-
constructorMap.
|
|
10806
|
+
constructorMap.set(constructor, inspector);
|
|
10780
10807
|
return true;
|
|
10781
10808
|
}
|
|
10782
10809
|
function registerStringTag(stringTag, inspector) {
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"Veselin Todorov <hi@vesln.com>",
|
|
18
18
|
"John Firebaugh <john.firebaugh@gmail.com>"
|
|
19
19
|
],
|
|
20
|
-
"version": "4.3.
|
|
20
|
+
"version": "4.3.9",
|
|
21
21
|
"repository": {
|
|
22
22
|
"type": "git",
|
|
23
23
|
"url": "https://github.com/chaijs/chai"
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
43
|
"assertion-error": "^1.1.0",
|
|
44
|
-
"check-error": "^1.0.
|
|
44
|
+
"check-error": "^1.0.3",
|
|
45
45
|
"deep-eql": "^4.1.2",
|
|
46
46
|
"get-func-name": "^2.0.0",
|
|
47
47
|
"loupe": "^2.3.1",
|