bluebird
Advanced tools
Comparing version 2.9.32 to 2.9.33
@@ -385,3 +385,4 @@ "use strict"; | ||
} | ||
if (!("stack" in err) && hasStackAfterThrow) { | ||
if (!("stack" in err) && hasStackAfterThrow && | ||
typeof Error.stackTraceLimit === "number") { | ||
stackFramePattern = v8stackFramePattern; | ||
@@ -388,0 +389,0 @@ formatStack = v8stackFormatter; |
@@ -13,4 +13,13 @@ "use strict"; | ||
var defaultPromisified = {__isPromisified__: true}; | ||
var noCopyPropsPattern = | ||
/^(?:length|name|arguments|caller|callee|prototype|__isPromisified__)$/; | ||
var noCopyProps = [ | ||
"arity", "length", | ||
"name", | ||
"arguments", | ||
"caller", | ||
"callee", | ||
"prototype", | ||
"__isPromisified__" | ||
]; | ||
var noCopyPropsPattern = new RegExp("^(?:" + noCopyProps.join("|") + ")$"); | ||
var defaultFilter = function(name) { | ||
@@ -64,3 +73,2 @@ return util.isIdentifier(name) && | ||
if (typeof value === "function" && | ||
!util.isNativeFunctionMethod(value) && | ||
!isPromisified(value) && | ||
@@ -67,0 +75,0 @@ !hasPromisified(obj, key, suffix) && |
@@ -24,3 +24,5 @@ "use strict"; | ||
try { | ||
return tryCatchTarget.apply(this, arguments); | ||
var target = tryCatchTarget; | ||
tryCatchTarget = null; | ||
return target.apply(this, arguments); | ||
} catch (e) { | ||
@@ -86,2 +88,3 @@ errorObj.e = e; | ||
var desc = Object.getOwnPropertyDescriptor(obj, key); | ||
if (desc != null) { | ||
@@ -114,4 +117,18 @@ return desc.get == null && desc.set == null | ||
var inheritedDataKeys = (function() { | ||
var excludedPrototypes = [ | ||
Array.prototype, | ||
Object.prototype, | ||
Function.prototype | ||
]; | ||
var isExcludedProto = function(val) { | ||
for (var i = 0; i < excludedPrototypes.length; ++i) { | ||
if (excludedPrototypes[i] === val) { | ||
return true; | ||
} | ||
} | ||
return false; | ||
}; | ||
if (es5.isES5) { | ||
var oProto = Object.prototype; | ||
var getKeys = Object.getOwnPropertyNames; | ||
@@ -121,3 +138,3 @@ return function(obj) { | ||
var visitedKeys = Object.create(null); | ||
while (obj != null && obj !== oProto) { | ||
while (obj != null && !isExcludedProto(obj)) { | ||
var keys; | ||
@@ -143,7 +160,19 @@ try { | ||
} else { | ||
var hasProp = {}.hasOwnProperty; | ||
return function(obj) { | ||
if (isExcludedProto(obj)) return []; | ||
var ret = []; | ||
/*jshint forin:false */ | ||
for (var key in obj) { | ||
ret.push(key); | ||
enumeration: for (var key in obj) { | ||
if (hasProp.call(obj, key)) { | ||
ret.push(key); | ||
} else { | ||
for (var i = 0; i < excludedPrototypes.length; ++i) { | ||
if (hasProp.call(excludedPrototypes[i], key)) { | ||
continue enumeration; | ||
} | ||
} | ||
ret.push(key); | ||
} | ||
} | ||
@@ -161,6 +190,11 @@ return ret; | ||
var keys = es5.names(fn.prototype); | ||
if (((es5.isES5 && keys.length > 1) || | ||
(keys.length > 0 && | ||
!(keys.length === 1 && keys[0] === "constructor"))) || | ||
thisAssignmentPattern.test(fn + "")) { | ||
var hasMethods = es5.isES5 && keys.length > 1; | ||
var hasMethodsOtherThanConstructor = keys.length > 0 && | ||
!(keys.length === 1 && keys[0] === "constructor"); | ||
var hasThisAssignmentAndStaticMethods = | ||
thisAssignmentPattern.test(fn + "") && es5.names(fn).length > 0; | ||
if (hasMethods || hasMethodsOtherThanConstructor || | ||
hasThisAssignmentAndStaticMethods) { | ||
return true; | ||
@@ -247,3 +281,5 @@ } | ||
if (filter(key)) { | ||
es5.defineProperty(to, key, es5.getDescriptor(from, key)); | ||
try { | ||
es5.defineProperty(to, key, es5.getDescriptor(from, key)); | ||
} catch (ignore) {} | ||
} | ||
@@ -253,9 +289,2 @@ } | ||
function isNativeFunctionMethod(fn) { | ||
return fn === fn.call || | ||
fn === fn.toString || | ||
fn === fn.bind || | ||
fn === fn.apply; | ||
} | ||
var ret = { | ||
@@ -290,4 +319,3 @@ isClass: isClass, | ||
isNode: typeof process !== "undefined" && | ||
classString(process).toLowerCase() === "[object process]", | ||
isNativeFunctionMethod: isNativeFunctionMethod | ||
classString(process).toLowerCase() === "[object process]" | ||
}; | ||
@@ -294,0 +322,0 @@ ret.isRecentNode = ret.isNode && (function() { |
{ | ||
"name": "bluebird", | ||
"description": "Full featured Promises/A+ implementation with exceptionally good performance", | ||
"version": "2.9.32", | ||
"version": "2.9.33", | ||
"keywords": [ | ||
@@ -18,3 +18,6 @@ "promise", | ||
"dsl", | ||
"fluent interface" | ||
"fluent interface", | ||
"parallel", | ||
"thread", | ||
"concurrency" | ||
], | ||
@@ -21,0 +24,0 @@ "scripts": { |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
436469
45
8821