From 7e2f333945f7657f35dc6a47d442299313f3093c Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Mon, 19 Aug 2024 20:06:38 +0200 Subject: [PATCH] refactor: :recycle: Use a typed wrapper for all API endpoints --- server/api/api/auth/login/index.ts | 8 ++++---- server/api/api/auth/mastodon-login/index.ts | 8 ++++---- server/api/api/auth/mastodon-logout/index.ts | 8 ++++---- server/api/api/auth/redirect/index.ts | 8 ++++---- server/api/api/auth/reset/index.ts | 8 ++++---- server/api/api/v1/accounts/:id/block.ts | 8 ++++---- server/api/api/v1/accounts/:id/follow.ts | 8 ++++---- server/api/api/v1/accounts/:id/followers.ts | 14 ++++++++++---- server/api/api/v1/accounts/:id/following.ts | 14 ++++++++++---- server/api/api/v1/accounts/:id/index.ts | 8 ++++---- server/api/api/v1/accounts/:id/mute.ts | 8 ++++---- server/api/api/v1/accounts/:id/note.ts | 8 ++++---- server/api/api/v1/accounts/:id/pin.ts | 8 ++++---- server/api/api/v1/accounts/:id/refetch.ts | 8 ++++---- .../api/v1/accounts/:id/remove_from_followers.ts | 8 ++++---- server/api/api/v1/accounts/:id/statuses.ts | 14 ++++++++++---- server/api/api/v1/accounts/:id/unblock.ts | 8 ++++---- server/api/api/v1/accounts/:id/unfollow.ts | 8 ++++---- server/api/api/v1/accounts/:id/unmute.ts | 8 ++++---- server/api/api/v1/accounts/:id/unpin.ts | 8 ++++---- .../api/v1/accounts/familiar_followers/index.ts | 8 ++++---- server/api/api/v1/accounts/id/index.ts | 8 ++++---- server/api/api/v1/accounts/index.ts | 8 ++++---- server/api/api/v1/accounts/lookup/index.ts | 8 ++++---- server/api/api/v1/accounts/relationships/index.ts | 8 ++++---- server/api/api/v1/accounts/search/index.ts | 8 ++++---- .../api/v1/accounts/update_credentials/index.ts | 8 ++++---- .../api/v1/accounts/verify_credentials/index.ts | 8 ++++---- server/api/api/v1/apps/index.ts | 8 ++++---- server/api/api/v1/apps/verify_credentials/index.ts | 8 ++++---- server/api/api/v1/blocks/index.ts | 14 ++++++++++---- server/api/api/v1/challenges/index.ts | 8 ++++---- server/api/api/v1/custom_emojis/index.ts | 8 ++++---- server/api/api/v1/emojis/:id/index.ts | 7 ++++--- server/api/api/v1/emojis/index.ts | 7 ++++--- server/api/api/v1/favourites/index.ts | 14 ++++++++++---- .../v1/follow_requests/:account_id/authorize.ts | 8 ++++---- .../api/v1/follow_requests/:account_id/reject.ts | 8 ++++---- server/api/api/v1/follow_requests/index.ts | 14 ++++++++++---- server/api/api/v1/frontend/config/index.ts | 8 ++++---- server/api/api/v1/instance/extended_description.ts | 8 ++++---- server/api/api/v1/instance/index.ts | 8 ++++---- server/api/api/v1/instance/privacy_policy.ts | 8 ++++---- server/api/api/v1/instance/rules.ts | 10 +++++----- server/api/api/v1/instance/tos.ts | 8 ++++---- server/api/api/v1/markers/index.ts | 14 ++++++++++---- server/api/api/v1/media/:id/index.ts | 14 ++++++++++---- server/api/api/v1/media/index.ts | 8 ++++---- server/api/api/v1/mutes/index.ts | 14 ++++++++++---- server/api/api/v1/notifications/:id/dismiss.ts | 8 ++++---- server/api/api/v1/notifications/:id/index.ts | 8 ++++---- server/api/api/v1/notifications/clear/index.ts | 8 ++++---- .../api/v1/notifications/destroy_multiple/index.ts | 8 ++++---- server/api/api/v1/notifications/index.ts | 14 ++++++++++---- server/api/api/v1/profile/avatar.ts | 8 ++++---- server/api/api/v1/profile/header.ts | 8 ++++---- server/api/api/v1/roles/:id/index.ts | 8 ++++---- server/api/api/v1/roles/index.ts | 8 ++++---- server/api/api/v1/sso/:id/index.ts | 8 ++++---- server/api/api/v1/sso/index.ts | 8 ++++---- server/api/api/v1/statuses/:id/context.ts | 8 ++++---- server/api/api/v1/statuses/:id/favourite.ts | 8 ++++---- server/api/api/v1/statuses/:id/favourited_by.ts | 14 ++++++++++---- server/api/api/v1/statuses/:id/index.ts | 7 ++++--- server/api/api/v1/statuses/:id/pin.ts | 14 ++++++++++---- server/api/api/v1/statuses/:id/reblog.ts | 8 ++++---- server/api/api/v1/statuses/:id/reblogged_by.ts | 8 ++++---- server/api/api/v1/statuses/:id/source.ts | 8 ++++---- server/api/api/v1/statuses/:id/unfavourite.ts | 8 ++++---- server/api/api/v1/statuses/:id/unpin.ts | 8 ++++---- server/api/api/v1/statuses/:id/unreblog.ts | 8 ++++---- server/api/api/v1/statuses/index.ts | 8 ++++---- server/api/api/v1/timelines/home.ts | 14 ++++++++++---- server/api/api/v1/timelines/public.ts | 14 ++++++++++---- server/api/api/v2/filters/:id/index.ts | 8 ++++---- server/api/api/v2/filters/index.ts | 8 ++++---- server/api/api/v2/instance/index.ts | 10 +++++----- server/api/api/v2/media/index.ts | 8 ++++---- server/api/api/v2/search/index.ts | 7 ++++--- server/api/media/:hash/:name/index.ts | 8 ++++---- server/api/media/proxy/:id.ts | 8 ++++---- server/api/oauth/authorize/index.ts | 8 ++++---- server/api/oauth/sso/:issuer/callback/index.ts | 8 ++++---- server/api/oauth/sso/index.ts | 8 ++++---- server/api/oauth/token/index.ts | 8 ++++---- server/api/objects/:id/index.ts | 8 ++++---- server/api/users/:uuid/inbox/index.ts | 8 ++++---- server/api/users/:uuid/index.ts | 8 ++++---- server/api/users/:uuid/outbox/index.ts | 8 ++++---- server/api/well-known/host-meta/index.ts | 8 ++++---- server/api/well-known/jwks/index.ts | 8 ++++---- server/api/well-known/nodeinfo/2.0/index.ts | 8 ++++---- server/api/well-known/nodeinfo/index.ts | 8 ++++---- .../api/well-known/openid-configuration/index.ts | 8 ++++---- server/api/well-known/{lysand.ts => versia.ts} | 8 ++++---- server/api/well-known/webfinger/index.ts | 7 ++++--- utils/api.ts | 10 +++++++++- 97 files changed, 479 insertions(+), 382 deletions(-) rename server/api/well-known/{lysand.ts => versia.ts} (89%) diff --git a/server/api/api/auth/login/index.ts b/server/api/api/auth/login/index.ts index ed381690..7c61c2dc 100644 --- a/server/api/api/auth/login/index.ts +++ b/server/api/api/auth/login/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { errorResponse, redirect } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq, or } from "drizzle-orm"; import { SignJWT } from "jose"; @@ -81,7 +80,7 @@ const returnError = (query: object, error: string, description: string) => { ); }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -193,4 +192,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/auth/mastodon-login/index.ts b/server/api/api/auth/mastodon-login/index.ts index 85103c93..8a8fcf72 100644 --- a/server/api/api/auth/mastodon-login/index.ts +++ b/server/api/api/auth/mastodon-login/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { randomString } from "@/math"; import { response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq } from "drizzle-orm"; import { z } from "zod"; @@ -35,7 +34,7 @@ export const schemas = { /** * Mastodon-FE login route */ -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -104,4 +103,5 @@ export default (app: Hono) => }; SameSite=Lax; Path=/; HttpOnly; Max-Age=${maxAge}`, }); }, - ); + ), +); diff --git a/server/api/api/auth/mastodon-logout/index.ts b/server/api/api/auth/mastodon-logout/index.ts index ed0d736d..f82c9ca4 100644 --- a/server/api/api/auth/mastodon-logout/index.ts +++ b/server/api/api/auth/mastodon-logout/index.ts @@ -1,5 +1,4 @@ -import { applyConfig } from "@/api"; -import type { Hono } from "@hono/hono"; +import { apiRoute, applyConfig } from "@/api"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -17,7 +16,7 @@ export const meta = applyConfig({ /** * Mastodon-FE logout route */ -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, () => { return new Response(null, { headers: { @@ -28,4 +27,5 @@ export default (app: Hono) => }, status: 303, }); - }); + }), +); diff --git a/server/api/api/auth/redirect/index.ts b/server/api/api/auth/redirect/index.ts index 8f782b7f..135446c9 100644 --- a/server/api/api/auth/redirect/index.ts +++ b/server/api/api/auth/redirect/index.ts @@ -1,5 +1,4 @@ -import { applyConfig, handleZodError } from "@/api"; -import type { Hono } from "@hono/hono"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { zValidator } from "@hono/zod-validator"; import { and, eq } from "drizzle-orm"; import { z } from "zod"; @@ -30,7 +29,7 @@ export const schemas = { /** * OAuth Code flow */ -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -70,4 +69,5 @@ export default (app: Hono) => // Redirect back to application return Response.redirect(`${redirect_uri}?code=${code}`, 302); }, - ); + ), +); diff --git a/server/api/api/auth/reset/index.ts b/server/api/api/auth/reset/index.ts index b1221f46..2478cb83 100644 --- a/server/api/api/auth/reset/index.ts +++ b/server/api/api/auth/reset/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq } from "drizzle-orm"; import { z } from "zod"; @@ -44,7 +43,7 @@ const returnError = (token: string, error: string, description: string) => { }); }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -69,4 +68,5 @@ export default (app: Hono) => Location: `${config.frontend.routes.password_reset}?success=true`, }); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/block.ts b/server/api/api/v1/accounts/:id/block.ts index 1c8e131a..ace8235d 100644 --- a/server/api/api/v1/accounts/:id/block.ts +++ b/server/api/api/v1/accounts/:id/block.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -65,4 +64,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/follow.ts b/server/api/api/v1/accounts/:id/follow.ts index cb8adbf5..82fb7f9a 100644 --- a/server/api/api/v1/accounts/:id/follow.ts +++ b/server/api/api/v1/accounts/:id/follow.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import ISO6391 from "iso-639-1"; import { z } from "zod"; @@ -43,7 +42,7 @@ export const schemas = { .default({ reblogs: true, notify: false, languages: [] }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -80,4 +79,5 @@ export default (app: Hono) => return jsonResponse(relationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/followers.ts b/server/api/api/v1/accounts/:id/followers.ts index 61ffd5fa..0d79cc05 100644 --- a/server/api/api/v1/accounts/:id/followers.ts +++ b/server/api/api/v1/accounts/:id/followers.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -39,7 +44,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -78,4 +83,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/following.ts b/server/api/api/v1/accounts/:id/following.ts index cebc1945..f46ab0b4 100644 --- a/server/api/api/v1/accounts/:id/following.ts +++ b/server/api/api/v1/accounts/:id/following.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -39,7 +44,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -77,4 +82,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/index.ts b/server/api/api/v1/accounts/:id/index.ts index b57d0500..29e482fb 100644 --- a/server/api/api/v1/accounts/:id/index.ts +++ b/server/api/api/v1/accounts/:id/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -28,7 +27,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -46,4 +45,5 @@ export default (app: Hono) => return jsonResponse(foundUser.toApi(user?.id === foundUser.id)); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/mute.ts b/server/api/api/v1/accounts/:id/mute.ts index 44e66bb5..63c48254 100644 --- a/server/api/api/v1/accounts/:id/mute.ts +++ b/server/api/api/v1/accounts/:id/mute.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -41,7 +40,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -77,4 +76,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/note.ts b/server/api/api/v1/accounts/:id/note.ts index 74fd8931..e6b2b8aa 100644 --- a/server/api/api/v1/accounts/:id/note.ts +++ b/server/api/api/v1/accounts/:id/note.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -35,7 +34,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -68,4 +67,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/pin.ts b/server/api/api/v1/accounts/:id/pin.ts index 73f24fea..51f7faa4 100644 --- a/server/api/api/v1/accounts/:id/pin.ts +++ b/server/api/api/v1/accounts/:id/pin.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -63,4 +62,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/refetch.ts b/server/api/api/v1/accounts/:id/refetch.ts index 649b7036..68e09f7d 100644 --- a/server/api/api/v1/accounts/:id/refetch.ts +++ b/server/api/api/v1/accounts/:id/refetch.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -28,7 +27,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -52,4 +51,5 @@ export default (app: Hono) => return jsonResponse(newUser.toApi(false)); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/remove_from_followers.ts b/server/api/api/v1/accounts/:id/remove_from_followers.ts index a2554d0f..be85dd4d 100644 --- a/server/api/api/v1/accounts/:id/remove_from_followers.ts +++ b/server/api/api/v1/accounts/:id/remove_from_followers.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -70,4 +69,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/statuses.ts b/server/api/api/v1/accounts/:id/statuses.ts index 3b244398..74dda97a 100644 --- a/server/api/api/v1/accounts/:id/statuses.ts +++ b/server/api/api/v1/accounts/:id/statuses.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, gt, gte, isNull, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -56,7 +61,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -112,4 +117,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/unblock.ts b/server/api/api/v1/accounts/:id/unblock.ts index 47b21b7f..2024ad70 100644 --- a/server/api/api/v1/accounts/:id/unblock.ts +++ b/server/api/api/v1/accounts/:id/unblock.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -65,4 +64,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/unfollow.ts b/server/api/api/v1/accounts/:id/unfollow.ts index a1d1523b..58cc4cb1 100644 --- a/server/api/api/v1/accounts/:id/unfollow.ts +++ b/server/api/api/v1/accounts/:id/unfollow.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -63,4 +62,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/unmute.ts b/server/api/api/v1/accounts/:id/unmute.ts index dc267f40..8e4693b0 100644 --- a/server/api/api/v1/accounts/:id/unmute.ts +++ b/server/api/api/v1/accounts/:id/unmute.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -66,4 +65,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/:id/unpin.ts b/server/api/api/v1/accounts/:id/unpin.ts index d4f4346b..d2082652 100644 --- a/server/api/api/v1/accounts/:id/unpin.ts +++ b/server/api/api/v1/accounts/:id/unpin.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -65,4 +64,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/familiar_followers/index.ts b/server/api/api/v1/accounts/familiar_followers/index.ts index b2545cd6..b6a555be 100644 --- a/server/api/api/v1/accounts/familiar_followers/index.ts +++ b/server/api/api/v1/accounts/familiar_followers/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError, qsQuery } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, qsQuery } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { inArray } from "drizzle-orm"; import { z } from "zod"; @@ -30,7 +29,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -95,4 +94,5 @@ export default (app: Hono) => return jsonResponse(finalUsers.map((o) => o.toApi())); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/id/index.ts b/server/api/api/v1/accounts/id/index.ts index 69d687ff..b13078de 100644 --- a/server/api/api/v1/accounts/id/index.ts +++ b/server/api/api/v1/accounts/id/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, isNull } from "drizzle-orm"; import { z } from "zod"; @@ -29,7 +28,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -48,4 +47,5 @@ export default (app: Hono) => return jsonResponse(user.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/index.ts b/server/api/api/v1/accounts/index.ts index da29d35a..5d432cd5 100644 --- a/server/api/api/v1/accounts/index.ts +++ b/server/api/api/v1/accounts/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { jsonResponse, response } from "@/response"; import { tempmailDomains } from "@/tempmail"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, isNull } from "drizzle-orm"; import ISO6391 from "iso-639-1"; @@ -40,7 +39,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -257,4 +256,5 @@ export default (app: Hono) => return response(null, 200); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/lookup/index.ts b/server/api/api/v1/accounts/lookup/index.ts index fc4c5b77..2ffb06aa 100644 --- a/server/api/api/v1/accounts/lookup/index.ts +++ b/server/api/api/v1/accounts/lookup/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq } from "drizzle-orm"; import { @@ -40,7 +39,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -109,4 +108,5 @@ export default (app: Hono) => 404, ); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/relationships/index.ts b/server/api/api/v1/accounts/relationships/index.ts index 1eaa2ba9..b52a367c 100644 --- a/server/api/api/v1/accounts/relationships/index.ts +++ b/server/api/api/v1/accounts/relationships/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError, qsQuery } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, qsQuery } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -28,7 +27,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -58,4 +57,5 @@ export default (app: Hono) => return jsonResponse(relationships.map((r) => r.toApi())); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/search/index.ts b/server/api/api/v1/accounts/search/index.ts index d98a60ac..aaa4fc74 100644 --- a/server/api/api/v1/accounts/search/index.ts +++ b/server/api/api/v1/accounts/search/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq, ilike, not, or, sql } from "drizzle-orm"; import { @@ -69,7 +68,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -129,4 +128,5 @@ export default (app: Hono) => return jsonResponse(result.map((acct) => acct.toApi())); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/update_credentials/index.ts b/server/api/api/v1/accounts/update_credentials/index.ts index 808d16a2..4f6f204c 100644 --- a/server/api/api/v1/accounts/update_credentials/index.ts +++ b/server/api/api/v1/accounts/update_credentials/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; import { sanitizedHtmlStrip } from "@/sanitization"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, isNull } from "drizzle-orm"; import ISO6391 from "iso-639-1"; @@ -127,7 +126,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -336,4 +335,5 @@ export default (app: Hono) => return jsonResponse(output.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/accounts/verify_credentials/index.ts b/server/api/api/v1/accounts/verify_credentials/index.ts index c490e77f..ed34726e 100644 --- a/server/api/api/v1/accounts/verify_credentials/index.ts +++ b/server/api/api/v1/accounts/verify_credentials/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; export const meta = applyConfig({ allowedMethods: ["GET"], @@ -15,7 +14,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -30,4 +29,5 @@ export default (app: Hono) => return jsonResponse(user.toApi(true)); }, - ); + ), +); diff --git a/server/api/api/v1/apps/index.ts b/server/api/api/v1/apps/index.ts index 7540fe23..754c755b 100644 --- a/server/api/api/v1/apps/index.ts +++ b/server/api/api/v1/apps/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, handleZodError, jsonOrForm } from "@/api"; import { randomString } from "@/math"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { db } from "~/drizzle/db"; @@ -44,7 +43,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -78,4 +77,5 @@ export default (app: Hono) => vapid_link: app.vapidKey, }); }, - ); + ), +); diff --git a/server/api/api/v1/apps/verify_credentials/index.ts b/server/api/api/v1/apps/verify_credentials/index.ts index edc4be3e..3f74c017 100644 --- a/server/api/api/v1/apps/verify_credentials/index.ts +++ b/server/api/api/v1/apps/verify_credentials/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { getFromToken } from "~/classes/functions/application"; import { RolePermissions } from "~/drizzle/schema"; @@ -19,7 +18,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -48,4 +47,5 @@ export default (app: Hono) => scopes: application.scopes, }); }, - ); + ), +); diff --git a/server/api/api/v1/blocks/index.ts b/server/api/api/v1/blocks/index.ts index 03d822df..632eba0f 100644 --- a/server/api/api/v1/blocks/index.ts +++ b/server/api/api/v1/blocks/index.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -32,7 +37,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -67,4 +72,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/challenges/index.ts b/server/api/api/v1/challenges/index.ts index f15109e1..e4fd9014 100644 --- a/server/api/api/v1/challenges/index.ts +++ b/server/api/api/v1/challenges/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { generateChallenge } from "@/challenges"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -19,7 +18,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -36,4 +35,5 @@ export default (app: Hono) => ...result.challenge, }); }, - ); + ), +); diff --git a/server/api/api/v1/custom_emojis/index.ts b/server/api/api/v1/custom_emojis/index.ts index 94522b9f..8f7832fe 100644 --- a/server/api/api/v1/custom_emojis/index.ts +++ b/server/api/api/v1/custom_emojis/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { and, eq, isNull, or } from "drizzle-orm"; import { Emojis, RolePermissions } from "~/drizzle/schema"; import { Emoji } from "~/packages/database-interface/emoji"; @@ -20,7 +19,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -40,4 +39,5 @@ export default (app: Hono) => return jsonResponse(emojis.map((emoji) => emoji.toApi())); }, - ); + ), +); diff --git a/server/api/api/v1/emojis/:id/index.ts b/server/api/api/v1/emojis/:id/index.ts index 1ca914a4..a2e8ad88 100644 --- a/server/api/api/v1/emojis/:id/index.ts +++ b/server/api/api/v1/emojis/:id/index.ts @@ -1,4 +1,5 @@ import { + apiRoute, applyConfig, auth, emojiValidator, @@ -7,7 +8,6 @@ import { } from "@/api"; import { mimeLookup } from "@/content_types"; import { errorResponse, jsonResponse, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq } from "drizzle-orm"; import { z } from "zod"; @@ -67,7 +67,7 @@ export const schemas = { .optional(), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -198,4 +198,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v1/emojis/index.ts b/server/api/api/v1/emojis/index.ts index 1d6129cf..26838217 100644 --- a/server/api/api/v1/emojis/index.ts +++ b/server/api/api/v1/emojis/index.ts @@ -1,4 +1,5 @@ import { + apiRoute, applyConfig, auth, emojiValidator, @@ -7,7 +8,6 @@ import { } from "@/api"; import { mimeLookup } from "@/content_types"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, isNull, or } from "drizzle-orm"; import { z } from "zod"; @@ -60,7 +60,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -137,4 +137,5 @@ export default (app: Hono) => return jsonResponse(emoji.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/favourites/index.ts b/server/api/api/v1/favourites/index.ts index f7d860f1..66d09e92 100644 --- a/server/api/api/v1/favourites/index.ts +++ b/server/api/api/v1/favourites/index.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -31,7 +36,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -70,4 +75,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/follow_requests/:account_id/authorize.ts b/server/api/api/v1/follow_requests/:account_id/authorize.ts index 24b505b0..8046ee00 100644 --- a/server/api/api/v1/follow_requests/:account_id/authorize.ts +++ b/server/api/api/v1/follow_requests/:account_id/authorize.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { sendFollowAccept } from "~/classes/functions/user"; @@ -29,7 +28,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -73,4 +72,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/follow_requests/:account_id/reject.ts b/server/api/api/v1/follow_requests/:account_id/reject.ts index d34aadf9..29d56a7f 100644 --- a/server/api/api/v1/follow_requests/:account_id/reject.ts +++ b/server/api/api/v1/follow_requests/:account_id/reject.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { sendFollowReject } from "~/classes/functions/user"; @@ -29,7 +28,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -73,4 +72,5 @@ export default (app: Hono) => return jsonResponse(foundRelationship.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/follow_requests/index.ts b/server/api/api/v1/follow_requests/index.ts index da67baec..15a48c91 100644 --- a/server/api/api/v1/follow_requests/index.ts +++ b/server/api/api/v1/follow_requests/index.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -31,7 +36,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -67,4 +72,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/frontend/config/index.ts b/server/api/api/v1/frontend/config/index.ts index 1afa9d8b..5473f1c5 100644 --- a/server/api/api/v1/frontend/config/index.ts +++ b/server/api/api/v1/frontend/config/index.ts @@ -1,6 +1,5 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -15,7 +14,8 @@ export const meta = applyConfig({ route: "/api/v1/frontend/config", }); -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, () => { return jsonResponse(config.frontend.settings); - }); + }), +); diff --git a/server/api/api/v1/instance/extended_description.ts b/server/api/api/v1/instance/extended_description.ts index f77a07d8..e6acae82 100644 --- a/server/api/api/v1/instance/extended_description.ts +++ b/server/api/api/v1/instance/extended_description.ts @@ -1,7 +1,6 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { renderMarkdownInPath } from "@/markdown"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -16,7 +15,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -32,4 +31,5 @@ export default (app: Hono) => content, }); }, - ); + ), +); diff --git a/server/api/api/v1/instance/index.ts b/server/api/api/v1/instance/index.ts index 252a3f70..c1a158e7 100644 --- a/server/api/api/v1/instance/index.ts +++ b/server/api/api/v1/instance/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { jsonResponse, proxyUrl } from "@/response"; -import type { Hono } from "@hono/hono"; import { and, eq, isNull } from "drizzle-orm"; import { Users } from "~/drizzle/schema"; import manifest from "~/package.json"; @@ -21,7 +20,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -103,4 +102,5 @@ export default (app: Hono) => }; }); }, - ); + ), +); diff --git a/server/api/api/v1/instance/privacy_policy.ts b/server/api/api/v1/instance/privacy_policy.ts index 8e99bdb9..9dcedee0 100644 --- a/server/api/api/v1/instance/privacy_policy.ts +++ b/server/api/api/v1/instance/privacy_policy.ts @@ -1,7 +1,6 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { renderMarkdownInPath } from "@/markdown"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -16,7 +15,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -32,4 +31,5 @@ export default (app: Hono) => content, }); }, - ); + ), +); diff --git a/server/api/api/v1/instance/rules.ts b/server/api/api/v1/instance/rules.ts index 1f7e3991..2df3cae9 100644 --- a/server/api/api/v1/instance/rules.ts +++ b/server/api/api/v1/instance/rules.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -15,12 +14,12 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, auth(meta.auth, meta.permissions), - async (_context) => { + async () => { return jsonResponse( config.signups.rules.map((rule, index) => ({ id: String(index), @@ -29,4 +28,5 @@ export default (app: Hono) => })), ); }, - ); + ), +); diff --git a/server/api/api/v1/instance/tos.ts b/server/api/api/v1/instance/tos.ts index ea3f5f63..04bc79eb 100644 --- a/server/api/api/v1/instance/tos.ts +++ b/server/api/api/v1/instance/tos.ts @@ -1,7 +1,6 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { renderMarkdownInPath } from "@/markdown"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -16,7 +15,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -32,4 +31,5 @@ export default (app: Hono) => content, }); }, - ); + ), +); diff --git a/server/api/api/v1/markers/index.ts b/server/api/api/v1/markers/index.ts index 47b55a05..d8aaea27 100644 --- a/server/api/api/v1/markers/index.ts +++ b/server/api/api/v1/markers/index.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import type { Marker as ApiMarker } from "@lysand-org/client/types"; import { and, count, eq } from "drizzle-orm"; @@ -36,7 +41,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -211,4 +216,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v1/media/:id/index.ts b/server/api/api/v1/media/:id/index.ts index 37496794..b3d7fbd3 100644 --- a/server/api/api/v1/media/:id/index.ts +++ b/server/api/api/v1/media/:id/index.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { MediaManager } from "~/classes/media/media-manager"; @@ -38,7 +43,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -99,4 +104,5 @@ export default (app: Hono) => return errorResponse("Method not allowed", 405); }, - ); + ), +); diff --git a/server/api/api/v1/media/index.ts b/server/api/api/v1/media/index.ts index 341d73cb..2d81a449 100644 --- a/server/api/api/v1/media/index.ts +++ b/server/api/api/v1/media/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import sharp from "sharp"; import { z } from "zod"; @@ -37,7 +36,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -98,4 +97,5 @@ export default (app: Hono) => return jsonResponse(newAttachment.toApi()); }, - ); + ), +); diff --git a/server/api/api/v1/mutes/index.ts b/server/api/api/v1/mutes/index.ts index f0f03172..2a63780c 100644 --- a/server/api/api/v1/mutes/index.ts +++ b/server/api/api/v1/mutes/index.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -32,7 +37,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -66,4 +71,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/notifications/:id/dismiss.ts b/server/api/api/v1/notifications/:id/dismiss.ts index db805500..ab1bdc60 100644 --- a/server/api/api/v1/notifications/:id/dismiss.ts +++ b/server/api/api/v1/notifications/:id/dismiss.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq } from "drizzle-orm"; import { z } from "zod"; @@ -29,7 +28,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -52,4 +51,5 @@ export default (app: Hono) => return jsonResponse({}); }, - ); + ), +); diff --git a/server/api/api/v1/notifications/:id/index.ts b/server/api/api/v1/notifications/:id/index.ts index a320a957..84cc5a1a 100644 --- a/server/api/api/v1/notifications/:id/index.ts +++ b/server/api/api/v1/notifications/:id/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { findManyNotifications } from "~/classes/functions/notification"; @@ -28,7 +27,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -59,4 +58,5 @@ export default (app: Hono) => return jsonResponse(notification); }, - ); + ), +); diff --git a/server/api/api/v1/notifications/clear/index.ts b/server/api/api/v1/notifications/clear/index.ts index 8479322e..a32fb26f 100644 --- a/server/api/api/v1/notifications/clear/index.ts +++ b/server/api/api/v1/notifications/clear/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { eq } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Notifications, RolePermissions } from "~/drizzle/schema"; @@ -21,7 +20,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -41,4 +40,5 @@ export default (app: Hono) => return jsonResponse({}); }, - ); + ), +); diff --git a/server/api/api/v1/notifications/destroy_multiple/index.ts b/server/api/api/v1/notifications/destroy_multiple/index.ts index a4419b6f..fb8e2cc0 100644 --- a/server/api/api/v1/notifications/destroy_multiple/index.ts +++ b/server/api/api/v1/notifications/destroy_multiple/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, inArray } from "drizzle-orm"; import { z } from "zod"; @@ -29,7 +28,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -58,4 +57,5 @@ export default (app: Hono) => return jsonResponse({}); }, - ); + ), +); diff --git a/server/api/api/v1/notifications/index.ts b/server/api/api/v1/notifications/index.ts index 58ef7998..31012d03 100644 --- a/server/api/api/v1/notifications/index.ts +++ b/server/api/api/v1/notifications/index.ts @@ -1,7 +1,12 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; import { fetchTimeline } from "@/timelines"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { sql } from "drizzle-orm"; import { z } from "zod"; @@ -91,7 +96,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -194,4 +199,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/profile/avatar.ts b/server/api/api/v1/profile/avatar.ts index 4dc0f3d4..68fbf9b2 100644 --- a/server/api/api/v1/profile/avatar.ts +++ b/server/api/api/v1/profile/avatar.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { RolePermissions } from "~/drizzle/schema"; export const meta = applyConfig({ @@ -18,7 +17,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -36,4 +35,5 @@ export default (app: Hono) => return jsonResponse(self.toApi(true)); }, - ); + ), +); diff --git a/server/api/api/v1/profile/header.ts b/server/api/api/v1/profile/header.ts index b68f919b..8fced22d 100644 --- a/server/api/api/v1/profile/header.ts +++ b/server/api/api/v1/profile/header.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { RolePermissions } from "~/drizzle/schema"; export const meta = applyConfig({ @@ -18,7 +17,7 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -36,4 +35,5 @@ export default (app: Hono) => return jsonResponse(self.toApi(true)); }, - ); + ), +); diff --git a/server/api/api/v1/roles/:id/index.ts b/server/api/api/v1/roles/:id/index.ts index bd241bc6..d406908e 100644 --- a/server/api/api/v1/roles/:id/index.ts +++ b/server/api/api/v1/roles/:id/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -30,7 +29,7 @@ export const schemas = { id: z.string().uuid(), }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -109,4 +108,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v1/roles/index.ts b/server/api/api/v1/roles/index.ts index 40788a7e..9edb6b7b 100644 --- a/server/api/api/v1/roles/index.ts +++ b/server/api/api/v1/roles/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth } from "@/api"; +import { apiRoute, applyConfig, auth } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { Role } from "~/packages/database-interface/role"; export const meta = applyConfig({ @@ -15,7 +14,7 @@ export const meta = applyConfig({ route: "/api/v1/roles", }); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -34,4 +33,5 @@ export default (app: Hono) => return jsonResponse(userRoles.map((r) => r.toApi())); }, - ); + ), +); diff --git a/server/api/api/v1/sso/:id/index.ts b/server/api/api/v1/sso/:id/index.ts index dcdec255..2ab95a10 100644 --- a/server/api/api/v1/sso/:id/index.ts +++ b/server/api/api/v1/sso/:id/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse, proxyUrl, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq } from "drizzle-orm"; import { z } from "zod"; @@ -34,7 +33,7 @@ export const schemas = { * A GET request allows the user to list all their linked accounts * A POST request allows the user to link a new account */ -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -104,4 +103,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v1/sso/index.ts b/server/api/api/v1/sso/index.ts index fd9a8ee7..e50db72f 100644 --- a/server/api/api/v1/sso/index.ts +++ b/server/api/api/v1/sso/index.ts @@ -1,8 +1,7 @@ -import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { oauthRedirectUri } from "@/constants"; import { randomString } from "@/math"; import { errorResponse, jsonResponse, proxyUrl } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { calculatePKCECodeChallenge, @@ -47,7 +46,7 @@ export const schemas = { * A GET request allows the user to list all their linked accounts * A POST request allows the user to link a new account, and returns a link */ -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -180,4 +179,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/context.ts b/server/api/api/v1/statuses/:id/context.ts index e1b42951..df02dee0 100644 --- a/server/api/api/v1/statuses/:id/context.ts +++ b/server/api/api/v1/statuses/:id/context.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -27,7 +26,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -57,4 +56,5 @@ export default (app: Hono) => ), }); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/favourite.ts b/server/api/api/v1/statuses/:id/favourite.ts index 3169ac0a..010b55ff 100644 --- a/server/api/api/v1/statuses/:id/favourite.ts +++ b/server/api/api/v1/statuses/:id/favourite.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { createLike } from "~/classes/functions/like"; @@ -29,7 +28,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -70,4 +69,5 @@ export default (app: Hono) => return jsonResponse(await newNote.toApi(user)); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/favourited_by.ts b/server/api/api/v1/statuses/:id/favourited_by.ts index 79cf041e..f216bd76 100644 --- a/server/api/api/v1/statuses/:id/favourited_by.ts +++ b/server/api/api/v1/statuses/:id/favourited_by.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -35,7 +40,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -78,4 +83,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/index.ts b/server/api/api/v1/statuses/:id/index.ts index e07b65f0..f91c49c3 100644 --- a/server/api/api/v1/statuses/:id/index.ts +++ b/server/api/api/v1/statuses/:id/index.ts @@ -1,4 +1,5 @@ import { + apiRoute, applyConfig, auth, handleZodError, @@ -6,7 +7,6 @@ import { jsonOrForm, } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import ISO6391 from "iso-639-1"; import { z } from "zod"; @@ -97,7 +97,7 @@ export const schemas = { ), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -179,4 +179,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/pin.ts b/server/api/api/v1/statuses/:id/pin.ts index d5e2f45a..f79416fd 100644 --- a/server/api/api/v1/statuses/:id/pin.ts +++ b/server/api/api/v1/statuses/:id/pin.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { db } from "~/drizzle/db"; @@ -28,7 +33,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -68,4 +73,5 @@ export default (app: Hono) => return jsonResponse(await foundStatus.toApi(user)); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/reblog.ts b/server/api/api/v1/statuses/:id/reblog.ts index 6b032cec..9bd20b94 100644 --- a/server/api/api/v1/statuses/:id/reblog.ts +++ b/server/api/api/v1/statuses/:id/reblog.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq } from "drizzle-orm"; import { z } from "zod"; @@ -32,7 +31,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -96,4 +95,5 @@ export default (app: Hono) => return jsonResponse(await finalNewReblog.toApi(user)); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/reblogged_by.ts b/server/api/api/v1/statuses/:id/reblogged_by.ts index 4e2393b6..a2137700 100644 --- a/server/api/api/v1/statuses/:id/reblogged_by.ts +++ b/server/api/api/v1/statuses/:id/reblogged_by.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -35,7 +34,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -77,4 +76,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/source.ts b/server/api/api/v1/statuses/:id/source.ts index 949544c1..9bdc1368 100644 --- a/server/api/api/v1/statuses/:id/source.ts +++ b/server/api/api/v1/statuses/:id/source.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import type { StatusSource as ApiStatusSource } from "@lysand-org/client/types"; import { z } from "zod"; @@ -28,7 +27,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -55,4 +54,5 @@ export default (app: Hono) => text: status.data.contentSource, } as ApiStatusSource); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/unfavourite.ts b/server/api/api/v1/statuses/:id/unfavourite.ts index 9e48dfad..affad5e4 100644 --- a/server/api/api/v1/statuses/:id/unfavourite.ts +++ b/server/api/api/v1/statuses/:id/unfavourite.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { deleteLike } from "~/classes/functions/like"; @@ -28,7 +27,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -58,4 +57,5 @@ export default (app: Hono) => return jsonResponse(await newNote.toApi(user)); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/unpin.ts b/server/api/api/v1/statuses/:id/unpin.ts index 8142e2b1..f8482d7b 100644 --- a/server/api/api/v1/statuses/:id/unpin.ts +++ b/server/api/api/v1/statuses/:id/unpin.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; @@ -27,7 +26,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -59,4 +58,5 @@ export default (app: Hono) => return jsonResponse(await status.toApi(user)); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/:id/unreblog.ts b/server/api/api/v1/statuses/:id/unreblog.ts index 913ed915..a1f024af 100644 --- a/server/api/api/v1/statuses/:id/unreblog.ts +++ b/server/api/api/v1/statuses/:id/unreblog.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq } from "drizzle-orm"; import { z } from "zod"; @@ -29,7 +28,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -77,4 +76,5 @@ export default (app: Hono) => return jsonResponse(await newNote.toApi(user)); }, - ); + ), +); diff --git a/server/api/api/v1/statuses/index.ts b/server/api/api/v1/statuses/index.ts index fffef36d..596df5a7 100644 --- a/server/api/api/v1/statuses/index.ts +++ b/server/api/api/v1/statuses/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import ISO6391 from "iso-639-1"; import { z } from "zod"; @@ -102,7 +101,7 @@ export const schemas = { ), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -168,4 +167,5 @@ export default (app: Hono) => return jsonResponse(await newNote.toApi(user)); }, - ); + ), +); diff --git a/server/api/api/v1/timelines/home.ts b/server/api/api/v1/timelines/home.ts index 15738c2b..fdfb3a62 100644 --- a/server/api/api/v1/timelines/home.ts +++ b/server/api/api/v1/timelines/home.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, gt, gte, lt, or, sql } from "drizzle-orm"; import { z } from "zod"; @@ -36,7 +41,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -81,4 +86,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v1/timelines/public.ts b/server/api/api/v1/timelines/public.ts index cae9f350..f5c660df 100644 --- a/server/api/api/v1/timelines/public.ts +++ b/server/api/api/v1/timelines/public.ts @@ -1,6 +1,11 @@ -import { applyConfig, auth, handleZodError, idValidator } from "@/api"; +import { + apiRoute, + applyConfig, + auth, + handleZodError, + idValidator, +} from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, gt, gte, lt, sql } from "drizzle-orm"; import { z } from "zod"; @@ -47,7 +52,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -99,4 +104,5 @@ export default (app: Hono) => }, ); }, - ); + ), +); diff --git a/server/api/api/v2/filters/:id/index.ts b/server/api/api/v2/filters/:id/index.ts index 08b98596..e318313d 100644 --- a/server/api/api/v2/filters/:id/index.ts +++ b/server/api/api/v2/filters/:id/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, inArray } from "drizzle-orm"; import { z } from "zod"; @@ -70,7 +69,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -221,4 +220,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v2/filters/index.ts b/server/api/api/v2/filters/index.ts index 718df75c..b22a0792 100644 --- a/server/api/api/v2/filters/index.ts +++ b/server/api/api/v2/filters/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { db } from "~/drizzle/db"; @@ -59,7 +58,7 @@ export const schemas = { .optional(), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -189,4 +188,5 @@ export default (app: Hono) => } } }, - ); + ), +); diff --git a/server/api/api/v2/instance/index.ts b/server/api/api/v2/instance/index.ts index a0b645ce..bcb6ac20 100644 --- a/server/api/api/v2/instance/index.ts +++ b/server/api/api/v2/instance/index.ts @@ -1,6 +1,5 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { jsonResponse, proxyUrl } from "@/response"; -import type { Hono } from "@hono/hono"; import type { Instance as ApiInstance } from "@lysand-org/client/types"; import { and, eq, isNull } from "drizzle-orm"; import { Users } from "~/drizzle/schema"; @@ -20,8 +19,8 @@ export const meta = applyConfig({ }, }); -export default (app: Hono) => - app.on(meta.allowedMethods, meta.route, async (_context) => { +export default apiRoute((app) => + app.on(meta.allowedMethods, meta.route, async () => { // Get software version from package.json const version = manifest.version; @@ -125,4 +124,5 @@ export default (app: Hono) => })), }, } satisfies ApiInstance); - }); + }), +); diff --git a/server/api/api/v2/media/index.ts b/server/api/api/v2/media/index.ts index c52fb1bb..e8852198 100644 --- a/server/api/api/v2/media/index.ts +++ b/server/api/api/v2/media/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, auth, handleZodError } from "@/api"; +import { apiRoute, applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import sharp from "sharp"; import { z } from "zod"; @@ -37,7 +36,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -108,4 +107,5 @@ export default (app: Hono) => 202, ); }, - ); + ), +); diff --git a/server/api/api/v2/search/index.ts b/server/api/api/v2/search/index.ts index 45bd8073..5fda52d5 100644 --- a/server/api/api/v2/search/index.ts +++ b/server/api/api/v2/search/index.ts @@ -1,4 +1,5 @@ import { + apiRoute, applyConfig, auth, handleZodError, @@ -6,7 +7,6 @@ import { userAddressValidator, } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, inArray, sql } from "drizzle-orm"; import { z } from "zod"; @@ -51,7 +51,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -218,4 +218,5 @@ export default (app: Hono) => hashtags: [], }); }, - ); + ), +); diff --git a/server/api/media/:hash/:name/index.ts b/server/api/media/:hash/:name/index.ts index b2e67bd7..2957b00c 100644 --- a/server/api/media/:hash/:name/index.ts +++ b/server/api/media/:hash/:name/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { errorResponse, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; @@ -26,7 +25,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -61,4 +60,5 @@ export default (app: Hono) => "Content-Range": `bytes ${start}-${end}/${file.size}`, }); }, - ); + ), +); diff --git a/server/api/media/proxy/:id.ts b/server/api/media/proxy/:id.ts index de3341bb..39c26961 100644 --- a/server/api/media/proxy/:id.ts +++ b/server/api/media/proxy/:id.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { errorResponse, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { config } from "~/packages/config-manager"; @@ -25,7 +24,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -73,4 +72,5 @@ export default (app: Hono) => "Content-Disposition": `inline; filename="${realFilename}"`, }); }, - ); + ), +); diff --git a/server/api/oauth/authorize/index.ts b/server/api/oauth/authorize/index.ts index 74d83b90..4be5bc50 100644 --- a/server/api/oauth/authorize/index.ts +++ b/server/api/oauth/authorize/index.ts @@ -1,8 +1,7 @@ -import { applyConfig, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, handleZodError, jsonOrForm } from "@/api"; import { randomString } from "@/math"; import { response } from "@/response"; import { sentry } from "@/sentry"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { SignJWT, jwtVerify } from "jose"; import { z } from "zod"; @@ -78,7 +77,7 @@ const returnError = (query: object, error: string, description: string) => { }); }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -330,4 +329,5 @@ export default (app: Hono) => Pragma: "no-cache", }); }, - ); + ), +); diff --git a/server/api/oauth/sso/:issuer/callback/index.ts b/server/api/oauth/sso/:issuer/callback/index.ts index 46f5c414..25a08ffb 100644 --- a/server/api/oauth/sso/:issuer/callback/index.ts +++ b/server/api/oauth/sso/:issuer/callback/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { randomString } from "@/math"; import { errorResponse, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, eq, isNull } from "drizzle-orm"; import { SignJWT } from "jose"; @@ -63,7 +62,7 @@ const returnError = (query: object, error: string, description: string) => { * After the user has authenticated to an external OpenID provider, * they are redirected here to complete the OAuth flow and get a code */ -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -288,4 +287,5 @@ export default (app: Hono) => }`, }); }, - ); + ), +); diff --git a/server/api/oauth/sso/index.ts b/server/api/oauth/sso/index.ts index d1f8a7f7..642b2260 100644 --- a/server/api/oauth/sso/index.ts +++ b/server/api/oauth/sso/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { oauthRedirectUri } from "@/constants"; import { redirect, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { calculatePKCECodeChallenge, @@ -54,7 +53,7 @@ const returnError = (query: object, error: string, description: string) => { }); }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -135,4 +134,5 @@ export default (app: Hono) => 302, ); }, - ); + ), +); diff --git a/server/api/oauth/token/index.ts b/server/api/oauth/token/index.ts index 1871a002..58cab65b 100644 --- a/server/api/oauth/token/index.ts +++ b/server/api/oauth/token/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError, jsonOrForm } from "@/api"; +import { apiRoute, applyConfig, handleZodError, jsonOrForm } from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { eq } from "drizzle-orm"; import { z } from "zod"; @@ -61,7 +60,7 @@ const returnError = (error: string, description: string) => 401, ); -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -151,4 +150,5 @@ export default (app: Hono) => "Unsupported grant type", ); }, - ); + ), +); diff --git a/server/api/objects/:id/index.ts b/server/api/objects/:id/index.ts index c575f3bf..bdb21b64 100644 --- a/server/api/objects/:id/index.ts +++ b/server/api/objects/:id/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { errorResponse, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import type { Entity } from "@lysand-org/federation/types"; import { and, eq, inArray, sql } from "drizzle-orm"; @@ -36,7 +35,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -116,4 +115,5 @@ export default (app: Hono) => ...headers.toJSON(), }); }, - ); + ), +); diff --git a/server/api/users/:uuid/inbox/index.ts b/server/api/users/:uuid/inbox/index.ts index 0148898f..4a868c10 100644 --- a/server/api/users/:uuid/inbox/index.ts +++ b/server/api/users/:uuid/inbox/index.ts @@ -1,7 +1,6 @@ -import { applyConfig, debugRequest, handleZodError } from "@/api"; +import { apiRoute, applyConfig, debugRequest, handleZodError } from "@/api"; import { errorResponse, jsonResponse, response } from "@/response"; import { sentry } from "@/sentry"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { getLogger } from "@logtape/logtape"; import { @@ -47,7 +46,7 @@ export const schemas = { body: z.any(), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -402,4 +401,5 @@ export default (app: Hono) => ); } }, - ); + ), +); diff --git a/server/api/users/:uuid/index.ts b/server/api/users/:uuid/index.ts index 25045d16..d59cf294 100644 --- a/server/api/users/:uuid/index.ts +++ b/server/api/users/:uuid/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { errorResponse, redirect, response } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { z } from "zod"; import { config } from "~/packages/config-manager"; @@ -30,7 +29,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -89,4 +88,5 @@ export default (app: Hono) => ...headers.toJSON(), }); }, - ); + ), +); diff --git a/server/api/users/:uuid/outbox/index.ts b/server/api/users/:uuid/outbox/index.ts index b6e467d0..735498c5 100644 --- a/server/api/users/:uuid/outbox/index.ts +++ b/server/api/users/:uuid/outbox/index.ts @@ -1,6 +1,5 @@ -import { applyConfig, handleZodError } from "@/api"; +import { apiRoute, applyConfig, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { and, count, eq, inArray } from "drizzle-orm"; import { z } from "zod"; @@ -33,7 +32,7 @@ export const schemas = { const NOTES_PER_PAGE = 20; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -112,4 +111,5 @@ export default (app: Hono) => items: notes.map((note) => note.toVersia()), }); }, - ); + ), +); diff --git a/server/api/well-known/host-meta/index.ts b/server/api/well-known/host-meta/index.ts index 36754d77..804c6023 100644 --- a/server/api/well-known/host-meta/index.ts +++ b/server/api/well-known/host-meta/index.ts @@ -1,6 +1,5 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { xmlResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -15,7 +14,7 @@ export const meta = applyConfig({ route: "/.well-known/host-meta", }); -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, () => { return xmlResponse( ``, ); - }); + }), +); diff --git a/server/api/well-known/jwks/index.ts b/server/api/well-known/jwks/index.ts index 2b43ae81..071ed6c7 100644 --- a/server/api/well-known/jwks/index.ts +++ b/server/api/well-known/jwks/index.ts @@ -1,6 +1,5 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { exportJWK } from "jose"; import { config } from "~/packages/config-manager"; @@ -16,7 +15,7 @@ export const meta = applyConfig({ route: "/.well-known/jwks", }); -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, async () => { const publicKey = await crypto.subtle.importKey( "spki", @@ -41,4 +40,5 @@ export default (app: Hono) => }, ], }); - }); + }), +); diff --git a/server/api/well-known/nodeinfo/2.0/index.ts b/server/api/well-known/nodeinfo/2.0/index.ts index fe52d913..a48c1773 100644 --- a/server/api/well-known/nodeinfo/2.0/index.ts +++ b/server/api/well-known/nodeinfo/2.0/index.ts @@ -1,6 +1,5 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import manifest from "~/package.json"; export const meta = applyConfig({ @@ -15,7 +14,7 @@ export const meta = applyConfig({ route: "/.well-known/nodeinfo/2.0", }); -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, () => { return jsonResponse({ version: "2.0", @@ -29,4 +28,5 @@ export default (app: Hono) => openRegistrations: false, metadata: {}, }); - }); + }), +); diff --git a/server/api/well-known/nodeinfo/index.ts b/server/api/well-known/nodeinfo/index.ts index ef6663fd..8e708b20 100644 --- a/server/api/well-known/nodeinfo/index.ts +++ b/server/api/well-known/nodeinfo/index.ts @@ -1,6 +1,5 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { redirect } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -15,10 +14,11 @@ export const meta = applyConfig({ route: "/.well-known/nodeinfo", }); -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, () => { return redirect( new URL("/.well-known/nodeinfo/2.0", config.http.base_url), 301, ); - }); + }), +); diff --git a/server/api/well-known/openid-configuration/index.ts b/server/api/well-known/openid-configuration/index.ts index 33fcc98b..8c386010 100644 --- a/server/api/well-known/openid-configuration/index.ts +++ b/server/api/well-known/openid-configuration/index.ts @@ -1,6 +1,5 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { config } from "~/packages/config-manager"; export const meta = applyConfig({ @@ -15,7 +14,7 @@ export const meta = applyConfig({ route: "/.well-known/openid-configuration", }); -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, () => { const baseUrl = new URL(config.http.base_url); return jsonResponse({ @@ -31,4 +30,5 @@ export default (app: Hono) => token_endpoint_auth_methods_supported: ["client_secret_basic"], claims_supported: ["sub"], }); - }); + }), +); diff --git a/server/api/well-known/lysand.ts b/server/api/well-known/versia.ts similarity index 89% rename from server/api/well-known/lysand.ts rename to server/api/well-known/versia.ts index e07dfd4a..aba53803 100644 --- a/server/api/well-known/lysand.ts +++ b/server/api/well-known/versia.ts @@ -1,7 +1,6 @@ -import { applyConfig } from "@/api"; +import { apiRoute, applyConfig } from "@/api"; import { urlToContentFormat } from "@/content_types"; import { jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import type { ServerMetadata } from "@lysand-org/federation/types"; import pkg from "~/package.json"; import { config } from "~/packages/config-manager"; @@ -18,7 +17,7 @@ export const meta = applyConfig({ route: "/.well-known/versia", }); -export default (app: Hono) => +export default apiRoute((app) => app.on(meta.allowedMethods, meta.route, () => { return jsonResponse({ type: "ServerMetadata", @@ -30,4 +29,5 @@ export default (app: Hono) => supported_extensions: ["org.lysand:custom_emojis"], website: "https://versia.pub", } satisfies ServerMetadata); - }); + }), +); diff --git a/server/api/well-known/webfinger/index.ts b/server/api/well-known/webfinger/index.ts index 8091fd40..80ad2290 100644 --- a/server/api/well-known/webfinger/index.ts +++ b/server/api/well-known/webfinger/index.ts @@ -1,11 +1,11 @@ import { + apiRoute, applyConfig, handleZodError, idValidator, webfingerMention, } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; -import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; import { getLogger } from "@logtape/logtape"; import type { ResponseError } from "@lysand-org/federation"; @@ -34,7 +34,7 @@ export const schemas = { }), }; -export default (app: Hono) => +export default apiRoute((app) => app.on( meta.allowedMethods, meta.route, @@ -126,4 +126,5 @@ export default (app: Hono) => ].filter(Boolean), }); }, - ); + ), +); diff --git a/utils/api.ts b/utils/api.ts index f47e7f8a..8b6e1980 100644 --- a/utils/api.ts +++ b/utils/api.ts @@ -1,5 +1,5 @@ import { errorResponse } from "@/response"; -import type { Context } from "@hono/hono"; +import type { Context, Hono } from "@hono/hono"; import { createMiddleware } from "@hono/hono/factory"; import type { StatusCode } from "@hono/hono/utils/http-status"; import { validator } from "@hono/hono/validator"; @@ -44,6 +44,14 @@ export const applyConfig = (routeMeta: ApiRouteMetadata) => { return newMeta; }; +export const apiRoute = ( + fn: ( + app: Hono /* <{ + Bindings: {}; + }> */, + ) => void, +) => fn; + export const idValidator = createRegExp( anyOf(digit, charIn("ABCDEF")).times(8), exactly("-"),