UNPKG

tsbase

Version:

Base class libraries for TypeScript

72 lines 3.08 kB
"use strict"; 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