@pristine-ts/data-mapping-common 0.0.283
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/auto-data-mapping.builder.js +137 -0
- package/dist/lib/cjs/builders/auto-data-mapping.builder.js.map +1 -0
- package/dist/lib/cjs/builders/builders.js +19 -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-common.js +26 -0
- package/dist/lib/cjs/data-mapping-common.js.map +1 -0
- package/dist/lib/cjs/decorators/decorators.js +18 -0
- package/dist/lib/cjs/decorators/decorators.js.map +1 -0
- package/dist/lib/cjs/decorators/type.decorator.js +20 -0
- package/dist/lib/cjs/decorators/type.decorator.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 +19 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/enums/metadata.enum.js +8 -0
- package/dist/lib/cjs/enums/metadata.enum.js.map +1 -0
- package/dist/lib/cjs/errors/array-data-mapping-node-invalid-source-property-type.error.js +17 -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 +17 -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 +17 -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 +17 -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 +17 -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 +17 -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 +17 -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 +17 -0
- package/dist/lib/cjs/errors/undefined-source-property.error.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 +103 -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 +217 -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 +12 -0
- package/dist/lib/cjs/normalizer-options/base-normalizer.options.js.map +1 -0
- package/dist/lib/cjs/normalizer-options/date-normalizer.options.js +21 -0
- package/dist/lib/cjs/normalizer-options/date-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 +22 -0
- package/dist/lib/cjs/normalizer-options/normalizer-options.js.map +1 -0
- package/dist/lib/cjs/normalizer-options/number-normalizer.options.js +16 -0
- package/dist/lib/cjs/normalizer-options/number-normalizer.options.js.map +1 -0
- package/dist/lib/cjs/normalizer-options/string-normalizer.options.js +17 -0
- package/dist/lib/cjs/normalizer-options/string-normalizer.options.js.map +1 -0
- package/dist/lib/cjs/normalizers/date.normalizer.js +62 -0
- package/dist/lib/cjs/normalizers/date.normalizer.js.map +1 -0
- package/dist/lib/cjs/normalizers/lowercase.normalizer.js +20 -0
- package/dist/lib/cjs/normalizers/lowercase.normalizer.js.map +1 -0
- package/dist/lib/cjs/normalizers/normalizers.js +21 -0
- package/dist/lib/cjs/normalizers/normalizers.js.map +1 -0
- package/dist/lib/cjs/normalizers/number.normalizer.js +30 -0
- package/dist/lib/cjs/normalizers/number.normalizer.js.map +1 -0
- package/dist/lib/cjs/normalizers/string.normalizer.js +52 -0
- package/dist/lib/cjs/normalizers/string.normalizer.js.map +1 -0
- package/dist/lib/cjs/options/auto-data-mapping-builder.options.js +11 -0
- package/dist/lib/cjs/options/auto-data-mapping-builder.options.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/auto-data-mapping.builder.js +133 -0
- package/dist/lib/esm/builders/auto-data-mapping.builder.js.map +1 -0
- package/dist/lib/esm/builders/builders.js +3 -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-common.js +10 -0
- package/dist/lib/esm/data-mapping-common.js.map +1 -0
- package/dist/lib/esm/decorators/decorators.js +2 -0
- package/dist/lib/esm/decorators/decorators.js.map +1 -0
- package/dist/lib/esm/decorators/type.decorator.js +16 -0
- package/dist/lib/esm/decorators/type.decorator.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 +3 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/enums/metadata.enum.js +5 -0
- package/dist/lib/esm/enums/metadata.enum.js.map +1 -0
- package/dist/lib/esm/errors/array-data-mapping-node-invalid-source-property-type.error.js +13 -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 +13 -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 +13 -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 +13 -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 +13 -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 +13 -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 +13 -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 +13 -0
- package/dist/lib/esm/errors/undefined-source-property.error.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 +99 -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 +213 -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 +8 -0
- package/dist/lib/esm/normalizer-options/base-normalizer.options.js.map +1 -0
- package/dist/lib/esm/normalizer-options/date-normalizer.options.js +17 -0
- package/dist/lib/esm/normalizer-options/date-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 +6 -0
- package/dist/lib/esm/normalizer-options/normalizer-options.js.map +1 -0
- package/dist/lib/esm/normalizer-options/number-normalizer.options.js +12 -0
- package/dist/lib/esm/normalizer-options/number-normalizer.options.js.map +1 -0
- package/dist/lib/esm/normalizer-options/string-normalizer.options.js +13 -0
- package/dist/lib/esm/normalizer-options/string-normalizer.options.js.map +1 -0
- package/dist/lib/esm/normalizers/date.normalizer.js +58 -0
- package/dist/lib/esm/normalizers/date.normalizer.js.map +1 -0
- package/dist/lib/esm/normalizers/lowercase.normalizer.js +16 -0
- package/dist/lib/esm/normalizers/lowercase.normalizer.js.map +1 -0
- package/dist/lib/esm/normalizers/normalizers.js +5 -0
- package/dist/lib/esm/normalizers/normalizers.js.map +1 -0
- package/dist/lib/esm/normalizers/number.normalizer.js +26 -0
- package/dist/lib/esm/normalizers/number.normalizer.js.map +1 -0
- package/dist/lib/esm/normalizers/string.normalizer.js +48 -0
- package/dist/lib/esm/normalizers/string.normalizer.js.map +1 -0
- package/dist/lib/esm/options/auto-data-mapping-builder.options.js +7 -0
- package/dist/lib/esm/options/auto-data-mapping-builder.options.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/auto-data-mapping.builder.d.ts +25 -0
- package/dist/types/builders/builders.d.ts +2 -0
- package/dist/types/builders/data-mapping.builder.d.ts +110 -0
- package/dist/types/data-mapping-common.d.ts +9 -0
- package/dist/types/decorators/decorators.d.ts +1 -0
- package/dist/types/decorators/type.decorator.d.ts +2 -0
- package/dist/types/enums/data-mapping-node-type.enum.d.ts +6 -0
- package/dist/types/enums/enums.d.ts +2 -0
- package/dist/types/enums/metadata.enum.d.ts +3 -0
- package/dist/types/errors/array-data-mapping-node-invalid-source-property-type.error.d.ts +6 -0
- package/dist/types/errors/data-after-mapping-interceptor-already-added.error.d.ts +7 -0
- package/dist/types/errors/data-before-mapping-interceptor-already-added.error.d.ts +7 -0
- package/dist/types/errors/data-mapping-interceptor-not-found.error.d.ts +7 -0
- package/dist/types/errors/data-mapping-source-property-not-found.error.d.ts +6 -0
- package/dist/types/errors/data-normalizer-already-added.error.d.ts +6 -0
- package/dist/types/errors/errors.d.ts +8 -0
- package/dist/types/errors/normalizer-invalid-source-type.error.d.ts +6 -0
- package/dist/types/errors/undefined-source-property.error.d.ts +8 -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 +38 -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 +104 -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/date-normalizer.options.d.ts +12 -0
- package/dist/types/normalizer-options/lowercase-normalizer.options.d.ts +4 -0
- package/dist/types/normalizer-options/normalizer-options.d.ts +5 -0
- package/dist/types/normalizer-options/number-normalizer.options.d.ts +8 -0
- package/dist/types/normalizer-options/string-normalizer.options.d.ts +12 -0
- package/dist/types/normalizers/date.normalizer.d.ts +6 -0
- package/dist/types/normalizers/lowercase.normalizer.d.ts +7 -0
- package/dist/types/normalizers/normalizers.d.ts +4 -0
- package/dist/types/normalizers/number.normalizer.d.ts +6 -0
- package/dist/types/normalizers/string.normalizer.d.ts +6 -0
- package/dist/types/options/auto-data-mapping-builder.options.d.ts +11 -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 +67 -0
- package/readme.md +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/number-normalizer.options.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAOhC,YAAmB,OAA0C;;QAN7D;;;WAGG;QACI,oBAAe,GAAY,IAAI,CAAC;QAGnC,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,IAAI,CAAC,eAAe,CAAC;IAC5E,CAAC;CACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export class StringNormalizerOptions {
|
|
2
|
+
constructor(options) {
|
|
3
|
+
var _a;
|
|
4
|
+
/**
|
|
5
|
+
* This property specifies whether an undefined value should be ignored and simply returned or treated as a potential string
|
|
6
|
+
* and return an empty string `""`.
|
|
7
|
+
*/
|
|
8
|
+
this.ignoreUndefined = true;
|
|
9
|
+
this.ignoreUndefined = (_a = options === null || options === void 0 ? void 0 : options.ignoreUndefined) !== null && _a !== void 0 ? _a : this.ignoreUndefined;
|
|
10
|
+
this.dateFormat = options === null || options === void 0 ? void 0 : options.dateFormat;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=string-normalizer.options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/string-normalizer.options.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAYhC,YAAmB,OAA0C;;QAX7D;;;WAGG;QACI,oBAAe,GAAY,IAAI,CAAC;QAQnC,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,mCAAI,IAAI,CAAC,eAAe,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC;IAC1C,CAAC;CACJ"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { TypeEnum, TypeUtils } from "@pristine-ts/metadata";
|
|
2
|
+
export class DateNormalizer {
|
|
3
|
+
getUniqueKey() {
|
|
4
|
+
return DateNormalizer.name;
|
|
5
|
+
}
|
|
6
|
+
normalize(source, options) {
|
|
7
|
+
const typeEnum = TypeUtils.getTypeOfValue(source);
|
|
8
|
+
if (typeEnum === undefined) {
|
|
9
|
+
if ((options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) === false) {
|
|
10
|
+
return new Date();
|
|
11
|
+
}
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
let date;
|
|
15
|
+
switch (typeEnum) {
|
|
16
|
+
case TypeEnum.Number:
|
|
17
|
+
if ((options === null || options === void 0 ? void 0 : options.treatNumbers) === "seconds") {
|
|
18
|
+
source = source * 1000;
|
|
19
|
+
}
|
|
20
|
+
case TypeEnum.String:
|
|
21
|
+
date = new Date(source);
|
|
22
|
+
if (!isNaN(date.getTime())) {
|
|
23
|
+
return date;
|
|
24
|
+
}
|
|
25
|
+
break;
|
|
26
|
+
case TypeEnum.Object:
|
|
27
|
+
date = new Date();
|
|
28
|
+
// todo: Allow this property to be customizable in the options eventually
|
|
29
|
+
if (source.hasOwnProperty("year")) {
|
|
30
|
+
date.setFullYear(source["year"]);
|
|
31
|
+
}
|
|
32
|
+
if (source.hasOwnProperty("month")) {
|
|
33
|
+
date.setMonth(source["month"]);
|
|
34
|
+
}
|
|
35
|
+
if (source.hasOwnProperty("day")) {
|
|
36
|
+
date.setDate(source["day"]);
|
|
37
|
+
}
|
|
38
|
+
if (source.hasOwnProperty("hours")) {
|
|
39
|
+
date.setHours(source["hours"]);
|
|
40
|
+
}
|
|
41
|
+
if (source.hasOwnProperty("minutes")) {
|
|
42
|
+
date.setMinutes(source["minutes"]);
|
|
43
|
+
}
|
|
44
|
+
if (source.hasOwnProperty("seconds")) {
|
|
45
|
+
date.setSeconds(source["seconds"]);
|
|
46
|
+
}
|
|
47
|
+
if (!isNaN(date.getTime())) {
|
|
48
|
+
return date;
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
if ((options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) === false) {
|
|
53
|
+
return new Date();
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=date.normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.normalizer.js","sourceRoot":"","sources":["../../../../src/normalizers/date.normalizer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAE1D,MAAM,OAAO,cAAc;IACvB,YAAY;QACR,OAAO,cAAc,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,SAAS,CAAC,MAAW,EAAE,OAA+B;QAClD,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,4BAA4B,MAAK,KAAK,EAAE,CAAC;gBAClD,OAAO,IAAI,IAAI,EAAE,CAAC;YACtB,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,IAAI,IAAU,CAAC;QAEf,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,MAAM;gBAChB,IAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,MAAK,SAAS,EAAE,CAAC;oBACrC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;gBAC3B,CAAC;YAEL,KAAK,QAAQ,CAAC,MAAM;gBAChB,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;gBAExB,IAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACxB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,MAAM;YAEV,KAAK,QAAQ,CAAC,MAAM;gBAChB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAElB,yEAAyE;gBACzE,IAAG,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChC,CAAC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,CAAC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvC,CAAC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;oBAClC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACvC,CAAC;gBAED,IAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;oBACxB,OAAO,IAAI,CAAC;gBAChB,CAAC;gBAED,MAAM;QACd,CAAC;QAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,4BAA4B,MAAK,KAAK,EAAE,CAAC;YAClD,OAAO,IAAI,IAAI,EAAE,CAAC;QACtB,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CAEJ"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NormalizerInvalidSourceTypeError } from "../errors/normalizer-invalid-source-type.error";
|
|
2
|
+
export class LowercaseNormalizer {
|
|
3
|
+
getUniqueKey() {
|
|
4
|
+
return LowercaseNormalizer.name;
|
|
5
|
+
}
|
|
6
|
+
normalize(source, options) {
|
|
7
|
+
if (typeof source !== "string") {
|
|
8
|
+
if (options && options.shouldThrowIfTypeIsNotString) {
|
|
9
|
+
throw new NormalizerInvalidSourceTypeError("The 'LowercaseNormalizer' expects the source value to be of type 'string'. Type '" + typeof source + "' was received.", this.getUniqueKey(), options, source, typeof source);
|
|
10
|
+
}
|
|
11
|
+
return source;
|
|
12
|
+
}
|
|
13
|
+
return source.toLowerCase();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=lowercase.normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lowercase.normalizer.js","sourceRoot":"","sources":["../../../../src/normalizers/lowercase.normalizer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gCAAgC,EAAC,MAAM,gDAAgD,CAAC;AAGhG,MAAM,OAAO,mBAAmB;IAC5B,YAAY;QACR,OAAO,mBAAmB,CAAC,IAAI,CAAC;IACpC,CAAC;IAED,SAAS,CAAC,MAAW,EAAE,OAAoC;QACvD,IAAG,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAG,OAAO,IAAI,OAAO,CAAC,4BAA4B,EAAE,CAAC;gBACjD,MAAM,IAAI,gCAAgC,CAAC,mFAAmF,GAAG,OAAO,MAAM,GAAE,iBAAiB,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,MAAM,CAAC,CAAA;YAC3N,CAAC;YAED,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizers.js","sourceRoot":"","sources":["../../../../src/normalizers/normalizers.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TypeEnum, TypeUtils } from "@pristine-ts/metadata";
|
|
2
|
+
export class NumberNormalizer {
|
|
3
|
+
getUniqueKey() {
|
|
4
|
+
return NumberNormalizer.name;
|
|
5
|
+
}
|
|
6
|
+
normalize(source, options) {
|
|
7
|
+
const typeEnum = TypeUtils.getTypeOfValue(source);
|
|
8
|
+
switch (typeEnum) {
|
|
9
|
+
case TypeEnum.String:
|
|
10
|
+
const value = parseFloat(source);
|
|
11
|
+
if (isNaN(value) === false) {
|
|
12
|
+
return value;
|
|
13
|
+
}
|
|
14
|
+
break;
|
|
15
|
+
case TypeEnum.Number:
|
|
16
|
+
return source;
|
|
17
|
+
}
|
|
18
|
+
if (typeEnum === undefined || typeEnum === TypeEnum.Null) {
|
|
19
|
+
if ((options === null || options === void 0 ? void 0 : options.ignoreUndefined) === false) {
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=number.normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"number.normalizer.js","sourceRoot":"","sources":["../../../../src/normalizers/number.normalizer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAE1D,MAAM,OAAO,gBAAgB;IACzB,YAAY;QACR,OAAO,gBAAgB,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,MAAW,EAAE,OAAiC;QACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElD,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,MAAM;gBAChB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;gBAEjC,IAAG,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACjB,CAAC;gBACD,MAAM;YAEV,KAAK,QAAQ,CAAC,MAAM;gBAChB,OAAO,MAAM,CAAC;QACtB,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,MAAK,KAAK,EAAE,CAAC;gBACrC,OAAO,CAAC,CAAC;YACb,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { TypeEnum, TypeUtils } from "@pristine-ts/metadata";
|
|
2
|
+
import { format } from "date-fns";
|
|
3
|
+
export class StringNormalizer {
|
|
4
|
+
getUniqueKey() {
|
|
5
|
+
return StringNormalizer.name;
|
|
6
|
+
}
|
|
7
|
+
normalize(source, options) {
|
|
8
|
+
const typeEnum = TypeUtils.getTypeOfValue(source);
|
|
9
|
+
if (typeEnum === undefined || typeEnum === TypeEnum.Null) {
|
|
10
|
+
if ((options === null || options === void 0 ? void 0 : options.ignoreUndefined) === false) {
|
|
11
|
+
return "";
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
switch (typeEnum) {
|
|
16
|
+
case TypeEnum.String:
|
|
17
|
+
return source;
|
|
18
|
+
case TypeEnum.Number:
|
|
19
|
+
return "" + source;
|
|
20
|
+
case TypeEnum.Boolean:
|
|
21
|
+
return source ? "true" : "false";
|
|
22
|
+
case TypeEnum.Date:
|
|
23
|
+
if (options === null || options === void 0 ? void 0 : options.dateFormat) {
|
|
24
|
+
return format(source, options.dateFormat);
|
|
25
|
+
}
|
|
26
|
+
// This will return the default format we want: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON
|
|
27
|
+
return source.toJSON();
|
|
28
|
+
case TypeEnum.Array:
|
|
29
|
+
return source.map((item) => this.normalize(item, options));
|
|
30
|
+
case TypeEnum.Symbol:
|
|
31
|
+
return source.toString();
|
|
32
|
+
case TypeEnum.Object:
|
|
33
|
+
if (source.hasOwnProperty("toString") === true) {
|
|
34
|
+
return source.toString();
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
return JSON.stringify(source);
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
return "" + source;
|
|
41
|
+
}
|
|
42
|
+
// For now, let's do that for other types. We can make it better eventually.
|
|
43
|
+
default:
|
|
44
|
+
return "" + source;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=string.normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string.normalizer.js","sourceRoot":"","sources":["../../../../src/normalizers/string.normalizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAE1D,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAEhC,MAAM,OAAO,gBAAgB;IACzB,YAAY;QACR,OAAO,gBAAgB,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,MAAW,EAAE,OAAiC;QACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;YACvD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,MAAK,KAAK,EAAE,CAAC;gBACrC,OAAO,EAAE,CAAC;YACd,CAAC;YAED,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACf,KAAK,QAAQ,CAAC,MAAM;gBAChB,OAAO,MAAM,CAAC;YAElB,KAAK,QAAQ,CAAC,MAAM;gBAChB,OAAO,EAAE,GAAG,MAAM,CAAC;YAEvB,KAAK,QAAQ,CAAC,OAAO;gBACjB,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAErC,KAAK,QAAQ,CAAC,IAAI;gBACd,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE,CAAC;oBACtB,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBAC9C,CAAC;gBAED,4IAA4I;gBAC5I,OAAQ,MAAe,CAAC,MAAM,EAAE,CAAC;YAErC,KAAK,QAAQ,CAAC,KAAK;gBACf,OAAO,MAAM,CAAC,GAAG,CAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAErE,KAAK,QAAQ,CAAC,MAAM;gBAChB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;YAE7B,KAAK,QAAQ,CAAC,MAAM;gBAChB,IAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC;oBAC5C,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC7B,CAAC;gBAED,IAAI,CAAC;oBACD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACT,OAAO,EAAE,GAAG,MAAM,CAAA;gBACtB,CAAC;YAED,4EAA4E;YAChF;gBACI,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,CAAC;IACL,CAAC;CACJ"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export class AutoDataMappingBuilderOptions {
|
|
2
|
+
constructor(options) {
|
|
3
|
+
var _a;
|
|
4
|
+
this.isOptionalDefaultValue = (_a = options === null || options === void 0 ? void 0 : options.isOptionalDefaultValue) !== null && _a !== void 0 ? _a : false;
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=auto-data-mapping-builder.options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-data-mapping-builder.options.js","sourceRoot":"","sources":["../../../../src/options/auto-data-mapping-builder.options.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,6BAA6B;IAUtC,YAAY,OAAgD;;QACxD,IAAI,CAAC,sBAAsB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,mCAAI,KAAK,CAAC;IAC3E,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-mapping-interceptor-unique-key.type.js","sourceRoot":"","sources":["../../../../src/types/data-mapping-interceptor-unique-key.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-normalizer-unique-key.type.js","sourceRoot":"","sources":["../../../../src/types/data-normalizer-unique-key.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/types/types.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ClassConstructor } from "class-transformer";
|
|
2
|
+
import { DataMappingBuilder } from "./data-mapping.builder";
|
|
3
|
+
import { AutoDataMappingBuilderOptions } from "../options/auto-data-mapping-builder.options";
|
|
4
|
+
export declare class AutoDataMappingBuilder {
|
|
5
|
+
/**
|
|
6
|
+
* This method receives a source object and a destinationType that corresponds to the type of the class
|
|
7
|
+
* that the source should be mapped to. It then creates a DataMappingBuilder object that contains the schema
|
|
8
|
+
* needed to map the source to the destinationType.
|
|
9
|
+
* @param source
|
|
10
|
+
* @param destinationType
|
|
11
|
+
* @param options
|
|
12
|
+
*/
|
|
13
|
+
build(source: any, destinationType: ClassConstructor<any>, options?: AutoDataMappingBuilderOptions): DataMappingBuilder;
|
|
14
|
+
/**
|
|
15
|
+
* This method is the internal method that is called recursively to build the schema.
|
|
16
|
+
*
|
|
17
|
+
* @param source
|
|
18
|
+
* @param destinationType
|
|
19
|
+
* @param root
|
|
20
|
+
* @param parent
|
|
21
|
+
* @param options
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
private internalBuild;
|
|
25
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { DataMappingNode } from "../nodes/data-mapping.node";
|
|
2
|
+
import { DataNormalizerUniqueKey } from "../types/data-normalizer-unique-key.type";
|
|
3
|
+
import { DataMappingInterceptorUniqueKeyType } from "../types/data-mapping-interceptor-unique-key.type";
|
|
4
|
+
import { DataMappingLeaf } from "../nodes/data-mapping.leaf";
|
|
5
|
+
import { BaseDataMappingNode } from "../nodes/base-data-mapping.node";
|
|
6
|
+
export declare class DataMappingBuilder extends BaseDataMappingNode {
|
|
7
|
+
normalizers: {
|
|
8
|
+
key: DataNormalizerUniqueKey;
|
|
9
|
+
options: any;
|
|
10
|
+
}[];
|
|
11
|
+
beforeMappingInterceptors: {
|
|
12
|
+
key: DataMappingInterceptorUniqueKeyType;
|
|
13
|
+
options: any;
|
|
14
|
+
}[];
|
|
15
|
+
afterMappingInterceptors: {
|
|
16
|
+
key: DataMappingInterceptorUniqueKeyType;
|
|
17
|
+
options: any;
|
|
18
|
+
}[];
|
|
19
|
+
/**
|
|
20
|
+
* This method adds a normalizer to the root that will be applied on each node (unless they explicitly exclude to do
|
|
21
|
+
* so).
|
|
22
|
+
*
|
|
23
|
+
* @param normalizerUniqueKey
|
|
24
|
+
* @param options
|
|
25
|
+
*/
|
|
26
|
+
addNormalizer(normalizerUniqueKey: DataNormalizerUniqueKey, options?: any): DataMappingBuilder;
|
|
27
|
+
/**
|
|
28
|
+
* This method returns whether there's a normalizer for the specified key or not.
|
|
29
|
+
*
|
|
30
|
+
* @param normalizerUniqueKey
|
|
31
|
+
*/
|
|
32
|
+
hasNormalizer(normalizerUniqueKey: DataNormalizerUniqueKey): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* This method adds an interceptor that will be executed **before** the object is mapped.
|
|
35
|
+
*
|
|
36
|
+
* @param key
|
|
37
|
+
* @param options
|
|
38
|
+
*/
|
|
39
|
+
addBeforeMappingInterceptor(key: DataMappingInterceptorUniqueKeyType, options?: any): DataMappingBuilder;
|
|
40
|
+
/**
|
|
41
|
+
* This method returns whether a **before** interceptor already exists.
|
|
42
|
+
* @param key
|
|
43
|
+
*/
|
|
44
|
+
hasBeforeMappingInterceptor(key: DataMappingInterceptorUniqueKeyType): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* This method adds an interceptor that will be executed **after** the object is mapped.
|
|
47
|
+
*
|
|
48
|
+
* @param key
|
|
49
|
+
* @param options
|
|
50
|
+
*/
|
|
51
|
+
addAfterMappingInterceptor(key: DataMappingInterceptorUniqueKeyType, options?: any): DataMappingBuilder;
|
|
52
|
+
/**
|
|
53
|
+
* This method returns whether a **after** interceptor already exists.
|
|
54
|
+
* @param key
|
|
55
|
+
*/
|
|
56
|
+
hasAfterMappingInterceptor(key: DataMappingInterceptorUniqueKeyType): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* This property creates a new DataMappingLeaf and returns it. It doesn't add it yet. To do so, the `end()` method
|
|
59
|
+
* must be called.
|
|
60
|
+
*/
|
|
61
|
+
add(): DataMappingLeaf;
|
|
62
|
+
/**
|
|
63
|
+
* This method adds a nesting level. This should be used when the property contains an object and you want to map
|
|
64
|
+
* this object into another object.
|
|
65
|
+
*/
|
|
66
|
+
addNestingLevel(): DataMappingNode;
|
|
67
|
+
/**
|
|
68
|
+
* This method adds an array of Scalar allowing you to apply the normalizer on each scalar in the array. The
|
|
69
|
+
* `sourceProperty` and `destinationProperty` correspond to the name of the property that is an array. But, the
|
|
70
|
+
* values in the array will be normalized using the normalizer.
|
|
71
|
+
*
|
|
72
|
+
*/
|
|
73
|
+
addArrayOfScalar(): DataMappingLeaf;
|
|
74
|
+
/**
|
|
75
|
+
* This method adds an array of objects allowing to define a node for each property in the object. Each object in
|
|
76
|
+
* the array will be treated as being the same.
|
|
77
|
+
*/
|
|
78
|
+
addArrayOfObjects(): DataMappingNode;
|
|
79
|
+
/**
|
|
80
|
+
* This method is called at the end just to make it nice since all the nodes will have one, it's nice
|
|
81
|
+
* that the builder has one too.
|
|
82
|
+
*/
|
|
83
|
+
end(): DataMappingBuilder;
|
|
84
|
+
/**
|
|
85
|
+
* This method imports a schema.
|
|
86
|
+
*
|
|
87
|
+
* @param schema
|
|
88
|
+
*/
|
|
89
|
+
import(schema: any): void;
|
|
90
|
+
/**
|
|
91
|
+
* This method exports this node.
|
|
92
|
+
*/
|
|
93
|
+
export(): {
|
|
94
|
+
nodes: {
|
|
95
|
+
[x: string]: DataMappingLeaf | DataMappingNode;
|
|
96
|
+
};
|
|
97
|
+
normalizers: {
|
|
98
|
+
key: string;
|
|
99
|
+
options: any;
|
|
100
|
+
}[];
|
|
101
|
+
beforeMappingInterceptors: {
|
|
102
|
+
key: string;
|
|
103
|
+
options: any;
|
|
104
|
+
}[];
|
|
105
|
+
afterMappingInterceptors: {
|
|
106
|
+
key: string;
|
|
107
|
+
options: any;
|
|
108
|
+
}[];
|
|
109
|
+
};
|
|
110
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./builders/builders";
|
|
2
|
+
export * from "./enums/enums";
|
|
3
|
+
export * from "./errors/errors";
|
|
4
|
+
export * from "./interfaces/interfaces";
|
|
5
|
+
export * from "./mappers/mappers";
|
|
6
|
+
export * from "./nodes/nodes";
|
|
7
|
+
export * from "./normalizer-options/normalizer-options";
|
|
8
|
+
export * from "./normalizers/normalizers";
|
|
9
|
+
export * from "./types/types";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./type.decorator";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This Error is thrown when a node is of type array but the `source[sourceProperty]` doesn't actually contain an array.
|
|
3
|
+
*/
|
|
4
|
+
export declare class ArrayDataMappingNodeInvalidSourcePropertyTypeError extends Error {
|
|
5
|
+
constructor(message: string, sourceProperty: string);
|
|
6
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataMappingInterceptorUniqueKeyType } from "../types/data-mapping-interceptor-unique-key.type";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when the before row interceptor is added more than once to the builder.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DataAfterMappingInterceptorAlreadyAddedError extends Error {
|
|
6
|
+
constructor(message: string, uniqueKey: DataMappingInterceptorUniqueKeyType, options?: any);
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataMappingInterceptorUniqueKeyType } from "../types/data-mapping-interceptor-unique-key.type";
|
|
2
|
+
/**
|
|
3
|
+
* This Error is thrown when the after row interceptor is added more than once to the builder.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DataBeforeMappingInterceptorAlreadyAddedError extends Error {
|
|
6
|
+
constructor(message: string, uniqueKey: DataMappingInterceptorUniqueKeyType, options?: any);
|
|
7
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataMappingInterceptorUniqueKeyType } from "../types/data-mapping-interceptor-unique-key.type";
|
|
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 declare class DataMappingInterceptorNotFoundError extends Error {
|
|
6
|
+
constructor(message: string, uniqueKey: DataMappingInterceptorUniqueKeyType, options?: any);
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
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";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This Error is thrown when an invalid source type is passed to the source type while the normalizer expects another type.
|
|
3
|
+
*/
|
|
4
|
+
export declare class NormalizerInvalidSourceTypeError extends Error {
|
|
5
|
+
constructor(message: string, normalizerUniqueKey: string, options: any, source: any, sourceType: any);
|
|
6
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DataMappingLeaf } from "../nodes/data-mapping.leaf";
|
|
2
|
+
import { DataMappingNode } from "../nodes/data-mapping.node";
|
|
3
|
+
/**
|
|
4
|
+
* This Error is thrown when you are trying to add a Node which has an undefined sourceProperty value.
|
|
5
|
+
*/
|
|
6
|
+
export declare class UndefinedSourcePropertyError extends Error {
|
|
7
|
+
constructor(node: DataMappingLeaf | DataMappingNode);
|
|
8
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DataMappingInterceptorUniqueKeyType } from "../types/data-mapping-interceptor-unique-key.type";
|
|
2
|
+
export interface DataMappingInterceptorInterface {
|
|
3
|
+
/**
|
|
4
|
+
* Every data mapping interceptor must define a unique key. Then, during the mapping, the schema can specify which
|
|
5
|
+
* interceptors must be called.
|
|
6
|
+
*/
|
|
7
|
+
getUniqueKey(): DataMappingInterceptorUniqueKeyType;
|
|
8
|
+
/**
|
|
9
|
+
* This method is called before the row is being mapped and normalized. It allows you to combine fields for example if that's what you want.
|
|
10
|
+
* @param row
|
|
11
|
+
*/
|
|
12
|
+
beforeMapping(row: any): Promise<any>;
|
|
13
|
+
/**
|
|
14
|
+
* This method is called after the row is being mapped and normalized. It can allow you to apply operations on each
|
|
15
|
+
* field or combine fields for example.
|
|
16
|
+
* @param row
|
|
17
|
+
*/
|
|
18
|
+
afterMapping(row: any): Promise<any>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DataNormalizerUniqueKey } from "../types/data-normalizer-unique-key.type";
|
|
2
|
+
export interface DataNormalizerInterface<T, R> {
|
|
3
|
+
/**
|
|
4
|
+
* Every data normalizer must define a unique key. Then, during the transformation, the schema can specify which
|
|
5
|
+
* normalizer it must use. Using the unique key, we can quickly (in O(1)) retrieve the normalizer.
|
|
6
|
+
*/
|
|
7
|
+
getUniqueKey(): DataNormalizerUniqueKey;
|
|
8
|
+
/**
|
|
9
|
+
* This method takes the source property value, can receive options to control the behaviour (example, you might
|
|
10
|
+
* want to specify a number of significant digits or a data format) and returns the normalized value.
|
|
11
|
+
* @param source
|
|
12
|
+
* @param options
|
|
13
|
+
*/
|
|
14
|
+
normalize(source: any, options?: R): T;
|
|
15
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DataNormalizerInterface } from "../interfaces/data-normalizer.interface";
|
|
2
|
+
import { DataMappingInterceptorInterface } from "../interfaces/data-mapping-interceptor.interface";
|
|
3
|
+
import { DataMappingBuilder } from "../builders/data-mapping.builder";
|
|
4
|
+
import { ClassConstructor } from "class-transformer";
|
|
5
|
+
import { AutoDataMappingBuilder } from "../builders/auto-data-mapping.builder";
|
|
6
|
+
import { AutoDataMappingBuilderOptions } from "../options/auto-data-mapping-builder.options";
|
|
7
|
+
export declare class DataMapper {
|
|
8
|
+
private readonly autoDataMappingBuilder;
|
|
9
|
+
private readonly dataNormalizers;
|
|
10
|
+
private readonly dataTransformerInterceptors;
|
|
11
|
+
private readonly dataNormalizersMap;
|
|
12
|
+
private readonly dataTransformerInterceptorsMap;
|
|
13
|
+
constructor(autoDataMappingBuilder: AutoDataMappingBuilder, dataNormalizers: DataNormalizerInterface<any, any>[], dataTransformerInterceptors: DataMappingInterceptorInterface[]);
|
|
14
|
+
/**
|
|
15
|
+
* This method takes an array of source and maps each item.
|
|
16
|
+
*
|
|
17
|
+
* @param builder
|
|
18
|
+
* @param source
|
|
19
|
+
* @param destinationType
|
|
20
|
+
*/
|
|
21
|
+
mapAll(builder: DataMappingBuilder, source: any[], destinationType?: ClassConstructor<any>): Promise<any[]>;
|
|
22
|
+
/**
|
|
23
|
+
* This method automatically maps a source object into the DestinationType.
|
|
24
|
+
* @param source
|
|
25
|
+
* @param destinationType
|
|
26
|
+
* @param options
|
|
27
|
+
*/
|
|
28
|
+
autoMap(source: any, destinationType: ClassConstructor<any>, options?: AutoDataMappingBuilderOptions): Promise<any>;
|
|
29
|
+
/**
|
|
30
|
+
* This method takes a builder, a source and maps it according to the builder. You can pass a `destinationType (optional)`
|
|
31
|
+
* that is an object that will be constructed.
|
|
32
|
+
*
|
|
33
|
+
* @param builder
|
|
34
|
+
* @param source
|
|
35
|
+
* @param destinationType
|
|
36
|
+
*/
|
|
37
|
+
map(builder: DataMappingBuilder, source: any, destinationType?: ClassConstructor<any>): Promise<any>;
|
|
38
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./data.mapper";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DataMappingNode } from "./data-mapping.node";
|
|
2
|
+
import { DataMappingLeaf } from "./data-mapping.leaf";
|
|
3
|
+
export declare abstract class BaseDataMappingNode {
|
|
4
|
+
nodes: {
|
|
5
|
+
[sourceProperty in string]: DataMappingNode | DataMappingLeaf;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* This method is called by the node itself to tell its parent that it has been build and is ready to be added.
|
|
9
|
+
* We use this mechanism to force the `end()` method on the leaf to be called so we can do some validations before
|
|
10
|
+
* adding it to the tree.
|
|
11
|
+
*
|
|
12
|
+
* @param node
|
|
13
|
+
*/
|
|
14
|
+
addNode(node: DataMappingLeaf | DataMappingNode): void;
|
|
15
|
+
}
|