2024-07-11 12:56:28 +02:00
|
|
|
import type { RouterRoute } from "@hono/hono/types";
|
2024-08-27 16:40:11 +02:00
|
|
|
import type { OpenAPIHono } from "@hono/zod-openapi";
|
2024-08-26 19:06:49 +02:00
|
|
|
import type {
|
|
|
|
|
Delete,
|
|
|
|
|
Follow,
|
|
|
|
|
FollowAccept,
|
|
|
|
|
FollowReject,
|
|
|
|
|
InstanceMetadata,
|
|
|
|
|
LikeExtension,
|
|
|
|
|
Note,
|
|
|
|
|
Unfollow,
|
|
|
|
|
User,
|
|
|
|
|
} from "@versia/federation/types";
|
2024-08-27 17:20:36 +02:00
|
|
|
import { z } from "zod";
|
|
|
|
|
import type { Application } from "~/classes/functions/application";
|
2024-06-08 06:57:29 +02:00
|
|
|
import type { RolePermissions } from "~/drizzle/schema";
|
2024-08-29 20:32:04 +02:00
|
|
|
import type { Config } from "~/packages/config-manager";
|
2024-08-27 17:20:36 +02:00
|
|
|
import type { User as DatabaseUser } from "~/packages/database-interface/user";
|
2024-05-07 05:13:37 +02:00
|
|
|
|
|
|
|
|
export type HttpVerb = "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "OPTIONS";
|
2024-06-13 04:26:43 +02:00
|
|
|
export interface ApiRouteMetadata {
|
2024-05-07 05:13:37 +02:00
|
|
|
allowedMethods: HttpVerb[];
|
2024-04-07 07:30:49 +02:00
|
|
|
ratelimits: {
|
|
|
|
|
max: number;
|
|
|
|
|
duration: number;
|
|
|
|
|
};
|
|
|
|
|
route: string;
|
|
|
|
|
auth: {
|
|
|
|
|
required: boolean;
|
2024-06-14 06:03:17 +02:00
|
|
|
methodOverrides?: {
|
|
|
|
|
[Key in HttpVerb]?: boolean;
|
|
|
|
|
};
|
2024-04-07 07:30:49 +02:00
|
|
|
oauthPermissions?: string[];
|
|
|
|
|
};
|
2024-06-14 10:03:51 +02:00
|
|
|
challenge?: {
|
|
|
|
|
required: boolean;
|
|
|
|
|
methodOverrides?: {
|
|
|
|
|
[Key in HttpVerb]?: boolean;
|
|
|
|
|
};
|
|
|
|
|
};
|
2024-06-08 06:57:29 +02:00
|
|
|
permissions?: {
|
|
|
|
|
required: RolePermissions[];
|
|
|
|
|
methodOverrides?: {
|
2024-06-13 04:26:43 +02:00
|
|
|
[Key in HttpVerb]?: RolePermissions[];
|
2024-06-08 06:57:29 +02:00
|
|
|
};
|
|
|
|
|
};
|
2023-10-16 05:51:29 +02:00
|
|
|
}
|
2024-05-07 05:13:37 +02:00
|
|
|
|
2024-08-27 17:20:36 +02:00
|
|
|
export const ErrorSchema = z.object({
|
|
|
|
|
error: z.string(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export type HonoEnv = {
|
|
|
|
|
Variables: {
|
2024-08-29 20:32:04 +02:00
|
|
|
config: Config;
|
2024-08-27 17:20:36 +02:00
|
|
|
auth: {
|
|
|
|
|
user: DatabaseUser | null;
|
|
|
|
|
token: string | null;
|
|
|
|
|
application: Application | null;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
2024-06-13 04:26:43 +02:00
|
|
|
export interface ApiRouteExports {
|
|
|
|
|
meta: ApiRouteMetadata;
|
2024-05-07 05:13:37 +02:00
|
|
|
schemas?: {
|
|
|
|
|
query?: z.AnyZodObject;
|
|
|
|
|
body?: z.AnyZodObject;
|
|
|
|
|
};
|
2024-08-27 17:20:36 +02:00
|
|
|
default: (app: OpenAPIHono<HonoEnv>) => RouterRoute;
|
2024-05-07 05:13:37 +02:00
|
|
|
}
|
2024-08-26 19:06:49 +02:00
|
|
|
|
|
|
|
|
export type KnownEntity =
|
|
|
|
|
| Note
|
|
|
|
|
| InstanceMetadata
|
|
|
|
|
| User
|
|
|
|
|
| Follow
|
|
|
|
|
| FollowAccept
|
|
|
|
|
| FollowReject
|
|
|
|
|
| Unfollow
|
|
|
|
|
| Delete
|
2024-08-26 19:40:15 +02:00
|
|
|
| LikeExtension;
|