| import { Elysia, Context, t } from "elysia"; |
| import { logger } from "@chneau/elysia-logger"; |
| import { cors } from "@elysiajs/cors"; |
| import { NS_Misc } from "../../../../packages/lib/helpers/client/misc"; |
| import { NS_error } from "../../../../packages/lib/helpers/client/error"; |
| import { NS_routes_elysia } from "../../../../packages/lib/helpers/server/routes-elysia"; |
| import { HonoRouter } from "./sub-router/hono.index"; |
| import { NS_runtime } from "../../../../packages/lib/env.runtime"; |
|
|
| await NS_runtime.set_env_var_db(); |
|
|
| const APP_ENV = process.env.APP_ENV; |
| const APP_ORIGIN = process.env.APP_ORIGIN; |
| const PORT = process.env.PORT; |
|
|
| const app = new Elysia() |
|
|
| .use( |
| cors({ |
| origin: "*", |
| allowedHeaders: "*", |
| methods: ["GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD"], |
| exposeHeaders: "*" |
| }) |
| ) |
|
|
| .derive((ctx: any) => ({ |
| publicOrigin: NS_routes_elysia.F_public_origin(ctx) |
| })) |
|
|
| .use(logger()) |
|
|
| .onError(async ({ code, error }) => { |
| let e_message = ""; |
| if (code === "VALIDATION") { |
| e_message = error.message; |
| try { |
| e_message = JSON.parse(e_message).summary; |
| } catch (err) {} |
| } |
|
|
| const err_d = NS_error.F_collect_error_status_n_message({ |
| ERR: error |
| }); |
|
|
| NS_Misc.console.error({ ENV: "dev", _browser: false, _log: ["\n"] }); |
| NS_Misc.console.error({ |
| ENV: "dev", |
| _browser: false, |
| _log: [{ code, e_message, ...err_d }, "\n"] |
| }); |
|
|
| return new Response(err_d.message, { |
| status: err_d.status, |
| headers: { |
| "x-error-message": JSON.stringify(err_d.message), |
| "x-error-status": err_d.status |
| } |
| }); |
| }) |
|
|
| .mount("/", HonoRouter.fetch) |
|
|
| .get("/", () => { |
| return "๐ฆ Hello Rafiki ๐ฟ"; |
| }) |
|
|
| .get("/foo", (ctx: Context) => { |
| const REQ_headers = ctx?.request?.headers; |
| console.log("\n", "REQ_headers", REQ_headers, "\n"); |
| return "๐ฆ Hello Rafiki ๐ฟ"; |
| }) |
|
|
| .listen({ |
| port: PORT || 7860, |
| ...(NS_runtime.IS_PROD && { hostname: "0.0.0.0" }), |
| idleTimeout: 120 |
| }); |
|
|
| console.log( |
| `๐ฆ Elysia is running at ${app.server?.hostname}:${app.server?.port}` |
| ); |
|
|