UNPKG

2.28 kBJavaScriptView Raw
1"use strict";
2var storage_1 = require("./storage");
3var TypeMetadata_1 = require("./metadata/TypeMetadata");
4var ExposeMetadata_1 = require("./metadata/ExposeMetadata");
5var ExcludeMetadata_1 = require("./metadata/ExcludeMetadata");
6var TransformMetadata_1 = require("./metadata/TransformMetadata");
7/**
8 * Defines a custom logic for value transformation.
9 */
10function Transform(transformFn, options) {
11 return function (target, key) {
12 var metadata = new TransformMetadata_1.TransformMetadata(target.constructor, key, transformFn, options);
13 storage_1.defaultMetadataStorage.addTransformMetadata(metadata);
14 };
15}
16exports.Transform = Transform;
17/**
18 * Specifies a type of the property.
19 */
20function Type(typeFunction) {
21 return function (target, key) {
22 var type = Reflect.getMetadata("design:type", target, key);
23 var metadata = new TypeMetadata_1.TypeMetadata(target.constructor, key, type, typeFunction);
24 storage_1.defaultMetadataStorage.addTypeMetadata(metadata);
25 };
26}
27exports.Type = Type;
28/**
29 * Marks property as included in the process of transformation. By default it includes the property for both
30 * constructorToPlain and plainToConstructor transformations, however you can specify on which of transformation types
31 * you want to skip this property.
32 */
33function Expose(options) {
34 return function (object, propertyName) {
35 var metadata = new ExposeMetadata_1.ExposeMetadata(object instanceof Function ? object : object.constructor, propertyName, options || {});
36 storage_1.defaultMetadataStorage.addExposeMetadata(metadata);
37 };
38}
39exports.Expose = Expose;
40/**
41 * Marks property as excluded from the process of transformation. By default it excludes the property for both
42 * constructorToPlain and plainToConstructor transformations, however you can specify on which of transformation types
43 * you want to skip this property.
44 */
45function Exclude(options) {
46 return function (object, propertyName) {
47 var metadata = new ExcludeMetadata_1.ExcludeMetadata(object instanceof Function ? object : object.constructor, propertyName, options || {});
48 storage_1.defaultMetadataStorage.addExcludeMetadata(metadata);
49 };
50}
51exports.Exclude = Exclude;
52
53//# sourceMappingURL=decorators.js.map