@pristine-ts/data-mapping-common 2.0.10 → 2.0.11
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/data-mapping.builder.js +8 -35
- package/dist/lib/cjs/builders/data-mapping.builder.js.map +1 -1
- package/dist/lib/cjs/data-mapping-common.js +1 -0
- package/dist/lib/cjs/data-mapping-common.js.map +1 -1
- package/dist/lib/cjs/interfaces/fluent-array-of-objects-options.interface.js +3 -0
- package/dist/lib/cjs/interfaces/fluent-array-of-objects-options.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/fluent-leaf-options.interface.js +3 -0
- package/dist/lib/cjs/interfaces/fluent-leaf-options.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/fluent-nested-options.interface.js +3 -0
- package/dist/lib/cjs/interfaces/fluent-nested-options.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +3 -0
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -1
- package/dist/lib/cjs/nodes/base-data-mapping.node.js +94 -4
- package/dist/lib/cjs/nodes/base-data-mapping.node.js.map +1 -1
- package/dist/lib/cjs/nodes/data-mapping.node.js +12 -40
- package/dist/lib/cjs/nodes/data-mapping.node.js.map +1 -1
- package/dist/lib/cjs/serializers/data-mapping.serializer.js +81 -0
- package/dist/lib/cjs/serializers/data-mapping.serializer.js.map +1 -0
- package/dist/lib/cjs/serializers/serializers.js +18 -0
- package/dist/lib/cjs/serializers/serializers.js.map +1 -0
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/lib/esm/builders/data-mapping.builder.js +8 -35
- package/dist/lib/esm/builders/data-mapping.builder.js.map +1 -1
- package/dist/lib/esm/data-mapping-common.js +1 -0
- package/dist/lib/esm/data-mapping-common.js.map +1 -1
- package/dist/lib/esm/interfaces/fluent-array-of-objects-options.interface.js +2 -0
- package/dist/lib/esm/interfaces/fluent-array-of-objects-options.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/fluent-leaf-options.interface.js +2 -0
- package/dist/lib/esm/interfaces/fluent-leaf-options.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/fluent-nested-options.interface.js +2 -0
- package/dist/lib/esm/interfaces/fluent-nested-options.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +3 -0
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -1
- package/dist/lib/esm/nodes/base-data-mapping.node.js +94 -4
- package/dist/lib/esm/nodes/base-data-mapping.node.js.map +1 -1
- package/dist/lib/esm/nodes/data-mapping.node.js +12 -40
- package/dist/lib/esm/nodes/data-mapping.node.js.map +1 -1
- package/dist/lib/esm/serializers/data-mapping.serializer.js +77 -0
- package/dist/lib/esm/serializers/data-mapping.serializer.js.map +1 -0
- package/dist/lib/esm/serializers/serializers.js +2 -0
- package/dist/lib/esm/serializers/serializers.js.map +1 -0
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/types/builders/data-mapping.builder.d.ts +5 -5
- package/dist/types/data-mapping-common.d.ts +1 -0
- package/dist/types/interfaces/fluent-array-of-objects-options.interface.d.ts +21 -0
- package/dist/types/interfaces/fluent-leaf-options.interface.d.ts +27 -0
- package/dist/types/interfaces/fluent-nested-options.interface.d.ts +19 -0
- package/dist/types/interfaces/interfaces.d.ts +3 -0
- package/dist/types/nodes/base-data-mapping.node.d.ts +39 -4
- package/dist/types/nodes/data-mapping.node.d.ts +9 -9
- package/dist/types/serializers/data-mapping.serializer.d.ts +46 -0
- package/dist/types/serializers/serializers.d.ts +1 -0
- package/package.json +3 -3
- package/readme.md +43 -1
|
@@ -8,6 +8,7 @@ const data_after_mapping_interceptor_already_added_error_1 = require("../errors/
|
|
|
8
8
|
const data_mapping_leaf_1 = require("../nodes/data-mapping.leaf");
|
|
9
9
|
const base_data_mapping_node_1 = require("../nodes/base-data-mapping.node");
|
|
10
10
|
const data_mapping_node_type_enum_1 = require("../enums/data-mapping-node-type.enum");
|
|
11
|
+
const data_mapping_serializer_1 = require("../serializers/data-mapping.serializer");
|
|
11
12
|
class DataMappingBuilder extends base_data_mapping_node_1.BaseDataMappingNode {
|
|
12
13
|
constructor() {
|
|
13
14
|
super(...arguments);
|
|
@@ -124,51 +125,23 @@ class DataMappingBuilder extends base_data_mapping_node_1.BaseDataMappingNode {
|
|
|
124
125
|
return this;
|
|
125
126
|
}
|
|
126
127
|
/**
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
128
|
+
* Rehydrate this builder from a previously-exported schema. Replaces every field this
|
|
129
|
+
* class owns; child nodes are rebuilt via `DataMappingSerializer.importChildren`, which is
|
|
130
|
+
* the same helper `DataMappingNode.import` uses (so the two stay consistent).
|
|
130
131
|
*/
|
|
131
132
|
import(schema) {
|
|
132
133
|
this.normalizers = schema.normalizers;
|
|
133
134
|
this.beforeMappingInterceptors = schema.beforeMappingInterceptors;
|
|
134
135
|
this.afterMappingInterceptors = schema.afterMappingInterceptors;
|
|
135
|
-
|
|
136
|
-
for (const key in nodes) {
|
|
137
|
-
if (nodes.hasOwnProperty(key) === false) {
|
|
138
|
-
continue;
|
|
139
|
-
}
|
|
140
|
-
const nodeInfo = nodes[key];
|
|
141
|
-
const type = nodeInfo["_type"];
|
|
142
|
-
switch (type) {
|
|
143
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ScalarArray:
|
|
144
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Leaf:
|
|
145
|
-
const leaf = new data_mapping_leaf_1.DataMappingLeaf(this, this, type);
|
|
146
|
-
leaf.import(nodeInfo);
|
|
147
|
-
this.nodes[leaf.sourceProperty] = leaf;
|
|
148
|
-
continue;
|
|
149
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Node:
|
|
150
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ObjectArray:
|
|
151
|
-
const node = new data_mapping_node_1.DataMappingNode(this, this, type);
|
|
152
|
-
node.import(nodeInfo);
|
|
153
|
-
this.nodes[node.sourceProperty] = node;
|
|
154
|
-
;
|
|
155
|
-
}
|
|
156
|
-
}
|
|
136
|
+
this.nodes = data_mapping_serializer_1.DataMappingSerializer.importChildren(this, this, schema.nodes);
|
|
157
137
|
}
|
|
158
138
|
/**
|
|
159
|
-
*
|
|
160
|
-
*
|
|
139
|
+
* Export the schema as a plain object. The export does not mutate the live tree — the
|
|
140
|
+
* builder remains usable for mapping after this call returns.
|
|
161
141
|
*/
|
|
162
142
|
export() {
|
|
163
|
-
const exportedNodes = {};
|
|
164
|
-
for (const key in this.nodes) {
|
|
165
|
-
if (this.nodes.hasOwnProperty(key) === false) {
|
|
166
|
-
continue;
|
|
167
|
-
}
|
|
168
|
-
exportedNodes[key] = this.nodes[key].export();
|
|
169
|
-
}
|
|
170
143
|
return {
|
|
171
|
-
"nodes":
|
|
144
|
+
"nodes": data_mapping_serializer_1.DataMappingSerializer.exportChildren(this.nodes),
|
|
172
145
|
"normalizers": this.normalizers,
|
|
173
146
|
"beforeMappingInterceptors": this.beforeMappingInterceptors,
|
|
174
147
|
"afterMappingInterceptors": this.afterMappingInterceptors,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-mapping.builder.js","sourceRoot":"","sources":["../../../../src/builders/data-mapping.builder.ts"],"names":[],"mappings":";;;AAAA,kEAA2D;AAE3D,uGAAyF;AAEzF,uIAA4H;AAC5H,qIAA0H;AAC1H,kEAA2D;AAC3D,4EAAoE;AACpE,sFAA6E;AAE7E,MAAa,kBAAmB,SAAQ,4CAAmB;IAA3D;;QACS,gBAAW,GAAqD,EAAE,CAAC;QACnE,8BAAyB,GAAiE,EAAE,CAAC;QAC7F,6BAAwB,GAAiE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"data-mapping.builder.js","sourceRoot":"","sources":["../../../../src/builders/data-mapping.builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,5 +25,6 @@ __exportStar(require("./normalizer-options/normalizer-options"), exports);
|
|
|
25
25
|
__exportStar(require("./normalizers/normalizers"), exports);
|
|
26
26
|
__exportStar(require("./options/options"), exports);
|
|
27
27
|
__exportStar(require("./reporters/reporters"), exports);
|
|
28
|
+
__exportStar(require("./serializers/serializers"), exports);
|
|
28
29
|
__exportStar(require("./types/types"), exports);
|
|
29
30
|
//# sourceMappingURL=data-mapping-common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-mapping-common.js","sourceRoot":"","sources":["../../../src/data-mapping-common.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,0DAAuC;AACvC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,oDAAkC;AAClC,gDAA8B;AAC9B,0EAAwD;AACxD,4DAA0C;AAC1C,oDAAkC;AAClC,wDAAsC;AACtC,gDAA8B"}
|
|
1
|
+
{"version":3,"file":"data-mapping-common.js","sourceRoot":"","sources":["../../../src/data-mapping-common.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,0DAAuC;AACvC,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,oDAAkC;AAClC,gDAA8B;AAC9B,0EAAwD;AACxD,4DAA0C;AAC1C,oDAAkC;AAClC,wDAAsC;AACtC,4DAA0C;AAC1C,gDAA8B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluent-array-of-objects-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/fluent-array-of-objects-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluent-leaf-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/fluent-leaf-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fluent-nested-options.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/fluent-nested-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -16,4 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./data-normalizer.interface"), exports);
|
|
18
18
|
__exportStar(require("./data-mapping-interceptor.interface"), exports);
|
|
19
|
+
__exportStar(require("./fluent-array-of-objects-options.interface"), exports);
|
|
20
|
+
__exportStar(require("./fluent-leaf-options.interface"), exports);
|
|
21
|
+
__exportStar(require("./fluent-nested-options.interface"), exports);
|
|
19
22
|
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/interfaces/interfaces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,uEAAqD"}
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/interfaces/interfaces.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,uEAAqD;AACrD,8EAA4D;AAC5D,kEAAgD;AAChD,oEAAkD"}
|
|
@@ -7,12 +7,80 @@ class BaseDataMappingNode {
|
|
|
7
7
|
constructor() {
|
|
8
8
|
this.nodes = {};
|
|
9
9
|
}
|
|
10
|
+
// ── Fluent / sugar API ────────────────────────────────────────────────────────────────
|
|
11
|
+
//
|
|
12
|
+
// Sugar layer over the low-level chain. Each call returns `this` so calls compose without
|
|
13
|
+
// explicit `.end()`. Nested structures take a build callback that scopes the inner config
|
|
14
|
+
// — the framework handles the `.end()` for you.
|
|
10
15
|
/**
|
|
11
|
-
*
|
|
12
|
-
* We use this mechanism to force the `end()` method on the leaf to be called so we can do some validations before
|
|
13
|
-
* adding it to the tree.
|
|
16
|
+
* Add a leaf mapping. `field(src)` is shorthand for `field(src, src)` (no rename).
|
|
14
17
|
*
|
|
15
|
-
*
|
|
18
|
+
* Equivalent to `.add().setSourceProperty(src).setDestinationProperty(dst).end()`, plus
|
|
19
|
+
* applying normalizer / optional / excludeNormalizers options.
|
|
20
|
+
*/
|
|
21
|
+
field(source, destination, options) {
|
|
22
|
+
const leaf = this.add()
|
|
23
|
+
.setSourceProperty(source)
|
|
24
|
+
.setDestinationProperty(destination !== null && destination !== void 0 ? destination : source);
|
|
25
|
+
BaseDataMappingNode.applyLeafOptions(leaf, options);
|
|
26
|
+
leaf.end();
|
|
27
|
+
return this;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Add a nested object mapping. The build callback receives the new node and configures its
|
|
31
|
+
* children — no explicit `.end()` needed; this method calls it for you when the callback
|
|
32
|
+
* returns.
|
|
33
|
+
*/
|
|
34
|
+
nested(source, destination, build, options) {
|
|
35
|
+
const node = this.addNestingLevel()
|
|
36
|
+
.setSourceProperty(source)
|
|
37
|
+
.setDestinationProperty(destination);
|
|
38
|
+
if ((options === null || options === void 0 ? void 0 : options.isOptional) !== undefined) {
|
|
39
|
+
node.setIsOptional(options.isOptional);
|
|
40
|
+
}
|
|
41
|
+
if ((options === null || options === void 0 ? void 0 : options.destinationType) !== undefined) {
|
|
42
|
+
node.setDestinationType(options.destinationType);
|
|
43
|
+
}
|
|
44
|
+
build(node);
|
|
45
|
+
node.end();
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Add an array-of-objects mapping. The build callback configures the per-element schema —
|
|
50
|
+
* every element in the source array is mapped through it. `destinationType` can be a class
|
|
51
|
+
* (uniform array) or a factory callback (polymorphic array).
|
|
52
|
+
*/
|
|
53
|
+
arrayOfObjects(source, destination, build, options) {
|
|
54
|
+
const node = this.addArrayOfObjects()
|
|
55
|
+
.setSourceProperty(source)
|
|
56
|
+
.setDestinationProperty(destination);
|
|
57
|
+
if ((options === null || options === void 0 ? void 0 : options.isOptional) !== undefined) {
|
|
58
|
+
node.setIsOptional(options.isOptional);
|
|
59
|
+
}
|
|
60
|
+
if ((options === null || options === void 0 ? void 0 : options.destinationType) !== undefined) {
|
|
61
|
+
node.setDestinationType(options.destinationType);
|
|
62
|
+
}
|
|
63
|
+
build(node);
|
|
64
|
+
node.end();
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Add an array-of-scalars mapping. Normalizers in `options` apply to every element of the
|
|
69
|
+
* array, not to the array itself. `arrayOfScalars(src)` is shorthand for same-name source
|
|
70
|
+
* and destination.
|
|
71
|
+
*/
|
|
72
|
+
arrayOfScalars(source, destination, options) {
|
|
73
|
+
const leaf = this.addArrayOfScalar()
|
|
74
|
+
.setSourceProperty(source)
|
|
75
|
+
.setDestinationProperty(destination !== null && destination !== void 0 ? destination : source);
|
|
76
|
+
BaseDataMappingNode.applyLeafOptions(leaf, options);
|
|
77
|
+
leaf.end();
|
|
78
|
+
return this;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Called by the node itself to tell its parent that it has been built and is ready to be
|
|
82
|
+
* added. We use this mechanism to force the `end()` method on the leaf to be called so we
|
|
83
|
+
* can do some validations before adding it to the tree.
|
|
16
84
|
*/
|
|
17
85
|
addNode(node) {
|
|
18
86
|
if (node.sourceProperty === undefined) {
|
|
@@ -23,6 +91,28 @@ class BaseDataMappingNode {
|
|
|
23
91
|
}
|
|
24
92
|
this.nodes[node.sourceProperty] = node;
|
|
25
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* Shared between `field()` and `arrayOfScalars()` — both take the same options shape.
|
|
96
|
+
* Static helper so it can be called against either a freshly-built leaf or any leaf type.
|
|
97
|
+
*/
|
|
98
|
+
static applyLeafOptions(leaf, options) {
|
|
99
|
+
var _a, _b;
|
|
100
|
+
if (options === undefined) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
if (options.isOptional !== undefined) {
|
|
104
|
+
leaf.setIsOptional(options.isOptional);
|
|
105
|
+
}
|
|
106
|
+
(_a = options.excludeNormalizers) === null || _a === void 0 ? void 0 : _a.forEach(key => leaf.excludeNormalizer(key));
|
|
107
|
+
(_b = options.normalizers) === null || _b === void 0 ? void 0 : _b.forEach(entry => {
|
|
108
|
+
if (typeof entry === "string") {
|
|
109
|
+
leaf.addNormalizer(entry);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
leaf.addNormalizer(entry.key, entry.options);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
26
116
|
}
|
|
27
117
|
exports.BaseDataMappingNode = BaseDataMappingNode;
|
|
28
118
|
//# sourceMappingURL=base-data-mapping.node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/base-data-mapping.node.ts"],"names":[],"mappings":";;;AAEA,+FAAuF;AACvF,yGAAiG;
|
|
1
|
+
{"version":3,"file":"base-data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/base-data-mapping.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,6 +16,7 @@ const base_data_mapping_node_1 = require("./base-data-mapping.node");
|
|
|
16
16
|
const data_mapping_source_property_not_found_error_1 = require("../errors/data-mapping-source-property-not-found.error");
|
|
17
17
|
const array_data_mapping_node_invalid_source_property_type_error_1 = require("../errors/array-data-mapping-node-invalid-source-property-type.error");
|
|
18
18
|
const class_transformer_1 = require("class-transformer");
|
|
19
|
+
const data_mapping_serializer_1 = require("../serializers/data-mapping.serializer");
|
|
19
20
|
class DataMappingNode extends base_data_mapping_node_1.BaseDataMappingNode {
|
|
20
21
|
constructor(root, parent, type = data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Node) {
|
|
21
22
|
super();
|
|
@@ -246,61 +247,32 @@ class DataMappingNode extends base_data_mapping_node_1.BaseDataMappingNode {
|
|
|
246
247
|
});
|
|
247
248
|
}
|
|
248
249
|
/**
|
|
249
|
-
*
|
|
250
|
-
*
|
|
251
|
-
*
|
|
250
|
+
* Rehydrate this node from a previously-exported sub-schema. Children are rebuilt via
|
|
251
|
+
* `DataMappingSerializer.importChildren`, the same helper `DataMappingBuilder.import` uses
|
|
252
|
+
* (so the two stay consistent).
|
|
252
253
|
*/
|
|
253
254
|
import(schema) {
|
|
254
255
|
this.sourceProperty = schema.sourceProperty;
|
|
255
256
|
this.destinationProperty = schema.destinationProperty;
|
|
256
257
|
this.isOptional = schema.isOptional;
|
|
257
|
-
this.nodes =
|
|
258
|
-
const nodes = schema.nodes;
|
|
259
|
-
for (const key in nodes) {
|
|
260
|
-
if (nodes.hasOwnProperty(key) === false) {
|
|
261
|
-
continue;
|
|
262
|
-
}
|
|
263
|
-
const nodeInfo = nodes[key];
|
|
264
|
-
const type = nodeInfo["_type"];
|
|
265
|
-
switch (type) {
|
|
266
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ScalarArray:
|
|
267
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Leaf:
|
|
268
|
-
const leaf = new data_mapping_leaf_1.DataMappingLeaf(this.root, this, type);
|
|
269
|
-
leaf.import(nodeInfo);
|
|
270
|
-
this.nodes[leaf.sourceProperty] = leaf;
|
|
271
|
-
continue;
|
|
272
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Node:
|
|
273
|
-
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ObjectArray:
|
|
274
|
-
const node = new DataMappingNode(this.root, this, type);
|
|
275
|
-
node.import(nodeInfo);
|
|
276
|
-
this.nodes[node.sourceProperty] = node;
|
|
277
|
-
;
|
|
278
|
-
}
|
|
279
|
-
}
|
|
258
|
+
this.nodes = data_mapping_serializer_1.DataMappingSerializer.importChildren(this.root, this, schema.nodes);
|
|
280
259
|
}
|
|
281
260
|
/**
|
|
282
|
-
*
|
|
283
|
-
*
|
|
261
|
+
* Export this node as a plain object. Does not mutate the live tree — the builder remains
|
|
262
|
+
* usable for mapping after this call returns.
|
|
284
263
|
*
|
|
285
|
-
* `destinationType` is intentionally not serialized: class constructors aren't transferable,
|
|
286
|
-
* factory callbacks (`ArrayMemberTypeFactoryCallbackType`) hold closures. To rehydrate a
|
|
287
|
-
* the same destination instantiation behavior, decorate the destination class
|
|
288
|
-
* `@Type()` and pass the destination class to `DataMapper.map()`.
|
|
264
|
+
* `destinationType` is intentionally not serialized: class constructors aren't transferable,
|
|
265
|
+
* and factory callbacks (`ArrayMemberTypeFactoryCallbackType`) hold closures. To rehydrate a
|
|
266
|
+
* schema with the same destination instantiation behavior, decorate the destination class
|
|
267
|
+
* with class-transformer's `@Type()` and pass the destination class to `DataMapper.map()`.
|
|
289
268
|
*/
|
|
290
269
|
export() {
|
|
291
|
-
const exportedNodes = {};
|
|
292
|
-
for (const key in this.nodes) {
|
|
293
|
-
if (this.nodes.hasOwnProperty(key) === false) {
|
|
294
|
-
continue;
|
|
295
|
-
}
|
|
296
|
-
exportedNodes[key] = this.nodes[key].export();
|
|
297
|
-
}
|
|
298
270
|
return {
|
|
299
271
|
"_type": this.type,
|
|
300
272
|
"sourceProperty": this.sourceProperty,
|
|
301
273
|
"destinationProperty": this.destinationProperty,
|
|
302
274
|
"isOptional": this.isOptional,
|
|
303
|
-
"nodes":
|
|
275
|
+
"nodes": data_mapping_serializer_1.DataMappingSerializer.exportChildren(this.nodes),
|
|
304
276
|
};
|
|
305
277
|
}
|
|
306
278
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.node.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,sFAA6E;AAC7E,2DAAoD;AAEpD,qEAA6D;AAC7D,yHAA8G;AAG9G,qJAAwI;AACxI,yDAAoE;
|
|
1
|
+
{"version":3,"file":"data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataMappingSerializer = void 0;
|
|
4
|
+
const data_mapping_node_type_enum_1 = require("../enums/data-mapping-node-type.enum");
|
|
5
|
+
const data_mapping_node_1 = require("../nodes/data-mapping.node");
|
|
6
|
+
const data_mapping_leaf_1 = require("../nodes/data-mapping.leaf");
|
|
7
|
+
/**
|
|
8
|
+
* Pure helpers for serializing / deserializing the children-map shared between
|
|
9
|
+
* `DataMappingBuilder` and `DataMappingNode`.
|
|
10
|
+
*
|
|
11
|
+
* Both classes hold the same `{ [sourceProperty]: DataMappingNode | DataMappingLeaf }` shape
|
|
12
|
+
* and both need to walk it the same way during `import()` / `export()`. Keeping that walk in
|
|
13
|
+
* one place avoids the two implementations drifting apart (which they already had — see the
|
|
14
|
+
* old destination-property-leak bug).
|
|
15
|
+
*
|
|
16
|
+
* Stateless class-as-namespace per the project convention (no constructor dependencies, no
|
|
17
|
+
* instance state, so static methods make the call site read straight: `DataMappingSerializer.
|
|
18
|
+
* importChildren(...)`).
|
|
19
|
+
*
|
|
20
|
+
* Note on imports: this module is in a small cycle with `data-mapping.node.ts` — the
|
|
21
|
+
* serializer references Node and Leaf so it can instantiate them, and Node references the
|
|
22
|
+
* serializer so its `import()` / `export()` can delegate. The cycle resolves cleanly because
|
|
23
|
+
* the references are used only inside method bodies (not at module top level), so by the
|
|
24
|
+
* time anything runs both modules are fully evaluated.
|
|
25
|
+
*/
|
|
26
|
+
class DataMappingSerializer {
|
|
27
|
+
/**
|
|
28
|
+
* Rebuild a populated children map from the `nodes` field of a serialized schema.
|
|
29
|
+
*
|
|
30
|
+
* Dispatches on the `_type` discriminator: ScalarArray + Leaf hydrate as `DataMappingLeaf`,
|
|
31
|
+
* Node + ObjectArray hydrate as `DataMappingNode`. The created child's own `import()` is
|
|
32
|
+
* called to fill in its fields and (for nodes) recurse into its own children.
|
|
33
|
+
*/
|
|
34
|
+
static importChildren(root, parent, schemaNodes) {
|
|
35
|
+
const result = {};
|
|
36
|
+
if (schemaNodes === undefined || schemaNodes === null) {
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
for (const key in schemaNodes) {
|
|
40
|
+
if (schemaNodes.hasOwnProperty(key) === false) {
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const nodeInfo = schemaNodes[key];
|
|
44
|
+
const type = nodeInfo["_type"];
|
|
45
|
+
switch (type) {
|
|
46
|
+
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ScalarArray:
|
|
47
|
+
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Leaf: {
|
|
48
|
+
const leaf = new data_mapping_leaf_1.DataMappingLeaf(root, parent, type);
|
|
49
|
+
leaf.import(nodeInfo);
|
|
50
|
+
result[leaf.sourceProperty] = leaf;
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Node:
|
|
54
|
+
case data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ObjectArray: {
|
|
55
|
+
const node = new data_mapping_node_1.DataMappingNode(root, parent, type);
|
|
56
|
+
node.import(nodeInfo);
|
|
57
|
+
result[node.sourceProperty] = node;
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Serialize a children map back into a plain `nodes` object suitable for embedding in a
|
|
66
|
+
* schema export. Returns a fresh object — does not mutate the input, so callers can safely
|
|
67
|
+
* continue to use the live tree after exporting.
|
|
68
|
+
*/
|
|
69
|
+
static exportChildren(nodes) {
|
|
70
|
+
const result = {};
|
|
71
|
+
for (const key in nodes) {
|
|
72
|
+
if (nodes.hasOwnProperty(key) === false) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
result[key] = nodes[key].export();
|
|
76
|
+
}
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.DataMappingSerializer = DataMappingSerializer;
|
|
81
|
+
//# sourceMappingURL=data-mapping.serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-mapping.serializer.js","sourceRoot":"","sources":["../../../../src/serializers/data-mapping.serializer.ts"],"names":[],"mappings":";;;AAAA,sFAA6E;AAC7E,kEAA2D;AAC3D,kEAA2D;AAG3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,qBAAqB;IAChC;;;;;;OAMG;IACI,MAAM,CAAC,cAAc,CAC1B,IAAwB,EACxB,MAA4C,EAC5C,WAA+C;QAE/C,MAAM,MAAM,GAAoE,EAAE,CAAC;QAEnF,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACtD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,IAAI,WAAW,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBAC9C,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YAClC,MAAM,IAAI,GAA4B,QAAQ,CAAC,OAAO,CAAC,CAAC;YAExD,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,qDAAuB,CAAC,WAAW,CAAC;gBACzC,KAAK,qDAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAClC,MAAM,IAAI,GAAG,IAAI,mCAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;oBACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;oBACnC,MAAM;gBACR,CAAC;gBAED,KAAK,qDAAuB,CAAC,IAAI,CAAC;gBAClC,KAAK,qDAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;oBACzC,MAAM,IAAI,GAAG,IAAI,mCAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;oBACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;oBACnC,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,cAAc,CAC1B,KAAsE;QAEtE,MAAM,MAAM,GAA2B,EAAE,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACpC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AArED,sDAqEC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./data-mapping.serializer"), exports);
|
|
18
|
+
//# sourceMappingURL=serializers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializers.js","sourceRoot":"","sources":["../../../../src/serializers/serializers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C"}
|