mapper-factory 3.1.3 → 3.2.0

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.
@@ -1,46 +0,0 @@
1
- import { ClassType } from "./types";
2
- export declare class MapperFactory {
3
- /**
4
- * Constructor of the mapper.
5
- *
6
- * @param object object to be mapped considering metadata "src", "transformer" and "reverser"
7
- */
8
- constructor(object?: any);
9
- /**
10
- * Convert the instance of this class to JSON Object.
11
- *
12
- * @returns JSON object mapped considering metadata "src" and "reverser"
13
- */
14
- toMap(): any;
15
- /**
16
- * Convert a JSON Object to an instance of this class.
17
- *
18
- * @param obj JSON Object
19
- * @returns Instance of this class
20
- */
21
- objToModel(obj: Object): this;
22
- /**
23
- * Check if this instance is empty.
24
- *
25
- * @returns true or false
26
- */
27
- empty(): boolean;
28
- /**
29
- * GET property value from a string path.
30
- *
31
- * @param path String path
32
- * @returns Value of the property
33
- */
34
- get<T>(path: string): T;
35
- /**
36
- * SET property value from a string path.
37
- *
38
- * @param path String path
39
- * @param value Value of the property
40
- */
41
- set(path: string, value: any): void;
42
- }
43
- /**
44
- * @deprecated The method should not be used
45
- */
46
- export declare function MapperFactoryFun(baseClass?: ClassType): ClassType;
@@ -1,286 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MapperFactoryFun = exports.MapperFactory = void 0;
4
- const field_decorator_1 = require("./field.decorator");
5
- class MapperFactory {
6
- /**
7
- * Constructor of the mapper.
8
- *
9
- * @param object object to be mapped considering metadata "src", "transformer" and "reverser"
10
- */
11
- constructor(object) {
12
- const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
13
- object && Object.keys(object).forEach(propertyName => {
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];
40
- }
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);
55
- }
56
- else {
57
- this[metaKey] = object[src];
58
- }
59
- }
60
- else {
61
- if (metadataList[propertyName]?.transformer) {
62
- this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
63
- }
64
- else {
65
- this[propertyName] = object[propertyName];
66
- }
67
- }
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
- }
81
- }
82
- else {
83
- if (metadataList && metadataList[propertyName]?.transformer) {
84
- this[propertyName] = metadataList[propertyName].transformer(object[propertyName], object);
85
- }
86
- else {
87
- this[propertyName] = object[propertyName];
88
- }
89
- }
90
- }
91
- });
92
- //MAP CASE initialize = true
93
- metadataList && Object.keys(metadataList).forEach(metaName => {
94
- if (metadataList[metaName]?.initialize && metadataList[metaName]?.transformer) {
95
- this[metaName] = metadataList[metaName]?.transformer(null, object);
96
- }
97
- });
98
- }
99
- /**
100
- * Convert the instance of this class to JSON Object.
101
- *
102
- * @returns JSON object mapped considering metadata "src" and "reverser"
103
- */
104
- toMap() {
105
- const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
106
- let obj = {};
107
- this && Object.keys(this).forEach(propertyName => {
108
- if (metadataList && Object.keys(metadataList).some(prop => prop == propertyName)) {
109
- const src = metadataList[propertyName].src || propertyName;
110
- if (src.includes('.')) {
111
- let props = src.split('.');
112
- let propsStereoid = props.map(prop => {
113
- let index = prop.indexOf('[');
114
- return {
115
- prop: index > 0 ? prop.substring(0, index) : prop,
116
- isArray: prop.includes('[') && prop.includes(']'),
117
- arrIndex: prop.substring(index),
118
- };
119
- });
120
- let i;
121
- let objCopy = obj;
122
- let lastIndex;
123
- for (i = 0; i < propsStereoid?.length; i++) {
124
- if (propsStereoid[i].isArray) {
125
- let arrIndex = propsStereoid[i].arrIndex?.split(/\[(\w+)\]/g)?.filter(index => index !== '');
126
- objCopy[propsStereoid[i].prop] = objCopy[propsStereoid[i].prop] || [];
127
- objCopy = objCopy[propsStereoid[i].prop];
128
- arrIndex.forEach((index, i) => {
129
- objCopy[index] = objCopy[index] || (i == arrIndex.length - 1 ? {} : []);
130
- if (!(i == propsStereoid.length - 1))
131
- objCopy = objCopy[index];
132
- else
133
- lastIndex = index;
134
- });
135
- }
136
- else {
137
- objCopy[propsStereoid[i].prop] = objCopy[propsStereoid[i].prop] || {};
138
- if (!(i == propsStereoid?.length - 1))
139
- objCopy = objCopy[propsStereoid[i].prop];
140
- else
141
- lastIndex = propsStereoid[i].prop;
142
- }
143
- }
144
- if (Array.isArray(this[propertyName])) {
145
- objCopy[lastIndex] = metadataList[propertyName].reverser ?
146
- metadataList[propertyName].reverser(this[propertyName], this)
147
- : this[propertyName].map(item => {
148
- return item?.toMap ? item.toMap() : item;
149
- });
150
- }
151
- else if (metadataList[propertyName].toMap) {
152
- objCopy[lastIndex] = this[propertyName]?.toMap();
153
- }
154
- else {
155
- objCopy[lastIndex] = metadataList[propertyName].reverser ? metadataList[propertyName].reverser(this[propertyName], this) : this[propertyName];
156
- }
157
- }
158
- else {
159
- if (metadataList[propertyName]?.initialize && metadataList[propertyName]?.reverser) {
160
- const revObj = metadataList[propertyName]?.reverser(this[propertyName]);
161
- revObj && Object.keys(revObj).forEach(key => {
162
- if (revObj[key])
163
- obj[key] = revObj[key];
164
- });
165
- }
166
- else {
167
- if (Array.isArray(this[propertyName]) && !metadataList[propertyName]?.reverser) {
168
- obj[src] = this[propertyName].map(item => {
169
- return item?.toMap ? item.toMap() : item;
170
- });
171
- }
172
- else if (this[propertyName]?.toMap) {
173
- obj[src] = this[propertyName]?.toMap();
174
- }
175
- else {
176
- obj[src] = metadataList[propertyName]?.reverser ? metadataList[propertyName].reverser(this[propertyName], this) : this[propertyName];
177
- }
178
- }
179
- }
180
- }
181
- else {
182
- if (!obj[propertyName])
183
- obj[propertyName] = (metadataList && metadataList[propertyName]?.reverser) ? metadataList[propertyName].reverser(this[propertyName], this) : this[propertyName];
184
- }
185
- });
186
- return obj;
187
- }
188
- /**
189
- * Convert a JSON Object to an instance of this class.
190
- *
191
- * @param obj JSON Object
192
- * @returns Instance of this class
193
- */
194
- objToModel(obj) {
195
- const metadataList = (0, field_decorator_1.getMapFieldMetadataList)(this);
196
- obj && Object.keys(obj).forEach(propertyName => {
197
- if (metadataList && Object.keys(metadataList).some(prop => prop == propertyName)) {
198
- if (metadataList[propertyName].transformer) {
199
- if (Array.isArray(obj[propertyName])) {
200
- this[propertyName] = obj[propertyName].map(item => {
201
- return item;
202
- });
203
- }
204
- else {
205
- this[propertyName] = obj[propertyName];
206
- }
207
- }
208
- else {
209
- this[propertyName] = obj[propertyName];
210
- }
211
- }
212
- else {
213
- this[propertyName] = obj[propertyName];
214
- }
215
- });
216
- return this;
217
- }
218
- /**
219
- * Check if this instance is empty.
220
- *
221
- * @returns true or false
222
- */
223
- empty() {
224
- let check = true;
225
- this && Object.keys(this).forEach(propertyName => {
226
- if (this[propertyName] !== undefined && this[propertyName] !== null) {
227
- check = false;
228
- }
229
- });
230
- return check;
231
- }
232
- /**
233
- * GET property value from a string path.
234
- *
235
- * @param path String path
236
- * @returns Value of the property
237
- */
238
- get(path) {
239
- let pathReplaced = path.replace(/\[(\w+)\]/g, '.$1');
240
- let props = pathReplaced.split('.');
241
- let rtn;
242
- if (props?.length) {
243
- rtn = this[props[0]];
244
- for (let index in props) {
245
- if (+index > 0)
246
- rtn = rtn && rtn[props[index]];
247
- }
248
- }
249
- return rtn;
250
- }
251
- /**
252
- * SET property value from a string path.
253
- *
254
- * @param path String path
255
- * @param value Value of the property
256
- */
257
- set(path, value) {
258
- path = path.replace(/\[(\w+)\]/g, '.$1');
259
- let props = path.split('.');
260
- let obj = this;
261
- let i;
262
- for (i = 0; i < props?.length - 1; i++) {
263
- props?.[i] && (obj = obj?.[props?.[i]]);
264
- }
265
- props?.[i] && obj && (obj[props?.[i]] = value);
266
- }
267
- }
268
- exports.MapperFactory = MapperFactory;
269
- /**
270
- * @deprecated The method should not be used
271
- */
272
- function MapperFactoryFun(baseClass = Object) {
273
- class Mapper extends baseClass {
274
- /**
275
- * Constructor of the mapper.
276
- *
277
- * @param object object to be mapped considering metadata "src" and "transformer"
278
- * @param rest other optional parameters
279
- */
280
- constructor(object, ...rest) {
281
- super(...rest);
282
- }
283
- }
284
- return Mapper;
285
- }
286
- exports.MapperFactoryFun = MapperFactoryFun;
@@ -1,6 +0,0 @@
1
- export declare type ClassType<Class = any> = {
2
- new (...args: any[]): Class;
3
- };
4
- export declare type AnyFunction<A = any> = (...input: any[]) => A;
5
- export declare type AnyConstructor<A = Record<string, unknown>> = new (...input: any[]) => A;
6
- export declare type Mixin<T extends AnyFunction> = InstanceType<ReturnType<T>>;
package/dist/src/types.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });