nestjs-r2-storage 1.2.4 → 1.2.5
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/README.md
CHANGED
|
@@ -389,6 +389,14 @@ R2StorageModule.forRootAsync({
|
|
|
389
389
|
|
|
390
390
|
## Changelog
|
|
391
391
|
|
|
392
|
+
### v1.2.5 (2025-04-20)
|
|
393
|
+
|
|
394
|
+
- Rewrote parseFieldPath to split by dot then parse each segment (fixes regex state bugs)
|
|
395
|
+
- Fixed getNestedValue array traversal when next key is a property (not array/index)
|
|
396
|
+
- Fixed setNestedValue for empty array brackets `[]` and indexed arrays `[0]`
|
|
397
|
+
- Added null/undefined guards throughout
|
|
398
|
+
- Supports: `gallery[].photo`, `variants[].images[].url`, `a[].b[0].c`
|
|
399
|
+
|
|
392
400
|
### v1.2.4 (2025-04-20)
|
|
393
401
|
|
|
394
402
|
- Fixed parseFieldPath regex to handle keys containing dots
|
|
@@ -10,15 +10,18 @@ exports.getArrayElementPath = getArrayElementPath;
|
|
|
10
10
|
exports.getAllArrayItemPaths = getAllArrayItemPaths;
|
|
11
11
|
function parseFieldPath(path) {
|
|
12
12
|
const segments = [];
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
const parts = path.split(".");
|
|
14
|
+
for (const part of parts) {
|
|
15
|
+
const match = part.match(/^([^\[\]]+)(?:\[(\d*)\])?$/);
|
|
16
|
+
if (!match)
|
|
17
|
+
continue;
|
|
18
|
+
const indexRaw = match[2];
|
|
19
|
+
const hasIndex = indexRaw !== undefined && indexRaw !== "";
|
|
20
|
+
const hasEmptyBrackets = indexRaw === "";
|
|
18
21
|
segments.push({
|
|
19
22
|
key: match[1],
|
|
20
|
-
isArray:
|
|
21
|
-
arrayIndex: hasIndex ? parseInt(
|
|
23
|
+
isArray: hasIndex || hasEmptyBrackets,
|
|
24
|
+
arrayIndex: hasIndex ? parseInt(indexRaw, 10) : undefined,
|
|
22
25
|
});
|
|
23
26
|
}
|
|
24
27
|
return { segments };
|
|
@@ -42,7 +45,10 @@ function getNestedValue(obj, path) {
|
|
|
42
45
|
return current;
|
|
43
46
|
}
|
|
44
47
|
const nextSegment = segments[i + 1];
|
|
45
|
-
if (nextSegment &&
|
|
48
|
+
if (nextSegment &&
|
|
49
|
+
nextSegment.key &&
|
|
50
|
+
!nextSegment.isArray &&
|
|
51
|
+
nextSegment.arrayIndex === undefined) {
|
|
46
52
|
return current;
|
|
47
53
|
}
|
|
48
54
|
if (segment.arrayIndex !== undefined) {
|
|
@@ -79,6 +85,9 @@ function setNestedValue(obj, path, value) {
|
|
|
79
85
|
}
|
|
80
86
|
current = current[segment.key];
|
|
81
87
|
if (segment.isArray && segment.arrayIndex !== undefined) {
|
|
88
|
+
if (!Array.isArray(current)) {
|
|
89
|
+
current = [];
|
|
90
|
+
}
|
|
82
91
|
if (current[segment.arrayIndex] === undefined) {
|
|
83
92
|
current[segment.arrayIndex] = {};
|
|
84
93
|
}
|
|
@@ -87,19 +96,28 @@ function setNestedValue(obj, path, value) {
|
|
|
87
96
|
}
|
|
88
97
|
current = current[segment.arrayIndex];
|
|
89
98
|
}
|
|
99
|
+
else if (segment.isArray && nextSegment && nextSegment.isArray) {
|
|
100
|
+
if (!Array.isArray(current)) {
|
|
101
|
+
current = [];
|
|
102
|
+
}
|
|
103
|
+
current.push({});
|
|
104
|
+
current = current[current.length - 1];
|
|
105
|
+
}
|
|
90
106
|
}
|
|
91
107
|
const lastSegment = segments[segments.length - 1];
|
|
92
|
-
if (lastSegment.isArray
|
|
108
|
+
if (lastSegment.isArray) {
|
|
93
109
|
if (!Array.isArray(current)) {
|
|
94
110
|
current = [];
|
|
95
111
|
}
|
|
112
|
+
if (lastSegment.arrayIndex !== undefined) {
|
|
113
|
+
current[lastSegment.arrayIndex] = {
|
|
114
|
+
...current[lastSegment.arrayIndex],
|
|
115
|
+
[lastSegment.key]: value,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
96
118
|
else {
|
|
97
|
-
current
|
|
119
|
+
current.push(value);
|
|
98
120
|
}
|
|
99
|
-
current[lastSegment.arrayIndex] = {
|
|
100
|
-
...current[lastSegment.arrayIndex],
|
|
101
|
-
[lastSegment.key]: value,
|
|
102
|
-
};
|
|
103
121
|
}
|
|
104
122
|
else {
|
|
105
123
|
current[lastSegment.key] = value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested-value.util.js","sourceRoot":"","sources":["../../../src/r2-storage/utils/nested-value.util.ts"],"names":[],"mappings":";;AAUA,
|
|
1
|
+
{"version":3,"file":"nested-value.util.js","sourceRoot":"","sources":["../../../src/r2-storage/utils/nested-value.util.ts"],"names":[],"mappings":"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"}
|