Show More
Commit Description:
prevent multiple place login using uuid cookie
Commit Description:
prevent multiple place login using uuid cookie
References:
File last commit:
Show/Diff file:
Action:
node_modules/es6-map/polyfill.js
| 104 lines
| 3.4 KiB
| application/javascript
| JavascriptLexer
|
r789 | 'use strict'; | |||
var clear = require('es5-ext/array/#/clear') | ||||
, eIndexOf = require('es5-ext/array/#/e-index-of') | ||||
, setPrototypeOf = require('es5-ext/object/set-prototype-of') | ||||
, callable = require('es5-ext/object/valid-callable') | ||||
, validValue = require('es5-ext/object/valid-value') | ||||
, d = require('d') | ||||
, ee = require('event-emitter') | ||||
, Symbol = require('es6-symbol') | ||||
, iterator = require('es6-iterator/valid-iterable') | ||||
, forOf = require('es6-iterator/for-of') | ||||
, Iterator = require('./lib/iterator') | ||||
, isNative = require('./is-native-implemented') | ||||
, call = Function.prototype.call | ||||
, defineProperties = Object.defineProperties, getPrototypeOf = Object.getPrototypeOf | ||||
, MapPoly; | ||||
module.exports = MapPoly = function (/*iterable*/) { | ||||
var iterable = arguments[0], keys, values, self; | ||||
if (!(this instanceof MapPoly)) throw new TypeError('Constructor requires \'new\''); | ||||
if (isNative && setPrototypeOf && (Map !== MapPoly)) { | ||||
self = setPrototypeOf(new Map(), getPrototypeOf(this)); | ||||
} else { | ||||
self = this; | ||||
} | ||||
if (iterable != null) iterator(iterable); | ||||
defineProperties(self, { | ||||
__mapKeysData__: d('c', keys = []), | ||||
__mapValuesData__: d('c', values = []) | ||||
}); | ||||
if (!iterable) return self; | ||||
forOf(iterable, function (value) { | ||||
var key = validValue(value)[0]; | ||||
value = value[1]; | ||||
if (eIndexOf.call(keys, key) !== -1) return; | ||||
keys.push(key); | ||||
values.push(value); | ||||
}, self); | ||||
return self; | ||||
}; | ||||
if (isNative) { | ||||
if (setPrototypeOf) setPrototypeOf(MapPoly, Map); | ||||
MapPoly.prototype = Object.create(Map.prototype, { | ||||
constructor: d(MapPoly) | ||||
}); | ||||
} | ||||
ee(defineProperties(MapPoly.prototype, { | ||||
clear: d(function () { | ||||
if (!this.__mapKeysData__.length) return; | ||||
clear.call(this.__mapKeysData__); | ||||
clear.call(this.__mapValuesData__); | ||||
this.emit('_clear'); | ||||
}), | ||||
delete: d(function (key) { | ||||
var index = eIndexOf.call(this.__mapKeysData__, key); | ||||
if (index === -1) return false; | ||||
this.__mapKeysData__.splice(index, 1); | ||||
this.__mapValuesData__.splice(index, 1); | ||||
this.emit('_delete', index, key); | ||||
return true; | ||||
}), | ||||
entries: d(function () { return new Iterator(this, 'key+value'); }), | ||||
forEach: d(function (cb/*, thisArg*/) { | ||||
var thisArg = arguments[1], iterator, result; | ||||
callable(cb); | ||||
iterator = this.entries(); | ||||
result = iterator._next(); | ||||
while (result !== undefined) { | ||||
call.call(cb, thisArg, this.__mapValuesData__[result], | ||||
this.__mapKeysData__[result], this); | ||||
result = iterator._next(); | ||||
} | ||||
}), | ||||
get: d(function (key) { | ||||
var index = eIndexOf.call(this.__mapKeysData__, key); | ||||
if (index === -1) return; | ||||
return this.__mapValuesData__[index]; | ||||
}), | ||||
has: d(function (key) { | ||||
return (eIndexOf.call(this.__mapKeysData__, key) !== -1); | ||||
}), | ||||
keys: d(function () { return new Iterator(this, 'key'); }), | ||||
set: d(function (key, value) { | ||||
var index = eIndexOf.call(this.__mapKeysData__, key), emit; | ||||
if (index === -1) { | ||||
index = this.__mapKeysData__.push(key) - 1; | ||||
emit = true; | ||||
} | ||||
this.__mapValuesData__[index] = value; | ||||
if (emit) this.emit('_add', index, key); | ||||
return this; | ||||
}), | ||||
size: d.gs(function () { return this.__mapKeysData__.length; }), | ||||
values: d(function () { return new Iterator(this, 'value'); }), | ||||
toString: d(function () { return '[object Map]'; }) | ||||
})); | ||||
Object.defineProperty(MapPoly.prototype, Symbol.iterator, d(function () { | ||||
return this.entries(); | ||||
})); | ||||
Object.defineProperty(MapPoly.prototype, Symbol.toStringTag, d('c', 'Map')); | ||||