refactor: ⬆️ Upgrade dependencies, use JSR for Hono

This commit is contained in:
Jesse Wierzbinski 2024-07-11 12:56:28 +02:00
parent 57b295ccf2
commit 939815510c
No known key found for this signature in database
109 changed files with 183 additions and 180 deletions

View file

@ -1,13 +1,13 @@
import { errorResponse } from "@/response";
import type { Context } from "@hono/hono";
import { createMiddleware } from "@hono/hono/factory";
import type { StatusCode } from "@hono/hono/utils/http-status";
import { validator } from "@hono/hono/validator";
import { getLogger } from "@logtape/logtape";
import { extractParams, verifySolution } from "altcha-lib";
import chalk from "chalk";
import { config } from "config-manager";
import { eq } from "drizzle-orm";
import type { Context } from "hono";
import { createMiddleware } from "hono/factory";
import type { StatusCode } from "hono/utils/http-status";
import { validator } from "hono/validator";
import {
anyOf,
caseInsensitive,
@ -110,7 +110,7 @@ export const handleZodError = (
result:
| { success: true; data?: object }
| { success: false; error: z.ZodError<z.AnyZodObject>; data?: object },
_context: Context,
_context: unknown,
) => {
if (!result.success) {
return errorResponse(fromZodError(result.error).message, 422);
@ -127,7 +127,8 @@ const returnContextError = (
context: Context,
error: string,
code?: StatusCode,
) => {
// @ts-expect-error The return type is too complex for TypeScript to work with, but it's fine since this isn't a library
): ReturnType<Context["json"]> => {
const templateError = errorResponse(error, code);
return context.json(
@ -197,7 +198,7 @@ const checkRouteNeedsAuth = (
export const checkRouteNeedsChallenge = async (
challengeData: ApiRouteMetadata["challenge"],
context: Context,
) => {
): Promise<true | ReturnType<typeof returnContextError>> => {
if (!challengeData) {
return true;
}
@ -357,12 +358,9 @@ export const setContextFormDataToObject = (
context: Context,
setTo: object,
): Context => {
// @ts-expect-error HACK
context.req.bodyCache.formData = setTo;
context.req.parseBody = async () =>
context.req.bodyCache.formData as FormData;
context.req.formData = async () =>
context.req.bodyCache.formData as FormData;
context.req.bodyCache.json = setTo;
context.req.parseBody = async () => context.req.bodyCache.json;
context.req.json = async () => context.req.bodyCache.json;
return context;
};
@ -382,6 +380,7 @@ export const jsonOrForm = () => {
const parsed = await parseUrlEncoded(context);
setContextFormDataToObject(context, parsed);
context.req.raw.headers.set("Content-Type", "application/json");
} else if (contentType?.includes("multipart/form-data")) {
const { parsed, files } = await parseFormData(context);
@ -389,6 +388,10 @@ export const jsonOrForm = () => {
...parsed,
...Object.fromEntries(files),
});
context.req.raw.headers.set("Content-Type", "application/json");
} else if (!contentType) {
setContextFormDataToObject(context, {});
context.req.raw.headers.set("Content-Type", "application/json");
}
await next();

View file

@ -1,5 +1,5 @@
import type { Hono } from "@hono/hono";
import type { Config } from "config-manager";
import type { Hono } from "hono";
export const createServer = (config: Config, app: Hono) =>
Bun.serve({