UNPKG

@opra/common

Version:
71 lines (70 loc) 2.57 kB
"use strict"; 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);