-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsuperLocal.min.js
More file actions
1 lines (1 loc) · 4.15 KB
/
superLocal.min.js
File metadata and controls
1 lines (1 loc) · 4.15 KB
1
var superLocal=function(){"use strict";var a={settings:{dbPrefix:"db",dataFieldName:"data",separator:"_",saveType:"relaxed"},prefixRegex:function(){return RegExp(this.settings.dbPrefix,"g")},createdRegex:function(){return RegExp("created","g")},modifiedRegex:function(){return RegExp("modified","g")},datafieldRegex:function(){return RegExp(this.settings.dataFieldName,"g")},capable:function(){var a="ls";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(b){return!1}},findNewest:function(){for(var a=0,b=0,c=Object.keys(localStorage),d=c.length,e=0;d>e;e++)if(this.prefixRegex().test(c[e])&&this.modifiedRegex().test(c[e])){var f=c[e].replace(this.settings.dbPrefix+this.settings.separator,"").replace(this.settings.separator+"modified",""),g=localStorage[this.settings.dbPrefix+this.settings.separator+f+this.settings.separator+"modified"];g>a&&(b=f,a=g)}return b},findOldest:function(){for(var a=0,b=0,c=Object.keys(localStorage),d=c.length,e=0;d>e;e++)if(this.prefixRegex().test(c[e])&&this.modifiedRegex().test(c[e])){var f=c[e].replace(this.settings.dbPrefix+this.settings.separator,"").replace(this.settings.separator+"modified",""),g=localStorage[this.settings.dbPrefix+this.settings.separator+f+this.settings.separator+"modified"];(a>g||0===a)&&(b=f,a=g)}return b},findSmallest:function(){for(var a=0,b=0,c=Object.keys(localStorage),d=c.length,e=0;d>e;e++)if(this.prefixRegex().test(c[e])&&this.datafieldRegex().test(c[e])){var f=c[e].replace(this.settings.dbPrefix+this.settings.separator,"").replace(this.settings.separator+"modified",""),g=localStorage[this.settings.dbPrefix+this.settings.separator+f+this.settings.separator+this.settings.dataFieldName].length;(a>g||0===a)&&(b=f,a=g)}return b},findBiggest:function(){for(var a=0,b=0,c=Object.keys(localStorage),d=c.length,e=0;d>e;e++)if(this.prefixRegex().test(c[e])&&this.datafieldRegex().test(c[e])){var f=c[e].replace(this.settings.dbPrefix+this.settings.separator,"").replace(this.settings.separator+"modified",""),g=localStorage[this.settings.dbPrefix+this.settings.separator+f+this.settings.separator+this.settings.dataFieldName].length;g>a&&(b=f,a=g)}return b},fetch:function(a){var c,b={};if("newest"===a)c=this.findNewest();else if("oldest"===a)c=this.findOldest();else if("smallest"===a)c=this.findSmallest();else if("biggest"===a)c=this.findBiggest();else{if(!isNaN(a))return!1;c=a}var d=this.settings.dbPrefix+this.settings.separator+c+this.settings.separator;return b.uID=c,b[this.settings.dataFieldName]=localStorage[d+this.settings.dataFieldName],b.created=localStorage[d+"created"],b.modified=localStorage[d+"modified"],b},remove:function(a){var b=this.settings.dbPrefix+this.settings.separator+a+this.settings.separator;localStorage.removeItem(b+this.settings.dataFieldName),localStorage.removeItem(b+"created"),localStorage.removeItem(b+"modified")},clearAll:function(){localStorage.clear()},listAllCreated:function(){for(var a=Object.keys(localStorage),b=a.length,c={},d=0;b>d;d++)if(this.prefixRegex().test(a[d])&&this.createdRegex().test(a[d])){var e=a[d].replace(this.settings.dbPrefix+this.settings.separator,"").replace(this.settings.separator+"created","");c[e]=localStorage[this.settings.dbPrefix+this.settings.separator+e+this.settings.separator+"created"]}return c},listAllModified:function(){for(var a=Object.keys(localStorage),b=a.length,c={},d=0;b>d;d++)if(this.prefixRegex().test(a[d])&&this.modifiedRegex().test(a[d])){var e=a[d].replace(this.settings.dbPrefix+this.settings.separator,"").replace(this.settings.separator+"modified","");c[e]=localStorage[this.settings.dbPrefix+this.settings.separator+e+this.settings.separator+"modified"]}return c},save:function(a,b,c){if(this.capable()===!0){var d,e=this.settings.dbPrefix+this.settings.separator+a+this.settings.separator;d=c!==void 0?c:Math.floor((new Date).getTime()/1e3);try{return localStorage.setItem(e+this.settings.dataFieldName,b),localStorage.setItem(e+"modified",d),localStorage[e+"created"]===void 0&&localStorage.setItem(e+"created",d),!0}catch(f){return this.remove(a),"greedy"===this.settings.saveType&&(this.remove(this.findOldest()),this.save(a,b,c)),!1}}}};return a}();superLocal.settings={dbPrefix:"vt",dataFieldName:"data",separator:"_",saveType:"greedy"};