Initial commit
This commit is contained in:
15
node_modules/pseudomap/LICENSE
generated
vendored
Normal file
15
node_modules/pseudomap/LICENSE
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
9
node_modules/pseudomap/map.js
generated
vendored
Normal file
9
node_modules/pseudomap/map.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
if (process.env.npm_package_name === 'pseudomap' &&
|
||||
process.env.npm_lifecycle_script === 'test')
|
||||
process.env.TEST_PSEUDOMAP = 'true'
|
||||
|
||||
if (typeof Map === 'function' && !process.env.TEST_PSEUDOMAP) {
|
||||
module.exports = Map
|
||||
} else {
|
||||
module.exports = require('./pseudomap')
|
||||
}
|
||||
19
node_modules/pseudomap/package.json
generated
vendored
Normal file
19
node_modules/pseudomap/package.json
generated
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "pseudomap",
|
||||
"version": "1.0.2",
|
||||
"description": "A thing that is a lot like ES6 `Map`, but without iterators, for use in environments where `for..of` syntax and `Map` are not available.",
|
||||
"main": "map.js",
|
||||
"directories": {
|
||||
"test": "test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"tap": "^2.3.1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/isaacs/pseudomap.git"
|
||||
},
|
||||
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
||||
"license": "ISC",
|
||||
"homepage": "https://github.com/isaacs/pseudomap#readme"
|
||||
}
|
||||
113
node_modules/pseudomap/pseudomap.js
generated
vendored
Normal file
113
node_modules/pseudomap/pseudomap.js
generated
vendored
Normal file
@@ -0,0 +1,113 @@
|
||||
var hasOwnProperty = Object.prototype.hasOwnProperty
|
||||
|
||||
module.exports = PseudoMap
|
||||
|
||||
function PseudoMap (set) {
|
||||
if (!(this instanceof PseudoMap)) // whyyyyyyy
|
||||
throw new TypeError("Constructor PseudoMap requires 'new'")
|
||||
|
||||
this.clear()
|
||||
|
||||
if (set) {
|
||||
if ((set instanceof PseudoMap) ||
|
||||
(typeof Map === 'function' && set instanceof Map))
|
||||
set.forEach(function (value, key) {
|
||||
this.set(key, value)
|
||||
}, this)
|
||||
else if (Array.isArray(set))
|
||||
set.forEach(function (kv) {
|
||||
this.set(kv[0], kv[1])
|
||||
}, this)
|
||||
else
|
||||
throw new TypeError('invalid argument')
|
||||
}
|
||||
}
|
||||
|
||||
PseudoMap.prototype.forEach = function (fn, thisp) {
|
||||
thisp = thisp || this
|
||||
Object.keys(this._data).forEach(function (k) {
|
||||
if (k !== 'size')
|
||||
fn.call(thisp, this._data[k].value, this._data[k].key)
|
||||
}, this)
|
||||
}
|
||||
|
||||
PseudoMap.prototype.has = function (k) {
|
||||
return !!find(this._data, k)
|
||||
}
|
||||
|
||||
PseudoMap.prototype.get = function (k) {
|
||||
var res = find(this._data, k)
|
||||
return res && res.value
|
||||
}
|
||||
|
||||
PseudoMap.prototype.set = function (k, v) {
|
||||
set(this._data, k, v)
|
||||
}
|
||||
|
||||
PseudoMap.prototype.delete = function (k) {
|
||||
var res = find(this._data, k)
|
||||
if (res) {
|
||||
delete this._data[res._index]
|
||||
this._data.size--
|
||||
}
|
||||
}
|
||||
|
||||
PseudoMap.prototype.clear = function () {
|
||||
var data = Object.create(null)
|
||||
data.size = 0
|
||||
|
||||
Object.defineProperty(this, '_data', {
|
||||
value: data,
|
||||
enumerable: false,
|
||||
configurable: true,
|
||||
writable: false
|
||||
})
|
||||
}
|
||||
|
||||
Object.defineProperty(PseudoMap.prototype, 'size', {
|
||||
get: function () {
|
||||
return this._data.size
|
||||
},
|
||||
set: function (n) {},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
})
|
||||
|
||||
PseudoMap.prototype.values =
|
||||
PseudoMap.prototype.keys =
|
||||
PseudoMap.prototype.entries = function () {
|
||||
throw new Error('iterators are not implemented in this version')
|
||||
}
|
||||
|
||||
// Either identical, or both NaN
|
||||
function same (a, b) {
|
||||
return a === b || a !== a && b !== b
|
||||
}
|
||||
|
||||
function Entry (k, v, i) {
|
||||
this.key = k
|
||||
this.value = v
|
||||
this._index = i
|
||||
}
|
||||
|
||||
function find (data, k) {
|
||||
for (var i = 0, s = '_' + k, key = s;
|
||||
hasOwnProperty.call(data, key);
|
||||
key = s + i++) {
|
||||
if (same(data[key].key, k))
|
||||
return data[key]
|
||||
}
|
||||
}
|
||||
|
||||
function set (data, k, v) {
|
||||
for (var i = 0, s = '_' + k, key = s;
|
||||
hasOwnProperty.call(data, key);
|
||||
key = s + i++) {
|
||||
if (same(data[key].key, k)) {
|
||||
data[key].value = v
|
||||
return
|
||||
}
|
||||
}
|
||||
data.size++
|
||||
data[key] = new Entry(k, v, key)
|
||||
}
|
||||
Reference in New Issue
Block a user