mapper-factory 1.0.29 → 1.0.30
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/mapper.js +68 -69
- package/package.json +1 -1
package/dist/mapper.js
CHANGED
|
@@ -10,88 +10,87 @@ class MapperFactory {
|
|
|
10
10
|
*/
|
|
11
11
|
constructor(object) {
|
|
12
12
|
const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
|
|
13
|
-
object &&
|
|
14
|
-
Object.keys(
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
let
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
objCopy = objCopy[propsStereoid[i].prop];
|
|
41
|
-
}
|
|
13
|
+
object && Object.keys(object).forEach(propertyName => {
|
|
14
|
+
let metaKeys = metadataList && Object.keys(metadataList).filter(metadata => metadataList[metadata]?.src?.startsWith(propertyName) && metadataList[metadata]?.src != propertyName);
|
|
15
|
+
if (metaKeys?.length) {
|
|
16
|
+
metaKeys.forEach(metaKey => {
|
|
17
|
+
let metaProp = metadataList[metaKey];
|
|
18
|
+
if (metaProp) {
|
|
19
|
+
let props = metaProp.src?.split('.');
|
|
20
|
+
let propsStereoid = props.map(prop => {
|
|
21
|
+
let index = prop.indexOf('[');
|
|
22
|
+
return {
|
|
23
|
+
prop: index > 0 ? prop.substring(0, index) : prop,
|
|
24
|
+
isArray: prop.includes('[') && prop.includes(']'),
|
|
25
|
+
arrIndex: prop.substring(index),
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
let i;
|
|
29
|
+
let objCopy = { ...object };
|
|
30
|
+
for (i = 0; i < propsStereoid.length; i++) {
|
|
31
|
+
if (propsStereoid[i].isArray) {
|
|
32
|
+
let arrIndex = propsStereoid[i].arrIndex?.split(/\[(\w+)\]/g)?.filter(index => index !== '');
|
|
33
|
+
objCopy = objCopy[propsStereoid[i].prop];
|
|
34
|
+
arrIndex.forEach((index, i) => {
|
|
35
|
+
objCopy = objCopy[index];
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
objCopy = objCopy[propsStereoid[i].prop];
|
|
42
40
|
}
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
}
|
|
42
|
+
if (metaProp?.transformer) {
|
|
43
|
+
this[metaKey] = metaProp.transformer(objCopy, object);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
this[metaKey] = objCopy;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
let metaKey = metadataList && Object.keys(metadataList).find(metadata => metadataList[metadata]?.src == propertyName);
|
|
51
|
+
if (metaKey) {
|
|
52
|
+
const src = metadataList[metaKey].src || propertyName;
|
|
53
|
+
if (metadataList[metaKey].transformer) {
|
|
54
|
+
this[metaKey] = metadataList[metaKey].transformer(object[src], object);
|
|
45
55
|
}
|
|
46
56
|
else {
|
|
47
|
-
this[metaKey] =
|
|
57
|
+
this[metaKey] = object[src];
|
|
48
58
|
}
|
|
49
59
|
}
|
|
50
60
|
else {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const src = metadataList[metaKey].src || propertyName;
|
|
54
|
-
if (metadataList[metaKey].transformer) {
|
|
55
|
-
this[metaKey] = metadataList[metaKey].transformer(object[src], object);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
this[metaKey] = object[src];
|
|
59
|
-
}
|
|
61
|
+
if (metadataList[propertyName]?.transformer) {
|
|
62
|
+
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
60
63
|
}
|
|
61
64
|
else {
|
|
62
|
-
|
|
63
|
-
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
this[propertyName] = object[propertyName];
|
|
67
|
-
}
|
|
65
|
+
this[propertyName] = object[propertyName];
|
|
68
66
|
}
|
|
69
67
|
}
|
|
70
|
-
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
let metaKey = metadataList && Object.keys(metadataList).find(metadata => metadataList[metadata]?.src == propertyName);
|
|
73
|
+
if (metaKey) {
|
|
74
|
+
const src = metadataList[metaKey].src || propertyName;
|
|
75
|
+
if (metadataList[metaKey].transformer) {
|
|
76
|
+
this[metaKey] = metadataList[metaKey].transformer(object[src], object);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
this[metaKey] = object[src];
|
|
80
|
+
}
|
|
71
81
|
}
|
|
72
82
|
else {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const src = metadataList[metaKey].src || propertyName;
|
|
76
|
-
if (metadataList[metaKey].transformer) {
|
|
77
|
-
this[metaKey] = metadataList[metaKey].transformer(object[src], object);
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
this[metaKey] = object[src];
|
|
81
|
-
}
|
|
83
|
+
if (metadataList && metadataList[propertyName]?.transformer) {
|
|
84
|
+
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
82
85
|
}
|
|
83
86
|
else {
|
|
84
|
-
|
|
85
|
-
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
this[propertyName] = object[propertyName];
|
|
89
|
-
}
|
|
87
|
+
this[propertyName] = object[propertyName];
|
|
90
88
|
}
|
|
91
89
|
}
|
|
92
|
-
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
93
92
|
//MAP CASE initialize = true
|
|
94
|
-
Object.keys(metadataList).forEach(metaName => {
|
|
93
|
+
metadataList && Object.keys(metadataList).forEach(metaName => {
|
|
95
94
|
if (metadataList[metaName]?.initialize && metadataList[metaName]?.transformer) {
|
|
96
95
|
this[metaName] = metadataList[metaName]?.transformer(null, object);
|
|
97
96
|
}
|
|
@@ -105,7 +104,7 @@ class MapperFactory {
|
|
|
105
104
|
toMap() {
|
|
106
105
|
const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
|
|
107
106
|
let obj = {};
|
|
108
|
-
Object.keys(this).forEach(propertyName => {
|
|
107
|
+
this && Object.keys(this).forEach(propertyName => {
|
|
109
108
|
if (metadataList && Object.keys(metadataList).some(prop => prop == propertyName)) {
|
|
110
109
|
const src = metadataList[propertyName].src || propertyName;
|
|
111
110
|
if (src.includes('.')) {
|
|
@@ -159,7 +158,7 @@ class MapperFactory {
|
|
|
159
158
|
else {
|
|
160
159
|
if (metadataList[propertyName]?.initialize && metadataList[propertyName]?.reverser) {
|
|
161
160
|
const revObj = metadataList[propertyName]?.reverser(this[propertyName]);
|
|
162
|
-
Object.keys(revObj).forEach(key => {
|
|
161
|
+
revObj && Object.keys(revObj).forEach(key => {
|
|
163
162
|
obj[key] = revObj[key];
|
|
164
163
|
});
|
|
165
164
|
}
|
|
@@ -193,7 +192,7 @@ class MapperFactory {
|
|
|
193
192
|
*/
|
|
194
193
|
objToModel(obj) {
|
|
195
194
|
const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
|
|
196
|
-
Object.keys(obj).forEach(propertyName => {
|
|
195
|
+
obj && Object.keys(obj).forEach(propertyName => {
|
|
197
196
|
if (metadataList && Object.keys(metadataList).some(prop => prop == propertyName)) {
|
|
198
197
|
if (metadataList[propertyName].transformer) {
|
|
199
198
|
if (Array.isArray(obj[propertyName])) {
|
|
@@ -222,7 +221,7 @@ class MapperFactory {
|
|
|
222
221
|
*/
|
|
223
222
|
empty() {
|
|
224
223
|
let check = true;
|
|
225
|
-
Object.keys(this).forEach(propertyName => {
|
|
224
|
+
this && Object.keys(this).forEach(propertyName => {
|
|
226
225
|
if (this[propertyName] !== undefined && this[propertyName] !== null) {
|
|
227
226
|
check = false;
|
|
228
227
|
}
|