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
JavaScript
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)),
};
;