mirror of
https://github.com/versia-pub/server.git
synced 2026-03-13 05:49:16 +01:00
docs(federation): 📝 Update SDK documentation
This commit is contained in:
parent
f79b0bc999
commit
45e5460975
67 changed files with 332 additions and 65 deletions
|
|
@ -2,8 +2,6 @@ import { emojiValidatorWithColons, emojiValidatorWithIdentifiers } from "@/api";
|
|||
import type { CustomEmoji } from "@versia/client/schemas";
|
||||
import { type Instance, Media, db } from "@versia/kit/db";
|
||||
import { Emojis, type Instances, type Medias } from "@versia/kit/tables";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import type { ImageContentFormatSchema } from "@versia/sdk/schemas";
|
||||
import { randomUUIDv7 } from "bun";
|
||||
import {
|
||||
type InferInsertModel,
|
||||
|
|
@ -16,6 +14,8 @@ import {
|
|||
isNull,
|
||||
} from "drizzle-orm";
|
||||
import type { z } from "zod";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import type { ImageContentFormatSchema } from "~/packages/sdk/schemas/index.ts";
|
||||
import { BaseInterface } from "./base.ts";
|
||||
|
||||
type EmojiType = InferSelectModel<typeof Emojis> & {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
import { getLogger } from "@logtape/logtape";
|
||||
import { db } from "@versia/kit/db";
|
||||
import { Instances } from "@versia/kit/tables";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import { randomUUIDv7 } from "bun";
|
||||
import chalk from "chalk";
|
||||
import {
|
||||
|
|
@ -13,6 +12,7 @@ import {
|
|||
inArray,
|
||||
} from "drizzle-orm";
|
||||
import { config } from "~/config.ts";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import { ApiError } from "../errors/api-error.ts";
|
||||
import { BaseInterface } from "./base.ts";
|
||||
import { User } from "./user.ts";
|
||||
|
|
@ -319,7 +319,9 @@ export class Instance extends BaseInterface<typeof Instances> {
|
|||
);
|
||||
|
||||
if (!output) {
|
||||
logger.error`Failed to update instance ${chalk.bold(this.data.baseUrl)}`;
|
||||
logger.error`Failed to update instance ${chalk.bold(
|
||||
this.data.baseUrl,
|
||||
)}`;
|
||||
throw new Error("Failed to update instance");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@ import {
|
|||
Notifications,
|
||||
type Users,
|
||||
} from "@versia/kit/tables";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import {
|
||||
type InferInsertModel,
|
||||
type InferSelectModel,
|
||||
|
|
@ -16,6 +15,7 @@ import {
|
|||
inArray,
|
||||
} from "drizzle-orm";
|
||||
import { config } from "~/config.ts";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import { BaseInterface } from "./base.ts";
|
||||
import { User } from "./user.ts";
|
||||
|
||||
|
|
|
|||
|
|
@ -3,11 +3,6 @@ import { mimeLookup } from "@/content_types.ts";
|
|||
import type { Attachment as AttachmentSchema } from "@versia/client/schemas";
|
||||
import { db } from "@versia/kit/db";
|
||||
import { Medias } from "@versia/kit/tables";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import type {
|
||||
ContentFormatSchema,
|
||||
ImageContentFormatSchema,
|
||||
} from "@versia/sdk/schemas";
|
||||
import { S3Client, SHA256, randomUUIDv7, write } from "bun";
|
||||
import {
|
||||
type InferInsertModel,
|
||||
|
|
@ -21,6 +16,11 @@ import sharp from "sharp";
|
|||
import type { z } from "zod";
|
||||
import { MediaBackendType } from "~/classes/config/schema.ts";
|
||||
import { config } from "~/config.ts";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import type {
|
||||
ContentFormatSchema,
|
||||
ImageContentFormatSchema,
|
||||
} from "~/packages/sdk/schemas/index.ts";
|
||||
import { ApiError } from "../errors/api-error.ts";
|
||||
import { getMediaHash } from "../media/media-hasher.ts";
|
||||
import { ProxiableUrl } from "../media/url.ts";
|
||||
|
|
@ -278,7 +278,9 @@ export class Media extends BaseInterface<typeof Medias> {
|
|||
throw new ApiError(
|
||||
415,
|
||||
`File type ${file.type} is not allowed`,
|
||||
`Allowed types: ${config.validation.media.allowed_mime_types.join(", ")}`,
|
||||
`Allowed types: ${config.validation.media.allowed_mime_types.join(
|
||||
", ",
|
||||
)}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import {
|
|||
Notes,
|
||||
Users,
|
||||
} from "@versia/kit/tables";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import { randomUUIDv7 } from "bun";
|
||||
import {
|
||||
type InferInsertModel,
|
||||
|
|
@ -28,7 +27,8 @@ import { createRegExp, exactly, global } from "magic-regexp";
|
|||
import type { z } from "zod";
|
||||
import { contentToHtml, findManyNotes } from "~/classes/functions/status";
|
||||
import { config } from "~/config.ts";
|
||||
import type { NonTextContentFormatSchema } from "~/packages/federation/schemas/contentformat.ts";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import type { NonTextContentFormatSchema } from "~/packages/sdk/schemas/contentformat.ts";
|
||||
import { DeliveryJobType, deliveryQueue } from "../queues/delivery.ts";
|
||||
import { Application } from "./application.ts";
|
||||
import { BaseInterface } from "./base.ts";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
import { Emoji, Instance, type Note, User, db } from "@versia/kit/db";
|
||||
import { type Notes, Reactions, type Users } from "@versia/kit/tables";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import { randomUUIDv7 } from "bun";
|
||||
import {
|
||||
type InferInsertModel,
|
||||
|
|
@ -11,6 +10,7 @@ import {
|
|||
inArray,
|
||||
} from "drizzle-orm";
|
||||
import { config } from "~/config.ts";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import { BaseInterface } from "./base.ts";
|
||||
|
||||
type ReactionType = InferSelectModel<typeof Reactions> & {
|
||||
|
|
|
|||
|
|
@ -19,10 +19,6 @@ import {
|
|||
UserToPinnedNotes,
|
||||
Users,
|
||||
} from "@versia/kit/tables";
|
||||
import { sign } from "@versia/sdk/crypto";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import { FederationRequester } from "@versia/sdk/http";
|
||||
import type { ImageContentFormatSchema } from "@versia/sdk/schemas";
|
||||
import { randomUUIDv7 } from "bun";
|
||||
import { password as bunPassword } from "bun";
|
||||
import chalk from "chalk";
|
||||
|
|
@ -45,6 +41,10 @@ import type { z } from "zod";
|
|||
import { findManyUsers } from "~/classes/functions/user";
|
||||
import { searchManager } from "~/classes/search/search-manager";
|
||||
import { config } from "~/config.ts";
|
||||
import { sign } from "~/packages/sdk/crypto.ts";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import { FederationRequester } from "~/packages/sdk/http.ts";
|
||||
import type { ImageContentFormatSchema } from "~/packages/sdk/schemas/index.ts";
|
||||
import type { HttpVerb, KnownEntity } from "~/types/api.ts";
|
||||
import { ProxiableUrl } from "../media/url.ts";
|
||||
import { DeliveryJobType, deliveryQueue } from "../queues/delivery.ts";
|
||||
|
|
@ -1023,8 +1023,9 @@ export class User extends BaseInterface<typeof Users, UserWithRelations> {
|
|||
entity,
|
||||
);
|
||||
} catch (e) {
|
||||
getLogger(["federation", "delivery"])
|
||||
.error`Federating ${chalk.gray(entity.data.type)} to ${user.uri} ${chalk.bold.red("failed")}`;
|
||||
getLogger(["federation", "delivery"]).error`Federating ${chalk.gray(
|
||||
entity.data.type,
|
||||
)} to ${user.uri} ${chalk.bold.red("failed")}`;
|
||||
getLogger(["federation", "delivery"]).error`${e}`;
|
||||
sentry?.captureException(e);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ import { sanitizeHtml, sanitizeHtmlInline } from "@/sanitization";
|
|||
import markdownItTaskLists from "@hackmd/markdown-it-task-lists";
|
||||
import { type Note, User, db } from "@versia/kit/db";
|
||||
import { Instances, Users } from "@versia/kit/tables";
|
||||
import type * as VersiaEntities from "@versia/sdk/entities";
|
||||
import { and, eq, inArray, isNull, or, sql } from "drizzle-orm";
|
||||
import linkifyHtml from "linkify-html";
|
||||
import {
|
||||
|
|
@ -19,6 +18,7 @@ import MarkdownIt from "markdown-it";
|
|||
import markdownItContainer from "markdown-it-container";
|
||||
import markdownItTocDoneRight from "markdown-it-toc-done-right";
|
||||
import { config } from "~/config.ts";
|
||||
import type * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import {
|
||||
transformOutputToUserWithRelations,
|
||||
userExtrasTemplate,
|
||||
|
|
|
|||
|
|
@ -2,9 +2,6 @@ import { sentry } from "@/sentry";
|
|||
import { type Logger, getLogger } from "@logtape/logtape";
|
||||
import { type Instance, Like, Note, Relationship, User } from "@versia/kit/db";
|
||||
import { Likes, Notes } from "@versia/kit/tables";
|
||||
import { EntitySorter } from "@versia/sdk";
|
||||
import { verify } from "@versia/sdk/crypto";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import type { SocketAddress } from "bun";
|
||||
import { Glob } from "bun";
|
||||
import chalk from "chalk";
|
||||
|
|
@ -12,7 +9,10 @@ import { eq } from "drizzle-orm";
|
|||
import { matches } from "ip-matching";
|
||||
import { isValidationError } from "zod-validation-error";
|
||||
import { config } from "~/config.ts";
|
||||
import type { JSONObject } from "~/packages/federation/types.ts";
|
||||
import { verify } from "~/packages/sdk/crypto.ts";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities/index.ts";
|
||||
import { EntitySorter } from "~/packages/sdk/inbox-processor.ts";
|
||||
import type { JSONObject } from "~/packages/sdk/types.ts";
|
||||
import { ApiError } from "../errors/api-error.ts";
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
import { User } from "@versia/kit/db";
|
||||
import * as VersiaEntities from "@versia/sdk/entities";
|
||||
import { Queue } from "bullmq";
|
||||
import { Worker } from "bullmq";
|
||||
import chalk from "chalk";
|
||||
import { config } from "~/config.ts";
|
||||
import type { JSONObject } from "~/packages/federation/types";
|
||||
import * as VersiaEntities from "~/packages/sdk/entities";
|
||||
import type { JSONObject } from "~/packages/sdk/types";
|
||||
import { connection } from "~/utils/redis.ts";
|
||||
|
||||
export enum DeliveryJobType {
|
||||
|
|
@ -40,7 +40,9 @@ export const getDeliveryWorker = (): Worker<
|
|||
|
||||
if (!sender) {
|
||||
throw new Error(
|
||||
`Could not resolve sender ID ${chalk.gray(senderId)}`,
|
||||
`Could not resolve sender ID ${chalk.gray(
|
||||
senderId,
|
||||
)}`,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -48,12 +50,16 @@ export const getDeliveryWorker = (): Worker<
|
|||
|
||||
if (!recipient) {
|
||||
throw new Error(
|
||||
`Could not resolve recipient ID ${chalk.gray(recipientId)}`,
|
||||
`Could not resolve recipient ID ${chalk.gray(
|
||||
recipientId,
|
||||
)}`,
|
||||
);
|
||||
}
|
||||
|
||||
await job.log(
|
||||
`Federating entity [${entity.id}] from @${sender.getAcct()} to @${recipient.getAcct()}`,
|
||||
`Federating entity [${
|
||||
entity.id
|
||||
}] from @${sender.getAcct()} to @${recipient.getAcct()}`,
|
||||
);
|
||||
|
||||
const type = entity.type;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import { Queue } from "bullmq";
|
|||
import { Worker } from "bullmq";
|
||||
import type { SocketAddress } from "bun";
|
||||
import { config } from "~/config.ts";
|
||||
import type { JSONObject } from "~/packages/federation/types.ts";
|
||||
import type { JSONObject } from "~/packages/sdk/types.ts";
|
||||
import { connection } from "~/utils/redis.ts";
|
||||
import { ApiError } from "../errors/api-error.ts";
|
||||
import { InboxProcessor } from "../inbox/processor.ts";
|
||||
|
|
@ -182,7 +182,9 @@ export const getInboxWorker = (): Worker<InboxJobData, void, InboxJobType> =>
|
|||
);
|
||||
|
||||
await remoteInstance.sendMessage(
|
||||
`Failed processing entity [${data.uri}] delivered to inbox. Returned error:\n\n${JSON.stringify(
|
||||
`Failed processing entity [${
|
||||
data.uri
|
||||
}] delivered to inbox. Returned error:\n\n${JSON.stringify(
|
||||
e.message,
|
||||
null,
|
||||
4,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue