mirror of
https://github.com/arthur-pbty/portfolio2023.git
synced 2026-06-11 15:57:04 +02:00
modified
This commit is contained in:
-15
@@ -1,15 +0,0 @@
|
||||
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.
|
||||
-60
@@ -1,60 +0,0 @@
|
||||
# pseudomap
|
||||
|
||||
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.
|
||||
|
||||
If you need iterators, or just in general a more faithful polyfill to
|
||||
ES6 Maps, check out [es6-map](http://npm.im/es6-map).
|
||||
|
||||
If you are in an environment where `Map` is supported, then that will
|
||||
be returned instead, unless `process.env.TEST_PSEUDOMAP` is set.
|
||||
|
||||
You can use any value as keys, and any value as data. Setting again
|
||||
with the identical key will overwrite the previous value.
|
||||
|
||||
Internally, data is stored on an `Object.create(null)` style object.
|
||||
The key is coerced to a string to generate the key on the internal
|
||||
data-bag object. The original key used is stored along with the data.
|
||||
|
||||
In the event of a stringified-key collision, a new key is generated by
|
||||
appending an increasing number to the stringified-key until finding
|
||||
either the intended key or an empty spot.
|
||||
|
||||
Note that because object traversal order of plain objects is not
|
||||
guaranteed to be identical to insertion order, the insertion order
|
||||
guarantee of `Map.prototype.forEach` is not guaranteed in this
|
||||
implementation. However, in all versions of Node.js and V8 where this
|
||||
module works, `forEach` does traverse data in insertion order.
|
||||
|
||||
## API
|
||||
|
||||
Most of the [Map
|
||||
API](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map),
|
||||
with the following exceptions:
|
||||
|
||||
1. A `Map` object is not an iterator.
|
||||
2. `values`, `keys`, and `entries` methods are not implemented,
|
||||
because they return iterators.
|
||||
3. The argument to the constructor can be an Array of `[key, value]`
|
||||
pairs, or a `Map` or `PseudoMap` object. But, since iterators
|
||||
aren't used, passing any plain-old iterator won't initialize the
|
||||
map properly.
|
||||
|
||||
## USAGE
|
||||
|
||||
Use just like a regular ES6 Map.
|
||||
|
||||
```javascript
|
||||
var PseudoMap = require('pseudomap')
|
||||
|
||||
// optionally provide a pseudomap, or an array of [key,value] pairs
|
||||
// as the argument to initialize the map with
|
||||
var myMap = new PseudoMap()
|
||||
|
||||
myMap.set(1, 'number 1')
|
||||
myMap.set('1', 'string 1')
|
||||
var akey = {}
|
||||
var bkey = {}
|
||||
myMap.set(akey, { some: 'data' })
|
||||
myMap.set(bkey, { some: 'other data' })
|
||||
```
|
||||
-9
@@ -1,9 +0,0 @@
|
||||
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')
|
||||
}
|
||||
-25
@@ -1,25 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "tap test/*.js"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/isaacs/pseudomap.git"
|
||||
},
|
||||
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
||||
"license": "ISC",
|
||||
"bugs": {
|
||||
"url": "https://github.com/isaacs/pseudomap/issues"
|
||||
},
|
||||
"homepage": "https://github.com/isaacs/pseudomap#readme"
|
||||
}
|
||||
-113
@@ -1,113 +0,0 @@
|
||||
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