@opra/common
Version:
Opra common package
71 lines (70 loc) • 2.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.StringType = void 0;
const tslib_1 = require("tslib");
const valgen_1 = require("valgen");
const constants_js_1 = require("../../constants.js");
const simple_type_js_1 = require("../simple-type.js");
let StringType = class StringType {
constructor(properties) {
if (properties)
Object.assign(this, properties);
}
[constants_js_1.DECODER](properties) {
const x = [];
if (properties.pattern) {
let formatName = properties.patternName;
if (!formatName) {
const meta = Reflect.getMetadata(constants_js_1.DATATYPE_METADATA, Object.getPrototypeOf(this).constructor);
formatName = meta.name;
}
x.push(valgen_1.vg.matches(properties.pattern, { formatName }));
}
if (properties.minLength)
x.push(valgen_1.vg.lengthMin(properties.minLength));
if (properties.maxLength)
x.push(valgen_1.vg.lengthMax(properties.maxLength));
return x.length > 0
? valgen_1.vg.pipe([valgen_1.toString, ...x], { returnIndex: 0 })
: valgen_1.toString;
}
[constants_js_1.ENCODER](properties) {
return this[constants_js_1.DECODER](properties);
}
};
exports.StringType = StringType;
tslib_1.__decorate([
simple_type_js_1.SimpleType.Attribute({
description: 'Regex pattern to be used for validation',
}),
tslib_1.__metadata("design:type", Object)
], StringType.prototype, "pattern", void 0);
tslib_1.__decorate([
simple_type_js_1.SimpleType.Attribute({
description: 'Name of the pattern',
}),
tslib_1.__metadata("design:type", String)
], StringType.prototype, "patternName", void 0);
tslib_1.__decorate([
simple_type_js_1.SimpleType.Attribute({
description: 'Minimum number of characters',
}),
tslib_1.__metadata("design:type", Number)
], StringType.prototype, "minLength", void 0);
tslib_1.__decorate([
simple_type_js_1.SimpleType.Attribute({
description: 'Minimum number of characters',
}),
tslib_1.__metadata("design:type", Number)
], StringType.prototype, "maxLength", void 0);
exports.StringType = StringType = tslib_1.__decorate([
(0, simple_type_js_1.SimpleType)({
name: 'string',
description: 'A sequence of characters',
nameMappings: {
js: 'string',
json: 'string',
},
}),
tslib_1.__metadata("design:paramtypes", [Object])
], StringType);