1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var ClassTransformer_1 = require("./ClassTransformer");
|
4 | var storage_1 = require("./storage");
|
5 | var TypeMetadata_1 = require("./metadata/TypeMetadata");
|
6 | var ExposeMetadata_1 = require("./metadata/ExposeMetadata");
|
7 | var ExcludeMetadata_1 = require("./metadata/ExcludeMetadata");
|
8 | var TransformMetadata_1 = require("./metadata/TransformMetadata");
|
9 |
|
10 |
|
11 |
|
12 | function Transform(transformFn, options) {
|
13 | return function (target, key) {
|
14 | var metadata = new TransformMetadata_1.TransformMetadata(target.constructor, key, transformFn, options);
|
15 | storage_1.defaultMetadataStorage.addTransformMetadata(metadata);
|
16 | };
|
17 | }
|
18 | exports.Transform = Transform;
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | function Type(typeFunction, options) {
|
24 | return function (target, key) {
|
25 | var type = Reflect.getMetadata("design:type", target, key);
|
26 | var metadata = new TypeMetadata_1.TypeMetadata(target.constructor, key, type, typeFunction, options);
|
27 | storage_1.defaultMetadataStorage.addTypeMetadata(metadata);
|
28 | };
|
29 | }
|
30 | exports.Type = Type;
|
31 |
|
32 |
|
33 |
|
34 |
|
35 |
|
36 | function Expose(options) {
|
37 | return function (object, propertyName) {
|
38 | var metadata = new ExposeMetadata_1.ExposeMetadata(object instanceof Function ? object : object.constructor, propertyName, options || {});
|
39 | storage_1.defaultMetadataStorage.addExposeMetadata(metadata);
|
40 | };
|
41 | }
|
42 | exports.Expose = Expose;
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 | function Exclude(options) {
|
49 | return function (object, propertyName) {
|
50 | var metadata = new ExcludeMetadata_1.ExcludeMetadata(object instanceof Function ? object : object.constructor, propertyName, options || {});
|
51 | storage_1.defaultMetadataStorage.addExcludeMetadata(metadata);
|
52 | };
|
53 | }
|
54 | exports.Exclude = Exclude;
|
55 |
|
56 |
|
57 |
|
58 | function TransformClassToPlain(params) {
|
59 | return function (target, propertyKey, descriptor) {
|
60 | var classTransformer = new ClassTransformer_1.ClassTransformer();
|
61 | var originalMethod = descriptor.value;
|
62 | descriptor.value = function () {
|
63 | var args = [];
|
64 | for (var _i = 0; _i < arguments.length; _i++) {
|
65 | args[_i] = arguments[_i];
|
66 | }
|
67 | var result = originalMethod.apply(this, args);
|
68 | var isPromise = !!result && (typeof result === "object" || typeof result === "function") && typeof result.then === "function";
|
69 | return isPromise ? result.then(function (data) { return classTransformer.classToPlain(data, params); }) : classTransformer.classToPlain(result, params);
|
70 | };
|
71 | };
|
72 | }
|
73 | exports.TransformClassToPlain = TransformClassToPlain;
|
74 |
|
75 |
|
76 |
|
77 | function TransformClassToClass(params) {
|
78 | return function (target, propertyKey, descriptor) {
|
79 | var classTransformer = new ClassTransformer_1.ClassTransformer();
|
80 | var originalMethod = descriptor.value;
|
81 | descriptor.value = function () {
|
82 | var args = [];
|
83 | for (var _i = 0; _i < arguments.length; _i++) {
|
84 | args[_i] = arguments[_i];
|
85 | }
|
86 | var result = originalMethod.apply(this, args);
|
87 | var isPromise = !!result && (typeof result === "object" || typeof result === "function") && typeof result.then === "function";
|
88 | return isPromise ? result.then(function (data) { return classTransformer.classToClass(data, params); }) : classTransformer.classToClass(result, params);
|
89 | };
|
90 | };
|
91 | }
|
92 | exports.TransformClassToClass = TransformClassToClass;
|
93 |
|
94 |
|
95 |
|
96 | function TransformPlainToClass(classType, params) {
|
97 | return function (target, propertyKey, descriptor) {
|
98 | var classTransformer = new ClassTransformer_1.ClassTransformer();
|
99 | var originalMethod = descriptor.value;
|
100 | descriptor.value = function () {
|
101 | var args = [];
|
102 | for (var _i = 0; _i < arguments.length; _i++) {
|
103 | args[_i] = arguments[_i];
|
104 | }
|
105 | var result = originalMethod.apply(this, args);
|
106 | var isPromise = !!result && (typeof result === "object" || typeof result === "function") && typeof result.then === "function";
|
107 | return isPromise ? result.then(function (data) { return classTransformer.plainToClass(classType, data, params); }) : classTransformer.plainToClass(classType, result, params);
|
108 | };
|
109 | };
|
110 | }
|
111 | exports.TransformPlainToClass = TransformPlainToClass;
|
112 |
|
113 |
|