express-cargo
Version:
express middleware for class-based request parsing
54 lines (53 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get Array () {
return Array;
},
get Default () {
return Default;
},
get Optional () {
return Optional;
}
});
const _metadata = require("./metadata");
const TYPE_MAP = {
string: String,
number: Number,
boolean: Boolean,
date: Date
};
function Optional() {
return (target, propertyKey)=>{
const classMeta = new _metadata.CargoClassMetadata(target);
const fieldMeta = classMeta.getFieldMetadata(propertyKey);
fieldMeta.setOptional(true);
classMeta.setFieldMetadata(propertyKey, fieldMeta);
};
}
function Array(elementType) {
return (target, propertyKey)=>{
const classMeta = new _metadata.CargoClassMetadata(target);
const fieldMeta = classMeta.getFieldMetadata(propertyKey);
const actualType = typeof elementType === 'string' ? TYPE_MAP[elementType] : elementType;
fieldMeta.setArrayElementType(actualType);
classMeta.setFieldMetadata(propertyKey, fieldMeta);
};
}
function Default(value) {
return (target, propertyKey)=>{
const classMeta = new _metadata.CargoClassMetadata(target);
const fieldMeta = classMeta.getFieldMetadata(propertyKey);
fieldMeta.setDefault(value);
classMeta.setFieldMetadata(propertyKey, fieldMeta);
};
}