@hyperjump/json-pointer 0.9.7 → 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.
- package/dist/json-pointer-amd.js +76 -54
- package/dist/json-pointer-amd.js.map +1 -1
- package/dist/json-pointer-amd.min.js +1 -1
- package/dist/json-pointer-amd.min.js.map +1 -1
- package/dist/json-pointer-cjs.js +76 -54
- package/dist/json-pointer-cjs.js.map +1 -1
- package/dist/json-pointer-cjs.min.js +1 -1
- package/dist/json-pointer-cjs.min.js.map +1 -1
- package/dist/json-pointer-esm.js +76 -54
- package/dist/json-pointer-esm.js.map +1 -1
- package/dist/json-pointer-esm.min.js +1 -1
- package/dist/json-pointer-esm.min.js.map +1 -1
- package/dist/json-pointer-iife.js +76 -54
- package/dist/json-pointer-iife.js.map +1 -1
- package/dist/json-pointer-iife.min.js +1 -1
- package/dist/json-pointer-iife.min.js.map +1 -1
- package/dist/json-pointer-system.js +76 -54
- package/dist/json-pointer-system.js.map +1 -1
- package/dist/json-pointer-system.min.js +1 -1
- package/dist/json-pointer-system.min.js.map +1 -1
- package/dist/json-pointer-umd.js +76 -54
- package/dist/json-pointer-umd.js.map +1 -1
- package/dist/json-pointer-umd.min.js +1 -1
- package/dist/json-pointer-umd.min.js.map +1 -1
- package/lib/index.js +76 -54
- package/package.json +2 -2
package/dist/json-pointer-umd.js
CHANGED
|
@@ -50,116 +50,138 @@
|
|
|
50
50
|
|
|
51
51
|
const nil = "";
|
|
52
52
|
|
|
53
|
-
const
|
|
53
|
+
const EXISTS = Symbol("EXISTS");
|
|
54
|
+
|
|
55
|
+
const segmentGenerator = (pointer) => {
|
|
54
56
|
if (pointer.length > 0 && pointer[0] !== "/") {
|
|
55
57
|
throw Error("Invalid JSON Pointer");
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
let segmentStart = 1;
|
|
61
|
+
let segmentEnd = 0;
|
|
60
62
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
+
return (mode) => {
|
|
64
|
+
if (mode === EXISTS) {
|
|
65
|
+
return segmentEnd < pointer.length;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (segmentEnd >= pointer.length) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const position = pointer.indexOf("/", segmentStart);
|
|
73
|
+
segmentEnd = position === -1 ? pointer.length : position;
|
|
74
|
+
const segment = unescape(pointer.slice(segmentStart, segmentEnd));
|
|
75
|
+
segmentStart = segmentEnd + 1;
|
|
76
|
+
|
|
77
|
+
return segment;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
63
80
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
81
|
+
const get = (pointer, subject = undefined) => {
|
|
82
|
+
const nextSegment = segmentGenerator(pointer);
|
|
83
|
+
const fn = (subject) => _get(nextSegment, subject, nil);
|
|
84
|
+
return subject === undefined ? fn : fn(subject);
|
|
85
|
+
};
|
|
67
86
|
|
|
68
|
-
|
|
87
|
+
const _get = (nextSegment, subject, cursor) => {
|
|
88
|
+
if (!nextSegment(EXISTS)) {
|
|
89
|
+
return subject;
|
|
90
|
+
} else {
|
|
91
|
+
const segment = nextSegment();
|
|
92
|
+
return _get(nextSegment, applySegment(subject, segment, cursor), append(segment, cursor));
|
|
93
|
+
}
|
|
69
94
|
};
|
|
70
95
|
|
|
71
96
|
const set = (pointer, subject = undefined, value = undefined) => {
|
|
72
|
-
const
|
|
73
|
-
const fn = curry((subject, value) => _set(
|
|
97
|
+
const nextSegment = segmentGenerator(pointer);
|
|
98
|
+
const fn = curry((subject, value) => _set(nextSegment, subject, value, nil));
|
|
74
99
|
return subject === undefined ? fn : fn(subject, value);
|
|
75
100
|
};
|
|
76
101
|
|
|
77
|
-
const _set = (
|
|
78
|
-
|
|
102
|
+
const _set = (nextSegment, subject, value, cursor) => {
|
|
103
|
+
const segment = nextSegment();
|
|
104
|
+
if (segment === undefined) {
|
|
79
105
|
return value;
|
|
80
|
-
} else if (
|
|
106
|
+
} else if (nextSegment(EXISTS)) {
|
|
81
107
|
if (Array.isArray(subject)) {
|
|
82
|
-
const index = pointer.shift();
|
|
83
108
|
const clonedSubject = [...subject];
|
|
84
|
-
clonedSubject[
|
|
109
|
+
clonedSubject[segment] = _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
|
|
85
110
|
return clonedSubject;
|
|
86
111
|
} else {
|
|
87
|
-
|
|
88
|
-
return { ...subject, [segment]: _set(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
|
|
112
|
+
return { ...subject, [segment]: _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
|
|
89
113
|
}
|
|
90
114
|
} else if (Array.isArray(subject)) {
|
|
91
115
|
const clonedSubject = [...subject];
|
|
92
|
-
|
|
93
|
-
clonedSubject[segment] = value;
|
|
116
|
+
clonedSubject[computeSegment(subject, segment)] = value;
|
|
94
117
|
return clonedSubject;
|
|
95
118
|
} else if (typeof subject === "object" && subject !== null) {
|
|
96
|
-
return { ...subject, [
|
|
119
|
+
return { ...subject, [segment]: value };
|
|
97
120
|
} else {
|
|
98
|
-
return applySegment(subject,
|
|
121
|
+
return applySegment(subject, segment, cursor);
|
|
99
122
|
}
|
|
100
123
|
};
|
|
101
124
|
|
|
102
125
|
const assign = (pointer, subject = undefined, value = undefined) => {
|
|
103
|
-
const
|
|
104
|
-
const fn = curry((subject, value) => _assign(
|
|
126
|
+
const nextSegment = segmentGenerator(pointer);
|
|
127
|
+
const fn = curry((subject, value) => _assign(nextSegment, subject, value, nil));
|
|
105
128
|
return subject === undefined ? fn : fn(subject, value);
|
|
106
129
|
};
|
|
107
130
|
|
|
108
|
-
const _assign = (
|
|
109
|
-
|
|
131
|
+
const _assign = (nextSegment, subject, value, cursor) => {
|
|
132
|
+
const segment = nextSegment();
|
|
133
|
+
if (segment === undefined) {
|
|
110
134
|
return;
|
|
111
|
-
} else if (
|
|
112
|
-
|
|
113
|
-
subject[segment] = value;
|
|
135
|
+
} else if (!nextSegment(EXISTS) && !isScalar(subject)) {
|
|
136
|
+
subject[computeSegment(subject, segment)] = value;
|
|
114
137
|
} else {
|
|
115
|
-
|
|
116
|
-
_assign(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor));
|
|
138
|
+
_assign(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
|
|
117
139
|
}
|
|
118
140
|
};
|
|
119
141
|
|
|
120
142
|
const unset = (pointer, subject = undefined) => {
|
|
121
|
-
const
|
|
122
|
-
const fn = (subject) => _unset(
|
|
143
|
+
const nextSegment = segmentGenerator(pointer);
|
|
144
|
+
const fn = (subject) => _unset(nextSegment, subject, nil);
|
|
123
145
|
return subject === undefined ? fn : fn(subject);
|
|
124
146
|
};
|
|
125
147
|
|
|
126
|
-
const _unset = (
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
148
|
+
const _unset = (nextSegment, subject, cursor) => {
|
|
149
|
+
const segment = nextSegment();
|
|
150
|
+
if (segment === undefined) {
|
|
151
|
+
return;
|
|
152
|
+
} else if (nextSegment(EXISTS)) {
|
|
131
153
|
const value = applySegment(subject, segment, cursor);
|
|
132
|
-
return { ...subject, [segment]: _unset(
|
|
154
|
+
return { ...subject, [segment]: _unset(nextSegment, value, append(segment, cursor)) };
|
|
133
155
|
} else if (Array.isArray(subject)) {
|
|
134
|
-
|
|
156
|
+
const clonedSubject = [...subject];
|
|
157
|
+
delete clonedSubject[computeSegment(subject, segment)];
|
|
158
|
+
return clonedSubject;
|
|
135
159
|
} else if (typeof subject === "object" && subject !== null) {
|
|
136
160
|
// eslint-disable-next-line no-unused-vars
|
|
137
|
-
const { [
|
|
161
|
+
const { [segment]: _, ...result } = subject;
|
|
138
162
|
return result;
|
|
139
163
|
} else {
|
|
140
|
-
return applySegment(subject,
|
|
164
|
+
return applySegment(subject, segment, cursor);
|
|
141
165
|
}
|
|
142
166
|
};
|
|
143
167
|
|
|
144
168
|
const remove = (pointer, subject = undefined) => {
|
|
145
|
-
const
|
|
146
|
-
const fn = (subject) => _remove(
|
|
169
|
+
const nextSegment = segmentGenerator(pointer);
|
|
170
|
+
const fn = (subject) => _remove(nextSegment, subject, nil);
|
|
147
171
|
return subject === undefined ? fn : fn(subject);
|
|
148
172
|
};
|
|
149
173
|
|
|
150
|
-
const _remove = (
|
|
151
|
-
|
|
174
|
+
const _remove = (nextSegment, subject, cursor) => {
|
|
175
|
+
const segment = nextSegment();
|
|
176
|
+
if (segment === undefined) {
|
|
152
177
|
return;
|
|
153
|
-
} else if (
|
|
154
|
-
const segment = pointer.shift();
|
|
178
|
+
} else if (nextSegment(EXISTS)) {
|
|
155
179
|
const value = applySegment(subject, segment, cursor);
|
|
156
|
-
_remove(
|
|
157
|
-
} else if (
|
|
158
|
-
subject
|
|
159
|
-
} else if (typeof subject === "object" && subject !== null) {
|
|
160
|
-
delete subject[pointer[0]];
|
|
180
|
+
_remove(nextSegment, value, append(segment, cursor));
|
|
181
|
+
} else if (!isScalar(subject)) {
|
|
182
|
+
delete subject[segment];
|
|
161
183
|
} else {
|
|
162
|
-
applySegment(subject,
|
|
184
|
+
applySegment(subject, segment, cursor);
|
|
163
185
|
}
|
|
164
186
|
};
|
|
165
187
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-pointer-umd.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-umd.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
|
-
!function(e,
|
|
1
|
+
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).JsonPointer=r()}(this,(function(){"use strict";var e=function(e,r){return function t(){null==r&&(r=e.length);var n=[].slice.call(arguments);return n.length>=r?e.apply(this,n):function(){return t.apply(this,n.concat([].slice.call(arguments)))}}};const r=e,t="",n=Symbol("EXISTS"),o=e=>{if(e.length>0&&"/"!==e[0])throw Error("Invalid JSON Pointer");let r=1,t=0;return o=>{if(o===n)return t<e.length;if(t>=e.length)return;const i=e.indexOf("/",r);t=-1===i?e.length:i;const l=d(e.slice(r,t));return r=t+1,l}},i=(e,r,t)=>{if(e(n)){const n=e();return i(e,y(r,n,t),f(n,t))}return r},l=(e,r,t,o)=>{const i=e();if(void 0===i)return t;if(e(n)){if(Array.isArray(r)){const n=[...r];return n[i]=l(e,y(r,i,o),t,f(i,o)),n}return{...r,[i]:l(e,y(r,i,o),t,f(i,o))}}if(Array.isArray(r)){const e=[...r];return e[p(r,i)]=t,e}return"object"==typeof r&&null!==r?{...r,[i]:t}:y(r,i,o)},s=(e,r,t,o)=>{const i=e();void 0!==i&&(e(n)||h(r)?s(e,y(r,i,o),t,f(i,o)):r[p(r,i)]=t)},u=(e,r,t)=>{const o=e();if(void 0!==o){if(e(n)){const n=y(r,o,t);return{...r,[o]:u(e,n,f(o,t))}}if(Array.isArray(r)){const e=[...r];return delete e[p(r,o)],e}if("object"==typeof r&&null!==r){const{[o]:e,...t}=r;return t}return y(r,o,t)}},c=(e,r,t)=>{const o=e();if(void 0!==o)if(e(n)){const n=y(r,o,t);c(e,n,f(o,t))}else h(r)?y(r,o,t):delete r[o]},f=r(((e,r)=>r+"/"+a(e))),a=e=>e.toString().replace(/~/g,"~0").replace(/\//g,"~1"),d=e=>e.toString().replace(/~1/g,"/").replace(/~0/g,"~"),p=(e,r)=>Array.isArray(e)&&"-"===r?e.length:r,y=(e,r,t="")=>{if(void 0===e)throw TypeError(`Value at '${t}' is undefined and does not have property '${r}'`);if(null===e)throw TypeError(`Value at '${t}' is null and does not have property '${r}'`);if(h(e))throw TypeError(`Value at '${t}' is a ${typeof e} and does not have property '${r}'`);return e[p(e,r)]},h=e=>null===e||"object"!=typeof e;return{nil:t,append:f,get:(e,r)=>{const n=o(e),l=e=>i(n,e,t);return void 0===r?l:l(r)},set:(e,n,i)=>{const s=o(e),u=r(((e,r)=>l(s,e,r,t)));return void 0===n?u:u(n,i)},assign:(e,n,i)=>{const l=o(e),u=r(((e,r)=>s(l,e,r,t)));return void 0===n?u:u(n,i)},unset:(e,r)=>{const n=o(e),i=e=>u(n,e,t);return void 0===r?i:i(r)},remove:(e,r)=>{const n=o(e),i=e=>c(n,e,t);return void 0===r?i:i(r)}}}));
|
|
2
2
|
//# sourceMappingURL=json-pointer-umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json-pointer-umd.min.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":["justCurryIt","fn","arity","curried","length","args","slice","call","arguments","apply","this","concat","curry","require$$0","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","nil","get","ptr","reduce","set","assign","unset","remove"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json-pointer-umd.min.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":["justCurryIt","fn","arity","curried","length","args","slice","call","arguments","apply","this","concat","curry","require$$0","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","get","set","assign","unset","remove"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -3,116 +3,138 @@ const curry = require("just-curry-it");
|
|
|
3
3
|
|
|
4
4
|
const nil = "";
|
|
5
5
|
|
|
6
|
-
const
|
|
6
|
+
const EXISTS = Symbol("EXISTS");
|
|
7
|
+
|
|
8
|
+
const segmentGenerator = (pointer) => {
|
|
7
9
|
if (pointer.length > 0 && pointer[0] !== "/") {
|
|
8
10
|
throw Error("Invalid JSON Pointer");
|
|
9
11
|
}
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
let segmentStart = 1;
|
|
14
|
+
let segmentEnd = 0;
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
+
return (mode) => {
|
|
17
|
+
if (mode === EXISTS) {
|
|
18
|
+
return segmentEnd < pointer.length;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
if (segmentEnd >= pointer.length) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
16
24
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
25
|
+
const position = pointer.indexOf("/", segmentStart);
|
|
26
|
+
segmentEnd = position === -1 ? pointer.length : position;
|
|
27
|
+
const segment = unescape(pointer.slice(segmentStart, segmentEnd));
|
|
28
|
+
segmentStart = segmentEnd + 1;
|
|
20
29
|
|
|
21
|
-
|
|
30
|
+
return segment;
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const get = (pointer, subject = undefined) => {
|
|
35
|
+
const nextSegment = segmentGenerator(pointer);
|
|
36
|
+
const fn = (subject) => _get(nextSegment, subject, nil);
|
|
37
|
+
return subject === undefined ? fn : fn(subject);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const _get = (nextSegment, subject, cursor) => {
|
|
41
|
+
if (!nextSegment(EXISTS)) {
|
|
42
|
+
return subject;
|
|
43
|
+
} else {
|
|
44
|
+
const segment = nextSegment();
|
|
45
|
+
return _get(nextSegment, applySegment(subject, segment, cursor), append(segment, cursor));
|
|
46
|
+
}
|
|
22
47
|
};
|
|
23
48
|
|
|
24
49
|
const set = (pointer, subject = undefined, value = undefined) => {
|
|
25
|
-
const
|
|
26
|
-
const fn = curry((subject, value) => _set(
|
|
50
|
+
const nextSegment = segmentGenerator(pointer);
|
|
51
|
+
const fn = curry((subject, value) => _set(nextSegment, subject, value, nil));
|
|
27
52
|
return subject === undefined ? fn : fn(subject, value);
|
|
28
53
|
};
|
|
29
54
|
|
|
30
|
-
const _set = (
|
|
31
|
-
|
|
55
|
+
const _set = (nextSegment, subject, value, cursor) => {
|
|
56
|
+
const segment = nextSegment();
|
|
57
|
+
if (segment === undefined) {
|
|
32
58
|
return value;
|
|
33
|
-
} else if (
|
|
59
|
+
} else if (nextSegment(EXISTS)) {
|
|
34
60
|
if (Array.isArray(subject)) {
|
|
35
|
-
const index = pointer.shift();
|
|
36
61
|
const clonedSubject = [...subject];
|
|
37
|
-
clonedSubject[
|
|
62
|
+
clonedSubject[segment] = _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
|
|
38
63
|
return clonedSubject;
|
|
39
64
|
} else {
|
|
40
|
-
|
|
41
|
-
return { ...subject, [segment]: _set(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
|
|
65
|
+
return { ...subject, [segment]: _set(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor)) };
|
|
42
66
|
}
|
|
43
67
|
} else if (Array.isArray(subject)) {
|
|
44
68
|
const clonedSubject = [...subject];
|
|
45
|
-
|
|
46
|
-
clonedSubject[segment] = value;
|
|
69
|
+
clonedSubject[computeSegment(subject, segment)] = value;
|
|
47
70
|
return clonedSubject;
|
|
48
71
|
} else if (typeof subject === "object" && subject !== null) {
|
|
49
|
-
return { ...subject, [
|
|
72
|
+
return { ...subject, [segment]: value };
|
|
50
73
|
} else {
|
|
51
|
-
return applySegment(subject,
|
|
74
|
+
return applySegment(subject, segment, cursor);
|
|
52
75
|
}
|
|
53
76
|
};
|
|
54
77
|
|
|
55
78
|
const assign = (pointer, subject = undefined, value = undefined) => {
|
|
56
|
-
const
|
|
57
|
-
const fn = curry((subject, value) => _assign(
|
|
79
|
+
const nextSegment = segmentGenerator(pointer);
|
|
80
|
+
const fn = curry((subject, value) => _assign(nextSegment, subject, value, nil));
|
|
58
81
|
return subject === undefined ? fn : fn(subject, value);
|
|
59
82
|
};
|
|
60
83
|
|
|
61
|
-
const _assign = (
|
|
62
|
-
|
|
84
|
+
const _assign = (nextSegment, subject, value, cursor) => {
|
|
85
|
+
const segment = nextSegment();
|
|
86
|
+
if (segment === undefined) {
|
|
63
87
|
return;
|
|
64
|
-
} else if (
|
|
65
|
-
|
|
66
|
-
subject[segment] = value;
|
|
88
|
+
} else if (!nextSegment(EXISTS) && !isScalar(subject)) {
|
|
89
|
+
subject[computeSegment(subject, segment)] = value;
|
|
67
90
|
} else {
|
|
68
|
-
|
|
69
|
-
_assign(pointer, applySegment(subject, segment, cursor), value, append(segment, cursor));
|
|
91
|
+
_assign(nextSegment, applySegment(subject, segment, cursor), value, append(segment, cursor));
|
|
70
92
|
}
|
|
71
93
|
};
|
|
72
94
|
|
|
73
95
|
const unset = (pointer, subject = undefined) => {
|
|
74
|
-
const
|
|
75
|
-
const fn = (subject) => _unset(
|
|
96
|
+
const nextSegment = segmentGenerator(pointer);
|
|
97
|
+
const fn = (subject) => _unset(nextSegment, subject, nil);
|
|
76
98
|
return subject === undefined ? fn : fn(subject);
|
|
77
99
|
};
|
|
78
100
|
|
|
79
|
-
const _unset = (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
101
|
+
const _unset = (nextSegment, subject, cursor) => {
|
|
102
|
+
const segment = nextSegment();
|
|
103
|
+
if (segment === undefined) {
|
|
104
|
+
return;
|
|
105
|
+
} else if (nextSegment(EXISTS)) {
|
|
84
106
|
const value = applySegment(subject, segment, cursor);
|
|
85
|
-
return { ...subject, [segment]: _unset(
|
|
107
|
+
return { ...subject, [segment]: _unset(nextSegment, value, append(segment, cursor)) };
|
|
86
108
|
} else if (Array.isArray(subject)) {
|
|
87
|
-
|
|
109
|
+
const clonedSubject = [...subject];
|
|
110
|
+
delete clonedSubject[computeSegment(subject, segment)];
|
|
111
|
+
return clonedSubject;
|
|
88
112
|
} else if (typeof subject === "object" && subject !== null) {
|
|
89
113
|
// eslint-disable-next-line no-unused-vars
|
|
90
|
-
const { [
|
|
114
|
+
const { [segment]: _, ...result } = subject;
|
|
91
115
|
return result;
|
|
92
116
|
} else {
|
|
93
|
-
return applySegment(subject,
|
|
117
|
+
return applySegment(subject, segment, cursor);
|
|
94
118
|
}
|
|
95
119
|
};
|
|
96
120
|
|
|
97
121
|
const remove = (pointer, subject = undefined) => {
|
|
98
|
-
const
|
|
99
|
-
const fn = (subject) => _remove(
|
|
122
|
+
const nextSegment = segmentGenerator(pointer);
|
|
123
|
+
const fn = (subject) => _remove(nextSegment, subject, nil);
|
|
100
124
|
return subject === undefined ? fn : fn(subject);
|
|
101
125
|
};
|
|
102
126
|
|
|
103
|
-
const _remove = (
|
|
104
|
-
|
|
127
|
+
const _remove = (nextSegment, subject, cursor) => {
|
|
128
|
+
const segment = nextSegment();
|
|
129
|
+
if (segment === undefined) {
|
|
105
130
|
return;
|
|
106
|
-
} else if (
|
|
107
|
-
const segment = pointer.shift();
|
|
131
|
+
} else if (nextSegment(EXISTS)) {
|
|
108
132
|
const value = applySegment(subject, segment, cursor);
|
|
109
|
-
_remove(
|
|
110
|
-
} else if (
|
|
111
|
-
subject
|
|
112
|
-
} else if (typeof subject === "object" && subject !== null) {
|
|
113
|
-
delete subject[pointer[0]];
|
|
133
|
+
_remove(nextSegment, value, append(segment, cursor));
|
|
134
|
+
} else if (!isScalar(subject)) {
|
|
135
|
+
delete subject[segment];
|
|
114
136
|
} else {
|
|
115
|
-
applySegment(subject,
|
|
137
|
+
applySegment(subject, segment, cursor);
|
|
116
138
|
}
|
|
117
139
|
};
|
|
118
140
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperjump/json-pointer",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.8",
|
|
4
4
|
"description": "An RFC-6901 JSON Pointer implementation",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"exports": {
|
|
@@ -46,6 +46,6 @@
|
|
|
46
46
|
"typescript": "*"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"just-curry-it": "^5.
|
|
49
|
+
"just-curry-it": "^5.3.0"
|
|
50
50
|
}
|
|
51
51
|
}
|