@pristine-ts/data-mapping 0.0.278 → 0.0.279
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/cjs/builders/auto-data-mapping.builder.js +147 -0
- package/dist/lib/cjs/builders/auto-data-mapping.builder.js.map +1 -0
- package/dist/lib/cjs/builders/builders.js +1 -0
- package/dist/lib/cjs/builders/builders.js.map +1 -1
- 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/mappers/data.mapper.js +18 -4
- package/dist/lib/cjs/mappers/data.mapper.js.map +1 -1
- package/dist/lib/cjs/nodes/data-mapping.node.js +19 -4
- package/dist/lib/cjs/nodes/data-mapping.node.js.map +1 -1
- package/dist/lib/cjs/normalizer-options/base-normalizer.options.js +2 -1
- package/dist/lib/cjs/normalizer-options/base-normalizer.options.js.map +1 -1
- 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.map +1 -1
- package/dist/lib/cjs/normalizer-options/normalizer-options.js +3 -0
- package/dist/lib/cjs/normalizer-options/normalizer-options.js.map +1 -1
- 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 +73 -0
- package/dist/lib/cjs/normalizers/date.normalizer.js.map +1 -0
- package/dist/lib/cjs/normalizers/normalizers.js +3 -0
- package/dist/lib/cjs/normalizers/normalizers.js.map +1 -1
- package/dist/lib/cjs/normalizers/number.normalizer.js +41 -0
- package/dist/lib/cjs/normalizers/number.normalizer.js.map +1 -0
- package/dist/lib/cjs/normalizers/string.normalizer.js +63 -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/request-interceptors/body-mapping.request-interceptor.js +1 -2
- package/dist/lib/cjs/request-interceptors/body-mapping.request-interceptor.js.map +1 -1
- package/dist/lib/esm/builders/auto-data-mapping.builder.js +144 -0
- package/dist/lib/esm/builders/auto-data-mapping.builder.js.map +1 -0
- package/dist/lib/esm/builders/builders.js +1 -0
- package/dist/lib/esm/builders/builders.js.map +1 -1
- 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/mappers/data.mapper.js +18 -4
- package/dist/lib/esm/mappers/data.mapper.js.map +1 -1
- package/dist/lib/esm/nodes/data-mapping.node.js +19 -4
- package/dist/lib/esm/nodes/data-mapping.node.js.map +1 -1
- package/dist/lib/esm/normalizer-options/base-normalizer.options.js +2 -1
- package/dist/lib/esm/normalizer-options/base-normalizer.options.js.map +1 -1
- 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.map +1 -1
- package/dist/lib/esm/normalizer-options/normalizer-options.js +3 -0
- package/dist/lib/esm/normalizer-options/normalizer-options.js.map +1 -1
- 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 +70 -0
- package/dist/lib/esm/normalizers/date.normalizer.js.map +1 -0
- package/dist/lib/esm/normalizers/normalizers.js +3 -0
- package/dist/lib/esm/normalizers/normalizers.js.map +1 -1
- package/dist/lib/esm/normalizers/number.normalizer.js +38 -0
- package/dist/lib/esm/normalizers/number.normalizer.js.map +1 -0
- package/dist/lib/esm/normalizers/string.normalizer.js +60 -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/request-interceptors/body-mapping.request-interceptor.js +1 -2
- package/dist/lib/esm/request-interceptors/body-mapping.request-interceptor.js.map +1 -1
- package/dist/types/builders/auto-data-mapping.builder.d.ts +25 -0
- package/dist/types/builders/builders.d.ts +1 -0
- package/dist/types/decorators/type.decorator.d.ts +2 -0
- package/dist/types/mappers/data.mapper.d.ts +11 -1
- package/dist/types/nodes/data-mapping.node.d.ts +10 -0
- package/dist/types/normalizer-options/base-normalizer.options.d.ts +2 -2
- package/dist/types/normalizer-options/date-normalizer.options.d.ts +12 -0
- package/dist/types/normalizer-options/lowercase-normalizer.options.d.ts +1 -1
- package/dist/types/normalizer-options/normalizer-options.d.ts +3 -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/normalizers.d.ts +3 -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/package.json +8 -7
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var StringNormalizer_1;
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.StringNormalizer = void 0;
|
|
11
|
+
const tsyringe_1 = require("tsyringe");
|
|
12
|
+
const metadata_1 = require("@pristine-ts/metadata");
|
|
13
|
+
const date_fns_1 = require("date-fns");
|
|
14
|
+
let StringNormalizer = StringNormalizer_1 = class StringNormalizer {
|
|
15
|
+
getUniqueKey() {
|
|
16
|
+
return StringNormalizer_1.name;
|
|
17
|
+
}
|
|
18
|
+
normalize(source, options) {
|
|
19
|
+
const typeEnum = metadata_1.TypeUtils.getTypeOfValue(source);
|
|
20
|
+
if (typeEnum === undefined || typeEnum === metadata_1.TypeEnum.Null) {
|
|
21
|
+
if ((options === null || options === void 0 ? void 0 : options.ignoreUndefined) === false) {
|
|
22
|
+
return "";
|
|
23
|
+
}
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
switch (typeEnum) {
|
|
27
|
+
case metadata_1.TypeEnum.String:
|
|
28
|
+
return source;
|
|
29
|
+
case metadata_1.TypeEnum.Number:
|
|
30
|
+
return "" + source;
|
|
31
|
+
case metadata_1.TypeEnum.Boolean:
|
|
32
|
+
return source ? "true" : "false";
|
|
33
|
+
case metadata_1.TypeEnum.Date:
|
|
34
|
+
if (options === null || options === void 0 ? void 0 : options.dateFormat) {
|
|
35
|
+
return (0, date_fns_1.format)(source, options.dateFormat);
|
|
36
|
+
}
|
|
37
|
+
// This will return the default format we want: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON
|
|
38
|
+
return source.toJSON();
|
|
39
|
+
case metadata_1.TypeEnum.Array:
|
|
40
|
+
return source.map((item) => this.normalize(item, options));
|
|
41
|
+
case metadata_1.TypeEnum.Symbol:
|
|
42
|
+
return source.toString();
|
|
43
|
+
case metadata_1.TypeEnum.Object:
|
|
44
|
+
if (source.hasOwnProperty("toString") === true) {
|
|
45
|
+
return source.toString();
|
|
46
|
+
}
|
|
47
|
+
try {
|
|
48
|
+
return JSON.stringify(source);
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
return "" + source;
|
|
52
|
+
}
|
|
53
|
+
// For now, let's do that for other types. We can make it better eventually.
|
|
54
|
+
default:
|
|
55
|
+
return "" + source;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.StringNormalizer = StringNormalizer;
|
|
60
|
+
exports.StringNormalizer = StringNormalizer = StringNormalizer_1 = __decorate([
|
|
61
|
+
(0, tsyringe_1.injectable)()
|
|
62
|
+
], StringNormalizer);
|
|
63
|
+
//# 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,uCAAoC;AACpC,oDAA0D;AAE1D,uCAAgC;AAGzB,IAAM,gBAAgB,wBAAtB,MAAM,gBAAgB;IACzB,YAAY;QACR,OAAO,kBAAgB,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,SAAS,CAAC,MAAW,EAAE,OAAiC;QACpD,MAAM,QAAQ,GAAG,oBAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAElD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,mBAAQ,CAAC,IAAI,EAAE;YACtD,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe,MAAK,KAAK,EAAE;gBACpC,OAAO,EAAE,CAAC;aACb;YAED,OAAO,SAAS,CAAC;SACpB;QAED,QAAQ,QAAQ,EAAE;YACd,KAAK,mBAAQ,CAAC,MAAM;gBAChB,OAAO,MAAM,CAAC;YAElB,KAAK,mBAAQ,CAAC,MAAM;gBAChB,OAAO,EAAE,GAAG,MAAM,CAAC;YAEvB,KAAK,mBAAQ,CAAC,OAAO;gBACjB,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAErC,KAAK,mBAAQ,CAAC,IAAI;gBACd,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,EAAE;oBACrB,OAAO,IAAA,iBAAM,EAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;iBAC7C;gBAED,4IAA4I;gBAC5I,OAAQ,MAAe,CAAC,MAAM,EAAE,CAAC;YAErC,KAAK,mBAAQ,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,mBAAQ,CAAC,MAAM;gBAChB,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;YAE7B,KAAK,mBAAQ,CAAC,MAAM;gBAChB,IAAG,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,IAAI,EAAE;oBAC3C,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;iBAC5B;gBAED,IAAI;oBACA,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;iBACjC;gBAAC,OAAO,CAAC,EAAE;oBACR,OAAO,EAAE,GAAG,MAAM,CAAA;iBACrB;YAED,4EAA4E;YAChF;gBACI,OAAO,EAAE,GAAG,MAAM,CAAC;SAC1B;IACL,CAAC;CACJ,CAAA;AAxDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,qBAAU,GAAE;GACA,gBAAgB,CAwD5B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AutoDataMappingBuilderOptions = void 0;
|
|
4
|
+
class AutoDataMappingBuilderOptions {
|
|
5
|
+
constructor(options) {
|
|
6
|
+
var _a;
|
|
7
|
+
this.isOptionalDefaultValue = (_a = options === null || options === void 0 ? void 0 : options.isOptionalDefaultValue) !== null && _a !== void 0 ? _a : false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
exports.AutoDataMappingBuilderOptions = AutoDataMappingBuilderOptions;
|
|
11
|
+
//# 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,MAAa,6BAA6B;IAUtC,YAAY,OAAgD;;QACxD,IAAI,CAAC,sBAAsB,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,sBAAsB,mCAAI,KAAK,CAAC;IAC3E,CAAC;CACJ;AAbD,sEAaC"}
|
|
@@ -26,7 +26,6 @@ const common_1 = require("@pristine-ts/common");
|
|
|
26
26
|
const tsyringe_1 = require("tsyringe");
|
|
27
27
|
const data_mapper_1 = require("../mappers/data.mapper");
|
|
28
28
|
const body_mapping_decorator_1 = require("../decorators/body-mapping.decorator");
|
|
29
|
-
const class_transformer_1 = require("class-transformer");
|
|
30
29
|
const data_mapping_module_keyname_1 = require("../data-mapping.module.keyname");
|
|
31
30
|
/**
|
|
32
31
|
* This class is an interceptor that maps the body of an incoming request.
|
|
@@ -56,7 +55,7 @@ let BodyMappingRequestInterceptor = class BodyMappingRequestInterceptor {
|
|
|
56
55
|
}, data_mapping_module_keyname_1.DataMappingModuleKeyname);
|
|
57
56
|
switch (bodyMapping.type) {
|
|
58
57
|
case "classType":
|
|
59
|
-
request.body =
|
|
58
|
+
request.body = yield this.dataMapper.autoMap(request.body, bodyMapping.classType);
|
|
60
59
|
break;
|
|
61
60
|
case "DataMappingBuilder":
|
|
62
61
|
request.body = yield this.dataMapper.map(bodyMapping.dataMappingBuilder, request.body, bodyMapping.destination);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"body-mapping.request-interceptor.js","sourceRoot":"","sources":["../../../../src/request-interceptors/body-mapping.request-interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAyF;AACzF,uCAA4C;AAG5C,wDAAkD;AAClD,iFAAyF;
|
|
1
|
+
{"version":3,"file":"body-mapping.request-interceptor.js","sourceRoot":"","sources":["../../../../src/request-interceptors/body-mapping.request-interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAyF;AACzF,uCAA4C;AAG5C,wDAAkD;AAClD,iFAAyF;AAMzF,gFAAwE;AAExE;;;;GAIG;AAII,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IACtC,YAA4D,UAA+B,EAC9D,UAAsB;QADS,eAAU,GAAV,UAAU,CAAqB;QAC9D,eAAU,GAAV,UAAU,CAAY;IACnD,CAAC;IAED;;;;OAIG;IACG,gBAAgB,CAAC,OAAgB,EAAE,UAA4B;;YACjE,MAAM,WAAW,GAAsI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,4DAAmC,CAAC,CAAC;YAErN,IAAG,WAAW,KAAK,SAAS,EAAE;gBAC1B,OAAO,OAAO,CAAC;aAClB;YAED,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,+BAA+B,EAAE;gBACnD,OAAO;gBACP,UAAU;gBACV,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO;aACzC,EAAE,sDAAwB,CAAC,CAAA;YAE5B,QAAQ,WAAW,CAAC,IAAI,EAAE;gBACtB,KAAK,WAAW;oBACZ,OAAO,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;oBAClF,MAAM;gBAEV,KAAK,oBAAoB;oBACrB,OAAO,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;oBAChH,MAAM;gBAEV,KAAK,UAAU;oBACX,OAAO,CAAC,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAClD,MAAM;aACb;YAED,OAAO,OAAO,CAAC;QACnB,CAAC;KAAA;CACJ,CAAA;AAvCY,sEAA6B;wCAA7B,6BAA6B;IAHzC,IAAA,qBAAY,EAAC,sDAAwB,CAAC;IACtC,IAAA,YAAG,EAAC,iCAAwB,CAAC,kBAAkB,CAAC;IAChD,IAAA,qBAAU,GAAE;IAEI,WAAA,IAAA,iBAAM,EAAC,qBAAqB,CAAC,CAAA;6CACD,wBAAU;GAF1C,6BAA6B,CAuCzC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
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
|
+
import { DataMappingBuilder } from "./data-mapping.builder";
|
|
8
|
+
import { DataMappingNode } from "../nodes/data-mapping.node";
|
|
9
|
+
import { ClassMetadata, PropertyMetadata, TypeEnum, TypeUtils } from "@pristine-ts/metadata";
|
|
10
|
+
import { DataMappingLeaf } from "../nodes/data-mapping.leaf";
|
|
11
|
+
import { NumberNormalizer } from "../normalizers/number.normalizer";
|
|
12
|
+
import { StringNormalizer } from "../normalizers/string.normalizer";
|
|
13
|
+
import { DateNormalizer } from "../normalizers/date.normalizer";
|
|
14
|
+
import { MetadataEnum } from "@pristine-ts/common";
|
|
15
|
+
import { DataMappingNodeTypeEnum } from "../enums/data-mapping-node-type.enum";
|
|
16
|
+
import { injectable } from "tsyringe";
|
|
17
|
+
import { AutoDataMappingBuilderOptions } from "../options/auto-data-mapping-builder.options";
|
|
18
|
+
let AutoDataMappingBuilder = class AutoDataMappingBuilder {
|
|
19
|
+
/**
|
|
20
|
+
* This method receives a source object and a destinationType that corresponds to the type of the class
|
|
21
|
+
* that the source should be mapped to. It then creates a DataMappingBuilder object that contains the schema
|
|
22
|
+
* needed to map the source to the destinationType.
|
|
23
|
+
* @param source
|
|
24
|
+
* @param destinationType
|
|
25
|
+
* @param options
|
|
26
|
+
*/
|
|
27
|
+
build(source, destinationType, options) {
|
|
28
|
+
const dataMappingBuilder = new DataMappingBuilder();
|
|
29
|
+
this.internalBuild(source, destinationType, dataMappingBuilder, dataMappingBuilder, new AutoDataMappingBuilderOptions(options));
|
|
30
|
+
return dataMappingBuilder;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* This method is the internal method that is called recursively to build the schema.
|
|
34
|
+
*
|
|
35
|
+
* @param source
|
|
36
|
+
* @param destinationType
|
|
37
|
+
* @param root
|
|
38
|
+
* @param parent
|
|
39
|
+
* @param options
|
|
40
|
+
* @private
|
|
41
|
+
*/
|
|
42
|
+
internalBuild(source, destinationType, root, parent, options) {
|
|
43
|
+
if (!source) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
// Get the metadata of destinationType and iterate over its properties.
|
|
47
|
+
const classInformation = ClassMetadata.getInformation(destinationType);
|
|
48
|
+
classInformation.properties.forEach(propertyKey => {
|
|
49
|
+
var _a, _b, _c, _d;
|
|
50
|
+
// Retrieve the metadata for the property
|
|
51
|
+
const propertyInformation = PropertyMetadata.getInformation(destinationType.prototype, propertyKey);
|
|
52
|
+
let typeObject = propertyInformation.typeObject;
|
|
53
|
+
// Check if we have a `@typeFactory` decorator, it means that there's a callback that must be executed
|
|
54
|
+
// for this property to retrieve the actual DestinationType object. If there's one, execute it.
|
|
55
|
+
const typeFactoryCallback = PropertyMetadata.getMetadata(destinationType.prototype, propertyKey, MetadataEnum.TypeFactory);
|
|
56
|
+
if (typeFactoryCallback) {
|
|
57
|
+
typeObject = typeFactoryCallback(source, propertyKey).constructor;
|
|
58
|
+
}
|
|
59
|
+
// If the property references an object, this means that we need to recursively call this method to build the schema.
|
|
60
|
+
if (propertyInformation.typeEnum === TypeEnum.Object) {
|
|
61
|
+
const dataMappingNode = new DataMappingNode(root, parent);
|
|
62
|
+
dataMappingNode
|
|
63
|
+
.setSourceProperty(propertyKey)
|
|
64
|
+
.setDestinationProperty(propertyKey)
|
|
65
|
+
.setDestinationType(typeObject)
|
|
66
|
+
.setIsOptional((_a = propertyInformation.isNullable) !== null && _a !== void 0 ? _a : options.isOptionalDefaultValue)
|
|
67
|
+
.end();
|
|
68
|
+
return this.internalBuild(source[propertyKey], typeObject, root, dataMappingNode, options);
|
|
69
|
+
}
|
|
70
|
+
else if (propertyInformation.typeEnum === TypeEnum.Array) { // If the property references an array, we need to iterate over each element and recursively call this method to build the schema.
|
|
71
|
+
let nestedType = DataMappingNodeTypeEnum.ScalarArray;
|
|
72
|
+
if (!source.hasOwnProperty(propertyKey) || Array.isArray(source[propertyKey]) === false || source[propertyKey].length === 0) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Use the first element in the array to determine the type of content stored in the array. Here, we assume that all the elements in the array are of the same type.
|
|
76
|
+
const nestedElementType = TypeUtils.getTypeOfValue(source[propertyKey][0]);
|
|
77
|
+
switch (nestedElementType) {
|
|
78
|
+
case TypeEnum.Object:
|
|
79
|
+
nestedType = DataMappingNodeTypeEnum.ObjectArray;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
// If the array is an array of scalars, then it will be a LeafNode of type ScalarArray with no children.
|
|
83
|
+
if (nestedType === DataMappingNodeTypeEnum.ScalarArray) {
|
|
84
|
+
const dataMappingLeaf = parent.addArrayOfScalar();
|
|
85
|
+
const normalizers = [];
|
|
86
|
+
// todo: Allow for options to be specified per attribute. We should probably add a decorator to can customize the normalizer.
|
|
87
|
+
switch (nestedElementType) {
|
|
88
|
+
case TypeEnum.Number:
|
|
89
|
+
normalizers.push(NumberNormalizer.name);
|
|
90
|
+
break;
|
|
91
|
+
case TypeEnum.String:
|
|
92
|
+
normalizers.push(StringNormalizer.name);
|
|
93
|
+
break;
|
|
94
|
+
case TypeEnum.Date:
|
|
95
|
+
normalizers.push(DateNormalizer.name);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
normalizers.forEach(normalizer => dataMappingLeaf.addNormalizer(normalizer));
|
|
99
|
+
dataMappingLeaf.setSourceProperty(propertyKey)
|
|
100
|
+
.setDestinationProperty(propertyKey)
|
|
101
|
+
.setIsOptional((_b = propertyInformation.isNullable) !== null && _b !== void 0 ? _b : options.isOptionalDefaultValue)
|
|
102
|
+
.end();
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// Else, it's an array of objects and we must iterate over the first element to get all the properties and
|
|
106
|
+
// build the tree.
|
|
107
|
+
const dataMappingNode = parent.addArrayOfObjects();
|
|
108
|
+
dataMappingNode
|
|
109
|
+
.setSourceProperty(propertyKey)
|
|
110
|
+
.setDestinationProperty(propertyKey)
|
|
111
|
+
.setDestinationType(propertyInformation.arrayMemberObject)
|
|
112
|
+
.setIsOptional((_c = propertyInformation.isNullable) !== null && _c !== void 0 ? _c : options.isOptionalDefaultValue)
|
|
113
|
+
.end();
|
|
114
|
+
// We assume all the objects are similar so we use only the first one to build the schema
|
|
115
|
+
return this.internalBuild(source[propertyKey][0], propertyInformation.arrayMemberObject, root, dataMappingNode, options);
|
|
116
|
+
}
|
|
117
|
+
const normalizers = [];
|
|
118
|
+
// todo: Allow for options to be specified per attribute. We should probably add a decorator to can customize the normalizer.
|
|
119
|
+
switch (propertyInformation.typeEnum) {
|
|
120
|
+
case TypeEnum.Number:
|
|
121
|
+
normalizers.push(NumberNormalizer.name);
|
|
122
|
+
break;
|
|
123
|
+
case TypeEnum.String:
|
|
124
|
+
normalizers.push(StringNormalizer.name);
|
|
125
|
+
break;
|
|
126
|
+
case TypeEnum.Date:
|
|
127
|
+
normalizers.push(DateNormalizer.name);
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
const dataMappingLeaf = new DataMappingLeaf(root, parent);
|
|
131
|
+
normalizers.forEach(normalizer => dataMappingLeaf.addNormalizer(normalizer));
|
|
132
|
+
dataMappingLeaf
|
|
133
|
+
.setSourceProperty(propertyKey)
|
|
134
|
+
.setDestinationProperty(propertyKey)
|
|
135
|
+
.setIsOptional((_d = propertyInformation.isNullable) !== null && _d !== void 0 ? _d : options.isOptionalDefaultValue)
|
|
136
|
+
.end();
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
AutoDataMappingBuilder = __decorate([
|
|
141
|
+
injectable()
|
|
142
|
+
], AutoDataMappingBuilder);
|
|
143
|
+
export { AutoDataMappingBuilder };
|
|
144
|
+
//# sourceMappingURL=auto-data-mapping.builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auto-data-mapping.builder.js","sourceRoot":"","sources":["../../../../src/builders/auto-data-mapping.builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../../src/builders/builders.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../../src/builders/builders.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PropertyMetadata } from "@pristine-ts/metadata";
|
|
2
|
+
import { MetadataEnum } from "@pristine-ts/common";
|
|
3
|
+
export const type = (callback) => {
|
|
4
|
+
return (
|
|
5
|
+
/**
|
|
6
|
+
* The class on which the decorator is used.
|
|
7
|
+
*/
|
|
8
|
+
target,
|
|
9
|
+
/**
|
|
10
|
+
* The property on which the decorator is used.
|
|
11
|
+
*/
|
|
12
|
+
propertyKey) => {
|
|
13
|
+
PropertyMetadata.defineMetadata(target, propertyKey, MetadataEnum.TypeFactory, callback);
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=type.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.decorator.js","sourceRoot":"","sources":["../../../../src/decorators/type.decorator.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAIjD,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAA6B,EAAE,EAAE;IAClD,OAAO;IACH;;OAEG;IACH,MAAW;IAEX;;OAEG;IACH,WAA4B,EAC9B,EAAE;QACA,gBAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7F,CAAC,CAAA;AACL,CAAC,CAAA"}
|
|
@@ -24,8 +24,10 @@ import { DataMappingModuleKeyname } from "../data-mapping.module.keyname";
|
|
|
24
24
|
import { injectable, injectAll } from "tsyringe";
|
|
25
25
|
import { plainToInstance } from "class-transformer";
|
|
26
26
|
import { DataMappingInterceptorNotFoundError } from "../errors/data-mapping-interceptor-not-found.error";
|
|
27
|
+
import { AutoDataMappingBuilder } from "../builders/auto-data-mapping.builder";
|
|
27
28
|
let DataMapper = class DataMapper {
|
|
28
|
-
constructor(dataNormalizers, dataTransformerInterceptors) {
|
|
29
|
+
constructor(autoDataMappingBuilder, dataNormalizers, dataTransformerInterceptors) {
|
|
30
|
+
this.autoDataMappingBuilder = autoDataMappingBuilder;
|
|
29
31
|
this.dataNormalizers = dataNormalizers;
|
|
30
32
|
this.dataTransformerInterceptors = dataTransformerInterceptors;
|
|
31
33
|
this.dataNormalizersMap = {};
|
|
@@ -53,6 +55,18 @@ let DataMapper = class DataMapper {
|
|
|
53
55
|
return destination;
|
|
54
56
|
});
|
|
55
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* This method automatically maps a source object into the DestinationType.
|
|
60
|
+
* @param source
|
|
61
|
+
* @param destinationType
|
|
62
|
+
* @param options
|
|
63
|
+
*/
|
|
64
|
+
autoMap(source, destinationType, options) {
|
|
65
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const dataMappingBuilder = this.autoDataMappingBuilder.build(source, destinationType, options);
|
|
67
|
+
return this.map(dataMappingBuilder, source, destinationType);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
56
70
|
/**
|
|
57
71
|
* This method takes a builder, a source and maps it according to the builder. You can pass a `destinationType (optional)`
|
|
58
72
|
* that is an object that will be constructed.
|
|
@@ -101,9 +115,9 @@ let DataMapper = class DataMapper {
|
|
|
101
115
|
DataMapper = __decorate([
|
|
102
116
|
moduleScoped(DataMappingModuleKeyname),
|
|
103
117
|
injectable(),
|
|
104
|
-
__param(
|
|
105
|
-
__param(
|
|
106
|
-
__metadata("design:paramtypes", [Array, Array])
|
|
118
|
+
__param(1, injectAll("DataNormalizerInterface")),
|
|
119
|
+
__param(2, injectAll("DataTransformerInterceptor")),
|
|
120
|
+
__metadata("design:paramtypes", [AutoDataMappingBuilder, Array, Array])
|
|
107
121
|
], DataMapper);
|
|
108
122
|
export { DataMapper };
|
|
109
123
|
//# sourceMappingURL=data.mapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/data.mapper.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAC,wBAAwB,EAAC,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAmB,eAAe,EAAC,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAC,mCAAmC,EAAC,MAAM,oDAAoD,CAAC;
|
|
1
|
+
{"version":3,"file":"data.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/data.mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { DataMappingLeaf } from "./data-mapping.leaf";
|
|
|
12
12
|
import { BaseDataMappingNode } from "./base-data-mapping.node";
|
|
13
13
|
import { DataMappingSourcePropertyNotFoundError } from "../errors/data-mapping-source-property-not-found.error";
|
|
14
14
|
import { ArrayDataMappingNodeInvalidSourcePropertyTypeError } from "../errors/array-data-mapping-node-invalid-source-property-type.error";
|
|
15
|
+
import { plainToInstance } from "class-transformer";
|
|
15
16
|
export class DataMappingNode extends BaseDataMappingNode {
|
|
16
17
|
constructor(root, parent, type = DataMappingNodeTypeEnum.Node) {
|
|
17
18
|
super();
|
|
@@ -39,6 +40,14 @@ export class DataMappingNode extends BaseDataMappingNode {
|
|
|
39
40
|
this.destinationProperty = destinationProperty;
|
|
40
41
|
return this;
|
|
41
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* This is a setter for `destinationType`.
|
|
45
|
+
* @param destinationType
|
|
46
|
+
*/
|
|
47
|
+
setDestinationType(destinationType) {
|
|
48
|
+
this.destinationType = destinationType;
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
42
51
|
/**
|
|
43
52
|
* This is a setter for `isOptional`.
|
|
44
53
|
* @param isOptional
|
|
@@ -107,8 +116,12 @@ export class DataMappingNode extends BaseDataMappingNode {
|
|
|
107
116
|
destination[this.destinationProperty] = [];
|
|
108
117
|
}
|
|
109
118
|
else {
|
|
110
|
-
|
|
111
|
-
|
|
119
|
+
if (this.destinationType) {
|
|
120
|
+
destination[this.destinationProperty] = plainToInstance(this.destinationType, {});
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
destination[this.destinationProperty] = {};
|
|
124
|
+
}
|
|
112
125
|
}
|
|
113
126
|
}
|
|
114
127
|
const destinationElement = destination[this.destinationProperty];
|
|
@@ -119,8 +132,10 @@ export class DataMappingNode extends BaseDataMappingNode {
|
|
|
119
132
|
throw new ArrayDataMappingNodeInvalidSourcePropertyTypeError(`According to your schema, the property '${this.sourceProperty}' in the source object must contain an Array of objects. Instead, it contains: '${typeof array}'.`, this.sourceProperty);
|
|
120
133
|
}
|
|
121
134
|
for (const element of array) {
|
|
122
|
-
|
|
123
|
-
|
|
135
|
+
let dest = {};
|
|
136
|
+
if (this.destinationType) {
|
|
137
|
+
dest = plainToInstance(this.destinationType, {});
|
|
138
|
+
}
|
|
124
139
|
for (const key in this.nodes) {
|
|
125
140
|
if (this.nodes.hasOwnProperty(key) === false) {
|
|
126
141
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.node.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAC,uBAAuB,EAAC,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAC,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAC,sCAAsC,EAAC,MAAM,wDAAwD,CAAC;AAG9G,OAAO,EACH,kDAAkD,EACrD,MAAM,sEAAsE,CAAC;
|
|
1
|
+
{"version":3,"file":"data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export class BaseNormalizerOptions {
|
|
2
2
|
constructor(options) {
|
|
3
3
|
var _a;
|
|
4
|
-
this.shouldThrowIfTypeIsNotString =
|
|
4
|
+
this.shouldThrowIfTypeIsNotString = false;
|
|
5
|
+
this.shouldThrowIfTypeIsNotString = (_a = options === null || options === void 0 ? void 0 : options.shouldThrowIfTypeIsNotString) !== null && _a !== void 0 ? _a : this.shouldThrowIfTypeIsNotString;
|
|
5
6
|
}
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=base-normalizer.options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/base-normalizer.options.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,qBAAqB;IAGvC,YAAmB,
|
|
1
|
+
{"version":3,"file":"base-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/base-normalizer.options.ts"],"names":[],"mappings":"AAAA,MAAM,OAAgB,qBAAqB;IAGvC,YAAmB,OAAwC;;QAFpD,iCAA4B,GAAY,KAAK,CAAC;QAGjD,IAAI,CAAC,4BAA4B,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,4BAA4B,mCAAI,IAAI,CAAC,4BAA4B,CAAC;IACnH,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class DateNormalizerOptions {
|
|
2
|
+
constructor(options) {
|
|
3
|
+
var _a, _b;
|
|
4
|
+
/**
|
|
5
|
+
* This property specifies whether an invalid date should return undefined or a date object.
|
|
6
|
+
*/
|
|
7
|
+
this.returnUndefinedOnInvalidDate = true;
|
|
8
|
+
/**
|
|
9
|
+
* This property specifies if a number should be treated as being in seconds or not. Since JS Date expects a
|
|
10
|
+
* timestamp in milliseconds, if the number is in seconds, it will be multiplied by 1000.
|
|
11
|
+
*/
|
|
12
|
+
this.treatNumbers = "seconds";
|
|
13
|
+
this.returnUndefinedOnInvalidDate = (_a = options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) !== null && _a !== void 0 ? _a : this.returnUndefinedOnInvalidDate;
|
|
14
|
+
this.treatNumbers = (_b = options === null || options === void 0 ? void 0 : options.treatNumbers) !== null && _b !== void 0 ? _b : this.treatNumbers;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=date-normalizer.options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/date-normalizer.options.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAqB;IAY9B,YAAmB,OAAwC;;QAX3D;;WAEG;QACI,iCAA4B,GAAY,IAAI,CAAC;QAEpD;;;WAGG;QACI,iBAAY,GAA+B,SAAS,CAAC;QAGxD,IAAI,CAAC,4BAA4B,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,4BAA4B,mCAAI,IAAI,CAAC,4BAA4B,CAAC;QAC/G,IAAI,CAAC,YAAY,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,mCAAI,IAAI,CAAC,YAAY,CAAC;IACnE,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lowercase-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/lowercase-normalizer.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAEhE,MAAM,OAAO,0BAA2B,SAAQ,qBAAqB;IACjE,YAAmB,
|
|
1
|
+
{"version":3,"file":"lowercase-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/lowercase-normalizer.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,qBAAqB,EAAC,MAAM,2BAA2B,CAAC;AAEhE,MAAM,OAAO,0BAA2B,SAAQ,qBAAqB;IACjE,YAAmB,OAA6C;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export * from "./base-normalizer.options";
|
|
2
|
+
export * from "./date-normalizer.options";
|
|
2
3
|
export * from "./lowercase-normalizer.options";
|
|
4
|
+
export * from "./number-normalizer.options";
|
|
5
|
+
export * from "./string-normalizer.options";
|
|
3
6
|
//# sourceMappingURL=normalizer-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizer-options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/normalizer-options.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC"}
|
|
1
|
+
{"version":3,"file":"normalizer-options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/normalizer-options.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export class NumberNormalizerOptions {
|
|
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
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=number-normalizer.options.js.map
|
|
@@ -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,70 @@
|
|
|
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 DateNormalizer_1;
|
|
8
|
+
import { injectable } from "tsyringe";
|
|
9
|
+
import { TypeEnum, TypeUtils } from "@pristine-ts/metadata";
|
|
10
|
+
let DateNormalizer = DateNormalizer_1 = class DateNormalizer {
|
|
11
|
+
getUniqueKey() {
|
|
12
|
+
return DateNormalizer_1.name;
|
|
13
|
+
}
|
|
14
|
+
normalize(source, options) {
|
|
15
|
+
const typeEnum = TypeUtils.getTypeOfValue(source);
|
|
16
|
+
if (typeEnum === undefined) {
|
|
17
|
+
if ((options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) === false) {
|
|
18
|
+
return new Date();
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
let date;
|
|
23
|
+
switch (typeEnum) {
|
|
24
|
+
case TypeEnum.Number:
|
|
25
|
+
if ((options === null || options === void 0 ? void 0 : options.treatNumbers) === "seconds") {
|
|
26
|
+
source = source * 1000;
|
|
27
|
+
}
|
|
28
|
+
case TypeEnum.String:
|
|
29
|
+
date = new Date(source);
|
|
30
|
+
if (!isNaN(date.getTime())) {
|
|
31
|
+
return date;
|
|
32
|
+
}
|
|
33
|
+
break;
|
|
34
|
+
case TypeEnum.Object:
|
|
35
|
+
date = new Date();
|
|
36
|
+
// todo: Allow this property to be customizable in the options eventually
|
|
37
|
+
if (source.hasOwnProperty("year")) {
|
|
38
|
+
date.setFullYear(source["year"]);
|
|
39
|
+
}
|
|
40
|
+
if (source.hasOwnProperty("month")) {
|
|
41
|
+
date.setMonth(source["month"]);
|
|
42
|
+
}
|
|
43
|
+
if (source.hasOwnProperty("day")) {
|
|
44
|
+
date.setDate(source["day"]);
|
|
45
|
+
}
|
|
46
|
+
if (source.hasOwnProperty("hours")) {
|
|
47
|
+
date.setHours(source["hours"]);
|
|
48
|
+
}
|
|
49
|
+
if (source.hasOwnProperty("minutes")) {
|
|
50
|
+
date.setMinutes(source["minutes"]);
|
|
51
|
+
}
|
|
52
|
+
if (source.hasOwnProperty("seconds")) {
|
|
53
|
+
date.setSeconds(source["seconds"]);
|
|
54
|
+
}
|
|
55
|
+
if (!isNaN(date.getTime())) {
|
|
56
|
+
return date;
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
if ((options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) === false) {
|
|
61
|
+
return new Date();
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
DateNormalizer = DateNormalizer_1 = __decorate([
|
|
67
|
+
injectable()
|
|
68
|
+
], DateNormalizer);
|
|
69
|
+
export { DateNormalizer };
|
|
70
|
+
//# sourceMappingURL=date.normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.normalizer.js","sourceRoot":"","sources":["../../../../src/normalizers/date.normalizer.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAGnD,IAAM,cAAc,sBAApB,MAAM,cAAc;IACvB,YAAY;QACR,OAAO,gBAAc,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;YACxB,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,4BAA4B,MAAK,KAAK,EAAE;gBACjD,OAAO,IAAI,IAAI,EAAE,CAAC;aACrB;YAED,OAAO,SAAS,CAAC;SACpB;QAED,IAAI,IAAU,CAAC;QAEf,QAAQ,QAAQ,EAAE;YACd,KAAK,QAAQ,CAAC,MAAM;gBAChB,IAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY,MAAK,SAAS,EAAE;oBACpC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;iBAC1B;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;oBACvB,OAAO,IAAI,CAAC;iBACf;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;oBAC9B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;iBACpC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;iBAClC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBAC/B;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;iBAClC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;oBACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;iBACtC;gBACD,IAAG,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;oBACjC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;iBACtC;gBAED,IAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;oBACvB,OAAO,IAAI,CAAC;iBACf;gBAED,MAAM;SACb;QAED,IAAI,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,4BAA4B,MAAK,KAAK,EAAE;YACjD,OAAO,IAAI,IAAI,EAAE,CAAC;SACrB;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;CAEJ,CAAA;AAtEY,cAAc;IAD1B,UAAU,EAAE;GACA,cAAc,CAsE1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalizers.js","sourceRoot":"","sources":["../../../../src/normalizers/normalizers.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
|
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"}
|