/* key-value-pointer v0.7.4, (c) 2015, 2017, 2019 Steen Klingberg. License: MIT */ (function(glob,f){if(typeof define==="function"&&define.amd){define(f)}else if(typeof module!=="undefined"){module.exports=f()}else{glob.keyValuePointer=f()}})(this,function(){function select(obj,sel){var s,r,done=false;if(typeof obj==="string"){obj=JSON.parse(obj)}if(typeof obj!=="object"){return}if(typeof sel==="string"){s=sel.split("/")}else if(Array.isArray(sel)){s=sel}else{return}r=obj;s.forEach(function(key){if(done)return;key=key.replace("~1","/").replace("~0","~");if(key!==""){if(typeof r[key]==="undefined"){done=true;r=undefined}else{r=r[key]}}});return r}function basename(pointer,suffix){if(suffix){var r=new RegExp(suffix.replace(".",".")+"$");pointer=pointer.replace(r,"")}return pointer.substr(pointer.lastIndexOf("/")+1)}function dirname(pointer){return pointer.substr(0,pointer.lastIndexOf("/"))}function kvp(obj){var f=function(){},idx={"0/0":""},res;if(typeof obj==="string"){obj=JSON.parse(obj)}if(typeof obj==="object"&&obj!==null){f.collection=[obj]}else{f.collection=[undefined]}function traverse(collection,cb,level,ack){var x,i,done,target,list=[];for(i=0;i0){return traverse(list,cb,level+1,ack)}else if(ack){return kvp(ack.collection[0])}else{return f.collection[0]}}f.apply=function(cb){cb.call(f);return this};f.query=function(pointer,cb){if(typeof pointer==="function"){cb=pointer;return traverse(this.collection,cb,0)}else{var s=select(this.collection[0],pointer);if(typeof s==="object"){idx["0/0"]=pointer;return traverse([s],cb,0)}}};f.filter=function(pointer,cb){if(typeof pointer==="function"){cb=pointer;return traverse(this.collection,cb,0,kvp({}))}else{if(typeof cb!=="function"){cb=function(){return true}}var s=select(this.collection[0],pointer);if(typeof s==="object"){idx["0/0"]=pointer;return traverse([s],cb,0,kvp({}))}}};f.select=function(pointer){return select(this.collection[0],pointer)};f.replace=function(pointer,value){var sel=pointer.split("/"),key=sel.pop(),par=select(this.collection[0],sel);if(typeof par==="object"){select(this.collection[0],sel)[key]=value;return true}else{return false}};f.remove=function(pointer){var sel=pointer.split("/"),key=sel.pop(),par=select(this.collection[0],sel);if(typeof par==="object"&&par[key]){delete par[key];return true}else{return false}};f.insert=function(pointer,value){var sel=pointer.split("/"),o,res=false,r=this.collection[0],a=[];sel.forEach(function(v,i){a.push(v);o=select(obj,a);if(!o){if(i