2024-05-07 05:13:37 +02:00
|
|
|
import type { Hono } from "hono";
|
|
|
|
|
import type { RouterRoute } from "hono/types";
|
|
|
|
|
import type { z } from "zod";
|
2024-06-08 06:57:29 +02:00
|
|
|
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[];
|
|
|
|
|
};
|
2024-06-08 06:57:29 +02:00
|
|
|
permissions?: {
|
|
|
|
|
required: RolePermissions[];
|
|
|
|
|
methodOverrides?: {
|
|
|
|
|
[key in HttpVerb]?: RolePermissions[];
|
|
|
|
|
};
|
|
|
|
|
};
|
2023-10-16 05:51:29 +02:00
|
|
|
}
|
2024-05-07 05:13:37 +02:00
|
|
|
|
|
|
|
|
export interface APIRouteExports {
|
|
|
|
|
meta: APIRouteMetadata;
|
|
|
|
|
schemas?: {
|
|
|
|
|
query?: z.AnyZodObject;
|
|
|
|
|
body?: z.AnyZodObject;
|
|
|
|
|
};
|
|
|
|
|
default: (app: Hono) => RouterRoute;
|
|
|
|
|
}
|