diff --git a/build.ts b/build.ts index 34470c13..5937c19c 100644 --- a/build.ts +++ b/build.ts @@ -44,6 +44,9 @@ await cp(process.cwd() + "/pages/dist", process.cwd() + "/dist/pages/", { }); // Copy the Bee Movie script from pages -await cp(process.cwd() + "/pages/beemovie.txt", process.cwd() + "/dist/pages/"); +await cp( + process.cwd() + "/pages/beemovie.txt", + process.cwd() + "/dist/pages/beemovie.txt" +); console.log(`Built!`); diff --git a/bun.lockb b/bun.lockb index 852af73f..5aa839bf 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/database/entities/Attachment.ts b/database/entities/Attachment.ts index abb07c9e..9519eaeb 100644 --- a/database/entities/Attachment.ts +++ b/database/entities/Attachment.ts @@ -61,7 +61,7 @@ export const getUrl = (name: string, config: ConfigType) => { // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison if (config.media.backend === MediaBackendType.LOCAL) { return `${config.http.base_url}/media/${name}`; - // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison + // eslint-disable-next-line @typescript-eslint/no-unsafe-enum-comparison, @typescript-eslint/no-unnecessary-condition } else if (config.media.backend === MediaBackendType.S3) { return `${config.s3.public_url}/${name}`; } diff --git a/database/entities/Queue.ts b/database/entities/Queue.ts index a4e8b374..c5775142 100644 --- a/database/entities/Queue.ts +++ b/database/entities/Queue.ts @@ -1,10 +1,5 @@ // import { Worker } from "bullmq"; -import { client /* federationQueue */ } from "~database/datasource"; -import { - statusAndUserRelations, - statusToLysand, - type StatusWithRelations, -} from "./Status"; +import { statusToLysand, type StatusWithRelations } from "./Status"; import type { User } from "@prisma/client"; import { ConfigManager } from "config-manager"; @@ -157,7 +152,7 @@ export const federateStatusTo = async ( ); // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - const userInbox = new URL((user.endpoints as any).inbox); + const userInbox = new URL(user.endpoints.inbox); const date = new Date(); diff --git a/database/entities/Status.ts b/database/entities/Status.ts index b3ff0d6c..a0fec241 100644 --- a/database/entities/Status.ts +++ b/database/entities/Status.ts @@ -1,11 +1,6 @@ /* eslint-disable @typescript-eslint/no-unsafe-member-access */ import type { UserWithRelations } from "./User"; -import { - fetchRemoteUser, - parseMentionsUris, - userRelations, - userToAPI, -} from "./User"; +import { fetchRemoteUser, parseMentionsUris, userToAPI } from "./User"; import { client } from "~database/datasource"; import type { LysandPublication, Note } from "~types/lysand/Object"; import { htmlToText } from "html-to-text"; @@ -29,104 +24,10 @@ import linkifyStr from "linkify-string"; import linkifyHtml from "linkify-html"; import { addStausToMeilisearch } from "@meilisearch"; import { ConfigManager } from "config-manager"; +import { statusAndUserRelations, userRelations } from "./relations"; const config = await new ConfigManager({}).getConfig(); -export const statusAndUserRelations: Prisma.StatusInclude = { - author: { - include: userRelations, - }, - application: true, - emojis: true, - inReplyToPost: { - include: { - author: { - include: userRelations, - }, - application: true, - emojis: true, - inReplyToPost: { - include: { - author: true, - }, - }, - instance: true, - mentions: true, - pinnedBy: true, - _count: { - select: { - replies: true, - }, - }, - }, - }, - reblogs: true, - attachments: true, - instance: true, - mentions: { - include: userRelations, - }, - pinnedBy: true, - _count: { - select: { - replies: true, - likes: true, - reblogs: true, - }, - }, - reblog: { - include: { - author: { - include: userRelations, - }, - application: true, - emojis: true, - inReplyToPost: { - include: { - author: true, - }, - }, - instance: true, - mentions: { - include: userRelations, - }, - pinnedBy: true, - _count: { - select: { - replies: true, - }, - }, - }, - }, - quotingPost: { - include: { - author: { - include: userRelations, - }, - application: true, - emojis: true, - inReplyToPost: { - include: { - author: true, - }, - }, - instance: true, - mentions: true, - pinnedBy: true, - _count: { - select: { - replies: true, - }, - }, - }, - }, - likes: { - include: { - liker: true, - }, - }, -}; - const statusRelations = Prisma.validator()({ include: statusAndUserRelations, }); diff --git a/database/entities/User.ts b/database/entities/User.ts index b4bf1764..1b06b1cf 100644 --- a/database/entities/User.ts +++ b/database/entities/User.ts @@ -9,6 +9,8 @@ import { addInstanceIfNotExists } from "./Instance"; import type { APISource } from "~types/entities/source"; import { addUserToMeilisearch } from "@meilisearch"; import { ConfigManager, type ConfigType } from "config-manager"; +import { userRelations } from "./relations"; +import { MediaBackendType } from "~packages/media-manager"; const configManager = new ConfigManager({}); const config = await configManager.getConfig(); @@ -23,21 +25,6 @@ export interface AuthData { * Stores local and remote users */ -export const userRelations: Prisma.UserInclude = { - emojis: true, - instance: true, - likes: true, - relationships: true, - relationshipSubjects: true, - pinnedNotes: true, - _count: { - select: { - statuses: true, - likes: true, - }, - }, -}; - const userRelations2 = Prisma.validator()({ include: userRelations, }); @@ -51,9 +38,10 @@ export type UserWithRelations = Prisma.UserGetPayload; */ export const getAvatarUrl = (user: User, config: ConfigType) => { if (!user.avatar) return config.defaults.avatar; - if (config.media.backend === "local") { + if (config.media.backend === MediaBackendType.LOCAL) { return `${config.http.base_url}/media/${user.avatar}`; - } else if (config.media.backend === "s3") { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + } else if (config.media.backend === MediaBackendType.S3) { return `${config.s3.public_url}/${user.avatar}`; } return ""; @@ -66,9 +54,10 @@ export const getAvatarUrl = (user: User, config: ConfigType) => { */ export const getHeaderUrl = (user: User, config: ConfigType) => { if (!user.header) return config.defaults.header; - if (config.media.backend === "local") { + if (config.media.backend === MediaBackendType.LOCAL) { return `${config.http.base_url}/media/${user.header}`; - } else if (config.media.backend === "s3") { + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + } else if (config.media.backend === MediaBackendType.S3) { return `${config.s3.public_url}/${user.header}`; } return ""; @@ -366,7 +355,7 @@ export const userToAPI = ( bot: user.isBot, source: isOwnAccount && user.source - ? (user.source as any as APISource) + ? (user.source as APISource) : undefined, // TODO: Add static avatar and header avatar_static: "", diff --git a/database/entities/relations.ts b/database/entities/relations.ts new file mode 100644 index 00000000..65e061f3 --- /dev/null +++ b/database/entities/relations.ts @@ -0,0 +1,111 @@ +import type { Prisma } from "@prisma/client"; + +export const userRelations: Prisma.UserInclude = { + emojis: true, + instance: true, + likes: true, + relationships: true, + relationshipSubjects: true, + pinnedNotes: true, + _count: { + select: { + statuses: true, + likes: true, + }, + }, +}; + +export const statusAndUserRelations: Prisma.StatusInclude = { + author: { + include: userRelations, + }, + application: true, + emojis: true, + inReplyToPost: { + include: { + author: { + include: userRelations, + }, + application: true, + emojis: true, + inReplyToPost: { + include: { + author: true, + }, + }, + instance: true, + mentions: true, + pinnedBy: true, + _count: { + select: { + replies: true, + }, + }, + }, + }, + reblogs: true, + attachments: true, + instance: true, + mentions: { + include: userRelations, + }, + pinnedBy: true, + _count: { + select: { + replies: true, + likes: true, + reblogs: true, + }, + }, + reblog: { + include: { + author: { + include: userRelations, + }, + application: true, + emojis: true, + inReplyToPost: { + include: { + author: true, + }, + }, + instance: true, + mentions: { + include: userRelations, + }, + pinnedBy: true, + _count: { + select: { + replies: true, + }, + }, + }, + }, + quotingPost: { + include: { + author: { + include: userRelations, + }, + application: true, + emojis: true, + inReplyToPost: { + include: { + author: true, + }, + }, + instance: true, + mentions: true, + pinnedBy: true, + _count: { + select: { + replies: true, + }, + }, + }, + }, + likes: { + include: { + liker: true, + }, + }, +}; diff --git a/package.json b/package.json index 2ab5882a..120ebae9 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "activitypub", "bun" ], + "workspaces": ["packages/*"], "maintainers": [ { "email": "contact@cpluspatch.com", @@ -85,14 +86,13 @@ "@aws-sdk/client-s3": "^3.461.0", "@iarna/toml": "^2.2.5", "@json2csv/plainjs": "^7.0.6", - "@jsr/bradenmacdonald__s3-lite-client": "npm:@jsr/bradenmacdonald__s3-lite-client", + "cli-parser": "workspace:*", "@prisma/client": "^5.6.0", "blurhash": "^2.0.5", "bullmq": "latest", "chalk": "^5.3.0", - "cli-parser": "file:packages/cli-parser", "cli-table": "^0.3.11", - "config-manager": "file:packages/config-manager", + "config-manager": "workspace:*", "eventemitter3": "^5.0.1", "extract-zip": "^2.0.1", "html-to-text": "^9.0.5", @@ -104,9 +104,9 @@ "linkify-html": "^4.1.3", "linkify-string": "^4.1.3", "linkifyjs": "^4.1.3", - "log-manager": "file:packages/log-manager", + "log-manager": "workspace:*", "marked": "latest", - "media-manager": "file:packages/media-manager", + "media-manager": "workspace:*", "megalodon": "^9.1.1", "meilisearch": "latest", "merge-deep-ts": "^1.2.6", @@ -115,7 +115,7 @@ "prisma": "^5.6.0", "prisma-json-types-generator": "^3.0.4", "prisma-redis-middleware": "^4.8.0", - "request-parser": "file:packages/request-parser", + "request-parser": "workspace:*", "semver": "^7.5.4", "sharp": "^0.33.0-rc.2", "strip-ansi": "^7.1.0" diff --git a/packages/cli-parser/bun.lockb b/packages/cli-parser/bun.lockb deleted file mode 100755 index 249be439..00000000 Binary files a/packages/cli-parser/bun.lockb and /dev/null differ diff --git a/packages/cli-parser/package.json b/packages/cli-parser/package.json index 9cb5b94e..50e28772 100644 --- a/packages/cli-parser/package.json +++ b/packages/cli-parser/package.json @@ -1,6 +1,6 @@ { - "name": "arg-parser", + "name": "cli-parser", "version": "0.0.0", "main": "index.ts", - "dependencies": { } + "dependencies": { "chalk": "^5.3.0", "strip-ansi": "^7.1.0" } } \ No newline at end of file diff --git a/packages/config-manager/index.ts b/packages/config-manager/index.ts index 02dfbe5d..fb507489 100644 --- a/packages/config-manager/index.ts +++ b/packages/config-manager/index.ts @@ -26,7 +26,11 @@ export class ConfigManager { const config = await this.readConfig(); const internalConfig = await this.readInternalConfig(); - return this.mergeConfigs(configDefaults as T, config, internalConfig); + return this.mergeConfigs( + configDefaults as T, + config, + internalConfig + ); } getConfigPath() { diff --git a/packages/config-manager/package.json b/packages/config-manager/package.json index e3c7ad60..690b334e 100644 --- a/packages/config-manager/package.json +++ b/packages/config-manager/package.json @@ -1,6 +1,6 @@ { - "name": "config-manager", - "version": "0.0.0", - "main": "index.ts", - "dependencies": {} + "name": "config-manager", + "version": "0.0.0", + "main": "index.ts", + "dependencies": { "@iarna/toml": "^2.2.5", "merge-deep-ts": "^1.2.6" } } \ No newline at end of file diff --git a/packages/media-manager/backends/s3.ts b/packages/media-manager/backends/s3.ts index 46c2cb41..76a19415 100644 --- a/packages/media-manager/backends/s3.ts +++ b/packages/media-manager/backends/s3.ts @@ -1,4 +1,4 @@ -import { S3Client } from "@bradenmacdonald/s3-lite-client"; +import { S3Client } from "@jsr/bradenmacdonald__s3-lite-client"; import type { ConvertableMediaFormats } from "../media-converter"; import { MediaConverter } from "../media-converter"; import { MediaBackend, MediaBackendType, MediaHasher } from ".."; diff --git a/packages/media-manager/bun.lockb b/packages/media-manager/bun.lockb index 202c862d..44680ce8 100755 Binary files a/packages/media-manager/bun.lockb and b/packages/media-manager/bun.lockb differ diff --git a/packages/media-manager/package.json b/packages/media-manager/package.json index 70a73add..374bcc75 100644 --- a/packages/media-manager/package.json +++ b/packages/media-manager/package.json @@ -2,5 +2,8 @@ "name": "media-manager", "version": "0.0.0", "main": "index.ts", - "dependencies": {} + "dependencies": { + "@jsr/bradenmacdonald__s3-lite-client": "npm:@jsr/bradenmacdonald__s3-lite-client", + "config-manager": "workspace:*" + } } \ No newline at end of file diff --git a/packages/protocol-translator/package.json b/packages/protocol-translator/package.json index c5e710d0..4262e9d5 100644 --- a/packages/protocol-translator/package.json +++ b/packages/protocol-translator/package.json @@ -1,6 +1,9 @@ { - "name": "protocol-translator", - "version": "0.0.0", - "main": "index.ts", - "dependencies": {} + "name": "protocol-translator", + "version": "0.0.0", + "main": "index.ts", + "dependencies": {}, + "devDependencies": { + "activitypub-types": "^1.1.0" + } } \ No newline at end of file diff --git a/pages/pages/oauth/authorize.vue b/pages/pages/oauth/authorize.vue index a4aac9f1..256f3444 100644 --- a/pages/pages/oauth/authorize.vue +++ b/pages/pages/oauth/authorize.vue @@ -1,6 +1,7 @@