{"version":3,"sources":["../node_modules/synchronous-promise/index.js"],"names":["makeArrayFrom","obj","Array","prototype","slice","apply","PENDING","RESOLVED","REJECTED","SynchronousPromise","handler","this","status","_continuations","_parent","_paused","call","_continueWith","bind","_failWith","looksLikeAPromise","then","passThrough","value","nextFn","catchFn","next","unresolved","_setParent","_isRejected","push","promise","catchResult","_error","_chainPromiseData","resolve","e","reject","_runResolutions","catch","_isResolved","_data","_runRejections","finally","callback","ran","runFinally","result","err","callbackResult","pause","resume","firstPaused","_findFirstPaused","_findAncestry","reduce","acc","cur","node","children","parent","Error","data","firstPending","_findFirstPending","_setResolved","_findFirstAncestor","test","_isPending","matching","error","firstRejected","_setRejected","_takeContinuations","splice","length","continuations","self","forEach","cont","_handleUserFunctionResult","_handleWhenResolvedDataIsPromise","_handleResolutionError","continuation","e2","nextSynchronousPromise","promiseData","newData","newError","newResult","all","args","arguments","isArray","allData","numResolved","rejected","arg","idx","thisResult","doReject","Promise","RealPromise","installGlobally","__awaiter","__patched","originalAwaiter","patchAwaiterIfRequired","uninstallGlobally","module","exports"],"mappings":"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","file":"static/js/synchronous-promise.e63a47ff.chunk.js","sourcesContent":["/* jshint node: true */\r\n\"use strict\";\r\nfunction makeArrayFrom(obj) {\r\n return Array.prototype.slice.apply(obj);\r\n}\r\nvar\r\n PENDING = \"pending\",\r\n RESOLVED = \"resolved\",\r\n REJECTED = \"rejected\";\r\n\r\nfunction SynchronousPromise(handler) {\r\n this.status = PENDING;\r\n this._continuations = [];\r\n this._parent = null;\r\n this._paused = false;\r\n if (handler) {\r\n handler.call(\r\n this,\r\n this._continueWith.bind(this),\r\n this._failWith.bind(this)\r\n );\r\n }\r\n}\r\n\r\nfunction looksLikeAPromise(obj) {\r\n return obj && typeof (obj.then) === \"function\";\r\n}\r\n\r\nfunction passThrough(value) {\r\n return value;\r\n}\r\n\r\nSynchronousPromise.prototype = {\r\n then: function (nextFn, catchFn) {\r\n var next = SynchronousPromise.unresolved()._setParent(this);\r\n if (this._isRejected()) {\r\n if (this._paused) {\r\n this._continuations.push({\r\n promise: next,\r\n nextFn: nextFn,\r\n catchFn: catchFn\r\n });\r\n return next;\r\n }\r\n if (catchFn) {\r\n try {\r\n var catchResult = catchFn(this._error);\r\n if (looksLikeAPromise(catchResult)) {\r\n this._chainPromiseData(catchResult, next);\r\n return next;\r\n } else {\r\n return SynchronousPromise.resolve(catchResult)._setParent(this);\r\n }\r\n } catch (e) {\r\n return SynchronousPromise.reject(e)._setParent(this);\r\n }\r\n }\r\n return SynchronousPromise.reject(this._error)._setParent(this);\r\n }\r\n this._continuations.push({\r\n promise: next,\r\n nextFn: nextFn,\r\n catchFn: catchFn\r\n });\r\n this._runResolutions();\r\n return next;\r\n },\r\n catch: function (handler) {\r\n if (this._isResolved()) {\r\n return SynchronousPromise.resolve(this._data)._setParent(this);\r\n }\r\n var next = SynchronousPromise.unresolved()._setParent(this);\r\n this._continuations.push({\r\n promise: next,\r\n catchFn: handler\r\n });\r\n this._runRejections();\r\n return next;\r\n },\r\n finally: function(callback) {\r\n var ran = false;\r\n function runFinally(result, err) {\r\n if (!ran) {\r\n ran = true;\r\n if (!callback) {\r\n callback = passThrough;\r\n }\r\n var callbackResult = callback(result);\r\n if (looksLikeAPromise(callbackResult)) {\r\n return callbackResult.then(function() {\r\n if (err) {\r\n throw err;\r\n }\r\n return result;\r\n });\r\n } else {\r\n return result;\r\n }\r\n }\r\n }\r\n return this\r\n .then(function(result) {\r\n return runFinally(result);\r\n })\r\n .catch(function(err) {\r\n return runFinally(null, err);\r\n });\r\n },\r\n pause: function () {\r\n this._paused = true;\r\n return this;\r\n },\r\n resume: function () {\r\n var firstPaused = this._findFirstPaused();\r\n if (firstPaused) {\r\n firstPaused._paused = false;\r\n firstPaused._runResolutions();\r\n firstPaused._runRejections();\r\n }\r\n return this;\r\n },\r\n _findAncestry: function () {\r\n return this._continuations.reduce(function (acc, cur) {\r\n if (cur.promise) {\r\n var node = {\r\n promise: cur.promise,\r\n children: cur.promise._findAncestry()\r\n };\r\n acc.push(node);\r\n }\r\n return acc;\r\n }, []);\r\n },\r\n _setParent: function (parent) {\r\n if (this._parent) {\r\n throw new Error(\"parent already set\");\r\n }\r\n this._parent = parent;\r\n return this;\r\n },\r\n _continueWith: function (data) {\r\n var firstPending = this._findFirstPending();\r\n if (firstPending) {\r\n firstPending._data = data;\r\n firstPending._setResolved();\r\n }\r\n },\r\n _findFirstPending: function () {\r\n return this._findFirstAncestor(function (test) {\r\n return test._isPending && test._isPending();\r\n });\r\n },\r\n _findFirstPaused: function () {\r\n return this._findFirstAncestor(function (test) {\r\n return test._paused;\r\n });\r\n },\r\n _findFirstAncestor: function (matching) {\r\n var test = this;\r\n var result;\r\n while (test) {\r\n if (matching(test)) {\r\n result = test;\r\n }\r\n test = test._parent;\r\n }\r\n return result;\r\n },\r\n _failWith: function (error) {\r\n var firstRejected = this._findFirstPending();\r\n if (firstRejected) {\r\n firstRejected._error = error;\r\n firstRejected._setRejected();\r\n }\r\n },\r\n _takeContinuations: function () {\r\n return this._continuations.splice(0, this._continuations.length);\r\n },\r\n _runRejections: function () {\r\n if (this._paused || !this._isRejected()) {\r\n return;\r\n }\r\n var\r\n error = this._error,\r\n continuations = this._takeContinuations(),\r\n self = this;\r\n continuations.forEach(function (cont) {\r\n if (cont.catchFn) {\r\n try {\r\n var catchResult = cont.catchFn(error);\r\n self._handleUserFunctionResult(catchResult, cont.promise);\r\n } catch (e) {\r\n cont.promise.reject(e);\r\n }\r\n } else {\r\n cont.promise.reject(error);\r\n }\r\n });\r\n },\r\n _runResolutions: function () {\r\n if (this._paused || !this._isResolved() || this._isPending()) {\r\n return;\r\n }\r\n var continuations = this._takeContinuations();\r\n if (looksLikeAPromise(this._data)) {\r\n return this._handleWhenResolvedDataIsPromise(this._data);\r\n }\r\n var data = this._data;\r\n var self = this;\r\n continuations.forEach(function (cont) {\r\n if (cont.nextFn) {\r\n try {\r\n var result = cont.nextFn(data);\r\n self._handleUserFunctionResult(result, cont.promise);\r\n } catch (e) {\r\n self._handleResolutionError(e, cont);\r\n }\r\n } else if (cont.promise) {\r\n cont.promise.resolve(data);\r\n }\r\n });\r\n },\r\n _handleResolutionError: function (e, continuation) {\r\n this._setRejected();\r\n if (continuation.catchFn) {\r\n try {\r\n continuation.catchFn(e);\r\n return;\r\n } catch (e2) {\r\n e = e2;\r\n }\r\n }\r\n if (continuation.promise) {\r\n continuation.promise.reject(e);\r\n }\r\n },\r\n _handleWhenResolvedDataIsPromise: function (data) {\r\n var self = this;\r\n return data.then(function (result) {\r\n self._data = result;\r\n self._runResolutions();\r\n }).catch(function (error) {\r\n self._error = error;\r\n self._setRejected();\r\n self._runRejections();\r\n });\r\n },\r\n _handleUserFunctionResult: function (data, nextSynchronousPromise) {\r\n if (looksLikeAPromise(data)) {\r\n this._chainPromiseData(data, nextSynchronousPromise);\r\n } else {\r\n nextSynchronousPromise.resolve(data);\r\n }\r\n },\r\n _chainPromiseData: function (promiseData, nextSynchronousPromise) {\r\n promiseData.then(function (newData) {\r\n nextSynchronousPromise.resolve(newData);\r\n }).catch(function (newError) {\r\n nextSynchronousPromise.reject(newError);\r\n });\r\n },\r\n _setResolved: function () {\r\n this.status = RESOLVED;\r\n if (!this._paused) {\r\n this._runResolutions();\r\n }\r\n },\r\n _setRejected: function () {\r\n this.status = REJECTED;\r\n if (!this._paused) {\r\n this._runRejections();\r\n }\r\n },\r\n _isPending: function () {\r\n return this.status === PENDING;\r\n },\r\n _isResolved: function () {\r\n return this.status === RESOLVED;\r\n },\r\n _isRejected: function () {\r\n return this.status === REJECTED;\r\n }\r\n};\r\n\r\nSynchronousPromise.resolve = function (result) {\r\n return new SynchronousPromise(function (resolve, reject) {\r\n if (looksLikeAPromise(result)) {\r\n result.then(function (newResult) {\r\n resolve(newResult);\r\n }).catch(function (error) {\r\n reject(error);\r\n });\r\n } else {\r\n resolve(result);\r\n }\r\n });\r\n};\r\n\r\nSynchronousPromise.reject = function (result) {\r\n return new SynchronousPromise(function (resolve, reject) {\r\n reject(result);\r\n });\r\n};\r\n\r\nSynchronousPromise.unresolved = function () {\r\n return new SynchronousPromise(function (resolve, reject) {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n};\r\n\r\nSynchronousPromise.all = function () {\r\n var args = makeArrayFrom(arguments);\r\n if (Array.isArray(args[0])) {\r\n args = args[0];\r\n }\r\n if (!args.length) {\r\n return SynchronousPromise.resolve([]);\r\n }\r\n return new SynchronousPromise(function (resolve, reject) {\r\n var\r\n allData = [],\r\n numResolved = 0,\r\n doResolve = function () {\r\n if (numResolved === args.length) {\r\n resolve(allData);\r\n }\r\n },\r\n rejected = false,\r\n doReject = function (err) {\r\n if (rejected) {\r\n return;\r\n }\r\n rejected = true;\r\n reject(err);\r\n };\r\n args.forEach(function (arg, idx) {\r\n SynchronousPromise.resolve(arg).then(function (thisResult) {\r\n allData[idx] = thisResult;\r\n numResolved += 1;\r\n doResolve();\r\n }).catch(function (err) {\r\n doReject(err);\r\n });\r\n });\r\n });\r\n};\r\n\r\n/* jshint ignore:start */\r\nif (Promise === SynchronousPromise) {\r\n throw new Error(\"Please use SynchronousPromise.installGlobally() to install globally\");\r\n}\r\nvar RealPromise = Promise;\r\nSynchronousPromise.installGlobally = function(__awaiter) {\r\n if (Promise === SynchronousPromise) {\r\n return __awaiter;\r\n }\r\n var result = patchAwaiterIfRequired(__awaiter);\r\n Promise = SynchronousPromise;\r\n return result;\r\n};\r\n\r\nSynchronousPromise.uninstallGlobally = function() {\r\n if (Promise === SynchronousPromise) {\r\n Promise = RealPromise;\r\n }\r\n};\r\n\r\nfunction patchAwaiterIfRequired(__awaiter) {\r\n if (typeof(__awaiter) === \"undefined\" || __awaiter.__patched) {\r\n return __awaiter;\r\n }\r\n var originalAwaiter = __awaiter;\r\n __awaiter = function() {\r\n var Promise = RealPromise;\r\n originalAwaiter.apply(this, makeArrayFrom(arguments));\r\n };\r\n __awaiter.__patched = true;\r\n return __awaiter;\r\n}\r\n/* jshint ignore:end */\r\n\r\nmodule.exports = {\r\n SynchronousPromise: SynchronousPromise\r\n};\r\n"],"sourceRoot":""}