@skalfa/skalfa-api-core 1.0.27 → 1.0.28

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.
@@ -4,4 +4,4 @@ export interface ValidationResult {
4
4
  valid: boolean;
5
5
  errors: Record<string, string[]>;
6
6
  }
7
- export declare function validate(data: Record<string, any>, rules: ValidationRules): Promise<ValidationResult>;
7
+ export declare function validate(rawData: Record<string, any>, rules: ValidationRules): Promise<ValidationResult>;
@@ -4,8 +4,9 @@ import { getLang } from "@skalfa/skalfa-lang";
4
4
  // =====================================>
5
5
  // ## Validation: validate request data
6
6
  // =====================================>
7
- export async function validate(data, rules) {
7
+ export async function validate(rawData, rules) {
8
8
  const errors = {};
9
+ const data = expandData(rawData || {});
9
10
  for (const field in rules) {
10
11
  const fieldRules = normalizeRules(rules[field]);
11
12
  if (field.includes("*")) {
@@ -13,7 +14,7 @@ export async function validate(data, rules) {
13
14
  await nestedValidation({ value: data, segments, rules: fieldRules, fieldPath: "", data, errors });
14
15
  continue;
15
16
  }
16
- const value = getNestedValue(data, field) ?? "";
17
+ const value = getNestedValue(data, field);
17
18
  await checkRules({ field, value, rules: fieldRules, data, errors });
18
19
  }
19
20
  return {
@@ -28,14 +29,14 @@ async function checkRules({ field, value, rules, data, errors }) {
28
29
  switch (name) {
29
30
  // === BASIC ===
30
31
  case "required":
31
- if (validator.isEmpty(String(value).trim())) {
32
+ if (value === undefined || value === null || (typeof value === "string" && validator.isEmpty(value.trim())) || (Array.isArray(value) && value.length === 0)) {
32
33
  const msg = l.validation?.required ? l.validation.required() : `${field} wajib diisi`;
33
34
  addError(errors, field, msg);
34
35
  }
35
36
  break;
36
37
  case "string":
37
38
  case "text":
38
- if (!value)
39
+ if (value === undefined || value === null || value === "")
39
40
  break;
40
41
  if (typeof value !== "string") {
41
42
  const msg = l.validation?.string ? l.validation.string() : `${field} harus berupa string`;
@@ -44,7 +45,7 @@ async function checkRules({ field, value, rules, data, errors }) {
44
45
  break;
45
46
  case "numeric":
46
47
  case "number":
47
- if (!value)
48
+ if (value === undefined || value === null || value === "")
48
49
  break;
49
50
  if (!validator.isNumeric(String(value))) {
50
51
  const msg = l.validation?.numeric ? l.validation.numeric() : `${field} harus berupa angka`;
@@ -52,13 +53,15 @@ async function checkRules({ field, value, rules, data, errors }) {
52
53
  }
53
54
  break;
54
55
  case "boolean":
56
+ if (value === undefined || value === null || value === "")
57
+ break;
55
58
  if (!(value === true || value === false || value === "true" || value === "false" || value === 1 || value === 0)) {
56
59
  const msg = l.validation?.boolean ? l.validation.boolean() : `${field} harus berupa boolean`;
57
60
  addError(errors, field, msg);
58
61
  }
59
62
  break;
60
63
  case "email":
61
- if (!value)
64
+ if (value === undefined || value === null || value === "")
62
65
  break;
63
66
  if (!validator.isEmail(String(value))) {
64
67
  const msg = l.validation?.email ? l.validation.email() : `${field} harus berupa email yang valid`;
@@ -66,7 +69,7 @@ async function checkRules({ field, value, rules, data, errors }) {
66
69
  }
67
70
  break;
68
71
  case "url":
69
- if (!value)
72
+ if (value === undefined || value === null || value === "")
70
73
  break;
71
74
  if (!validator.isURL(String(value))) {
72
75
  const msg = l.validation?.url ? l.validation.url() : `${field} harus berupa URL yang valid`;
@@ -74,7 +77,7 @@ async function checkRules({ field, value, rules, data, errors }) {
74
77
  }
75
78
  break;
76
79
  case "date":
77
- if (!value)
80
+ if (value === undefined || value === null || value === "")
78
81
  break;
79
82
  if (!validator.isDate(String(value))) {
80
83
  const msg = l.validation?.date ? l.validation.date() : `${field} harus berupa tanggal yang valid`;
@@ -83,30 +86,48 @@ async function checkRules({ field, value, rules, data, errors }) {
83
86
  break;
84
87
  // === LENGTH ===
85
88
  case "min": {
86
- if (!value)
89
+ if (value === undefined || value === null || value === "")
87
90
  break;
88
91
  const min = parseInt(param);
89
- if (!validator.isLength(String(value), { min })) {
92
+ if (Array.isArray(value)) {
93
+ if (value.length < min) {
94
+ const msg = l.validation?.min ? l.validation.min({ min }) : `${field} minimal ${min} item`;
95
+ addError(errors, field, msg);
96
+ }
97
+ }
98
+ else if (!validator.isLength(String(value), { min })) {
90
99
  const msg = l.validation?.min ? l.validation.min({ min }) : `${field} minimal ${min} karakter`;
91
100
  addError(errors, field, msg);
92
101
  }
93
102
  break;
94
103
  }
95
104
  case "max": {
96
- if (!value)
105
+ if (value === undefined || value === null || value === "")
97
106
  break;
98
107
  const max = parseInt(param);
99
- if (!validator.isLength(String(value), { max })) {
108
+ if (Array.isArray(value)) {
109
+ if (value.length > max) {
110
+ const msg = l.validation?.max ? l.validation.max({ max }) : `${field} maksimal ${max} item`;
111
+ addError(errors, field, msg);
112
+ }
113
+ }
114
+ else if (!validator.isLength(String(value), { max })) {
100
115
  const msg = l.validation?.max ? l.validation.max({ max }) : `${field} maksimal ${max} karakter`;
101
116
  addError(errors, field, msg);
102
117
  }
103
118
  break;
104
119
  }
105
120
  case "between": {
106
- if (!value)
121
+ if (value === undefined || value === null || value === "")
107
122
  break;
108
123
  const [minVal, maxVal] = param.split(",").map(Number);
109
- if (!validator.isLength(String(value), { min: minVal, max: maxVal })) {
124
+ if (Array.isArray(value)) {
125
+ if (value.length < minVal || value.length > maxVal) {
126
+ const msg = l.validation?.min_max ? l.validation.min_max({ min: minVal, max: maxVal }) : `${field} harus antara ${minVal} - ${maxVal} item`;
127
+ addError(errors, field, msg);
128
+ }
129
+ }
130
+ else if (!validator.isLength(String(value), { min: minVal, max: maxVal })) {
110
131
  const msg = l.validation?.min_max ? l.validation.min_max({ min: minVal, max: maxVal }) : `${field} harus antara ${minVal} - ${maxVal} karakter`;
111
132
  addError(errors, field, msg);
112
133
  }
@@ -114,7 +135,7 @@ async function checkRules({ field, value, rules, data, errors }) {
114
135
  }
115
136
  // === SET MEMBERSHIP ===
116
137
  case "in": {
117
- if (!value)
138
+ if (value === undefined || value === null || value === "")
118
139
  break;
119
140
  const allowed = param.split(",");
120
141
  if (!allowed.includes(String(value))) {
@@ -124,7 +145,7 @@ async function checkRules({ field, value, rules, data, errors }) {
124
145
  break;
125
146
  }
126
147
  case "not_in": {
127
- if (!value)
148
+ if (value === undefined || value === null || value === "")
128
149
  break;
129
150
  const notAllowed = param.split(",");
130
151
  if (notAllowed.includes(String(value))) {
@@ -134,7 +155,7 @@ async function checkRules({ field, value, rules, data, errors }) {
134
155
  break;
135
156
  }
136
157
  case "array": {
137
- if (!value)
158
+ if (value === undefined || value === null || value === "")
138
159
  break;
139
160
  if (!Array.isArray(value)) {
140
161
  const msg = l.validation?.array ? l.validation.array() : `${field} harus berupa array`;
@@ -163,7 +184,7 @@ async function checkRules({ field, value, rules, data, errors }) {
163
184
  break;
164
185
  // === REGEX ===
165
186
  case "regex":
166
- if (!value)
187
+ if (value === undefined || value === null || value === "")
167
188
  break;
168
189
  try {
169
190
  const pattern = new RegExp(param);
@@ -178,7 +199,7 @@ async function checkRules({ field, value, rules, data, errors }) {
178
199
  break;
179
200
  // === DATABASE VALIDATION ===
180
201
  case "unique": {
181
- if (!value)
202
+ if (value === undefined || value === null || value === "")
182
203
  break;
183
204
  const [table, column, exceptId] = param.split(",");
184
205
  const query = db.table(table).where(column, value);
@@ -195,7 +216,7 @@ async function checkRules({ field, value, rules, data, errors }) {
195
216
  break;
196
217
  }
197
218
  case "exists": {
198
- if (!value)
219
+ if (value === undefined || value === null || value === "")
199
220
  break;
200
221
  const [table, column] = param.split(",");
201
222
  const query = db.table(table).where(column, value);
@@ -219,21 +240,63 @@ async function nestedValidation({ value, segments, rules, fieldPath, data, error
219
240
  }
220
241
  const [segment, ...rest] = segments;
221
242
  if (segment === "*") {
222
- if (!Array.isArray(value)) {
223
- addError(errors, fieldPath, `${fieldPath} harus berupa array`);
243
+ if (!Array.isArray(value) || value.length === 0) {
224
244
  return;
225
245
  }
226
246
  for (let i = 0; i < value.length; i++) {
227
- await nestedValidation({ value: value[i], segments: rest, rules, fieldPath: `${fieldPath}.${i}`, data, errors });
247
+ await nestedValidation({ value: value[i], segments: rest, rules, fieldPath: `${fieldPath}[${i}]`, data, errors });
228
248
  }
229
249
  }
230
250
  else {
231
- await nestedValidation({ value: value?.[segment], segments: rest, rules, fieldPath: fieldPath ? `${fieldPath}.${segment}` : segment, data, errors });
251
+ const nextPath = fieldPath ? `${fieldPath}.${segment}` : segment;
252
+ await nestedValidation({ value: value?.[segment], segments: rest, rules, fieldPath: nextPath, data, errors });
232
253
  }
233
254
  }
234
255
  // ==================================>
235
256
  // ## Validation helpers
236
257
  // ==================================>
258
+ function expandData(data) {
259
+ if (!data || typeof data !== "object")
260
+ return data;
261
+ const result = Array.isArray(data) ? [] : {};
262
+ for (const key in data) {
263
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
264
+ setDeepValue(result, key, data[key]);
265
+ }
266
+ }
267
+ return result;
268
+ }
269
+ function setDeepValue(obj, path, value) {
270
+ if (!path)
271
+ return;
272
+ const normalizedPath = path
273
+ .replace(/\[(\d+)\]/g, '.$1')
274
+ .replace(/\["([^"]+)"\]/g, '.$1')
275
+ .replace(/\['([^']+)'\]/g, '.$1');
276
+ const parts = normalizedPath.split('.');
277
+ let current = obj;
278
+ for (let i = 0; i < parts.length; i++) {
279
+ const part = parts[i];
280
+ const isLast = i === parts.length - 1;
281
+ if (isLast) {
282
+ if (Array.isArray(current) && /^\d+$/.test(part)) {
283
+ current[parseInt(part, 10)] = value;
284
+ }
285
+ else {
286
+ current[part] = value;
287
+ }
288
+ }
289
+ else {
290
+ const nextPart = parts[i + 1];
291
+ const isNextNumber = /^\d+$/.test(nextPart);
292
+ const currentIdx = Array.isArray(current) && /^\d+$/.test(part) ? parseInt(part, 10) : part;
293
+ if (current[currentIdx] === undefined || current[currentIdx] === null) {
294
+ current[currentIdx] = isNextNumber ? [] : {};
295
+ }
296
+ current = current[currentIdx];
297
+ }
298
+ }
299
+ }
237
300
  function getNestedValue(obj, path) {
238
301
  if (!obj || typeof obj !== "object")
239
302
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation/validation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/validation/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skalfa/skalfa-api-core",
3
- "version": "1.0.27",
3
+ "version": "1.0.28",
4
4
  "description": "Core and Foundational utilities for the Skalfa API Framework.",
5
5
  "keywords": [
6
6
  "skalfa",
@@ -52,10 +52,11 @@ export interface ValidationResult {
52
52
  // ## Validation: validate request data
53
53
  // =====================================>
54
54
  export async function validate(
55
- data : Record<string, any>,
56
- rules : ValidationRules
55
+ rawData: Record<string, any>,
56
+ rules : ValidationRules
57
57
  ): Promise<ValidationResult> {
58
58
  const errors: Record<string, string[]> = {}
59
+ const data = expandData(rawData || {})
59
60
 
60
61
  for (const field in rules) {
61
62
  const fieldRules = normalizeRules(rules[field])
@@ -68,7 +69,7 @@ export async function validate(
68
69
  continue
69
70
  }
70
71
 
71
- const value = getNestedValue(data, field) ?? ""
72
+ const value = getNestedValue(data, field)
72
73
 
73
74
  await checkRules({ field, value, rules: fieldRules, data, errors })
74
75
  }
@@ -88,7 +89,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
88
89
  switch (name) {
89
90
  // === BASIC ===
90
91
  case "required":
91
- if (validator.isEmpty(String(value).trim())) {
92
+ if (value === undefined || value === null || (typeof value === "string" && validator.isEmpty(value.trim())) || (Array.isArray(value) && value.length === 0)) {
92
93
  const msg = l.validation?.required ? l.validation.required() : `${field} wajib diisi`;
93
94
  addError(errors, field, msg);
94
95
  }
@@ -96,7 +97,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
96
97
 
97
98
  case "string":
98
99
  case "text":
99
- if (!value) break
100
+ if (value === undefined || value === null || value === "") break
100
101
  if (typeof value !== "string") {
101
102
  const msg = l.validation?.string ? l.validation.string() : `${field} harus berupa string`;
102
103
  addError(errors, field, msg);
@@ -105,7 +106,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
105
106
 
106
107
  case "numeric":
107
108
  case "number":
108
- if (!value) break
109
+ if (value === undefined || value === null || value === "") break
109
110
  if (!validator.isNumeric(String(value))) {
110
111
  const msg = l.validation?.numeric ? l.validation.numeric() : `${field} harus berupa angka`;
111
112
  addError(errors, field, msg);
@@ -113,6 +114,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
113
114
  break
114
115
 
115
116
  case "boolean":
117
+ if (value === undefined || value === null || value === "") break
116
118
  if (!(value === true || value === false || value === "true" || value === "false" || value === 1 || value === 0)) {
117
119
  const msg = l.validation?.boolean ? l.validation.boolean() : `${field} harus berupa boolean`;
118
120
  addError(errors, field, msg);
@@ -120,7 +122,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
120
122
  break
121
123
 
122
124
  case "email":
123
- if (!value) break
125
+ if (value === undefined || value === null || value === "") break
124
126
  if (!validator.isEmail(String(value))) {
125
127
  const msg = l.validation?.email ? l.validation.email() : `${field} harus berupa email yang valid`;
126
128
  addError(errors, field, msg);
@@ -128,7 +130,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
128
130
  break
129
131
 
130
132
  case "url":
131
- if (!value) break
133
+ if (value === undefined || value === null || value === "") break
132
134
  if (!validator.isURL(String(value))) {
133
135
  const msg = l.validation?.url ? l.validation.url() : `${field} harus berupa URL yang valid`;
134
136
  addError(errors, field, msg);
@@ -136,7 +138,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
136
138
  break
137
139
 
138
140
  case "date":
139
- if (!value) break
141
+ if (value === undefined || value === null || value === "") break
140
142
  if (!validator.isDate(String(value))) {
141
143
  const msg = l.validation?.date ? l.validation.date() : `${field} harus berupa tanggal yang valid`;
142
144
  addError(errors, field, msg);
@@ -145,9 +147,14 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
145
147
 
146
148
  // === LENGTH ===
147
149
  case "min": {
148
- if (!value) break
150
+ if (value === undefined || value === null || value === "") break
149
151
  const min = parseInt(param!)
150
- if (!validator.isLength(String(value), { min })) {
152
+ if (Array.isArray(value)) {
153
+ if (value.length < min) {
154
+ const msg = l.validation?.min ? l.validation.min({ min }) : `${field} minimal ${min} item`;
155
+ addError(errors, field, msg);
156
+ }
157
+ } else if (!validator.isLength(String(value), { min })) {
151
158
  const msg = l.validation?.min ? l.validation.min({ min }) : `${field} minimal ${min} karakter`;
152
159
  addError(errors, field, msg);
153
160
  }
@@ -155,9 +162,14 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
155
162
  }
156
163
 
157
164
  case "max": {
158
- if (!value) break
165
+ if (value === undefined || value === null || value === "") break
159
166
  const max = parseInt(param!)
160
- if (!validator.isLength(String(value), { max })) {
167
+ if (Array.isArray(value)) {
168
+ if (value.length > max) {
169
+ const msg = l.validation?.max ? l.validation.max({ max }) : `${field} maksimal ${max} item`;
170
+ addError(errors, field, msg);
171
+ }
172
+ } else if (!validator.isLength(String(value), { max })) {
161
173
  const msg = l.validation?.max ? l.validation.max({ max }) : `${field} maksimal ${max} karakter`;
162
174
  addError(errors, field, msg);
163
175
  }
@@ -165,9 +177,14 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
165
177
  }
166
178
 
167
179
  case "between": {
168
- if (!value) break
180
+ if (value === undefined || value === null || value === "") break
169
181
  const [minVal, maxVal] = param!.split(",").map(Number)
170
- if (!validator.isLength(String(value), { min: minVal, max: maxVal })) {
182
+ if (Array.isArray(value)) {
183
+ if (value.length < minVal || value.length > maxVal) {
184
+ const msg = l.validation?.min_max ? l.validation.min_max({ min: minVal, max: maxVal }) : `${field} harus antara ${minVal} - ${maxVal} item`;
185
+ addError(errors, field, msg);
186
+ }
187
+ } else if (!validator.isLength(String(value), { min: minVal, max: maxVal })) {
171
188
  const msg = l.validation?.min_max ? l.validation.min_max({ min: minVal, max: maxVal }) : `${field} harus antara ${minVal} - ${maxVal} karakter`;
172
189
  addError(errors, field, msg);
173
190
  }
@@ -176,7 +193,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
176
193
 
177
194
  // === SET MEMBERSHIP ===
178
195
  case "in": {
179
- if (!value) break
196
+ if (value === undefined || value === null || value === "") break
180
197
  const allowed = param!.split(",")
181
198
  if (!allowed.includes(String(value))) {
182
199
  const msg = l.validation?.in ? l.validation.in({ keywords: allowed.join(", ") }) : `${field} harus salah satu dari: ${allowed.join(", ")}`;
@@ -186,7 +203,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
186
203
  }
187
204
 
188
205
  case "not_in": {
189
- if (!value) break
206
+ if (value === undefined || value === null || value === "") break
190
207
  const notAllowed = param!.split(",")
191
208
  if (notAllowed.includes(String(value))) {
192
209
  const msg = l.validation?.not_in ? l.validation.not_in({ keywords: notAllowed.join(", ") }) : `${field} tidak boleh salah satu dari: ${notAllowed.join(", ")}`;
@@ -196,7 +213,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
196
213
  }
197
214
 
198
215
  case "array": {
199
- if (!value) break
216
+ if (value === undefined || value === null || value === "") break
200
217
  if (!Array.isArray(value)) {
201
218
  const msg = l.validation?.array ? l.validation.array() : `${field} harus berupa array`;
202
219
  addError(errors, field, msg);
@@ -228,7 +245,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
228
245
 
229
246
  // === REGEX ===
230
247
  case "regex":
231
- if (!value) break
248
+ if (value === undefined || value === null || value === "") break
232
249
  try {
233
250
  const pattern = new RegExp(param!)
234
251
  if (!pattern.test(String(value))) {
@@ -242,7 +259,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
242
259
 
243
260
  // === DATABASE VALIDATION ===
244
261
  case "unique": {
245
- if (!value) break
262
+ if (value === undefined || value === null || value === "") break
246
263
  const [table, column, exceptId] = param!.split(",")
247
264
  const query = db.table(table).where(column, value)
248
265
  if (exceptId) query.whereNot("id", exceptId)
@@ -260,7 +277,7 @@ async function checkRules({ field, value, rules, data, errors } : { field: strin
260
277
  }
261
278
 
262
279
  case "exists": {
263
- if (!value) break
280
+ if (value === undefined || value === null || value === "") break
264
281
  const [table, column] = param!.split(",")
265
282
  const query = db.table(table).where(column, value)
266
283
 
@@ -298,17 +315,16 @@ async function nestedValidation({ value, segments, rules, fieldPath, data, error
298
315
  const [segment, ...rest] = segments
299
316
 
300
317
  if (segment === "*") {
301
- if (!Array.isArray(value)) {
302
- addError(errors, fieldPath, `${fieldPath} harus berupa array`)
303
-
304
- return
318
+ if (!Array.isArray(value) || value.length === 0) {
319
+ return;
305
320
  }
306
321
 
307
322
  for (let i = 0; i < value.length; i++) {
308
- await nestedValidation({ value: value[i], segments: rest, rules, fieldPath: `${fieldPath}.${i}`, data, errors })
323
+ await nestedValidation({ value: value[i], segments: rest, rules, fieldPath: `${fieldPath}[${i}]`, data, errors })
309
324
  }
310
325
  } else {
311
- await nestedValidation({ value: value?.[segment], segments: rest, rules, fieldPath: fieldPath ? `${fieldPath}.${segment}` : segment, data, errors})
326
+ const nextPath = fieldPath ? `${fieldPath}.${segment}` : segment
327
+ await nestedValidation({ value: value?.[segment], segments: rest, rules, fieldPath: nextPath, data, errors})
312
328
  }
313
329
  }
314
330
 
@@ -317,6 +333,55 @@ async function nestedValidation({ value, segments, rules, fieldPath, data, error
317
333
  // ==================================>
318
334
  // ## Validation helpers
319
335
  // ==================================>
336
+ function expandData(data: Record<string, any>): Record<string, any> {
337
+ if (!data || typeof data !== "object") return data
338
+
339
+ const result: Record<string, any> = Array.isArray(data) ? [] : {}
340
+
341
+ for (const key in data) {
342
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
343
+ setDeepValue(result, key, data[key])
344
+ }
345
+ }
346
+
347
+ return result
348
+ }
349
+
350
+ function setDeepValue(obj: any, path: string, value: any) {
351
+ if (!path) return
352
+
353
+ const normalizedPath = path
354
+ .replace(/\[(\d+)\]/g, '.$1')
355
+ .replace(/\["([^"]+)"\]/g, '.$1')
356
+ .replace(/\['([^']+)'\]/g, '.$1')
357
+
358
+ const parts = normalizedPath.split('.')
359
+ let current = obj
360
+
361
+ for (let i = 0; i < parts.length; i++) {
362
+ const part = parts[i]
363
+ const isLast = i === parts.length - 1
364
+
365
+ if (isLast) {
366
+ if (Array.isArray(current) && /^\d+$/.test(part)) {
367
+ current[parseInt(part, 10)] = value
368
+ } else {
369
+ current[part] = value
370
+ }
371
+ } else {
372
+ const nextPart = parts[i + 1]
373
+ const isNextNumber = /^\d+$/.test(nextPart)
374
+
375
+ const currentIdx = Array.isArray(current) && /^\d+$/.test(part) ? parseInt(part, 10) : part
376
+
377
+ if ((current as any)[currentIdx] === undefined || (current as any)[currentIdx] === null) {
378
+ (current as any)[currentIdx] = isNextNumber ? [] : {}
379
+ }
380
+ current = (current as any)[currentIdx]
381
+ }
382
+ }
383
+ }
384
+
320
385
  function getNestedValue(obj: any, path: string): any {
321
386
  if (!obj || typeof obj !== "object") return undefined
322
387