aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-02 00:08:51 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-04 16:27:29 +0000
commitf5e737bf9645271f8525070f9ba6de1f476fafd9 (patch)
treefd99f88429d31a19750d7518a2a84d2c61a275db
parent474ca7f221de4aa918e9ce658fe285e25191f628 (diff)
downloadkarakeep-f5e737bf9645271f8525070f9ba6de1f476fafd9.tar.zst
refactor: Move the trpc endpoint to hono
-rw-r--r--apps/web/app/api/trpc/[trpc]/route.ts22
-rw-r--r--packages/api/index.ts2
-rw-r--r--packages/api/package.json1
-rw-r--r--packages/api/routes/trpc.ts28
-rw-r--r--pnpm-lock.yaml15
5 files changed, 46 insertions, 22 deletions
diff --git a/apps/web/app/api/trpc/[trpc]/route.ts b/apps/web/app/api/trpc/[trpc]/route.ts
deleted file mode 100644
index 87e262f3..00000000
--- a/apps/web/app/api/trpc/[trpc]/route.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { createContextFromRequest } from "@/server/api/client";
-import { fetchRequestHandler } from "@trpc/server/adapters/fetch";
-
-import { appRouter } from "@karakeep/trpc/routers/_app";
-
-const handler = (req: Request) =>
- fetchRequestHandler({
- endpoint: "/api/trpc",
- req,
- router: appRouter,
- onError: ({ path, error }) => {
- if (process.env.NODE_ENV === "development") {
- console.error(`❌ tRPC failed on ${path}`);
- }
- console.error(error);
- },
-
- createContext: async (opts) => {
- return await createContextFromRequest(opts.req);
- },
- });
-export { handler as GET, handler as POST };
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;
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 8abb7ee1..56038d5b 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -929,6 +929,9 @@ importers:
packages/api:
dependencies:
+ '@hono/trpc-server':
+ specifier: ^0.4.0
+ version: 0.4.0(@trpc/server@11.0.0(typescript@5.8.2))(hono@4.7.11)
'@hono/zod-validator':
specifier: ^0.5.0
version: 0.5.0(hono@4.7.11)(zod@3.24.2)
@@ -3131,6 +3134,13 @@ packages:
'@hapi/topo@5.1.0':
resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==}
+ '@hono/trpc-server@0.4.0':
+ resolution: {integrity: sha512-LGlJfCmNIGMwcknZEIYdujVMs9OkNVazhpOhaz3kTWOXvNL660VOHpvvktosCiJrajyBY1RtIJKQ+IKaQvNuSg==}
+ engines: {node: '>=16.0.0'}
+ peerDependencies:
+ '@trpc/server': ^10.10.0 || >11.0.0-rc
+ hono: '>=4.*'
+
'@hono/zod-validator@0.5.0':
resolution: {integrity: sha512-ds5bW6DCgAnNHP33E3ieSbaZFd5dkV52ZjyaXtGoR06APFrCtzAsKZxTHwOrJNBdXsi0e5wNwo5L4nVEVnJUdg==}
peerDependencies:
@@ -17517,6 +17527,11 @@ snapshots:
dependencies:
'@hapi/hoek': 9.3.0
+ '@hono/trpc-server@0.4.0(@trpc/server@11.0.0(typescript@5.8.2))(hono@4.7.11)':
+ dependencies:
+ '@trpc/server': 11.0.0(typescript@5.8.2)
+ hono: 4.7.11
+
'@hono/zod-validator@0.5.0(hono@4.7.11)(zod@3.24.2)':
dependencies:
hono: 4.7.11