diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-07-02 00:08:51 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-07-04 16:27:29 +0000 |
| commit | f5e737bf9645271f8525070f9ba6de1f476fafd9 (patch) | |
| tree | fd99f88429d31a19750d7518a2a84d2c61a275db /packages/api | |
| parent | 474ca7f221de4aa918e9ce658fe285e25191f628 (diff) | |
| download | karakeep-f5e737bf9645271f8525070f9ba6de1f476fafd9.tar.zst | |
refactor: Move the trpc endpoint to hono
Diffstat (limited to 'packages/api')
| -rw-r--r-- | packages/api/index.ts | 2 | ||||
| -rw-r--r-- | packages/api/package.json | 1 | ||||
| -rw-r--r-- | packages/api/routes/trpc.ts | 28 |
3 files changed, 31 insertions, 0 deletions
diff --git a/packages/api/index.ts b/packages/api/index.ts index 5147ea37..ab7cdbe2 100644 --- a/packages/api/index.ts +++ b/packages/api/index.ts @@ -12,6 +12,7 @@ import lists from "./routes/lists"; import publicRoute from "./routes/public"; import rss from "./routes/rss"; import tags from "./routes/tags"; +import trpc from "./routes/trpc"; import users from "./routes/users"; const v1 = new Hono<{ @@ -43,6 +44,7 @@ const app = new Hono<{ await next(); }) .use(trpcAdapter) + .route("/trpc", trpc) .route("/v1", v1) .route("/assets", assets) .route("/public", publicRoute); diff --git a/packages/api/package.json b/packages/api/package.json index d51b108b..54656e64 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -13,6 +13,7 @@ "test": "vitest" }, "dependencies": { + "@hono/trpc-server": "^0.4.0", "@hono/zod-validator": "^0.5.0", "@karakeep/db": "workspace:*", "@karakeep/shared": "workspace:*", diff --git a/packages/api/routes/trpc.ts b/packages/api/routes/trpc.ts new file mode 100644 index 00000000..3d83f64a --- /dev/null +++ b/packages/api/routes/trpc.ts @@ -0,0 +1,28 @@ +import { trpcServer } from "@hono/trpc-server"; +import { Hono } from "hono"; + +import { Context } from "@karakeep/trpc"; +import { appRouter } from "@karakeep/trpc/routers/_app"; + +const trpc = new Hono<{ + Variables: { + ctx: Context; + }; +}>().use( + "/*", + trpcServer({ + endpoint: "/api/trpc", + router: appRouter, + createContext: (_, c) => { + return c.var.ctx; + }, + onError: ({ path, error }) => { + if (process.env.NODE_ENV === "development") { + console.error(`❌ tRPC failed on ${path}`); + } + console.error(error); + }, + }), +); + +export default trpc; |
