@pristine-ts/data-mapping-common 2.0.8 → 2.0.9

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.
Files changed (52) hide show
  1. package/dist/lib/cjs/builders/auto-data-mapping.builder.js +36 -1
  2. package/dist/lib/cjs/builders/auto-data-mapping.builder.js.map +1 -1
  3. package/dist/lib/cjs/builders/data-mapping.builder.js +7 -6
  4. package/dist/lib/cjs/builders/data-mapping.builder.js.map +1 -1
  5. package/dist/lib/cjs/errors/data-normalizer-not-found.error.js +15 -0
  6. package/dist/lib/cjs/errors/data-normalizer-not-found.error.js.map +1 -0
  7. package/dist/lib/cjs/errors/errors.js +3 -0
  8. package/dist/lib/cjs/errors/errors.js.map +1 -1
  9. package/dist/lib/cjs/errors/undefined-destination-property.error.js +14 -0
  10. package/dist/lib/cjs/errors/undefined-destination-property.error.js.map +1 -0
  11. package/dist/lib/cjs/mappers/data.mapper.js +3 -5
  12. package/dist/lib/cjs/mappers/data.mapper.js.map +1 -1
  13. package/dist/lib/cjs/nodes/base-data-mapping.node.js +4 -0
  14. package/dist/lib/cjs/nodes/base-data-mapping.node.js.map +1 -1
  15. package/dist/lib/cjs/nodes/data-mapping.leaf.js +36 -11
  16. package/dist/lib/cjs/nodes/data-mapping.leaf.js.map +1 -1
  17. package/dist/lib/cjs/nodes/data-mapping.node.js +119 -49
  18. package/dist/lib/cjs/nodes/data-mapping.node.js.map +1 -1
  19. package/dist/lib/cjs/options/auto-data-mapping-builder.options.js +2 -1
  20. package/dist/lib/cjs/options/auto-data-mapping-builder.options.js.map +1 -1
  21. package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  22. package/dist/lib/esm/builders/auto-data-mapping.builder.js +36 -1
  23. package/dist/lib/esm/builders/auto-data-mapping.builder.js.map +1 -1
  24. package/dist/lib/esm/builders/data-mapping.builder.js +7 -6
  25. package/dist/lib/esm/builders/data-mapping.builder.js.map +1 -1
  26. package/dist/lib/esm/errors/data-normalizer-not-found.error.js +11 -0
  27. package/dist/lib/esm/errors/data-normalizer-not-found.error.js.map +1 -0
  28. package/dist/lib/esm/errors/errors.js +3 -0
  29. package/dist/lib/esm/errors/errors.js.map +1 -1
  30. package/dist/lib/esm/errors/undefined-destination-property.error.js +10 -0
  31. package/dist/lib/esm/errors/undefined-destination-property.error.js.map +1 -0
  32. package/dist/lib/esm/mappers/data.mapper.js +3 -5
  33. package/dist/lib/esm/mappers/data.mapper.js.map +1 -1
  34. package/dist/lib/esm/nodes/base-data-mapping.node.js +4 -0
  35. package/dist/lib/esm/nodes/base-data-mapping.node.js.map +1 -1
  36. package/dist/lib/esm/nodes/data-mapping.leaf.js +36 -11
  37. package/dist/lib/esm/nodes/data-mapping.leaf.js.map +1 -1
  38. package/dist/lib/esm/nodes/data-mapping.node.js +119 -49
  39. package/dist/lib/esm/nodes/data-mapping.node.js.map +1 -1
  40. package/dist/lib/esm/options/auto-data-mapping-builder.options.js +2 -1
  41. package/dist/lib/esm/options/auto-data-mapping-builder.options.js.map +1 -1
  42. package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
  43. package/dist/types/builders/auto-data-mapping.builder.d.ts +16 -0
  44. package/dist/types/builders/data-mapping.builder.d.ts +3 -2
  45. package/dist/types/errors/data-normalizer-not-found.error.d.ts +8 -0
  46. package/dist/types/errors/errors.d.ts +3 -0
  47. package/dist/types/errors/undefined-destination-property.error.d.ts +8 -0
  48. package/dist/types/interfaces/data-mapping-interceptor.interface.d.ts +6 -2
  49. package/dist/types/nodes/data-mapping.leaf.d.ts +11 -0
  50. package/dist/types/nodes/data-mapping.node.d.ts +54 -2
  51. package/dist/types/options/auto-data-mapping-builder.options.d.ts +12 -0
  52. package/package.json +3 -3
@@ -10,6 +10,19 @@ import { AutoDataMappingBuilderOptions } from "../options/auto-data-mapping-buil
10
10
  import { MetadataEnum } from "../enums/metadata.enum";
11
11
  import { BooleanNormalizerUniqueKey } from "../normalizers/boolean.normalizer";
12
12
  export class AutoDataMappingBuilder {
13
+ constructor() {
14
+ /**
15
+ * Schema cache keyed by destination class. The auto-built schema is deterministic in `destinationType`
16
+ * + the *shape* of the source (which decoration metadata describes), so for a stable class definition
17
+ * the same builder can be reused across calls. We key only by destinationType to keep things simple;
18
+ * if the source shape varies and the auto-inference depends on it (e.g. inferring scalar-array member
19
+ * type from `source[propertyKey][0]`), callers needing fresh inference can bypass the cache via the
20
+ * `disableCache` option.
21
+ *
22
+ * Stored under a WeakMap so unused destination classes can be garbage-collected.
23
+ */
24
+ this.cache = new WeakMap();
25
+ }
13
26
  /**
14
27
  * This method receives a source object and a destinationType that corresponds to the type of the class
15
28
  * that the source should be mapped to. It then creates a DataMappingBuilder object that contains the schema
@@ -19,10 +32,32 @@ export class AutoDataMappingBuilder {
19
32
  * @param options
20
33
  */
21
34
  build(source, destinationType, options) {
35
+ const resolvedOptions = new AutoDataMappingBuilderOptions(options);
36
+ if (resolvedOptions.disableCache !== true) {
37
+ const cached = this.cache.get(destinationType);
38
+ if (cached !== undefined) {
39
+ return cached;
40
+ }
41
+ }
22
42
  const dataMappingBuilder = new DataMappingBuilder();
23
- this.internalBuild(source, destinationType, dataMappingBuilder, dataMappingBuilder, new AutoDataMappingBuilderOptions(options));
43
+ this.internalBuild(source, destinationType, dataMappingBuilder, dataMappingBuilder, resolvedOptions);
44
+ if (resolvedOptions.disableCache !== true) {
45
+ this.cache.set(destinationType, dataMappingBuilder);
46
+ }
24
47
  return dataMappingBuilder;
25
48
  }
49
+ /**
50
+ * Clear the cached schema for a destinationType (or the whole cache when no argument is passed).
51
+ * Useful in tests, or when class metadata changes at runtime (rare).
52
+ */
53
+ clearCache(destinationType) {
54
+ if (destinationType === undefined) {
55
+ // WeakMap has no .clear() — recreate.
56
+ this.cache = new WeakMap();
57
+ return;
58
+ }
59
+ this.cache.delete(destinationType);
60
+ }
26
61
  /**
27
62
  * This method is the internal method that is called recursively to build the schema.
28
63
  *
@@ -1 +1 @@
1
- {"version":3,"file":"auto-data-mapping.builder.js","sourceRoot":"","sources":["../../../../src/builders/auto-data-mapping.builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-data-mapping.builder.js","sourceRoot":"","sources":["../../../../src/builders/auto-data-mapping.builder.ts"],"names":[],"mappings":"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"}
@@ -153,18 +153,19 @@ export class DataMappingBuilder extends BaseDataMappingNode {
153
153
  }
154
154
  }
155
155
  /**
156
- * This method exports this node.
156
+ * This method exports the schema as a plain object. The export does not mutate the live tree —
157
+ * the builder remains usable for mapping after this call returns.
157
158
  */
158
159
  export() {
159
- const nodes = this.nodes;
160
- for (const key in nodes) {
161
- if (nodes.hasOwnProperty(key) === false) {
160
+ const exportedNodes = {};
161
+ for (const key in this.nodes) {
162
+ if (this.nodes.hasOwnProperty(key) === false) {
162
163
  continue;
163
164
  }
164
- nodes[key] = nodes[key].export();
165
+ exportedNodes[key] = this.nodes[key].export();
165
166
  }
166
167
  return {
167
- "nodes": nodes,
168
+ "nodes": exportedNodes,
168
169
  "normalizers": this.normalizers,
169
170
  "beforeMappingInterceptors": this.beforeMappingInterceptors,
170
171
  "afterMappingInterceptors": this.afterMappingInterceptors,
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapping.builder.js","sourceRoot":"","sources":["../../../../src/builders/data-mapping.builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-mapping.builder.js","sourceRoot":"","sources":["../../../../src/builders/data-mapping.builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Thrown when a leaf references a normalizer key that hasn't been registered with the DataMapper.
3
+ */
4
+ export class DataNormalizerNotFoundError extends Error {
5
+ constructor(message, normalizerUniqueKey) {
6
+ super(message);
7
+ this.normalizerUniqueKey = normalizerUniqueKey;
8
+ Object.setPrototypeOf(this, DataNormalizerNotFoundError.prototype);
9
+ }
10
+ }
11
+ //# sourceMappingURL=data-normalizer-not-found.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-normalizer-not-found.error.js","sourceRoot":"","sources":["../../../../src/errors/data-normalizer-not-found.error.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD,YAAmB,OAAe,EAAkB,mBAA4C;QAC9F,KAAK,CAAC,OAAO,CAAC,CAAC;QADmC,wBAAmB,GAAnB,mBAAmB,CAAyB;QAG9F,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACrE,CAAC;CACF"}
@@ -1,9 +1,12 @@
1
1
  export * from "./array-data-mapping-node-invalid-source-property-type.error";
2
+ export * from "./auto-map-primitive-type-normalizer-not-found.error";
2
3
  export * from "./data-after-mapping-interceptor-already-added.error";
3
4
  export * from "./data-before-mapping-interceptor-already-added.error";
4
5
  export * from "./data-normalizer-already-added.error";
6
+ export * from "./data-normalizer-not-found.error";
5
7
  export * from "./data-mapping-interceptor-not-found.error";
6
8
  export * from "./data-mapping-source-property-not-found.error";
7
9
  export * from "./normalizer-invalid-source-type.error";
10
+ export * from "./undefined-destination-property.error";
8
11
  export * from "./undefined-source-property.error";
9
12
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,8DAA8D,CAAC;AAC7E,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,uCAAuC,CAAC;AACtD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,8DAA8D,CAAC;AAC7E,cAAc,sDAAsD,CAAC;AACrE,cAAc,sDAAsD,CAAC;AACrE,cAAc,uDAAuD,CAAC;AACtE,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,gDAAgD,CAAC;AAC/D,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,mCAAmC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Thrown when a Node is being committed to its parent without a `destinationProperty` set.
3
+ */
4
+ export class UndefinedDestinationPropertyError extends Error {
5
+ constructor(node) {
6
+ super("The `destinationProperty` property of the Node cannot be undefined to be added as a Node to its parent. Source property: '" + node.sourceProperty + "'.");
7
+ Object.setPrototypeOf(this, UndefinedDestinationPropertyError.prototype);
8
+ }
9
+ }
10
+ //# sourceMappingURL=undefined-destination-property.error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"undefined-destination-property.error.js","sourceRoot":"","sources":["../../../../src/errors/undefined-destination-property.error.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IAE1D,YAAmB,IAAuC;QACxD,KAAK,CAAC,4HAA4H,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QAEjK,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,iCAAiC,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -144,8 +144,7 @@ export class DataMapper {
144
144
  if (interceptor === undefined) {
145
145
  throw new DataMappingInterceptorNotFoundError("The interceptor wasn't found and cannot be loaded.", element.key);
146
146
  }
147
- // todo: Pass the options when we start using them.
148
- interceptedSource = yield interceptor.beforeMapping(interceptedSource);
147
+ interceptedSource = yield interceptor.beforeMapping(interceptedSource, element.options);
149
148
  }
150
149
  // Loop over the properties defined in the builder
151
150
  for (const key in builder.nodes) {
@@ -155,14 +154,13 @@ export class DataMapper {
155
154
  const node = builder.nodes[key];
156
155
  yield node.map(interceptedSource, destination, this.dataNormalizersMap, options);
157
156
  }
158
- // Execute the before interceptors.
157
+ // Execute the after interceptors.
159
158
  for (const element of builder.afterMappingInterceptors) {
160
159
  const interceptor = this.dataTransformerInterceptorsMap[element.key];
161
160
  if (interceptor === undefined) {
162
161
  throw new DataMappingInterceptorNotFoundError("The interceptor wasn't found and cannot be loaded.", element.key);
163
162
  }
164
- // todo pass the options when we start using it.
165
- destination = yield interceptor.afterMapping(destination);
163
+ destination = yield interceptor.afterMapping(destination, element.options);
166
164
  }
167
165
  if (destinationType) {
168
166
  destination = plainToInstance(destinationType, destination);
@@ -1 +1 @@
1
- {"version":3,"file":"data.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/data.mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/data.mapper.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { UndefinedSourcePropertyError } from "../errors/undefined-source-property.error";
2
+ import { UndefinedDestinationPropertyError } from "../errors/undefined-destination-property.error";
2
3
  export class BaseDataMappingNode {
3
4
  constructor() {
4
5
  this.nodes = {};
@@ -14,6 +15,9 @@ export class BaseDataMappingNode {
14
15
  if (node.sourceProperty === undefined) {
15
16
  throw new UndefinedSourcePropertyError(node);
16
17
  }
18
+ if (node.destinationProperty === undefined) {
19
+ throw new UndefinedDestinationPropertyError(node);
20
+ }
17
21
  this.nodes[node.sourceProperty] = node;
18
22
  }
19
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/base-data-mapping.node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,4BAA4B,EAAC,MAAM,2CAA2C,CAAC;AAEvF,MAAM,OAAgB,mBAAmB;IAAzC;QACS,UAAK,GAAsE,EAAE,CAAC;IAkBvF,CAAC;IAhBC;;;;;;OAMG;IACI,OAAO,CAAC,IAAuC;QACpD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACzC,CAAC;CAGF"}
1
+ {"version":3,"file":"base-data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/base-data-mapping.node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,4BAA4B,EAAC,MAAM,2CAA2C,CAAC;AACvF,OAAO,EAAC,iCAAiC,EAAC,MAAM,gDAAgD,CAAC;AAEjG,MAAM,OAAgB,mBAAmB;IAAzC;QACS,UAAK,GAAsE,EAAE,CAAC;IAsBvF,CAAC;IApBC;;;;;;OAMG;IACI,OAAO,CAAC,IAAuC;QACpD,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YAC3C,MAAM,IAAI,iCAAiC,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IACzC,CAAC;CAGF"}
@@ -11,6 +11,7 @@ import { DataMappingNodeTypeEnum } from "../enums/data-mapping-node-type.enum";
11
11
  import { DataNormalizerAlreadyAdded } from "../errors/data-normalizer-already-added.error";
12
12
  import { DataMappingSourcePropertyNotFoundError } from "../errors/data-mapping-source-property-not-found.error";
13
13
  import { ArrayDataMappingNodeInvalidSourcePropertyTypeError } from "../errors/array-data-mapping-node-invalid-source-property-type.error";
14
+ import { DataNormalizerNotFoundError } from "../errors/data-normalizer-not-found.error";
14
15
  export class DataMappingLeaf {
15
16
  constructor(root, parent, type = DataMappingNodeTypeEnum.Leaf) {
16
17
  this.root = root;
@@ -71,6 +72,7 @@ export class DataMappingLeaf {
71
72
  key: normalizerUniqueKey,
72
73
  options,
73
74
  });
75
+ this.effectiveNormalizersCache = undefined;
74
76
  return this;
75
77
  }
76
78
  /**
@@ -89,8 +91,23 @@ export class DataMappingLeaf {
89
91
  throw new DataNormalizerAlreadyAdded("The EXCLUDED data normalizer '" + normalizerUniqueKey + "' has already been added to this source property: '" + this.sourceProperty + "'.", normalizerUniqueKey);
90
92
  }
91
93
  this.excludedNormalizers.add(normalizerUniqueKey);
94
+ this.effectiveNormalizersCache = undefined;
92
95
  return this;
93
96
  }
97
+ /**
98
+ * Returns the merged list of normalizers applied to this leaf: inherited root normalizers minus the
99
+ * ones explicitly excluded here, followed by leaf-local normalizers. Memoized — the cache is cleared
100
+ * by `addNormalizer`/`excludeNormalizer`.
101
+ */
102
+ getEffectiveNormalizers() {
103
+ if (this.effectiveNormalizersCache === undefined) {
104
+ this.effectiveNormalizersCache = [
105
+ ...this.root.normalizers.filter(element => this.excludedNormalizers.has(element.key) === false),
106
+ ...this.normalizers,
107
+ ];
108
+ }
109
+ return this.effectiveNormalizersCache;
110
+ }
94
111
  /**
95
112
  * This method adds this node to its parent and returns the parent.
96
113
  */
@@ -115,8 +132,7 @@ export class DataMappingLeaf {
115
132
  }
116
133
  throw new DataMappingSourcePropertyNotFoundError("The property '" + this.sourceProperty + "' isn't found in the Source object and isn't marked as Optional. If you want to ignore this property, use the 'setIsOptional(true)' method in the builder.", this.sourceProperty);
117
134
  }
118
- const normalizers = this.root.normalizers.filter(element => this.excludedNormalizers.has(element.key) === false);
119
- normalizers.push(...this.normalizers);
135
+ const normalizers = this.getEffectiveNormalizers();
120
136
  if (this.type === DataMappingNodeTypeEnum.ScalarArray) {
121
137
  // This means that the source[propertyKey] contains an array of objects and each object should be mapped
122
138
  const array = source[this.sourceProperty];
@@ -125,20 +141,25 @@ export class DataMappingLeaf {
125
141
  }
126
142
  destination[this.destinationProperty] = [];
127
143
  for (let value of array) {
128
- normalizers.forEach(element => {
144
+ for (const element of normalizers) {
129
145
  const normalizer = normalizersMap[element.key];
130
- if (normalizer)
131
- value = normalizer.normalize(value, element.options);
132
- });
146
+ if (normalizer === undefined) {
147
+ throw new DataNormalizerNotFoundError("The normalizer '" + element.key + "' wasn't found and cannot be loaded for source property '" + this.sourceProperty + "'.", element.key);
148
+ }
149
+ value = normalizer.normalize(value, element.options);
150
+ }
133
151
  destination[this.destinationProperty].push(value);
134
152
  }
135
153
  return;
136
154
  }
137
155
  let value = source[this.sourceProperty];
138
- normalizers.forEach(element => {
156
+ for (const element of normalizers) {
139
157
  const normalizer = normalizersMap[element.key];
158
+ if (normalizer === undefined) {
159
+ throw new DataNormalizerNotFoundError("The normalizer '" + element.key + "' wasn't found and cannot be loaded for source property '" + this.sourceProperty + "'.", element.key);
160
+ }
140
161
  value = normalizer.normalize(value, element.options);
141
- });
162
+ }
142
163
  destination[this.destinationProperty] = value;
143
164
  return;
144
165
  });
@@ -149,16 +170,20 @@ export class DataMappingLeaf {
149
170
  * @param schema
150
171
  */
151
172
  import(schema) {
152
- this.normalizers = schema.normalizers;
173
+ this.normalizers = Array.isArray(schema.normalizers) ? schema.normalizers : [];
153
174
  this.excludedNormalizers = new Set();
154
- if (schema.hasOwnProperty("excludedNormalizers")) {
175
+ if (schema.hasOwnProperty("excludedNormalizers") && schema.excludedNormalizers) {
155
176
  for (const item in schema.excludedNormalizers) {
156
- this.excludeNormalizer(item);
177
+ if (schema.excludedNormalizers.hasOwnProperty(item) === false) {
178
+ continue;
179
+ }
180
+ this.excludedNormalizers.add(item);
157
181
  }
158
182
  }
159
183
  this.isOptional = schema.isOptional;
160
184
  this.sourceProperty = schema.sourceProperty;
161
185
  this.destinationProperty = schema.destinationProperty;
186
+ this.effectiveNormalizersCache = undefined;
162
187
  }
163
188
  /**
164
189
  * This method exports this node.
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapping.leaf.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.leaf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-mapping.leaf.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.leaf.ts"],"names":[],"mappings":"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"}
@@ -114,61 +114,125 @@ export class DataMappingNode extends BaseDataMappingNode {
114
114
  if (sourceElement === undefined) {
115
115
  return;
116
116
  }
117
+ // Whether source-keyed properties should be carried through to the destination.
118
+ // When `excludeExtraneousValues === true`, only renamed destination keys (written by
119
+ // sub-nodes below) end up on the destination — source keys are dropped.
120
+ const includeSourceKeys = (options === null || options === void 0 ? void 0 : options.excludeExtraneousValues) === false;
117
121
  if (this.type === DataMappingNodeTypeEnum.ObjectArray) {
122
+ // Array case: handled below in its own loop. Just pre-allocate the array here.
118
123
  destination[this.destinationProperty] = [];
119
124
  }
120
125
  else {
121
- if (this.destinationType) {
122
- destination[this.destinationProperty] = plainToInstance(this.destinationType, sourceElement);
123
- }
124
- else {
125
- destination[this.destinationProperty] = {};
126
- }
127
- if ((options === null || options === void 0 ? void 0 : options.excludeExtraneousValues) === false) {
128
- if (typeof sourceElement === "object" || Array.isArray(sourceElement)) {
129
- Object.keys(sourceElement).forEach(property => {
130
- destination[this.destinationProperty][property] = sourceElement[property];
131
- });
132
- }
133
- }
126
+ // Single-object case: build the destination value once, then let sub-nodes overlay
127
+ // renamed keys onto it.
128
+ destination[this.destinationProperty] = this.buildDestinationObject(sourceElement, includeSourceKeys);
134
129
  }
135
130
  const destinationElement = destination[this.destinationProperty];
136
131
  if (this.type === DataMappingNodeTypeEnum.ObjectArray) {
137
- // This means that the source[propertyKey] contains an array of objects and each object should be mapped
138
- const array = source[this.sourceProperty];
139
- if (Array.isArray(array) === false) {
140
- throw new ArrayDataMappingNodeInvalidSourcePropertyTypeError(`According to your schema, the property '${this.sourceProperty}' in the source object must contain an Array of objects. Instead, it contains: '${typeof array}'.`, this.sourceProperty);
132
+ const sourceArray = source[this.sourceProperty];
133
+ if (Array.isArray(sourceArray) === false) {
134
+ throw new ArrayDataMappingNodeInvalidSourcePropertyTypeError(`According to your schema, the property '${this.sourceProperty}' in the source object must contain an Array of objects. Instead, it contains: '${typeof sourceArray}'.`, this.sourceProperty);
141
135
  }
142
- let index = 0;
143
- for (const element of array) {
144
- let dest = {};
145
- if (this.destinationType) {
146
- if (typeof this.destinationType === "function" && !this.destinationType.prototype) {
147
- const destinationType = this.destinationType;
148
- dest = plainToInstance(destinationType(source, this.sourceProperty, index).constructor, (options === null || options === void 0 ? void 0 : options.excludeExtraneousValues) === false ? element : {});
149
- }
150
- else if (this.destinationType.prototype) {
151
- dest = plainToInstance(this.destinationType, {});
152
- }
153
- }
154
- if ((options === null || options === void 0 ? void 0 : options.excludeExtraneousValues) === false) {
155
- Object.keys(element).forEach(property => {
156
- dest[property] = element[property];
157
- });
158
- }
159
- for (const key in this.nodes) {
160
- if (this.nodes.hasOwnProperty(key) === false) {
161
- continue;
162
- }
163
- const node = this.nodes[key];
164
- yield node.map(element, dest, normalizersMap, options);
165
- }
136
+ // For each source element: build the destination object (whose concrete class may
137
+ // depend on the element index when `destinationType` is a factory callback), let the
138
+ // sub-nodes overlay their renamed keys, then push.
139
+ for (let index = 0; index < sourceArray.length; index++) {
140
+ const element = sourceArray[index];
141
+ const dest = this.buildArrayMemberDestination(source, element, index, includeSourceKeys);
142
+ yield this.runSubNodes(element, dest, normalizersMap, options);
166
143
  destinationElement.push(dest);
167
144
  }
168
- index++;
169
145
  return;
170
146
  }
171
- // When the current node is not an array, we simply iterate
147
+ // Single-object case: sub-nodes write into the destination we just built above.
148
+ yield this.runSubNodes(sourceElement, destinationElement, normalizersMap, options);
149
+ });
150
+ }
151
+ /**
152
+ * Build the destination object for the single-object case.
153
+ *
154
+ * If a `destinationType` (class constructor) is set, instantiate the class. Otherwise return
155
+ * a plain object. When `includeSourceKeys` is true, the source's own enumerable properties are
156
+ * seeded onto the result so they survive the mapping; sub-nodes then overlay renamed keys on top.
157
+ *
158
+ * Note: the single-object case treats `destinationType` strictly as a class constructor.
159
+ * Factory callbacks only make sense for the per-element ObjectArray case below.
160
+ */
161
+ buildDestinationObject(sourceElement, includeSourceKeys) {
162
+ const seedFromSource = includeSourceKeys
163
+ && sourceElement !== null
164
+ && (typeof sourceElement === "object" || Array.isArray(sourceElement));
165
+ if (this.destinationType !== undefined) {
166
+ return plainToInstance(this.destinationType, seedFromSource ? sourceElement : {});
167
+ }
168
+ const result = {};
169
+ if (seedFromSource) {
170
+ Object.keys(sourceElement).forEach(property => {
171
+ result[property] = sourceElement[property];
172
+ });
173
+ }
174
+ return result;
175
+ }
176
+ /**
177
+ * Build the destination object for a single element of an ObjectArray. Mirrors
178
+ * `buildDestinationObject`, with two extra wrinkles unique to arrays:
179
+ *
180
+ * 1. `destinationType` can be a *factory callback* instead of a fixed class. The callback
181
+ * receives the source array's parent + the element's index and returns an instance of
182
+ * the concrete class to use. This is how polymorphic arrays work (e.g. some elements
183
+ * become `Cat`, others `Dog`).
184
+ * 2. The seed value is the per-element object, not the whole array.
185
+ */
186
+ buildArrayMemberDestination(source, element, index, includeSourceKeys) {
187
+ const seedFromSource = includeSourceKeys && element !== null && typeof element === "object";
188
+ if (this.destinationType === undefined) {
189
+ // Untyped array — produce a plain object, optionally seeded with the element's own keys.
190
+ const result = {};
191
+ if (seedFromSource) {
192
+ Object.keys(element).forEach(property => {
193
+ result[property] = element[property];
194
+ });
195
+ }
196
+ return result;
197
+ }
198
+ const memberConstructor = this.resolveArrayMemberConstructor(source, index);
199
+ return plainToInstance(memberConstructor, seedFromSource ? element : {});
200
+ }
201
+ /**
202
+ * Resolve the concrete class constructor for a single element of an ObjectArray.
203
+ *
204
+ * `destinationType` here is one of two things:
205
+ *
206
+ * - a **class constructor** (uniform array — every element maps to the same class), or
207
+ * - a **factory callback** of shape `(source, sourceProperty, index) => instance`
208
+ * (polymorphic array — class is chosen per element).
209
+ *
210
+ * JavaScript gives us no clean way to distinguish a class constructor from a callback —
211
+ * both are `typeof === "function"`. The conventional discriminant: a class constructor has
212
+ * a `.prototype` object (where its instance methods live); an arrow function does not.
213
+ *
214
+ * Caveat: a regular `function() { ... }` expression used as a callback would also have a
215
+ * `.prototype` and would be mis-classified as a class. The public type only documents the
216
+ * arrow-function form (`ArrayMemberTypeFactoryCallbackType = (...) => any`), and in practice
217
+ * callers use arrow functions, so this is safe for documented usage.
218
+ */
219
+ resolveArrayMemberConstructor(source, index) {
220
+ const destinationType = this.destinationType;
221
+ const isFactoryCallback = typeof destinationType === "function"
222
+ && destinationType.prototype === undefined;
223
+ if (isFactoryCallback) {
224
+ const factory = destinationType;
225
+ const sampleInstance = factory(source, this.sourceProperty, index);
226
+ return sampleInstance.constructor;
227
+ }
228
+ return destinationType;
229
+ }
230
+ /**
231
+ * Run every direct child node against `(sourceElement, destinationElement)`. Each child
232
+ * writes its mapped destination property onto `destinationElement`.
233
+ */
234
+ runSubNodes(sourceElement, destinationElement, normalizersMap, options) {
235
+ return __awaiter(this, void 0, void 0, function* () {
172
236
  for (const key in this.nodes) {
173
237
  if (this.nodes.hasOwnProperty(key) === false) {
174
238
  continue;
@@ -212,22 +276,28 @@ export class DataMappingNode extends BaseDataMappingNode {
212
276
  }
213
277
  }
214
278
  /**
215
- * This method exports this node.
279
+ * This method exports this node. The exported representation is a plain object — it does not mutate
280
+ * the live tree, so the same builder can continue to be used for mapping after `export()` is called.
281
+ *
282
+ * `destinationType` is intentionally not serialized: class constructors aren't transferable, and
283
+ * factory callbacks (`ArrayMemberTypeFactoryCallbackType`) hold closures. To rehydrate a schema with
284
+ * the same destination instantiation behavior, decorate the destination class with class-transformer's
285
+ * `@Type()` and pass the destination class to `DataMapper.map()`.
216
286
  */
217
287
  export() {
218
- const nodes = this.nodes;
219
- for (const key in nodes) {
220
- if (nodes.hasOwnProperty(key) === false) {
288
+ const exportedNodes = {};
289
+ for (const key in this.nodes) {
290
+ if (this.nodes.hasOwnProperty(key) === false) {
221
291
  continue;
222
292
  }
223
- nodes[key] = nodes[key].export();
293
+ exportedNodes[key] = this.nodes[key].export();
224
294
  }
225
295
  return {
226
296
  "_type": this.type,
227
297
  "sourceProperty": this.sourceProperty,
228
298
  "destinationProperty": this.destinationProperty,
229
299
  "isOptional": this.isOptional,
230
- "nodes": nodes,
300
+ "nodes": exportedNodes,
231
301
  };
232
302
  }
233
303
  }