diff options
Diffstat (limited to 'vnfmarket/src/main/webapp/vnfmarket/node_modules/kew/kew.js')
-rw-r--r-- | vnfmarket/src/main/webapp/vnfmarket/node_modules/kew/kew.js | 860 |
1 files changed, 0 insertions, 860 deletions
diff --git a/vnfmarket/src/main/webapp/vnfmarket/node_modules/kew/kew.js b/vnfmarket/src/main/webapp/vnfmarket/node_modules/kew/kew.js deleted file mode 100644 index 71a90d16..00000000 --- a/vnfmarket/src/main/webapp/vnfmarket/node_modules/kew/kew.js +++ /dev/null @@ -1,860 +0,0 @@ - -/** - * An object representing a "promise" for a future value - * - * @param {?function(T, ?)=} onSuccess a function to handle successful - * resolution of this promise - * @param {?function(!Error, ?)=} onFail a function to handle failed - * resolution of this promise - * @constructor - * @template T - */ -function Promise(onSuccess, onFail) { - this.promise = this - this._isPromise = true - this._successFn = onSuccess - this._failFn = onFail - this._scope = this - this._boundArgs = null - this._hasContext = false - this._nextContext = undefined - this._currentContext = undefined -} - -/** - * @param {function()} callback - */ -function nextTick (callback) { - callback() -} - -if (typeof process !== 'undefined' && typeof process.nextTick === 'function') { - nextTick = process.nextTick -} - -/** - * All callback execution should go through this function. While the - * implementation below is simple, it can be replaced with more sophisticated - * implementations that enforce QoS on the event loop. - * - * @param {Promise} defer - * @param {Function} callback - * @param {Object|undefined} scope - * @param {Array} args - */ -function nextTickCallback (defer, callback, scope, args) { - try { - defer.resolve(callback.apply(scope, args)) - } catch (thrown) { - defer.reject(thrown) - } -} - -/** - * Used for accessing the nextTick function from outside the kew module. - * - * @return {Function} - */ -function getNextTickFunction () { - return nextTick -} - -/** - * Used for overriding the nextTick function from outside the kew module so that - * the user can plug and play lower level schedulers - * @param {!Function} fn - */ -function setNextTickFunction (fn) { - nextTick = fn -} - -/** - * Keep track of the number of promises that are rejected along side - * the number of rejected promises we call _failFn on so we can look - * for leaked rejections. - * @constructor - */ -function PromiseStats() { - /** @type {number} */ - this.errorsEmitted = 0 - - /** @type {number} */ - this.errorsHandled = 0 -} - -var stats = new PromiseStats() - -Promise.prototype._handleError = function () { - if (!this._errorHandled) { - stats.errorsHandled++ - this._errorHandled = true - } -} - -/** - * Specify that the current promise should have a specified context - * @param {*} context context - * @private - */ -Promise.prototype._useContext = function (context) { - this._nextContext = this._currentContext = context - this._hasContext = true - return this -} - -Promise.prototype.clearContext = function () { - this._hasContext = false - this._nextContext = undefined - return this -} - -/** - * Set the context for all promise handlers to follow - * - * NOTE(dpup): This should be considered deprecated. It does not do what most - * people would expect. The context will be passed as a second argument to all - * subsequent callbacks. - * - * @param {*} context An arbitrary context - */ -Promise.prototype.setContext = function (context) { - this._nextContext = context - this._hasContext = true - return this -} - -/** - * Get the context for a promise - * @return {*} the context set by setContext - */ -Promise.prototype.getContext = function () { - return this._nextContext -} - -/** - * Resolve this promise with a specified value - * - * @param {*=} data - */ -Promise.prototype.resolve = function (data) { - if (this._error || this._hasData) throw new Error("Unable to resolve or reject the same promise twice") - - var i - if (data && isPromise(data)) { - this._child = data - if (this._promises) { - for (i = 0; i < this._promises.length; i += 1) { - data._chainPromise(this._promises[i]) - } - delete this._promises - } - - if (this._onComplete) { - for (i = 0; i < this._onComplete.length; i+= 1) { - data.fin(this._onComplete[i]) - } - delete this._onComplete - } - } else if (data && isPromiseLike(data)) { - data.then( - function(data) { this.resolve(data) }.bind(this), - function(err) { this.reject(err) }.bind(this) - ) - } else { - this._hasData = true - this._data = data - - if (this._onComplete) { - for (i = 0; i < this._onComplete.length; i++) { - this._onComplete[i]() - } - } - - if (this._promises) { - for (i = 0; i < this._promises.length; i += 1) { - this._promises[i]._useContext(this._nextContext) - this._promises[i]._withInput(data) - } - delete this._promises - } - } -} - -/** - * Reject this promise with an error - * - * @param {!Error} e - */ -Promise.prototype.reject = function (e) { - if (this._error || this._hasData) throw new Error("Unable to resolve or reject the same promise twice") - - var i - this._error = e - stats.errorsEmitted++ - - if (this._ended) { - this._handleError() - process.nextTick(function onPromiseThrow() { - throw e - }) - } - - if (this._onComplete) { - for (i = 0; i < this._onComplete.length; i++) { - this._onComplete[i]() - } - } - - if (this._promises) { - this._handleError() - for (i = 0; i < this._promises.length; i += 1) { - this._promises[i]._useContext(this._nextContext) - this._promises[i]._withError(e) - } - delete this._promises - } -} - -/** - * Provide a callback to be called whenever this promise successfully - * resolves. Allows for an optional second callback to handle the failure - * case. - * - * @param {?function(this:void, T, ?): RESULT|undefined} onSuccess - * @param {?function(this:void, !Error, ?): RESULT=} onFail - * @return {!Promise.<RESULT>} returns a new promise with the output of the onSuccess or - * onFail handler - * @template RESULT - */ -Promise.prototype.then = function (onSuccess, onFail) { - var promise = new Promise(onSuccess, onFail) - if (this._nextContext) promise._useContext(this._nextContext) - - if (this._child) this._child._chainPromise(promise) - else this._chainPromise(promise) - - return promise -} - -/** - * Provide a callback to be called whenever this promise successfully - * resolves. The callback will be executed in the context of the provided scope. - * - * @param {function(this:SCOPE, ...): RESULT} onSuccess - * @param {SCOPE} scope Object whose context callback will be executed in. - * @param {...*} var_args Additional arguments to be passed to the promise callback. - * @return {!Promise.<RESULT>} returns a new promise with the output of the onSuccess - * @template SCOPE, RESULT - */ -Promise.prototype.thenBound = function (onSuccess, scope, var_args) { - var promise = new Promise(onSuccess) - if (this._nextContext) promise._useContext(this._nextContext) - - promise._scope = scope - if (arguments.length > 2) { - promise._boundArgs = Array.prototype.slice.call(arguments, 2) - } - - // Chaining must happen after setting args and scope since it may fire callback. - if (this._child) this._child._chainPromise(promise) - else this._chainPromise(promise) - - return promise -} - -/** - * Provide a callback to be called whenever this promise is rejected - * - * @param {function(this:void, !Error, ?)} onFail - * @return {!Promise.<T>} returns a new promise with the output of the onFail handler - */ -Promise.prototype.fail = function (onFail) { - return this.then(null, onFail) -} - -/** - * Provide a callback to be called whenever this promise is rejected. - * The callback will be executed in the context of the provided scope. - * - * @param {function(this:SCOPE, ...)} onFail - * @param {SCOPE} scope Object whose context callback will be executed in. - * @param {...?} var_args - * @return {!Promise.<T>} returns a new promise with the output of the onSuccess - * @template SCOPE - */ -Promise.prototype.failBound = function (onFail, scope, var_args) { - var promise = new Promise(null, onFail) - if (this._nextContext) promise._useContext(this._nextContext) - - promise._scope = scope - if (arguments.length > 2) { - promise._boundArgs = Array.prototype.slice.call(arguments, 2) - } - - // Chaining must happen after setting args and scope since it may fire callback. - if (this._child) this._child._chainPromise(promise) - else this._chainPromise(promise) - - return promise -} - -/** - * Spread a promises outputs to the functions arguments. - * @param {?function(this:void, ...): RESULT|undefined} onSuccess - * @return {!Promise.<RESULT>} returns a new promise with the output of the onSuccess or - * onFail handler - * @template RESULT - */ -Promise.prototype.spread = function (onSuccess) { - return this.then(allInternal) - .then(function (array) { - return onSuccess.apply(null, array) - }) -} - -/** - * Spread a promises outputs to the functions arguments. - * @param {function(this:SCOPE, ...): RESULT} onSuccess - * @param {SCOPE} scope Object whose context callback will be executed in. - * @param {...*} var_args Additional arguments to be passed to the promise callback. - * @return {!Promise.<RESULT>} returns a new promise with the output of the onSuccess - * @template SCOPE, RESULT - */ -Promise.prototype.spreadBound = function (onSuccess, scope, var_args) { - var args = Array.prototype.slice.call(arguments, 2) - return this.then(allInternal) - .then(function (array) { - return onSuccess.apply(scope, args.concat(array)) - }) -} - -/** - * Provide a callback to be called whenever this promise is either resolved - * or rejected. - * - * @param {function()} onComplete - * @return {!Promise.<T>} returns the current promise - */ -Promise.prototype.fin = function (onComplete) { - if (this._hasData || this._error) { - onComplete() - return this - } - - if (this._child) { - this._child.fin(onComplete) - } else { - if (!this._onComplete) this._onComplete = [onComplete] - else this._onComplete.push(onComplete) - } - - return this -} - -/** - * Mark this promise as "ended". If the promise is rejected, this will throw an - * error in whatever scope it happens to be in - * - * @return {!Promise.<T>} returns the current promise - * @deprecated Prefer done(), because it's consistent with Q. - */ -Promise.prototype.end = function () { - this._end() - return this -} - - -/** - * Mark this promise as "ended". - * @private - */ -Promise.prototype._end = function () { - if (this._error) { - this._handleError() - throw this._error - } - this._ended = true - return this -} - -/** - * Close the promise. Any errors after this completes will be thrown to the global handler. - * - * @param {?function(this:void, T, ?)=} onSuccess a function to handle successful - * resolution of this promise - * @param {?function(this:void, !Error, ?)=} onFailure a function to handle failed - * resolution of this promise - * @return {void} - */ -Promise.prototype.done = function (onSuccess, onFailure) { - var self = this - if (onSuccess || onFailure) { - self = self.then(onSuccess, onFailure) - } - self._end() -} - -/** - * Return a new promise that behaves the same as the current promise except - * that it will be rejected if the current promise does not get fulfilled - * after a certain amount of time. - * - * @param {number} timeoutMs The timeout threshold in msec - * @param {string=} timeoutMsg error message - * @return {!Promise.<T>} a new promise with timeout - */ - Promise.prototype.timeout = function (timeoutMs, timeoutMsg) { - var deferred = new Promise() - var isTimeout = false - - var timeout = setTimeout(function() { - deferred.reject(new Error(timeoutMsg || 'Promise timeout after ' + timeoutMs + ' ms.')) - isTimeout = true - }, timeoutMs) - - this.then(function (data) { - if (!isTimeout) { - clearTimeout(timeout) - deferred.resolve(data) - } - }, - function (err) { - if (!isTimeout) { - clearTimeout(timeout) - deferred.reject(err) - } - }) - - return deferred.promise -} - -/** - * Attempt to resolve this promise with the specified input - * - * @param {*} data the input - */ -Promise.prototype._withInput = function (data) { - if (this._successFn) { - this._nextTick(this._successFn, [data, this._currentContext]) - } else { - this.resolve(data) - } - - // context is no longer needed - delete this._currentContext -} - -/** - * Attempt to reject this promise with the specified error - * - * @param {!Error} e - * @private - */ -Promise.prototype._withError = function (e) { - if (this._failFn) { - this._nextTick(this._failFn, [e, this._currentContext]) - } else { - this.reject(e) - } - - // context is no longer needed - delete this._currentContext -} - -/** - * Calls a function in the correct scope, and includes bound arguments. - * @param {Function} fn - * @param {Array} args - * @private - */ -Promise.prototype._nextTick = function (fn, args) { - if (this._boundArgs) { - args = this._boundArgs.concat(args) - } - nextTick(nextTickCallback.bind(null, this, fn, this._scope, args)) -} - -/** - * Chain a promise to the current promise - * - * @param {!Promise} promise the promise to chain - * @private - */ -Promise.prototype._chainPromise = function (promise) { - var i - if (this._hasContext) promise._useContext(this._nextContext) - - if (this._child) { - this._child._chainPromise(promise) - } else if (this._hasData) { - promise._withInput(this._data) - } else if (this._error) { - // We can't rely on _withError() because it's called on the chained promises - // and we need to use the source's _errorHandled state - this._handleError() - promise._withError(this._error) - } else if (!this._promises) { - this._promises = [promise] - } else { - this._promises.push(promise) - } -} - -/** - * Utility function used for creating a node-style resolver - * for deferreds - * - * @param {!Promise} deferred a promise that looks like a deferred - * @param {Error=} err an optional error - * @param {*=} data optional data - */ -function resolver(deferred, err, data) { - if (err) deferred.reject(err) - else deferred.resolve(data) -} - -/** - * Creates a node-style resolver for a deferred by wrapping - * resolver() - * - * @return {function(?Error, *)} node-style callback - */ -Promise.prototype.makeNodeResolver = function () { - return resolver.bind(null, this) -} - -/** - * Return true iff the given object is a promise of this library. - * - * Because kew's API is slightly different than other promise libraries, - * it's important that we have a test for its promise type. If you want - * to test for a more general A+ promise, you should do a cap test for - * the features you want. - * - * @param {*} obj The object to test - * @return {boolean} Whether the object is a promise - */ -function isPromise(obj) { - return !!obj._isPromise -} - -/** - * Return true iff the given object is a promise-like object, e.g. appears to - * implement Promises/A+ specification - * - * @param {*} obj The object to test - * @return {boolean} Whether the object is a promise-like object - */ -function isPromiseLike(obj) { - return (typeof obj === 'object' || typeof obj === 'function') && - typeof obj.then === 'function' -} - -/** - * Static function which creates and resolves a promise immediately - * - * @param {T} data data to resolve the promise with - * @return {!Promise.<T>} - * @template T - */ -function resolve(data) { - var promise = new Promise() - promise.resolve(data) - return promise -} - -/** - * Static function which creates and rejects a promise immediately - * - * @param {!Error} e error to reject the promise with - * @return {!Promise} - */ -function reject(e) { - var promise = new Promise() - promise.reject(e) - return promise -} - -/** - * Replace an element in an array with a new value. Used by .all() to - * call from .then() - * - * @param {!Array} arr - * @param {number} idx - * @param {*} val - * @return {*} the val that's being injected into the array - */ -function replaceEl(arr, idx, val) { - arr[idx] = val - return val -} - -/** - * Replace an element in an array as it is resolved with its value. - * Used by .allSettled(). - * - * @param {!Array} arr - * @param {number} idx - * @param {*} value The value from a resolved promise. - * @return {*} the data that's being passed in - */ -function replaceElFulfilled(arr, idx, value) { - arr[idx] = { - state: 'fulfilled', - value: value - } - return value -} - -/** - * Replace an element in an array as it is rejected with the reason. - * Used by .allSettled(). - * - * @param {!Array} arr - * @param {number} idx - * @param {*} reason The reason why the original promise is rejected - * @return {*} the data that's being passed in - */ -function replaceElRejected(arr, idx, reason) { - arr[idx] = { - state: 'rejected', - reason: reason - } - return reason -} - -/** - * Takes in an array of promises or literals and returns a promise which returns - * an array of values when all have resolved. If any fail, the promise fails. - * - * @param {!Array.<!Promise>} promises - * @return {!Promise.<!Array>} - */ -function all(promises) { - if (arguments.length != 1 || !Array.isArray(promises)) { - promises = Array.prototype.slice.call(arguments, 0) - } - return allInternal(promises) -} - -/** - * A version of all() that does not accept var_args - * - * @param {!Array.<!Promise>} promises - * @return {!Promise.<!Array>} - */ -function allInternal(promises) { - if (!promises.length) return resolve([]) - - var outputs = [] - var finished = false - var promise = new Promise() - var counter = promises.length - - for (var i = 0; i < promises.length; i += 1) { - if (!promises[i] || !isPromiseLike(promises[i])) { - outputs[i] = promises[i] - counter -= 1 - } else { - promises[i].then(replaceEl.bind(null, outputs, i)) - .then(function decrementAllCounter() { - counter-- - if (!finished && counter === 0) { - finished = true - promise.resolve(outputs) - } - }, function onAllError(e) { - if (!finished) { - finished = true - promise.reject(e) - } - }) - } - } - - if (counter === 0 && !finished) { - finished = true - promise.resolve(outputs) - } - - return promise -} - -/** - * Takes in an array of promises or values and returns a promise that is - * fulfilled with an array of state objects when all have resolved or - * rejected. If a promise is resolved, its corresponding state object is - * {state: 'fulfilled', value: Object}; whereas if a promise is rejected, its - * corresponding state object is {state: 'rejected', reason: Object}. - * - * @param {!Array} promises or values - * @return {!Promise.<!Array>} Promise fulfilled with state objects for each input - */ -function allSettled(promises) { - if (!Array.isArray(promises)) { - throw Error('The input to "allSettled()" should be an array of Promise or values') - } - if (!promises.length) return resolve([]) - - var outputs = [] - var promise = new Promise() - var counter = promises.length - - for (var i = 0; i < promises.length; i += 1) { - if (!promises[i] || !isPromiseLike(promises[i])) { - replaceElFulfilled(outputs, i, promises[i]) - if ((--counter) === 0) promise.resolve(outputs) - } else { - promises[i] - .then(replaceElFulfilled.bind(null, outputs, i), replaceElRejected.bind(null, outputs, i)) - .then(function () { - if ((--counter) === 0) promise.resolve(outputs) - }) - } - } - - return promise -} - -/** - * Takes an array of results and spreads them to the arguments of a function. - * @param {!Array} array - * @param {!Function} fn - */ -function spread(array, fn) { - resolve(array).spread(fn) -} - -/** - * Create a new Promise which looks like a deferred - * - * @return {!Promise} - */ -function defer() { - return new Promise() -} - -/** - * Return a promise which will wait a specified number of ms to resolve - * - * @param {*} delayMsOrVal A delay (in ms) if this takes one argument, or ther - * return value if it takes two. - * @param {number=} opt_delayMs - * @return {!Promise} - */ -function delay(delayMsOrVal, opt_delayMs) { - var returnVal = undefined - var delayMs = delayMsOrVal - if (typeof opt_delayMs != 'undefined') { - delayMs = opt_delayMs - returnVal = delayMsOrVal - } - - if (typeof delayMs != 'number') { - throw new Error('Bad delay value ' + delayMs) - } - - var defer = new Promise() - setTimeout(function onDelay() { - defer.resolve(returnVal) - }, delayMs) - return defer -} - -/** - * Returns a promise that has the same result as `this`, but fulfilled - * after at least ms milliseconds - * @param {number} ms - */ -Promise.prototype.delay = function (ms) { - return this.then(function (val) { - return delay(val, ms) - }) -} - -/** - * Return a promise which will evaluate the function fn in a future turn with - * the provided args - * - * @param {function(...)} fn - * @param {...*} var_args a variable number of arguments - * @return {!Promise} - */ -function fcall(fn, var_args) { - var rootArgs = Array.prototype.slice.call(arguments, 1) - var defer = new Promise() - nextTick(nextTickCallback.bind(null, defer, fn, undefined, rootArgs)) - return defer -} - - -/** - * Returns a promise that will be invoked with the result of a node style - * callback. All args to fn should be given except for the final callback arg - * - * @param {function(...)} fn - * @param {...*} var_args a variable number of arguments - * @return {!Promise} - */ -function nfcall(fn, var_args) { - // Insert an undefined argument for scope and let bindPromise() do the work. - var args = Array.prototype.slice.call(arguments, 0) - args.splice(1, 0, undefined) - return ncall.apply(undefined, args) -} - - -/** - * Like `nfcall`, but permits passing a `this` context for the call. - * - * @param {function(...)} fn - * @param {Object} scope - * @param {...*} var_args - * @return {!Promise} - */ -function ncall(fn, scope, var_args) { - return bindPromise.apply(null, arguments)() -} - - -/** - * Binds a function to a scope with an optional number of curried arguments. Attaches - * a node style callback as the last argument and returns a promise - * - * @param {function(...)} fn - * @param {Object} scope - * @param {...*} var_args a variable number of arguments - * @return {function(...)}: !Promise} - */ -function bindPromise(fn, scope, var_args) { - var rootArgs = Array.prototype.slice.call(arguments, 2) - return function onBoundPromise(var_args) { - var defer = new Promise() - try { - fn.apply(scope, rootArgs.concat(Array.prototype.slice.call(arguments, 0), defer.makeNodeResolver())) - } catch (e) { - defer.reject(e) - } - return defer - } -} - -module.exports = { - all: all, - bindPromise: bindPromise, - defer: defer, - delay: delay, - fcall: fcall, - isPromise: isPromise, - isPromiseLike: isPromiseLike, - ncall: ncall, - nfcall: nfcall, - resolve: resolve, - reject: reject, - spread: spread, - stats: stats, - allSettled: allSettled, - Promise: Promise, - getNextTickFunction: getNextTickFunction, - setNextTickFunction: setNextTickFunction, -} |