UNPKG

swagger-typed-express-docs

Version:

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

162 lines (161 loc) 5.64 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.T = exports.tTransformType = void 0; var utils_1 = require("./utils"); var tNumber = { type: 'number', required: true, }; var tBoolean = { type: 'boolean', required: true, }; var tString = { type: 'string', required: true, }; var tAny = { type: 'any', required: true, }; var tOneOf = function (options) { return ({ type: 'oneOf', required: true, options: options, }); }; var tEnum = function (options) { if (options.some(function (i) { return typeof i !== 'string' && typeof i !== 'boolean' && typeof i !== 'number'; })) { throw new Error("T.enum get invalid options ".concat(JSON.stringify(options), ", only number, boolean and string is supported")); } return { type: 'enum', required: true, options: options, }; }; var tObject = function (a) { return ({ type: 'object', required: true, properties: a, }); }; var tHashMap = function (a) { return ({ type: 'hashMap', required: true, property: a, }); }; var tList = function (items) { return ({ type: 'array', required: true, items: items, }); }; var tLazy = function (name, tSchema) { return ({ type: 'lazy', name: name, required: true, getSchema: tSchema, }); }; var tTransformType = function (encodedTSchema, decodedTSchema, syncDecoder, syncEncoder) { if (syncEncoder === void 0) { syncEncoder = (function (v) { return v; }); } return { type: 'transformType', encodedTSchema: encodedTSchema, decodedTSchema: decodedTSchema, required: true, syncDecoder: syncDecoder, syncEncoder: syncEncoder, }; }; exports.tTransformType = tTransformType; var tNonNullable = function (a) { return __assign(__assign({}, a), { required: true }); }; var tNullable = function (a) { return __assign(__assign({}, a), { required: false }); }; var tNullableTransform = function (a) { return __assign(__assign({}, a), { encodedTSchema: __assign(__assign({}, a.encodedTSchema), { required: false }), decodedTSchema: __assign(__assign({}, a.decodedTSchema), { required: false }) }); }; var tAddValidator = function (schema, validator) { if (schema.type === 'transformType') throw new Error('cannot add validator for transformType'); return __assign(__assign({}, schema), { validator: validator }); }; var deepNullable = function (schema) { if (schema.type === 'array') { return __assign(__assign({}, tNullable(schema)), { items: deepNullable(schema.items) }); } else if (schema.type === 'hashMap') { return __assign(__assign({}, tNullable(schema)), { property: deepNullable(schema.property) }); } else if (schema.type === 'oneOf') { return __assign(__assign({}, tNullable(schema)), { options: schema.options.map(function (o) { return deepNullable(o); }) }); } else if (schema.type === 'object') { return __assign(__assign({}, tNullable(schema)), { properties: (0, utils_1.mapEntries)(function (_a) { var _b = __read(_a, 2), k = _b[0], v = _b[1]; return [k, deepNullable(v)]; }, schema.properties) }); } else if (schema.type === 'transformType') { return __assign(__assign({}, tNullable(schema)), { encodedTSchema: deepNullable(schema.encodedTSchema), decodedTSchema: deepNullable(schema.decodedTSchema) }); } return tNullable(schema); }; exports.T = { number: tNonNullable(tNumber), null_number: tNullable(tNumber), boolean: tNonNullable(tBoolean), null_boolean: tNullable(tBoolean), string: tNonNullable(tString), null_string: tNullable(tString), any: tNonNullable(tAny), null_any: tNullable(tAny), oneOf: function (options) { return tNonNullable(tOneOf(options)); }, null_oneOf: function (options) { return tNullable(tOneOf(options)); }, enum: function (options) { return tNonNullable(tEnum(options)); }, null_enum: function (options) { return tNullable(tEnum(options)); }, object: function (args) { return tNonNullable(tObject(args)); }, null_object: function (args) { return tNullable(tObject(args)); }, list: function (items) { return tNonNullable(tList(items)); }, null_list: function (items) { return tNullable(tList(items)); }, hashMap: function (args) { return tNonNullable(tHashMap(args)); }, null_hashMap: function (args) { return tNullable(tHashMap(args)); }, transformType: exports.tTransformType, addValidator: tAddValidator, deepNullable: deepNullable, nonNullable: tNonNullable, nullable: tNullable, nullableTransform: tNullableTransform, lazy: tLazy, };