made with requirebin
Created
February 5, 2015 23:35
-
-
Save BigBlueHat/fa045d2f6448aaa28504 to your computer and use it in GitHub Desktop.
github contributors history
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var request = require('superagent'); | |
var PouchDB = require('pouchdb'); | |
var db = new PouchDB('github-hypothesis'); | |
request | |
.get('https://api.github.com/repos/hypothesis/h/stats/contributors') | |
.end(function(res) { | |
if (res.ok) { | |
console.log(res.body); | |
} | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){module.exports=Emitter;function Emitter(obj){if(obj)return mixin(obj)}function mixin(obj){for(var key in Emitter.prototype){obj[key]=Emitter.prototype[key]}return obj}Emitter.prototype.on=Emitter.prototype.addEventListener=function(event,fn){this._callbacks=this._callbacks||{};(this._callbacks[event]=this._callbacks[event]||[]).push(fn);return this};Emitter.prototype.once=function(event,fn){var self=this;this._callbacks=this._callbacks||{};function on(){self.off(event,on);fn.apply(this,arguments)}on.fn=fn;this.on(event,on);return this};Emitter.prototype.off=Emitter.prototype.removeListener=Emitter.prototype.removeAllListeners=Emitter.prototype.removeEventListener=function(event,fn){this._callbacks=this._callbacks||{};if(0==arguments.length){this._callbacks={};return this}var callbacks=this._callbacks[event];if(!callbacks)return this;if(1==arguments.length){delete this._callbacks[event];return this}var cb;for(var i=0;i<callbacks.length;i++){cb=callbacks[i];if(cb===fn||cb.fn===fn){callbacks.splice(i,1);break}}return this};Emitter.prototype.emit=function(event){this._callbacks=this._callbacks||{};var args=[].slice.call(arguments,1),callbacks=this._callbacks[event];if(callbacks){callbacks=callbacks.slice(0);for(var i=0,len=callbacks.length;i<len;++i){callbacks[i].apply(this,args)}}return this};Emitter.prototype.listeners=function(event){this._callbacks=this._callbacks||{};return this._callbacks[event]||[]};Emitter.prototype.hasListeners=function(event){return!!this.listeners(event).length}},{}],2:[function(require,module,exports){module.exports=function(arr,fn,initial){var idx=0;var len=arr.length;var curr=arguments.length==3?initial:arr[idx++];while(idx<len){curr=fn.call(null,curr,arr[idx],++idx,arr)}return curr}},{}],superagent:[function(require,module,exports){var Emitter=require("emitter");var reduce=require("reduce");var root="undefined"==typeof window?this:window;function noop(){}function isHost(obj){var str={}.toString.call(obj);switch(str){case"[object File]":case"[object Blob]":case"[object FormData]":return true;default:return false}}function getXHR(){if(root.XMLHttpRequest&&("file:"!=root.location.protocol||!root.ActiveXObject)){return new XMLHttpRequest}else{try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.6.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP.3.0")}catch(e){}try{return new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}}return false}var trim="".trim?function(s){return s.trim()}:function(s){return s.replace(/(^\s*|\s*$)/g,"")};function isObject(obj){return obj===Object(obj)}function serialize(obj){if(!isObject(obj))return obj;var pairs=[];for(var key in obj){if(null!=obj[key]){pairs.push(encodeURIComponent(key)+"="+encodeURIComponent(obj[key]))}}return pairs.join("&")}request.serializeObject=serialize;function parseString(str){var obj={};var pairs=str.split("&");var parts;var pair;for(var i=0,len=pairs.length;i<len;++i){pair=pairs[i];parts=pair.split("=");obj[decodeURIComponent(parts[0])]=decodeURIComponent(parts[1])}return obj}request.parseString=parseString;request.types={html:"text/html",json:"application/json",xml:"application/xml",urlencoded:"application/x-www-form-urlencoded",form:"application/x-www-form-urlencoded","form-data":"application/x-www-form-urlencoded"};request.serialize={"application/x-www-form-urlencoded":serialize,"application/json":JSON.stringify};request.parse={"application/x-www-form-urlencoded":parseString,"application/json":JSON.parse};function parseHeader(str){var lines=str.split(/\r?\n/);var fields={};var index;var line;var field;var val;lines.pop();for(var i=0,len=lines.length;i<len;++i){line=lines[i];index=line.indexOf(":");field=line.slice(0,index).toLowerCase();val=trim(line.slice(index+1));fields[field]=val}return fields}function type(str){return str.split(/ *; */).shift()}function params(str){return reduce(str.split(/ *; */),function(obj,str){var parts=str.split(/ *= */),key=parts.shift(),val=parts.shift();if(key&&val)obj[key]=val;return obj},{})}function Response(req,options){options=options||{};this.req=req;this.xhr=this.req.xhr;this.text=this.xhr.responseText;this.setStatusProperties(this.xhr.status);this.header=this.headers=parseHeader(this.xhr.getAllResponseHeaders());this.header["content-type"]=this.xhr.getResponseHeader("content-type");this.setHeaderProperties(this.header);this.body=this.req.method!="HEAD"?this.parseBody(this.text):null}Response.prototype.get=function(field){return this.header[field.toLowerCase()]};Response.prototype.setHeaderProperties=function(header){var ct=this.header["content-type"]||"";this.type=type(ct);var obj=params(ct);for(var key in obj)this[key]=obj[key]};Response.prototype.parseBody=function(str){var parse=request.parse[this.type];return parse&&str&&str.length?parse(str):null};Response.prototype.setStatusProperties=function(status){var type=status/100|0;this.status=status;this.statusType=type;this.info=1==type;this.ok=2==type;this.clientError=4==type;this.serverError=5==type;this.error=4==type||5==type?this.toError():false;this.accepted=202==status;this.noContent=204==status||1223==status;this.badRequest=400==status;this.unauthorized=401==status;this.notAcceptable=406==status;this.notFound=404==status;this.forbidden=403==status};Response.prototype.toError=function(){var req=this.req;var method=req.method;var url=req.url;var msg="cannot "+method+" "+url+" ("+this.status+")";var err=new Error(msg);err.status=this.status;err.method=method;err.url=url;return err};request.Response=Response;function Request(method,url){var self=this;Emitter.call(this);this._query=this._query||[];this.method=method;this.url=url;this.header={};this._header={};this.on("end",function(){try{var res=new Response(self);if("HEAD"==method)res.text=null;self.callback(null,res)}catch(e){var err=new Error("Parser is unable to parse the response");err.parse=true;err.original=e;self.callback(err)}})}Emitter(Request.prototype);Request.prototype.use=function(fn){fn(this);return this};Request.prototype.timeout=function(ms){this._timeout=ms;return this};Request.prototype.clearTimeout=function(){this._timeout=0;clearTimeout(this._timer);return this};Request.prototype.abort=function(){if(this.aborted)return;this.aborted=true;this.xhr.abort();this.clearTimeout();this.emit("abort");return this};Request.prototype.set=function(field,val){if(isObject(field)){for(var key in field){this.set(key,field[key])}return this}this._header[field.toLowerCase()]=val;this.header[field]=val;return this};Request.prototype.unset=function(field){delete this._header[field.toLowerCase()];delete this.header[field];return this};Request.prototype.getHeader=function(field){return this._header[field.toLowerCase()]};Request.prototype.type=function(type){this.set("Content-Type",request.types[type]||type);return this};Request.prototype.accept=function(type){this.set("Accept",request.types[type]||type);return this};Request.prototype.auth=function(user,pass){var str=btoa(user+":"+pass);this.set("Authorization","Basic "+str);return this};Request.prototype.query=function(val){if("string"!=typeof val)val=serialize(val);if(val)this._query.push(val);return this};Request.prototype.field=function(name,val){if(!this._formData)this._formData=new FormData;this._formData.append(name,val);return this};Request.prototype.attach=function(field,file,filename){if(!this._formData)this._formData=new FormData;this._formData.append(field,file,filename);return this};Request.prototype.send=function(data){var obj=isObject(data);var type=this.getHeader("Content-Type");if(obj&&isObject(this._data)){for(var key in data){this._data[key]=data[key]}}else if("string"==typeof data){if(!type)this.type("form");type=this.getHeader("Content-Type");if("application/x-www-form-urlencoded"==type){this._data=this._data?this._data+"&"+data:data}else{this._data=(this._data||"")+data}}else{this._data=data}if(!obj)return this;if(!type)this.type("json");return this};Request.prototype.callback=function(err,res){var fn=this._callback;if(2==fn.length)return fn(err,res);if(err)return this.emit("error",err);fn(res)};Request.prototype.crossDomainError=function(){var err=new Error("Origin is not allowed by Access-Control-Allow-Origin");err.crossDomain=true;this.callback(err)};Request.prototype.timeoutError=function(){var timeout=this._timeout;var err=new Error("timeout of "+timeout+"ms exceeded");err.timeout=timeout;this.callback(err)};Request.prototype.withCredentials=function(){this._withCredentials=true;return this};Request.prototype.end=function(fn){var self=this;var xhr=this.xhr=getXHR();var query=this._query.join("&");var timeout=this._timeout;var data=this._formData||this._data;this._callback=fn||noop;xhr.onreadystatechange=function(){if(4!=xhr.readyState)return;if(0==xhr.status){if(self.aborted)return self.timeoutError();return self.crossDomainError()}self.emit("end")};if(xhr.upload){xhr.upload.onprogress=function(e){e.percent=e.loaded/e.total*100;self.emit("progress",e)}}if(timeout&&!this._timer){this._timer=setTimeout(function(){self.abort()},timeout)}if(query){query=request.serializeObject(query);this.url+=~this.url.indexOf("?")?"&"+query:"?"+query}xhr.open(this.method,this.url,true);if(this._withCredentials)xhr.withCredentials=true;if("GET"!=this.method&&"HEAD"!=this.method&&"string"!=typeof data&&!isHost(data)){var serialize=request.serialize[this.getHeader("Content-Type")];if(serialize)data=serialize(data)}for(var field in this.header){if(null==this.header[field])continue;xhr.setRequestHeader(field,this.header[field])}this.emit("request",this);xhr.send(data);return this};request.Request=Request;function request(method,url){if("function"==typeof url){return new Request("GET",method).end(url)}if(1==arguments.length){return new Request("GET",method)}return new Request(method,url)}request.get=function(url,data,fn){var req=request("GET",url);if("function"==typeof data)fn=data,data=null;if(data)req.query(data);if(fn)req.end(fn);return req};request.head=function(url,data,fn){var req=request("HEAD",url);if("function"==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req};request.del=function(url,fn){var req=request("DELETE",url);if(fn)req.end(fn);return req};request.patch=function(url,data,fn){var req=request("PATCH",url);if("function"==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req};request.post=function(url,data,fn){var req=request("POST",url);if("function"==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req};request.put=function(url,data,fn){var req=request("PUT",url);if("function"==typeof data)fn=data,data=null;if(data)req.send(data);if(fn)req.end(fn);return req};module.exports=request},{emitter:1,reduce:2}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){},{}],2:[function(require,module,exports){function EventEmitter(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}module.exports=EventEmitter;EventEmitter.EventEmitter=EventEmitter;EventEmitter.prototype._events=undefined;EventEmitter.prototype._maxListeners=undefined;EventEmitter.defaultMaxListeners=10;EventEmitter.prototype.setMaxListeners=function(n){if(!isNumber(n)||n<0||isNaN(n))throw TypeError("n must be a positive number");this._maxListeners=n;return this};EventEmitter.prototype.emit=function(type){var er,handler,len,args,i,listeners;if(!this._events)this._events={};if(type==="error"){if(!this._events.error||isObject(this._events.error)&&!this._events.error.length){er=arguments[1];if(er instanceof Error){throw er}else{throw TypeError('Uncaught, unspecified "error" event.')}return false}}handler=this._events[type];if(isUndefined(handler))return false;if(isFunction(handler)){switch(arguments.length){case 1:handler.call(this);break;case 2:handler.call(this,arguments[1]);break;case 3:handler.call(this,arguments[1],arguments[2]);break;default:len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];handler.apply(this,args)}}else if(isObject(handler)){len=arguments.length;args=new Array(len-1);for(i=1;i<len;i++)args[i-1]=arguments[i];listeners=handler.slice();len=listeners.length;for(i=0;i<len;i++)listeners[i].apply(this,args)}return true};EventEmitter.prototype.addListener=function(type,listener){var m;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events)this._events={};if(this._events.newListener)this.emit("newListener",type,isFunction(listener.listener)?listener.listener:listener);if(!this._events[type])this._events[type]=listener;else if(isObject(this._events[type]))this._events[type].push(listener);else this._events[type]=[this._events[type],listener];if(isObject(this._events[type])&&!this._events[type].warned){var m;if(!isUndefined(this._maxListeners)){m=this._maxListeners}else{m=EventEmitter.defaultMaxListeners}if(m&&m>0&&this._events[type].length>m){this._events[type].warned=true;console.error("(node) warning: possible EventEmitter memory "+"leak detected. %d listeners added. "+"Use emitter.setMaxListeners() to increase limit.",this._events[type].length);if(typeof console.trace==="function"){console.trace()}}}return this};EventEmitter.prototype.on=EventEmitter.prototype.addListener;EventEmitter.prototype.once=function(type,listener){if(!isFunction(listener))throw TypeError("listener must be a function");var fired=false;function g(){this.removeListener(type,g);if(!fired){fired=true;listener.apply(this,arguments)}}g.listener=listener;this.on(type,g);return this};EventEmitter.prototype.removeListener=function(type,listener){var list,position,length,i;if(!isFunction(listener))throw TypeError("listener must be a function");if(!this._events||!this._events[type])return this;list=this._events[type];length=list.length;position=-1;if(list===listener||isFunction(list.listener)&&list.listener===listener){delete this._events[type];if(this._events.removeListener)this.emit("removeListener",type,listener)}else if(isObject(list)){for(i=length;i-->0;){if(list[i]===listener||list[i].listener&&list[i].listener===listener){position=i;break}}if(position<0)return this;if(list.length===1){list.length=0;delete this._events[type]}else{list.splice(position,1)}if(this._events.removeListener)this.emit("removeListener",type,listener)}return this};EventEmitter.prototype.removeAllListeners=function(type){var key,listeners;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[type])delete this._events[type];return this}if(arguments.length===0){for(key in this._events){if(key==="removeListener")continue;this.removeAllListeners(key)}this.removeAllListeners("removeListener");this._events={};return this}listeners=this._events[type];if(isFunction(listeners)){this.removeListener(type,listeners)}else{while(listeners.length)this.removeListener(type,listeners[listeners.length-1])}delete this._events[type];return this};EventEmitter.prototype.listeners=function(type){var ret;if(!this._events||!this._events[type])ret=[];else if(isFunction(this._events[type]))ret=[this._events[type]];else ret=this._events[type].slice();return ret};EventEmitter.listenerCount=function(emitter,type){var ret;if(!emitter._events||!emitter._events[type])ret=0;else if(isFunction(emitter._events[type]))ret=1;else ret=emitter._events[type].length;return ret};function isFunction(arg){return typeof arg==="function"}function isNumber(arg){return typeof arg==="number"}function isObject(arg){return typeof arg==="object"&&arg!==null}function isUndefined(arg){return arg===void 0}},{}],3:[function(require,module,exports){var process=module.exports={};process.nextTick=function(){var canSetImmediate=typeof window!=="undefined"&&window.setImmediate;var canPost=typeof window!=="undefined"&&window.postMessage&&window.addEventListener;if(canSetImmediate){return function(f){return window.setImmediate(f)}}if(canPost){var queue=[];window.addEventListener("message",function(ev){var source=ev.source;if((source===window||source===null)&&ev.data==="process-tick"){ev.stopPropagation();if(queue.length>0){var fn=queue.shift();fn()}}},true);return function nextTick(fn){queue.push(fn);window.postMessage("process-tick","*")}}return function nextTick(fn){setTimeout(fn,0)}}();process.title="browser";process.browser=true;process.env={};process.argv=[];function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")}},{}],4:[function(require,module,exports){"use strict";var utils=require("./utils");var merge=require("./merge");var errors=require("./deps/errors");var EventEmitter=require("events").EventEmitter;var upsert=require("./deps/upsert");var Changes=require("./changes");var Promise=utils.Promise;function arrayFirst(arr,callback){for(var i=0;i<arr.length;i++){if(callback(arr[i],i)===true){return arr[i]}}return false}function yankError(callback){return function(err,results){if(err||results[0].error){callback(err||results[0])}else{callback(null,results[0])}}}function computeHeight(revs){var height={};var edges=[];merge.traverseRevTree(revs,function(isLeaf,pos,id,prnt){var rev=pos+"-"+id;if(isLeaf){height[rev]=0}if(prnt!==undefined){edges.push({from:prnt,to:rev})}return rev});edges.reverse();edges.forEach(function(edge){if(height[edge.from]===undefined){height[edge.from]=1+height[edge.to]}else{height[edge.from]=Math.min(height[edge.from],1+height[edge.to])}});return height}function allDocsKeysQuery(api,opts,callback){var keys="limit"in opts?opts.keys.slice(opts.skip,opts.limit+opts.skip):opts.skip>0?opts.keys.slice(opts.skip):opts.keys;if(opts.descending){keys.reverse()}if(!keys.length){return api._allDocs({limit:0},callback)}var finalResults={offset:opts.skip};return Promise.all(keys.map(function(key,i){var subOpts=utils.extend(true,{key:key,deleted:"ok"},opts);["limit","skip","keys"].forEach(function(optKey){delete subOpts[optKey]});return new Promise(function(resolve,reject){api._allDocs(subOpts,function(err,res){if(err){return reject(err)}finalResults.total_rows=res.total_rows;resolve(res.rows[0]||{key:key,error:"not_found"})})})})).then(function(results){finalResults.rows=results;return finalResults})}utils.inherits(AbstractPouchDB,EventEmitter);module.exports=AbstractPouchDB;function AbstractPouchDB(){var self=this;EventEmitter.call(this);self.autoCompact=function(callback){if(!self.auto_compaction||self.type()==="http"){return callback}return function(err,res){if(err){callback(err)}else{var count=res.length;var decCount=function(){count--;if(!count){callback(null,res)}};if(!res.length){return callback(null,res)}res.forEach(function(doc){if(doc.ok&&doc.id){self.compactDocument(doc.id,1,decCount)}else{decCount()}})}}};var listeners=0,changes;var eventNames=["change","delete","create","update"];this.on("newListener",function(eventName){if(~eventNames.indexOf(eventName)){if(listeners){listeners++;return}else{listeners++}}else{return}var lastChange=0;changes=this.changes({conflicts:true,include_docs:true,continuous:true,since:"now",onChange:function(change){if(change.seq<=lastChange){return}lastChange=change.seq;self.emit("change",change);if(change.doc._deleted){self.emit("delete",change)}else if(change.doc._rev.split("-")[0]==="1"){self.emit("create",change)}else{self.emit("update",change)}}})});this.on("removeListener",function(eventName){if(~eventNames.indexOf(eventName)){listeners--;if(listeners){return}}else{return}changes.cancel()})}AbstractPouchDB.prototype.post=utils.adapterFun("post",function(doc,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}if(typeof doc!=="object"||Array.isArray(doc)){return callback(errors.NOT_AN_OBJECT)}this.bulkDocs({docs:[doc]},opts,this.autoCompact(yankError(callback)))});AbstractPouchDB.prototype.put=utils.adapterFun("put",utils.getArguments(function(args){var temp,temptype,opts,callback;var doc=args.shift();var id="_id"in doc;if(typeof doc!=="object"||Array.isArray(doc)){callback=args.pop();return callback(errors.NOT_AN_OBJECT)}doc=utils.clone(doc);while(true){temp=args.shift();temptype=typeof temp;if(temptype==="string"&&!id){doc._id=temp;id=true}else if(temptype==="string"&&id&&!("_rev"in doc)){doc._rev=temp}else if(temptype==="object"){opts=temp}else if(temptype==="function"){callback=temp}if(!args.length){break}}opts=opts||{};var error=utils.invalidIdError(doc._id);if(error){return callback(error)}if(utils.isLocalId(doc._id)&&typeof this._putLocal==="function"){if(doc._deleted){return this._removeLocal(doc,callback)}else{return this._putLocal(doc,callback)}}this.bulkDocs({docs:[doc]},opts,this.autoCompact(yankError(callback)))}));AbstractPouchDB.prototype.putAttachment=utils.adapterFun("putAttachment",function(docId,attachmentId,rev,blob,type,callback){var api=this;if(typeof type==="function"){callback=type;type=blob;blob=rev;rev=null}if(typeof type==="undefined"){type=blob;blob=rev;rev=null}function createAttachment(doc){doc._attachments=doc._attachments||{};doc._attachments[attachmentId]={content_type:type,data:blob};return api.put(doc)}return api.get(docId).then(function(doc){if(doc._rev!==rev){throw errors.REV_CONFLICT}return createAttachment(doc)},function(err){if(err.error===errors.MISSING_DOC.error){return createAttachment({_id:docId})}else{throw err}})});AbstractPouchDB.prototype.removeAttachment=utils.adapterFun("removeAttachment",function(docId,attachmentId,rev,callback){var self=this;self.get(docId,function(err,obj){if(err){callback(err);return}if(obj._rev!==rev){callback(errors.REV_CONFLICT);return}if(!obj._attachments){return callback()}delete obj._attachments[attachmentId];if(Object.keys(obj._attachments).length===0){delete obj._attachments}self.put(obj,callback)})});AbstractPouchDB.prototype.remove=utils.adapterFun("remove",function(docOrId,optsOrRev,opts,callback){var doc;if(typeof optsOrRev==="string"){doc={_id:docOrId,_rev:optsOrRev};if(typeof opts==="function"){callback=opts;opts={}}}else{doc=docOrId;if(typeof optsOrRev==="function"){callback=optsOrRev;opts={}}else{callback=opts;opts=optsOrRev}}opts=utils.clone(opts||{});opts.was_delete=true;var newDoc={_id:doc._id,_rev:doc._rev||opts.rev};newDoc._deleted=true;if(utils.isLocalId(newDoc._id)&&typeof this._removeLocal==="function"){return this._removeLocal(doc,callback)}this.bulkDocs({docs:[newDoc]},opts,yankError(callback))});AbstractPouchDB.prototype.revsDiff=utils.adapterFun("revsDiff",function(req,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);var ids=Object.keys(req);if(!ids.length){return callback(null,{})}var count=0;var missing=new utils.Map;function addToMissing(id,revId){if(!missing.has(id)){missing.set(id,{missing:[]})}missing.get(id).missing.push(revId)}function processDoc(id,rev_tree){var missingForId=req[id].slice(0);merge.traverseRevTree(rev_tree,function(isLeaf,pos,revHash,ctx,opts){var rev=pos+"-"+revHash;var idx=missingForId.indexOf(rev);if(idx===-1){return}missingForId.splice(idx,1);if(opts.status!=="available"){addToMissing(id,rev)}});missingForId.forEach(function(rev){addToMissing(id,rev)})}ids.map(function(id){this._getRevisionTree(id,function(err,rev_tree){if(err&&err.status===404&&err.message==="missing"){missing.set(id,{missing:req[id]})}else if(err){return callback(err)}else{processDoc(id,rev_tree)}if(++count===ids.length){var missingObj={};missing.forEach(function(value,key){missingObj[key]=value});return callback(null,missingObj)}})},this)});AbstractPouchDB.prototype.compactDocument=utils.adapterFun("compactDocument",function(docId,max_height,callback){var self=this;this._getRevisionTree(docId,function(err,rev_tree){if(err){return callback(err)}var height=computeHeight(rev_tree);var candidates=[];var revs=[];Object.keys(height).forEach(function(rev){if(height[rev]>max_height){candidates.push(rev)}});merge.traverseRevTree(rev_tree,function(isLeaf,pos,revHash,ctx,opts){var rev=pos+"-"+revHash;if(opts.status==="available"&&candidates.indexOf(rev)!==-1){opts.status="missing";revs.push(rev)}});self._doCompaction(docId,rev_tree,revs,callback)})});AbstractPouchDB.prototype.compact=utils.adapterFun("compact",function(opts,callback){if(typeof opts==="function"){callback=opts;opts={}}var self=this;opts=utils.clone(opts||{});self.get("_local/compaction")["catch"](function(){return false}).then(function(doc){if(typeof self._compact==="function"){if(doc&&doc.last_seq){opts.last_seq=doc.last_seq}return self._compact(opts,callback)}})});AbstractPouchDB.prototype._compact=function(opts,callback){var done=false;var started=0;var copts={returnDocs:false};var self=this;var lastSeq;function finish(){self.get("_local/compaction")["catch"](function(){return false}).then(function(doc){doc=doc||{_id:"_local/compaction"};doc.last_seq=lastSeq;return self.put(doc)}).then(function(){callback()},callback)}if(opts.last_seq){copts.since=opts.last_seq}function afterCompact(){started--;if(!started&&done){finish()}}function onChange(row){started++;self.compactDocument(row.id,0).then(afterCompact,callback)}self.changes(copts).on("change",onChange).on("complete",function(resp){done=true;lastSeq=resp.last_seq;if(!started){finish()}}).on("error",callback)};AbstractPouchDB.prototype.get=utils.adapterFun("get",function(id,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}if(typeof id!=="string"){return callback(errors.INVALID_ID)}if(utils.isLocalId(id)&&typeof this._getLocal==="function"){return this._getLocal(id,callback)}var leaves=[],self=this;function finishOpenRevs(){var result=[];var count=leaves.length;if(!count){return callback(null,result)}leaves.forEach(function(leaf){self.get(id,{rev:leaf,revs:opts.revs,attachments:opts.attachments},function(err,doc){if(!err){result.push({ok:doc})}else{result.push({missing:leaf})}count--;if(!count){callback(null,result)}})})}if(opts.open_revs){if(opts.open_revs==="all"){this._getRevisionTree(id,function(err,rev_tree){if(err){rev_tree=[]}leaves=merge.collectLeaves(rev_tree).map(function(leaf){return leaf.rev});finishOpenRevs()})}else{if(Array.isArray(opts.open_revs)){leaves=opts.open_revs;for(var i=0;i<leaves.length;i++){var l=leaves[i];if(!(typeof l==="string"&&/^\d+-/.test(l))){return callback(errors.error(errors.BAD_REQUEST,"Invalid rev format"))}}finishOpenRevs()}else{return callback(errors.error(errors.UNKNOWN_ERROR,"function_clause"))}}return}return this._get(id,opts,function(err,result){opts=utils.clone(opts);if(err){return callback(err)}var doc=result.doc;if(!doc){return callback(new Error("no doc!"))}var metadata=result.metadata;var ctx=result.ctx;if(opts.conflicts){var conflicts=merge.collectConflicts(metadata);if(conflicts.length){doc._conflicts=conflicts}}if(opts.revs||opts.revs_info){var paths=merge.rootToLeaf(metadata.rev_tree);var path=arrayFirst(paths,function(arr){return arr.ids.map(function(x){return x.id}).indexOf(doc._rev.split("-")[1])!==-1});var indexOfRev=path.ids.map(function(x){return x.id}).indexOf(doc._rev.split("-")[1])+1;var howMany=path.ids.length-indexOfRev;path.ids.splice(indexOfRev,howMany);path.ids.reverse();if(opts.revs){doc._revisions={start:path.pos+path.ids.length-1,ids:path.ids.map(function(rev){return rev.id})}}if(opts.revs_info){var pos=path.pos+path.ids.length;doc._revs_info=path.ids.map(function(rev){pos--;return{rev:pos+"-"+rev.id,status:rev.opts.status}})}}if(opts.local_seq){doc._local_seq=result.metadata.seq}if(opts.attachments&&doc._attachments){var attachments=doc._attachments;var count=Object.keys(attachments).length;if(count===0){return callback(null,doc)}Object.keys(attachments).forEach(function(key){this._getAttachment(attachments[key],{encode:true,ctx:ctx},function(err,data){var att=doc._attachments[key];att.data=data;delete att.stub;if(!--count){callback(null,doc)}})},self)}else{if(doc._attachments){for(var key in doc._attachments){if(doc._attachments.hasOwnProperty(key)){doc._attachments[key].stub=true}}}callback(null,doc)}})});AbstractPouchDB.prototype.getAttachment=utils.adapterFun("getAttachment",function(docId,attachmentId,opts,callback){var self=this;if(opts instanceof Function){callback=opts;opts={}}opts=utils.clone(opts);this._get(docId,opts,function(err,res){if(err){return callback(err)}if(res.doc._attachments&&res.doc._attachments[attachmentId]){opts.ctx=res.ctx;self._getAttachment(res.doc._attachments[attachmentId],opts,callback)}else{return callback(errors.MISSING_DOC)}})});AbstractPouchDB.prototype.allDocs=utils.adapterFun("allDocs",function(opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);opts.skip=typeof opts.skip!=="undefined"?opts.skip:0;if("keys"in opts){if(!Array.isArray(opts.keys)){return callback(new TypeError("options.keys must be an array"))}var incompatibleOpt=["startkey","endkey","key"].filter(function(incompatibleOpt){return incompatibleOpt in opts})[0];if(incompatibleOpt){callback(errors.error(errors.QUERY_PARSE_ERROR,"Query parameter `"+incompatibleOpt+"` is not compatible with multi-get"));return}if(this.type()!=="http"){return allDocsKeysQuery(this,opts,callback)}}return this._allDocs(opts,callback)});AbstractPouchDB.prototype.changes=function(opts,callback){if(typeof opts==="function"){callback=opts;opts={}}return new Changes(this,opts,callback)};AbstractPouchDB.prototype.close=utils.adapterFun("close",function(callback){this._closed=true;return this._close(callback)});AbstractPouchDB.prototype.info=utils.adapterFun("info",function(callback){var self=this;this._info(function(err,info){if(err){return callback(err)}info.db_name=info.db_name||self._db_name;info.auto_compaction=!!(self._auto_compaction&&self.type()!=="http");callback(null,info)})});AbstractPouchDB.prototype.id=utils.adapterFun("id",function(callback){return this._id(callback)});AbstractPouchDB.prototype.type=function(){return typeof this._type==="function"?this._type():this.adapter};AbstractPouchDB.prototype.bulkDocs=utils.adapterFun("bulkDocs",function(req,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);if(Array.isArray(req)){req={docs:req}}if(!req||!req.docs||!Array.isArray(req.docs)){return callback(errors.MISSING_BULK_DOCS)}for(var i=0;i<req.docs.length;++i){if(typeof req.docs[i]!=="object"||Array.isArray(req.docs[i])){return callback(errors.NOT_AN_OBJECT)}}req=utils.clone(req);if(!("new_edits"in opts)){if("new_edits"in req){opts.new_edits=req.new_edits}else{opts.new_edits=true}}return this._bulkDocs(req,opts,this.autoCompact(callback))});AbstractPouchDB.prototype.registerDependentDatabase=utils.adapterFun("registerDependentDatabase",function(dependentDb,callback){var depDB=new this.constructor(dependentDb,{adapter:this._adapter});function diffFun(doc){doc.dependentDbs=doc.dependentDbs||{};if(doc.dependentDbs[dependentDb]){return false}doc.dependentDbs[dependentDb]=true;return doc}upsert(this,"_local/_pouch_dependentDbs",diffFun,function(err){if(err){return callback(err)}return callback(null,{db:depDB}) | |
})})},{"./changes":9,"./deps/errors":14,"./deps/upsert":16,"./merge":20,"./utils":25,events:2}],5:[function(require,module,exports){(function(process){"use strict";var CHANGES_BATCH_SIZE=25;var utils=require("../utils");var errors=require("../deps/errors");function parseUri(str){var o=parseUri.options;var m=o.parser[o.strictMode?"strict":"loose"].exec(str);var uri={};var i=14;while(i--){uri[o.key[i]]=m[i]||""}uri[o.q.name]={};uri[o.key[12]].replace(o.q.parser,function($0,$1,$2){if($1){uri[o.q.name][$1]=$2}});return uri}function encodeDocId(id){if(/^_(design|local)/.test(id)){return id}return encodeURIComponent(id)}function preprocessAttachments(doc){if(!doc._attachments||!Object.keys(doc._attachments)){return utils.Promise.resolve()}return utils.Promise.all(Object.keys(doc._attachments).map(function(key){var attachment=doc._attachments[key];if(attachment.data&&typeof attachment.data!=="string"){if(typeof process===undefined||process.browser){return new utils.Promise(function(resolve){var reader=new FileReader;reader.onloadend=function(e){attachment.data=utils.btoa(utils.arrayBufferToBinaryString(e.target.result));resolve()};reader.readAsArrayBuffer(attachment.data)})}else{attachment.data=attachment.data.toString("base64")}}}))}parseUri.options={strictMode:false,key:["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],q:{name:"queryKey",parser:/(?:^|&)([^&=]*)=?([^&]*)/g},parser:{strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/}};function getHost(name,opts){if(/http(s?):/.test(name)){var uri=parseUri(name);uri.remote=true;if(uri.user||uri.password){uri.auth={username:uri.user,password:uri.password}}var parts=uri.path.replace(/(^\/|\/$)/g,"").split("/");uri.db=parts.pop();uri.path=parts.join("/");opts=opts||{};opts=utils.clone(opts);uri.headers=opts.headers||{};if(opts.auth||uri.auth){var nAuth=opts.auth||uri.auth;var token=utils.btoa(nAuth.username+":"+nAuth.password);uri.headers.Authorization="Basic "+token}if(opts.headers){uri.headers=opts.headers}return uri}return{host:"",path:"/",db:name,auth:false}}function genDBUrl(opts,path){return genUrl(opts,opts.db+"/"+path)}function genUrl(opts,path){if(opts.remote){var pathDel=!opts.path?"":"/";return opts.protocol+"://"+opts.host+":"+opts.port+"/"+opts.path+pathDel+path}return"/"+path}function HttpPouch(opts,callback){var api=this;api.getHost=opts.getHost?opts.getHost:getHost;var host=api.getHost(opts.name,opts);var dbUrl=genDBUrl(host,"");api.getUrl=function(){return dbUrl};api.getHeaders=function(){return utils.clone(host.headers)};var ajaxOpts=opts.ajax||{};opts=utils.clone(opts);function ajax(options,callback){return utils.ajax(utils.extend({},ajaxOpts,options),callback)}var createDB=function(){ajax({headers:host.headers,method:"PUT",url:dbUrl},function(err,ret){if(err&&err.status===401){ajax({headers:host.headers,method:"HEAD",url:dbUrl},function(err,ret){if(err){callback(err)}else{callback(null,api)}})}else if(!err||err.status===412){callback(null,api)}else{callback(err)}})};if(!opts.skipSetup){ajax({headers:host.headers,method:"GET",url:dbUrl},function(err,ret){if(err){if(err.status===404){createDB()}else{callback(err)}}else{callback(null,api)}})}api.type=function(){return"http"};api.id=utils.adapterFun("id",function(callback){ajax({headers:host.headers,method:"GET",url:genUrl(host,"")},function(err,result){var uuid=result&&result.uuid?result.uuid+host.db:genDBUrl(host,"");callback(null,uuid)})});api.request=utils.adapterFun("request",function(options,callback){options.headers=host.headers;options.url=genDBUrl(host,options.url);ajax(options,callback)});api.compact=utils.adapterFun("compact",function(opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);ajax({headers:host.headers,url:genDBUrl(host,"_compact"),method:"POST"},function(){function ping(){api.info(function(err,res){if(!res.compact_running){callback()}else{setTimeout(ping,opts.interval||200)}})}if(typeof callback==="function"){ping()}})});api._info=function(callback){ajax({headers:host.headers,method:"GET",url:genDBUrl(host,"")},function(err,res){if(err){callback(err)}else{res.host=genDBUrl(host,"");callback(null,res)}})};api.get=utils.adapterFun("get",function(id,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);if(opts.auto_encode===undefined){opts.auto_encode=true}var params=[];if(opts.revs){params.push("revs=true")}if(opts.revs_info){params.push("revs_info=true")}if(opts.local_seq){params.push("local_seq=true")}if(opts.open_revs){if(opts.open_revs!=="all"){opts.open_revs=JSON.stringify(opts.open_revs)}params.push("open_revs="+opts.open_revs)}if(opts.attachments){params.push("attachments=true")}if(opts.rev){params.push("rev="+opts.rev)}if(opts.conflicts){params.push("conflicts="+opts.conflicts)}params=params.join("&");params=params===""?"":"?"+params;if(opts.auto_encode){id=encodeDocId(id)}var options={headers:host.headers,method:"GET",url:genDBUrl(host,id+params)};var parts=id.split("/");if(parts.length>1&&parts[0]!=="_design"&&parts[0]!=="_local"||parts.length>2&&parts[0]==="_design"&&parts[0]!=="_local"){options.binary=true}ajax(options,function(err,doc,xhr){if(err){return callback(err)}callback(null,doc,xhr)})});api.remove=utils.adapterFun("remove",function(docOrId,optsOrRev,opts,callback){var doc;if(typeof optsOrRev==="string"){doc={_id:docOrId,_rev:optsOrRev};if(typeof opts==="function"){callback=opts;opts={}}}else{doc=docOrId;if(typeof optsOrRev==="function"){callback=optsOrRev;opts={}}else{callback=opts;opts=optsOrRev}}var rev=doc._rev||opts.rev;ajax({headers:host.headers,method:"DELETE",url:genDBUrl(host,encodeDocId(doc._id))+"?rev="+rev},callback)});api.getAttachment=utils.adapterFun("getAttachment",function(docId,attachmentId,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);if(opts.auto_encode===undefined){opts.auto_encode=true}if(opts.auto_encode){docId=encodeDocId(docId)}opts.auto_encode=false;api.get(docId+"/"+attachmentId,opts,callback)});api.removeAttachment=utils.adapterFun("removeAttachment",function(docId,attachmentId,rev,callback){ajax({headers:host.headers,method:"DELETE",url:genDBUrl(host,encodeDocId(docId)+"/"+attachmentId)+"?rev="+rev},callback)});api.putAttachment=utils.adapterFun("putAttachment",function(docId,attachmentId,rev,blob,type,callback){if(typeof type==="function"){callback=type;type=blob;blob=rev;rev=null}if(typeof type==="undefined"){type=blob;blob=rev;rev=null}var id=encodeDocId(docId)+"/"+attachmentId;var url=genDBUrl(host,id);if(rev){url+="?rev="+rev}var opts={headers:utils.clone(host.headers),method:"PUT",url:url,processData:false,body:blob,timeout:6e4};opts.headers["Content-Type"]=type;ajax(opts,callback)});api.put=utils.adapterFun("put",utils.getArguments(function(args){var temp,temptype,opts;var doc=args.shift();var id="_id"in doc;var callback=args.pop();if(typeof doc!=="object"||Array.isArray(doc)){return callback(errors.NOT_AN_OBJECT)}doc=utils.clone(doc);preprocessAttachments(doc).then(function(){while(true){temp=args.shift();temptype=typeof temp;if(temptype==="string"&&!id){doc._id=temp;id=true}else if(temptype==="string"&&id&&!("_rev"in doc)){doc._rev=temp}else if(temptype==="object"){opts=utils.clone(temp)}if(!args.length){break}}opts=opts||{};var error=utils.invalidIdError(doc._id);if(error){throw error}var params=[];if(opts&&typeof opts.new_edits!=="undefined"){params.push("new_edits="+opts.new_edits)}params=params.join("&");if(params!==""){params="?"+params}ajax({headers:host.headers,method:"PUT",url:genDBUrl(host,encodeDocId(doc._id))+params,body:doc},function(err,res){if(err){return callback(err)}res.ok=true;callback(null,res)})})["catch"](callback)}));api.post=utils.adapterFun("post",function(doc,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);if(typeof doc!=="object"){return callback(errors.NOT_AN_OBJECT)}if(!("_id"in doc)){doc._id=utils.uuid()}api.put(doc,opts,function(err,res){if(err){return callback(err)}res.ok=true;callback(null,res)})});api._bulkDocs=function(req,opts,callback){if(typeof opts.new_edits!=="undefined"){req.new_edits=opts.new_edits}utils.Promise.all(req.docs.map(preprocessAttachments)).then(function(){ajax({headers:host.headers,method:"POST",url:genDBUrl(host,"_bulk_docs"),body:req},function(err,results){if(err){return callback(err)}results.forEach(function(result){result.ok=true});callback(null,results)})})["catch"](callback)};api.allDocs=utils.adapterFun("allDocs",function(opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);var params=[];var body;var method="GET";if(opts.conflicts){params.push("conflicts=true")}if(opts.descending){params.push("descending=true")}if(opts.include_docs){params.push("include_docs=true")}if(opts.key){params.push("key="+encodeURIComponent(JSON.stringify(opts.key)))}if(opts.startkey){params.push("startkey="+encodeURIComponent(JSON.stringify(opts.startkey)))}if(opts.endkey){params.push("endkey="+encodeURIComponent(JSON.stringify(opts.endkey)))}if(typeof opts.inclusive_end!=="undefined"){params.push("inclusive_end="+!!opts.inclusive_end)}if(typeof opts.limit!=="undefined"){params.push("limit="+opts.limit)}if(typeof opts.skip!=="undefined"){params.push("skip="+opts.skip)}params=params.join("&");if(params!==""){params="?"+params}if(typeof opts.keys!=="undefined"){var MAX_URL_LENGTH=2e3;var keysAsString="keys="+encodeURIComponent(JSON.stringify(opts.keys));if(keysAsString.length+params.length+1<=MAX_URL_LENGTH){params+=(params.indexOf("?")!==-1?"&":"?")+keysAsString}else{method="POST";body=JSON.stringify({keys:opts.keys})}}ajax({headers:host.headers,method:method,url:genDBUrl(host,"_all_docs"+params),body:body},callback)});api._changes=function(opts){var batchSize="batch_size"in opts?opts.batch_size:CHANGES_BATCH_SIZE;opts=utils.clone(opts);opts.timeout=opts.timeout||30*1e3;var params={timeout:opts.timeout-5*1e3};var limit=typeof opts.limit!=="undefined"?opts.limit:false;if(limit===0){limit=1}var returnDocs;if("returnDocs"in opts){returnDocs=opts.returnDocs}else{returnDocs=true}var leftToFetch=limit;if(opts.style){params.style=opts.style}if(opts.include_docs||opts.filter&&typeof opts.filter==="function"){params.include_docs=true}if(opts.continuous){params.feed="longpoll"}if(opts.conflicts){params.conflicts=true}if(opts.descending){params.descending=true}if(opts.filter&&typeof opts.filter==="string"){params.filter=opts.filter;if(opts.filter==="_view"&&opts.view&&typeof opts.view==="string"){params.view=opts.view}}if(opts.query_params&&typeof opts.query_params==="object"){for(var param_name in opts.query_params){if(opts.query_params.hasOwnProperty(param_name)){params[param_name]=opts.query_params[param_name]}}}var xhr;var lastFetchedSeq;var fetch=function(since,callback){if(opts.aborted){return}params.since=since;if(opts.descending){if(limit){params.limit=leftToFetch}}else{params.limit=!limit||leftToFetch>batchSize?batchSize:leftToFetch}var paramStr="?"+Object.keys(params).map(function(k){return k+"="+params[k]}).join("&");var xhrOpts={headers:host.headers,method:"GET",url:genDBUrl(host,"_changes"+paramStr),timeout:opts.timeout};lastFetchedSeq=since;if(opts.aborted){return}xhr=ajax(xhrOpts,callback)};var fetchTimeout=10;var fetchRetryCount=0;var results={results:[]};var fetched=function(err,res){if(opts.aborted){return}var raw_results_length=0;if(res&&res.results){raw_results_length=res.results.length;results.last_seq=res.last_seq;var req={};req.query=opts.query_params;res.results=res.results.filter(function(c){leftToFetch--;var ret=utils.filterChange(opts)(c);if(ret){if(returnDocs){results.results.push(c)}utils.call(opts.onChange,c)}return ret})}else if(err){opts.aborted=true;utils.call(opts.complete,err);return}if(res&&res.last_seq){lastFetchedSeq=res.last_seq}var finished=limit&&leftToFetch<=0||res&&raw_results_length<batchSize||opts.descending;if(opts.continuous&&!(limit&&leftToFetch<=0)||!finished){if(err){fetchRetryCount+=1}else{fetchRetryCount=0}var timeoutMultiplier=1<<fetchRetryCount;var retryWait=fetchTimeout*timeoutMultiplier;var maximumWait=opts.maximumWait||3e4;if(retryWait>maximumWait){utils.call(opts.complete,err||errors.UNKNOWN_ERROR);return}setTimeout(function(){fetch(lastFetchedSeq,fetched)},retryWait)}else{utils.call(opts.complete,null,results)}};fetch(opts.since||0,fetched);return{cancel:function(){opts.aborted=true;if(xhr){xhr.abort()}}}};api.revsDiff=utils.adapterFun("revsDiff",function(req,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}ajax({headers:host.headers,method:"POST",url:genDBUrl(host,"_revs_diff"),body:JSON.stringify(req)},callback)});api._close=function(callback){callback()};api.destroy=utils.adapterFun("destroy",function(callback){ajax({url:genDBUrl(host,""),method:"DELETE",headers:host.headers},function(err,resp){if(err){api.emit("error",err);callback(err)}else{api.emit("destroyed");callback(null,resp)}})})}HttpPouch.destroy=utils.toPromise(function(name,opts,callback){var host=getHost(name,opts);opts=opts||{};if(typeof opts==="function"){callback=opts;opts={}}opts=utils.clone(opts);opts.headers=host.headers;opts.method="DELETE";opts.url=genDBUrl(host,"");var ajaxOpts=opts.ajax||{};opts=utils.extend({},opts,ajaxOpts);utils.ajax(opts,callback)});HttpPouch.valid=function(){return true};module.exports=HttpPouch}).call(this,require("_process"))},{"../deps/errors":14,"../utils":25,_process:3}],6:[function(require,module,exports){(function(process,global){"use strict";var utils=require("../utils");var merge=require("../merge");var errors=require("../deps/errors");var vuvuzela=require("vuvuzela");var cachedDBs={};var taskQueue={running:false,queue:[]};function tryCode(fun,that,args){try{fun.apply(that,args)}catch(err){if(window.PouchDB){window.PouchDB.emit("error",err)}}}function applyNext(){if(taskQueue.running||!taskQueue.queue.length){return}taskQueue.running=true;var item=taskQueue.queue.shift();item.action(function(err,res){tryCode(item.callback,this,[err,res]);taskQueue.running=false;process.nextTick(applyNext)})}function idbError(callback){return function(event){var message=event.target&&event.target.error&&event.target.error.name||event.target;callback(errors.error(errors.IDB_ERROR,message,event.type))}}function isModernIdb(){var cacheKey="_pouch__checkModernIdb_"+(global.navigator&&global.navigator.appVersion);var cached=utils.hasLocalStorage()&&global.localStorage[cacheKey];if(cached){return JSON.parse(cached)}var dbName="_pouch__checkModernIdb";var result=global.indexedDB.open(dbName,1).onupgradeneeded===null;if(global.indexedDB.deleteDatabase){global.indexedDB.deleteDatabase(dbName)}if(utils.hasLocalStorage()){global.localStorage[cacheKey]=JSON.stringify(result)}return result}function encodeMetadata(metadata,winningRev,deleted){var storedObject={data:vuvuzela.stringify(metadata)};storedObject.winningRev=winningRev;storedObject.deletedOrLocal=deleted?"1":"0";storedObject.id=metadata.id;return storedObject}function decodeMetadata(storedObject){if(!storedObject){return null}if(!storedObject.data){return storedObject}var metadata=vuvuzela.parse(storedObject.data);metadata.winningRev=storedObject.winningRev;metadata.deletedOrLocal=storedObject.deletedOrLocal==="1";return metadata}function IdbPouch(opts,callback){var api=this;taskQueue.queue.push({action:function(thisCallback){init(api,opts,thisCallback)},callback:callback});applyNext()}function init(api,opts,callback){var ADAPTER_VERSION=3;var DOC_STORE="document-store";var BY_SEQ_STORE="by-sequence";var ATTACH_STORE="attach-store";var META_STORE="meta-store";var LOCAL_STORE="local-store";var DETECT_BLOB_SUPPORT_STORE="detect-blob-support";var name=opts.name;var blobSupport=null;var instanceId=null;var idStored=false;var idb=null;var docCount=-1;function createSchema(db){db.createObjectStore(DOC_STORE,{keyPath:"id"}).createIndex("seq","seq",{unique:true});db.createObjectStore(BY_SEQ_STORE,{autoIncrement:true}).createIndex("_doc_id_rev","_doc_id_rev",{unique:true});db.createObjectStore(ATTACH_STORE,{keyPath:"digest"});db.createObjectStore(META_STORE,{keyPath:"id",autoIncrement:false});db.createObjectStore(DETECT_BLOB_SUPPORT_STORE)}function addDeletedOrLocalIndex(e,callback){var transaction=e.currentTarget.transaction;var docStore=transaction.objectStore(DOC_STORE);docStore.createIndex("deletedOrLocal","deletedOrLocal",{unique:false});docStore.openCursor().onsuccess=function(event){var cursor=event.target.result;if(cursor){var metadata=cursor.value;var deleted=utils.isDeleted(metadata);metadata.deletedOrLocal=deleted?"1":"0";docStore.put(metadata);cursor["continue"]()}else{callback(transaction)}}}function createLocalStoreSchema(db){db.createObjectStore(LOCAL_STORE,{keyPath:"_id"}).createIndex("_doc_id_rev","_doc_id_rev",{unique:true})}function migrateLocalStore(e,tx){tx=tx||e.currentTarget.transaction;var localStore=tx.objectStore(LOCAL_STORE);var docStore=tx.objectStore(DOC_STORE);var seqStore=tx.objectStore(BY_SEQ_STORE);var cursor=docStore.openCursor();cursor.onsuccess=function(event){var cursor=event.target.result;if(cursor){var metadata=cursor.value;var docId=metadata.id;var local=utils.isLocalId(docId);var rev=merge.winningRev(metadata);if(local){var docIdRev=docId+"::"+rev;var start=docId+"::";var end=docId+"::~";var index=seqStore.index("_doc_id_rev");var range=global.IDBKeyRange.bound(start,end,false,false);var seqCursor=index.openCursor(range);seqCursor.onsuccess=function(e){seqCursor=e.target.result;if(!seqCursor){docStore["delete"](cursor.primaryKey);cursor["continue"]()}else{var data=seqCursor.value;if(data._doc_id_rev===docIdRev){localStore.put(data)}seqStore["delete"](seqCursor.primaryKey);seqCursor["continue"]()}}}else{cursor["continue"]()}}}}api.type=function(){return"idb"};api._id=utils.toPromise(function(callback){callback(null,instanceId)});api._bulkDocs=function idb_bulkDocs(req,opts,callback){var newEdits=opts.new_edits;var userDocs=req.docs;var docInfos=userDocs.map(function(doc,i){if(doc._id&&utils.isLocalId(doc._id)){return doc}var newDoc=utils.parseDoc(doc,newEdits);newDoc._bulk_seq=i;return newDoc});var docInfoErrors=docInfos.filter(function(docInfo){return docInfo.error});if(docInfoErrors.length){return callback(docInfoErrors[0])}var results=new Array(docInfos.length);var fetchedDocs=new utils.Map;var updateSeq=0;var numDocsWritten=0;function writeMetaData(e){var meta=e.target.result;meta.updateSeq=(meta.updateSeq||0)+updateSeq;txn.objectStore(META_STORE).put(meta)}function checkDoneWritingDocs(){if(++numDocsWritten===docInfos.length){txn.objectStore(META_STORE).get(META_STORE).onsuccess=writeMetaData}}function processDocs(){if(!docInfos.length){return}var idsToDocs=new utils.Map;docInfos.forEach(function(currentDoc,resultsIdx){if(currentDoc._id&&utils.isLocalId(currentDoc._id)){api[currentDoc._deleted?"_removeLocal":"_putLocal"](currentDoc,{ctx:txn},function(err,resp){if(err){results[resultsIdx]=err}else{results[resultsIdx]={}}checkDoneWritingDocs()});return}var id=currentDoc.metadata.id;if(idsToDocs.has(id)){idsToDocs.get(id).push([currentDoc,resultsIdx])}else{idsToDocs.set(id,[[currentDoc,resultsIdx]])}});idsToDocs.forEach(function(docs,id){var numDone=0;function docWritten(){checkDoneWritingDocs();if(++numDone<docs.length){nextDoc()}}function nextDoc(){var value=docs[numDone];var currentDoc=value[0];var resultsIdx=value[1];if(fetchedDocs.has(id)){updateDoc(fetchedDocs.get(id),currentDoc,resultsIdx,docWritten)}else{insertDoc(currentDoc,resultsIdx,docWritten)}}nextDoc()})}function fetchExistingDocs(callback){if(!docInfos.length){return callback()}var numFetched=0;function checkDone(){if(++numFetched===docInfos.length){callback()}}docInfos.forEach(function(docInfo){if(docInfo._id&&utils.isLocalId(docInfo._id)){return checkDone()}var id=docInfo.metadata.id;var req=txn.objectStore(DOC_STORE).get(id);req.onsuccess=function process_docRead(event){var metadata=decodeMetadata(event.target.result);if(metadata){fetchedDocs.set(id,metadata)}checkDone()}})}function complete(){var aresults=results.map(function(result){if(result._bulk_seq){delete result._bulk_seq}else if(!Object.keys(result).length){return{ok:true}}if(result.error){return result}var metadata=result.metadata;var rev=merge.winningRev(metadata);return{ok:true,id:metadata.id,rev:rev}});IdbPouch.Changes.notify(name);docCount=-1;callback(null,aresults)}function preprocessAttachment(att,finish){if(att.stub){return finish()}if(typeof att.data==="string"){var data;try{data=atob(att.data)}catch(e){var err=errors.error(errors.BAD_ARG,"Attachments need to be base64 encoded");return callback(err)}if(blobSupport){var type=att.content_type;data=utils.fixBinary(data);att.data=utils.createBlob([data],{type:type})}utils.MD5(data).then(function(result){att.digest="md5-"+result;finish()});return}var reader=new FileReader;reader.onloadend=function(e){var binary=utils.arrayBufferToBinaryString(this.result||"");if(!blobSupport){att.data=btoa(binary)}utils.MD5(binary).then(function(result){att.digest="md5-"+result;finish()})};reader.readAsArrayBuffer(att.data)}function preprocessAttachments(callback){if(!docInfos.length){return callback()}var docv=0;docInfos.forEach(function(docInfo){var attachments=docInfo.data&&docInfo.data._attachments?Object.keys(docInfo.data._attachments):[];if(!attachments.length){return done()}var recv=0;function attachmentProcessed(){recv++;if(recv===attachments.length){done()}}for(var key in docInfo.data._attachments){if(docInfo.data._attachments.hasOwnProperty(key)){preprocessAttachment(docInfo.data._attachments[key],attachmentProcessed)}}});function done(){docv++;if(docInfos.length===docv){callback()}}}function writeDoc(docInfo,winningRev,deleted,callback,resultsIdx){var err=null;var recv=0;docInfo.data._id=docInfo.metadata.id;docInfo.data._rev=docInfo.metadata.rev;if(deleted){docInfo.data._deleted=true}var attachments=docInfo.data._attachments?Object.keys(docInfo.data._attachments):[];function collectResults(attachmentErr){if(!err){if(attachmentErr){err=attachmentErr;callback(err)}else if(recv===attachments.length){finish()}}}function attachmentSaved(err){recv++;collectResults(err)}for(var key in docInfo.data._attachments){if(!docInfo.data._attachments[key].stub){var data=docInfo.data._attachments[key].data;delete docInfo.data._attachments[key].data;var digest=docInfo.data._attachments[key].digest;saveAttachment(docInfo,digest,data,attachmentSaved)}else{recv++;collectResults()}}function finish(){updateSeq++;docInfo.data._doc_id_rev=docInfo.data._id+"::"+docInfo.data._rev;var seqStore=txn.objectStore(BY_SEQ_STORE);var index=seqStore.index("_doc_id_rev");function afterPut(e){var metadata=docInfo.metadata;metadata.seq=e.target.result;delete metadata.rev;var metadataToStore=encodeMetadata(metadata,winningRev,deleted);var metaDataReq=txn.objectStore(DOC_STORE).put(metadataToStore);metaDataReq.onsuccess=function(){delete metadata.deletedOrLocal;delete metadata.winningRev;results[resultsIdx]=docInfo;fetchedDocs.set(docInfo.metadata.id,docInfo.metadata);utils.call(callback)}}var putReq=seqStore.put(docInfo.data);putReq.onsuccess=afterPut;putReq.onerror=function(e){e.preventDefault();e.stopPropagation();var getKeyReq=index.getKey(docInfo.data._doc_id_rev);getKeyReq.onsuccess=function(e){var putReq=seqStore.put(docInfo.data,e.target.result);updateSeq--;putReq.onsuccess=afterPut}}}if(!attachments.length){finish()}}function updateDoc(oldDoc,docInfo,resultsIdx,callback){var merged=merge.merge(oldDoc.rev_tree,docInfo.metadata.rev_tree[0],1e3);var wasPreviouslyDeleted=utils.isDeleted(oldDoc);var deleted=utils.isDeleted(docInfo.metadata);var inConflict=wasPreviouslyDeleted&&deleted&&newEdits||!wasPreviouslyDeleted&&newEdits&&merged.conflicts!=="new_leaf";if(inConflict){results[resultsIdx]=makeErr(errors.REV_CONFLICT,docInfo._bulk_seq);return callback()}docInfo.metadata.rev_tree=merged.tree;var winningRev=merge.winningRev(docInfo.metadata);deleted=utils.isDeleted(docInfo.metadata,winningRev);writeDoc(docInfo,winningRev,deleted,callback,resultsIdx)}function insertDoc(docInfo,resultsIdx,callback){var winningRev=merge.winningRev(docInfo.metadata);var deleted=utils.isDeleted(docInfo.metadata,winningRev);if("was_delete"in opts&&deleted){results[resultsIdx]=errors.MISSING_DOC;return callback()}writeDoc(docInfo,winningRev,deleted,callback,resultsIdx)}function makeErr(err,seq){err._bulk_seq=seq;return err}function saveAttachment(docInfo,digest,data,callback){var objectStore=txn.objectStore(ATTACH_STORE);objectStore.get(digest).onsuccess=function(e){var originalRefs=e.target.result&&e.target.result.refs||{};var ref=[docInfo.metadata.id,docInfo.metadata.rev].join("@");var newAtt={digest:digest,body:data,refs:originalRefs};newAtt.refs[ref]=true;objectStore.put(newAtt).onsuccess=function(e){utils.call(callback)}}}var txn;preprocessAttachments(function(){var stores=[DOC_STORE,BY_SEQ_STORE,ATTACH_STORE,META_STORE,LOCAL_STORE];txn=idb.transaction(stores,"readwrite");txn.onerror=idbError(callback);txn.ontimeout=idbError(callback);txn.oncomplete=complete;fetchExistingDocs(processDocs)})};api._get=function idb_get(id,opts,callback){var doc;var metadata;var err;var txn;opts=utils.clone(opts);if(opts.ctx){txn=opts.ctx}else{txn=idb.transaction([DOC_STORE,BY_SEQ_STORE,ATTACH_STORE],"readonly")}function finish(){callback(err,{doc:doc,metadata:metadata,ctx:txn})}txn.objectStore(DOC_STORE).get(id).onsuccess=function(e){metadata=decodeMetadata(e.target.result);if(!metadata){err=errors.MISSING_DOC;return finish()}if(utils.isDeleted(metadata)&&!opts.rev){err=errors.error(errors.MISSING_DOC,"deleted");return finish()}var objectStore=txn.objectStore(BY_SEQ_STORE);var rev=opts.rev||metadata.winningRev||merge.winningRev(metadata);var key=metadata.id+"::"+rev;objectStore.index("_doc_id_rev").get(key).onsuccess=function(e){doc=e.target.result;if(doc&&doc._doc_id_rev){delete doc._doc_id_rev}if(!doc){err=errors.MISSING_DOC;return finish()}finish()}}};api._getAttachment=function(attachment,opts,callback){var txn;opts=utils.clone(opts);if(opts.ctx){txn=opts.ctx}else{txn=idb.transaction([DOC_STORE,BY_SEQ_STORE,ATTACH_STORE],"readonly")}var digest=attachment.digest;var type=attachment.content_type;txn.objectStore(ATTACH_STORE).get(digest).onsuccess=function(e){var data=e.target.result.body;if(opts.encode){if(!data){callback(null,"")}else if(typeof data!=="string"){var reader=new FileReader;reader.onloadend=function(e){var binary=utils.arrayBufferToBinaryString(this.result||"");callback(null,btoa(binary))};reader.readAsArrayBuffer(data)}else{callback(null,data)}}else{if(!data){callback(null,utils.createBlob([""],{type:type}))}else if(typeof data!=="string"){callback(null,data)}else{data=utils.fixBinary(atob(data));callback(null,utils.createBlob([data],{type:type}))}}}};function allDocsQuery(totalRows,opts,callback){var start="startkey"in opts?opts.startkey:false;var end="endkey"in opts?opts.endkey:false;var key="key"in opts?opts.key:false;var skip=opts.skip||0;var limit=typeof opts.limit==="number"?opts.limit:-1;var inclusiveEnd=opts.inclusive_end!==false;var descending="descending"in opts&&opts.descending?"prev":null;var manualDescEnd=false;if(descending&&start&&end){manualDescEnd=end;end=false}var keyRange=null;try{if(start&&end){keyRange=global.IDBKeyRange.bound(start,end,false,!inclusiveEnd)}else if(start){if(descending){keyRange=global.IDBKeyRange.upperBound(start)}else{keyRange=global.IDBKeyRange.lowerBound(start)}}else if(end){if(descending){keyRange=global.IDBKeyRange.lowerBound(end,!inclusiveEnd)}else{keyRange=global.IDBKeyRange.upperBound(end,!inclusiveEnd)}}else if(key){keyRange=global.IDBKeyRange.only(key)}}catch(e){if(e.name==="DataError"&&e.code===0){return callback(null,{total_rows:totalRows,offset:opts.skip,rows:[]})}else{return callback(errors.error(errors.IDB_ERROR,e.name,e.message))}}var transaction=idb.transaction([DOC_STORE,BY_SEQ_STORE],"readonly");transaction.oncomplete=function(){callback(null,{total_rows:totalRows,offset:opts.skip,rows:results})};var oStore=transaction.objectStore(DOC_STORE);var oCursor=descending?oStore.openCursor(keyRange,descending):oStore.openCursor(keyRange);var results=[];oCursor.onsuccess=function(e){if(!e.target.result){return}var cursor=e.target.result;var metadata=decodeMetadata(cursor.value);var winningRev=metadata.winningRev||merge.winningRev(metadata);function allDocsInner(metadata,data){var doc={id:metadata.id,key:metadata.id,value:{rev:winningRev}};if(opts.include_docs){doc.doc=data;doc.doc._rev=winningRev;if(doc.doc._doc_id_rev){delete doc.doc._doc_id_rev}if(opts.conflicts){doc.doc._conflicts=merge.collectConflicts(metadata)}for(var att in doc.doc._attachments){if(doc.doc._attachments.hasOwnProperty(att)){doc.doc._attachments[att].stub=true}}}var deleted=utils.isDeleted(metadata,winningRev);if(opts.deleted==="ok"){if(deleted){doc.value.deleted=true;doc.doc=null}results.push(doc)}else if(!deleted&&skip--<=0){if(manualDescEnd){if(inclusiveEnd&&doc.key<manualDescEnd){return}else if(!inclusiveEnd&&doc.key<=manualDescEnd){return}}results.push(doc);if(--limit===0){return}}cursor["continue"]()}if(!opts.include_docs){allDocsInner(metadata)}else{var index=transaction.objectStore(BY_SEQ_STORE).index("_doc_id_rev");var key=metadata.id+"::"+winningRev;index.get(key).onsuccess=function(event){allDocsInner(decodeMetadata(cursor.value),event.target.result)}}}}function countDocs(callback){if(docCount!==-1){return callback(null,docCount)}var count;var txn=idb.transaction([DOC_STORE],"readonly");var index=txn.objectStore(DOC_STORE).index("deletedOrLocal");index.count(global.IDBKeyRange.only("0")).onsuccess=function(e){count=e.target.result};txn.onerror=idbError(callback);txn.oncomplete=function(){docCount=count;callback(null,docCount)}}api._allDocs=function idb_allDocs(opts,callback){countDocs(function(err,totalRows){if(err){return callback(err)}if(opts.limit===0){return callback(null,{total_rows:totalRows,offset:opts.skip,rows:[]})}allDocsQuery(totalRows,opts,callback)})};api._info=function idb_info(callback){countDocs(function(err,count){if(err){return callback(err)}if(idb===null){var error=new Error("db isn't open");error.id="idbNull";return callback(error)}var updateSeq=0;var txn=idb.transaction([META_STORE],"readonly");txn.objectStore(META_STORE).get(META_STORE).onsuccess=function(e){updateSeq=e.target.result&&e.target.result.updateSeq||0};txn.oncomplete=function(){callback(null,{doc_count:count,update_seq:updateSeq})}})};api._changes=function(opts){opts=utils.clone(opts);if(opts.continuous){var id=name+":"+utils.uuid();IdbPouch.Changes.addListener(name,id,api,opts);IdbPouch.Changes.notify(name);return{cancel:function(){IdbPouch.Changes.removeListener(name,id)}}}var descending=opts.descending?"prev":null;var lastSeq=0;opts.since=opts.since&&!descending?opts.since:0;var limit="limit"in opts?opts.limit:-1;if(limit===0){limit=1}var returnDocs;if("returnDocs"in opts){returnDocs=opts.returnDocs}else{returnDocs=true}var results=[];var numResults=0;var filter=utils.filterChange(opts);var txn;function fetchChanges(){txn=idb.transaction([DOC_STORE,BY_SEQ_STORE],"readonly");txn.oncomplete=onTxnComplete;var req;if(descending){req=txn.objectStore(BY_SEQ_STORE).openCursor(global.IDBKeyRange.lowerBound(opts.since,true),descending)}else{req=txn.objectStore(BY_SEQ_STORE).openCursor(global.IDBKeyRange.lowerBound(opts.since,true))}req.onsuccess=onsuccess;req.onerror=onerror}fetchChanges();function onsuccess(event){var cursor=event.target.result;if(!cursor){return}var doc=cursor.value;if(opts.doc_ids&&opts.doc_ids.indexOf(doc._id)===-1){return cursor["continue"]()}var index=txn.objectStore(DOC_STORE);index.get(doc._id).onsuccess=function(event){var metadata=decodeMetadata(event.target.result); | |
if(lastSeq<metadata.seq){lastSeq=metadata.seq}var winningRev=metadata.winningRev||merge.winningRev(metadata);if(doc._rev!==winningRev){return cursor["continue"]()}delete doc["_doc_id_rev"];var change=opts.processChange(doc,metadata,opts);change.seq=cursor.key;if(filter(change)){numResults++;if(returnDocs){results.push(change)}opts.onChange(change)}if(numResults!==limit){cursor["continue"]()}}}function onTxnComplete(){if(!opts.continuous){opts.complete(null,{results:results,last_seq:lastSeq})}}};api._close=function(callback){if(idb===null){return callback(errors.NOT_OPEN)}idb.close();delete cachedDBs[name];idb=null;callback()};api._getRevisionTree=function(docId,callback){var txn=idb.transaction([DOC_STORE],"readonly");var req=txn.objectStore(DOC_STORE).get(docId);req.onsuccess=function(event){var doc=decodeMetadata(event.target.result);if(!doc){callback(errors.MISSING_DOC)}else{callback(null,doc.rev_tree)}}};api._doCompaction=function(docId,rev_tree,revs,callback){var txn=idb.transaction([DOC_STORE,BY_SEQ_STORE],"readwrite");var index=txn.objectStore(DOC_STORE);index.get(docId).onsuccess=function(event){var metadata=decodeMetadata(event.target.result);metadata.rev_tree=rev_tree;var count=revs.length;revs.forEach(function(rev){var index=txn.objectStore(BY_SEQ_STORE).index("_doc_id_rev");var key=docId+"::"+rev;index.getKey(key).onsuccess=function(e){var seq=e.target.result;if(!seq){return}txn.objectStore(BY_SEQ_STORE)["delete"](seq);count--;if(!count){var winningRev=metadata.winningRev||merge.winningRev(metadata);var deleted=metadata.deletedOrLocal;txn.objectStore(DOC_STORE).put(encodeMetadata(metadata,winningRev,deleted))}}})};txn.oncomplete=function(){utils.call(callback)}};api._getLocal=function(id,callback){var tx=idb.transaction([LOCAL_STORE],"readonly");var req=tx.objectStore(LOCAL_STORE).get(id);req.onerror=idbError(callback);req.onsuccess=function(e){var doc=e.target.result;if(!doc){callback(errors.MISSING_DOC)}else{delete doc["_doc_id_rev"];callback(null,doc)}}};api._putLocal=function(doc,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}delete doc._revisions;var oldRev=doc._rev;var id=doc._id;if(!oldRev){doc._rev="0-1"}else{doc._rev="0-"+(parseInt(oldRev.split("-")[1],10)+1)}doc._doc_id_rev=id+"::"+doc._rev;var tx=opts.ctx;var ret;if(!tx){tx=idb.transaction([LOCAL_STORE],"readwrite");tx.onerror=idbError(callback);tx.oncomplete=function(){if(ret){callback(null,ret)}}}var oStore=tx.objectStore(LOCAL_STORE);var req;if(oldRev){var index=oStore.index("_doc_id_rev");var docIdRev=id+"::"+oldRev;req=index.get(docIdRev);req.onsuccess=function(e){if(!e.target.result){callback(errors.REV_CONFLICT)}else{var req=oStore.put(doc);req.onsuccess=function(){ret={ok:true,id:doc._id,rev:doc._rev};if(opts.ctx){callback(null,ret)}}}}}else{req=oStore.get(id);req.onsuccess=function(e){if(e.target.result){callback(errors.REV_CONFLICT)}else{var req=oStore.put(doc);req.onsuccess=function(){ret={ok:true,id:doc._id,rev:doc._rev};if(opts.ctx){callback(null,ret)}}}}}};api._removeLocal=function(doc,callback){var tx=idb.transaction([LOCAL_STORE],"readwrite");var ret;tx.oncomplete=function(){if(ret){callback(null,ret)}};var docIdRev=doc._id+"::"+doc._rev;var oStore=tx.objectStore(LOCAL_STORE);var index=oStore.index("_doc_id_rev");var req=index.get(docIdRev);req.onerror=idbError(callback);req.onsuccess=function(e){var doc=e.target.result;if(!doc){callback(errors.MISSING_DOC)}else{var req=index.getKey(docIdRev);req.onsuccess=function(e){var key=e.target.result;oStore["delete"](key);ret={ok:true,id:doc._id,rev:"0-0"}}}}};var cached=cachedDBs[name];if(cached){idb=cached.idb;blobSupport=cached.blobSupport;instanceId=cached.instanceId;idStored=cached.idStored;process.nextTick(function(){callback(null,api)});return}var req=global.indexedDB.open(name,ADAPTER_VERSION);if(!("openReqList"in IdbPouch)){IdbPouch.openReqList={}}IdbPouch.openReqList[name]=req;req.onupgradeneeded=function(e){var db=e.target.result;if(e.oldVersion<1){createSchema(db)}if(e.oldVersion<3){createLocalStoreSchema(db);if(e.oldVersion<2){addDeletedOrLocalIndex(e,function(transaction){migrateLocalStore(e,transaction)})}else{migrateLocalStore(e)}}};req.onsuccess=function(e){idb=e.target.result;idb.onversionchange=function(){idb.close();delete cachedDBs[name]};idb.onabort=function(){idb.close();delete cachedDBs[name]};var txn=idb.transaction([META_STORE,DETECT_BLOB_SUPPORT_STORE],"readwrite");var req=txn.objectStore(META_STORE).get(META_STORE);req.onsuccess=function(e){var checkSetupComplete=function(){if(blobSupport===null||!idStored){return}else{cachedDBs[name]={idb:idb,blobSupport:blobSupport,instanceId:instanceId,idStored:idStored,loaded:true};callback(null,api)}};var meta=e.target.result||{id:META_STORE};if(name+"_id"in meta){instanceId=meta[name+"_id"];idStored=true;checkSetupComplete()}else{instanceId=utils.uuid();meta[name+"_id"]=instanceId;txn.objectStore(META_STORE).put(meta).onsuccess=function(){idStored=true;checkSetupComplete()}}try{var blob=utils.createBlob([""],{type:"image/png"});txn.objectStore(DETECT_BLOB_SUPPORT_STORE).put(blob,"key");txn.oncomplete=function(){txn=idb.transaction([META_STORE,DETECT_BLOB_SUPPORT_STORE],"readwrite");var getBlobReq=txn.objectStore(DETECT_BLOB_SUPPORT_STORE).get("key");getBlobReq.onsuccess=function(e){var storedBlob=e.target.result;var url=URL.createObjectURL(storedBlob);utils.ajax({url:url,cache:true,binary:true},function(err,res){if(err&&err.status===405){blobSupport=true}else{blobSupport=!!(res&&res.type==="image/png")}checkSetupComplete()})}}}catch(err){blobSupport=false;checkSetupComplete()}}};req.onerror=idbError(callback)}IdbPouch.valid=function(){var isSafari=typeof openDatabase!=="undefined"&&/Safari/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent);return!isSafari&&global.indexedDB&&isModernIdb()};function destroy(name,opts,callback){if(!("openReqList"in IdbPouch)){IdbPouch.openReqList={}}IdbPouch.Changes.removeAllListeners(name);if(IdbPouch.openReqList[name]&&IdbPouch.openReqList[name].result){IdbPouch.openReqList[name].result.close()}var req=global.indexedDB.deleteDatabase(name);req.onsuccess=function(){if(IdbPouch.openReqList[name]){IdbPouch.openReqList[name]=null}if(utils.hasLocalStorage()&&name in global.localStorage){delete global.localStorage[name]}delete cachedDBs[name];callback(null,{ok:true})};req.onerror=idbError(callback)}IdbPouch.destroy=utils.toPromise(function(name,opts,callback){taskQueue.queue.push({action:function(thisCallback){destroy(name,opts,thisCallback)},callback:callback});applyNext()});IdbPouch.Changes=new utils.Changes;module.exports=IdbPouch}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../deps/errors":14,"../merge":20,"../utils":25,_process:3,vuvuzela:57}],7:[function(require,module,exports){module.exports=["idb","websql"]},{}],8:[function(require,module,exports){(function(global){"use strict";var utils=require("../utils");var merge=require("../merge");var errors=require("../deps/errors");var vuvuzela=require("vuvuzela");function quote(str){return"'"+str+"'"}var cachedDatabases={};var openDB=utils.getArguments(function(args){if(typeof global!=="undefined"){if(global.navigator&&global.navigator.sqlitePlugin&&global.navigator.sqlitePlugin.openDatabase){return navigator.sqlitePlugin.openDatabase.apply(navigator.sqlitePlugin,args)}else if(global.sqlitePlugin&&global.sqlitePlugin.openDatabase){return global.sqlitePlugin.openDatabase.apply(global.sqlitePlugin,args)}else{var db=cachedDatabases[args[0]];if(!db){db=cachedDatabases[args[0]]=global.openDatabase.apply(global,args)}return db}}});var POUCH_VERSION=1;var ADAPTER_VERSION=4;var DOC_STORE=quote("document-store");var BY_SEQ_STORE=quote("by-sequence");var ATTACH_STORE=quote("attach-store");var LOCAL_STORE=quote("local-store");var META_STORE=quote("metadata-store");var BY_SEQ_STORE_DELETED_INDEX_SQL="CREATE INDEX IF NOT EXISTS 'by-seq-deleted-idx' ON "+BY_SEQ_STORE+" (seq, deleted)";var BY_SEQ_STORE_DOC_ID_REV_INDEX_SQL="CREATE UNIQUE INDEX IF NOT EXISTS 'by-seq-doc-id-rev' ON "+BY_SEQ_STORE+" (doc_id, rev)";var DOC_STORE_WINNINGSEQ_INDEX_SQL="CREATE INDEX IF NOT EXISTS 'doc-winningseq-idx' ON "+DOC_STORE+" (winningseq)";var DOC_STORE_AND_BY_SEQ_JOINER=BY_SEQ_STORE+".seq = "+DOC_STORE+".winningseq";var SELECT_DOCS=BY_SEQ_STORE+".seq AS seq, "+BY_SEQ_STORE+".deleted AS deleted, "+BY_SEQ_STORE+".json AS data, "+BY_SEQ_STORE+".rev AS rev, "+DOC_STORE+".json AS metadata";function select(selector,table,joiner,where,orderBy){return"SELECT "+selector+" FROM "+(typeof table==="string"?table:table.join(" JOIN "))+(joiner?" ON "+joiner:"")+(where?" WHERE "+(typeof where==="string"?where:where.join(" AND ")):"")+(orderBy?" ORDER BY "+orderBy:"")}function unknownError(callback){return function(event){var errorNameMatch=event&&event.constructor.toString().match(/function ([^\(]+)/);var errorName=errorNameMatch&&errorNameMatch[1]||event.type;var errorReason=event.target||event.message;callback(errors.error(errors.WSQ_ERROR,errorReason,errorName))}}function decodeUtf8(str){return decodeURIComponent(window.escape(str))}function parseHexString(str,encoding){var result="";var charWidth=encoding==="UTF-8"?2:4;for(var i=0,len=str.length;i<len;i+=charWidth){var substring=str.substring(i,i+charWidth);if(charWidth===4){substring=substring.substring(2,4)+substring.substring(0,2)}result+=String.fromCharCode(parseInt(substring,16))}result=encoding==="UTF-8"?decodeUtf8(result):result;return result}function stringifyDoc(doc){delete doc._id;delete doc._rev;return JSON.stringify(doc)}function unstringifyDoc(doc,id,rev){doc=JSON.parse(doc);doc._id=id;doc._rev=rev;return doc}function getSize(opts){if("size"in opts){return opts.size*1e6}var isAndroid=/Android/.test(window.navigator.userAgent);return isAndroid?5e6:1}function WebSqlPouch(opts,callback){var api=this;var instanceId=null;var name=opts.name;var size=getSize(opts);var idRequests=[];var docCount=-1;var encoding;var db=openDB(name,POUCH_VERSION,name,size);if(!db){return callback(errors.UNKNOWN_ERROR)}else if(typeof db.readTransaction!=="function"){db.readTransaction=db.transaction}function dbCreated(){if(utils.hasLocalStorage()){global.localStorage["_pouch__websqldb_"+name]=true}callback(null,api)}function runMigration2(tx,callback){tx.executeSql(DOC_STORE_WINNINGSEQ_INDEX_SQL);tx.executeSql("ALTER TABLE "+BY_SEQ_STORE+" ADD COLUMN deleted TINYINT(1) DEFAULT 0",[],function(){tx.executeSql(BY_SEQ_STORE_DELETED_INDEX_SQL);tx.executeSql("ALTER TABLE "+DOC_STORE+" ADD COLUMN local TINYINT(1) DEFAULT 0",[],function(){tx.executeSql("CREATE INDEX IF NOT EXISTS 'doc-store-local-idx' ON "+DOC_STORE+" (local, id)");var sql="SELECT "+DOC_STORE+".winningseq AS seq, "+DOC_STORE+".json AS metadata FROM "+BY_SEQ_STORE+" JOIN "+DOC_STORE+" ON "+BY_SEQ_STORE+".seq = "+DOC_STORE+".winningseq";tx.executeSql(sql,[],function(tx,result){var deleted=[];var local=[];for(var i=0;i<result.rows.length;i++){var item=result.rows.item(i);var seq=item.seq;var metadata=JSON.parse(item.metadata);if(utils.isDeleted(metadata)){deleted.push(seq)}if(utils.isLocalId(metadata.id)){local.push(metadata.id)}}tx.executeSql("UPDATE "+DOC_STORE+"SET local = 1 WHERE id IN ("+local.map(function(){return"?"}).join(",")+")",local,function(){tx.executeSql("UPDATE "+BY_SEQ_STORE+" SET deleted = 1 WHERE seq IN ("+deleted.map(function(){return"?"}).join(",")+")",deleted,callback)})})})})}function runMigration3(tx,callback){var local="CREATE TABLE IF NOT EXISTS "+LOCAL_STORE+" (id UNIQUE, rev, json)";tx.executeSql(local,[],function(){var sql="SELECT "+DOC_STORE+".id AS id, "+BY_SEQ_STORE+".json AS data "+"FROM "+BY_SEQ_STORE+" JOIN "+DOC_STORE+" ON "+BY_SEQ_STORE+".seq = "+DOC_STORE+".winningseq WHERE local = 1";tx.executeSql(sql,[],function(tx,res){var rows=[];for(var i=0;i<res.rows.length;i++){rows.push(res.rows.item(i))}function doNext(){if(!rows.length){return callback()}var row=rows.shift();var rev=JSON.parse(row.data)._rev;tx.executeSql("INSERT INTO "+LOCAL_STORE+" (id, rev, json) VALUES (?,?,?)",[row.id,rev,row.data],function(tx){tx.executeSql("DELETE FROM "+DOC_STORE+" WHERE id=?",[row.id],function(tx){tx.executeSql("DELETE FROM "+BY_SEQ_STORE+" WHERE seq=?",[row.seq],function(){doNext()})})})}doNext()})})}function runMigration4(tx,callback){function updateRows(rows,encoding){function doNext(){if(!rows.length){return callback()}var row=rows.shift();var doc_id_rev=parseHexString(row.hex,encoding);var idx=doc_id_rev.lastIndexOf("::");var doc_id=doc_id_rev.substring(0,idx);var rev=doc_id_rev.substring(idx+2);var sql="UPDATE "+BY_SEQ_STORE+" SET doc_id=?, rev=? WHERE doc_id_rev=?";tx.executeSql(sql,[doc_id,rev,doc_id_rev],function(){doNext()})}doNext()}var sql="ALTER TABLE "+BY_SEQ_STORE+" ADD COLUMN doc_id";tx.executeSql(sql,[],function(tx){var sql="ALTER TABLE "+BY_SEQ_STORE+" ADD COLUMN rev";tx.executeSql(sql,[],function(tx){tx.executeSql(BY_SEQ_STORE_DOC_ID_REV_INDEX_SQL,[],function(tx){var sql="SELECT hex(doc_id_rev) as hex FROM "+BY_SEQ_STORE;tx.executeSql(sql,[],function(tx,res){var rows=[];for(var i=0;i<res.rows.length;i++){rows.push(res.rows.item(i))}tx.executeSql("SELECT dbid, hex(dbid) AS hexId FROM "+META_STORE,[],function(tx,result){var id=result.rows.item(0).dbid;var hexId=result.rows.item(0).hexId;var encoding=hexId.length===id.length*2?"UTF-8":"UTF-16";updateRows(rows,encoding)})})})})})}function onGetInstanceId(tx){while(idRequests.length>0){var idCallback=idRequests.pop();idCallback(null,instanceId)}checkDbEncoding(tx)}function checkDbEncoding(tx){tx.executeSql("SELECT dbid, hex(dbid) AS hexId FROM "+META_STORE,[],function(tx,result){var id=result.rows.item(0).dbid;var hexId=result.rows.item(0).hexId;encoding=hexId.length===id.length*2?"UTF-8":"UTF-16"})}function onGetVersion(tx,dbVersion){if(dbVersion===0){var meta="CREATE TABLE IF NOT EXISTS "+META_STORE+" (update_seq INTEGER, dbid, db_version INTEGER)";var attach="CREATE TABLE IF NOT EXISTS "+ATTACH_STORE+" (digest, json, body BLOB)";var doc="CREATE TABLE IF NOT EXISTS "+DOC_STORE+" (id unique, json, winningseq)";var seq="CREATE TABLE IF NOT EXISTS "+BY_SEQ_STORE+" (seq INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "+"json, deleted TINYINT(1), doc_id, rev)";var local="CREATE TABLE IF NOT EXISTS "+LOCAL_STORE+" (id UNIQUE, rev, json)";tx.executeSql(attach);tx.executeSql(local);tx.executeSql(doc,[],function(){tx.executeSql(DOC_STORE_WINNINGSEQ_INDEX_SQL);tx.executeSql(seq,[],function(){tx.executeSql(BY_SEQ_STORE_DELETED_INDEX_SQL);tx.executeSql(BY_SEQ_STORE_DOC_ID_REV_INDEX_SQL);tx.executeSql(meta,[],function(){var initSeq="INSERT INTO "+META_STORE+" (update_seq, db_version, dbid) VALUES (?, ?, ?)";instanceId=utils.uuid();var initSeqArgs=[0,ADAPTER_VERSION,instanceId];tx.executeSql(initSeq,initSeqArgs,function(tx){onGetInstanceId(tx)})})})})}else{var setupDone=function(){var migrated=dbVersion<ADAPTER_VERSION;if(migrated){tx.executeSql("UPDATE "+META_STORE+" SET db_version = "+ADAPTER_VERSION)}var sql="SELECT dbid FROM "+META_STORE;tx.executeSql(sql,[],function(tx,result){instanceId=result.rows.item(0).dbid;onGetInstanceId(tx)})};switch(dbVersion){case 1:runMigration2(tx,function(){runMigration3(tx,function(){runMigration4(tx,setupDone)})});break;case 2:runMigration3(tx,function(){runMigration4(tx,setupDone)});break;case 3:runMigration4(tx,setupDone);break;default:setupDone();break}}}function setup(){db.transaction(function(tx){tx.executeSql("SELECT sql FROM sqlite_master WHERE tbl_name = "+META_STORE,[],function(tx,result){if(!result.rows.length){onGetVersion(tx,0)}else if(!/db_version/.test(result.rows.item(0).sql)){tx.executeSql("ALTER TABLE "+META_STORE+" ADD COLUMN db_version INTEGER",[],function(){onGetVersion(tx,1)})}else{tx.executeSql("SELECT db_version FROM "+META_STORE,[],function(tx,result){var dbVersion=result.rows.item(0).db_version;onGetVersion(tx,dbVersion)})}})},unknownError(callback),dbCreated)}if(utils.isCordova()&&typeof global!=="undefined"){global.addEventListener(name+"_pouch",function cordova_init(){global.removeEventListener(name+"_pouch",cordova_init,false);setup()},false)}else{setup()}api.type=function(){return"websql"};api._id=utils.toPromise(function(callback){callback(null,instanceId)});api._info=function(callback){db.readTransaction(function(tx){countDocs(tx,function(docCount){var sql="SELECT update_seq FROM "+META_STORE;tx.executeSql(sql,[],function(tx,result){var updateSeq=result.rows.item(0).update_seq;callback(null,{doc_count:docCount,update_seq:updateSeq})})})},unknownError(callback))};api._bulkDocs=function(req,opts,callback){var newEdits=opts.new_edits;var userDocs=req.docs;var docInfos=userDocs.map(function(doc,i){if(doc._id&&utils.isLocalId(doc._id)){return doc}var newDoc=utils.parseDoc(doc,newEdits);newDoc._bulk_seq=i;return newDoc});var docInfoErrors=docInfos.filter(function(docInfo){return docInfo.error});if(docInfoErrors.length){return callback(docInfoErrors[0])}var tx;var results=new Array(docInfos.length);var updateSeq=0;var fetchedDocs=new utils.Map;var numDocsWritten=0;function complete(){var aresults=results.map(function(result){if(result._bulk_seq){delete result._bulk_seq}else if(!Object.keys(result).length){return{ok:true}}if(result.error){return result}var metadata=result.metadata;var rev=merge.winningRev(metadata);return{ok:true,id:metadata.id,rev:rev}});WebSqlPouch.Changes.notify(name);var updateseq="SELECT update_seq FROM "+META_STORE;tx.executeSql(updateseq,[],function(tx,result){var update_seq=result.rows.item(0).update_seq+updateSeq;var sql="UPDATE "+META_STORE+" SET update_seq=?";tx.executeSql(sql,[update_seq],function(){callback(null,aresults)})})}function preprocessAttachment(att,finish){if(att.stub){return finish()}if(typeof att.data==="string"){try{att.data=atob(att.data)}catch(e){var err=errors.error(errors.BAD_ARG,"Attachments need to be base64 encoded");return callback(err)}var data=utils.fixBinary(att.data);att.data=utils.createBlob([data],{type:att.content_type})}var reader=new FileReader;reader.onloadend=function(e){var binary=utils.arrayBufferToBinaryString(this.result);att.data=binary;utils.MD5(binary).then(function(result){att.digest="md5-"+result;finish()})};reader.readAsArrayBuffer(att.data)}function preprocessAttachments(callback){if(!docInfos.length){return callback()}var docv=0;docInfos.forEach(function(docInfo){var attachments=docInfo.data&&docInfo.data._attachments?Object.keys(docInfo.data._attachments):[];var recv=0;if(!attachments.length){return done()}function processedAttachment(){recv++;if(recv===attachments.length){done()}}for(var key in docInfo.data._attachments){if(docInfo.data._attachments.hasOwnProperty(key)){preprocessAttachment(docInfo.data._attachments[key],processedAttachment)}}});function done(){docv++;if(docInfos.length===docv){callback()}}}function writeDoc(docInfo,winningRev,deleted,callback,isUpdate,resultsIdx){function finish(){updateSeq++;var data=docInfo.data;var deletedInt=deleted?1:0;var id=data._id;var rev=data._rev;var json=stringifyDoc(data);var sql="INSERT INTO "+BY_SEQ_STORE+" (doc_id, rev, json, deleted) VALUES (?, ?, ?, ?);";var sqlArgs=[id,rev,json,deletedInt];tx.executeSql(sql,sqlArgs,function(tx,result){dataWritten(tx,result.insertId)},function(){var fetchSql=select("seq",BY_SEQ_STORE,null,"doc_id=? AND rev=?");tx.executeSql(fetchSql,[id,rev],function(tx,res){var seq=res.rows.item(0).seq;var sql="UPDATE "+BY_SEQ_STORE+" SET json=?, deleted=? WHERE doc_id=? AND rev=?;";var sqlArgs=[json,deletedInt,id,rev];tx.executeSql(sql,sqlArgs,function(tx){updateSeq--;dataWritten(tx,seq)})});return false})}function collectResults(attachmentErr){if(!err){if(attachmentErr){err=attachmentErr;callback(err)}else if(recv===attachments.length){finish()}}}var err=null;var recv=0;docInfo.data._id=docInfo.metadata.id;docInfo.data._rev=docInfo.metadata.rev;if(deleted){docInfo.data._deleted=true}var attachments=docInfo.data._attachments?Object.keys(docInfo.data._attachments):[];function attachmentSaved(err){recv++;collectResults(err)}for(var key in docInfo.data._attachments){if(!docInfo.data._attachments[key].stub){var data=docInfo.data._attachments[key].data;delete docInfo.data._attachments[key].data;var digest=docInfo.data._attachments[key].digest;saveAttachment(docInfo,digest,data,attachmentSaved)}else{recv++;collectResults()}}if(!attachments.length){finish()}function dataWritten(tx,seq){docInfo.metadata.seq=seq;delete docInfo.metadata.rev;var sql=isUpdate?"UPDATE "+DOC_STORE+" SET json=?, winningseq=(SELECT seq FROM "+BY_SEQ_STORE+" WHERE doc_id="+DOC_STORE+".id AND rev=?) WHERE id=?":"INSERT INTO "+DOC_STORE+" (id, winningseq, json) VALUES (?, ?, ?);";var metadataStr=vuvuzela.stringify(docInfo.metadata);var id=docInfo.metadata.id;var params=isUpdate?[metadataStr,winningRev,id]:[id,seq,metadataStr];tx.executeSql(sql,params,function(){results[resultsIdx]=docInfo;fetchedDocs.set(id,docInfo.metadata);callback()})}}function updateDoc(oldDoc,docInfo,resultsIdx,callback){var merged=merge.merge(oldDoc.rev_tree,docInfo.metadata.rev_tree[0],1e3);var deleted=utils.isDeleted(docInfo.metadata);var oldDocDeleted=utils.isDeleted(oldDoc);var inConflict=oldDocDeleted&&deleted&&newEdits||!oldDocDeleted&&newEdits&&merged.conflicts!=="new_leaf";if(inConflict){results[resultsIdx]=makeErr(errors.REV_CONFLICT,docInfo._bulk_seq);return callback()}docInfo.metadata.rev_tree=merged.tree;var winningRev=merge.winningRev(docInfo.metadata);deleted=utils.isDeleted(docInfo.metadata,winningRev);writeDoc(docInfo,winningRev,deleted,callback,true,resultsIdx)}function insertDoc(docInfo,resultsIdx,callback){var winningRev=merge.winningRev(docInfo.metadata);var deleted=utils.isDeleted(docInfo.metadata,winningRev);if("was_delete"in opts&&deleted){results[resultsIdx]=errors.MISSING_DOC;return callback()}writeDoc(docInfo,winningRev,deleted,callback,false,resultsIdx)}function checkDoneWritingDocs(){if(++numDocsWritten===docInfos.length){complete()}}function processDocs(){if(!docInfos.length){return complete()}var idsToDocs=new utils.Map;docInfos.forEach(function(currentDoc,resultsIdx){if(currentDoc._id&&utils.isLocalId(currentDoc._id)){api[currentDoc._deleted?"_removeLocal":"_putLocal"](currentDoc,{ctx:tx},function(err,resp){if(err){results[resultsIdx]=err}else{results[resultsIdx]={}}checkDoneWritingDocs()});return}var id=currentDoc.metadata.id;if(idsToDocs.has(id)){idsToDocs.get(id).push([currentDoc,resultsIdx])}else{idsToDocs.set(id,[[currentDoc,resultsIdx]])}});idsToDocs.forEach(function(docs,id){var numDone=0;function docWritten(){checkDoneWritingDocs();if(++numDone<docs.length){nextDoc()}}function nextDoc(){var value=docs[numDone];var currentDoc=value[0];var resultsIdx=value[1];if(fetchedDocs.has(id)){updateDoc(fetchedDocs.get(id),currentDoc,resultsIdx,docWritten)}else{insertDoc(currentDoc,resultsIdx,docWritten)}}nextDoc()})}function fetchExistingDocs(callback){if(!docInfos.length){return callback()}var numFetched=0;function checkDone(){if(++numFetched===docInfos.length){callback()}}docInfos.forEach(function(docInfo){if(docInfo._id&&utils.isLocalId(docInfo._id)){return checkDone()}var id=docInfo.metadata.id;tx.executeSql("SELECT json FROM "+DOC_STORE+" WHERE id = ?",[id],function(tx,result){if(result.rows.length){var metadata=vuvuzela.parse(result.rows.item(0).json);fetchedDocs.set(id,metadata)}checkDone()})})}function makeErr(err,seq){err._bulk_seq=seq;return err}function saveAttachment(docInfo,digest,data,callback){var ref=[docInfo.metadata.id,docInfo.metadata.rev].join("@");var newAtt={digest:digest};var sql="SELECT digest, json FROM "+ATTACH_STORE+" WHERE digest=?";tx.executeSql(sql,[digest],function(tx,result){if(!result.rows.length){newAtt.refs={};newAtt.refs[ref]=true;sql="INSERT INTO "+ATTACH_STORE+"(digest, json, body) VALUES (?, ?, ?)";tx.executeSql(sql,[digest,JSON.stringify(newAtt),data],function(){callback()})}else{newAtt.refs=JSON.parse(result.rows.item(0).json).refs;sql="UPDATE "+ATTACH_STORE+" SET json=?, body=? WHERE digest=?";tx.executeSql(sql,[JSON.stringify(newAtt),data,digest],function(){callback()})}})}preprocessAttachments(function(){db.transaction(function(txn){tx=txn;fetchExistingDocs(processDocs)},unknownError(callback),function(){docCount=-1})})};api._get=function(id,opts,callback){opts=utils.clone(opts);var doc;var metadata;var err;if(!opts.ctx){db.readTransaction(function(txn){opts.ctx=txn;api._get(id,opts,callback)});return}var tx=opts.ctx;function finish(){callback(err,{doc:doc,metadata:metadata,ctx:tx})}var sql;var sqlArgs;if(opts.rev){sql=select(SELECT_DOCS,[DOC_STORE,BY_SEQ_STORE],DOC_STORE+".id="+BY_SEQ_STORE+".doc_id",[BY_SEQ_STORE+".doc_id=?",BY_SEQ_STORE+".rev=?"]);sqlArgs=[id,opts.rev]}else{sql=select(SELECT_DOCS,[DOC_STORE,BY_SEQ_STORE],DOC_STORE_AND_BY_SEQ_JOINER,DOC_STORE+".id=?");sqlArgs=[id]}tx.executeSql(sql,sqlArgs,function(a,results){if(!results.rows.length){err=errors.MISSING_DOC;return finish()}var item=results.rows.item(0);metadata=vuvuzela.parse(item.metadata);if(item.deleted&&!opts.rev){err=errors.error(errors.MISSING_DOC,"deleted");return finish()}doc=unstringifyDoc(item.data,metadata.id,item.rev);finish()})};function countDocs(tx,callback){if(docCount!==-1){return callback(docCount)}var sql=select("COUNT("+DOC_STORE+".id) AS 'num'",[DOC_STORE,BY_SEQ_STORE],DOC_STORE_AND_BY_SEQ_JOINER,BY_SEQ_STORE+".deleted=0");tx.executeSql(sql,[],function(tx,result){docCount=result.rows.item(0).num;callback(docCount)})}api._allDocs=function(opts,callback){var results=[];var totalRows;var start="startkey"in opts?opts.startkey:false;var end="endkey"in opts?opts.endkey:false;var key="key"in opts?opts.key:false;var descending="descending"in opts?opts.descending:false;var limit="limit"in opts?opts.limit:-1;var offset="skip"in opts?opts.skip:0;var inclusiveEnd=opts.inclusive_end!==false;var sqlArgs=[];var criteria=[];if(key!==false){criteria.push(DOC_STORE+".id = ?");sqlArgs.push(key)}else if(start!==false||end!==false){if(start!==false){criteria.push(DOC_STORE+".id "+(descending?"<=":">=")+" ?");sqlArgs.push(start)}if(end!==false){var comparator=descending?">":"<";if(inclusiveEnd){comparator+="="}criteria.push(DOC_STORE+".id "+comparator+" ?");sqlArgs.push(end)}if(key!==false){criteria.push(DOC_STORE+".id = ?");sqlArgs.push(key)}}if(opts.deleted!=="ok"){criteria.push(BY_SEQ_STORE+".deleted = 0")}db.readTransaction(function(tx){countDocs(tx,function(count){totalRows=count;if(limit===0){return}var sql=select(SELECT_DOCS,[DOC_STORE,BY_SEQ_STORE],DOC_STORE_AND_BY_SEQ_JOINER,criteria,DOC_STORE+".id "+(descending?"DESC":"ASC"));sql+=" LIMIT "+limit+" OFFSET "+offset;tx.executeSql(sql,sqlArgs,function(tx,result){for(var i=0,l=result.rows.length;i<l;i++){var item=result.rows.item(i);var metadata=vuvuzela.parse(item.metadata);var data=unstringifyDoc(item.data,metadata.id,item.rev);var winningRev=data._rev;var doc={id:metadata.id,key:metadata.id,value:{rev:winningRev}};if(opts.include_docs){doc.doc=data;doc.doc._rev=winningRev;if(opts.conflicts){doc.doc._conflicts=merge.collectConflicts(metadata)}for(var att in doc.doc._attachments){if(doc.doc._attachments.hasOwnProperty(att)){doc.doc._attachments[att].stub=true}}}if(item.deleted){if(opts.deleted==="ok"){doc.value.deleted=true;doc.doc=null}else{continue}}results.push(doc)}})})},unknownError(callback),function(){callback(null,{total_rows:totalRows,offset:opts.skip,rows:results})})};api._changes=function(opts){opts=utils.clone(opts);if(opts.continuous){var id=name+":"+utils.uuid();WebSqlPouch.Changes.addListener(name,id,api,opts);WebSqlPouch.Changes.notify(name);return{cancel:function(){WebSqlPouch.Changes.removeListener(name,id)}}}var descending=opts.descending;opts.since=opts.since&&!descending?opts.since:0;var limit="limit"in opts?opts.limit:-1;if(limit===0){limit=1}var returnDocs;if("returnDocs"in opts){returnDocs=opts.returnDocs}else{returnDocs=true}var results=[];var numResults=0;function fetchChanges(){var criteria=[DOC_STORE+".winningseq > "+opts.since];var sqlArgs=[];if(opts.doc_ids){criteria.push(DOC_STORE+".id IN ("+opts.doc_ids.map(function(){return"?"}).join(",")+")");sqlArgs=opts.doc_ids}var sql=select(SELECT_DOCS,[DOC_STORE,BY_SEQ_STORE],DOC_STORE_AND_BY_SEQ_JOINER,criteria,DOC_STORE+".winningseq "+(descending?"DESC":"ASC"));var filter=utils.filterChange(opts);if(!opts.view&&!opts.filter){sql+=" LIMIT "+limit}db.readTransaction(function(tx){tx.executeSql(sql,sqlArgs,function(tx,result){var lastSeq=0;for(var i=0,l=result.rows.length;i<l;i++){var res=result.rows.item(i);var metadata=vuvuzela.parse(res.metadata);if(lastSeq<res.seq){lastSeq=res.seq}var doc=unstringifyDoc(res.data,metadata.id,res.rev);var change=opts.processChange(doc,metadata,opts);change.seq=res.seq;if(filter(change)){numResults++;if(returnDocs){results.push(change)}opts.onChange(change)}if(numResults===limit){break}}if(!opts.continuous){opts.complete(null,{results:results,last_seq:lastSeq})}})})}fetchChanges()};api._close=function(callback){callback()};api._getAttachment=function(attachment,opts,callback){var res;var tx=opts.ctx;var digest=attachment.digest;var type=attachment.content_type;var sql="SELECT hex(body) as body FROM "+ATTACH_STORE+" WHERE digest=?";tx.executeSql(sql,[digest],function(tx,result){var data=parseHexString(result.rows.item(0).body,encoding);if(opts.encode){res=btoa(data)}else{data=utils.fixBinary(data);res=utils.createBlob([data],{type:type})}callback(null,res)})};api._getRevisionTree=function(docId,callback){db.readTransaction(function(tx){var sql="SELECT json AS metadata FROM "+DOC_STORE+" WHERE id = ?";tx.executeSql(sql,[docId],function(tx,result){if(!result.rows.length){callback(errors.MISSING_DOC)}else{var data=vuvuzela.parse(result.rows.item(0).metadata);callback(null,data.rev_tree)}})})};api._doCompaction=function(docId,rev_tree,revs,callback){if(!revs.length){return callback()}db.transaction(function(tx){var sql="SELECT json AS metadata FROM "+DOC_STORE+" WHERE id = ?";tx.executeSql(sql,[docId],function(tx,result){if(!result.rows.length){return utils.call(callback)}var metadata=vuvuzela.parse(result.rows.item(0).metadata);metadata.rev_tree=rev_tree;var numDone=0;revs.forEach(function(rev){var sql="DELETE FROM "+BY_SEQ_STORE+" WHERE doc_id=? AND rev=?";tx.executeSql(sql,[docId,rev],function(tx){if(++numDone===revs.length){var sql="UPDATE "+DOC_STORE+" SET json = ? WHERE id = ?";tx.executeSql(sql,[vuvuzela.stringify(metadata),docId],function(){callback()})}})})})})};api._getLocal=function(id,callback){db.readTransaction(function(tx){var sql="SELECT json, rev FROM "+LOCAL_STORE+" WHERE id=?";tx.executeSql(sql,[id],function(tx,res){if(res.rows.length){var item=res.rows.item(0);var doc=unstringifyDoc(item.json,id,item.rev);callback(null,doc)}else{callback(errors.MISSING_DOC)}})})};api._putLocal=function(doc,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}delete doc._revisions;var oldRev=doc._rev;var id=doc._id;var newRev;if(!oldRev){newRev=doc._rev="0-1"}else{newRev=doc._rev="0-"+(parseInt(oldRev.split("-")[1],10)+1)}var json=stringifyDoc(doc);var ret;function putLocal(tx){var sql;var values;if(oldRev){sql="UPDATE "+LOCAL_STORE+" SET rev=?, json=? "+"WHERE id=? AND rev=?";values=[newRev,json,id,oldRev]}else{sql="INSERT INTO "+LOCAL_STORE+" (id, rev, json) VALUES (?,?,?)";values=[id,newRev,json]}tx.executeSql(sql,values,function(tx,res){if(res.rowsAffected){ret={ok:true,id:id,rev:newRev};if(opts.ctx){callback(null,ret)}}else{callback(errors.REV_CONFLICT)}},function(){callback(errors.REV_CONFLICT);return false})}if(opts.ctx){putLocal(opts.ctx)}else{db.transaction(function(tx){putLocal(tx)},unknownError(callback),function(){if(ret){callback(null,ret)}})}};api._removeLocal=function(doc,callback){var ret;db.transaction(function(tx){var sql="DELETE FROM "+LOCAL_STORE+" WHERE id=? AND rev=?";var params=[doc._id,doc._rev];tx.executeSql(sql,params,function(tx,res){if(!res.rowsAffected){return callback(errors.REV_CONFLICT)}ret={ok:true,id:doc._id,rev:"0-0"}})},unknownError(callback),function(){callback(null,ret)})} | |
}WebSqlPouch.valid=function(){if(typeof global!=="undefined"){if(global.navigator&&global.navigator.sqlitePlugin&&global.navigator.sqlitePlugin.openDatabase){return true}else if(global.sqlitePlugin&&global.sqlitePlugin.openDatabase){return true}else if(global.openDatabase){return true}}return false};WebSqlPouch.destroy=utils.toPromise(function(name,opts,callback){WebSqlPouch.Changes.removeAllListeners(name);var size=getSize(opts);var db=openDB(name,POUCH_VERSION,name,size);db.transaction(function(tx){var stores=[DOC_STORE,BY_SEQ_STORE,ATTACH_STORE,META_STORE,LOCAL_STORE];stores.forEach(function(store){tx.executeSql("DROP TABLE IF EXISTS "+store,[])})},unknownError(callback),function(){if(utils.hasLocalStorage()){delete global.localStorage["_pouch__websqldb_"+name];delete global.localStorage[name]}callback(null,{ok:true})})});WebSqlPouch.Changes=new utils.Changes;module.exports=WebSqlPouch}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../deps/errors":14,"../merge":20,"../utils":25,vuvuzela:57}],9:[function(require,module,exports){"use strict";var utils=require("./utils");var merge=require("./merge");var errors=require("./deps/errors");var EE=require("events").EventEmitter;var evalFilter=require("./evalFilter");var evalView=require("./evalView");module.exports=Changes;utils.inherits(Changes,EE);function Changes(db,opts,callback){EE.call(this);var self=this;this.db=db;opts=opts?utils.clone(opts):{};var oldComplete=callback||opts.complete||function(){};var complete=opts.complete=utils.once(function(err,resp){if(err){self.emit("error",err)}else{self.emit("complete",resp)}self.removeAllListeners();db.removeListener("destroyed",onDestroy)});if(oldComplete){self.on("complete",function(resp){oldComplete(null,resp)});self.on("error",function(err){oldComplete(err)})}var oldOnChange=opts.onChange;if(oldOnChange){self.on("change",oldOnChange)}function onDestroy(){self.cancel()}db.once("destroyed",onDestroy);opts.onChange=function(change){if(opts.isCancelled){return}self.emit("change",change);if(self.startSeq&&self.startSeq<=change.seq){self.emit("uptodate");self.startSeq=false}if(change.deleted){self.emit("delete",change)}else if(change.changes.length===1&&change.changes[0].rev.slice(0,2)==="1-"){self.emit("create",change)}else{self.emit("update",change)}};var promise=new utils.Promise(function(fulfill,reject){opts.complete=function(err,res){if(err){reject(err)}else{fulfill(res)}}});self.once("cancel",function(){if(oldOnChange){self.removeListener("change",oldOnChange)}opts.complete(null,{status:"cancelled"})});this.then=promise.then.bind(promise);this["catch"]=promise["catch"].bind(promise);this.then(function(result){complete(null,result)},complete);if(!db.taskqueue.isReady){db.taskqueue.addTask(function(){if(self.isCancelled){self.emit("cancel")}else{self.doChanges(opts)}})}else{self.doChanges(opts)}}Changes.prototype.cancel=function(){this.isCancelled=true;if(this.db.taskqueue.isReady){this.emit("cancel")}};function processChange(doc,metadata,opts){var changeList=[{rev:doc._rev}];if(opts.style==="all_docs"){changeList=merge.collectLeaves(metadata.rev_tree).map(function(x){return{rev:x.rev}})}var change={id:metadata.id,changes:changeList,doc:doc};if(utils.isDeleted(metadata,doc._rev)){change.deleted=true}if(opts.conflicts){change.doc._conflicts=merge.collectConflicts(metadata);if(!change.doc._conflicts.length){delete change.doc._conflicts}}return change}Changes.prototype.doChanges=function(opts){var self=this;var callback=opts.complete;opts=utils.clone(opts);if("live"in opts&&!("continuous"in opts)){opts.continuous=opts.live}opts.processChange=processChange;if(opts.since==="latest"){opts.since="now"}if(!opts.since){opts.since=0}if(opts.since==="now"){this.db.info().then(function(info){if(self.isCancelled){callback(null,{status:"cancelled"});return}opts.since=info.update_seq-1;self.doChanges(opts)},callback);return}if(opts.continuous&&opts.since!=="now"){this.db.info().then(function(info){self.startSeq=info.update_seq-1},function(err){if(err.id==="idbNull"){return}throw err})}if(this.db.type()!=="http"&&opts.filter&&typeof opts.filter==="string"){return this.filterChanges(opts)}if(!("descending"in opts)){opts.descending=false}opts.limit=opts.limit===0?1:opts.limit;opts.complete=callback;var newPromise=this.db._changes(opts);if(newPromise&&typeof newPromise.cancel==="function"){var cancel=self.cancel;self.cancel=utils.getArguments(function(args){newPromise.cancel();cancel.apply(this,args)})}};Changes.prototype.filterChanges=function(opts){var self=this;var callback=opts.complete;if(opts.filter==="_view"){if(!opts.view||typeof opts.view!=="string"){var err=new Error("`view` filter parameter is not provided.");err.status=errors.BAD_REQUEST.status;err.name=errors.BAD_REQUEST.name;err.error=true;callback(err);return}var viewName=opts.view.split("/");this.db.get("_design/"+viewName[0],function(err,ddoc){if(self.isCancelled){callback(null,{status:"cancelled"});return}if(err){callback(err);return}if(ddoc&&ddoc.views&&ddoc.views[viewName[1]]){var filter=evalView(ddoc.views[viewName[1]].map);opts.filter=filter;self.doChanges(opts);return}var msg=ddoc.views?"missing json key: "+viewName[1]:"missing json key: views";if(!err){err=new Error(msg);err.status=errors.MISSING_DOC.status;err.name=errors.MISSING_DOC.name;err.error=true}callback(err);return})}else{var filterName=opts.filter.split("/");this.db.get("_design/"+filterName[0],function(err,ddoc){if(self.isCancelled){callback(null,{status:"cancelled"});return}if(err){callback(err);return}if(ddoc&&ddoc.filters&&ddoc.filters[filterName[1]]){var filter=evalFilter(ddoc.filters[filterName[1]]);opts.filter=filter;self.doChanges(opts);return}else{var msg=ddoc&&ddoc.filters?"missing json key: "+filterName[1]:"missing json key: filters";if(!err){err=new Error(msg);err.status=errors.MISSING_DOC.status;err.name=errors.MISSING_DOC.name;err.error=true}callback(err);return}})}}},{"./deps/errors":14,"./evalFilter":18,"./evalView":19,"./merge":20,"./utils":25,events:2}],10:[function(require,module,exports){(function(global){"use strict";var Adapter=require("./adapter");var utils=require("./utils");var TaskQueue=require("./taskqueue");var Promise=utils.Promise;function defaultCallback(err){if(err&&global.debug){console.error(err)}}utils.inherits(PouchDB,Adapter);function PouchDB(name,opts,callback){if(!(this instanceof PouchDB)){return new PouchDB(name,opts,callback)}var self=this;if(typeof opts==="function"||typeof opts==="undefined"){callback=opts;opts={}}if(name&&typeof name==="object"){opts=name;name=undefined}if(typeof callback==="undefined"){callback=defaultCallback}opts=opts||{};var oldCB=callback;self.auto_compaction=opts.auto_compaction;self.prefix=PouchDB.prefix;Adapter.call(self);self.taskqueue=new TaskQueue;var promise=new Promise(function(fulfill,reject){callback=function(err,resp){if(err){return reject(err)}delete resp.then;fulfill(resp)};opts=utils.clone(opts);var originalName=opts.name||name;var backend,error;(function(){try{if(typeof originalName!=="string"){error=new Error("Missing/invalid DB name");error.code=400;throw error}backend=PouchDB.parseAdapter(originalName,opts);opts.originalName=originalName;opts.name=backend.name;if(opts.prefix&&backend.adapter!=="http"&&backend.adapter!=="https"){opts.name=opts.prefix+opts.name}opts.adapter=opts.adapter||backend.adapter;self._adapter=opts.adapter;self._db_name=originalName;if(!PouchDB.adapters[opts.adapter]){error=new Error("Adapter is missing");error.code=404;throw error}if(!PouchDB.adapters[opts.adapter].valid()){error=new Error("Invalid Adapter");error.code=404;throw error}}catch(err){self.taskqueue.fail(err);self.changes=utils.toPromise(function(opts){if(opts.complete){opts.complete(err)}})}})();if(error){return reject(error)}self.adapter=opts.adapter;self.replicate={};self.replicate.from=function(url,opts,callback){return self.constructor.replicate(url,self,opts,callback)};self.replicate.to=function(url,opts,callback){return self.constructor.replicate(self,url,opts,callback)};self.sync=function(dbName,opts,callback){return self.constructor.sync(self,dbName,opts,callback)};self.replicate.sync=self.sync;self.destroy=utils.adapterFun("destroy",function(callback){var self=this;self.info(function(err,info){if(err){return callback(err)}self.constructor.destroy(info.db_name,callback)})});PouchDB.adapters[opts.adapter].call(self,opts,function(err,db){if(err){if(callback){self.taskqueue.fail(err);callback(err)}return}function destructionListener(event){if(event==="destroyed"){self.emit("destroyed");PouchDB.removeListener(originalName,destructionListener)}}PouchDB.on(originalName,destructionListener);self.emit("created",self);PouchDB.emit("created",opts.originalName);self.taskqueue.ready(self);callback(null,self)});if(opts.skipSetup){self.taskqueue.ready(self)}if(utils.isCordova()){cordova.fireWindowEvent(opts.name+"_pouch",{})}});promise.then(function(resp){oldCB(null,resp)},oldCB);self.then=promise.then.bind(promise);self["catch"]=promise["catch"].bind(promise)}module.exports=PouchDB}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./adapter":4,"./taskqueue":24,"./utils":25}],11:[function(require,module,exports){"use strict";var createBlob=require("./blob.js");var errors=require("./errors");var utils=require("../utils");var hasUpload;function ajax(options,adapterCallback){var requestCompleted=false;var callback=utils.getArguments(function(args){if(requestCompleted){return}adapterCallback.apply(this,args);requestCompleted=true});if(typeof options==="function"){callback=options;options={}}options=utils.clone(options);var defaultOptions={method:"GET",headers:{},json:true,processData:true,timeout:1e4,cache:false};options=utils.extend(true,defaultOptions,options);if(options.method==="GET"&&!options.cache){var hasArgs=options.url.indexOf("?")!==-1;options.url+=(hasArgs?"&":"?")+"_nonce="+utils.uuid(16)}function onSuccess(obj,resp,cb){if(!options.binary&&!options.json&&options.processData&&typeof obj!=="string"){obj=JSON.stringify(obj)}else if(!options.binary&&options.json&&typeof obj==="string"){try{obj=JSON.parse(obj)}catch(e){return cb(e)}}if(Array.isArray(obj)){obj=obj.map(function(v){var obj;if(v.ok){return v}else if(v.error&&v.error==="conflict"){obj=errors.REV_CONFLICT;obj.id=v.id;return obj}else if(v.error&&v.error==="forbidden"){obj=errors.FORBIDDEN;obj.id=v.id;obj.reason=v.reason;return obj}else if(v.missing){obj=errors.MISSING_DOC;obj.missing=v.missing;return obj}else{return v}})}cb(null,obj,resp)}function onError(err,cb){var errParsed,errObj,errType,key;try{errParsed=JSON.parse(err.responseText);for(key in errors){if(errors.hasOwnProperty(key)&&errors[key].name===errParsed.error){errType=errors[key];break}}if(!errType){errType=errors.UNKNOWN_ERROR;if(err.status){errType.status=err.status}if(err.statusText){err.name=err.statusText}}errObj=errors.error(errType,errParsed.reason)}catch(e){for(var key in errors){if(errors.hasOwnProperty(key)&&errors[key].status===err.status){errType=errors[key];break}}if(!errType){errType=errors.UNKNOWN_ERROR;if(err.status){errType.status=err.status}if(err.statusText){err.name=err.statusText}}errObj=errors.error(errType)}if(err.withCredentials&&err.status===0){errObj.status=405;errObj.statusText="Method Not Allowed"}cb(errObj)}var timer;var xhr;if(options.xhr){xhr=new options.xhr}else{xhr=new XMLHttpRequest}xhr.open(options.method,options.url);xhr.withCredentials=true;if(options.json){options.headers.Accept="application/json";options.headers["Content-Type"]=options.headers["Content-Type"]||"application/json";if(options.body&&options.processData&&typeof options.body!=="string"){options.body=JSON.stringify(options.body)}}if(options.binary){xhr.responseType="arraybuffer"}var createCookie=function(name,value,days){var expires="";if(days){var date=new Date;date.setTime(date.getTime()+days*24*60*60*1e3);expires="; expires="+date.toGMTString()}document.cookie=name+"="+value+expires+"; path=/"};for(var key in options.headers){if(key==="Cookie"){var cookie=options.headers[key].split("=");createCookie(cookie[0],cookie[1],10)}else{xhr.setRequestHeader(key,options.headers[key])}}if(!("body"in options)){options.body=null}var abortReq=function(){if(requestCompleted){return}xhr.abort();onError(xhr,callback)};xhr.onreadystatechange=function(){if(xhr.readyState!==4||requestCompleted){return}clearTimeout(timer);if(xhr.status>=200&&xhr.status<300){var data;if(options.binary){data=createBlob([xhr.response||""],{type:xhr.getResponseHeader("Content-Type")})}else{data=xhr.responseText}onSuccess(data,xhr,callback)}else{onError(xhr,callback)}};if(options.timeout>0){timer=setTimeout(abortReq,options.timeout);xhr.onprogress=function(){clearTimeout(timer);timer=setTimeout(abortReq,options.timeout)};if(typeof hasUpload==="undefined"){hasUpload=Object.keys(xhr).indexOf("upload")!==-1}if(hasUpload){xhr.upload.onprogress=xhr.onprogress}}if(options.body&&options.body instanceof Blob){var reader=new FileReader;reader.onloadend=function(e){var binary="";var bytes=new Uint8Array(this.result);var length=bytes.byteLength;for(var i=0;i<length;i++){binary+=String.fromCharCode(bytes[i])}binary=utils.fixBinary(binary);xhr.send(binary)};reader.readAsArrayBuffer(options.body)}else{xhr.send(options.body)}return{abort:abortReq}}module.exports=ajax},{"../utils":25,"./blob.js":12,"./errors":14}],12:[function(require,module,exports){(function(global){"use strict";function createBlob(parts,properties){parts=parts||[];properties=properties||{};try{return new Blob(parts,properties)}catch(e){if(e.name!=="TypeError"){throw e}var BlobBuilder=global.BlobBuilder||global.MSBlobBuilder||global.MozBlobBuilder||global.WebKitBlobBuilder;var builder=new BlobBuilder;for(var i=0;i<parts.length;i+=1){builder.append(parts[i])}return builder.getBlob(properties.type)}}module.exports=createBlob}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],13:[function(require,module,exports){"use strict";exports.Map=LazyMap;exports.Set=LazySet;function LazyMap(){this.store={}}LazyMap.prototype.mangle=function(key){if(typeof key!=="string"){throw new TypeError("key must be a string but Got "+key)}return"$"+key};LazyMap.prototype.unmangle=function(key){return key.substring(1)};LazyMap.prototype.get=function(key){var mangled=this.mangle(key);if(mangled in this.store){return this.store[mangled]}else{return void 0}};LazyMap.prototype.set=function(key,value){var mangled=this.mangle(key);this.store[mangled]=value;return true};LazyMap.prototype.has=function(key){var mangled=this.mangle(key);return mangled in this.store};LazyMap.prototype["delete"]=function(key){var mangled=this.mangle(key);if(mangled in this.store){delete this.store[mangled];return true}return false};LazyMap.prototype.forEach=function(cb){var self=this;var keys=Object.keys(self.store);keys.forEach(function(key){var value=self.store[key];key=self.unmangle(key);cb(value,key)})};function LazySet(){this.store=new LazyMap}LazySet.prototype.add=function(key){return this.store.set(key,true)};LazySet.prototype.has=function(key){return this.store.has(key)};LazySet.prototype["delete"]=function(key){return this.store["delete"](key)}},{}],14:[function(require,module,exports){"use strict";function PouchError(opts){this.status=opts.status;this.name=opts.error;this.message=opts.reason;this.error=true}PouchError.prototype__proto__=Error.prototype;PouchError.prototype.toString=function(){return JSON.stringify({status:this.status,name:this.name,message:this.message})};exports.UNAUTHORIZED=new PouchError({status:401,error:"unauthorized",reason:"Name or password is incorrect."});exports.MISSING_BULK_DOCS=new PouchError({status:400,error:"bad_request",reason:"Missing JSON list of 'docs'"});exports.MISSING_DOC=new PouchError({status:404,error:"not_found",reason:"missing"});exports.REV_CONFLICT=new PouchError({status:409,error:"conflict",reason:"Document update conflict"});exports.INVALID_ID=new PouchError({status:400,error:"invalid_id",reason:"_id field must contain a string"});exports.MISSING_ID=new PouchError({status:412,error:"missing_id",reason:"_id is required for puts"});exports.RESERVED_ID=new PouchError({status:400,error:"bad_request",reason:"Only reserved document ids may start with underscore."});exports.NOT_OPEN=new PouchError({status:412,error:"precondition_failed",reason:"Database not open"});exports.UNKNOWN_ERROR=new PouchError({status:500,error:"unknown_error",reason:"Database encountered an unknown error"});exports.BAD_ARG=new PouchError({status:500,error:"badarg",reason:"Some query argument is invalid"});exports.INVALID_REQUEST=new PouchError({status:400,error:"invalid_request",reason:"Request was invalid"});exports.QUERY_PARSE_ERROR=new PouchError({status:400,error:"query_parse_error",reason:"Some query parameter is invalid"});exports.DOC_VALIDATION=new PouchError({status:500,error:"doc_validation",reason:"Bad special document member"});exports.BAD_REQUEST=new PouchError({status:400,error:"bad_request",reason:"Something wrong with the request"});exports.NOT_AN_OBJECT=new PouchError({status:400,error:"bad_request",reason:"Document must be a JSON object"});exports.DB_MISSING=new PouchError({status:404,error:"not_found",reason:"Database not found"});exports.IDB_ERROR=new PouchError({status:500,error:"indexed_db_went_bad",reason:"unknown"});exports.WSQ_ERROR=new PouchError({status:500,error:"web_sql_went_bad",reason:"unknown"});exports.LDB_ERROR=new PouchError({status:500,error:"levelDB_went_went_bad",reason:"unknown"});exports.FORBIDDEN=new PouchError({status:403,error:"forbidden",reason:"Forbidden by design doc validate_doc_update function"});exports.error=function(error,reason,name){function CustomPouchError(msg){this.message=reason;if(name){this.name=name}}CustomPouchError.prototype=error;return new CustomPouchError(reason)}},{}],15:[function(require,module,exports){(function(process,global){"use strict";var crypto=require("crypto");var Md5=require("spark-md5");var setImmediateShim=global.setImmediate||global.setTimeout;function sliceShim(arrayBuffer,begin,end){if(typeof arrayBuffer.slice==="function"){if(!begin){return arrayBuffer.slice()}else if(!end){return arrayBuffer.slice(begin)}else{return arrayBuffer.slice(begin,end)}}begin=Math.floor(begin||0);end=Math.floor(end||0);var len=arrayBuffer.byteLength;begin=begin<0?Math.max(begin+len,0):Math.min(len,begin);end=end<0?Math.max(end+len,0):Math.min(len,end);if(end-begin<=0){return new ArrayBuffer(0)}var result=new ArrayBuffer(end-begin);var resultBytes=new Uint8Array(result);var sourceBytes=new Uint8Array(arrayBuffer,begin,end-begin);resultBytes.set(sourceBytes);return result}function intToString(int){var bytes=[int&255,int>>>8&255,int>>>16&255,int>>>24&255];return bytes.map(function(byte){return String.fromCharCode(byte)}).join("")}function rawToBase64(raw){var res="";for(var i=0;i<raw.length;i++){res+=intToString(raw[i])}return global.btoa(res)}module.exports=function(data,callback){if(!process.browser){var base64=crypto.createHash("md5").update(data).digest("base64");callback(null,base64);return}var inputIsString=typeof data==="string";var len=inputIsString?data.length:data.byteLength;var chunkSize=Math.min(524288,len);var chunks=Math.ceil(len/chunkSize);var currentChunk=0;var buffer=inputIsString?new Md5:new Md5.ArrayBuffer;function append(buffer,data,start,end){if(inputIsString){buffer.appendBinary(data.substring(start,end))}else{buffer.append(sliceShim(data,start,end))}}function loadNextChunk(){var start=currentChunk*chunkSize;var end=start+chunkSize;if(start+chunkSize>=data.size){end=data.size}currentChunk++;if(currentChunk<chunks){append(buffer,data,start,end);setImmediateShim(loadNextChunk)}else{append(buffer,data,start,end);var raw=buffer.end(true);var base64=rawToBase64(raw);callback(null,base64);buffer.destroy()}}loadNextChunk()}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{_process:3,crypto:1,"spark-md5":56}],16:[function(require,module,exports){"use strict";var Promise=require("../utils").Promise;function upsert(db,docId,diffFun){return new Promise(function(fulfill,reject){if(docId&&typeof docId==="object"){docId=docId._id}if(typeof docId!=="string"){return reject(new Error("doc id is required"))}db.get(docId,function(err,doc){if(err){if(err.status!==404){return reject(err)}return fulfill(tryAndPut(db,diffFun({_id:docId}),diffFun))}var newDoc=diffFun(doc);if(!newDoc){return fulfill(doc)}fulfill(tryAndPut(db,newDoc,diffFun))})})}function tryAndPut(db,doc,diffFun){return db.put(doc)["catch"](function(err){if(err.status!==409){throw err}return upsert(db,doc,diffFun)})}module.exports=function(db,docId,diffFun,cb){if(typeof cb==="function"){upsert(db,docId,diffFun).then(function(resp){cb(null,resp)},cb)}else{return upsert(db,docId,diffFun)}}},{"../utils":25}],17:[function(require,module,exports){"use strict";var chars=("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"+"abcdefghijklmnopqrstuvwxyz").split("");function getValue(radix){return 0|Math.random()*radix}function uuid(len,radix){radix=radix||chars.length;var out="";var i=-1;if(len){while(++i<len){out+=chars[getValue(radix)]}return out}while(++i<36){switch(i){case 8:case 13:case 18:case 23:out+="-";break;case 19:out+=chars[getValue(16)&3|8];break;default:out+=chars[getValue(16)]}}return out}module.exports=uuid},{}],18:[function(require,module,exports){"use strict";module.exports=evalFilter;function evalFilter(input){return eval(["(function () { return ",input," })()"].join(""))}},{}],19:[function(require,module,exports){"use strict";module.exports=evalView;function evalView(input){return eval(["(function () {"," return function (doc) {"," var emitted = false;"," var emit = function (a, b) {"," emitted = true;"," };"," var view = "+input+";"," view(doc);"," if (emitted) {"," return true;"," }"," }","})()"].join("\n"))}},{}],20:[function(require,module,exports){"use strict";var extend=require("pouchdb-extend");function pathToTree(path){var doc=path.shift();var root=[doc.id,doc.opts,[]];var leaf=root;var nleaf;while(path.length){doc=path.shift();nleaf=[doc.id,doc.opts,[]];leaf[2].push(nleaf);leaf=nleaf}return root}function mergeTree(in_tree1,in_tree2){var queue=[{tree1:in_tree1,tree2:in_tree2}];var conflicts=false;while(queue.length>0){var item=queue.pop();var tree1=item.tree1;var tree2=item.tree2;if(tree1[1].status||tree2[1].status){tree1[1].status=tree1[1].status==="available"||tree2[1].status==="available"?"available":"missing"}for(var i=0;i<tree2[2].length;i++){if(!tree1[2][0]){conflicts="new_leaf";tree1[2][0]=tree2[2][i];continue}var merged=false;for(var j=0;j<tree1[2].length;j++){if(tree1[2][j][0]===tree2[2][i][0]){queue.push({tree1:tree1[2][j],tree2:tree2[2][i]});merged=true}}if(!merged){conflicts="new_branch";tree1[2].push(tree2[2][i]);tree1[2].sort()}}}return{conflicts:conflicts,tree:in_tree1}}function doMerge(tree,path,dontExpand){var restree=[];var conflicts=false;var merged=false;var res;if(!tree.length){return{tree:[path],conflicts:"new_leaf"}}tree.forEach(function(branch){if(branch.pos===path.pos&&branch.ids[0]===path.ids[0]){res=mergeTree(branch.ids,path.ids);restree.push({pos:branch.pos,ids:res.tree});conflicts=conflicts||res.conflicts;merged=true}else if(dontExpand!==true){var t1=branch.pos<path.pos?branch:path;var t2=branch.pos<path.pos?path:branch;var diff=t2.pos-t1.pos;var candidateParents=[];var trees=[];trees.push({ids:t1.ids,diff:diff,parent:null,parentIdx:null});while(trees.length>0){var item=trees.pop();if(item.diff===0){if(item.ids[0]===t2.ids[0]){candidateParents.push(item)}continue}if(!item.ids){continue}item.ids[2].forEach(function(el,idx){trees.push({ids:el,diff:item.diff-1,parent:item.ids,parentIdx:idx})})}var el=candidateParents[0];if(!el){restree.push(branch)}else{res=mergeTree(el.ids,t2.ids);el.parent[2][el.parentIdx]=res.tree;restree.push({pos:t1.pos,ids:t1.ids});conflicts=conflicts||res.conflicts;merged=true}}else{restree.push(branch)}});if(!merged){restree.push(path)}restree.sort(function(a,b){return a.pos-b.pos});return{tree:restree,conflicts:conflicts||"internal_node"}}function stem(tree,depth){var stemmedPaths=PouchMerge.rootToLeaf(tree).map(function(path){var stemmed=path.ids.slice(-depth);return{pos:path.pos+(path.ids.length-stemmed.length),ids:pathToTree(stemmed)}});return stemmedPaths.reduce(function(prev,current,i,arr){return doMerge(prev,current,true).tree},[stemmedPaths.shift()])}var PouchMerge={};PouchMerge.merge=function(tree,path,depth){tree=extend(true,[],tree);path=extend(true,{},path);var newTree=doMerge(tree,path);return{tree:stem(newTree.tree,depth),conflicts:newTree.conflicts}};PouchMerge.winningRev=function(metadata){var leafs=[];PouchMerge.traverseRevTree(metadata.rev_tree,function(isLeaf,pos,id,something,opts){if(isLeaf){leafs.push({pos:pos,id:id,deleted:!!opts.deleted})}});leafs.sort(function(a,b){if(a.deleted!==b.deleted){return a.deleted>b.deleted?1:-1}if(a.pos!==b.pos){return b.pos-a.pos}return a.id<b.id?1:-1});return leafs[0].pos+"-"+leafs[0].id};PouchMerge.traverseRevTree=function(revs,callback){var toVisit=revs.slice();var node;while(node=toVisit.pop()){var pos=node.pos;var tree=node.ids;var branches=tree[2];var newCtx=callback(branches.length===0,pos,tree[0],node.ctx,tree[1]);for(var i=0,len=branches.length;i<len;i++){toVisit.push({pos:pos+1,ids:branches[i],ctx:newCtx})}}};PouchMerge.collectLeaves=function(revs){var leaves=[];PouchMerge.traverseRevTree(revs,function(isLeaf,pos,id,acc,opts){if(isLeaf){leaves.unshift({rev:pos+"-"+id,pos:pos,opts:opts})}});leaves.sort(function(a,b){return b.pos-a.pos});leaves.map(function(leaf){delete leaf.pos});return leaves};PouchMerge.collectConflicts=function(metadata){var win=PouchMerge.winningRev(metadata);var leaves=PouchMerge.collectLeaves(metadata.rev_tree);var conflicts=[];leaves.forEach(function(leaf){if(leaf.rev!==win&&!leaf.opts.deleted){conflicts.push(leaf.rev)}});return conflicts};PouchMerge.rootToLeaf=function(tree){var paths=[];PouchMerge.traverseRevTree(tree,function(isLeaf,pos,id,history,opts){history=history?history.slice(0):[];history.push({id:id,opts:opts});if(isLeaf){var rootPos=pos+1-history.length;paths.unshift({pos:rootPos,ids:history})}return history});return paths};module.exports=PouchMerge},{"pouchdb-extend":47}],21:[function(require,module,exports){"use strict";var utils=require("./utils");var EE=require("events").EventEmitter;var MAX_SIMULTANEOUS_REVS=50;utils.inherits(Replication,EE);function Replication(opts){EE.call(this);this.cancelled=false;var self=this;var promise=new utils.Promise(function(fulfill,reject){self.once("complete",fulfill);self.once("error",reject)});self.then=function(resolve,reject){return promise.then(resolve,reject)};self["catch"]=function(reject){return promise["catch"](reject)};self["catch"](function(err){})}Replication.prototype.cancel=function(){this.cancelled=true;this.emit("cancel")};Replication.prototype.ready=function(src,target){var self=this;function onDestroy(){self.cancel()}src.once("destroyed",onDestroy);target.once("destroyed",onDestroy);function cleanup(){src.removeListener("destroyed",onDestroy);target.removeListener("destroyed",onDestroy)}this.then(cleanup,cleanup)};function genReplicationId(src,target,opts){var filterFun=opts.filter?opts.filter.toString():"";return src.id().then(function(src_id){return target.id().then(function(target_id){var queryData=src_id+target_id+filterFun+JSON.stringify(opts.query_params)+opts.doc_ids;return utils.MD5(queryData).then(function(md5){md5=md5.replace(/\//g,".").replace(/\+/g,"_");return"_local/"+md5})})})}function updateCheckpoint(db,id,checkpoint,returnValue){return db.get(id)["catch"](function(err){if(err.status===404){return{_id:id}}throw err}).then(function(doc){if(returnValue.cancelled){return}doc.last_seq=checkpoint;return db.put(doc)})}function Checkpointer(src,target,id,returnValue){this.src=src;this.target=target;this.id=id;this.returnValue=returnValue}Checkpointer.prototype.writeCheckpoint=function(checkpoint){var self=this;return this.updateTarget(checkpoint).then(function(){return self.updateSource(checkpoint)})};Checkpointer.prototype.updateTarget=function(checkpoint){return updateCheckpoint(this.target,this.id,checkpoint,this.returnValue)};Checkpointer.prototype.updateSource=function(checkpoint){var self=this;if(this.readOnlySource){return utils.Promise.resolve(true)}return updateCheckpoint(this.src,this.id,checkpoint,this.returnValue)["catch"](function(err){var isForbidden=typeof err.status==="number"&&Math.floor(err.status/100)===4;if(isForbidden){self.readOnlySource=true;return true}throw err})};Checkpointer.prototype.getCheckpoint=function(){var self=this;return self.target.get(self.id).then(function(targetDoc){return self.src.get(self.id).then(function(sourceDoc){if(targetDoc.last_seq===sourceDoc.last_seq){return sourceDoc.last_seq}return 0},function(err){if(err.status===404&&targetDoc.last_seq){return self.src.put({_id:self.id,last_seq:0}).then(function(){return 0},function(err){if(err.status===401){self.readOnlySource=true;return targetDoc.last_seq}return 0})}throw err})})["catch"](function(err){if(err.status!==404){throw err}return 0})};function replicate(repId,src,target,opts,returnValue){var batches=[];var currentBatch;var pendingBatch={seq:0,changes:[],docs:[]};var writingCheckpoint=false;var changesCompleted=false;var replicationCompleted=false;var last_seq=0;var continuous=opts.continuous||opts.live||false;var batch_size=opts.batch_size||100;var batches_limit=opts.batches_limit||10;var changesPending=false;var doc_ids=opts.doc_ids;var checkpointer=new Checkpointer(src,target,repId,returnValue);var result={ok:true,start_time:new Date,docs_read:0,docs_written:0,doc_write_failures:0,errors:[]};var changesOpts={};returnValue.ready(src,target);function writeDocs(){if(currentBatch.docs.length===0){return}var docs=currentBatch.docs;return target.bulkDocs({docs:docs},{new_edits:false}).then(function(res){if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}var errors=[];res.forEach(function(res){if(res.error){result.doc_write_failures++;var error=new Error(res.reason||res.message||"Unknown reason");error.name=res.name||res.error;errors.push(error)}});result.errors=result.errors.concat(errors);result.docs_written+=currentBatch.docs.length-errors.length;var non403s=errors.filter(function(error){return error.name!=="unauthorized"&&error.name!=="forbidden"});if(non403s.length>0){var error=new Error("bulkDocs error");error.other_errors=errors;abortReplication("target.bulkDocs failed to write docs",error);throw new Error("bulkWrite partial failure")}},function(err){result.doc_write_failures+=docs.length;throw err})}function getNextDoc(){var diffs=currentBatch.diffs;var id=Object.keys(diffs)[0];var allMissing=diffs[id].missing;var missingBatches=[];for(var i=0;i<allMissing.length;i+=MAX_SIMULTANEOUS_REVS){missingBatches.push(allMissing.slice(i,Math.min(allMissing.length,i+MAX_SIMULTANEOUS_REVS)))}return utils.Promise.all(missingBatches.map(function(missing){return src.get(id,{revs:true,open_revs:missing,attachments:true}).then(function(docs){docs.forEach(function(doc){if(returnValue.cancelled){return completeReplication()}if(doc.ok){result.docs_read++;currentBatch.pendingRevs++;currentBatch.docs.push(doc.ok);delete diffs[doc.ok._id]}})})}))}function getAllDocs(){if(Object.keys(currentBatch.diffs).length>0){return getNextDoc().then(getAllDocs)}else{return utils.Promise.resolve()}}function getRevisionOneDocs(){var ids=Object.keys(currentBatch.diffs).filter(function(id){var missing=currentBatch.diffs[id].missing;return missing.length===1&&missing[0].slice(0,2)==="1-"});return src.allDocs({keys:ids,include_docs:true}).then(function(res){if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}res.rows.forEach(function(row){if(row.doc&&!row.deleted&&row.value.rev.slice(0,2)==="1-"&&(!row.doc._attachments||Object.keys(row.doc._attachments).length===0)){result.docs_read++; | |
currentBatch.pendingRevs++;currentBatch.docs.push(row.doc);delete currentBatch.diffs[row.id]}})})}function getDocs(){return getRevisionOneDocs().then(getAllDocs)}function finishBatch(){writingCheckpoint=true;return checkpointer.writeCheckpoint(currentBatch.seq).then(function(res){writingCheckpoint=false;if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}result.last_seq=last_seq=currentBatch.seq;returnValue.emit("change",utils.clone(result));currentBatch=undefined;getChanges()})["catch"](function(err){writingCheckpoint=false;abortReplication("writeCheckpoint completed with error",err);throw err})}function getDiffs(){var diff={};currentBatch.changes.forEach(function(change){diff[change.id]=change.changes.map(function(x){return x.rev})});return target.revsDiff(diff).then(function(diffs){if(returnValue.cancelled){completeReplication();throw new Error("cancelled")}currentBatch.diffs=diffs;currentBatch.pendingRevs=0})}function startNextBatch(){if(returnValue.cancelled||currentBatch){return}if(batches.length===0){processPendingBatch(true);return}currentBatch=batches.shift();getDiffs().then(getDocs).then(writeDocs).then(finishBatch).then(startNextBatch)["catch"](function(err){abortReplication("batch processing terminated with error",err)})}function processPendingBatch(immediate){if(pendingBatch.changes.length===0){if(batches.length===0&&!currentBatch){if(continuous&&changesOpts.live||changesCompleted){returnValue.emit("uptodate",utils.clone(result))}if(changesCompleted){completeReplication()}}return}if(immediate||changesCompleted||pendingBatch.changes.length>=batch_size){batches.push(pendingBatch);pendingBatch={seq:0,changes:[],docs:[]};startNextBatch()}}function abortReplication(reason,err){if(replicationCompleted){return}result.ok=false;result.status="aborted";result.errors.push(err);batches=[];pendingBatch={seq:0,changes:[],docs:[]};completeReplication()}function completeReplication(){if(replicationCompleted){return}if(returnValue.cancelled){result.status="cancelled";if(writingCheckpoint){return}}result.status=result.status||"complete";result.end_time=new Date;result.last_seq=last_seq;replicationCompleted=returnValue.cancelled=true;var non403s=result.errors.filter(function(error){return error.name!=="unauthorized"&&error.name!=="forbidden"});if(non403s.length>0){var error=result.errors.pop();if(result.errors.length>0){error.other_errors=result.errors}error.result=result;returnValue.emit("error",error)}else{returnValue.emit("complete",result)}returnValue.removeAllListeners()}function onChange(change){if(returnValue.cancelled){return completeReplication()}if(pendingBatch.changes.length===0&&batches.length===0&&!currentBatch){returnValue.emit("outofdate",utils.clone(result))}pendingBatch.seq=change.seq;pendingBatch.changes.push(change);processPendingBatch(batches.length===0)}function onChangesComplete(changes){changesPending=false;if(returnValue.cancelled){return completeReplication()}if(changesOpts.since<changes.last_seq){changesOpts.since=changes.last_seq;getChanges()}else{if(continuous){changesOpts.live=true;getChanges()}else{changesCompleted=true}}processPendingBatch(true)}function onChangesError(err){changesPending=false;if(returnValue.cancelled){return completeReplication()}abortReplication("changes rejected",err)}function getChanges(){if(!(!changesPending&&!changesCompleted&&batches.length<batches_limit)){return}changesPending=true;function abortChanges(){changes.cancel()}function removeListener(){returnValue.removeListener("cancel",abortChanges)}returnValue.once("cancel",abortChanges);var changes=src.changes(changesOpts).on("change",onChange);changes.then(removeListener,removeListener);changes.then(onChangesComplete)["catch"](onChangesError)}function startChanges(){checkpointer.getCheckpoint().then(function(checkpoint){last_seq=checkpoint;changesOpts={since:last_seq,limit:batch_size,batch_size:batch_size,style:"all_docs",doc_ids:doc_ids,returnDocs:false};if(opts.filter){changesOpts.filter=opts.filter}if(opts.query_params){changesOpts.query_params=opts.query_params}getChanges()})["catch"](function(err){abortReplication("getCheckpoint rejected with ",err)})}returnValue.once("cancel",completeReplication);if(typeof opts.onChange==="function"){returnValue.on("change",opts.onChange)}if(typeof opts.complete==="function"){returnValue.once("error",opts.complete);returnValue.once("complete",function(result){opts.complete(null,result)})}if(typeof opts.since==="undefined"){startChanges()}else{writingCheckpoint=true;checkpointer.writeCheckpoint(opts.since).then(function(res){writingCheckpoint=false;if(returnValue.cancelled){completeReplication();return}last_seq=opts.since;startChanges()})["catch"](function(err){writingCheckpoint=false;abortReplication("writeCheckpoint completed with error",err);throw err})}}exports.toPouch=toPouch;function toPouch(db,opts){var PouchConstructor=opts.PouchConstructor;if(typeof db==="string"){return new PouchConstructor(db)}else if(db.then){return db}else{return utils.Promise.resolve(db)}}exports.replicate=replicateWrapper;function replicateWrapper(src,target,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}if(typeof opts==="undefined"){opts={}}if(!opts.complete){opts.complete=callback||function(){}}opts=utils.clone(opts);opts.continuous=opts.continuous||opts.live;opts.PouchConstructor=opts.PouchConstructor||this;var replicateRet=new Replication(opts);toPouch(src,opts).then(function(src){return toPouch(target,opts).then(function(target){return genReplicationId(src,target,opts).then(function(repId){replicate(repId,src,target,opts,replicateRet)})})})["catch"](function(err){replicateRet.emit("error",err);opts.complete(err)});return replicateRet}},{"./utils":25,events:2}],22:[function(require,module,exports){(function(global){"use strict";var PouchDB=require("./constructor");var utils=require("./utils");var Promise=utils.Promise;var EventEmitter=require("events").EventEmitter;PouchDB.adapters={};PouchDB.preferredAdapters=require("./adapters/preferredAdapters.js");PouchDB.prefix="_pouch_";var eventEmitter=new EventEmitter;var eventEmitterMethods=["on","addListener","emit","listeners","once","removeAllListeners","removeListener","setMaxListeners"];eventEmitterMethods.forEach(function(method){PouchDB[method]=eventEmitter[method].bind(eventEmitter)});PouchDB.setMaxListeners(0);PouchDB.parseAdapter=function(name,opts){var match=name.match(/([a-z\-]*):\/\/(.*)/);var adapter,adapterName;if(match){name=/http(s?)/.test(match[1])?match[1]+"://"+match[2]:match[2];adapter=match[1];if(!PouchDB.adapters[adapter].valid()){throw"Invalid adapter"}return{name:name,adapter:match[1]}}var skipIdb="idb"in PouchDB.adapters&&"websql"in PouchDB.adapters&&utils.hasLocalStorage()&&global.localStorage["_pouch__websqldb_"+PouchDB.prefix+name];if(typeof opts!=="undefined"&&opts.db){adapterName="leveldb"}else{for(var i=0;i<PouchDB.preferredAdapters.length;++i){adapterName=PouchDB.preferredAdapters[i];if(adapterName in PouchDB.adapters){if(skipIdb&&adapterName==="idb"){continue}break}}}adapter=PouchDB.adapters[adapterName];if(adapterName&&adapter){var use_prefix="use_prefix"in adapter?adapter.use_prefix:true;return{name:use_prefix?PouchDB.prefix+name:name,adapter:adapterName}}throw"No valid adapter found"};PouchDB.destroy=utils.toPromise(function(name,opts,callback){if(typeof opts==="function"||typeof opts==="undefined"){callback=opts;opts={}}if(name&&typeof name==="object"){opts=name;name=undefined}var backend=PouchDB.parseAdapter(opts.name||name,opts);var dbName=backend.name;var adapter=PouchDB.adapters[backend.adapter];var usePrefix="use_prefix"in adapter?adapter.use_prefix:true;var baseName=usePrefix?dbName.replace(new RegExp("^"+PouchDB.prefix),""):dbName;var fullName=(backend.adapter==="http"||backend.adapter==="https"?"":opts.prefix||"")+dbName;function destroyDb(){adapter.destroy(fullName,opts,function(err,resp){if(err){callback(err)}else{PouchDB.emit("destroyed",name);PouchDB.emit(name,"destroyed");callback(null,resp||{ok:true})}})}var createOpts=utils.extend(true,{},opts,{adapter:backend.adapter});new PouchDB(baseName,createOpts,function(err,db){if(err){return callback(err)}db.get("_local/_pouch_dependentDbs",function(err,localDoc){if(err){if(err.status!==404){return callback(err)}else{return destroyDb()}}var dependentDbs=localDoc.dependentDbs;var deletedMap=Object.keys(dependentDbs).map(function(name){var trueName=usePrefix?name.replace(new RegExp("^"+PouchDB.prefix),""):name;var subOpts=utils.extend(true,opts,{adapter:backend.adapter});return PouchDB.destroy(trueName,subOpts)});Promise.all(deletedMap).then(destroyDb,function(error){callback(error)})})})});PouchDB.allDbs=utils.toPromise(function(callback){var err=new Error("allDbs method removed");err.stats="400";callback(err)});PouchDB.adapter=function(id,obj){if(obj.valid()){PouchDB.adapters[id]=obj}};PouchDB.plugin=function(obj){Object.keys(obj).forEach(function(id){PouchDB.prototype[id]=obj[id]})};PouchDB.defaults=function(defaultOpts){function PouchAlt(name,opts,callback){if(typeof opts==="function"||typeof opts==="undefined"){callback=opts;opts={}}if(name&&typeof name==="object"){opts=name;name=undefined}opts=utils.extend(true,{},defaultOpts,opts);PouchDB.call(this,name,opts,callback)}utils.inherits(PouchAlt,PouchDB);PouchAlt.destroy=utils.toPromise(function(name,opts,callback){if(typeof opts==="function"||typeof opts==="undefined"){callback=opts;opts={}}if(name&&typeof name==="object"){opts=name;name=undefined}opts=utils.extend(true,{},defaultOpts,opts);return PouchDB.destroy(name,opts,callback)});eventEmitterMethods.forEach(function(method){PouchAlt[method]=eventEmitter[method].bind(eventEmitter)});PouchAlt.setMaxListeners(0);PouchAlt.preferredAdapters=PouchDB.preferredAdapters.slice();Object.keys(PouchDB).forEach(function(key){if(!(key in PouchAlt)){PouchAlt[key]=PouchDB[key]}});return PouchAlt};module.exports=PouchDB}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./adapters/preferredAdapters.js":7,"./constructor":10,"./utils":25,events:2}],23:[function(require,module,exports){"use strict";var utils=require("./utils");var replication=require("./replicate");var replicate=replication.replicate;var EE=require("events").EventEmitter;utils.inherits(Sync,EE);module.exports=sync;function sync(src,target,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}if(typeof opts==="undefined"){opts={}}opts=utils.clone(opts);opts.PouchConstructor=opts.PouchConstructor||this;src=replication.toPouch(src,opts);target=replication.toPouch(target,opts);return new Sync(src,target,opts,callback)}function Sync(src,target,opts,callback){var self=this;this.canceled=false;var onChange,complete;if("onChange"in opts){onChange=opts.onChange;delete opts.onChange}if(typeof callback==="function"&&!opts.complete){complete=callback}else if("complete"in opts){complete=opts.complete;delete opts.complete}this.push=replicate(src,target,opts);this.pull=replicate(target,src,opts);var emittedCancel=false;function onCancel(data){if(!emittedCancel){emittedCancel=true;self.emit("cancel",data)}}function pullChange(change){self.emit("change",{direction:"pull",change:change})}function pushChange(change){self.emit("change",{direction:"push",change:change})}var listeners={};var removed={};function removeAll(type){return function(event,func){var isChange=event==="change"&&(func===pullChange||func===pushChange);var isCancel=event==="cancel"&&func===onCancel;var isOtherEvent=event in listeners&&func===listeners[event];if(isChange||isCancel||isOtherEvent){if(!(event in removed)){removed[event]={}}removed[event][type]=true;if(Object.keys(removed[event]).length===2){self.removeAllListeners(event)}}}}this.on("newListener",function(event){if(event==="change"){self.pull.on("change",pullChange);self.push.on("change",pushChange)}else if(event==="cancel"){self.pull.on("cancel",onCancel);self.push.on("cancel",onCancel)}else if(event!=="error"&&event!=="removeListener"&&event!=="complete"&&!(event in listeners)){listeners[event]=function(e){self.emit(event,e)};self.pull.on(event,listeners[event]);self.push.on(event,listeners[event])}});this.on("removeListener",function(event){if(event==="change"){self.pull.removeListener("change",pullChange);self.push.removeListener("change",pushChange)}else if(event==="cancel"){self.pull.removeListener("cancel",onCancel);self.push.removeListener("cancel",onCancel)}else if(event in listeners){if(typeof listeners[event]==="function"){self.pull.removeListener(event,listeners[event]);self.push.removeListener(event,listeners[event]);delete listeners[event]}}});this.pull.on("removeListener",removeAll("pull"));this.push.on("removeListener",removeAll("push"));var promise=utils.Promise.all([this.push,this.pull]).then(function(resp){var out={push:resp[0],pull:resp[1]};self.emit("complete",out);if(complete){complete(null,out)}self.removeAllListeners();return out},function(err){self.cancel();self.emit("error",err);if(complete){complete(err)}self.removeAllListeners();throw err});this.then=function(success,err){return promise.then(success,err)};this["catch"]=function(err){return promise["catch"](err)}}Sync.prototype.cancel=function(){if(!this.canceled){this.canceled=true;this.push.cancel();this.pull.cancel()}}},{"./replicate":21,"./utils":25,events:2}],24:[function(require,module,exports){"use strict";module.exports=TaskQueue;function TaskQueue(){this.isReady=false;this.failed=false;this.queue=[]}TaskQueue.prototype.execute=function(){var d,func;if(this.failed){while(d=this.queue.shift()){if(typeof d==="function"){d(this.failed);continue}func=d.parameters[d.parameters.length-1];if(typeof func==="function"){func(this.failed)}else if(d.name==="changes"&&typeof func.complete==="function"){func.complete(this.failed)}}}else if(this.isReady){while(d=this.queue.shift()){if(typeof d==="function"){d()}else{d.task=this.db[d.name].apply(this.db,d.parameters)}}}};TaskQueue.prototype.fail=function(err){this.failed=err;this.execute()};TaskQueue.prototype.ready=function(db){if(this.failed){return false}else if(arguments.length===0){return this.isReady}this.isReady=db?true:false;this.db=db;this.execute()};TaskQueue.prototype.addTask=function(name,parameters){if(typeof name==="function"){this.queue.push(name);if(this.failed){this.execute()}}else{var task={name:name,parameters:parameters};this.queue.push(task);if(this.failed){this.execute()}return task}}},{}],25:[function(require,module,exports){(function(process,global){var merge=require("./merge");exports.extend=require("pouchdb-extend");exports.ajax=require("./deps/ajax");exports.createBlob=require("./deps/blob");exports.uuid=require("./deps/uuid");exports.getArguments=require("argsarray");var buffer=require("./deps/buffer");var errors=require("./deps/errors");var EventEmitter=require("events").EventEmitter;var collections=require("./deps/collections");exports.Map=collections.Map;exports.Set=collections.Set;if(typeof global.Promise==="function"){exports.Promise=global.Promise}else{exports.Promise=require("bluebird")}var Promise=exports.Promise;function toObject(array){var obj={};array.forEach(function(item){obj[item]=true});return obj}var reservedWords=toObject(["_id","_rev","_attachments","_deleted","_revisions","_revs_info","_conflicts","_deleted_conflicts","_local_seq","_rev_tree","_replication_id","_replication_state","_replication_state_time","_replication_state_reason","_replication_stats"]);var dataWords=toObject(["_attachments","_replication_id","_replication_state","_replication_state_time","_replication_state_reason","_replication_stats"]);exports.clone=function(obj){return exports.extend(true,{},obj)};exports.inherits=require("inherits");exports.invalidIdError=function(id){var err;if(!id){err=new TypeError(errors.MISSING_ID.message);err.status=412}else if(typeof id!=="string"){err=new TypeError(errors.INVALID_ID.message);err.status=400}else if(/^_/.test(id)&&!/^_(design|local)/.test(id)){err=new TypeError(errors.RESERVED_ID.message);err.status=400}if(err){throw err}};function isChromeApp(){return typeof chrome!=="undefined"&&typeof chrome.storage!=="undefined"&&typeof chrome.storage.local!=="undefined"}exports.call=exports.getArguments(function(args){if(!args.length){return}var fun=args.shift();if(typeof fun==="function"){fun.apply(this,args)}});exports.isLocalId=function(id){return/^_local/.test(id)};exports.isDeleted=function(metadata,rev){if(!rev){rev=merge.winningRev(metadata)}var dashIndex=rev.indexOf("-");if(dashIndex!==-1){rev=rev.substring(dashIndex+1)}var deleted=false;merge.traverseRevTree(metadata.rev_tree,function(isLeaf,pos,id,acc,opts){if(id===rev){deleted=!!opts.deleted}});return deleted};exports.filterChange=function(opts){return function(change){var req={};var hasFilter=opts.filter&&typeof opts.filter==="function";req.query=opts.query_params;if(opts.filter&&hasFilter&&!opts.filter.call(this,change.doc,req)){return false}if(opts.doc_ids&&opts.doc_ids.indexOf(change.id)===-1){return false}if(!opts.include_docs){delete change.doc}else{for(var att in change.doc._attachments){if(change.doc._attachments.hasOwnProperty(att)){change.doc._attachments[att].stub=true}}}return true}};exports.parseDoc=function(doc,newEdits){var nRevNum;var newRevId;var revInfo;var error;var opts={status:"available"};if(doc._deleted){opts.deleted=true}if(newEdits){if(!doc._id){doc._id=exports.uuid()}newRevId=exports.uuid(32,16).toLowerCase();if(doc._rev){revInfo=/^(\d+)-(.+)$/.exec(doc._rev);if(!revInfo){var err=new TypeError("invalid value for property '_rev'");err.status=400}doc._rev_tree=[{pos:parseInt(revInfo[1],10),ids:[revInfo[2],{status:"missing"},[[newRevId,opts,[]]]]}];nRevNum=parseInt(revInfo[1],10)+1}else{doc._rev_tree=[{pos:1,ids:[newRevId,opts,[]]}];nRevNum=1}}else{if(doc._revisions){doc._rev_tree=[{pos:doc._revisions.start-doc._revisions.ids.length+1,ids:doc._revisions.ids.reduce(function(acc,x){if(acc===null){return[x,opts,[]]}else{return[x,{status:"missing"},[acc]]}},null)}];nRevNum=doc._revisions.start;newRevId=doc._revisions.ids[0]}if(!doc._rev_tree){revInfo=/^(\d+)-(.+)$/.exec(doc._rev);if(!revInfo){error=new TypeError(errors.BAD_ARG.message);error.status=errors.BAD_ARG.status;throw error}nRevNum=parseInt(revInfo[1],10);newRevId=revInfo[2];doc._rev_tree=[{pos:parseInt(revInfo[1],10),ids:[revInfo[2],opts,[]]}]}}exports.invalidIdError(doc._id);doc._rev=[nRevNum,newRevId].join("-");var result={metadata:{},data:{}};for(var key in doc){if(doc.hasOwnProperty(key)){var specialKey=key[0]==="_";if(specialKey&&!reservedWords[key]){error=new Error(errors.DOC_VALIDATION.message+": "+key);error.status=errors.DOC_VALIDATION.status;throw error}else if(specialKey&&!dataWords[key]){result.metadata[key.slice(1)]=doc[key]}else{result.data[key]=doc[key]}}}return result};exports.isCordova=function(){return typeof cordova!=="undefined"||typeof PhoneGap!=="undefined"||typeof phonegap!=="undefined"};exports.hasLocalStorage=function(){if(isChromeApp()){return false}try{return global.localStorage}catch(e){return false}};exports.Changes=Changes;exports.inherits(Changes,EventEmitter);function Changes(){if(!(this instanceof Changes)){return new Changes}var self=this;EventEmitter.call(this);this.isChrome=isChromeApp();this.listeners={};this.hasLocal=false;if(!this.isChrome){this.hasLocal=exports.hasLocalStorage()}if(this.isChrome){chrome.storage.onChanged.addListener(function(e){if(e.db_name!=null){self.emit(e.dbName.newValue)}})}else if(this.hasLocal){if(global.addEventListener){global.addEventListener("storage",function(e){self.emit(e.key)})}else{global.attachEvent("storage",function(e){self.emit(e.key)})}}}Changes.prototype.addListener=function(dbName,id,db,opts){if(this.listeners[id]){return}function eventFunction(){db.changes({include_docs:opts.include_docs,conflicts:opts.conflicts,continuous:false,descending:false,filter:opts.filter,view:opts.view,since:opts.since,query_params:opts.query_params,onChange:function(c){if(c.seq>opts.since&&!opts.cancelled){opts.since=c.seq;exports.call(opts.onChange,c)}}})}this.listeners[id]=eventFunction;this.on(dbName,eventFunction)};Changes.prototype.removeListener=function(dbName,id){if(!(id in this.listeners)){return}EventEmitter.prototype.removeListener.call(this,dbName,this.listeners[id])};Changes.prototype.notifyLocalWindows=function(dbName){if(this.isChrome){chrome.storage.local.set({dbName:dbName})}else if(this.hasLocal){localStorage[dbName]=localStorage[dbName]==="a"?"b":"a"}};Changes.prototype.notify=function(dbName){this.emit(dbName);this.notifyLocalWindows(dbName)};if(!process.browser||!("atob"in global)){exports.atob=function(str){var base64=new buffer(str,"base64");if(base64.toString("base64")!==str){throw"Cannot base64 encode full string"}return base64.toString("binary")}}else{exports.atob=function(str){return atob(str)}}if(!process.browser||!("btoa"in global)){exports.btoa=function(str){return new buffer(str,"binary").toString("base64")}}else{exports.btoa=function(str){return btoa(str)}}exports.fixBinary=function(bin){if(!process.browser){return bin}var length=bin.length;var buf=new ArrayBuffer(length);var arr=new Uint8Array(buf);for(var i=0;i<length;i++){arr[i]=bin.charCodeAt(i)}return buf};exports.once=function(fun){var called=false;return exports.getArguments(function(args){if(called){if(typeof console.trace==="function"){console.trace()}throw new Error("once called more than once")}else{called=true;fun.apply(this,args)}})};exports.toPromise=function(func){return exports.getArguments(function(args){var self=this;var tempCB=typeof args[args.length-1]==="function"?args.pop():false;var usedCB;if(tempCB){usedCB=function(err,resp){process.nextTick(function(){tempCB(err,resp)})}}var promise=new Promise(function(fulfill,reject){var resp;try{var callback=exports.once(function(err,mesg){if(err){reject(err)}else{fulfill(mesg)}});args.push(callback);resp=func.apply(self,args);if(resp&&typeof resp.then==="function"){fulfill(resp)}}catch(e){reject(e)}});if(usedCB){promise.then(function(result){usedCB(null,result)},usedCB)}promise.cancel=function(){return this};return promise})};exports.adapterFun=function(name,callback){return exports.toPromise(exports.getArguments(function(args){if(this._closed){return Promise.reject(new Error("database is closed"))}var self=this;if(!this.taskqueue.isReady){return new exports.Promise(function(fulfill,reject){self.taskqueue.addTask(function(failed){if(failed){reject(failed)}else{fulfill(self[name].apply(self,args))}})})}return callback.apply(this,args)}))};exports.arrayBufferToBinaryString=function(buffer){var binary="";var bytes=new Uint8Array(buffer);var length=bytes.byteLength;for(var i=0;i<length;i++){binary+=String.fromCharCode(bytes[i])}return binary};exports.cancellableFun=function(fun,self,opts){opts=opts?exports.clone(true,{},opts):{};var emitter=new EventEmitter;var oldComplete=opts.complete||function(){};var complete=opts.complete=exports.once(function(err,resp){if(err){oldComplete(err)}else{emitter.emit("end",resp);oldComplete(null,resp)}emitter.removeAllListeners()});var oldOnChange=opts.onChange||function(){};var lastChange=0;self.on("destroyed",function(){emitter.removeAllListeners()});opts.onChange=function(change){oldOnChange(change);if(change.seq<=lastChange){return}lastChange=change.seq;emitter.emit("change",change);if(change.deleted){emitter.emit("delete",change)}else if(change.changes.length===1&&change.changes[0].rev.slice(0,1)==="1-"){emitter.emit("create",change)}else{emitter.emit("update",change)}};var promise=new Promise(function(fulfill,reject){opts.complete=function(err,res){if(err){reject(err)}else{fulfill(res)}}});promise.then(function(result){complete(null,result)},complete);promise.cancel=function(){promise.isCancelled=true;if(self.taskqueue.isReady){opts.complete(null,{status:"cancelled"})}};if(!self.taskqueue.isReady){self.taskqueue.addTask(function(){if(promise.isCancelled){opts.complete(null,{status:"cancelled"})}else{fun(self,opts,promise)}})}else{fun(self,opts,promise)}promise.on=emitter.on.bind(emitter);promise.once=emitter.once.bind(emitter);promise.addListener=emitter.addListener.bind(emitter);promise.removeListener=emitter.removeListener.bind(emitter);promise.removeAllListeners=emitter.removeAllListeners.bind(emitter);promise.setMaxListeners=emitter.setMaxListeners.bind(emitter);promise.listeners=emitter.listeners.bind(emitter);promise.emit=emitter.emit.bind(emitter);return promise};exports.MD5=exports.toPromise(require("./deps/md5"))}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./deps/ajax":11,"./deps/blob":12,"./deps/buffer":1,"./deps/collections":13,"./deps/errors":14,"./deps/md5":15,"./deps/uuid":17,"./merge":20,_process:3,argsarray:27,bluebird:32,events:2,inherits:28,"pouchdb-extend":47}],26:[function(require,module,exports){module.exports="3.0.6"},{}],27:[function(require,module,exports){"use strict";module.exports=argsArray;function argsArray(fun){return function(){var len=arguments.length;if(len){var args=[];var i=-1;while(++i<len){args[i]=arguments[i]}return fun.call(this,args)}else{return fun.call(this,[])}}}},{}],28:[function(require,module,exports){if(typeof Object.create==="function"){module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:false,writable:true,configurable:true}})}}else{module.exports=function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype;ctor.prototype=new TempCtor;ctor.prototype.constructor=ctor}}},{}],29:[function(require,module,exports){"use strict";module.exports=INTERNAL;function INTERNAL(){}},{}],30:[function(require,module,exports){"use strict";var Promise=require("./promise");var reject=require("./reject");var resolve=require("./resolve");var INTERNAL=require("./INTERNAL");var handlers=require("./handlers");module.exports=all;function all(iterable){if(Object.prototype.toString.call(iterable)!=="[object Array]"){return reject(new TypeError("must be an array"))}var len=iterable.length;var called=false;if(!len){return resolve([])}var values=new Array(len);var resolved=0;var i=-1;var promise=new Promise(INTERNAL);while(++i<len){allResolver(iterable[i],i)}return promise;function allResolver(value,i){resolve(value).then(resolveFromAll,function(error){if(!called){called=true;handlers.reject(promise,error)}});function resolveFromAll(outValue){values[i]=outValue;if(++resolved===len&!called){called=true;handlers.resolve(promise,values)}}}}},{"./INTERNAL":29,"./handlers":31,"./promise":33,"./reject":36,"./resolve":37}],31:[function(require,module,exports){"use strict";var tryCatch=require("./tryCatch");var resolveThenable=require("./resolveThenable");var states=require("./states");exports.resolve=function(self,value){var result=tryCatch(getThen,value);if(result.status==="error"){return exports.reject(self,result.value)}var thenable=result.value;if(thenable){resolveThenable.safely(self,thenable)}else{self.state=states.FULFILLED;self.outcome=value;var i=-1;var len=self.queue.length;while(++i<len){self.queue[i].callFulfilled(value)}}return self};exports.reject=function(self,error){self.state=states.REJECTED;self.outcome=error;var i=-1;var len=self.queue.length;while(++i<len){self.queue[i].callRejected(error)}return self};function getThen(obj){var then=obj&&obj.then;if(obj&&typeof obj==="object"&&typeof then==="function"){return function appyThen(){then.apply(obj,arguments)}}}},{"./resolveThenable":38,"./states":39,"./tryCatch":40}],32:[function(require,module,exports){module.exports=exports=require("./promise");exports.resolve=require("./resolve");exports.reject=require("./reject");exports.all=require("./all");exports.race=require("./race")},{"./all":30,"./promise":33,"./race":35,"./reject":36,"./resolve":37}],33:[function(require,module,exports){"use strict";var unwrap=require("./unwrap");var INTERNAL=require("./INTERNAL");var resolveThenable=require("./resolveThenable");var states=require("./states");var QueueItem=require("./queueItem");module.exports=Promise;function Promise(resolver){if(!(this instanceof Promise)){return new Promise(resolver)}if(typeof resolver!=="function"){throw new TypeError("reslover must be a function")}this.state=states.PENDING;this.queue=[];this.outcome=void 0;if(resolver!==INTERNAL){resolveThenable.safely(this,resolver)}}Promise.prototype["catch"]=function(onRejected){return this.then(null,onRejected)};Promise.prototype.then=function(onFulfilled,onRejected){if(typeof onFulfilled!=="function"&&this.state===states.FULFILLED||typeof onRejected!=="function"&&this.state===states.REJECTED){return this}var promise=new Promise(INTERNAL);if(this.state!==states.PENDING){var resolver=this.state===states.FULFILLED?onFulfilled:onRejected;unwrap(promise,resolver,this.outcome)}else{this.queue.push(new QueueItem(promise,onFulfilled,onRejected))}return promise}},{"./INTERNAL":29,"./queueItem":34,"./resolveThenable":38,"./states":39,"./unwrap":41}],34:[function(require,module,exports){"use strict";var handlers=require("./handlers");var unwrap=require("./unwrap");module.exports=QueueItem;function QueueItem(promise,onFulfilled,onRejected){this.promise=promise;if(typeof onFulfilled==="function"){this.onFulfilled=onFulfilled;this.callFulfilled=this.otherCallFulfilled}if(typeof onRejected==="function"){this.onRejected=onRejected;this.callRejected=this.otherCallRejected}}QueueItem.prototype.callFulfilled=function(value){handlers.resolve(this.promise,value)};QueueItem.prototype.otherCallFulfilled=function(value){unwrap(this.promise,this.onFulfilled,value)};QueueItem.prototype.callRejected=function(value){handlers.reject(this.promise,value)};QueueItem.prototype.otherCallRejected=function(value){unwrap(this.promise,this.onRejected,value)}},{"./handlers":31,"./unwrap":41}],35:[function(require,module,exports){"use strict";var Promise=require("./promise");var reject=require("./reject");var resolve=require("./resolve");var INTERNAL=require("./INTERNAL");var handlers=require("./handlers");module.exports=race;function race(iterable){if(Object.prototype.toString.call(iterable)!=="[object Array]"){return reject(new TypeError("must be an array"))}var len=iterable.length;var called=false;if(!len){return resolve([])}var resolved=0;var i=-1;var promise=new Promise(INTERNAL);while(++i<len){resolver(iterable[i])}return promise;function resolver(value){resolve(value).then(function(response){if(!called){called=true;handlers.resolve(promise,response)}},function(error){if(!called){called=true;handlers.reject(promise,error)}})}}},{"./INTERNAL":29,"./handlers":31,"./promise":33,"./reject":36,"./resolve":37}],36:[function(require,module,exports){"use strict";var Promise=require("./promise");var INTERNAL=require("./INTERNAL");var handlers=require("./handlers");module.exports=reject;function reject(reason){var promise=new Promise(INTERNAL);return handlers.reject(promise,reason)}},{"./INTERNAL":29,"./handlers":31,"./promise":33}],37:[function(require,module,exports){"use strict";var Promise=require("./promise");var INTERNAL=require("./INTERNAL");var handlers=require("./handlers");module.exports=resolve;var FALSE=handlers.resolve(new Promise(INTERNAL),false);var NULL=handlers.resolve(new Promise(INTERNAL),null);var UNDEFINED=handlers.resolve(new Promise(INTERNAL),void 0);var ZERO=handlers.resolve(new Promise(INTERNAL),0);var EMPTYSTRING=handlers.resolve(new Promise(INTERNAL),"");function resolve(value){if(value){if(value instanceof Promise){return value}return handlers.resolve(new Promise(INTERNAL),value)}var valueType=typeof value;switch(valueType){case"boolean":return FALSE;case"undefined":return UNDEFINED;case"object":return NULL;case"number":return ZERO;case"string":return EMPTYSTRING}}},{"./INTERNAL":29,"./handlers":31,"./promise":33}],38:[function(require,module,exports){"use strict";var handlers=require("./handlers");var tryCatch=require("./tryCatch"); | |
function safelyResolveThenable(self,thenable){var called=false;function onError(value){if(called){return}called=true;handlers.reject(self,value)}function onSuccess(value){if(called){return}called=true;handlers.resolve(self,value)}function tryToUnwrap(){thenable(onSuccess,onError)}var result=tryCatch(tryToUnwrap);if(result.status==="error"){onError(result.value)}}exports.safely=safelyResolveThenable},{"./handlers":31,"./tryCatch":40}],39:[function(require,module,exports){exports.REJECTED=["REJECTED"];exports.FULFILLED=["FULFILLED"];exports.PENDING=["PENDING"]},{}],40:[function(require,module,exports){"use strict";module.exports=tryCatch;function tryCatch(func,value){var out={};try{out.value=func(value);out.status="success"}catch(e){out.status="error";out.value=e}return out}},{}],41:[function(require,module,exports){"use strict";var immediate=require("immediate");var handlers=require("./handlers");module.exports=unwrap;function unwrap(promise,func,value){immediate(function(){var returnValue;try{returnValue=func(value)}catch(e){return handlers.reject(promise,e)}if(returnValue===promise){handlers.reject(promise,new TypeError("Cannot resolve promise with itself"))}else{handlers.resolve(promise,returnValue)}})}},{"./handlers":31,immediate:42}],42:[function(require,module,exports){"use strict";var types=[require("./nextTick"),require("./mutation.js"),require("./messageChannel"),require("./stateChange"),require("./timeout")];var draining;var queue=[];function drainQueue(){draining=true;var i,oldQueue;var len=queue.length;while(len){oldQueue=queue;queue=[];i=-1;while(++i<len){oldQueue[i]()}len=queue.length}draining=false}var scheduleDrain;var i=-1;var len=types.length;while(++i<len){if(types[i]&&types[i].test&&types[i].test()){scheduleDrain=types[i].install(drainQueue);break}}module.exports=immediate;function immediate(task){if(queue.push(task)===1&&!draining){scheduleDrain()}}},{"./messageChannel":43,"./mutation.js":44,"./nextTick":1,"./stateChange":45,"./timeout":46}],43:[function(require,module,exports){(function(global){"use strict";exports.test=function(){if(global.setImmediate){return false}return typeof global.MessageChannel!=="undefined"};exports.install=function(func){var channel=new global.MessageChannel;channel.port1.onmessage=func;return function(){channel.port2.postMessage(0)}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],44:[function(require,module,exports){(function(global){"use strict";var Mutation=global.MutationObserver||global.WebKitMutationObserver;exports.test=function(){return Mutation};exports.install=function(handle){var called=0;var observer=new Mutation(handle);var element=global.document.createTextNode("");observer.observe(element,{characterData:true});return function(){element.data=called=++called%2}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],45:[function(require,module,exports){(function(global){"use strict";exports.test=function(){return"document"in global&&"onreadystatechange"in global.document.createElement("script")};exports.install=function(handle){return function(){var scriptEl=global.document.createElement("script");scriptEl.onreadystatechange=function(){handle();scriptEl.onreadystatechange=null;scriptEl.parentNode.removeChild(scriptEl);scriptEl=null};global.document.documentElement.appendChild(scriptEl);return handle}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{}],46:[function(require,module,exports){"use strict";exports.test=function(){return true};exports.install=function(t){return function(){setTimeout(t,0)}}},{}],47:[function(require,module,exports){"use strict";var class2type={};var types=["Boolean","Number","String","Function","Array","Date","RegExp","Object","Error"];for(var i=0;i<types.length;i++){var typename=types[i];class2type["[object "+typename+"]"]=typename.toLowerCase()}var core_toString=class2type.toString;var core_hasOwn=class2type.hasOwnProperty;function type(obj){if(obj===null){return String(obj)}return typeof obj==="object"||typeof obj==="function"?class2type[core_toString.call(obj)]||"object":typeof obj}function isWindow(obj){return obj!==null&&obj===obj.window}function isPlainObject(obj){if(!obj||type(obj)!=="object"||obj.nodeType||isWindow(obj)){return false}try{if(obj.constructor&&!core_hasOwn.call(obj,"constructor")&&!core_hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return false}}catch(e){return false}var key;for(key in obj){}return key===undefined||core_hasOwn.call(obj,key)}function isFunction(obj){return type(obj)==="function"}var isArray=Array.isArray||function(obj){return type(obj)==="array"};function extend(){var stack=[];var i=-1;var len=arguments.length;var args=new Array(len);while(++i<len){args[i]=arguments[i]}var container={};stack.push({args:args,result:{container:container,key:"key"}});var next;while(next=stack.pop()){extendInner(stack,next.args,next.result)}return container.key}function extendInner(stack,args,result){var options,name,src,copy,copyIsArray,clone,target=args[0]||{},i=1,length=args.length,deep=false,numericStringRegex=/\d+/,optionsIsArray;if(typeof target==="boolean"){deep=target;target=args[1]||{};i=2}if(typeof target!=="object"&&!isFunction(target)){target={}}if(length===i){target=this;--i}for(;i<length;i++){if((options=args[i])!=null){optionsIsArray=isArray(options);for(name in options){if(!(name in Object.prototype)){if(optionsIsArray&&!numericStringRegex.test(name)){continue}src=target[name];copy=options[name];if(target===copy){continue}if(deep&©&&(isPlainObject(copy)||(copyIsArray=isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&isArray(src)?src:[]}else{clone=src&&isPlainObject(src)?src:{}}stack.push({args:[deep,clone,copy],result:{container:target,key:name}})}else if(copy!==undefined){if(!(isArray(options)&&isFunction(copy))){target[name]=copy}}}}}}result.container[result.key]=target}module.exports=extend},{}],48:[function(require,module,exports){"use strict";var upsert=require("./upsert");var utils=require("./utils");var Promise=utils.Promise;module.exports=function(opts){var sourceDB=opts.db;var viewName=opts.viewName;var mapFun=opts.map;var reduceFun=opts.reduce;var temporary=opts.temporary;var viewSignature=mapFun.toString()+(reduceFun&&reduceFun.toString())+"undefined";if(!temporary&&sourceDB._cachedViews){var cachedView=sourceDB._cachedViews[viewSignature];if(cachedView){return Promise.resolve(cachedView)}}return sourceDB.info().then(function(info){var depDbName=info.db_name+"-mrview-"+(temporary?"temp":utils.MD5(viewSignature));function diffFunction(doc){doc.views=doc.views||{};var fullViewName=viewName;if(fullViewName.indexOf("/")===-1){fullViewName=viewName+"/"+viewName}var depDbs=doc.views[fullViewName]=doc.views[fullViewName]||{};if(depDbs[depDbName]){return}depDbs[depDbName]=true;return doc}return upsert(sourceDB,"_local/mrviews",diffFunction).then(function(){return sourceDB.registerDependentDatabase(depDbName).then(function(res){var db=res.db;db.auto_compaction=true;var view={name:depDbName,db:db,sourceDB:sourceDB,adapter:sourceDB.adapter,mapFun:mapFun,reduceFun:reduceFun};return view.db.get("_local/lastSeq")["catch"](function(err){if(err.status!==404){throw err}}).then(function(lastSeqDoc){view.seq=lastSeqDoc?lastSeqDoc.seq:0;if(!temporary){sourceDB._cachedViews=sourceDB._cachedViews||{};sourceDB._cachedViews[viewSignature]=view;view.db.on("destroyed",function(){delete sourceDB._cachedViews[viewSignature]})}return view})})})})}},{"./upsert":54,"./utils":55}],49:[function(require,module,exports){"use strict";module.exports=function(func,emit,sum,log,isArray,toJSON){return eval("'use strict'; ("+func.replace(/;\s*$/,"")+");")}},{}],50:[function(require,module,exports){(function(process){"use strict";var pouchCollate=require("pouchdb-collate");var TaskQueue=require("./taskqueue");var collate=pouchCollate.collate;var toIndexableString=pouchCollate.toIndexableString;var normalizeKey=pouchCollate.normalizeKey;var createView=require("./create-view");var evalFunc=require("./evalfunc");var log;if(typeof console!=="undefined"&&typeof console.log==="function"){log=Function.prototype.bind.call(console.log,console)}else{log=function(){}}var utils=require("./utils");var Promise=utils.Promise;var mainQueue=new TaskQueue;var tempViewQueue=new TaskQueue;var CHANGES_BATCH_SIZE=50;function parseViewName(name){return name.indexOf("/")===-1?[name,name]:name.split("/")}function tryCode(db,fun,args){try{return{output:fun.apply(null,args)}}catch(e){db.emit("error",e);return{error:e}}}function sortByKeyThenValue(x,y){var keyCompare=collate(x.key,y.key);return keyCompare!==0?keyCompare:collate(x.value,y.value)}function sliceResults(results,limit,skip){skip=skip||0;if(typeof limit==="number"){return results.slice(skip,limit+skip)}else if(skip>0){return results.slice(skip)}return results}function createBuiltInError(name){var error=new Error("builtin "+name+" function requires map values to be numbers"+" or number arrays");error.name="invalid_value";error.status=500;return error}function sum(values){var result=0;for(var i=0,len=values.length;i<len;i++){var num=values[i];if(typeof num!=="number"){if(Array.isArray(num)){result=typeof result==="number"?[result]:result;for(var j=0,jLen=num.length;j<jLen;j++){var jNum=num[j];if(typeof jNum!=="number"){throw createBuiltInError("_sum")}else if(typeof result[j]==="undefined"){result.push(jNum)}else{result[j]+=jNum}}}else{throw createBuiltInError("_sum")}}else if(typeof result==="number"){result+=num}else{result[0]+=num}}return result}var builtInReduce={_sum:function(keys,values){return sum(values)},_count:function(keys,values){return values.length},_stats:function(keys,values){function sumsqr(values){var _sumsqr=0;for(var i=0,len=values.length;i<len;i++){var num=values[i];_sumsqr+=num*num}return _sumsqr}return{sum:sum(values),min:Math.min.apply(null,values),max:Math.max.apply(null,values),count:values.length,sumsqr:sumsqr(values)}}};function addHttpParam(paramName,opts,params,asJson){var val=opts[paramName];if(typeof val!=="undefined"){if(asJson){val=encodeURIComponent(JSON.stringify(val))}params.push(paramName+"="+val)}}function checkQueryParseError(options,fun){var startkeyName=options.descending?"endkey":"startkey";var endkeyName=options.descending?"startkey":"endkey";if(typeof options[startkeyName]!=="undefined"&&typeof options[endkeyName]!=="undefined"&&collate(options[startkeyName],options[endkeyName])>0){throw new QueryParseError("No rows can match your key range, reverse your "+"start_key and end_key or set {descending : true}")}else if(fun.reduce&&options.reduce!==false){if(options.include_docs){throw new QueryParseError("{include_docs:true} is invalid for reduce")}else if(options.keys&&options.keys.length>1&&!options.group&&!options.group_level){throw new QueryParseError("Multi-key fetches for reduce views must use {group: true}")}}if(options.group_level){if(typeof options.group_level!=="number"){throw new QueryParseError('Invalid value for integer: "'+options.group_level+'"')}if(options.group_level<0){throw new QueryParseError("Invalid value for positive integer: "+'"'+options.group_level+'"')}}}function httpQuery(db,fun,opts){var params=[];var body;var method="GET";addHttpParam("reduce",opts,params);addHttpParam("include_docs",opts,params);addHttpParam("limit",opts,params);addHttpParam("descending",opts,params);addHttpParam("group",opts,params);addHttpParam("group_level",opts,params);addHttpParam("skip",opts,params);addHttpParam("stale",opts,params);addHttpParam("startkey",opts,params,true);addHttpParam("endkey",opts,params,true);addHttpParam("inclusive_end",opts,params);addHttpParam("key",opts,params,true);params=params.join("&");params=params===""?"":"?"+params;if(typeof opts.keys!=="undefined"){var MAX_URL_LENGTH=2e3;var keysAsString="keys="+encodeURIComponent(JSON.stringify(opts.keys));if(keysAsString.length+params.length+1<=MAX_URL_LENGTH){params+=(params[0]==="?"?"&":"?")+keysAsString}else{method="POST";if(typeof fun==="string"){body=JSON.stringify({keys:opts.keys})}else{fun.keys=opts.keys}}}if(typeof fun==="string"){var parts=parseViewName(fun);return db.request({method:method,url:"_design/"+parts[0]+"/_view/"+parts[1]+params,body:body})}body=body||{};Object.keys(fun).forEach(function(key){if(Array.isArray(fun[key])){body[key]=fun[key]}else{body[key]=fun[key].toString()}});return db.request({method:"POST",url:"_temp_view"+params,body:body})}function defaultsTo(value){return function(reason){if(reason.status===404){return value}else{throw reason}}}function getDocsToPersist(docId,view,docIdsToEmits){var metaDocId="_local/doc_"+docId;return view.db.get(metaDocId)["catch"](defaultsTo({_id:metaDocId,keys:[]})).then(function(metaDoc){return Promise.resolve().then(function(){if(metaDoc.keys.length){return view.db.allDocs({keys:metaDoc.keys,include_docs:true})}return{rows:[]}}).then(function(res){var kvDocs=res.rows.map(function(row){return row.doc}).filter(function(row){return row});var indexableKeysToKeyValues=docIdsToEmits[docId];var oldKeysMap={};kvDocs.forEach(function(kvDoc){oldKeysMap[kvDoc._id]=true;kvDoc._deleted=!indexableKeysToKeyValues[kvDoc._id];if(!kvDoc._deleted){var keyValue=indexableKeysToKeyValues[kvDoc._id];if("value"in keyValue){kvDoc.value=keyValue.value}}});var newKeys=Object.keys(indexableKeysToKeyValues);newKeys.forEach(function(key){if(!oldKeysMap[key]){var kvDoc={_id:key};var keyValue=indexableKeysToKeyValues[key];if("value"in keyValue){kvDoc.value=keyValue.value}kvDocs.push(kvDoc)}});metaDoc.keys=utils.uniq(newKeys.concat(metaDoc.keys));kvDocs.splice(0,0,metaDoc);return kvDocs})})}function saveKeyValues(view,docIdsToEmits,seq){var seqDocId="_local/lastSeq";return view.db.get(seqDocId)["catch"](defaultsTo({_id:seqDocId,seq:0})).then(function(lastSeqDoc){var docIds=Object.keys(docIdsToEmits);return Promise.all(docIds.map(function(docId){return getDocsToPersist(docId,view,docIdsToEmits)})).then(function(listOfDocsToPersist){var docsToPersist=[];listOfDocsToPersist.forEach(function(docList){docsToPersist=docsToPersist.concat(docList)});lastSeqDoc.seq=seq;docsToPersist.push(lastSeqDoc);return view.db.bulkDocs({docs:docsToPersist})})})}var updateView=utils.sequentialize(mainQueue,function(view){var mapResults;var doc;function emit(key,value){var output={id:doc._id,key:normalizeKey(key)};if(typeof value!=="undefined"&&value!==null){output.value=normalizeKey(value)}mapResults.push(output)}var mapFun;if(typeof view.mapFun==="function"&&view.mapFun.length===2){var origMap=view.mapFun;mapFun=function(doc){return origMap(doc,emit)}}else{mapFun=evalFunc(view.mapFun.toString(),emit,sum,log,Array.isArray,JSON.parse)}var currentSeq=view.seq||0;function processChange(docIdsToEmits,seq){return function(){return saveKeyValues(view,docIdsToEmits,seq)}}var queue=new TaskQueue;return new Promise(function(resolve,reject){function complete(){queue.finish().then(function(){view.seq=currentSeq;resolve()})}function processNextBatch(){view.sourceDB.changes({conflicts:true,include_docs:true,since:currentSeq,limit:CHANGES_BATCH_SIZE}).on("complete",function(response){var results=response.results;if(!results.length){return complete()}var docIdsToEmits={};for(var i=0,l=results.length;i<l;i++){var change=results[i];if(change.doc._id[0]!=="_"){mapResults=[];doc=change.doc;if(!doc._deleted){tryCode(view.sourceDB,mapFun,[doc])}mapResults.sort(sortByKeyThenValue);var indexableKeysToKeyValues={};var lastKey;for(var j=0,jl=mapResults.length;j<jl;j++){var obj=mapResults[j];var complexKey=[obj.key,obj.id];if(obj.key===lastKey){complexKey.push(j)}var indexableKey=toIndexableString(complexKey);indexableKeysToKeyValues[indexableKey]=obj;lastKey=obj.key}docIdsToEmits[change.doc._id]=indexableKeysToKeyValues}currentSeq=change.seq}queue.add(processChange(docIdsToEmits,currentSeq));if(results.length<CHANGES_BATCH_SIZE){return complete()}return processNextBatch()}).on("error",onError);function onError(err){reject(err)}}processNextBatch()})});function reduceView(view,results,options){if(options.group_level===0){delete options.group_level}var shouldGroup=options.group||options.group_level;var reduceFun;if(builtInReduce[view.reduceFun]){reduceFun=builtInReduce[view.reduceFun]}else{reduceFun=evalFunc(view.reduceFun.toString(),null,sum,log,Array.isArray,JSON.parse)}var groups=[];var lvl=options.group_level;results.forEach(function(e){var last=groups[groups.length-1];var key=shouldGroup?e.key:null;if(shouldGroup&&Array.isArray(key)&&typeof lvl==="number"){key=key.length>lvl?key.slice(0,lvl):key}if(last&&collate(last.key[0][0],key)===0){last.key.push([key,e.id]);last.value.push(e.value);return}groups.push({key:[[key,e.id]],value:[e.value]})});for(var i=0,len=groups.length;i<len;i++){var e=groups[i];var reduceTry=tryCode(view.sourceDB,reduceFun,[e.key,e.value,false]);e.value=reduceTry.error?null:reduceTry.output;e.key=e.key[0][0]}return{rows:sliceResults(groups,options.limit,options.skip)}}var queryView=utils.sequentialize(mainQueue,function(view,opts){var totalRows;var shouldReduce=view.reduceFun&&opts.reduce!==false;var skip=opts.skip||0;if(typeof opts.keys!=="undefined"&&!opts.keys.length){opts.limit=0;delete opts.keys}function fetchFromView(viewOpts){viewOpts.include_docs=true;return view.db.allDocs(viewOpts).then(function(res){totalRows=res.total_rows;return res.rows.map(function(result){if("value"in result.doc&&typeof result.doc.value==="object"&&result.doc.value!==null){var keys=Object.keys(result.doc.value).sort();var expectedKeys=["id","key","value"];if(!(keys<expectedKeys||keys>expectedKeys)){return result.doc.value}}var parsedKeyAndDocId=pouchCollate.parseIndexableString(result.doc._id);return{key:parsedKeyAndDocId[0],id:parsedKeyAndDocId[1],value:"value"in result.doc?result.doc.value:null}})})}function onMapResultsReady(results){var res;if(shouldReduce){res=reduceView(view,results,opts)}else{res={total_rows:totalRows,offset:skip,rows:results}}if(opts.include_docs){var getDocsPromises=results.map(function(row){var val=row.value;var docId=val&&typeof val==="object"&&val._id||row.id;return view.sourceDB.get(docId).then(function(joinedDoc){row.doc=joinedDoc},function(){})});return Promise.all(getDocsPromises).then(function(){return res})}else{return res}}var flatten=function(array){return array.reduce(function(prev,cur){return prev.concat(cur)})};if(typeof opts.keys!=="undefined"){var keys=opts.keys;var fetchPromises=keys.map(function(key){var viewOpts={startkey:toIndexableString([key]),endkey:toIndexableString([key,{}])};return fetchFromView(viewOpts)});return Promise.all(fetchPromises).then(flatten).then(onMapResultsReady)}else{var viewOpts={descending:opts.descending};if(typeof opts.startkey!=="undefined"){viewOpts.startkey=opts.descending?toIndexableString([opts.startkey,{}]):toIndexableString([opts.startkey])}if(typeof opts.endkey!=="undefined"){var inclusiveEnd=opts.inclusive_end!==false;if(opts.descending){inclusiveEnd=!inclusiveEnd}viewOpts.endkey=toIndexableString(inclusiveEnd?[opts.endkey,{}]:[opts.endkey])}if(typeof opts.key!=="undefined"){var keyStart=toIndexableString([opts.key]);var keyEnd=toIndexableString([opts.key,{}]);if(viewOpts.descending){viewOpts.endkey=keyStart;viewOpts.startkey=keyEnd}else{viewOpts.startkey=keyStart;viewOpts.endkey=keyEnd}}if(!shouldReduce){if(typeof opts.limit==="number"){viewOpts.limit=opts.limit}viewOpts.skip=skip}return fetchFromView(viewOpts).then(onMapResultsReady)}});function httpViewCleanup(db){return db.request({method:"POST",url:"_view_cleanup"})}var localViewCleanup=utils.sequentialize(mainQueue,function(db){return db.get("_local/mrviews").then(function(metaDoc){var docsToViews={};Object.keys(metaDoc.views).forEach(function(fullViewName){var parts=parseViewName(fullViewName);var designDocName="_design/"+parts[0];var viewName=parts[1];docsToViews[designDocName]=docsToViews[designDocName]||{};docsToViews[designDocName][viewName]=true});var opts={keys:Object.keys(docsToViews),include_docs:true};return db.allDocs(opts).then(function(res){var viewsToStatus={};res.rows.forEach(function(row){var ddocName=row.key.substring(8);Object.keys(docsToViews[row.key]).forEach(function(viewName){var fullViewName=ddocName+"/"+viewName;if(!metaDoc.views[fullViewName]){fullViewName=viewName}var viewDBNames=Object.keys(metaDoc.views[fullViewName]);var statusIsGood=row.doc&&row.doc.views&&row.doc.views[viewName];viewDBNames.forEach(function(viewDBName){viewsToStatus[viewDBName]=viewsToStatus[viewDBName]||statusIsGood})})});var dbsToDelete=Object.keys(viewsToStatus).filter(function(viewDBName){return!viewsToStatus[viewDBName]});var destroyPromises=dbsToDelete.map(function(viewDBName){return db.constructor.destroy(viewDBName,{adapter:db.adapter})});return Promise.all(destroyPromises).then(function(){return{ok:true}})})},defaultsTo({ok:true}))});exports.viewCleanup=utils.callbackify(function(){var db=this;if(db.type()==="http"){return httpViewCleanup(db)}return localViewCleanup(db)});function queryPromised(db,fun,opts){if(db.type()==="http"){return httpQuery(db,fun,opts)}if(typeof fun!=="string"){checkQueryParseError(opts,fun);var createViewOpts={db:db,viewName:"temp_view/temp_view",map:fun.map,reduce:fun.reduce,temporary:true};tempViewQueue.add(function(){return createView(createViewOpts).then(function(view){function cleanup(){return view.db.destroy()}return utils.fin(updateView(view).then(function(){return queryView(view,opts)}),cleanup)})});return tempViewQueue.finish()}else{var fullViewName=fun;var parts=parseViewName(fullViewName);var designDocName=parts[0];var viewName=parts[1];return db.get("_design/"+designDocName).then(function(doc){var fun=doc.views&&doc.views[viewName];if(!fun||typeof fun.map!=="string"){throw new NotFoundError("ddoc "+designDocName+" has no view named "+viewName)}checkQueryParseError(opts,fun);var createViewOpts={db:db,viewName:fullViewName,map:fun.map,reduce:fun.reduce};return createView(createViewOpts).then(function(view){if(opts.stale==="ok"||opts.stale==="update_after"){if(opts.stale==="update_after"){process.nextTick(function(){updateView(view)})}return queryView(view,opts)}else{return updateView(view).then(function(){return queryView(view,opts)})}})})}}exports.query=function(fun,opts,callback){if(typeof opts==="function"){callback=opts;opts={}}opts=utils.extend(true,{},opts);if(typeof fun==="function"){fun={map:fun}}var db=this;var promise=Promise.resolve().then(function(){return queryPromised(db,fun,opts)});utils.promisedCallback(promise,callback);return promise};function QueryParseError(message){this.status=400;this.name="query_parse_error";this.message=message;this.error=true;try{Error.captureStackTrace(this,QueryParseError)}catch(e){}}utils.inherits(QueryParseError,Error);function NotFoundError(message){this.status=404;this.name="not_found";this.message=message;this.error=true;try{Error.captureStackTrace(this,NotFoundError)}catch(e){}}utils.inherits(NotFoundError,Error)}).call(this,require("_process"))},{"./create-view":48,"./evalfunc":49,"./taskqueue":53,"./utils":55,_process:3,"pouchdb-collate":51}],51:[function(require,module,exports){"use strict";var MIN_MAGNITUDE=-324;var MAGNITUDE_DIGITS=3;var SEP="";var utils=require("./utils");exports.collate=function(a,b){if(a===b){return 0}a=exports.normalizeKey(a);b=exports.normalizeKey(b);var ai=collationIndex(a);var bi=collationIndex(b);if(ai-bi!==0){return ai-bi}if(a===null){return 0}switch(typeof a){case"number":return a-b;case"boolean":return a===b?0:a<b?-1:1;case"string":return stringCollate(a,b)}return Array.isArray(a)?arrayCollate(a,b):objectCollate(a,b)};exports.normalizeKey=function(key){switch(typeof key){case"undefined":return null;case"number":if(key===Infinity||key===-Infinity||isNaN(key)){return null}return key;case"object":var origKey=key;if(Array.isArray(key)){var len=key.length;key=new Array(len);for(var i=0;i<len;i++){key[i]=exports.normalizeKey(origKey[i])}}else if(key instanceof Date){return key.toJSON()}else if(key!==null){key={};for(var k in origKey){if(origKey.hasOwnProperty(k)){var val=origKey[k];if(typeof val!=="undefined"){key[k]=exports.normalizeKey(val)}}}}}return key};function indexify(key){if(key!==null){switch(typeof key){case"boolean":return key?1:0;case"number":return numToIndexableString(key);case"string":return key.replace(/\u0002/g,"").replace(/\u0001/g,"").replace(/\u0000/g,"");case"object":var isArray=Array.isArray(key);var arr=isArray?key:Object.keys(key);var i=-1;var len=arr.length;var result="";if(isArray){while(++i<len){result+=exports.toIndexableString(arr[i])}}else{while(++i<len){var objKey=arr[i];result+=exports.toIndexableString(objKey)+exports.toIndexableString(key[objKey])}}return result}}return""}exports.toIndexableString=function(key){var zero="\x00";key=exports.normalizeKey(key);return collationIndex(key)+SEP+indexify(key)+zero};function parseNumber(str,i){var originalIdx=i;var num;var zero=str[i]==="1";if(zero){num=0;i++}else{var neg=str[i]==="0";i++;var numAsString="";var magAsString=str.substring(i,i+MAGNITUDE_DIGITS);var magnitude=parseInt(magAsString,10)+MIN_MAGNITUDE;if(neg){magnitude=-magnitude}i+=MAGNITUDE_DIGITS;while(true){var ch=str[i];if(ch==="\x00"){break}else{numAsString+=ch}i++}numAsString=numAsString.split(".");if(numAsString.length===1){num=parseInt(numAsString,10)}else{num=parseFloat(numAsString[0]+"."+numAsString[1])}if(neg){num=num-10}if(magnitude!==0){num=parseFloat(num+"e"+magnitude)}}return{num:num,length:i-originalIdx}}function pop(stack,metaStack){var obj=stack.pop();if(metaStack.length){var lastMetaElement=metaStack[metaStack.length-1];if(obj===lastMetaElement.element){metaStack.pop();lastMetaElement=metaStack[metaStack.length-1]}var element=lastMetaElement.element;var lastElementIndex=lastMetaElement.index;if(Array.isArray(element)){element.push(obj)}else if(lastElementIndex===stack.length-2){var key=stack.pop();element[key]=obj}else{stack.push(obj)}}}exports.parseIndexableString=function(str){var stack=[];var metaStack=[];var i=0;while(true){var collationIndex=str[i++];if(collationIndex==="\x00"){if(stack.length===1){return stack.pop()}else{pop(stack,metaStack);continue}}switch(collationIndex){case"1":stack.push(null);break;case"2":stack.push(str[i]==="1");i++;break;case"3":var parsedNum=parseNumber(str,i);stack.push(parsedNum.num);i+=parsedNum.length;break;case"4":var parsedStr="";while(true){var ch=str[i];if(ch==="\x00"){break}parsedStr+=ch;i++}parsedStr=parsedStr.replace(/\u0001\u0001/g,"\x00").replace(/\u0001\u0002/g,"").replace(/\u0002\u0002/g,"");stack.push(parsedStr);break;case"5":var arrayElement={element:[],index:stack.length};stack.push(arrayElement.element);metaStack.push(arrayElement);break;case"6":var objElement={element:{},index:stack.length};stack.push(objElement.element);metaStack.push(objElement);break;default:throw new Error("bad collationIndex or unexpectedly reached end of input: "+collationIndex)}}};function arrayCollate(a,b){var len=Math.min(a.length,b.length);for(var i=0;i<len;i++){var sort=exports.collate(a[i],b[i]);if(sort!==0){return sort}}return a.length===b.length?0:a.length>b.length?1:-1}function stringCollate(a,b){return a===b?0:a>b?1:-1}function objectCollate(a,b){var ak=Object.keys(a),bk=Object.keys(b);var len=Math.min(ak.length,bk.length);for(var i=0;i<len;i++){var sort=exports.collate(ak[i],bk[i]);if(sort!==0){return sort}sort=exports.collate(a[ak[i]],b[bk[i]]);if(sort!==0){return sort}}return ak.length===bk.length?0:ak.length>bk.length?1:-1}function collationIndex(x){var id=["boolean","number","string","object"];var idx=id.indexOf(typeof x);if(~idx){if(x===null){return 1}if(Array.isArray(x)){return 5}return idx<3?idx+2:idx+3}if(Array.isArray(x)){return 5}}function numToIndexableString(num){if(num===0){return"1"}var expFormat=num.toExponential().split(/e\+?/);var magnitude=parseInt(expFormat[1],10);var neg=num<0;var result=neg?"0":"2";var magForComparison=(neg?-magnitude:magnitude)-MIN_MAGNITUDE;var magString=utils.padLeft(magForComparison.toString(),"0",MAGNITUDE_DIGITS);result+=SEP+magString;var factor=Math.abs(parseFloat(expFormat[0]));if(neg){factor=10-factor}var factorStr=factor.toFixed(20);factorStr=factorStr.replace(/\.?0+$/,"");result+=SEP+factorStr;return result}},{"./utils":52}],52:[function(require,module,exports){"use strict";function pad(str,padWith,upToLength){var padding="";var targetLength=upToLength-str.length;while(padding.length<targetLength){padding+=padWith}return padding}exports.padLeft=function(str,padWith,upToLength){var padding=pad(str,padWith,upToLength);return padding+str};exports.padRight=function(str,padWith,upToLength){var padding=pad(str,padWith,upToLength);return str+padding};exports.stringLexCompare=function(a,b){var aLen=a.length;var bLen=b.length;var i;for(i=0;i<aLen;i++){if(i===bLen){return 1}var aChar=a.charAt(i);var bChar=b.charAt(i);if(aChar!==bChar){return aChar<bChar?-1:1}}if(aLen<bLen){return-1}return 0};exports.intToDecimalForm=function(int){var isNeg=int<0;var result="";do{var remainder=isNeg?-Math.ceil(int%10):Math.floor(int%10);result=remainder+result;int=isNeg?Math.ceil(int/10):Math.floor(int/10)}while(int);if(isNeg&&result!=="0"){result="-"+result}return result}},{}],53:[function(require,module,exports){"use strict";var Promise=require("./utils").Promise;function TaskQueue(){this.promise=new Promise(function(fulfill){fulfill()})}TaskQueue.prototype.add=function(promiseFactory){this.promise=this.promise["catch"](function(){}).then(function(){return promiseFactory()});return this.promise};TaskQueue.prototype.finish=function(){return this.promise};module.exports=TaskQueue},{"./utils":55}],54:[function(require,module,exports){"use strict";var Promise=require("./utils").Promise;function upsert(db,docId,diffFun){return new Promise(function(fulfill,reject){if(docId&&typeof docId==="object"){docId=docId._id}if(typeof docId!=="string"){return reject(new Error("doc id is required"))}db.get(docId,function(err,doc){if(err){if(err.status!==404){return reject(err)}return fulfill(tryAndPut(db,diffFun({_id:docId}),diffFun))}var newDoc=diffFun(doc);if(!newDoc){return fulfill(doc)}fulfill(tryAndPut(db,newDoc,diffFun))})})}function tryAndPut(db,doc,diffFun){return db.put(doc)["catch"](function(err){if(err.status!==409){throw err}return upsert(db,doc,diffFun)})}module.exports=upsert},{"./utils":55}],55:[function(require,module,exports){(function(process,global){"use strict";if(typeof global.Promise==="function"){exports.Promise=global.Promise}else{exports.Promise=require("lie")}exports.uniq=function(arr){var map={};arr.forEach(function(element){map[element]=true});return Object.keys(map)};exports.inherits=require("inherits");exports.extend=require("pouchdb-extend");var argsarray=require("argsarray");exports.promisedCallback=function(promise,callback){if(callback){promise.then(function(res){process.nextTick(function(){callback(null,res)})},function(reason){process.nextTick(function(){callback(reason)})})}return promise};exports.callbackify=function(fun){return argsarray(function(args){var cb=args.pop();var promise=fun.apply(this,args);if(typeof cb==="function"){exports.promisedCallback(promise,cb)}return promise})};exports.fin=function(promise,cb){return promise.then(function(res){var promise2=cb();if(typeof promise2.then==="function"){return promise2.then(function(){return res})}return res},function(reason){var promise2=cb();if(typeof promise2.then==="function"){return promise2.then(function(){throw reason})}throw reason})};exports.sequentialize=function(queue,promiseFactory){return function(){var args=arguments;var that=this;return queue.add(function(){return promiseFactory.apply(that,args)})}};var crypto=require("crypto");var Md5=require("spark-md5");exports.MD5=function(string){if(!process.browser){return crypto.createHash("md5").update(string).digest("hex")}else{return Md5.hash(string)}}}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{}) | |
},{_process:3,argsarray:27,crypto:1,inherits:28,lie:32,"pouchdb-extend":47,"spark-md5":56}],56:[function(require,module,exports){(function(factory){if(typeof exports==="object"){module.exports=factory()}else if(typeof define==="function"&&define.amd){define(factory)}else{var glob;try{glob=window}catch(e){glob=self}glob.SparkMD5=factory()}})(function(undefined){"use strict";var add32=function(a,b){return a+b&4294967295},cmn=function(q,a,b,x,s,t){a=add32(add32(a,q),add32(x,t));return add32(a<<s|a>>>32-s,b)},ff=function(a,b,c,d,x,s,t){return cmn(b&c|~b&d,a,b,x,s,t)},gg=function(a,b,c,d,x,s,t){return cmn(b&d|c&~d,a,b,x,s,t)},hh=function(a,b,c,d,x,s,t){return cmn(b^c^d,a,b,x,s,t)},ii=function(a,b,c,d,x,s,t){return cmn(c^(b|~d),a,b,x,s,t)},md5cycle=function(x,k){var a=x[0],b=x[1],c=x[2],d=x[3];a=ff(a,b,c,d,k[0],7,-680876936);d=ff(d,a,b,c,k[1],12,-389564586);c=ff(c,d,a,b,k[2],17,606105819);b=ff(b,c,d,a,k[3],22,-1044525330);a=ff(a,b,c,d,k[4],7,-176418897);d=ff(d,a,b,c,k[5],12,1200080426);c=ff(c,d,a,b,k[6],17,-1473231341);b=ff(b,c,d,a,k[7],22,-45705983);a=ff(a,b,c,d,k[8],7,1770035416);d=ff(d,a,b,c,k[9],12,-1958414417);c=ff(c,d,a,b,k[10],17,-42063);b=ff(b,c,d,a,k[11],22,-1990404162);a=ff(a,b,c,d,k[12],7,1804603682);d=ff(d,a,b,c,k[13],12,-40341101);c=ff(c,d,a,b,k[14],17,-1502002290);b=ff(b,c,d,a,k[15],22,1236535329);a=gg(a,b,c,d,k[1],5,-165796510);d=gg(d,a,b,c,k[6],9,-1069501632);c=gg(c,d,a,b,k[11],14,643717713);b=gg(b,c,d,a,k[0],20,-373897302);a=gg(a,b,c,d,k[5],5,-701558691);d=gg(d,a,b,c,k[10],9,38016083);c=gg(c,d,a,b,k[15],14,-660478335);b=gg(b,c,d,a,k[4],20,-405537848);a=gg(a,b,c,d,k[9],5,568446438);d=gg(d,a,b,c,k[14],9,-1019803690);c=gg(c,d,a,b,k[3],14,-187363961);b=gg(b,c,d,a,k[8],20,1163531501);a=gg(a,b,c,d,k[13],5,-1444681467);d=gg(d,a,b,c,k[2],9,-51403784);c=gg(c,d,a,b,k[7],14,1735328473);b=gg(b,c,d,a,k[12],20,-1926607734);a=hh(a,b,c,d,k[5],4,-378558);d=hh(d,a,b,c,k[8],11,-2022574463);c=hh(c,d,a,b,k[11],16,1839030562);b=hh(b,c,d,a,k[14],23,-35309556);a=hh(a,b,c,d,k[1],4,-1530992060);d=hh(d,a,b,c,k[4],11,1272893353);c=hh(c,d,a,b,k[7],16,-155497632);b=hh(b,c,d,a,k[10],23,-1094730640);a=hh(a,b,c,d,k[13],4,681279174);d=hh(d,a,b,c,k[0],11,-358537222);c=hh(c,d,a,b,k[3],16,-722521979);b=hh(b,c,d,a,k[6],23,76029189);a=hh(a,b,c,d,k[9],4,-640364487);d=hh(d,a,b,c,k[12],11,-421815835);c=hh(c,d,a,b,k[15],16,530742520);b=hh(b,c,d,a,k[2],23,-995338651);a=ii(a,b,c,d,k[0],6,-198630844);d=ii(d,a,b,c,k[7],10,1126891415);c=ii(c,d,a,b,k[14],15,-1416354905);b=ii(b,c,d,a,k[5],21,-57434055);a=ii(a,b,c,d,k[12],6,1700485571);d=ii(d,a,b,c,k[3],10,-1894986606);c=ii(c,d,a,b,k[10],15,-1051523);b=ii(b,c,d,a,k[1],21,-2054922799);a=ii(a,b,c,d,k[8],6,1873313359);d=ii(d,a,b,c,k[15],10,-30611744);c=ii(c,d,a,b,k[6],15,-1560198380);b=ii(b,c,d,a,k[13],21,1309151649);a=ii(a,b,c,d,k[4],6,-145523070);d=ii(d,a,b,c,k[11],10,-1120210379);c=ii(c,d,a,b,k[2],15,718787259);b=ii(b,c,d,a,k[9],21,-343485551);x[0]=add32(a,x[0]);x[1]=add32(b,x[1]);x[2]=add32(c,x[2]);x[3]=add32(d,x[3])},md5blk=function(s){var md5blks=[],i;for(i=0;i<64;i+=4){md5blks[i>>2]=s.charCodeAt(i)+(s.charCodeAt(i+1)<<8)+(s.charCodeAt(i+2)<<16)+(s.charCodeAt(i+3)<<24)}return md5blks},md5blk_array=function(a){var md5blks=[],i;for(i=0;i<64;i+=4){md5blks[i>>2]=a[i]+(a[i+1]<<8)+(a[i+2]<<16)+(a[i+3]<<24)}return md5blks},md51=function(s){var n=s.length,state=[1732584193,-271733879,-1732584194,271733878],i,length,tail,tmp,lo,hi;for(i=64;i<=n;i+=64){md5cycle(state,md5blk(s.substring(i-64,i)))}s=s.substring(i-64);length=s.length;tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i=0;i<length;i+=1){tail[i>>2]|=s.charCodeAt(i)<<(i%4<<3)}tail[i>>2]|=128<<(i%4<<3);if(i>55){md5cycle(state,tail);for(i=0;i<16;i+=1){tail[i]=0}}tmp=n*8;tmp=tmp.toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(state,tail);return state},md51_array=function(a){var n=a.length,state=[1732584193,-271733879,-1732584194,271733878],i,length,tail,tmp,lo,hi;for(i=64;i<=n;i+=64){md5cycle(state,md5blk_array(a.subarray(i-64,i)))}a=i-64<n?a.subarray(i-64):new Uint8Array(0);length=a.length;tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(i=0;i<length;i+=1){tail[i>>2]|=a[i]<<(i%4<<3)}tail[i>>2]|=128<<(i%4<<3);if(i>55){md5cycle(state,tail);for(i=0;i<16;i+=1){tail[i]=0}}tmp=n*8;tmp=tmp.toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(state,tail);return state},hex_chr=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"],rhex=function(n){var s="",j;for(j=0;j<4;j+=1){s+=hex_chr[n>>j*8+4&15]+hex_chr[n>>j*8&15]}return s},hex=function(x){var i;for(i=0;i<x.length;i+=1){x[i]=rhex(x[i])}return x.join("")},md5=function(s){return hex(md51(s))},SparkMD5=function(){this.reset()};if(md5("hello")!=="5d41402abc4b2a76b9719d911017c592"){add32=function(x,y){var lsw=(x&65535)+(y&65535),msw=(x>>16)+(y>>16)+(lsw>>16);return msw<<16|lsw&65535}}SparkMD5.prototype.append=function(str){if(/[\u0080-\uFFFF]/.test(str)){str=unescape(encodeURIComponent(str))}this.appendBinary(str);return this};SparkMD5.prototype.appendBinary=function(contents){this._buff+=contents;this._length+=contents.length;var length=this._buff.length,i;for(i=64;i<=length;i+=64){md5cycle(this._state,md5blk(this._buff.substring(i-64,i)))}this._buff=this._buff.substr(i-64);return this};SparkMD5.prototype.end=function(raw){var buff=this._buff,length=buff.length,i,tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],ret;for(i=0;i<length;i+=1){tail[i>>2]|=buff.charCodeAt(i)<<(i%4<<3)}this._finish(tail,length);ret=!!raw?this._state:hex(this._state);this.reset();return ret};SparkMD5.prototype._finish=function(tail,length){var i=length,tmp,lo,hi;tail[i>>2]|=128<<(i%4<<3);if(i>55){md5cycle(this._state,tail);for(i=0;i<16;i+=1){tail[i]=0}}tmp=this._length*8;tmp=tmp.toString(16).match(/(.*?)(.{0,8})$/);lo=parseInt(tmp[2],16);hi=parseInt(tmp[1],16)||0;tail[14]=lo;tail[15]=hi;md5cycle(this._state,tail)};SparkMD5.prototype.reset=function(){this._buff="";this._length=0;this._state=[1732584193,-271733879,-1732584194,271733878];return this};SparkMD5.prototype.destroy=function(){delete this._state;delete this._buff;delete this._length};SparkMD5.hash=function(str,raw){if(/[\u0080-\uFFFF]/.test(str)){str=unescape(encodeURIComponent(str))}var hash=md51(str);return!!raw?hash:hex(hash)};SparkMD5.hashBinary=function(content,raw){var hash=md51(content);return!!raw?hash:hex(hash)};SparkMD5.ArrayBuffer=function(){this.reset()};SparkMD5.ArrayBuffer.prototype.append=function(arr){var buff=this._concatArrayBuffer(this._buff,arr),length=buff.length,i;this._length+=arr.byteLength;for(i=64;i<=length;i+=64){md5cycle(this._state,md5blk_array(buff.subarray(i-64,i)))}this._buff=i-64<length?buff.subarray(i-64):new Uint8Array(0);return this};SparkMD5.ArrayBuffer.prototype.end=function(raw){var buff=this._buff,length=buff.length,tail=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],i,ret;for(i=0;i<length;i+=1){tail[i>>2]|=buff[i]<<(i%4<<3)}this._finish(tail,length);ret=!!raw?this._state:hex(this._state);this.reset();return ret};SparkMD5.ArrayBuffer.prototype._finish=SparkMD5.prototype._finish;SparkMD5.ArrayBuffer.prototype.reset=function(){this._buff=new Uint8Array(0);this._length=0;this._state=[1732584193,-271733879,-1732584194,271733878];return this};SparkMD5.ArrayBuffer.prototype.destroy=SparkMD5.prototype.destroy;SparkMD5.ArrayBuffer.prototype._concatArrayBuffer=function(first,second){var firstLength=first.length,result=new Uint8Array(firstLength+second.byteLength);result.set(first);result.set(new Uint8Array(second),firstLength);return result};SparkMD5.ArrayBuffer.hash=function(arr,raw){var hash=md51_array(new Uint8Array(arr));return!!raw?hash:hex(hash)};return SparkMD5})},{}],57:[function(require,module,exports){"use strict";exports.stringify=function stringify(input){var queue=[];queue.push({obj:input});var res="";var next,obj,prefix,val,i,arrayPrefix,keys,k,key,value,objPrefix;while(next=queue.pop()){obj=next.obj;prefix=next.prefix||"";val=next.val||"";res+=prefix;if(val){res+=val}else if(typeof obj!=="object"){res+=typeof obj==="undefined"?null:JSON.stringify(obj)}else if(obj===null){res+="null"}else if(Array.isArray(obj)){queue.push({val:"]"});for(i=obj.length-1;i>=0;i--){arrayPrefix=i===0?"":",";queue.push({obj:obj[i],prefix:arrayPrefix})}queue.push({val:"["})}else{keys=[];for(k in obj){if(obj.hasOwnProperty(k)){keys.push(k)}}queue.push({val:"}"});for(i=keys.length-1;i>=0;i--){key=keys[i];value=obj[key];objPrefix=i>0?",":"";objPrefix+=JSON.stringify(key)+":";queue.push({obj:value,prefix:objPrefix})}queue.push({val:"{"})}}return res};function pop(obj,stack,metaStack){var lastMetaElement=metaStack[metaStack.length-1];if(obj===lastMetaElement.element){metaStack.pop();lastMetaElement=metaStack[metaStack.length-1]}var element=lastMetaElement.element;var lastElementIndex=lastMetaElement.index;if(Array.isArray(element)){element.push(obj)}else if(lastElementIndex===stack.length-2){var key=stack.pop();element[key]=obj}else{stack.push(obj)}}exports.parse=function(str){var stack=[];var metaStack=[];var i=0;var collationIndex,parsedNum,numChar;var parsedString,lastCh,numConsecutiveSlashes,ch;var arrayElement,objElement;while(true){collationIndex=str[i++];if(collationIndex==="}"||collationIndex==="]"||typeof collationIndex==="undefined"){if(stack.length===1){return stack.pop()}else{pop(stack.pop(),stack,metaStack);continue}}switch(collationIndex){case" ":case" ":case"\n":case":":case",":break;case"n":i+=3;pop(null,stack,metaStack);break;case"t":i+=3;pop(true,stack,metaStack);break;case"f":i+=4;pop(false,stack,metaStack);break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"-":parsedNum="";i--;while(true){numChar=str[i++];if(/[\d\.\-e\+]/.test(numChar)){parsedNum+=numChar}else{i--;break}}pop(parseFloat(parsedNum),stack,metaStack);break;case'"':parsedString="";lastCh=void 0;numConsecutiveSlashes=0;while(true){ch=str[i++];if(ch!=='"'||lastCh==="\\"&&numConsecutiveSlashes%2===1){parsedString+=ch;lastCh=ch;if(lastCh==="\\"){numConsecutiveSlashes++}else{numConsecutiveSlashes=0}}else{break}}pop(JSON.parse('"'+parsedString+'"'),stack,metaStack);break;case"[":arrayElement={element:[],index:stack.length};stack.push(arrayElement.element);metaStack.push(arrayElement);break;case"{":objElement={element:{},index:stack.length};stack.push(objElement.element);metaStack.push(objElement);break;default:throw new Error("unexpectedly reached end of input: "+collationIndex)}}}},{}],pouchdb:[function(require,module,exports){(function(process){"use strict";var PouchDB=require("./setup");module.exports=PouchDB;PouchDB.ajax=require("./deps/ajax");PouchDB.extend=require("pouchdb-extend");PouchDB.utils=require("./utils");PouchDB.Errors=require("./deps/errors");PouchDB.replicate=require("./replicate").replicate;PouchDB.sync=require("./sync");PouchDB.version=require("./version");var httpAdapter=require("./adapters/http");PouchDB.adapter("http",httpAdapter);PouchDB.adapter("https",httpAdapter);PouchDB.adapter("idb",require("./adapters/idb"));PouchDB.adapter("websql",require("./adapters/websql"));PouchDB.plugin(require("pouchdb-mapreduce"));if(!process.browser){var ldbAdapter=require("./adapters/leveldb");PouchDB.adapter("ldb",ldbAdapter);PouchDB.adapter("leveldb",ldbAdapter)}}).call(this,require("_process"))},{"./adapters/http":5,"./adapters/idb":6,"./adapters/leveldb":1,"./adapters/websql":8,"./deps/ajax":11,"./deps/errors":14,"./replicate":21,"./setup":22,"./sync":23,"./utils":25,"./version":26,_process:3,"pouchdb-extend":47,"pouchdb-mapreduce":50}]},{},[]);var request=require("superagent");var PouchDB=require("pouchdb");var db=new PouchDB("github-hypothesis");request.get("https://api.github.com/repos/hypothesis/h/stats/contributors").end(function(res){if(res.ok){console.log(res.body)}}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "requirebin-sketch", | |
"version": "1.0.0", | |
"dependencies": { | |
"superagent": "0.20.0", | |
"pouchdb": "3.0.6" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<style type='text/css'>html, body { margin: 0; padding: 0; border: 0; } | |
body, html { height: 100%; width: 100%; }</style> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment