server/types/api.ts

35 lines
880 B
TypeScript
Raw Normal View History

2024-05-07 05:13:37 +02:00
import type { Hono } from "hono";
import type { RouterRoute } from "hono/types";
import type { z } from "zod";
import type { RolePermissions } from "~/drizzle/schema";
2024-05-07 05:13:37 +02:00
export type HttpVerb = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS";
export interface APIRouteMetadata {
allowedMethods: HttpVerb[];
2024-04-07 07:30:49 +02:00
ratelimits: {
max: number;
duration: number;
};
route: string;
auth: {
required: boolean;
2024-05-07 05:13:37 +02:00
requiredOnMethods?: HttpVerb[];
2024-04-07 07:30:49 +02:00
oauthPermissions?: string[];
};
permissions?: {
required: RolePermissions[];
methodOverrides?: {
[key in HttpVerb]?: RolePermissions[];
};
};
}
2024-05-07 05:13:37 +02:00
export interface APIRouteExports {
meta: APIRouteMetadata;
schemas?: {
query?: z.AnyZodObject;
body?: z.AnyZodObject;
};
default: (app: Hono) => RouterRoute;
}