mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 08:28:19 +01:00
refactor: 🚚 Move more utilities into packages
This commit is contained in:
parent
5cae547f8d
commit
3798e170d0
34
bun.lock
34
bun.lock
|
|
@ -67,6 +67,7 @@
|
||||||
"zod-validation-error": "catalog:",
|
"zod-validation-error": "catalog:",
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@biomejs/biome": "catalog:",
|
||||||
"@types/bun": "catalog:",
|
"@types/bun": "catalog:",
|
||||||
"@types/html-to-text": "catalog:",
|
"@types/html-to-text": "catalog:",
|
||||||
"@types/markdown-it-container": "catalog:",
|
"@types/markdown-it-container": "catalog:",
|
||||||
|
|
@ -89,12 +90,15 @@
|
||||||
"name": "@versia-server/api",
|
"name": "@versia-server/api",
|
||||||
"version": "0.9.0-alpha.0",
|
"version": "0.9.0-alpha.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@hono/zod-validator": "catalog:",
|
||||||
"@logtape/logtape": "catalog:",
|
"@logtape/logtape": "catalog:",
|
||||||
"@scalar/hono-api-reference": "catalog:",
|
"@scalar/hono-api-reference": "catalog:",
|
||||||
"@versia-server/config": "workspace:*",
|
"@versia-server/config": "workspace:*",
|
||||||
|
"@versia-server/tests": "workspace:*",
|
||||||
"@versia/client": "workspace:*",
|
"@versia/client": "workspace:*",
|
||||||
"@versia/kit": "workspace:*",
|
"@versia/kit": "workspace:*",
|
||||||
"@versia/sdk": "workspace:*",
|
"@versia/sdk": "workspace:*",
|
||||||
|
"altcha-lib": "catalog:",
|
||||||
"bun-bagel": "catalog:",
|
"bun-bagel": "catalog:",
|
||||||
"chalk": "catalog:",
|
"chalk": "catalog:",
|
||||||
"drizzle-orm": "catalog:",
|
"drizzle-orm": "catalog:",
|
||||||
|
|
@ -104,12 +108,15 @@
|
||||||
"ip-matching": "catalog:",
|
"ip-matching": "catalog:",
|
||||||
"iso-639-1": "catalog:",
|
"iso-639-1": "catalog:",
|
||||||
"jose": "catalog:",
|
"jose": "catalog:",
|
||||||
|
"magic-regexp": "catalog:",
|
||||||
|
"qs": "catalog:",
|
||||||
"sharp": "catalog:",
|
"sharp": "catalog:",
|
||||||
"string-comparison": "catalog:",
|
"string-comparison": "catalog:",
|
||||||
"unicode-emoji-json": "catalog:",
|
"unicode-emoji-json": "catalog:",
|
||||||
"youch": "catalog:",
|
"youch": "catalog:",
|
||||||
"zod": "catalog:",
|
"zod": "catalog:",
|
||||||
"zod-openapi": "catalog:",
|
"zod-openapi": "catalog:",
|
||||||
|
"zod-validation-error": "catalog:",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"packages/client": {
|
"packages/client": {
|
||||||
|
|
@ -142,6 +149,8 @@
|
||||||
"name": "@versia/kit",
|
"name": "@versia/kit",
|
||||||
"version": "0.0.0",
|
"version": "0.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@hackmd/markdown-it-task-lists": "catalog:",
|
||||||
|
"@hono/zod-validator": "catalog:",
|
||||||
"@logtape/logtape": "catalog:",
|
"@logtape/logtape": "catalog:",
|
||||||
"@versia-server/config": "workspace:*",
|
"@versia-server/config": "workspace:*",
|
||||||
"@versia/client": "workspace:*",
|
"@versia/client": "workspace:*",
|
||||||
|
|
@ -152,8 +161,14 @@
|
||||||
"hono": "catalog:",
|
"hono": "catalog:",
|
||||||
"hono-openapi": "catalog:",
|
"hono-openapi": "catalog:",
|
||||||
"html-to-text": "catalog:",
|
"html-to-text": "catalog:",
|
||||||
|
"ioredis": "catalog:",
|
||||||
|
"linkify-html": "catalog:",
|
||||||
"magic-regexp": "catalog:",
|
"magic-regexp": "catalog:",
|
||||||
|
"markdown-it": "catalog:",
|
||||||
|
"markdown-it-container": "catalog:",
|
||||||
|
"markdown-it-toc-done-right": "catalog:",
|
||||||
"mitt": "catalog:",
|
"mitt": "catalog:",
|
||||||
|
"qs": "catalog:",
|
||||||
"sharp": "catalog:",
|
"sharp": "catalog:",
|
||||||
"zod": "catalog:",
|
"zod": "catalog:",
|
||||||
"zod-to-json-schema": "catalog:",
|
"zod-to-json-schema": "catalog:",
|
||||||
|
|
@ -194,6 +209,7 @@
|
||||||
"trustedDependencies": [
|
"trustedDependencies": [
|
||||||
"sharp",
|
"sharp",
|
||||||
"esbuild",
|
"esbuild",
|
||||||
|
"@biomejs/biome",
|
||||||
"msgpackr-extract",
|
"msgpackr-extract",
|
||||||
],
|
],
|
||||||
"catalog": {
|
"catalog": {
|
||||||
|
|
@ -323,6 +339,24 @@
|
||||||
|
|
||||||
"@badgateway/oauth2-client": ["@badgateway/oauth2-client@3.2.0", "", {}, "sha512-EHsoV6oLHot7HeYkIoSxCZApNgBjwNo1OTV9kXIDnmijGAshlVkJreVAAtexFn+sfDKPE0JW5SCPYJV1y4IoMg=="],
|
"@badgateway/oauth2-client": ["@badgateway/oauth2-client@3.2.0", "", {}, "sha512-EHsoV6oLHot7HeYkIoSxCZApNgBjwNo1OTV9kXIDnmijGAshlVkJreVAAtexFn+sfDKPE0JW5SCPYJV1y4IoMg=="],
|
||||||
|
|
||||||
|
"@biomejs/biome": ["@biomejs/biome@2.0.0-beta.5", "", { "optionalDependencies": { "@biomejs/cli-darwin-arm64": "2.0.0-beta.5", "@biomejs/cli-darwin-x64": "2.0.0-beta.5", "@biomejs/cli-linux-arm64": "2.0.0-beta.5", "@biomejs/cli-linux-arm64-musl": "2.0.0-beta.5", "@biomejs/cli-linux-x64": "2.0.0-beta.5", "@biomejs/cli-linux-x64-musl": "2.0.0-beta.5", "@biomejs/cli-win32-arm64": "2.0.0-beta.5", "@biomejs/cli-win32-x64": "2.0.0-beta.5" }, "bin": { "biome": "bin/biome" } }, "sha512-1ldO4AepieVvg4aLi1ubZkA7NsefQT2UTNssbJbDiQTGem8kCHx/PZCwLxIR6UzFpGIjh0xsDzivyVvhnmqmuA=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-darwin-arm64": ["@biomejs/cli-darwin-arm64@2.0.0-beta.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-pnJiaoDpwGo+ctGkMu4POcO8jgOgCErBdYbhutr+K9rxxJS+TlHLr0LR91GCEWbGV2O1oyZRFQcW21rYFoak4w=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-darwin-x64": ["@biomejs/cli-darwin-x64@2.0.0-beta.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-WwEZpqcmsNoFpZkUFNQcbZo52WK4hLGQ0vZk3PQ8JlZ55gJsHiyhtv6aem6fVlyVCvZgpsC0sYPLE3VvFVKNAQ=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-arm64": ["@biomejs/cli-linux-arm64@2.0.0-beta.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-lAF1de+Ki0vnq14NwDXouKkAR/iviyMNrUngSHjTGFC4z8XGVEfIw0ZMSm7fAdJZ5fAWodt9HiYmEAVs5EtHQg=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-arm64-musl": ["@biomejs/cli-linux-arm64-musl@2.0.0-beta.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-4vxNkYx1uEt211W8hLdXddc7icRHQgYENb72g6uTd/tLVPSBvIwqUAxAOkU+9Ai1E/8R4sWy7HIxREgpuFgbNA=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-x64": ["@biomejs/cli-linux-x64@2.0.0-beta.5", "", { "os": "linux", "cpu": "x64" }, "sha512-I0Pt1VHeL1mN8G7ZwV2u9AfzBd5ZKfbvHUI4x2wETUZbwcQlAu/nEzEa2LUe5HqSmnctTR36ig7RkkM9qbmIrA=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-linux-x64-musl": ["@biomejs/cli-linux-x64-musl@2.0.0-beta.5", "", { "os": "linux", "cpu": "x64" }, "sha512-nUeKGO517GtRCxziVD9les1HiCs2s2/WIVITMN9+9RRuLOko8r+T77E8ZXEmlfLOfOIOeE6z62WITqei3oNccA=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-win32-arm64": ["@biomejs/cli-win32-arm64@2.0.0-beta.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-YXW6hgbrgBcWQ1SLO69ypWlluPchgQV5C1lTG4xOcBUWdCsfYuQirM64S6Dov7SFPqsMIoFC6LlQRW+n8qAyiA=="],
|
||||||
|
|
||||||
|
"@biomejs/cli-win32-x64": ["@biomejs/cli-win32-x64@2.0.0-beta.5", "", { "os": "win32", "cpu": "x64" }, "sha512-N7Yby52BJmvEdst1iMbclE5hxxefboaXKRJLm1tLfBYr4FeuoCe6j8HdiQSwhCRdIUGFFqBLaDXh//LLF6EReA=="],
|
||||||
|
|
||||||
"@bull-board/api": ["@bull-board/api@6.10.1", "", { "dependencies": { "redis-info": "^3.1.0" }, "peerDependencies": { "@bull-board/ui": "6.10.1" } }, "sha512-VPkZa2XZI2Wk2MqK1XyiiS+tOhNan54mnm2fpv2KA0fdZ92mQqNjhKkOpsykhQv9XUEc8cCRlZqGxf67YCMJbQ=="],
|
"@bull-board/api": ["@bull-board/api@6.10.1", "", { "dependencies": { "redis-info": "^3.1.0" }, "peerDependencies": { "@bull-board/ui": "6.10.1" } }, "sha512-VPkZa2XZI2Wk2MqK1XyiiS+tOhNan54mnm2fpv2KA0fdZ92mQqNjhKkOpsykhQv9XUEc8cCRlZqGxf67YCMJbQ=="],
|
||||||
|
|
||||||
"@bull-board/hono": ["@bull-board/hono@6.10.1", "", { "dependencies": { "@bull-board/api": "6.10.1", "@bull-board/ui": "6.10.1", "ejs": "^3.1.10" }, "peerDependencies": { "hono": "^4" } }, "sha512-2I9BUS7jbtQ4tCKOJdVKQn6uW8MXJKUGIhHLK2r4X8kiXZvk2I7jjt0KZ4VNyF9nfoBblgX5WemxE4sU61kGGg=="],
|
"@bull-board/hono": ["@bull-board/hono@6.10.1", "", { "dependencies": { "@bull-board/api": "6.10.1", "@bull-board/ui": "6.10.1", "ejs": "^3.1.10" }, "peerDependencies": { "hono": "^4" } }, "sha512-2I9BUS7jbtQ4tCKOJdVKQn6uW8MXJKUGIhHLK2r4X8kiXZvk2I7jjt0KZ4VNyF9nfoBblgX5WemxE4sU61kGGg=="],
|
||||||
|
|
|
||||||
|
|
@ -1,359 +0,0 @@
|
||||||
import markdownItTaskLists from "@hackmd/markdown-it-task-lists";
|
|
||||||
import { db, type Note, User } from "@versia/kit/db";
|
|
||||||
import { Instances, Users } from "@versia/kit/tables";
|
|
||||||
import type * as VersiaEntities from "@versia/sdk/entities";
|
|
||||||
import { FederationRequester } from "@versia/sdk/http";
|
|
||||||
import { config } from "@versia-server/config";
|
|
||||||
import { and, eq, inArray, isNull, or, sql } from "drizzle-orm";
|
|
||||||
import linkifyHtml from "linkify-html";
|
|
||||||
import {
|
|
||||||
anyOf,
|
|
||||||
charIn,
|
|
||||||
createRegExp,
|
|
||||||
digit,
|
|
||||||
exactly,
|
|
||||||
global,
|
|
||||||
letter,
|
|
||||||
} from "magic-regexp";
|
|
||||||
import MarkdownIt from "markdown-it";
|
|
||||||
import markdownItContainer from "markdown-it-container";
|
|
||||||
import markdownItTocDoneRight from "markdown-it-toc-done-right";
|
|
||||||
import { mentionValidator } from "@/api";
|
|
||||||
import { sanitizeHtml, sanitizeHtmlInline } from "@/sanitization";
|
|
||||||
import { transformOutputToUserWithRelations, userRelations } from "./user.ts";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Wrapper against the Status object to make it easier to work with
|
|
||||||
* @param query
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
export const findManyNotes = async (
|
|
||||||
query: Parameters<typeof db.query.Notes.findMany>[0],
|
|
||||||
userId?: string,
|
|
||||||
): Promise<(typeof Note.$type)[]> => {
|
|
||||||
const output = await db.query.Notes.findMany({
|
|
||||||
...query,
|
|
||||||
with: {
|
|
||||||
...query?.with,
|
|
||||||
attachments: {
|
|
||||||
with: {
|
|
||||||
media: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reactions: {
|
|
||||||
with: {
|
|
||||||
emoji: {
|
|
||||||
with: {
|
|
||||||
instance: true,
|
|
||||||
media: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
emojis: {
|
|
||||||
with: {
|
|
||||||
emoji: {
|
|
||||||
with: {
|
|
||||||
instance: true,
|
|
||||||
media: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
author: {
|
|
||||||
with: {
|
|
||||||
...userRelations,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
mentions: {
|
|
||||||
with: {
|
|
||||||
user: {
|
|
||||||
with: {
|
|
||||||
instance: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reblog: {
|
|
||||||
with: {
|
|
||||||
attachments: {
|
|
||||||
with: {
|
|
||||||
media: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reactions: {
|
|
||||||
with: {
|
|
||||||
emoji: {
|
|
||||||
with: {
|
|
||||||
instance: true,
|
|
||||||
media: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
emojis: {
|
|
||||||
with: {
|
|
||||||
emoji: {
|
|
||||||
with: {
|
|
||||||
instance: true,
|
|
||||||
media: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
likes: true,
|
|
||||||
application: true,
|
|
||||||
mentions: {
|
|
||||||
with: {
|
|
||||||
user: {
|
|
||||||
with: userRelations,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
author: {
|
|
||||||
with: {
|
|
||||||
...userRelations,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
extras: {
|
|
||||||
pinned: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "UserToPinnedNotes" WHERE "UserToPinnedNotes"."noteId" = "Notes_reblog".id AND "UserToPinnedNotes"."userId" = ${userId})`.as(
|
|
||||||
"pinned",
|
|
||||||
)
|
|
||||||
: sql`false`.as("pinned"),
|
|
||||||
reblogged: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "Notes" WHERE "Notes"."authorId" = ${userId} AND "Notes"."reblogId" = "Notes_reblog".id)`.as(
|
|
||||||
"reblogged",
|
|
||||||
)
|
|
||||||
: sql`false`.as("reblogged"),
|
|
||||||
muted: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "Relationships" WHERE "Relationships"."ownerId" = ${userId} AND "Relationships"."subjectId" = "Notes_reblog"."authorId" AND "Relationships"."muting" = true)`.as(
|
|
||||||
"muted",
|
|
||||||
)
|
|
||||||
: sql`false`.as("muted"),
|
|
||||||
liked: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "Likes" WHERE "Likes"."likedId" = "Notes_reblog".id AND "Likes"."likerId" = ${userId})`.as(
|
|
||||||
"liked",
|
|
||||||
)
|
|
||||||
: sql`false`.as("liked"),
|
|
||||||
},
|
|
||||||
},
|
|
||||||
reply: true,
|
|
||||||
quote: true,
|
|
||||||
},
|
|
||||||
extras: {
|
|
||||||
pinned: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "UserToPinnedNotes" WHERE "UserToPinnedNotes"."noteId" = "Notes".id AND "UserToPinnedNotes"."userId" = ${userId})`.as(
|
|
||||||
"pinned",
|
|
||||||
)
|
|
||||||
: sql`false`.as("pinned"),
|
|
||||||
reblogged: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "Notes" WHERE "Notes"."authorId" = ${userId} AND "Notes"."reblogId" = "Notes".id)`.as(
|
|
||||||
"reblogged",
|
|
||||||
)
|
|
||||||
: sql`false`.as("reblogged"),
|
|
||||||
muted: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "Relationships" WHERE "Relationships"."ownerId" = ${userId} AND "Relationships"."subjectId" = "Notes"."authorId" AND "Relationships"."muting" = true)`.as(
|
|
||||||
"muted",
|
|
||||||
)
|
|
||||||
: sql`false`.as("muted"),
|
|
||||||
liked: userId
|
|
||||||
? sql`EXISTS (SELECT 1 FROM "Likes" WHERE "Likes"."likedId" = "Notes".id AND "Likes"."likerId" = ${userId})`.as(
|
|
||||||
"liked",
|
|
||||||
)
|
|
||||||
: sql`false`.as("liked"),
|
|
||||||
...query?.extras,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
return output.map((post) => ({
|
|
||||||
...post,
|
|
||||||
author: transformOutputToUserWithRelations(post.author),
|
|
||||||
mentions: post.mentions.map((mention) => ({
|
|
||||||
...mention.user,
|
|
||||||
endpoints: mention.user.endpoints,
|
|
||||||
})),
|
|
||||||
attachments: post.attachments.map((attachment) => attachment.media),
|
|
||||||
emojis: (post.emojis ?? []).map((emoji) => emoji.emoji),
|
|
||||||
reblog: post.reblog && {
|
|
||||||
...post.reblog,
|
|
||||||
author: transformOutputToUserWithRelations(post.reblog.author),
|
|
||||||
mentions: post.reblog.mentions.map((mention) => ({
|
|
||||||
...mention.user,
|
|
||||||
endpoints: mention.user.endpoints,
|
|
||||||
})),
|
|
||||||
attachments: post.reblog.attachments.map(
|
|
||||||
(attachment) => attachment.media,
|
|
||||||
),
|
|
||||||
emojis: (post.reblog.emojis ?? []).map((emoji) => emoji.emoji),
|
|
||||||
pinned: Boolean(post.reblog.pinned),
|
|
||||||
reblogged: Boolean(post.reblog.reblogged),
|
|
||||||
muted: Boolean(post.reblog.muted),
|
|
||||||
liked: Boolean(post.reblog.liked),
|
|
||||||
},
|
|
||||||
pinned: Boolean(post.pinned),
|
|
||||||
reblogged: Boolean(post.reblogged),
|
|
||||||
muted: Boolean(post.muted),
|
|
||||||
liked: Boolean(post.liked),
|
|
||||||
}));
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get people mentioned in the content (match @username or @username@domain.com mentions)
|
|
||||||
* @param text The text to parse mentions from.
|
|
||||||
* @returns An array of users mentioned in the text.
|
|
||||||
*/
|
|
||||||
export const parseTextMentions = async (text: string): Promise<User[]> => {
|
|
||||||
const mentionedPeople = [...text.matchAll(mentionValidator)];
|
|
||||||
if (mentionedPeople.length === 0) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
const baseUrlHost = config.http.base_url.host;
|
|
||||||
const isLocal = (host?: string): boolean => host === baseUrlHost || !host;
|
|
||||||
|
|
||||||
// Find local and matching users
|
|
||||||
const foundUsers = await db
|
|
||||||
.select({
|
|
||||||
id: Users.id,
|
|
||||||
username: Users.username,
|
|
||||||
baseUrl: Instances.baseUrl,
|
|
||||||
})
|
|
||||||
.from(Users)
|
|
||||||
.leftJoin(Instances, eq(Users.instanceId, Instances.id))
|
|
||||||
.where(
|
|
||||||
or(
|
|
||||||
...mentionedPeople.map((person) =>
|
|
||||||
and(
|
|
||||||
eq(Users.username, person[1] ?? ""),
|
|
||||||
isLocal(person[2])
|
|
||||||
? isNull(Users.instanceId)
|
|
||||||
: eq(Instances.baseUrl, person[2] ?? ""),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
// Separate found and unresolved users
|
|
||||||
const finalList = await User.manyFromSql(
|
|
||||||
inArray(
|
|
||||||
Users.id,
|
|
||||||
foundUsers.map((u) => u.id),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
// Every remote user that isn't in database
|
|
||||||
const notFoundRemoteUsers = mentionedPeople.filter(
|
|
||||||
(p) =>
|
|
||||||
!(
|
|
||||||
foundUsers.some(
|
|
||||||
(user) => user.username === p[1] && user.baseUrl === p[2],
|
|
||||||
) || isLocal(p[2])
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
// Resolve remote mentions not in database
|
|
||||||
for (const person of notFoundRemoteUsers) {
|
|
||||||
const url = await FederationRequester.resolveWebFinger(
|
|
||||||
person[1] ?? "",
|
|
||||||
person[2] ?? "",
|
|
||||||
);
|
|
||||||
|
|
||||||
if (url) {
|
|
||||||
const user = await User.resolve(url);
|
|
||||||
|
|
||||||
if (user) {
|
|
||||||
finalList.push(user);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return finalList;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const replaceTextMentions = (text: string, mentions: User[]): string => {
|
|
||||||
return mentions.reduce((finalText, mention) => {
|
|
||||||
const { username, instance } = mention.data;
|
|
||||||
const { uri } = mention;
|
|
||||||
const baseHost = config.http.base_url.host;
|
|
||||||
const linkTemplate = (displayText: string): string =>
|
|
||||||
`<a class="u-url mention" rel="nofollow noopener noreferrer" target="_blank" href="${uri}">${displayText}</a>`;
|
|
||||||
|
|
||||||
if (mention.remote) {
|
|
||||||
return finalText.replaceAll(
|
|
||||||
`@${username}@${instance?.baseUrl}`,
|
|
||||||
linkTemplate(`@${username}@${instance?.baseUrl}`),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return finalText.replace(
|
|
||||||
createRegExp(
|
|
||||||
exactly(
|
|
||||||
exactly(`@${username}`)
|
|
||||||
.notBefore(anyOf(letter, digit, charIn("@")))
|
|
||||||
.notAfter(anyOf(letter, digit, charIn("@"))),
|
|
||||||
).or(exactly(`@${username}@${baseHost}`)),
|
|
||||||
[global],
|
|
||||||
),
|
|
||||||
linkTemplate(`@${username}@${baseHost}`),
|
|
||||||
);
|
|
||||||
}, text);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const contentToHtml = async (
|
|
||||||
content: VersiaEntities.TextContentFormat,
|
|
||||||
mentions: User[] = [],
|
|
||||||
inline = false,
|
|
||||||
): Promise<string> => {
|
|
||||||
const sanitizer = inline ? sanitizeHtmlInline : sanitizeHtml;
|
|
||||||
let htmlContent = "";
|
|
||||||
|
|
||||||
if (content.data["text/html"]) {
|
|
||||||
htmlContent = await sanitizer(content.data["text/html"].content);
|
|
||||||
} else if (content.data["text/markdown"]) {
|
|
||||||
htmlContent = await sanitizer(
|
|
||||||
await markdownParse(content.data["text/markdown"].content),
|
|
||||||
);
|
|
||||||
} else if (content.data["text/plain"]?.content) {
|
|
||||||
htmlContent = (await sanitizer(content.data["text/plain"].content))
|
|
||||||
.split("\n")
|
|
||||||
.map((line) => `<p>${line}</p>`)
|
|
||||||
.join("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
htmlContent = replaceTextMentions(htmlContent, mentions);
|
|
||||||
|
|
||||||
return linkifyHtml(htmlContent, {
|
|
||||||
defaultProtocol: "https",
|
|
||||||
validate: { email: (): false => false },
|
|
||||||
target: "_blank",
|
|
||||||
rel: "nofollow noopener noreferrer",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const markdownParse = async (content: string): Promise<string> => {
|
|
||||||
return (await getMarkdownRenderer()).render(content);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getMarkdownRenderer = (): MarkdownIt => {
|
|
||||||
const renderer = MarkdownIt({
|
|
||||||
html: true,
|
|
||||||
linkify: true,
|
|
||||||
});
|
|
||||||
|
|
||||||
renderer.use(markdownItTocDoneRight, {
|
|
||||||
containerClass: "toc",
|
|
||||||
level: [1, 2, 3, 4],
|
|
||||||
listType: "ul",
|
|
||||||
listClass: "toc-list",
|
|
||||||
itemClass: "toc-item",
|
|
||||||
linkClass: "toc-link",
|
|
||||||
});
|
|
||||||
|
|
||||||
renderer.use(markdownItTaskLists);
|
|
||||||
|
|
||||||
renderer.use(markdownItContainer);
|
|
||||||
|
|
||||||
return renderer;
|
|
||||||
};
|
|
||||||
|
|
@ -1,101 +0,0 @@
|
||||||
import {
|
|
||||||
type Application,
|
|
||||||
db,
|
|
||||||
type Emoji,
|
|
||||||
type Instance,
|
|
||||||
type Media,
|
|
||||||
type Role,
|
|
||||||
type Token,
|
|
||||||
type User,
|
|
||||||
} from "@versia/kit/db";
|
|
||||||
import type { Users } from "@versia/kit/tables";
|
|
||||||
import type { InferSelectModel } from "drizzle-orm";
|
|
||||||
|
|
||||||
export const userRelations = {
|
|
||||||
instance: true,
|
|
||||||
emojis: {
|
|
||||||
with: {
|
|
||||||
emoji: {
|
|
||||||
with: {
|
|
||||||
instance: true,
|
|
||||||
media: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
avatar: true,
|
|
||||||
header: true,
|
|
||||||
roles: {
|
|
||||||
with: {
|
|
||||||
role: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
export interface AuthData {
|
|
||||||
user: User | null;
|
|
||||||
token: Token | null;
|
|
||||||
application: Application | null;
|
|
||||||
}
|
|
||||||
|
|
||||||
export const transformOutputToUserWithRelations = (
|
|
||||||
user: Omit<InferSelectModel<typeof Users>, "endpoints"> & {
|
|
||||||
followerCount: unknown;
|
|
||||||
followingCount: unknown;
|
|
||||||
statusCount: unknown;
|
|
||||||
avatar: typeof Media.$type | null;
|
|
||||||
header: typeof Media.$type | null;
|
|
||||||
emojis: {
|
|
||||||
userId: string;
|
|
||||||
emojiId: string;
|
|
||||||
emoji?: typeof Emoji.$type;
|
|
||||||
}[];
|
|
||||||
instance: typeof Instance.$type | null;
|
|
||||||
roles: {
|
|
||||||
userId: string;
|
|
||||||
roleId: string;
|
|
||||||
role?: typeof Role.$type;
|
|
||||||
}[];
|
|
||||||
endpoints: unknown;
|
|
||||||
},
|
|
||||||
): typeof User.$type => {
|
|
||||||
return {
|
|
||||||
...user,
|
|
||||||
followerCount: Number(user.followerCount),
|
|
||||||
followingCount: Number(user.followingCount),
|
|
||||||
statusCount: Number(user.statusCount),
|
|
||||||
endpoints:
|
|
||||||
user.endpoints ??
|
|
||||||
({} as Partial<{
|
|
||||||
dislikes: string;
|
|
||||||
featured: string;
|
|
||||||
likes: string;
|
|
||||||
followers: string;
|
|
||||||
following: string;
|
|
||||||
inbox: string;
|
|
||||||
outbox: string;
|
|
||||||
}>),
|
|
||||||
emojis: user.emojis.map(
|
|
||||||
(emoji) =>
|
|
||||||
(emoji as unknown as Record<string, object>)
|
|
||||||
.emoji as typeof Emoji.$type,
|
|
||||||
),
|
|
||||||
roles: user.roles
|
|
||||||
.map((role) => role.role)
|
|
||||||
.filter(Boolean) as (typeof Role.$type)[],
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export const findManyUsers = async (
|
|
||||||
query: Parameters<typeof db.query.Users.findMany>[0],
|
|
||||||
): Promise<(typeof User.$type)[]> => {
|
|
||||||
const output = await db.query.Users.findMany({
|
|
||||||
...query,
|
|
||||||
with: {
|
|
||||||
...userRelations,
|
|
||||||
...query?.with,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
return output.map((user) => transformOutputToUserWithRelations(user));
|
|
||||||
};
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
|
import { connection } from "@versia/kit/redis";
|
||||||
import type { JSONObject } from "@versia/sdk";
|
import type { JSONObject } from "@versia/sdk";
|
||||||
import * as VersiaEntities from "@versia/sdk/entities";
|
import * as VersiaEntities from "@versia/sdk/entities";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { Queue, Worker } from "bullmq";
|
import { Queue, Worker } from "bullmq";
|
||||||
import chalk from "chalk";
|
import chalk from "chalk";
|
||||||
import { connection } from "~/utils/redis.ts";
|
|
||||||
|
|
||||||
export enum DeliveryJobType {
|
export enum DeliveryJobType {
|
||||||
FederateEntity = "federateEntity",
|
FederateEntity = "federateEntity",
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { Instance } from "@versia/kit/db";
|
import { Instance } from "@versia/kit/db";
|
||||||
|
import { connection } from "@versia/kit/redis";
|
||||||
import { Instances } from "@versia/kit/tables";
|
import { Instances } from "@versia/kit/tables";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { Queue, Worker } from "bullmq";
|
import { Queue, Worker } from "bullmq";
|
||||||
import { eq } from "drizzle-orm";
|
import { eq } from "drizzle-orm";
|
||||||
import { connection } from "~/utils/redis.ts";
|
|
||||||
|
|
||||||
export enum FetchJobType {
|
export enum FetchJobType {
|
||||||
Instance = "instance",
|
Instance = "instance",
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import { getLogger } from "@logtape/logtape";
|
import { getLogger } from "@logtape/logtape";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
import { Instance, User } from "@versia/kit/db";
|
import { Instance, User } from "@versia/kit/db";
|
||||||
|
import { connection } from "@versia/kit/redis";
|
||||||
import type { JSONObject } from "@versia/sdk";
|
import type { JSONObject } from "@versia/sdk";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { Queue, Worker } from "bullmq";
|
import { Queue, Worker } from "bullmq";
|
||||||
import type { SocketAddress } from "bun";
|
import type { SocketAddress } from "bun";
|
||||||
import { connection } from "~/utils/redis.ts";
|
|
||||||
import { InboxProcessor } from "../inbox/processor.ts";
|
import { InboxProcessor } from "../inbox/processor.ts";
|
||||||
|
|
||||||
export enum InboxJobType {
|
export enum InboxJobType {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { Media } from "@versia/kit/db";
|
import { Media } from "@versia/kit/db";
|
||||||
|
import { connection } from "@versia/kit/redis";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { Queue, Worker } from "bullmq";
|
import { Queue, Worker } from "bullmq";
|
||||||
import { connection } from "~/utils/redis.ts";
|
|
||||||
import { calculateBlurhash } from "../media/preprocessors/blurhash.ts";
|
import { calculateBlurhash } from "../media/preprocessors/blurhash.ts";
|
||||||
import { convertImage } from "../media/preprocessors/image-conversion.ts";
|
import { convertImage } from "../media/preprocessors/image-conversion.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { Note, PushSubscription, Token, User } from "@versia/kit/db";
|
import { Note, PushSubscription, Token, User } from "@versia/kit/db";
|
||||||
|
import { connection } from "@versia/kit/redis";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { Queue, Worker } from "bullmq";
|
import { Queue, Worker } from "bullmq";
|
||||||
import { sendNotification } from "web-push";
|
import { sendNotification } from "web-push";
|
||||||
import { htmlToText } from "@/content_types.ts";
|
import { htmlToText } from "@/content_types.ts";
|
||||||
import { connection } from "~/utils/redis.ts";
|
|
||||||
|
|
||||||
export enum PushJobType {
|
export enum PushJobType {
|
||||||
Notify = "notify",
|
Notify = "notify",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { Relationship, User } from "@versia/kit/db";
|
import { Relationship, User } from "@versia/kit/db";
|
||||||
|
import { connection } from "@versia/kit/redis";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { Queue, Worker } from "bullmq";
|
import { Queue, Worker } from "bullmq";
|
||||||
import { connection } from "~/utils/redis.ts";
|
|
||||||
|
|
||||||
export enum RelationshipJobType {
|
export enum RelationshipJobType {
|
||||||
Unmute = "unmute",
|
Unmute = "unmute",
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { Instance, User } from "@versia/kit/db";
|
import { Instance, User } from "@versia/kit/db";
|
||||||
|
import { parseUserAddress } from "@versia/kit/parsers";
|
||||||
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 { parseUserAddress } from "@/api";
|
|
||||||
|
|
||||||
export const retrieveUser = async (
|
export const retrieveUser = async (
|
||||||
usernameOrHandle: string,
|
usernameOrHandle: string,
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1744536153,
|
"lastModified": 1749903597,
|
||||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
"narHash": "sha256-jp0D4vzBcRKwNZwfY4BcWHemLGUs4JrS3X9w5k/JYDA=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
"rev": "41da1e3ea8e23e094e5e3eeb1e6b830468a7399e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ in
|
||||||
|
|
||||||
pnpmDeps = pnpm.fetchDeps {
|
pnpmDeps = pnpm.fetchDeps {
|
||||||
inherit (finalAttrs) pname version src pnpmInstallFlags;
|
inherit (finalAttrs) pname version src pnpmInstallFlags;
|
||||||
hash = "sha256-6lcsXcMEh7UbB5aLJzgJKUzynZbSZPgdj6l9E7RVx7c=";
|
hash = "sha256-nC1bYW+It2N0Mp8+Yh1uk3MOj8DABOCNP5E3LbMuCEQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,7 @@
|
||||||
"sharp"
|
"sharp"
|
||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@biomejs/biome": "catalog:",
|
||||||
"@types/bun": "catalog:",
|
"@types/bun": "catalog:",
|
||||||
"@types/html-to-text": "catalog:",
|
"@types/html-to-text": "catalog:",
|
||||||
"@types/markdown-it-container": "catalog:",
|
"@types/markdown-it-container": "catalog:",
|
||||||
|
|
|
||||||
|
|
@ -63,6 +63,11 @@
|
||||||
"zod-openapi": "catalog:",
|
"zod-openapi": "catalog:",
|
||||||
"@scalar/hono-api-reference": "catalog:",
|
"@scalar/hono-api-reference": "catalog:",
|
||||||
"hono-rate-limiter": "catalog:",
|
"hono-rate-limiter": "catalog:",
|
||||||
"ip-matching": "catalog:"
|
"ip-matching": "catalog:",
|
||||||
|
"qs": "catalog:",
|
||||||
|
"magic-regexp": "catalog:",
|
||||||
|
"altcha-lib": "catalog:",
|
||||||
|
"@hono/zod-validator": "catalog:",
|
||||||
|
"zod-validation-error": "catalog:"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, handleZodError } from "@versia/kit/api";
|
||||||
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 { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
|
|
@ -10,7 +11,6 @@ import { describeRoute } from "hono-openapi";
|
||||||
import { validator } from "hono-openapi/zod";
|
import { validator } from "hono-openapi/zod";
|
||||||
import { SignJWT } from "jose";
|
import { SignJWT } from "jose";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
const returnError = (
|
const returnError = (
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { apiRoute, handleZodError } from "@versia/kit/api";
|
||||||
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 { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
|
|
@ -5,7 +6,6 @@ import { and, eq } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { validator } from "hono-openapi/zod";
|
import { validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OAuth Code flow
|
* OAuth Code flow
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { apiRoute, handleZodError } from "@versia/kit/api";
|
||||||
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 { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
|
|
@ -7,7 +8,6 @@ import type { Context } from "hono";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { validator } from "hono-openapi/zod";
|
import { validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
const returnError = (
|
const returnError = (
|
||||||
context: Context,
|
context: Context,
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { RolePermission } from "@versia/client/schemas";
|
import { RolePermission } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
import { getFeed } from "@/rss";
|
import { getFeed } from "@/rss";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { RolePermission } from "@versia/client/schemas";
|
import { RolePermission } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
import { getFeed } from "@/rss";
|
import { getFeed } from "@/rss";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
import {
|
import {
|
||||||
RelationshipJobType,
|
RelationshipJobType,
|
||||||
relationshipQueue,
|
relationshipQueue,
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@ import {
|
||||||
Relationship as RelationshipSchema,
|
Relationship as RelationshipSchema,
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import {
|
||||||
Role as RoleSchema,
|
Role as RoleSchema,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { Role } from "@versia/kit/db";
|
import { Role } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { validator } from "hono-openapi/zod";
|
import { validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { Role as RoleSchema } from "@versia/client/schemas";
|
import { Role as RoleSchema } from "@versia/client/schemas";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Role } from "@versia/kit/db";
|
import { Role } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,13 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withUserParam } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Notes } from "@versia/kit/tables";
|
import { Notes } 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 { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withUserParam } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withUserParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, qsQuery } from "@versia/kit/api";
|
||||||
import { db, User } from "@versia/kit/db";
|
import { db, User } from "@versia/kit/db";
|
||||||
import type { Users } from "@versia/kit/tables";
|
import type { Users } from "@versia/kit/tables";
|
||||||
import { type InferSelectModel, sql } from "drizzle-orm";
|
import { type InferSelectModel, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, qsQuery } from "@/api";
|
|
||||||
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
import { Account as AccountSchema, zBoolean } from "@versia/client/schemas";
|
import { Account as AccountSchema, zBoolean } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import {
|
||||||
|
apiRoute,
|
||||||
|
auth,
|
||||||
|
handleZodError,
|
||||||
|
jsonOrForm,
|
||||||
|
qsQuery,
|
||||||
|
} from "@versia/kit/api";
|
||||||
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 { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
|
|
@ -8,7 +15,6 @@ import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import ISO6391 from "iso-639-1";
|
import ISO6391 from "iso-639-1";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm, qsQuery } from "@/api";
|
|
||||||
import { tempmailDomains } from "@/tempmail";
|
import { tempmailDomains } from "@/tempmail";
|
||||||
import { rateLimit } from "../../../../middlewares/rate-limit.ts";
|
import { rateLimit } from "../../../../middlewares/rate-limit.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,15 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Instance, User } from "@versia/kit/db";
|
import { Instance, User } from "@versia/kit/db";
|
||||||
|
import { parseUserAddress } from "@versia/kit/parsers";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, parseUserAddress } from "@/api";
|
|
||||||
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -5,11 +5,11 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, qsQuery } from "@versia/kit/api";
|
||||||
import { Relationship } from "@versia/kit/db";
|
import { Relationship } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, qsQuery } from "@/api";
|
|
||||||
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,15 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { User } from "@versia/kit/db";
|
import { User } from "@versia/kit/db";
|
||||||
|
import { parseUserAddress } from "@versia/kit/parsers";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { eq, ilike, not, or, sql } from "drizzle-orm";
|
import { eq, ilike, not, or, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import stringComparison from "string-comparison";
|
import stringComparison from "string-comparison";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, parseUserAddress } from "@/api";
|
|
||||||
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,9 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { Emoji, Media, User } from "@versia/kit/db";
|
import { Emoji, Media, User } from "@versia/kit/db";
|
||||||
|
import { versiaTextToHtml } from "@versia/kit/parsers";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import * as VersiaEntities from "@versia/sdk/entities";
|
import * as VersiaEntities from "@versia/sdk/entities";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
|
|
@ -12,10 +14,8 @@ import { and, eq, isNull } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
import { mergeAndDeduplicate } from "@/lib";
|
import { mergeAndDeduplicate } from "@/lib";
|
||||||
import { sanitizedHtmlStrip } from "@/sanitization";
|
import { sanitizedHtmlStrip } from "@/sanitization";
|
||||||
import { contentToHtml } from "~/classes/functions/status";
|
|
||||||
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
import { rateLimit } from "../../../../../middlewares/rate-limit.ts";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
@ -242,7 +242,7 @@ export default apiRoute((app) =>
|
||||||
|
|
||||||
if (note) {
|
if (note) {
|
||||||
self.source.note = note;
|
self.source.note = note;
|
||||||
self.note = await contentToHtml(
|
self.note = await versiaTextToHtml(
|
||||||
new VersiaEntities.TextContentFormat({
|
new VersiaEntities.TextContentFormat({
|
||||||
"text/markdown": {
|
"text/markdown": {
|
||||||
content: note,
|
content: note,
|
||||||
|
|
@ -329,7 +329,7 @@ export default apiRoute((app) =>
|
||||||
self.source.fields = [];
|
self.source.fields = [];
|
||||||
for (const field of fields_attributes) {
|
for (const field of fields_attributes) {
|
||||||
// Can be Markdown or plaintext, also has emojis
|
// Can be Markdown or plaintext, also has emojis
|
||||||
const parsedName = await contentToHtml(
|
const parsedName = await versiaTextToHtml(
|
||||||
new VersiaEntities.TextContentFormat({
|
new VersiaEntities.TextContentFormat({
|
||||||
"text/markdown": {
|
"text/markdown": {
|
||||||
content: field.name,
|
content: field.name,
|
||||||
|
|
@ -340,7 +340,7 @@ export default apiRoute((app) =>
|
||||||
true,
|
true,
|
||||||
);
|
);
|
||||||
|
|
||||||
const parsedValue = await contentToHtml(
|
const parsedValue = await versiaTextToHtml(
|
||||||
new VersiaEntities.TextContentFormat({
|
new VersiaEntities.TextContentFormat({
|
||||||
"text/markdown": {
|
"text/markdown": {
|
||||||
content: field.value,
|
content: field.value,
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { Account } from "@versia/client/schemas";
|
import { Account } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ import {
|
||||||
CredentialApplication as CredentialApplicationSchema,
|
CredentialApplication as CredentialApplicationSchema,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { Application } from "@versia/kit/db";
|
import { Application } from "@versia/kit/db";
|
||||||
import { randomUUIDv7 } from "bun";
|
import { randomUUIDv7 } from "bun";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
import { randomString } from "@/math";
|
import { randomString } from "@/math";
|
||||||
import { rateLimit } from "../../../../middlewares/rate-limit.ts";
|
import { rateLimit } from "../../../../middlewares/rate-limit.ts";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { Application } from "@versia/kit/db";
|
import { Application } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { Challenge } from "@versia/client/schemas";
|
import { Challenge } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
import { generateChallenge } from "@/challenges";
|
import { generateChallenge } from "@/challenges";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { Emoji } from "@versia/kit/db";
|
import { Emoji } from "@versia/kit/db";
|
||||||
import { Emojis } from "@versia/kit/tables";
|
import { Emojis } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull, or } from "drizzle-orm";
|
import { and, eq, isNull, or } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,17 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
import { config } from "@versia-server/config";
|
|
||||||
import { describeRoute } from "hono-openapi";
|
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
|
||||||
import { z } from "zod";
|
|
||||||
import {
|
import {
|
||||||
apiRoute,
|
apiRoute,
|
||||||
auth,
|
auth,
|
||||||
handleZodError,
|
handleZodError,
|
||||||
jsonOrForm,
|
jsonOrForm,
|
||||||
withEmojiParam,
|
withEmojiParam,
|
||||||
} from "@/api";
|
} from "@versia/kit/api";
|
||||||
|
import { config } from "@versia-server/config";
|
||||||
|
import { describeRoute } from "hono-openapi";
|
||||||
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
|
import { z } from "zod";
|
||||||
import { mimeLookup } from "@/content_types";
|
import { mimeLookup } from "@/content_types";
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { Emoji, Media } from "@versia/kit/db";
|
import { Emoji, Media } from "@versia/kit/db";
|
||||||
import { Emojis } from "@versia/kit/tables";
|
import { Emojis } from "@versia/kit/tables";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
|
|
@ -11,7 +12,6 @@ import { and, eq, isNull, or } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
import { mimeLookup } from "@/content_types";
|
import { mimeLookup } from "@/content_types";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Notes } from "@versia/kit/tables";
|
import { Notes } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Relationship, User } from "@versia/kit/db";
|
import { Relationship, User } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Relationship, User } from "@versia/kit/db";
|
import { Relationship, User } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
|
import { apiRoute } from "@versia/kit/api";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { ExtendedDescription as ExtendedDescriptionSchema } from "@versia/client/schemas";
|
import { ExtendedDescription as ExtendedDescriptionSchema } from "@versia/client/schemas";
|
||||||
|
import { apiRoute } from "@versia/kit/api";
|
||||||
|
import { markdownToHtml } from "@versia/kit/markdown";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute } from "@/api";
|
|
||||||
import { markdownParse } from "~/classes/functions/status";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
@ -27,7 +27,7 @@ export default apiRoute((app) =>
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
async (context) => {
|
async (context) => {
|
||||||
const content = await markdownParse(
|
const content = await markdownToHtml(
|
||||||
config.instance.extended_description_path?.content ??
|
config.instance.extended_description_path?.content ??
|
||||||
"This is a [Versia](https://versia.pub) server with the default extended description.",
|
"This is a [Versia](https://versia.pub) server with the default extended description.",
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
import { InstanceV1 as InstanceV1Schema } from "@versia/client/schemas";
|
import { InstanceV1 as InstanceV1Schema } from "@versia/client/schemas";
|
||||||
|
import { apiRoute } from "@versia/kit/api";
|
||||||
import { Instance, Note, User } from "@versia/kit/db";
|
import { Instance, Note, User } from "@versia/kit/db";
|
||||||
|
import { markdownToHtml } from "@versia/kit/markdown";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import type { z } from "zod";
|
import type { z } from "zod";
|
||||||
import { apiRoute } from "@/api";
|
|
||||||
import { markdownParse } from "~/classes/functions/status";
|
|
||||||
import manifest from "~/package.json" with { type: "json" };
|
import manifest from "~/package.json" with { type: "json" };
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
@ -60,7 +60,7 @@ export default apiRoute((app) =>
|
||||||
}
|
}
|
||||||
| undefined;
|
| undefined;
|
||||||
|
|
||||||
const content = await markdownParse(
|
const content = await markdownToHtml(
|
||||||
config.instance.extended_description_path?.content ??
|
config.instance.extended_description_path?.content ??
|
||||||
"This is a [Versia](https://versia.pub) server with the default extended description.",
|
"This is a [Versia](https://versia.pub) server with the default extended description.",
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { PrivacyPolicy as PrivacyPolicySchema } from "@versia/client/schemas";
|
import { PrivacyPolicy as PrivacyPolicySchema } from "@versia/client/schemas";
|
||||||
|
import { apiRoute } from "@versia/kit/api";
|
||||||
|
import { markdownToHtml } from "@versia/kit/markdown";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute } from "@/api";
|
|
||||||
import { markdownParse } from "~/classes/functions/status";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
@ -27,7 +27,7 @@ export default apiRoute((app) =>
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
async (context) => {
|
async (context) => {
|
||||||
const content = await markdownParse(
|
const content = await markdownToHtml(
|
||||||
config.instance.privacy_policy_path?.content ??
|
config.instance.privacy_policy_path?.content ??
|
||||||
"This instance has not provided any privacy policy.",
|
"This instance has not provided any privacy policy.",
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { Rule as RuleSchema } from "@versia/client/schemas";
|
import { Rule as RuleSchema } from "@versia/client/schemas";
|
||||||
|
import { apiRoute } from "@versia/kit/api";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { TermsOfService as TermsOfServiceSchema } from "@versia/client/schemas";
|
import { TermsOfService as TermsOfServiceSchema } from "@versia/client/schemas";
|
||||||
|
import { apiRoute } from "@versia/kit/api";
|
||||||
|
import { markdownToHtml } from "@versia/kit/markdown";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute } from "@/api";
|
|
||||||
import { markdownParse } from "~/classes/functions/status";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
@ -28,7 +28,7 @@ export default apiRoute((app) =>
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
async (context) => {
|
async (context) => {
|
||||||
const content = await markdownParse(
|
const content = await markdownToHtml(
|
||||||
config.instance.tos_path?.content ??
|
config.instance.tos_path?.content ??
|
||||||
"This instance has not provided any terms of service.",
|
"This instance has not provided any terms of service.",
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import {
|
||||||
Status as StatusSchema,
|
Status as StatusSchema,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { Markers } from "@versia/kit/tables";
|
import { Markers } from "@versia/kit/tables";
|
||||||
import { randomUUIDv7 } from "bun";
|
import { randomUUIDv7 } from "bun";
|
||||||
|
|
@ -12,7 +13,6 @@ import { and, eq, type SQL } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
const MarkerResponseSchema = z.object({
|
const MarkerResponseSchema = z.object({
|
||||||
notifications: MarkerSchema.optional(),
|
notifications: MarkerSchema.optional(),
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Media } from "@versia/kit/db";
|
import { Media } from "@versia/kit/db";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Media } from "@versia/kit/db";
|
import { Media } from "@versia/kit/db";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Notification } from "@versia/kit/db";
|
import { Notification } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { validator } from "hono-openapi/zod";
|
import { validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,11 +3,11 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Notification } from "@versia/kit/db";
|
import { Notification } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { RolePermission } from "@versia/client/schemas";
|
import { RolePermission } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { RolePermission } from "@versia/client/schemas";
|
import { RolePermission } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, qsQuery } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { validator } from "hono-openapi/zod";
|
import { validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, qsQuery } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.delete(
|
app.delete(
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Notifications } from "@versia/kit/tables";
|
import { Notifications } 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 { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { Account, RolePermission } from "@versia/client/schemas";
|
import { Account, RolePermission } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.delete(
|
app.delete(
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { Account, RolePermission } from "@versia/client/schemas";
|
import { Account, RolePermission } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.delete(
|
app.delete(
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { RolePermission } from "@versia/client/schemas";
|
import { RolePermission } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { PushSubscription } from "@versia/kit/db";
|
import { PushSubscription } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.delete(
|
app.delete(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
WebPushSubscription as WebPushSubscriptionSchema,
|
WebPushSubscription as WebPushSubscriptionSchema,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth } from "@versia/kit/api";
|
||||||
import { PushSubscription } from "@versia/kit/db";
|
import { PushSubscription } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -4,11 +4,11 @@ import {
|
||||||
WebPushSubscription as WebPushSubscriptionSchema,
|
WebPushSubscription as WebPushSubscriptionSchema,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { PushSubscription } from "@versia/kit/db";
|
import { PushSubscription } from "@versia/kit/db";
|
||||||
import { randomUUIDv7 } from "bun";
|
import { randomUUIDv7 } from "bun";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ import {
|
||||||
WebPushSubscription as WebPushSubscriptionSchema,
|
WebPushSubscription as WebPushSubscriptionSchema,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { PushSubscription } from "@versia/kit/db";
|
import { PushSubscription } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.put(
|
app.put(
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { RolePermission, Role as RoleSchema } from "@versia/client/schemas";
|
import { RolePermission, Role as RoleSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Role } from "@versia/kit/db";
|
import { Role } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import { RolePermission, Role as RoleSchema } from "@versia/client/schemas";
|
import { RolePermission, Role as RoleSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Role } from "@versia/kit/db";
|
import { Role } from "@versia/kit/db";
|
||||||
import { randomUUIDv7 } from "bun";
|
import { randomUUIDv7 } from "bun";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withNoteParam } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -7,21 +7,21 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
import { Emoji, Media } from "@versia/kit/db";
|
|
||||||
import * as VersiaEntities from "@versia/sdk/entities";
|
|
||||||
import { config } from "@versia-server/config";
|
|
||||||
import { describeRoute } from "hono-openapi";
|
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
|
||||||
import { z } from "zod";
|
|
||||||
import {
|
import {
|
||||||
apiRoute,
|
apiRoute,
|
||||||
auth,
|
auth,
|
||||||
handleZodError,
|
handleZodError,
|
||||||
jsonOrForm,
|
jsonOrForm,
|
||||||
withNoteParam,
|
withNoteParam,
|
||||||
} from "@/api";
|
} from "@versia/kit/api";
|
||||||
|
import { Emoji, Media } from "@versia/kit/db";
|
||||||
|
import { parseMentionsFromText, versiaTextToHtml } from "@versia/kit/parsers";
|
||||||
|
import * as VersiaEntities from "@versia/sdk/entities";
|
||||||
|
import { config } from "@versia-server/config";
|
||||||
|
import { describeRoute } from "hono-openapi";
|
||||||
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
|
import { z } from "zod";
|
||||||
import { sanitizedHtmlStrip } from "@/sanitization";
|
import { sanitizedHtmlStrip } from "@/sanitization";
|
||||||
import { contentToHtml, parseTextMentions } from "~/classes/functions/status";
|
|
||||||
|
|
||||||
const schema = z
|
const schema = z
|
||||||
.object({
|
.object({
|
||||||
|
|
@ -256,7 +256,7 @@ export default apiRoute((app) => {
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const parsedMentions = statusText
|
const parsedMentions = statusText
|
||||||
? await parseTextMentions(statusText)
|
? await parseMentionsFromText(statusText)
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
const parsedEmojis = statusText
|
const parsedEmojis = statusText
|
||||||
|
|
@ -267,7 +267,7 @@ export default apiRoute((app) => {
|
||||||
spoilerText: sanitizedSpoilerText,
|
spoilerText: sanitizedSpoilerText,
|
||||||
sensitive,
|
sensitive,
|
||||||
content: content
|
content: content
|
||||||
? await contentToHtml(content, parsedMentions)
|
? await versiaTextToHtml(content, parsedMentions)
|
||||||
: undefined,
|
: undefined,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { and, eq, type SQL } from "drizzle-orm";
|
import { and, eq, type SQL } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withNoteParam } from "@versia/kit/api";
|
||||||
import { Emoji } from "@versia/kit/db";
|
import { Emoji } from "@versia/kit/db";
|
||||||
import { Emojis } from "@versia/kit/tables";
|
import { Emojis } from "@versia/kit/tables";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
|
|
@ -9,7 +10,6 @@ import emojis from "unicode-emoji-json/data-ordered-emoji.json" with {
|
||||||
type: "json",
|
type: "json",
|
||||||
};
|
};
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.put(
|
app.put(
|
||||||
|
|
|
||||||
|
|
@ -3,10 +3,10 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, jsonOrForm, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,13 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, withNoteParam } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Users } from "@versia/kit/tables";
|
import { Users } from "@versia/kit/tables";
|
||||||
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
import { and, gt, gte, lt, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import {
|
||||||
StatusSource as StatusSourceSchema,
|
StatusSource as StatusSourceSchema,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, withNoteParam } from "@versia/kit/api";
|
||||||
import { Note } from "@versia/kit/db";
|
import { Note } from "@versia/kit/db";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute, auth, withNoteParam } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -7,16 +7,16 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { Emoji, Media, Note } from "@versia/kit/db";
|
import { Emoji, Media, Note } from "@versia/kit/db";
|
||||||
|
import { parseMentionsFromText, versiaTextToHtml } from "@versia/kit/parsers";
|
||||||
import * as VersiaEntities from "@versia/sdk/entities";
|
import * as VersiaEntities from "@versia/sdk/entities";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { randomUUIDv7 } from "bun";
|
import { randomUUIDv7 } from "bun";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
import { sanitizedHtmlStrip } from "@/sanitization";
|
import { sanitizedHtmlStrip } from "@/sanitization";
|
||||||
import { contentToHtml, parseTextMentions } from "~/classes/functions/status";
|
|
||||||
|
|
||||||
const schema = z
|
const schema = z
|
||||||
.object({
|
.object({
|
||||||
|
|
@ -220,7 +220,7 @@ export default apiRoute((app) =>
|
||||||
: undefined;
|
: undefined;
|
||||||
|
|
||||||
const parsedMentions = status
|
const parsedMentions = status
|
||||||
? await parseTextMentions(status)
|
? await parseMentionsFromText(status)
|
||||||
: [];
|
: [];
|
||||||
|
|
||||||
const parsedEmojis = status
|
const parsedEmojis = status
|
||||||
|
|
@ -232,7 +232,7 @@ export default apiRoute((app) =>
|
||||||
authorId: user.id,
|
authorId: user.id,
|
||||||
visibility,
|
visibility,
|
||||||
content: content
|
content: content
|
||||||
? await contentToHtml(content, parsedMentions)
|
? await versiaTextToHtml(content, parsedMentions)
|
||||||
: undefined,
|
: undefined,
|
||||||
sensitive,
|
sensitive,
|
||||||
spoilerText: sanitizedSpoilerText,
|
spoilerText: sanitizedSpoilerText,
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
import { RolePermission, Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Notes } from "@versia/kit/tables";
|
import { Notes } 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 { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,13 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Timeline } from "@versia/kit/db";
|
import { Timeline } from "@versia/kit/db";
|
||||||
import { Notes } from "@versia/kit/tables";
|
import { Notes } 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 { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { FilterKeywords, Filters } from "@versia/kit/tables";
|
import { FilterKeywords, Filters } from "@versia/kit/tables";
|
||||||
import { and, eq, inArray, type SQL } from "drizzle-orm";
|
import { and, eq, inArray, type SQL } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError, jsonOrForm } from "@versia/kit/api";
|
||||||
import { db } from "@versia/kit/db";
|
import { db } from "@versia/kit/db";
|
||||||
import { FilterKeywords, Filters } from "@versia/kit/tables";
|
import { FilterKeywords, Filters } from "@versia/kit/tables";
|
||||||
import { randomUUIDv7 } from "bun";
|
import { randomUUIDv7 } from "bun";
|
||||||
|
|
@ -11,7 +12,6 @@ import { eq, type SQL } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, jsonOrForm } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) => {
|
export default apiRoute((app) => {
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import { Instance as InstanceSchema } from "@versia/client/schemas";
|
import { Instance as InstanceSchema } from "@versia/client/schemas";
|
||||||
|
import { apiRoute } from "@versia/kit/api";
|
||||||
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 { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { and, eq, isNull } from "drizzle-orm";
|
import { and, eq, isNull } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver } from "hono-openapi/zod";
|
import { resolver } from "hono-openapi/zod";
|
||||||
import { apiRoute } from "@/api";
|
|
||||||
import pkg from "~/package.json" with { type: "json" };
|
import pkg from "~/package.json" with { type: "json" };
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,12 @@ import {
|
||||||
RolePermission,
|
RolePermission,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { Media } from "@versia/kit/db";
|
import { Media } from "@versia/kit/db";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.post(
|
app.post(
|
||||||
|
|
|
||||||
|
|
@ -7,14 +7,15 @@ import {
|
||||||
zBoolean,
|
zBoolean,
|
||||||
} from "@versia/client/schemas";
|
} from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, auth, handleZodError } from "@versia/kit/api";
|
||||||
import { db, Note, User } from "@versia/kit/db";
|
import { db, Note, User } from "@versia/kit/db";
|
||||||
|
import { parseUserAddress } from "@versia/kit/parsers";
|
||||||
import { Instances, Notes, Users } from "@versia/kit/tables";
|
import { Instances, Notes, Users } from "@versia/kit/tables";
|
||||||
import { config } from "@versia-server/config";
|
import { config } from "@versia-server/config";
|
||||||
import { and, eq, inArray, isNull, sql } from "drizzle-orm";
|
import { and, eq, inArray, isNull, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, auth, handleZodError, parseUserAddress } from "@/api";
|
|
||||||
import { searchManager } from "~/classes/search/search-manager";
|
import { searchManager } from "~/classes/search/search-manager";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
import { apiRoute, handleZodError } from "@versia/kit/api";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { validator } from "hono-openapi/zod";
|
import { validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, handleZodError } from "@/api";
|
|
||||||
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
|
import { InboxJobType, inboxQueue } from "~/classes/queues/inbox";
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import { Status as StatusSchema } from "@versia/client/schemas";
|
import { Status as StatusSchema } from "@versia/client/schemas";
|
||||||
import { ApiError } from "@versia/kit";
|
import { ApiError } from "@versia/kit";
|
||||||
|
import { apiRoute, handleZodError } from "@versia/kit/api";
|
||||||
import { Like, User } from "@versia/kit/db";
|
import { Like, User } from "@versia/kit/db";
|
||||||
import { Likes } from "@versia/kit/tables";
|
import { Likes } from "@versia/kit/tables";
|
||||||
import { LikeSchema } from "@versia/sdk/schemas";
|
import { LikeSchema } from "@versia/sdk/schemas";
|
||||||
|
|
@ -8,7 +9,6 @@ import { and, eq, sql } from "drizzle-orm";
|
||||||
import { describeRoute } from "hono-openapi";
|
import { describeRoute } from "hono-openapi";
|
||||||
import { resolver, validator } from "hono-openapi/zod";
|
import { resolver, validator } from "hono-openapi/zod";
|
||||||
import { z } from "zod";
|
import { z } from "zod";
|
||||||
import { apiRoute, handleZodError } from "@/api";
|
|
||||||
|
|
||||||
export default apiRoute((app) =>
|
export default apiRoute((app) =>
|
||||||
app.get(
|
app.get(
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue