underscore-db
Version:
Use JavaScript objects as databases
2 lines • 2.11 kB
JavaScript
/*! underscore-db 0.12.2 */
!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){var d=a("./");d.save=function(a,b){b=b||"db",localStorage.setItem(b,JSON.stringify(a,null,2))},d.load=function(a){return a=a||"db",JSON.parse(localStorage.getItem(a))},_.mixin(d)},{"./":2}],2:[function(a,b,c){function d(a,b){for(b=a="";a++<36;b+=51*a&52?(15^a?8^Math.random()*(20^a?16:4):4).toString(16):"-");return b}b.exports={__empty:function(a){this.forEach(a,function(b,c){delete a[c]})},__update:function(a,b){this.forEach(b,function(b,c){a[c]=b})},__remove:function(a,b){var c=this.indexOf(a,b);c!=-1&&a.splice(c,1)},__id:function(){var a=this.id||"id";return a},getById:function(a,b){var c=this;return this.find(a,function(a){if(c.has(a,c.__id()))return a[c.__id()].toString()===b.toString()})},createId:function(a,b){return d()},insert:function(a,b){b[this.__id()]=b[this.__id()]||this.createId(a,b);var c=this.getById(a,b[this.__id()]);if(c)throw new Error("Insert failed; duplicate id.");return a.push(b),b},upsert:function(a,b){if(b[this.__id()]){var c=this.getById(a,b[this.__id()]);c?(this.__empty(c),this.assign(c,b)):a.push(b)}else b[this.__id()]=this.createId(a,b),a.push(b);return b},updateById:function(a,b,c){var d=this.getById(a,b);return d&&this.assign(d,c,{id:d.id}),d},updateWhere:function(a,b,c){var d=this,e=this.filter(a,b);return e.forEach(function(a){d.assign(a,c,{id:a.id})}),e},replaceById:function(a,b,c){var d=this.getById(a,b);if(d){var e=d.id;this.__empty(d),this.assign(d,c,{id:e})}return d},removeById:function(a,b){var c=this.getById(a,b);return this.__remove(a,c),c},removeWhere:function(a,b){var c=this,d=this.filter(a,b);return d.forEach(function(b){c.__remove(a,b)}),d}}},{}]},{},[1]);