coveo-search-ui
Version:
Coveo JavaScript Search Framework
183 lines (178 loc) • 5.17 kB
JavaScript
!(function(e) {
function n() {}
function t(e, n) {
return function() {
e.apply(n, arguments);
};
}
function o(e) {
if ('object' != typeof this) throw new TypeError('Promises must be constructed via new');
if ('function' != typeof e) throw new TypeError('not a function');
(this._state = 0), (this._handled = !1), (this._value = void 0), (this._deferreds = []), s(e, this);
}
function i(e, n) {
for (; 3 === e._state; ) e = e._value;
return 0 === e._state
? void e._deferreds.push(n)
: ((e._handled = !0),
void o._immediateFn(function() {
var t = 1 === e._state ? n.onFulfilled : n.onRejected;
if (null === t) return void (1 === e._state ? r : u)(n.promise, e._value);
var o;
try {
o = t(e._value);
} catch (i) {
return void u(n.promise, i);
}
r(n.promise, o);
}));
}
function r(e, n) {
try {
if (n === e) throw new TypeError('A promise cannot be resolved with itself.');
if (n && ('object' == typeof n || 'function' == typeof n)) {
var i = n.then;
if (n instanceof o) return (e._state = 3), (e._value = n), void f(e);
if ('function' == typeof i) return void s(t(i, n), e);
}
(e._state = 1), (e._value = n), f(e);
} catch (r) {
u(e, r);
}
}
function u(e, n) {
(e._state = 2), (e._value = n), f(e);
}
function f(e) {
2 === e._state &&
0 === e._deferreds.length &&
o._immediateFn(function() {
e._handled || o._unhandledRejectionFn(e._value);
});
for (var n = 0, t = e._deferreds.length; n < t; n++) i(e, e._deferreds[n]);
e._deferreds = null;
}
function c(e, n, t) {
(this.onFulfilled = 'function' == typeof e ? e : null), (this.onRejected = 'function' == typeof n ? n : null), (this.promise = t);
}
function s(e, n) {
var t = !1;
try {
e(
function(e) {
t || ((t = !0), r(n, e));
},
function(e) {
t || ((t = !0), u(n, e));
}
);
} catch (o) {
if (t) return;
(t = !0), u(n, o);
}
}
var a = setTimeout;
(o.prototype['catch'] = function(e) {
return this.then(null, e);
}),
(o.prototype.then = function(e, t) {
var o = new this.constructor(n);
return i(this, new c(e, t, o)), o;
}),
(o.all = function(e) {
var n = Array.prototype.slice.call(e);
return new o(function(e, t) {
function o(r, u) {
try {
if (u && ('object' == typeof u || 'function' == typeof u)) {
var f = u.then;
if ('function' == typeof f)
return void f.call(
u,
function(e) {
o(r, e);
},
t
);
}
(n[r] = u), 0 === --i && e(n);
} catch (c) {
t(c);
}
}
if (0 === n.length) return e([]);
for (var i = n.length, r = 0; r < n.length; r++) o(r, n[r]);
});
}),
(o.resolve = function(e) {
return e && 'object' == typeof e && e.constructor === o
? e
: new o(function(n) {
n(e);
});
}),
(o.reject = function(e) {
return new o(function(n, t) {
t(e);
});
}),
(o.race = function(e) {
return new o(function(n, t) {
for (var o = 0, i = e.length; o < i; o++) e[o].then(n, t);
});
}),
(o._immediateFn =
('function' == typeof setImmediate &&
function(e) {
setImmediate(e);
}) ||
function(e) {
a(e, 0);
}),
(o._unhandledRejectionFn = function(e) {
'undefined' != typeof console && console && console.warn('Possible Unhandled Promise Rejection:', e);
}),
(o._setImmediateFn = function(e) {
o._immediateFn = e;
}),
(o._setUnhandledRejectionFn = function(e) {
o._unhandledRejectionFn = e;
}),
'undefined' != typeof module && module.exports ? (module.exports = o) : e.Promise || (e.Promise = o);
})(this);
Promise.prototype['finally'] = function finallyPolyfill(callback) {
var constructor = this.constructor;
return this.then(
function(value) {
return constructor.resolve(callback()).then(function() {
return value;
});
},
function(reason) {
return constructor.resolve(callback()).then(function() {
throw reason;
});
}
);
};
var rethrowError = function(self) {
self.then(null, function(err) {
setTimeout(function() {
throw err;
}, 0);
});
};
if (typeof Promise.prototype['done'] !== 'function') {
Promise.prototype['done'] = function(onFulfilled, onRejected) {
var self = arguments.length ? this.then.apply(this, arguments) : this;
rethrowError(self);
return this;
};
}
if (typeof Promise.prototype['fail'] !== 'function') {
Promise.prototype['fail'] = function(onFulfilled, onRejected) {
var self = arguments.length ? this.catch.apply(this, arguments) : this;
rethrowError(self);
return this;
};
}