UNPKG

swagger-typed-express-docs

Version:

Simple express runtime parser and documentation swagger generator with 100% support of Typescript static types

88 lines (87 loc) 4.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.tCast = exports.tExtra = exports.tToListIfNot = exports.tISOString = exports.tMinMaxString = exports.tCast_boolean = void 0; var schemaBuilder_1 = require("./schemaBuilder"); var tCast_date = schemaBuilder_1.T.transformType(schemaBuilder_1.T.string, schemaBuilder_1.T.any, function (value) { var parsedValue = new Date(value); if (isNaN(parsedValue === null || parsedValue === void 0 ? void 0 : parsedValue.getTime())) { throw new Error('invalid Date'); } return parsedValue; }, function (value) { return value.toISOString(); }); var tCast_number = schemaBuilder_1.T.transformType(schemaBuilder_1.T.string, schemaBuilder_1.T.number, function (value) { var parsedValue = Number(value); if (isNaN(parsedValue)) { throw new Error('invalid number cast'); } return parsedValue; }, function (value) { return value.toString(); }); exports.tCast_boolean = schemaBuilder_1.T.transformType(schemaBuilder_1.T.enum(['true', 'false']), schemaBuilder_1.T.boolean, function (value) { if (value === 'true') { return true; } else if (value === 'false') { return false; } throw new Error('invalid value'); }, function (value) { return value.toString(); }); var tMinMaxNumber = function (min, max) { return schemaBuilder_1.T.addValidator(schemaBuilder_1.T.number, function (value) { if (value === null || value === undefined) { throw new Error('invalid nullable number value'); } if (isNaN(value)) { throw new Error('invalid number value'); } if (value < min) { throw new Error('value needs to be < ' + min); } if (value > max) { throw new Error('value needs to be > ' + max); } }); }; var tMinMaxString = function (min, max) { return schemaBuilder_1.T.addValidator(schemaBuilder_1.T.string, function (value) { if (value.length < min) { throw new Error("length is ".concat(value.length, ", but len needs to be >= ").concat(min)); } if (value.length > max) { throw new Error("length is ".concat(value.length, ", but len needs to be <= ").concat(max)); } }); }; exports.tMinMaxString = tMinMaxString; exports.tISOString = schemaBuilder_1.T.addValidator(schemaBuilder_1.T.string, function (str) { var parsedDate = new Date(str); if (parsedDate.toISOString() !== str) { throw new Error('invalid ISO string format'); } }); var tToListIfNot = function (tSchema) { return schemaBuilder_1.T.transformType(schemaBuilder_1.T.oneOf([ tSchema, schemaBuilder_1.T.list(tSchema), ]), schemaBuilder_1.T.list(tSchema), function (val) { return (Array.isArray(val) ? val : [val]); }, function (val) { return val; }); }; exports.tToListIfNot = tToListIfNot; exports.tExtra = { minMaxNumber: tMinMaxNumber, null_minMaxNum: function (min, max) { return schemaBuilder_1.T.nullable(tMinMaxNumber(min, max)); }, ISOString: exports.tISOString, null_ISOString: schemaBuilder_1.T.nullable(exports.tISOString), minMaxString: exports.tMinMaxString, null_minMaxString: function (min, max) { return schemaBuilder_1.T.nullable((0, exports.tMinMaxString)(min, max)); }, toListIfNot: exports.tToListIfNot, null_toListIfNot: function (arg) { return schemaBuilder_1.T.nullable((0, exports.tToListIfNot)(arg)); }, }; exports.tCast = { date: schemaBuilder_1.T.nonNullable(tCast_date), null_date: schemaBuilder_1.T.nullable(schemaBuilder_1.T.nullableTransform(tCast_date)), number: schemaBuilder_1.T.nonNullable(tCast_number), null_number: schemaBuilder_1.T.nullable(schemaBuilder_1.T.nullableTransform(tCast_number)), boolean: schemaBuilder_1.T.nonNullable(exports.tCast_boolean), null_boolean: schemaBuilder_1.T.nullable(schemaBuilder_1.T.nullableTransform(exports.tCast_boolean)), isoToJSDate: schemaBuilder_1.T.nonNullable(exports.tCast_boolean), null_isoToJSDate: schemaBuilder_1.T.nullable(schemaBuilder_1.T.nullableTransform(exports.tCast_boolean)), };