UNPKG

@sigiljs/sigil

Version:

TypeScript-first Node.js HTTP framework offering schema-driven routing, modifier-based middleware, plugin extensibility, and flexible response templating

2 lines (1 loc) 1.67 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("node:tls"),p=require("./containers/incoming-body.js"),h=require("./containers/incoming-headers.js"),l=require("./containers/incoming-request-processor-response.js"),m=require("./containers/incoming-search-params.js"),w=require("../utils/safe-url.js"),b=require("./derive-host.js"),y=require("./get-client-ip-info.js"),H=require("./handlers/binary-handler.js"),u=require("./handlers/buffer-handler.js"),P=require("./handlers/form-data-handler.js"),S=require("./handlers/urlencoded-form-handler.js"),T=new Set(["POST","PATCH","PUT","DELETE","OPTIONS"]);async function g(e,k){if(!e.method||!e.url||!e.headers)return null;const r=b.deriveHost(e);if(!r)return null;const s=T.has(e.method),a=s?e.headers["content-type"]?.split(";",1)[0]?.trim():void 0,i=e.socket instanceof f.TLSSocket&&e.socket.encrypted?"https":"http",o=w.default(`${i}://${r}${e.url}`);if(!o)return null;const c={headers:new h.default(e.rawHeaders),query:new m.default(o.searchParams),path:o.pathname,protocol:i,method:e.method,remoteAddress:y.getClientIpInfo(e),host:r,files:[]};if(!s||!a)return new l.default(Object.assign(c,{body:new p.default(null)}));const n=e;let t;try{if(a.startsWith("text/")||a.endsWith("json"))t=await u.default(n);else switch(a){case"application/json":case"application/xml":case"application/javascript":t=await u.default(n);break;case"multipart/form-data":t=await P.default(n);break;case"application/x-www-form-urlencoded":t=await S.default(n);break;default:t=await H.default(n);break}}catch(d){throw d}return new l.default({...c,...t})}exports.default=g;