@catbee/utils 0.0.8-rc.1 → 0.0.8-rc.2
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/build/esm/config.d.ts +0 -1
- package/build/esm/config.js +6 -7
- package/build/esm/index.d.ts +0 -1
- package/build/esm/index.js +0 -1
- package/build/esm/servers/server.builder.d.ts +0 -1
- package/build/esm/servers/server.builder.js +99 -147
- package/build/esm/servers/server.d.ts +0 -1
- package/build/esm/servers/server.js +591 -876
- package/build/esm/types/api-response.d.ts +0 -1
- package/build/esm/types/api-response.js +0 -1
- package/build/esm/types/index.d.ts +0 -1
- package/build/esm/types/index.js +0 -1
- package/build/esm/types/server.d.ts +0 -1
- package/build/esm/types/server.js +0 -1
- package/build/esm/utils/array.utils.d.ts +0 -1
- package/build/esm/utils/array.utils.js +48 -86
- package/build/esm/utils/async.utils.d.ts +0 -1
- package/build/esm/utils/async.utils.js +247 -524
- package/build/esm/utils/cache.utils.d.ts +0 -1
- package/build/esm/utils/cache.utils.js +96 -301
- package/build/esm/utils/context-store.utils.d.ts +0 -1
- package/build/esm/utils/context-store.utils.js +62 -79
- package/build/esm/utils/crypto.utils.d.ts +0 -1
- package/build/esm/utils/crypto.utils.js +78 -175
- package/build/esm/utils/date.utils.d.ts +0 -1
- package/build/esm/utils/date.utils.js +47 -53
- package/build/esm/utils/decorators.utils.d.ts +30 -27
- package/build/esm/utils/decorators.utils.js +417 -461
- package/build/esm/utils/dir.utils.d.ts +0 -1
- package/build/esm/utils/dir.utils.js +264 -786
- package/build/esm/utils/env.utils.d.ts +0 -1
- package/build/esm/utils/env.utils.js +180 -271
- package/build/esm/utils/exception.utils.d.ts +0 -1
- package/build/esm/utils/exception.utils.js +112 -289
- package/build/esm/utils/fs.utils.d.ts +0 -1
- package/build/esm/utils/fs.utils.js +169 -401
- package/build/esm/utils/http-status-codes.d.ts +0 -1
- package/build/esm/utils/http-status-codes.js +0 -1
- package/build/esm/utils/id.utils.d.ts +0 -1
- package/build/esm/utils/id.utils.js +5 -9
- package/build/esm/utils/logger.utils.d.ts +0 -1
- package/build/esm/utils/logger.utils.js +34 -71
- package/build/esm/utils/middleware.utils.d.ts +0 -1
- package/build/esm/utils/middleware.utils.js +65 -155
- package/build/esm/utils/obj.utils.d.ts +0 -1
- package/build/esm/utils/obj.utils.js +69 -176
- package/build/esm/utils/performance.utils.d.ts +0 -1
- package/build/esm/utils/performance.utils.js +92 -195
- package/build/esm/utils/request.utils.d.ts +0 -1
- package/build/esm/utils/request.utils.js +41 -74
- package/build/esm/utils/response.utils.d.ts +0 -1
- package/build/esm/utils/response.utils.js +84 -107
- package/build/esm/utils/stream.utils.d.ts +0 -1
- package/build/esm/utils/stream.utils.js +38 -113
- package/build/esm/utils/string.utils.d.ts +0 -1
- package/build/esm/utils/string.utils.js +6 -11
- package/build/esm/utils/type.utils.d.ts +0 -1
- package/build/esm/utils/type.utils.js +8 -12
- package/build/esm/utils/url.utils.d.ts +0 -1
- package/build/esm/utils/url.utils.js +49 -127
- package/build/esm/utils/validate.utils.d.ts +0 -1
- package/build/esm/utils/validate.utils.js +23 -40
- package/package.json +3 -33
- package/build/esm/config.js.map +0 -1
- package/build/esm/index.js.map +0 -1
- package/build/esm/servers/server.builder.js.map +0 -1
- package/build/esm/servers/server.js.map +0 -1
- package/build/esm/types/api-response.js.map +0 -1
- package/build/esm/types/index.js.map +0 -1
- package/build/esm/types/server.js.map +0 -1
- package/build/esm/utils/array.utils.js.map +0 -1
- package/build/esm/utils/async.utils.js.map +0 -1
- package/build/esm/utils/cache.utils.js.map +0 -1
- package/build/esm/utils/context-store.utils.js.map +0 -1
- package/build/esm/utils/crypto.utils.js.map +0 -1
- package/build/esm/utils/date.utils.js.map +0 -1
- package/build/esm/utils/decorators.utils.js.map +0 -1
- package/build/esm/utils/dir.utils.js.map +0 -1
- package/build/esm/utils/env.utils.js.map +0 -1
- package/build/esm/utils/exception.utils.js.map +0 -1
- package/build/esm/utils/fs.utils.js.map +0 -1
- package/build/esm/utils/http-status-codes.js.map +0 -1
- package/build/esm/utils/id.utils.js.map +0 -1
- package/build/esm/utils/logger.utils.js.map +0 -1
- package/build/esm/utils/middleware.utils.js.map +0 -1
- package/build/esm/utils/obj.utils.js.map +0 -1
- package/build/esm/utils/performance.utils.js.map +0 -1
- package/build/esm/utils/request.utils.js.map +0 -1
- package/build/esm/utils/response.utils.js.map +0 -1
- package/build/esm/utils/stream.utils.js.map +0 -1
- package/build/esm/utils/string.utils.js.map +0 -1
- package/build/esm/utils/type.utils.js.map +0 -1
- package/build/esm/utils/url.utils.js.map +0 -1
- package/build/esm/utils/validate.utils.js.map +0 -1
- package/build/esnext/config.d.ts +0 -122
- package/build/esnext/config.js +0 -133
- package/build/esnext/config.js.map +0 -1
- package/build/esnext/index.d.ts +0 -27
- package/build/esnext/index.js +0 -50
- package/build/esnext/index.js.map +0 -1
- package/build/esnext/servers/server.builder.d.ts +0 -508
- package/build/esnext/servers/server.builder.js +0 -657
- package/build/esnext/servers/server.builder.js.map +0 -1
- package/build/esnext/servers/server.d.ts +0 -256
- package/build/esnext/servers/server.js +0 -955
- package/build/esnext/servers/server.js.map +0 -1
- package/build/esnext/types/api-response.d.ts +0 -152
- package/build/esnext/types/api-response.js +0 -34
- package/build/esnext/types/api-response.js.map +0 -1
- package/build/esnext/types/index.d.ts +0 -125
- package/build/esnext/types/index.js +0 -25
- package/build/esnext/types/index.js.map +0 -1
- package/build/esnext/types/server.d.ts +0 -268
- package/build/esnext/types/server.js +0 -25
- package/build/esnext/types/server.js.map +0 -1
- package/build/esnext/utils/array.utils.d.ts +0 -168
- package/build/esnext/utils/array.utils.js +0 -345
- package/build/esnext/utils/array.utils.js.map +0 -1
- package/build/esnext/utils/async.utils.d.ts +0 -265
- package/build/esnext/utils/async.utils.js +0 -620
- package/build/esnext/utils/async.utils.js.map +0 -1
- package/build/esnext/utils/cache.utils.d.ts +0 -153
- package/build/esnext/utils/cache.utils.js +0 -293
- package/build/esnext/utils/cache.utils.js.map +0 -1
- package/build/esnext/utils/context-store.utils.d.ts +0 -189
- package/build/esnext/utils/context-store.utils.js +0 -289
- package/build/esnext/utils/context-store.utils.js.map +0 -1
- package/build/esnext/utils/crypto.utils.d.ts +0 -160
- package/build/esnext/utils/crypto.utils.js +0 -276
- package/build/esnext/utils/crypto.utils.js.map +0 -1
- package/build/esnext/utils/date.utils.d.ts +0 -159
- package/build/esnext/utils/date.utils.js +0 -384
- package/build/esnext/utils/date.utils.js.map +0 -1
- package/build/esnext/utils/decorators.utils.d.ts +0 -508
- package/build/esnext/utils/decorators.utils.js +0 -877
- package/build/esnext/utils/decorators.utils.js.map +0 -1
- package/build/esnext/utils/dir.utils.d.ts +0 -196
- package/build/esnext/utils/dir.utils.js +0 -477
- package/build/esnext/utils/dir.utils.js.map +0 -1
- package/build/esnext/utils/env.utils.d.ts +0 -377
- package/build/esnext/utils/env.utils.js +0 -785
- package/build/esnext/utils/env.utils.js.map +0 -1
- package/build/esnext/utils/exception.utils.d.ts +0 -230
- package/build/esnext/utils/exception.utils.js +0 -381
- package/build/esnext/utils/exception.utils.js.map +0 -1
- package/build/esnext/utils/fs.utils.d.ts +0 -164
- package/build/esnext/utils/fs.utils.js +0 -349
- package/build/esnext/utils/fs.utils.js.map +0 -1
- package/build/esnext/utils/http-status-codes.d.ts +0 -266
- package/build/esnext/utils/http-status-codes.js +0 -295
- package/build/esnext/utils/http-status-codes.js.map +0 -1
- package/build/esnext/utils/id.utils.d.ts +0 -36
- package/build/esnext/utils/id.utils.js +0 -84
- package/build/esnext/utils/id.utils.js.map +0 -1
- package/build/esnext/utils/logger.utils.d.ts +0 -160
- package/build/esnext/utils/logger.utils.js +0 -300
- package/build/esnext/utils/logger.utils.js.map +0 -1
- package/build/esnext/utils/middleware.utils.d.ts +0 -100
- package/build/esnext/utils/middleware.utils.js +0 -236
- package/build/esnext/utils/middleware.utils.js.map +0 -1
- package/build/esnext/utils/obj.utils.d.ts +0 -124
- package/build/esnext/utils/obj.utils.js +0 -413
- package/build/esnext/utils/obj.utils.js.map +0 -1
- package/build/esnext/utils/performance.utils.d.ts +0 -136
- package/build/esnext/utils/performance.utils.js +0 -271
- package/build/esnext/utils/performance.utils.js.map +0 -1
- package/build/esnext/utils/request.utils.d.ts +0 -86
- package/build/esnext/utils/request.utils.js +0 -186
- package/build/esnext/utils/request.utils.js.map +0 -1
- package/build/esnext/utils/response.utils.d.ts +0 -163
- package/build/esnext/utils/response.utils.js +0 -247
- package/build/esnext/utils/response.utils.js.map +0 -1
- package/build/esnext/utils/stream.utils.d.ts +0 -88
- package/build/esnext/utils/stream.utils.js +0 -210
- package/build/esnext/utils/stream.utils.js.map +0 -1
- package/build/esnext/utils/string.utils.d.ts +0 -93
- package/build/esnext/utils/string.utils.js +0 -165
- package/build/esnext/utils/string.utils.js.map +0 -1
- package/build/esnext/utils/type.utils.d.ts +0 -90
- package/build/esnext/utils/type.utils.js +0 -187
- package/build/esnext/utils/type.utils.js.map +0 -1
- package/build/esnext/utils/url.utils.d.ts +0 -141
- package/build/esnext/utils/url.utils.js +0 -304
- package/build/esnext/utils/url.utils.js.map +0 -1
- package/build/esnext/utils/validate.utils.d.ts +0 -177
- package/build/esnext/utils/validate.utils.js +0 -320
- package/build/esnext/utils/validate.utils.js.map +0 -1
- package/build/src/config.d.ts +0 -122
- package/build/src/config.js +0 -138
- package/build/src/config.js.map +0 -1
- package/build/src/index.d.ts +0 -27
- package/build/src/index.js +0 -69
- package/build/src/index.js.map +0 -1
- package/build/src/servers/server.builder.d.ts +0 -508
- package/build/src/servers/server.builder.js +0 -661
- package/build/src/servers/server.builder.js.map +0 -1
- package/build/src/servers/server.d.ts +0 -256
- package/build/src/servers/server.js +0 -962
- package/build/src/servers/server.js.map +0 -1
- package/build/src/types/api-response.d.ts +0 -152
- package/build/src/types/api-response.js +0 -37
- package/build/src/types/api-response.js.map +0 -1
- package/build/src/types/index.d.ts +0 -125
- package/build/src/types/index.js +0 -26
- package/build/src/types/index.js.map +0 -1
- package/build/src/types/server.d.ts +0 -268
- package/build/src/types/server.js +0 -26
- package/build/src/types/server.js.map +0 -1
- package/build/src/utils/array.utils.d.ts +0 -168
- package/build/src/utils/array.utils.js +0 -364
- package/build/src/utils/array.utils.js.map +0 -1
- package/build/src/utils/async.utils.d.ts +0 -265
- package/build/src/utils/async.utils.js +0 -641
- package/build/src/utils/async.utils.js.map +0 -1
- package/build/src/utils/cache.utils.d.ts +0 -153
- package/build/src/utils/cache.utils.js +0 -297
- package/build/src/utils/cache.utils.js.map +0 -1
- package/build/src/utils/context-store.utils.d.ts +0 -189
- package/build/src/utils/context-store.utils.js +0 -296
- package/build/src/utils/context-store.utils.js.map +0 -1
- package/build/src/utils/crypto.utils.d.ts +0 -160
- package/build/src/utils/crypto.utils.js +0 -293
- package/build/src/utils/crypto.utils.js.map +0 -1
- package/build/src/utils/date.utils.d.ts +0 -159
- package/build/src/utils/date.utils.js +0 -396
- package/build/src/utils/date.utils.js.map +0 -1
- package/build/src/utils/decorators.utils.d.ts +0 -508
- package/build/src/utils/decorators.utils.js +0 -896
- package/build/src/utils/decorators.utils.js.map +0 -1
- package/build/src/utils/dir.utils.d.ts +0 -196
- package/build/src/utils/dir.utils.js +0 -501
- package/build/src/utils/dir.utils.js.map +0 -1
- package/build/src/utils/env.utils.d.ts +0 -377
- package/build/src/utils/env.utils.js +0 -789
- package/build/src/utils/env.utils.js.map +0 -1
- package/build/src/utils/exception.utils.d.ts +0 -230
- package/build/src/utils/exception.utils.js +0 -407
- package/build/src/utils/exception.utils.js.map +0 -1
- package/build/src/utils/fs.utils.d.ts +0 -164
- package/build/src/utils/fs.utils.js +0 -372
- package/build/src/utils/fs.utils.js.map +0 -1
- package/build/src/utils/http-status-codes.d.ts +0 -266
- package/build/src/utils/http-status-codes.js +0 -298
- package/build/src/utils/http-status-codes.js.map +0 -1
- package/build/src/utils/id.utils.d.ts +0 -36
- package/build/src/utils/id.utils.js +0 -91
- package/build/src/utils/id.utils.js.map +0 -1
- package/build/src/utils/logger.utils.d.ts +0 -160
- package/build/src/utils/logger.utils.js +0 -346
- package/build/src/utils/logger.utils.js.map +0 -1
- package/build/src/utils/middleware.utils.d.ts +0 -100
- package/build/src/utils/middleware.utils.js +0 -244
- package/build/src/utils/middleware.utils.js.map +0 -1
- package/build/src/utils/obj.utils.d.ts +0 -124
- package/build/src/utils/obj.utils.js +0 -429
- package/build/src/utils/obj.utils.js.map +0 -1
- package/build/src/utils/performance.utils.d.ts +0 -136
- package/build/src/utils/performance.utils.js +0 -278
- package/build/src/utils/performance.utils.js.map +0 -1
- package/build/src/utils/request.utils.d.ts +0 -86
- package/build/src/utils/request.utils.js +0 -195
- package/build/src/utils/request.utils.js.map +0 -1
- package/build/src/utils/response.utils.d.ts +0 -163
- package/build/src/utils/response.utils.js +0 -260
- package/build/src/utils/response.utils.js.map +0 -1
- package/build/src/utils/stream.utils.d.ts +0 -88
- package/build/src/utils/stream.utils.js +0 -218
- package/build/src/utils/stream.utils.js.map +0 -1
- package/build/src/utils/string.utils.d.ts +0 -93
- package/build/src/utils/string.utils.js +0 -179
- package/build/src/utils/string.utils.js.map +0 -1
- package/build/src/utils/type.utils.d.ts +0 -90
- package/build/src/utils/type.utils.js +0 -196
- package/build/src/utils/type.utils.js.map +0 -1
- package/build/src/utils/url.utils.d.ts +0 -141
- package/build/src/utils/url.utils.js +0 -317
- package/build/src/utils/url.utils.js.map +0 -1
- package/build/src/utils/validate.utils.d.ts +0 -177
- package/build/src/utils/validate.utils.js +0 -345
- package/build/src/utils/validate.utils.js.map +0 -1
|
@@ -21,42 +21,6 @@
|
|
|
21
21
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
22
|
* SOFTWARE.
|
|
23
23
|
*/
|
|
24
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
25
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
26
|
-
if (!m) return o;
|
|
27
|
-
var i = m.call(o), r, ar = [], e;
|
|
28
|
-
try {
|
|
29
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
30
|
-
}
|
|
31
|
-
catch (error) { e = { error: error }; }
|
|
32
|
-
finally {
|
|
33
|
-
try {
|
|
34
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
35
|
-
}
|
|
36
|
-
finally { if (e) throw e.error; }
|
|
37
|
-
}
|
|
38
|
-
return ar;
|
|
39
|
-
};
|
|
40
|
-
var __values = (this && this.__values) || function(o) {
|
|
41
|
-
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
|
42
|
-
if (m) return m.call(o);
|
|
43
|
-
if (o && typeof o.length === "number") return {
|
|
44
|
-
next: function () {
|
|
45
|
-
if (o && i >= o.length) o = void 0;
|
|
46
|
-
return { value: o && o[i++], done: !o };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
50
|
-
};
|
|
51
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
52
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
53
|
-
if (ar || !(i in from)) {
|
|
54
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
55
|
-
ar[i] = from[i];
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
59
|
-
};
|
|
60
24
|
/**
|
|
61
25
|
* Checks whether the object has no own enumerable properties.
|
|
62
26
|
*
|
|
@@ -76,7 +40,7 @@ export function isObjEmpty(obj) {
|
|
|
76
40
|
* @returns {Pick<T, K>} New object with picked keys.
|
|
77
41
|
*/
|
|
78
42
|
export function pick(obj, keys) {
|
|
79
|
-
return Object.fromEntries(keys.map(
|
|
43
|
+
return Object.fromEntries(keys.map(key => [key, obj[key]]));
|
|
80
44
|
}
|
|
81
45
|
/**
|
|
82
46
|
* Returns a new object with the specified keys omitted.
|
|
@@ -88,10 +52,7 @@ export function pick(obj, keys) {
|
|
|
88
52
|
* @returns {Omit<T, K>} New object without omitted keys.
|
|
89
53
|
*/
|
|
90
54
|
export function omit(obj, keys) {
|
|
91
|
-
return Object.fromEntries(Object.entries(obj).filter(
|
|
92
|
-
var _b = __read(_a, 1), key = _b[0];
|
|
93
|
-
return !keys.includes(key);
|
|
94
|
-
}));
|
|
55
|
+
return Object.fromEntries(Object.entries(obj).filter(([key]) => !keys.includes(key)));
|
|
95
56
|
}
|
|
96
57
|
/**
|
|
97
58
|
* Deeply merges multiple objects into the target object (mutates and returns the target object, not pure).
|
|
@@ -101,30 +62,15 @@ export function omit(obj, keys) {
|
|
|
101
62
|
* @param {...any[]} sources - The objects to merge from.
|
|
102
63
|
* @returns {T} The merged object (same as target).
|
|
103
64
|
*/
|
|
104
|
-
export function deepObjMerge(target) {
|
|
105
|
-
var e_1, _a, e_2, _b, e_3, _c;
|
|
106
|
-
var sources = [];
|
|
107
|
-
for (var _i = 1; _i < arguments.length; _i++) {
|
|
108
|
-
sources[_i - 1] = arguments[_i];
|
|
109
|
-
}
|
|
65
|
+
export function deepObjMerge(target, ...sources) {
|
|
110
66
|
if (!sources.length)
|
|
111
67
|
return target;
|
|
112
|
-
|
|
68
|
+
const seen = new WeakMap();
|
|
113
69
|
seen.set(target, target);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (s && typeof s === 'object') {
|
|
118
|
-
seen.set(s, target);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
123
|
-
finally {
|
|
124
|
-
try {
|
|
125
|
-
if (sources_1_1 && !sources_1_1.done && (_a = sources_1.return)) _a.call(sources_1);
|
|
70
|
+
for (const s of sources) {
|
|
71
|
+
if (s && typeof s === 'object') {
|
|
72
|
+
seen.set(s, target);
|
|
126
73
|
}
|
|
127
|
-
finally { if (e_1) throw e_1.error; }
|
|
128
74
|
}
|
|
129
75
|
function deepClone(value) {
|
|
130
76
|
if (value === null || typeof value !== 'object')
|
|
@@ -137,24 +83,24 @@ export function deepObjMerge(target) {
|
|
|
137
83
|
}
|
|
138
84
|
// Array
|
|
139
85
|
if (Array.isArray(value)) {
|
|
140
|
-
|
|
141
|
-
seen.set(value,
|
|
142
|
-
value.forEach(
|
|
143
|
-
return
|
|
86
|
+
const clone = [];
|
|
87
|
+
seen.set(value, clone);
|
|
88
|
+
value.forEach((item, i) => (clone[i] = deepClone(item)));
|
|
89
|
+
return clone;
|
|
144
90
|
}
|
|
145
91
|
// Set
|
|
146
92
|
if (value instanceof Set) {
|
|
147
|
-
|
|
148
|
-
seen.set(value,
|
|
149
|
-
value.forEach(
|
|
150
|
-
return
|
|
93
|
+
const clone = new Set();
|
|
94
|
+
seen.set(value, clone);
|
|
95
|
+
value.forEach(item => clone.add(deepClone(item)));
|
|
96
|
+
return clone;
|
|
151
97
|
}
|
|
152
98
|
// Map
|
|
153
99
|
if (value instanceof Map) {
|
|
154
|
-
|
|
155
|
-
seen.set(value,
|
|
156
|
-
value.forEach(
|
|
157
|
-
return
|
|
100
|
+
const clone = new Map();
|
|
101
|
+
seen.set(value, clone);
|
|
102
|
+
value.forEach((val, key) => clone.set(key, deepClone(val)));
|
|
103
|
+
return clone;
|
|
158
104
|
}
|
|
159
105
|
// RegExp
|
|
160
106
|
if (value instanceof RegExp) {
|
|
@@ -166,10 +112,10 @@ export function deepObjMerge(target) {
|
|
|
166
112
|
}
|
|
167
113
|
// TypedArrays
|
|
168
114
|
if (ArrayBuffer.isView(value) && !(value instanceof DataView)) {
|
|
169
|
-
|
|
170
|
-
|
|
115
|
+
const typed = value; // cast for TS
|
|
116
|
+
const ctor = typed.constructor;
|
|
171
117
|
// List of standard TypedArray constructors
|
|
172
|
-
|
|
118
|
+
const typedArrayCtors = [
|
|
173
119
|
Int8Array,
|
|
174
120
|
Uint8Array,
|
|
175
121
|
Uint8ClampedArray,
|
|
@@ -182,29 +128,29 @@ export function deepObjMerge(target) {
|
|
|
182
128
|
BigInt64Array,
|
|
183
129
|
BigUint64Array
|
|
184
130
|
].filter(Boolean); // filter out undefined (for environments without BigInt)
|
|
185
|
-
|
|
131
|
+
const typedArrayCtorSet = new Set(typedArrayCtors);
|
|
186
132
|
if (typeof ctor === 'function' && typedArrayCtorSet.has(ctor)) {
|
|
187
133
|
// Defensive: ensure buffer is an ArrayBuffer and slice is available
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
seen.set(value,
|
|
191
|
-
return
|
|
134
|
+
const buffer = typed.buffer && typeof typed.buffer.slice === 'function' ? typed.buffer.slice(0) : typed.buffer;
|
|
135
|
+
const clone = new ctor(buffer, typed.byteOffset, typed.length);
|
|
136
|
+
seen.set(value, clone);
|
|
137
|
+
return clone;
|
|
192
138
|
}
|
|
193
139
|
else if (typeof typed.slice === 'function') {
|
|
194
140
|
// Fallback: try using slice if available (e.g., Node.js Buffer)
|
|
195
|
-
|
|
196
|
-
seen.set(value,
|
|
197
|
-
return
|
|
141
|
+
const clone = typed.slice();
|
|
142
|
+
seen.set(value, clone);
|
|
143
|
+
return clone;
|
|
198
144
|
}
|
|
199
145
|
else {
|
|
200
146
|
// Could not safely clone, throw an error for better debugging
|
|
201
147
|
throw new Error('Cannot deep clone unknown TypedArray type: ' + (typed && typed.constructor && typed.constructor.name));
|
|
202
148
|
}
|
|
203
149
|
}
|
|
204
|
-
|
|
150
|
+
const clone = Object.create(Object.getPrototypeOf(value));
|
|
205
151
|
seen.set(value, clone);
|
|
206
|
-
Reflect.ownKeys(value).forEach(
|
|
207
|
-
|
|
152
|
+
Reflect.ownKeys(value).forEach(key => {
|
|
153
|
+
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
208
154
|
if (descriptor.get || descriptor.set) {
|
|
209
155
|
Object.defineProperty(clone, key, descriptor);
|
|
210
156
|
}
|
|
@@ -215,9 +161,8 @@ export function deepObjMerge(target) {
|
|
|
215
161
|
return clone;
|
|
216
162
|
}
|
|
217
163
|
function mergeProp(target, source, key) {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
var sourceValue = source[key];
|
|
164
|
+
const targetValue = target[key];
|
|
165
|
+
const sourceValue = source[key];
|
|
221
166
|
// Ignore undefined in source
|
|
222
167
|
if (sourceValue === undefined)
|
|
223
168
|
return;
|
|
@@ -243,51 +188,21 @@ export function deepObjMerge(target) {
|
|
|
243
188
|
}
|
|
244
189
|
// Plain objects → recursive merge
|
|
245
190
|
if (isPlainObject(sourceValue) && isPlainObject(targetValue)) {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
var k = _c.value;
|
|
249
|
-
mergeProp(targetValue, sourceValue, k);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
253
|
-
finally {
|
|
254
|
-
try {
|
|
255
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
256
|
-
}
|
|
257
|
-
finally { if (e_4) throw e_4.error; }
|
|
191
|
+
for (const k of Reflect.ownKeys(sourceValue)) {
|
|
192
|
+
mergeProp(targetValue, sourceValue, k);
|
|
258
193
|
}
|
|
259
194
|
return;
|
|
260
195
|
}
|
|
261
196
|
// Default → overwrite with clone
|
|
262
197
|
target[key] = deepClone(sourceValue);
|
|
263
198
|
}
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
try {
|
|
270
|
-
for (var _d = (e_3 = void 0, __values(Reflect.ownKeys(source))), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
271
|
-
var key = _e.value;
|
|
272
|
-
mergeProp(target, source, key);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
276
|
-
finally {
|
|
277
|
-
try {
|
|
278
|
-
if (_e && !_e.done && (_c = _d.return)) _c.call(_d);
|
|
279
|
-
}
|
|
280
|
-
finally { if (e_3) throw e_3.error; }
|
|
281
|
-
}
|
|
199
|
+
for (const source of sources) {
|
|
200
|
+
if (source == null)
|
|
201
|
+
continue;
|
|
202
|
+
for (const key of Reflect.ownKeys(source)) {
|
|
203
|
+
mergeProp(target, source, key);
|
|
282
204
|
}
|
|
283
205
|
}
|
|
284
|
-
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
285
|
-
finally {
|
|
286
|
-
try {
|
|
287
|
-
if (sources_2_1 && !sources_2_1.done && (_b = sources_2.return)) _b.call(sources_2);
|
|
288
|
-
}
|
|
289
|
-
finally { if (e_2) throw e_2.error; }
|
|
290
|
-
}
|
|
291
206
|
return target;
|
|
292
207
|
}
|
|
293
208
|
/**
|
|
@@ -301,7 +216,7 @@ export function isPlainObject(value) {
|
|
|
301
216
|
return false;
|
|
302
217
|
if (Array.isArray(value))
|
|
303
218
|
return false;
|
|
304
|
-
|
|
219
|
+
const proto = Object.getPrototypeOf(value);
|
|
305
220
|
return proto === Object.prototype || proto === null;
|
|
306
221
|
}
|
|
307
222
|
/**
|
|
@@ -312,11 +227,9 @@ export function isPlainObject(value) {
|
|
|
312
227
|
* @param {string} [prefix=""] - Optional prefix for nested keys (used internally).
|
|
313
228
|
* @returns {Record<string, any>} A new object with flattened keys.
|
|
314
229
|
*/
|
|
315
|
-
export function flattenObject(obj, prefix) {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
319
|
-
var newKey = prefix ? "".concat(prefix, ".").concat(key) : key;
|
|
230
|
+
export function flattenObject(obj, prefix = '') {
|
|
231
|
+
return Object.entries(obj).reduce((acc, [key, value]) => {
|
|
232
|
+
const newKey = prefix ? `${prefix}.${key}` : key;
|
|
320
233
|
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
321
234
|
Object.assign(acc, flattenObject(value, newKey));
|
|
322
235
|
}
|
|
@@ -338,11 +251,11 @@ export function getValueByPath(obj, path) {
|
|
|
338
251
|
if (!obj || typeof obj !== 'object')
|
|
339
252
|
return undefined;
|
|
340
253
|
// Convert path like "a.b[0].c" into ["a", "b", "0", "c"]
|
|
341
|
-
|
|
254
|
+
const parts = path
|
|
342
255
|
.replace(/\[(\d+)\]/g, '.$1') // convert [0] to .0
|
|
343
256
|
.split('.')
|
|
344
257
|
.filter(Boolean); // remove empty strings
|
|
345
|
-
return parts.reduce(
|
|
258
|
+
return parts.reduce((acc, key) => acc?.[key], obj);
|
|
346
259
|
}
|
|
347
260
|
/**
|
|
348
261
|
* Sets a value at a deeply nested key in an object using dot/bracket notation path.
|
|
@@ -358,18 +271,18 @@ export function setValueByPath(obj, path, value) {
|
|
|
358
271
|
if (!obj || typeof obj !== 'object')
|
|
359
272
|
return obj;
|
|
360
273
|
// Convert path like "a.b[0].c" into ["a", "b", "0", "c"]
|
|
361
|
-
|
|
274
|
+
const parts = path
|
|
362
275
|
.replace(/\[(\d+)\]/g, '.$1') // convert [0] to .0
|
|
363
276
|
.split('.')
|
|
364
277
|
.filter(Boolean); // remove empty strings
|
|
365
278
|
// Handle empty path
|
|
366
279
|
if (parts.length === 0)
|
|
367
280
|
return obj;
|
|
368
|
-
|
|
281
|
+
let current = obj;
|
|
369
282
|
// Navigate to the parent of the target property
|
|
370
|
-
for (
|
|
371
|
-
|
|
372
|
-
|
|
283
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
284
|
+
const key = parts[i];
|
|
285
|
+
const isArrayIndex = !isNaN(Number(parts[i + 1]));
|
|
373
286
|
if (current[key] === undefined) {
|
|
374
287
|
// Create intermediate object or array based on next key type
|
|
375
288
|
current[key] = isArrayIndex ? [] : {};
|
|
@@ -377,7 +290,7 @@ export function setValueByPath(obj, path, value) {
|
|
|
377
290
|
current = current[key];
|
|
378
291
|
}
|
|
379
292
|
// Set the value at the final key
|
|
380
|
-
|
|
293
|
+
const finalKey = parts[parts.length - 1];
|
|
381
294
|
current[finalKey] = value;
|
|
382
295
|
return obj;
|
|
383
296
|
}
|
|
@@ -409,7 +322,7 @@ export function isEqual(a, b) {
|
|
|
409
322
|
if (a.length !== b.length)
|
|
410
323
|
return false;
|
|
411
324
|
// Check each element
|
|
412
|
-
for (
|
|
325
|
+
for (let i = 0; i < a.length; i++) {
|
|
413
326
|
if (!isEqual(a[i], b[i]))
|
|
414
327
|
return false;
|
|
415
328
|
}
|
|
@@ -420,12 +333,12 @@ export function isEqual(a, b) {
|
|
|
420
333
|
return false;
|
|
421
334
|
}
|
|
422
335
|
// Compare object keys
|
|
423
|
-
|
|
424
|
-
|
|
336
|
+
const keysA = Object.keys(a);
|
|
337
|
+
const keysB = Object.keys(b);
|
|
425
338
|
if (keysA.length !== keysB.length)
|
|
426
339
|
return false;
|
|
427
340
|
// Check if every key in A exists in B and has the same value
|
|
428
|
-
return keysA.every(
|
|
341
|
+
return keysA.every(key => Object.prototype.hasOwnProperty.call(b, key) && isEqual(a[key], b[key]));
|
|
429
342
|
}
|
|
430
343
|
/**
|
|
431
344
|
* Filters object properties based on a predicate function.
|
|
@@ -436,10 +349,7 @@ export function isEqual(a, b) {
|
|
|
436
349
|
* @returns {Partial<T>} New object with filtered properties.
|
|
437
350
|
*/
|
|
438
351
|
export function filterObject(obj, predicate) {
|
|
439
|
-
return Object.fromEntries(Object.entries(obj).filter(
|
|
440
|
-
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
441
|
-
return predicate(value, key, obj);
|
|
442
|
-
}));
|
|
352
|
+
return Object.fromEntries(Object.entries(obj).filter(([key, value]) => predicate(value, key, obj)));
|
|
443
353
|
}
|
|
444
354
|
/**
|
|
445
355
|
* Maps object values to new values using a mapping function.
|
|
@@ -451,10 +361,7 @@ export function filterObject(obj, predicate) {
|
|
|
451
361
|
* @returns {Record<keyof T, U>} New object with mapped values.
|
|
452
362
|
*/
|
|
453
363
|
export function mapObject(obj, mapFn) {
|
|
454
|
-
return Object.fromEntries(Object.entries(obj).map(
|
|
455
|
-
var _b = __read(_a, 2), key = _b[0], value = _b[1];
|
|
456
|
-
return [key, mapFn(value, key, obj)];
|
|
457
|
-
}));
|
|
364
|
+
return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, mapFn(value, key, obj)]));
|
|
458
365
|
}
|
|
459
366
|
/**
|
|
460
367
|
* Recursively freezes an object and all its properties.
|
|
@@ -465,25 +372,14 @@ export function mapObject(obj, mapFn) {
|
|
|
465
372
|
* @returns {Readonly<T>} The frozen object.
|
|
466
373
|
*/
|
|
467
374
|
export function deepFreeze(obj) {
|
|
468
|
-
var e_5, _a;
|
|
469
375
|
// Freeze primitive properties
|
|
470
376
|
Object.freeze(obj);
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
|
|
477
|
-
deepFreeze(value);
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
}
|
|
481
|
-
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
482
|
-
finally {
|
|
483
|
-
try {
|
|
484
|
-
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
377
|
+
// Recursively freeze nested objects
|
|
378
|
+
for (const prop of Object.getOwnPropertyNames(obj)) {
|
|
379
|
+
const value = obj[prop];
|
|
380
|
+
if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {
|
|
381
|
+
deepFreeze(value);
|
|
485
382
|
}
|
|
486
|
-
finally { if (e_5) throw e_5.error; }
|
|
487
383
|
}
|
|
488
384
|
return obj;
|
|
489
385
|
}
|
|
@@ -503,17 +399,14 @@ export function isObject(value) {
|
|
|
503
399
|
* @param {string} [parentPath=""] - Internal param for recursion.
|
|
504
400
|
* @returns {string[]} Array of all paths in dot notation.
|
|
505
401
|
*/
|
|
506
|
-
export function getAllPaths(obj, parentPath) {
|
|
507
|
-
if (parentPath === void 0) { parentPath = ''; }
|
|
402
|
+
export function getAllPaths(obj, parentPath = '') {
|
|
508
403
|
if (!isObject(obj))
|
|
509
404
|
return [];
|
|
510
|
-
return Object.entries(obj).flatMap(
|
|
511
|
-
|
|
512
|
-
var currentPath = parentPath ? "".concat(parentPath, ".").concat(key) : key;
|
|
405
|
+
return Object.entries(obj).flatMap(([key, value]) => {
|
|
406
|
+
const currentPath = parentPath ? `${parentPath}.${key}` : key;
|
|
513
407
|
if (isObject(value)) {
|
|
514
|
-
return
|
|
408
|
+
return [currentPath, ...getAllPaths(value, currentPath)];
|
|
515
409
|
}
|
|
516
410
|
return [currentPath];
|
|
517
411
|
});
|
|
518
412
|
}
|
|
519
|
-
//# sourceMappingURL=obj.utils.js.map
|