@sumaris-net/ngx-components 2.0.0-rc39 → 2.0.0-rc40

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.
@@ -35,7 +35,6 @@ EntityClasses.CLASSES_BY_NAME = new Map();
35
35
  export function EntityClass(opts) {
36
36
  // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
37
37
  return function (constructor) {
38
- var _a, _b;
39
38
  // Make sure the class extends Entity
40
39
  if (!environment.production) {
41
40
  const obj = new constructor();
@@ -43,61 +42,82 @@ export function EntityClass(opts) {
43
42
  throw new Error(`Class ${constructor.name} must extends <<Entity>> to be able to use @FromObject!`);
44
43
  }
45
44
  }
46
- const typename = opts?.typename || `${constructor.name}VO`;
47
- if (opts?.fromObjectReuseStrategy === 'clone') {
48
- const decoratedClass = (_a = class extends constructor {
49
- static fromObject(source, opts) {
50
- if (!source)
51
- return undefined;
52
- if (source instanceof decoratedClass)
53
- return source.clone(opts);
54
- const target = new decoratedClass();
55
- target.fromObject(source, opts);
56
- return target;
57
- }
58
- static asObject(source, opts) {
59
- if (!source)
60
- return undefined;
61
- if (source instanceof decoratedClass)
62
- return source.asObject(opts);
63
- return Object.assign({}, source);
64
- }
65
- },
66
- _a.TYPENAME = typename,
67
- _a);
68
- // Register the entity class
69
- EntityClasses.register(typename, decoratedClass);
70
- return decoratedClass;
71
- }
72
- const decoratedClass = (_b = class extends constructor {
73
- static fromObject(source, opts) {
45
+ const clazz = constructor;
46
+ const typename = opts.typename || `${constructor.name}VO`;
47
+ // Define static field TYPENAME
48
+ clazz.TYPENAME = typename;
49
+ // Define static fromObject()
50
+ if (!clazz.fromObject) {
51
+ if (opts.fromObjectReuseStrategy === 'clone') {
52
+ constructor.fromObject = function (source, opts) {
53
+ if (!source)
54
+ return undefined;
55
+ if (source instanceof constructor)
56
+ return source.clone(opts);
57
+ const target = new constructor();
58
+ target.fromObject(source, opts);
59
+ return target;
60
+ };
61
+ constructor.asObject = function (source, opts) {
74
62
  if (!source)
75
63
  return undefined;
76
- if (source instanceof decoratedClass) {
64
+ if (source instanceof constructor)
65
+ return source.asObject(opts);
66
+ return Object.assign({}, source);
67
+ };
68
+ }
69
+ else {
70
+ clazz.fromObject = function (source, opts) {
71
+ if (!source)
72
+ return undefined;
73
+ if (source instanceof constructor) {
77
74
  // DEBUG
78
75
  //console.debug('@EntityClass() fromObject() => will recycle existing object: ', source);
79
76
  return source;
80
77
  }
81
- const target = new decoratedClass();
78
+ const target = new constructor();
82
79
  target.fromObject(source, opts);
83
80
  return target;
84
- }
85
- static asObject(source, opts) {
81
+ };
82
+ clazz.asObject = function (source, opts) {
83
+ if (!source)
84
+ return undefined;
85
+ if (source instanceof constructor) {
86
+ return source.asObject(opts);
87
+ }
88
+ // DEBUG
89
+ //console.debug('@EntityClass() asObject() => will recycle existing object: ', source);
90
+ return source;
91
+ };
92
+ }
93
+ }
94
+ // Define static asObject()
95
+ if (!clazz.asObject) {
96
+ if (opts.fromObjectReuseStrategy === 'clone') {
97
+ clazz.asObject = function (source, opts) {
86
98
  if (!source)
87
99
  return undefined;
88
- if (source instanceof decoratedClass) {
100
+ if (source instanceof constructor)
101
+ return source.asObject(opts);
102
+ return Object.assign({}, source);
103
+ };
104
+ }
105
+ else {
106
+ clazz.asObject = function (source, opts) {
107
+ if (!source)
108
+ return undefined;
109
+ if (source instanceof constructor) {
89
110
  return source.asObject(opts);
90
111
  }
91
112
  // DEBUG
92
113
  //console.debug('@EntityClass() asObject() => will recycle existing object: ', source);
93
114
  return source;
94
- }
95
- },
96
- _b.TYPENAME = typename,
97
- _b);
115
+ };
116
+ }
117
+ }
98
118
  // Register the entity class
99
- EntityClasses.register(typename, decoratedClass);
100
- return decoratedClass;
119
+ EntityClasses.register(typename, constructor);
120
+ return constructor;
101
121
  };
102
122
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5LmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJdEQsTUFBTSxPQUFPLGFBQWE7SUFHeEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQixFQUFFLFdBQXdCO1FBQ3hELGdDQUFnQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLFFBQVE7UUFDUix3RUFBd0U7UUFFeEUsYUFBYTtRQUNiLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBc0IsVUFBa0I7UUFDaEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixHQUFHLFVBQVUsR0FBRyw2REFBNkQsQ0FBQyxDQUFDO1NBQzlIO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQXNCLEtBQVUsRUFBRSxJQUlsRDtRQUNDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDcEcsSUFBSSxDQUFDLFVBQVU7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLGlGQUFpRixDQUFDLENBQUM7UUFDcEgsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQVEsQ0FBQztRQUN6RCxJQUFJLE9BQU8sV0FBVyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7WUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsR0FBRyxVQUFVLEdBQUcsZ0hBQWdILENBQUMsQ0FBQztTQUN4TDtRQUNELE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFNLENBQUM7SUFDbEQsQ0FBQzs7QUFqQ00sNkJBQWUsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQztBQW9DMUQsK0RBQStEO0FBQy9ELE1BQU0sVUFBVSxXQUFXLENBQUMsSUFHM0I7SUFHQywrREFBK0Q7SUFDL0QsT0FBTyxVQUFpQyxXQUFjOztRQUVwRCxxQ0FBcUM7UUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUU7WUFDM0IsTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksTUFBTSxDQUFDLEVBQUU7Z0JBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxXQUFXLENBQUMsSUFBSSx5REFBeUQsQ0FBQyxDQUFDO2FBQ3JHO1NBQ0Y7UUFFRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEVBQUUsUUFBUSxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDO1FBRTNELElBQUksSUFBSSxFQUFFLHVCQUF1QixLQUFLLE9BQU8sRUFBRTtZQUM3QyxNQUFNLGNBQWMsU0FBRyxLQUFNLFNBQVEsV0FBVztvQkFFOUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFXLEVBQUUsSUFBVTt3QkFDdkMsSUFBSSxDQUFDLE1BQU07NEJBQUUsT0FBTyxTQUFTLENBQUM7d0JBQzlCLElBQUksTUFBTSxZQUFZLGNBQWM7NEJBQUUsT0FBUSxNQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBTSxDQUFDO3dCQUM5RSxNQUFNLE1BQU0sR0FBUSxJQUFJLGNBQWMsRUFBRSxDQUFDO3dCQUN6QyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFDaEMsT0FBTyxNQUFXLENBQUM7b0JBQ3JCLENBQUM7b0JBQ0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFXLEVBQUUsSUFBVTt3QkFDckMsSUFBSSxDQUFDLE1BQU07NEJBQUUsT0FBTyxTQUFTLENBQUM7d0JBQzlCLElBQUksTUFBTSxZQUFZLGNBQWM7NEJBQUUsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNuRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO29CQUNuQyxDQUFDO2lCQUNGO2dCQWJRLFdBQVEsR0FBRyxRQUFTO21CQWE1QixDQUFDO1lBRUYsNEJBQTRCO1lBQzVCLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBRWpELE9BQU8sY0FBYyxDQUFDO1NBQ3ZCO1FBRUQsTUFBTSxjQUFjLFNBQUcsS0FBTSxTQUFRLFdBQVc7Z0JBRTlDLE1BQU0sQ0FBQyxVQUFVLENBQUMsTUFBVyxFQUFFLElBQVU7b0JBQ3ZDLElBQUksQ0FBQyxNQUFNO3dCQUFFLE9BQU8sU0FBUyxDQUFDO29CQUM5QixJQUFJLE1BQU0sWUFBWSxjQUFjLEVBQUU7d0JBQ3BDLFFBQVE7d0JBQ1IseUZBQXlGO3dCQUN6RixPQUFPLE1BQVcsQ0FBQztxQkFDcEI7b0JBQ0QsTUFBTSxNQUFNLEdBQVEsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ2hDLE9BQU8sTUFBVyxDQUFDO2dCQUNyQixDQUFDO2dCQUNELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBVyxFQUFFLElBQVU7b0JBQ3JDLElBQUksQ0FBQyxNQUFNO3dCQUFFLE9BQU8sU0FBUyxDQUFDO29CQUM5QixJQUFJLE1BQU0sWUFBWSxjQUFjLEVBQUU7d0JBQ3BDLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDOUI7b0JBQ0QsUUFBUTtvQkFDUix1RkFBdUY7b0JBQ3ZGLE9BQU8sTUFBTSxDQUFDO2dCQUNoQixDQUFDO2FBQ0Y7WUFyQlEsV0FBUSxHQUFHLFFBQVM7ZUFxQjVCLENBQUM7UUFFRiw0QkFBNEI7UUFDNUIsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFFakQsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGVudmlyb25tZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5Lm1vZGVsJztcbmltcG9ydCB7IHJlbW92ZUVuZCB9IGZyb20gJy4uLy4uLy4uL3NoYXJlZC9mdW5jdGlvbnMnO1xuXG5kZWNsYXJlIHR5cGUgQ29uc3RydWN0b3IgPSBuZXcoLi4uYXJnczogYW55W10pID0+IGFueTtcblxuZXhwb3J0IGNsYXNzIEVudGl0eUNsYXNzZXMge1xuICBzdGF0aWMgQ0xBU1NFU19CWV9OQU1FID0gbmV3IE1hcDxzdHJpbmcsIENvbnN0cnVjdG9yPigpO1xuXG4gIHN0YXRpYyByZWdpc3Rlcih0eXBlbmFtZTogc3RyaW5nLCBlbnRpdHlDbGFzczogQ29uc3RydWN0b3IpIHtcbiAgICAvLyBDb252ZXJ0IHRvIGV4dHJhY3QgZW50aXR5TmFtZVxuICAgIGNvbnN0IGVudGl0eU5hbWUgPSByZW1vdmVFbmQodHlwZW5hbWUsICdWTycpO1xuICAgIC8vIERFQlVHXG4gICAgLy9jb25zb2xlLmRlYnVnKCdbZW50aXR5LWNsYXNzZXNdIERldGVjdGVkIGVudGl0eSBjbGFzcyAnICsgZW50aXR5TmFtZSk7XG5cbiAgICAvLyBBZGQgdG8gbWFwXG4gICAgRW50aXR5Q2xhc3Nlcy5DTEFTU0VTX0JZX05BTUUuc2V0KGVudGl0eU5hbWUsIGVudGl0eUNsYXNzKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQ8VCBleHRlbmRzIEVudGl0eTxUPj4oZW50aXR5TmFtZTogc3RyaW5nKTogQ29uc3RydWN0b3Ige1xuICAgIGNvbnN0IGVudGl0eUNsYXNzID0gRW50aXR5Q2xhc3Nlcy5DTEFTU0VTX0JZX05BTUUuZ2V0KGVudGl0eU5hbWUpO1xuICAgIGlmICghZW50aXR5Q2xhc3MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZvdW5kIGVudGl0eSBjbGFzcyBcXCcnICsgZW50aXR5TmFtZSArICdcXCcuIE1ha2Ugc3VyZSBpdCBleGlzdHMgYW5kIGhhcyB0aGUgQEVudGl0eUNsYXNzIGRlY29yYXRvci4nKTtcbiAgICB9XG4gICAgcmV0dXJuIGVudGl0eUNsYXNzO1xuICB9XG5cbiAgc3RhdGljIGZyb21PYmplY3Q8VCBleHRlbmRzIEVudGl0eTxUPj4odmFsdWU6IGFueSwgb3B0cz86IHtcbiAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgdHlwZW5hbWU/OiBzdHJpbmc7XG4gICAgZW50aXR5TmFtZT86IHN0cmluZztcbiAgfSk6IFQge1xuICAgIGlmICghdmFsdWUpIHJldHVybiB2YWx1ZTtcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gKG9wdHMgJiYgb3B0cy5lbnRpdHlOYW1lKSB8fCByZW1vdmVFbmQodmFsdWUuX190eXBlbmFtZSB8fCBvcHRzPy50eXBlbmFtZSwgJ1ZPJyk7XG4gICAgaWYgKCFlbnRpdHlOYW1lKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3Npbmcgb25lIG9mIFxcJ3ZhbHVlLl9fdHlwZW5hbWVcXCcsIFxcJ29wdHMuZW50aXR5TmFtZVxcJywgb3IgXFwnb3B0cy50eXBlbmFtZVxcJy4nKTtcbiAgICBjb25zdCBlbnRpdHlDbGFzcyA9IEVudGl0eUNsYXNzZXMuZ2V0KGVudGl0eU5hbWUpIGFzIGFueTtcbiAgICBpZiAodHlwZW9mIGVudGl0eUNsYXNzLmZyb21PYmplY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGZvdW5kIHRoZSBzdGF0aWMgZnVuY3Rpb24gXFwnJyArIGVudGl0eU5hbWUgKyAnLmZyb21PYmplY3QoKVxcJy4gTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gaGFzIGJlZW4gZGVjbGFyZWQgYW5kIHRoZSBlbnRpdHkgY2xhc3MgaGFzIHRoZSBARW50aXR5Q2xhc3MgZGVjb3JhdG9yJyk7XG4gICAgfVxuICAgIHJldHVybiBlbnRpdHlDbGFzcy5mcm9tT2JqZWN0KHZhbHVlLCBvcHRzKSBhcyBUO1xuICB9XG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIEVudGl0eUNsYXNzKG9wdHM6IHtcbiAgdHlwZW5hbWU6IHN0cmluZztcbiAgZnJvbU9iamVjdFJldXNlU3RyYXRlZ3k/OiAnZGVmYXVsdCcgfCAnY2xvbmUnO1xufSkge1xuXG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1hcnJvdy9wcmVmZXItYXJyb3ctZnVuY3Rpb25zXG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIENvbnN0cnVjdG9yPihjb25zdHJ1Y3RvcjogVCkge1xuXG4gICAgLy8gTWFrZSBzdXJlIHRoZSBjbGFzcyBleHRlbmRzIEVudGl0eVxuICAgIGlmICghZW52aXJvbm1lbnQucHJvZHVjdGlvbikge1xuICAgICAgY29uc3Qgb2JqID0gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBFbnRpdHkpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2xhc3MgJHtjb25zdHJ1Y3Rvci5uYW1lfSBtdXN0IGV4dGVuZHMgPDxFbnRpdHk+PiB0byBiZSBhYmxlIHRvIHVzZSBARnJvbU9iamVjdCFgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB0eXBlbmFtZSA9IG9wdHM/LnR5cGVuYW1lIHx8IGAke2NvbnN0cnVjdG9yLm5hbWV9Vk9gO1xuXG4gICAgaWYgKG9wdHM/LmZyb21PYmplY3RSZXVzZVN0cmF0ZWd5ID09PSAnY2xvbmUnKSB7XG4gICAgICBjb25zdCBkZWNvcmF0ZWRDbGFzcyA9IGNsYXNzIGV4dGVuZHMgY29uc3RydWN0b3Ige1xuICAgICAgICBzdGF0aWMgVFlQRU5BTUUgPSB0eXBlbmFtZTtcbiAgICAgICAgc3RhdGljIGZyb21PYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpOiBUIHtcbiAgICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgZGVjb3JhdGVkQ2xhc3MpIHJldHVybiAoc291cmNlIGFzIGFueSkuY2xvbmUob3B0cykgYXMgVDtcbiAgICAgICAgICBjb25zdCB0YXJnZXQ6IGFueSA9IG5ldyBkZWNvcmF0ZWRDbGFzcygpO1xuICAgICAgICAgIHRhcmdldC5mcm9tT2JqZWN0KHNvdXJjZSwgb3B0cyk7XG4gICAgICAgICAgcmV0dXJuIHRhcmdldCBhcyBUO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRpYyBhc09iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IGFueSk6IGFueSB7XG4gICAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIGRlY29yYXRlZENsYXNzKSByZXR1cm4gc291cmNlLmFzT2JqZWN0KG9wdHMpO1xuICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzb3VyY2UpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICAvLyBSZWdpc3RlciB0aGUgZW50aXR5IGNsYXNzXG4gICAgICBFbnRpdHlDbGFzc2VzLnJlZ2lzdGVyKHR5cGVuYW1lLCBkZWNvcmF0ZWRDbGFzcyk7XG5cbiAgICAgIHJldHVybiBkZWNvcmF0ZWRDbGFzcztcbiAgICB9XG5cbiAgICBjb25zdCBkZWNvcmF0ZWRDbGFzcyA9IGNsYXNzIGV4dGVuZHMgY29uc3RydWN0b3Ige1xuICAgICAgc3RhdGljIFRZUEVOQU1FID0gdHlwZW5hbWU7XG4gICAgICBzdGF0aWMgZnJvbU9iamVjdChzb3VyY2U6IGFueSwgb3B0cz86IGFueSk6IFQge1xuICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIGRlY29yYXRlZENsYXNzKSB7XG4gICAgICAgICAgLy8gREVCVUdcbiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0BFbnRpdHlDbGFzcygpIGZyb21PYmplY3QoKSA9PiB3aWxsIHJlY3ljbGUgZXhpc3Rpbmcgb2JqZWN0OiAnLCBzb3VyY2UpO1xuICAgICAgICAgIHJldHVybiBzb3VyY2UgYXMgVDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0YXJnZXQ6IGFueSA9IG5ldyBkZWNvcmF0ZWRDbGFzcygpO1xuICAgICAgICB0YXJnZXQuZnJvbU9iamVjdChzb3VyY2UsIG9wdHMpO1xuICAgICAgICByZXR1cm4gdGFyZ2V0IGFzIFQ7XG4gICAgICB9XG4gICAgICBzdGF0aWMgYXNPYmplY3Qoc291cmNlOiBhbnksIG9wdHM/OiBhbnkpOiBhbnkge1xuICAgICAgICBpZiAoIXNvdXJjZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIGRlY29yYXRlZENsYXNzKSB7XG4gICAgICAgICAgcmV0dXJuIHNvdXJjZS5hc09iamVjdChvcHRzKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBERUJVR1xuICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0BFbnRpdHlDbGFzcygpIGFzT2JqZWN0KCkgPT4gd2lsbCByZWN5Y2xlIGV4aXN0aW5nIG9iamVjdDogJywgc291cmNlKTtcbiAgICAgICAgcmV0dXJuIHNvdXJjZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gUmVnaXN0ZXIgdGhlIGVudGl0eSBjbGFzc1xuICAgIEVudGl0eUNsYXNzZXMucmVnaXN0ZXIodHlwZW5hbWUsIGRlY29yYXRlZENsYXNzKTtcblxuICAgIHJldHVybiBkZWNvcmF0ZWRDbGFzcztcbiAgfTtcbn1cbiJdfQ==
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmRlY29yYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL2NvcmUvc2VydmljZXMvbW9kZWwvZW50aXR5LmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJdEQsTUFBTSxPQUFPLGFBQWE7SUFHeEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFnQixFQUFFLFdBQXdCO1FBQ3hELGdDQUFnQztRQUNoQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzdDLFFBQVE7UUFDUix3RUFBd0U7UUFFeEUsYUFBYTtRQUNiLGFBQWEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBc0IsVUFBa0I7UUFDaEQsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixHQUFHLFVBQVUsR0FBRyw2REFBNkQsQ0FBQyxDQUFDO1NBQzlIO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELE1BQU0sQ0FBQyxVQUFVLENBQXNCLEtBQVUsRUFBRSxJQUlsRDtRQUNDLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDekIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJ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QU8sV0FBVyxDQUFDO0lBQ3JCLENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbnZpcm9ubWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Vudmlyb25tZW50cy9lbnZpcm9ubWVudCc7XG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL2VudGl0eS5tb2RlbCc7XG5pbXBvcnQgeyByZW1vdmVFbmQgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvZnVuY3Rpb25zJztcblxuZGVjbGFyZSB0eXBlIENvbnN0cnVjdG9yID0gbmV3KC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBFbnRpdHlDbGFzc2VzIHtcbiAgc3RhdGljIENMQVNTRVNfQllfTkFNRSA9IG5ldyBNYXA8c3RyaW5nLCBDb25zdHJ1Y3Rvcj4oKTtcblxuICBzdGF0aWMgcmVnaXN0ZXIodHlwZW5hbWU6IHN0cmluZywgZW50aXR5Q2xhc3M6IENvbnN0cnVjdG9yKSB7XG4gICAgLy8gQ29udmVydCB0byBleHRyYWN0IGVudGl0eU5hbWVcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gcmVtb3ZlRW5kKHR5cGVuYW1lLCAnVk8nKTtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZygnW2VudGl0eS1jbGFzc2VzXSBEZXRlY3RlZCBlbnRpdHkgY2xhc3MgJyArIGVudGl0eU5hbWUpO1xuXG4gICAgLy8gQWRkIHRvIG1hcFxuICAgIEVudGl0eUNsYXNzZXMuQ0xBU1NFU19CWV9OQU1FLnNldChlbnRpdHlOYW1lLCBlbnRpdHlDbGFzcyk7XG4gIH1cblxuICBzdGF0aWMgZ2V0PFQgZXh0ZW5kcyBFbnRpdHk8VD4+KGVudGl0eU5hbWU6IHN0cmluZyk6IENvbnN0cnVjdG9yIHtcbiAgICBjb25zdCBlbnRpdHlDbGFzcyA9IEVudGl0eUNsYXNzZXMuQ0xBU1NFU19CWV9OQU1FLmdldChlbnRpdHlOYW1lKTtcbiAgICBpZiAoIWVudGl0eUNsYXNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmb3VuZCBlbnRpdHkgY2xhc3MgXFwnJyArIGVudGl0eU5hbWUgKyAnXFwnLiBNYWtlIHN1cmUgaXQgZXhpc3RzIGFuZCBoYXMgdGhlIEBFbnRpdHlDbGFzcyBkZWNvcmF0b3IuJyk7XG4gICAgfVxuICAgIHJldHVybiBlbnRpdHlDbGFzcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tT2JqZWN0PFQgZXh0ZW5kcyBFbnRpdHk8VD4+KHZhbHVlOiBhbnksIG9wdHM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgIHR5cGVuYW1lPzogc3RyaW5nO1xuICAgIGVudGl0eU5hbWU/OiBzdHJpbmc7XG4gIH0pOiBUIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XG4gICAgY29uc3QgZW50aXR5TmFtZSA9IChvcHRzICYmIG9wdHMuZW50aXR5TmFtZSkgfHwgcmVtb3ZlRW5kKHZhbHVlLl9fdHlwZW5hbWUgfHwgb3B0cz8udHlwZW5hbWUsICdWTycpO1xuICAgIGlmICghZW50aXR5TmFtZSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIG9uZSBvZiBcXCd2YWx1ZS5fX3R5cGVuYW1lXFwnLCBcXCdvcHRzLmVudGl0eU5hbWVcXCcsIG9yIFxcJ29wdHMudHlwZW5hbWVcXCcuJyk7XG4gICAgY29uc3QgZW50aXR5Q2xhc3MgPSBFbnRpdHlDbGFzc2VzLmdldChlbnRpdHlOYW1lKSBhcyBhbnk7XG4gICAgaWYgKHR5cGVvZiBlbnRpdHlDbGFzcy5mcm9tT2JqZWN0ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmb3VuZCB0aGUgc3RhdGljIGZ1bmN0aW9uIFxcJycgKyBlbnRpdHlOYW1lICsgJy5mcm9tT2JqZWN0KClcXCcuIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGRlY2xhcmVkIGFuZCB0aGUgZW50aXR5IGNsYXNzIGhhcyB0aGUgQEVudGl0eUNsYXNzIGRlY29yYXRvcicpO1xuICAgIH1cbiAgICByZXR1cm4gZW50aXR5Q2xhc3MuZnJvbU9iamVjdCh2YWx1ZSwgb3B0cykgYXMgVDtcbiAgfVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWFycm93L3ByZWZlci1hcnJvdy1mdW5jdGlvbnNcbmV4cG9ydCBmdW5jdGlvbiBFbnRpdHlDbGFzcyhvcHRzOiB7XG4gIHR5cGVuYW1lOiBzdHJpbmc7XG4gIGZyb21PYmplY3RSZXVzZVN0cmF0ZWd5PzogJ2RlZmF1bHQnIHwgJ2Nsb25lJztcbn0pIHtcblxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItYXJyb3cvcHJlZmVyLWFycm93LWZ1bmN0aW9uc1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oY29uc3RydWN0b3I6IFR8YW55KSB7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGNsYXNzIGV4dGVuZHMgRW50aXR5XG4gICAgaWYgKCFlbnZpcm9ubWVudC5wcm9kdWN0aW9uKSB7XG4gICAgICBjb25zdCBvYmogPSBuZXcgY29uc3RydWN0b3IoKTtcbiAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIEVudGl0eSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDbGFzcyAke2NvbnN0cnVjdG9yLm5hbWV9IG11c3QgZXh0ZW5kcyA8PEVudGl0eT4+IHRvIGJlIGFibGUgdG8gdXNlIEBGcm9tT2JqZWN0IWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNsYXp6ID0gKGNvbnN0cnVjdG9yIGFzIGFueSlcbiAgICBjb25zdCB0eXBlbmFtZSA9IG9wdHMudHlwZW5hbWUgfHwgYCR7Y29uc3RydWN0b3IubmFtZX1WT2A7XG5cbiAgICAvLyBEZWZpbmUgc3RhdGljIGZpZWxkIFRZUEVOQU1FXG4gICAgY2xhenouVFlQRU5BTUUgPSB0eXBlbmFtZTtcblxuICAgIC8vIERlZmluZSBzdGF0aWMgZnJvbU9iamVjdCgpXG4gICAgaWYgKCFjbGF6ei5mcm9tT2JqZWN0KSB7XG4gICAgICBpZiAob3B0cy5mcm9tT2JqZWN0UmV1c2VTdHJhdGVneSA9PT0gJ2Nsb25lJykge1xuXG4gICAgICAgIChjb25zdHJ1Y3RvciBhcyBhbnkpLmZyb21PYmplY3QgPSBmdW5jdGlvbihzb3VyY2U6IGFueSwgb3B0cz86IGFueSk6IFQge1xuICAgICAgICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvcikgcmV0dXJuIChzb3VyY2UgYXMgYW55KS5jbG9uZShvcHRzKSBhcyBUO1xuICAgICAgICAgIGNvbnN0IHRhcmdldDogYW55ID0gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgICAgICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlLCBvcHRzKTtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0IGFzIFQ7XG4gICAgICAgIH07XG4gICAgICAgIChjb25zdHJ1Y3RvciBhcyBhbnkpLmFzT2JqZWN0ID0gZnVuY3Rpb24oc291cmNlOiBhbnksIG9wdHM/OiBhbnkpOiBhbnkge1xuICAgICAgICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBjb25zdHJ1Y3RvcikgcmV0dXJuIHNvdXJjZS5hc09iamVjdChvcHRzKTtcbiAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgc291cmNlKTtcbiAgICAgICAgfTtcblxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNsYXp6LmZyb21PYmplY3QgPSBmdW5jdGlvbihzb3VyY2U6IGFueSwgb3B0cz86IGFueSk6IFQge1xuICAgICAgICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgLy8gREVCVUdcbiAgICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnQEVudGl0eUNsYXNzKCkgZnJvbU9iamVjdCgpID0+IHdpbGwgcmVjeWNsZSBleGlzdGluZyBvYmplY3Q6ICcsIHNvdXJjZSk7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlIGFzIFQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHRhcmdldDogYW55ID0gbmV3IGNvbnN0cnVjdG9yKCk7XG4gICAgICAgICAgdGFyZ2V0LmZyb21PYmplY3Qoc291cmNlLCBvcHRzKTtcbiAgICAgICAgICByZXR1cm4gdGFyZ2V0IGFzIFQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgY2xhenouYXNPYmplY3QgPSBmdW5jdGlvbihzb3VyY2U6IGFueSwgb3B0cz86IGFueSk6IGFueSB7XG4gICAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gc291cmNlLmFzT2JqZWN0KG9wdHMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBERUJVR1xuICAgICAgICAgIC8vY29uc29sZS5kZWJ1ZygnQEVudGl0eUNsYXNzKCkgYXNPYmplY3QoKSA9PiB3aWxsIHJlY3ljbGUgZXhpc3Rpbmcgb2JqZWN0OiAnLCBzb3VyY2UpO1xuICAgICAgICAgIHJldHVybiBzb3VyY2U7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHN0YXRpYyBhc09iamVjdCgpXG4gICAgaWYgKCFjbGF6ei5hc09iamVjdCkge1xuICAgICAgaWYgKG9wdHMuZnJvbU9iamVjdFJldXNlU3RyYXRlZ3kgPT09ICdjbG9uZScpIHtcbiAgICAgICAgY2xhenouYXNPYmplY3QgPSBmdW5jdGlvbihzb3VyY2U6IGFueSwgb3B0cz86IGFueSk6IGFueSB7XG4gICAgICAgICAgaWYgKCFzb3VyY2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIGNvbnN0cnVjdG9yKSByZXR1cm4gc291cmNlLmFzT2JqZWN0KG9wdHMpO1xuICAgICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBzb3VyY2UpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNsYXp6LmFzT2JqZWN0ID0gZnVuY3Rpb24oc291cmNlOiBhbnksIG9wdHM/OiBhbnkpOiBhbnkge1xuICAgICAgICAgIGlmICghc291cmNlKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBjb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIHNvdXJjZS5hc09iamVjdChvcHRzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gREVCVUdcbiAgICAgICAgICAvL2NvbnNvbGUuZGVidWcoJ0BFbnRpdHlDbGFzcygpIGFzT2JqZWN0KCkgPT4gd2lsbCByZWN5Y2xlIGV4aXN0aW5nIG9iamVjdDogJywgc291cmNlKTtcbiAgICAgICAgICByZXR1cm4gc291cmNlO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZWdpc3RlciB0aGUgZW50aXR5IGNsYXNzXG4gICAgRW50aXR5Q2xhc3Nlcy5yZWdpc3Rlcih0eXBlbmFtZSwgY29uc3RydWN0b3IpO1xuXG4gICAgcmV0dXJuIGNvbnN0cnVjdG9yO1xuICB9O1xufVxuIl19
@@ -11219,7 +11219,6 @@ EntityClasses.CLASSES_BY_NAME = new Map();
11219
11219
  function EntityClass(opts) {
11220
11220
  // eslint-disable-next-line prefer-arrow/prefer-arrow-functions
11221
11221
  return function (constructor) {
11222
- var _a, _b;
11223
11222
  // Make sure the class extends Entity
11224
11223
  if (!environment.production) {
11225
11224
  const obj = new constructor();
@@ -11227,61 +11226,82 @@ function EntityClass(opts) {
11227
11226
  throw new Error(`Class ${constructor.name} must extends <<Entity>> to be able to use @FromObject!`);
11228
11227
  }
11229
11228
  }
11230
- const typename = (opts === null || opts === void 0 ? void 0 : opts.typename) || `${constructor.name}VO`;
11231
- if ((opts === null || opts === void 0 ? void 0 : opts.fromObjectReuseStrategy) === 'clone') {
11232
- const decoratedClass = (_a = class extends constructor {
11233
- static fromObject(source, opts) {
11229
+ const clazz = constructor;
11230
+ const typename = opts.typename || `${constructor.name}VO`;
11231
+ // Define static field TYPENAME
11232
+ clazz.TYPENAME = typename;
11233
+ // Define static fromObject()
11234
+ if (!clazz.fromObject) {
11235
+ if (opts.fromObjectReuseStrategy === 'clone') {
11236
+ constructor.fromObject = function (source, opts) {
11234
11237
  if (!source)
11235
11238
  return undefined;
11236
- if (source instanceof decoratedClass)
11239
+ if (source instanceof constructor)
11237
11240
  return source.clone(opts);
11238
- const target = new decoratedClass();
11241
+ const target = new constructor();
11239
11242
  target.fromObject(source, opts);
11240
11243
  return target;
11241
- }
11242
- static asObject(source, opts) {
11244
+ };
11245
+ constructor.asObject = function (source, opts) {
11243
11246
  if (!source)
11244
11247
  return undefined;
11245
- if (source instanceof decoratedClass)
11248
+ if (source instanceof constructor)
11246
11249
  return source.asObject(opts);
11247
11250
  return Object.assign({}, source);
11248
- }
11249
- },
11250
- _a.TYPENAME = typename,
11251
- _a);
11252
- // Register the entity class
11253
- EntityClasses.register(typename, decoratedClass);
11254
- return decoratedClass;
11255
- }
11256
- const decoratedClass = (_b = class extends constructor {
11257
- static fromObject(source, opts) {
11258
- if (!source)
11259
- return undefined;
11260
- if (source instanceof decoratedClass) {
11251
+ };
11252
+ }
11253
+ else {
11254
+ clazz.fromObject = function (source, opts) {
11255
+ if (!source)
11256
+ return undefined;
11257
+ if (source instanceof constructor) {
11258
+ // DEBUG
11259
+ //console.debug('@EntityClass() fromObject() => will recycle existing object: ', source);
11260
+ return source;
11261
+ }
11262
+ const target = new constructor();
11263
+ target.fromObject(source, opts);
11264
+ return target;
11265
+ };
11266
+ clazz.asObject = function (source, opts) {
11267
+ if (!source)
11268
+ return undefined;
11269
+ if (source instanceof constructor) {
11270
+ return source.asObject(opts);
11271
+ }
11261
11272
  // DEBUG
11262
- //console.debug('@EntityClass() fromObject() => will recycle existing object: ', source);
11273
+ //console.debug('@EntityClass() asObject() => will recycle existing object: ', source);
11263
11274
  return source;
11264
- }
11265
- const target = new decoratedClass();
11266
- target.fromObject(source, opts);
11267
- return target;
11275
+ };
11268
11276
  }
11269
- static asObject(source, opts) {
11270
- if (!source)
11271
- return undefined;
11272
- if (source instanceof decoratedClass) {
11273
- return source.asObject(opts);
11274
- }
11275
- // DEBUG
11276
- //console.debug('@EntityClass() asObject() => will recycle existing object: ', source);
11277
- return source;
11277
+ }
11278
+ // Define static asObject()
11279
+ if (!clazz.asObject) {
11280
+ if (opts.fromObjectReuseStrategy === 'clone') {
11281
+ clazz.asObject = function (source, opts) {
11282
+ if (!source)
11283
+ return undefined;
11284
+ if (source instanceof constructor)
11285
+ return source.asObject(opts);
11286
+ return Object.assign({}, source);
11287
+ };
11278
11288
  }
11279
- },
11280
- _b.TYPENAME = typename,
11281
- _b);
11289
+ else {
11290
+ clazz.asObject = function (source, opts) {
11291
+ if (!source)
11292
+ return undefined;
11293
+ if (source instanceof constructor) {
11294
+ return source.asObject(opts);
11295
+ }
11296
+ // DEBUG
11297
+ //console.debug('@EntityClass() asObject() => will recycle existing object: ', source);
11298
+ return source;
11299
+ };
11300
+ }
11301
+ }
11282
11302
  // Register the entity class
11283
- EntityClasses.register(typename, decoratedClass);
11284
- return decoratedClass;
11303
+ EntityClasses.register(typename, constructor);
11304
+ return constructor;
11285
11305
  };
11286
11306
  }
11287
11307