@bearer/js
Version:
A JavaScript library for working with Bearer integrations
1,015 lines (998 loc) • 193 kB
JavaScript
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
function __rest(s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
t[p[i]] = s[p[i]];
return t;
}
function __awaiter(thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
/**
* Returns a function, that, as long as it continues to be invoked, will not
* be triggered. The function will be called after it stops being called for
* N milliseconds. If `immediate` is passed, trigger the function on the
* leading edge, instead of the trailing. The function also has a property 'clear'
* that is a function which will clear the timer to prevent previously scheduled executions.
*
* @source underscore.js
* @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/
* @param {Function} function to wrap
* @param {Number} timeout in ms (`100`)
* @param {Boolean} whether to execute at the beginning (`false`)
* @api public
*/
function debounce(func, wait, immediate){
var timeout, args, context, timestamp, result;
if (null == wait) wait = 100;
function later() {
var last = Date.now() - timestamp;
if (last < wait && last >= 0) {
timeout = setTimeout(later, wait - last);
} else {
timeout = null;
if (!immediate) {
result = func.apply(context, args);
context = args = null;
}
}
}
var debounced = function(){
context = this;
args = arguments;
timestamp = Date.now();
var callNow = immediate && !timeout;
if (!timeout) timeout = setTimeout(later, wait);
if (callNow) {
result = func.apply(context, args);
context = args = null;
}
return result;
};
debounced.clear = function() {
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
};
debounced.flush = function() {
if (timeout) {
result = func.apply(context, args);
context = args = null;
clearTimeout(timeout);
timeout = null;
}
};
return debounced;
}
// Adds compatibility for ES modules
debounce.debounce = debounce;
var debounce_1 = debounce;
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function unwrapExports (x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;
}
function createCommonjsModule(fn, module) {
return module = { exports: {} }, fn(module, module.exports), module.exports;
}
var postRobot = createCommonjsModule(function (module, exports) {
!function(root, factory) {
module.exports = factory();
}("undefined" != typeof self ? self : commonjsGlobal, function() {
return function(modules) {
var installedModules = {};
function __webpack_require__(moduleId) {
if (installedModules[moduleId]) return installedModules[moduleId].exports;
var module = installedModules[moduleId] = {
i: moduleId,
l: !1,
exports: {}
};
modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
module.l = !0;
return module.exports;
}
__webpack_require__.m = modules;
__webpack_require__.c = installedModules;
__webpack_require__.d = function(exports, name, getter) {
__webpack_require__.o(exports, name) || Object.defineProperty(exports, name, {
configurable: !1,
enumerable: !0,
get: getter
});
};
__webpack_require__.n = function(module) {
var getter = module && module.__esModule ? function() {
return module.default;
} : function() {
return module;
};
__webpack_require__.d(getter, "a", getter);
return getter;
};
__webpack_require__.o = function(object, property) {
return Object.prototype.hasOwnProperty.call(object, property);
};
__webpack_require__.p = "";
return __webpack_require__(__webpack_require__.s = "./src/index.js");
}({
"./node_modules/cross-domain-utils/src/constants.js": function(module, __webpack_exports__, __webpack_require__) {
__webpack_require__.d(__webpack_exports__, "a", function() {
return PROTOCOL;
});
__webpack_require__.d(__webpack_exports__, "b", function() {
return WILDCARD;
});
var PROTOCOL = {
MOCK: "mock:",
FILE: "file:",
ABOUT: "about:"
}, WILDCARD = "*";
},
"./node_modules/cross-domain-utils/src/index.js": function(module, __webpack_exports__, __webpack_require__) {
var __WEBPACK_IMPORTED_MODULE_0__utils__ = __webpack_require__("./node_modules/cross-domain-utils/src/utils.js");
__webpack_require__.d(__webpack_exports__, "getActualDomain", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.a;
});
__webpack_require__.d(__webpack_exports__, "getAncestor", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.b;
});
__webpack_require__.d(__webpack_exports__, "getDomain", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.c;
});
__webpack_require__.d(__webpack_exports__, "getUserAgent", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.d;
});
__webpack_require__.d(__webpack_exports__, "isActuallySameDomain", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.e;
});
__webpack_require__.d(__webpack_exports__, "isAncestor", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.f;
});
__webpack_require__.d(__webpack_exports__, "isIframe", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.g;
});
__webpack_require__.d(__webpack_exports__, "isPopup", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.h;
});
__webpack_require__.d(__webpack_exports__, "isWindow", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.i;
});
__webpack_require__.d(__webpack_exports__, "isWindowClosed", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.j;
});
__webpack_require__.d(__webpack_exports__, "matchDomain", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.k;
});
__webpack_require__.d(__webpack_exports__, "stringifyDomainPattern", function() {
return __WEBPACK_IMPORTED_MODULE_0__utils__.l;
});
var __WEBPACK_IMPORTED_MODULE_1__types__ = __webpack_require__("./node_modules/cross-domain-utils/src/types.js");
__webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__types__), __webpack_require__("./node_modules/cross-domain-utils/src/constants.js");
},
"./node_modules/cross-domain-utils/src/types.js": function(module, exports) {},
"./node_modules/cross-domain-utils/src/utils.js": function(module, __webpack_exports__, __webpack_require__) {
function isRegex(item) {
return "[object RegExp]" === Object.prototype.toString.call(item);
}
var constants = __webpack_require__("./node_modules/cross-domain-utils/src/constants.js");
__webpack_exports__.a = getActualDomain;
__webpack_exports__.c = getDomain;
__webpack_exports__.e = isActuallySameDomain;
__webpack_exports__.j = function(win) {
var allowMock = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
try {
if (win === window) return !1;
} catch (err) {
return !0;
}
try {
if (!win) return !0;
} catch (err) {
return !0;
}
try {
if (win.closed) return !0;
} catch (err) {
return !err || err.message !== IE_WIN_ACCESS_ERROR;
}
if (allowMock && function(win) {
if (!isActuallySameDomain(win)) return !1;
try {
if (win === window) return !0;
if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;
if (getDomain(window) === getDomain(win)) return !0;
} catch (err) {}
return !1;
}(win)) try {
if (win.mockclosed) return !0;
} catch (err) {}
try {
if (!win.parent || !win.top) return !0;
} catch (err) {}
var iframeIndex = function(collection, item) {
for (var i = 0; i < collection.length; i++) try {
if (collection[i] === item) return i;
} catch (err) {}
return -1;
}(iframeWindows, win);
if (-1 !== iframeIndex) {
var frame = iframeFrames[iframeIndex];
if (frame && function(frame) {
if (!frame.contentWindow) return !0;
if (!frame.parentNode) return !0;
var doc = frame.ownerDocument;
return !(!doc || !doc.documentElement || doc.documentElement.contains(frame));
}(frame)) return !0;
}
return !1;
};
__webpack_exports__.d = function(win) {
return (win = win || window).navigator.mockUserAgent || win.navigator.userAgent;
};
__webpack_exports__.b = getAncestor;
__webpack_exports__.f = function(parent, child) {
var actualParent = getAncestor(child);
if (actualParent) return actualParent === parent;
if (child === parent) return !1;
if (function(win) {
if (win) {
try {
if (win.top) return win.top;
} catch (err) {}
if (getParent(win) === win) return win;
try {
if (isAncestorParent(window, win) && window.top) return window.top;
} catch (err) {}
try {
if (isAncestorParent(win, window) && window.top) return window.top;
} catch (err) {}
for (var _i7 = 0, _getAllChildFrames4 = function getAllChildFrames(win) {
for (var result = [], _i3 = 0, _getFrames2 = getFrames(win), _length2 = null == _getFrames2 ? 0 : _getFrames2.length; _i3 < _length2; _i3++) {
var frame = _getFrames2[_i3];
result.push(frame);
for (var _i5 = 0, _getAllChildFrames2 = getAllChildFrames(frame), _length4 = null == _getAllChildFrames2 ? 0 : _getAllChildFrames2.length; _i5 < _length4; _i5++) {
var childFrame = _getAllChildFrames2[_i5];
result.push(childFrame);
}
}
return result;
}(win), _length6 = null == _getAllChildFrames4 ? 0 : _getAllChildFrames4.length; _i7 < _length6; _i7++) {
var frame = _getAllChildFrames4[_i7];
try {
if (frame.top) return frame.top;
} catch (err) {}
if (getParent(frame) === frame) return frame;
}
}
}(child) === child) return !1;
for (var _i15 = 0, _getFrames8 = getFrames(parent), _length14 = null == _getFrames8 ? 0 : _getFrames8.length; _i15 < _length14; _i15++) if (_getFrames8[_i15] === child) return !0;
return !1;
};
__webpack_exports__.h = function() {
return Boolean(getOpener(window));
};
__webpack_exports__.g = function() {
return Boolean(getParent(window));
};
__webpack_exports__.k = function matchDomain(pattern, origin) {
if ("string" == typeof pattern) {
if ("string" == typeof origin) return pattern === constants.b || origin === pattern;
if (isRegex(origin)) return !1;
if (Array.isArray(origin)) return !1;
}
return isRegex(pattern) ? isRegex(origin) ? pattern.toString() === origin.toString() : !Array.isArray(origin) && Boolean(origin.match(pattern)) : !!Array.isArray(pattern) && (Array.isArray(origin) ? JSON.stringify(pattern) === JSON.stringify(origin) : !isRegex(origin) && pattern.some(function(subpattern) {
return matchDomain(subpattern, origin);
}));
};
__webpack_exports__.l = function(pattern) {
return Array.isArray(pattern) ? "(" + pattern.join(" | ") + ")" : isRegex(pattern) ? "RegExp(" + pattern.toString() : pattern.toString();
};
__webpack_exports__.i = function(obj) {
try {
if (obj === window) return !0;
} catch (err) {
if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
}
try {
if ("[object Window]" === Object.prototype.toString.call(obj)) return !0;
} catch (err) {
if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
}
try {
if (window.Window && obj instanceof window.Window) return !0;
} catch (err) {
if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
}
try {
if (obj && obj.self === obj) return !0;
} catch (err) {
if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
}
try {
if (obj && obj.parent === obj) return !0;
} catch (err) {
if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
}
try {
if (obj && obj.top === obj) return !0;
} catch (err) {
if (err && err.message === IE_WIN_ACCESS_ERROR) return !0;
}
try {
obj && obj.__cross_domain_utils_window_check__;
} catch (err) {
return !0;
}
return !1;
};
var IE_WIN_ACCESS_ERROR = "Call was rejected by callee.\r\n";
function isAboutProtocol() {
return (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window).location.protocol === constants.a.ABOUT;
}
function getParent(win) {
if (win) try {
if (win.parent && win.parent !== win) return win.parent;
} catch (err) {}
}
function getOpener(win) {
if (win && !getParent(win)) try {
return win.opener;
} catch (err) {}
}
function canReadFromWindow(win) {
try {
win && win.location && win.location.href;
return !0;
} catch (err) {}
return !1;
}
function getActualDomain(win) {
var location = (win = win || window).location;
if (!location) throw new Error("Can not read window location");
var protocol = location.protocol;
if (!protocol) throw new Error("Can not read window protocol");
if (protocol === constants.a.FILE) return constants.a.FILE + "//";
if (protocol === constants.a.ABOUT) {
var parent = getParent(win);
return parent && canReadFromWindow(parent) ? getActualDomain(parent) : constants.a.ABOUT + "//";
}
var host = location.host;
if (!host) throw new Error("Can not read window host");
return protocol + "//" + host;
}
function getDomain(win) {
var domain = getActualDomain(win = win || window);
return domain && win.mockDomain && 0 === win.mockDomain.indexOf(constants.a.MOCK) ? win.mockDomain : domain;
}
function isActuallySameDomain(win) {
try {
if (win === window) return !0;
} catch (err) {}
try {
var desc = Object.getOwnPropertyDescriptor(win, "location");
if (desc && !1 === desc.enumerable) return !1;
} catch (err) {}
try {
if (isAboutProtocol(win) && canReadFromWindow(win)) return !0;
} catch (err) {}
try {
if (getActualDomain(win) === getActualDomain(window)) return !0;
} catch (err) {}
return !1;
}
function isAncestorParent(parent, child) {
if (!parent || !child) return !1;
var childParent = getParent(child);
return childParent ? childParent === parent : -1 !== function(win) {
var result = [];
try {
for (;win.parent !== win; ) {
result.push(win.parent);
win = win.parent;
}
} catch (err) {}
return result;
}(child).indexOf(parent);
}
function getFrames(win) {
var result = [], frames = void 0;
try {
frames = win.frames;
} catch (err) {
frames = win;
}
var len = void 0;
try {
len = frames.length;
} catch (err) {}
if (0 === len) return result;
if (len) {
for (var i = 0; i < len; i++) {
var frame = void 0;
try {
frame = frames[i];
} catch (err) {
continue;
}
result.push(frame);
}
return result;
}
for (var _i = 0; _i < 100; _i++) {
var _frame = void 0;
try {
_frame = frames[_i];
} catch (err) {
return result;
}
if (!_frame) return result;
result.push(_frame);
}
return result;
}
var iframeWindows = [], iframeFrames = [];
function getAncestor(win) {
return getOpener(win = win || window) || getParent(win) || void 0;
}
},
"./src/index.js": function(module, __webpack_exports__, __webpack_require__) {
Object.defineProperty(__webpack_exports__, "__esModule", {
value: !0
});
__webpack_require__.d({}, "WeakMap", function() {
return weakmap_CrossDomainSafeWeakMap;
});
var src_interface_namespaceObject = {};
__webpack_require__.d(src_interface_namespaceObject, "cleanUpWindow", function() {
return cleanUpWindow;
});
__webpack_require__.d(src_interface_namespaceObject, "Promise", function() {
return promise_ZalgoPromise;
});
__webpack_require__.d(src_interface_namespaceObject, "bridge", function() {
return bridge;
});
__webpack_require__.d(src_interface_namespaceObject, "init", function() {
return init;
});
__webpack_require__.d(src_interface_namespaceObject, "parent", function() {
return public_parent;
});
__webpack_require__.d(src_interface_namespaceObject, "send", function() {
return _send;
});
__webpack_require__.d(src_interface_namespaceObject, "request", function() {
return request;
});
__webpack_require__.d(src_interface_namespaceObject, "sendToParent", function() {
return sendToParent;
});
__webpack_require__.d(src_interface_namespaceObject, "client", function() {
return client;
});
__webpack_require__.d(src_interface_namespaceObject, "on", function() {
return _on;
});
__webpack_require__.d(src_interface_namespaceObject, "listen", function() {
return listen;
});
__webpack_require__.d(src_interface_namespaceObject, "once", function() {
return server_once;
});
__webpack_require__.d(src_interface_namespaceObject, "listener", function() {
return server_listener;
});
__webpack_require__.d(src_interface_namespaceObject, "CONFIG", function() {
return CONFIG;
});
__webpack_require__.d(src_interface_namespaceObject, "CONSTANTS", function() {
return constants_CONSTANTS;
});
__webpack_require__.d(src_interface_namespaceObject, "disable", function() {
return disable;
});
var src = __webpack_require__("./node_modules/cross-domain-utils/src/index.js");
function safeIndexOf(collection, item) {
for (var i = 0; i < collection.length; i++) try {
if (collection[i] === item) return i;
} catch (err) {}
return -1;
}
var _ALLOWED_POST_MESSAGE, defineProperty = Object.defineProperty, counter = Date.now() % 1e9, weakmap_CrossDomainSafeWeakMap = function() {
function CrossDomainSafeWeakMap() {
!function(instance, Constructor) {
if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError("Cannot call a class as a function");
}(this);
counter += 1;
this.name = "__weakmap_" + (1e9 * Math.random() >>> 0) + "__" + counter;
if (function() {
if ("undefined" == typeof WeakMap) return !1;
if (void 0 === Object.freeze) return !1;
try {
var testWeakMap = new WeakMap(), testKey = {};
Object.freeze(testKey);
testWeakMap.set(testKey, "__testvalue__");
return "__testvalue__" === testWeakMap.get(testKey);
} catch (err) {
return !1;
}
}()) try {
this.weakmap = new WeakMap();
} catch (err) {}
this.keys = [];
this.values = [];
}
CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function() {
for (var weakmap = this.weakmap, keys = this.keys, i = 0; i < keys.length; i++) {
var value = keys[i];
if (Object(src.isWindow)(value) && Object(src.isWindowClosed)(value)) {
if (weakmap) try {
weakmap.delete(value);
} catch (err) {}
keys.splice(i, 1);
this.values.splice(i, 1);
i -= 1;
}
}
};
CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function(key) {
if (Object(src.isWindow)(key)) return !1;
try {
key && key.self;
key && key[this.name];
} catch (err) {
return !1;
}
return !0;
};
CrossDomainSafeWeakMap.prototype.set = function(key, value) {
if (!key) throw new Error("WeakMap expected key");
var weakmap = this.weakmap;
if (weakmap) try {
weakmap.set(key, value);
} catch (err) {
delete this.weakmap;
}
if (this.isSafeToReadWrite(key)) {
var name = this.name, entry = key[name];
entry && entry[0] === key ? entry[1] = value : defineProperty(key, name, {
value: [ key, value ],
writable: !0
});
} else {
this._cleanupClosedWindows();
var keys = this.keys, values = this.values, index = safeIndexOf(keys, key);
if (-1 === index) {
keys.push(key);
values.push(value);
} else values[index] = value;
}
};
CrossDomainSafeWeakMap.prototype.get = function(key) {
if (!key) throw new Error("WeakMap expected key");
var weakmap = this.weakmap;
if (weakmap) try {
if (weakmap.has(key)) return weakmap.get(key);
} catch (err) {
delete this.weakmap;
}
if (!this.isSafeToReadWrite(key)) {
this._cleanupClosedWindows();
var index = safeIndexOf(this.keys, key);
if (-1 === index) return;
return this.values[index];
}
var entry = key[this.name];
if (entry && entry[0] === key) return entry[1];
};
CrossDomainSafeWeakMap.prototype.delete = function(key) {
if (!key) throw new Error("WeakMap expected key");
var weakmap = this.weakmap;
if (weakmap) try {
weakmap.delete(key);
} catch (err) {
delete this.weakmap;
}
if (this.isSafeToReadWrite(key)) {
var entry = key[this.name];
entry && entry[0] === key && (entry[0] = entry[1] = void 0);
} else {
this._cleanupClosedWindows();
var keys = this.keys, index = safeIndexOf(keys, key);
if (-1 !== index) {
keys.splice(index, 1);
this.values.splice(index, 1);
}
}
};
CrossDomainSafeWeakMap.prototype.has = function(key) {
if (!key) throw new Error("WeakMap expected key");
var weakmap = this.weakmap;
if (weakmap) try {
if (weakmap.has(key)) return !0;
} catch (err) {
delete this.weakmap;
}
if (this.isSafeToReadWrite(key)) {
var entry = key[this.name];
return !(!entry || entry[0] !== key);
}
this._cleanupClosedWindows();
return -1 !== safeIndexOf(this.keys, key);
};
CrossDomainSafeWeakMap.prototype.getOrSet = function(key, getter) {
if (this.has(key)) return this.get(key);
var value = getter();
this.set(key, value);
return value;
};
return CrossDomainSafeWeakMap;
}(), constants_CONSTANTS = {
POST_MESSAGE_TYPE: {
REQUEST: "postrobot_message_request",
RESPONSE: "postrobot_message_response",
ACK: "postrobot_message_ack"
},
POST_MESSAGE_ACK: {
SUCCESS: "success",
ERROR: "error"
},
POST_MESSAGE_NAMES: {
METHOD: "postrobot_method",
HELLO: "postrobot_ready",
OPEN_TUNNEL: "postrobot_open_tunnel"
},
WINDOW_TYPES: {
FULLPAGE: "fullpage",
POPUP: "popup",
IFRAME: "iframe"
},
WINDOW_PROPS: {
POSTROBOT: "__postRobot__"
},
SERIALIZATION_TYPES: {
METHOD: "postrobot_method",
ERROR: "postrobot_error",
PROMISE: "postrobot_promise",
ZALGO_PROMISE: "postrobot_zalgo_promise",
REGEX: "regex"
},
SEND_STRATEGIES: {
POST_MESSAGE: "postrobot_post_message",
BRIDGE: "postrobot_bridge",
GLOBAL: "postrobot_global"
},
MOCK_PROTOCOL: "mock:",
FILE_PROTOCOL: "file:",
BRIDGE_NAME_PREFIX: "__postrobot_bridge__",
POSTROBOT_PROXY: "__postrobot_proxy__",
WILDCARD: "*"
}, POST_MESSAGE_NAMES = {
METHOD: "postrobot_method",
HELLO: "postrobot_hello",
OPEN_TUNNEL: "postrobot_open_tunnel"
}, CONFIG = (Object.keys(POST_MESSAGE_NAMES).map(function(key) {
return POST_MESSAGE_NAMES[key];
}), {
ALLOW_POSTMESSAGE_POPUP: !("__ALLOW_POSTMESSAGE_POPUP__" in window) || window.__ALLOW_POSTMESSAGE_POPUP__,
BRIDGE_TIMEOUT: 5e3,
CHILD_WINDOW_TIMEOUT: 5e3,
ACK_TIMEOUT: -1 !== window.navigator.userAgent.match(/MSIE/i) ? 1e4 : 2e3,
RES_TIMEOUT: -1,
ALLOWED_POST_MESSAGE_METHODS: (_ALLOWED_POST_MESSAGE = {}, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.POST_MESSAGE] = !0,
_ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.BRIDGE] = !0, _ALLOWED_POST_MESSAGE[constants_CONSTANTS.SEND_STRATEGIES.GLOBAL] = !0,
_ALLOWED_POST_MESSAGE),
ALLOW_SAME_ORIGIN: !1
});
0 === window.location.href.indexOf(constants_CONSTANTS.FILE_PROTOCOL) && (CONFIG.ALLOW_POSTMESSAGE_POPUP = !0);
var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(obj) {
return typeof obj;
} : function(obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};
function stringifyError(err) {
var level = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
if (level >= 3) return "stringifyError stack overflow";
try {
if (!err) return "<unknown error: " + Object.prototype.toString.call(err) + ">";
if ("string" == typeof err) return err;
if (err instanceof Error) {
var stack = err && err.stack, message = err && err.message;
if (stack && message) return -1 !== stack.indexOf(message) ? stack : message + "\n" + stack;
if (stack) return stack;
if (message) return message;
}
return "function" == typeof err.toString ? err.toString() : Object.prototype.toString.call(err);
} catch (newErr) {
return "Error while stringifying error: " + stringifyError(newErr, level + 1);
}
}
var once = function(method) {
if (!method) return method;
var called = !1;
return function() {
if (!called) {
called = !0;
return method.apply(this, arguments);
}
};
};
function util_noop() {}
function uniqueID() {
var chars = "0123456789abcdef";
return "xxxxxxxxxx".replace(/./g, function() {
return chars.charAt(Math.floor(Math.random() * chars.length));
});
}
function replaceObject(item, callback) {
var depth = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1;
if (depth >= 100) throw new Error("Self-referential object passed, or object contained too many layers");
var newobj = void 0;
if ("object" !== (void 0 === item ? "undefined" : _typeof(item)) || null === item || Array.isArray(item)) {
if (!Array.isArray(item)) throw new TypeError("Invalid type: " + (void 0 === item ? "undefined" : _typeof(item)));
newobj = [];
} else newobj = {};
!function(item, callback) {
Array.isArray(item) ? function(item, callback) {
for (var i = 0; i < item.length; i++) callback(item[i], i);
}(item, callback) : "object" === (void 0 === item ? "undefined" : _typeof(item)) && null !== item && function(item, callback) {
for (var _key in item) item.hasOwnProperty(_key) && callback(item[_key], _key);
}(item, callback);
}(item, function(childItem, key) {
var result = callback(childItem, key);
void 0 !== result ? newobj[key] = result : "object" === (void 0 === childItem ? "undefined" : _typeof(childItem)) && null !== childItem ? newobj[key] = replaceObject(childItem, callback, depth + 1) : newobj[key] = childItem;
});
return newobj;
}
function isRegex(item) {
return "[object RegExp]" === Object.prototype.toString.call(item);
}
function utils_isPromise(item) {
try {
if (!item) return !1;
if ("undefined" != typeof Promise && item instanceof Promise) return !0;
if ("undefined" != typeof window && window.Window && item instanceof window.Window) return !1;
if ("undefined" != typeof window && window.constructor && item instanceof window.constructor) return !1;
if ("function" == typeof item.then) return !0;
} catch (err) {
return !1;
}
return !1;
}
function getGlobal() {
var glob = void 0;
if ("undefined" != typeof window) glob = window; else {
if ("undefined" == typeof window) throw new TypeError("Can not find global");
glob = window;
}
var zalgoGlobal = glob.__zalgopromise__ = glob.__zalgopromise__ || {};
zalgoGlobal.flushPromises = zalgoGlobal.flushPromises || [];
zalgoGlobal.activeCount = zalgoGlobal.activeCount || 0;
zalgoGlobal.possiblyUnhandledPromiseHandlers = zalgoGlobal.possiblyUnhandledPromiseHandlers || [];
zalgoGlobal.dispatchedErrors = zalgoGlobal.dispatchedErrors || [];
return zalgoGlobal;
}
var promise_ZalgoPromise = function() {
function ZalgoPromise(handler) {
var _this = this;
!function(instance, Constructor) {
if (!(instance instanceof ZalgoPromise)) throw new TypeError("Cannot call a class as a function");
}(this);
this.resolved = !1;
this.rejected = !1;
this.errorHandled = !1;
this.handlers = [];
if (handler) {
var _result = void 0, _error = void 0, resolved = !1, rejected = !1, isAsync = !1;
try {
handler(function(res) {
if (isAsync) _this.resolve(res); else {
resolved = !0;
_result = res;
}
}, function(err) {
if (isAsync) _this.reject(err); else {
rejected = !0;
_error = err;
}
});
} catch (err) {
this.reject(err);
return;
}
isAsync = !0;
resolved ? this.resolve(_result) : rejected && this.reject(_error);
}
}
ZalgoPromise.prototype.resolve = function(result) {
if (this.resolved || this.rejected) return this;
if (utils_isPromise(result)) throw new Error("Can not resolve promise with another promise");
this.resolved = !0;
this.value = result;
this.dispatch();
return this;
};
ZalgoPromise.prototype.reject = function(error) {
var _this2 = this;
if (this.resolved || this.rejected) return this;
if (utils_isPromise(error)) throw new Error("Can not reject promise with another promise");
if (!error) {
var _err = error && "function" == typeof error.toString ? error.toString() : Object.prototype.toString.call(error);
error = new Error("Expected reject to be called with Error, got " + _err);
}
this.rejected = !0;
this.error = error;
this.errorHandled || setTimeout(function() {
_this2.errorHandled || function(err, promise) {
if (-1 === getGlobal().dispatchedErrors.indexOf(err)) {
getGlobal().dispatchedErrors.push(err);
setTimeout(function() {
throw err;
}, 1);
for (var j = 0; j < getGlobal().possiblyUnhandledPromiseHandlers.length; j++) getGlobal().possiblyUnhandledPromiseHandlers[j](err, promise);
}
}(error, _this2);
}, 1);
this.dispatch();
return this;
};
ZalgoPromise.prototype.asyncReject = function(error) {
this.errorHandled = !0;
this.reject(error);
return this;
};
ZalgoPromise.prototype.dispatch = function() {
var _this3 = this, dispatching = this.dispatching, resolved = this.resolved, rejected = this.rejected, handlers = this.handlers;
if (!dispatching && (resolved || rejected)) {
this.dispatching = !0;
getGlobal().activeCount += 1;
for (var _loop = function(i) {
var _handlers$i = handlers[i], onSuccess = _handlers$i.onSuccess, onError = _handlers$i.onError, promise = _handlers$i.promise, result = void 0;
if (resolved) try {
result = onSuccess ? onSuccess(_this3.value) : _this3.value;
} catch (err) {
promise.reject(err);
return "continue";
} else if (rejected) {
if (!onError) {
promise.reject(_this3.error);
return "continue";
}
try {
result = onError(_this3.error);
} catch (err) {
promise.reject(err);
return "continue";
}
}
if (result instanceof ZalgoPromise && (result.resolved || result.rejected)) {
result.resolved ? promise.resolve(result.value) : promise.reject(result.error);
result.errorHandled = !0;
} else utils_isPromise(result) ? result instanceof ZalgoPromise && (result.resolved || result.rejected) ? result.resolved ? promise.resolve(result.value) : promise.reject(result.error) : result.then(function(res) {
promise.resolve(res);
}, function(err) {
promise.reject(err);
}) : promise.resolve(result);
}, i = 0; i < handlers.length; i++) _loop(i);
handlers.length = 0;
this.dispatching = !1;
getGlobal().activeCount -= 1;
0 === getGlobal().activeCount && ZalgoPromise.flushQueue();
}
};
ZalgoPromise.prototype.then = function(onSuccess, onError) {
if (onSuccess && "function" != typeof onSuccess && !onSuccess.call) throw new Error("Promise.then expected a function for success handler");
if (onError && "function" != typeof onError && !onError.call) throw new Error("Promise.then expected a function for error handler");
var promise = new ZalgoPromise();
this.handlers.push({
promise: promise,
onSuccess: onSuccess,
onError: onError
});
this.errorHandled = !0;
this.dispatch();
return promise;
};
ZalgoPromise.prototype.catch = function(onError) {
return this.then(void 0, onError);
};
ZalgoPromise.prototype.finally = function(onFinally) {
if (onFinally && "function" != typeof onFinally && !onFinally.call) throw new Error("Promise.finally expected a function");
return this.then(function(result) {
return ZalgoPromise.try(onFinally).then(function() {
return result;
});
}, function(err) {
return ZalgoPromise.try(onFinally).then(function() {
throw err;
});
});
};
ZalgoPromise.prototype.timeout = function(time, err) {
var _this4 = this;
if (this.resolved || this.rejected) return this;
var timeout = setTimeout(function() {
_this4.resolved || _this4.rejected || _this4.reject(err || new Error("Promise timed out after " + time + "ms"));
}, time);
return this.then(function(result) {
clearTimeout(timeout);
return result;
});
};
ZalgoPromise.prototype.toPromise = function() {
if ("undefined" == typeof Promise) throw new TypeError("Could not find Promise");
return Promise.resolve(this);
};
ZalgoPromise.resolve = function(value) {
return value instanceof ZalgoPromise ? value : utils_isPromise(value) ? new ZalgoPromise(function(resolve, reject) {
return value.then(resolve, reject);
}) : new ZalgoPromise().resolve(value);
};
ZalgoPromise.reject = function(error) {
return new ZalgoPromise().reject(error);
};
ZalgoPromise.asyncReject = function(error) {
return new ZalgoPromise().asyncReject(error);
};
ZalgoPromise.all = function(promises) {
var promise = new ZalgoPromise(), count = promises.length, results = [];
if (!count) {
promise.resolve(results);
return promise;
}
for (var _loop2 = function(i) {
var prom = promises[i];
if (prom instanceof ZalgoPromise) {
if (prom.resolved) {
results[i] = prom.value;
count -= 1;
return "continue";
}
} else if (!utils_isPromise(prom)) {
results[i] = prom;
count -= 1;
return "continue";
}
ZalgoPromise.resolve(prom).then(function(result) {
results[i] = result;
0 == (count -= 1) && promise.resolve(results);
}, function(err) {
promise.reject(err);
});
}, i = 0; i < promises.length; i++) _loop2(i);
0 === count && promise.resolve(results);
return promise;
};
ZalgoPromise.hash = function(promises) {
var result = {};
return ZalgoPromise.all(Object.keys(promises).map(function(key) {
return ZalgoPromise.resolve(promises[key]).then(function(value) {
result[key] = value;
});
})).then(function() {
return result;
});
};
ZalgoPromise.map = function(items, method) {
return ZalgoPromise.all(items.map(method));
};