diff --git a/README.md b/README.md index 4cd5ee1..4e87750 100644 --- a/README.md +++ b/README.md @@ -415,14 +415,14 @@ store.index(); **request( input, config )** _Promise_ -Returns a `Promise` for a `fetch()` with a double `Tuple` [`body`, `status`] as the `resolve()` argument. +Returns a `Promise` for a `fetch()` with a triple `Tuple` [`body`, `status`, `headers`] as the `resolve()` & `reject()` argument. Example of mapping a DataStore: ```javascript var store = haro(); store.request('https://somedomain.com/api').then(function (arg) { - console.log(arg); // [body, status] + console.log(arg); // [body, status, headers] }, function (arg) { console.error(arg[0]); }); diff --git a/lib/haro.es6.js b/lib/haro.es6.js index 322ef27..bb4b32a 100644 --- a/lib/haro.es6.js +++ b/lib/haro.es6.js @@ -5,7 +5,7 @@ * @copyright 2015 * @license BSD-3-Clause * @link http://haro.rocks - * @version 1.3.2 + * @version 1.3.3 */ "use strict"; @@ -241,7 +241,7 @@ class Haro { } if (data.length > 0) { - this.request(this.uri, { + this.request(concatURI(this.uri, null), { method: "patch", body: JSON.stringify(data) }).then(function () { @@ -703,7 +703,7 @@ function factory (data = null, config = {}, indexes = []) { return new Haro(data, config, indexes); } -factory.version = "1.3.2"; +factory.version = "1.3.3"; // Node, AMD & window supported if (typeof exports !== "undefined") { diff --git a/lib/haro.js b/lib/haro.js index 1565c1d..3c69df1 100644 --- a/lib/haro.js +++ b/lib/haro.js @@ -5,7 +5,7 @@ * @copyright 2015 * @license BSD-3-Clause * @link http://haro.rocks - * @version 1.3.2 + * @version 1.3.3 */ "use strict"; @@ -264,7 +264,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons } if (data.length > 0) { - this.request(this.uri, { + this.request(concatURI(this.uri, null), { method: "patch", body: JSON.stringify(data) }).then(function () { @@ -784,7 +784,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons return new Haro(data, config, indexes); } - factory.version = "1.3.2"; + factory.version = "1.3.3"; // Node, AMD & window supported if (typeof exports !== "undefined") { diff --git a/lib/haro.min.js b/lib/haro.min.js index a2e0da5..c70787d 100644 --- a/lib/haro.min.js +++ b/lib/haro.min.js @@ -1,4 +1,4 @@ /* 2015 Jason Mulligan */ -"use strict";function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function a(a,b){for(var c=0;c1?d.map(function(a){return String(b[a])}).join(c):b[a]}function f(a,b,c,d,f){a.forEach(function(a){var g=b.get(a),h=e(a,f,c),i=void 0;g.has(h)&&(i=g.get(h),i["delete"](d),0===i.size&&g["delete"](h))})}function g(a,b){a instanceof Object?Object.keys(a).forEach(function(c){b.call(a,a[c],c)}):a.forEach(b)}function h(a,c){var d=b(a),e=b(c);return d instanceof Object&&e instanceof Object?Object.keys(e).forEach(function(a){d[a]instanceof Object&&e[a]instanceof Object?d[a]=h(d[a],e[a]):d[a]instanceof Array&&e[a]instanceof Array?d[a]=d[a].concat(e[a]):d[a]=e[a]}):d=d instanceof Array&&e instanceof Array?d.concat(e):e,d}function i(){var a=void 0===arguments[0]?{}:arguments[0],b=void 0===arguments[1]?{}:arguments[1],c=void 0===arguments[2]?"":arguments[2],d=void 0===arguments[3]?!1:arguments[3],e=[];return d&&g(a,function(a,d){d!==c&&void 0===b[d]&&e.push({op:"remove",path:"/"+d})}),g(b,function(b,d){d!==c&&void 0===a[d]?e.push({op:"add",path:"/"+d,value:b}):JSON.stringify(a[d])!==JSON.stringify(b)&&e.push({op:"replace",path:"/"+d,value:b})}),e}function j(){return(65536*(1+Math.random())|0).toString(16).substring(1)}function k(a,b,c){a.has(b)||a.set(b,new r),a.get(b).add(c)}function l(a,b,c,d,f,g){g?k(b.get(g),e(g,f,c),d):a.forEach(function(a){k(b.get(a),e(a,f,c),d)})}function m(a){var b={};return a.forEach(function(a,c){b[c]=a}),b}function n(){return j()+j()+"-"+j()+"-4"+j().substr(0,3)+"-"+u[Math.floor(4*Math.random())]+j().substr(0,3)+"-"+j()+j()+j()}function o(){var a=void 0===arguments[0]?null:arguments[0],b=void 0===arguments[1]?{}:arguments[1],c=void 0===arguments[2]?[]:arguments[2];return new Haro(a,b,c)}var p=a.Promise||require("es6-promise").Promise,q=a.Map||require("es6-map"),r=a.Set||require("es6-set"),s=a.fetch||require("node-fetch"),t=a.tuple||require("tiny-tuple"),u=[8,9,"a","b"],v={querystring:/\?.*/,endslash:/\/$/},Haro=function(){function Haro(a){var b=this,c=void 0===arguments[1]?{}:arguments[1];_classCallCheck(this,Haro),this.data=new q,this.delimiter="|",this.config={method:"get",credentials:!1,headers:{accept:"application/json","content-type":"application/json"}},this.index=[],this.indexes=new q,this.patch=!1,this.registry=[],this.key="",this.source="",this.total=0,this.uri="",this.versions=new q,this.versioning=!0,Object.keys(c).forEach(function(a){b[a]=h(b[a],c[a])}),this.reindex(),a&&this.batch(a,"set")}return _createClass(Haro,[{key:"batch",value:function(a,b){function c(){p.all(a.map(j)).then(function(a){f.resolve(a)},function(a){f.reject(a)})}var e=this,f=d(),g="del"===b,h=void 0,j=void 0,k=void 0;return j=g?function(a){return e.del(a,!0)}:function(a){return e.set(null,a,!0,!0)},this.patch?(g?h=i(this.toArray().map(function(a){return a[e.key]}),a,this.key,!0):(h=[],k={},a.forEach(function(a){var b=a[e.key];b?k[b]=a:h.push({op:"add",path:"/",value:a})}),h=h.concat(i(this.toObject(),k,this.key,!0))),h.length>0?this.request(this.uri,{method:"patch",body:JSON.stringify(h)}).then(function(){c()},function(a){f.reject(a)}):f.resolve()):c(),f.promise}},{key:"clear",value:function(){return this.total=0,this.registry=[],this.data.clear(),this.indexes.clear(),this.versions.clear(),this.reindex()}},{key:"del",value:function(a){var b=this,e=void 0===arguments[1]?!1:arguments[1],g=d(),h=void 0;return h=function(){var c=b.registry.indexOf(a);c>-1&&(0===c?b.registry.shift():c===b.registry.length-1?b.registry.pop():b.registry.splice(c,1),f(b.index,b.indexes,b.delimiter,a,b.data.get(a)),b.data["delete"](a),--b.total,b.versioning&&b.versions["delete"](a)),g.resolve()},this.data.has(a)?!e&&this.uri?this.patch?this.request(c(this.uri,null),{method:"patch",body:JSON.stringify([{op:"remove",path:"/"+a}])}).then(h,function(d){405===d[1]?(b.patch=!1,b.request(c(b.uri,a),{method:"delete"}).then(h,function(a){g.reject(a)})):g.reject(d)}):this.request(c(this.uri,a),{method:"delete"}).then(h,function(a){g.reject(a)}):h():g.reject(new Error("Record not found")),g.promise}},{key:"entries",value:function(){return this.data.entries()}},{key:"find",value:function(a){var b=this,c=Object.keys(a).sort().join(this.delimiter),d=e(c,a,this.delimiter),f=[];return this.indexes.has(c)&&(this.indexes.get(c).get(d)||new r).forEach(function(a){f.push(b.get(a))}),t.apply(t,f)}},{key:"filter",value:function(a){var b=[];return this.forEach(function(c,d){a(c,d)===!0&&b.push(t(d,c))}),t.apply(t,b)}},{key:"forEach",value:function(a,c){return this.data.forEach(function(c,d){a(b(c),b(d))},c),this}},{key:"get",value:function(a){var b=void 0;return this.data.has(a)&&(b=t(a,this.data.get(a))),b}},{key:"keys",value:function(){return this.data.keys()}},{key:"limit",value:function(a,b){void 0===a&&(a=0);var c=a,d=b,e=[],f=void 0,g=void 0,h=void 0;if(void 0===d&&(d=c,c=0),f=c,h=c+d,0>f||f>=h)throw new Error("Invalid range");do g=this.registry[f],g&&e.push(this.get(g));while(++f-1?"json":"text"]().then(function(a){c[200>b||b>=400?"reject":"resolve"](t(a,b,d))},function(a){c.reject(t(a.message,b,d))})},function(a){c.reject(t(a.message,0,{}))}),c.promise}},{key:"search",value:function(a,b){var c=this,d=b?this.index.indexOf(b)>-1?[b]:[]:this.index,e=[],f="function"==typeof a,g=a instanceof RegExp,h=new r;return a&&d.forEach(function(b){var d=c.indexes.get(b);d&&d.forEach(function(b,d){(f&&a(d)||g&&a.test(d)||d===a)&&b.forEach(function(a){h.has(a)||(h.add(a),e.push(c.get(a)))})})}),t.apply(t,e)}},{key:"set",value:function(a,e){var g=this,j=void 0===arguments[2]?!1:arguments[2],k=void 0===arguments[3]?!1:arguments[3],m=d(),o="post",p=b(e),q=a,s=void 0,u=void 0,v=function(a){var b=a?a[0]:{};null===q&&(g.key?(g.source&&g.source.split(".").forEach(function(a){b=b[a]||{}}),q=b[g.key]||p[g.key]||n()):q=n()),"post"===o?(g.registry[g.total]=q,++g.total,g.versioning&&g.versions.set(q,new r)):(g.versioning&&g.versions.get(q).add(t(u)),f(g.index,g.indexes,g.delimiter,q,u)),g.data.set(q,p),l(g.index,g.indexes,g.delimiter,q,p),m.resolve(g.get(q))};return void 0===q||null===q?q=null:this.data.has(q)&&(o="put",u=this.data.get(q),k||(p=h(this.get(q)[1],p))),!j&&this.uri?this.patch?(s="post"===o?[{op:"add",path:"/",value:p}]:k?[{op:"replace",path:"/",value:p}]:i(u,p,this.key),this.request(c(this.uri,q),{method:"patch",body:JSON.stringify(s)}).then(v,function(a){405===a[1]?(g.patch=!1,g.request(c(g.uri,q),{method:o,body:JSON.stringify(p)}).then(v,function(a){m.reject(a)})):m.reject(a)})):this.request(c(this.uri,q),{method:o,body:JSON.stringify(p)}).then(v,function(a){m.reject(a)}):v(),m.promise}},{key:"setUri",value:function(a){var b=void 0===arguments[1]?!1:arguments[1],c=d();return this.uri=a,this.uri?this.sync(b).then(function(a){c.resolve(a)},function(a){c.reject(a)}):c.resolve([]),c.promise}},{key:"sort",value:function(a){return this.toArray().sort(a)}},{key:"sortBy",value:function(a){var b=this,c=[],d=[],e=void 0;return this.indexes.has(a)||(this.index.push(a),this.reindex(a)),e=this.indexes.get(a),e.forEach(function(a,b){d.push(b)}),d.sort().forEach(function(a){e.get(a).forEach(function(a){c.push(b.get(a))})}),t.apply(t,c)}},{key:"sync",value:function(){var a=this,b=void 0===arguments[0]?!1:arguments[0],c=d();return this.request(this.uri).then(function(d){var e=d[0];if(a.patch=(d[2].Allow||d[2].allow||"").indexOf("PATCH")>-1,a.source)try{a.source.split(".").forEach(function(a){e=e[a]})}catch(f){return c.reject(f)}b&&a.clear(),a.batch(e,"set").then(function(a){c.resolve(a)},function(a){c.reject(a)})},function(a){c.reject(a[0]||a)}),c.promise}},{key:"toArray",value:function(){var a=[];return this.forEach(function(b){a.push(b)}),a}},{key:"toObject",value:function(){return m(this)}},{key:"values",value:function(){return this.data.values()}}]),Haro}();o.version="1.3.2","undefined"!=typeof exports?module.exports=o:"function"==typeof define?define(function(){return o}):a.haro=o}("undefined"!=typeof global?global:window); +"use strict";function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var _createClass=function(){function a(a,b){for(var c=0;c1?d.map(function(a){return String(b[a])}).join(c):b[a]}function f(a,b,c,d,f){a.forEach(function(a){var g=b.get(a),h=e(a,f,c),i=void 0;g.has(h)&&(i=g.get(h),i["delete"](d),0===i.size&&g["delete"](h))})}function g(a,b){a instanceof Object?Object.keys(a).forEach(function(c){b.call(a,a[c],c)}):a.forEach(b)}function h(a,c){var d=b(a),e=b(c);return d instanceof Object&&e instanceof Object?Object.keys(e).forEach(function(a){d[a]instanceof Object&&e[a]instanceof Object?d[a]=h(d[a],e[a]):d[a]instanceof Array&&e[a]instanceof Array?d[a]=d[a].concat(e[a]):d[a]=e[a]}):d=d instanceof Array&&e instanceof Array?d.concat(e):e,d}function i(){var a=void 0===arguments[0]?{}:arguments[0],b=void 0===arguments[1]?{}:arguments[1],c=void 0===arguments[2]?"":arguments[2],d=void 0===arguments[3]?!1:arguments[3],e=[];return d&&g(a,function(a,d){d!==c&&void 0===b[d]&&e.push({op:"remove",path:"/"+d})}),g(b,function(b,d){d!==c&&void 0===a[d]?e.push({op:"add",path:"/"+d,value:b}):JSON.stringify(a[d])!==JSON.stringify(b)&&e.push({op:"replace",path:"/"+d,value:b})}),e}function j(){return(65536*(1+Math.random())|0).toString(16).substring(1)}function k(a,b,c){a.has(b)||a.set(b,new r),a.get(b).add(c)}function l(a,b,c,d,f,g){g?k(b.get(g),e(g,f,c),d):a.forEach(function(a){k(b.get(a),e(a,f,c),d)})}function m(a){var b={};return a.forEach(function(a,c){b[c]=a}),b}function n(){return j()+j()+"-"+j()+"-4"+j().substr(0,3)+"-"+u[Math.floor(4*Math.random())]+j().substr(0,3)+"-"+j()+j()+j()}function o(){var a=void 0===arguments[0]?null:arguments[0],b=void 0===arguments[1]?{}:arguments[1],c=void 0===arguments[2]?[]:arguments[2];return new Haro(a,b,c)}var p=a.Promise||require("es6-promise").Promise,q=a.Map||require("es6-map"),r=a.Set||require("es6-set"),s=a.fetch||require("node-fetch"),t=a.tuple||require("tiny-tuple"),u=[8,9,"a","b"],v={querystring:/\?.*/,endslash:/\/$/},Haro=function(){function Haro(a){var b=this,c=void 0===arguments[1]?{}:arguments[1];_classCallCheck(this,Haro),this.data=new q,this.delimiter="|",this.config={method:"get",credentials:!1,headers:{accept:"application/json","content-type":"application/json"}},this.index=[],this.indexes=new q,this.patch=!1,this.registry=[],this.key="",this.source="",this.total=0,this.uri="",this.versions=new q,this.versioning=!0,Object.keys(c).forEach(function(a){b[a]=h(b[a],c[a])}),this.reindex(),a&&this.batch(a,"set")}return _createClass(Haro,[{key:"batch",value:function(a,b){function e(){p.all(a.map(k)).then(function(a){g.resolve(a)},function(a){g.reject(a)})}var f=this,g=d(),h="del"===b,j=void 0,k=void 0,l=void 0;return k=h?function(a){return f.del(a,!0)}:function(a){return f.set(null,a,!0,!0)},this.patch?(h?j=i(this.toArray().map(function(a){return a[f.key]}),a,this.key,!0):(j=[],l={},a.forEach(function(a){var b=a[f.key];b?l[b]=a:j.push({op:"add",path:"/",value:a})}),j=j.concat(i(this.toObject(),l,this.key,!0))),j.length>0?this.request(c(this.uri,null),{method:"patch",body:JSON.stringify(j)}).then(function(){e()},function(a){g.reject(a)}):g.resolve()):e(),g.promise}},{key:"clear",value:function(){return this.total=0,this.registry=[],this.data.clear(),this.indexes.clear(),this.versions.clear(),this.reindex()}},{key:"del",value:function(a){var b=this,e=void 0===arguments[1]?!1:arguments[1],g=d(),h=void 0;return h=function(){var c=b.registry.indexOf(a);c>-1&&(0===c?b.registry.shift():c===b.registry.length-1?b.registry.pop():b.registry.splice(c,1),f(b.index,b.indexes,b.delimiter,a,b.data.get(a)),b.data["delete"](a),--b.total,b.versioning&&b.versions["delete"](a)),g.resolve()},this.data.has(a)?!e&&this.uri?this.patch?this.request(c(this.uri,null),{method:"patch",body:JSON.stringify([{op:"remove",path:"/"+a}])}).then(h,function(d){405===d[1]?(b.patch=!1,b.request(c(b.uri,a),{method:"delete"}).then(h,function(a){g.reject(a)})):g.reject(d)}):this.request(c(this.uri,a),{method:"delete"}).then(h,function(a){g.reject(a)}):h():g.reject(new Error("Record not found")),g.promise}},{key:"entries",value:function(){return this.data.entries()}},{key:"find",value:function(a){var b=this,c=Object.keys(a).sort().join(this.delimiter),d=e(c,a,this.delimiter),f=[];return this.indexes.has(c)&&(this.indexes.get(c).get(d)||new r).forEach(function(a){f.push(b.get(a))}),t.apply(t,f)}},{key:"filter",value:function(a){var b=[];return this.forEach(function(c,d){a(c,d)===!0&&b.push(t(d,c))}),t.apply(t,b)}},{key:"forEach",value:function(a,c){return this.data.forEach(function(c,d){a(b(c),b(d))},c),this}},{key:"get",value:function(a){var b=void 0;return this.data.has(a)&&(b=t(a,this.data.get(a))),b}},{key:"keys",value:function(){return this.data.keys()}},{key:"limit",value:function(a,b){void 0===a&&(a=0);var c=a,d=b,e=[],f=void 0,g=void 0,h=void 0;if(void 0===d&&(d=c,c=0),f=c,h=c+d,0>f||f>=h)throw new Error("Invalid range");do g=this.registry[f],g&&e.push(this.get(g));while(++f-1?"json":"text"]().then(function(a){c[200>b||b>=400?"reject":"resolve"](t(a,b,d))},function(a){c.reject(t(a.message,b,d))})},function(a){c.reject(t(a.message,0,{}))}),c.promise}},{key:"search",value:function(a,b){var c=this,d=b?this.index.indexOf(b)>-1?[b]:[]:this.index,e=[],f="function"==typeof a,g=a instanceof RegExp,h=new r;return a&&d.forEach(function(b){var d=c.indexes.get(b);d&&d.forEach(function(b,d){(f&&a(d)||g&&a.test(d)||d===a)&&b.forEach(function(a){h.has(a)||(h.add(a),e.push(c.get(a)))})})}),t.apply(t,e)}},{key:"set",value:function(a,e){var g=this,j=void 0===arguments[2]?!1:arguments[2],k=void 0===arguments[3]?!1:arguments[3],m=d(),o="post",p=b(e),q=a,s=void 0,u=void 0,v=function(a){var b=a?a[0]:{};null===q&&(g.key?(g.source&&g.source.split(".").forEach(function(a){b=b[a]||{}}),q=b[g.key]||p[g.key]||n()):q=n()),"post"===o?(g.registry[g.total]=q,++g.total,g.versioning&&g.versions.set(q,new r)):(g.versioning&&g.versions.get(q).add(t(u)),f(g.index,g.indexes,g.delimiter,q,u)),g.data.set(q,p),l(g.index,g.indexes,g.delimiter,q,p),m.resolve(g.get(q))};return void 0===q||null===q?q=null:this.data.has(q)&&(o="put",u=this.data.get(q),k||(p=h(this.get(q)[1],p))),!j&&this.uri?this.patch?(s="post"===o?[{op:"add",path:"/",value:p}]:k?[{op:"replace",path:"/",value:p}]:i(u,p,this.key),this.request(c(this.uri,q),{method:"patch",body:JSON.stringify(s)}).then(v,function(a){405===a[1]?(g.patch=!1,g.request(c(g.uri,q),{method:o,body:JSON.stringify(p)}).then(v,function(a){m.reject(a)})):m.reject(a)})):this.request(c(this.uri,q),{method:o,body:JSON.stringify(p)}).then(v,function(a){m.reject(a)}):v(),m.promise}},{key:"setUri",value:function(a){var b=void 0===arguments[1]?!1:arguments[1],c=d();return this.uri=a,this.uri?this.sync(b).then(function(a){c.resolve(a)},function(a){c.reject(a)}):c.resolve([]),c.promise}},{key:"sort",value:function(a){return this.toArray().sort(a)}},{key:"sortBy",value:function(a){var b=this,c=[],d=[],e=void 0;return this.indexes.has(a)||(this.index.push(a),this.reindex(a)),e=this.indexes.get(a),e.forEach(function(a,b){d.push(b)}),d.sort().forEach(function(a){e.get(a).forEach(function(a){c.push(b.get(a))})}),t.apply(t,c)}},{key:"sync",value:function(){var a=this,b=void 0===arguments[0]?!1:arguments[0],c=d();return this.request(this.uri).then(function(d){var e=d[0];if(a.patch=(d[2].Allow||d[2].allow||"").indexOf("PATCH")>-1,a.source)try{a.source.split(".").forEach(function(a){e=e[a]})}catch(f){return c.reject(f)}b&&a.clear(),a.batch(e,"set").then(function(a){c.resolve(a)},function(a){c.reject(a)})},function(a){c.reject(a[0]||a)}),c.promise}},{key:"toArray",value:function(){var a=[];return this.forEach(function(b){a.push(b)}),a}},{key:"toObject",value:function(){return m(this)}},{key:"values",value:function(){return this.data.values()}}]),Haro}();o.version="1.3.3","undefined"!=typeof exports?module.exports=o:"function"==typeof define?define(function(){return o}):a.haro=o}("undefined"!=typeof global?global:window); //# sourceMappingURL=haro.min.js.map \ No newline at end of file diff --git a/lib/haro.min.js.map b/lib/haro.min.js.map index b4a141e..32e7b04 100644 --- a/lib/haro.min.js.map +++ b/lib/haro.min.js.map @@ -1 +1 @@ -{"version":3,"file":"haro.min.js","sources":["haro.js"],"names":["_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","global","clone","arg","JSON","parse","stringify","concatURI","left","right","replace","regex","querystring","endslash","deferred","promise","undefined","resolver","rejecter","Promise","resolve","reject","keyIndex","data","delimiter","keys","split","sort","result","map","String","join","delIndex","index","indexes","forEach","idx","get","value","o","has","size","iterate","obj","fn","call","merge","a","b","c","d","Array","concat","patch","ogdata","arguments","overwrite","v","k","push","op","path","s","Math","random","toString","substring","setIndexValue","set","Set","add","setIndex","indice","toObjekt","uuid","substr","r","floor","factory","config","Haro","require","Map","fetch","tuple","_this","this","method","credentials","headers","accept","content-type","registry","source","total","uri","versions","versioning","reindex","batch","args","type","next","all","then","defer","e","_this2","del","hash","toArray","toObject","request","body","clear","_this3","indexOf","shift","pop","splice","err","Error","entries","where","_this4","apply","ctx","output","offset","max","loffset","lmax","list","nth","_this5","input","cfg","toUpperCase","res","status","_headers","message","_this6","rgex","RegExp","seen","lset","lkey","test","_this7","override","ldata","xdata","sync","_this8","lindex","_this9","Allow","allow","records","values","version","exports","module","define","haro","window"],"mappings":"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","sourcesContent":["/**\r\n * Harō is a modern immutable DataStore using Maps, Sets, Promises, & Tuples\r\n *\r\n * @author Jason Mulligan \r\n * @copyright 2015\r\n * @license BSD-3-Clause\r\n * @link http://haro.rocks\r\n * @version 1.3.2\r\n */\n\"use strict\";\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n(function (global) {\n\tvar Promise = global.Promise || require(\"es6-promise\").Promise;\n\tvar Map = global.Map || require(\"es6-map\");\n\tvar Set = global.Set || require(\"es6-set\");\n\tvar fetch = global.fetch || require(\"node-fetch\");\n\tvar tuple = global.tuple || require(\"tiny-tuple\");\n\tvar r = [8, 9, \"a\", \"b\"];\n\tvar regex = {\n\t\tquerystring: /\\?.*/,\n\t\tendslash: /\\/$/\n\t};\n\n\tfunction clone(arg) {\n\t\treturn JSON.parse(JSON.stringify(arg));\n\t}\n\n\tfunction concatURI(left, right) {\n\t\treturn left.replace(regex.querystring, \"\").replace(regex.endslash, \"\") + (right ? \"/\" + right : \"\");\n\t}\n\n\tfunction deferred() {\n\t\tvar promise = undefined,\n\t\t resolver = undefined,\n\t\t rejecter = undefined;\n\n\t\tpromise = new Promise(function (resolve, reject) {\n\t\t\tresolver = resolve;\n\t\t\trejecter = reject;\n\t\t});\n\n\t\treturn { resolve: resolver, reject: rejecter, promise: promise };\n\t}\n\n\tfunction keyIndex(key, data, delimiter) {\n\t\tvar keys = key.split(delimiter).sort(),\n\t\t result = undefined;\n\n\t\tif (keys.length > 1) {\n\t\t\tresult = keys.map(function (i) {\n\t\t\t\treturn String(data[i]);\n\t\t\t}).join(delimiter);\n\t\t} else {\n\t\t\tresult = data[key];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tfunction delIndex(index, indexes, delimiter, key, data) {\n\t\tindex.forEach(function (i) {\n\t\t\tvar idx = indexes.get(i),\n\t\t\t value = keyIndex(i, data, delimiter),\n\t\t\t o = undefined;\n\n\t\t\tif (idx.has(value)) {\n\t\t\t\to = idx.get(value);\n\t\t\t\to[\"delete\"](key);\n\n\t\t\t\tif (o.size === 0) {\n\t\t\t\t\tidx[\"delete\"](value);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction iterate(obj, fn) {\n\t\tif (obj instanceof Object) {\n\t\t\tObject.keys(obj).forEach(function (i) {\n\t\t\t\tfn.call(obj, obj[i], i);\n\t\t\t});\n\t\t} else {\n\t\t\tobj.forEach(fn);\n\t\t}\n\t}\n\n\tfunction merge(a, b) {\n\t\tvar c = clone(a),\n\t\t d = clone(b);\n\n\t\tif (c instanceof Object && d instanceof Object) {\n\t\t\tObject.keys(d).forEach(function (i) {\n\t\t\t\tif (c[i] instanceof Object && d[i] instanceof Object) {\n\t\t\t\t\tc[i] = merge(c[i], d[i]);\n\t\t\t\t} else if (c[i] instanceof Array && d[i] instanceof Array) {\n\t\t\t\t\tc[i] = c[i].concat(d[i]);\n\t\t\t\t} else {\n\t\t\t\t\tc[i] = d[i];\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (c instanceof Array && d instanceof Array) {\n\t\t\tc = c.concat(d);\n\t\t} else {\n\t\t\tc = d;\n\t\t}\n\n\t\treturn c;\n\t}\n\n\tfunction patch() {\n\t\tvar ogdata = arguments[0] === undefined ? {} : arguments[0];\n\t\tvar data = arguments[1] === undefined ? {} : arguments[1];\n\t\tvar key = arguments[2] === undefined ? \"\" : arguments[2];\n\t\tvar overwrite = arguments[3] === undefined ? false : arguments[3];\n\n\t\tvar result = [];\n\n\t\tif (overwrite) {\n\t\t\titerate(ogdata, function (v, k) {\n\t\t\t\tif (k !== key && data[k] === undefined) {\n\t\t\t\t\tresult.push({ op: \"remove\", path: \"/\" + k });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\titerate(data, function (v, k) {\n\t\t\tif (k !== key && ogdata[k] === undefined) {\n\t\t\t\tresult.push({ op: \"add\", path: \"/\" + k, value: v });\n\t\t\t} else if (JSON.stringify(ogdata[k]) !== JSON.stringify(v)) {\n\t\t\t\tresult.push({ op: \"replace\", path: \"/\" + k, value: v });\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction s() {\n\t\treturn ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n\t}\n\n\tfunction setIndexValue(index, key, value) {\n\t\tif (!index.has(key)) {\n\t\t\tindex.set(key, new Set());\n\t\t}\n\n\t\tindex.get(key).add(value);\n\t}\n\n\tfunction setIndex(index, indexes, delimiter, key, data, indice) {\n\t\tif (!indice) {\n\t\t\tindex.forEach(function (i) {\n\t\t\t\tsetIndexValue(indexes.get(i), keyIndex(i, data, delimiter), key);\n\t\t\t});\n\t\t} else {\n\t\t\tsetIndexValue(indexes.get(indice), keyIndex(indice, data, delimiter), key);\n\t\t}\n\t}\n\n\tfunction toObjekt(arg) {\n\t\tvar result = {};\n\n\t\targ.forEach(function (value, key) {\n\t\t\tresult[key] = value;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction uuid() {\n\t\treturn s() + s() + \"-\" + s() + \"-4\" + s().substr(0, 3) + \"-\" + r[Math.floor(Math.random() * 4)] + s().substr(0, 3) + \"-\" + s() + s() + s();\n\t}\n\n\tvar Haro = (function () {\n\t\tfunction Haro(data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar config = arguments[1] === undefined ? {} : arguments[1];\n\n\t\t\t_classCallCheck(this, Haro);\n\n\t\t\tthis.data = new Map();\n\t\t\tthis.delimiter = \"|\";\n\t\t\tthis.config = {\n\t\t\t\tmethod: \"get\",\n\t\t\t\tcredentials: false,\n\t\t\t\theaders: {\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"content-type\": \"application/json\"\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.index = [];\n\t\t\tthis.indexes = new Map();\n\t\t\tthis.patch = false;\n\t\t\tthis.registry = [];\n\t\t\tthis.key = \"\";\n\t\t\tthis.source = \"\";\n\t\t\tthis.total = 0;\n\t\t\tthis.uri = \"\";\n\t\t\tthis.versions = new Map();\n\t\t\tthis.versioning = true;\n\n\t\t\tObject.keys(config).forEach(function (i) {\n\t\t\t\t_this[i] = merge(_this[i], config[i]);\n\t\t\t});\n\n\t\t\tthis.reindex();\n\n\t\t\tif (data) {\n\t\t\t\tthis.batch(data, \"set\");\n\t\t\t}\n\t\t}\n\n\t\t_createClass(Haro, [{\n\t\t\tkey: \"batch\",\n\t\t\tvalue: function batch(args, type) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t del = type === \"del\",\n\t\t\t\t data = undefined,\n\t\t\t\t fn = undefined,\n\t\t\t\t hash = undefined;\n\n\t\t\t\tfunction next() {\n\t\t\t\t\tPromise.all(args.map(fn)).then(function (arg) {\n\t\t\t\t\t\tdefer.resolve(arg);\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (del) {\n\t\t\t\t\tfn = function (i) {\n\t\t\t\t\t\treturn _this2.del(i, true);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfn = function (i) {\n\t\t\t\t\t\treturn _this2.set(null, i, true, true);\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (this.patch) {\n\t\t\t\t\tif (del) {\n\t\t\t\t\t\tdata = patch(this.toArray().map(function (i) {\n\t\t\t\t\t\t\treturn i[_this2.key];\n\t\t\t\t\t\t}), args, this.key, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\thash = {};\n\t\t\t\t\t\targs.forEach(function (i) {\n\t\t\t\t\t\t\tvar key = i[_this2.key];\n\n\t\t\t\t\t\t\tif (key) {\n\t\t\t\t\t\t\t\thash[key] = i;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata.push({ op: \"add\", path: \"/\", value: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdata = data.concat(patch(this.toObject(), hash, this.key, true));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.length > 0) {\n\t\t\t\t\t\tthis.request(this.uri, {\n\t\t\t\t\t\t\tmethod: \"patch\",\n\t\t\t\t\t\t\tbody: JSON.stringify(data)\n\t\t\t\t\t\t}).then(function () {\n\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdefer.resolve();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"clear\",\n\t\t\tvalue: function clear() {\n\t\t\t\tthis.total = 0;\n\t\t\t\tthis.registry = [];\n\t\t\t\tthis.data.clear();\n\t\t\t\tthis.indexes.clear();\n\t\t\t\tthis.versions.clear();\n\n\t\t\t\treturn this.reindex();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"del\",\n\t\t\tvalue: function del(key) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar batch = arguments[1] === undefined ? false : arguments[1];\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t next = undefined;\n\n\t\t\t\tnext = function () {\n\t\t\t\t\tvar index = _this3.registry.indexOf(key);\n\n\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t_this3.registry.shift();\n\t\t\t\t\t\t} else if (index === _this3.registry.length - 1) {\n\t\t\t\t\t\t\t_this3.registry.pop();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_this3.registry.splice(index, 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdelIndex(_this3.index, _this3.indexes, _this3.delimiter, key, _this3.data.get(key));\n\t\t\t\t\t\t_this3.data[\"delete\"](key);\n\t\t\t\t\t\t--_this3.total;\n\n\t\t\t\t\t\tif (_this3.versioning) {\n\t\t\t\t\t\t\t_this3.versions[\"delete\"](key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdefer.resolve();\n\t\t\t\t};\n\n\t\t\t\tif (this.data.has(key)) {\n\t\t\t\t\tif (!batch && this.uri) {\n\t\t\t\t\t\tif (this.patch) {\n\t\t\t\t\t\t\tthis.request(concatURI(this.uri, null), {\n\t\t\t\t\t\t\t\tmethod: \"patch\",\n\t\t\t\t\t\t\t\tbody: JSON.stringify([{ op: \"remove\", path: \"/\" + key }])\n\t\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\t\tif (e[1] === 405) {\n\t\t\t\t\t\t\t\t\t_this3.patch = false;\n\t\t\t\t\t\t\t\t\t_this3.request(concatURI(_this3.uri, key), {\n\t\t\t\t\t\t\t\t\t\tmethod: \"delete\"\n\t\t\t\t\t\t\t\t\t}).then(next, function (err) {\n\t\t\t\t\t\t\t\t\t\tdefer.reject(err);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.request(concatURI(this.uri, key), {\n\t\t\t\t\t\t\t\tmethod: \"delete\"\n\t\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdefer.reject(new Error(\"Record not found\"));\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"entries\",\n\t\t\tvalue: function entries() {\n\t\t\t\treturn this.data.entries();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"find\",\n\t\t\tvalue: function find(where) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tvar key = Object.keys(where).sort().join(this.delimiter),\n\t\t\t\t value = keyIndex(key, where, this.delimiter),\n\t\t\t\t result = [];\n\n\t\t\t\tif (this.indexes.has(key)) {\n\t\t\t\t\t(this.indexes.get(key).get(value) || new Set()).forEach(function (i) {\n\t\t\t\t\t\tresult.push(_this4.get(i));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"filter\",\n\t\t\tvalue: function filter(fn) {\n\t\t\t\tvar result = [];\n\n\t\t\t\tthis.forEach(function (value, key) {\n\t\t\t\t\tif (fn(value, key) === true) {\n\t\t\t\t\t\tresult.push(tuple(key, value));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"forEach\",\n\t\t\tvalue: function forEach(fn, ctx) {\n\t\t\t\tthis.data.forEach(function (value, key) {\n\t\t\t\t\tfn(clone(value), clone(key));\n\t\t\t\t}, ctx);\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"get\",\n\t\t\tvalue: function get(key) {\n\t\t\t\tvar output = undefined;\n\n\t\t\t\tif (this.data.has(key)) {\n\t\t\t\t\toutput = tuple(key, this.data.get(key));\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"keys\",\n\t\t\tvalue: function keys() {\n\t\t\t\treturn this.data.keys();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"limit\",\n\t\t\tvalue: function limit(offset, max) {\n\t\t\t\tif (offset === undefined) offset = 0;\n\n\t\t\t\tvar loffset = offset,\n\t\t\t\t lmax = max,\n\t\t\t\t list = [],\n\t\t\t\t i = undefined,\n\t\t\t\t k = undefined,\n\t\t\t\t nth = undefined;\n\n\t\t\t\tif (lmax === undefined) {\n\t\t\t\t\tlmax = loffset;\n\t\t\t\t\tloffset = 0;\n\t\t\t\t}\n\n\t\t\t\ti = loffset;\n\t\t\t\tnth = loffset + lmax;\n\n\t\t\t\tif (i < 0 || i >= nth) {\n\t\t\t\t\tthrow new Error(\"Invalid range\");\n\t\t\t\t}\n\n\t\t\t\tdo {\n\t\t\t\t\tk = this.registry[i];\n\n\t\t\t\t\tif (k) {\n\t\t\t\t\t\tlist.push(this.get(k));\n\t\t\t\t\t}\n\t\t\t\t} while (++i < nth);\n\n\t\t\t\treturn tuple.apply(tuple, list);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"map\",\n\t\t\tvalue: function map(fn) {\n\t\t\t\tvar result = [];\n\n\t\t\t\tthis.forEach(function (value, key) {\n\t\t\t\t\tresult.push(fn(value, key));\n\t\t\t\t});\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"reindex\",\n\t\t\tvalue: function reindex(index) {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\tif (!index) {\n\t\t\t\t\tthis.indexes.clear();\n\t\t\t\t\tthis.index.forEach(function (i) {\n\t\t\t\t\t\t_this5.indexes.set(i, new Map());\n\t\t\t\t\t});\n\t\t\t\t\tthis.forEach(function (data, key) {\n\t\t\t\t\t\t_this5.index.forEach(function (i) {\n\t\t\t\t\t\t\tsetIndex(_this5.index, _this5.indexes, _this5.delimiter, key, data, i);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.indexes.set(index, new Map());\n\t\t\t\t\tthis.forEach(function (data, key) {\n\t\t\t\t\t\tsetIndex(_this5.index, _this5.indexes, _this5.delimiter, key, data, index);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"request\",\n\t\t\tvalue: function request(input) {\n\t\t\t\tvar config = arguments[1] === undefined ? {} : arguments[1];\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t cfg = merge(this.config, config);\n\n\t\t\t\tcfg.method = cfg.method.toUpperCase();\n\n\t\t\t\tfetch(input, cfg).then(function (res) {\n\t\t\t\t\tvar status = res.status,\n\t\t\t\t\t headers = undefined;\n\n\t\t\t\t\tif (res.headers._headers) {\n\t\t\t\t\t\theaders = {};\n\t\t\t\t\t\tObject.keys(res.headers._headers).forEach(function (i) {\n\t\t\t\t\t\t\theaders[i] = res.headers._headers[i].join(\", \");\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\theaders = toObjekt(res.headers);\n\t\t\t\t\t}\n\n\t\t\t\t\tres[res.headers.get(\"content-type\").indexOf(\"application/json\") > -1 ? \"json\" : \"text\"]().then(function (arg) {\n\t\t\t\t\t\tdefer[status < 200 || status >= 400 ? \"reject\" : \"resolve\"](tuple(arg, status, headers));\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(tuple(e.message, status, headers));\n\t\t\t\t\t});\n\t\t\t\t}, function (e) {\n\t\t\t\t\tdefer.reject(tuple(e.message, 0, {}));\n\t\t\t\t});\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"search\",\n\t\t\tvalue: function search(value, index) {\n\t\t\t\tvar _this6 = this;\n\n\t\t\t\tvar indexes = index ? this.index.indexOf(index) > -1 ? [index] : [] : this.index,\n\t\t\t\t result = [],\n\t\t\t\t fn = typeof value === \"function\",\n\t\t\t\t rgex = value instanceof RegExp,\n\t\t\t\t seen = new Set();\n\n\t\t\t\tif (value) {\n\t\t\t\t\tindexes.forEach(function (i) {\n\t\t\t\t\t\tvar idx = _this6.indexes.get(i);\n\n\t\t\t\t\t\tif (idx) {\n\t\t\t\t\t\t\tidx.forEach(function (lset, lkey) {\n\t\t\t\t\t\t\t\tif (fn && value(lkey) || rgex && value.test(lkey) || lkey === value) {\n\t\t\t\t\t\t\t\t\tlset.forEach(function (key) {\n\t\t\t\t\t\t\t\t\t\tif (!seen.has(key)) {\n\t\t\t\t\t\t\t\t\t\t\tseen.add(key);\n\t\t\t\t\t\t\t\t\t\t\tresult.push(_this6.get(key));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"set\",\n\t\t\tvalue: function set(key, data) {\n\t\t\t\tvar _this7 = this;\n\n\t\t\t\tvar batch = arguments[2] === undefined ? false : arguments[2];\n\t\t\t\tvar override = arguments[3] === undefined ? false : arguments[3];\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t method = \"post\",\n\t\t\t\t ldata = clone(data),\n\t\t\t\t lkey = key,\n\t\t\t\t body = undefined,\n\t\t\t\t ogdata = undefined;\n\n\t\t\t\tvar next = function next(arg) {\n\t\t\t\t\tvar xdata = arg ? arg[0] : {};\n\n\t\t\t\t\tif (lkey === null) {\n\t\t\t\t\t\tif (_this7.key) {\n\t\t\t\t\t\t\tif (_this7.source) {\n\t\t\t\t\t\t\t\t_this7.source.split(\".\").forEach(function (i) {\n\t\t\t\t\t\t\t\t\txdata = xdata[i] || {};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlkey = xdata[_this7.key] || ldata[_this7.key] || uuid();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlkey = uuid();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (method === \"post\") {\n\t\t\t\t\t\t_this7.registry[_this7.total] = lkey;\n\t\t\t\t\t\t++_this7.total;\n\n\t\t\t\t\t\tif (_this7.versioning) {\n\t\t\t\t\t\t\t_this7.versions.set(lkey, new Set());\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (_this7.versioning) {\n\t\t\t\t\t\t\t_this7.versions.get(lkey).add(tuple(ogdata));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdelIndex(_this7.index, _this7.indexes, _this7.delimiter, lkey, ogdata);\n\t\t\t\t\t}\n\n\t\t\t\t\t_this7.data.set(lkey, ldata);\n\t\t\t\t\tsetIndex(_this7.index, _this7.indexes, _this7.delimiter, lkey, ldata);\n\t\t\t\t\tdefer.resolve(_this7.get(lkey));\n\t\t\t\t};\n\n\t\t\t\tif (lkey === undefined || lkey === null) {\n\t\t\t\t\tlkey = null;\n\t\t\t\t} else if (this.data.has(lkey)) {\n\t\t\t\t\tmethod = \"put\";\n\t\t\t\t\togdata = this.data.get(lkey);\n\n\t\t\t\t\tif (!override) {\n\t\t\t\t\t\tldata = merge(this.get(lkey)[1], ldata);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!batch && this.uri) {\n\t\t\t\t\tif (this.patch) {\n\t\t\t\t\t\tif (method === \"post\") {\n\t\t\t\t\t\t\tbody = [{ op: \"add\", path: \"/\", value: ldata }];\n\t\t\t\t\t\t} else if (override) {\n\t\t\t\t\t\t\tbody = [{ op: \"replace\", path: \"/\", value: ldata }];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbody = patch(ogdata, ldata, this.key);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.request(concatURI(this.uri, lkey), {\n\t\t\t\t\t\t\tmethod: \"patch\",\n\t\t\t\t\t\t\tbody: JSON.stringify(body)\n\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\tif (e[1] === 405) {\n\t\t\t\t\t\t\t\t_this7.patch = false;\n\t\t\t\t\t\t\t\t_this7.request(concatURI(_this7.uri, lkey), {\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tbody: JSON.stringify(ldata)\n\t\t\t\t\t\t\t\t}).then(next, function (err) {\n\t\t\t\t\t\t\t\t\tdefer.reject(err);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.request(concatURI(this.uri, lkey), {\n\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\tbody: JSON.stringify(ldata)\n\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"setUri\",\n\t\t\tvalue: function setUri(uri) {\n\t\t\t\tvar clear = arguments[1] === undefined ? false : arguments[1];\n\n\t\t\t\tvar defer = deferred();\n\n\t\t\t\tthis.uri = uri;\n\n\t\t\t\tif (this.uri) {\n\t\t\t\t\tthis.sync(clear).then(function (arg) {\n\t\t\t\t\t\tdefer.resolve(arg);\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdefer.resolve([]);\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"sort\",\n\t\t\tvalue: function sort(fn) {\n\t\t\t\treturn this.toArray().sort(fn);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"sortBy\",\n\t\t\tvalue: function sortBy(index) {\n\t\t\t\tvar _this8 = this;\n\n\t\t\t\tvar result = [],\n\t\t\t\t keys = [],\n\t\t\t\t lindex = undefined;\n\n\t\t\t\tif (!this.indexes.has(index)) {\n\t\t\t\t\tthis.index.push(index);\n\t\t\t\t\tthis.reindex(index);\n\t\t\t\t}\n\n\t\t\t\tlindex = this.indexes.get(index);\n\t\t\t\tlindex.forEach(function (idx, key) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t});\n\n\t\t\t\tkeys.sort().forEach(function (i) {\n\t\t\t\t\tlindex.get(i).forEach(function (key) {\n\t\t\t\t\t\tresult.push(_this8.get(key));\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"sync\",\n\t\t\tvalue: function sync() {\n\t\t\t\tvar _this9 = this;\n\n\t\t\t\tvar clear = arguments[0] === undefined ? false : arguments[0];\n\n\t\t\t\tvar defer = deferred();\n\n\t\t\t\tthis.request(this.uri).then(function (arg) {\n\t\t\t\t\tvar data = arg[0];\n\n\t\t\t\t\t_this9.patch = (arg[2].Allow || arg[2].allow || \"\").indexOf(\"PATCH\") > -1;\n\n\t\t\t\t\tif (_this9.source) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t_this9.source.split(\".\").forEach(function (i) {\n\t\t\t\t\t\t\t\tdata = data[i];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn defer.reject(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (clear) {\n\t\t\t\t\t\t_this9.clear();\n\t\t\t\t\t}\n\n\t\t\t\t\t_this9.batch(data, \"set\").then(function (records) {\n\t\t\t\t\t\tdefer.resolve(records);\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t});\n\t\t\t\t}, function (e) {\n\t\t\t\t\tdefer.reject(e[0] || e);\n\t\t\t\t});\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"toArray\",\n\t\t\tvalue: function toArray() {\n\t\t\t\tvar result = [];\n\n\t\t\t\tthis.forEach(function (value) {\n\t\t\t\t\tresult.push(value);\n\t\t\t\t});\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"toObject\",\n\t\t\tvalue: function toObject() {\n\t\t\t\treturn toObjekt(this);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"values\",\n\t\t\tvalue: function values() {\n\t\t\t\treturn this.data.values();\n\t\t\t}\n\t\t}]);\n\n\t\treturn Haro;\n\t})();\n\n\tfunction factory() {\n\t\tvar data = arguments[0] === undefined ? null : arguments[0];\n\t\tvar config = arguments[1] === undefined ? {} : arguments[1];\n\t\tvar indexes = arguments[2] === undefined ? [] : arguments[2];\n\n\t\treturn new Haro(data, config, indexes);\n\t}\n\n\tfactory.version = \"1.3.2\";\n\n\t// Node, AMD & window supported\n\tif (typeof exports !== \"undefined\") {\n\t\tmodule.exports = factory;\n\t} else if (typeof define === \"function\") {\n\t\tdefine(function () {\n\t\t\treturn factory;\n\t\t});\n\t} else {\n\t\tglobal.haro = factory;\n\t}\n})(typeof global !== \"undefined\" ? global : window);\n"]} \ No newline at end of file +{"version":3,"file":"haro.min.js","sources":["haro.js"],"names":["_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","global","clone","arg","JSON","parse","stringify","concatURI","left","right","replace","regex","querystring","endslash","deferred","promise","undefined","resolver","rejecter","Promise","resolve","reject","keyIndex","data","delimiter","keys","split","sort","result","map","String","join","delIndex","index","indexes","forEach","idx","get","value","o","has","size","iterate","obj","fn","call","merge","a","b","c","d","Array","concat","patch","ogdata","arguments","overwrite","v","k","push","op","path","s","Math","random","toString","substring","setIndexValue","set","Set","add","setIndex","indice","toObjekt","uuid","substr","r","floor","factory","config","Haro","require","Map","fetch","tuple","_this","this","method","credentials","headers","accept","content-type","registry","source","total","uri","versions","versioning","reindex","batch","args","type","next","all","then","defer","e","_this2","del","hash","toArray","toObject","request","body","clear","_this3","indexOf","shift","pop","splice","err","Error","entries","where","_this4","apply","ctx","output","offset","max","loffset","lmax","list","nth","_this5","input","cfg","toUpperCase","res","status","_headers","message","_this6","rgex","RegExp","seen","lset","lkey","test","_this7","override","ldata","xdata","sync","_this8","lindex","_this9","Allow","allow","records","values","version","exports","module","define","haro","window"],"mappings":"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","sourcesContent":["/**\r\n * Harō is a modern immutable DataStore using Maps, Sets, Promises, & Tuples\r\n *\r\n * @author Jason Mulligan \r\n * @copyright 2015\r\n * @license BSD-3-Clause\r\n * @link http://haro.rocks\r\n * @version 1.3.3\r\n */\n\"use strict\";\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n(function (global) {\n\tvar Promise = global.Promise || require(\"es6-promise\").Promise;\n\tvar Map = global.Map || require(\"es6-map\");\n\tvar Set = global.Set || require(\"es6-set\");\n\tvar fetch = global.fetch || require(\"node-fetch\");\n\tvar tuple = global.tuple || require(\"tiny-tuple\");\n\tvar r = [8, 9, \"a\", \"b\"];\n\tvar regex = {\n\t\tquerystring: /\\?.*/,\n\t\tendslash: /\\/$/\n\t};\n\n\tfunction clone(arg) {\n\t\treturn JSON.parse(JSON.stringify(arg));\n\t}\n\n\tfunction concatURI(left, right) {\n\t\treturn left.replace(regex.querystring, \"\").replace(regex.endslash, \"\") + (right ? \"/\" + right : \"\");\n\t}\n\n\tfunction deferred() {\n\t\tvar promise = undefined,\n\t\t resolver = undefined,\n\t\t rejecter = undefined;\n\n\t\tpromise = new Promise(function (resolve, reject) {\n\t\t\tresolver = resolve;\n\t\t\trejecter = reject;\n\t\t});\n\n\t\treturn { resolve: resolver, reject: rejecter, promise: promise };\n\t}\n\n\tfunction keyIndex(key, data, delimiter) {\n\t\tvar keys = key.split(delimiter).sort(),\n\t\t result = undefined;\n\n\t\tif (keys.length > 1) {\n\t\t\tresult = keys.map(function (i) {\n\t\t\t\treturn String(data[i]);\n\t\t\t}).join(delimiter);\n\t\t} else {\n\t\t\tresult = data[key];\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tfunction delIndex(index, indexes, delimiter, key, data) {\n\t\tindex.forEach(function (i) {\n\t\t\tvar idx = indexes.get(i),\n\t\t\t value = keyIndex(i, data, delimiter),\n\t\t\t o = undefined;\n\n\t\t\tif (idx.has(value)) {\n\t\t\t\to = idx.get(value);\n\t\t\t\to[\"delete\"](key);\n\n\t\t\t\tif (o.size === 0) {\n\t\t\t\t\tidx[\"delete\"](value);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction iterate(obj, fn) {\n\t\tif (obj instanceof Object) {\n\t\t\tObject.keys(obj).forEach(function (i) {\n\t\t\t\tfn.call(obj, obj[i], i);\n\t\t\t});\n\t\t} else {\n\t\t\tobj.forEach(fn);\n\t\t}\n\t}\n\n\tfunction merge(a, b) {\n\t\tvar c = clone(a),\n\t\t d = clone(b);\n\n\t\tif (c instanceof Object && d instanceof Object) {\n\t\t\tObject.keys(d).forEach(function (i) {\n\t\t\t\tif (c[i] instanceof Object && d[i] instanceof Object) {\n\t\t\t\t\tc[i] = merge(c[i], d[i]);\n\t\t\t\t} else if (c[i] instanceof Array && d[i] instanceof Array) {\n\t\t\t\t\tc[i] = c[i].concat(d[i]);\n\t\t\t\t} else {\n\t\t\t\t\tc[i] = d[i];\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (c instanceof Array && d instanceof Array) {\n\t\t\tc = c.concat(d);\n\t\t} else {\n\t\t\tc = d;\n\t\t}\n\n\t\treturn c;\n\t}\n\n\tfunction patch() {\n\t\tvar ogdata = arguments[0] === undefined ? {} : arguments[0];\n\t\tvar data = arguments[1] === undefined ? {} : arguments[1];\n\t\tvar key = arguments[2] === undefined ? \"\" : arguments[2];\n\t\tvar overwrite = arguments[3] === undefined ? false : arguments[3];\n\n\t\tvar result = [];\n\n\t\tif (overwrite) {\n\t\t\titerate(ogdata, function (v, k) {\n\t\t\t\tif (k !== key && data[k] === undefined) {\n\t\t\t\t\tresult.push({ op: \"remove\", path: \"/\" + k });\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\titerate(data, function (v, k) {\n\t\t\tif (k !== key && ogdata[k] === undefined) {\n\t\t\t\tresult.push({ op: \"add\", path: \"/\" + k, value: v });\n\t\t\t} else if (JSON.stringify(ogdata[k]) !== JSON.stringify(v)) {\n\t\t\t\tresult.push({ op: \"replace\", path: \"/\" + k, value: v });\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction s() {\n\t\treturn ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n\t}\n\n\tfunction setIndexValue(index, key, value) {\n\t\tif (!index.has(key)) {\n\t\t\tindex.set(key, new Set());\n\t\t}\n\n\t\tindex.get(key).add(value);\n\t}\n\n\tfunction setIndex(index, indexes, delimiter, key, data, indice) {\n\t\tif (!indice) {\n\t\t\tindex.forEach(function (i) {\n\t\t\t\tsetIndexValue(indexes.get(i), keyIndex(i, data, delimiter), key);\n\t\t\t});\n\t\t} else {\n\t\t\tsetIndexValue(indexes.get(indice), keyIndex(indice, data, delimiter), key);\n\t\t}\n\t}\n\n\tfunction toObjekt(arg) {\n\t\tvar result = {};\n\n\t\targ.forEach(function (value, key) {\n\t\t\tresult[key] = value;\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tfunction uuid() {\n\t\treturn s() + s() + \"-\" + s() + \"-4\" + s().substr(0, 3) + \"-\" + r[Math.floor(Math.random() * 4)] + s().substr(0, 3) + \"-\" + s() + s() + s();\n\t}\n\n\tvar Haro = (function () {\n\t\tfunction Haro(data) {\n\t\t\tvar _this = this;\n\n\t\t\tvar config = arguments[1] === undefined ? {} : arguments[1];\n\n\t\t\t_classCallCheck(this, Haro);\n\n\t\t\tthis.data = new Map();\n\t\t\tthis.delimiter = \"|\";\n\t\t\tthis.config = {\n\t\t\t\tmethod: \"get\",\n\t\t\t\tcredentials: false,\n\t\t\t\theaders: {\n\t\t\t\t\taccept: \"application/json\",\n\t\t\t\t\t\"content-type\": \"application/json\"\n\t\t\t\t}\n\t\t\t};\n\t\t\tthis.index = [];\n\t\t\tthis.indexes = new Map();\n\t\t\tthis.patch = false;\n\t\t\tthis.registry = [];\n\t\t\tthis.key = \"\";\n\t\t\tthis.source = \"\";\n\t\t\tthis.total = 0;\n\t\t\tthis.uri = \"\";\n\t\t\tthis.versions = new Map();\n\t\t\tthis.versioning = true;\n\n\t\t\tObject.keys(config).forEach(function (i) {\n\t\t\t\t_this[i] = merge(_this[i], config[i]);\n\t\t\t});\n\n\t\t\tthis.reindex();\n\n\t\t\tif (data) {\n\t\t\t\tthis.batch(data, \"set\");\n\t\t\t}\n\t\t}\n\n\t\t_createClass(Haro, [{\n\t\t\tkey: \"batch\",\n\t\t\tvalue: function batch(args, type) {\n\t\t\t\tvar _this2 = this;\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t del = type === \"del\",\n\t\t\t\t data = undefined,\n\t\t\t\t fn = undefined,\n\t\t\t\t hash = undefined;\n\n\t\t\t\tfunction next() {\n\t\t\t\t\tPromise.all(args.map(fn)).then(function (arg) {\n\t\t\t\t\t\tdefer.resolve(arg);\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (del) {\n\t\t\t\t\tfn = function (i) {\n\t\t\t\t\t\treturn _this2.del(i, true);\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfn = function (i) {\n\t\t\t\t\t\treturn _this2.set(null, i, true, true);\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (this.patch) {\n\t\t\t\t\tif (del) {\n\t\t\t\t\t\tdata = patch(this.toArray().map(function (i) {\n\t\t\t\t\t\t\treturn i[_this2.key];\n\t\t\t\t\t\t}), args, this.key, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdata = [];\n\t\t\t\t\t\thash = {};\n\t\t\t\t\t\targs.forEach(function (i) {\n\t\t\t\t\t\t\tvar key = i[_this2.key];\n\n\t\t\t\t\t\t\tif (key) {\n\t\t\t\t\t\t\t\thash[key] = i;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata.push({ op: \"add\", path: \"/\", value: i });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdata = data.concat(patch(this.toObject(), hash, this.key, true));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (data.length > 0) {\n\t\t\t\t\t\tthis.request(concatURI(this.uri, null), {\n\t\t\t\t\t\t\tmethod: \"patch\",\n\t\t\t\t\t\t\tbody: JSON.stringify(data)\n\t\t\t\t\t\t}).then(function () {\n\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdefer.resolve();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"clear\",\n\t\t\tvalue: function clear() {\n\t\t\t\tthis.total = 0;\n\t\t\t\tthis.registry = [];\n\t\t\t\tthis.data.clear();\n\t\t\t\tthis.indexes.clear();\n\t\t\t\tthis.versions.clear();\n\n\t\t\t\treturn this.reindex();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"del\",\n\t\t\tvalue: function del(key) {\n\t\t\t\tvar _this3 = this;\n\n\t\t\t\tvar batch = arguments[1] === undefined ? false : arguments[1];\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t next = undefined;\n\n\t\t\t\tnext = function () {\n\t\t\t\t\tvar index = _this3.registry.indexOf(key);\n\n\t\t\t\t\tif (index > -1) {\n\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t_this3.registry.shift();\n\t\t\t\t\t\t} else if (index === _this3.registry.length - 1) {\n\t\t\t\t\t\t\t_this3.registry.pop();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t_this3.registry.splice(index, 1);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdelIndex(_this3.index, _this3.indexes, _this3.delimiter, key, _this3.data.get(key));\n\t\t\t\t\t\t_this3.data[\"delete\"](key);\n\t\t\t\t\t\t--_this3.total;\n\n\t\t\t\t\t\tif (_this3.versioning) {\n\t\t\t\t\t\t\t_this3.versions[\"delete\"](key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tdefer.resolve();\n\t\t\t\t};\n\n\t\t\t\tif (this.data.has(key)) {\n\t\t\t\t\tif (!batch && this.uri) {\n\t\t\t\t\t\tif (this.patch) {\n\t\t\t\t\t\t\tthis.request(concatURI(this.uri, null), {\n\t\t\t\t\t\t\t\tmethod: \"patch\",\n\t\t\t\t\t\t\t\tbody: JSON.stringify([{ op: \"remove\", path: \"/\" + key }])\n\t\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\t\tif (e[1] === 405) {\n\t\t\t\t\t\t\t\t\t_this3.patch = false;\n\t\t\t\t\t\t\t\t\t_this3.request(concatURI(_this3.uri, key), {\n\t\t\t\t\t\t\t\t\t\tmethod: \"delete\"\n\t\t\t\t\t\t\t\t\t}).then(next, function (err) {\n\t\t\t\t\t\t\t\t\t\tdefer.reject(err);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.request(concatURI(this.uri, key), {\n\t\t\t\t\t\t\t\tmethod: \"delete\"\n\t\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tdefer.reject(new Error(\"Record not found\"));\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"entries\",\n\t\t\tvalue: function entries() {\n\t\t\t\treturn this.data.entries();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"find\",\n\t\t\tvalue: function find(where) {\n\t\t\t\tvar _this4 = this;\n\n\t\t\t\tvar key = Object.keys(where).sort().join(this.delimiter),\n\t\t\t\t value = keyIndex(key, where, this.delimiter),\n\t\t\t\t result = [];\n\n\t\t\t\tif (this.indexes.has(key)) {\n\t\t\t\t\t(this.indexes.get(key).get(value) || new Set()).forEach(function (i) {\n\t\t\t\t\t\tresult.push(_this4.get(i));\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"filter\",\n\t\t\tvalue: function filter(fn) {\n\t\t\t\tvar result = [];\n\n\t\t\t\tthis.forEach(function (value, key) {\n\t\t\t\t\tif (fn(value, key) === true) {\n\t\t\t\t\t\tresult.push(tuple(key, value));\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"forEach\",\n\t\t\tvalue: function forEach(fn, ctx) {\n\t\t\t\tthis.data.forEach(function (value, key) {\n\t\t\t\t\tfn(clone(value), clone(key));\n\t\t\t\t}, ctx);\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"get\",\n\t\t\tvalue: function get(key) {\n\t\t\t\tvar output = undefined;\n\n\t\t\t\tif (this.data.has(key)) {\n\t\t\t\t\toutput = tuple(key, this.data.get(key));\n\t\t\t\t}\n\n\t\t\t\treturn output;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"keys\",\n\t\t\tvalue: function keys() {\n\t\t\t\treturn this.data.keys();\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"limit\",\n\t\t\tvalue: function limit(offset, max) {\n\t\t\t\tif (offset === undefined) offset = 0;\n\n\t\t\t\tvar loffset = offset,\n\t\t\t\t lmax = max,\n\t\t\t\t list = [],\n\t\t\t\t i = undefined,\n\t\t\t\t k = undefined,\n\t\t\t\t nth = undefined;\n\n\t\t\t\tif (lmax === undefined) {\n\t\t\t\t\tlmax = loffset;\n\t\t\t\t\tloffset = 0;\n\t\t\t\t}\n\n\t\t\t\ti = loffset;\n\t\t\t\tnth = loffset + lmax;\n\n\t\t\t\tif (i < 0 || i >= nth) {\n\t\t\t\t\tthrow new Error(\"Invalid range\");\n\t\t\t\t}\n\n\t\t\t\tdo {\n\t\t\t\t\tk = this.registry[i];\n\n\t\t\t\t\tif (k) {\n\t\t\t\t\t\tlist.push(this.get(k));\n\t\t\t\t\t}\n\t\t\t\t} while (++i < nth);\n\n\t\t\t\treturn tuple.apply(tuple, list);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"map\",\n\t\t\tvalue: function map(fn) {\n\t\t\t\tvar result = [];\n\n\t\t\t\tthis.forEach(function (value, key) {\n\t\t\t\t\tresult.push(fn(value, key));\n\t\t\t\t});\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"reindex\",\n\t\t\tvalue: function reindex(index) {\n\t\t\t\tvar _this5 = this;\n\n\t\t\t\tif (!index) {\n\t\t\t\t\tthis.indexes.clear();\n\t\t\t\t\tthis.index.forEach(function (i) {\n\t\t\t\t\t\t_this5.indexes.set(i, new Map());\n\t\t\t\t\t});\n\t\t\t\t\tthis.forEach(function (data, key) {\n\t\t\t\t\t\t_this5.index.forEach(function (i) {\n\t\t\t\t\t\t\tsetIndex(_this5.index, _this5.indexes, _this5.delimiter, key, data, i);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tthis.indexes.set(index, new Map());\n\t\t\t\t\tthis.forEach(function (data, key) {\n\t\t\t\t\t\tsetIndex(_this5.index, _this5.indexes, _this5.delimiter, key, data, index);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"request\",\n\t\t\tvalue: function request(input) {\n\t\t\t\tvar config = arguments[1] === undefined ? {} : arguments[1];\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t cfg = merge(this.config, config);\n\n\t\t\t\tcfg.method = cfg.method.toUpperCase();\n\n\t\t\t\tfetch(input, cfg).then(function (res) {\n\t\t\t\t\tvar status = res.status,\n\t\t\t\t\t headers = undefined;\n\n\t\t\t\t\tif (res.headers._headers) {\n\t\t\t\t\t\theaders = {};\n\t\t\t\t\t\tObject.keys(res.headers._headers).forEach(function (i) {\n\t\t\t\t\t\t\theaders[i] = res.headers._headers[i].join(\", \");\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\theaders = toObjekt(res.headers);\n\t\t\t\t\t}\n\n\t\t\t\t\tres[res.headers.get(\"content-type\").indexOf(\"application/json\") > -1 ? \"json\" : \"text\"]().then(function (arg) {\n\t\t\t\t\t\tdefer[status < 200 || status >= 400 ? \"reject\" : \"resolve\"](tuple(arg, status, headers));\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(tuple(e.message, status, headers));\n\t\t\t\t\t});\n\t\t\t\t}, function (e) {\n\t\t\t\t\tdefer.reject(tuple(e.message, 0, {}));\n\t\t\t\t});\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"search\",\n\t\t\tvalue: function search(value, index) {\n\t\t\t\tvar _this6 = this;\n\n\t\t\t\tvar indexes = index ? this.index.indexOf(index) > -1 ? [index] : [] : this.index,\n\t\t\t\t result = [],\n\t\t\t\t fn = typeof value === \"function\",\n\t\t\t\t rgex = value instanceof RegExp,\n\t\t\t\t seen = new Set();\n\n\t\t\t\tif (value) {\n\t\t\t\t\tindexes.forEach(function (i) {\n\t\t\t\t\t\tvar idx = _this6.indexes.get(i);\n\n\t\t\t\t\t\tif (idx) {\n\t\t\t\t\t\t\tidx.forEach(function (lset, lkey) {\n\t\t\t\t\t\t\t\tif (fn && value(lkey) || rgex && value.test(lkey) || lkey === value) {\n\t\t\t\t\t\t\t\t\tlset.forEach(function (key) {\n\t\t\t\t\t\t\t\t\t\tif (!seen.has(key)) {\n\t\t\t\t\t\t\t\t\t\t\tseen.add(key);\n\t\t\t\t\t\t\t\t\t\t\tresult.push(_this6.get(key));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"set\",\n\t\t\tvalue: function set(key, data) {\n\t\t\t\tvar _this7 = this;\n\n\t\t\t\tvar batch = arguments[2] === undefined ? false : arguments[2];\n\t\t\t\tvar override = arguments[3] === undefined ? false : arguments[3];\n\n\t\t\t\tvar defer = deferred(),\n\t\t\t\t method = \"post\",\n\t\t\t\t ldata = clone(data),\n\t\t\t\t lkey = key,\n\t\t\t\t body = undefined,\n\t\t\t\t ogdata = undefined;\n\n\t\t\t\tvar next = function next(arg) {\n\t\t\t\t\tvar xdata = arg ? arg[0] : {};\n\n\t\t\t\t\tif (lkey === null) {\n\t\t\t\t\t\tif (_this7.key) {\n\t\t\t\t\t\t\tif (_this7.source) {\n\t\t\t\t\t\t\t\t_this7.source.split(\".\").forEach(function (i) {\n\t\t\t\t\t\t\t\t\txdata = xdata[i] || {};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlkey = xdata[_this7.key] || ldata[_this7.key] || uuid();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlkey = uuid();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (method === \"post\") {\n\t\t\t\t\t\t_this7.registry[_this7.total] = lkey;\n\t\t\t\t\t\t++_this7.total;\n\n\t\t\t\t\t\tif (_this7.versioning) {\n\t\t\t\t\t\t\t_this7.versions.set(lkey, new Set());\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (_this7.versioning) {\n\t\t\t\t\t\t\t_this7.versions.get(lkey).add(tuple(ogdata));\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdelIndex(_this7.index, _this7.indexes, _this7.delimiter, lkey, ogdata);\n\t\t\t\t\t}\n\n\t\t\t\t\t_this7.data.set(lkey, ldata);\n\t\t\t\t\tsetIndex(_this7.index, _this7.indexes, _this7.delimiter, lkey, ldata);\n\t\t\t\t\tdefer.resolve(_this7.get(lkey));\n\t\t\t\t};\n\n\t\t\t\tif (lkey === undefined || lkey === null) {\n\t\t\t\t\tlkey = null;\n\t\t\t\t} else if (this.data.has(lkey)) {\n\t\t\t\t\tmethod = \"put\";\n\t\t\t\t\togdata = this.data.get(lkey);\n\n\t\t\t\t\tif (!override) {\n\t\t\t\t\t\tldata = merge(this.get(lkey)[1], ldata);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!batch && this.uri) {\n\t\t\t\t\tif (this.patch) {\n\t\t\t\t\t\tif (method === \"post\") {\n\t\t\t\t\t\t\tbody = [{ op: \"add\", path: \"/\", value: ldata }];\n\t\t\t\t\t\t} else if (override) {\n\t\t\t\t\t\t\tbody = [{ op: \"replace\", path: \"/\", value: ldata }];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbody = patch(ogdata, ldata, this.key);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.request(concatURI(this.uri, lkey), {\n\t\t\t\t\t\t\tmethod: \"patch\",\n\t\t\t\t\t\t\tbody: JSON.stringify(body)\n\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\tif (e[1] === 405) {\n\t\t\t\t\t\t\t\t_this7.patch = false;\n\t\t\t\t\t\t\t\t_this7.request(concatURI(_this7.uri, lkey), {\n\t\t\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\t\t\tbody: JSON.stringify(ldata)\n\t\t\t\t\t\t\t\t}).then(next, function (err) {\n\t\t\t\t\t\t\t\t\tdefer.reject(err);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.request(concatURI(this.uri, lkey), {\n\t\t\t\t\t\t\tmethod: method,\n\t\t\t\t\t\t\tbody: JSON.stringify(ldata)\n\t\t\t\t\t\t}).then(next, function (e) {\n\t\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tnext();\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"setUri\",\n\t\t\tvalue: function setUri(uri) {\n\t\t\t\tvar clear = arguments[1] === undefined ? false : arguments[1];\n\n\t\t\t\tvar defer = deferred();\n\n\t\t\t\tthis.uri = uri;\n\n\t\t\t\tif (this.uri) {\n\t\t\t\t\tthis.sync(clear).then(function (arg) {\n\t\t\t\t\t\tdefer.resolve(arg);\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdefer.resolve([]);\n\t\t\t\t}\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"sort\",\n\t\t\tvalue: function sort(fn) {\n\t\t\t\treturn this.toArray().sort(fn);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"sortBy\",\n\t\t\tvalue: function sortBy(index) {\n\t\t\t\tvar _this8 = this;\n\n\t\t\t\tvar result = [],\n\t\t\t\t keys = [],\n\t\t\t\t lindex = undefined;\n\n\t\t\t\tif (!this.indexes.has(index)) {\n\t\t\t\t\tthis.index.push(index);\n\t\t\t\t\tthis.reindex(index);\n\t\t\t\t}\n\n\t\t\t\tlindex = this.indexes.get(index);\n\t\t\t\tlindex.forEach(function (idx, key) {\n\t\t\t\t\tkeys.push(key);\n\t\t\t\t});\n\n\t\t\t\tkeys.sort().forEach(function (i) {\n\t\t\t\t\tlindex.get(i).forEach(function (key) {\n\t\t\t\t\t\tresult.push(_this8.get(key));\n\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\t\treturn tuple.apply(tuple, result);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"sync\",\n\t\t\tvalue: function sync() {\n\t\t\t\tvar _this9 = this;\n\n\t\t\t\tvar clear = arguments[0] === undefined ? false : arguments[0];\n\n\t\t\t\tvar defer = deferred();\n\n\t\t\t\tthis.request(this.uri).then(function (arg) {\n\t\t\t\t\tvar data = arg[0];\n\n\t\t\t\t\t_this9.patch = (arg[2].Allow || arg[2].allow || \"\").indexOf(\"PATCH\") > -1;\n\n\t\t\t\t\tif (_this9.source) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t_this9.source.split(\".\").forEach(function (i) {\n\t\t\t\t\t\t\t\tdata = data[i];\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\treturn defer.reject(e);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (clear) {\n\t\t\t\t\t\t_this9.clear();\n\t\t\t\t\t}\n\n\t\t\t\t\t_this9.batch(data, \"set\").then(function (records) {\n\t\t\t\t\t\tdefer.resolve(records);\n\t\t\t\t\t}, function (e) {\n\t\t\t\t\t\tdefer.reject(e);\n\t\t\t\t\t});\n\t\t\t\t}, function (e) {\n\t\t\t\t\tdefer.reject(e[0] || e);\n\t\t\t\t});\n\n\t\t\t\treturn defer.promise;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"toArray\",\n\t\t\tvalue: function toArray() {\n\t\t\t\tvar result = [];\n\n\t\t\t\tthis.forEach(function (value) {\n\t\t\t\t\tresult.push(value);\n\t\t\t\t});\n\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"toObject\",\n\t\t\tvalue: function toObject() {\n\t\t\t\treturn toObjekt(this);\n\t\t\t}\n\t\t}, {\n\t\t\tkey: \"values\",\n\t\t\tvalue: function values() {\n\t\t\t\treturn this.data.values();\n\t\t\t}\n\t\t}]);\n\n\t\treturn Haro;\n\t})();\n\n\tfunction factory() {\n\t\tvar data = arguments[0] === undefined ? null : arguments[0];\n\t\tvar config = arguments[1] === undefined ? {} : arguments[1];\n\t\tvar indexes = arguments[2] === undefined ? [] : arguments[2];\n\n\t\treturn new Haro(data, config, indexes);\n\t}\n\n\tfactory.version = \"1.3.3\";\n\n\t// Node, AMD & window supported\n\tif (typeof exports !== \"undefined\") {\n\t\tmodule.exports = factory;\n\t} else if (typeof define === \"function\") {\n\t\tdefine(function () {\n\t\t\treturn factory;\n\t\t});\n\t} else {\n\t\tglobal.haro = factory;\n\t}\n})(typeof global !== \"undefined\" ? global : window);\n"]} \ No newline at end of file diff --git a/package.json b/package.json index 7fb04ad..91a8985 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "haro", - "version": "1.3.2", + "version": "1.3.3", "description": "Harō is a modern immutable DataStore using Maps, Sets, Promises, & Tuples", "main": "lib/haro.js", "scripts": { diff --git a/src/haro.js b/src/haro.js index bbe66b5..4ec7b8c 100644 --- a/src/haro.js +++ b/src/haro.js @@ -76,7 +76,7 @@ class Haro { } if (data.length > 0) { - this.request(this.uri, { + this.request(concatURI(this.uri, null), { method: "patch", body: JSON.stringify(data) }).then(function () {