zyno-bot-addons
Version:
Create easily addons for Zyno Bot
98 lines (95 loc) • 2.96 kB
JavaScript
const { ValueSaver } = require('valuesaver');
class Save extends Map{
constructor(data){
super();
data = typeof data !== 'undefined' ? data : [];
if(data instanceof ValueSaver){
let dataArray = data.toReadableArray();
for(var i = 0; i < dataArray.length; i++){
let obj = dataArray[i];
this.set(obj.key, obj.value);
}
} else if(data instanceof Map){
let keys = Array.from(data.keys());
let values = Array.from(data.values());
for(var i = 0; i < keys.length; i++){
this.set(keys[i], values[i]);
}
} else if(Array.isArray(data)){
let dataFilter = data.filter(d => {
if(typeof d === 'object'){
let keys = Object.keys(d);
return keys.indexOf('key') >= 0 && keys.indexOf('value') >= 0 && typeof d.key === 'string';
} else {
return false;
}
});
if(dataFilter.length !== data.length) return;
for(var i = 0; i < data.length; i++){
let obj = data[i];
this.set(obj.key, obj.value);
}
} else if(typeof data === 'object' && data !== null){
for(var key in data){
this.set(key, data[key]);
}
}
}
first(){
let values = Array.from(this.values());
return values[0];
}
last(){
let values = Array.from(this.values());
return values[values.length - 1];
}
firstKey(){
let keys = Array.from(this.keys());
return keys[0];
}
lastKey(){
let keys = Array.from(this.keys());
return keys[keys.length - 1];
}
toObject(){
let keys = Array.from(this.keys());
let values = Array.from(this.values());
let obj = {};
for(var i = 0; i < keys.length; i++){
obj[keys[i]] = values[i];
}
return obj;
}
toArray(){
let keys = Array.from(this.keys());
let values = Array.from(this.values());
let arr = [];
for(var i = 0; i < keys.length; i++){
let obj = {};
obj[keys[i]] = values[i];
arr.push(obj);
}
return arr;
}
toReadableArray(){
let keys = Array.from(this.keys());
let values = Array.from(this.values());
let arr = [];
for(var i = 0; i < keys.length; i++){
let obj = {};
obj['key'] = keys[i];
obj['value'] = values[i];
arr.push(obj);
}
return arr;
}
has(key){
return typeof this.get(key) !== 'undefined';
}
filter(_f){
const readableArray = this.toReadableArray();
const getFilter = readableArray.filter(_f);
return new Save(getFilter);
}
}
module.exports = Save;