cross-domain-safe-weakmap
Advanced tools
Comparing version 1.0.3 to 1.0.4
@@ -59,8 +59,9 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
}); | ||
var WeakMap = exports.WeakMap = void 0; | ||
if (window.WeakMap) { | ||
exports.WeakMap = WeakMap = window.WeakMap; | ||
} else { | ||
exports.WeakMap = WeakMap = __webpack_require__("./src/weakmap.js").WeakMap; | ||
} | ||
var _weakmap = __webpack_require__("./src/weakmap.js"); | ||
Object.defineProperty(exports, "WeakMap", { | ||
enumerable: true, | ||
get: function get() { | ||
return _weakmap.WeakMap; | ||
} | ||
}); | ||
}, | ||
@@ -90,2 +91,3 @@ "./src/weakmap.js": function(module, exports, __webpack_require__) { | ||
var _util = __webpack_require__("./src/util.js"); | ||
var _native = __webpack_require__("./src/native.js"); | ||
function _classCallCheck(instance, Constructor) { | ||
@@ -103,2 +105,5 @@ if (!(instance instanceof Constructor)) { | ||
this.name = "__weakmap_" + (Math.random() * 1e9 >>> 0) + "__" + counter; | ||
if ((0, _native.hasNativeWeakMap)()) { | ||
this.weakmap = new window.WeakMap(); | ||
} | ||
this.keys = []; | ||
@@ -110,14 +115,31 @@ this.values = []; | ||
value: function set(key, value) { | ||
var weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
weakmap.set(key, value); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
if ((0, _util.isWindow)(key)) { | ||
return this.safeSet(key, value); | ||
} | ||
var name = this.name; | ||
var entry = key[name]; | ||
if (entry && entry[0] === key) { | ||
entry[1] = value; | ||
var keys = this.keys; | ||
var values = this.values; | ||
var index = keys.indexOf(key); | ||
if (index === -1) { | ||
keys.push(key); | ||
values.push(value); | ||
} else { | ||
values[index] = value; | ||
} | ||
} else { | ||
defineProperty(key, name, { | ||
value: [ key, value ], | ||
writable: true | ||
}); | ||
var name = this.name; | ||
var entry = key[name]; | ||
if (entry && entry[0] === key) { | ||
entry[1] = value; | ||
} else { | ||
defineProperty(key, name, { | ||
value: [ key, value ], | ||
writable: true | ||
}); | ||
} | ||
} | ||
@@ -128,9 +150,25 @@ } | ||
value: function get(key) { | ||
var weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
if (weakmap.has(key)) { | ||
return weakmap.get(key); | ||
} | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
if ((0, _util.isWindow)(key)) { | ||
return this.safeGet(key); | ||
var keys = this.keys; | ||
var index = keys.indexOf(key); | ||
if (index === -1) { | ||
return; | ||
} | ||
return this.values[index]; | ||
} else { | ||
var entry = key[this.name]; | ||
if (entry && entry[0] === key) { | ||
return entry[1]; | ||
} | ||
} | ||
var entry = key[this.name]; | ||
if (entry && entry[0] === key) { | ||
return entry[1]; | ||
} | ||
} | ||
@@ -140,9 +178,23 @@ }, { | ||
value: function _delete(key) { | ||
var weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
weakmap["delete"](key); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
if ((0, _util.isWindow)(key)) { | ||
return this.safeDelete(key); | ||
var keys = this.keys; | ||
var index = keys.indexOf(key); | ||
if (index !== -1) { | ||
keys.splice(index, 1); | ||
this.values.splice(index, 1); | ||
} | ||
} else { | ||
var entry = key[this.name]; | ||
if (entry && entry[0] === key) { | ||
entry[0] = entry[1] = undefined; | ||
} | ||
} | ||
var entry = key[this.name]; | ||
if (entry && entry[0] === key) { | ||
entry[0] = entry[1] = undefined; | ||
} | ||
} | ||
@@ -152,49 +204,20 @@ }, { | ||
value: function has(key) { | ||
var weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
return weakmap.has(key); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
if ((0, _util.isWindow)(key)) { | ||
return this.safeHas(key); | ||
return this.keys.indexOf(key) !== -1; | ||
} else { | ||
var entry = key[this.name]; | ||
if (entry && entry[0] === key) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
var entry = key[this.name]; | ||
if (entry && entry[0] === key) { | ||
return true; | ||
} | ||
return false; | ||
} | ||
}, { | ||
key: "safeSet", | ||
value: function safeSet(key, value) { | ||
var keys = this.keys; | ||
var values = this.values; | ||
var index = keys.indexOf(key); | ||
if (index === -1) { | ||
keys.push(key); | ||
values.push(value); | ||
return; | ||
} | ||
values[index] = value; | ||
} | ||
}, { | ||
key: "safeGet", | ||
value: function safeGet(key) { | ||
var keys = this.keys; | ||
var index = keys.indexOf(key); | ||
if (index === -1) { | ||
return; | ||
} | ||
return this.values[index]; | ||
} | ||
}, { | ||
key: "safeDelete", | ||
value: function safeDelete(key) { | ||
var keys = this.keys; | ||
var index = keys.indexOf(key); | ||
if (index !== -1) { | ||
keys.splice(index, 1); | ||
this.values.splice(index, 1); | ||
} | ||
} | ||
}, { | ||
key: "safeHas", | ||
value: function safeHas(key) { | ||
return this.keys.indexOf(key) !== -1; | ||
} | ||
} ]); | ||
@@ -223,2 +246,30 @@ return WeakMap; | ||
} | ||
}, | ||
"./src/native.js": function(module, exports) { | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
}); | ||
exports.hasNativeWeakMap = hasNativeWeakMap; | ||
function hasNativeWeakMap() { | ||
if (!window.WeakMap) { | ||
return false; | ||
} | ||
if (!window.Object.freeze) { | ||
return false; | ||
} | ||
try { | ||
var testWeakMap = new window.WeakMap(); | ||
var testKey = {}; | ||
var testValue = "__testvalue__"; | ||
window.Object.freeze(testKey); | ||
testWeakMap.set(testKey, testValue); | ||
if (testWeakMap.get(testKey) === testValue) { | ||
return true; | ||
} | ||
return false; | ||
} catch (err) { | ||
return false; | ||
} | ||
} | ||
} | ||
@@ -225,0 +276,0 @@ }); |
@@ -1,2 +0,2 @@ | ||
!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()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}Object.defineProperty(t,"__esModule",{value:!0});var i=n(1);Object.keys(i).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})});var a=r(i);t.default=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=t.WeakMap=void 0;window.WeakMap?t.WeakMap=r=window.WeakMap:t.WeakMap=r=n(2).WeakMap},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.WeakMap=void 0;var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(3),u=Object.defineProperty,o=Date.now()%1e9;t.WeakMap=function(){function e(){r(this,e),o+=1,this.name="__weakmap_"+(1e9*Math.random()>>>0)+"__"+o,this.keys=[],this.values=[]}return i(e,[{key:"set",value:function(e,t){if((0,a.isWindow)(e))return this.safeSet(e,t);var n=this.name,r=e[n];r&&r[0]===e?r[1]=t:u(e,n,{value:[e,t],writable:!0})}},{key:"get",value:function(e){if((0,a.isWindow)(e))return this.safeGet(e);var t=e[this.name];return t&&t[0]===e?t[1]:void 0}},{key:"delete",value:function(e){if((0,a.isWindow)(e))return this.safeDelete(e);var t=e[this.name];t&&t[0]===e&&(t[0]=t[1]=void 0)}},{key:"has",value:function(e){if((0,a.isWindow)(e))return this.safeHas(e);var t=e[this.name];return!(!t||t[0]!==e)}},{key:"safeSet",value:function(e,t){var n=this.keys,r=this.values,i=n.indexOf(e);return i===-1?(n.push(e),void r.push(t)):void(r[i]=t)}},{key:"safeGet",value:function(e){var t=this.keys,n=t.indexOf(e);if(n!==-1)return this.values[n]}},{key:"safeDelete",value:function(e){var t=this.keys,n=t.indexOf(e);n!==-1&&(t.splice(n,1),this.values.splice(n,1))}},{key:"safeHas",value:function(e){return this.keys.indexOf(e)!==-1}}]),e}()},function(e,t){"use strict";function n(e){if(r.indexOf(e)!==-1)return!0;try{if(e&&e.self===e)return r.push(e),!0}catch(e){}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.isWindow=n;var r=[]}])}); | ||
!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()}(this,function(){return function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t,r){"use strict";function n(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}Object.defineProperty(t,"__esModule",{value:!0});var a=r(1);Object.keys(a).forEach(function(e){"default"!==e&&"__esModule"!==e&&Object.defineProperty(t,e,{enumerable:!0,get:function(){return a[e]}})});var i=n(a);t.default=i},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(2);Object.defineProperty(t,"WeakMap",{enumerable:!0,get:function(){return n.WeakMap}})},function(e,t,r){"use strict";function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.WeakMap=void 0;var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,r,n){return r&&e(t.prototype,r),n&&e(t,n),t}}(),i=r(3),u=r(4),s=Object.defineProperty,o=Date.now()%1e9;t.WeakMap=function(){function e(){n(this,e),o+=1,this.name="__weakmap_"+(1e9*Math.random()>>>0)+"__"+o,(0,u.hasNativeWeakMap)()&&(this.weakmap=new window.WeakMap),this.keys=[],this.values=[]}return a(e,[{key:"set",value:function(e,t){var r=this.weakmap;if(r)try{r.set(e,t)}catch(e){delete this.weakmap}if((0,i.isWindow)(e)){var n=this.keys,a=this.values,u=n.indexOf(e);u===-1?(n.push(e),a.push(t)):a[u]=t}else{var o=this.name,f=e[o];f&&f[0]===e?f[1]=t:s(e,o,{value:[e,t],writable:!0})}}},{key:"get",value:function(e){var t=this.weakmap;if(t)try{if(t.has(e))return t.get(e)}catch(e){delete this.weakmap}if((0,i.isWindow)(e)){var r=this.keys,n=r.indexOf(e);if(n===-1)return;return this.values[n]}var a=e[this.name];if(a&&a[0]===e)return a[1]}},{key:"delete",value:function(e){var t=this.weakmap;if(t)try{t.delete(e)}catch(e){delete this.weakmap}if((0,i.isWindow)(e)){var r=this.keys,n=r.indexOf(e);n!==-1&&(r.splice(n,1),this.values.splice(n,1))}else{var a=e[this.name];a&&a[0]===e&&(a[0]=a[1]=void 0)}}},{key:"has",value:function(e){var t=this.weakmap;if(t)try{return t.has(e)}catch(e){delete this.weakmap}if((0,i.isWindow)(e))return this.keys.indexOf(e)!==-1;var r=e[this.name];return!(!r||r[0]!==e)}}]),e}()},function(e,t){"use strict";function r(e){if(n.indexOf(e)!==-1)return!0;try{if(e&&e.self===e)return n.push(e),!0}catch(e){}return!1}Object.defineProperty(t,"__esModule",{value:!0}),t.isWindow=r;var n=[]},function(e,t){"use strict";function r(){if(!window.WeakMap)return!1;if(!window.Object.freeze)return!1;try{var e=new window.WeakMap,t={},r="__testvalue__";return window.Object.freeze(t),e.set(t,r),e.get(t)===r}catch(e){return!1}}Object.defineProperty(t,"__esModule",{value:!0}),t.hasNativeWeakMap=r}])}); | ||
//# sourceMappingURL=cross-domain-safe-weakmap.min.js.map |
{ | ||
"name": "cross-domain-safe-weakmap", | ||
"version": "1.0.3", | ||
"version": "1.0.4", | ||
"description": "Cross domain safe WeakMap.", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -0,4 +1,5 @@ | ||
/* @flow */ | ||
import * as INTERFACE from './interface'; | ||
export * from './interface'; | ||
export default INTERFACE; | ||
export default INTERFACE; |
@@ -0,8 +1,3 @@ | ||
/* @flow */ | ||
export let WeakMap; | ||
if (window.WeakMap) { | ||
WeakMap = window.WeakMap; | ||
} else { | ||
WeakMap = require('./weakmap').WeakMap; | ||
} | ||
export { WeakMap } from './weakmap'; |
/* @flow */ | ||
import { isWindow } from './util'; | ||
import { hasNativeWeakMap } from './native'; | ||
@@ -11,2 +12,3 @@ let defineProperty = Object.defineProperty; | ||
name : string | ||
weakmap : WeakMap | ||
keys : Array<mixed> | ||
@@ -18,2 +20,7 @@ values : Array<mixed> | ||
this.name = `__weakmap_${Math.random() * 1e9 >>> 0}__${counter}`; // eslint-disable-line | ||
if (hasNativeWeakMap()) { | ||
this.weakmap = new window.WeakMap(); | ||
} | ||
this.keys = []; | ||
@@ -25,16 +32,38 @@ this.values = []; | ||
if (isWindow(key)) { | ||
return this.safeSet(key, value); | ||
let weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
weakmap.set(key, value); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
let name = this.name; | ||
let entry = key[name]; | ||
if (isWindow(key)) { | ||
if (entry && entry[0] === key) { | ||
entry[1] = value; | ||
let keys = this.keys; | ||
let values = this.values; | ||
let index = keys.indexOf(key); | ||
if (index === -1) { | ||
keys.push(key); | ||
values.push(value); | ||
} else { | ||
values[index] = value; | ||
} | ||
} else { | ||
defineProperty(key, name, { | ||
value: [ key, value ], | ||
writable: true | ||
}); | ||
let name = this.name; | ||
let entry = key[name]; | ||
if (entry && entry[0] === key) { | ||
entry[1] = value; | ||
} else { | ||
defineProperty(key, name, { | ||
value: [ key, value ], | ||
writable: true | ||
}); | ||
} | ||
} | ||
@@ -45,83 +74,94 @@ } | ||
if (isWindow(key)) { | ||
return this.safeGet(key); | ||
let weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
if (weakmap.has(key)) { | ||
return weakmap.get(key); | ||
} | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
let entry = key[this.name]; | ||
if (isWindow(key)) { | ||
if (entry && entry[0] === key) { | ||
return entry[1]; | ||
} | ||
} | ||
let keys = this.keys; | ||
let index = keys.indexOf(key); | ||
delete(key : Object) { | ||
if (index === -1) { | ||
return; | ||
} | ||
if (isWindow(key)) { | ||
return this.safeDelete(key); | ||
} | ||
return this.values[index]; | ||
let entry = key[this.name]; | ||
} else { | ||
if (entry && entry[0] === key) { | ||
entry[0] = entry[1] = undefined; | ||
let entry = key[this.name]; | ||
if (entry && entry[0] === key) { | ||
return entry[1]; | ||
} | ||
} | ||
} | ||
has(key : Object) { | ||
delete(key : Object) { | ||
if (isWindow(key)) { | ||
return this.safeHas(key); | ||
let weakmap = this.weakmap; | ||
if (weakmap) { | ||
try { | ||
weakmap.delete(key); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
let entry = key[this.name]; | ||
if (isWindow(key)) { | ||
if (entry && entry[0] === key) { | ||
return true; | ||
} | ||
let keys = this.keys; | ||
let index = keys.indexOf(key); | ||
return false; | ||
} | ||
if (index !== -1) { | ||
keys.splice(index, 1); | ||
this.values.splice(index, 1); | ||
} | ||
safeSet(key : Object, value : mixed) { | ||
} else { | ||
let keys = this.keys; | ||
let values = this.values; | ||
let index = keys.indexOf(key); | ||
let entry = key[this.name]; | ||
if (index === -1) { | ||
keys.push(key); | ||
values.push(value); | ||
return; | ||
if (entry && entry[0] === key) { | ||
entry[0] = entry[1] = undefined; | ||
} | ||
} | ||
values[index] = value; | ||
} | ||
safeGet(key : Object) : ?mixed { | ||
has(key : Object) { | ||
let keys = this.keys; | ||
let index = keys.indexOf(key); | ||
let weakmap = this.weakmap; | ||
if (index === -1) { | ||
return; | ||
if (weakmap) { | ||
try { | ||
return weakmap.has(key); | ||
} catch (err) { | ||
delete this.weakmap; | ||
} | ||
} | ||
return this.values[index]; | ||
} | ||
if (isWindow(key)) { | ||
safeDelete(key : Object) { | ||
return this.keys.indexOf(key) !== -1; | ||
let keys = this.keys; | ||
let index = keys.indexOf(key); | ||
} else { | ||
if (index !== -1) { | ||
keys.splice(index, 1); | ||
this.values.splice(index, 1); | ||
} | ||
} | ||
let entry = key[this.name]; | ||
safeHas(key : Object) { | ||
if (entry && entry[0] === key) { | ||
return true; | ||
} | ||
return this.keys.indexOf(key) !== -1; | ||
return false; | ||
} | ||
} | ||
} |
@@ -188,1 +188,233 @@ /* @flow */ | ||
}); | ||
describe('weakmap standard cases with no native WeakMap', () => { | ||
it('should set and get a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = {}; | ||
let val = 'foo'; | ||
map.set(obj, val); | ||
let result = map.get(obj); | ||
if (result !== val) { | ||
throw new Error(`Expected ${result || ''} to be '${val}'`); | ||
} | ||
}); | ||
it('should get a non-existant key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = {}; | ||
let result = map.get(obj); | ||
if (result !== undefined) { | ||
throw new Error(`Expected result to be undefined`); | ||
} | ||
}); | ||
it('should set over an existing key, and get a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = {}; | ||
let val1 = 'foo'; | ||
let val2 = 'bar'; | ||
map.set(obj, val1); | ||
map.set(obj, val2); | ||
let result = map.get(obj); | ||
if (result !== val2) { | ||
throw new Error(`Expected ${result || ''} to be '${val2}'`); | ||
} | ||
}); | ||
it('should set and check for a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = {}; | ||
let val = 'foo'; | ||
map.set(obj, val); | ||
let result = map.has(obj); | ||
if (!result) { | ||
throw new Error(`Expected ${result.toString()} to be true`); | ||
} | ||
}); | ||
it('should check for a non-existant key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = {}; | ||
let result = map.has(obj); | ||
if (result) { | ||
throw new Error(`Expected ${result.toString()} to be false`); | ||
} | ||
}); | ||
it('should set, delete, and check for a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = {}; | ||
let val = 'foo'; | ||
map.set(obj, val); | ||
map.delete(obj); | ||
let result = map.has(obj); | ||
if (result) { | ||
throw new Error(`Expected ${result.toString()} to be false`); | ||
} | ||
}); | ||
}); | ||
describe('weakmap cross-origin cases with no native WeakMap', () => { | ||
let win = {}; | ||
win.self = win; | ||
it('should set and get a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = win; | ||
let val = 'foo'; | ||
map.set(obj, val); | ||
let result = map.get(obj); | ||
if (result !== val) { | ||
throw new Error(`Expected ${result || ''} to be '${val}'`); | ||
} | ||
}); | ||
it('should get a non-existant key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = win; | ||
let result = map.get(obj); | ||
if (result !== undefined) { | ||
throw new Error(`Expected result to be undefined`); | ||
} | ||
}); | ||
it('should set over an existing key, and get a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = win; | ||
let val1 = 'foo'; | ||
let val2 = 'bar'; | ||
map.set(obj, val1); | ||
map.set(obj, val2); | ||
let result = map.get(obj); | ||
if (result !== val2) { | ||
throw new Error(`Expected ${result || ''} to be '${val2}'`); | ||
} | ||
}); | ||
it('should set and check for a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = win; | ||
let val = 'foo'; | ||
map.set(obj, val); | ||
let result = map.has(obj); | ||
if (!result) { | ||
throw new Error(`Expected ${result.toString()} to be true`); | ||
} | ||
}); | ||
it('should check for a non-existant key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = win; | ||
let result = map.has(obj); | ||
if (result) { | ||
throw new Error(`Expected ${result.toString()} to be false`); | ||
} | ||
}); | ||
it('should set, delete, and check for a key', () => { | ||
let weakMap = window.WeakMap; | ||
delete window.WeakMap; | ||
let map = new WeakMap(); | ||
window.WeakMap = weakMap; | ||
let obj = win; | ||
let val = 'foo'; | ||
map.set(obj, val); | ||
map.delete(obj); | ||
let result = map.has(obj); | ||
if (result) { | ||
throw new Error(`Expected ${result.toString()} to be false`); | ||
} | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
109786
32
984