/script-kiddie/002_script_kiddie/script-kiddie/node_modules/bluebird/js/release/context.js |
@@ -0,0 +1,69 @@ |
"use strict"; |
module.exports = function(Promise) { |
var longStackTraces = false; |
var contextStack = []; |
|
Promise.prototype._promiseCreated = function() {}; |
Promise.prototype._pushContext = function() {}; |
Promise.prototype._popContext = function() {return null;}; |
Promise._peekContext = Promise.prototype._peekContext = function() {}; |
|
function Context() { |
this._trace = new Context.CapturedTrace(peekContext()); |
} |
Context.prototype._pushContext = function () { |
if (this._trace !== undefined) { |
this._trace._promiseCreated = null; |
contextStack.push(this._trace); |
} |
}; |
|
Context.prototype._popContext = function () { |
if (this._trace !== undefined) { |
var trace = contextStack.pop(); |
var ret = trace._promiseCreated; |
trace._promiseCreated = null; |
return ret; |
} |
return null; |
}; |
|
function createContext() { |
if (longStackTraces) return new Context(); |
} |
|
function peekContext() { |
var lastIndex = contextStack.length - 1; |
if (lastIndex >= 0) { |
return contextStack[lastIndex]; |
} |
return undefined; |
} |
Context.CapturedTrace = null; |
Context.create = createContext; |
Context.deactivateLongStackTraces = function() {}; |
Context.activateLongStackTraces = function() { |
var Promise_pushContext = Promise.prototype._pushContext; |
var Promise_popContext = Promise.prototype._popContext; |
var Promise_PeekContext = Promise._peekContext; |
var Promise_peekContext = Promise.prototype._peekContext; |
var Promise_promiseCreated = Promise.prototype._promiseCreated; |
Context.deactivateLongStackTraces = function() { |
Promise.prototype._pushContext = Promise_pushContext; |
Promise.prototype._popContext = Promise_popContext; |
Promise._peekContext = Promise_PeekContext; |
Promise.prototype._peekContext = Promise_peekContext; |
Promise.prototype._promiseCreated = Promise_promiseCreated; |
longStackTraces = false; |
}; |
longStackTraces = true; |
Promise.prototype._pushContext = Context.prototype._pushContext; |
Promise.prototype._popContext = Context.prototype._popContext; |
Promise._peekContext = Promise.prototype._peekContext = peekContext; |
Promise.prototype._promiseCreated = function() { |
var ctx = this._peekContext(); |
if (ctx && ctx._promiseCreated == null) ctx._promiseCreated = this; |
}; |
}; |
return Context; |
}; |