mapper-factory 1.0.35 → 1.0.37
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/example.js +1 -16
- package/dist/mapper.js +65 -66
- package/package.json +1 -1
package/dist/example.js
CHANGED
|
@@ -36,14 +36,6 @@ __decorate([
|
|
|
36
36
|
}),
|
|
37
37
|
__metadata("design:type", Array)
|
|
38
38
|
], History.prototype, "daysActive", void 0);
|
|
39
|
-
__decorate([
|
|
40
|
-
(0, field_decorator_1.MapField)({
|
|
41
|
-
initialize: true,
|
|
42
|
-
transformer: (flBlockNar, obj) => obj.flBlockNar == '1',
|
|
43
|
-
reverser: (flBlockNar) => flBlockNar ? { flBlockNar: '1' } : { flBlockNar: '0' },
|
|
44
|
-
}),
|
|
45
|
-
__metadata("design:type", Boolean)
|
|
46
|
-
], History.prototype, "flBlockNar", void 0);
|
|
47
39
|
__decorate([
|
|
48
40
|
(0, field_decorator_1.MapField)({
|
|
49
41
|
src: "test.concatenation"
|
|
@@ -132,7 +124,7 @@ console.log(u);
|
|
|
132
124
|
console.log(u.toMap());
|
|
133
125
|
//TEST ref
|
|
134
126
|
console.log("\nTEST REF");
|
|
135
|
-
let hTest = new History({ monday: "0", tuesday: "1", control: "control"
|
|
127
|
+
let hTest = new History({ monday: "0", tuesday: "1", control: "control" });
|
|
136
128
|
console.log(hTest);
|
|
137
129
|
hTest.daysActive = ['1', '0'];
|
|
138
130
|
console.log(hTest.toMap());
|
|
@@ -141,10 +133,3 @@ console.log("\nTEST CONCAT W POINT");
|
|
|
141
133
|
let hTest2 = new History({ test: { concatenation: "resolve " }, control: "control" });
|
|
142
134
|
console.log(hTest2);
|
|
143
135
|
console.log(hTest2.toMap());
|
|
144
|
-
//TEST constructor
|
|
145
|
-
console.log("\nTEST constructor");
|
|
146
|
-
let constructorTest = new History({ test: { concatenation: "resolve " }, control: "control", testCase: "testCase" });
|
|
147
|
-
constructorTest.objToModel({
|
|
148
|
-
asd: 'asd'
|
|
149
|
-
});
|
|
150
|
-
console.log(constructorTest);
|
package/dist/mapper.js
CHANGED
|
@@ -11,83 +11,80 @@ class MapperFactory {
|
|
|
11
11
|
constructor(object) {
|
|
12
12
|
const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
|
|
13
13
|
object && Object.keys(object).forEach(propertyName => {
|
|
14
|
-
|
|
15
|
-
if (
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
let
|
|
20
|
-
|
|
21
|
-
let
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
objCopy = objCopy[
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
else {
|
|
41
|
-
objCopy = objCopy[propsStereoid[i].prop];
|
|
42
|
-
}
|
|
14
|
+
let metaKeys = metadataList && Object.keys(metadataList).filter(metadata => metadataList[metadata]?.src?.split('.')?.includes(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];
|
|
43
40
|
}
|
|
44
|
-
|
|
45
|
-
|
|
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);
|
|
46
55
|
}
|
|
47
56
|
else {
|
|
48
|
-
this[metaKey] =
|
|
57
|
+
this[metaKey] = object[src];
|
|
49
58
|
}
|
|
50
59
|
}
|
|
51
60
|
else {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const src = metadataList[metaKey].src || propertyName;
|
|
55
|
-
if (metadataList[metaKey].transformer) {
|
|
56
|
-
this[metaKey] = metadataList[metaKey].transformer(object[src], object);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
this[metaKey] = object[src];
|
|
60
|
-
}
|
|
61
|
+
if (metadataList[propertyName]?.transformer) {
|
|
62
|
+
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
61
63
|
}
|
|
62
64
|
else {
|
|
63
|
-
|
|
64
|
-
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
this[propertyName] = object[propertyName];
|
|
68
|
-
}
|
|
65
|
+
this[propertyName] = object[propertyName];
|
|
69
66
|
}
|
|
70
67
|
}
|
|
71
|
-
}
|
|
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
|
+
}
|
|
72
81
|
}
|
|
73
82
|
else {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const src = metadataList[metaKey].src || propertyName;
|
|
77
|
-
if (metadataList[metaKey].transformer) {
|
|
78
|
-
this[metaKey] = metadataList[metaKey].transformer(object[src], object);
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
this[metaKey] = object[src];
|
|
82
|
-
}
|
|
83
|
+
if (metadataList && metadataList[propertyName]?.transformer) {
|
|
84
|
+
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
83
85
|
}
|
|
84
86
|
else {
|
|
85
|
-
|
|
86
|
-
this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this[propertyName] = object[propertyName];
|
|
90
|
-
}
|
|
87
|
+
this[propertyName] = object[propertyName];
|
|
91
88
|
}
|
|
92
89
|
}
|
|
93
90
|
}
|
|
@@ -108,8 +105,7 @@ class MapperFactory {
|
|
|
108
105
|
const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
|
|
109
106
|
let obj = {};
|
|
110
107
|
this && Object.keys(this).forEach(propertyName => {
|
|
111
|
-
|
|
112
|
-
if (properties.includes(propertyName) && metadataList && Object.keys(metadataList).some(prop => prop == propertyName)) {
|
|
108
|
+
if (metadataList && Object.keys(metadataList).some(prop => prop == propertyName)) {
|
|
113
109
|
const src = metadataList[propertyName].src || propertyName;
|
|
114
110
|
if (src.includes('.')) {
|
|
115
111
|
let props = src.split('.');
|
|
@@ -173,11 +169,14 @@ class MapperFactory {
|
|
|
173
169
|
return item?.toMap ? item.toMap() : item;
|
|
174
170
|
});
|
|
175
171
|
}
|
|
172
|
+
else if (metadataList[propertyName]?.reverser) {
|
|
173
|
+
obj[src] = metadataList[propertyName].reverser(this[propertyName], this);
|
|
174
|
+
}
|
|
176
175
|
else if (this[propertyName]?.toMap) {
|
|
177
176
|
obj[src] = this[propertyName]?.toMap();
|
|
178
177
|
}
|
|
179
178
|
else {
|
|
180
|
-
obj[src] =
|
|
179
|
+
obj[src] = this[propertyName];
|
|
181
180
|
}
|
|
182
181
|
}
|
|
183
182
|
}
|