UNPKG

express-cargo

Version:

express middleware for class-based request parsing

33 lines (32 loc) 1.16 kB
import { CargoClassMetadata } from './metadata'; const TYPE_MAP = { string: String, number: Number, boolean: Boolean, date: Date }; export function Optional() { return (target, propertyKey)=>{ const classMeta = new CargoClassMetadata(target); const fieldMeta = classMeta.getFieldMetadata(propertyKey); fieldMeta.setOptional(true); classMeta.setFieldMetadata(propertyKey, fieldMeta); }; } export function Array(elementType) { return (target, propertyKey)=>{ const classMeta = new CargoClassMetadata(target); const fieldMeta = classMeta.getFieldMetadata(propertyKey); const actualType = typeof elementType === 'string' ? TYPE_MAP[elementType] : elementType; fieldMeta.setArrayElementType(actualType); classMeta.setFieldMetadata(propertyKey, fieldMeta); }; } export function Default(value) { return (target, propertyKey)=>{ const classMeta = new CargoClassMetadata(target); const fieldMeta = classMeta.getFieldMetadata(propertyKey); fieldMeta.setDefault(value); classMeta.setFieldMetadata(propertyKey, fieldMeta); }; }