@pristine-ts/data-mapping 0.0.277 → 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.
Files changed (109) hide show
  1. package/dist/lib/cjs/builders/auto-data-mapping.builder.js +147 -0
  2. package/dist/lib/cjs/builders/auto-data-mapping.builder.js.map +1 -0
  3. package/dist/lib/cjs/builders/builders.js +1 -0
  4. package/dist/lib/cjs/builders/builders.js.map +1 -1
  5. package/dist/lib/cjs/data-mapping.module.js +2 -0
  6. package/dist/lib/cjs/data-mapping.module.js.map +1 -1
  7. package/dist/lib/cjs/decorators/body-mapping.decorator.js +50 -0
  8. package/dist/lib/cjs/decorators/body-mapping.decorator.js.map +1 -0
  9. package/dist/lib/cjs/decorators/decorators.js +18 -0
  10. package/dist/lib/cjs/decorators/decorators.js.map +1 -0
  11. package/dist/lib/cjs/decorators/type.decorator.js +20 -0
  12. package/dist/lib/cjs/decorators/type.decorator.js.map +1 -0
  13. package/dist/lib/cjs/interfaces/body-mapping-context.interface.js +3 -0
  14. package/dist/lib/cjs/interfaces/body-mapping-context.interface.js.map +1 -0
  15. package/dist/lib/cjs/mappers/data.mapper.js +18 -4
  16. package/dist/lib/cjs/mappers/data.mapper.js.map +1 -1
  17. package/dist/lib/cjs/nodes/data-mapping.node.js +19 -4
  18. package/dist/lib/cjs/nodes/data-mapping.node.js.map +1 -1
  19. package/dist/lib/cjs/normalizer-options/base-normalizer.options.js +2 -1
  20. package/dist/lib/cjs/normalizer-options/base-normalizer.options.js.map +1 -1
  21. package/dist/lib/cjs/normalizer-options/date-normalizer.options.js +21 -0
  22. package/dist/lib/cjs/normalizer-options/date-normalizer.options.js.map +1 -0
  23. package/dist/lib/cjs/normalizer-options/lowercase-normalizer.options.js.map +1 -1
  24. package/dist/lib/cjs/normalizer-options/normalizer-options.js +3 -0
  25. package/dist/lib/cjs/normalizer-options/normalizer-options.js.map +1 -1
  26. package/dist/lib/cjs/normalizer-options/number-normalizer.options.js +16 -0
  27. package/dist/lib/cjs/normalizer-options/number-normalizer.options.js.map +1 -0
  28. package/dist/lib/cjs/normalizer-options/string-normalizer.options.js +17 -0
  29. package/dist/lib/cjs/normalizer-options/string-normalizer.options.js.map +1 -0
  30. package/dist/lib/cjs/normalizers/date.normalizer.js +73 -0
  31. package/dist/lib/cjs/normalizers/date.normalizer.js.map +1 -0
  32. package/dist/lib/cjs/normalizers/normalizers.js +3 -0
  33. package/dist/lib/cjs/normalizers/normalizers.js.map +1 -1
  34. package/dist/lib/cjs/normalizers/number.normalizer.js +41 -0
  35. package/dist/lib/cjs/normalizers/number.normalizer.js.map +1 -0
  36. package/dist/lib/cjs/normalizers/string.normalizer.js +63 -0
  37. package/dist/lib/cjs/normalizers/string.normalizer.js.map +1 -0
  38. package/dist/lib/cjs/options/auto-data-mapping-builder.options.js +11 -0
  39. package/dist/lib/cjs/options/auto-data-mapping-builder.options.js.map +1 -0
  40. package/dist/lib/cjs/request-interceptors/body-mapping.request-interceptor.js +79 -0
  41. package/dist/lib/cjs/request-interceptors/body-mapping.request-interceptor.js.map +1 -0
  42. package/dist/lib/cjs/request-interceptors/request-interceptors.js +18 -0
  43. package/dist/lib/cjs/request-interceptors/request-interceptors.js.map +1 -0
  44. package/dist/lib/esm/builders/auto-data-mapping.builder.js +144 -0
  45. package/dist/lib/esm/builders/auto-data-mapping.builder.js.map +1 -0
  46. package/dist/lib/esm/builders/builders.js +1 -0
  47. package/dist/lib/esm/builders/builders.js.map +1 -1
  48. package/dist/lib/esm/data-mapping.module.js +2 -0
  49. package/dist/lib/esm/data-mapping.module.js.map +1 -1
  50. package/dist/lib/esm/decorators/body-mapping.decorator.js +46 -0
  51. package/dist/lib/esm/decorators/body-mapping.decorator.js.map +1 -0
  52. package/dist/lib/esm/decorators/decorators.js +2 -0
  53. package/dist/lib/esm/decorators/decorators.js.map +1 -0
  54. package/dist/lib/esm/decorators/type.decorator.js +16 -0
  55. package/dist/lib/esm/decorators/type.decorator.js.map +1 -0
  56. package/dist/lib/esm/interfaces/body-mapping-context.interface.js +2 -0
  57. package/dist/lib/esm/interfaces/body-mapping-context.interface.js.map +1 -0
  58. package/dist/lib/esm/mappers/data.mapper.js +18 -4
  59. package/dist/lib/esm/mappers/data.mapper.js.map +1 -1
  60. package/dist/lib/esm/nodes/data-mapping.node.js +19 -4
  61. package/dist/lib/esm/nodes/data-mapping.node.js.map +1 -1
  62. package/dist/lib/esm/normalizer-options/base-normalizer.options.js +2 -1
  63. package/dist/lib/esm/normalizer-options/base-normalizer.options.js.map +1 -1
  64. package/dist/lib/esm/normalizer-options/date-normalizer.options.js +17 -0
  65. package/dist/lib/esm/normalizer-options/date-normalizer.options.js.map +1 -0
  66. package/dist/lib/esm/normalizer-options/lowercase-normalizer.options.js.map +1 -1
  67. package/dist/lib/esm/normalizer-options/normalizer-options.js +3 -0
  68. package/dist/lib/esm/normalizer-options/normalizer-options.js.map +1 -1
  69. package/dist/lib/esm/normalizer-options/number-normalizer.options.js +12 -0
  70. package/dist/lib/esm/normalizer-options/number-normalizer.options.js.map +1 -0
  71. package/dist/lib/esm/normalizer-options/string-normalizer.options.js +13 -0
  72. package/dist/lib/esm/normalizer-options/string-normalizer.options.js.map +1 -0
  73. package/dist/lib/esm/normalizers/date.normalizer.js +70 -0
  74. package/dist/lib/esm/normalizers/date.normalizer.js.map +1 -0
  75. package/dist/lib/esm/normalizers/normalizers.js +3 -0
  76. package/dist/lib/esm/normalizers/normalizers.js.map +1 -1
  77. package/dist/lib/esm/normalizers/number.normalizer.js +38 -0
  78. package/dist/lib/esm/normalizers/number.normalizer.js.map +1 -0
  79. package/dist/lib/esm/normalizers/string.normalizer.js +60 -0
  80. package/dist/lib/esm/normalizers/string.normalizer.js.map +1 -0
  81. package/dist/lib/esm/options/auto-data-mapping-builder.options.js +7 -0
  82. package/dist/lib/esm/options/auto-data-mapping-builder.options.js.map +1 -0
  83. package/dist/lib/esm/request-interceptors/body-mapping.request-interceptor.js +76 -0
  84. package/dist/lib/esm/request-interceptors/body-mapping.request-interceptor.js.map +1 -0
  85. package/dist/lib/esm/request-interceptors/request-interceptors.js +2 -0
  86. package/dist/lib/esm/request-interceptors/request-interceptors.js.map +1 -0
  87. package/dist/types/builders/auto-data-mapping.builder.d.ts +25 -0
  88. package/dist/types/builders/builders.d.ts +1 -0
  89. package/dist/types/data-mapping.module.d.ts +2 -0
  90. package/dist/types/decorators/body-mapping.decorator.d.ts +10 -0
  91. package/dist/types/decorators/decorators.d.ts +1 -0
  92. package/dist/types/decorators/type.decorator.d.ts +2 -0
  93. package/dist/types/interfaces/body-mapping-context.interface.d.ts +18 -0
  94. package/dist/types/mappers/data.mapper.d.ts +11 -1
  95. package/dist/types/nodes/data-mapping.node.d.ts +10 -0
  96. package/dist/types/normalizer-options/base-normalizer.options.d.ts +2 -2
  97. package/dist/types/normalizer-options/date-normalizer.options.d.ts +12 -0
  98. package/dist/types/normalizer-options/lowercase-normalizer.options.d.ts +1 -1
  99. package/dist/types/normalizer-options/normalizer-options.d.ts +3 -0
  100. package/dist/types/normalizer-options/number-normalizer.options.d.ts +8 -0
  101. package/dist/types/normalizer-options/string-normalizer.options.d.ts +12 -0
  102. package/dist/types/normalizers/date.normalizer.d.ts +6 -0
  103. package/dist/types/normalizers/normalizers.d.ts +3 -0
  104. package/dist/types/normalizers/number.normalizer.d.ts +6 -0
  105. package/dist/types/normalizers/string.normalizer.d.ts +6 -0
  106. package/dist/types/options/auto-data-mapping-builder.options.d.ts +11 -0
  107. package/dist/types/request-interceptors/body-mapping.request-interceptor.d.ts +20 -0
  108. package/dist/types/request-interceptors/request-interceptors.d.ts +1 -0
  109. package/package.json +8 -6
@@ -0,0 +1,147 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AutoDataMappingBuilder = void 0;
10
+ const data_mapping_builder_1 = require("./data-mapping.builder");
11
+ const data_mapping_node_1 = require("../nodes/data-mapping.node");
12
+ const metadata_1 = require("@pristine-ts/metadata");
13
+ const data_mapping_leaf_1 = require("../nodes/data-mapping.leaf");
14
+ const number_normalizer_1 = require("../normalizers/number.normalizer");
15
+ const string_normalizer_1 = require("../normalizers/string.normalizer");
16
+ const date_normalizer_1 = require("../normalizers/date.normalizer");
17
+ const common_1 = require("@pristine-ts/common");
18
+ const data_mapping_node_type_enum_1 = require("../enums/data-mapping-node-type.enum");
19
+ const tsyringe_1 = require("tsyringe");
20
+ const auto_data_mapping_builder_options_1 = require("../options/auto-data-mapping-builder.options");
21
+ let AutoDataMappingBuilder = class AutoDataMappingBuilder {
22
+ /**
23
+ * This method receives a source object and a destinationType that corresponds to the type of the class
24
+ * that the source should be mapped to. It then creates a DataMappingBuilder object that contains the schema
25
+ * needed to map the source to the destinationType.
26
+ * @param source
27
+ * @param destinationType
28
+ * @param options
29
+ */
30
+ build(source, destinationType, options) {
31
+ const dataMappingBuilder = new data_mapping_builder_1.DataMappingBuilder();
32
+ this.internalBuild(source, destinationType, dataMappingBuilder, dataMappingBuilder, new auto_data_mapping_builder_options_1.AutoDataMappingBuilderOptions(options));
33
+ return dataMappingBuilder;
34
+ }
35
+ /**
36
+ * This method is the internal method that is called recursively to build the schema.
37
+ *
38
+ * @param source
39
+ * @param destinationType
40
+ * @param root
41
+ * @param parent
42
+ * @param options
43
+ * @private
44
+ */
45
+ internalBuild(source, destinationType, root, parent, options) {
46
+ if (!source) {
47
+ return;
48
+ }
49
+ // Get the metadata of destinationType and iterate over its properties.
50
+ const classInformation = metadata_1.ClassMetadata.getInformation(destinationType);
51
+ classInformation.properties.forEach(propertyKey => {
52
+ var _a, _b, _c, _d;
53
+ // Retrieve the metadata for the property
54
+ const propertyInformation = metadata_1.PropertyMetadata.getInformation(destinationType.prototype, propertyKey);
55
+ let typeObject = propertyInformation.typeObject;
56
+ // Check if we have a `@typeFactory` decorator, it means that there's a callback that must be executed
57
+ // for this property to retrieve the actual DestinationType object. If there's one, execute it.
58
+ const typeFactoryCallback = metadata_1.PropertyMetadata.getMetadata(destinationType.prototype, propertyKey, common_1.MetadataEnum.TypeFactory);
59
+ if (typeFactoryCallback) {
60
+ typeObject = typeFactoryCallback(source, propertyKey).constructor;
61
+ }
62
+ // If the property references an object, this means that we need to recursively call this method to build the schema.
63
+ if (propertyInformation.typeEnum === metadata_1.TypeEnum.Object) {
64
+ const dataMappingNode = new data_mapping_node_1.DataMappingNode(root, parent);
65
+ dataMappingNode
66
+ .setSourceProperty(propertyKey)
67
+ .setDestinationProperty(propertyKey)
68
+ .setDestinationType(typeObject)
69
+ .setIsOptional((_a = propertyInformation.isNullable) !== null && _a !== void 0 ? _a : options.isOptionalDefaultValue)
70
+ .end();
71
+ return this.internalBuild(source[propertyKey], typeObject, root, dataMappingNode, options);
72
+ }
73
+ else if (propertyInformation.typeEnum === metadata_1.TypeEnum.Array) { // If the property references an array, we need to iterate over each element and recursively call this method to build the schema.
74
+ let nestedType = data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ScalarArray;
75
+ if (!source.hasOwnProperty(propertyKey) || Array.isArray(source[propertyKey]) === false || source[propertyKey].length === 0) {
76
+ return;
77
+ }
78
+ // 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.
79
+ const nestedElementType = metadata_1.TypeUtils.getTypeOfValue(source[propertyKey][0]);
80
+ switch (nestedElementType) {
81
+ case metadata_1.TypeEnum.Object:
82
+ nestedType = data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ObjectArray;
83
+ break;
84
+ }
85
+ // If the array is an array of scalars, then it will be a LeafNode of type ScalarArray with no children.
86
+ if (nestedType === data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.ScalarArray) {
87
+ const dataMappingLeaf = parent.addArrayOfScalar();
88
+ const normalizers = [];
89
+ // todo: Allow for options to be specified per attribute. We should probably add a decorator to can customize the normalizer.
90
+ switch (nestedElementType) {
91
+ case metadata_1.TypeEnum.Number:
92
+ normalizers.push(number_normalizer_1.NumberNormalizer.name);
93
+ break;
94
+ case metadata_1.TypeEnum.String:
95
+ normalizers.push(string_normalizer_1.StringNormalizer.name);
96
+ break;
97
+ case metadata_1.TypeEnum.Date:
98
+ normalizers.push(date_normalizer_1.DateNormalizer.name);
99
+ break;
100
+ }
101
+ normalizers.forEach(normalizer => dataMappingLeaf.addNormalizer(normalizer));
102
+ dataMappingLeaf.setSourceProperty(propertyKey)
103
+ .setDestinationProperty(propertyKey)
104
+ .setIsOptional((_b = propertyInformation.isNullable) !== null && _b !== void 0 ? _b : options.isOptionalDefaultValue)
105
+ .end();
106
+ return;
107
+ }
108
+ // Else, it's an array of objects and we must iterate over the first element to get all the properties and
109
+ // build the tree.
110
+ const dataMappingNode = parent.addArrayOfObjects();
111
+ dataMappingNode
112
+ .setSourceProperty(propertyKey)
113
+ .setDestinationProperty(propertyKey)
114
+ .setDestinationType(propertyInformation.arrayMemberObject)
115
+ .setIsOptional((_c = propertyInformation.isNullable) !== null && _c !== void 0 ? _c : options.isOptionalDefaultValue)
116
+ .end();
117
+ // We assume all the objects are similar so we use only the first one to build the schema
118
+ return this.internalBuild(source[propertyKey][0], propertyInformation.arrayMemberObject, root, dataMappingNode, options);
119
+ }
120
+ const normalizers = [];
121
+ // todo: Allow for options to be specified per attribute. We should probably add a decorator to can customize the normalizer.
122
+ switch (propertyInformation.typeEnum) {
123
+ case metadata_1.TypeEnum.Number:
124
+ normalizers.push(number_normalizer_1.NumberNormalizer.name);
125
+ break;
126
+ case metadata_1.TypeEnum.String:
127
+ normalizers.push(string_normalizer_1.StringNormalizer.name);
128
+ break;
129
+ case metadata_1.TypeEnum.Date:
130
+ normalizers.push(date_normalizer_1.DateNormalizer.name);
131
+ break;
132
+ }
133
+ const dataMappingLeaf = new data_mapping_leaf_1.DataMappingLeaf(root, parent);
134
+ normalizers.forEach(normalizer => dataMappingLeaf.addNormalizer(normalizer));
135
+ dataMappingLeaf
136
+ .setSourceProperty(propertyKey)
137
+ .setDestinationProperty(propertyKey)
138
+ .setIsOptional((_d = propertyInformation.isNullable) !== null && _d !== void 0 ? _d : options.isOptionalDefaultValue)
139
+ .end();
140
+ });
141
+ }
142
+ };
143
+ exports.AutoDataMappingBuilder = AutoDataMappingBuilder;
144
+ exports.AutoDataMappingBuilder = AutoDataMappingBuilder = __decorate([
145
+ (0, tsyringe_1.injectable)()
146
+ ], AutoDataMappingBuilder);
147
+ //# 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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"}
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./auto-data-mapping.builder"), exports);
17
18
  __exportStar(require("./data-mapping.builder"), exports);
18
19
  //# sourceMappingURL=builders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../../src/builders/builders.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC"}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../../../src/builders/builders.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8DAA4C;AAC5C,yDAAuC"}
@@ -18,6 +18,7 @@ exports.DataMappingModule = void 0;
18
18
  const logging_1 = require("@pristine-ts/logging");
19
19
  const data_mapping_module_keyname_1 = require("./data-mapping.module.keyname");
20
20
  __exportStar(require("./builders/builders"), exports);
21
+ __exportStar(require("./decorators/decorators"), exports);
21
22
  __exportStar(require("./enums/enums"), exports);
22
23
  __exportStar(require("./errors/errors"), exports);
23
24
  __exportStar(require("./interceptors/interceptors"), exports);
@@ -26,6 +27,7 @@ __exportStar(require("./mappers/mappers"), exports);
26
27
  __exportStar(require("./nodes/nodes"), exports);
27
28
  __exportStar(require("./normalizer-options/normalizer-options"), exports);
28
29
  __exportStar(require("./normalizers/normalizers"), exports);
30
+ __exportStar(require("./request-interceptors/request-interceptors"), exports);
29
31
  __exportStar(require("./types/types"), exports);
30
32
  exports.DataMappingModule = {
31
33
  keyname: data_mapping_module_keyname_1.DataMappingModuleKeyname,
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapping.module.js","sourceRoot":"","sources":["../../../src/data-mapping.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,kDAAmD;AACnD,+EAAuE;AAEvE,sDAAoC;AACpC,gDAA8B;AAC9B,kDAAgC;AAChC,8DAA4C;AAC5C,0DAAwC;AACxC,oDAAkC;AAClC,gDAA8B;AAC9B,0EAAwD;AACxD,4DAA0C;AAC1C,gDAA8B;AAEjB,QAAA,iBAAiB,GAAoB;IAC9C,OAAO,EAAE,sDAAwB;IACjC,aAAa,EAAE;QACX,uBAAa;KAChB;IACD,qBAAqB,EAAE,EACtB;IACD,wBAAwB,EAAE,EACzB;CAEJ,CAAA"}
1
+ {"version":3,"file":"data-mapping.module.js","sourceRoot":"","sources":["../../../src/data-mapping.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,kDAAmD;AACnD,+EAAuE;AAEvE,sDAAoC;AACpC,0DAAwC;AACxC,gDAA8B;AAC9B,kDAAgC;AAChC,8DAA4C;AAC5C,0DAAwC;AACxC,oDAAkC;AAClC,gDAA8B;AAC9B,0EAAwD;AACxD,4DAA0C;AAC1C,8EAA4D;AAC5D,gDAA8B;AAEjB,QAAA,iBAAiB,GAAoB;IAC9C,OAAO,EAAE,sDAAwB;IACjC,aAAa,EAAE;QACX,uBAAa;KAChB;IACD,qBAAqB,EAAE,EACtB;IACD,wBAAwB,EAAE,EACzB;CAEJ,CAAA"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bodyMapping = exports.bodyMappingDecoratorMetadataKeyname = void 0;
4
+ const common_1 = require("@pristine-ts/common");
5
+ exports.bodyMappingDecoratorMetadataKeyname = "@bodyMappingDecorator";
6
+ /**
7
+ * The bodyMapping decorator can be used to map the body to another object.
8
+ */
9
+ const bodyMapping = (argument) => {
10
+ return (
11
+ /**
12
+ * The class on which the decorator is used.
13
+ */
14
+ target,
15
+ /**
16
+ * The method on which the decorator is used.
17
+ */
18
+ propertyKey,
19
+ /**
20
+ * The descriptor of the property.
21
+ */
22
+ descriptor) => {
23
+ var _a;
24
+ let context;
25
+ if (argument.hasOwnProperty("builder")) {
26
+ context = {
27
+ type: "DataMappingBuilder",
28
+ // @ts-ignore It will exist if it has the property above.
29
+ dataMappingBuilder: argument.builder,
30
+ // @ts-ignore If it doesn't exist, it shouldn't worry about it, but it does...
31
+ destination: (_a = argument.destination) !== null && _a !== void 0 ? _a : undefined,
32
+ };
33
+ }
34
+ else if (typeof argument === "function" && argument.hasOwnProperty("prototype") && argument.prototype.hasOwnProperty("constructor")) {
35
+ context = {
36
+ type: "classType",
37
+ classType: argument,
38
+ };
39
+ }
40
+ else {
41
+ context = {
42
+ type: "function",
43
+ function: argument,
44
+ };
45
+ }
46
+ common_1.MetadataUtil.setToRouteContext(exports.bodyMappingDecoratorMetadataKeyname, context, target, propertyKey);
47
+ };
48
+ };
49
+ exports.bodyMapping = bodyMapping;
50
+ //# sourceMappingURL=body-mapping.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-mapping.decorator.js","sourceRoot":"","sources":["../../../../src/decorators/body-mapping.decorator.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AAQpC,QAAA,mCAAmC,GAAG,uBAAuB,CAAC;AAE3E;;GAEG;AACI,MAAM,WAAW,GAAG,CAAC,QAA2H,EAAG,EAAE;IACxJ,OAAO;IACH;;OAEG;IACH,MAAW;IAEX;;OAEG;IACH,WAA4B;IAE5B;;OAEG;IACH,UAA8B,EAChC,EAAE;;QACA,IAAI,OAA0I,CAAC;QAG/I,IAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YACnC,OAAO,GAAG;gBACN,IAAI,EAAE,oBAAoB;gBAE1B,yDAAyD;gBACzD,kBAAkB,EAAE,QAAQ,CAAC,OAA6B;gBAE1D,8EAA8E;gBAC9E,WAAW,EAAE,MAAA,QAAQ,CAAC,WAAW,mCAAI,SAAS;aACjD,CAAA;SACJ;aAAM,IAAG,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;YAClI,OAAO,GAAG;gBACN,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,QAAiC;aAC/C,CAAA;SACJ;aAAM;YACH,OAAO,GAAG;gBACN,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE,QAAgC;aAC7C,CAAA;SACJ;QAED,qBAAY,CAAC,iBAAiB,CAAC,2CAAmC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACtG,CAAC,CAAA;AACL,CAAC,CAAA;AA5CY,QAAA,WAAW,eA4CvB"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./body-mapping.decorator"), exports);
18
+ //# sourceMappingURL=decorators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../../../src/decorators/decorators.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2DAAwC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.type = void 0;
4
+ const metadata_1 = require("@pristine-ts/metadata");
5
+ const common_1 = require("@pristine-ts/common");
6
+ const type = (callback) => {
7
+ return (
8
+ /**
9
+ * The class on which the decorator is used.
10
+ */
11
+ target,
12
+ /**
13
+ * The property on which the decorator is used.
14
+ */
15
+ propertyKey) => {
16
+ metadata_1.PropertyMetadata.defineMetadata(target, propertyKey, common_1.MetadataEnum.TypeFactory, callback);
17
+ };
18
+ };
19
+ exports.type = type;
20
+ //# 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,oDAAuD;AACvD,gDAAiD;AAI1C,MAAM,IAAI,GAAG,CAAC,QAA6B,EAAE,EAAE;IAClD,OAAO;IACH;;OAEG;IACH,MAAW;IAEX;;OAEG;IACH,WAA4B,EAC9B,EAAE;QACA,2BAAgB,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,qBAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7F,CAAC,CAAA;AACL,CAAC,CAAA;AAdY,QAAA,IAAI,QAchB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=body-mapping-context.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"body-mapping-context.interface.js","sourceRoot":"","sources":["../../../../src/interfaces/body-mapping-context.interface.ts"],"names":[],"mappings":""}
@@ -27,8 +27,10 @@ const data_mapping_module_keyname_1 = require("../data-mapping.module.keyname");
27
27
  const tsyringe_1 = require("tsyringe");
28
28
  const class_transformer_1 = require("class-transformer");
29
29
  const data_mapping_interceptor_not_found_error_1 = require("../errors/data-mapping-interceptor-not-found.error");
30
+ const auto_data_mapping_builder_1 = require("../builders/auto-data-mapping.builder");
30
31
  let DataMapper = class DataMapper {
31
- constructor(dataNormalizers, dataTransformerInterceptors) {
32
+ constructor(autoDataMappingBuilder, dataNormalizers, dataTransformerInterceptors) {
33
+ this.autoDataMappingBuilder = autoDataMappingBuilder;
32
34
  this.dataNormalizers = dataNormalizers;
33
35
  this.dataTransformerInterceptors = dataTransformerInterceptors;
34
36
  this.dataNormalizersMap = {};
@@ -56,6 +58,18 @@ let DataMapper = class DataMapper {
56
58
  return destination;
57
59
  });
58
60
  }
61
+ /**
62
+ * This method automatically maps a source object into the DestinationType.
63
+ * @param source
64
+ * @param destinationType
65
+ * @param options
66
+ */
67
+ autoMap(source, destinationType, options) {
68
+ return __awaiter(this, void 0, void 0, function* () {
69
+ const dataMappingBuilder = this.autoDataMappingBuilder.build(source, destinationType, options);
70
+ return this.map(dataMappingBuilder, source, destinationType);
71
+ });
72
+ }
59
73
  /**
60
74
  * This method takes a builder, a source and maps it according to the builder. You can pass a `destinationType (optional)`
61
75
  * that is an object that will be constructed.
@@ -105,8 +119,8 @@ exports.DataMapper = DataMapper;
105
119
  exports.DataMapper = DataMapper = __decorate([
106
120
  (0, common_1.moduleScoped)(data_mapping_module_keyname_1.DataMappingModuleKeyname),
107
121
  (0, tsyringe_1.injectable)(),
108
- __param(0, (0, tsyringe_1.injectAll)("DataNormalizerInterface")),
109
- __param(1, (0, tsyringe_1.injectAll)("DataTransformerInterceptor")),
110
- __metadata("design:paramtypes", [Array, Array])
122
+ __param(1, (0, tsyringe_1.injectAll)("DataNormalizerInterface")),
123
+ __param(2, (0, tsyringe_1.injectAll)("DataTransformerInterceptor")),
124
+ __metadata("design:paramtypes", [auto_data_mapping_builder_1.AutoDataMappingBuilder, Array, Array])
111
125
  ], DataMapper);
112
126
  //# sourceMappingURL=data.mapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/data.mapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.mapper.js","sourceRoot":"","sources":["../../../../src/mappers/data.mapper.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ const data_mapping_leaf_1 = require("./data-mapping.leaf");
15
15
  const base_data_mapping_node_1 = require("./base-data-mapping.node");
16
16
  const data_mapping_source_property_not_found_error_1 = require("../errors/data-mapping-source-property-not-found.error");
17
17
  const array_data_mapping_node_invalid_source_property_type_error_1 = require("../errors/array-data-mapping-node-invalid-source-property-type.error");
18
+ const class_transformer_1 = require("class-transformer");
18
19
  class DataMappingNode extends base_data_mapping_node_1.BaseDataMappingNode {
19
20
  constructor(root, parent, type = data_mapping_node_type_enum_1.DataMappingNodeTypeEnum.Node) {
20
21
  super();
@@ -42,6 +43,14 @@ class DataMappingNode extends base_data_mapping_node_1.BaseDataMappingNode {
42
43
  this.destinationProperty = destinationProperty;
43
44
  return this;
44
45
  }
46
+ /**
47
+ * This is a setter for `destinationType`.
48
+ * @param destinationType
49
+ */
50
+ setDestinationType(destinationType) {
51
+ this.destinationType = destinationType;
52
+ return this;
53
+ }
45
54
  /**
46
55
  * This is a setter for `isOptional`.
47
56
  * @param isOptional
@@ -110,8 +119,12 @@ class DataMappingNode extends base_data_mapping_node_1.BaseDataMappingNode {
110
119
  destination[this.destinationProperty] = [];
111
120
  }
112
121
  else {
113
- // todo: we need to get the expected Type of the `destination[this.destinationProperty]` and actually instantiate it.
114
- destination[this.destinationProperty] = {};
122
+ if (this.destinationType) {
123
+ destination[this.destinationProperty] = (0, class_transformer_1.plainToInstance)(this.destinationType, {});
124
+ }
125
+ else {
126
+ destination[this.destinationProperty] = {};
127
+ }
115
128
  }
116
129
  }
117
130
  const destinationElement = destination[this.destinationProperty];
@@ -122,8 +135,10 @@ class DataMappingNode extends base_data_mapping_node_1.BaseDataMappingNode {
122
135
  throw new array_data_mapping_node_invalid_source_property_type_error_1.ArrayDataMappingNodeInvalidSourcePropertyTypeError(`According to your schema, the property '${this.sourceProperty}' in the source object must contain an Array of objects. Instead, it contains: '${typeof array}'.`, this.sourceProperty);
123
136
  }
124
137
  for (const element of array) {
125
- // todo: we need to get the expected Type of the object in the array in the Destination object
126
- const dest = {};
138
+ let dest = {};
139
+ if (this.destinationType) {
140
+ dest = (0, class_transformer_1.plainToInstance)(this.destinationType, {});
141
+ }
127
142
  for (const key in this.nodes) {
128
143
  if (this.nodes.hasOwnProperty(key) === false) {
129
144
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-mapping.node.js","sourceRoot":"","sources":["../../../../src/nodes/data-mapping.node.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@ exports.BaseNormalizerOptions = void 0;
4
4
  class BaseNormalizerOptions {
5
5
  constructor(options) {
6
6
  var _a;
7
- this.shouldThrowIfTypeIsNotString = (_a = options === null || options === void 0 ? void 0 : options.shouldThrowIfTypeIsNotString) !== null && _a !== void 0 ? _a : false;
7
+ this.shouldThrowIfTypeIsNotString = false;
8
+ this.shouldThrowIfTypeIsNotString = (_a = options === null || options === void 0 ? void 0 : options.shouldThrowIfTypeIsNotString) !== null && _a !== void 0 ? _a : this.shouldThrowIfTypeIsNotString;
8
9
  }
9
10
  }
10
11
  exports.BaseNormalizerOptions = BaseNormalizerOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"base-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/base-normalizer.options.ts"],"names":[],"mappings":";;;AAAA,MAAsB,qBAAqB;IAGvC,YAAmB,OAA+B;;QAC9C,IAAI,CAAC,4BAA4B,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,4BAA4B,mCAAI,KAAK,CAAC;IACvF,CAAC;CACJ;AAND,sDAMC"}
1
+ {"version":3,"file":"base-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/base-normalizer.options.ts"],"names":[],"mappings":";;;AAAA,MAAsB,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;AAND,sDAMC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DateNormalizerOptions = void 0;
4
+ class DateNormalizerOptions {
5
+ constructor(options) {
6
+ var _a, _b;
7
+ /**
8
+ * This property specifies whether an invalid date should return undefined or a date object.
9
+ */
10
+ this.returnUndefinedOnInvalidDate = true;
11
+ /**
12
+ * This property specifies if a number should be treated as being in seconds or not. Since JS Date expects a
13
+ * timestamp in milliseconds, if the number is in seconds, it will be multiplied by 1000.
14
+ */
15
+ this.treatNumbers = "seconds";
16
+ this.returnUndefinedOnInvalidDate = (_a = options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) !== null && _a !== void 0 ? _a : this.returnUndefinedOnInvalidDate;
17
+ this.treatNumbers = (_b = options === null || options === void 0 ? void 0 : options.treatNumbers) !== null && _b !== void 0 ? _b : this.treatNumbers;
18
+ }
19
+ }
20
+ exports.DateNormalizerOptions = DateNormalizerOptions;
21
+ //# 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,MAAa,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;AAhBD,sDAgBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lowercase-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/lowercase-normalizer.options.ts"],"names":[],"mappings":";;;AAAA,uEAAgE;AAEhE,MAAa,0BAA2B,SAAQ,+CAAqB;IACjE,YAAmB,OAAoC;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,gEAIC"}
1
+ {"version":3,"file":"lowercase-normalizer.options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/lowercase-normalizer.options.ts"],"names":[],"mappings":";;;AAAA,uEAAgE;AAEhE,MAAa,0BAA2B,SAAQ,+CAAqB;IACjE,YAAmB,OAA6C;QAC5D,KAAK,CAAC,OAAO,CAAC,CAAC;IACnB,CAAC;CACJ;AAJD,gEAIC"}
@@ -15,5 +15,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./base-normalizer.options"), exports);
18
+ __exportStar(require("./date-normalizer.options"), exports);
18
19
  __exportStar(require("./lowercase-normalizer.options"), exports);
20
+ __exportStar(require("./number-normalizer.options"), exports);
21
+ __exportStar(require("./string-normalizer.options"), exports);
19
22
  //# 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,4DAA0C;AAC1C,iEAA+C"}
1
+ {"version":3,"file":"normalizer-options.js","sourceRoot":"","sources":["../../../../src/normalizer-options/normalizer-options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,4DAA0C;AAC1C,iEAA+C;AAC/C,8DAA4C;AAC5C,8DAA4C"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberNormalizerOptions = void 0;
4
+ class NumberNormalizerOptions {
5
+ constructor(options) {
6
+ var _a;
7
+ /**
8
+ * This property specifies whether an undefined value should be ignored and simply returned or treated as a potential string
9
+ * and return an empty string `""`.
10
+ */
11
+ this.ignoreUndefined = true;
12
+ this.ignoreUndefined = (_a = options === null || options === void 0 ? void 0 : options.ignoreUndefined) !== null && _a !== void 0 ? _a : this.ignoreUndefined;
13
+ }
14
+ }
15
+ exports.NumberNormalizerOptions = NumberNormalizerOptions;
16
+ //# 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,MAAa,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;AAVD,0DAUC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringNormalizerOptions = void 0;
4
+ class StringNormalizerOptions {
5
+ constructor(options) {
6
+ var _a;
7
+ /**
8
+ * This property specifies whether an undefined value should be ignored and simply returned or treated as a potential string
9
+ * and return an empty string `""`.
10
+ */
11
+ this.ignoreUndefined = true;
12
+ this.ignoreUndefined = (_a = options === null || options === void 0 ? void 0 : options.ignoreUndefined) !== null && _a !== void 0 ? _a : this.ignoreUndefined;
13
+ this.dateFormat = options === null || options === void 0 ? void 0 : options.dateFormat;
14
+ }
15
+ }
16
+ exports.StringNormalizerOptions = StringNormalizerOptions;
17
+ //# 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,MAAa,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;AAhBD,0DAgBC"}
@@ -0,0 +1,73 @@
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 DateNormalizer_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.DateNormalizer = void 0;
11
+ const tsyringe_1 = require("tsyringe");
12
+ const metadata_1 = require("@pristine-ts/metadata");
13
+ let DateNormalizer = DateNormalizer_1 = class DateNormalizer {
14
+ getUniqueKey() {
15
+ return DateNormalizer_1.name;
16
+ }
17
+ normalize(source, options) {
18
+ const typeEnum = metadata_1.TypeUtils.getTypeOfValue(source);
19
+ if (typeEnum === undefined) {
20
+ if ((options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) === false) {
21
+ return new Date();
22
+ }
23
+ return undefined;
24
+ }
25
+ let date;
26
+ switch (typeEnum) {
27
+ case metadata_1.TypeEnum.Number:
28
+ if ((options === null || options === void 0 ? void 0 : options.treatNumbers) === "seconds") {
29
+ source = source * 1000;
30
+ }
31
+ case metadata_1.TypeEnum.String:
32
+ date = new Date(source);
33
+ if (!isNaN(date.getTime())) {
34
+ return date;
35
+ }
36
+ break;
37
+ case metadata_1.TypeEnum.Object:
38
+ date = new Date();
39
+ // todo: Allow this property to be customizable in the options eventually
40
+ if (source.hasOwnProperty("year")) {
41
+ date.setFullYear(source["year"]);
42
+ }
43
+ if (source.hasOwnProperty("month")) {
44
+ date.setMonth(source["month"]);
45
+ }
46
+ if (source.hasOwnProperty("day")) {
47
+ date.setDate(source["day"]);
48
+ }
49
+ if (source.hasOwnProperty("hours")) {
50
+ date.setHours(source["hours"]);
51
+ }
52
+ if (source.hasOwnProperty("minutes")) {
53
+ date.setMinutes(source["minutes"]);
54
+ }
55
+ if (source.hasOwnProperty("seconds")) {
56
+ date.setSeconds(source["seconds"]);
57
+ }
58
+ if (!isNaN(date.getTime())) {
59
+ return date;
60
+ }
61
+ break;
62
+ }
63
+ if ((options === null || options === void 0 ? void 0 : options.returnUndefinedOnInvalidDate) === false) {
64
+ return new Date();
65
+ }
66
+ return undefined;
67
+ }
68
+ };
69
+ exports.DateNormalizer = DateNormalizer;
70
+ exports.DateNormalizer = DateNormalizer = DateNormalizer_1 = __decorate([
71
+ (0, tsyringe_1.injectable)()
72
+ ], DateNormalizer);
73
+ //# sourceMappingURL=date.normalizer.js.map