Skip to content

Instantly share code, notes, and snippets.

@BigBlueHat
Created February 5, 2015 23:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save BigBlueHat/fa045d2f6448aaa28504 to your computer and use it in GitHub Desktop.
Save BigBlueHat/fa045d2f6448aaa28504 to your computer and use it in GitHub Desktop.
github contributors history
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);
}
});
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&&copy&&(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)}});
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"superagent": "0.20.0",
"pouchdb": "3.0.6"
}
}
<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