UNPKG

@ublitzjs/router

Version:

![ublitzjs](https://github.com/ublitzjs/core/blob/main/logo.png)

42 lines (38 loc) 1.21 kB
var { Type } = require("@sinclair/typebox"); var { basicParseSimpleBody } = require("@ublitzjs/payload"); var { checkContentLength } = require("@ublitzjs/core"); var dictionary = { query: "getQuery", headers: "getHeader", params: "getParameter", }; module.exports = { jsonSchemas(schemas) { //#region something var { body } = schemas; delete schemas.body; var opts = { schemas: { meta: Type.Object(schemas) } }; //#endregion //#region parseBody (if needed) if (body) { opts.schemas.body = body; opts.parseBody = new Function( "parse", "return async(res,_,meta)=>{return await parse({res,CT:'application/json'})}" )(basicParseSimpleBody); } //#endregion //#region get meta function var getMetaCode = `return (res,req)=>{${body ? "cl(res,req);" : ""}return{`; for (const key in schemas) { getMetaCode += `${key}:{`; for (const prop in schemas[key].properties) getMetaCode += `"${prop}":req.${dictionary[key]}("${prop}"),`; getMetaCode += "},"; } getMetaCode += "}}"; opts.getMeta = new Function("cl", getMetaCode)(checkContentLength); //#endregion return opts; }, };