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