@ztimson/utils 0.26.24 → 0.26.25
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/index.cjs +38 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +38 -0
- package/dist/index.mjs.map +1 -1
- package/dist/objects.d.ts +17 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -121,6 +121,42 @@ ${opts.message || this.desc}`;
|
|
|
121
121
|
`;
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
|
+
function applyDeltas(target, deltas) {
|
|
125
|
+
for (const delta of deltas) {
|
|
126
|
+
for (const [key, value] of Object.entries(delta)) {
|
|
127
|
+
if (value === null) {
|
|
128
|
+
delete target[key];
|
|
129
|
+
} else if (typeof value === "object" && !Array.isArray(value)) {
|
|
130
|
+
if (typeof target[key] !== "object" || Array.isArray(target[key])) {
|
|
131
|
+
target[key] = {};
|
|
132
|
+
}
|
|
133
|
+
applyDeltas(target[key], [value]);
|
|
134
|
+
} else {
|
|
135
|
+
target[key] = value;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return target;
|
|
140
|
+
}
|
|
141
|
+
function calcDelta(old, target) {
|
|
142
|
+
const delta = {};
|
|
143
|
+
const keys = /* @__PURE__ */ new Set([...Object.keys(old || {}), ...Object.keys(target || {})]);
|
|
144
|
+
for (const key of keys) {
|
|
145
|
+
const val1 = old == null ? void 0 : old[key];
|
|
146
|
+
const val2 = target == null ? void 0 : target[key];
|
|
147
|
+
if (!(key in target)) {
|
|
148
|
+
delta[key] = val1;
|
|
149
|
+
} else if (!(key in old)) {
|
|
150
|
+
delta[key] = null;
|
|
151
|
+
} else if (typeof val1 === "object" && typeof val2 === "object" && val1 && val2 && !Array.isArray(val1)) {
|
|
152
|
+
const nested = calcDelta(val1, val2);
|
|
153
|
+
if (Object.keys(nested).length) delta[key] = nested;
|
|
154
|
+
} else if (val1 !== val2) {
|
|
155
|
+
delta[key] = val1;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return delta;
|
|
159
|
+
}
|
|
124
160
|
function clean(obj, undefinedOnly = false) {
|
|
125
161
|
if (obj == null) throw new Error("Cannot clean a NULL value");
|
|
126
162
|
if (Array.isArray(obj)) {
|
|
@@ -2334,7 +2370,9 @@ ${opts.message || this.desc}`;
|
|
|
2334
2370
|
exports2.UnauthorizedError = UnauthorizedError;
|
|
2335
2371
|
exports2.addUnique = addUnique;
|
|
2336
2372
|
exports2.adjustedInterval = adjustedInterval;
|
|
2373
|
+
exports2.applyDeltas = applyDeltas;
|
|
2337
2374
|
exports2.arrayDiff = arrayDiff;
|
|
2375
|
+
exports2.calcDelta = calcDelta;
|
|
2338
2376
|
exports2.camelCase = camelCase;
|
|
2339
2377
|
exports2.caseInsensitiveSort = caseInsensitiveSort;
|
|
2340
2378
|
exports2.clean = clean;
|