import {Constructor} from "./imparsable"; import {DescriptionManager} from "../description-manager"; import {Property} from "../property"; import {CollectionProperty, ParsingSchema} from "../types"; //TODO: solve how to do input parameters let d: PropertyDecorator = () => 5; export function property(parameters?: Partial>) { if (parameters == null) parameters = {}; return function (target: T, key: K, descriptor?: TypedPropertyDescriptor) { if (descriptor != null) parameters.getOnly = descriptor.set == null; DescriptionManager.decoratePropertyWithParameters(target, key, parameters); }; } export function collectionOf(input: Constructor, parameters?: Partial>, itemsDescription?: Partial>) { if (parameters == null) parameters = {}; parameters.itemProperty = DescriptionManager.autoCreateComplexDescription(Object.assign({ type: input }, itemsDescription)); return function (target: T, key: K, descriptor?: TypedPropertyDescriptor) { if (descriptor != null) parameters.getOnly = descriptor.set == null; DescriptionManager.decoratePropertyWithParameters(target, key, parameters); }; }