diff --git a/Gruntfile.js b/Gruntfile.js
index 2418daa..8dfe98a 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -30,7 +30,7 @@ module.exports = function(grunt) {
}
},
vanilla: {
- src: ['lib/http_adapter/vanilla.js', 'lib/index.js', 'lib/vanilla.js'],
+ src: ['lib/http_adapter/vanilla.js', 'lib/index.js'],
dest: 'api-client.js'
}
},
diff --git a/README.md b/README.md
index eac97c3..3e7a597 100644
--- a/README.md
+++ b/README.md
@@ -51,15 +51,23 @@ app.get('/', function(req, res) {
});
```
-**browser**
+**Browser (no package manager)**
```js
-
-
+}, adapter);
+```
+
+**Browser (CommonJS)**
+
+```js
+import {Client, VanillaAdapter} from 'bower_components/tagged-api/tagged-api-min.js';
+var adapter = new VanillaAdapter(XMLHttpRequest, Promise);
+var api = new Client('/api.php', {
+ session_id: 'abc123' // Session cookie ID from `document.cookie`
+}, adapter);
```
Executing API Calls
diff --git a/api-angular-min.js b/api-angular-min.js
index 6b06b61..d364d37 100644
--- a/api-angular-min.js
+++ b/api-angular-min.js
@@ -1 +1 @@
-!function(){"use strict";function a(b,c){for(var d in c)if(c.hasOwnProperty(d))try{c[d].constructor===Object?b[d]=a(b[d],c[d]):b[d]=c[d]}catch(e){b[d]=c[d]}return b}var b="undefined"!=typeof exports?exports:window,c=b.btoa||require("btoa");if("function"==typeof require)var d=b.Promise||require("bluebird");var e=/; */,f=function(c,d,f){if(this._endpoint=c,this._http="undefined"!=typeof f?f:new VanillaAdapter(b.XMLHttpRequest,b.Promise||require("bluebird")),this._queue=[],this._maxQueueSize=null,this._batchTimeout=null,this._options=a({query:{},params:{track:this._generateTrackId()},timeout:1e4},d||{}),this._cookies={},d.cookies){var g=d.cookies.split(e);g.forEach(function(a){var b=a.split("=",2);this._cookies[b[0]]=b[1]}.bind(this))}var h=parseInt(this._options.timeout,10)||1e4;h<0&&(h=1e4),this._http.setTimeout(h),this._events={},this._cache={}};f.prototype._generateTrackId=function(){return c(1e8*Math.random()).substr(0,10)},f.prototype.setMaxQueueSize=function(a){this._maxQueueSize=a},f.prototype.getMaxQueueSize=function(a){return this._maxQueueSize},f.prototype.execute=function(b,c,e){if(!b||"string"!=typeof b)throw new Error("Method is required to execute API calls");var f=Math.random();if(f>.99){var g=(new Date).getTime();for(var h in this._cache)this._cache[h].expiresg)return this._cache[i];delete this._cache[i]}var k=new d(function(d,e){var f=a({},this._options.params);this._queue.push({method:b,params:a(f,c||{}),deferred:{resolve:d,reject:e},timeStart:l()}),this._maxQueueSize&&this._queue.length>=this._maxQueueSize?this._postToApi():null===this._batchTimeout&&(this._batchTimeout=setTimeout(this._postToApi.bind(this),1))}.bind(this));if(i){var g=(new Date).getTime(),m=e.cache===!0?1/0:g+1e3*e.cache;this._cache[i]={expires:m,promise:k}}return k},f.prototype._postToApi=function(){var a=j(this._queue),b={};for(var c in this._options.query)b[c]=this._options.query[c];var d=[];for(var e in b)b.hasOwnProperty(e)&&d.push(e+"="+b[e]);var f=d.join("&");this._http.post({body:a,url:this._endpoint+"?"+f,cookies:this._options.cookies,clientId:this._options.clientId,secret:this._options.secret,headers:this._options.headers||{},timeStart:this._queueTimeStart}).then(g).then(h.bind(this,this._queue))["catch"](i.bind(this,this._queue)),this.resetQueue()};var g=function(a){var b=[],c=JSON.parse(a.body);for(var d in c)b.push(JSON.parse(c[d]));return b},h=function(a,b){for(var c in a){var d=b[c];if(null==d&&(d={result:null,stat:"ok"}),d.stat&&this._events.hasOwnProperty(d.stat))for(var e in this._events[d.stat])this._events[d.stat][e](a[c],d);d.stat&&"ok"!==d.stat?a[c].deferred.reject(d):a[c].deferred.resolve(d)}return b},i=function(a,b){for(var c in a)a[c].deferred.reject(b);return b};f.prototype.resetQueue=function(){null!==this._batchTimeout&&(clearTimeout(this._batchTimeout),this._batchTimeout=null),this._queue=[]},f.prototype.on=function(a,b){this._events.hasOwnProperty(a)||(this._events[a]=[]),this._events[a].push(b)},f.middleware=function(b,c){var d=require("./http_adapter/node"),e=new d;return function(d,g,h){var i={query:{application_id:"user",format:"JSON"},params:{api_signature:""},cookies:d.headers&&d.headers.cookie,headers:{}};if(c&&c.passHeaders)for(var j=0,k=c.passHeaders.length;j.99){var g=(new Date).getTime();for(var h in this._cache)this._cache[h].expiresg)return this._cache[i];delete this._cache[i]}var k=new d(function(d,e){var f=a({},this._options.params);this._queue.push({method:b,params:a(f,c||{}),deferred:{resolve:d,reject:e},timeStart:m()}),this._maxQueueSize&&this._queue.length>=this._maxQueueSize?this._postToApi():null===this._batchTimeout&&(this._batchTimeout=setTimeout(this._postToApi.bind(this),1))}.bind(this));if(i){var g=(new Date).getTime(),l=e.cache===!0?1/0:g+1e3*e.cache;this._cache[i]={expires:l,promise:k}}return k},f.prototype._postToApi=function(){var a=k(this._queue),b={};for(var c in this._options.query)b[c]=this._options.query[c];var d=[];for(var e in b)b.hasOwnProperty(e)&&d.push(e+"="+b[e]);var f=d.join("&");this._http.post({body:a,url:this._endpoint+"?"+f,cookies:this._options.cookies,clientId:this._options.clientId,secret:this._options.secret,headers:this._options.headers||{},timeStart:this._queueTimeStart}).then(g).then(h.bind(this,this._queue))["catch"](i.bind(this,this._queue)),this.resetQueue()};var g=function(a){var b=[],c=JSON.parse(a.body);for(var d in c)b.push(JSON.parse(c[d]));return b},h=function(a,b){for(var c in a){var d=b[c];if(null==d&&(d={result:null,stat:"ok"}),d.stat&&this._events.hasOwnProperty(d.stat))for(var e in this._events[d.stat])this._events[d.stat][e](a[c],d);d.stat&&"ok"!==d.stat?a[c].deferred.reject(d):a[c].deferred.resolve(d)}return b},i=function(a,b){for(var c in a)a[c].deferred.reject(b);return b};f.prototype.resetQueue=function(){null!==this._batchTimeout&&(clearTimeout(this._batchTimeout),this._batchTimeout=null),this._queue=[]},f.prototype.on=function(a,b){this._events.hasOwnProperty(a)||(this._events[a]=[]),this._events[a].push(b)};var j=function(b,c){var d=require("./http_adapter/node"),e=new d;return function(d,g,h){var i={query:{application_id:"user",format:"JSON"},params:{api_signature:""},cookies:d.headers&&d.headers.cookie,headers:{}};if(c&&c.passHeaders)for(var j=0,k=c.passHeaders.length;j.99){var g=(new Date).getTime();for(var h in this._cache)this._cache[h].expiresg)return this._cache[i];delete this._cache[i]}var k=new d(function(d,e){var f=a({},this._options.params);this._queue.push({method:b,params:a(f,c||{}),deferred:{resolve:d,reject:e},timeStart:l()}),this._maxQueueSize&&this._queue.length>=this._maxQueueSize?this._postToApi():null===this._batchTimeout&&(this._batchTimeout=setTimeout(this._postToApi.bind(this),1))}.bind(this));if(i){var g=(new Date).getTime(),m=e.cache===!0?1/0:g+1e3*e.cache;this._cache[i]={expires:m,promise:k}}return k},f.prototype._postToApi=function(){var a=j(this._queue),b={};for(var c in this._options.query)b[c]=this._options.query[c];var d=[];for(var e in b)b.hasOwnProperty(e)&&d.push(e+"="+b[e]);var f=d.join("&");this._http.post({body:a,url:this._endpoint+"?"+f,cookies:this._options.cookies,clientId:this._options.clientId,secret:this._options.secret,headers:this._options.headers||{},timeStart:this._queueTimeStart}).then(g).then(h.bind(this,this._queue))["catch"](i.bind(this,this._queue)),this.resetQueue()};var g=function(a){var b=[],c=JSON.parse(a.body);for(var d in c)b.push(JSON.parse(c[d]));return b},h=function(a,b){for(var c in a){var d=b[c];if(null==d&&(d={result:null,stat:"ok"}),d.stat&&this._events.hasOwnProperty(d.stat))for(var e in this._events[d.stat])this._events[d.stat][e](a[c],d);d.stat&&"ok"!==d.stat?a[c].deferred.reject(d):a[c].deferred.resolve(d)}return b},i=function(a,b){for(var c in a)a[c].deferred.reject(b);return b};f.prototype.resetQueue=function(){null!==this._batchTimeout&&(clearTimeout(this._batchTimeout),this._batchTimeout=null),this._queue=[]},f.prototype.on=function(a,b){this._events.hasOwnProperty(a)||(this._events[a]=[]),this._events[a].push(b)},f.middleware=function(b,c){var d=require("./http_adapter/node"),e=new d;return function(d,g,h){var i={query:{application_id:"user",format:"JSON"},params:{api_signature:""},cookies:d.headers&&d.headers.cookie,headers:{}};if(c&&c.passHeaders)for(var j=0,k=c.passHeaders.length;j.99){var g=(new Date).getTime();for(var h in this._cache)this._cache[h].expiresg)return this._cache[i];delete this._cache[i]}var k=new d(function(d,e){var f=a({},this._options.params);this._queue.push({method:b,params:a(f,c||{}),deferred:{resolve:d,reject:e},timeStart:m()}),this._maxQueueSize&&this._queue.length>=this._maxQueueSize?this._postToApi():null===this._batchTimeout&&(this._batchTimeout=setTimeout(this._postToApi.bind(this),1))}.bind(this));if(i){var g=(new Date).getTime(),l=e.cache===!0?1/0:g+1e3*e.cache;this._cache[i]={expires:l,promise:k}}return k},f.prototype._postToApi=function(){var a=k(this._queue),b={};for(var c in this._options.query)b[c]=this._options.query[c];var d=[];for(var e in b)b.hasOwnProperty(e)&&d.push(e+"="+b[e]);var f=d.join("&");this._http.post({body:a,url:this._endpoint+"?"+f,cookies:this._options.cookies,clientId:this._options.clientId,secret:this._options.secret,headers:this._options.headers||{},timeStart:this._queueTimeStart}).then(g).then(h.bind(this,this._queue))["catch"](i.bind(this,this._queue)),this.resetQueue()};var g=function(a){var b=[],c=JSON.parse(a.body);for(var d in c)b.push(JSON.parse(c[d]));return b},h=function(a,b){for(var c in a){var d=b[c];if(null==d&&(d={result:null,stat:"ok"}),d.stat&&this._events.hasOwnProperty(d.stat))for(var e in this._events[d.stat])this._events[d.stat][e](a[c],d);d.stat&&"ok"!==d.stat?a[c].deferred.reject(d):a[c].deferred.resolve(d)}return b},i=function(a,b){for(var c in a)a[c].deferred.reject(b);return b};f.prototype.resetQueue=function(){null!==this._batchTimeout&&(clearTimeout(this._batchTimeout),this._batchTimeout=null),this._queue=[]},f.prototype.on=function(a,b){this._events.hasOwnProperty(a)||(this._events[a]=[]),this._events[a].push(b)};var j=function(b,c){var d=require("./http_adapter/node"),e=new d;return function(d,g,h){var i={query:{application_id:"user",format:"JSON"},params:{api_signature:""},cookies:d.headers&&d.headers.cookie,headers:{}};if(c&&c.passHeaders)for(var j=0,k=c.passHeaders.length;j