28 lines
668 B
JavaScript
28 lines
668 B
JavaScript
'use strict';
|
|
|
|
let cache = module.exports.cache = new Map();
|
|
|
|
module.exports.push = (name, value) => {
|
|
if (!cache.has(name)) {
|
|
cache.set(name, []);
|
|
} else if (!Array.isArray(cache.get(name))) {
|
|
cache.set(name, [].concat(cache.get(name) || []));
|
|
}
|
|
cache.get(name).push(value);
|
|
};
|
|
|
|
module.exports.shift = name => {
|
|
if (!cache.has(name)) {
|
|
return false;
|
|
}
|
|
if (!Array.isArray(cache.get(name))) {
|
|
let value = cache.get(name);
|
|
cache.delete(name);
|
|
return value;
|
|
}
|
|
let value = cache.get(name).shift();
|
|
if (!cache.get(name).length) {
|
|
cache.delete(name);
|
|
}
|
|
return value;
|
|
};
|