@fluixi/utils 1.0.0-alpha.83 → 1.0.0-alpha.84
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 +2858 -1
- package/dist/index.mjs +2838 -1
- package/dist/lib/array/advanced.cjs +2227 -1
- package/dist/lib/array/advanced.mjs +2204 -1
- package/dist/lib/array/array.cjs +57 -1
- package/dist/lib/array/array.mjs +36 -1
- package/dist/lib/array/index.cjs +2344 -1
- package/dist/lib/array/index.mjs +2322 -1
- package/dist/lib/array/utils.cjs +103 -1
- package/dist/lib/array/utils.mjs +82 -1
- package/dist/lib/color/color.cjs +2190 -1
- package/dist/lib/color/color.mjs +2167 -1
- package/dist/lib/color/constants.cjs +380 -1
- package/dist/lib/color/constants.mjs +359 -1
- package/dist/lib/color/conversions.cjs +629 -1
- package/dist/lib/color/conversions.mjs +608 -1
- package/dist/lib/color/helpers.cjs +2534 -1
- package/dist/lib/color/helpers.mjs +2511 -1
- package/dist/lib/color/index.cjs +2641 -1
- package/dist/lib/color/index.mjs +2619 -1
- package/dist/lib/color/types.cjs +18 -1
- package/dist/lib/color/utils.cjs +962 -1
- package/dist/lib/color/utils.mjs +939 -1
- package/dist/lib/compare/comparators.cjs +171 -1
- package/dist/lib/compare/comparators.mjs +150 -1
- package/dist/lib/compare/index.cjs +172 -1
- package/dist/lib/compare/index.mjs +152 -1
- package/dist/lib/crypto/hash.cjs +83 -1
- package/dist/lib/crypto/hash.mjs +62 -1
- package/dist/lib/crypto/index.cjs +85 -1
- package/dist/lib/crypto/index.mjs +62 -1
- package/dist/lib/dom/events.cjs +40 -1
- package/dist/lib/dom/events.mjs +19 -1
- package/dist/lib/dom/index.cjs +78 -1
- package/dist/lib/dom/index.mjs +56 -1
- package/dist/lib/dom/utils.cjs +57 -1
- package/dist/lib/dom/utils.mjs +36 -1
- package/dist/lib/functions/functions.cjs +366 -1
- package/dist/lib/functions/functions.mjs +345 -1
- package/dist/lib/functions/index.cjs +369 -1
- package/dist/lib/functions/index.mjs +347 -1
- package/dist/lib/functions/types.cjs +18 -1
- package/dist/lib/helpers.cjs +78 -1
- package/dist/lib/helpers.mjs +59 -1
- package/dist/lib/index.cjs +2857 -1
- package/dist/lib/index.mjs +2836 -1
- package/dist/lib/maths/constants.cjs +70 -1
- package/dist/lib/maths/constants.mjs +50 -1
- package/dist/lib/maths/fn/advanced.cjs +231 -1
- package/dist/lib/maths/fn/advanced.mjs +208 -1
- package/dist/lib/maths/fn/basic.cjs +212 -1
- package/dist/lib/maths/fn/basic.mjs +191 -1
- package/dist/lib/maths/fn/complex.cjs +268 -1
- package/dist/lib/maths/fn/complex.mjs +247 -1
- package/dist/lib/maths/fn/index.cjs +877 -1
- package/dist/lib/maths/fn/index.mjs +855 -1
- package/dist/lib/maths/fn/trigo.cjs +179 -1
- package/dist/lib/maths/fn/trigo.mjs +156 -1
- package/dist/lib/maths/fn/vector.cjs +728 -1
- package/dist/lib/maths/fn/vector.mjs +707 -1
- package/dist/lib/maths/formatter.cjs +61 -1
- package/dist/lib/maths/formatter.mjs +40 -1
- package/dist/lib/maths/guards.cjs +164 -1
- package/dist/lib/maths/guards.mjs +144 -1
- package/dist/lib/maths/index.cjs +1152 -1
- package/dist/lib/maths/index.mjs +1130 -1
- package/dist/lib/maths/parser.cjs +75 -1
- package/dist/lib/maths/parser.mjs +54 -1
- package/dist/lib/maths/random.cjs +49 -1
- package/dist/lib/maths/random.mjs +28 -1
- package/dist/lib/maths/types/advanced.cjs +18 -1
- package/dist/lib/maths/types/basic.cjs +18 -1
- package/dist/lib/maths/types/index.cjs +19 -1
- package/dist/lib/maths/types/index.mjs +1 -0
- package/dist/lib/maths/types/negative.cjs +18 -1
- package/dist/lib/maths/types/operations.cjs +18 -1
- package/dist/lib/object/clone.cjs +88 -1
- package/dist/lib/object/clone.mjs +65 -1
- package/dist/lib/object/diff.cjs +573 -1
- package/dist/lib/object/diff.mjs +550 -1
- package/dist/lib/object/getter-setter.cjs +2351 -1
- package/dist/lib/object/getter-setter.mjs +2330 -1
- package/dist/lib/object/index.cjs +3956 -6
- package/dist/lib/object/index.mjs +3936 -6
- package/dist/lib/object/merge.cjs +1029 -1
- package/dist/lib/object/merge.mjs +1006 -1
- package/dist/lib/object/object.cjs +280 -1
- package/dist/lib/object/object.mjs +257 -1
- package/dist/lib/object/omit.cjs +2022 -1
- package/dist/lib/object/omit.mjs +1999 -1
- package/dist/lib/object/reconcile.cjs +126 -1
- package/dist/lib/object/reconcile.mjs +105 -1
- package/dist/lib/object/selector.cjs +303 -1
- package/dist/lib/object/selector.mjs +282 -1
- package/dist/lib/object/sort.cjs +209 -1
- package/dist/lib/object/sort.mjs +186 -1
- package/dist/lib/object/transform.cjs +2211 -1
- package/dist/lib/object/transform.mjs +2190 -1
- package/dist/lib/object/types.cjs +18 -1
- package/dist/lib/object/utils.cjs +326 -6
- package/dist/lib/object/utils.mjs +305 -6
- package/dist/lib/primitive/boolean/boolean.cjs +407 -1
- package/dist/lib/primitive/boolean/boolean.mjs +386 -1
- package/dist/lib/primitive/boolean/index.cjs +382 -1
- package/dist/lib/primitive/boolean/index.mjs +359 -1
- package/dist/lib/primitive/boolean/types.cjs +18 -1
- package/dist/lib/primitive/date/date.cjs +1126 -1
- package/dist/lib/primitive/date/date.mjs +1105 -1
- package/dist/lib/primitive/date/index.cjs +1128 -1
- package/dist/lib/primitive/date/index.mjs +1105 -1
- package/dist/lib/primitive/date/types.cjs +18 -1
- package/dist/lib/primitive/index.cjs +2338 -5
- package/dist/lib/primitive/index.mjs +2316 -5
- package/dist/lib/primitive/string/index.cjs +875 -5
- package/dist/lib/primitive/string/index.mjs +852 -5
- package/dist/lib/primitive/string/parser-2.cjs +543 -8
- package/dist/lib/primitive/string/parser-2.mjs +522 -8
- package/dist/lib/primitive/string/parser.cjs +236 -3
- package/dist/lib/primitive/string/parser.mjs +215 -3
- package/dist/lib/primitive/string/string.cjs +926 -5
- package/dist/lib/primitive/string/string.mjs +903 -5
- package/dist/lib/primitive/string/types.cjs +18 -1
- package/dist/lib/primitive/types.cjs +18 -1
- package/dist/lib/url/index.cjs +327 -1
- package/dist/lib/url/index.mjs +304 -1
- package/dist/lib/url/parser.cjs +325 -1
- package/dist/lib/url/parser.mjs +304 -1
- package/dist/lib/url/types.cjs +18 -1
- package/package.json +5 -5
|
@@ -1 +1,280 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/lib/object/object.ts
|
|
21
|
+
var object_exports = {};
|
|
22
|
+
__export(object_exports, {
|
|
23
|
+
clean: () => clean,
|
|
24
|
+
deepFreeze: () => deepFreeze,
|
|
25
|
+
defaults: () => defaults,
|
|
26
|
+
filter: () => filter,
|
|
27
|
+
fromQueryString: () => fromQueryString,
|
|
28
|
+
groupBy: () => groupBy,
|
|
29
|
+
invert: () => invert,
|
|
30
|
+
isNonNullObject: () => isNonNullObject,
|
|
31
|
+
size: () => size,
|
|
32
|
+
toQueryString: () => toQueryString,
|
|
33
|
+
transform: () => transform
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(object_exports);
|
|
36
|
+
|
|
37
|
+
// src/lib/object/utils.ts
|
|
38
|
+
var isObject = (value) => {
|
|
39
|
+
if (value == null) return false;
|
|
40
|
+
if (Array.isArray(value)) return false;
|
|
41
|
+
if (typeof value === "function") return false;
|
|
42
|
+
if (value instanceof Date) return false;
|
|
43
|
+
if (value instanceof RegExp) return false;
|
|
44
|
+
if (value instanceof Map) return false;
|
|
45
|
+
if (value instanceof Set) return false;
|
|
46
|
+
if (value instanceof Error) return false;
|
|
47
|
+
return typeof value === "object";
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// src/lib/object/clone.ts
|
|
51
|
+
var deepClone = (obj, skipKeys) => {
|
|
52
|
+
if (obj == null || typeof obj !== "object") {
|
|
53
|
+
return obj;
|
|
54
|
+
}
|
|
55
|
+
if (obj instanceof Date) {
|
|
56
|
+
return new Date(obj.getTime());
|
|
57
|
+
}
|
|
58
|
+
if (obj instanceof RegExp) {
|
|
59
|
+
return new RegExp(obj.source, obj.flags);
|
|
60
|
+
}
|
|
61
|
+
if (obj instanceof Map) {
|
|
62
|
+
const clone = /* @__PURE__ */ new Map();
|
|
63
|
+
obj.forEach((value, key) => {
|
|
64
|
+
if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
|
|
65
|
+
clone.set(key, deepClone(value));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
return clone;
|
|
69
|
+
}
|
|
70
|
+
if (obj instanceof Set) {
|
|
71
|
+
const clone = /* @__PURE__ */ new Set();
|
|
72
|
+
obj.forEach((value) => {
|
|
73
|
+
clone.add(deepClone(value));
|
|
74
|
+
});
|
|
75
|
+
return clone;
|
|
76
|
+
}
|
|
77
|
+
if (Array.isArray(obj)) {
|
|
78
|
+
return Array.from(obj).map((item) => deepClone(item));
|
|
79
|
+
}
|
|
80
|
+
if (isObject(obj)) {
|
|
81
|
+
const clone = {};
|
|
82
|
+
for (const key in obj) {
|
|
83
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
84
|
+
if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
|
|
85
|
+
clone[key] = deepClone(obj[key]);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const symbols = Object.getOwnPropertySymbols(obj);
|
|
90
|
+
for (const symbol of symbols) {
|
|
91
|
+
if (!skipKeys || !skipKeys.some((s) => s.toString() === symbol.toString())) {
|
|
92
|
+
clone[symbol] = deepClone(obj[symbol]);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return clone;
|
|
96
|
+
}
|
|
97
|
+
return obj;
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
// src/lib/object/object.ts
|
|
101
|
+
var invert = (obj, deep = false) => {
|
|
102
|
+
if (Array.isArray(obj)) {
|
|
103
|
+
return obj.map((item) => invert(item, deep));
|
|
104
|
+
}
|
|
105
|
+
if (!isObject(obj)) {
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
108
|
+
const result = {};
|
|
109
|
+
for (const key in obj) {
|
|
110
|
+
let value = obj[key];
|
|
111
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "symbol") {
|
|
112
|
+
result[value] = key;
|
|
113
|
+
} else if (isObject(value)) {
|
|
114
|
+
if (deep) {
|
|
115
|
+
result[key] = invert(value, deep);
|
|
116
|
+
}
|
|
117
|
+
} else if (Array.isArray(value)) {
|
|
118
|
+
if (deep) {
|
|
119
|
+
result[key] = value.map((item) => invert(item, deep));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
};
|
|
125
|
+
var filter = (obj, predicate) => {
|
|
126
|
+
if (Array.isArray(obj)) {
|
|
127
|
+
return obj.filter(predicate);
|
|
128
|
+
}
|
|
129
|
+
if (!isObject(obj)) {
|
|
130
|
+
return {};
|
|
131
|
+
}
|
|
132
|
+
const result = {};
|
|
133
|
+
for (const key in obj) {
|
|
134
|
+
if (predicate(obj[key], key)) {
|
|
135
|
+
result[key] = obj[key];
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return result;
|
|
139
|
+
};
|
|
140
|
+
var clean = (obj, deep = false) => {
|
|
141
|
+
if (!isObject(obj)) {
|
|
142
|
+
return {};
|
|
143
|
+
}
|
|
144
|
+
const result = {};
|
|
145
|
+
for (const key in obj) {
|
|
146
|
+
const value = obj[key];
|
|
147
|
+
if (value != null) {
|
|
148
|
+
if (deep && isObject(value)) {
|
|
149
|
+
const cleaned = clean(value, true);
|
|
150
|
+
if (Object.keys(cleaned).length > 0) {
|
|
151
|
+
result[key] = cleaned;
|
|
152
|
+
}
|
|
153
|
+
} else {
|
|
154
|
+
result[key] = value;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return result;
|
|
159
|
+
};
|
|
160
|
+
var defaults = (current, overrides) => {
|
|
161
|
+
if (Array.isArray(current)) {
|
|
162
|
+
if (Array.isArray(overrides)) {
|
|
163
|
+
return [...current, ...overrides];
|
|
164
|
+
}
|
|
165
|
+
return [...current, overrides];
|
|
166
|
+
}
|
|
167
|
+
const result = deepClone(current);
|
|
168
|
+
for (const key in overrides) {
|
|
169
|
+
if (result[key] === void 0) {
|
|
170
|
+
result[key] = overrides[key];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
};
|
|
175
|
+
var size = (obj) => {
|
|
176
|
+
if (!isObject(obj)) {
|
|
177
|
+
return 0;
|
|
178
|
+
}
|
|
179
|
+
return Object.keys(obj).length;
|
|
180
|
+
};
|
|
181
|
+
var transform = (obj, transformer) => {
|
|
182
|
+
if (Array.isArray(obj)) {
|
|
183
|
+
return obj.map(transformer);
|
|
184
|
+
}
|
|
185
|
+
if (!isObject(obj)) {
|
|
186
|
+
return {};
|
|
187
|
+
}
|
|
188
|
+
const result = {};
|
|
189
|
+
for (const key in obj) {
|
|
190
|
+
const [newKey, newValue] = transformer(key, obj[key]);
|
|
191
|
+
result[newKey] = newValue;
|
|
192
|
+
}
|
|
193
|
+
return result;
|
|
194
|
+
};
|
|
195
|
+
var groupBy = (array, key) => {
|
|
196
|
+
if (!Array.isArray(array)) {
|
|
197
|
+
return {};
|
|
198
|
+
}
|
|
199
|
+
return array.reduce((groups, item) => {
|
|
200
|
+
const groupKey = item[key];
|
|
201
|
+
if (groupKey == null) {
|
|
202
|
+
return groups;
|
|
203
|
+
}
|
|
204
|
+
const keyStr = String(groupKey);
|
|
205
|
+
if (!groups[keyStr]) {
|
|
206
|
+
groups[keyStr] = [];
|
|
207
|
+
}
|
|
208
|
+
groups[keyStr].push(item);
|
|
209
|
+
return groups;
|
|
210
|
+
}, {});
|
|
211
|
+
};
|
|
212
|
+
var toQueryString = (obj) => {
|
|
213
|
+
if (!isObject(obj)) {
|
|
214
|
+
return "";
|
|
215
|
+
}
|
|
216
|
+
const params = [];
|
|
217
|
+
const addParam = (key, value) => {
|
|
218
|
+
if (value == null) return;
|
|
219
|
+
if (Array.isArray(value)) {
|
|
220
|
+
value.forEach((item) => {
|
|
221
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(item)}`);
|
|
222
|
+
});
|
|
223
|
+
} else {
|
|
224
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
225
|
+
}
|
|
226
|
+
};
|
|
227
|
+
for (const key in obj) {
|
|
228
|
+
addParam(key, obj[key]);
|
|
229
|
+
}
|
|
230
|
+
return params.join("&");
|
|
231
|
+
};
|
|
232
|
+
var fromQueryString = (queryString) => {
|
|
233
|
+
if (!queryString || typeof queryString !== "string") {
|
|
234
|
+
return {};
|
|
235
|
+
}
|
|
236
|
+
const str = queryString.startsWith("?") ? queryString.slice(1) : queryString;
|
|
237
|
+
if (!str) {
|
|
238
|
+
return {};
|
|
239
|
+
}
|
|
240
|
+
const result = {};
|
|
241
|
+
const pairs = str.split("&");
|
|
242
|
+
for (const pair of pairs) {
|
|
243
|
+
const [key, value] = pair.split("=").map(decodeURIComponent);
|
|
244
|
+
if (key) {
|
|
245
|
+
if (key in result) {
|
|
246
|
+
if (Array.isArray(result[key])) {
|
|
247
|
+
result[key].push(value || "");
|
|
248
|
+
} else {
|
|
249
|
+
result[key] = [result[key], value || ""];
|
|
250
|
+
}
|
|
251
|
+
} else {
|
|
252
|
+
result[key] = value || "";
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return result;
|
|
257
|
+
};
|
|
258
|
+
var deepFreeze = (obj) => {
|
|
259
|
+
if (obj == null || typeof obj !== "object") {
|
|
260
|
+
return obj;
|
|
261
|
+
}
|
|
262
|
+
Object.freeze(obj);
|
|
263
|
+
for (const key in obj) {
|
|
264
|
+
const value = obj[key];
|
|
265
|
+
if (value != null && typeof value === "object") {
|
|
266
|
+
deepFreeze(value);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
const symbols = Object.getOwnPropertySymbols(obj);
|
|
270
|
+
for (const symbol of symbols) {
|
|
271
|
+
const value = obj[symbol];
|
|
272
|
+
if (value != null && typeof value === "object") {
|
|
273
|
+
deepFreeze(value);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return obj;
|
|
277
|
+
};
|
|
278
|
+
var isNonNullObject = (value) => {
|
|
279
|
+
return value != null && typeof value === "object" && !Array.isArray(value);
|
|
280
|
+
};
|
|
@@ -1 +1,257 @@
|
|
|
1
|
-
|
|
1
|
+
// src/lib/object/utils.ts
|
|
2
|
+
var isObject = (value) => {
|
|
3
|
+
if (value == null) return false;
|
|
4
|
+
if (Array.isArray(value)) return false;
|
|
5
|
+
if (typeof value === "function") return false;
|
|
6
|
+
if (value instanceof Date) return false;
|
|
7
|
+
if (value instanceof RegExp) return false;
|
|
8
|
+
if (value instanceof Map) return false;
|
|
9
|
+
if (value instanceof Set) return false;
|
|
10
|
+
if (value instanceof Error) return false;
|
|
11
|
+
return typeof value === "object";
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// src/lib/object/clone.ts
|
|
15
|
+
var deepClone = (obj, skipKeys) => {
|
|
16
|
+
if (obj == null || typeof obj !== "object") {
|
|
17
|
+
return obj;
|
|
18
|
+
}
|
|
19
|
+
if (obj instanceof Date) {
|
|
20
|
+
return new Date(obj.getTime());
|
|
21
|
+
}
|
|
22
|
+
if (obj instanceof RegExp) {
|
|
23
|
+
return new RegExp(obj.source, obj.flags);
|
|
24
|
+
}
|
|
25
|
+
if (obj instanceof Map) {
|
|
26
|
+
const clone = /* @__PURE__ */ new Map();
|
|
27
|
+
obj.forEach((value, key) => {
|
|
28
|
+
if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
|
|
29
|
+
clone.set(key, deepClone(value));
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
return clone;
|
|
33
|
+
}
|
|
34
|
+
if (obj instanceof Set) {
|
|
35
|
+
const clone = /* @__PURE__ */ new Set();
|
|
36
|
+
obj.forEach((value) => {
|
|
37
|
+
clone.add(deepClone(value));
|
|
38
|
+
});
|
|
39
|
+
return clone;
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(obj)) {
|
|
42
|
+
return Array.from(obj).map((item) => deepClone(item));
|
|
43
|
+
}
|
|
44
|
+
if (isObject(obj)) {
|
|
45
|
+
const clone = {};
|
|
46
|
+
for (const key in obj) {
|
|
47
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
48
|
+
if (!skipKeys || !skipKeys.some((k) => k.toString() === key.toString())) {
|
|
49
|
+
clone[key] = deepClone(obj[key]);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const symbols = Object.getOwnPropertySymbols(obj);
|
|
54
|
+
for (const symbol of symbols) {
|
|
55
|
+
if (!skipKeys || !skipKeys.some((s) => s.toString() === symbol.toString())) {
|
|
56
|
+
clone[symbol] = deepClone(obj[symbol]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return clone;
|
|
60
|
+
}
|
|
61
|
+
return obj;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
// src/lib/object/object.ts
|
|
65
|
+
var invert = (obj, deep = false) => {
|
|
66
|
+
if (Array.isArray(obj)) {
|
|
67
|
+
return obj.map((item) => invert(item, deep));
|
|
68
|
+
}
|
|
69
|
+
if (!isObject(obj)) {
|
|
70
|
+
return {};
|
|
71
|
+
}
|
|
72
|
+
const result = {};
|
|
73
|
+
for (const key in obj) {
|
|
74
|
+
let value = obj[key];
|
|
75
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "symbol") {
|
|
76
|
+
result[value] = key;
|
|
77
|
+
} else if (isObject(value)) {
|
|
78
|
+
if (deep) {
|
|
79
|
+
result[key] = invert(value, deep);
|
|
80
|
+
}
|
|
81
|
+
} else if (Array.isArray(value)) {
|
|
82
|
+
if (deep) {
|
|
83
|
+
result[key] = value.map((item) => invert(item, deep));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
};
|
|
89
|
+
var filter = (obj, predicate) => {
|
|
90
|
+
if (Array.isArray(obj)) {
|
|
91
|
+
return obj.filter(predicate);
|
|
92
|
+
}
|
|
93
|
+
if (!isObject(obj)) {
|
|
94
|
+
return {};
|
|
95
|
+
}
|
|
96
|
+
const result = {};
|
|
97
|
+
for (const key in obj) {
|
|
98
|
+
if (predicate(obj[key], key)) {
|
|
99
|
+
result[key] = obj[key];
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
};
|
|
104
|
+
var clean = (obj, deep = false) => {
|
|
105
|
+
if (!isObject(obj)) {
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
108
|
+
const result = {};
|
|
109
|
+
for (const key in obj) {
|
|
110
|
+
const value = obj[key];
|
|
111
|
+
if (value != null) {
|
|
112
|
+
if (deep && isObject(value)) {
|
|
113
|
+
const cleaned = clean(value, true);
|
|
114
|
+
if (Object.keys(cleaned).length > 0) {
|
|
115
|
+
result[key] = cleaned;
|
|
116
|
+
}
|
|
117
|
+
} else {
|
|
118
|
+
result[key] = value;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return result;
|
|
123
|
+
};
|
|
124
|
+
var defaults = (current, overrides) => {
|
|
125
|
+
if (Array.isArray(current)) {
|
|
126
|
+
if (Array.isArray(overrides)) {
|
|
127
|
+
return [...current, ...overrides];
|
|
128
|
+
}
|
|
129
|
+
return [...current, overrides];
|
|
130
|
+
}
|
|
131
|
+
const result = deepClone(current);
|
|
132
|
+
for (const key in overrides) {
|
|
133
|
+
if (result[key] === void 0) {
|
|
134
|
+
result[key] = overrides[key];
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return result;
|
|
138
|
+
};
|
|
139
|
+
var size = (obj) => {
|
|
140
|
+
if (!isObject(obj)) {
|
|
141
|
+
return 0;
|
|
142
|
+
}
|
|
143
|
+
return Object.keys(obj).length;
|
|
144
|
+
};
|
|
145
|
+
var transform = (obj, transformer) => {
|
|
146
|
+
if (Array.isArray(obj)) {
|
|
147
|
+
return obj.map(transformer);
|
|
148
|
+
}
|
|
149
|
+
if (!isObject(obj)) {
|
|
150
|
+
return {};
|
|
151
|
+
}
|
|
152
|
+
const result = {};
|
|
153
|
+
for (const key in obj) {
|
|
154
|
+
const [newKey, newValue] = transformer(key, obj[key]);
|
|
155
|
+
result[newKey] = newValue;
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
};
|
|
159
|
+
var groupBy = (array, key) => {
|
|
160
|
+
if (!Array.isArray(array)) {
|
|
161
|
+
return {};
|
|
162
|
+
}
|
|
163
|
+
return array.reduce((groups, item) => {
|
|
164
|
+
const groupKey = item[key];
|
|
165
|
+
if (groupKey == null) {
|
|
166
|
+
return groups;
|
|
167
|
+
}
|
|
168
|
+
const keyStr = String(groupKey);
|
|
169
|
+
if (!groups[keyStr]) {
|
|
170
|
+
groups[keyStr] = [];
|
|
171
|
+
}
|
|
172
|
+
groups[keyStr].push(item);
|
|
173
|
+
return groups;
|
|
174
|
+
}, {});
|
|
175
|
+
};
|
|
176
|
+
var toQueryString = (obj) => {
|
|
177
|
+
if (!isObject(obj)) {
|
|
178
|
+
return "";
|
|
179
|
+
}
|
|
180
|
+
const params = [];
|
|
181
|
+
const addParam = (key, value) => {
|
|
182
|
+
if (value == null) return;
|
|
183
|
+
if (Array.isArray(value)) {
|
|
184
|
+
value.forEach((item) => {
|
|
185
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(item)}`);
|
|
186
|
+
});
|
|
187
|
+
} else {
|
|
188
|
+
params.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
for (const key in obj) {
|
|
192
|
+
addParam(key, obj[key]);
|
|
193
|
+
}
|
|
194
|
+
return params.join("&");
|
|
195
|
+
};
|
|
196
|
+
var fromQueryString = (queryString) => {
|
|
197
|
+
if (!queryString || typeof queryString !== "string") {
|
|
198
|
+
return {};
|
|
199
|
+
}
|
|
200
|
+
const str = queryString.startsWith("?") ? queryString.slice(1) : queryString;
|
|
201
|
+
if (!str) {
|
|
202
|
+
return {};
|
|
203
|
+
}
|
|
204
|
+
const result = {};
|
|
205
|
+
const pairs = str.split("&");
|
|
206
|
+
for (const pair of pairs) {
|
|
207
|
+
const [key, value] = pair.split("=").map(decodeURIComponent);
|
|
208
|
+
if (key) {
|
|
209
|
+
if (key in result) {
|
|
210
|
+
if (Array.isArray(result[key])) {
|
|
211
|
+
result[key].push(value || "");
|
|
212
|
+
} else {
|
|
213
|
+
result[key] = [result[key], value || ""];
|
|
214
|
+
}
|
|
215
|
+
} else {
|
|
216
|
+
result[key] = value || "";
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return result;
|
|
221
|
+
};
|
|
222
|
+
var deepFreeze = (obj) => {
|
|
223
|
+
if (obj == null || typeof obj !== "object") {
|
|
224
|
+
return obj;
|
|
225
|
+
}
|
|
226
|
+
Object.freeze(obj);
|
|
227
|
+
for (const key in obj) {
|
|
228
|
+
const value = obj[key];
|
|
229
|
+
if (value != null && typeof value === "object") {
|
|
230
|
+
deepFreeze(value);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
const symbols = Object.getOwnPropertySymbols(obj);
|
|
234
|
+
for (const symbol of symbols) {
|
|
235
|
+
const value = obj[symbol];
|
|
236
|
+
if (value != null && typeof value === "object") {
|
|
237
|
+
deepFreeze(value);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return obj;
|
|
241
|
+
};
|
|
242
|
+
var isNonNullObject = (value) => {
|
|
243
|
+
return value != null && typeof value === "object" && !Array.isArray(value);
|
|
244
|
+
};
|
|
245
|
+
export {
|
|
246
|
+
clean,
|
|
247
|
+
deepFreeze,
|
|
248
|
+
defaults,
|
|
249
|
+
filter,
|
|
250
|
+
fromQueryString,
|
|
251
|
+
groupBy,
|
|
252
|
+
invert,
|
|
253
|
+
isNonNullObject,
|
|
254
|
+
size,
|
|
255
|
+
toQueryString,
|
|
256
|
+
transform
|
|
257
|
+
};
|