Skip to content

Instantly share code, notes, and snippets.

@Akkuma
Last active October 22, 2015 12:47
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 Akkuma/aae2971cade69c844bd2 to your computer and use it in GitHub Desktop.
Save Akkuma/aae2971cade69c844bd2 to your computer and use it in GitHub Desktop.
!function(r){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=r();else if("function"==typeof define&&define.amd)define([],r);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.JSON8Patch=r()}}(function(){return function r(e,t,n){function o(a,s){if(!t[a]){if(!e[a]){var u="function"==typeof require&&require;if(!s&&u)return u(a,!0);if(i)return i(a,!0);var p=Error("Cannot find module '"+a+"'");throw p.code="MODULE_NOT_FOUND",p}var f=t[a]={exports:{}};e[a][0].call(f.exports,function(r){var t=e[a][1][r];return o(t?t:r)},f,f.exports,r,e,t,n)}return t[a].exports}for(var i="function"==typeof require&&require,a=0;a<n.length;a++)o(n[a]);return o}({1:[function(r,e){"use strict";var t=r("./lib/apply");e.exports.patch=t,e.exports.apply=t,e.exports.revert=r("./lib/revert"),e.exports.diff=r("./lib/diff"),e.exports.add=r("./lib/add"),e.exports.copy=r("./lib/copy"),e.exports.move=r("./lib/move"),e.exports.remove=r("./lib/remove"),e.exports.replace=r("./lib/replace"),e.exports.test=r("./lib/test"),e.exports.get=r("./lib/get"),e.exports.has=r("./lib/has"),e.exports.pack=r("./lib/pack"),e.exports.unpack=r("./lib/unpack")},{"./lib/add":2,"./lib/apply":3,"./lib/copy":4,"./lib/diff":5,"./lib/get":6,"./lib/has":7,"./lib/move":8,"./lib/pack":9,"./lib/remove":11,"./lib/replace":12,"./lib/revert":13,"./lib/test":14,"./lib/unpack":15}],2:[function(r,e){"use strict";var t=r("json8-pointer"),n=t.parse,o=t.walk;e.exports=function(r,e,t){var i=n(e);if(0===i.length)return{doc:t,previous:r};var a,s,u=o(r,i),p=u[0],f=u[1];return Array.isArray(f)?"-"===p?(f.push(t),s=f.length-1):f.splice(p,0,t):(a=f[p],f[p]=t),{doc:r,previous:a,idx:s}}},{"json8-pointer":16}],3:[function(r,e){"use strict";e.exports=r("./patch").apply},{"./patch":10}],4:[function(r,e){"use strict";var t=r("./get"),n=r("./add");e.exports=function(r,e,o){var i=t(r,e);return n(r,o,i)}},{"./add":2,"./get":6}],5:[function(r,e){"use strict";var t=r("json8-pointer").serialize,n=r("json8/lib/equal"),o=r("json8/lib/type"),i="array",a="object";e.exports=function s(r,e,u){var p=[],f=u||[],c=o(r),l=o(e);if(l!==c)return p.push(void 0===c?{op:"add",path:t(f),value:e}:{op:"replace",path:t(f),value:e}),p;if(l!==i&&l!==a)return n(r,e)||p.push({op:"replace",path:t(f),value:e}),p;if(r===e)return p;if(Array.isArray(e)){if(0===r.length&&0===e.length)return p;if(n(r,e))return p;p.push({op:"replace",path:t(f),value:e})}else if(l===a){var v,d,h,y;for(h=Object.keys(e),v=0,d=h.length;d>v;v++)y=h[v],p=p.concat(s(r[y],e[y],f.concat([y])));for(h=Object.keys(r),v=0,d=h.length;d>v;v++)y=h[v],void 0===e[y]&&p.push({op:"remove",path:t(f.concat([y]))})}return p}},{"json8-pointer":16,"json8/lib/equal":22,"json8/lib/type":23}],6:[function(r,e){"use strict";var t=r("json8-pointer"),n=t.walk,o=t.parse;e.exports=function(r,e){var t=o(e);if(0===t.length)return r;var i=n(r,t),a=i[0],s=i[1];return s[a]}},{"json8-pointer":16}],7:[function(r,e){"use strict";var t=r("json8-pointer"),n=t.walk,o=t.parse;e.exports=function(r,e){var t=o(e);if(0===t.length)return!0;var i=n(r,t),a=i[0],s=i[1];return a in s}},{"json8-pointer":16}],8:[function(r,e){"use strict";var t=r("./remove"),n=r("./add");e.exports=function(r,e,o){var i=t(r,e);return n(r,o,i.previous)}},{"./add":2,"./remove":11}],9:[function(r,e){"use strict";var t=Object.create(null);t.add=0,t.remove=1,t.replace=2,t.move=3,t.copy=4,t.test=5,e.exports=function(r){for(var e=[],n=0,o=r.length;o>n;n++){var i=r[n],a=t[i.op],s=[a,i.path];0===a||2===a||5===a?s.push(i.value):1!==a&&s.push(i.from),e.push(s)}return e}},{}],10:[function(r,e){"use strict";var t=r("json8-pointer"),n=t.parse,o=t.serialize,i=Object.create(null);i.add=r("./add"),i.copy=r("./copy"),i.move=r("./move"),i.remove=r("./remove"),i.replace=r("./replace"),i.test=r("./test");var a=function(r,e){if("string"==typeof e.path)var t=n(e.path);if("string"==typeof e.from)var o=n(e.from);switch(e.op){case"add":case"replace":case"test":if(void 0===e.value)throw Error("Missing value parameter");return i[e.op](r,t,e.value);case"move":case"copy":return i[e.op](r,o,t);case"remove":return i[e.op](r,t)}throw Error(e.op+" isn't a valid operation")},s=function(r,e,t){var i=r.op,a=r.path;if("copy"===i||"add"===i&&void 0===e){if(void 0===t)return{op:"remove",path:a};var s=n(a);return s[s.length-1]=""+t,{op:"remove",path:o(s)}}return"replace"===i?{op:"replace",path:a,value:e}:"move"===i?{op:"move",path:r.from,from:a}:"add"===i||"remove"===i?{op:"add",path:a,value:e}:"test"===i?{op:"test",path:a,value:r.value}:void 0},u=function(r,e,t){if(!Array.isArray(e))throw Error("Invalid argument, patch must be an array");for(var n=[],o=0,i=e.length;i>o;o++){var s,u=e[o];try{s=a(r,u)}catch(p){throw f(r,n),p}r=s.doc,n.push([u,s.previous,s.idx])}var c={doc:r};return t&&"object"==typeof t&&t.reversible===!0&&(c.revert=n),c},p=function(r){for(var e=[],t=0,n=r.length;n>t;t++){var o=r[t];e.unshift(s(o[0],o[1],o[2]))}return e},f=function(r,e){var t=p(e);return u(r,t)};e.exports.foo=p,e.exports.apply=u,e.exports.revert=f,e.exports.reverse=s},{"./add":2,"./copy":4,"./move":8,"./remove":11,"./replace":12,"./test":14,"json8-pointer":16}],11:[function(r,e){"use strict";var t=r("json8-pointer"),n=t.parse,o=t.walk;e.exports=function(r,e){var t=n(e);if(0===t.length)return{doc:void 0,previous:r};var i=o(r,t),a=i[0],s=i[1],u=s[a];if(void 0===u)throw Error("Location not found");return Array.isArray(s)?s.splice(a,1):delete s[a],{doc:r,previous:u}}},{"json8-pointer":16}],12:[function(r,e){"use strict";var t=r("json8-pointer"),n=t.parse,o=t.walk;e.exports=function(r,e,t){var i=n(e);if(0===i.length)return{doc:t,previous:r};var a=o(r,i),s=a[0],u=a[1],p=u[s];if(void 0===p)throw Error("Location not found");return u[s]=t,{doc:r,previous:p}}},{"json8-pointer":16}],13:[function(r,e){"use strict";e.exports=r("./patch").revert},{"./patch":10}],14:[function(r,e){"use strict";var t=r("./get"),n=r("json8/lib/equal");e.exports=function(r,e,o){var i=t(r,e);if(!n(i,o))throw Error("Test failed");return{doc:r}}},{"./get":6,"json8/lib/equal":22}],15:[function(r,e){"use strict";var t=Object.create(null);t[0]="add",t[1]="remove",t[2]="replace",t[3]="move",t[4]="copy",t[5]="test",e.exports=function(r){for(var e=[],n=0,o=r.length;o>n;n++){var i=r[n],a=i[0],s=t[a],u={op:s,path:i[1]};0===a||2===a||5===a?u.value=i[2]:1!==a&&(u.from=i[2]),e.push(u)}return e}},{}],16:[function(r,e){"use strict";e.exports.serialize=r("./lib/serialize"),e.exports.parse=r("./lib/parse"),e.exports.validArrayToken=r("./lib/validArrayToken"),e.exports.walk=r("./lib/walk"),e.exports.find=r("./lib/find")},{"./lib/find":17,"./lib/parse":18,"./lib/serialize":19,"./lib/validArrayToken":20,"./lib/walk":21}],17:[function(r,e){"use strict";var t=r("./parse"),n=r("./walk");e.exports=function(r,e){var o=Array.isArray(e)?e:t(e);if(0===o.length)return r;var i;try{i=n(r,o)}catch(a){return void 0}var s=i[0],u=i[1];return u[s]}},{"./parse":18,"./walk":21}],18:[function(r,e){"use strict";e.exports=function(r,e){if(Array.isArray(r))return r;var t="string"==typeof e&&e.length>0?e:"/";if(0===r.length)return[];if(r.charAt(0)!==t)throw Error("Invalid pointer: "+r);for(var n=[""],o=0,i=1,a=r.length;a>i;i++){var s=r.charAt(i);s===t?(n.push(""),o++):"~"===s?"1"===r.charAt(i+1)?(n[o]+=t,i++):"0"===r.charAt(i+1)?(n[o]+="~",i++):n[o]+=s:n[o]+=s}return n}},{}],19:[function(r,e){"use strict";e.exports=function(r,e){for(var t="",n="string"==typeof e&&e.length>0?e:"/",o=0,i=r.length;i>o;o++){var a=r[o];t+=n;for(var s=0,u=a.length;u>s;s++){var p=a.charAt(s);t+="~"===p?"~0":p===n?"~1":p}}return t}},{}],20:[function(r,e){"use strict";e.exports=function(r,e){if("-"!==r){var t=Error("Invalid pointer"),n=r.length;if(n>1&&"0"===r[0])throw t;for(var o=0;n>o;o++)if(-1===["0","1","2","3","4","5","6","7","8","9"].indexOf(r[o]))throw t;var i=+r;if(0>i)throw t;if(i>e)throw t}}},{}],21:[function(r,e){"use strict";var t=r("./validArrayToken"),n="object";e.exports=function(r,e){for(var o,i=e.length,a=0,s=r;i-1>a;){if(o=e[a++],Array.isArray(s))t(o,s.length);else if(typeof s!==n||null===s)throw Error("Cannot be walked");s=s[o]}if(o=e[a],Array.isArray(s))t(o,s.length);else if(typeof s!==n||null===s)throw Error("Invalid target");return[o,s]}},{"./validArrayToken":20}],22:[function(r,e){(function(t){"use strict";var n=r("./types"),o=n.OBJECT,i=n.ARRAY,a=n.STRING,s=n.BOOLEAN,u=n.NUMBER,p=n.NULL,f=r("./type"),c=function(r){var e=[];return r.forEach(function(r){e.push(r)}),e},l=function(r){var e=Object.create(null);return r.forEach(function(r,t){e[t]=r}),e};e.exports=function v(r,e){var n=f(r),d=f(e);if(n!==d)return!1;var h=n;switch(h){case u:return 0===r&&1/r===-1/0?0===e&&1/e===-1/0:r===e;case a:case p:case s:return r===e}var y,b;if(h===i){if(t.Set&&(r instanceof Set&&(r=c(r)),e instanceof Set&&(e=c(e))),r.length!==e.length)return!1;for(y=0,b=r.length;b>y;y++)if(!v(r[y],e[y]))return!1;return!0}if(h===o){t.Map&&(r instanceof Map&&(r=l(r)),e instanceof Map&&(e=l(e)));var g=Object.keys(r);if(g.length!==Object.keys(e).length)return!1;for(y=0,b=g.length;b>y;y++){var x=g[y];if(e.hasOwnProperty&&!e.hasOwnProperty(x))return!1;if(!v(e[x],r[x]))return!1}return!0}return!0}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./type":23,"./types":24}],23:[function(r,e){(function(t){"use strict";var n=r("./types"),o=n.OBJECT,i=n.ARRAY,a=n.NULL,s=n.STRING,u=n.BOOLEAN,p=n.NUMBER;e.exports=function f(r){var f=typeof r;if(f===u||f===s)return f;if(f===p&&isFinite(r))return p;if(f===o){if(Array.isArray(r))return i;if(t.Set&&r instanceof Set)return i;if(t.Map&&r instanceof Map)return o;if(null===r)return a;if(f===o)return o}}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./types":24}],24:[function(r,e,t){"use strict";var n=t.NUMBER="number",o=t.BOOLEAN="boolean",i=t.NULL="null",a=t.STRING="string";t.PRIMITIVES=[n,o,i,a];var s=t.ARRAY="array",u=t.OBJECT="object";t.STRUCTURES=[s,u]},{}]},{},[1])(1)});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment