cross-domain-safe-weakmap
Advanced tools
Comparing version 1.0.27 to 1.0.28
@@ -1,325 +0,2 @@ | ||
!function(root, factory) { | ||
"object" == typeof exports && "object" == typeof module ? module.exports = factory() : "function" == typeof define && define.amd ? define("xdsweakmap", [], factory) : "object" == typeof exports ? exports.xdsweakmap = factory() : root.xdsweakmap = factory(); | ||
}("undefined" != typeof self ? self : this, 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"); | ||
}({ | ||
"./src/index.js": function(module, __webpack_exports__, __webpack_require__) { | ||
"use strict"; | ||
Object.defineProperty(__webpack_exports__, "__esModule", { | ||
value: !0 | ||
}); | ||
var PROTOCOL = { | ||
MOCK: "mock:", | ||
FILE: "file:", | ||
ABOUT: "about:" | ||
}, 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 === PROTOCOL.ABOUT; | ||
} | ||
function canReadFromWindow(win) { | ||
try { | ||
win && win.location && win.location.href; | ||
return !0; | ||
} catch (err) {} | ||
return !1; | ||
} | ||
function getActualDomain() { | ||
var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, location = win.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 === PROTOCOL.FILE) return PROTOCOL.FILE + "//"; | ||
if (protocol === PROTOCOL.ABOUT) { | ||
var parent = function() { | ||
var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window; | ||
if (win) try { | ||
if (win.parent && win.parent !== win) return win.parent; | ||
} catch (err) {} | ||
}(win); | ||
return parent && canReadFromWindow(parent) ? getActualDomain(parent) : PROTOCOL.ABOUT + "//"; | ||
} | ||
var host = location.host; | ||
if (!host) throw new Error("Can not read window host"); | ||
return protocol + "//" + host; | ||
} | ||
function getDomain() { | ||
var win = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : window, domain = getActualDomain(win); | ||
return domain && win.mockDomain && 0 === win.mockDomain.indexOf(PROTOCOL.MOCK) ? win.mockDomain : domain; | ||
} | ||
var iframeWindows = [], iframeFrames = []; | ||
function isWindowClosed(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 (!function(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; | ||
}(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; | ||
} | ||
function isWindow(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 { | ||
if (obj && "__unlikely_value__" === obj.__cross_domain_utils_window_check__) return !1; | ||
} catch (err) { | ||
return !0; | ||
} | ||
return !1; | ||
} | ||
function util_safeIndexOf(collection, item) { | ||
for (var i = 0; i < collection.length; i++) try { | ||
if (collection[i] === item) return i; | ||
} catch (err) {} | ||
return -1; | ||
} | ||
var weakmap_CrossDomainSafeWeakMap = function() { | ||
function CrossDomainSafeWeakMap() { | ||
!function(instance, Constructor) { | ||
if (!(instance instanceof CrossDomainSafeWeakMap)) throw new TypeError("Cannot call a class as a function"); | ||
}(this); | ||
this.name = "__weakmap_" + (1e9 * Math.random() >>> 0) + "__"; | ||
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 (isWindow(value) && 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 (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)) try { | ||
var name = this.name, entry = key[name]; | ||
entry && entry[0] === key ? entry[1] = value : Object.defineProperty(key, name, { | ||
value: [ key, value ], | ||
writable: !0 | ||
}); | ||
return; | ||
} catch (err) {} | ||
this._cleanupClosedWindows(); | ||
var keys = this.keys, values = this.values, index = util_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)) try { | ||
var entry = key[this.name]; | ||
return entry && entry[0] === key ? entry[1] : void 0; | ||
} catch (err) {} | ||
this._cleanupClosedWindows(); | ||
var index = util_safeIndexOf(this.keys, key); | ||
if (-1 !== index) return this.values[index]; | ||
}; | ||
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)) try { | ||
var entry = key[this.name]; | ||
entry && entry[0] === key && (entry[0] = entry[1] = void 0); | ||
} catch (err) {} | ||
this._cleanupClosedWindows(); | ||
var keys = this.keys, index = util_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)) try { | ||
var entry = key[this.name]; | ||
return !(!entry || entry[0] !== key); | ||
} catch (err) {} | ||
this._cleanupClosedWindows(); | ||
return -1 !== util_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; | ||
}(); | ||
__webpack_require__.d(__webpack_exports__, "WeakMap", function() { | ||
return weakmap_CrossDomainSafeWeakMap; | ||
}); | ||
} | ||
}); | ||
}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("xdsweakmap",[],t):"object"==typeof exports?exports.xdsweakmap=t():e.xdsweakmap=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return{}.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t),r.d(t,"WeakMap",(function(){return l}));var n="Call was rejected by callee.\r\n";function i(e){return void 0===e&&(e=window),"about:"===e.location.protocol}function a(e){try{return!0}catch(e){}return!1}function o(e){void 0===e&&(e=window);var t=e.location;if(!t)throw new Error("Can not read window location");var r=t.protocol;if(!r)throw new Error("Can not read window protocol");if("file:"===r)return"file://";if("about:"===r){var n=function(e){if(void 0===e&&(e=window),e)try{if(e.parent&&e.parent!==e)return e.parent}catch(e){}}(e);return n&&a()?o(n):"about://"}var i=t.host;if(!i)throw new Error("Can not read window host");return r+"//"+i}function c(e){void 0===e&&(e=window);var t=o(e);return t&&e.mockDomain&&0===e.mockDomain.indexOf("mock:")?e.mockDomain:t}var u=[],f=[];function s(e,t){void 0===t&&(t=!0);try{if(e===window)return!1}catch(e){return!0}try{if(!e)return!0}catch(e){return!0}try{if(e.closed)return!0}catch(e){return!e||e.message!==n}if(t&&function(e){if(!function(e){try{if(e===window)return!0}catch(e){}try{var t=Object.getOwnPropertyDescriptor(e,"location");if(t&&!1===t.enumerable)return!1}catch(e){}try{if(i(e)&&a())return!0}catch(e){}try{if(o(e)===o(window))return!0}catch(e){}return!1}(e))return!1;try{if(e===window)return!0;if(i(e)&&a())return!0;if(c(window)===c(e))return!0}catch(e){}return!1}(e))try{if(e.mockclosed)return!0}catch(e){}try{if(!e.parent||!e.top)return!0}catch(e){}var r=function(e,t){for(var r=0;r<e.length;r++)try{if(e[r]===t)return r}catch(e){}return-1}(u,e);if(-1!==r){var s=f[r];if(s&&function(e){if(!e.contentWindow)return!0;if(!e.parentNode)return!0;var t=e.ownerDocument;if(t&&t.documentElement&&!t.documentElement.contains(e)){for(var r=e;r.parentNode&&r.parentNode!==r;)r=r.parentNode;if(!r.host||!t.documentElement.contains(r.host))return!0}return!1}(s))return!0}return!1}function d(e){try{if(e===window)return!0}catch(e){if(e&&e.message===n)return!0}try{if("[object Window]"==={}.toString.call(e))return!0}catch(e){if(e&&e.message===n)return!0}try{if(window.Window&&e instanceof window.Window)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&e.self===e)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&e.parent===e)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&e.top===e)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&"__unlikely_value__"===e.__cross_domain_utils_window_check__)return!1}catch(e){return!0}try{if("postMessage"in e&&"self"in e&&"location"in e)return!0}catch(e){}return!1}function h(e,t){for(var r=0;r<e.length;r++)try{if(e[r]===t)return r}catch(e){}return-1}var l=function(){function e(){if(this.name=void 0,this.weakmap=void 0,this.keys=void 0,this.values=void 0,this.name="__weakmap_"+(1e9*Math.random()>>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var e=new WeakMap,t={};return Object.freeze(t),e.set(t,"__testvalue__"),"__testvalue__"===e.get(t)}catch(e){return!1}}())try{this.weakmap=new WeakMap}catch(e){}this.keys=[],this.values=[]}var t=e.prototype;return t._cleanupClosedWindows=function(){for(var e=this.weakmap,t=this.keys,r=0;r<t.length;r++){var n=t[r];if(d(n)&&s(n)){if(e)try{e.delete(n)}catch(e){}t.splice(r,1),this.values.splice(r,1),r-=1}}},t.isSafeToReadWrite=function(e){return!d(e)},t.set=function(e,t){if(!e)throw new Error("WeakMap expected key");var r=this.weakmap;if(r)try{r.set(e,t)}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var n=this.name,i=e[n];return void(i&&i[0]===e?i[1]=t:Object.defineProperty(e,n,{value:[e,t],writable:!0}))}catch(e){}this._cleanupClosedWindows();var a=this.keys,o=this.values,c=h(a,e);-1===c?(a.push(e),o.push(t)):o[c]=t},t.get=function(e){if(!e)throw new Error("WeakMap expected key");var t=this.weakmap;if(t)try{if(t.has(e))return t.get(e)}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var r=e[this.name];return r&&r[0]===e?r[1]:void 0}catch(e){}this._cleanupClosedWindows();var n=h(this.keys,e);if(-1!==n)return this.values[n]},t.delete=function(e){if(!e)throw new Error("WeakMap expected key");var t=this.weakmap;if(t)try{t.delete(e)}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var r=e[this.name];r&&r[0]===e&&(r[0]=r[1]=void 0)}catch(e){}this._cleanupClosedWindows();var n=this.keys,i=h(n,e);-1!==i&&(n.splice(i,1),this.values.splice(i,1))},t.has=function(e){if(!e)throw new Error("WeakMap expected key");var t=this.weakmap;if(t)try{if(t.has(e))return!0}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var r=e[this.name];return!(!r||r[0]!==e)}catch(e){}return this._cleanupClosedWindows(),-1!==h(this.keys,e)},t.getOrSet=function(e,t){if(this.has(e))return this.get(e);var r=t();return this.set(e,r),r},e}()}])})); | ||
//# sourceMappingURL=cross-domain-safe-weakmap.js.map |
@@ -1,2 +0,2 @@ | ||
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("xdsweakmap",[],e):"object"==typeof exports?exports.xdsweakmap=e():t.xdsweakmap=e()}("undefined"!=typeof self?self:this,function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=0)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n={MOCK:"mock:",FILE:"file:",ABOUT:"about:"},i="Call was rejected by callee.\r\n";function o(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window).location.protocol===n.ABOUT}function a(t){try{return t&&t.location&&t.location.href,!0}catch(t){}return!1}function c(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=t.location;if(!e)throw new Error("Can not read window location");var r=e.protocol;if(!r)throw new Error("Can not read window protocol");if(r===n.FILE)return n.FILE+"//";if(r===n.ABOUT){var i=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window;if(t)try{if(t.parent&&t.parent!==t)return t.parent}catch(t){}}(t);return i&&a(i)?c(i):n.ABOUT+"//"}var o=e.host;if(!o)throw new Error("Can not read window host");return r+"//"+o}function u(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window,e=c(t);return e&&t.mockDomain&&0===t.mockDomain.indexOf(n.MOCK)?t.mockDomain:e}var f=[],s=[];function h(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];try{if(t===window)return!1}catch(t){return!0}try{if(!t)return!0}catch(t){return!0}try{if(t.closed)return!0}catch(t){return!t||t.message!==i}if(e&&function(t){if(!function(t){try{if(t===window)return!0}catch(t){}try{var e=Object.getOwnPropertyDescriptor(t,"location");if(e&&!1===e.enumerable)return!1}catch(t){}try{if(o(t)&&a(t))return!0}catch(t){}try{if(c(t)===c(window))return!0}catch(t){}return!1}(t))return!1;try{if(t===window)return!0;if(o(t)&&a(t))return!0;if(u(window)===u(t))return!0}catch(t){}return!1}(t))try{if(t.mockclosed)return!0}catch(t){}try{if(!t.parent||!t.top)return!0}catch(t){}var r=function(t,e){for(var r=0;r<t.length;r++)try{if(t[r]===e)return r}catch(t){}return-1}(f,t);if(-1!==r){var n=s[r];if(n&&function(t){if(!t.contentWindow)return!0;if(!t.parentNode)return!0;var e=t.ownerDocument;return!(!e||!e.documentElement||e.documentElement.contains(t))}(n))return!0}return!1}function d(t){try{if(t===window)return!0}catch(t){if(t&&t.message===i)return!0}try{if("[object Window]"===Object.prototype.toString.call(t))return!0}catch(t){if(t&&t.message===i)return!0}try{if(window.Window&&t instanceof window.Window)return!0}catch(t){if(t&&t.message===i)return!0}try{if(t&&t.self===t)return!0}catch(t){if(t&&t.message===i)return!0}try{if(t&&t.parent===t)return!0}catch(t){if(t&&t.message===i)return!0}try{if(t&&t.top===t)return!0}catch(t){if(t&&t.message===i)return!0}try{if(t&&"__unlikely_value__"===t.__cross_domain_utils_window_check__)return!1}catch(t){return!0}return!1}function p(t,e){for(var r=0;r<t.length;r++)try{if(t[r]===e)return r}catch(t){}return-1}var l=function(){function t(){if(function(e,r){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this),this.name="__weakmap_"+(1e9*Math.random()>>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var t=new WeakMap,e={};return Object.freeze(e),t.set(e,"__testvalue__"),"__testvalue__"===t.get(e)}catch(t){return!1}}())try{this.weakmap=new WeakMap}catch(t){}this.keys=[],this.values=[]}return t.prototype._cleanupClosedWindows=function(){for(var t=this.weakmap,e=this.keys,r=0;r<e.length;r++){var n=e[r];if(d(n)&&h(n)){if(t)try{t.delete(n)}catch(t){}e.splice(r,1),this.values.splice(r,1),r-=1}}},t.prototype.isSafeToReadWrite=function(t){if(d(t))return!1;try{t&&t.self,t&&t[this.name]}catch(t){return!1}return!0},t.prototype.set=function(t,e){if(!t)throw new Error("WeakMap expected key");var r=this.weakmap;if(r)try{r.set(t,e)}catch(t){delete this.weakmap}if(this.isSafeToReadWrite(t))try{var n=this.name,i=t[n];return void(i&&i[0]===t?i[1]=e:Object.defineProperty(t,n,{value:[t,e],writable:!0}))}catch(t){}this._cleanupClosedWindows();var o=this.keys,a=this.values,c=p(o,t);-1===c?(o.push(t),a.push(e)):a[c]=e},t.prototype.get=function(t){if(!t)throw new Error("WeakMap expected key");var e=this.weakmap;if(e)try{if(e.has(t))return e.get(t)}catch(t){delete this.weakmap}if(this.isSafeToReadWrite(t))try{var r=t[this.name];return r&&r[0]===t?r[1]:void 0}catch(t){}this._cleanupClosedWindows();var n=p(this.keys,t);if(-1!==n)return this.values[n]},t.prototype.delete=function(t){if(!t)throw new Error("WeakMap expected key");var e=this.weakmap;if(e)try{e.delete(t)}catch(t){delete this.weakmap}if(this.isSafeToReadWrite(t))try{var r=t[this.name];r&&r[0]===t&&(r[0]=r[1]=void 0)}catch(t){}this._cleanupClosedWindows();var n=this.keys,i=p(n,t);-1!==i&&(n.splice(i,1),this.values.splice(i,1))},t.prototype.has=function(t){if(!t)throw new Error("WeakMap expected key");var e=this.weakmap;if(e)try{if(e.has(t))return!0}catch(t){delete this.weakmap}if(this.isSafeToReadWrite(t))try{var r=t[this.name];return!(!r||r[0]!==t)}catch(t){}return this._cleanupClosedWindows(),-1!==p(this.keys,t)},t.prototype.getOrSet=function(t,e){if(this.has(t))return this.get(t);var r=e();return this.set(t,r),r},t}();r.d(e,"WeakMap",function(){return l})}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("xdsweakmap",[],t):"object"==typeof exports?exports.xdsweakmap=t():e.xdsweakmap=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return{}.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";r.r(t),r.d(t,"WeakMap",(function(){return l}));var n="Call was rejected by callee.\r\n";function i(e){return void 0===e&&(e=window),"about:"===e.location.protocol}function a(e){try{return!0}catch(e){}return!1}function o(e){void 0===e&&(e=window);var t=e.location;if(!t)throw new Error("Can not read window location");var r=t.protocol;if(!r)throw new Error("Can not read window protocol");if("file:"===r)return"file://";if("about:"===r){var n=function(e){if(void 0===e&&(e=window),e)try{if(e.parent&&e.parent!==e)return e.parent}catch(e){}}(e);return n&&a()?o(n):"about://"}var i=t.host;if(!i)throw new Error("Can not read window host");return r+"//"+i}function c(e){void 0===e&&(e=window);var t=o(e);return t&&e.mockDomain&&0===e.mockDomain.indexOf("mock:")?e.mockDomain:t}var u=[],f=[];function s(e,t){void 0===t&&(t=!0);try{if(e===window)return!1}catch(e){return!0}try{if(!e)return!0}catch(e){return!0}try{if(e.closed)return!0}catch(e){return!e||e.message!==n}if(t&&function(e){if(!function(e){try{if(e===window)return!0}catch(e){}try{var t=Object.getOwnPropertyDescriptor(e,"location");if(t&&!1===t.enumerable)return!1}catch(e){}try{if(i(e)&&a())return!0}catch(e){}try{if(o(e)===o(window))return!0}catch(e){}return!1}(e))return!1;try{if(e===window)return!0;if(i(e)&&a())return!0;if(c(window)===c(e))return!0}catch(e){}return!1}(e))try{if(e.mockclosed)return!0}catch(e){}try{if(!e.parent||!e.top)return!0}catch(e){}var r=function(e,t){for(var r=0;r<e.length;r++)try{if(e[r]===t)return r}catch(e){}return-1}(u,e);if(-1!==r){var s=f[r];if(s&&function(e){if(!e.contentWindow)return!0;if(!e.parentNode)return!0;var t=e.ownerDocument;if(t&&t.documentElement&&!t.documentElement.contains(e)){for(var r=e;r.parentNode&&r.parentNode!==r;)r=r.parentNode;if(!r.host||!t.documentElement.contains(r.host))return!0}return!1}(s))return!0}return!1}function d(e){try{if(e===window)return!0}catch(e){if(e&&e.message===n)return!0}try{if("[object Window]"==={}.toString.call(e))return!0}catch(e){if(e&&e.message===n)return!0}try{if(window.Window&&e instanceof window.Window)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&e.self===e)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&e.parent===e)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&e.top===e)return!0}catch(e){if(e&&e.message===n)return!0}try{if(e&&"__unlikely_value__"===e.__cross_domain_utils_window_check__)return!1}catch(e){return!0}try{if("postMessage"in e&&"self"in e&&"location"in e)return!0}catch(e){}return!1}function h(e,t){for(var r=0;r<e.length;r++)try{if(e[r]===t)return r}catch(e){}return-1}var l=function(){function e(){if(this.name=void 0,this.weakmap=void 0,this.keys=void 0,this.values=void 0,this.name="__weakmap_"+(1e9*Math.random()>>>0)+"__",function(){if("undefined"==typeof WeakMap)return!1;if(void 0===Object.freeze)return!1;try{var e=new WeakMap,t={};return Object.freeze(t),e.set(t,"__testvalue__"),"__testvalue__"===e.get(t)}catch(e){return!1}}())try{this.weakmap=new WeakMap}catch(e){}this.keys=[],this.values=[]}var t=e.prototype;return t._cleanupClosedWindows=function(){for(var e=this.weakmap,t=this.keys,r=0;r<t.length;r++){var n=t[r];if(d(n)&&s(n)){if(e)try{e.delete(n)}catch(e){}t.splice(r,1),this.values.splice(r,1),r-=1}}},t.isSafeToReadWrite=function(e){return!d(e)},t.set=function(e,t){if(!e)throw new Error("WeakMap expected key");var r=this.weakmap;if(r)try{r.set(e,t)}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var n=this.name,i=e[n];return void(i&&i[0]===e?i[1]=t:Object.defineProperty(e,n,{value:[e,t],writable:!0}))}catch(e){}this._cleanupClosedWindows();var a=this.keys,o=this.values,c=h(a,e);-1===c?(a.push(e),o.push(t)):o[c]=t},t.get=function(e){if(!e)throw new Error("WeakMap expected key");var t=this.weakmap;if(t)try{if(t.has(e))return t.get(e)}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var r=e[this.name];return r&&r[0]===e?r[1]:void 0}catch(e){}this._cleanupClosedWindows();var n=h(this.keys,e);if(-1!==n)return this.values[n]},t.delete=function(e){if(!e)throw new Error("WeakMap expected key");var t=this.weakmap;if(t)try{t.delete(e)}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var r=e[this.name];r&&r[0]===e&&(r[0]=r[1]=void 0)}catch(e){}this._cleanupClosedWindows();var n=this.keys,i=h(n,e);-1!==i&&(n.splice(i,1),this.values.splice(i,1))},t.has=function(e){if(!e)throw new Error("WeakMap expected key");var t=this.weakmap;if(t)try{if(t.has(e))return!0}catch(e){delete this.weakmap}if(this.isSafeToReadWrite(e))try{var r=e[this.name];return!(!r||r[0]!==e)}catch(e){}return this._cleanupClosedWindows(),-1!==h(this.keys,e)},t.getOrSet=function(e,t){if(this.has(e))return this.get(e);var r=t();return this.set(e,r),r},e}()}])})); | ||
//# sourceMappingURL=cross-domain-safe-weakmap.min.js.map |
export function hasNativeWeakMap() { | ||
if (typeof WeakMap === 'undefined') { | ||
return false; | ||
} | ||
if (typeof WeakMap === 'undefined') { | ||
return false; | ||
} | ||
if (typeof Object.freeze === 'undefined') { | ||
return false; | ||
} | ||
if (typeof Object.freeze === 'undefined') { | ||
return false; | ||
try { | ||
var testWeakMap = new WeakMap(); | ||
var testKey = {}; | ||
var testValue = '__testvalue__'; | ||
Object.freeze(testKey); | ||
testWeakMap.set(testKey, testValue); | ||
if (testWeakMap.get(testKey) === testValue) { | ||
return true; | ||
} | ||
try { | ||
var testWeakMap = new WeakMap(); | ||
var testKey = {}; | ||
var testValue = '__testvalue__'; | ||
Object.freeze(testKey); | ||
testWeakMap.set(testKey, testValue); | ||
if (testWeakMap.get(testKey) === testValue) { | ||
return true; | ||
} | ||
return false; | ||
} catch (err) { | ||
return false; | ||
} | ||
return false; | ||
} catch (err) { | ||
return false; | ||
} | ||
} |
export function safeIndexOf(collection, item) { | ||
for (var i = 0; i < collection.length; i++) { | ||
try { | ||
if (collection[i] === item) { | ||
return i; | ||
} | ||
} catch (err) { | ||
// pass | ||
} | ||
for (var i = 0; i < collection.length; i++) { | ||
try { | ||
if (collection[i] === item) { | ||
return i; | ||
} | ||
} catch (err) {// pass | ||
} | ||
} | ||
return -1; | ||
} | ||
return -1; | ||
} // eslint-disable-next-line no-unused-vars | ||
// eslint-disable-next-line no-unused-vars | ||
export function noop() { | ||
// pass | ||
export function noop() {// pass | ||
} |
@@ -1,252 +0,240 @@ | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
import { isWindow, isWindowClosed } from 'cross-domain-utils/src'; | ||
import { hasNativeWeakMap } from './native'; | ||
import { noop, safeIndexOf } from './util'; | ||
export var CrossDomainSafeWeakMap = /*#__PURE__*/function () { | ||
// eslint-disable-next-line flowtype/no-mutable-array | ||
// eslint-disable-next-line flowtype/no-mutable-array | ||
function CrossDomainSafeWeakMap() { | ||
this.name = void 0; | ||
this.weakmap = void 0; | ||
this.keys = void 0; | ||
this.values = void 0; | ||
// eslint-disable-next-line no-bitwise | ||
this.name = "__weakmap_" + (Math.random() * 1e9 >>> 0) + "__"; | ||
export var CrossDomainSafeWeakMap = function () { | ||
function CrossDomainSafeWeakMap() { | ||
_classCallCheck(this, CrossDomainSafeWeakMap); | ||
// eslint-disable-next-line no-bitwise | ||
this.name = '__weakmap_' + (Math.random() * 1e9 >>> 0) + '__'; | ||
if (hasNativeWeakMap()) { | ||
try { | ||
this.weakmap = new WeakMap(); | ||
} catch (err) { | ||
// pass | ||
} | ||
} | ||
this.keys = []; | ||
this.values = []; | ||
if (hasNativeWeakMap()) { | ||
try { | ||
this.weakmap = new WeakMap(); | ||
} catch (err) {// pass | ||
} | ||
} | ||
CrossDomainSafeWeakMap.prototype._cleanupClosedWindows = function _cleanupClosedWindows() { | ||
this.keys = []; | ||
this.values = []; | ||
} | ||
var weakmap = this.weakmap; | ||
var keys = this.keys; | ||
var _proto = CrossDomainSafeWeakMap.prototype; | ||
for (var i = 0; i < keys.length; i++) { | ||
var value = keys[i]; | ||
_proto._cleanupClosedWindows = function _cleanupClosedWindows() { | ||
var weakmap = this.weakmap; | ||
var keys = this.keys; | ||
if (isWindow(value) && isWindowClosed(value)) { | ||
for (var i = 0; i < keys.length; i++) { | ||
var value = keys[i]; | ||
if (weakmap) { | ||
try { | ||
weakmap['delete'](value); | ||
} catch (err) { | ||
// pass | ||
} | ||
} | ||
if (isWindow(value) && isWindowClosed(value)) { | ||
if (weakmap) { | ||
try { | ||
weakmap.delete(value); | ||
} catch (err) {// pass | ||
} | ||
} | ||
keys.splice(i, 1); | ||
this.values.splice(i, 1); | ||
keys.splice(i, 1); | ||
this.values.splice(i, 1); | ||
i -= 1; | ||
} | ||
} | ||
}; | ||
i -= 1; | ||
} | ||
} | ||
}; | ||
_proto.isSafeToReadWrite = function isSafeToReadWrite(key) { | ||
if (isWindow(key)) { | ||
return false; | ||
} | ||
CrossDomainSafeWeakMap.prototype.isSafeToReadWrite = function isSafeToReadWrite(key) { | ||
try { | ||
noop(key && key.self); | ||
noop(key && key[this.name]); | ||
} catch (err) { | ||
return false; | ||
} | ||
if (isWindow(key)) { | ||
return false; | ||
} | ||
return true; | ||
}; | ||
try { | ||
noop(key && key.self); | ||
noop(key && key[this.name]); | ||
} catch (err) { | ||
return false; | ||
} | ||
_proto.set = function set(key, value) { | ||
if (!key) { | ||
throw new Error("WeakMap expected key"); | ||
} | ||
return true; | ||
}; | ||
var weakmap = this.weakmap; | ||
CrossDomainSafeWeakMap.prototype.set = function set(key, value) { | ||
if (weakmap) { | ||
try { | ||
weakmap.set(key, value); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
if (!key) { | ||
throw new Error('WeakMap expected key'); | ||
} | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var name = this.name; | ||
var entry = key[name]; | ||
var weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
weakmap.set(key, value); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
if (entry && entry[0] === key) { | ||
entry[1] = value; | ||
} else { | ||
Object.defineProperty(key, name, { | ||
value: [key, value], | ||
writable: true | ||
}); | ||
} | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var name = this.name; | ||
var entry = key[name]; | ||
return; | ||
} catch (err) {// pass | ||
} | ||
} | ||
if (entry && entry[0] === key) { | ||
entry[1] = value; | ||
} else { | ||
Object.defineProperty(key, name, { | ||
value: [key, value], | ||
writable: true | ||
}); | ||
} | ||
this._cleanupClosedWindows(); | ||
return; | ||
} catch (err) { | ||
// pass | ||
} | ||
} | ||
var keys = this.keys; | ||
var values = this.values; | ||
var index = safeIndexOf(keys, key); | ||
this._cleanupClosedWindows(); | ||
if (index === -1) { | ||
keys.push(key); | ||
values.push(value); | ||
} else { | ||
values[index] = value; | ||
} | ||
}; | ||
var keys = this.keys; | ||
var values = this.values; | ||
var index = safeIndexOf(keys, key); | ||
_proto.get = function get(key) { | ||
if (!key) { | ||
throw new Error("WeakMap expected key"); | ||
} | ||
if (index === -1) { | ||
keys.push(key); | ||
values.push(value); | ||
} else { | ||
values[index] = value; | ||
} | ||
}; | ||
var weakmap = this.weakmap; | ||
CrossDomainSafeWeakMap.prototype.get = function get(key) { | ||
if (!key) { | ||
throw new Error('WeakMap expected key'); | ||
if (weakmap) { | ||
try { | ||
if (weakmap.has(key)) { | ||
return weakmap.get(key); | ||
} | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
var weakmap = this.weakmap; | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var entry = key[this.name]; | ||
if (weakmap) { | ||
try { | ||
if (weakmap.has(key)) { | ||
return weakmap.get(key); | ||
} | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
if (entry && entry[0] === key) { | ||
return entry[1]; | ||
} | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var entry = key[this.name]; | ||
return; | ||
} catch (err) {// pass | ||
} | ||
} | ||
if (entry && entry[0] === key) { | ||
return entry[1]; | ||
} | ||
this._cleanupClosedWindows(); | ||
return; | ||
} catch (err) { | ||
// pass | ||
} | ||
} | ||
var keys = this.keys; | ||
var index = safeIndexOf(keys, key); | ||
this._cleanupClosedWindows(); | ||
if (index === -1) { | ||
return; | ||
} | ||
var keys = this.keys; | ||
var index = safeIndexOf(keys, key); | ||
return this.values[index]; | ||
}; | ||
if (index === -1) { | ||
return; | ||
} | ||
_proto.delete = function _delete(key) { | ||
if (!key) { | ||
throw new Error("WeakMap expected key"); | ||
} | ||
return this.values[index]; | ||
}; | ||
var weakmap = this.weakmap; | ||
CrossDomainSafeWeakMap.prototype['delete'] = function _delete(key) { | ||
if (weakmap) { | ||
try { | ||
weakmap.delete(key); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
if (!key) { | ||
throw new Error('WeakMap expected key'); | ||
} | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var entry = key[this.name]; | ||
var weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
weakmap['delete'](key); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
if (entry && entry[0] === key) { | ||
entry[0] = entry[1] = undefined; | ||
} | ||
} catch (err) {// pass | ||
} | ||
} | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var entry = key[this.name]; | ||
this._cleanupClosedWindows(); | ||
if (entry && entry[0] === key) { | ||
entry[0] = entry[1] = undefined; | ||
} | ||
} catch (err) { | ||
// pass | ||
} | ||
} | ||
var keys = this.keys; | ||
var index = safeIndexOf(keys, key); | ||
this._cleanupClosedWindows(); | ||
if (index !== -1) { | ||
keys.splice(index, 1); | ||
this.values.splice(index, 1); | ||
} | ||
}; | ||
var keys = this.keys; | ||
var index = safeIndexOf(keys, key); | ||
_proto.has = function has(key) { | ||
if (!key) { | ||
throw new Error("WeakMap expected key"); | ||
} | ||
if (index !== -1) { | ||
keys.splice(index, 1); | ||
this.values.splice(index, 1); | ||
} | ||
}; | ||
var weakmap = this.weakmap; | ||
CrossDomainSafeWeakMap.prototype.has = function has(key) { | ||
if (!key) { | ||
throw new Error('WeakMap expected key'); | ||
if (weakmap) { | ||
try { | ||
if (weakmap.has(key)) { | ||
return true; | ||
} | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
var weakmap = this.weakmap; | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var entry = key[this.name]; | ||
if (weakmap) { | ||
try { | ||
if (weakmap.has(key)) { | ||
return true; | ||
} | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
if (entry && entry[0] === key) { | ||
return true; | ||
} | ||
if (this.isSafeToReadWrite(key)) { | ||
try { | ||
var entry = key[this.name]; | ||
return false; | ||
} catch (err) {// pass | ||
} | ||
} | ||
if (entry && entry[0] === key) { | ||
return true; | ||
} | ||
this._cleanupClosedWindows(); | ||
return false; | ||
} catch (err) { | ||
// pass | ||
} | ||
} | ||
var index = safeIndexOf(this.keys, key); | ||
return index !== -1; | ||
}; | ||
this._cleanupClosedWindows(); | ||
_proto.getOrSet = function getOrSet(key, getter) { | ||
if (this.has(key)) { | ||
// $FlowFixMe | ||
return this.get(key); | ||
} | ||
var index = safeIndexOf(this.keys, key); | ||
return index !== -1; | ||
}; | ||
var value = getter(); | ||
this.set(key, value); | ||
return value; | ||
}; | ||
CrossDomainSafeWeakMap.prototype.getOrSet = function getOrSet(key, getter) { | ||
if (this.has(key)) { | ||
// $FlowFixMe | ||
return this.get(key); | ||
} | ||
var value = getter(); | ||
this.set(key, value); | ||
return value; | ||
}; | ||
return CrossDomainSafeWeakMap; | ||
return CrossDomainSafeWeakMap; | ||
}(); |
{ | ||
"name": "cross-domain-safe-weakmap", | ||
"version": "1.0.27", | ||
"version": "1.0.28", | ||
"description": "Cross domain safe WeakMap.", | ||
@@ -44,5 +44,5 @@ "main": "index.js", | ||
"devDependencies": { | ||
"flow-bin": "^0.109.0", | ||
"grumbler-scripts": "^2.0.18", | ||
"mocha": "^2.5.3" | ||
"flow-bin": "^0.135.0", | ||
"grumbler-scripts": "^3", | ||
"mocha": "^4" | ||
}, | ||
@@ -49,0 +49,0 @@ "dependencies": { |
@@ -15,5 +15,5 @@ /* @flow */ | ||
let testWeakMap = new WeakMap(); | ||
let testKey = {}; | ||
let testValue = '__testvalue__'; | ||
const testWeakMap = new WeakMap(); | ||
const testKey = {}; | ||
const testValue = '__testvalue__'; | ||
@@ -20,0 +20,0 @@ Object.freeze(testKey); |
/* @flow */ | ||
export function safeIndexOf<T>(collection : Array<T>, item : T) : number { | ||
export function safeIndexOf<T>(collection : $ReadOnlyArray<T>, item : T) : number { | ||
for (let i = 0; i < collection.length; i++) { | ||
@@ -19,4 +19,4 @@ | ||
// eslint-disable-next-line no-unused-vars | ||
export function noop(...args : Array<mixed>) { | ||
export function noop(...args : $ReadOnlyArray<mixed>) { | ||
// pass | ||
} |
@@ -12,3 +12,5 @@ /* @flow */ | ||
weakmap : ?WeakMap<K, V> | ||
// eslint-disable-next-line flowtype/no-mutable-array | ||
keys : Array<K> | ||
// eslint-disable-next-line flowtype/no-mutable-array | ||
values : Array<V> | ||
@@ -34,7 +36,7 @@ | ||
let weakmap = this.weakmap; | ||
let keys = this.keys; | ||
const weakmap = this.weakmap; | ||
const keys = this.keys; | ||
for (let i = 0; i < keys.length; i++) { | ||
let value = keys[i]; | ||
const value = keys[i]; | ||
@@ -81,3 +83,3 @@ if (isWindow(value) && isWindowClosed(value)) { | ||
let weakmap = this.weakmap; | ||
const weakmap = this.weakmap; | ||
@@ -94,4 +96,4 @@ if (weakmap) { | ||
try { | ||
let name = this.name; | ||
let entry = key[name]; | ||
const name = this.name; | ||
const entry = key[name]; | ||
@@ -116,5 +118,5 @@ if (entry && entry[0] === key) { | ||
let keys = this.keys; | ||
let values = this.values; | ||
let index = safeIndexOf(keys, key); | ||
const keys = this.keys; | ||
const values = this.values; | ||
const index = safeIndexOf(keys, key); | ||
@@ -135,3 +137,3 @@ if (index === -1) { | ||
let weakmap = this.weakmap; | ||
const weakmap = this.weakmap; | ||
@@ -151,3 +153,3 @@ if (weakmap) { | ||
try { | ||
let entry = key[this.name]; | ||
const entry = key[this.name]; | ||
@@ -166,4 +168,4 @@ if (entry && entry[0] === key) { | ||
let keys = this.keys; | ||
let index = safeIndexOf(keys, key); | ||
const keys = this.keys; | ||
const index = safeIndexOf(keys, key); | ||
@@ -183,3 +185,3 @@ if (index === -1) { | ||
let weakmap = this.weakmap; | ||
const weakmap = this.weakmap; | ||
@@ -196,3 +198,3 @@ if (weakmap) { | ||
try { | ||
let entry = key[this.name]; | ||
const entry = key[this.name]; | ||
@@ -209,4 +211,4 @@ if (entry && entry[0] === key) { | ||
let keys = this.keys; | ||
let index = safeIndexOf(keys, key); | ||
const keys = this.keys; | ||
const index = safeIndexOf(keys, key); | ||
@@ -225,3 +227,3 @@ if (index !== -1) { | ||
let weakmap = this.weakmap; | ||
const weakmap = this.weakmap; | ||
@@ -240,3 +242,3 @@ if (weakmap) { | ||
try { | ||
let entry = key[this.name]; | ||
const entry = key[this.name]; | ||
@@ -255,3 +257,3 @@ if (entry && entry[0] === key) { | ||
let index = safeIndexOf(this.keys, key); | ||
const index = safeIndexOf(this.keys, key); | ||
return index !== -1; | ||
@@ -266,3 +268,3 @@ } | ||
let value = getter(); | ||
const value = getter(); | ||
this.set(key, value); | ||
@@ -269,0 +271,0 @@ return value; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
124640
510