mapper-factory 1.0.17 → 1.0.19
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/field.decorator.js +6 -3
- package/dist/mapper.js +16 -19
- package/package.json +1 -1
package/dist/field.decorator.js
CHANGED
|
@@ -18,11 +18,14 @@ const MapField = ({ transformer, reverser, src } = {}) => {
|
|
|
18
18
|
const propertyName = property.toString();
|
|
19
19
|
const metadata = Reflect.getMetadata(exports.MAP_FIELD, classConstructor) || {};
|
|
20
20
|
// create new object reference to avoid this issue: https://github.com/rbuckton/reflect-metadata/issues/62
|
|
21
|
-
const newMetadata =
|
|
21
|
+
const newMetadata = { ...metadata };
|
|
22
22
|
const previousValues = metadata[propertyName];
|
|
23
|
-
newMetadata[propertyName] =
|
|
23
|
+
newMetadata[propertyName] = {
|
|
24
|
+
...previousValues,
|
|
25
|
+
src,
|
|
24
26
|
transformer,
|
|
25
|
-
reverser
|
|
27
|
+
reverser,
|
|
28
|
+
};
|
|
26
29
|
Reflect.defineMetadata(exports.MAP_FIELD, newMetadata, classConstructor);
|
|
27
30
|
};
|
|
28
31
|
};
|
package/dist/mapper.js
CHANGED
|
@@ -12,14 +12,12 @@ class MapperFactory {
|
|
|
12
12
|
const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
|
|
13
13
|
object &&
|
|
14
14
|
Object.keys(object).forEach(propertyName => {
|
|
15
|
-
|
|
16
|
-
let metaKeys = metadataList && Object.keys(metadataList).filter(metadata => { var _a, _b, _c; return ((_b = (_a = metadataList[metadata]) === null || _a === void 0 ? void 0 : _a.src) === null || _b === void 0 ? void 0 : _b.startsWith(propertyName)) && ((_c = metadataList[metadata]) === null || _c === void 0 ? void 0 : _c.src) != propertyName; });
|
|
15
|
+
let metaKeys = metadataList && Object.keys(metadataList).filter(metadata => metadataList[metadata]?.src?.startsWith(propertyName) && metadataList[metadata]?.src != propertyName);
|
|
17
16
|
if (metaKeys.length) {
|
|
18
17
|
metaKeys.forEach(metaKey => {
|
|
19
|
-
var _a, _b, _c, _d;
|
|
20
18
|
let metaProp = metadataList[metaKey];
|
|
21
19
|
if (metaProp) {
|
|
22
|
-
let props =
|
|
20
|
+
let props = metaProp.src?.split('.');
|
|
23
21
|
let propsStereoid = props.map(prop => {
|
|
24
22
|
let index = prop.indexOf('[');
|
|
25
23
|
return {
|
|
@@ -29,10 +27,10 @@ class MapperFactory {
|
|
|
29
27
|
};
|
|
30
28
|
});
|
|
31
29
|
let i;
|
|
32
|
-
let objCopy =
|
|
30
|
+
let objCopy = { ...object };
|
|
33
31
|
for (i = 0; i < propsStereoid.length; i++) {
|
|
34
32
|
if (propsStereoid[i].isArray) {
|
|
35
|
-
let arrIndex =
|
|
33
|
+
let arrIndex = propsStereoid[i].arrIndex?.split(/\[(\w+)\]/g)?.filter(index => index !== '');
|
|
36
34
|
objCopy = objCopy[propsStereoid[i].prop];
|
|
37
35
|
arrIndex.forEach((index, i) => {
|
|
38
36
|
objCopy = objCopy[index];
|
|
@@ -42,7 +40,7 @@ class MapperFactory {
|
|
|
42
40
|
objCopy = objCopy[propsStereoid[i].prop];
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
|
-
if (metaProp
|
|
43
|
+
if (metaProp?.transformer) {
|
|
46
44
|
this[metaKey] = metaProp.transformer(objCopy);
|
|
47
45
|
}
|
|
48
46
|
else {
|
|
@@ -50,7 +48,7 @@ class MapperFactory {
|
|
|
50
48
|
}
|
|
51
49
|
}
|
|
52
50
|
else {
|
|
53
|
-
let metaKey = metadataList && Object.keys(metadataList).find(metadata =>
|
|
51
|
+
let metaKey = metadataList && Object.keys(metadataList).find(metadata => metadataList[metadata]?.src == propertyName);
|
|
54
52
|
if (metaKey) {
|
|
55
53
|
const src = metadataList[metaKey].src || propertyName;
|
|
56
54
|
if (metadataList[metaKey].transformer) {
|
|
@@ -61,7 +59,7 @@ class MapperFactory {
|
|
|
61
59
|
}
|
|
62
60
|
}
|
|
63
61
|
else {
|
|
64
|
-
if (
|
|
62
|
+
if (metadataList[propertyName]?.transformer) {
|
|
65
63
|
this[propertyName] = metadataList[propertyName].transformer(object[propertyName]);
|
|
66
64
|
}
|
|
67
65
|
else {
|
|
@@ -72,7 +70,7 @@ class MapperFactory {
|
|
|
72
70
|
});
|
|
73
71
|
}
|
|
74
72
|
else {
|
|
75
|
-
let metaKey = metadataList && Object.keys(metadataList).find(metadata =>
|
|
73
|
+
let metaKey = metadataList && Object.keys(metadataList).find(metadata => metadataList[metadata]?.src == propertyName);
|
|
76
74
|
if (metaKey) {
|
|
77
75
|
const src = metadataList[metaKey].src || propertyName;
|
|
78
76
|
if (metadataList[metaKey].transformer) {
|
|
@@ -83,7 +81,7 @@ class MapperFactory {
|
|
|
83
81
|
}
|
|
84
82
|
}
|
|
85
83
|
else {
|
|
86
|
-
if (
|
|
84
|
+
if (metadataList[propertyName]?.transformer) {
|
|
87
85
|
this[propertyName] = metadataList[propertyName].transformer(object[propertyName]);
|
|
88
86
|
}
|
|
89
87
|
else {
|
|
@@ -102,7 +100,6 @@ class MapperFactory {
|
|
|
102
100
|
const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
|
|
103
101
|
let obj = {};
|
|
104
102
|
Object.keys(this).forEach(propertyName => {
|
|
105
|
-
var _a, _b, _c, _d;
|
|
106
103
|
if (Object.keys(metadataList).some(prop => prop == propertyName)) {
|
|
107
104
|
const src = metadataList[propertyName].src || propertyName;
|
|
108
105
|
if (src.includes('.')) {
|
|
@@ -120,7 +117,7 @@ class MapperFactory {
|
|
|
120
117
|
let lastIndex;
|
|
121
118
|
for (i = 0; i < propsStereoid.length; i++) {
|
|
122
119
|
if (propsStereoid[i].isArray) {
|
|
123
|
-
let arrIndex =
|
|
120
|
+
let arrIndex = propsStereoid[i].arrIndex?.split(/\[(\w+)\]/g)?.filter(index => index !== '');
|
|
124
121
|
objCopy[propsStereoid[i].prop] = objCopy[propsStereoid[i].prop] || [];
|
|
125
122
|
objCopy = objCopy[propsStereoid[i].prop];
|
|
126
123
|
arrIndex.forEach((index, i) => {
|
|
@@ -143,11 +140,11 @@ class MapperFactory {
|
|
|
143
140
|
objCopy[lastIndex] = metadataList[propertyName].reverser ?
|
|
144
141
|
metadataList[propertyName].reverser(this[propertyName])
|
|
145
142
|
: this[propertyName].map(item => {
|
|
146
|
-
return
|
|
143
|
+
return item?.toMap ? item.toMap() : item;
|
|
147
144
|
});
|
|
148
145
|
}
|
|
149
146
|
else if (metadataList[propertyName].toMap) {
|
|
150
|
-
objCopy[lastIndex] =
|
|
147
|
+
objCopy[lastIndex] = this[propertyName]?.toMap();
|
|
151
148
|
}
|
|
152
149
|
else {
|
|
153
150
|
objCopy[lastIndex] = metadataList[propertyName].reverser ? metadataList[propertyName].reverser(this[propertyName]) : this[propertyName];
|
|
@@ -156,19 +153,19 @@ class MapperFactory {
|
|
|
156
153
|
else {
|
|
157
154
|
if (Array.isArray(this[propertyName])) {
|
|
158
155
|
obj[src] = this[propertyName].map(item => {
|
|
159
|
-
return
|
|
156
|
+
return item?.toMap ? item.toMap() : item;
|
|
160
157
|
});
|
|
161
158
|
}
|
|
162
159
|
else if (metadataList[propertyName].toMap) {
|
|
163
|
-
obj[src] =
|
|
160
|
+
obj[src] = this[propertyName]?.toMap();
|
|
164
161
|
}
|
|
165
162
|
else {
|
|
166
|
-
obj[src] = this[propertyName];
|
|
163
|
+
obj[src] = metadataList[propertyName].reverser ? metadataList[propertyName].reverser(this[propertyName]) : this[propertyName];
|
|
167
164
|
}
|
|
168
165
|
}
|
|
169
166
|
}
|
|
170
167
|
else {
|
|
171
|
-
obj[propertyName] = this[propertyName];
|
|
168
|
+
obj[propertyName] = metadataList[propertyName].reverser ? metadataList[propertyName].reverser(this[propertyName]) : this[propertyName];
|
|
172
169
|
}
|
|
173
170
|
});
|
|
174
171
|
return obj;
|