erebus-sdk
Version:
To install dependencies:
2 lines • 2.35 kB
JavaScript
import {Hono}from'hono';import {createConsola}from'consola';import {serve}from'@hono/node-server';import {zValidator}from'@hono/zod-validator';import {z}from'zod';var n=createConsola({level:3,formatOptions:{colors:true,date:true,compact:false,columns:typeof process<"u"&&process.stdout&&process.stdout.columns?process.stdout.columns:80},defaults:{tag:"Erebus"}});function f(e){let t=new Hono;return t.onError((r,o)=>(n.error("[unhandled]",{reqId:o.get("reqId"),err:r instanceof Error?{name:r.name,message:r.message,stack:r.stack}:r,path:o.req.path,method:o.req.method}),o.json({error:"internal_error",reqId:o.get("reqId")},500))),t.notFound(r=>r.json({error:"not_found",path:r.req.path,reqId:r.get("reqId")},404)),t.use("*",async(r,o)=>{let s=crypto.randomUUID();if(r.set("reqId",s),e)if(typeof e=="function"){let a=await e(r.req.raw);r.set("session",a);}else r.set("session",e);let u=performance.now();try{await o();}finally{let a=Math.round(performance.now()-u);n.info(`[${s}] ${r.req.method} ${r.req.path} -> ${a}ms`);}}),t.route("/",l)}var l=new Hono().get("/api/health-not-meaningful",e=>e.json({ok:true,reqId:e.get("reqId")})).get("/api/generate-token-test",e=>{let t=e.get("session");return t?(console.log(t.__debugObject),n.info(`[${e.get("reqId")}] Generating token`),e.json({token:"test"})):e.json({error:"session_required, the server is not initialized properly",reqId:e.get("reqId")},400)}).post("/api/generate-token",zValidator("json",z.object({channel:z.string()})),async e=>{let t=e.get("session"),r=e.get("reqId");if(n.info(`[${r}] Generating token`),!t)return e.json({error:"session_required, the server is not initialized properly",reqId:r},400);let o="";try{o=await t.authorize();}catch(s){return n.error(`[${r}] Error generating token: ${s instanceof Error?s.message:"Unknown error"}`),e.json({error:"error_generating_token",reqId:r,message:s instanceof Error?s.message:"Unknown error"},500)}return e.json({grant_jwt:o})}),S=async(e,t)=>{let r=f(t);n.info(`Attempting to start server on port ${e}...`);let o=serve({fetch:r.fetch,port:e});return o.on("listening",()=>{n.info(`Server successfully started and is running on port ${e}`);}),o.on("error",s=>{n.error(`Server failed to start on port ${e}: ${s.message}`);}),o};export{f as createApp,S as startAuthServer};//# sourceMappingURL=app.js.map
//# sourceMappingURL=app.js.map