erebus-sdk
Version:
To install dependencies:
2 lines • 2.67 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';import {hc}from'hono/client';import {handle}from'hono/vercel';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 p(e){let o=new Hono;return o.onError((r,t)=>(n.error("[unhandled]",{reqId:t.get("reqId"),err:r instanceof Error?{name:r.name,message:r.message,stack:r.stack}:r,path:t.req.path,method:t.req.method}),t.json({error:"internal_error",reqId:t.get("reqId")},500))),o.notFound(r=>r.json({error:"not_found",path:r.req.path,reqId:r.get("reqId")},404)),o.use("*",async(r,t)=>{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 i=performance.now();try{await t();}finally{let a=Math.round(performance.now()-i);n.info(`[${s}] ${r.req.method} ${r.req.path} -> ${a}ms`);}}),o.route("/",g)}var g=new Hono().get("/api/health-not-meaningful",e=>e.json({ok:true,reqId:e.get("reqId")})).get("/api/generate-token-test",e=>{let o=e.get("session");return o?(console.log(o.__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 o=e.get("session"),r=e.get("reqId");if(n.info(`[${r}] Generating token`),!o)return e.json({error:"session_required, the server is not initialized properly",reqId:r},400);let t="";try{t=await o.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:t})}),j=async(e,o)=>{let r=p(o);n.info(`Attempting to start server on port ${e}...`);let t=serve({fetch:r.fetch,port:e});return t.on("listening",()=>{n.info(`Server successfully started and is running on port ${e}`);}),t.on("error",s=>{n.error(`Server failed to start on port ${e}: ${s.message}`);}),t};var y=e=>hc(e);function S({authorize:e}){return {POST:async r=>{let t="";try{let u=await r.clone().json();typeof u.channel=="string"&&(t=u.channel);}catch{}let s=await e(t,{req:r}),i=p(s);return await handle(i)(r)}}}export{p as createApp,S as createRouteHandler,y as createRpcClient,j as startAuthServer};//# sourceMappingURL=index.js.map
//# sourceMappingURL=index.js.map