File size: 2,148 Bytes
2108cc1
 
 
55d4e9d
 
 
2108cc1
154498a
2108cc1
698de32
 
154498a
 
 
2108cc1
 
 
 
 
 
 
154498a
2108cc1
 
 
 
 
55d4e9d
2108cc1
 
 
 
 
 
 
 
 
 
 
 
 
55d4e9d
2108cc1
 
 
55d4e9d
 
 
 
 
 
2108cc1
5251a0f
2108cc1
 
99ff94d
2108cc1
 
 
 
 
1d9bccd
55d4e9d
 
 
 
2108cc1
698de32
f968842
eae7a98
8423100
 
 
5251a0f
154498a
 
5251a0f
 
2108cc1
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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}`
);