mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 08:28:19 +01:00
feat(api): 🏷️ Port Account OpenAPI schemas from Mastodon API docs
This commit is contained in:
parent
76d1ccc859
commit
2aeada4904
|
|
@ -1,12 +1,11 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Application, User } from "@versia/kit/db";
|
import { Application, User } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { eq, or } from "drizzle-orm";
|
import { eq, or } from "drizzle-orm";
|
||||||
import type { Context } from "hono";
|
import type { Context } from "hono";
|
||||||
import { setCookie } from "hono/cookie";
|
import { setCookie } from "hono/cookie";
|
||||||
import { SignJWT } from "jose";
|
import { SignJWT } from "jose";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { Applications, Tokens } from "@versia/kit/tables";
|
import { Applications, Tokens } from "@versia/kit/tables";
|
||||||
import { and, eq } from "drizzle-orm";
|
import { and, eq } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { eq } from "drizzle-orm";
|
import { eq } from "drizzle-orm";
|
||||||
import type { Context } from "hono";
|
import type { Context } from "hono";
|
||||||
import { z } from "zod";
|
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import ISO6391 from "iso-639-1";
|
import ISO6391 from "iso-639-1";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
param: z.object({
|
param: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Timeline, User } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -43,7 +43,7 @@ const route = createRoute({
|
||||||
description: "A list of accounts that follow the specified account",
|
description: "A list of accounts that follow the specified account",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
headers: {
|
headers: {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Timeline, User } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -44,7 +44,7 @@ const route = createRoute({
|
||||||
"A list of accounts that the specified account follows",
|
"A list of accounts that the specified account follows",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
headers: {
|
headers: {
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "get",
|
method: "get",
|
||||||
|
|
@ -26,7 +25,7 @@ const route = createRoute({
|
||||||
description: "Account data",
|
description: "Account data",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
param: z.object({
|
param: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
param: z.object({
|
param: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
|
|
@ -29,7 +28,7 @@ const route = createRoute({
|
||||||
description: "Updated user data",
|
description: "Updated user data",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Role } from "@versia/kit/db";
|
import { Role } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Role } from "@versia/kit/db";
|
import { Role } from "@versia/kit/db";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "get",
|
method: "get",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note, Timeline } from "@versia/kit/db";
|
import { Note, Timeline } from "@versia/kit/db";
|
||||||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, eq, gt, gte, inArray, isNull, lt, or, sql } from "drizzle-orm";
|
import { and, eq, gt, gte, inArray, isNull, lt, or, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
param: z.object({
|
param: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
import { apiRoute, auth, withUserParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth, qsQuery } from "@/api";
|
import { apiRoute, auth, qsQuery } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User, db } from "@versia/kit/db";
|
import { User, db } from "@versia/kit/db";
|
||||||
import { RolePermissions, type Users } from "@versia/kit/tables";
|
import { RolePermissions, type Users } from "@versia/kit/tables";
|
||||||
import { type InferSelectModel, sql } from "drizzle-orm";
|
import { type InferSelectModel, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -41,7 +41,7 @@ const route = createRoute({
|
||||||
schema: z.array(
|
schema: z.array(
|
||||||
z.object({
|
z.object({
|
||||||
id: z.string().uuid(),
|
id: z.string().uuid(),
|
||||||
accounts: z.array(User.schema),
|
accounts: z.array(Account),
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
|
|
@ -32,7 +32,7 @@ const route = createRoute({
|
||||||
description: "Account",
|
description: "Account",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,10 @@
|
||||||
import { apiRoute, auth, jsonOrForm } from "@/api";
|
import { apiRoute, auth, jsonOrForm } from "@/api";
|
||||||
import { tempmailDomains } from "@/tempmail";
|
import { tempmailDomains } from "@/tempmail";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import ISO6391 from "iso-639-1";
|
import ISO6391 from "iso-639-1";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { apiRoute, auth, parseUserAddress } from "@/api";
|
import { apiRoute, auth, parseUserAddress } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Instance, User } from "@versia/kit/db";
|
import { Instance, User } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
@ -33,7 +33,7 @@ const route = createRoute({
|
||||||
description: "Account",
|
description: "Account",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, qsQuery } from "@/api";
|
import { apiRoute, auth, qsQuery } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import { apiRoute, auth, parseUserAddress, userAddressValidator } from "@/api";
|
import { apiRoute, auth, parseUserAddress, userAddressValidator } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { eq, ilike, not, or, sql } from "drizzle-orm";
|
import { eq, ilike, not, or, sql } from "drizzle-orm";
|
||||||
import stringComparison from "string-comparison";
|
import stringComparison from "string-comparison";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -43,7 +43,7 @@ export const route = createRoute({
|
||||||
description: "Accounts",
|
description: "Accounts",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,58 +1,22 @@
|
||||||
import { apiRoute, auth, jsonOrForm } from "@/api";
|
import { apiRoute, auth, jsonOrForm } from "@/api";
|
||||||
import { mergeAndDeduplicate } from "@/lib";
|
import { mergeAndDeduplicate } from "@/lib";
|
||||||
import { sanitizedHtmlStrip } from "@/sanitization";
|
import { sanitizedHtmlStrip } from "@/sanitization";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Emoji, User } from "@versia/kit/db";
|
import { Emoji, User } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import ISO6391 from "iso-639-1";
|
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { contentToHtml } from "~/classes/functions/status";
|
import { contentToHtml } from "~/classes/functions/status";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
json: z.object({
|
json: z
|
||||||
display_name: z
|
.object({
|
||||||
.string()
|
display_name: Account.shape.display_name,
|
||||||
.min(3)
|
username: Account.shape.username,
|
||||||
.trim()
|
note: Account.shape.note,
|
||||||
.max(config.validation.max_displayname_size)
|
|
||||||
.refine(
|
|
||||||
(s) =>
|
|
||||||
!config.filters.displayname.some((filter) =>
|
|
||||||
s.match(filter),
|
|
||||||
),
|
|
||||||
"Display name contains blocked words",
|
|
||||||
)
|
|
||||||
.optional(),
|
|
||||||
username: z
|
|
||||||
.string()
|
|
||||||
.min(3)
|
|
||||||
.trim()
|
|
||||||
.max(config.validation.max_username_size)
|
|
||||||
.toLowerCase()
|
|
||||||
.regex(
|
|
||||||
/^[a-z0-9_-]+$/,
|
|
||||||
"Username can only contain letters, numbers, underscores and hyphens",
|
|
||||||
)
|
|
||||||
.refine(
|
|
||||||
(s) =>
|
|
||||||
!config.filters.username.some((filter) => s.match(filter)),
|
|
||||||
"Username contains blocked words",
|
|
||||||
)
|
|
||||||
.optional(),
|
|
||||||
note: z
|
|
||||||
.string()
|
|
||||||
.min(0)
|
|
||||||
.max(config.validation.max_bio_size)
|
|
||||||
.trim()
|
|
||||||
.refine(
|
|
||||||
(s) => !config.filters.bio.some((filter) => s.match(filter)),
|
|
||||||
"Bio contains blocked words",
|
|
||||||
)
|
|
||||||
.optional(),
|
|
||||||
avatar: z
|
avatar: z
|
||||||
.string()
|
.string()
|
||||||
.trim()
|
.trim()
|
||||||
|
|
@ -67,8 +31,7 @@ const schemas = {
|
||||||
(v) => v.size <= config.validation.max_avatar_size,
|
(v) => v.size <= config.validation.max_avatar_size,
|
||||||
`Avatar must be less than ${config.validation.max_avatar_size} bytes`,
|
`Avatar must be less than ${config.validation.max_avatar_size} bytes`,
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
.optional(),
|
|
||||||
header: z
|
header: z
|
||||||
.string()
|
.string()
|
||||||
.trim()
|
.trim()
|
||||||
|
|
@ -83,52 +46,27 @@ const schemas = {
|
||||||
(v) => v.size <= config.validation.max_header_size,
|
(v) => v.size <= config.validation.max_header_size,
|
||||||
`Header must be less than ${config.validation.max_header_size} bytes`,
|
`Header must be less than ${config.validation.max_header_size} bytes`,
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
.optional(),
|
locked: Account.shape.locked,
|
||||||
locked: z
|
bot: Account.shape.bot,
|
||||||
.string()
|
discoverable: Account.shape.discoverable,
|
||||||
.transform((v) => ["true", "1", "on"].includes(v.toLowerCase()))
|
|
||||||
.optional(),
|
|
||||||
bot: z
|
|
||||||
.string()
|
|
||||||
.transform((v) => ["true", "1", "on"].includes(v.toLowerCase()))
|
|
||||||
.optional(),
|
|
||||||
discoverable: z
|
|
||||||
.string()
|
|
||||||
.transform((v) => ["true", "1", "on"].includes(v.toLowerCase()))
|
|
||||||
.optional(),
|
|
||||||
source: z
|
source: z
|
||||||
.object({
|
.object({
|
||||||
privacy: z
|
privacy: Account.shape.source.unwrap().shape.privacy,
|
||||||
.enum(["public", "unlisted", "private", "direct"])
|
sensitive: Account.shape.source.unwrap().shape.sensitive,
|
||||||
.optional(),
|
language: Account.shape.source.unwrap().shape.language,
|
||||||
sensitive: z
|
|
||||||
.string()
|
|
||||||
.transform((v) =>
|
|
||||||
["true", "1", "on"].includes(v.toLowerCase()),
|
|
||||||
)
|
|
||||||
.optional(),
|
|
||||||
language: z
|
|
||||||
.enum(ISO6391.getAllCodes() as [string, ...string[]])
|
|
||||||
.optional(),
|
|
||||||
})
|
})
|
||||||
.optional(),
|
.partial(),
|
||||||
fields_attributes: z
|
fields_attributes: z
|
||||||
.array(
|
.array(
|
||||||
z.object({
|
z.object({
|
||||||
name: z
|
name: Account.shape.fields.element.shape.name,
|
||||||
.string()
|
value: Account.shape.fields.element.shape.value,
|
||||||
.trim()
|
|
||||||
.max(config.validation.max_field_name_size),
|
|
||||||
value: z
|
|
||||||
.string()
|
|
||||||
.trim()
|
|
||||||
.max(config.validation.max_field_value_size),
|
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
.max(config.validation.max_field_count)
|
.max(config.validation.max_field_count),
|
||||||
.optional(),
|
})
|
||||||
}),
|
.partial(),
|
||||||
};
|
};
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
|
|
@ -158,7 +96,7 @@ const route = createRoute({
|
||||||
description: "Updated user",
|
description: "Updated user",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "get",
|
method: "get",
|
||||||
|
|
@ -18,7 +18,7 @@ const route = createRoute({
|
||||||
description: "Account",
|
description: "Account",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, jsonOrForm } from "@/api";
|
import { apiRoute, jsonOrForm } from "@/api";
|
||||||
import { randomString } from "@/math";
|
import { randomString } from "@/math";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Application } from "@versia/kit/db";
|
import { Application } from "@versia/kit/db";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
json: z.object({
|
json: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Timeline, User } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -34,7 +34,7 @@ const route = createRoute({
|
||||||
description: "Blocks",
|
description: "Blocks",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, emojiValidator, jsonOrForm } from "@/api";
|
import { apiRoute, auth, emojiValidator, jsonOrForm } from "@/api";
|
||||||
import { mimeLookup } from "@/content_types";
|
import { mimeLookup } from "@/content_types";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Emoji } from "@versia/kit/db";
|
import { Emoji } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
import { apiRoute, auth, emojiValidator, jsonOrForm } from "@/api";
|
import { apiRoute, auth, emojiValidator, jsonOrForm } from "@/api";
|
||||||
import { mimeLookup } from "@/content_types";
|
import { mimeLookup } from "@/content_types";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Emoji, Media } from "@versia/kit/db";
|
import { Emoji, Media } from "@versia/kit/db";
|
||||||
import { Emojis, RolePermissions } from "@versia/kit/tables";
|
import { Emojis, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull, or } from "drizzle-orm";
|
import { and, eq, isNull, or } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note, Timeline } from "@versia/kit/db";
|
import { Note, Timeline } from "@versia/kit/db";
|
||||||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship, User } from "@versia/kit/db";
|
import { Relationship, User } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Relationship, User } from "@versia/kit/db";
|
import { Relationship, User } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Timeline, User } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -32,7 +32,7 @@ const route = createRoute({
|
||||||
description: "Follow requests",
|
description: "Follow requests",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,9 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import type { Marker as ApiMarker } from "@versia/client/types";
|
import type { Marker as ApiMarker } from "@versia/client/types";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { Markers, RolePermissions } from "@versia/kit/tables";
|
import { Markers, RolePermissions } from "@versia/kit/tables";
|
||||||
import { type SQL, and, eq } from "drizzle-orm";
|
import { type SQL, and, eq } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
markers: z.object({
|
markers: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Media } from "@versia/kit/db";
|
import { Media } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Media } from "@versia/kit/db";
|
import { Media } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Timeline, User } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -33,7 +33,7 @@ const route = createRoute({
|
||||||
description: "Muted users",
|
description: "Muted users",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Notification } from "@versia/kit/db";
|
import { Notification } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Notification } from "@versia/kit/db";
|
import { Notification } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Notification, Timeline } from "@versia/kit/db";
|
import { Notification, Timeline } from "@versia/kit/db";
|
||||||
import { Notifications, RolePermissions } from "@versia/kit/tables";
|
import { Notifications, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, eq, gt, gte, inArray, lt, not, sql } from "drizzle-orm";
|
import { and, eq, gt, gte, inArray, lt, not, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z
|
query: z
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "delete",
|
method: "delete",
|
||||||
|
|
@ -19,7 +19,7 @@ const route = createRoute({
|
||||||
description: "User",
|
description: "User",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "delete",
|
method: "delete",
|
||||||
|
|
@ -19,7 +19,7 @@ const route = createRoute({
|
||||||
description: "User",
|
description: "User",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: User.schema,
|
schema: Account,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Role } from "@versia/kit/db";
|
import { Role } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note } from "@versia/kit/db";
|
import { Note } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note } from "@versia/kit/db";
|
import { Note } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Timeline, User } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
@ -40,7 +40,7 @@ const route = createRoute({
|
||||||
description: "Users who favourited a status",
|
description: "Users who favourited a status",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
|
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Media, Note } from "@versia/kit/db";
|
import { Media, Note } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import ISO6391 from "iso-639-1";
|
import ISO6391 from "iso-639-1";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note, db } from "@versia/kit/db";
|
import { Note, db } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import type { SQL } from "drizzle-orm";
|
import type { SQL } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
|
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note } from "@versia/kit/db";
|
import { Note } from "@versia/kit/db";
|
||||||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, eq } from "drizzle-orm";
|
import { and, eq } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Timeline, User } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { RolePermissions, Users } from "@versia/kit/tables";
|
import { RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
import { Account } from "~/classes/schemas/account";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
param: z.object({
|
param: z.object({
|
||||||
|
|
@ -40,7 +40,7 @@ const route = createRoute({
|
||||||
description: "Users who reblogged a status",
|
description: "Users who reblogged a status",
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.array(User.schema),
|
schema: z.array(Account),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import type { StatusSource as ApiStatusSource } from "@versia/client/types";
|
import type { StatusSource as ApiStatusSource } from "@versia/client/types";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "get",
|
method: "get",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note } from "@versia/kit/db";
|
import { Note } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note } from "@versia/kit/db";
|
import { Note } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
import { apiRoute, auth, withNoteParam } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note } from "@versia/kit/db";
|
import { Note } from "@versia/kit/db";
|
||||||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, eq } from "drizzle-orm";
|
import { and, eq } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, jsonOrForm } from "@/api";
|
import { apiRoute, auth, jsonOrForm } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Media, Note } from "@versia/kit/db";
|
import { Media, Note } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import ISO6391 from "iso-639-1";
|
import ISO6391 from "iso-639-1";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note, Timeline } from "@versia/kit/db";
|
import { Note, Timeline } from "@versia/kit/db";
|
||||||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, eq, gt, gte, inArray, lt, or, sql } from "drizzle-orm";
|
import { and, eq, gt, gte, inArray, lt, or, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note, Timeline } from "@versia/kit/db";
|
import { Note, Timeline } from "@versia/kit/db";
|
||||||
import { Notes, RolePermissions } from "@versia/kit/tables";
|
import { Notes, RolePermissions } from "@versia/kit/tables";
|
||||||
import { and, eq, gt, gte, inArray, lt, or, sql } from "drizzle-orm";
|
import { and, eq, gt, gte, inArray, lt, or, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
query: z.object({
|
query: z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, jsonOrForm } from "@/api";
|
import { apiRoute, auth, jsonOrForm } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { FilterKeywords, Filters, RolePermissions } from "@versia/kit/tables";
|
import { FilterKeywords, Filters, RolePermissions } from "@versia/kit/tables";
|
||||||
import { type SQL, and, eq, inArray } from "drizzle-orm";
|
import { type SQL, and, eq, inArray } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,8 @@
|
||||||
import { apiRoute, auth, jsonOrForm } from "@/api";
|
import { apiRoute, auth, jsonOrForm } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { FilterKeywords, Filters, RolePermissions } from "@versia/kit/tables";
|
import { FilterKeywords, Filters, RolePermissions } from "@versia/kit/tables";
|
||||||
import type { SQL } from "drizzle-orm";
|
import type { SQL } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
json: z.object({
|
json: z.object({
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
import manifest from "~/package.json";
|
import manifest from "~/package.json";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
|
|
||||||
|
|
@ -83,7 +84,7 @@ const route = createRoute({
|
||||||
}),
|
}),
|
||||||
contact: z.object({
|
contact: z.object({
|
||||||
email: z.string().nullable(),
|
email: z.string().nullable(),
|
||||||
account: User.schema.nullable(),
|
account: Account.nullable(),
|
||||||
}),
|
}),
|
||||||
rules: z.array(
|
rules: z.array(
|
||||||
z.object({
|
z.object({
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute, auth } from "@/api";
|
import { apiRoute, auth } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Media } from "@versia/kit/db";
|
import { Media } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { z } from "zod";
|
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { apiRoute, auth, parseUserAddress, userAddressValidator } from "@/api";
|
import { apiRoute, auth, parseUserAddress, userAddressValidator } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { Note, User, db } from "@versia/kit/db";
|
import { Note, User, db } from "@versia/kit/db";
|
||||||
import { Instances, Notes, RolePermissions, Users } from "@versia/kit/tables";
|
import { Instances, Notes, RolePermissions, Users } from "@versia/kit/tables";
|
||||||
import { and, eq, inArray, isNull, sql } from "drizzle-orm";
|
import { and, eq, inArray, isNull, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
|
import { Account } from "~/classes/schemas/account";
|
||||||
import { searchManager } from "~/classes/search/search-manager";
|
import { searchManager } from "~/classes/search/search-manager";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
@ -47,7 +47,7 @@ const route = createRoute({
|
||||||
content: {
|
content: {
|
||||||
"application/json": {
|
"application/json": {
|
||||||
schema: z.object({
|
schema: z.object({
|
||||||
accounts: z.array(User.schema),
|
accounts: z.array(Account),
|
||||||
statuses: z.array(Note.schema),
|
statuses: z.array(Note.schema),
|
||||||
hashtags: z.array(z.string()),
|
hashtags: z.array(z.string()),
|
||||||
}),
|
}),
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import type { Entity } from "@versia/federation/types";
|
import type { Entity } from "@versia/federation/types";
|
||||||
import { z } from "zod";
|
|
||||||
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
|
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
|
||||||
|
|
||||||
const schemas = {
|
const schemas = {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import type { ContentfulStatusCode, StatusCode } from "hono/utils/http-status";
|
import type { ContentfulStatusCode, StatusCode } from "hono/utils/http-status";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { getLogger } from "@logtape/logtape";
|
import { getLogger } from "@logtape/logtape";
|
||||||
import chalk from "chalk";
|
import chalk from "chalk";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
const route = createRoute({
|
const route = createRoute({
|
||||||
method: "post",
|
method: "post",
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import {
|
import {
|
||||||
LikeExtension as LikeSchema,
|
LikeExtension as LikeSchema,
|
||||||
Note as NoteSchema,
|
Note as NoteSchema,
|
||||||
|
|
@ -7,7 +7,6 @@ import {
|
||||||
import { Like, Note, User } from "@versia/kit/db";
|
import { Like, Note, User } from "@versia/kit/db";
|
||||||
import { Likes, Notes } from "@versia/kit/tables";
|
import { Likes, Notes } from "@versia/kit/tables";
|
||||||
import { and, eq, inArray, sql } from "drizzle-orm";
|
import { and, eq, inArray, sql } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema, type KnownEntity } from "~/types/api";
|
import { ErrorSchema, type KnownEntity } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import type { Entity } from "@versia/federation/types";
|
import type { Entity } from "@versia/federation/types";
|
||||||
import { z } from "zod";
|
|
||||||
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
|
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,7 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { User as UserSchema } from "@versia/federation/schemas";
|
import { User as UserSchema } from "@versia/federation/schemas";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { apiRoute } from "@/api";
|
import { apiRoute } from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import {
|
import {
|
||||||
Collection as CollectionSchema,
|
Collection as CollectionSchema,
|
||||||
Note as NoteSchema,
|
Note as NoteSchema,
|
||||||
|
|
@ -7,7 +7,6 @@ import {
|
||||||
import { Note, User, db } from "@versia/kit/db";
|
import { Note, User, db } from "@versia/kit/db";
|
||||||
import { Notes } from "@versia/kit/tables";
|
import { Notes } from "@versia/kit/tables";
|
||||||
import { and, eq, inArray } from "drizzle-orm";
|
import { and, eq, inArray } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,13 @@ import {
|
||||||
parseUserAddress,
|
parseUserAddress,
|
||||||
webfingerMention,
|
webfingerMention,
|
||||||
} from "@/api";
|
} from "@/api";
|
||||||
import { createRoute } from "@hono/zod-openapi";
|
import { createRoute, z } from "@hono/zod-openapi";
|
||||||
import { getLogger } from "@logtape/logtape";
|
import { getLogger } from "@logtape/logtape";
|
||||||
import type { ResponseError } from "@versia/federation";
|
import type { ResponseError } from "@versia/federation";
|
||||||
import { WebFinger } from "@versia/federation/schemas";
|
import { WebFinger } from "@versia/federation/schemas";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type { Application as APIApplication } from "@versia/client/types";
|
import type { Application as APIApplication } from "@versia/client/types";
|
||||||
import { Token, db } from "@versia/kit/db";
|
import { Token, db } from "@versia/kit/db";
|
||||||
import { Applications } from "@versia/kit/tables";
|
import { Applications } from "@versia/kit/tables";
|
||||||
|
|
@ -9,7 +10,6 @@ import {
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
|
|
||||||
type ApplicationType = InferSelectModel<typeof Applications>;
|
type ApplicationType = InferSelectModel<typeof Applications>;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import { emojiValidatorWithColons, emojiValidatorWithIdentifiers } from "@/api";
|
import { emojiValidatorWithColons, emojiValidatorWithIdentifiers } from "@/api";
|
||||||
import { proxyUrl } from "@/response";
|
import { proxyUrl } from "@/response";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type { Emoji as APIEmoji } from "@versia/client/types";
|
import type { Emoji as APIEmoji } from "@versia/client/types";
|
||||||
import type { CustomEmojiExtension } from "@versia/federation/types";
|
import type { CustomEmojiExtension } from "@versia/federation/types";
|
||||||
import { type Instance, Media, db } from "@versia/kit/db";
|
import { type Instance, Media, db } from "@versia/kit/db";
|
||||||
|
|
@ -14,7 +15,6 @@ import {
|
||||||
inArray,
|
inArray,
|
||||||
isNull,
|
isNull,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
|
|
||||||
type EmojiType = InferSelectModel<typeof Emojis> & {
|
type EmojiType = InferSelectModel<typeof Emojis> & {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import { RolePermission } from "@versia/client/types";
|
import { RolePermission } from "@versia/client/types";
|
||||||
import type { Delete, LikeExtension } from "@versia/federation/types";
|
import type { Delete, LikeExtension } from "@versia/federation/types";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
|
|
@ -16,7 +17,6 @@ import {
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
import { Note } from "./note.ts";
|
import { Note } from "./note.ts";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { join } from "node:path";
|
import { join } from "node:path";
|
||||||
import { mimeLookup } from "@/content_types.ts";
|
import { mimeLookup } from "@/content_types.ts";
|
||||||
import { proxyUrl } from "@/response";
|
import { proxyUrl } from "@/response";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type { Attachment as ApiAttachment } from "@versia/client/types";
|
import type { Attachment as ApiAttachment } from "@versia/client/types";
|
||||||
import type { ContentFormat } from "@versia/federation/types";
|
import type { ContentFormat } from "@versia/federation/types";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
|
|
@ -15,7 +16,6 @@ import {
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import sharp from "sharp";
|
import sharp from "sharp";
|
||||||
import { z } from "zod";
|
|
||||||
import { MediaBackendType } from "~/packages/config-manager/config.type";
|
import { MediaBackendType } from "~/packages/config-manager/config.type";
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { ApiError } from "../errors/api-error.ts";
|
import { ApiError } from "../errors/api-error.ts";
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import { localObjectUri } from "@/constants";
|
||||||
import { mergeAndDeduplicate } from "@/lib.ts";
|
import { mergeAndDeduplicate } from "@/lib.ts";
|
||||||
import { sanitizedHtmlStrip } from "@/sanitization";
|
import { sanitizedHtmlStrip } from "@/sanitization";
|
||||||
import { sentry } from "@/sentry";
|
import { sentry } from "@/sentry";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import { getLogger } from "@logtape/logtape";
|
import { getLogger } from "@logtape/logtape";
|
||||||
import type {
|
import type {
|
||||||
Attachment as ApiAttachment,
|
Attachment as ApiAttachment,
|
||||||
|
|
@ -35,7 +36,6 @@ import {
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { htmlToText } from "html-to-text";
|
import { htmlToText } from "html-to-text";
|
||||||
import { createRegExp, exactly, global } from "magic-regexp";
|
import { createRegExp, exactly, global } from "magic-regexp";
|
||||||
import { z } from "zod";
|
|
||||||
import {
|
import {
|
||||||
contentToHtml,
|
contentToHtml,
|
||||||
findManyNotes,
|
findManyNotes,
|
||||||
|
|
@ -43,6 +43,7 @@ import {
|
||||||
} from "~/classes/functions/status";
|
} from "~/classes/functions/status";
|
||||||
import { config } from "~/packages/config-manager";
|
import { config } from "~/packages/config-manager";
|
||||||
import { DeliveryJobType, deliveryQueue } from "../queues/delivery.ts";
|
import { DeliveryJobType, deliveryQueue } from "../queues/delivery.ts";
|
||||||
|
import { Account } from "../schemas/account.ts";
|
||||||
import { Application } from "./application.ts";
|
import { Application } from "./application.ts";
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
import { Emoji } from "./emoji.ts";
|
import { Emoji } from "./emoji.ts";
|
||||||
|
|
@ -84,7 +85,7 @@ export class Note extends BaseInterface<typeof Notes, NoteTypeWithRelations> {
|
||||||
id: z.string().uuid(),
|
id: z.string().uuid(),
|
||||||
uri: z.string().url(),
|
uri: z.string().url(),
|
||||||
url: z.string().url(),
|
url: z.string().url(),
|
||||||
account: z.lazy(() => User.schema),
|
account: Account,
|
||||||
in_reply_to_id: z.string().uuid().nullable(),
|
in_reply_to_id: z.string().uuid().nullable(),
|
||||||
in_reply_to_account_id: z.string().uuid().nullable(),
|
in_reply_to_account_id: z.string().uuid().nullable(),
|
||||||
reblog: z.lazy(() => Note.schema).nullable(),
|
reblog: z.lazy(() => Note.schema).nullable(),
|
||||||
|
|
@ -162,7 +163,7 @@ export class Note extends BaseInterface<typeof Notes, NoteTypeWithRelations> {
|
||||||
name: z.string(),
|
name: z.string(),
|
||||||
url: z.string().url().optional(),
|
url: z.string().url().optional(),
|
||||||
static_url: z.string().url().optional(),
|
static_url: z.string().url().optional(),
|
||||||
accounts: z.array(z.lazy(() => User.schema)).optional(),
|
accounts: z.array(Account).optional(),
|
||||||
account_ids: z.array(z.string().uuid()).optional(),
|
account_ids: z.array(z.string().uuid()).optional(),
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type { Notification as APINotification } from "@versia/client/types";
|
import type { Notification as APINotification } from "@versia/client/types";
|
||||||
import { Note, User, db } from "@versia/kit/db";
|
import { Note, User, db } from "@versia/kit/db";
|
||||||
import { Notifications } from "@versia/kit/tables";
|
import { Notifications } from "@versia/kit/tables";
|
||||||
|
|
@ -9,12 +10,12 @@ import {
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import {
|
import {
|
||||||
transformOutputToUserWithRelations,
|
transformOutputToUserWithRelations,
|
||||||
userExtrasTemplate,
|
userExtrasTemplate,
|
||||||
userRelations,
|
userRelations,
|
||||||
} from "../functions/user.ts";
|
} from "../functions/user.ts";
|
||||||
|
import { Account } from "../schemas/account.ts";
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
|
|
||||||
export type NotificationType = InferSelectModel<typeof Notifications> & {
|
export type NotificationType = InferSelectModel<typeof Notifications> & {
|
||||||
|
|
@ -27,7 +28,7 @@ export class Notification extends BaseInterface<
|
||||||
NotificationType
|
NotificationType
|
||||||
> {
|
> {
|
||||||
public static schema: z.ZodType<APINotification> = z.object({
|
public static schema: z.ZodType<APINotification> = z.object({
|
||||||
account: z.lazy(() => User.schema).nullable(),
|
account: Account.nullable(),
|
||||||
created_at: z.string(),
|
created_at: z.string(),
|
||||||
id: z.string().uuid(),
|
id: z.string().uuid(),
|
||||||
status: z.lazy(() => Note.schema).optional(),
|
status: z.lazy(() => Note.schema).optional(),
|
||||||
|
|
@ -54,7 +55,7 @@ export class Notification extends BaseInterface<
|
||||||
"group_favourite",
|
"group_favourite",
|
||||||
"user_approved",
|
"user_approved",
|
||||||
]),
|
]),
|
||||||
target: z.lazy(() => User.schema).optional(),
|
target: Account.optional(),
|
||||||
});
|
});
|
||||||
|
|
||||||
public async reload(): Promise<void> {
|
public async reload(): Promise<void> {
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type { Emoji as APIEmoji } from "@versia/client/types";
|
import type { Emoji as APIEmoji } from "@versia/client/types";
|
||||||
import type { ReactionExtension } from "@versia/federation/types";
|
import type { ReactionExtension } from "@versia/federation/types";
|
||||||
import { Emoji, Instance, Note, User, db } from "@versia/kit/db";
|
import { Emoji, Instance, Note, User, db } from "@versia/kit/db";
|
||||||
|
|
@ -10,7 +11,6 @@ import {
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type { Relationship as APIRelationship } from "@versia/client/types";
|
import type { Relationship as APIRelationship } from "@versia/client/types";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { Relationships } from "@versia/kit/tables";
|
import { Relationships } from "@versia/kit/tables";
|
||||||
|
|
@ -10,7 +11,6 @@ import {
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
import type { User } from "./user.ts";
|
import type { User } from "./user.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { proxyUrl } from "@/response";
|
import { proxyUrl } from "@/response";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import {
|
import {
|
||||||
type VersiaRole as APIRole,
|
type VersiaRole as APIRole,
|
||||||
RolePermission,
|
RolePermission,
|
||||||
|
|
@ -14,7 +15,6 @@ import {
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { config } from "~/packages/config-manager/index.ts";
|
import { config } from "~/packages/config-manager/index.ts";
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type { Token as ApiToken } from "@versia/client/types";
|
import type { Token as ApiToken } from "@versia/client/types";
|
||||||
import { type Application, User, db } from "@versia/kit/db";
|
import { type Application, User, db } from "@versia/kit/db";
|
||||||
import { Tokens } from "@versia/kit/tables";
|
import { Tokens } from "@versia/kit/tables";
|
||||||
|
|
@ -9,7 +10,6 @@ import {
|
||||||
eq,
|
eq,
|
||||||
inArray,
|
inArray,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { z } from "zod";
|
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
|
|
||||||
type TokenType = InferSelectModel<typeof Tokens> & {
|
type TokenType = InferSelectModel<typeof Tokens> & {
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,7 @@ import { randomString } from "@/math";
|
||||||
import { proxyUrl } from "@/response";
|
import { proxyUrl } from "@/response";
|
||||||
import { sentry } from "@/sentry";
|
import { sentry } from "@/sentry";
|
||||||
import { getLogger } from "@logtape/logtape";
|
import { getLogger } from "@logtape/logtape";
|
||||||
import type {
|
import type { Mention as ApiMention } from "@versia/client/types";
|
||||||
Account as ApiAccount,
|
|
||||||
Mention as ApiMention,
|
|
||||||
} from "@versia/client/types";
|
|
||||||
import {
|
import {
|
||||||
EntityValidator,
|
EntityValidator,
|
||||||
FederationRequester,
|
FederationRequester,
|
||||||
|
|
@ -48,13 +45,14 @@ import {
|
||||||
sql,
|
sql,
|
||||||
} from "drizzle-orm";
|
} from "drizzle-orm";
|
||||||
import { htmlToText } from "html-to-text";
|
import { htmlToText } from "html-to-text";
|
||||||
import { z } from "zod";
|
import type { z } from "zod";
|
||||||
import { findManyUsers } from "~/classes/functions/user";
|
import { findManyUsers } from "~/classes/functions/user";
|
||||||
import { searchManager } from "~/classes/search/search-manager";
|
import { searchManager } from "~/classes/search/search-manager";
|
||||||
import { type Config, config } from "~/packages/config-manager";
|
import { type Config, config } from "~/packages/config-manager";
|
||||||
import type { KnownEntity } from "~/types/api.ts";
|
import type { KnownEntity } from "~/types/api.ts";
|
||||||
import { DeliveryJobType, deliveryQueue } from "../queues/delivery.ts";
|
import { DeliveryJobType, deliveryQueue } from "../queues/delivery.ts";
|
||||||
import { PushJobType, pushQueue } from "../queues/push.ts";
|
import { PushJobType, pushQueue } from "../queues/push.ts";
|
||||||
|
import type { Account } from "../schemas/account.ts";
|
||||||
import { BaseInterface } from "./base.ts";
|
import { BaseInterface } from "./base.ts";
|
||||||
import { Emoji } from "./emoji.ts";
|
import { Emoji } from "./emoji.ts";
|
||||||
import { Instance } from "./instance.ts";
|
import { Instance } from "./instance.ts";
|
||||||
|
|
@ -81,74 +79,6 @@ type UserWithRelations = UserWithInstance & {
|
||||||
* Gives helpers to fetch users from database in a nice format
|
* Gives helpers to fetch users from database in a nice format
|
||||||
*/
|
*/
|
||||||
export class User extends BaseInterface<typeof Users, UserWithRelations> {
|
export class User extends BaseInterface<typeof Users, UserWithRelations> {
|
||||||
// @ts-expect-error Roles are weird
|
|
||||||
public static schema: z.ZodType<ApiAccount> = z.object({
|
|
||||||
id: z.string(),
|
|
||||||
username: z.string(),
|
|
||||||
acct: z.string(),
|
|
||||||
display_name: z.string(),
|
|
||||||
locked: z.boolean(),
|
|
||||||
discoverable: z.boolean().optional(),
|
|
||||||
group: z.boolean().nullable(),
|
|
||||||
noindex: z.boolean().nullable(),
|
|
||||||
suspended: z.boolean().nullable(),
|
|
||||||
limited: z.boolean().nullable(),
|
|
||||||
created_at: z.string(),
|
|
||||||
followers_count: z.number(),
|
|
||||||
following_count: z.number(),
|
|
||||||
statuses_count: z.number(),
|
|
||||||
note: z.string(),
|
|
||||||
uri: z.string(),
|
|
||||||
url: z.string(),
|
|
||||||
avatar: z.string(),
|
|
||||||
avatar_static: z.string(),
|
|
||||||
header: z.string(),
|
|
||||||
header_static: z.string(),
|
|
||||||
emojis: z.array(Emoji.schema),
|
|
||||||
fields: z.array(
|
|
||||||
z.object({
|
|
||||||
name: z.string(),
|
|
||||||
value: z.string(),
|
|
||||||
verified: z.boolean().optional(),
|
|
||||||
verified_at: z.string().nullable().optional(),
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
// FIXME: Use a proper type
|
|
||||||
moved: z.lazy(() => User.schema).nullable(),
|
|
||||||
bot: z.boolean().nullable(),
|
|
||||||
source: z
|
|
||||||
.object({
|
|
||||||
privacy: z.string().nullable(),
|
|
||||||
sensitive: z.boolean().nullable(),
|
|
||||||
language: z.string().nullable(),
|
|
||||||
note: z.string(),
|
|
||||||
fields: z.array(
|
|
||||||
z.object({
|
|
||||||
name: z.string(),
|
|
||||||
value: z.string(),
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
avatar: z
|
|
||||||
.object({
|
|
||||||
content_type: z.string(),
|
|
||||||
})
|
|
||||||
.optional(),
|
|
||||||
header: z
|
|
||||||
.object({
|
|
||||||
content_type: z.string(),
|
|
||||||
})
|
|
||||||
.optional(),
|
|
||||||
})
|
|
||||||
.optional(),
|
|
||||||
role: z
|
|
||||||
.object({
|
|
||||||
name: z.string(),
|
|
||||||
})
|
|
||||||
.optional(),
|
|
||||||
roles: z.array(Role.schema),
|
|
||||||
mute_expires_at: z.string().optional(),
|
|
||||||
});
|
|
||||||
|
|
||||||
public static $type: UserWithRelations;
|
public static $type: UserWithRelations;
|
||||||
|
|
||||||
public avatar: Media | null;
|
public avatar: Media | null;
|
||||||
|
|
@ -1175,7 +1105,7 @@ export class User extends BaseInterface<typeof Users, UserWithRelations> {
|
||||||
return { ok: true };
|
return { ok: true };
|
||||||
}
|
}
|
||||||
|
|
||||||
public toApi(isOwnAccount = false): ApiAccount {
|
public toApi(isOwnAccount = false): z.infer<typeof Account> {
|
||||||
const user = this.data;
|
const user = this.data;
|
||||||
return {
|
return {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
|
|
@ -1199,6 +1129,7 @@ export class User extends BaseInterface<typeof Users, UserWithRelations> {
|
||||||
fields: user.fields.map((field) => ({
|
fields: user.fields.map((field) => ({
|
||||||
name: htmlToText(getBestContentType(field.key).content),
|
name: htmlToText(getBestContentType(field.key).content),
|
||||||
value: getBestContentType(field.value).content,
|
value: getBestContentType(field.value).content,
|
||||||
|
verified_at: null,
|
||||||
})),
|
})),
|
||||||
bot: user.isBot,
|
bot: user.isBot,
|
||||||
source: isOwnAccount ? user.source : undefined,
|
source: isOwnAccount ? user.source : undefined,
|
||||||
|
|
@ -1213,8 +1144,8 @@ export class User extends BaseInterface<typeof Users, UserWithRelations> {
|
||||||
moved: null,
|
moved: null,
|
||||||
noindex: false,
|
noindex: false,
|
||||||
suspended: false,
|
suspended: false,
|
||||||
discoverable: undefined,
|
discoverable: null,
|
||||||
mute_expires_at: undefined,
|
mute_expires_at: null,
|
||||||
roles: user.roles
|
roles: user.roles
|
||||||
.map((role) => new Role(role))
|
.map((role) => new Role(role))
|
||||||
.concat(
|
.concat(
|
||||||
|
|
|
||||||
403
classes/schemas/account.ts
Normal file
403
classes/schemas/account.ts
Normal file
|
|
@ -0,0 +1,403 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
|
import type { Account as ApiAccount } from "@versia/client/types";
|
||||||
|
import ISO6391 from "iso-639-1";
|
||||||
|
import { config } from "~/packages/config-manager";
|
||||||
|
import { zBoolean } from "~/packages/config-manager/config.type";
|
||||||
|
import { Emoji } from "../database/emoji.ts";
|
||||||
|
import { Role } from "../database/role.ts";
|
||||||
|
|
||||||
|
export const Field = z.object({
|
||||||
|
name: z
|
||||||
|
.string()
|
||||||
|
.trim()
|
||||||
|
.min(1)
|
||||||
|
.max(config.validation.max_field_name_size)
|
||||||
|
.openapi({
|
||||||
|
description: "The key of a given field’s key-value pair.",
|
||||||
|
example: "Freak level",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#name",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
value: z
|
||||||
|
.string()
|
||||||
|
.trim()
|
||||||
|
.min(1)
|
||||||
|
.max(config.validation.max_field_value_size)
|
||||||
|
.openapi({
|
||||||
|
description: "The value associated with the name key.",
|
||||||
|
example: "<p>High</p>",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#value",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
verified_at: z
|
||||||
|
.string()
|
||||||
|
.datetime()
|
||||||
|
.nullable()
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"Timestamp of when the server verified a URL value for a rel=“me” link.",
|
||||||
|
example: null,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#verified_at",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
||||||
|
export const Source = z
|
||||||
|
.object({
|
||||||
|
privacy: z.enum(["public", "unlisted", "private", "direct"]).openapi({
|
||||||
|
description:
|
||||||
|
"The default post privacy to be used for new statuses.",
|
||||||
|
example: "unlisted",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#source-privacy",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
sensitive: zBoolean.openapi({
|
||||||
|
description:
|
||||||
|
"Whether new statuses should be marked sensitive by default.",
|
||||||
|
example: false,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#source-sensitive",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
language: z
|
||||||
|
.enum(ISO6391.getAllCodes() as [string, ...string[]])
|
||||||
|
.openapi({
|
||||||
|
description: "The default posting language for new statuses.",
|
||||||
|
example: "en",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#source-language",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
follow_requests_count: z
|
||||||
|
.number()
|
||||||
|
.int()
|
||||||
|
.optional()
|
||||||
|
.openapi({
|
||||||
|
description: "The number of pending follow requests.",
|
||||||
|
example: 3,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#follow_requests_count",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
note: z
|
||||||
|
.string()
|
||||||
|
.trim()
|
||||||
|
.min(0)
|
||||||
|
.max(config.validation.max_bio_size)
|
||||||
|
.refine(
|
||||||
|
(s) => !config.filters.bio.some((filter) => s.match(filter)),
|
||||||
|
"Bio contains blocked words",
|
||||||
|
)
|
||||||
|
.openapi({
|
||||||
|
description: "Profile bio, in plain-text instead of in HTML.",
|
||||||
|
example: "ermmm what the meow meow",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#source-note",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
fields: z.array(Field).max(config.validation.max_field_count).openapi({
|
||||||
|
description: "Metadata about the account.",
|
||||||
|
}),
|
||||||
|
})
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"An extra attribute that contains source values to be used with API methods that verify credentials and update credentials.",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#source",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export const Account = z.object({
|
||||||
|
id: z
|
||||||
|
.string()
|
||||||
|
.uuid()
|
||||||
|
.openapi({
|
||||||
|
description: "The account id.",
|
||||||
|
example: "9e84842b-4db6-4a9b-969d-46ab408278da",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#id",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
username: z
|
||||||
|
.string()
|
||||||
|
.min(3)
|
||||||
|
.trim()
|
||||||
|
.max(config.validation.max_username_size)
|
||||||
|
.toLowerCase()
|
||||||
|
.regex(
|
||||||
|
/^[a-z0-9_-]+$/,
|
||||||
|
"Username can only contain letters, numbers, underscores and hyphens",
|
||||||
|
)
|
||||||
|
.refine(
|
||||||
|
(s) => !config.filters.username.some((filter) => s.match(filter)),
|
||||||
|
"Username contains blocked words",
|
||||||
|
)
|
||||||
|
.openapi({
|
||||||
|
description: "The username of the account, not including domain.",
|
||||||
|
example: "lexi",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#username",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
acct: z.string().openapi({
|
||||||
|
description:
|
||||||
|
"The Webfinger account URI. Equal to username for local users, or username@domain for remote users.",
|
||||||
|
example: "lexi@beta.versia.social",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#acct",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
url: z
|
||||||
|
.string()
|
||||||
|
.url()
|
||||||
|
.openapi({
|
||||||
|
description: "The location of the user’s profile page.",
|
||||||
|
example: "https://beta.versia.social/@lexi",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#url",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
display_name: z
|
||||||
|
.string()
|
||||||
|
.min(3)
|
||||||
|
.trim()
|
||||||
|
.max(config.validation.max_displayname_size)
|
||||||
|
.refine(
|
||||||
|
(s) =>
|
||||||
|
!config.filters.displayname.some((filter) => s.match(filter)),
|
||||||
|
"Display name contains blocked words",
|
||||||
|
)
|
||||||
|
.openapi({
|
||||||
|
description: "The profile’s display name.",
|
||||||
|
example: "Lexi :flower:",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#display_name",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
note: z
|
||||||
|
.string()
|
||||||
|
.min(0)
|
||||||
|
.max(config.validation.max_bio_size)
|
||||||
|
.trim()
|
||||||
|
.refine(
|
||||||
|
(s) => !config.filters.bio.some((filter) => s.match(filter)),
|
||||||
|
"Bio contains blocked words",
|
||||||
|
)
|
||||||
|
.openapi({
|
||||||
|
description: "The profile’s bio or description.",
|
||||||
|
example: "<p>ermmm what the meow meow</p>",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#note",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
avatar: z
|
||||||
|
.string()
|
||||||
|
.url()
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"An image icon that is shown next to statuses and in the profile.",
|
||||||
|
example:
|
||||||
|
"https://cdn.versia.social/avatars/cff9aea0-0000-43fe-8b5e-e7c7ea69a488/lexi.webp",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#avatar",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
avatar_static: z
|
||||||
|
.string()
|
||||||
|
.url()
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"A static version of the avatar. Equal to avatar if its value is a static image; different if avatar is an animated GIF.",
|
||||||
|
example:
|
||||||
|
"https://cdn.versia.social/avatars/cff9aea0-0000-43fe-8b5e-e7c7ea69a488/lexi.webp",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#avatar_static",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
header: z
|
||||||
|
.string()
|
||||||
|
.url()
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"An image banner that is shown above the profile and in profile cards.",
|
||||||
|
example:
|
||||||
|
"https://cdn.versia.social/headers/a049f8e3-878c-4faa-ae4c-a6bcceddbd9d/femboy_2.webp",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#header",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
header_static: z
|
||||||
|
.string()
|
||||||
|
.url()
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"A static version of the header. Equal to header if its value is a static image; different if header is an animated GIF.",
|
||||||
|
example:
|
||||||
|
"https://cdn.versia.social/headers/a049f8e3-878c-4faa-ae4c-a6bcceddbd9d/femboy_2.webp",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#header_static",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
locked: zBoolean.openapi({
|
||||||
|
description: "Whether the account manually approves follow requests.",
|
||||||
|
example: false,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#locked",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
fields: z
|
||||||
|
.array(Field)
|
||||||
|
.max(config.validation.max_field_count)
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"Additional metadata attached to a profile as name-value pairs.",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#fields",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
emojis: z.array(Emoji.schema).openapi({
|
||||||
|
description:
|
||||||
|
"Custom emoji entities to be used when rendering the profile.",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#emojis",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
bot: zBoolean.openapi({
|
||||||
|
description:
|
||||||
|
"Indicates that the account may perform automated actions, may not be monitored, or identifies as a robot.",
|
||||||
|
example: false,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#bot",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
group: z.literal(false).openapi({
|
||||||
|
description: "Indicates that the account represents a Group actor.",
|
||||||
|
example: false,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#group",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
discoverable: zBoolean.nullable().openapi({
|
||||||
|
description:
|
||||||
|
"Whether the account has opted into discovery features such as the profile directory.",
|
||||||
|
example: true,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#discoverable",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
noindex: zBoolean
|
||||||
|
.nullable()
|
||||||
|
.optional()
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"Whether the local user has opted out of being indexed by search engines.",
|
||||||
|
example: false,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#noindex",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
// FIXME: Use a proper type
|
||||||
|
moved: z
|
||||||
|
.lazy((): z.ZodType<ApiAccount> => Account as z.ZodType<ApiAccount>)
|
||||||
|
.nullable()
|
||||||
|
.optional()
|
||||||
|
.openapi({
|
||||||
|
description:
|
||||||
|
"Indicates that the profile is currently inactive and that its user has moved to a new account.",
|
||||||
|
example: null,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#moved",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
suspended: zBoolean.optional().openapi({
|
||||||
|
description:
|
||||||
|
"An extra attribute returned only when an account is suspended.",
|
||||||
|
example: false,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#suspended",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
limited: zBoolean.optional().openapi({
|
||||||
|
description:
|
||||||
|
"An extra attribute returned only when an account is silenced. If true, indicates that the account should be hidden behind a warning screen.",
|
||||||
|
example: false,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#limited",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
created_at: z
|
||||||
|
.string()
|
||||||
|
.datetime()
|
||||||
|
.openapi({
|
||||||
|
description: "When the account was created.",
|
||||||
|
example: "2024-10-15T22:00:00.000Z",
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#created_at",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
// TODO
|
||||||
|
last_status_at: z
|
||||||
|
.literal(null)
|
||||||
|
.openapi({
|
||||||
|
description: "When the most recent status was posted.",
|
||||||
|
example: null,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#last_status_at",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.nullable(),
|
||||||
|
statuses_count: z
|
||||||
|
.number()
|
||||||
|
.min(0)
|
||||||
|
.int()
|
||||||
|
.openapi({
|
||||||
|
description: "How many statuses are attached to this account.",
|
||||||
|
example: 42,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#statuses_count",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
followers_count: z
|
||||||
|
.number()
|
||||||
|
.min(0)
|
||||||
|
.int()
|
||||||
|
.openapi({
|
||||||
|
description: "The reported followers of this profile.",
|
||||||
|
example: 6,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#followers_count",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
following_count: z
|
||||||
|
.number()
|
||||||
|
.min(0)
|
||||||
|
.int()
|
||||||
|
.openapi({
|
||||||
|
description: "The reported follows of this profile.",
|
||||||
|
example: 23,
|
||||||
|
externalDocs: {
|
||||||
|
url: "https://docs.joinmastodon.org/entities/Account/#following_count",
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
uri: z.string().url().openapi({
|
||||||
|
description:
|
||||||
|
"The location of the user's Versia profile page, as opposed to the local representation.",
|
||||||
|
example:
|
||||||
|
"https://beta.versia.social/users/9e84842b-4db6-4a9b-969d-46ab408278da",
|
||||||
|
}),
|
||||||
|
source: Source.optional(),
|
||||||
|
role: z
|
||||||
|
.object({
|
||||||
|
name: z.string(),
|
||||||
|
})
|
||||||
|
.optional(),
|
||||||
|
roles: z.array(Role.schema),
|
||||||
|
mute_expires_at: z.string().datetime().nullable().openapi({
|
||||||
|
description: "When a timed mute will expire, if applicable.",
|
||||||
|
example: "2025-03-01T14:00:00.000Z",
|
||||||
|
}),
|
||||||
|
});
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import {
|
import {
|
||||||
ADMIN_ROLES,
|
ADMIN_ROLES,
|
||||||
DEFAULT_ROLES,
|
DEFAULT_ROLES,
|
||||||
RolePermissions,
|
RolePermissions,
|
||||||
} from "@versia/kit/tables";
|
} from "@versia/kit/tables";
|
||||||
import { types as mimeTypes } from "mime-types";
|
import { types as mimeTypes } from "mime-types";
|
||||||
import { z } from "zod";
|
|
||||||
|
|
||||||
export enum MediaBackendType {
|
export enum MediaBackendType {
|
||||||
Local = "local",
|
Local = "local",
|
||||||
|
|
@ -26,6 +26,11 @@ const zUrl = z
|
||||||
.transform((arg) => arg.replace(/\/$/, ""))
|
.transform((arg) => arg.replace(/\/$/, ""))
|
||||||
.transform((arg) => new URL(arg));
|
.transform((arg) => new URL(arg));
|
||||||
|
|
||||||
|
export const zBoolean = z
|
||||||
|
.string()
|
||||||
|
.transform((v) => ["true", "1", "on"].includes(v.toLowerCase()))
|
||||||
|
.or(z.boolean());
|
||||||
|
|
||||||
export const configValidator = z
|
export const configValidator = z
|
||||||
.object({
|
.object({
|
||||||
database: z
|
database: z
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { z } from "zod";
|
import { z } from "@hono/zod-openapi";
|
||||||
import { Hooks } from "./hooks.ts";
|
import { Hooks } from "./hooks.ts";
|
||||||
import { Plugin } from "./plugin.ts";
|
import { Plugin } from "./plugin.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
import { z } from "zod";
|
import { z } from "@hono/zod-openapi";
|
||||||
|
|
||||||
export const manifestSchema = z.object({
|
export const manifestSchema = z.object({
|
||||||
// biome-ignore lint/style/useNamingConvention: <explanation>
|
// biome-ignore lint/style/useNamingConvention: <explanation>
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import { Hooks, Plugin } from "@versia/kit";
|
import { Hooks, Plugin } from "@versia/kit";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import chalk from "chalk";
|
import chalk from "chalk";
|
||||||
import { getCookie } from "hono/cookie";
|
import { getCookie } from "hono/cookie";
|
||||||
import { jwtVerify } from "jose";
|
import { jwtVerify } from "jose";
|
||||||
import { JOSEError, JWTExpired } from "jose/errors";
|
import { JOSEError, JWTExpired } from "jose/errors";
|
||||||
import { z } from "zod";
|
|
||||||
import { ApiError } from "~/classes/errors/api-error.ts";
|
import { ApiError } from "~/classes/errors/api-error.ts";
|
||||||
import { RolePermissions } from "~/drizzle/schema.ts";
|
import { RolePermissions } from "~/drizzle/schema.ts";
|
||||||
import authorizeRoute from "./routes/authorize.ts";
|
import authorizeRoute from "./routes/authorize.ts";
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { auth, jsonOrForm } from "@/api";
|
import { auth, jsonOrForm } from "@/api";
|
||||||
import { randomString } from "@/math";
|
import { randomString } from "@/math";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import { Application, Token, User } from "@versia/kit/db";
|
import { Application, Token, User } from "@versia/kit/db";
|
||||||
import { RolePermissions } from "@versia/kit/tables";
|
import { RolePermissions } from "@versia/kit/tables";
|
||||||
import { type JWTPayload, SignJWT, jwtVerify } from "jose";
|
import { type JWTPayload, SignJWT, jwtVerify } from "jose";
|
||||||
import { JOSEError } from "jose/errors";
|
import { JOSEError } from "jose/errors";
|
||||||
import { z } from "zod";
|
|
||||||
import { errorRedirect, errors } from "../errors.ts";
|
import { errorRedirect, errors } from "../errors.ts";
|
||||||
import type { PluginType } from "../index.ts";
|
import type { PluginType } from "../index.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import { auth } from "@/api";
|
import { auth } from "@/api";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import { Application, db } from "@versia/kit/db";
|
import { Application, db } from "@versia/kit/db";
|
||||||
import { OpenIdLoginFlows, RolePermissions } from "@versia/kit/tables";
|
import { OpenIdLoginFlows, RolePermissions } from "@versia/kit/tables";
|
||||||
import {
|
import {
|
||||||
calculatePKCECodeChallenge,
|
calculatePKCECodeChallenge,
|
||||||
generateRandomCodeVerifier,
|
generateRandomCodeVerifier,
|
||||||
} from "oauth4webapi";
|
} from "oauth4webapi";
|
||||||
import { z } from "zod";
|
|
||||||
import { ErrorSchema } from "~/types/api";
|
import { ErrorSchema } from "~/types/api";
|
||||||
import type { PluginType } from "../../index.ts";
|
import type { PluginType } from "../../index.ts";
|
||||||
import { oauthDiscoveryRequest, oauthRedirectUri } from "../../utils.ts";
|
import { oauthDiscoveryRequest, oauthRedirectUri } from "../../utils.ts";
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import type { OpenAPIHono } from "@hono/zod-openapi";
|
import type { OpenAPIHono } from "@hono/zod-openapi";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import type {
|
import type {
|
||||||
Delete,
|
Delete,
|
||||||
Follow,
|
Follow,
|
||||||
|
|
@ -12,7 +13,6 @@ import type {
|
||||||
} from "@versia/federation/types";
|
} from "@versia/federation/types";
|
||||||
import type { SocketAddress } from "bun";
|
import type { SocketAddress } from "bun";
|
||||||
import type { RouterRoute } from "hono/types";
|
import type { RouterRoute } from "hono/types";
|
||||||
import { z } from "zod";
|
|
||||||
import type { AuthData } from "~/classes/functions/user";
|
import type { AuthData } from "~/classes/functions/user";
|
||||||
import type { Config } from "~/packages/config-manager";
|
import type { Config } from "~/packages/config-manager";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import type { OpenAPIHono } from "@hono/zod-openapi";
|
import type { OpenAPIHono } from "@hono/zod-openapi";
|
||||||
|
import { z } from "@hono/zod-openapi";
|
||||||
import { zValidator } from "@hono/zod-validator";
|
import { zValidator } from "@hono/zod-validator";
|
||||||
import { getLogger } from "@logtape/logtape";
|
import { getLogger } from "@logtape/logtape";
|
||||||
import { Application, Note, Token, User, db } from "@versia/kit/db";
|
import { Application, Note, Token, User, db } from "@versia/kit/db";
|
||||||
|
|
@ -24,7 +25,6 @@ import {
|
||||||
oneOrMore,
|
oneOrMore,
|
||||||
} from "magic-regexp";
|
} from "magic-regexp";
|
||||||
import { type ParsedQs, parse } from "qs";
|
import { type ParsedQs, parse } from "qs";
|
||||||
import { z } from "zod";
|
|
||||||
import { fromZodError } from "zod-validation-error";
|
import { fromZodError } from "zod-validation-error";
|
||||||
import { ApiError } from "~/classes/errors/api-error";
|
import { ApiError } from "~/classes/errors/api-error";
|
||||||
import type { AuthData } from "~/classes/functions/user";
|
import type { AuthData } from "~/classes/functions/user";
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue