UNPKG

elysia

Version:

Ergonomic Framework for Human

91 lines (90 loc) 5.08 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: !0 }); }, __copyProps = (to, from, except, desc) => { if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod); var compose_exports = {}; __export(compose_exports, { createBunRouteHandler: () => createBunRouteHandler }); module.exports = __toCommonJS(compose_exports); var import_handler = require('./handler.js'), import_sucrose = require('../../sucrose.js'), import_compose = require('../../compose.js'), import_utils = require('../../utils.js'), import_error = require('../../error.js'), import_trace = require('../../trace.js'); const allocateIf = (value, condition) => condition ? value : "", createContext = (app, route, inference, isInline = !1) => { let fnLiteral = ""; const defaultHeaders = app.setHeaders, hasTrace = !!app.event.trace?.length; hasTrace && (fnLiteral += `const id=randomId() `); const isDynamic = /[:*]/.test(route.path), getQi = `const u=request.url,s=u.indexOf('/',${app.config.handler?.standardHostname ?? !0 ? 11 : 7}),qi=u.indexOf('?', s + 1) `, needsQuery = inference.query || !!route.hooks.query || !!route.hooks.standaloneValidator?.find( (x) => x.query ) || app.event.request?.length; needsQuery && (fnLiteral += getQi); const getPath = inference.path ? isDynamic ? "get path(){" + (needsQuery ? "" : getQi) + `if(qi===-1)return u.substring(s) return u.substring(s,qi) },` : `path:'${route.path}',` : ""; fnLiteral += allocateIf("const c=", !isInline) + "{request,store," + allocateIf("qi,", needsQuery) + allocateIf("params:request.params,", isDynamic) + getPath + allocateIf( "url:request.url,", hasTrace || inference.url || needsQuery ) + "redirect,status,set:{headers:" + ((0, import_utils.isNotEmpty)(defaultHeaders) ? "Object.assign({},app.setHeaders)" : "Object.create(null)") + ",status:200}", inference.server && (fnLiteral += ",get server(){return app.getServer()}"), hasTrace && (fnLiteral += ",[ELYSIA_REQUEST_ID]:id"); { let decoratorsLiteral = ""; for (const key of Object.keys(app.singleton.decorator)) decoratorsLiteral += `,'${key}':decorator['${key}']`; fnLiteral += decoratorsLiteral; } return fnLiteral += `} `, fnLiteral; }, createBunRouteHandler = (app, route) => { const hasTrace = !!app.event.trace?.length, hasHoc = !!app.extender.higherOrderFunctions.length; let inference = (0, import_sucrose.sucrose)( route.hooks, // @ts-expect-error app.inference ); inference = (0, import_sucrose.sucrose)( { handler: route.handler }, inference ); let fnLiteral = "const handler=data.handler,app=data.app,store=data.store,decorator=data.decorator,redirect=data.redirect,route=data.route,mapEarlyResponse=data.mapEarlyResponse," + allocateIf("randomId=data.randomId,", hasTrace) + allocateIf("ELYSIA_REQUEST_ID=data.ELYSIA_REQUEST_ID,", hasTrace) + allocateIf("ELYSIA_TRACE=data.ELYSIA_TRACE,", hasTrace) + allocateIf("trace=data.trace,", hasTrace) + allocateIf("hoc=data.hoc,", hasHoc) + `status=data.status `; app.event.request?.length && (fnLiteral += `const onRequest=app.event.request.map(x=>x.fn) `), fnLiteral += `${app.event.request?.find(import_compose.isAsync) ? "async" : ""} function map(request){`; const needsQuery = inference.query || !!route.hooks.query || !!route.hooks.standaloneValidator?.find( (x) => x.query ); return hasTrace || needsQuery || app.event.request?.length ? (fnLiteral += createContext(app, route, inference), fnLiteral += (0, import_compose.createOnRequestHandler)(app), fnLiteral += "return handler(c)}") : fnLiteral += `return handler(${createContext(app, route, inference, !0)})}`, fnLiteral += (0, import_compose.createHoc)(app), Function( "data", fnLiteral )({ app, handler: route.compile?.() ?? route.composed, redirect: import_utils.redirect, status: import_error.status, // @ts-expect-error private property hoc: app.extender.higherOrderFunctions.map((x) => x.fn), store: app.store, decorator: app.decorator, route: route.path, randomId: hasTrace ? import_utils.randomId : void 0, ELYSIA_TRACE: hasTrace ? import_trace.ELYSIA_TRACE : void 0, ELYSIA_REQUEST_ID: hasTrace ? import_utils.ELYSIA_REQUEST_ID : void 0, trace: hasTrace ? app.event.trace?.map((x) => x?.fn ?? x) : void 0, mapEarlyResponse: import_handler.mapEarlyResponse }); }; // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { createBunRouteHandler });