@hyperjump/json-pointer 0.9.6 → 0.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";const r=function(r,t){return function e(){null==t&&(t=r.length);var n=[].slice.call(arguments);return n.length>=t?r.apply(this,n):function(){return e.apply(this,n.concat([].slice.call(arguments)))}}},t=r=>{if(r.length>0&&"/"!==r[0])throw Error("Invalid JSON Pointer");return r.split("/").slice(1).map(a)},e=(r,t,n,o)=>{if(0===r.length)return n;if(r.length>1){if(Array.isArray(t)){const i=r.shift(),s=[...t];return s[i]=e(r,c(t,i,o),n,l(i,o)),s}{const i=r.shift();return{...t,[i]:e(r,c(t,i,o),n,l(i,o))}}}if(Array.isArray(t)){const e=[...t];return e[u(t,r[0])]=n,e}return"object"==typeof t&&null!==t?{...t,[r[0]]:n}:c(t,r[0],o)},n=(r,t,e,o)=>{if(0!==r.length)if(1!==r.length||f(t)){const i=r.shift();n(r,c(t,i,o),e,l(i,o))}else{t[u(t,r[0])]=e}},o=(r,t,e)=>{if(0!=r.length){if(r.length>1){const n=r.shift(),i=c(t,n,e);return{...t,[n]:o(r,i,l(n,e))}}if(Array.isArray(t))return t.filter(((t,e)=>e!=r[0]));if("object"==typeof t&&null!==t){const{[r[0]]:e,...n}=t;return n}return c(t,r[0],e)}},i=(r,t,e)=>{if(0!==r.length)if(r.length>1){const n=r.shift(),o=c(t,n,e);i(r,o,l(n,e))}else Array.isArray(t)?t.splice(r[0],1):"object"==typeof t&&null!==t?delete t[r[0]]:c(t,r[0],e)},l=r(((r,t)=>t+"/"+s(r))),s=r=>r.toString().replace(/~/g,"~0").replace(/\//g,"~1"),a=r=>r.toString().replace(/~1/g,"/").replace(/~0/g,"~"),u=(r,t)=>Array.isArray(r)&&"-"===t?r.length:t,c=(r,t,e="")=>{if(void 0===r)throw TypeError(`Value at '${e}' is undefined and does not have property '${t}'`);if(null===r)throw TypeError(`Value at '${e}' is null and does not have property '${t}'`);if(f(r))throw TypeError(`Value at '${e}' is a ${typeof r} and does not have property '${t}'`);return r[u(r,t)]},f=r=>null===r||"object"!=typeof r;var p={nil:"",append:l,get:(r,e)=>{const n=t(r),o=r=>n.reduce((([r,t],e)=>[c(r,e,t),l(e,t)]),[r,""])[0];return void 0===e?o:o(e)},set:(n,o,i)=>{const l=t(n),s=r(((r,t)=>e(l,r,t,"")));return void 0===o?s:s(o,i)},assign:(e,o,i)=>{const l=t(e),s=r(((r,t)=>n(l,r,t,"")));return void 0===o?s:s(o,i)},unset:(r,e)=>{const n=t(r),i=r=>o(n,r,"");return void 0===e?i:i(e)},remove:(r,e)=>{const n=t(r),o=r=>i(n,r,"");return void 0===e?o:o(e)}};module.exports=p;
1
+ "use strict";const r=function(r,t){return function e(){null==t&&(t=r.length);var n=[].slice.call(arguments);return n.length>=t?r.apply(this,n):function(){return e.apply(this,n.concat([].slice.call(arguments)))}}},t="",e=Symbol("EXISTS"),n=r=>{if(r.length>0&&"/"!==r[0])throw Error("Invalid JSON Pointer");let t=1,n=0;return o=>{if(o===e)return n<r.length;if(n>=r.length)return;const i=r.indexOf("/",t);n=-1===i?r.length:i;const l=f(r.slice(t,n));return t=n+1,l}},o=(r,t,n)=>{if(r(e)){const e=r();return o(r,p(t,e,n),c(e,n))}return t},i=(r,t,n,o)=>{const l=r();if(void 0===l)return n;if(r(e)){if(Array.isArray(t)){const e=[...t];return e[l]=i(r,p(t,l,o),n,c(l,o)),e}return{...t,[l]:i(r,p(t,l,o),n,c(l,o))}}if(Array.isArray(t)){const r=[...t];return r[d(t,l)]=n,r}return"object"==typeof t&&null!==t?{...t,[l]:n}:p(t,l,o)},l=(r,t,n,o)=>{const i=r();void 0!==i&&(r(e)||y(t)?l(r,p(t,i,o),n,c(i,o)):t[d(t,i)]=n)},s=(r,t,n)=>{const o=r();if(void 0!==o){if(r(e)){const e=p(t,o,n);return{...t,[o]:s(r,e,c(o,n))}}if(Array.isArray(t)){const r=[...t];return delete r[d(t,o)],r}if("object"==typeof t&&null!==t){const{[o]:r,...e}=t;return e}return p(t,o,n)}},u=(r,t,n)=>{const o=r();if(void 0!==o)if(r(e)){const e=p(t,o,n);u(r,e,c(o,n))}else y(t)?p(t,o,n):delete t[o]},c=r(((r,t)=>t+"/"+a(r))),a=r=>r.toString().replace(/~/g,"~0").replace(/\//g,"~1"),f=r=>r.toString().replace(/~1/g,"/").replace(/~0/g,"~"),d=(r,t)=>Array.isArray(r)&&"-"===t?r.length:t,p=(r,t,e="")=>{if(void 0===r)throw TypeError(`Value at '${e}' is undefined and does not have property '${t}'`);if(null===r)throw TypeError(`Value at '${e}' is null and does not have property '${t}'`);if(y(r))throw TypeError(`Value at '${e}' is a ${typeof r} and does not have property '${t}'`);return r[d(r,t)]},y=r=>null===r||"object"!=typeof r;var v={nil:t,append:c,get:(r,e)=>{const i=n(r),l=r=>o(i,r,t);return void 0===e?l:l(e)},set:(e,o,l)=>{const s=n(e),u=r(((r,e)=>i(s,r,e,t)));return void 0===o?u:u(o,l)},assign:(e,o,i)=>{const s=n(e),u=r(((r,e)=>l(s,r,e,t)));return void 0===o?u:u(o,i)},unset:(r,e)=>{const o=n(r),i=r=>s(o,r,t);return void 0===e?i:i(e)},remove:(r,e)=>{const o=n(r),i=r=>u(o,r,t);return void 0===e?i:i(e)}};module.exports=v;
2
2
  //# sourceMappingURL=json-pointer-cjs.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-pointer-cjs.min.js","sources":["../lib/index.js","../node_modules/just-curry-it/index.js"],"sourcesContent":["const curry = require(\"just-curry-it\");\n\n\nconst nil = \"\";\n\nconst compile = (pointer) => {\n if (pointer.length > 0 && pointer[0] !== \"/\") {\n throw Error(\"Invalid JSON Pointer\");\n }\n\n return pointer.split(\"/\").slice(1).map(unescape);\n};\n\nconst get = (pointer, value = undefined) => {\n const ptr = compile(pointer);\n\n const fn = (value) => ptr.reduce(([value, pointer], segment) => {\n return [applySegment(value, segment, pointer), append(segment, pointer)];\n }, [value, \"\"])[0];\n\n return value === undefined ? fn : fn(value);\n};\n\nconst set = (pointer, subject = undefined, value = undefined) => {\n const ptr = compile(pointer);\n const fn = curry((subject, value) => _set(ptr, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _set = (pointer, subject, value, cursor) => {\n if (pointer.length === 0) {\n return value;\n } else if (pointer.length > 1) {\n if (Array.isArray(subject)) {\n const index = pointer.shift();\n const clonedSubject = [...subject];\n clonedSubject[index] = _set(pointer, applySegment(subject, index, cursor), value, append(index, cursor));\n return clonedSubject;\n } else {\n const segment = pointer.shift();\n return { ...subject, [segment]: _set(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor)) };\n }\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n const segment = computeSegment(subject, pointer[0]);\n clonedSubject[segment] = value;\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n return { ...subject, [pointer[0]]: value };\n } else {\n return applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst assign = (pointer, subject = undefined, value = undefined) => {\n const ptr = compile(pointer);\n const fn = curry((subject, value) => _assign(ptr, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _assign = (pointer, subject, value, cursor) => {\n if (pointer.length === 0) {\n return;\n } else if (pointer.length === 1 && !isScalar(subject)) {\n const segment = computeSegment(subject, pointer[0]);\n subject[segment] = value;\n } else {\n const segment = pointer.shift();\n _assign(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor));\n }\n};\n\nconst unset = (pointer, subject = undefined) => {\n const ptr = compile(pointer);\n const fn = (subject) => _unset(ptr, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _unset = (pointer, subject, cursor) => {\n if (pointer.length == 0) {\n return undefined;\n } else if (pointer.length > 1) {\n const segment = pointer.shift();\n const value = applySegment(subject, segment, cursor);\n return { ...subject, [segment]: _unset(pointer, value, append(segment, cursor)) };\n } else if (Array.isArray(subject)) {\n return subject.filter((_, ndx) => ndx != pointer[0]);\n } else if (typeof subject === \"object\" && subject !== null) {\n // eslint-disable-next-line no-unused-vars\n const { [pointer[0]]: _, ...result } = subject;\n return result;\n } else {\n return applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst remove = (pointer, subject = undefined) => {\n const ptr = compile(pointer);\n const fn = (subject) => _remove(ptr, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _remove = (pointer, subject, cursor) => {\n if (pointer.length === 0) {\n return;\n } else if (pointer.length > 1) {\n const segment = pointer.shift();\n const value = applySegment(subject, segment, cursor);\n _remove(pointer, value, append(segment, cursor));\n } else if (Array.isArray(subject)) {\n subject.splice(pointer[0], 1);\n } else if (typeof subject === \"object\" && subject !== null) {\n delete subject[pointer[0]];\n } else {\n applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst append = curry((segment, pointer) => pointer + \"/\" + escape(segment));\n\nconst escape = (segment) => segment.toString().replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\nconst unescape = (segment) => segment.toString().replace(/~1/g, \"/\").replace(/~0/g, \"~\");\nconst computeSegment = (value, segment) => Array.isArray(value) && segment === \"-\" ? value.length : segment;\n\nconst applySegment = (value, segment, cursor = \"\") => {\n if (value === undefined) {\n throw TypeError(`Value at '${cursor}' is undefined and does not have property '${segment}'`);\n } else if (value === null) {\n throw TypeError(`Value at '${cursor}' is null and does not have property '${segment}'`);\n } else if (isScalar(value)) {\n throw TypeError(`Value at '${cursor}' is a ${typeof value} and does not have property '${segment}'`);\n } else {\n const computedSegment = computeSegment(value, segment);\n return value[computedSegment];\n }\n};\n\nconst isScalar = (value) => value === null || typeof value !== \"object\";\n\nmodule.exports = { nil, append, get, set, assign, unset, remove };\n","module.exports = curry;\n\n/*\n function add(a, b, c) {\n return a + b + c;\n }\n curry(add)(1)(2)(3); // 6\n curry(add)(1)(2)(2); // 5\n curry(add)(2)(4, 3); // 9\n\n function add(...args) {\n return args.reduce((sum, n) => sum + n, 0)\n }\n var curryAdd4 = curry(add, 4)\n curryAdd4(1)(2, 3)(4); // 10\n\n function converter(ratio, input) {\n return (input*ratio).toFixed(1);\n }\n const curriedConverter = curry(converter)\n const milesToKm = curriedConverter(1.62);\n milesToKm(35); // 56.7\n milesToKm(10); // 16.2\n*/\n\nfunction curry(fn, arity) {\n return function curried() {\n if (arity == null) {\n arity = fn.length;\n }\n var args = [].slice.call(arguments);\n if (args.length >= arity) {\n return fn.apply(this, args);\n } else {\n return function() {\n return curried.apply(this, args.concat([].slice.call(arguments)));\n };\n }\n };\n}\n"],"names":["curry","fn","arity","curried","length","args","slice","call","arguments","apply","this","concat","compile","pointer","Error","split","map","unescape","_set","subject","value","cursor","Array","isArray","index","shift","clonedSubject","applySegment","append","segment","computeSegment","_assign","isScalar","_unset","filter","_","ndx","result","_remove","splice","escape","toString","replace","undefined","TypeError","lib","nil","get","ptr","reduce","set","assign","unset","remove"],"mappings":"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"}
1
+ {"version":3,"file":"json-pointer-cjs.min.js","sources":["../lib/index.js","../node_modules/just-curry-it/index.cjs"],"sourcesContent":["const curry = require(\"just-curry-it\");\n\n\nconst nil = \"\";\n\nconst EXISTS = Symbol(\"EXISTS\");\n\nconst segmentGenerator = (pointer) => {\n if (pointer.length > 0 && pointer[0] !== \"/\") {\n throw Error(\"Invalid JSON Pointer\");\n }\n\n let segmentStart = 1;\n let segmentEnd = 0;\n\n return (mode) => {\n if (mode === EXISTS) {\n return segmentEnd < pointer.length;\n }\n\n if (segmentEnd >= pointer.length) {\n return;\n }\n\n const position = pointer.indexOf(\"/\", segmentStart);\n segmentEnd = position === -1 ? pointer.length : position;\n const segment = unescape(pointer.slice(segmentStart, segmentEnd));\n segmentStart = segmentEnd + 1;\n\n return segment;\n };\n};\n\nconst get = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _get(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _get = (nextSegment, subject, cursor) => {\n if (!nextSegment(EXISTS)) {\n return subject;\n } else {\n const segment = nextSegment();\n return _get(nextSegment, applySegment(subject, segment, cursor), append(segment, cursor));\n }\n};\n\nconst set = (pointer, subject = undefined, value = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = curry((subject, value) => _set(nextSegment, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _set = (nextSegment, subject, value, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return value;\n } else if (nextSegment(EXISTS)) {\n if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n clonedSubject[segment] = _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));\n return clonedSubject;\n } else {\n return { ...subject, [segment]: _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor)) };\n }\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n clonedSubject[computeSegment(subject, segment)] = value;\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n return { ...subject, [segment]: value };\n } else {\n return applySegment(subject, segment, cursor);\n }\n};\n\nconst assign = (pointer, subject = undefined, value = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = curry((subject, value) => _assign(nextSegment, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _assign = (nextSegment, subject, value, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (!nextSegment(EXISTS) && !isScalar(subject)) {\n subject[computeSegment(subject, segment)] = value;\n } else {\n _assign(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));\n }\n};\n\nconst unset = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _unset(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _unset = (nextSegment, subject, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (nextSegment(EXISTS)) {\n const value = applySegment(subject, segment, cursor);\n return { ...subject, [segment]: _unset(nextSegment, value, append(segment, cursor)) };\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n delete clonedSubject[computeSegment(subject, segment)];\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n // eslint-disable-next-line no-unused-vars\n const { [segment]: _, ...result } = subject;\n return result;\n } else {\n return applySegment(subject, segment, cursor);\n }\n};\n\nconst remove = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _remove(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _remove = (nextSegment, subject, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (nextSegment(EXISTS)) {\n const value = applySegment(subject, segment, cursor);\n _remove(nextSegment, value, append(segment, cursor));\n } else if (!isScalar(subject)) {\n delete subject[segment];\n } else {\n applySegment(subject, segment, cursor);\n }\n};\n\nconst append = curry((segment, pointer) => pointer + \"/\" + escape(segment));\n\nconst escape = (segment) => segment.toString().replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\nconst unescape = (segment) => segment.toString().replace(/~1/g, \"/\").replace(/~0/g, \"~\");\nconst computeSegment = (value, segment) => Array.isArray(value) && segment === \"-\" ? value.length : segment;\n\nconst applySegment = (value, segment, cursor = \"\") => {\n if (value === undefined) {\n throw TypeError(`Value at '${cursor}' is undefined and does not have property '${segment}'`);\n } else if (value === null) {\n throw TypeError(`Value at '${cursor}' is null and does not have property '${segment}'`);\n } else if (isScalar(value)) {\n throw TypeError(`Value at '${cursor}' is a ${typeof value} and does not have property '${segment}'`);\n } else {\n const computedSegment = computeSegment(value, segment);\n return value[computedSegment];\n }\n};\n\nconst isScalar = (value) => value === null || typeof value !== \"object\";\n\nmodule.exports = { nil, append, get, set, assign, unset, remove };\n","module.exports = curry;\n\n/*\n function add(a, b, c) {\n return a + b + c;\n }\n curry(add)(1)(2)(3); // 6\n curry(add)(1)(2)(2); // 5\n curry(add)(2)(4, 3); // 9\n\n function add(...args) {\n return args.reduce((sum, n) => sum + n, 0)\n }\n var curryAdd4 = curry(add, 4)\n curryAdd4(1)(2, 3)(4); // 10\n\n function converter(ratio, input) {\n return (input*ratio).toFixed(1);\n }\n const curriedConverter = curry(converter)\n const milesToKm = curriedConverter(1.62);\n milesToKm(35); // 56.7\n milesToKm(10); // 16.2\n*/\n\nfunction curry(fn, arity) {\n return function curried() {\n if (arity == null) {\n arity = fn.length;\n }\n var args = [].slice.call(arguments);\n if (args.length >= arity) {\n return fn.apply(this, args);\n } else {\n return function() {\n return curried.apply(this, args.concat([].slice.call(arguments)));\n };\n }\n };\n}\n"],"names":["curry","fn","arity","curried","length","args","slice","call","arguments","apply","this","concat","nil","EXISTS","Symbol","segmentGenerator","pointer","Error","segmentStart","segmentEnd","mode","position","indexOf","segment","unescape","_get","nextSegment","subject","cursor","applySegment","append","_set","value","undefined","Array","isArray","clonedSubject","computeSegment","_assign","isScalar","_unset","_","result","_remove","escape","toString","replace","TypeError","lib","get","set","assign","unset","remove"],"mappings":"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"}
@@ -44,116 +44,138 @@ const curry = justCurryIt;
44
44
 
45
45
  const nil = "";
46
46
 
47
- const compile = (pointer) => {
47
+ const EXISTS = Symbol("EXISTS");
48
+
49
+ const segmentGenerator = (pointer) => {
48
50
  if (pointer.length > 0 && pointer[0] !== "/") {
49
51
  throw Error("Invalid JSON Pointer");
50
52
  }
51
53
 
52
- return pointer.split("/").slice(1).map(unescape);
53
- };
54
+ let segmentStart = 1;
55
+ let segmentEnd = 0;
54
56
 
55
- const get = (pointer, value = undefined) => {
56
- const ptr = compile(pointer);
57
+ return (mode) => {
58
+ if (mode === EXISTS) {
59
+ return segmentEnd < pointer.length;
60
+ }
61
+
62
+ if (segmentEnd >= pointer.length) {
63
+ return;
64
+ }
65
+
66
+ const position = pointer.indexOf("/", segmentStart);
67
+ segmentEnd = position === -1 ? pointer.length : position;
68
+ const segment = unescape(pointer.slice(segmentStart, segmentEnd));
69
+ segmentStart = segmentEnd + 1;
70
+
71
+ return segment;
72
+ };
73
+ };
57
74
 
58
- const fn = (value) => ptr.reduce(([value, pointer], segment) => {
59
- return [applySegment(value, segment, pointer), append(segment, pointer)];
60
- }, [value, ""])[0];
75
+ const get = (pointer, subject = undefined) => {
76
+ const nextSegment = segmentGenerator(pointer);
77
+ const fn = (subject) => _get(nextSegment, subject, nil);
78
+ return subject === undefined ? fn : fn(subject);
79
+ };
61
80
 
62
- return value === undefined ? fn : fn(value);
81
+ const _get = (nextSegment, subject, cursor) => {
82
+ if (!nextSegment(EXISTS)) {
83
+ return subject;
84
+ } else {
85
+ const segment = nextSegment();
86
+ return _get(nextSegment, applySegment(subject, segment, cursor), append(segment, cursor));
87
+ }
63
88
  };
64
89
 
65
90
  const set = (pointer, subject = undefined, value = undefined) => {
66
- const ptr = compile(pointer);
67
- const fn = curry((subject, value) => _set(ptr, subject, value, nil));
91
+ const nextSegment = segmentGenerator(pointer);
92
+ const fn = curry((subject, value) => _set(nextSegment, subject, value, nil));
68
93
  return subject === undefined ? fn : fn(subject, value);
69
94
  };
70
95
 
71
- const _set = (pointer, subject, value, cursor) => {
72
- if (pointer.length === 0) {
96
+ const _set = (nextSegment, subject, value, cursor) => {
97
+ const segment = nextSegment();
98
+ if (segment === undefined) {
73
99
  return value;
74
- } else if (pointer.length > 1) {
100
+ } else if (nextSegment(EXISTS)) {
75
101
  if (Array.isArray(subject)) {
76
- const index = pointer.shift();
77
102
  const clonedSubject = [...subject];
78
- clonedSubject[index] = _set(pointer, applySegment(subject, index, cursor), value, append(index, cursor));
103
+ clonedSubject[segment] = _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
79
104
  return clonedSubject;
80
105
  } else {
81
- const segment = pointer.shift();
82
- return { ...subject, [segment]: _set(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
106
+ return { ...subject, [segment]: _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
83
107
  }
84
108
  } else if (Array.isArray(subject)) {
85
109
  const clonedSubject = [...subject];
86
- const segment = computeSegment(subject, pointer[0]);
87
- clonedSubject[segment] = value;
110
+ clonedSubject[computeSegment(subject, segment)] = value;
88
111
  return clonedSubject;
89
112
  } else if (typeof subject === "object" && subject !== null) {
90
- return { ...subject, [pointer[0]]: value };
113
+ return { ...subject, [segment]: value };
91
114
  } else {
92
- return applySegment(subject, pointer[0], cursor);
115
+ return applySegment(subject, segment, cursor);
93
116
  }
94
117
  };
95
118
 
96
119
  const assign = (pointer, subject = undefined, value = undefined) => {
97
- const ptr = compile(pointer);
98
- const fn = curry((subject, value) => _assign(ptr, subject, value, nil));
120
+ const nextSegment = segmentGenerator(pointer);
121
+ const fn = curry((subject, value) => _assign(nextSegment, subject, value, nil));
99
122
  return subject === undefined ? fn : fn(subject, value);
100
123
  };
101
124
 
102
- const _assign = (pointer, subject, value, cursor) => {
103
- if (pointer.length === 0) {
125
+ const _assign = (nextSegment, subject, value, cursor) => {
126
+ const segment = nextSegment();
127
+ if (segment === undefined) {
104
128
  return;
105
- } else if (pointer.length === 1 && !isScalar(subject)) {
106
- const segment = computeSegment(subject, pointer[0]);
107
- subject[segment] = value;
129
+ } else if (!nextSegment(EXISTS) && !isScalar(subject)) {
130
+ subject[computeSegment(subject, segment)] = value;
108
131
  } else {
109
- const segment = pointer.shift();
110
- _assign(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor));
132
+ _assign(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
111
133
  }
112
134
  };
113
135
 
114
136
  const unset = (pointer, subject = undefined) => {
115
- const ptr = compile(pointer);
116
- const fn = (subject) => _unset(ptr, subject, nil);
137
+ const nextSegment = segmentGenerator(pointer);
138
+ const fn = (subject) => _unset(nextSegment, subject, nil);
117
139
  return subject === undefined ? fn : fn(subject);
118
140
  };
119
141
 
120
- const _unset = (pointer, subject, cursor) => {
121
- if (pointer.length == 0) {
122
- return undefined;
123
- } else if (pointer.length > 1) {
124
- const segment = pointer.shift();
142
+ const _unset = (nextSegment, subject, cursor) => {
143
+ const segment = nextSegment();
144
+ if (segment === undefined) {
145
+ return;
146
+ } else if (nextSegment(EXISTS)) {
125
147
  const value = applySegment(subject, segment, cursor);
126
- return { ...subject, [segment]: _unset(pointer, value, append(segment, cursor)) };
148
+ return { ...subject, [segment]: _unset(nextSegment, value, append(segment, cursor)) };
127
149
  } else if (Array.isArray(subject)) {
128
- return subject.filter((_, ndx) => ndx != pointer[0]);
150
+ const clonedSubject = [...subject];
151
+ delete clonedSubject[computeSegment(subject, segment)];
152
+ return clonedSubject;
129
153
  } else if (typeof subject === "object" && subject !== null) {
130
154
  // eslint-disable-next-line no-unused-vars
131
- const { [pointer[0]]: _, ...result } = subject;
155
+ const { [segment]: _, ...result } = subject;
132
156
  return result;
133
157
  } else {
134
- return applySegment(subject, pointer[0], cursor);
158
+ return applySegment(subject, segment, cursor);
135
159
  }
136
160
  };
137
161
 
138
162
  const remove = (pointer, subject = undefined) => {
139
- const ptr = compile(pointer);
140
- const fn = (subject) => _remove(ptr, subject, nil);
163
+ const nextSegment = segmentGenerator(pointer);
164
+ const fn = (subject) => _remove(nextSegment, subject, nil);
141
165
  return subject === undefined ? fn : fn(subject);
142
166
  };
143
167
 
144
- const _remove = (pointer, subject, cursor) => {
145
- if (pointer.length === 0) {
168
+ const _remove = (nextSegment, subject, cursor) => {
169
+ const segment = nextSegment();
170
+ if (segment === undefined) {
146
171
  return;
147
- } else if (pointer.length > 1) {
148
- const segment = pointer.shift();
172
+ } else if (nextSegment(EXISTS)) {
149
173
  const value = applySegment(subject, segment, cursor);
150
- _remove(pointer, value, append(segment, cursor));
151
- } else if (Array.isArray(subject)) {
152
- subject.splice(pointer[0], 1);
153
- } else if (typeof subject === "object" && subject !== null) {
154
- delete subject[pointer[0]];
174
+ _remove(nextSegment, value, append(segment, cursor));
175
+ } else if (!isScalar(subject)) {
176
+ delete subject[segment];
155
177
  } else {
156
- applySegment(subject, pointer[0], cursor);
178
+ applySegment(subject, segment, cursor);
157
179
  }
158
180
  };
159
181
 
@@ -1 +1 @@
1
- {"version":3,"file":"json-pointer-esm.js","sources":["../node_modules/just-curry-it/index.js","../lib/index.js"],"sourcesContent":["module.exports = curry;\n\n/*\n function add(a, b, c) {\n return a + b + c;\n }\n curry(add)(1)(2)(3); // 6\n curry(add)(1)(2)(2); // 5\n curry(add)(2)(4, 3); // 9\n\n function add(...args) {\n return args.reduce((sum, n) => sum + n, 0)\n }\n var curryAdd4 = curry(add, 4)\n curryAdd4(1)(2, 3)(4); // 10\n\n function converter(ratio, input) {\n return (input*ratio).toFixed(1);\n }\n const curriedConverter = curry(converter)\n const milesToKm = curriedConverter(1.62);\n milesToKm(35); // 56.7\n milesToKm(10); // 16.2\n*/\n\nfunction curry(fn, arity) {\n return function curried() {\n if (arity == null) {\n arity = fn.length;\n }\n var args = [].slice.call(arguments);\n if (args.length >= arity) {\n return fn.apply(this, args);\n } else {\n return function() {\n return curried.apply(this, args.concat([].slice.call(arguments)));\n };\n }\n };\n}\n","const curry = require(\"just-curry-it\");\n\n\nconst nil = \"\";\n\nconst compile = (pointer) => {\n if (pointer.length > 0 && pointer[0] !== \"/\") {\n throw Error(\"Invalid JSON Pointer\");\n }\n\n return pointer.split(\"/\").slice(1).map(unescape);\n};\n\nconst get = (pointer, value = undefined) => {\n const ptr = compile(pointer);\n\n const fn = (value) => ptr.reduce(([value, pointer], segment) => {\n return [applySegment(value, segment, pointer), append(segment, pointer)];\n }, [value, \"\"])[0];\n\n return value === undefined ? fn : fn(value);\n};\n\nconst set = (pointer, subject = undefined, value = undefined) => {\n const ptr = compile(pointer);\n const fn = curry((subject, value) => _set(ptr, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _set = (pointer, subject, value, cursor) => {\n if (pointer.length === 0) {\n return value;\n } else if (pointer.length > 1) {\n if (Array.isArray(subject)) {\n const index = pointer.shift();\n const clonedSubject = [...subject];\n clonedSubject[index] = _set(pointer, applySegment(subject, index, cursor), value, append(index, cursor));\n return clonedSubject;\n } else {\n const segment = pointer.shift();\n return { ...subject, [segment]: _set(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor)) };\n }\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n const segment = computeSegment(subject, pointer[0]);\n clonedSubject[segment] = value;\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n return { ...subject, [pointer[0]]: value };\n } else {\n return applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst assign = (pointer, subject = undefined, value = undefined) => {\n const ptr = compile(pointer);\n const fn = curry((subject, value) => _assign(ptr, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _assign = (pointer, subject, value, cursor) => {\n if (pointer.length === 0) {\n return;\n } else if (pointer.length === 1 && !isScalar(subject)) {\n const segment = computeSegment(subject, pointer[0]);\n subject[segment] = value;\n } else {\n const segment = pointer.shift();\n _assign(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor));\n }\n};\n\nconst unset = (pointer, subject = undefined) => {\n const ptr = compile(pointer);\n const fn = (subject) => _unset(ptr, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _unset = (pointer, subject, cursor) => {\n if (pointer.length == 0) {\n return undefined;\n } else if (pointer.length > 1) {\n const segment = pointer.shift();\n const value = applySegment(subject, segment, cursor);\n return { ...subject, [segment]: _unset(pointer, value, append(segment, cursor)) };\n } else if (Array.isArray(subject)) {\n return subject.filter((_, ndx) => ndx != pointer[0]);\n } else if (typeof subject === \"object\" && subject !== null) {\n // eslint-disable-next-line no-unused-vars\n const { [pointer[0]]: _, ...result } = subject;\n return result;\n } else {\n return applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst remove = (pointer, subject = undefined) => {\n const ptr = compile(pointer);\n const fn = (subject) => _remove(ptr, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _remove = (pointer, subject, cursor) => {\n if (pointer.length === 0) {\n return;\n } else if (pointer.length > 1) {\n const segment = pointer.shift();\n const value = applySegment(subject, segment, cursor);\n _remove(pointer, value, append(segment, cursor));\n } else if (Array.isArray(subject)) {\n subject.splice(pointer[0], 1);\n } else if (typeof subject === \"object\" && subject !== null) {\n delete subject[pointer[0]];\n } else {\n applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst append = curry((segment, pointer) => pointer + \"/\" + escape(segment));\n\nconst escape = (segment) => segment.toString().replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\nconst unescape = (segment) => segment.toString().replace(/~1/g, \"/\").replace(/~0/g, \"~\");\nconst computeSegment = (value, segment) => Array.isArray(value) && segment === \"-\" ? value.length : segment;\n\nconst applySegment = (value, segment, cursor = \"\") => {\n if (value === undefined) {\n throw TypeError(`Value at '${cursor}' is undefined and does not have property '${segment}'`);\n } else if (value === null) {\n throw TypeError(`Value at '${cursor}' is null and does not have property '${segment}'`);\n } else if (isScalar(value)) {\n throw TypeError(`Value at '${cursor}' is a ${typeof value} and does not have property '${segment}'`);\n } else {\n const computedSegment = computeSegment(value, segment);\n return value[computedSegment];\n }\n};\n\nconst isScalar = (value) => value === null || typeof value !== \"object\";\n\nmodule.exports = { nil, append, get, set, assign, unset, remove };\n"],"names":["curry","require$$0"],"mappings":"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"}
1
+ {"version":3,"file":"json-pointer-esm.js","sources":["../node_modules/just-curry-it/index.cjs","../lib/index.js"],"sourcesContent":["module.exports = curry;\n\n/*\n function add(a, b, c) {\n return a + b + c;\n }\n curry(add)(1)(2)(3); // 6\n curry(add)(1)(2)(2); // 5\n curry(add)(2)(4, 3); // 9\n\n function add(...args) {\n return args.reduce((sum, n) => sum + n, 0)\n }\n var curryAdd4 = curry(add, 4)\n curryAdd4(1)(2, 3)(4); // 10\n\n function converter(ratio, input) {\n return (input*ratio).toFixed(1);\n }\n const curriedConverter = curry(converter)\n const milesToKm = curriedConverter(1.62);\n milesToKm(35); // 56.7\n milesToKm(10); // 16.2\n*/\n\nfunction curry(fn, arity) {\n return function curried() {\n if (arity == null) {\n arity = fn.length;\n }\n var args = [].slice.call(arguments);\n if (args.length >= arity) {\n return fn.apply(this, args);\n } else {\n return function() {\n return curried.apply(this, args.concat([].slice.call(arguments)));\n };\n }\n };\n}\n","const curry = require(\"just-curry-it\");\n\n\nconst nil = \"\";\n\nconst EXISTS = Symbol(\"EXISTS\");\n\nconst segmentGenerator = (pointer) => {\n if (pointer.length > 0 && pointer[0] !== \"/\") {\n throw Error(\"Invalid JSON Pointer\");\n }\n\n let segmentStart = 1;\n let segmentEnd = 0;\n\n return (mode) => {\n if (mode === EXISTS) {\n return segmentEnd < pointer.length;\n }\n\n if (segmentEnd >= pointer.length) {\n return;\n }\n\n const position = pointer.indexOf(\"/\", segmentStart);\n segmentEnd = position === -1 ? pointer.length : position;\n const segment = unescape(pointer.slice(segmentStart, segmentEnd));\n segmentStart = segmentEnd + 1;\n\n return segment;\n };\n};\n\nconst get = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _get(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _get = (nextSegment, subject, cursor) => {\n if (!nextSegment(EXISTS)) {\n return subject;\n } else {\n const segment = nextSegment();\n return _get(nextSegment, applySegment(subject, segment, cursor), append(segment, cursor));\n }\n};\n\nconst set = (pointer, subject = undefined, value = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = curry((subject, value) => _set(nextSegment, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _set = (nextSegment, subject, value, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return value;\n } else if (nextSegment(EXISTS)) {\n if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n clonedSubject[segment] = _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));\n return clonedSubject;\n } else {\n return { ...subject, [segment]: _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor)) };\n }\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n clonedSubject[computeSegment(subject, segment)] = value;\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n return { ...subject, [segment]: value };\n } else {\n return applySegment(subject, segment, cursor);\n }\n};\n\nconst assign = (pointer, subject = undefined, value = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = curry((subject, value) => _assign(nextSegment, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _assign = (nextSegment, subject, value, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (!nextSegment(EXISTS) && !isScalar(subject)) {\n subject[computeSegment(subject, segment)] = value;\n } else {\n _assign(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));\n }\n};\n\nconst unset = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _unset(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _unset = (nextSegment, subject, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (nextSegment(EXISTS)) {\n const value = applySegment(subject, segment, cursor);\n return { ...subject, [segment]: _unset(nextSegment, value, append(segment, cursor)) };\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n delete clonedSubject[computeSegment(subject, segment)];\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n // eslint-disable-next-line no-unused-vars\n const { [segment]: _, ...result } = subject;\n return result;\n } else {\n return applySegment(subject, segment, cursor);\n }\n};\n\nconst remove = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _remove(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _remove = (nextSegment, subject, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (nextSegment(EXISTS)) {\n const value = applySegment(subject, segment, cursor);\n _remove(nextSegment, value, append(segment, cursor));\n } else if (!isScalar(subject)) {\n delete subject[segment];\n } else {\n applySegment(subject, segment, cursor);\n }\n};\n\nconst append = curry((segment, pointer) => pointer + \"/\" + escape(segment));\n\nconst escape = (segment) => segment.toString().replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\nconst unescape = (segment) => segment.toString().replace(/~1/g, \"/\").replace(/~0/g, \"~\");\nconst computeSegment = (value, segment) => Array.isArray(value) && segment === \"-\" ? value.length : segment;\n\nconst applySegment = (value, segment, cursor = \"\") => {\n if (value === undefined) {\n throw TypeError(`Value at '${cursor}' is undefined and does not have property '${segment}'`);\n } else if (value === null) {\n throw TypeError(`Value at '${cursor}' is null and does not have property '${segment}'`);\n } else if (isScalar(value)) {\n throw TypeError(`Value at '${cursor}' is a ${typeof value} and does not have property '${segment}'`);\n } else {\n const computedSegment = computeSegment(value, segment);\n return value[computedSegment];\n }\n};\n\nconst isScalar = (value) => value === null || typeof value !== \"object\";\n\nmodule.exports = { nil, append, get, set, assign, unset, remove };\n"],"names":["curry","require$$0"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- const r=function(r,t){return function e(){null==t&&(t=r.length);var n=[].slice.call(arguments);return n.length>=t?r.apply(this,n):function(){return e.apply(this,n.concat([].slice.call(arguments)))}}},t=r=>{if(r.length>0&&"/"!==r[0])throw Error("Invalid JSON Pointer");return r.split("/").slice(1).map(a)},e=(r,t,n,o)=>{if(0===r.length)return n;if(r.length>1){if(Array.isArray(t)){const i=r.shift(),s=[...t];return s[i]=e(r,c(t,i,o),n,l(i,o)),s}{const i=r.shift();return{...t,[i]:e(r,c(t,i,o),n,l(i,o))}}}if(Array.isArray(t)){const e=[...t];return e[u(t,r[0])]=n,e}return"object"==typeof t&&null!==t?{...t,[r[0]]:n}:c(t,r[0],o)},n=(r,t,e,o)=>{if(0!==r.length)if(1!==r.length||f(t)){const i=r.shift();n(r,c(t,i,o),e,l(i,o))}else{t[u(t,r[0])]=e}},o=(r,t,e)=>{if(0!=r.length){if(r.length>1){const n=r.shift(),i=c(t,n,e);return{...t,[n]:o(r,i,l(n,e))}}if(Array.isArray(t))return t.filter(((t,e)=>e!=r[0]));if("object"==typeof t&&null!==t){const{[r[0]]:e,...n}=t;return n}return c(t,r[0],e)}},i=(r,t,e)=>{if(0!==r.length)if(r.length>1){const n=r.shift(),o=c(t,n,e);i(r,o,l(n,e))}else Array.isArray(t)?t.splice(r[0],1):"object"==typeof t&&null!==t?delete t[r[0]]:c(t,r[0],e)},l=r(((r,t)=>t+"/"+s(r))),s=r=>r.toString().replace(/~/g,"~0").replace(/\//g,"~1"),a=r=>r.toString().replace(/~1/g,"/").replace(/~0/g,"~"),u=(r,t)=>Array.isArray(r)&&"-"===t?r.length:t,c=(r,t,e="")=>{if(void 0===r)throw TypeError(`Value at '${e}' is undefined and does not have property '${t}'`);if(null===r)throw TypeError(`Value at '${e}' is null and does not have property '${t}'`);if(f(r))throw TypeError(`Value at '${e}' is a ${typeof r} and does not have property '${t}'`);return r[u(r,t)]},f=r=>null===r||"object"!=typeof r;var p={nil:"",append:l,get:(r,e)=>{const n=t(r),o=r=>n.reduce((([r,t],e)=>[c(r,e,t),l(e,t)]),[r,""])[0];return void 0===e?o:o(e)},set:(n,o,i)=>{const l=t(n),s=r(((r,t)=>e(l,r,t,"")));return void 0===o?s:s(o,i)},assign:(e,o,i)=>{const l=t(e),s=r(((r,t)=>n(l,r,t,"")));return void 0===o?s:s(o,i)},unset:(r,e)=>{const n=t(r),i=r=>o(n,r,"");return void 0===e?i:i(e)},remove:(r,e)=>{const n=t(r),o=r=>i(n,r,"");return void 0===e?o:o(e)}};export{p as default};
1
+ const r=function(r,t){return function e(){null==t&&(t=r.length);var n=[].slice.call(arguments);return n.length>=t?r.apply(this,n):function(){return e.apply(this,n.concat([].slice.call(arguments)))}}},t="",e=Symbol("EXISTS"),n=r=>{if(r.length>0&&"/"!==r[0])throw Error("Invalid JSON Pointer");let t=1,n=0;return o=>{if(o===e)return n<r.length;if(n>=r.length)return;const i=r.indexOf("/",t);n=-1===i?r.length:i;const l=f(r.slice(t,n));return t=n+1,l}},o=(r,t,n)=>{if(r(e)){const e=r();return o(r,p(t,e,n),a(e,n))}return t},i=(r,t,n,o)=>{const l=r();if(void 0===l)return n;if(r(e)){if(Array.isArray(t)){const e=[...t];return e[l]=i(r,p(t,l,o),n,a(l,o)),e}return{...t,[l]:i(r,p(t,l,o),n,a(l,o))}}if(Array.isArray(t)){const r=[...t];return r[d(t,l)]=n,r}return"object"==typeof t&&null!==t?{...t,[l]:n}:p(t,l,o)},l=(r,t,n,o)=>{const i=r();void 0!==i&&(r(e)||y(t)?l(r,p(t,i,o),n,a(i,o)):t[d(t,i)]=n)},s=(r,t,n)=>{const o=r();if(void 0!==o){if(r(e)){const e=p(t,o,n);return{...t,[o]:s(r,e,a(o,n))}}if(Array.isArray(t)){const r=[...t];return delete r[d(t,o)],r}if("object"==typeof t&&null!==t){const{[o]:r,...e}=t;return e}return p(t,o,n)}},u=(r,t,n)=>{const o=r();if(void 0!==o)if(r(e)){const e=p(t,o,n);u(r,e,a(o,n))}else y(t)?p(t,o,n):delete t[o]},a=r(((r,t)=>t+"/"+c(r))),c=r=>r.toString().replace(/~/g,"~0").replace(/\//g,"~1"),f=r=>r.toString().replace(/~1/g,"/").replace(/~0/g,"~"),d=(r,t)=>Array.isArray(r)&&"-"===t?r.length:t,p=(r,t,e="")=>{if(void 0===r)throw TypeError(`Value at '${e}' is undefined and does not have property '${t}'`);if(null===r)throw TypeError(`Value at '${e}' is null and does not have property '${t}'`);if(y(r))throw TypeError(`Value at '${e}' is a ${typeof r} and does not have property '${t}'`);return r[d(r,t)]},y=r=>null===r||"object"!=typeof r;var v={nil:t,append:a,get:(r,e)=>{const i=n(r),l=r=>o(i,r,t);return void 0===e?l:l(e)},set:(e,o,l)=>{const s=n(e),u=r(((r,e)=>i(s,r,e,t)));return void 0===o?u:u(o,l)},assign:(e,o,i)=>{const s=n(e),u=r(((r,e)=>l(s,r,e,t)));return void 0===o?u:u(o,i)},unset:(r,e)=>{const o=n(r),i=r=>s(o,r,t);return void 0===e?i:i(e)},remove:(r,e)=>{const o=n(r),i=r=>u(o,r,t);return void 0===e?i:i(e)}};export{v as default};
2
2
  //# sourceMappingURL=json-pointer-esm.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-pointer-esm.min.js","sources":["../lib/index.js","../node_modules/just-curry-it/index.js"],"sourcesContent":["const curry = require(\"just-curry-it\");\n\n\nconst nil = \"\";\n\nconst compile = (pointer) => {\n if (pointer.length > 0 && pointer[0] !== \"/\") {\n throw Error(\"Invalid JSON Pointer\");\n }\n\n return pointer.split(\"/\").slice(1).map(unescape);\n};\n\nconst get = (pointer, value = undefined) => {\n const ptr = compile(pointer);\n\n const fn = (value) => ptr.reduce(([value, pointer], segment) => {\n return [applySegment(value, segment, pointer), append(segment, pointer)];\n }, [value, \"\"])[0];\n\n return value === undefined ? fn : fn(value);\n};\n\nconst set = (pointer, subject = undefined, value = undefined) => {\n const ptr = compile(pointer);\n const fn = curry((subject, value) => _set(ptr, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _set = (pointer, subject, value, cursor) => {\n if (pointer.length === 0) {\n return value;\n } else if (pointer.length > 1) {\n if (Array.isArray(subject)) {\n const index = pointer.shift();\n const clonedSubject = [...subject];\n clonedSubject[index] = _set(pointer, applySegment(subject, index, cursor), value, append(index, cursor));\n return clonedSubject;\n } else {\n const segment = pointer.shift();\n return { ...subject, [segment]: _set(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor)) };\n }\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n const segment = computeSegment(subject, pointer[0]);\n clonedSubject[segment] = value;\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n return { ...subject, [pointer[0]]: value };\n } else {\n return applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst assign = (pointer, subject = undefined, value = undefined) => {\n const ptr = compile(pointer);\n const fn = curry((subject, value) => _assign(ptr, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _assign = (pointer, subject, value, cursor) => {\n if (pointer.length === 0) {\n return;\n } else if (pointer.length === 1 && !isScalar(subject)) {\n const segment = computeSegment(subject, pointer[0]);\n subject[segment] = value;\n } else {\n const segment = pointer.shift();\n _assign(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor));\n }\n};\n\nconst unset = (pointer, subject = undefined) => {\n const ptr = compile(pointer);\n const fn = (subject) => _unset(ptr, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _unset = (pointer, subject, cursor) => {\n if (pointer.length == 0) {\n return undefined;\n } else if (pointer.length > 1) {\n const segment = pointer.shift();\n const value = applySegment(subject, segment, cursor);\n return { ...subject, [segment]: _unset(pointer, value, append(segment, cursor)) };\n } else if (Array.isArray(subject)) {\n return subject.filter((_, ndx) => ndx != pointer[0]);\n } else if (typeof subject === \"object\" && subject !== null) {\n // eslint-disable-next-line no-unused-vars\n const { [pointer[0]]: _, ...result } = subject;\n return result;\n } else {\n return applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst remove = (pointer, subject = undefined) => {\n const ptr = compile(pointer);\n const fn = (subject) => _remove(ptr, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _remove = (pointer, subject, cursor) => {\n if (pointer.length === 0) {\n return;\n } else if (pointer.length > 1) {\n const segment = pointer.shift();\n const value = applySegment(subject, segment, cursor);\n _remove(pointer, value, append(segment, cursor));\n } else if (Array.isArray(subject)) {\n subject.splice(pointer[0], 1);\n } else if (typeof subject === \"object\" && subject !== null) {\n delete subject[pointer[0]];\n } else {\n applySegment(subject, pointer[0], cursor);\n }\n};\n\nconst append = curry((segment, pointer) => pointer + \"/\" + escape(segment));\n\nconst escape = (segment) => segment.toString().replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\nconst unescape = (segment) => segment.toString().replace(/~1/g, \"/\").replace(/~0/g, \"~\");\nconst computeSegment = (value, segment) => Array.isArray(value) && segment === \"-\" ? value.length : segment;\n\nconst applySegment = (value, segment, cursor = \"\") => {\n if (value === undefined) {\n throw TypeError(`Value at '${cursor}' is undefined and does not have property '${segment}'`);\n } else if (value === null) {\n throw TypeError(`Value at '${cursor}' is null and does not have property '${segment}'`);\n } else if (isScalar(value)) {\n throw TypeError(`Value at '${cursor}' is a ${typeof value} and does not have property '${segment}'`);\n } else {\n const computedSegment = computeSegment(value, segment);\n return value[computedSegment];\n }\n};\n\nconst isScalar = (value) => value === null || typeof value !== \"object\";\n\nmodule.exports = { nil, append, get, set, assign, unset, remove };\n","module.exports = curry;\n\n/*\n function add(a, b, c) {\n return a + b + c;\n }\n curry(add)(1)(2)(3); // 6\n curry(add)(1)(2)(2); // 5\n curry(add)(2)(4, 3); // 9\n\n function add(...args) {\n return args.reduce((sum, n) => sum + n, 0)\n }\n var curryAdd4 = curry(add, 4)\n curryAdd4(1)(2, 3)(4); // 10\n\n function converter(ratio, input) {\n return (input*ratio).toFixed(1);\n }\n const curriedConverter = curry(converter)\n const milesToKm = curriedConverter(1.62);\n milesToKm(35); // 56.7\n milesToKm(10); // 16.2\n*/\n\nfunction curry(fn, arity) {\n return function curried() {\n if (arity == null) {\n arity = fn.length;\n }\n var args = [].slice.call(arguments);\n if (args.length >= arity) {\n return fn.apply(this, args);\n } else {\n return function() {\n return curried.apply(this, args.concat([].slice.call(arguments)));\n };\n }\n };\n}\n"],"names":["curry","fn","arity","curried","length","args","slice","call","arguments","apply","this","concat","compile","pointer","Error","split","map","unescape","_set","subject","value","cursor","Array","isArray","index","shift","clonedSubject","applySegment","append","segment","computeSegment","_assign","isScalar","_unset","filter","_","ndx","result","_remove","splice","escape","toString","replace","undefined","TypeError","lib","nil","get","ptr","reduce","set","assign","unset","remove"],"mappings":"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"}
1
+ {"version":3,"file":"json-pointer-esm.min.js","sources":["../lib/index.js","../node_modules/just-curry-it/index.cjs"],"sourcesContent":["const curry = require(\"just-curry-it\");\n\n\nconst nil = \"\";\n\nconst EXISTS = Symbol(\"EXISTS\");\n\nconst segmentGenerator = (pointer) => {\n if (pointer.length > 0 && pointer[0] !== \"/\") {\n throw Error(\"Invalid JSON Pointer\");\n }\n\n let segmentStart = 1;\n let segmentEnd = 0;\n\n return (mode) => {\n if (mode === EXISTS) {\n return segmentEnd < pointer.length;\n }\n\n if (segmentEnd >= pointer.length) {\n return;\n }\n\n const position = pointer.indexOf(\"/\", segmentStart);\n segmentEnd = position === -1 ? pointer.length : position;\n const segment = unescape(pointer.slice(segmentStart, segmentEnd));\n segmentStart = segmentEnd + 1;\n\n return segment;\n };\n};\n\nconst get = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _get(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _get = (nextSegment, subject, cursor) => {\n if (!nextSegment(EXISTS)) {\n return subject;\n } else {\n const segment = nextSegment();\n return _get(nextSegment, applySegment(subject, segment, cursor), append(segment, cursor));\n }\n};\n\nconst set = (pointer, subject = undefined, value = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = curry((subject, value) => _set(nextSegment, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _set = (nextSegment, subject, value, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return value;\n } else if (nextSegment(EXISTS)) {\n if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n clonedSubject[segment] = _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));\n return clonedSubject;\n } else {\n return { ...subject, [segment]: _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor)) };\n }\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n clonedSubject[computeSegment(subject, segment)] = value;\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n return { ...subject, [segment]: value };\n } else {\n return applySegment(subject, segment, cursor);\n }\n};\n\nconst assign = (pointer, subject = undefined, value = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = curry((subject, value) => _assign(nextSegment, subject, value, nil));\n return subject === undefined ? fn : fn(subject, value);\n};\n\nconst _assign = (nextSegment, subject, value, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (!nextSegment(EXISTS) && !isScalar(subject)) {\n subject[computeSegment(subject, segment)] = value;\n } else {\n _assign(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));\n }\n};\n\nconst unset = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _unset(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _unset = (nextSegment, subject, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (nextSegment(EXISTS)) {\n const value = applySegment(subject, segment, cursor);\n return { ...subject, [segment]: _unset(nextSegment, value, append(segment, cursor)) };\n } else if (Array.isArray(subject)) {\n const clonedSubject = [...subject];\n delete clonedSubject[computeSegment(subject, segment)];\n return clonedSubject;\n } else if (typeof subject === \"object\" && subject !== null) {\n // eslint-disable-next-line no-unused-vars\n const { [segment]: _, ...result } = subject;\n return result;\n } else {\n return applySegment(subject, segment, cursor);\n }\n};\n\nconst remove = (pointer, subject = undefined) => {\n const nextSegment = segmentGenerator(pointer);\n const fn = (subject) => _remove(nextSegment, subject, nil);\n return subject === undefined ? fn : fn(subject);\n};\n\nconst _remove = (nextSegment, subject, cursor) => {\n const segment = nextSegment();\n if (segment === undefined) {\n return;\n } else if (nextSegment(EXISTS)) {\n const value = applySegment(subject, segment, cursor);\n _remove(nextSegment, value, append(segment, cursor));\n } else if (!isScalar(subject)) {\n delete subject[segment];\n } else {\n applySegment(subject, segment, cursor);\n }\n};\n\nconst append = curry((segment, pointer) => pointer + \"/\" + escape(segment));\n\nconst escape = (segment) => segment.toString().replace(/~/g, \"~0\").replace(/\\//g, \"~1\");\nconst unescape = (segment) => segment.toString().replace(/~1/g, \"/\").replace(/~0/g, \"~\");\nconst computeSegment = (value, segment) => Array.isArray(value) && segment === \"-\" ? value.length : segment;\n\nconst applySegment = (value, segment, cursor = \"\") => {\n if (value === undefined) {\n throw TypeError(`Value at '${cursor}' is undefined and does not have property '${segment}'`);\n } else if (value === null) {\n throw TypeError(`Value at '${cursor}' is null and does not have property '${segment}'`);\n } else if (isScalar(value)) {\n throw TypeError(`Value at '${cursor}' is a ${typeof value} and does not have property '${segment}'`);\n } else {\n const computedSegment = computeSegment(value, segment);\n return value[computedSegment];\n }\n};\n\nconst isScalar = (value) => value === null || typeof value !== \"object\";\n\nmodule.exports = { nil, append, get, set, assign, unset, remove };\n","module.exports = curry;\n\n/*\n function add(a, b, c) {\n return a + b + c;\n }\n curry(add)(1)(2)(3); // 6\n curry(add)(1)(2)(2); // 5\n curry(add)(2)(4, 3); // 9\n\n function add(...args) {\n return args.reduce((sum, n) => sum + n, 0)\n }\n var curryAdd4 = curry(add, 4)\n curryAdd4(1)(2, 3)(4); // 10\n\n function converter(ratio, input) {\n return (input*ratio).toFixed(1);\n }\n const curriedConverter = curry(converter)\n const milesToKm = curriedConverter(1.62);\n milesToKm(35); // 56.7\n milesToKm(10); // 16.2\n*/\n\nfunction curry(fn, arity) {\n return function curried() {\n if (arity == null) {\n arity = fn.length;\n }\n var args = [].slice.call(arguments);\n if (args.length >= arity) {\n return fn.apply(this, args);\n } else {\n return function() {\n return curried.apply(this, args.concat([].slice.call(arguments)));\n };\n }\n };\n}\n"],"names":["curry","fn","arity","curried","length","args","slice","call","arguments","apply","this","concat","nil","EXISTS","Symbol","segmentGenerator","pointer","Error","segmentStart","segmentEnd","mode","position","indexOf","segment","unescape","_get","nextSegment","subject","cursor","applySegment","append","_set","value","undefined","Array","isArray","clonedSubject","computeSegment","_assign","isScalar","_unset","_","result","_remove","escape","toString","replace","TypeError","lib","get","set","assign","unset","remove"],"mappings":"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"}
@@ -47,116 +47,138 @@ var JsonPointer = (function () {
47
47
 
48
48
  const nil = "";
49
49
 
50
- const compile = (pointer) => {
50
+ const EXISTS = Symbol("EXISTS");
51
+
52
+ const segmentGenerator = (pointer) => {
51
53
  if (pointer.length > 0 && pointer[0] !== "/") {
52
54
  throw Error("Invalid JSON Pointer");
53
55
  }
54
56
 
55
- return pointer.split("/").slice(1).map(unescape);
56
- };
57
+ let segmentStart = 1;
58
+ let segmentEnd = 0;
57
59
 
58
- const get = (pointer, value = undefined) => {
59
- const ptr = compile(pointer);
60
+ return (mode) => {
61
+ if (mode === EXISTS) {
62
+ return segmentEnd < pointer.length;
63
+ }
64
+
65
+ if (segmentEnd >= pointer.length) {
66
+ return;
67
+ }
68
+
69
+ const position = pointer.indexOf("/", segmentStart);
70
+ segmentEnd = position === -1 ? pointer.length : position;
71
+ const segment = unescape(pointer.slice(segmentStart, segmentEnd));
72
+ segmentStart = segmentEnd + 1;
73
+
74
+ return segment;
75
+ };
76
+ };
60
77
 
61
- const fn = (value) => ptr.reduce(([value, pointer], segment) => {
62
- return [applySegment(value, segment, pointer), append(segment, pointer)];
63
- }, [value, ""])[0];
78
+ const get = (pointer, subject = undefined) => {
79
+ const nextSegment = segmentGenerator(pointer);
80
+ const fn = (subject) => _get(nextSegment, subject, nil);
81
+ return subject === undefined ? fn : fn(subject);
82
+ };
64
83
 
65
- return value === undefined ? fn : fn(value);
84
+ const _get = (nextSegment, subject, cursor) => {
85
+ if (!nextSegment(EXISTS)) {
86
+ return subject;
87
+ } else {
88
+ const segment = nextSegment();
89
+ return _get(nextSegment, applySegment(subject, segment, cursor), append(segment, cursor));
90
+ }
66
91
  };
67
92
 
68
93
  const set = (pointer, subject = undefined, value = undefined) => {
69
- const ptr = compile(pointer);
70
- const fn = curry((subject, value) => _set(ptr, subject, value, nil));
94
+ const nextSegment = segmentGenerator(pointer);
95
+ const fn = curry((subject, value) => _set(nextSegment, subject, value, nil));
71
96
  return subject === undefined ? fn : fn(subject, value);
72
97
  };
73
98
 
74
- const _set = (pointer, subject, value, cursor) => {
75
- if (pointer.length === 0) {
99
+ const _set = (nextSegment, subject, value, cursor) => {
100
+ const segment = nextSegment();
101
+ if (segment === undefined) {
76
102
  return value;
77
- } else if (pointer.length > 1) {
103
+ } else if (nextSegment(EXISTS)) {
78
104
  if (Array.isArray(subject)) {
79
- const index = pointer.shift();
80
105
  const clonedSubject = [...subject];
81
- clonedSubject[index] = _set(pointer, applySegment(subject, index, cursor), value, append(index, cursor));
106
+ clonedSubject[segment] = _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
82
107
  return clonedSubject;
83
108
  } else {
84
- const segment = pointer.shift();
85
- return { ...subject, [segment]: _set(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
109
+ return { ...subject, [segment]: _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
86
110
  }
87
111
  } else if (Array.isArray(subject)) {
88
112
  const clonedSubject = [...subject];
89
- const segment = computeSegment(subject, pointer[0]);
90
- clonedSubject[segment] = value;
113
+ clonedSubject[computeSegment(subject, segment)] = value;
91
114
  return clonedSubject;
92
115
  } else if (typeof subject === "object" && subject !== null) {
93
- return { ...subject, [pointer[0]]: value };
116
+ return { ...subject, [segment]: value };
94
117
  } else {
95
- return applySegment(subject, pointer[0], cursor);
118
+ return applySegment(subject, segment, cursor);
96
119
  }
97
120
  };
98
121
 
99
122
  const assign = (pointer, subject = undefined, value = undefined) => {
100
- const ptr = compile(pointer);
101
- const fn = curry((subject, value) => _assign(ptr, subject, value, nil));
123
+ const nextSegment = segmentGenerator(pointer);
124
+ const fn = curry((subject, value) => _assign(nextSegment, subject, value, nil));
102
125
  return subject === undefined ? fn : fn(subject, value);
103
126
  };
104
127
 
105
- const _assign = (pointer, subject, value, cursor) => {
106
- if (pointer.length === 0) {
128
+ const _assign = (nextSegment, subject, value, cursor) => {
129
+ const segment = nextSegment();
130
+ if (segment === undefined) {
107
131
  return;
108
- } else if (pointer.length === 1 && !isScalar(subject)) {
109
- const segment = computeSegment(subject, pointer[0]);
110
- subject[segment] = value;
132
+ } else if (!nextSegment(EXISTS) && !isScalar(subject)) {
133
+ subject[computeSegment(subject, segment)] = value;
111
134
  } else {
112
- const segment = pointer.shift();
113
- _assign(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor));
135
+ _assign(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
114
136
  }
115
137
  };
116
138
 
117
139
  const unset = (pointer, subject = undefined) => {
118
- const ptr = compile(pointer);
119
- const fn = (subject) => _unset(ptr, subject, nil);
140
+ const nextSegment = segmentGenerator(pointer);
141
+ const fn = (subject) => _unset(nextSegment, subject, nil);
120
142
  return subject === undefined ? fn : fn(subject);
121
143
  };
122
144
 
123
- const _unset = (pointer, subject, cursor) => {
124
- if (pointer.length == 0) {
125
- return undefined;
126
- } else if (pointer.length > 1) {
127
- const segment = pointer.shift();
145
+ const _unset = (nextSegment, subject, cursor) => {
146
+ const segment = nextSegment();
147
+ if (segment === undefined) {
148
+ return;
149
+ } else if (nextSegment(EXISTS)) {
128
150
  const value = applySegment(subject, segment, cursor);
129
- return { ...subject, [segment]: _unset(pointer, value, append(segment, cursor)) };
151
+ return { ...subject, [segment]: _unset(nextSegment, value, append(segment, cursor)) };
130
152
  } else if (Array.isArray(subject)) {
131
- return subject.filter((_, ndx) => ndx != pointer[0]);
153
+ const clonedSubject = [...subject];
154
+ delete clonedSubject[computeSegment(subject, segment)];
155
+ return clonedSubject;
132
156
  } else if (typeof subject === "object" && subject !== null) {
133
157
  // eslint-disable-next-line no-unused-vars
134
- const { [pointer[0]]: _, ...result } = subject;
158
+ const { [segment]: _, ...result } = subject;
135
159
  return result;
136
160
  } else {
137
- return applySegment(subject, pointer[0], cursor);
161
+ return applySegment(subject, segment, cursor);
138
162
  }
139
163
  };
140
164
 
141
165
  const remove = (pointer, subject = undefined) => {
142
- const ptr = compile(pointer);
143
- const fn = (subject) => _remove(ptr, subject, nil);
166
+ const nextSegment = segmentGenerator(pointer);
167
+ const fn = (subject) => _remove(nextSegment, subject, nil);
144
168
  return subject === undefined ? fn : fn(subject);
145
169
  };
146
170
 
147
- const _remove = (pointer, subject, cursor) => {
148
- if (pointer.length === 0) {
171
+ const _remove = (nextSegment, subject, cursor) => {
172
+ const segment = nextSegment();
173
+ if (segment === undefined) {
149
174
  return;
150
- } else if (pointer.length > 1) {
151
- const segment = pointer.shift();
175
+ } else if (nextSegment(EXISTS)) {
152
176
  const value = applySegment(subject, segment, cursor);
153
- _remove(pointer, value, append(segment, cursor));
154
- } else if (Array.isArray(subject)) {
155
- subject.splice(pointer[0], 1);
156
- } else if (typeof subject === "object" && subject !== null) {
157
- delete subject[pointer[0]];
177
+ _remove(nextSegment, value, append(segment, cursor));
178
+ } else if (!isScalar(subject)) {
179
+ delete subject[segment];
158
180
  } else {
159
- applySegment(subject, pointer[0], cursor);
181
+ applySegment(subject, segment, cursor);
160
182
  }
161
183
  };
162
184