Spaces:
				
			
			
	
			
			
		Runtime error
		
	
	
	
			
			
	
	
	
	
		
		
		Runtime error
		
	| ; | |
| var isValue = require("es5-ext/object/is-value") | |
| , setPrototypeOf = require("es5-ext/object/set-prototype-of") | |
| , object = require("es5-ext/object/valid-object") | |
| , ensureValue = require("es5-ext/object/valid-value") | |
| , randomUniq = require("es5-ext/string/random-uniq") | |
| , d = require("d") | |
| , getIterator = require("es6-iterator/get") | |
| , forOf = require("es6-iterator/for-of") | |
| , toStringTagSymbol = require("es6-symbol").toStringTag | |
| , isNative = require("./is-native-implemented") | |
| , isArray = Array.isArray, defineProperty = Object.defineProperty | |
| , objHasOwnProperty = Object.prototype.hasOwnProperty, getPrototypeOf = Object.getPrototypeOf | |
| , WeakMapPoly; | |
| module.exports = WeakMapPoly = function (/* Iterable*/) { | |
| var iterable = arguments[0], self; | |
| if (!(this instanceof WeakMapPoly)) throw new TypeError("Constructor requires 'new'"); | |
| self = isNative && setPrototypeOf && (WeakMap !== WeakMapPoly) | |
| ? setPrototypeOf(new WeakMap(), getPrototypeOf(this)) : this; | |
| if (isValue(iterable)) { | |
| if (!isArray(iterable)) iterable = getIterator(iterable); | |
| } | |
| defineProperty(self, "__weakMapData__", d("c", "$weakMap$" + randomUniq())); | |
| if (!iterable) return self; | |
| forOf(iterable, function (val) { | |
| ensureValue(val); | |
| self.set(val[0], val[1]); | |
| }); | |
| return self; | |
| }; | |
| if (isNative) { | |
| if (setPrototypeOf) setPrototypeOf(WeakMapPoly, WeakMap); | |
| WeakMapPoly.prototype = Object.create(WeakMap.prototype, { constructor: d(WeakMapPoly) }); | |
| } | |
| Object.defineProperties(WeakMapPoly.prototype, { | |
| delete: d(function (key) { | |
| if (objHasOwnProperty.call(object(key), this.__weakMapData__)) { | |
| delete key[this.__weakMapData__]; | |
| return true; | |
| } | |
| return false; | |
| }), | |
| get: d(function (key) { | |
| if (!objHasOwnProperty.call(object(key), this.__weakMapData__)) return undefined; | |
| return key[this.__weakMapData__]; | |
| }), | |
| has: d(function (key) { | |
| return objHasOwnProperty.call(object(key), this.__weakMapData__); | |
| }), | |
| set: d(function (key, value) { | |
| defineProperty(object(key), this.__weakMapData__, d("c", value)); | |
| return this; | |
| }), | |
| toString: d(function () { | |
| return "[object WeakMap]"; | |
| }) | |
| }); | |
| defineProperty(WeakMapPoly.prototype, toStringTagSymbol, d("c", "WeakMap")); | |