tsbase
Version:
Base class libraries for TypeScript
72 lines • 3.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Label = Label;
exports.Description = Description;
exports.InputType = InputType;
exports.Validations = Validations;
exports.Options = Options;
exports.Required = Required;
exports.Range = Range;
exports.StringLength = StringLength;
exports.RegExp = RegExp;
const Model_1 = require("./Model");
const MetadataKeys_1 = require("./MetadataKeys");
const module_1 = require("./Validations/module");
function metadata(metadataKey, value) {
return function (_, member) {
member.addInitializer(function () {
const metaData = Model_1.Model.Metadata[metadataKey] || (Model_1.Model.Metadata[metadataKey] = {});
const className = this.constructor.name;
metaData[`${className}-${String(member.name)}`] = value;
});
};
}
function Label(label) {
return metadata(MetadataKeys_1.MetadataKeys.Label, label);
}
function Description(description) {
return metadata(MetadataKeys_1.MetadataKeys.Description, description);
}
function InputType(inputType) {
return metadata(MetadataKeys_1.MetadataKeys.InputType, inputType);
}
function Validations(validations) {
return function (_, member) {
member.addInitializer(function () {
const metaData = Model_1.Model.Metadata[MetadataKeys_1.MetadataKeys.Validations] || (Model_1.Model.Metadata[MetadataKeys_1.MetadataKeys.Validations] = {});
const className = this.constructor.name;
const memberName = String(member.name);
const validationMetadata = metaData[`${className}-${memberName}`] || [];
validations = validations.filter(v => !validationMetadata.find(existing => JSON.stringify(v) === JSON.stringify(existing)));
metaData[`${className}-${memberName}`] = validationMetadata.concat(validations);
});
};
}
function Options(options, customErrorMessage) {
return function (_, member) {
const memberName = String(member.name);
Validations([new module_1.OptionValidation(memberName, customErrorMessage)])(_, member);
metadata(MetadataKeys_1.MetadataKeys.Options, options)(_, member);
};
}
function Required(customErrorMessage) {
return function (_, member) {
Validations([new module_1.RequiredValidation(String(member.name), customErrorMessage)])(_, member);
};
}
function Range(minimum, maximum, customErrorMessage) {
return function (_, member) {
Validations([new module_1.RangeValidation(String(member.name), minimum, maximum, customErrorMessage)])(_, member);
};
}
function StringLength(minimum, maximum, customErrorMessage) {
return function (_, member) {
Validations([new module_1.StringLengthValidation(String(member.name), minimum, maximum, customErrorMessage)])(_, member);
};
}
function RegExp(regex, customErrorMessage) {
return function (_, member) {
Validations([new module_1.RegExpValidation(String(member.name), regex, customErrorMessage)])(_, member);
};
}
//# sourceMappingURL=Metadata.js.map