forerunnerdb
Version:
A NoSQL document store database for browsers and Node.js.
1 lines • 3.63 kB
JavaScript
!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("../lib/Angular");b.exports=d},{"../lib/Angular":2}],2:[function(a,b,c){"use strict";var d=window.ForerunnerDB.shared,e={};d.addModule("Angular",e),e.extendCollection=function(a){var b=a.prototype.drop;a.prototype.ng=function(a,b,c,d){var e,f,g=this,h=!1,i=!1;if(!a||!b)throw this.logIdentifier()+" Cannot link to angular $scope if no scope or variable name is passed!";return g._ngLinks=g._ngLinks||[],e={scope:a,varName:b,callback:function(){c&&c.$single?g.sharedPathSolver.set(a,b,g.findOne()||{}):g.sharedPathSolver.set(a,b,g.find()),setTimeout(function(){a.$apply(),h=!0},0)}},g._ngLinks.push(e),a.$on("$destroy",function(){if(g._ngLinks&&g._ngLinks.length)for(f=g._ngLinks.length-1;f>=0;f--)g._ngLinks[f].scope===a&&(g.off("immediateChange",e.callback),g._ngLinks.splice(f,1))}),(!c||c&&!c.$noWatch)&&a.$watch(b,function(a){var b;b=function(a,b){a||g.upsert(b),i=!1},h&&(i=!0,d?d(a,b):b(!1,a))},!0),(!c||c&&!c.$noBind)&&g.on("immediateChange",function(){i||e.callback.apply(this,arguments)}),e.callback&&e.callback(),this},a.prototype.drop=function(){return this._ngLinks&&delete this._ngLinks,b.apply(this,arguments)}},e.extendView=function(a){var b=a.prototype.drop;a.prototype.ng=function(a,b,c){var d,e,f=this;if(!a||!b)throw this.logIdentifier()+" Cannot link to angular $scope if no scope or variable name is passed!";return f._ngLinks=f._ngLinks||[],d={scope:a,varName:b,callback:function(){c&&c.$single?a[b]=f.data().findOne()||{}:a[b]=f.data().find(),setTimeout(function(){a.$apply()},0)}},f._ngLinks.push(d),a.$on("$destroy",function(){if(f._ngLinks&&f._ngLinks.length)for(e=f._ngLinks.length-1;e>=0;e--)f._ngLinks[e].scope===a&&(f.data().off("immediateChange",d.callback),f._ngLinks.splice(e,1))}),f.data().on("immediateChange",function(){d.callback()}),d.callback&&d.callback(),this},a.prototype.drop=function(){return this._ngLinks&&delete this._ngLinks,b.apply(this,arguments)}},e.extendDocument=function(a){var b=a.prototype.drop;a.prototype.ng=function(a,b,c){var d,e,f=this,g=!1;if(!a||!b)throw this.logIdentifier()+" Cannot link to angular $scope if no scope or variable name is passed!";return f._ngLinks=f._ngLinks||[],d={scope:a,varName:b,callback:function(){a[b]=f.find(),setTimeout(function(){a.$apply()},0)}},f._ngLinks.push(d),a.$on("$destroy",function(){if(f._ngLinks&&f._ngLinks.length)for(e=f._ngLinks.length-1;e>=0;e--)f._ngLinks[e].scope===a&&(f.off("immediateChange",d.callback),f._ngLinks.splice(e,1))}),a.$watch(b,function(a){g=!0,f.update({},a),g=!1},!0),f.on("immediateChange",function(){g||d.callback.apply(this,arguments)}),d.callback&&d.callback(),this},a.prototype.drop=function(){return this._ngLinks&&delete this._ngLinks,b.apply(this,arguments)}},e.extendOverview=function(a){a.prototype.ng=function(a,b,c){var d=this._data.ng.apply(this._data,arguments);return this._refresh(),d}};var f,g=["Collection","View","Overview","Document"],h=function(a,b){e["extend"+a]&&e["extend"+a](b)};for(f=0;f<g.length;f++)d.moduleFinished(g[f],h);"undefined"!=typeof angular&&angular.module&&angular.module("forerunnerdb",[]).factory("$fdb",function(){return new ForerunnerDB}),d.finishModule("Angular"),b.exports=e},{}]},{},[1]);