@fluixi/utils 1.0.0-alpha.53
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/LICENSE +21 -0
- package/README.md +73 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.mjs +1 -0
- package/dist/lib/array/advanced.cjs +1 -0
- package/dist/lib/array/advanced.d.ts +1116 -0
- package/dist/lib/array/advanced.d.ts.map +1 -0
- package/dist/lib/array/advanced.js +2429 -0
- package/dist/lib/array/advanced.mjs +1 -0
- package/dist/lib/array/array.cjs +1 -0
- package/dist/lib/array/array.d.ts +6 -0
- package/dist/lib/array/array.d.ts.map +1 -0
- package/dist/lib/array/array.js +31 -0
- package/dist/lib/array/array.mjs +1 -0
- package/dist/lib/array/index.cjs +1 -0
- package/dist/lib/array/index.d.ts +4 -0
- package/dist/lib/array/index.d.ts.map +1 -0
- package/dist/lib/array/index.js +3 -0
- package/dist/lib/array/index.mjs +1 -0
- package/dist/lib/array/utils.cjs +1 -0
- package/dist/lib/array/utils.d.ts +100 -0
- package/dist/lib/array/utils.d.ts.map +1 -0
- package/dist/lib/array/utils.js +165 -0
- package/dist/lib/array/utils.mjs +1 -0
- package/dist/lib/color/color.cjs +1 -0
- package/dist/lib/color/color.d.ts +366 -0
- package/dist/lib/color/color.d.ts.map +1 -0
- package/dist/lib/color/color.js +722 -0
- package/dist/lib/color/color.mjs +1 -0
- package/dist/lib/color/constants.cjs +1 -0
- package/dist/lib/color/constants.d.ts +361 -0
- package/dist/lib/color/constants.d.ts.map +1 -0
- package/dist/lib/color/constants.js +358 -0
- package/dist/lib/color/constants.mjs +1 -0
- package/dist/lib/color/conversions.cjs +1 -0
- package/dist/lib/color/conversions.d.ts +166 -0
- package/dist/lib/color/conversions.d.ts.map +1 -0
- package/dist/lib/color/conversions.js +766 -0
- package/dist/lib/color/conversions.mjs +1 -0
- package/dist/lib/color/helpers.cjs +1 -0
- package/dist/lib/color/helpers.d.ts +75 -0
- package/dist/lib/color/helpers.d.ts.map +1 -0
- package/dist/lib/color/helpers.js +419 -0
- package/dist/lib/color/helpers.mjs +1 -0
- package/dist/lib/color/index.cjs +1 -0
- package/dist/lib/color/index.d.ts +12 -0
- package/dist/lib/color/index.d.ts.map +1 -0
- package/dist/lib/color/index.js +15 -0
- package/dist/lib/color/index.mjs +1 -0
- package/dist/lib/color/types.cjs +1 -0
- package/dist/lib/color/types.d.ts +179 -0
- package/dist/lib/color/types.d.ts.map +1 -0
- package/dist/lib/color/types.js +1 -0
- package/dist/lib/color/types.mjs +0 -0
- package/dist/lib/color/utils.cjs +1 -0
- package/dist/lib/color/utils.d.ts +199 -0
- package/dist/lib/color/utils.d.ts.map +1 -0
- package/dist/lib/color/utils.js +858 -0
- package/dist/lib/color/utils.mjs +1 -0
- package/dist/lib/compare/comparators.cjs +1 -0
- package/dist/lib/compare/comparators.d.ts +65 -0
- package/dist/lib/compare/comparators.d.ts.map +1 -0
- package/dist/lib/compare/comparators.js +210 -0
- package/dist/lib/compare/comparators.mjs +1 -0
- package/dist/lib/compare/index.cjs +1 -0
- package/dist/lib/compare/index.d.ts +2 -0
- package/dist/lib/compare/index.d.ts.map +1 -0
- package/dist/lib/compare/index.js +1 -0
- package/dist/lib/compare/index.mjs +1 -0
- package/dist/lib/crypto/hash.cjs +1 -0
- package/dist/lib/crypto/hash.d.ts +6 -0
- package/dist/lib/crypto/hash.d.ts.map +1 -0
- package/dist/lib/crypto/hash.js +53 -0
- package/dist/lib/crypto/hash.mjs +1 -0
- package/dist/lib/crypto/index.cjs +1 -0
- package/dist/lib/crypto/index.d.ts +2 -0
- package/dist/lib/crypto/index.d.ts.map +1 -0
- package/dist/lib/crypto/index.js +1 -0
- package/dist/lib/crypto/index.mjs +1 -0
- package/dist/lib/dom/events.cjs +1 -0
- package/dist/lib/dom/events.d.ts +159 -0
- package/dist/lib/dom/events.d.ts.map +1 -0
- package/dist/lib/dom/events.js +50 -0
- package/dist/lib/dom/events.mjs +1 -0
- package/dist/lib/dom/index.cjs +1 -0
- package/dist/lib/dom/index.d.ts +3 -0
- package/dist/lib/dom/index.d.ts.map +1 -0
- package/dist/lib/dom/index.js +2 -0
- package/dist/lib/dom/index.mjs +1 -0
- package/dist/lib/dom/utils.cjs +1 -0
- package/dist/lib/dom/utils.d.ts +6 -0
- package/dist/lib/dom/utils.d.ts.map +1 -0
- package/dist/lib/dom/utils.js +37 -0
- package/dist/lib/dom/utils.mjs +1 -0
- package/dist/lib/functions/functions.cjs +1 -0
- package/dist/lib/functions/functions.d.ts +329 -0
- package/dist/lib/functions/functions.d.ts.map +1 -0
- package/dist/lib/functions/functions.js +585 -0
- package/dist/lib/functions/functions.mjs +1 -0
- package/dist/lib/functions/index.cjs +1 -0
- package/dist/lib/functions/index.d.ts +3 -0
- package/dist/lib/functions/index.d.ts.map +1 -0
- package/dist/lib/functions/index.js +1 -0
- package/dist/lib/functions/index.mjs +1 -0
- package/dist/lib/functions/types.cjs +1 -0
- package/dist/lib/functions/types.d.ts +2 -0
- package/dist/lib/functions/types.d.ts.map +1 -0
- package/dist/lib/functions/types.js +1 -0
- package/dist/lib/functions/types.mjs +0 -0
- package/dist/lib/helpers.cjs +1 -0
- package/dist/lib/helpers.d.ts +13 -0
- package/dist/lib/helpers.d.ts.map +1 -0
- package/dist/lib/helpers.js +66 -0
- package/dist/lib/helpers.mjs +1 -0
- package/dist/lib/index.cjs +1 -0
- package/dist/lib/index.d.ts +6 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +8 -0
- package/dist/lib/index.mjs +1 -0
- package/dist/lib/maths/constants.cjs +1 -0
- package/dist/lib/maths/constants.d.ts +84 -0
- package/dist/lib/maths/constants.d.ts.map +1 -0
- package/dist/lib/maths/constants.js +79 -0
- package/dist/lib/maths/constants.mjs +1 -0
- package/dist/lib/maths/fn/advanced.cjs +1 -0
- package/dist/lib/maths/fn/advanced.d.ts +149 -0
- package/dist/lib/maths/fn/advanced.d.ts.map +1 -0
- package/dist/lib/maths/fn/advanced.js +264 -0
- package/dist/lib/maths/fn/advanced.mjs +1 -0
- package/dist/lib/maths/fn/basic.cjs +1 -0
- package/dist/lib/maths/fn/basic.d.ts +182 -0
- package/dist/lib/maths/fn/basic.d.ts.map +1 -0
- package/dist/lib/maths/fn/basic.js +343 -0
- package/dist/lib/maths/fn/basic.mjs +1 -0
- package/dist/lib/maths/fn/complex.cjs +1 -0
- package/dist/lib/maths/fn/complex.d.ts +153 -0
- package/dist/lib/maths/fn/complex.d.ts.map +1 -0
- package/dist/lib/maths/fn/complex.js +383 -0
- package/dist/lib/maths/fn/complex.mjs +1 -0
- package/dist/lib/maths/fn/index.cjs +1 -0
- package/dist/lib/maths/fn/index.d.ts +10 -0
- package/dist/lib/maths/fn/index.d.ts.map +1 -0
- package/dist/lib/maths/fn/index.js +9 -0
- package/dist/lib/maths/fn/index.mjs +1 -0
- package/dist/lib/maths/fn/trigo.cjs +1 -0
- package/dist/lib/maths/fn/trigo.d.ts +147 -0
- package/dist/lib/maths/fn/trigo.d.ts.map +1 -0
- package/dist/lib/maths/fn/trigo.js +227 -0
- package/dist/lib/maths/fn/trigo.mjs +1 -0
- package/dist/lib/maths/fn/vector.cjs +1 -0
- package/dist/lib/maths/fn/vector.d.ts +512 -0
- package/dist/lib/maths/fn/vector.d.ts.map +1 -0
- package/dist/lib/maths/fn/vector.js +1136 -0
- package/dist/lib/maths/fn/vector.mjs +1 -0
- package/dist/lib/maths/formatter.cjs +1 -0
- package/dist/lib/maths/formatter.d.ts +35 -0
- package/dist/lib/maths/formatter.d.ts.map +1 -0
- package/dist/lib/maths/formatter.js +56 -0
- package/dist/lib/maths/formatter.mjs +1 -0
- package/dist/lib/maths/guards.cjs +1 -0
- package/dist/lib/maths/guards.d.ts +166 -0
- package/dist/lib/maths/guards.d.ts.map +1 -0
- package/dist/lib/maths/guards.js +315 -0
- package/dist/lib/maths/guards.mjs +1 -0
- package/dist/lib/maths/index.cjs +1 -0
- package/dist/lib/maths/index.d.ts +24 -0
- package/dist/lib/maths/index.d.ts.map +1 -0
- package/dist/lib/maths/index.js +29 -0
- package/dist/lib/maths/index.mjs +1 -0
- package/dist/lib/maths/parser.cjs +1 -0
- package/dist/lib/maths/parser.d.ts +20 -0
- package/dist/lib/maths/parser.d.ts.map +1 -0
- package/dist/lib/maths/parser.js +78 -0
- package/dist/lib/maths/parser.mjs +1 -0
- package/dist/lib/maths/random.cjs +1 -0
- package/dist/lib/maths/random.d.ts +27 -0
- package/dist/lib/maths/random.d.ts.map +1 -0
- package/dist/lib/maths/random.js +49 -0
- package/dist/lib/maths/random.mjs +1 -0
- package/dist/lib/maths/types/advanced.cjs +1 -0
- package/dist/lib/maths/types/advanced.d.ts +357 -0
- package/dist/lib/maths/types/advanced.d.ts.map +1 -0
- package/dist/lib/maths/types/advanced.js +5 -0
- package/dist/lib/maths/types/advanced.mjs +0 -0
- package/dist/lib/maths/types/basic.cjs +1 -0
- package/dist/lib/maths/types/basic.d.ts +95 -0
- package/dist/lib/maths/types/basic.d.ts.map +1 -0
- package/dist/lib/maths/types/basic.js +5 -0
- package/dist/lib/maths/types/basic.mjs +0 -0
- package/dist/lib/maths/types/index.cjs +1 -0
- package/dist/lib/maths/types/index.d.ts +4 -0
- package/dist/lib/maths/types/index.d.ts.map +1 -0
- package/dist/lib/maths/types/index.js +3 -0
- package/dist/lib/maths/types/index.mjs +0 -0
- package/dist/lib/maths/types/negative.cjs +1 -0
- package/dist/lib/maths/types/negative.d.ts +51 -0
- package/dist/lib/maths/types/negative.d.ts.map +1 -0
- package/dist/lib/maths/types/negative.js +5 -0
- package/dist/lib/maths/types/negative.mjs +0 -0
- package/dist/lib/maths/types/operations.cjs +1 -0
- package/dist/lib/maths/types/operations.d.ts +188 -0
- package/dist/lib/maths/types/operations.d.ts.map +1 -0
- package/dist/lib/maths/types/operations.js +6 -0
- package/dist/lib/maths/types/operations.mjs +0 -0
- package/dist/lib/object/clone.cjs +1 -0
- package/dist/lib/object/clone.d.ts +46 -0
- package/dist/lib/object/clone.d.ts.map +1 -0
- package/dist/lib/object/clone.js +104 -0
- package/dist/lib/object/clone.mjs +1 -0
- package/dist/lib/object/diff.cjs +1 -0
- package/dist/lib/object/diff.d.ts +203 -0
- package/dist/lib/object/diff.d.ts.map +1 -0
- package/dist/lib/object/diff.js +805 -0
- package/dist/lib/object/diff.mjs +1 -0
- package/dist/lib/object/getter-setter.cjs +1 -0
- package/dist/lib/object/getter-setter.d.ts +361 -0
- package/dist/lib/object/getter-setter.d.ts.map +1 -0
- package/dist/lib/object/getter-setter.js +1771 -0
- package/dist/lib/object/getter-setter.mjs +1 -0
- package/dist/lib/object/index.cjs +6 -0
- package/dist/lib/object/index.d.ts +13 -0
- package/dist/lib/object/index.d.ts.map +1 -0
- package/dist/lib/object/index.js +12 -0
- package/dist/lib/object/index.mjs +6 -0
- package/dist/lib/object/merge.cjs +1 -0
- package/dist/lib/object/merge.d.ts +93 -0
- package/dist/lib/object/merge.d.ts.map +1 -0
- package/dist/lib/object/merge.js +474 -0
- package/dist/lib/object/merge.mjs +1 -0
- package/dist/lib/object/object.cjs +1 -0
- package/dist/lib/object/object.d.ts +128 -0
- package/dist/lib/object/object.d.ts.map +1 -0
- package/dist/lib/object/object.js +432 -0
- package/dist/lib/object/object.mjs +1 -0
- package/dist/lib/object/omit.cjs +1 -0
- package/dist/lib/object/omit.d.ts +351 -0
- package/dist/lib/object/omit.d.ts.map +1 -0
- package/dist/lib/object/omit.js +656 -0
- package/dist/lib/object/omit.mjs +1 -0
- package/dist/lib/object/reconcile.cjs +1 -0
- package/dist/lib/object/reconcile.d.ts +7 -0
- package/dist/lib/object/reconcile.d.ts.map +1 -0
- package/dist/lib/object/reconcile.js +122 -0
- package/dist/lib/object/reconcile.mjs +1 -0
- package/dist/lib/object/selector.cjs +1 -0
- package/dist/lib/object/selector.d.ts +50 -0
- package/dist/lib/object/selector.d.ts.map +1 -0
- package/dist/lib/object/selector.js +371 -0
- package/dist/lib/object/selector.mjs +1 -0
- package/dist/lib/object/sort.cjs +1 -0
- package/dist/lib/object/sort.d.ts +149 -0
- package/dist/lib/object/sort.d.ts.map +1 -0
- package/dist/lib/object/sort.js +298 -0
- package/dist/lib/object/sort.mjs +1 -0
- package/dist/lib/object/transform.cjs +1 -0
- package/dist/lib/object/transform.d.ts +620 -0
- package/dist/lib/object/transform.d.ts.map +1 -0
- package/dist/lib/object/transform.js +1058 -0
- package/dist/lib/object/transform.mjs +1 -0
- package/dist/lib/object/types.cjs +1 -0
- package/dist/lib/object/types.d.ts +250 -0
- package/dist/lib/object/types.d.ts.map +1 -0
- package/dist/lib/object/types.js +1 -0
- package/dist/lib/object/types.mjs +0 -0
- package/dist/lib/object/utils.cjs +6 -0
- package/dist/lib/object/utils.d.ts +165 -0
- package/dist/lib/object/utils.d.ts.map +1 -0
- package/dist/lib/object/utils.js +444 -0
- package/dist/lib/object/utils.mjs +6 -0
- package/dist/lib/primitive/boolean/boolean.cjs +1 -0
- package/dist/lib/primitive/boolean/boolean.d.ts +276 -0
- package/dist/lib/primitive/boolean/boolean.d.ts.map +1 -0
- package/dist/lib/primitive/boolean/boolean.js +615 -0
- package/dist/lib/primitive/boolean/boolean.mjs +1 -0
- package/dist/lib/primitive/boolean/index.cjs +1 -0
- package/dist/lib/primitive/boolean/index.d.ts +3 -0
- package/dist/lib/primitive/boolean/index.d.ts.map +1 -0
- package/dist/lib/primitive/boolean/index.js +2 -0
- package/dist/lib/primitive/boolean/index.mjs +1 -0
- package/dist/lib/primitive/boolean/types.cjs +1 -0
- package/dist/lib/primitive/boolean/types.d.ts +14 -0
- package/dist/lib/primitive/boolean/types.d.ts.map +1 -0
- package/dist/lib/primitive/boolean/types.js +1 -0
- package/dist/lib/primitive/boolean/types.mjs +0 -0
- package/dist/lib/primitive/date/date.cjs +1 -0
- package/dist/lib/primitive/date/date.d.ts +641 -0
- package/dist/lib/primitive/date/date.d.ts.map +1 -0
- package/dist/lib/primitive/date/date.js +1998 -0
- package/dist/lib/primitive/date/date.mjs +1 -0
- package/dist/lib/primitive/date/index.cjs +1 -0
- package/dist/lib/primitive/date/index.d.ts +3 -0
- package/dist/lib/primitive/date/index.d.ts.map +1 -0
- package/dist/lib/primitive/date/index.js +2 -0
- package/dist/lib/primitive/date/index.mjs +1 -0
- package/dist/lib/primitive/date/types.cjs +1 -0
- package/dist/lib/primitive/date/types.d.ts +205 -0
- package/dist/lib/primitive/date/types.d.ts.map +1 -0
- package/dist/lib/primitive/date/types.js +7 -0
- package/dist/lib/primitive/date/types.mjs +0 -0
- package/dist/lib/primitive/index.cjs +5 -0
- package/dist/lib/primitive/index.d.ts +5 -0
- package/dist/lib/primitive/index.d.ts.map +1 -0
- package/dist/lib/primitive/index.js +4 -0
- package/dist/lib/primitive/index.mjs +5 -0
- package/dist/lib/primitive/string/index.cjs +5 -0
- package/dist/lib/primitive/string/index.d.ts +3 -0
- package/dist/lib/primitive/string/index.d.ts.map +1 -0
- package/dist/lib/primitive/string/index.js +2 -0
- package/dist/lib/primitive/string/index.mjs +5 -0
- package/dist/lib/primitive/string/parser-2.cjs +8 -0
- package/dist/lib/primitive/string/parser-2.d.ts +17 -0
- package/dist/lib/primitive/string/parser-2.d.ts.map +1 -0
- package/dist/lib/primitive/string/parser-2.js +656 -0
- package/dist/lib/primitive/string/parser-2.mjs +8 -0
- package/dist/lib/primitive/string/parser.cjs +3 -0
- package/dist/lib/primitive/string/parser.d.ts +9 -0
- package/dist/lib/primitive/string/parser.d.ts.map +1 -0
- package/dist/lib/primitive/string/parser.js +775 -0
- package/dist/lib/primitive/string/parser.mjs +3 -0
- package/dist/lib/primitive/string/string.cjs +5 -0
- package/dist/lib/primitive/string/string.d.ts +535 -0
- package/dist/lib/primitive/string/string.d.ts.map +1 -0
- package/dist/lib/primitive/string/string.js +1301 -0
- package/dist/lib/primitive/string/string.mjs +5 -0
- package/dist/lib/primitive/string/types.cjs +1 -0
- package/dist/lib/primitive/string/types.d.ts +318 -0
- package/dist/lib/primitive/string/types.d.ts.map +1 -0
- package/dist/lib/primitive/string/types.js +5 -0
- package/dist/lib/primitive/string/types.mjs +0 -0
- package/dist/lib/primitive/types.cjs +1 -0
- package/dist/lib/primitive/types.d.ts +27 -0
- package/dist/lib/primitive/types.d.ts.map +1 -0
- package/dist/lib/primitive/types.js +1 -0
- package/dist/lib/primitive/types.mjs +0 -0
- package/dist/lib/url/index.cjs +1 -0
- package/dist/lib/url/index.d.ts +3 -0
- package/dist/lib/url/index.d.ts.map +1 -0
- package/dist/lib/url/index.js +2 -0
- package/dist/lib/url/index.mjs +1 -0
- package/dist/lib/url/parser.cjs +1 -0
- package/dist/lib/url/parser.d.ts +216 -0
- package/dist/lib/url/parser.d.ts.map +1 -0
- package/dist/lib/url/parser.js +488 -0
- package/dist/lib/url/parser.mjs +1 -0
- package/dist/lib/url/types.cjs +1 -0
- package/dist/lib/url/types.d.ts +18 -0
- package/dist/lib/url/types.d.ts.map +1 -0
- package/dist/lib/url/types.js +1 -0
- package/dist/lib/url/types.mjs +0 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -0
- package/package.json +150 -0
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
import { isObject } from './utils.js';
|
|
2
|
+
import { deepClone } from './clone.js';
|
|
3
|
+
/**
|
|
4
|
+
* Inverts an object (swaps keys and values)
|
|
5
|
+
* @param obj - Source object
|
|
6
|
+
* @returns Inverted object
|
|
7
|
+
* @example
|
|
8
|
+
* invert({a: 1, b: 2}) // {1: 'a', 2: 'b'}
|
|
9
|
+
*/
|
|
10
|
+
export const invert = (obj, deep = false) => {
|
|
11
|
+
if (Array.isArray(obj)) {
|
|
12
|
+
return obj.map((item) => invert(item, deep));
|
|
13
|
+
}
|
|
14
|
+
if (!isObject(obj)) {
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
const result = {};
|
|
18
|
+
for (const key in obj) {
|
|
19
|
+
let value = obj[key];
|
|
20
|
+
// Only invert if value can be used as a key
|
|
21
|
+
if (typeof value === 'string' ||
|
|
22
|
+
typeof value === 'number' ||
|
|
23
|
+
typeof value === 'symbol') {
|
|
24
|
+
result[value] = key;
|
|
25
|
+
}
|
|
26
|
+
else if (isObject(value)) {
|
|
27
|
+
if (deep) {
|
|
28
|
+
result[key] = invert(value, deep);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (Array.isArray(value)) {
|
|
32
|
+
if (deep) {
|
|
33
|
+
result[key] = value.map((item) => invert(item, deep));
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Maps object values using a callback function
|
|
41
|
+
* @param obj - Source object
|
|
42
|
+
* @param callback - Mapping function
|
|
43
|
+
* @returns New object with mapped values
|
|
44
|
+
* @example
|
|
45
|
+
* mapValues({a: 1, b: 2}, (value) => value * 2) // {a: 2, b: 4}
|
|
46
|
+
*/
|
|
47
|
+
// export const mapValues = <T extends AnyObject, U>(
|
|
48
|
+
// obj: T,
|
|
49
|
+
// callback: (value: T[keyof T], key: keyof T) => U
|
|
50
|
+
// ): Record<keyof T, U> => {
|
|
51
|
+
// if (Array.isArray(obj)) {
|
|
52
|
+
// return (obj as any).map(callback);
|
|
53
|
+
// }
|
|
54
|
+
// if (!isObject(obj)) {
|
|
55
|
+
// return {} as Record<keyof T, U>;
|
|
56
|
+
// }
|
|
57
|
+
// const result: Partial<Record<keyof T, U>> = {};
|
|
58
|
+
// for (const key in obj) {
|
|
59
|
+
// result[key] = callback(obj[key], key as any);
|
|
60
|
+
// }
|
|
61
|
+
// return result as Record<keyof T, U>;
|
|
62
|
+
// };
|
|
63
|
+
/**
|
|
64
|
+
* Maps object keys using a callback function
|
|
65
|
+
* @param obj - Source object
|
|
66
|
+
* @param callback - Mapping function
|
|
67
|
+
* @returns New object with mapped keys
|
|
68
|
+
* @example
|
|
69
|
+
* mapKeys({a: 1, b: 2}, (key) => key.toUpperCase()) // {A: 1, B: 2}
|
|
70
|
+
*/
|
|
71
|
+
// export const mapKeys = <T extends AnyObject>(
|
|
72
|
+
// obj: T,
|
|
73
|
+
// callback: (key: keyof T, value: T[keyof T]) => string
|
|
74
|
+
// ): AnyObject => {
|
|
75
|
+
// if (Array.isArray(obj)) {
|
|
76
|
+
// return (obj as any).map(callback);
|
|
77
|
+
// }
|
|
78
|
+
// if (!isObject(obj)) {
|
|
79
|
+
// return {};
|
|
80
|
+
// }
|
|
81
|
+
// const result: AnyObject = {};
|
|
82
|
+
// for (const key in obj) {
|
|
83
|
+
// const newKey = callback(key as any, obj[key]);
|
|
84
|
+
// result[newKey] = obj[key];
|
|
85
|
+
// }
|
|
86
|
+
// return result;
|
|
87
|
+
// };
|
|
88
|
+
/**
|
|
89
|
+
* Filters object properties using a predicate
|
|
90
|
+
* @param obj - Source object
|
|
91
|
+
* @param predicate - Filter function
|
|
92
|
+
* @returns New object with filtered properties
|
|
93
|
+
* @example
|
|
94
|
+
* filter({a: 1, b: 2, c: 3}, (value) => value > 1) // {b: 2, c: 3}
|
|
95
|
+
*/
|
|
96
|
+
export const filter = (obj, predicate) => {
|
|
97
|
+
if (Array.isArray(obj)) {
|
|
98
|
+
return obj.filter(predicate);
|
|
99
|
+
}
|
|
100
|
+
if (!isObject(obj)) {
|
|
101
|
+
return {};
|
|
102
|
+
}
|
|
103
|
+
const result = {};
|
|
104
|
+
for (const key in obj) {
|
|
105
|
+
if (predicate(obj[key], key)) {
|
|
106
|
+
result[key] = obj[key];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return result;
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* Flattens a nested object
|
|
113
|
+
* @param obj - Source object
|
|
114
|
+
* @param separator - Separator for nested keys (default: '.')
|
|
115
|
+
* @returns Flattened object
|
|
116
|
+
* @example
|
|
117
|
+
* flatten({a: {b: {c: 1}}, d: 2}) // {'a.b.c': 1, d: 2}
|
|
118
|
+
*/
|
|
119
|
+
// export const flatten = (obj: AnyObject, separator: string = '.'): AnyObject => {
|
|
120
|
+
// if (Array.isArray(obj)) {
|
|
121
|
+
// return obj.map((item) => flatten(item, separator));
|
|
122
|
+
// // return obj.reduce((acc, item) => {
|
|
123
|
+
// // return {
|
|
124
|
+
// // ...acc,
|
|
125
|
+
// // ...flatten(item, separator),
|
|
126
|
+
// // };
|
|
127
|
+
// // }, {});
|
|
128
|
+
// }
|
|
129
|
+
// const result: AnyObject = {};
|
|
130
|
+
// const flattenRecursive = (current: any, path: string = '') => {
|
|
131
|
+
// if (!isObject(current) && !Array.isArray(current)) {
|
|
132
|
+
// if (path) {
|
|
133
|
+
// result[path] = current;
|
|
134
|
+
// }
|
|
135
|
+
// return;
|
|
136
|
+
// }
|
|
137
|
+
// if (Array.isArray(current)) {
|
|
138
|
+
// for (let i = 0; i < current.length; i++) {
|
|
139
|
+
// const newPath = path ? `${path}[${i}]` : `[${i}]`;
|
|
140
|
+
// flattenRecursive(current[i], newPath);
|
|
141
|
+
// }
|
|
142
|
+
// } else {
|
|
143
|
+
// for (const key in current) {
|
|
144
|
+
// const newPath = path ? `${path}${separator}${key}` : key;
|
|
145
|
+
// flattenRecursive(current[key], newPath);
|
|
146
|
+
// }
|
|
147
|
+
// // Handle symbols
|
|
148
|
+
// const symbols = Object.getOwnPropertySymbols(current);
|
|
149
|
+
// for (const symbol of symbols) {
|
|
150
|
+
// const newPath = path
|
|
151
|
+
// ? `${path}${separator}${symbol.toString()}`
|
|
152
|
+
// : symbol.toString();
|
|
153
|
+
// flattenRecursive(current[symbol], newPath);
|
|
154
|
+
// }
|
|
155
|
+
// }
|
|
156
|
+
// };
|
|
157
|
+
// flattenRecursive(obj);
|
|
158
|
+
// return result;
|
|
159
|
+
// };
|
|
160
|
+
/**
|
|
161
|
+
* Unflattens an object (reverse of flatten)
|
|
162
|
+
* @param obj - Source object
|
|
163
|
+
* @param separator - Separator used for nested keys (default: '.')
|
|
164
|
+
* @returns Unflattened object
|
|
165
|
+
* @example
|
|
166
|
+
* unflatten({'a.b.c': 1, d: 2}) // {a: {b: {c: 1}}, d: 2}
|
|
167
|
+
*/
|
|
168
|
+
// export const unflatten = (
|
|
169
|
+
// obj: AnyObject,
|
|
170
|
+
// separator: string = '.'
|
|
171
|
+
// ): AnyObject => {
|
|
172
|
+
// const result: AnyObject = {};
|
|
173
|
+
// for (const key in obj) {
|
|
174
|
+
// const keys = key.split(separator);
|
|
175
|
+
// let current: any = result;
|
|
176
|
+
// for (let i = 0; i < keys.length - 1; i++) {
|
|
177
|
+
// const part = keys[i];
|
|
178
|
+
// // Handle array indices
|
|
179
|
+
// if (part.startsWith('[') && part.endsWith(']')) {
|
|
180
|
+
// const index = parseInt(part.slice(1, -1), 10);
|
|
181
|
+
// if (!Array.isArray(current)) {
|
|
182
|
+
// current = [];
|
|
183
|
+
// }
|
|
184
|
+
// if (current[index] == null) {
|
|
185
|
+
// current[index] = {};
|
|
186
|
+
// }
|
|
187
|
+
// current = current[index];
|
|
188
|
+
// } else {
|
|
189
|
+
// if (current[part] == null) {
|
|
190
|
+
// current[part] = {};
|
|
191
|
+
// }
|
|
192
|
+
// current = current[part];
|
|
193
|
+
// }
|
|
194
|
+
// }
|
|
195
|
+
// const lastKey = keys[keys.length - 1];
|
|
196
|
+
// // Handle array indices
|
|
197
|
+
// if (lastKey.startsWith('[') && lastKey.endsWith(']')) {
|
|
198
|
+
// const index = parseInt(lastKey.slice(1, -1), 10);
|
|
199
|
+
// if (!Array.isArray(current)) {
|
|
200
|
+
// current = [];
|
|
201
|
+
// }
|
|
202
|
+
// if (index >= current.length) {
|
|
203
|
+
// for (let i = current.length; i <= index; i++) {
|
|
204
|
+
// current.push(undefined);
|
|
205
|
+
// }
|
|
206
|
+
// }
|
|
207
|
+
// current[index] = obj[key];
|
|
208
|
+
// } else {
|
|
209
|
+
// current[lastKey] = obj[key];
|
|
210
|
+
// }
|
|
211
|
+
// }
|
|
212
|
+
// return result;
|
|
213
|
+
// };
|
|
214
|
+
/**
|
|
215
|
+
* Removes undefined or null properties from an object
|
|
216
|
+
* @param obj - Source object
|
|
217
|
+
* @param deep - Whether to clean recursively (default: false)
|
|
218
|
+
* @returns Cleaned object
|
|
219
|
+
* @example
|
|
220
|
+
* clean({a: 1, b: null, c: undefined, d: {e: null}}) // {a: 1, d: {}}
|
|
221
|
+
* clean({a: 1, b: null, d: {e: null}}, true) // {a: 1}
|
|
222
|
+
*/
|
|
223
|
+
export const clean = (obj, deep = false) => {
|
|
224
|
+
if (!isObject(obj)) {
|
|
225
|
+
return {};
|
|
226
|
+
}
|
|
227
|
+
const result = {};
|
|
228
|
+
for (const key in obj) {
|
|
229
|
+
const value = obj[key];
|
|
230
|
+
if (value != null) {
|
|
231
|
+
if (deep && isObject(value)) {
|
|
232
|
+
const cleaned = clean(value, true);
|
|
233
|
+
if (Object.keys(cleaned).length > 0) {
|
|
234
|
+
result[key] = cleaned;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
result[key] = value;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return result;
|
|
243
|
+
};
|
|
244
|
+
/**
|
|
245
|
+
* Creates a new object with default values
|
|
246
|
+
* @param defaults - Default values
|
|
247
|
+
* @param overrides - Override values
|
|
248
|
+
* @returns Merged object with defaults
|
|
249
|
+
* @example
|
|
250
|
+
* defaults({a: 1, b: 2}, {b: 3, c: 4}) // {a: 1, b: 3, c: 4}
|
|
251
|
+
*/
|
|
252
|
+
export const defaults = (current, overrides) => {
|
|
253
|
+
if (Array.isArray(current)) {
|
|
254
|
+
if (Array.isArray(overrides)) {
|
|
255
|
+
return [...current, ...overrides];
|
|
256
|
+
}
|
|
257
|
+
return [...current, overrides];
|
|
258
|
+
}
|
|
259
|
+
const result = deepClone(current);
|
|
260
|
+
for (const key in overrides) {
|
|
261
|
+
if (result[key] === undefined) {
|
|
262
|
+
result[key] = overrides[key];
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
return result;
|
|
266
|
+
};
|
|
267
|
+
/**
|
|
268
|
+
* Gets the size of an object (number of own enumerable properties)
|
|
269
|
+
* @param obj - Source object
|
|
270
|
+
* @returns Number of properties
|
|
271
|
+
* @example
|
|
272
|
+
* size({a: 1, b: 2, c: 3}) // 3
|
|
273
|
+
*/
|
|
274
|
+
export const size = (obj) => {
|
|
275
|
+
if (!isObject(obj)) {
|
|
276
|
+
return 0;
|
|
277
|
+
}
|
|
278
|
+
return Object.keys(obj).length;
|
|
279
|
+
};
|
|
280
|
+
/**
|
|
281
|
+
* Creates a new object with the same keys but transformed values
|
|
282
|
+
* @param obj - Source object
|
|
283
|
+
* @param transformer - Transformation function
|
|
284
|
+
* @returns Transformed object
|
|
285
|
+
* @example
|
|
286
|
+
* transform({a: 1, b: 2}, (key, value) => ({[key]: value * 2})) // {a: 2, b: 4}
|
|
287
|
+
*/
|
|
288
|
+
export const transform = (obj, transformer) => {
|
|
289
|
+
if (Array.isArray(obj)) {
|
|
290
|
+
return obj.map(transformer);
|
|
291
|
+
}
|
|
292
|
+
if (!isObject(obj)) {
|
|
293
|
+
return {};
|
|
294
|
+
}
|
|
295
|
+
const result = {};
|
|
296
|
+
for (const key in obj) {
|
|
297
|
+
const [newKey, newValue] = transformer(key, obj[key]);
|
|
298
|
+
result[newKey] = newValue;
|
|
299
|
+
}
|
|
300
|
+
return result;
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* Groups an array of objects by a key
|
|
304
|
+
* @param array - Array of objects
|
|
305
|
+
* @param key - Key to group by
|
|
306
|
+
* @returns Grouped object
|
|
307
|
+
* @example
|
|
308
|
+
* groupBy([{type: 'a', value: 1}, {type: 'b', value: 2}, {type: 'a', value: 3}], 'type')
|
|
309
|
+
* // {a: [{type: 'a', value: 1}, {type: 'a', value: 3}], b: [{type: 'b', value: 2}]}
|
|
310
|
+
*/
|
|
311
|
+
export const groupBy = (array, key) => {
|
|
312
|
+
if (!Array.isArray(array)) {
|
|
313
|
+
return {};
|
|
314
|
+
}
|
|
315
|
+
return array.reduce((groups, item) => {
|
|
316
|
+
const groupKey = item[key];
|
|
317
|
+
if (groupKey == null) {
|
|
318
|
+
return groups;
|
|
319
|
+
}
|
|
320
|
+
const keyStr = String(groupKey);
|
|
321
|
+
if (!groups[keyStr]) {
|
|
322
|
+
groups[keyStr] = [];
|
|
323
|
+
}
|
|
324
|
+
groups[keyStr].push(item);
|
|
325
|
+
return groups;
|
|
326
|
+
}, {});
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* Converts an object to a query string
|
|
330
|
+
* @param obj - Source object
|
|
331
|
+
* @returns Query string
|
|
332
|
+
* @example
|
|
333
|
+
* toQueryString({a: 1, b: 'test', c: [1, 2, 3]}) // 'a=1&b=test&c=1&c=2&c=3'
|
|
334
|
+
*/
|
|
335
|
+
export const toQueryString = (obj) => {
|
|
336
|
+
if (!isObject(obj)) {
|
|
337
|
+
return '';
|
|
338
|
+
}
|
|
339
|
+
const params = [];
|
|
340
|
+
const addParam = (key, value) => {
|
|
341
|
+
if (value == null)
|
|
342
|
+
return;
|
|
343
|
+
if (Array.isArray(value)) {
|
|
344
|
+
value.forEach((item) => {
|
|
345
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(item)}`);
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
for (const key in obj) {
|
|
353
|
+
addParam(key, obj[key]);
|
|
354
|
+
}
|
|
355
|
+
return params.join('&');
|
|
356
|
+
};
|
|
357
|
+
/**
|
|
358
|
+
* Parses a query string to an object
|
|
359
|
+
* @param queryString - Query string
|
|
360
|
+
* @returns Parsed object
|
|
361
|
+
* @example
|
|
362
|
+
* fromQueryString('a=1&b=test&c=1&c=2&c=3') // {a: '1', b: 'test', c: ['1', '2', '3']}
|
|
363
|
+
*/
|
|
364
|
+
export const fromQueryString = (queryString) => {
|
|
365
|
+
if (!queryString || typeof queryString !== 'string') {
|
|
366
|
+
return {};
|
|
367
|
+
}
|
|
368
|
+
// Remove leading ?
|
|
369
|
+
const str = queryString.startsWith('?') ? queryString.slice(1) : queryString;
|
|
370
|
+
if (!str) {
|
|
371
|
+
return {};
|
|
372
|
+
}
|
|
373
|
+
const result = {};
|
|
374
|
+
const pairs = str.split('&');
|
|
375
|
+
for (const pair of pairs) {
|
|
376
|
+
const [key, value] = pair.split('=').map(decodeURIComponent);
|
|
377
|
+
if (key) {
|
|
378
|
+
if (key in result) {
|
|
379
|
+
// Handle duplicate keys as arrays
|
|
380
|
+
if (Array.isArray(result[key])) {
|
|
381
|
+
result[key].push(value || '');
|
|
382
|
+
}
|
|
383
|
+
else {
|
|
384
|
+
result[key] = [result[key], value || ''];
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
else {
|
|
388
|
+
result[key] = value || '';
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
return result;
|
|
393
|
+
};
|
|
394
|
+
/**
|
|
395
|
+
* Creates a frozen deep clone of an object
|
|
396
|
+
* @param obj - Source object
|
|
397
|
+
* @returns Deep frozen object
|
|
398
|
+
* @example
|
|
399
|
+
* const frozen = deepFreeze({a: {b: 1}})
|
|
400
|
+
* frozen.a.b = 2 // Error in strict mode
|
|
401
|
+
*/
|
|
402
|
+
export const deepFreeze = (obj) => {
|
|
403
|
+
if (obj == null || typeof obj !== 'object') {
|
|
404
|
+
return obj;
|
|
405
|
+
}
|
|
406
|
+
// Freeze the object itself
|
|
407
|
+
Object.freeze(obj);
|
|
408
|
+
// Recursively freeze all properties
|
|
409
|
+
for (const key in obj) {
|
|
410
|
+
const value = obj[key];
|
|
411
|
+
if (value != null && typeof value === 'object') {
|
|
412
|
+
deepFreeze(value);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// Freeze symbols
|
|
416
|
+
const symbols = Object.getOwnPropertySymbols(obj);
|
|
417
|
+
for (const symbol of symbols) {
|
|
418
|
+
const value = obj[symbol];
|
|
419
|
+
if (value != null && typeof value === 'object') {
|
|
420
|
+
deepFreeze(value);
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
return obj;
|
|
424
|
+
};
|
|
425
|
+
/**
|
|
426
|
+
* Type guard for non-null object
|
|
427
|
+
* @param value - Value to check
|
|
428
|
+
* @returns True if value is a non-null object
|
|
429
|
+
*/
|
|
430
|
+
export const isNonNullObject = (value) => {
|
|
431
|
+
return value != null && typeof value === 'object' && !Array.isArray(value);
|
|
432
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var i=e=>e==null||Array.isArray(e)||typeof e=="function"||e instanceof Date||e instanceof RegExp||e instanceof Map||e instanceof Set||e instanceof Error?!1:typeof e=="object";var f=(e,r)=>{if(e==null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof Map){let n=new Map;return e.forEach((t,s)=>{(!r||!r.some(o=>o.toString()===s.toString()))&&n.set(s,f(t))}),n}if(e instanceof Set){let n=new Set;return e.forEach(t=>{n.add(f(t))}),n}if(Array.isArray(e))return Array.from(e).map(n=>f(n));if(i(e)){let n={};for(let s in e)Object.prototype.hasOwnProperty.call(e,s)&&(!r||!r.some(o=>o.toString()===s.toString()))&&(n[s]=f(e[s]));let t=Object.getOwnPropertySymbols(e);for(let s of t)(!r||!r.some(o=>o.toString()===s.toString()))&&(n[s]=f(e[s]));return n}return e};var c=(e,r=!1)=>{if(Array.isArray(e))return e.map(t=>c(t,r));if(!i(e))return{};let n={};for(let t in e){let s=e[t];typeof s=="string"||typeof s=="number"||typeof s=="symbol"?n[s]=t:i(s)?r&&(n[t]=c(s,r)):Array.isArray(s)&&r&&(n[t]=s.map(o=>c(o,r)))}return n},T=(e,r)=>{if(Array.isArray(e))return e.filter(r);if(!i(e))return{};let n={};for(let t in e)r(e[t],t)&&(n[t]=e[t]);return n},u=(e,r=!1)=>{if(!i(e))return{};let n={};for(let t in e){let s=e[t];if(s!=null)if(r&&i(s)){let o=u(s,!0);Object.keys(o).length>0&&(n[t]=o)}else n[t]=s}return n},O=(e,r)=>{if(Array.isArray(e))return Array.isArray(r)?[...e,...r]:[...e,r];let n=f(e);for(let t in r)n[t]===void 0&&(n[t]=r[t]);return n},m=e=>i(e)?Object.keys(e).length:0,b=(e,r)=>{if(Array.isArray(e))return e.map(r);if(!i(e))return{};let n={};for(let t in e){let[s,o]=r(t,e[t]);n[s]=o}return n},R=(e,r)=>Array.isArray(e)?e.reduce((n,t)=>{let s=t[r];if(s==null)return n;let o=String(s);return n[o]||(n[o]=[]),n[o].push(t),n},{}):{},k=e=>{if(!i(e))return"";let r=[],n=(t,s)=>{s!=null&&(Array.isArray(s)?s.forEach(o=>{r.push(`${encodeURIComponent(t)}=${encodeURIComponent(o)}`)}):r.push(`${encodeURIComponent(t)}=${encodeURIComponent(s)}`))};for(let t in e)n(t,e[t]);return r.join("&")},S=e=>{if(!e||typeof e!="string")return{};let r=e.startsWith("?")?e.slice(1):e;if(!r)return{};let n={},t=r.split("&");for(let s of t){let[o,a]=s.split("=").map(decodeURIComponent);o&&(o in n?Array.isArray(n[o])?n[o].push(a||""):n[o]=[n[o],a||""]:n[o]=a||"")}return n},l=e=>{if(e==null||typeof e!="object")return e;Object.freeze(e);for(let n in e){let t=e[n];t!=null&&typeof t=="object"&&l(t)}let r=Object.getOwnPropertySymbols(e);for(let n of r){let t=e[n];t!=null&&typeof t=="object"&&l(t)}return e},w=e=>e!=null&&typeof e=="object"&&!Array.isArray(e);export{u as clean,l as deepFreeze,O as defaults,T as filter,S as fromQueryString,R as groupBy,c as invert,w as isNonNullObject,m as size,k as toQueryString,b as transform};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var U=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var H=(e,i)=>{for(var s in i)U(e,s,{get:i[s],enumerable:!0})},X=(e,i,s,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let n of Z(i))!G.call(e,n)&&n!==s&&U(e,n,{get:()=>i[n],enumerable:!(r=Q(i,n))||r.enumerable});return e};var Y=e=>X(U({},"__esModule",{value:!0}),e);var ce={};H(ce,{createOmitter:()=>ae,deepOmit:()=>D,deepOmitBy:()=>C,omit:()=>ie,omitBy:()=>z,omitNil:()=>oe,omitPath:()=>ye,pick:()=>le,pickBy:()=>fe,pickPath:()=>ue});module.exports=Y(ce);var m=e=>e==null||Array.isArray(e)||typeof e=="function"||e instanceof Date||e instanceof RegExp||e instanceof Map||e instanceof Set||e instanceof Error?!1:typeof e=="object";function k(e){if(typeof e!="object"||e===null)return!1;let i=Object.getPrototypeOf(e);return i===Object.prototype||i===null}var w=(e,i,s,r)=>{if(s>r)return;if(i.length===0)return e;let n=i[0],f=i.slice(1);if(n.type==="descendant"){let o=w(e,f,s+1,r);if(o!==void 0)return o;if(e&&typeof e=="object")if(Array.isArray(e)){let t=[];for(let l=0;l<e.length;l++){let a=w(e[l],i,s+1,r);a!==void 0&&(t[l]=a)}return t.length>0?t:void 0}else{let t={};for(let l in e)if(e.hasOwnProperty(l)){let a=w(e[l],i,s+1,r);a!==void 0&&(t[l]=a)}return Object.keys(t).length>0?t:void 0}return}switch(n.type){case"property":if(m(e)&&n.value&&String(n.value)in e){let o=e[String(n.value)],t=w(o,f,s+1,r);if(t!==void 0)return{[String(n.value)]:t}}break;case"index":if(Array.isArray(e)){let o=n.value;if(o>=0&&o<e.length){let t=w(e[o],f,s+1,r);if(t!==void 0){let l=new Array(e.length).filter(a=>a!==void 0);return l[o]=t,l}}}else if(e&&typeof e=="object"){let o=String(n.value);if(o in e){let t=w(e[o],f,s+1,r);if(t!==void 0)return{[o]:t}}}break;case"wildcard":if(e&&typeof e=="object")if(Array.isArray(e)){let o=[],t=!1;for(let l=0;l<e.length;l++){let a=w(e[l],f,s+1,r);a!==void 0&&(o[l]=a,t=!0)}return t?o:void 0}else{let o={},t=!1;for(let l in e)if(e.hasOwnProperty(l)){let a=w(e[l],f,s+1,r);a!==void 0&&(o[l]=a,t=!0)}return t?o:void 0}break;case"slice":if(Array.isArray(e)){let[o,t]=n.value,l=Math.max(0,o),a=Math.min(e.length,t===1/0?e.length:t),y=[],g=!1;for(let A=l;A<a;A++){let p=w(e[A],f,s+1,r);p!==void 0&&(y[A]=p,g=!0)}return g?y:void 0}break;case"union":if(Array.isArray(e)){let o=n.value,t=[],l=!1;for(let a of o)if(a>=0&&a<e.length){let y=w(e[a],f,s+1,r);y!==void 0&&(t[a]=y,l=!0)}return l?t:void 0}break;case"filter":if(Array.isArray(e)){let o=n.value,t=[],l=!1;for(let a=0;a<e.length;a++)if(o(e[a])){let y=w(e[a],f,s+1,r);y!==void 0&&(t[a]=y,l=!0)}return l?t:void 0}break}};var O=(e,i)=>{if(e==null||typeof e!="object")return e;if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(e instanceof Map){let s=new Map;return e.forEach((r,n)=>{(!i||!i.some(f=>f.toString()===n.toString()))&&s.set(n,O(r))}),s}if(e instanceof Set){let s=new Set;return e.forEach(r=>{s.add(O(r))}),s}if(Array.isArray(e))return Array.from(e).map(s=>O(s));if(m(e)){let s={};for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&(!i||!i.some(f=>f.toString()===n.toString()))&&(s[n]=O(e[n]));let r=Object.getOwnPropertySymbols(e);for(let n of r)(!i||!i.some(f=>f.toString()===n.toString()))&&(s[n]=O(e[n]));return s}return e};var N=(e,i)=>e===i,V=(e,i)=>{if(e.length!==i.length)return!1;for(let s=0;s<e.length;s++)if(Array.isArray(e[s])&&Array.isArray(i[s])){if(!V(e[s],i[s]))return!1}else if(m(e[s])&&m(i[s])){if(!B(e[s],i[s]))return!1}else if(e[s]!==i[s])return!1;return!0},B=(e,i)=>{let s=Object.keys(e),r=Object.keys(i);if(s.length!==r.length)return!1;for(let n of s){if(!(n in i))return!1;let f=e[n],o=i[n];if(Array.isArray(f)&&Array.isArray(o)){if(!V(f,o))return!1}else if(m(f)&&m(o)){if(!B(f,o))return!1}else if(f!==o)return!1}return!0},_=(e,i,s={})=>{let{includeDeleted:r=!1,includeAdded:n=!0,deepArrayComparison:f=!0,equalityFn:o=N,preserveStructure:t=!1}=s;if(e==null&&i==null)return{};if(e==null)return n?{...i}:{};if(i==null){if(r){let y={};for(let g in e)y[g]=void 0;return y}return{}}if(!m(e)||!m(i))return o(e,i)?{}:i;let l={},a=new Set;for(let y in i){a.add(y);let g=e[y],A=i[y];if(!(y in e)){n&&(l[y]=A);continue}if(Array.isArray(g)&&Array.isArray(A)){f?V(g,A)?t&&(l[y]=void 0):l[y]=A:g!==A?l[y]=A:t&&(l[y]=void 0);continue}if(m(g)&&m(A)){let p=_(g,A,s);Object.keys(p).length>0?l[y]=p:t&&(l[y]=void 0);continue}o(g,A)?t&&(l[y]=void 0):l[y]=A}if(r)for(let y in e)a.has(y)||(l[y]=void 0);return l},j=(e,i,s={})=>{let r=[],n=[],f=[],o={},{includeDeleted:t=!1,includeAdded:l=!0,deepArrayComparison:a=!0,equalityFn:y=N}=s;if(Array.isArray(e)&&Array.isArray(i)){let p=Math.max(e.length,i.length),d=[],c=!1;for(let u=0;u<p;u++){let T=`[${u}]`;if(u>=e.length)r.push(T),d[u]=i[u],c=!0;else if(u>=i.length)n.push(T),c=!0;else{let x=e[u],h=i[u];m(x)&&m(h)||Array.isArray(x)&&Array.isArray(h)?j(x,h,s).hasChanges?(f.push(T),d[u]=h,c=!0):d[u]=x:y(x,h)?d[u]=x:(f.push(T),d[u]=h,c=!0)}}return{changes:c?d:{},added:r,deleted:n,modified:f,hasChanges:c||n.length>0}}let g=(p,d,c="")=>{let u={added:[],deleted:[],modified:[]};if(Array.isArray(p)&&Array.isArray(d)){let T=Math.max(p.length,d.length);for(let x=0;x<T;x++){let h=c?`${c}[${x}]`:`[${x}]`;if(x>=p.length)u.added.push(h);else if(x>=d.length)u.deleted.push(h);else{let S=p[x],b=d[x];if(m(S)&&m(b)){let K=g(S,b,h);u.added.push(...K.added),u.deleted.push(...K.deleted),u.modified.push(...K.modified)}else if(Array.isArray(S)&&Array.isArray(b)){let K=g(S,b,h);u.added.push(...K.added),u.deleted.push(...K.deleted),u.modified.push(...K.modified)}else S!==b&&u.modified.push(h)}}return u}if(m(p)&&m(d)){let T=new Set([...Object.keys(p||{}),...Object.keys(d||{})]);for(let x of T){let h=p?.[x],S=d?.[x],b=c?`${c}.${x}`:x;if(!(x in(p||{})))u.added.push(b);else if(!(x in(d||{})))u.deleted.push(b);else if(Array.isArray(h)&&Array.isArray(S)){if(!V(h,S)){let K=g(h,S,b);u.added.push(...K.added),u.deleted.push(...K.deleted),u.modified.push(...K.modified)}}else if(m(h)&&m(S)){let K=g(h,S,b);u.added.push(...K.added),u.deleted.push(...K.deleted),u.modified.push(...K.modified)}else h!==S&&u.modified.push(b)}}return u};if(e==null&&i==null)return{changes:{},added:r,deleted:n,modified:f,hasChanges:!1};if(e==null){if(l&&i)for(let p in i)r.push(p),o[p]=i[p];return{changes:o,added:r,deleted:n,modified:f,hasChanges:r.length>0}}if(i==null){if(t)for(let p in e)n.push(p),o[p]=void 0;return{changes:o,added:r,deleted:n,modified:f,hasChanges:n.length>0}}let A=new Set;for(let p in i){A.add(p);let d=e[p],c=i[p];if(!(p in e)){l&&(r.push(p),o[p]=c);continue}let u=!1;if(Array.isArray(d)&&Array.isArray(c)){if(u=a?!V(d,c):d!==c,u){let T=g(d,c,p);r.push(...T.added),n.push(...T.deleted),f.push(...T.modified),o[p]=c}}else if(m(d)&&m(c)){let T=_(d,c,s);if(u=Object.keys(T).length>0,u){let x=g(d,c,p);r.push(...x.added),n.push(...x.deleted),f.push(...x.modified),o[p]=T}}else u=!y(d,c),u&&(f.push(p),o[p]=c)}for(let p in e)A.has(p)||(n.push(p),o[p]=void 0);return{changes:o,added:r,deleted:n,modified:f,hasChanges:r.length>0||n.length>0||f.length>0}};function ee(e){return!!(e&&(e.diff||e.changes)&&(e.modified||e.deleted||e.hasChanges))}var F=(e,i,s)=>{if(!ee(i)){let u=i,T=s||!1;if(Array.isArray(e)&&Array.isArray(u)){let h=T?e:[...e];u.length<h.length&&(h.length=u.length);for(let S=0;S<u.length;S++){let b=u[S];b!==void 0&&(m(h[S])&&m(b)||Array.isArray(h[S])&&Array.isArray(b)?h[S]=F(h[S],b,T):h[S]=b)}return h}if(!m(e))return u;if(!m(u))return e;let x=T?e:{...e};for(let h in u){let S=u[h];S===void 0?delete x[h]:Array.isArray(x[h])&&Array.isArray(S)||m(x[h])&&m(S)?x[h]=F(x[h],S,T):x[h]=S}return x}let{diff:r,added:n=[],deleted:f=[],modified:o=[],changes:t,keepRef:l}=i,a=s!==void 0?s:l,y=t||r;if(!y)return e;let g=new Set(n),A=new Set(f),p=new Set(o),d=u=>{if(n.length===0&&f.length===0&&o.length===0)return!0;let T=u.split(/[.\[\]]+/).filter(Boolean);for(let x=0;x<=T.length;x++){let h=T.slice(0,x).join("."),S=T.slice(0,x).map((b,K)=>/^\d+$/.test(b)?`[${b}]`:K>0?`.${b}`:b).join("");if(g.has(h)||g.has(S)||A.has(h)||A.has(S)||p.has(h)||p.has(S))return!0}return!1};if(Array.isArray(e)&&Array.isArray(y)){let u=a?e:[...e];u.length=y.length;for(let T=0;T<y.length;T++){let x=`[${T}]`,h=y[T];h!==void 0&&d(x)&&(m(u[T])&&m(h)||Array.isArray(u[T])&&Array.isArray(h)?u[T]=F(u[T],h,a):u[T]=h)}return u}if(!m(e))return y;if(!m(y))return e;let c=a?e:{...e};for(let u of f)u.includes(".")||u.includes("[")||d(u)&&delete c[u];for(let u in y){let T=y[u];d(u)&&(T===void 0?delete c[u]:Array.isArray(c[u])&&Array.isArray(T)||m(c[u])&&m(T)?c[u]=F(c[u],T,a):c[u]=T)}return c};var P=(e,i={})=>{let{type:s="auto",throwOnError:r=!1}=i;if(!e||typeof e!="string")return[];let n=[],f="",o=!1,t=!1,l="",a="",y=0,A=s==="auto"?(d=>d.includes("..")?"descendant":d.includes("[?(")?"filter":d.includes("[:")||d.includes("[0:")?"slice":d.includes("[,")||d.includes("[0,1]")?"union":d.includes("[*]")||d.includes(".*.")?"wildcard":d.includes("[]")?"array-wildcard":d.includes("[")&&d.includes("]")?"bracket":"dot")(e):s,p=d=>{let c=d.trim();if(c==="*"||c==="")return{type:"wildcard",value:c===""?"[]":"*",raw:c===""?"[]":d};if(c==="[]")return{type:"wildcard",value:"[]",raw:d};if(/^-?\d+$/.test(c))return{type:"index",value:parseInt(c,10),raw:d};if(c.includes(":")){let u=c.split(":").map(h=>h.trim()),T=u[0]===""?0:parseInt(u[0],10),x=u[1]===""?1/0:parseInt(u[1],10);if(isNaN(T)||isNaN(x)){if(r)throw new Error(`Invalid slice notation: ${d}`);return{type:"wildcard",value:"*",raw:d}}return{type:"slice",value:[T,x],raw:d}}if(c.includes(",")){let u=c.split(",").map(T=>{let x=parseInt(T.trim(),10);return isNaN(x)?-1:x}).filter(T=>T>=0);if(u.length===0){if(r)throw new Error(`Invalid union notation: ${d}`);return{type:"wildcard",value:"*",raw:d}}return{type:"union",value:u,raw:d}}if(c.startsWith("?(")&&c.endsWith(")")){let u=c.slice(2,-1);try{return{type:"filter",value:te(u),raw:d}}catch(T){if(r)throw T;return{type:"wildcard",value:"*",raw:d}}}return c.startsWith('"')&&c.endsWith('"')||c.startsWith("'")&&c.endsWith("'")?{type:"property",value:c.slice(1,-1),raw:d}:{type:"property",value:c,raw:d}};for(let d=0;d<e.length;d++){let c=e[d],u=e[d+1];if((c==='"'||c==="'")&&!t){t=!0,l=c;continue}else if(c===l&&t){t=!1,l="",c==='"'||c==="'"||(o?a+=c:f+=c);continue}if(t){o?a+=c:f+=c;continue}if(c==="["&&!o){f&&(n.push({type:"property",value:f,raw:f}),f=""),o=!0,a="";continue}if(c==="]"&&o&&!t){o=!1;let x=p(a);n.push(x);continue}let T=n.length>0?n[n.length-1]:null;if(c==="."&&!o&&!t){if(u==="."){let x=e.split("..")[0];n.push({type:"property",value:x,raw:x}),n.push({type:"descendant",value:"..",raw:".."}),d++}else f&&(f==="*"?n.push({type:"wildcard",value:f,raw:f}):n.push({type:"property",value:f,raw:f}),f="");continue}if(o)a+=c;else if(T&&T.type!=="descendant")f+=c;else{let x=e.split(T?.raw)[1];x!==void 0?f=x:f+=c}}return f&&n.push({type:"property",value:f,raw:f}),n.map(d=>{if(d.type==="property"&&typeof d.value=="string"&&/^-?\d+$/.test(d.value)){let c=parseInt(d.value,10);if(!isNaN(c))return{...d,type:"index",value:c}}return d})},te=e=>{let i=e.replace(/@\.([a-zA-Z_$][\w$]*)/g,(s,r)=>`item.${r}`).replace(/@/g,"item");try{return new Function("item",`return ${i}`)}catch{throw new Error(`Invalid filter expression: ${e}`)}},M=e=>{let i=[];for(let s=0;s<e.length;s++){let r=e[s],n=s>0?e[s-1]:null;switch(r.type){case"property":/[\.\[\]\s]/.test(String(r.value))?i.push(`["${r.value}"]`):(n&&n.type!=="descendant"&&i.push("."),i.push(String(r.value)));break;case"index":i.push(`[${r.value}]`);break;case"wildcard":r.value==="[]"?i.push("[]"):i.push("[*]");break;case"slice":let[o,t]=r.value;i.push(`[${o}:${t===1/0?"":t}]`);break;case"union":let l=r.value;i.push(`[${l.join(",")}]`);break;case"filter":i.push(`[?(${r.raw?.slice(2,-1)||""})]`);break;case"descendant":i.push("..");break}}return i.join("").replace(/\.\[/g,"[")};function ne(e,i){for(let s in i){let r=e[s],n=i[s],f=j(r,n);Array.isArray(r)&&Array.isArray(n)?(r.length=0,r.push(...n)):typeof r=="object"&&typeof n=="object"&&r&&n&&f.hasChanges?F(r,n):e[s]=n}}function $(e,...i){if(i.length===0)return O(e);let s={preserveTarget:!1,strict:!1},r=i,n=i[i.length-1];n&&typeof n=="object"&&("preserveTarget"in n||"strict"in n)&&(s={...s,...n},r=i.slice(0,-1));let f=s.preserveTarget?e:O(e),o=Array.isArray(f);for(let t of r)if(t&&Array.isArray(t)!==o)throw new Error("Cannot mix arrays and objects in deepMergeWithOptions");for(let t of r)if(t!=null)if(o){let l=f,a=t;if(s.strict)for(let y=0;y<l.length&&y<a.length;y++)k(l[y])&&k(a[y])?l[y]=$(l[y],a[y],s):typeof l[y]==typeof a[y]&&(l[y]=O(a[y]));else ne(l,a)}else{if(!k(t))continue;let l=f,a=t;for(let g in a){if(!Object.prototype.hasOwnProperty.call(a,g))continue;let A=a[g];if(s.strict&&!(g in l))continue;let p=l[g];p===void 0?l[g]=O(A):Array.isArray(A)&&Array.isArray(p)?s.strict?l[g]=$(p,A,s):l[g]=[...p,...A.map(d=>O(d))]:k(A)&&k(p)?l[g]=$(p,A,s):l[g]=O(A)}let y=Object.getOwnPropertySymbols(a);for(let g of y){if(s.strict&&!(g in l))continue;let A=a[g],p=l[g];p===void 0?l[g]=O(A):Array.isArray(A)&&Array.isArray(p)?s.strict?l[g]=$(p,A,s):l[g]=[...p,...A.map(d=>O(d))]:k(A)&&k(p)?l[g]=$(p,A,s):l[g]=O(A)}}return f}function W(e,...i){return $(e,...i,{preserveTarget:!0})}var q=(e,i,s)=>{let r=P(i),n=e;for(let f=0;f<r.length;f++){let o=r[f],t=f===r.length-1;switch(o.type){case"property":if(t)n[String(o.value)]=s;else{if(!n[String(o.value)]){let a=r[f+1];n[String(o.value)]=a.type==="index"||a.type==="slice"||a.type==="union"||a.type==="wildcard"?[]:{}}n=n[String(o.value)]}break;case"index":Array.isArray(n)||(n=[]);let l=o.value;if(t){if(l>=n.length)for(let a=n.length;a<=l;a++)n.push(void 0);n[l]=s}else{if(!n[l]){let a=r[f+1];n[l]=a.type==="index"||a.type==="slice"||a.type==="union"||a.type==="wildcard"?[]:{}}n=n[l]}break;case"wildcard":if(Array.isArray(n))if(t)for(let a=0;a<n.length;a++)n[a]=s;else{let a=r[f+1];for(let y=0;y<n.length;y++)n[y]||(n[y]=a.type==="index"||a.type==="slice"||a.type==="union"||a.type==="wildcard"?[]:{});n.length>0&&(n=n[0])}break}}};function I(e,i,s={}){let{preserveStructure:r,multiple:n,throwOnError:f=!1,defaultValue:o,maxDepth:t=20}=s;if(!e||typeof e!="object")return o;if(!i)return e;if(Array.isArray(i))if(r){let y={};for(let g of i){let A=I(e,g,{...s,preserveStructure:!1});A!==void 0&&q(y,g,A)}return y}else return i.map(y=>I(e,y,{...s,preserveStructure:!1}));let l=P(i,{...s,throwOnError:f});if(l.length===0)return e;if(typeof r>"u"||r===!1){let y=re(e,i);return n===!1&&Array.isArray(y)?y[0]:y===void 0&&o!==void 0?o:y}let a=w(e,l,0,t);return a===void 0&&o!==void 0?o:a}function re(e,i,s={}){let{createMissing:r=!1,add:n=!1,debug:f=!1}=s,o=P(i),t=e,l=!1,a="",y=i;if(typeof t=="object"&&!Array.isArray(t)&&y.length>0&&t[y])return t=t[y],t;for(let g=0;g<o.length;g++){let A=o[g],p=o.length>1?g===o.length-1:!1;if(t===null&&!r)return;let d=o[g+1];switch(A.type){case"property":if(t&&typeof t=="object")if(Array.isArray(t)){if(typeof A.value=="number"){let c=A.value;if(r&&c>=t.length)for(let u=t.length;u<=c;u++)t.push(void 0);if(r&&(t[c]===null||t[c]===void 0)&&(!p||l)&&(d?t[c]=d.type==="index"||d.type==="slice"||d.type==="union"||d.type==="wildcard"?[]:{}:t[c]=null,l=!1),t=t[c],d){l=!0;continue}}else n?t.push({[String(A.value)]:null}):t=t.map(c=>c[String(A.value)]);if(d)continue;return J(t)}else{if(t[a]&&a.split(".").length>=2){t=t[a];continue}if(r&&(t[String(A.value)]===null||t[String(A.value)]===void 0)&&(!p||l)&&(d?t[String(A.value)]=d.type==="index"||d.type==="slice"||d.type==="union"||d.type==="wildcard"?[]:{}:t[String(A.value)]=null,l=!1,t=t[String(A.value)],d)){l=!0;continue}if(t?(!t[String(A.value)]&&r&&(t[String(A.value)]=null),t=t[String(A.value)]):t={[String(A.value)]:null},d)continue}else if(r)t={},t[String(A.value)]=d.type==="index"||d.type==="slice"||d.type==="union"||d.type==="wildcard"||s.type==="array"?[]:{},t=t[String(A.value)];else return;break;case"index":case"wildcard":if(Array.isArray(t)){if(A.type==="index"){let c=A.value;if(c<0){t=t[t.length-Math.abs(c)];continue}if(r&&(c>=t.length||t[c]==null||t[c]==null)&&!p){for(let u=t.length;u<=c;u++)t.push(void 0);d&&(t[c]=d.type==="index"||d.type==="slice"||d.type==="union"||d.type==="wildcard"?[]:{})}t=t[c]}else if(!p)continue}else if(r){let c=o[g+1];t=[];let u=A.value;for(let T=0;T<=u;T++)t.push(void 0);t[u]=c.type==="index"||c.type==="slice"||c.type==="union"||c.type==="wildcard"||s.type==="array"?[]:{},t=t[u]}else{if(A.type==="index"&&typeof t=="object"&&t&&t[String(A.value)]!==void 0){t=t[String(A.value)];continue}if(typeof t=="object"){t=Object.values(t);continue}return}break;default:return}}return J(t)}function J(e){return Array.isArray(e)?e.filter(i=>typeof i<"u"):e}var R=(e,i,s={})=>{let{throwOnError:r=!1}=s;if(Array.isArray(i))return i.map(t=>R(e,t,s));let n=P(i,{throwOnError:r});if(n.length===0)return!1;let f=n[n.length-1];if(n.some(t=>t.type==="wildcard"||t.type==="slice"||t.type==="union")){let t=L(e,i,s),l=!1;for(let a of t)se(e,a)&&(l=!0);return l}let o=e;for(let t=0;t<n.length-1;t++){let l=n[t];if(o==null)return!1;switch(l.type){case"property":o=o[String(l.value)];break;case"index":if(!Array.isArray(o))return!1;let a=l.value;if(a<0||a>=o.length)return!1;o=o[a];break;default:return!1}}if(o==null)return!1;switch(f.type){case"property":if(String(f.value)in o)return delete o[String(f.value)],!0;break;case"index":if(!Array.isArray(o))return!1;let t=f.value;if(t>=0&&t<o.length)return o.splice(t,1),!0;break}return!1},se=(e,i)=>{let s=P(i);if(s.length===0)return!1;let r=s[s.length-1],n=e;for(let f=0;f<s.length-1;f++){let o=s[f];if(n==null)return!1;switch(o.type){case"property":n=n[String(o.value)];break;case"index":if(!Array.isArray(n))return!1;let t=o.value;if(t<0||t>=n.length)return!1;n=n[t];break;default:return!1}}if(n==null)return!1;switch(r.type){case"property":if(String(r.value)in n)return delete n[String(r.value)],!0;break;case"index":if(!Array.isArray(n))return!1;let f=r.value;if(f>=0&&f<n.length)return n.splice(f,1),!0;break}return!1},L=(e,i,s={})=>{let{format:r="selector",maxDepth:n=20}=s;if(i&&Array.isArray(i)){let t=[];for(let l of i){let a=L(e,l,s);t.push(...a)}return t}if(i){let t=P(i,s);return v(e,t,0,n).map(a=>r==="selector"?a.path:a.stringPath)}let f=[],o=(t,l=[],a=[],y=0)=>{if(!(y>n)){if(l.length>0){let g=M(l);f.push({path:g,stringPath:a.join(".")})}if(t&&typeof t=="object")if(Array.isArray(t))for(let g=0;g<t.length;g++)o(t[g],[...l,{type:"index",value:g,raw:`[${g}]`}],[...a,`[${g}]`],y+1);else for(let g in t)t.hasOwnProperty(g)&&o(t[g],[...l,{type:"property",value:g,raw:g}],[...a,g],y+1)}};return o(e),f.map(t=>r==="selector"?t.path:t.stringPath)};function v(e,i,s,r,n=[],f=[]){if(s>r)return[];if(i.length===0)return[{value:e,path:M(n),stringPath:f.join(".")}];let o=i[0],t=i.slice(1),l=[];if(o.type==="descendant"){if(l.push(...v(e,t,s+1,r,n,f)),e&&typeof e=="object")if(Array.isArray(e))for(let a=0;a<e.length;a++)l.push(...v(e[a],i,s+1,r,[...n,{type:"index",value:a,raw:`[${a}]`}],[...f,`[${a}]`]));else for(let a in e)e.hasOwnProperty(a)&&l.push(...v(e[a],i,s+1,r,[...n,{type:"property",value:a,raw:a}],[...f,a]));return l}switch(o.type){case"property":if(e&&typeof e=="object"&&String(o.value)in e){let a=e[String(o.value)];l.push(...v(a,t,s+1,r,[...n,o],[...f,String(o.value)]))}break;case"index":if(Array.isArray(e)){let a=o.value;a>=0&&a<e.length&&l.push(...v(e[a],t,s+1,r,[...n,o],[...f,`[${a}]`]))}else if(e&&typeof e=="object"){let a=String(o.value);a in e&&l.push(...v(e[a],t,s+1,r,[...n,{...o,type:"property"}],[...f,a]))}break;case"wildcard":if(e&&typeof e=="object")if(Array.isArray(e))for(let a=0;a<e.length;a++)l.push(...v(e[a],t,s+1,r,[...n,{type:"index",value:a,raw:`[${a}]`}],[...f,`[${a}]`]));else for(let a in e)e.hasOwnProperty(a)&&l.push(...v(e[a],t,s+1,r,[...n,{type:"property",value:a,raw:a}],[...f,a]));break;case"slice":if(Array.isArray(e)){let[a,y]=o.value,g=Math.max(0,a),A=Math.min(e.length,y===1/0?e.length:y);for(let p=g;p<A;p++)l.push(...v(e[p],t,s+1,r,[...n,{type:"index",value:p,raw:`[${p}]`}],[...f,`[${p}]`]))}break;case"union":if(Array.isArray(e)){let a=o.value;for(let y of a)y>=0&&y<e.length&&l.push(...v(e[y],t,s+1,r,[...n,{type:"index",value:y,raw:`[${y}]`}],[...f,`[${y}]`]))}break;case"filter":if(Array.isArray(e)){let a=o.value;for(let y=0;y<e.length;y++)a(e[y])&&l.push(...v(e[y],t,s+1,r,[...n,{type:"index",value:y,raw:`[${y}]`}],[...f,`[${y}]`]))}break}return l}function ie(e,i){if(!m(e))return{};let s={...e};for(let r of i)delete s[r];return s}function D(e,i){if(e==null||typeof e!="object")return e;if(Array.isArray(e))return e.map(r=>D(r,i));let s={};for(let[r,n]of Object.entries(e))i.includes(r)||(s[r]=D(n,i));return s}function ae(e){return i=>{if(!m(i))return{};let s={...i};for(let r of e)r in s&&delete s[r];return s}}function z(e,i){if(!m(e))return{};let s={};for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&!i(e[r],r,e)&&(s[r]=e[r]);return s}function oe(e){return z(e,i=>i==null)}function le(e,i){if(!m(e))return{};let s={};for(let r of i)r in e&&(s[r]=e[r]);return s}function fe(e,i){if(!m(e))return{};let s={};for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&i(e[r],r,e)&&(s[r]=e[r]);return s}function ye(e,i,s){if(!m(e))return{};let r=JSON.parse(JSON.stringify(e)),n=Array.isArray(i)?i:[i];for(let o=0;o<n.length;o++){let t=n[o],l=n[o+1];if(!t||t==="")continue;let a=P(t);if(t.includes("*")||t.includes("[")||a.length>1){let A=function(p,d=""){if(m(p)){if(Array.isArray(p)){p.forEach((c,u)=>{A(c,d?`${d}[${u}]`:`[${u}]`)});return}for(let c in p)if(Object.prototype.hasOwnProperty.call(p,c)){let u=d?`${d}.${c}`:c;g.push({fullPath:u,segments:P(u)}),A(p[c],u)}}};var f=A;let y=I(r,t,{preserveStructure:!0});if(y===void 0)continue;let g=[];A(y);for(let{fullPath:p,segments:d}of g){let c=[...d],u=c.pop();if(!u)continue;let T=c.map(K=>K.type==="index"?`[${K.value}]`:K.value).join(".").replace(/\.\[/g,"["),x=I(r,T.length>0?T:p,{preserveStructure:!0}),h=T?x:r;if(!h)continue;let S=String(u.value),b=h[S];if(s){let K=s(b,p,r);if(K===!0)if(u.type==="index"&&Array.isArray(h)){let E=u.value;E>=0&&E<h.length&&h.splice(E,1)}else R(r,n[o]);else K!==!1&&(h[S]=K)}else if(u.type==="index"&&Array.isArray(h)){let K=u.value;K>=0&&K<h.length&&h.splice(K,1)}else R(r,n[o])}}else{let y=t;if(typeof y=="string"&&y in r)if(s){let g=s(r[y],t,r);g===!0?delete r[y]:g!==!1&&(r[y]=g)}else R(r,n[o])}}return r}function ue(e,i,s){if(!m(e))return{};if(Array.isArray(i)){let f={};for(let o of i){let t=I(e,o,{preserveStructure:!0});if(t!==void 0)if(s){let l=(y,g)=>{if(m(y)){if(Array.isArray(y))return y.map((p,d)=>l(p,`${g}[${d}]`));let A={};for(let p in y)if(Object.prototype.hasOwnProperty.call(y,p)){let d=g?`${g}.${p}`:p;A[p]=l(y[p],d)}return A}return s(y,g,e)},a=l(t,o);W(f,a)}else Object.assign(f,W(f,t))}return f}let r=Array.isArray(i)?i[0]:i,n=I(e,r,{preserveStructure:!0});if(n===void 0)return{};if(s){let f=(o,t)=>{if(m(o)){if(Array.isArray(o))return o.map((a,y)=>f(a,`${t}[${y}]`));let l={};for(let a in o)if(Object.prototype.hasOwnProperty.call(o,a)){let y=t?`${t}.${a}`:a;l[a]=f(o[a],y)}return l}return s(o,t,e)};return f(n,r)}return n}function C(e,i){if(!m(e))return e;if(Array.isArray(e))return e.map(r=>C(r,i));let s={};for(let r in e){if(!Object.prototype.hasOwnProperty.call(e,r))continue;let n=e[r];i(n,r,e)||(m(n)?s[r]=C(n,i):Array.isArray(n)?s[r]=n.map(f=>C(f,i)):s[r]=n)}return s}
|