@hichchi/utils 0.0.1-alpha.1 → 0.0.1-beta.1

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.
Files changed (106) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/README.md +6236 -1032
  3. package/constants/constants.d.ts +223 -0
  4. package/constants/constants.js +227 -0
  5. package/constants/constants.js.map +1 -0
  6. package/constants/english-inflection-rules.d.ts +53 -0
  7. package/constants/english-inflection-rules.js +360 -0
  8. package/constants/english-inflection-rules.js.map +1 -0
  9. package/constants/index.d.ts +2 -0
  10. package/constants/index.js +6 -0
  11. package/constants/index.js.map +1 -0
  12. package/enums/index.d.ts +1 -0
  13. package/{src → enums}/index.js +1 -1
  14. package/enums/index.js.map +1 -0
  15. package/enums/template-tag.enum.d.ts +33 -0
  16. package/enums/template-tag.enum.js +39 -0
  17. package/enums/template-tag.enum.js.map +1 -0
  18. package/index.d.ts +5 -0
  19. package/index.js +9 -0
  20. package/index.js.map +1 -0
  21. package/interfaces/index.d.ts +3 -0
  22. package/interfaces/index.js +7 -0
  23. package/interfaces/index.js.map +1 -0
  24. package/interfaces/infinite-object.interface.d.ts +45 -0
  25. package/interfaces/infinite-object.interface.js +3 -0
  26. package/interfaces/infinite-object.interface.js.map +1 -0
  27. package/interfaces/inflection-rule.interfaces.d.ts +142 -0
  28. package/interfaces/inflection-rule.interfaces.js +3 -0
  29. package/interfaces/inflection-rule.interfaces.js.map +1 -0
  30. package/interfaces/path-value-set.interface.d.ts +79 -0
  31. package/interfaces/path-value-set.interface.js +3 -0
  32. package/interfaces/path-value-set.interface.js.map +1 -0
  33. package/package.json +4 -4
  34. package/readme-top.md +182 -6
  35. package/types/deep-partial.type.d.ts +47 -0
  36. package/types/deep-partial.type.js +3 -0
  37. package/types/deep-partial.type.js.map +1 -0
  38. package/types/index.d.ts +34 -0
  39. package/types/index.js +38 -0
  40. package/types/index.js.map +1 -0
  41. package/types/is-already-in-path.type.d.ts +24 -0
  42. package/types/is-already-in-path.type.js +3 -0
  43. package/types/is-already-in-path.type.js.map +1 -0
  44. package/types/is-empty.type.d.ts +25 -0
  45. package/types/is-empty.type.js +3 -0
  46. package/types/is-empty.type.js.map +1 -0
  47. package/types/is-primitive.type.d.ts +27 -0
  48. package/types/is-primitive.type.js +4 -0
  49. package/types/is-primitive.type.js.map +1 -0
  50. package/types/literal-object.type.d.ts +49 -0
  51. package/types/literal-object.type.js +3 -0
  52. package/types/literal-object.type.js.map +1 -0
  53. package/{src/lib/types.d.ts → types/loose-autocomplete.type.d.ts} +18 -6
  54. package/types/loose-autocomplete.type.js +3 -0
  55. package/types/loose-autocomplete.type.js.map +1 -0
  56. package/types/partial-with-null.type.d.ts +27 -0
  57. package/types/partial-with-null.type.js +3 -0
  58. package/types/partial-with-null.type.js.map +1 -0
  59. package/types/prettify.type.d.ts +23 -0
  60. package/types/prettify.type.js +3 -0
  61. package/types/prettify.type.js.map +1 -0
  62. package/types/type.type.d.ts +21 -0
  63. package/{src/lib/interfaces.js → types/type.type.js} +1 -1
  64. package/types/type.type.js.map +1 -0
  65. package/utils/assertions.utils.d.ts +150 -0
  66. package/utils/assertions.utils.js +163 -0
  67. package/utils/assertions.utils.js.map +1 -0
  68. package/utils/file.utils.d.ts +87 -0
  69. package/{src/lib → utils}/file.utils.js +78 -26
  70. package/utils/file.utils.js.map +1 -0
  71. package/{src/lib → utils}/index.d.ts +3 -5
  72. package/{src/lib → utils}/index.js +3 -5
  73. package/utils/index.js.map +1 -0
  74. package/utils/object.utils.d.ts +912 -0
  75. package/utils/object.utils.js +1069 -0
  76. package/utils/object.utils.js.map +1 -0
  77. package/utils/string-template.utils.d.ts +169 -0
  78. package/utils/string-template.utils.js +269 -0
  79. package/utils/string-template.utils.js.map +1 -0
  80. package/utils/string.utils.d.ts +932 -0
  81. package/utils/string.utils.js +1255 -0
  82. package/utils/string.utils.js.map +1 -0
  83. package/utils/url.utils.d.ts +99 -0
  84. package/utils/url.utils.js +112 -0
  85. package/utils/url.utils.js.map +1 -0
  86. package/src/index.d.ts +0 -1
  87. package/src/index.js.map +0 -1
  88. package/src/lib/assertions.utils.d.ts +0 -55
  89. package/src/lib/assertions.utils.js +0 -68
  90. package/src/lib/assertions.utils.js.map +0 -1
  91. package/src/lib/file.utils.d.ts +0 -25
  92. package/src/lib/file.utils.js.map +0 -1
  93. package/src/lib/index.js.map +0 -1
  94. package/src/lib/interfaces.d.ts +0 -6
  95. package/src/lib/interfaces.js.map +0 -1
  96. package/src/lib/object.utils.d.ts +0 -265
  97. package/src/lib/object.utils.js +0 -414
  98. package/src/lib/object.utils.js.map +0 -1
  99. package/src/lib/string-template.utils.d.ts +0 -25
  100. package/src/lib/string-template.utils.js +0 -40
  101. package/src/lib/string-template.utils.js.map +0 -1
  102. package/src/lib/string.utils.d.ts +0 -217
  103. package/src/lib/string.utils.js +0 -314
  104. package/src/lib/string.utils.js.map +0 -1
  105. package/src/lib/types.js +0 -4
  106. package/src/lib/types.js.map +0 -1
@@ -1,265 +0,0 @@
1
- import { InfiniteObject, PathValueSet } from "./interfaces";
2
- import { LiteralObject, PartialWithNull } from "./types";
3
- /**
4
- * Deep copy an object.
5
- * @template T Type of the object.
6
- * @param {T} obj Object to copy.
7
- * @returns {T} Copied object.
8
- *
9
- * @example
10
- * ```TypeScript
11
- * // Example usage
12
- * const object = {
13
- * name: "John Doe"
14
- * }
15
- *
16
- * const copiedObject = deepCopy(object);
17
- * ```
18
- */
19
- export declare function deepCopy<T>(obj: T): T;
20
- /**
21
- * Get the key of a map by value.
22
- * @param {Map<string, unknown>} map Map to get key from.
23
- * @param {unknown} value Value to get key for.
24
- * @returns {string | undefined} Key of the map.
25
- *
26
- * @example
27
- * ```TypeScript
28
- * // Example usage
29
- * const user = new Map<string, string>([
30
- * ["firstName", "John"],
31
- * ["lastName", "Doe"],
32
- * ["preferredName", "John"],
33
- * ["age", 30],
34
- * ]);
35
- *
36
- * const key = getMapKey(user, "value2");
37
- *
38
- * // Example output: "firstName"
39
- * ```
40
- */
41
- export declare function getMapKey(map: Map<string, unknown>, value: unknown): string | undefined;
42
- /**
43
- * Get the keys of a map by partial value.
44
- * @param {Map<string, string>} map Map to get keys from.
45
- * @param {string} partialValue Partial value to get keys for.
46
- * @returns - Keys of the map.
47
- *
48
- * @example
49
- * ```TypeScript
50
- * // Example usage
51
- * const user = new Map<string, string>([
52
- * ["firstName", "John"],
53
- * ["lastName", "Doe"],
54
- * ["preferredName", "John"],
55
- * ["age", 30],
56
- * ]);
57
- *
58
- * const keys = getMapKeys(user, "Jo");
59
- *
60
- * // Example output
61
- * ["firstName", "preferredName"]
62
- * ```
63
- */
64
- export declare const getMapKeys: (map: Map<string, string>, partialValue: string) => string[];
65
- /**
66
- * Groups an array of objects by a key.
67
- * @template K Type of the key.
68
- * @template V Type of the object.
69
- * @param {Array<V>} list Array of objects to group.
70
- * @param {(input: V) => K} keyGetter Function to get the key from the object.
71
- * @returns {Map<K | null, Array<V>>} Grouped objects.
72
- *
73
- * @example
74
- * ```TypeScript
75
- * // Example usage
76
- * // group by age, all have unique names
77
- * const users = [
78
- * { name: "John", age: 30 },
79
- * { name: "Jane", age: 25 },
80
- * { name: "Doe", age: 30 },
81
- * { name: "Smith", age: 25 },
82
- * { name: "Denis", age: 30 },
83
- * ];
84
- *
85
- * const groupedUsers = groupBy(users, user => user.age);
86
- *
87
- * // Example output
88
- * Map {
89
- * 30 => [
90
- * { name: "John", age: 30 },
91
- * { name: "Doe", age: 30 },
92
- * { name: "Denis", age: 30 },
93
- * ],
94
- * 25 => [
95
- * { name: "Jane", age: 25 },
96
- * { name: "Smith", age: 25 },
97
- * ],
98
- * }
99
- * ```
100
- */
101
- export declare const groupBy: <K, V>(list: Array<V>, keyGetter: (input: V) => K) => Map<K | null, Array<V>>;
102
- /**
103
- * Get the values of a map by partial value.
104
- * @param {Map<string, string>} map Map to get values from.
105
- * @param {string} partialValue Partial value to get values for.
106
- * @returns {string[]} Values of the map.
107
- *
108
- * @example
109
- * ```TypeScript
110
- * // Example usage
111
- * const user = new Map<string, string>([
112
- * ["name", "John Doe"],
113
- * ["preferredName", "John"],
114
- * ["age", 30],
115
- * ]);
116
- *
117
- * const values = getMapValues(user, "Jo");
118
- *
119
- * // Example output
120
- * ["John Doe", "John"]
121
- * ```
122
- */
123
- export declare const searchMapValues: (map: Map<string, string>, partialValue: string) => string[];
124
- /**
125
- * Get value from an object by path.
126
- * @template T - Type of the value.
127
- * @param {InfiniteObject} obj Object to get value from.
128
- * @param {string} path Path to get value from.
129
- * @returns {T | undefined} Value from the object.
130
- *
131
- * @example
132
- * ```TypeScript
133
- * // Example usage
134
- * const object = {
135
- * role: "user",
136
- * profile: {
137
- * name: "John Doe",
138
- * age: 30,
139
- * address: {
140
- * city: "New York",
141
- * },
142
- * },
143
- * };
144
- *
145
- * const value = getValueByPath<string>(object, "profile.address.city");
146
- *
147
- * // Example output: "New York"
148
- * ```
149
- */
150
- export declare const getValueByPath: <T>(obj: InfiniteObject, path: string) => T | undefined;
151
- /**
152
- * Convert an object to a path value set
153
- * @template T The type of the value
154
- * @param {LiteralObject} obj The object
155
- * @returns {PathValueSet<T>} The path value set
156
- *
157
- * @example
158
- * ```TypeScript
159
- * // Example usage
160
- * const object = {
161
- * role: "user",
162
- * profile: {
163
- * name: "John Doe",
164
- * age: 30,
165
- * address: {
166
- * city: "New York",
167
- * },
168
- * },
169
- * };
170
- *
171
- * const pathValueSet = objectToPathValueSet(object);
172
- *
173
- * // Example output
174
- * {
175
- * "role": "user",
176
- * "profile.name": "John Doe",
177
- * "profile.age": 30,
178
- * "profile.address.city": "New York",
179
- * }
180
- * ```
181
- */
182
- export declare function objectToPathValueSet(obj: LiteralObject): PathValueSet;
183
- /**
184
- * Convert the path value set to an object
185
- * @template R The return type
186
- * @param {PathValueSet} pathValueSet The path value set
187
- * @returns {R} The object with the path value set converted
188
- *
189
- * @example
190
- * ```TypeScript
191
- * // Example usage
192
- * const pathValueSet = {
193
- * "role": "user",
194
- * "profile.name": "John Doe",
195
- * "profile.age": 30,
196
- * "profile.address.city": "New York",
197
- * }
198
- *
199
- * const object = pathValueSetToObject(pathValueSet);
200
- *
201
- * // Example output
202
- * {
203
- * role: "user",
204
- * profile: {
205
- * name: "John Doe",
206
- * age: 30,
207
- * address: {
208
- * city: "New York",
209
- * },
210
- * },
211
- * }
212
- * ```
213
- *
214
- */
215
- export declare function pathValueSetToObject<R = object>(pathValueSet: Record<string, any>): R;
216
- /**
217
- * Omits undefined properties and properties in the keys array from an object.
218
- * @template T Type of the object.
219
- * @param {Partial<T>} obj - Object to omit properties from.
220
- * @param {(keyof T)[]} keys - Array of keys to omit.
221
- * @returns {Partial<T>} - Object with omitted properties.
222
- *
223
- * @example
224
- * ```TypeScript
225
- * // Example usage
226
- * const object = {
227
- * role: "user",
228
- * name: "John Doe",
229
- * age: 30,
230
- * address: undefined,
231
- * };
232
- *
233
- * omit(object, ["role"]);
234
- *
235
- * // Example output
236
- * {
237
- * name: "John Doe",
238
- * age: 30,
239
- * }
240
- * ```
241
- */
242
- export declare const omit: <T extends {
243
- [key: string]: unknown;
244
- }>(obj: Partial<T>, keys?: (keyof T)[]) => Partial<T>;
245
- /**
246
- * Prune an object by removing all empty, null, undefined, and prototype properties.
247
- * @template T Type of the object.
248
- * @param {T} obj Object to prune.
249
- * @param {boolean} [omitPrototype] Omit prototype properties.
250
- * @returns {T} Pruned object.
251
- *
252
- * @example
253
- * ```TypeScript
254
- * // Example usage
255
- * const object = {
256
- * role: "user",
257
- * profile: {
258
- * name: "John Doe",
259
- * age: 30,
260
- * address: undefined,
261
- * city: "New York",
262
- * },
263
- * };
264
- */
265
- export declare const prune: <T>(obj: PartialWithNull<T>, omitPrototype?: boolean) => T;
@@ -1,414 +0,0 @@
1
- "use strict";
2
- /* eslint-disable @typescript-eslint/no-explicit-any */
3
- // noinspection JSUnusedGlobalSymbols
4
- Object.defineProperty(exports, "__esModule", { value: true });
5
- exports.prune = exports.omit = exports.getValueByPath = exports.searchMapValues = exports.groupBy = exports.getMapKeys = void 0;
6
- exports.deepCopy = deepCopy;
7
- exports.getMapKey = getMapKey;
8
- exports.objectToPathValueSet = objectToPathValueSet;
9
- exports.pathValueSetToObject = pathValueSetToObject;
10
- /**
11
- * Deep copy an object.
12
- * @template T Type of the object.
13
- * @param {T} obj Object to copy.
14
- * @returns {T} Copied object.
15
- *
16
- * @example
17
- * ```TypeScript
18
- * // Example usage
19
- * const object = {
20
- * name: "John Doe"
21
- * }
22
- *
23
- * const copiedObject = deepCopy(object);
24
- * ```
25
- */
26
- function deepCopy(obj) {
27
- if (Array.isArray(obj)) {
28
- return obj.map(deepCopy);
29
- }
30
- else if (typeof obj === "object" && obj !== null) {
31
- return Object.fromEntries(Object.entries(obj).map(([key, value]) => [key, deepCopy(value)]));
32
- }
33
- return obj;
34
- }
35
- /**
36
- * Get the key of a map by value.
37
- * @param {Map<string, unknown>} map Map to get key from.
38
- * @param {unknown} value Value to get key for.
39
- * @returns {string | undefined} Key of the map.
40
- *
41
- * @example
42
- * ```TypeScript
43
- * // Example usage
44
- * const user = new Map<string, string>([
45
- * ["firstName", "John"],
46
- * ["lastName", "Doe"],
47
- * ["preferredName", "John"],
48
- * ["age", 30],
49
- * ]);
50
- *
51
- * const key = getMapKey(user, "value2");
52
- *
53
- * // Example output: "firstName"
54
- * ```
55
- */
56
- function getMapKey(map, value) {
57
- var _a;
58
- return (_a = [...Array.from(map.entries())].find(([, v]) => v === value)) === null || _a === void 0 ? void 0 : _a[0];
59
- }
60
- /**
61
- * Get the keys of a map by partial value.
62
- * @param {Map<string, string>} map Map to get keys from.
63
- * @param {string} partialValue Partial value to get keys for.
64
- * @returns - Keys of the map.
65
- *
66
- * @example
67
- * ```TypeScript
68
- * // Example usage
69
- * const user = new Map<string, string>([
70
- * ["firstName", "John"],
71
- * ["lastName", "Doe"],
72
- * ["preferredName", "John"],
73
- * ["age", 30],
74
- * ]);
75
- *
76
- * const keys = getMapKeys(user, "Jo");
77
- *
78
- * // Example output
79
- * ["firstName", "preferredName"]
80
- * ```
81
- */
82
- const getMapKeys = (map, partialValue) => {
83
- const keys = [];
84
- for (const [key, value] of Array.from(map.entries())) {
85
- if (value.includes(partialValue)) {
86
- keys.push(key);
87
- }
88
- }
89
- return keys;
90
- };
91
- exports.getMapKeys = getMapKeys;
92
- /**
93
- * Groups an array of objects by a key.
94
- * @template K Type of the key.
95
- * @template V Type of the object.
96
- * @param {Array<V>} list Array of objects to group.
97
- * @param {(input: V) => K} keyGetter Function to get the key from the object.
98
- * @returns {Map<K | null, Array<V>>} Grouped objects.
99
- *
100
- * @example
101
- * ```TypeScript
102
- * // Example usage
103
- * // group by age, all have unique names
104
- * const users = [
105
- * { name: "John", age: 30 },
106
- * { name: "Jane", age: 25 },
107
- * { name: "Doe", age: 30 },
108
- * { name: "Smith", age: 25 },
109
- * { name: "Denis", age: 30 },
110
- * ];
111
- *
112
- * const groupedUsers = groupBy(users, user => user.age);
113
- *
114
- * // Example output
115
- * Map {
116
- * 30 => [
117
- * { name: "John", age: 30 },
118
- * { name: "Doe", age: 30 },
119
- * { name: "Denis", age: 30 },
120
- * ],
121
- * 25 => [
122
- * { name: "Jane", age: 25 },
123
- * { name: "Smith", age: 25 },
124
- * ],
125
- * }
126
- * ```
127
- */
128
- const groupBy = (list, keyGetter) => {
129
- const map = new Map();
130
- list.forEach(item => {
131
- const key = keyGetter(item);
132
- const collection = map.get(key);
133
- if (!collection) {
134
- map.set(key, [item]);
135
- }
136
- else {
137
- collection.push(item);
138
- }
139
- });
140
- return map;
141
- };
142
- exports.groupBy = groupBy;
143
- /**
144
- * Get the values of a map by partial value.
145
- * @param {Map<string, string>} map Map to get values from.
146
- * @param {string} partialValue Partial value to get values for.
147
- * @returns {string[]} Values of the map.
148
- *
149
- * @example
150
- * ```TypeScript
151
- * // Example usage
152
- * const user = new Map<string, string>([
153
- * ["name", "John Doe"],
154
- * ["preferredName", "John"],
155
- * ["age", 30],
156
- * ]);
157
- *
158
- * const values = getMapValues(user, "Jo");
159
- *
160
- * // Example output
161
- * ["John Doe", "John"]
162
- * ```
163
- */
164
- const searchMapValues = (map, partialValue) => {
165
- const values = [];
166
- for (const [, value] of Array.from(map.entries())) {
167
- if (value.includes(partialValue)) {
168
- values.push(value);
169
- }
170
- }
171
- return values;
172
- };
173
- exports.searchMapValues = searchMapValues;
174
- /**
175
- * Get value from an object by path.
176
- * @template T - Type of the value.
177
- * @param {InfiniteObject} obj Object to get value from.
178
- * @param {string} path Path to get value from.
179
- * @returns {T | undefined} Value from the object.
180
- *
181
- * @example
182
- * ```TypeScript
183
- * // Example usage
184
- * const object = {
185
- * role: "user",
186
- * profile: {
187
- * name: "John Doe",
188
- * age: 30,
189
- * address: {
190
- * city: "New York",
191
- * },
192
- * },
193
- * };
194
- *
195
- * const value = getValueByPath<string>(object, "profile.address.city");
196
- *
197
- * // Example output: "New York"
198
- * ```
199
- */
200
- const getValueByPath = (obj, path) => {
201
- const keys = path.split("."); // Split the path into an array of keys
202
- let value = obj;
203
- for (const key of keys) {
204
- // noinspection RegExpRedundantEscape
205
- const regExp = /^(\w+)\[(\d+)\]$/;
206
- const isArrayIndex = regExp.exec(key); // Check if the key is an array index
207
- if (isArrayIndex) {
208
- const arrayKey = isArrayIndex[1];
209
- // eslint-disable-next-line @typescript-eslint/no-magic-numbers
210
- const index = Number(isArrayIndex[2]);
211
- if (arrayKey && Array.isArray(value[arrayKey]) && index >= 0 && index < value[arrayKey].length) {
212
- value = value[arrayKey][index]; // Update the value to the array element
213
- }
214
- else {
215
- return undefined; // Return undefined if the array index is invalid
216
- }
217
- }
218
- else if (value && typeof value === "object" && key in value) {
219
- value = value[key]; // Update the value to the nested property
220
- }
221
- else {
222
- return undefined; // Return undefined if any key is not found
223
- }
224
- }
225
- return value;
226
- };
227
- exports.getValueByPath = getValueByPath;
228
- /**
229
- * Convert an object to a path value set
230
- * @template T The type of the value
231
- * @param {LiteralObject} obj The object
232
- * @returns {PathValueSet<T>} The path value set
233
- *
234
- * @example
235
- * ```TypeScript
236
- * // Example usage
237
- * const object = {
238
- * role: "user",
239
- * profile: {
240
- * name: "John Doe",
241
- * age: 30,
242
- * address: {
243
- * city: "New York",
244
- * },
245
- * },
246
- * };
247
- *
248
- * const pathValueSet = objectToPathValueSet(object);
249
- *
250
- * // Example output
251
- * {
252
- * "role": "user",
253
- * "profile.name": "John Doe",
254
- * "profile.age": 30,
255
- * "profile.address.city": "New York",
256
- * }
257
- * ```
258
- */
259
- function objectToPathValueSet(obj) {
260
- const result = {};
261
- function traverse(obj, path = []) {
262
- for (const key in obj) {
263
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
264
- const value = obj[key];
265
- if (typeof value === "object" && !Array.isArray(value)) {
266
- traverse(value, [...path, key]);
267
- }
268
- else {
269
- result[[...path, key].join(".")] = value;
270
- }
271
- }
272
- }
273
- }
274
- traverse(obj);
275
- return result;
276
- }
277
- /**
278
- * Convert the path value set to an object
279
- * @template R The return type
280
- * @param {PathValueSet} pathValueSet The path value set
281
- * @returns {R} The object with the path value set converted
282
- *
283
- * @example
284
- * ```TypeScript
285
- * // Example usage
286
- * const pathValueSet = {
287
- * "role": "user",
288
- * "profile.name": "John Doe",
289
- * "profile.age": 30,
290
- * "profile.address.city": "New York",
291
- * }
292
- *
293
- * const object = pathValueSetToObject(pathValueSet);
294
- *
295
- * // Example output
296
- * {
297
- * role: "user",
298
- * profile: {
299
- * name: "John Doe",
300
- * age: 30,
301
- * address: {
302
- * city: "New York",
303
- * },
304
- * },
305
- * }
306
- * ```
307
- *
308
- */
309
- function pathValueSetToObject(pathValueSet) {
310
- const object = {};
311
- // Helper function to validate paths
312
- const isValidPath = (path) => {
313
- const regex = /^[a-zA-Z0-9_.-]+$/;
314
- return path.split(".").every(part => regex.test(part));
315
- };
316
- // Helper function to set nested properties
317
- const setObjectValue = (obj, keys, value) => {
318
- const [firstKey, ...remainingKeys] = keys;
319
- if (remainingKeys.length === 0) {
320
- obj[firstKey] = value; // Set value at the final key
321
- return;
322
- }
323
- // Initialize the key if it doesn't exist
324
- obj[firstKey] = obj[firstKey] || {};
325
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
326
- setObjectValue(obj[firstKey], remainingKeys, value); // Recurse for the rest of the keys
327
- // TODO: Fix type for above
328
- };
329
- for (const path in pathValueSet) {
330
- if (Object.prototype.hasOwnProperty.call(pathValueSet, path)) {
331
- if (!isValidPath(path)) {
332
- continue; // Skip invalid paths
333
- }
334
- const value = pathValueSet[path];
335
- const keys = path.split("."); // Split path into keys
336
- setObjectValue(object, keys, value); // Use helper to populate the object
337
- }
338
- }
339
- return object;
340
- }
341
- /**
342
- * Omits undefined properties and properties in the keys array from an object.
343
- * @template T Type of the object.
344
- * @param {Partial<T>} obj - Object to omit properties from.
345
- * @param {(keyof T)[]} keys - Array of keys to omit.
346
- * @returns {Partial<T>} - Object with omitted properties.
347
- *
348
- * @example
349
- * ```TypeScript
350
- * // Example usage
351
- * const object = {
352
- * role: "user",
353
- * name: "John Doe",
354
- * age: 30,
355
- * address: undefined,
356
- * };
357
- *
358
- * omit(object, ["role"]);
359
- *
360
- * // Example output
361
- * {
362
- * name: "John Doe",
363
- * age: 30,
364
- * }
365
- * ```
366
- */
367
- const omit = (obj, keys) => {
368
- if (obj) {
369
- Object.keys(obj).forEach(key => {
370
- return (obj[key] === undefined || (keys === null || keys === void 0 ? void 0 : keys.includes(key))) && delete obj[key];
371
- });
372
- }
373
- return obj;
374
- };
375
- exports.omit = omit;
376
- /**
377
- * Prune an object by removing all empty, null, undefined, and prototype properties.
378
- * @template T Type of the object.
379
- * @param {T} obj Object to prune.
380
- * @param {boolean} [omitPrototype] Omit prototype properties.
381
- * @returns {T} Pruned object.
382
- *
383
- * @example
384
- * ```TypeScript
385
- * // Example usage
386
- * const object = {
387
- * role: "user",
388
- * profile: {
389
- * name: "John Doe",
390
- * age: 30,
391
- * address: undefined,
392
- * city: "New York",
393
- * },
394
- * };
395
- */
396
- const prune = (obj, omitPrototype) => {
397
- const objClone = {};
398
- if (typeof obj !== "object") {
399
- return objClone;
400
- }
401
- for (const key in obj) {
402
- if (!omitPrototype || Object.prototype.hasOwnProperty.call(obj, key)) {
403
- if (obj[key] !== null && typeof obj[key] === "object") {
404
- objClone[key] = (0, exports.prune)(obj[key], omitPrototype);
405
- }
406
- else if (obj[key] !== null && obj[key] !== undefined && obj[key] !== "") {
407
- objClone[key] = obj[key];
408
- }
409
- }
410
- }
411
- return objClone;
412
- };
413
- exports.prune = prune;
414
- //# sourceMappingURL=object.utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.utils.js","sourceRoot":"","sources":["../../../../../libs/utils/src/lib/object.utils.ts"],"names":[],"mappings":"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"}