@pristine-ts/data-mapping 0.0.277
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/LICENSE +201 -0
- package/dist/lib/cjs/builders/builders.js +18 -0
- package/dist/lib/cjs/builders/builders.js.map +1 -0
- package/dist/lib/cjs/builders/data-mapping.builder.js +178 -0
- package/dist/lib/cjs/builders/data-mapping.builder.js.map +1 -0
- package/dist/lib/cjs/data-mapping.module.js +38 -0
- package/dist/lib/cjs/data-mapping.module.js.map +1 -0
- package/dist/lib/cjs/data-mapping.module.keyname.js +5 -0
- package/dist/lib/cjs/data-mapping.module.keyname.js.map +1 -0
- package/dist/lib/cjs/enums/data-mapping-node-type.enum.js +11 -0
- package/dist/lib/cjs/enums/data-mapping-node-type.enum.js.map +1 -0
- package/dist/lib/cjs/enums/enums.js +18 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/errors/array-data-mapping-node-invalid-source-property-type.error.js +20 -0
- package/dist/lib/cjs/errors/array-data-mapping-node-invalid-source-property-type.error.js.map +1 -0
- package/dist/lib/cjs/errors/data-after-mapping-interceptor-already-added.error.js +21 -0
- package/dist/lib/cjs/errors/data-after-mapping-interceptor-already-added.error.js.map +1 -0
- package/dist/lib/cjs/errors/data-before-mapping-interceptor-already-added.error.js +21 -0
- package/dist/lib/cjs/errors/data-before-mapping-interceptor-already-added.error.js.map +1 -0
- package/dist/lib/cjs/errors/data-mapping-interceptor-not-found.error.js +21 -0
- package/dist/lib/cjs/errors/data-mapping-interceptor-not-found.error.js.map +1 -0
- package/dist/lib/cjs/errors/data-mapping-source-property-not-found.error.js +20 -0
- package/dist/lib/cjs/errors/data-mapping-source-property-not-found.error.js.map +1 -0
- package/dist/lib/cjs/errors/data-normalizer-already-added.error.js +21 -0
- package/dist/lib/cjs/errors/data-normalizer-already-added.error.js.map +1 -0
- package/dist/lib/cjs/errors/errors.js +25 -0
- package/dist/lib/cjs/errors/errors.js.map +1 -0
- package/dist/lib/cjs/errors/normalizer-invalid-source-type.error.js +23 -0
- package/dist/lib/cjs/errors/normalizer-invalid-source-type.error.js.map +1 -0
- package/dist/lib/cjs/errors/undefined-source-property.error.js +20 -0
- package/dist/lib/cjs/errors/undefined-source-property.error.js.map +1 -0
- package/dist/lib/cjs/interceptors/default-data-mapping.interceptor.js +44 -0
- package/dist/lib/cjs/interceptors/default-data-mapping.interceptor.js.map +1 -0
- package/dist/lib/cjs/interceptors/interceptors.js +18 -0
- package/dist/lib/cjs/interceptors/interceptors.js.map +1 -0
- package/dist/lib/cjs/interfaces/data-mapping-interceptor.interface.js +3 -0
- package/dist/lib/cjs/interfaces/data-mapping-interceptor.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/data-normalizer.interface.js +3 -0
- package/dist/lib/cjs/interfaces/data-normalizer.interface.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +19 -0
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -0
- package/dist/lib/cjs/mappers/data.mapper.js +112 -0
- package/dist/lib/cjs/mappers/data.mapper.js.map +1 -0
- package/dist/lib/cjs/mappers/mappers.js +18 -0
- package/dist/lib/cjs/mappers/mappers.js.map +1 -0
- package/dist/lib/cjs/nodes/base-data-mapping.node.js +24 -0
- package/dist/lib/cjs/nodes/base-data-mapping.node.js.map +1 -0
- package/dist/lib/cjs/nodes/data-mapping.leaf.js +184 -0
- package/dist/lib/cjs/nodes/data-mapping.leaf.js.map +1 -0
- package/dist/lib/cjs/nodes/data-mapping.node.js +202 -0
- package/dist/lib/cjs/nodes/data-mapping.node.js.map +1 -0
- package/dist/lib/cjs/nodes/nodes.js +20 -0
- package/dist/lib/cjs/nodes/nodes.js.map +1 -0
- package/dist/lib/cjs/normalizer-options/base-normalizer.options.js +11 -0
- package/dist/lib/cjs/normalizer-options/base-normalizer.options.js.map +1 -0
- package/dist/lib/cjs/normalizer-options/lowercase-normalizer.options.js +11 -0
- package/dist/lib/cjs/normalizer-options/lowercase-normalizer.options.js.map +1 -0
- package/dist/lib/cjs/normalizer-options/normalizer-options.js +19 -0
- package/dist/lib/cjs/normalizer-options/normalizer-options.js.map +1 -0
- package/dist/lib/cjs/normalizers/lowercase.normalizer.js +33 -0
- package/dist/lib/cjs/normalizers/lowercase.normalizer.js.map +1 -0
- package/dist/lib/cjs/normalizers/normalizers.js +18 -0
- package/dist/lib/cjs/normalizers/normalizers.js.map +1 -0
- package/dist/lib/cjs/types/data-mapping-interceptor-unique-key.type.js +3 -0
- package/dist/lib/cjs/types/data-mapping-interceptor-unique-key.type.js.map +1 -0
- package/dist/lib/cjs/types/data-normalizer-unique-key.type.js +3 -0
- package/dist/lib/cjs/types/data-normalizer-unique-key.type.js.map +1 -0
- package/dist/lib/cjs/types/types.js +19 -0
- package/dist/lib/cjs/types/types.js.map +1 -0
- package/dist/lib/esm/builders/builders.js +2 -0
- package/dist/lib/esm/builders/builders.js.map +1 -0
- package/dist/lib/esm/builders/data-mapping.builder.js +174 -0
- package/dist/lib/esm/builders/data-mapping.builder.js.map +1 -0
- package/dist/lib/esm/data-mapping.module.js +21 -0
- package/dist/lib/esm/data-mapping.module.js.map +1 -0
- package/dist/lib/esm/data-mapping.module.keyname.js +2 -0
- package/dist/lib/esm/data-mapping.module.keyname.js.map +1 -0
- package/dist/lib/esm/enums/data-mapping-node-type.enum.js +8 -0
- package/dist/lib/esm/enums/data-mapping-node-type.enum.js.map +1 -0
- package/dist/lib/esm/enums/enums.js +2 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/errors/array-data-mapping-node-invalid-source-property-type.error.js +16 -0
- package/dist/lib/esm/errors/array-data-mapping-node-invalid-source-property-type.error.js.map +1 -0
- package/dist/lib/esm/errors/data-after-mapping-interceptor-already-added.error.js +17 -0
- package/dist/lib/esm/errors/data-after-mapping-interceptor-already-added.error.js.map +1 -0
- package/dist/lib/esm/errors/data-before-mapping-interceptor-already-added.error.js +17 -0
- package/dist/lib/esm/errors/data-before-mapping-interceptor-already-added.error.js.map +1 -0
- package/dist/lib/esm/errors/data-mapping-interceptor-not-found.error.js +17 -0
- package/dist/lib/esm/errors/data-mapping-interceptor-not-found.error.js.map +1 -0
- package/dist/lib/esm/errors/data-mapping-source-property-not-found.error.js +16 -0
- package/dist/lib/esm/errors/data-mapping-source-property-not-found.error.js.map +1 -0
- package/dist/lib/esm/errors/data-normalizer-already-added.error.js +17 -0
- package/dist/lib/esm/errors/data-normalizer-already-added.error.js.map +1 -0
- package/dist/lib/esm/errors/errors.js +9 -0
- package/dist/lib/esm/errors/errors.js.map +1 -0
- package/dist/lib/esm/errors/normalizer-invalid-source-type.error.js +19 -0
- package/dist/lib/esm/errors/normalizer-invalid-source-type.error.js.map +1 -0
- package/dist/lib/esm/errors/undefined-source-property.error.js +16 -0
- package/dist/lib/esm/errors/undefined-source-property.error.js.map +1 -0
- package/dist/lib/esm/interceptors/default-data-mapping.interceptor.js +41 -0
- package/dist/lib/esm/interceptors/default-data-mapping.interceptor.js.map +1 -0
- package/dist/lib/esm/interceptors/interceptors.js +2 -0
- package/dist/lib/esm/interceptors/interceptors.js.map +1 -0
- package/dist/lib/esm/interfaces/data-mapping-interceptor.interface.js +2 -0
- package/dist/lib/esm/interfaces/data-mapping-interceptor.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/data-normalizer.interface.js +2 -0
- package/dist/lib/esm/interfaces/data-normalizer.interface.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +3 -0
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -0
- package/dist/lib/esm/mappers/data.mapper.js +109 -0
- package/dist/lib/esm/mappers/data.mapper.js.map +1 -0
- package/dist/lib/esm/mappers/mappers.js +2 -0
- package/dist/lib/esm/mappers/mappers.js.map +1 -0
- package/dist/lib/esm/nodes/base-data-mapping.node.js +20 -0
- package/dist/lib/esm/nodes/base-data-mapping.node.js.map +1 -0
- package/dist/lib/esm/nodes/data-mapping.leaf.js +180 -0
- package/dist/lib/esm/nodes/data-mapping.leaf.js.map +1 -0
- package/dist/lib/esm/nodes/data-mapping.node.js +198 -0
- package/dist/lib/esm/nodes/data-mapping.node.js.map +1 -0
- package/dist/lib/esm/nodes/nodes.js +4 -0
- package/dist/lib/esm/nodes/nodes.js.map +1 -0
- package/dist/lib/esm/normalizer-options/base-normalizer.options.js +7 -0
- package/dist/lib/esm/normalizer-options/base-normalizer.options.js.map +1 -0
- package/dist/lib/esm/normalizer-options/lowercase-normalizer.options.js +7 -0
- package/dist/lib/esm/normalizer-options/lowercase-normalizer.options.js.map +1 -0
- package/dist/lib/esm/normalizer-options/normalizer-options.js +3 -0
- package/dist/lib/esm/normalizer-options/normalizer-options.js.map +1 -0
- package/dist/lib/esm/normalizers/lowercase.normalizer.js +30 -0
- package/dist/lib/esm/normalizers/lowercase.normalizer.js.map +1 -0
- package/dist/lib/esm/normalizers/normalizers.js +2 -0
- package/dist/lib/esm/normalizers/normalizers.js.map +1 -0
- package/dist/lib/esm/types/data-mapping-interceptor-unique-key.type.js +2 -0
- package/dist/lib/esm/types/data-mapping-interceptor-unique-key.type.js.map +1 -0
- package/dist/lib/esm/types/data-normalizer-unique-key.type.js +2 -0
- package/dist/lib/esm/types/data-normalizer-unique-key.type.js.map +1 -0
- package/dist/lib/esm/types/types.js +3 -0
- package/dist/lib/esm/types/types.js.map +1 -0
- package/dist/types/builders/builders.d.ts +1 -0
- package/dist/types/builders/data-mapping.builder.d.ts +110 -0
- package/dist/types/data-mapping.module.d.ts +12 -0
- package/dist/types/data-mapping.module.keyname.d.ts +1 -0
- package/dist/types/enums/data-mapping-node-type.enum.d.ts +6 -0
- package/dist/types/enums/enums.d.ts +1 -0
- package/dist/types/errors/array-data-mapping-node-invalid-source-property-type.error.d.ts +7 -0
- package/dist/types/errors/data-after-mapping-interceptor-already-added.error.d.ts +8 -0
- package/dist/types/errors/data-before-mapping-interceptor-already-added.error.d.ts +8 -0
- package/dist/types/errors/data-mapping-interceptor-not-found.error.d.ts +8 -0
- package/dist/types/errors/data-mapping-source-property-not-found.error.d.ts +7 -0
- package/dist/types/errors/data-normalizer-already-added.error.d.ts +7 -0
- package/dist/types/errors/errors.d.ts +8 -0
- package/dist/types/errors/normalizer-invalid-source-type.error.d.ts +7 -0
- package/dist/types/errors/undefined-source-property.error.d.ts +9 -0
- package/dist/types/interceptors/default-data-mapping.interceptor.d.ts +7 -0
- package/dist/types/interceptors/interceptors.d.ts +1 -0
- package/dist/types/interfaces/data-mapping-interceptor.interface.d.ts +19 -0
- package/dist/types/interfaces/data-normalizer.interface.d.ts +15 -0
- package/dist/types/interfaces/interfaces.d.ts +2 -0
- package/dist/types/mappers/data.mapper.d.ts +28 -0
- package/dist/types/mappers/mappers.d.ts +1 -0
- package/dist/types/nodes/base-data-mapping.node.d.ts +15 -0
- package/dist/types/nodes/data-mapping.leaf.d.ts +92 -0
- package/dist/types/nodes/data-mapping.node.d.ts +94 -0
- package/dist/types/nodes/nodes.d.ts +3 -0
- package/dist/types/normalizer-options/base-normalizer.options.d.ts +4 -0
- package/dist/types/normalizer-options/lowercase-normalizer.options.d.ts +4 -0
- package/dist/types/normalizer-options/normalizer-options.d.ts +2 -0
- package/dist/types/normalizers/lowercase.normalizer.d.ts +7 -0
- package/dist/types/normalizers/normalizers.d.ts +1 -0
- package/dist/types/types/data-mapping-interceptor-unique-key.type.d.ts +1 -0
- package/dist/types/types/data-normalizer-unique-key.type.d.ts +1 -0
- package/dist/types/types/types.d.ts +2 -0
- package/package.json +68 -0
- package/readme.md +1 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when a node is of type array but the `source[sourceProperty]` doesn't actually contain an array.
|
|
4
|
+
*/
|
|
5
|
+
export class ArrayDataMappingNodeInvalidSourcePropertyTypeError extends LoggableError {
|
|
6
|
+
constructor(message, sourceProperty) {
|
|
7
|
+
super(message, {
|
|
8
|
+
sourceProperty,
|
|
9
|
+
});
|
|
10
|
+
// Set the prototype explicitly.
|
|
11
|
+
// As specified in the documentation in TypeScript
|
|
12
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
13
|
+
Object.setPrototypeOf(this, ArrayDataMappingNodeInvalidSourcePropertyTypeError.prototype);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=array-data-mapping-node-invalid-source-property-type.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array-data-mapping-node-invalid-source-property-type.error.js","sourceRoot":"","sources":["../../../../src/errors/array-data-mapping-node-invalid-source-property-type.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAElD;;GAEG;AACH,MAAM,OAAO,kDAAmD,SAAQ,aAAa;IAEjF,YAAmB,OAAe,EAAE,cAAsB;QACtD,KAAK,CAAC,OAAO,EAAE;YACX,cAAc;SACjB,CAAC,CAAC;QAGH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kDAAkD,CAAC,SAAS,CAAC,CAAC;IAC9F,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when the before row interceptor is added more than once to the builder.
|
|
4
|
+
*/
|
|
5
|
+
export class DataAfterMappingInterceptorAlreadyAddedError extends LoggableError {
|
|
6
|
+
constructor(message, uniqueKey, options) {
|
|
7
|
+
super(message, {
|
|
8
|
+
uniqueKey,
|
|
9
|
+
options,
|
|
10
|
+
});
|
|
11
|
+
// Set the prototype explicitly.
|
|
12
|
+
// As specified in the documentation in TypeScript
|
|
13
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
14
|
+
Object.setPrototypeOf(this, DataAfterMappingInterceptorAlreadyAddedError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data-after-mapping-interceptor-already-added.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-after-mapping-interceptor-already-added.error.js","sourceRoot":"","sources":["../../../../src/errors/data-after-mapping-interceptor-already-added.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,MAAM,OAAO,4CAA6C,SAAQ,aAAa;IAE3E,YAAmB,OAAe,EAAE,SAA8C,EAAE,OAAa;QAC7F,KAAK,CAAC,OAAO,EAAE;YACX,SAAS;YACT,OAAO;SACV,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,4CAA4C,CAAC,SAAS,CAAC,CAAC;IACxF,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when the after row interceptor is added more than once to the builder.
|
|
4
|
+
*/
|
|
5
|
+
export class DataBeforeMappingInterceptorAlreadyAddedError extends LoggableError {
|
|
6
|
+
constructor(message, uniqueKey, options) {
|
|
7
|
+
super(message, {
|
|
8
|
+
uniqueKey,
|
|
9
|
+
options,
|
|
10
|
+
});
|
|
11
|
+
// Set the prototype explicitly.
|
|
12
|
+
// As specified in the documentation in TypeScript
|
|
13
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
14
|
+
Object.setPrototypeOf(this, DataBeforeMappingInterceptorAlreadyAddedError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data-before-mapping-interceptor-already-added.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-before-mapping-interceptor-already-added.error.js","sourceRoot":"","sources":["../../../../src/errors/data-before-mapping-interceptor-already-added.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,MAAM,OAAO,6CAA8C,SAAQ,aAAa;IAE5E,YAAmB,OAAe,EAAE,SAA8C,EAAE,OAAa;QAC7F,KAAK,CAAC,OAAO,EAAE;YACX,SAAS;YACT,OAAO;SACV,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,6CAA6C,CAAC,SAAS,CAAC,CAAC;IACzF,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown if the Data Transformer Class is not found in the list of available interceptors. It might be missing a tag.
|
|
4
|
+
*/
|
|
5
|
+
export class DataMappingInterceptorNotFoundError extends LoggableError {
|
|
6
|
+
constructor(message, uniqueKey, options) {
|
|
7
|
+
super(message, {
|
|
8
|
+
uniqueKey,
|
|
9
|
+
options,
|
|
10
|
+
});
|
|
11
|
+
// Set the prototype explicitly.
|
|
12
|
+
// As specified in the documentation in TypeScript
|
|
13
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
14
|
+
Object.setPrototypeOf(this, DataMappingInterceptorNotFoundError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data-mapping-interceptor-not-found.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-mapping-interceptor-not-found.error.js","sourceRoot":"","sources":["../../../../src/errors/data-mapping-interceptor-not-found.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,MAAM,OAAO,mCAAoC,SAAQ,aAAa;IAElE,YAAmB,OAAe,EAAE,SAA8C,EAAE,OAAa;QAC7F,KAAK,CAAC,OAAO,EAAE;YACX,SAAS;YACT,OAAO;SACV,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mCAAmC,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC;CACJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when a property isn't optional and should be found in the source object.
|
|
4
|
+
*/
|
|
5
|
+
export class DataMappingSourcePropertyNotFoundError extends LoggableError {
|
|
6
|
+
constructor(message, sourceProperty) {
|
|
7
|
+
super(message, {
|
|
8
|
+
sourceProperty,
|
|
9
|
+
});
|
|
10
|
+
// Set the prototype explicitly.
|
|
11
|
+
// As specified in the documentation in TypeScript
|
|
12
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
13
|
+
Object.setPrototypeOf(this, DataMappingSourcePropertyNotFoundError.prototype);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data-mapping-source-property-not-found.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-mapping-source-property-not-found.error.js","sourceRoot":"","sources":["../../../../src/errors/data-mapping-source-property-not-found.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD;;GAEG;AACH,MAAM,OAAO,sCAAuC,SAAQ,aAAa;IAErE,YAAmB,OAAe,EAAE,cAAsB;QACtD,KAAK,CAAC,OAAO,EAAE;YACX,cAAc;SACjB,CAAC,CAAC;QAGH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,sCAAsC,CAAC,SAAS,CAAC,CAAC;IAClF,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when a normalizer is added more than once.
|
|
4
|
+
*/
|
|
5
|
+
export class DataNormalizerAlreadyAdded extends LoggableError {
|
|
6
|
+
constructor(message, normalizerUniqueKey, options) {
|
|
7
|
+
super(message, {
|
|
8
|
+
normalizerUniqueKey,
|
|
9
|
+
options,
|
|
10
|
+
});
|
|
11
|
+
// Set the prototype explicitly.
|
|
12
|
+
// As specified in the documentation in TypeScript
|
|
13
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
14
|
+
Object.setPrototypeOf(this, DataNormalizerAlreadyAdded.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data-normalizer-already-added.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-normalizer-already-added.error.js","sourceRoot":"","sources":["../../../../src/errors/data-normalizer-already-added.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,aAAa;IAEzD,YAAmB,OAAe,EAAE,mBAA2B,EAAE,OAAa;QAC1E,KAAK,CAAC,OAAO,EAAE;YACX,mBAAmB;YACnB,OAAO;SACV,CAAC,CAAC;QAGH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;CACJ"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./array-data-mapping-node-invalid-source-property-type.error";
|
|
2
|
+
export * from "./data-after-mapping-interceptor-already-added.error";
|
|
3
|
+
export * from "./data-before-mapping-interceptor-already-added.error";
|
|
4
|
+
export * from "./data-normalizer-already-added.error";
|
|
5
|
+
export * from "./data-mapping-interceptor-not-found.error";
|
|
6
|
+
export * from "./data-mapping-source-property-not-found.error";
|
|
7
|
+
export * from "./normalizer-invalid-source-type.error";
|
|
8
|
+
export * from "./undefined-source-property.error";
|
|
9
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when an invalid source type is passed to the source type while the normalizer expects another type.
|
|
4
|
+
*/
|
|
5
|
+
export class NormalizerInvalidSourceTypeError extends LoggableError {
|
|
6
|
+
constructor(message, normalizerUniqueKey, options, source, sourceType) {
|
|
7
|
+
super(message, {
|
|
8
|
+
normalizerUniqueKey,
|
|
9
|
+
options,
|
|
10
|
+
source,
|
|
11
|
+
sourceType,
|
|
12
|
+
});
|
|
13
|
+
// Set the prototype explicitly.
|
|
14
|
+
// As specified in the documentation in TypeScript
|
|
15
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
16
|
+
Object.setPrototypeOf(this, NormalizerInvalidSourceTypeError.prototype);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=normalizer-invalid-source-type.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizer-invalid-source-type.error.js","sourceRoot":"","sources":["../../../../src/errors/normalizer-invalid-source-type.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD;;GAEG;AACH,MAAM,OAAO,gCAAiC,SAAQ,aAAa;IAE/D,YAAmB,OAAe,EAAE,mBAA2B,EAAE,OAAY,EAAE,MAAW,EAAE,UAAe;QACvG,KAAK,CAAC,OAAO,EAAE;YACX,mBAAmB;YACnB,OAAO;YACP,MAAM;YACN,UAAU;SACb,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;CACJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LoggableError } from "@pristine-ts/common";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when you are trying to add a Node which has an undefined sourceProperty value.
|
|
4
|
+
*/
|
|
5
|
+
export class UndefinedSourcePropertyError extends LoggableError {
|
|
6
|
+
constructor(node) {
|
|
7
|
+
super("The `sourceProperty` property of the Node cannot be undefined to be added as a Node to its parent.", {
|
|
8
|
+
node,
|
|
9
|
+
});
|
|
10
|
+
// Set the prototype explicitly.
|
|
11
|
+
// As specified in the documentation in TypeScript
|
|
12
|
+
// https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work
|
|
13
|
+
Object.setPrototypeOf(this, UndefinedSourcePropertyError.prototype);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=undefined-source-property.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"undefined-source-property.error.js","sourceRoot":"","sources":["../../../../src/errors/undefined-source-property.error.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAIlD;;GAEG;AACH,MAAM,OAAO,4BAA6B,SAAQ,aAAa;IAE3D,YAAmB,IAAuC;QACtD,KAAK,CAAC,oGAAoG,EAAE;YACxG,IAAI;SACP,CAAC,CAAC;QAEH,gCAAgC;QAChC,kDAAkD;QAClD,gIAAgI;QAChI,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,4BAA4B,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACJ"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
8
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
9
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
10
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
11
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
12
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
13
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
var DefaultDataMappingInterceptor_1;
|
|
17
|
+
import { moduleScoped, tag } from "@pristine-ts/common";
|
|
18
|
+
import { DataMappingModuleKeyname } from "../data-mapping.module.keyname";
|
|
19
|
+
import { injectable } from "tsyringe";
|
|
20
|
+
let DefaultDataMappingInterceptor = DefaultDataMappingInterceptor_1 = class DefaultDataMappingInterceptor {
|
|
21
|
+
afterMapping(row) {
|
|
22
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
return row;
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
beforeMapping(row) {
|
|
27
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
return row;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
getUniqueKey() {
|
|
32
|
+
return DefaultDataMappingInterceptor_1.name;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
DefaultDataMappingInterceptor = DefaultDataMappingInterceptor_1 = __decorate([
|
|
36
|
+
tag("DataTransformerInterceptor"),
|
|
37
|
+
moduleScoped(DataMappingModuleKeyname),
|
|
38
|
+
injectable()
|
|
39
|
+
], DefaultDataMappingInterceptor);
|
|
40
|
+
export { DefaultDataMappingInterceptor };
|
|
41
|
+
//# sourceMappingURL=default-data-mapping.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-data-mapping.interceptor.js","sourceRoot":"","sources":["../../../../src/interceptors/default-data-mapping.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,OAAO,EAAC,YAAY,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAM7B,IAAM,6BAA6B,qCAAnC,MAAM,6BAA6B;IAChC,YAAY,CAAC,GAAQ;;YACvB,OAAO,GAAG,CAAC;QACf,CAAC;KAAA;IAEK,aAAa,CAAC,GAAQ;;YACxB,OAAO,GAAG,CAAC;QACf,CAAC;KAAA;IAED,YAAY;QACR,OAAO,+BAA6B,CAAC,IAAI,CAAC;IAC9C,CAAC;CACJ,CAAA;AAZY,6BAA6B;IAHzC,GAAG,CAAC,4BAA4B,CAAC;IACjC,YAAY,CAAC,wBAAwB,CAAC;IACtC,UAAU,EAAE;GACA,6BAA6B,CAYzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../../../src/interceptors/interceptors.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-mapping-interceptor.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/data-mapping-interceptor.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-normalizer.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/data-normalizer.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../src/interfaces/interfaces.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
import { moduleScoped } from "@pristine-ts/common";
|
|
23
|
+
import { DataMappingModuleKeyname } from "../data-mapping.module.keyname";
|
|
24
|
+
import { injectable, injectAll } from "tsyringe";
|
|
25
|
+
import { plainToInstance } from "class-transformer";
|
|
26
|
+
import { DataMappingInterceptorNotFoundError } from "../errors/data-mapping-interceptor-not-found.error";
|
|
27
|
+
let DataMapper = class DataMapper {
|
|
28
|
+
constructor(dataNormalizers, dataTransformerInterceptors) {
|
|
29
|
+
this.dataNormalizers = dataNormalizers;
|
|
30
|
+
this.dataTransformerInterceptors = dataTransformerInterceptors;
|
|
31
|
+
this.dataNormalizersMap = {};
|
|
32
|
+
this.dataTransformerInterceptorsMap = {};
|
|
33
|
+
dataNormalizers.forEach(dataNormalizer => {
|
|
34
|
+
this.dataNormalizersMap[dataNormalizer.getUniqueKey()] = dataNormalizer;
|
|
35
|
+
});
|
|
36
|
+
dataTransformerInterceptors.forEach(interceptor => {
|
|
37
|
+
this.dataTransformerInterceptorsMap[interceptor.getUniqueKey()] = interceptor;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* This method takes an array of source and maps each item.
|
|
42
|
+
*
|
|
43
|
+
* @param builder
|
|
44
|
+
* @param source
|
|
45
|
+
* @param destinationType
|
|
46
|
+
*/
|
|
47
|
+
mapAll(builder, source, destinationType) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const destination = [];
|
|
50
|
+
for (const element of source) {
|
|
51
|
+
destination.push(yield this.map(builder, element, destinationType));
|
|
52
|
+
}
|
|
53
|
+
return destination;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* This method takes a builder, a source and maps it according to the builder. You can pass a `destinationType (optional)`
|
|
58
|
+
* that is an object that will be constructed.
|
|
59
|
+
*
|
|
60
|
+
* @param builder
|
|
61
|
+
* @param source
|
|
62
|
+
* @param destinationType
|
|
63
|
+
*/
|
|
64
|
+
map(builder, source, destinationType) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
let destination = {};
|
|
67
|
+
let interceptedSource = source;
|
|
68
|
+
// Execute the before interceptors.
|
|
69
|
+
for (const element of builder.beforeMappingInterceptors) {
|
|
70
|
+
const interceptor = this.dataTransformerInterceptorsMap[element.key];
|
|
71
|
+
if (interceptor === undefined) {
|
|
72
|
+
throw new DataMappingInterceptorNotFoundError("The interceptor wasn't found and cannot be loaded.", element.key);
|
|
73
|
+
}
|
|
74
|
+
// todo: Pass the options when we start using them.
|
|
75
|
+
interceptedSource = yield interceptor.beforeMapping(interceptedSource);
|
|
76
|
+
}
|
|
77
|
+
// Loop over the properties defined in the builder
|
|
78
|
+
for (const key in builder.nodes) {
|
|
79
|
+
if (builder.nodes.hasOwnProperty(key) === false) {
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const node = builder.nodes[key];
|
|
83
|
+
yield node.map(interceptedSource, destination, this.dataNormalizersMap);
|
|
84
|
+
}
|
|
85
|
+
// Execute the before interceptors.
|
|
86
|
+
for (const element of builder.afterMappingInterceptors) {
|
|
87
|
+
const interceptor = this.dataTransformerInterceptorsMap[element.key];
|
|
88
|
+
if (interceptor === undefined) {
|
|
89
|
+
throw new DataMappingInterceptorNotFoundError("The interceptor wasn't found and cannot be loaded.", element.key);
|
|
90
|
+
}
|
|
91
|
+
// todo pass the options when we start using it.
|
|
92
|
+
destination = yield interceptor.afterMapping(destination);
|
|
93
|
+
}
|
|
94
|
+
if (destinationType) {
|
|
95
|
+
destination = plainToInstance(destinationType, destination);
|
|
96
|
+
}
|
|
97
|
+
return destination;
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
DataMapper = __decorate([
|
|
102
|
+
moduleScoped(DataMappingModuleKeyname),
|
|
103
|
+
injectable(),
|
|
104
|
+
__param(0, injectAll("DataNormalizerInterface")),
|
|
105
|
+
__param(1, injectAll("DataTransformerInterceptor")),
|
|
106
|
+
__metadata("design:paramtypes", [Array, Array])
|
|
107
|
+
], DataMapper);
|
|
108
|
+
export { DataMapper };
|
|
109
|
+
//# sourceMappingURL=data.mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/data.mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mappers.js","sourceRoot":"","sources":["../../../../src/mappers/mappers.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { UndefinedSourcePropertyError } from "../errors/undefined-source-property.error";
|
|
2
|
+
export class BaseDataMappingNode {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.nodes = {};
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* This method is called by the node itself to tell its parent that it has been build and is ready to be added.
|
|
8
|
+
* We use this mechanism to force the `end()` method on the leaf to be called so we can do some validations before
|
|
9
|
+
* adding it to the tree.
|
|
10
|
+
*
|
|
11
|
+
* @param node
|
|
12
|
+
*/
|
|
13
|
+
addNode(node) {
|
|
14
|
+
if (node.sourceProperty === undefined) {
|
|
15
|
+
throw new UndefinedSourcePropertyError(node);
|
|
16
|
+
}
|
|
17
|
+
this.nodes[node.sourceProperty] = node;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=base-data-mapping.node.js.map
|
|
@@ -0,0 +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;QACW,UAAK,GAAoE,EAAE,CAAC;IAkBvF,CAAC;IAhBG;;;;;;OAMG;IACI,OAAO,CAAC,IAAuC;QAClD,IAAG,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE;YAClC,MAAM,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;IAC3C,CAAC;CAGJ"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { DataMappingNodeTypeEnum } from "../enums/data-mapping-node-type.enum";
|
|
11
|
+
import { DataNormalizerAlreadyAdded } from "../errors/data-normalizer-already-added.error";
|
|
12
|
+
import { DataMappingSourcePropertyNotFoundError } from "../errors/data-mapping-source-property-not-found.error";
|
|
13
|
+
import { ArrayDataMappingNodeInvalidSourcePropertyTypeError } from "../errors/array-data-mapping-node-invalid-source-property-type.error";
|
|
14
|
+
export class DataMappingLeaf {
|
|
15
|
+
constructor(root, parent, type = DataMappingNodeTypeEnum.Leaf) {
|
|
16
|
+
this.root = root;
|
|
17
|
+
this.parent = parent;
|
|
18
|
+
this.type = type;
|
|
19
|
+
/**
|
|
20
|
+
* This property contains an array of Normalizers to apply sequentially when mapping this property.
|
|
21
|
+
*/
|
|
22
|
+
this.normalizers = [];
|
|
23
|
+
/**
|
|
24
|
+
* This property contains an array of Normalizers that must be excluded from normalizers defined by parents.
|
|
25
|
+
*/
|
|
26
|
+
this.excludedNormalizers = new Set();
|
|
27
|
+
/**
|
|
28
|
+
* This method specified whether it's possible that this element not be present in the `source` object.
|
|
29
|
+
*/
|
|
30
|
+
this.isOptional = false;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* This is a setter for `sourceProperty`.
|
|
34
|
+
* @param sourceProperty
|
|
35
|
+
*/
|
|
36
|
+
setSourceProperty(sourceProperty) {
|
|
37
|
+
this.sourceProperty = sourceProperty;
|
|
38
|
+
return this;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* This is a setter for `destinationProperty`.
|
|
42
|
+
* @param destinationProperty
|
|
43
|
+
*/
|
|
44
|
+
setDestinationProperty(destinationProperty) {
|
|
45
|
+
this.destinationProperty = destinationProperty;
|
|
46
|
+
return this;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* This is a setter for `isOptional`.
|
|
50
|
+
* @param isOptional
|
|
51
|
+
*/
|
|
52
|
+
setIsOptional(isOptional) {
|
|
53
|
+
this.isOptional = isOptional;
|
|
54
|
+
return this;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* This methods adds a normalizer but checks that this normalizer hasn't been added already (either at the root) or
|
|
58
|
+
* directly on this leaf.
|
|
59
|
+
*
|
|
60
|
+
* @param normalizerUniqueKey
|
|
61
|
+
* @param options
|
|
62
|
+
*/
|
|
63
|
+
addNormalizer(normalizerUniqueKey, options) {
|
|
64
|
+
if (this.hasNormalizer(normalizerUniqueKey)) {
|
|
65
|
+
throw new DataNormalizerAlreadyAdded("The data normalizer '" + normalizerUniqueKey + "' has already been added to the leaf with destination property: '" + this.destinationProperty + "'.", normalizerUniqueKey, options);
|
|
66
|
+
}
|
|
67
|
+
if (this.root.hasNormalizer(normalizerUniqueKey)) {
|
|
68
|
+
throw new DataNormalizerAlreadyAdded("The data normalizer '" + normalizerUniqueKey + "' has already been added to the root and cannot be also added to the leaf with destination property: '" + this.destinationProperty + "'.", normalizerUniqueKey, options);
|
|
69
|
+
}
|
|
70
|
+
this.normalizers.push({
|
|
71
|
+
key: normalizerUniqueKey,
|
|
72
|
+
options,
|
|
73
|
+
});
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* This method simply returns whether the normalizer was already added to this node.
|
|
78
|
+
* @param normalizerUniqueKey
|
|
79
|
+
*/
|
|
80
|
+
hasNormalizer(normalizerUniqueKey) {
|
|
81
|
+
return this.normalizers.find(element => element.key === normalizerUniqueKey) !== undefined;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* This method adds a normalizer that must be excluded from the normalizers applied at a higher level.à
|
|
85
|
+
* @param normalizerUniqueKey
|
|
86
|
+
*/
|
|
87
|
+
excludeNormalizer(normalizerUniqueKey) {
|
|
88
|
+
if (this.excludedNormalizers.has(normalizerUniqueKey)) {
|
|
89
|
+
throw new DataNormalizerAlreadyAdded("The EXCLUDED data normalizer '" + normalizerUniqueKey + "' has already been added to this source property: '" + this.sourceProperty + "'.", normalizerUniqueKey);
|
|
90
|
+
}
|
|
91
|
+
this.excludedNormalizers.add(normalizerUniqueKey);
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* This method adds this node to its parent and returns the parent.
|
|
96
|
+
*/
|
|
97
|
+
end() {
|
|
98
|
+
// todo: Validate that we actually have all the properties needed (sourceProperty and destinationProperty) for example.
|
|
99
|
+
this.parent.addNode(this);
|
|
100
|
+
return this.parent;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* This method maps the `sourceProperty` from the `source` object and maps it to the `destinationProperty` of the
|
|
104
|
+
* `destination` object while applying the normalizers.
|
|
105
|
+
*
|
|
106
|
+
* @param source
|
|
107
|
+
* @param destination
|
|
108
|
+
* @param normalizersMap
|
|
109
|
+
*/
|
|
110
|
+
map(source, destination, normalizersMap) {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
if (source.hasOwnProperty(this.sourceProperty) === false) {
|
|
113
|
+
if (this.isOptional) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
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
|
+
}
|
|
118
|
+
const normalizers = this.root.normalizers.filter(element => this.excludedNormalizers.has(element.key) === false);
|
|
119
|
+
normalizers.push(...this.normalizers);
|
|
120
|
+
if (this.type === DataMappingNodeTypeEnum.ScalarArray) {
|
|
121
|
+
// This means that the source[propertyKey] contains an array of objects and each object should be mapped
|
|
122
|
+
const array = source[this.sourceProperty];
|
|
123
|
+
if (Array.isArray(array) === false) {
|
|
124
|
+
throw new ArrayDataMappingNodeInvalidSourcePropertyTypeError(`According to your schema, the property '${this.sourceProperty}' in the source object must contain an Array of Scalar. Instead, it contains: '${typeof array}'.`, this.sourceProperty);
|
|
125
|
+
}
|
|
126
|
+
destination[this.destinationProperty] = [];
|
|
127
|
+
for (let value of array) {
|
|
128
|
+
normalizers.forEach(element => {
|
|
129
|
+
const normalizer = normalizersMap[element.key];
|
|
130
|
+
value = normalizer.normalize(value, element.options);
|
|
131
|
+
});
|
|
132
|
+
destination[this.destinationProperty].push(value);
|
|
133
|
+
}
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
let value = source[this.sourceProperty];
|
|
137
|
+
normalizers.forEach(element => {
|
|
138
|
+
const normalizer = normalizersMap[element.key];
|
|
139
|
+
value = normalizer.normalize(value, element.options);
|
|
140
|
+
});
|
|
141
|
+
destination[this.destinationProperty] = value;
|
|
142
|
+
return;
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* This method imports a schema.
|
|
147
|
+
*
|
|
148
|
+
* @param schema
|
|
149
|
+
*/
|
|
150
|
+
import(schema) {
|
|
151
|
+
this.normalizers = schema.normalizers;
|
|
152
|
+
this.excludedNormalizers = new Set();
|
|
153
|
+
if (schema.hasOwnProperty("excludedNormalizers")) {
|
|
154
|
+
for (const item in schema.excludedNormalizers) {
|
|
155
|
+
this.excludeNormalizer(item);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
this.isOptional = schema.isOptional;
|
|
159
|
+
this.sourceProperty = schema.sourceProperty;
|
|
160
|
+
this.destinationProperty = schema.destinationProperty;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* This method exports this node.
|
|
164
|
+
*/
|
|
165
|
+
export() {
|
|
166
|
+
const excludedNormalizers = {};
|
|
167
|
+
for (const element of this.excludedNormalizers.values()) {
|
|
168
|
+
excludedNormalizers[element] = true;
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
"_type": this.type,
|
|
172
|
+
"sourceProperty": this.sourceProperty,
|
|
173
|
+
"destinationProperty": this.destinationProperty,
|
|
174
|
+
"isOptional": this.isOptional,
|
|
175
|
+
"normalizers": this.normalizers,
|
|
176
|
+
"excludedNormalizers": excludedNormalizers,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=data-mapping.leaf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-mapping.leaf.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.leaf.ts"],"names":[],"mappings":"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"}
|