diff --git a/src/api/middlewares/Authentication.ts b/src/api/middlewares/Authentication.ts
index f67413426..9e2fa8173 100644
--- a/src/api/middlewares/Authentication.ts
+++ b/src/api/middlewares/Authentication.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { checkToken, Rights, Session, User, UserTokenData } from "@spacebar/util";
import { NextFunction, Request, Response } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { Session, User } from "@spacebar/database";
+import { checkToken, Rights, UserTokenData } from "@spacebar/util";
export const NO_AUTHORIZATION_ROUTES = [
// Authentication routes
diff --git a/src/api/routes/applications/#application_id/bot/index.ts b/src/api/routes/applications/#application_id/bot/index.ts
index bd8717456..443b5d02e 100644
--- a/src/api/routes/applications/#application_id/bot/index.ts
+++ b/src/api/routes/applications/#application_id/bot/index.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Application, DiscordApiErrors, FieldErrors, User, createAppBotUser, generateToken, handleFile } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { verifyToken } from "node-2fa";
+import { route } from "@spacebar/api";
+import { Application, User } from "@spacebar/database";
+import { DiscordApiErrors, FieldErrors, createAppBotUser, generateToken, handleFile } from "@spacebar/util";
import { BotModifySchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/applications/#application_id/commands/#command_id/index.ts b/src/api/routes/applications/#application_id/commands/#command_id/index.ts
index e0618613a..5aec66cdf 100644
--- a/src/api/routes/applications/#application_id/commands/#command_id/index.ts
+++ b/src/api/routes/applications/#application_id/commands/#command_id/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { ApplicationCommandCreateSchema, ApplicationCommandSchema } from "@spacebar/schemas";
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { Application, ApplicationCommand, FieldErrors, Snowflake } from "@spacebar/util";
+import { route } from "@spacebar/api";
+import { Application, ApplicationCommand } from "@spacebar/database";
+import { FieldErrors, Snowflake } from "@spacebar/util";
+import { ApplicationCommandCreateSchema, ApplicationCommandSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/applications/#application_id/commands/index.ts b/src/api/routes/applications/#application_id/commands/index.ts
index a3aaec2f2..c01a99f4a 100644
--- a/src/api/routes/applications/#application_id/commands/index.ts
+++ b/src/api/routes/applications/#application_id/commands/index.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
+import { Request, Response, Router } from "express";
+import { IsNull } from "typeorm";
import { ApplicationCommandCreateSchema, ApplicationCommandSchema } from "@spacebar/schemas";
import { route } from "@spacebar/api";
-import { Request, Response, Router } from "express";
-import { Application, ApplicationCommand, FieldErrors, Snowflake } from "@spacebar/util";
-import { IsNull } from "typeorm";
+import { Application, ApplicationCommand } from "@spacebar/database";
+import { FieldErrors, Snowflake } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/applications/#application_id/guilds/#guild_id/commands/#command_id/index.ts b/src/api/routes/applications/#application_id/guilds/#guild_id/commands/#command_id/index.ts
index 16d7786b3..847d18245 100644
--- a/src/api/routes/applications/#application_id/guilds/#guild_id/commands/#command_id/index.ts
+++ b/src/api/routes/applications/#application_id/guilds/#guild_id/commands/#command_id/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { ApplicationCommandCreateSchema, ApplicationCommandSchema } from "@spacebar/schemas";
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { Application, ApplicationCommand, FieldErrors, Guild, Member, Snowflake } from "@spacebar/util";
+import { route } from "@spacebar/api";
+import { Application, ApplicationCommand, Guild, Member } from "@spacebar/database";
+import { FieldErrors, Snowflake } from "@spacebar/util";
+import { ApplicationCommandCreateSchema, ApplicationCommandSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/applications/#application_id/guilds/#guild_id/commands/index.ts b/src/api/routes/applications/#application_id/guilds/#guild_id/commands/index.ts
index e51a43182..3664aa0cb 100644
--- a/src/api/routes/applications/#application_id/guilds/#guild_id/commands/index.ts
+++ b/src/api/routes/applications/#application_id/guilds/#guild_id/commands/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { ApplicationCommandCreateSchema, ApplicationCommandSchema } from "@spacebar/schemas";
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { Application, ApplicationCommand, FieldErrors, Guild, Member, Snowflake } from "@spacebar/util";
+import { route } from "@spacebar/api";
+import { Application, ApplicationCommand, Guild, Member } from "@spacebar/database";
+import { FieldErrors, Snowflake } from "@spacebar/util";
+import { ApplicationCommandCreateSchema, ApplicationCommandSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/applications/#application_id/index.ts b/src/api/routes/applications/#application_id/index.ts
index 5b885332b..2a520def5 100644
--- a/src/api/routes/applications/#application_id/index.ts
+++ b/src/api/routes/applications/#application_id/index.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Application, DiscordApiErrors, FieldErrors, Guild, handleFile, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { verifyToken } from "node-2fa";
+import { route } from "@spacebar/api";
+import { Application, Guild, User } from "@spacebar/database";
+import { DiscordApiErrors, FieldErrors, handleFile } from "@spacebar/util";
import { ApplicationModifySchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/applications/@me.ts b/src/api/routes/applications/@me.ts
index 887dcb13e..308bb4eec 100644
--- a/src/api/routes/applications/@me.ts
+++ b/src/api/routes/applications/@me.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Application, Guild, handleFile } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Application, Guild } from "@spacebar/database";
+import { handleFile } from "@spacebar/util";
import { ApplicationModifySchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/applications/index.ts b/src/api/routes/applications/index.ts
index 2240379a0..820716b5d 100644
--- a/src/api/routes/applications/index.ts
+++ b/src/api/routes/applications/index.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Application, Config, createAppBotUser, trimSpecial } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Application } from "@spacebar/database";
+import { Config, createAppBotUser, trimSpecial } from "@spacebar/util";
import { ApplicationCreateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/auth/forgot.ts b/src/api/routes/auth/forgot.ts
index 4ebb96545..3c1258f28 100644
--- a/src/api/routes/auth/forgot.ts
+++ b/src/api/routes/auth/forgot.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route, verifyCaptcha } from "@spacebar/api";
-import { Config, Email, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route, verifyCaptcha } from "@spacebar/api";
+import { User } from "@spacebar/database";
+import { Config, Email } from "@spacebar/util";
import { ForgotPasswordSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.post(
diff --git a/src/api/routes/auth/generate-registration-tokens.ts b/src/api/routes/auth/generate-registration-tokens.ts
index 1493c2dcb..626c6f66e 100644
--- a/src/api/routes/auth/generate-registration-tokens.ts
+++ b/src/api/routes/auth/generate-registration-tokens.ts
@@ -16,12 +16,12 @@
along with this program. If not, see .
*/
-import { randomString, route } from "@spacebar/api";
-import { Config, ValidRegistrationToken } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { randomString, route } from "@spacebar/api";
+import { ValidRegistrationToken } from "@spacebar/database";
+import { Config } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
-export default router;
router.get(
"/",
@@ -68,3 +68,5 @@ router.get(
return res.json({ tokens: ret });
},
);
+
+export default router;
diff --git a/src/api/routes/auth/login.ts b/src/api/routes/auth/login.ts
index 80abf1417..49889c2fa 100644
--- a/src/api/routes/auth/login.ts
+++ b/src/api/routes/auth/login.ts
@@ -16,15 +16,15 @@
along with this program. If not, see .
*/
-import { route, verifyCaptcha } from "@spacebar/api";
-import { Config, FieldErrors, User, WebAuthn, generateToken, generateWebAuthnTicket } from "@spacebar/util";
-import bcrypt from "bcrypt";
import crypto from "node:crypto";
+import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
+import { route, verifyCaptcha } from "@spacebar/api";
+import { User } from "@spacebar/database";
+import { Config, FieldErrors, WebAuthn, generateToken, generateWebAuthnTicket } from "@spacebar/util";
import { LoginSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
-export default router;
router.post(
"/",
@@ -197,3 +197,5 @@ router.post(
* @returns {"token": "USERTOKEN", "settings": {"locale": "en", "theme": "dark"}}
*/
+
+export default router;
diff --git a/src/api/routes/auth/logout.ts b/src/api/routes/auth/logout.ts
index 331fa2861..9ad9a873a 100644
--- a/src/api/routes/auth/logout.ts
+++ b/src/api/routes/auth/logout.ts
@@ -16,12 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { emitEvent, Session } from "@spacebar/util";
+import { route } from "@spacebar/api";
+import { Session } from "@spacebar/database";
+import { emitEvent } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
-export default router;
router.post(
"/",
@@ -51,3 +51,5 @@ router.post(
});
},
);
+
+export default router;
diff --git a/src/api/routes/auth/mfa/totp.ts b/src/api/routes/auth/mfa/totp.ts
index 1696f114d..2d0d8fa0f 100644
--- a/src/api/routes/auth/mfa/totp.ts
+++ b/src/api/routes/auth/mfa/totp.ts
@@ -16,12 +16,14 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { BackupCode, User, generateToken } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { verifyToken } from "node-2fa";
+import { route } from "@spacebar/api";
+import { BackupCode, User } from "@spacebar/database";
+import { generateToken } from "@spacebar/util";
import { TotpSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.post(
diff --git a/src/api/routes/auth/mfa/webauthn.ts b/src/api/routes/auth/mfa/webauthn.ts
index 645c7100d..d948ccace 100644
--- a/src/api/routes/auth/mfa/webauthn.ts
+++ b/src/api/routes/auth/mfa/webauthn.ts
@@ -16,12 +16,14 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { generateToken, SecurityKey, User, verifyWebAuthnToken, WebAuthn } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { ExpectedAssertionResult } from "fido2-lib";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { SecurityKey, User } from "@spacebar/database";
+import { generateToken, verifyWebAuthnToken, WebAuthn } from "@spacebar/util";
import { WebAuthnTotpSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
function toArrayBuffer(buf: Buffer) {
diff --git a/src/api/routes/auth/register.ts b/src/api/routes/auth/register.ts
index a937b6a62..13721c042 100644
--- a/src/api/routes/auth/register.ts
+++ b/src/api/routes/auth/register.ts
@@ -16,12 +16,13 @@
along with this program. If not, see .
*/
-import { route, verifyCaptcha } from "@spacebar/api";
-import { Config, FieldErrors, Invite, User, ValidRegistrationToken, generateToken, IpDataClient, AbuseIpDbClient, TimeSpan, Stopwatch } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { MoreThan } from "typeorm";
+import { route, verifyCaptcha } from "@spacebar/api";
+import { Invite, User, ValidRegistrationToken } from "@spacebar/database";
+import { Config, FieldErrors, generateToken, IpDataClient, AbuseIpDbClient, TimeSpan, Stopwatch } from "@spacebar/util";
import { RegisterSchema } from "@spacebar/schemas";
import { BcryptWorkerPool } from "../../../util/util/workers/bcrypt/BcryptWorkerPool";
diff --git a/src/api/routes/auth/reset.ts b/src/api/routes/auth/reset.ts
index 77e93e840..5460b17d1 100644
--- a/src/api/routes/auth/reset.ts
+++ b/src/api/routes/auth/reset.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { checkToken, Email, FieldErrors, generateToken, User } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { User } from "@spacebar/database";
+import { checkToken, Email, FieldErrors, generateToken } from "@spacebar/util";
import { PasswordResetSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/auth/sessions.ts b/src/api/routes/auth/sessions.ts
index d1e1c6493..c83c654cd 100644
--- a/src/api/routes/auth/sessions.ts
+++ b/src/api/routes/auth/sessions.ts
@@ -15,12 +15,15 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
+
import { createHash } from "node:crypto";
-import { emitEvent, Session } from "@spacebar/util";
import { Request, Response, Router } from "express";
-import { SessionsLogoutSchema } from "../../../schemas/api/users/SessionsSchemas";
import { In } from "typeorm";
+import { route } from "@spacebar/api";
+import { emitEvent } from "@spacebar/util";
+import { SessionsLogoutSchema } from "@spacebar/schemas";
+import { Session } from "@spacebar/database";
+
const router = Router({ mergeParams: true });
router.get(
"/",
@@ -78,4 +81,5 @@ router.post(
res.status(204).send();
},
);
+
export default router;
diff --git a/src/api/routes/auth/verify/index.ts b/src/api/routes/auth/verify/index.ts
index 7c8ca1876..bdf4dc6da 100644
--- a/src/api/routes/auth/verify/index.ts
+++ b/src/api/routes/auth/verify/index.ts
@@ -16,9 +16,11 @@
along with this program. If not, see .
*/
-import { route, verifyCaptcha } from "@spacebar/api";
-import { checkToken, Config, FieldErrors, generateToken, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route, verifyCaptcha } from "@spacebar/api";
+import { User } from "@spacebar/database";
+import { checkToken, Config, FieldErrors, generateToken } from "@spacebar/util";
+
const router = Router({ mergeParams: true });
async function getToken(user: User) {
diff --git a/src/api/routes/auth/verify/resend.ts b/src/api/routes/auth/verify/resend.ts
index 29175696e..98d5d69ce 100644
--- a/src/api/routes/auth/verify/resend.ts
+++ b/src/api/routes/auth/verify/resend.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Email, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { User } from "@spacebar/database";
+import { Email } from "@spacebar/util";
+
const router = Router({ mergeParams: true });
router.post(
diff --git a/src/api/routes/auth/verify/view-backup-codes-challenge.ts b/src/api/routes/auth/verify/view-backup-codes-challenge.ts
index 7bfd66966..4cfd476ba 100644
--- a/src/api/routes/auth/verify/view-backup-codes-challenge.ts
+++ b/src/api/routes/auth/verify/view-backup-codes-challenge.ts
@@ -16,11 +16,13 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { FieldErrors, User } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { User } from "@spacebar/database";
+import { FieldErrors } from "@spacebar/util";
import { BackupCodesChallengeSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.post(
diff --git a/src/api/routes/channels/#channel_id/attachments.ts b/src/api/routes/channels/#channel_id/attachments.ts
index 3bb3fc19b..e5b9e49cd 100644
--- a/src/api/routes/channels/#channel_id/attachments.ts
+++ b/src/api/routes/channels/#channel_id/attachments.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { randomString, route } from "@spacebar/api";
-import { CloudAttachment, Channel, Config, Permissions } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { randomString, route } from "@spacebar/api";
+import { Channel, CloudAttachment } from "@spacebar/database";
+import { Config, Permissions } from "@spacebar/util";
import { UploadAttachmentRequestSchema, UploadAttachmentResponseSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/greet.ts b/src/api/routes/channels/#channel_id/greet.ts
index 37fd55896..c1c08781b 100644
--- a/src/api/routes/channels/#channel_id/greet.ts
+++ b/src/api/routes/channels/#channel_id/greet.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, emitEvent, Message, MessageCreateEvent, Permissions, Sticker } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { In } from "typeorm";
+import { route } from "@spacebar/api";
+import { Channel, Message, Sticker } from "@spacebar/database";
+import { emitEvent, MessageCreateEvent, Permissions } from "@spacebar/util";
import { GreetRequestSchema, MessageType } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/index.ts b/src/api/routes/channels/#channel_id/index.ts
index 3318eca2e..236ddcf64 100644
--- a/src/api/routes/channels/#channel_id/index.ts
+++ b/src/api/routes/channels/#channel_id/index.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, ChannelDeleteEvent, ChannelUpdateEvent, Recipient, emitEvent, handleFile, Config, FieldError, ErrorList, makeObjectErrorContent } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Recipient } from "@spacebar/database";
+import { ChannelDeleteEvent, ChannelUpdateEvent, emitEvent, handleFile, Config, FieldError, ErrorList, makeObjectErrorContent } from "@spacebar/util";
import { ChannelModifySchema, ChannelType } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/invites.ts b/src/api/routes/channels/#channel_id/invites.ts
index 44e431dc6..8afc7dc06 100644
--- a/src/api/routes/channels/#channel_id/invites.ts
+++ b/src/api/routes/channels/#channel_id/invites.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { randomString, route } from "@spacebar/api";
-import { Channel, Guild, Invite, InviteCreateEvent, PublicInviteRelation, User, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { randomString, route } from "@spacebar/api";
+import { Channel, Guild, Invite, PublicInviteRelation, User } from "@spacebar/database";
+import { InviteCreateEvent, emitEvent } from "@spacebar/util";
import { InviteCreateSchema, isTextChannel } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/ack.ts b/src/api/routes/channels/#channel_id/messages/#message_id/ack.ts
index 28f526493..ec187d8cb 100644
--- a/src/api/routes/channels/#channel_id/messages/#message_id/ack.ts
+++ b/src/api/routes/channels/#channel_id/messages/#message_id/ack.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { emitEvent, getPermission, MessageAckEvent, ReadState } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { ReadState } from "@spacebar/database";
+import { emitEvent, getPermission, MessageAckEvent } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts
index 749121dd6..6b59389d9 100644
--- a/src/api/routes/channels/#channel_id/messages/#message_id/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/#message_id/index.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
+import { Request, Response, Router } from "express";
+import { HTTPError } from "lambert-server/HTTPError";
+import multer from "multer";
+import { handleMessage, postHandleMessage, route } from "@spacebar/api";
+import { Attachment, Channel, Message } from "@spacebar/database";
import {
- Attachment,
- Channel,
- Message,
MessageCreateEvent,
MessageDeleteEvent,
MessageUpdateEvent,
@@ -31,10 +33,6 @@ import {
uploadFile,
NewUrlUserSignatureData,
} from "@spacebar/util";
-import { Request, Response, Router } from "express";
-import { HTTPError } from "lambert-server/HTTPError";
-import multer from "multer";
-import { handleMessage, postHandleMessage, route } from "@spacebar/api";
import { MessageCreateAttachment, MessageCreateCloudAttachment, MessageCreateSchema, MessageEditSchema, ChannelType } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts
index aa64d8c54..c045bb54a 100644
--- a/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts
+++ b/src/api/routes/channels/#channel_id/messages/#message_id/reactions.ts
@@ -16,25 +16,21 @@
along with this program. If not, see .
*/
+import { Request, Response, Router } from "express";
+import { HTTPError } from "lambert-server/HTTPError";
+import { In } from "typeorm";
import { route } from "@spacebar/api";
+import { Channel, Emoji, Member, Message, User } from "@spacebar/database";
import { arrayRemove } from "@spacebar/extensions";
import {
- Channel,
emitEvent,
- Emoji,
getPermission,
- Member,
- Message,
MessageReactionAddEvent,
MessageReactionRemoveAllEvent,
MessageReactionRemoveEmojiEvent,
MessageReactionRemoveEvent,
- User,
ReactionType,
} from "@spacebar/util";
-import { Request, Response, Router } from "express";
-import { HTTPError } from "lambert-server/HTTPError";
-import { In } from "typeorm";
import { PartialEmoji, PublicMemberProjection, PublicUserProjection } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts b/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts
index de9feaee1..bb48b4fbe 100644
--- a/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts
+++ b/src/api/routes/channels/#channel_id/messages/#message_id/threads.ts
@@ -16,11 +16,11 @@
along with this program. If not, see .
*/
-import { route, sendMessage } from "@spacebar/api";
-import { Message, Channel, emitEvent, User, MessageUpdateEvent } from "@spacebar/util";
-import { MessageThreadCreationSchema, ChannelType, MessageType } from "@spacebar/schemas";
-
import { Request, Response, Router } from "express";
+import { route, sendMessage } from "@spacebar/api";
+import { Channel, Message, User } from "@spacebar/database";
+import { emitEvent, MessageUpdateEvent } from "@spacebar/util";
+import { MessageThreadCreationSchema, ChannelType, MessageType } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/messages/bulk-delete.ts b/src/api/routes/channels/#channel_id/messages/bulk-delete.ts
index d0f2a4f5a..70cbb3e41 100644
--- a/src/api/routes/channels/#channel_id/messages/bulk-delete.ts
+++ b/src/api/routes/channels/#channel_id/messages/bulk-delete.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, Config, emitEvent, getPermission, getRights, Message, MessageDeleteBulkEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Channel, Message } from "@spacebar/database";
+import { Config, emitEvent, getPermission, getRights, MessageDeleteBulkEvent } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/messages/index.ts b/src/api/routes/channels/#channel_id/messages/index.ts
index d23443cb7..ccfd54fdf 100644
--- a/src/api/routes/channels/#channel_id/messages/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/index.ts
@@ -17,9 +17,8 @@
*/
import { handleMessage, postHandleMessage, route } from "@spacebar/api";
+import { Attachment, Channel, Member, Message, ReadState, Relationship, User, ThreadMember, ThreadMemberFlags } from "@spacebar/database";
import {
- Attachment,
- Channel,
Config,
DiscordApiErrors,
DmChannelDTO,
@@ -27,19 +26,12 @@ import {
FieldErrors,
getPermission,
getUrlSignature,
- Member,
- Message,
MessageCreateEvent,
NewUrlSignatureData,
NewUrlUserSignatureData,
- ReadState,
- Relationship,
Rights,
Snowflake,
uploadFile,
- User,
- ThreadMember,
- ThreadMemberFlags,
ThreadMembersUpdateEvent,
ThreadCreateEvent,
} from "@spacebar/util";
diff --git a/src/api/routes/channels/#channel_id/messages/pins/index.ts b/src/api/routes/channels/#channel_id/messages/pins/index.ts
index e72352cbd..766af429d 100644
--- a/src/api/routes/channels/#channel_id/messages/pins/index.ts
+++ b/src/api/routes/channels/#channel_id/messages/pins/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { ChannelPinsUpdateEvent, Config, DiscordApiErrors, emitEvent, Message, MessageCreateEvent, MessageUpdateEvent, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { IsNull, Not } from "typeorm";
+import { route } from "@spacebar/api";
+import { Message, User } from "@spacebar/database";
+import { ChannelPinsUpdateEvent, Config, DiscordApiErrors, emitEvent, MessageCreateEvent, MessageUpdateEvent } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/messages/search.ts b/src/api/routes/channels/#channel_id/messages/search.ts
index 58a62bd86..ab55f8ca9 100644
--- a/src/api/routes/channels/#channel_id/messages/search.ts
+++ b/src/api/routes/channels/#channel_id/messages/search.ts
@@ -18,11 +18,12 @@
/* eslint-disable @typescript-eslint/ban-ts-comment */
-import { route } from "@spacebar/api";
-import { Channel, FieldErrors, Message, getPermission } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { FindManyOptions, Like } from "typeorm";
+import { route } from "@spacebar/api";
+import { Channel, Message } from "@spacebar/database";
+import { FieldErrors, getPermission } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/permissions.ts b/src/api/routes/channels/#channel_id/permissions.ts
index 623861778..b1129d215 100644
--- a/src/api/routes/channels/#channel_id/permissions.ts
+++ b/src/api/routes/channels/#channel_id/permissions.ts
@@ -16,12 +16,13 @@
along with this program. If not, see .
*/
-import { Channel, ChannelUpdateEvent, emitEvent, Member, Role } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
-
import { route } from "@spacebar/api";
+import { Channel, Member, Role } from "@spacebar/database";
+import { ChannelUpdateEvent, emitEvent } from "@spacebar/util";
import { ChannelPermissionOverwriteSchema, ChannelPermissionOverwrite, ChannelPermissionOverwriteType } from "@spacebar/schemas";
+
const router: Router = Router({ mergeParams: true });
// TODO: Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a MANAGE_ROLES overwrite in the channel)
diff --git a/src/api/routes/channels/#channel_id/pins.ts b/src/api/routes/channels/#channel_id/pins.ts
index 5105421d3..27aeaac4a 100644
--- a/src/api/routes/channels/#channel_id/pins.ts
+++ b/src/api/routes/channels/#channel_id/pins.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { ChannelPinsUpdateEvent, Config, DiscordApiErrors, emitEvent, Message, MessageCreateEvent, MessageUpdateEvent, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { IsNull, Not } from "typeorm";
+import { route } from "@spacebar/api";
+import { ChannelPinsUpdateEvent, Config, DiscordApiErrors, emitEvent, MessageCreateEvent, MessageUpdateEvent } from "@spacebar/util";
+import { Message, User } from "@spacebar/database";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/post-data.ts b/src/api/routes/channels/#channel_id/post-data.ts
index 79d02863b..f8359f99f 100644
--- a/src/api/routes/channels/#channel_id/post-data.ts
+++ b/src/api/routes/channels/#channel_id/post-data.ts
@@ -16,13 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, Member, Message } from "@spacebar/util";
-import { PostDataSchema, PublicMessage } from "@spacebar/schemas";
-
import { Request, Response, Router } from "express";
import { messageUpload } from "./messages";
import { In } from "typeorm";
+import { route } from "@spacebar/api";
+import { Channel, Member, Message } from "@spacebar/database";
+import { PostDataSchema, PublicMessage } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/purge.ts b/src/api/routes/channels/#channel_id/purge.ts
index ab8ae2010..69bdd4e76 100644
--- a/src/api/routes/channels/#channel_id/purge.ts
+++ b/src/api/routes/channels/#channel_id/purge.ts
@@ -16,17 +16,16 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, Message, MessageDeleteBulkEvent, emitEvent, getPermission, getRights } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { Between, FindManyOptions, FindOperator, Not } from "typeorm";
+import { route } from "@spacebar/api";
+import { Channel, Message } from "@spacebar/database";
+import { MessageDeleteBulkEvent, emitEvent, getPermission, getRights } from "@spacebar/util";
import { isTextChannel, PurgeSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
-export default router;
-
/**
TODO: apply the delete bit by bit to prevent client and database stress
**/
@@ -99,3 +98,5 @@ router.post(
res.sendStatus(204);
},
);
+
+export default router;
diff --git a/src/api/routes/channels/#channel_id/recipients.ts b/src/api/routes/channels/#channel_id/recipients.ts
index 28200cb50..c72b3aa45 100644
--- a/src/api/routes/channels/#channel_id/recipients.ts
+++ b/src/api/routes/channels/#channel_id/recipients.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, ChannelRecipientAddEvent, DiscordApiErrors, DmChannelDTO, emitEvent, Recipient, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Recipient, User } from "@spacebar/database";
+import { ChannelRecipientAddEvent, DiscordApiErrors, DmChannelDTO, emitEvent } from "@spacebar/util";
import { ChannelType, PublicUserProjection } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/tags.ts b/src/api/routes/channels/#channel_id/tags.ts
index 3dec8a817..ffdb428d6 100644
--- a/src/api/routes/channels/#channel_id/tags.ts
+++ b/src/api/routes/channels/#channel_id/tags.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, ChannelUpdateEvent, emitEvent, Tag } from "@spacebar/util";
import { Request, Response, Router } from "express";
-import { TagCreateSchema } from "@spacebar/schemas";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Channel, Tag } from "@spacebar/database";
+import { ChannelUpdateEvent, emitEvent } from "@spacebar/util";
+import { TagCreateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/thread-members.ts b/src/api/routes/channels/#channel_id/thread-members.ts
index 9006fa144..036bc3dc9 100644
--- a/src/api/routes/channels/#channel_id/thread-members.ts
+++ b/src/api/routes/channels/#channel_id/thread-members.ts
@@ -16,12 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, emitEvent, Member, Permissions, ThreadCreateEvent, ThreadDeleteEvent, ThreadMember, ThreadMemberFlags, ThreadMembersUpdateEvent } from "@spacebar/util";
-import { ChannelType, Snowflake } from "@spacebar/schemas";
-
import { Request, Response, Router } from "express";
import { MoreThan } from "typeorm";
+import { route } from "@spacebar/api";
+import { Channel, Member, ThreadMember, ThreadMemberFlags } from "@spacebar/database";
+import { emitEvent, Permissions, ThreadCreateEvent, ThreadDeleteEvent, ThreadMembersUpdateEvent } from "@spacebar/util";
+import { ChannelType, Snowflake } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/threads.ts b/src/api/routes/channels/#channel_id/threads.ts
index 1fdc772da..9485ab752 100644
--- a/src/api/routes/channels/#channel_id/threads.ts
+++ b/src/api/routes/channels/#channel_id/threads.ts
@@ -16,29 +16,14 @@
along with this program. If not, see .
*/
-import { handleMessage, postHandleMessage, route, sendMessage } from "@spacebar/api";
-import {
- Channel,
- emitEvent,
- User,
- uploadFile,
- Attachment,
- Member,
- ReadState,
- MessageCreateEvent,
- FieldErrors,
- getPermission,
- ThreadMember,
- Message,
- ChannelFlags,
- Snowflake,
-} from "@spacebar/util";
-import { ChannelType, MessageType, ThreadCreationSchema, MessageCreateAttachment, MessageCreateCloudAttachment } from "@spacebar/schemas";
-
import { Request, Response, Router } from "express";
-import { messageUpload } from "./messages";
import { HTTPError } from "lambert-server/HTTPError";
import { FindManyOptions, FindOptionsOrder, In, Like, ArrayContains, ArrayOverlap } from "typeorm";
+import { handleMessage, postHandleMessage, route, sendMessage } from "@spacebar/api";
+import { Attachment, Channel, Member, Message, ReadState, ThreadMember, User } from "@spacebar/database";
+import { emitEvent, uploadFile, MessageCreateEvent, FieldErrors, getPermission, ChannelFlags } from "@spacebar/util";
+import { ChannelType, MessageType, ThreadCreationSchema, MessageCreateAttachment, MessageCreateCloudAttachment } from "@spacebar/schemas";
+import { messageUpload } from "./messages";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/typing.ts b/src/api/routes/channels/#channel_id/typing.ts
index 363316478..b8ef6433d 100644
--- a/src/api/routes/channels/#channel_id/typing.ts
+++ b/src/api/routes/channels/#channel_id/typing.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, emitEvent, Member, TypingStartEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Member } from "@spacebar/database";
+import { emitEvent, TypingStartEvent } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/#channel_id/webhooks.ts b/src/api/routes/channels/#channel_id/webhooks.ts
index 137e3139a..b3efb1878 100644
--- a/src/api/routes/channels/#channel_id/webhooks.ts
+++ b/src/api/routes/channels/#channel_id/webhooks.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, Config, DiscordApiErrors, User, Webhook, handleFile, trimSpecial, ValidateName, Application } from "@spacebar/util";
import crypto from "node:crypto";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Application, Channel, User, Webhook } from "@spacebar/database";
+import { Config, DiscordApiErrors, handleFile, trimSpecial, ValidateName } from "@spacebar/util";
import { isTextChannel, WebhookCreateSchema, WebhookType } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/channels/preload-messages.ts b/src/api/routes/channels/preload-messages.ts
index f14b387b5..39fbd9842 100644
--- a/src/api/routes/channels/preload-messages.ts
+++ b/src/api/routes/channels/preload-messages.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, Message } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Message } from "@spacebar/database";
+import { Config } from "@spacebar/util";
import { PreloadMessagesRequestSchema, PreloadMessagesResponseSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.post(
diff --git a/src/api/routes/discoverable-guilds.ts b/src/api/routes/discoverable-guilds.ts
index 27c6cfe89..bc850bc33 100644
--- a/src/api/routes/discoverable-guilds.ts
+++ b/src/api/routes/discoverable-guilds.ts
@@ -16,11 +16,11 @@
along with this program. If not, see .
*/
-import { Config, Guild, Member } from "@spacebar/util";
-
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
import { ArrayContains, In, Not } from "typeorm";
+import { route } from "@spacebar/api";
+import { Guild, Member } from "@spacebar/database";
+import { Config } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/discovery.ts b/src/api/routes/discovery.ts
index d865dfe88..1afe7b235 100644
--- a/src/api/routes/discovery.ts
+++ b/src/api/routes/discovery.ts
@@ -16,9 +16,9 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Categories } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Categories } from "@spacebar/database";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/download.ts b/src/api/routes/download.ts
index f54a3bb28..9af0f47c4 100644
--- a/src/api/routes/download.ts
+++ b/src/api/routes/download.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { FieldErrors, ClientRelease } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { ClientRelease } from "@spacebar/database";
+import { FieldErrors } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/emojis/#emoji_id/source.ts b/src/api/routes/emojis/#emoji_id/source.ts
index 10fdba0da..d7556fd2c 100644
--- a/src/api/routes/emojis/#emoji_id/source.ts
+++ b/src/api/routes/emojis/#emoji_id/source.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Emoji, DiscordApiErrors, Guild, Member } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Emoji, Guild, Member } from "@spacebar/database";
+import { DiscordApiErrors } from "@spacebar/util";
import { APIErrorResponse, EmojiGuild, EmojiSourceResponse } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guild-recommendations.ts b/src/api/routes/guild-recommendations.ts
index cbe6012a5..0245af831 100644
--- a/src/api/routes/guild-recommendations.ts
+++ b/src/api/routes/guild-recommendations.ts
@@ -16,11 +16,11 @@
along with this program. If not, see .
*/
-import { Config, Guild } from "@spacebar/util";
-
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
import { ArrayContains } from "typeorm";
+import { route } from "@spacebar/api";
+import { Guild } from "@spacebar/database";
+import { Config } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/application-command-index.ts b/src/api/routes/guilds/#guild_id/application-command-index.ts
index d5b8d6e61..f2e5cddca 100644
--- a/src/api/routes/guilds/#guild_id/application-command-index.ts
+++ b/src/api/routes/guilds/#guild_id/application-command-index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { Application, ApplicationCommand, Member, Snowflake } from "@spacebar/util";
import { IsNull } from "typeorm";
+import { route } from "@spacebar/api";
+import { Application, ApplicationCommand, Member } from "@spacebar/database";
+import { Snowflake } from "@spacebar/util";
import { ApplicationCommandSchema, ApplicationCommandType } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/auto-moderation/rules.ts b/src/api/routes/guilds/#guild_id/auto-moderation/rules.ts
index 7f7717d3a..6ad578999 100644
--- a/src/api/routes/guilds/#guild_id/auto-moderation/rules.ts
+++ b/src/api/routes/guilds/#guild_id/auto-moderation/rules.ts
@@ -16,10 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { User, AutomodRule } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { User, AutomodRule } from "@spacebar/database";
import { AutomodRuleSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/bans.ts b/src/api/routes/guilds/#guild_id/bans.ts
index d6541d5f9..6afac611e 100644
--- a/src/api/routes/guilds/#guild_id/bans.ts
+++ b/src/api/routes/guilds/#guild_id/bans.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Ban, DiscordApiErrors, GuildBanAddEvent, GuildBanRemoveEvent, Member, User, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Ban, Member, User } from "@spacebar/database";
+import { DiscordApiErrors, GuildBanAddEvent, GuildBanRemoveEvent, emitEvent } from "@spacebar/util";
import { BanCreateSchema, BanRegistrySchema, GuildBanResponse, GuildBansResponse, PublicUser } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/bulk-ban.ts b/src/api/routes/guilds/#guild_id/bulk-ban.ts
index 0d97ff756..29d7e3a1c 100644
--- a/src/api/routes/guilds/#guild_id/bulk-ban.ts
+++ b/src/api/routes/guilds/#guild_id/bulk-ban.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Ban, Config, DiscordApiErrors, GuildBanAddEvent, Member, User, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Ban, Member, User } from "@spacebar/database";
+import { Config, DiscordApiErrors, GuildBanAddEvent, emitEvent } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/channels.ts b/src/api/routes/guilds/#guild_id/channels.ts
index 5c87a1dc0..267adc161 100644
--- a/src/api/routes/guilds/#guild_id/channels.ts
+++ b/src/api/routes/guilds/#guild_id/channels.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, ChannelUpdateEvent, Guild, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Guild } from "@spacebar/database";
+import { ChannelUpdateEvent, emitEvent } from "@spacebar/util";
import { ChannelCreateSchema, ChannelReorderSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.get(
diff --git a/src/api/routes/guilds/#guild_id/delete.ts b/src/api/routes/guilds/#guild_id/delete.ts
index a855cf000..88d222c0f 100644
--- a/src/api/routes/guilds/#guild_id/delete.ts
+++ b/src/api/routes/guilds/#guild_id/delete.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Guild, GuildDeleteEvent, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Guild } from "@spacebar/database";
+import { GuildDeleteEvent, emitEvent } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/emojis.ts b/src/api/routes/guilds/#guild_id/emojis.ts
index 033daaf54..1d88de5d7 100644
--- a/src/api/routes/guilds/#guild_id/emojis.ts
+++ b/src/api/routes/guilds/#guild_id/emojis.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, DiscordApiErrors, Emoji, GuildEmojisUpdateEvent, Member, Snowflake, emitEvent, handleFile } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Emoji, Member } from "@spacebar/database";
+import { Config, DiscordApiErrors, GuildEmojisUpdateEvent, Snowflake, emitEvent, handleFile } from "@spacebar/util";
import { EmojiCreateSchema, EmojiModifySchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/index.ts b/src/api/routes/guilds/#guild_id/index.ts
index 115cd1a9a..72e59f875 100644
--- a/src/api/routes/guilds/#guild_id/index.ts
+++ b/src/api/routes/guilds/#guild_id/index.ts
@@ -16,23 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import {
- Channel,
- DiscordApiErrors,
- Guild,
- GuildUpdateEvent,
- Member,
- Permissions,
- SpacebarApiErrors,
- emitEvent,
- getPermission,
- getRights,
- handleFile,
- Config,
-} from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Channel, Guild, Member } from "@spacebar/database";
+import { DiscordApiErrors, GuildUpdateEvent, Permissions, SpacebarApiErrors, emitEvent, getPermission, getRights, handleFile } from "@spacebar/util";
import { GuildCreateResponse, GuildUpdateSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/invites.ts b/src/api/routes/guilds/#guild_id/invites.ts
index 656d06d61..7fb330deb 100644
--- a/src/api/routes/guilds/#guild_id/invites.ts
+++ b/src/api/routes/guilds/#guild_id/invites.ts
@@ -16,9 +16,9 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Invite, PublicInviteRelation } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Invite, PublicInviteRelation } from "@spacebar/database";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/members/#member_id/index.ts b/src/api/routes/guilds/#guild_id/members/#member_id/index.ts
index d20710dec..ef5b3bf50 100644
--- a/src/api/routes/guilds/#guild_id/members/#member_id/index.ts
+++ b/src/api/routes/guilds/#guild_id/members/#member_id/index.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, DiscordApiErrors, emitEvent, Emoji, getPermission, getRights, Guild, GuildMemberUpdateEvent, handleFile, Member, Role, Sticker } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Emoji, Guild, Member, Role, Sticker } from "@spacebar/database";
+import { Config, DiscordApiErrors, emitEvent, getPermission, getRights, GuildMemberUpdateEvent, handleFile } from "@spacebar/util";
import { MemberChangeSchema, PublicMemberProjection, PublicUserProjection } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/members/#member_id/nick.ts b/src/api/routes/guilds/#guild_id/members/#member_id/nick.ts
index 0e6a74654..4932bec9f 100644
--- a/src/api/routes/guilds/#guild_id/members/#member_id/nick.ts
+++ b/src/api/routes/guilds/#guild_id/members/#member_id/nick.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { getPermission, Member, PermissionResolvable } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Member } from "@spacebar/database";
+import { getPermission, PermissionResolvable } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts b/src/api/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts
index ccfc37b11..6874abbb3 100644
--- a/src/api/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts
+++ b/src/api/routes/guilds/#guild_id/members/#member_id/roles/#role_id/index.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { Member } from "@spacebar/util";
+import { Member } from "@spacebar/database";
import { Request, Response, Router } from "express";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/members/index.ts b/src/api/routes/guilds/#guild_id/members/index.ts
index 2ca8e32c0..2586d84d5 100644
--- a/src/api/routes/guilds/#guild_id/members/index.ts
+++ b/src/api/routes/guilds/#guild_id/members/index.ts
@@ -16,11 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Member } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { MoreThan } from "typeorm";
+import { route } from "@spacebar/api";
+import { Member } from "@spacebar/database";
import { PublicMemberProjection } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/messages/search.ts b/src/api/routes/guilds/#guild_id/messages/search.ts
index 5c50d2205..6d9bbe5e8 100644
--- a/src/api/routes/guilds/#guild_id/messages/search.ts
+++ b/src/api/routes/guilds/#guild_id/messages/search.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, FieldErrors, Member, Message, Snowflake, getPermission } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { Between, FindManyOptions, FindOptionsWhere, In, LessThan, Like, MoreThan } from "typeorm";
+import { route } from "@spacebar/api";
+import { Channel, Member, Message } from "@spacebar/database";
+import { FieldErrors, Snowflake, getPermission } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/profile.ts b/src/api/routes/guilds/#guild_id/profile.ts
index 8bbdce1d1..3156629be 100644
--- a/src/api/routes/guilds/#guild_id/profile.ts
+++ b/src/api/routes/guilds/#guild_id/profile.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { Guild } from "@spacebar/util";
+import { Guild } from "@spacebar/database";
import { Request, Response, Router } from "express";
import { GuildProfileResponse, GuildVisibilityLevel } from "@spacebar/schemas";
diff --git a/src/api/routes/guilds/#guild_id/profile/index.ts b/src/api/routes/guilds/#guild_id/profile/index.ts
index 30a600b04..8352a3794 100644
--- a/src/api/routes/guilds/#guild_id/profile/index.ts
+++ b/src/api/routes/guilds/#guild_id/profile/index.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { emitEvent, getPermission, getRights, GuildMemberUpdateEvent, handleFile, Member, OrmUtils, Permissions } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Member } from "@spacebar/database";
+import { emitEvent, getPermission, getRights, GuildMemberUpdateEvent, handleFile, OrmUtils, Permissions } from "@spacebar/util";
import { MemberChangeProfileSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/prune.ts b/src/api/routes/guilds/#guild_id/prune.ts
index e2504bf6b..7b19737e3 100644
--- a/src/api/routes/guilds/#guild_id/prune.ts
+++ b/src/api/routes/guilds/#guild_id/prune.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Guild, Member, Snowflake } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { IsNull, LessThan } from "typeorm";
+import { route } from "@spacebar/api";
+import { Guild, Member } from "@spacebar/database";
+import { Snowflake } from "@spacebar/util";
+
const router = Router({ mergeParams: true });
//Returns all inactive members, respecting role hierarchy
diff --git a/src/api/routes/guilds/#guild_id/regions.ts b/src/api/routes/guilds/#guild_id/regions.ts
index 66c1e6854..4edf582c4 100644
--- a/src/api/routes/guilds/#guild_id/regions.ts
+++ b/src/api/routes/guilds/#guild_id/regions.ts
@@ -17,7 +17,7 @@
*/
import { getVoiceRegions, route } from "@spacebar/api";
-import { Guild } from "@spacebar/util";
+import { Guild } from "@spacebar/database";
import { Request, Response, Router } from "express";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts b/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts
index eaacce76a..b3c276df9 100644
--- a/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts
+++ b/src/api/routes/guilds/#guild_id/roles/#role_id/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { emitEvent, GuildRoleDeleteEvent, GuildRoleUpdateEvent, handleFile, Member, Role } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Member, Role } from "@spacebar/database";
+import { emitEvent, GuildRoleDeleteEvent, GuildRoleUpdateEvent, handleFile } from "@spacebar/util";
import { RoleModifySchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts b/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts
index afa8d1894..20ec5dacd 100644
--- a/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts
+++ b/src/api/routes/guilds/#guild_id/roles/#role_id/member-ids.ts
@@ -17,7 +17,7 @@
*/
import { Router, Request, Response } from "express";
-import { Member } from "@spacebar/util";
+import { Member } from "@spacebar/database";
import { route } from "@spacebar/api";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts b/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts
index 5a55c731e..349db75db 100644
--- a/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts
+++ b/src/api/routes/guilds/#guild_id/roles/#role_id/members.ts
@@ -17,9 +17,10 @@
*/
import { Router, Request, Response } from "express";
-import { arrayPartition } from "@spacebar/extensions";
-import { DiscordApiErrors, Member } from "@spacebar/util";
import { route } from "@spacebar/api";
+import { Member } from "@spacebar/database";
+import { arrayPartition } from "@spacebar/extensions";
+import { DiscordApiErrors } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/roles/index.ts b/src/api/routes/guilds/#guild_id/roles/index.ts
index d7c493d3b..4cb82663f 100644
--- a/src/api/routes/guilds/#guild_id/roles/index.ts
+++ b/src/api/routes/guilds/#guild_id/roles/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, DiscordApiErrors, emitEvent, GuildRoleCreateEvent, GuildRoleUpdateEvent, Member, Role, Snowflake } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { Not } from "typeorm";
+import { route } from "@spacebar/api";
+import { Member, Role } from "@spacebar/database";
+import { Config, DiscordApiErrors, emitEvent, GuildRoleCreateEvent, GuildRoleUpdateEvent, Snowflake } from "@spacebar/util";
import { RoleModifySchema, RolePositionUpdateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/roles/member-counts.ts b/src/api/routes/guilds/#guild_id/roles/member-counts.ts
index 59783c3aa..2aa8aaece 100644
--- a/src/api/routes/guilds/#guild_id/roles/member-counts.ts
+++ b/src/api/routes/guilds/#guild_id/roles/member-counts.ts
@@ -17,7 +17,7 @@
*/
import { Request, Response, Router } from "express";
-import { Role, Member } from "@spacebar/util";
+import { Role, Member } from "@spacebar/database";
import { route } from "@spacebar/api";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/shield.svg.ts b/src/api/routes/guilds/#guild_id/shield.svg.ts
index 983e5a355..5ccf082c7 100644
--- a/src/api/routes/guilds/#guild_id/shield.svg.ts
+++ b/src/api/routes/guilds/#guild_id/shield.svg.ts
@@ -16,12 +16,13 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { DiscordApiErrors, Guild, Member } from "@spacebar/util";
-import { Request, Response, Router } from "express";
-import { makeBadge } from "badge-maker";
-import path from "node:path";
import fs from "node:fs";
+import path from "node:path";
+import { makeBadge } from "badge-maker";
+import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Guild, Member } from "@spacebar/database";
+import { DiscordApiErrors } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/stickers.ts b/src/api/routes/guilds/#guild_id/stickers.ts
index 7c3e29210..127d30f31 100644
--- a/src/api/routes/guilds/#guild_id/stickers.ts
+++ b/src/api/routes/guilds/#guild_id/stickers.ts
@@ -16,12 +16,14 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { GuildStickersUpdateEvent, Member, Snowflake, Sticker, emitEvent, uploadFile, Config, DiscordApiErrors } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import multer from "multer";
+import { route } from "@spacebar/api";
+import { Member, Sticker } from "@spacebar/database";
+import { GuildStickersUpdateEvent, Snowflake, emitEvent, uploadFile, Config, DiscordApiErrors } from "@spacebar/util";
import { ModifyGuildStickerSchema, StickerFormatType, StickerType } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.get(
diff --git a/src/api/routes/guilds/#guild_id/templates.ts b/src/api/routes/guilds/#guild_id/templates.ts
index 2719f88b5..9942fef16 100644
--- a/src/api/routes/guilds/#guild_id/templates.ts
+++ b/src/api/routes/guilds/#guild_id/templates.ts
@@ -16,10 +16,10 @@
along with this program. If not, see .
*/
-import { generateCode, route } from "@spacebar/api";
-import { Guild, Template } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { generateCode, route } from "@spacebar/api";
+import { Guild, Template } from "@spacebar/database";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/vanity-url.ts b/src/api/routes/guilds/#guild_id/vanity-url.ts
index f52890729..6a182fb3a 100644
--- a/src/api/routes/guilds/#guild_id/vanity-url.ts
+++ b/src/api/routes/guilds/#guild_id/vanity-url.ts
@@ -16,10 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, Guild, Invite } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Channel, Guild, Invite } from "@spacebar/database";
import { ChannelType, VanityUrlSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts b/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts
index ba8012989..75824e9d3 100644
--- a/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts
+++ b/src/api/routes/guilds/#guild_id/voice-states/#user_id/index.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, DiscordApiErrors, emitEvent, getPermission, Member, VoiceState, VoiceStateUpdateEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Member, VoiceState } from "@spacebar/database";
+import { DiscordApiErrors, emitEvent, getPermission, VoiceStateUpdateEvent } from "@spacebar/util";
import { ChannelType, VoiceStateUpdateSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/webhooks.ts b/src/api/routes/guilds/#guild_id/webhooks.ts
index cb717f907..4b46af012 100644
--- a/src/api/routes/guilds/#guild_id/webhooks.ts
+++ b/src/api/routes/guilds/#guild_id/webhooks.ts
@@ -16,9 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, Webhook } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Webhook } from "@spacebar/database";
+import { Config } from "@spacebar/util";
+
const router = Router({ mergeParams: true });
router.get(
diff --git a/src/api/routes/guilds/#guild_id/welcome-screen.ts b/src/api/routes/guilds/#guild_id/welcome-screen.ts
index dee7fb459..c60cf4f6d 100644
--- a/src/api/routes/guilds/#guild_id/welcome-screen.ts
+++ b/src/api/routes/guilds/#guild_id/welcome-screen.ts
@@ -16,9 +16,9 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, Guild, Member } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Guild, Member } from "@spacebar/database";
import { GuildUpdateWelcomeScreenSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/widget.json.ts b/src/api/routes/guilds/#guild_id/widget.json.ts
index f1741e885..9f3ecd319 100644
--- a/src/api/routes/guilds/#guild_id/widget.json.ts
+++ b/src/api/routes/guilds/#guild_id/widget.json.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { randomString, route } from "@spacebar/api";
-import { Channel, Config, DiscordApiErrors, Guild, Invite, Member, Permissions } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { randomString, route } from "@spacebar/api";
+import { Channel, Guild, Member, Invite } from "@spacebar/database";
+import { Config, DiscordApiErrors, Permissions } from "@spacebar/util";
import { ChannelType, GuildWidgetJsonResponse } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/widget.png.ts b/src/api/routes/guilds/#guild_id/widget.png.ts
index e095548e8..d3d8c7c9a 100644
--- a/src/api/routes/guilds/#guild_id/widget.png.ts
+++ b/src/api/routes/guilds/#guild_id/widget.png.ts
@@ -18,13 +18,14 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
-import { route } from "@spacebar/api";
-import { DiscordApiErrors, Guild } from "@spacebar/util";
-import { Request, Response, Router } from "express";
import fs from "node:fs";
-import { HTTPError } from "lambert-server/HTTPError";
import path from "node:path";
+import { Request, Response, Router } from "express";
+import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
import { storage } from "@spacebar/cdn";
+import { Guild } from "@spacebar/database";
+import { DiscordApiErrors } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/#guild_id/widget.ts b/src/api/routes/guilds/#guild_id/widget.ts
index 122789dc4..2e2b31181 100644
--- a/src/api/routes/guilds/#guild_id/widget.ts
+++ b/src/api/routes/guilds/#guild_id/widget.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { Guild } from "@spacebar/util";
+import { Guild } from "@spacebar/database";
import { Request, Response, Router } from "express";
import { WidgetModifySchema } from "@spacebar/schemas";
diff --git a/src/api/routes/guilds/index.ts b/src/api/routes/guilds/index.ts
index 663677dcb..f9370f270 100644
--- a/src/api/routes/guilds/index.ts
+++ b/src/api/routes/guilds/index.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, DiscordApiErrors, Guild, Member, getRights } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Guild, Member } from "@spacebar/database";
+import { Config, DiscordApiErrors, getRights } from "@spacebar/util";
import { GuildCreateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/guilds/templates/index.ts b/src/api/routes/guilds/templates/index.ts
index a14f73ddc..d934d2998 100644
--- a/src/api/routes/guilds/templates/index.ts
+++ b/src/api/routes/guilds/templates/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, DiscordApiErrors, Guild, Member, Tag, Template } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Guild, Member, Tag, Template } from "@spacebar/database";
+import { Config, DiscordApiErrors } from "@spacebar/util";
import { ChannelType, GuildTemplateCreateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/interactions/#interaction_id/#interaction_token/callback.ts b/src/api/routes/interactions/#interaction_id/#interaction_token/callback.ts
index 6ba97b6fa..fde2c5562 100644
--- a/src/api/routes/interactions/#interaction_id/#interaction_token/callback.ts
+++ b/src/api/routes/interactions/#interaction_id/#interaction_token/callback.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { BaseMessageComponents, InteractionCallbackSchema, InteractionCallbacksSchema, InteractionCallbackType, InteractionFailureReason, MessageType } from "@spacebar/schemas";
-import { handleComps, route, sendMessage } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { Config, emitEvent, InteractionSuccessEvent, Message, MessageUpdateEvent, pendingInteractions, User, InteractionFailureEvent } from "@spacebar/util";
import { HTTPError } from "lambert-server/HTTPError";
+import { handleComps, route, sendMessage } from "@spacebar/api";
+import { Message, User } from "@spacebar/database";
+import { InteractionCallbacksSchema, InteractionCallbackType, InteractionFailureReason, MessageType } from "@spacebar/schemas";
+import { Config, emitEvent, InteractionSuccessEvent, MessageUpdateEvent, pendingInteractions, InteractionFailureEvent } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/interactions/index.ts b/src/api/routes/interactions/index.ts
index fd42050c7..47b189fd9 100644
--- a/src/api/routes/interactions/index.ts
+++ b/src/api/routes/interactions/index.ts
@@ -17,10 +17,11 @@
*/
import { randomBytes } from "node:crypto";
+import { Request, Response, Router } from "express";
import { InteractionFailureReason, InteractionSchema, InteractionType } from "@spacebar/schemas";
import { route } from "@spacebar/api";
-import { Request, Response, Router } from "express";
-import { Config, emitEvent, getPermission, Guild, InteractionCreateEvent, InteractionFailureEvent, Member, Message, Snowflake } from "@spacebar/util";
+import { Guild, Member, Message } from "@spacebar/database";
+import { Config, emitEvent, getPermission, InteractionCreateEvent, InteractionFailureEvent, Snowflake } from "@spacebar/util";
import { pendingInteractions } from "@spacebar/util/imports/Interactions";
import { InteractionCreateSchema } from "@spacebar/schemas/api/bots/InteractionCreateSchema";
diff --git a/src/api/routes/invites/index.ts b/src/api/routes/invites/index.ts
index 421d56709..a1ba3131a 100644
--- a/src/api/routes/invites/index.ts
+++ b/src/api/routes/invites/index.ts
@@ -17,7 +17,8 @@
*/
import { route } from "@spacebar/api";
-import { Ban, Config, DiscordApiErrors, emitEvent, getPermission, Guild, Invite, InviteDeleteEvent, PublicInviteRelation } from "@spacebar/util";
+import { Ban, Guild, Invite, PublicInviteRelation } from "@spacebar/database";
+import { Config, DiscordApiErrors, emitEvent, getPermission, InviteDeleteEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { UserFlags } from "@spacebar/schemas";
diff --git a/src/api/routes/oauth2/applications/@me.ts b/src/api/routes/oauth2/applications/@me.ts
index c8aa84f62..4fd687802 100644
--- a/src/api/routes/oauth2/applications/@me.ts
+++ b/src/api/routes/oauth2/applications/@me.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Application, DiscordApiErrors } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Application } from "@spacebar/database";
+import { DiscordApiErrors } from "@spacebar/util";
import { PublicUserProjection } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/oauth2/authorize.ts b/src/api/routes/oauth2/authorize.ts
index 47a21eb49..55ae6a1db 100644
--- a/src/api/routes/oauth2/authorize.ts
+++ b/src/api/routes/oauth2/authorize.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { ApiError, Application, DiscordApiErrors, FieldErrors, Member, Permissions, User, getPermission, Role } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Application, Member, Role, User } from "@spacebar/database";
+import { ApiError, DiscordApiErrors, FieldErrors, Permissions, getPermission } from "@spacebar/util";
import { ApplicationAuthorizeSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
// TODO: scopes, other oauth types
diff --git a/src/api/routes/policies/stats.ts b/src/api/routes/policies/stats.ts
index 9090d787a..043dbb269 100644
--- a/src/api/routes/policies/stats.ts
+++ b/src/api/routes/policies/stats.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, getRights, Guild, Member, Message, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Guild, Member, Message, User } from "@spacebar/database";
+import { Config, getRights } from "@spacebar/util";
const router = Router({ mergeParams: true });
router.get(
diff --git a/src/api/routes/read-states/ack-bulk.ts b/src/api/routes/read-states/ack-bulk.ts
index d0212c0b7..c9c903d46 100644
--- a/src/api/routes/read-states/ack-bulk.ts
+++ b/src/api/routes/read-states/ack-bulk.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { ReadState } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { ReadState } from "@spacebar/database";
import { AckBulkSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.post(
diff --git a/src/api/routes/safety-hub/@me/index.ts b/src/api/routes/safety-hub/@me/index.ts
index e57012924..ee55370b6 100644
--- a/src/api/routes/safety-hub/@me/index.ts
+++ b/src/api/routes/safety-hub/@me/index.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { User } from "@spacebar/util";
+import { User } from "@spacebar/database";
import { Request, Response, Router } from "express";
import { AccountStandingResponse, AccountStandingState, AppealEligibility } from "@spacebar/schemas";
diff --git a/src/api/routes/safety-hub/suspended/@me.ts b/src/api/routes/safety-hub/suspended/@me.ts
index e57012924..043f73643 100644
--- a/src/api/routes/safety-hub/suspended/@me.ts
+++ b/src/api/routes/safety-hub/suspended/@me.ts
@@ -16,9 +16,9 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { User } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { User } from "@spacebar/database";
import { AccountStandingResponse, AccountStandingState, AppealEligibility } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/sticker-packs/index.ts b/src/api/routes/sticker-packs/index.ts
index ce4f214d2..86a18ef6b 100644
--- a/src/api/routes/sticker-packs/index.ts
+++ b/src/api/routes/sticker-packs/index.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { StickerPack } from "@spacebar/util";
+import { StickerPack } from "@spacebar/database";
import { Request, Response, Router } from "express";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/stickers/#sticker_id/index.ts b/src/api/routes/stickers/#sticker_id/index.ts
index 7188d93fb..ac265c64e 100644
--- a/src/api/routes/stickers/#sticker_id/index.ts
+++ b/src/api/routes/stickers/#sticker_id/index.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Sticker } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Sticker } from "@spacebar/database";
+
const router = Router({ mergeParams: true });
router.get(
diff --git a/src/api/routes/teams.ts b/src/api/routes/teams.ts
index da0ea7849..fa3a24134 100644
--- a/src/api/routes/teams.ts
+++ b/src/api/routes/teams.ts
@@ -17,9 +17,9 @@
*/
import { Request, Response, Router } from "express";
-import { route } from "@spacebar/api";
-import { Team, TeamMember, User } from "@spacebar/util";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Team, TeamMember, User } from "@spacebar/database";
import { TeamCreateSchema, TeamMemberRole, TeamMemberState } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/updates.ts b/src/api/routes/updates.ts
index 7228a761a..ca14507f4 100644
--- a/src/api/routes/updates.ts
+++ b/src/api/routes/updates.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { FieldErrors, ClientRelease } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { ClientRelease } from "@spacebar/database";
+import { FieldErrors } from "@spacebar/util";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/#user_id/delete.ts b/src/api/routes/users/#user_id/delete.ts
index d811fe066..49be55e22 100644
--- a/src/api/routes/users/#user_id/delete.ts
+++ b/src/api/routes/users/#user_id/delete.ts
@@ -17,22 +17,8 @@
*/
import { route } from "@spacebar/api";
-import {
- Channel,
- ChannelDeleteEvent,
- ChannelRecipientRemoveEvent,
- emitEvent,
- Emoji,
- Guild,
- InstanceBan,
- Member,
- Recipient,
- Sticker,
- Stopwatch,
- User,
- UserDeleteEvent,
- UserSettingsProtos,
-} from "@spacebar/util";
+import { Channel, Emoji, Guild, InstanceBan, Member, Recipient, Sticker, User, UserSettingsProtos } from "@spacebar/database";
+import { ChannelDeleteEvent, ChannelRecipientRemoveEvent, emitEvent, Stopwatch, UserDeleteEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { ChannelType, InstanceUserDeleteSchema, PrivateUserProjection } from "@spacebar/schemas";
import { Not } from "typeorm";
diff --git a/src/api/routes/users/#user_id/index.ts b/src/api/routes/users/#user_id/index.ts
index ada0e9168..82a19420c 100644
--- a/src/api/routes/users/#user_id/index.ts
+++ b/src/api/routes/users/#user_id/index.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { User } from "@spacebar/util";
+import { User } from "@spacebar/database";
import { Request, Response, Router } from "express";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/#user_id/messages.ts b/src/api/routes/users/#user_id/messages.ts
index 5d86c2828..1e32ca453 100644
--- a/src/api/routes/users/#user_id/messages.ts
+++ b/src/api/routes/users/#user_id/messages.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, Message, User } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Message, User } from "@spacebar/database";
+import { Config } from "@spacebar/util";
import { DmMessagesResponseSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.get(
diff --git a/src/api/routes/users/#user_id/profile.ts b/src/api/routes/users/#user_id/profile.ts
index 372f89270..84082afa3 100644
--- a/src/api/routes/users/#user_id/profile.ts
+++ b/src/api/routes/users/#user_id/profile.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Badge, Config, emitEvent, FieldErrors, handleFile, Member, Relationship, User, UserUpdateEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { In } from "typeorm";
+import { route } from "@spacebar/api";
+import { Badge, Member, Relationship, User } from "@spacebar/database";
+import { Config, emitEvent, FieldErrors, handleFile, UserUpdateEvent } from "@spacebar/util";
import { PartialConnectedAccountResponse, PrivateUserProjection, PublicUser, PublicUserProjection, RelationshipType, UserProfileModifySchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/#user_id/relationships.ts b/src/api/routes/users/#user_id/relationships.ts
index 38bd64b68..255d12c3e 100644
--- a/src/api/routes/users/#user_id/relationships.ts
+++ b/src/api/routes/users/#user_id/relationships.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { User } from "@spacebar/util";
+import { User } from "@spacebar/database";
import { Request, Response, Router } from "express";
import { UserRelationsResponse } from "@spacebar/schemas";
diff --git a/src/api/routes/users/@me/channels.ts b/src/api/routes/users/@me/channels.ts
index dc44935e3..081aa862a 100644
--- a/src/api/routes/users/@me/channels.ts
+++ b/src/api/routes/users/@me/channels.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, DmChannelDTO, Recipient } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Recipient } from "@spacebar/database";
+import { DmChannelDTO } from "@spacebar/util";
import { DmChannelCreateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/connections/#connection_name/#connection_id/access-token.ts b/src/api/routes/users/@me/connections/#connection_name/#connection_id/access-token.ts
index 6e6d7e2fe..595f33b50 100644
--- a/src/api/routes/users/@me/connections/#connection_name/#connection_id/access-token.ts
+++ b/src/api/routes/users/@me/connections/#connection_name/#connection_id/access-token.ts
@@ -16,9 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { ApiError, ConnectedAccount, ConnectionStore, DiscordApiErrors, FieldErrors, RefreshableConnection } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { ConnectedAccount } from "@spacebar/database";
+import { ApiError, ConnectionStore, DiscordApiErrors, FieldErrors, RefreshableConnection } from "@spacebar/util";
+
const router = Router({ mergeParams: true });
// TODO: this route is only used for spotify, twitch, and youtube. (battlenet seems to be able to PUT, maybe others also)
diff --git a/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts b/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts
index 0fc6f3fb6..f633b35e7 100644
--- a/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts
+++ b/src/api/routes/users/@me/connections/#connection_name/#connection_id/index.ts
@@ -16,10 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { ConnectedAccount, DiscordApiErrors, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { ConnectedAccount } from "@spacebar/database";
+import { DiscordApiErrors, emitEvent } from "@spacebar/util";
import { ConnectionUpdateSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
// TODO: connection update schema
diff --git a/src/api/routes/users/@me/connections/index.ts b/src/api/routes/users/@me/connections/index.ts
index fe2fbba0a..9dffbef36 100644
--- a/src/api/routes/users/@me/connections/index.ts
+++ b/src/api/routes/users/@me/connections/index.ts
@@ -18,7 +18,8 @@
import { Request, Response, Router } from "express";
import { route } from "@spacebar/api";
-import { ConnectedAccount, ConnectedAccountDTO } from "@spacebar/util";
+import { ConnectedAccount } from "@spacebar/database";
+import { ConnectedAccountDTO } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/delete.ts b/src/api/routes/users/@me/delete.ts
index fab936a7e..aa112dca5 100644
--- a/src/api/routes/users/@me/delete.ts
+++ b/src/api/routes/users/@me/delete.ts
@@ -16,11 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Guild, Member, User, UserSettingsProtos } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Guild, Member, User, UserSettingsProtos } from "@spacebar/database";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/disable.ts b/src/api/routes/users/@me/disable.ts
index e95ec457f..7ae17b498 100644
--- a/src/api/routes/users/@me/disable.ts
+++ b/src/api/routes/users/@me/disable.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { User } from "@spacebar/util";
+import { User } from "@spacebar/database";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
diff --git a/src/api/routes/users/@me/guilds.ts b/src/api/routes/users/@me/guilds.ts
index d64054ef3..50f5a59ca 100644
--- a/src/api/routes/users/@me/guilds.ts
+++ b/src/api/routes/users/@me/guilds.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, Guild, Member } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Guild, Member } from "@spacebar/database";
+import { Config } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/guilds/#guild_id/settings.ts b/src/api/routes/users/@me/guilds/#guild_id/settings.ts
index 72ba07733..157ad985b 100644
--- a/src/api/routes/users/@me/guilds/#guild_id/settings.ts
+++ b/src/api/routes/users/@me/guilds/#guild_id/settings.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Channel, Member, OrmUtils } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Channel, Member } from "@spacebar/database";
+import { OrmUtils } from "@spacebar/util";
import { UserGuildSettingsSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/index.ts b/src/api/routes/users/@me/index.ts
index ae04e69f8..1fda0afb6 100644
--- a/src/api/routes/users/@me/index.ts
+++ b/src/api/routes/users/@me/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, emitEvent, FieldErrors, generateToken, handleFile, User, UserUpdateEvent } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { User } from "@spacebar/database";
+import { Config, emitEvent, FieldErrors, generateToken, handleFile, UserUpdateEvent } from "@spacebar/util";
import { DisplayNameStyle, PrivateUserProjection, UserModifySchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/mentions.ts b/src/api/routes/users/@me/mentions.ts
index 87602b3ca..e09084582 100644
--- a/src/api/routes/users/@me/mentions.ts
+++ b/src/api/routes/users/@me/mentions.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Snowflake, Message, Member, Channel, Permissions, NewUrlUserSignatureData, Stopwatch, Attachment } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { In, LessThan, FindOptionsWhere } from "typeorm";
+import { route } from "@spacebar/api";
+import { Message, Member, Channel, Attachment } from "@spacebar/database";
+import { Snowflake, Permissions, NewUrlUserSignatureData, Stopwatch } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/mfa/codes-verification.ts b/src/api/routes/users/@me/mfa/codes-verification.ts
index 942130375..ca6447f3b 100644
--- a/src/api/routes/users/@me/mfa/codes-verification.ts
+++ b/src/api/routes/users/@me/mfa/codes-verification.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { BackupCode, DiscordApiErrors, User, generateMfaBackupCodes } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { BackupCode, generateMfaBackupCodes, User } from "@spacebar/database";
+import { DiscordApiErrors } from "@spacebar/util";
import { CodesVerificationSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/mfa/codes.ts b/src/api/routes/users/@me/mfa/codes.ts
index 0b1b94dae..26f555bde 100644
--- a/src/api/routes/users/@me/mfa/codes.ts
+++ b/src/api/routes/users/@me/mfa/codes.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { BackupCode, FieldErrors, generateMfaBackupCodes, User } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { BackupCode, generateMfaBackupCodes, User } from "@spacebar/database";
+import { FieldErrors } from "@spacebar/util";
import { MfaCodesSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/mfa/totp/disable.ts b/src/api/routes/users/@me/mfa/totp/disable.ts
index b26161a32..c75365ace 100644
--- a/src/api/routes/users/@me/mfa/totp/disable.ts
+++ b/src/api/routes/users/@me/mfa/totp/disable.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { BackupCode, User, generateToken } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { verifyToken } from "node-2fa";
+import { route } from "@spacebar/api";
+import { BackupCode, User } from "@spacebar/database";
+import { generateToken } from "@spacebar/util";
import { TotpDisableSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/mfa/totp/enable.ts b/src/api/routes/users/@me/mfa/totp/enable.ts
index e626a736a..fd098c2de 100644
--- a/src/api/routes/users/@me/mfa/totp/enable.ts
+++ b/src/api/routes/users/@me/mfa/totp/enable.ts
@@ -16,12 +16,13 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { User, generateMfaBackupCodes, generateToken } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { verifyToken } from "node-2fa";
+import { route } from "@spacebar/api";
+import { User, generateMfaBackupCodes } from "@spacebar/database";
+import { generateToken } from "@spacebar/util";
import { TotpEnableSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts b/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts
index 65c018065..c15a01441 100644
--- a/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts
+++ b/src/api/routes/users/@me/mfa/webauthn/credentials/#key_id/index.ts
@@ -17,7 +17,7 @@
*/
import { route } from "@spacebar/api";
-import { SecurityKey, User } from "@spacebar/util";
+import { SecurityKey, User } from "@spacebar/database";
import { Request, Response, Router } from "express";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts b/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts
index 6c8771898..774c41388 100644
--- a/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts
+++ b/src/api/routes/users/@me/mfa/webauthn/credentials/index.ts
@@ -16,13 +16,15 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { DiscordApiErrors, FieldErrors, generateWebAuthnTicket, SecurityKey, User, verifyWebAuthnToken, WebAuthn } from "@spacebar/util";
import bcrypt from "bcrypt";
import { Request, Response, Router } from "express";
import { ExpectedAttestationResult } from "fido2-lib";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { SecurityKey, User } from "@spacebar/database";
+import { DiscordApiErrors, FieldErrors, generateWebAuthnTicket, verifyWebAuthnToken, WebAuthn } from "@spacebar/util";
import { CreateWebAuthnCredentialSchema, GenerateWebAuthnCredentialsSchema, WebAuthnPostSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
const isGenerateSchema = (body: WebAuthnPostSchema): body is GenerateWebAuthnCredentialsSchema => "password" in body;
diff --git a/src/api/routes/users/@me/notes.ts b/src/api/routes/users/@me/notes.ts
index 3fe1682e8..b988b2cdd 100644
--- a/src/api/routes/users/@me/notes.ts
+++ b/src/api/routes/users/@me/notes.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Note, Snowflake, User, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Note, User } from "@spacebar/database";
+import { Snowflake, emitEvent } from "@spacebar/util";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/relationships.ts b/src/api/routes/users/@me/relationships.ts
index be5629ab7..d4d1eb1e8 100644
--- a/src/api/routes/users/@me/relationships.ts
+++ b/src/api/routes/users/@me/relationships.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { Config, DiscordApiErrors, Relationship, RelationshipAddEvent, RelationshipRemoveEvent, RelationshipUpdateEvent, User, emitEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
+import { route } from "@spacebar/api";
+import { Relationship, User } from "@spacebar/database";
+import { Config, DiscordApiErrors, RelationshipAddEvent, RelationshipRemoveEvent, RelationshipUpdateEvent, emitEvent } from "@spacebar/util";
import { PublicUserProjection, RelationshipType, RelationshipPatchSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/settings-proto/1.ts b/src/api/routes/users/@me/settings-proto/1.ts
index 510af975b..531dcdcbd 100644
--- a/src/api/routes/users/@me/settings-proto/1.ts
+++ b/src/api/routes/users/@me/settings-proto/1.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { emitEvent, OrmUtils, UserSettingsProtos } from "@spacebar/util";
import { PreloadedUserSettings } from "discord-protos";
import { JsonValue } from "@protobuf-ts/runtime";
+import { route } from "@spacebar/api";
+import { UserSettingsProtos } from "@spacebar/database";
+import { emitEvent, OrmUtils } from "@spacebar/util";
import { SettingsProtoJsonResponse, SettingsProtoResponse, SettingsProtoUpdateJsonSchema, SettingsProtoUpdateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/settings-proto/2.ts b/src/api/routes/users/@me/settings-proto/2.ts
index 930174808..e4e9ff1d3 100644
--- a/src/api/routes/users/@me/settings-proto/2.ts
+++ b/src/api/routes/users/@me/settings-proto/2.ts
@@ -16,11 +16,12 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
import { Request, Response, Router } from "express";
-import { emitEvent, OrmUtils, UserSettingsProtos } from "@spacebar/util";
import { FrecencyUserSettings } from "discord-protos";
import { JsonValue } from "@protobuf-ts/runtime";
+import { route } from "@spacebar/api";
+import { UserSettingsProtos } from "@spacebar/database";
+import { emitEvent, OrmUtils } from "@spacebar/util";
import { SettingsProtoJsonResponse, SettingsProtoResponse, SettingsProtoUpdateJsonSchema, SettingsProtoUpdateSchema } from "@spacebar/schemas";
const router: Router = Router({ mergeParams: true });
diff --git a/src/api/routes/users/@me/settings.ts b/src/api/routes/users/@me/settings.ts
index 5136c4abc..3bf8b887a 100644
--- a/src/api/routes/users/@me/settings.ts
+++ b/src/api/routes/users/@me/settings.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { route } from "@spacebar/api";
-import { User, UserSettings, emitEvent, Session, PresenceUpdateEvent } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { route } from "@spacebar/api";
+import { Session, User, UserSettings } from "@spacebar/database";
+import { emitEvent, PresenceUpdateEvent } from "@spacebar/util";
import { UserSettingsUpdateSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/webhooks/#webhook_id/#token/index.ts b/src/api/routes/webhooks/#webhook_id/#token/index.ts
index cab73d641..a3984a852 100644
--- a/src/api/routes/webhooks/#webhook_id/#token/index.ts
+++ b/src/api/routes/webhooks/#webhook_id/#token/index.ts
@@ -1,9 +1,28 @@
-import { route } from "@spacebar/api";
-import { Config, DiscordApiErrors, emitEvent, handleFile, ValidateName, Webhook, WebhooksUpdateEvent } from "@spacebar/util";
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2026 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import multer from "multer";
-import { executeWebhook } from "../../../../util/handlers/Webhook";
+import { route } from "@spacebar/api";
+import { Webhook } from "@spacebar/database";
+import { Config, DiscordApiErrors, emitEvent, handleFile, ValidateName, WebhooksUpdateEvent } from "@spacebar/util";
+import { executeWebhook } from "@spacebar/api/util/handlers/Webhook";
import { WebhookUpdateSchema } from "@spacebar/schemas";
const router = Router({ mergeParams: true });
diff --git a/src/api/routes/webhooks/#webhook_id/index.ts b/src/api/routes/webhooks/#webhook_id/index.ts
index 5c08ec3db..71a02b228 100644
--- a/src/api/routes/webhooks/#webhook_id/index.ts
+++ b/src/api/routes/webhooks/#webhook_id/index.ts
@@ -1,21 +1,29 @@
-import { route } from "@spacebar/api";
-import {
- Config,
- DiscordApiErrors,
- getPermission,
- Webhook,
- WebhooksUpdateEvent,
- emitEvent,
- Channel,
- handleFile,
- ValidateName,
- Message,
- MessageDeleteBulkEvent,
-} from "@spacebar/util";
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2026 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
import { Request, Response, Router } from "express";
import { HTTPError } from "lambert-server/HTTPError";
-import { WebhookUpdateSchema } from "@spacebar/schemas";
import { In } from "typeorm";
+import { route } from "@spacebar/api";
+import { Webhook, Channel, Message } from "@spacebar/database";
+import { Config, DiscordApiErrors, getPermission, WebhooksUpdateEvent, emitEvent, handleFile, ValidateName, MessageDeleteBulkEvent } from "@spacebar/util";
+import { WebhookUpdateSchema } from "@spacebar/schemas";
+
const router = Router({ mergeParams: true });
router.get(
diff --git a/src/api/util/handlers/Instance.ts b/src/api/util/handlers/Instance.ts
index f899d07d1..52d241aa0 100644
--- a/src/api/util/handlers/Instance.ts
+++ b/src/api/util/handlers/Instance.ts
@@ -16,7 +16,8 @@
along with this program. If not, see .
*/
-import { Session, TimeSpan } from "@spacebar/util";
+import { Session } from "@spacebar/database";
+import { TimeSpan } from "@spacebar/util";
import { setInterval } from "node:timers";
export async function initInstance() {
diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts
index 4e6d7316b..65d41e431 100644
--- a/src/api/util/handlers/Message.ts
+++ b/src/api/util/handlers/Message.ts
@@ -19,13 +19,9 @@
import { HTTPError } from "lambert-server/HTTPError";
import { Equal, In, Or } from "typeorm";
import { fillMessageUrlEmbeds, randomString } from "@spacebar/api";
-import { getDatabase } from "@spacebar/database";
+import { getDatabase, Application, Attachment, Channel, CloudAttachment, Guild, Member, Message, ReadState, Role, Session, Sticker, User, Webhook } from "@spacebar/database";
import { mathLogBase, arrayDistributeSequentially } from "@spacebar/extensions";
import {
- Application,
- Attachment,
- Channel,
- CloudAttachment,
Config,
DiscordApiErrors,
emitEvent,
@@ -33,27 +29,18 @@ import {
FieldErrors,
getPermission,
getRights,
- Guild,
handleFile,
HERE_MENTION,
- Member,
- Message,
MessageCreateEvent,
MessageFlags,
Permissions,
- ReadState,
- Role,
ROLE_MENTION,
- Session,
Snowflake,
- Sticker,
Stopwatch,
TraceNode,
TraceRoot,
TraceSubTree,
- User,
USER_MENTION,
- Webhook,
} from "@spacebar/util";
import {
ActionRowComponent,
diff --git a/src/api/util/handlers/Webhook.ts b/src/api/util/handlers/Webhook.ts
index 48032c8fd..02fe6690f 100644
--- a/src/api/util/handlers/Webhook.ts
+++ b/src/api/util/handlers/Webhook.ts
@@ -1,8 +1,9 @@
-import { handleMessage, postHandleMessage } from "@spacebar/api";
-import { Attachment, Channel, Config, DiscordApiErrors, emitEvent, FieldErrors, Message, MessageCreateEvent, Snowflake, uploadFile, ValidateName, Webhook } from "@spacebar/util";
import { Request, Response } from "express";
import { HTTPError } from "lambert-server/HTTPError";
import { MoreThan } from "typeorm";
+import { handleMessage, postHandleMessage } from "@spacebar/api";
+import { Attachment, Channel, Message, Webhook } from "@spacebar/database";
+import { Config, DiscordApiErrors, emitEvent, FieldErrors, MessageCreateEvent, Snowflake, uploadFile, ValidateName } from "@spacebar/util";
import { WebhookExecuteSchema } from "@spacebar/schemas";
export const executeWebhook = async (req: Request, res: Response) => {
diff --git a/src/api/util/utility/EmbedHandlers.ts b/src/api/util/utility/EmbedHandlers.ts
index fa3d74f04..c18e4f791 100644
--- a/src/api/util/utility/EmbedHandlers.ts
+++ b/src/api/util/utility/EmbedHandlers.ts
@@ -16,14 +16,15 @@
along with this program. If not, see .
*/
-import { sleep, arrayDistinctBy, arrayGroupBy } from "@spacebar/extensions";
-import { Config, EmbedCache, emitEvent, Message, MessageUpdateEvent, normalizeUrl, OrmUtils } from "@spacebar/util";
-import { Embed, EmbedImage, EmbedType } from "@spacebar/schemas";
import * as cheerio from "cheerio";
import crypto from "node:crypto";
import { yellow } from "picocolors";
import probe from "probe-image-size";
import { FindOptionsWhere, In } from "typeorm";
+import { EmbedCache, Message } from "@spacebar/database";
+import { sleep, arrayDistinctBy, arrayGroupBy } from "@spacebar/extensions";
+import { Config, emitEvent, MessageUpdateEvent, normalizeUrl, OrmUtils } from "@spacebar/util";
+import { Embed, EmbedImage, EmbedType } from "@spacebar/schemas";
export function getDefaultFetchOptions(): RequestInit {
return {
diff --git a/src/cdn/Server.ts b/src/cdn/Server.ts
index 1c0f7802b..cd0d8dee6 100644
--- a/src/cdn/Server.ts
+++ b/src/cdn/Server.ts
@@ -20,8 +20,8 @@ import path from "node:path";
import morgan from "morgan";
import { Server, ServerOptions } from "lambert-server/Server";
import { CORS, BodyParser } from "@spacebar/api";
-import { initDatabase } from "@spacebar/database";
-import { Attachment, Config, registerRoutes } from "@spacebar/util";
+import { Attachment, initDatabase } from "@spacebar/database";
+import { Config, registerRoutes } from "@spacebar/util";
import { ProcessLifecycle } from "../util/util/ProcessLifecycle";
import { Monitoring } from "../util/monitoring/Monitoring";
import guildProfilesRoute from "./routes/guild-profiles";
diff --git a/src/cdn/routes/attachments.ts b/src/cdn/routes/attachments.ts
index d1defe85f..01621be10 100644
--- a/src/cdn/routes/attachments.ts
+++ b/src/cdn/routes/attachments.ts
@@ -16,14 +16,15 @@
along with this program. If not, see .
*/
-import { Config, CloudAttachment, hasValidSignature, NewUrlUserSignatureData, Snowflake, UrlSignResult } from "@spacebar/util";
import { Request, Response, Router } from "express";
+import { fileTypeFromBuffer } from "file-type";
import imageSize from "image-size";
import { HTTPError } from "lambert-server/HTTPError";
-import { multer } from "../util/multer";
-import { storage } from "@spacebar/cdn";
-import { fileTypeFromBuffer } from "file-type";
-import { cache } from "../util/cache";
+import { CloudAttachment } from "@spacebar/database";
+import { Config, hasValidSignature, NewUrlUserSignatureData, Snowflake, UrlSignResult } from "@spacebar/util";
+import { storage } from "@spacebar/cdn/util/Storage";
+import { multer } from "@spacebar/cdn/util/multer";
+import { cache } from "@spacebar/cdn/util/cache";
const router = Router({ mergeParams: true });
diff --git a/src/connections/BattleNet/index.ts b/src/connections/BattleNet/index.ts
index 30488e3c9..d7bdc131e 100644
--- a/src/connections/BattleNet/index.ts
+++ b/src/connections/BattleNet/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as BattleNetSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/connections/Discord/index.ts b/src/connections/Discord/index.ts
index 5a15f0978..3a1ceb33c 100644
--- a/src/connections/Discord/index.ts
+++ b/src/connections/Discord/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as DiscordSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/connections/EpicGames/index.ts b/src/connections/EpicGames/index.ts
index 5fc2701f4..573054600 100644
--- a/src/connections/EpicGames/index.ts
+++ b/src/connections/EpicGames/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as EpicGamesSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/connections/Facebook/index.ts b/src/connections/Facebook/index.ts
index 3abd5669e..46cb73441 100644
--- a/src/connections/Facebook/index.ts
+++ b/src/connections/Facebook/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as FacebookSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/connections/GitHub/index.ts b/src/connections/GitHub/index.ts
index a5e0f7041..3ec30e2b9 100644
--- a/src/connections/GitHub/index.ts
+++ b/src/connections/GitHub/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
-import { GenericOAuthSettings as GitHubSettings } from "../GenericOAuthSettings";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
+import { GenericOAuthSettings as GitHubSettings } from "../GenericOAuthSettings";
interface UserResponse {
login: string;
diff --git a/src/connections/Reddit/index.ts b/src/connections/Reddit/index.ts
index 92f3737e1..01e0f7382 100644
--- a/src/connections/Reddit/index.ts
+++ b/src/connections/Reddit/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as RedditSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/connections/Spotify/index.ts b/src/connections/Spotify/index.ts
index 97884b030..ac8f98e13 100644
--- a/src/connections/Spotify/index.ts
+++ b/src/connections/Spotify/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { ApiError, ConnectedAccount, ConnectionLoader, DiscordApiErrors, RefreshableConnection } from "@spacebar/util";
import wretch from "wretch";
-import { GenericOAuthSettings as SpotifySettings } from "../GenericOAuthSettings";
+import { ConnectedAccount } from "@spacebar/database";
+import { ConnectionLoader, DiscordApiErrors, RefreshableConnection } from "@spacebar/util";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
+import { GenericOAuthSettings as SpotifySettings } from "../GenericOAuthSettings";
export interface UserResponse {
display_name: string;
diff --git a/src/connections/Twitch/index.ts b/src/connections/Twitch/index.ts
index da2d1f637..8ce8fc2ed 100644
--- a/src/connections/Twitch/index.ts
+++ b/src/connections/Twitch/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, ConnectionLoader, DiscordApiErrors, RefreshableConnection } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { RefreshableConnection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as TwitchSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/connections/Twitter/index.ts b/src/connections/Twitter/index.ts
index 7a56aa41c..4721a76a4 100644
--- a/src/connections/Twitter/index.ts
+++ b/src/connections/Twitter/index.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, ConnectionLoader, DiscordApiErrors, RefreshableConnection } from "@spacebar/util";
import wretch from "wretch";
-import { GenericOAuthSettings as TwitterSettings } from "../GenericOAuthSettings";
+import { ConnectedAccount } from "@spacebar/database";
+import { RefreshableConnection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
+import { GenericOAuthSettings as TwitterSettings } from "../GenericOAuthSettings";
interface TwitterUserResponse {
data: {
diff --git a/src/connections/Xbox/index.ts b/src/connections/Xbox/index.ts
index 95cd6ecb0..04f6eab7a 100644
--- a/src/connections/Xbox/index.ts
+++ b/src/connections/Xbox/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as XboxSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/connections/Youtube/index.ts b/src/connections/Youtube/index.ts
index 64debb83b..8e4b3a5b7 100644
--- a/src/connections/Youtube/index.ts
+++ b/src/connections/Youtube/index.ts
@@ -16,8 +16,10 @@
along with this program. If not, see .
*/
-import { ConnectedAccount, Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
import wretch from "wretch";
+import { ConnectedAccount } from "@spacebar/database";
+import { Connection, ConnectionLoader, DiscordApiErrors } from "@spacebar/util";
+
import { GenericOAuthSettings as YoutubeSettings } from "../GenericOAuthSettings";
import { ConnectedAccountCommonOAuthTokenResponse, ConnectionCallbackSchema } from "@spacebar/schemas";
diff --git a/src/database/Database.ts b/src/database/Database.ts
index adafeac03..a1d394786 100644
--- a/src/database/Database.ts
+++ b/src/database/Database.ts
@@ -21,7 +21,7 @@ import path from "node:path";
import { green, red, yellow } from "picocolors";
import { DataSource } from "typeorm";
// noinspection ES6PreferShortImport
-import { ConfigEntity } from "../util/entities/Config";
+import { ConfigEntity } from "@spacebar/database/entities/Config";
import fs from "node:fs";
import { ProcessLifecycle } from "../util/util/ProcessLifecycle";
diff --git a/src/util/entities/Application.ts b/src/database/entities/Application.ts
similarity index 100%
rename from src/util/entities/Application.ts
rename to src/database/entities/Application.ts
diff --git a/src/util/entities/ApplicationCommand.ts b/src/database/entities/ApplicationCommand.ts
similarity index 100%
rename from src/util/entities/ApplicationCommand.ts
rename to src/database/entities/ApplicationCommand.ts
diff --git a/src/util/entities/Attachment.ts b/src/database/entities/Attachment.ts
similarity index 97%
rename from src/util/entities/Attachment.ts
rename to src/database/entities/Attachment.ts
index ff9643fc9..b9756bf71 100644
--- a/src/util/entities/Attachment.ts
+++ b/src/database/entities/Attachment.ts
@@ -17,9 +17,9 @@
*/
import { BeforeRemove, Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { Config, deleteFile } from "../util";
+import { Config, deleteFile } from "../../util/util";
import { BaseClass } from "./BaseClass";
-import { getUrlSignature, NewUrlUserSignatureData, NewUrlSignatureData } from "../Signing";
+import { getUrlSignature, NewUrlUserSignatureData, NewUrlSignatureData } from "../../util/Signing";
import { PublicAttachment } from "../../schemas/api/messages/Attachments";
@Entity({
diff --git a/src/util/entities/AuditLog.ts b/src/database/entities/AuditLog.ts
similarity index 100%
rename from src/util/entities/AuditLog.ts
rename to src/database/entities/AuditLog.ts
diff --git a/src/util/entities/AutomodRule.ts b/src/database/entities/AutomodRule.ts
similarity index 100%
rename from src/util/entities/AutomodRule.ts
rename to src/database/entities/AutomodRule.ts
diff --git a/src/util/entities/BackupCodes.ts b/src/database/entities/BackupCodes.ts
similarity index 97%
rename from src/util/entities/BackupCodes.ts
rename to src/database/entities/BackupCodes.ts
index 6759a9a35..88fe932e4 100644
--- a/src/util/entities/BackupCodes.ts
+++ b/src/database/entities/BackupCodes.ts
@@ -20,7 +20,7 @@ import { Column, Entity, JoinColumn, ManyToOne } from "typeorm";
import { BaseClass } from "./BaseClass";
import { User } from "./User";
import crypto from "node:crypto";
-import { Config } from "../util";
+import { Config } from "../../util/util";
@Entity({
name: "backup_codes",
diff --git a/src/util/entities/Badge.ts b/src/database/entities/Badge.ts
similarity index 100%
rename from src/util/entities/Badge.ts
rename to src/database/entities/Badge.ts
diff --git a/src/util/entities/Ban.ts b/src/database/entities/Ban.ts
similarity index 100%
rename from src/util/entities/Ban.ts
rename to src/database/entities/Ban.ts
diff --git a/src/util/entities/BaseClass.ts b/src/database/entities/BaseClass.ts
similarity index 95%
rename from src/util/entities/BaseClass.ts
rename to src/database/entities/BaseClass.ts
index a64138adb..770c96e8d 100644
--- a/src/util/entities/BaseClass.ts
+++ b/src/database/entities/BaseClass.ts
@@ -17,10 +17,10 @@
*/
import { BaseEntity, BeforeInsert, BeforeUpdate, FindOptionsWhere, PrimaryColumn } from "typeorm";
-import { getDatabase } from "@spacebar/database";
-import { Snowflake } from "../util";
-import { OrmUtils } from "../imports";
-import { annotationsKey } from "../util/Decorators";
+import { getDatabase } from "../Database";
+import { Snowflake } from "../../util/util/Snowflake";
+import { OrmUtils } from "../../util/imports/OrmUtils";
+import { annotationsKey } from "../../util/util/Decorators";
export class BaseClassWithoutId extends BaseEntity {
private get construct() {
diff --git a/src/util/entities/Categories.ts b/src/database/entities/Categories.ts
similarity index 100%
rename from src/util/entities/Categories.ts
rename to src/database/entities/Categories.ts
diff --git a/src/util/entities/Channel.ts b/src/database/entities/Channel.ts
similarity index 99%
rename from src/util/entities/Channel.ts
rename to src/database/entities/Channel.ts
index e3c1c9790..17a2a6284 100644
--- a/src/util/entities/Channel.ts
+++ b/src/database/entities/Channel.ts
@@ -18,9 +18,9 @@
import { HTTPError } from "lambert-server/HTTPError";
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
-import { DmChannelDTO } from "../dtos";
-import { ChannelCreateEvent, ChannelRecipientRemoveEvent, ThreadCreateEvent, ThreadMembersUpdateEvent } from "../interfaces";
-import { InvisibleCharacters, Snowflake, emitEvent, getPermission, trimSpecial, Permissions, Config, DiscordApiErrors } from "../util";
+import { DmChannelDTO } from "../../util/dtos";
+import { ChannelCreateEvent, ChannelRecipientRemoveEvent, ThreadCreateEvent, ThreadMembersUpdateEvent } from "../../util/interfaces";
+import { InvisibleCharacters, Snowflake, emitEvent, getPermission, trimSpecial, Permissions, Config, DiscordApiErrors } from "../../util/util";
import { BaseClass } from "./BaseClass";
import { Guild } from "./Guild";
import { Invite } from "./Invite";
@@ -33,7 +33,7 @@ import { VoiceState } from "./VoiceState";
import { Webhook } from "./Webhook";
import { Member } from "./Member";
import { ChannelPermissionOverwrite, ChannelType, PublicChannel, PublicUserProjection, ThreadMetadata } from "@spacebar/schemas";
-import { OrmUtils } from "../imports";
+import { OrmUtils } from "../../util/imports";
import { ThreadMember } from "./ThreadMember";
@Entity({
diff --git a/src/util/entities/ClientRelease.ts b/src/database/entities/ClientRelease.ts
similarity index 100%
rename from src/util/entities/ClientRelease.ts
rename to src/database/entities/ClientRelease.ts
diff --git a/src/util/entities/CloudAttachment.ts b/src/database/entities/CloudAttachment.ts
similarity index 100%
rename from src/util/entities/CloudAttachment.ts
rename to src/database/entities/CloudAttachment.ts
diff --git a/src/util/entities/Config.ts b/src/database/entities/Config.ts
similarity index 100%
rename from src/util/entities/Config.ts
rename to src/database/entities/Config.ts
diff --git a/src/util/entities/ConnectedAccount.ts b/src/database/entities/ConnectedAccount.ts
similarity index 100%
rename from src/util/entities/ConnectedAccount.ts
rename to src/database/entities/ConnectedAccount.ts
diff --git a/src/util/entities/ConnectionConfigEntity.ts b/src/database/entities/ConnectionConfigEntity.ts
similarity index 100%
rename from src/util/entities/ConnectionConfigEntity.ts
rename to src/database/entities/ConnectionConfigEntity.ts
diff --git a/src/util/entities/EmbedCache.ts b/src/database/entities/EmbedCache.ts
similarity index 100%
rename from src/util/entities/EmbedCache.ts
rename to src/database/entities/EmbedCache.ts
diff --git a/src/util/entities/Emoji.ts b/src/database/entities/Emoji.ts
similarity index 98%
rename from src/util/entities/Emoji.ts
rename to src/database/entities/Emoji.ts
index 586550f94..f75cb03fb 100644
--- a/src/util/entities/Emoji.ts
+++ b/src/database/entities/Emoji.ts
@@ -17,7 +17,7 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, RelationId } from "typeorm";
-import { User } from ".";
+import { User } from "./index";
import { BaseClass } from "./BaseClass";
import { Guild } from "./Guild";
diff --git a/src/util/entities/Encryption.ts b/src/database/entities/Encryption.ts
similarity index 100%
rename from src/util/entities/Encryption.ts
rename to src/database/entities/Encryption.ts
diff --git a/src/util/entities/Guild.ts b/src/database/entities/Guild.ts
similarity index 99%
rename from src/util/entities/Guild.ts
rename to src/database/entities/Guild.ts
index 0cea637e1..ab56b76aa 100644
--- a/src/util/entities/Guild.ts
+++ b/src/database/entities/Guild.ts
@@ -18,7 +18,7 @@
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
import { arrayRemove } from "@spacebar/extensions";
-import { Config, GuildWelcomeScreen, Snowflake, handleFile } from "..";
+import { Config, GuildWelcomeScreen, Snowflake, handleFile } from "@spacebar/util";
import { Ban } from "./Ban";
import { BaseClass } from "./BaseClass";
import { Channel } from "./Channel";
diff --git a/src/util/entities/InstanceBan.ts b/src/database/entities/InstanceBan.ts
similarity index 100%
rename from src/util/entities/InstanceBan.ts
rename to src/database/entities/InstanceBan.ts
diff --git a/src/util/entities/Invite.ts b/src/database/entities/Invite.ts
similarity index 100%
rename from src/util/entities/Invite.ts
rename to src/database/entities/Invite.ts
diff --git a/src/util/entities/Member.ts b/src/database/entities/Member.ts
similarity index 98%
rename from src/util/entities/Member.ts
rename to src/database/entities/Member.ts
index b6b1ca11c..b9fbac3d6 100644
--- a/src/util/entities/Member.ts
+++ b/src/database/entities/Member.ts
@@ -18,10 +18,10 @@
import { HTTPError } from "lambert-server/HTTPError";
import { BeforeInsert, BeforeUpdate, Column, Entity, Index, JoinColumn, JoinTable, ManyToMany, ManyToOne, Not, PrimaryGeneratedColumn, RelationId } from "typeorm";
-import { Ban, Channel, PublicGuildRelations } from ".";
-import { ReadyGuildDTO } from "../dtos";
-import { GuildCreateEvent, GuildDeleteEvent, GuildMemberAddEvent, GuildMemberRemoveEvent, GuildMemberUpdateEvent, MessageCreateEvent } from "../interfaces";
-import { Config, emitEvent, DiscordApiErrors, Stopwatch } from "../util";
+import { Ban, Channel, PublicGuildRelations } from "./index";
+import { ReadyGuildDTO } from "../../util/dtos";
+import { GuildCreateEvent, GuildDeleteEvent, GuildMemberAddEvent, GuildMemberRemoveEvent, GuildMemberUpdateEvent, MessageCreateEvent } from "../../util/interfaces";
+import { Config, emitEvent, DiscordApiErrors, Stopwatch } from "../../util/util";
import { BaseClassWithoutId } from "./BaseClass";
import { Guild } from "./Guild";
import { Message } from "./Message";
diff --git a/src/util/entities/Message.ts b/src/database/entities/Message.ts
similarity index 99%
rename from src/util/entities/Message.ts
rename to src/database/entities/Message.ts
index 68e7cbbb4..31e6a0e42 100644
--- a/src/util/entities/Message.ts
+++ b/src/database/entities/Message.ts
@@ -27,7 +27,7 @@ import { Guild } from "./Guild";
import { Webhook } from "./Webhook";
import { Sticker } from "./Sticker";
import { Attachment } from "./Attachment";
-import { NewUrlUserSignatureData } from "../Signing";
+import { NewUrlUserSignatureData } from "../../util/Signing";
import {
ApplicationCommandType,
BaseMessageComponents,
@@ -44,7 +44,7 @@ import {
InteractionType,
} from "@spacebar/schemas";
import { MessageFlags } from "@spacebar/util";
-import { JsonRemoveEmpty } from "../util/Decorators";
+import { JsonRemoveEmpty } from "../../util/util/Decorators";
@Entity({
name: "messages",
diff --git a/src/util/entities/Migration.ts b/src/database/entities/Migration.ts
similarity index 100%
rename from src/util/entities/Migration.ts
rename to src/database/entities/Migration.ts
diff --git a/src/util/entities/Note.ts b/src/database/entities/Note.ts
similarity index 100%
rename from src/util/entities/Note.ts
rename to src/database/entities/Note.ts
diff --git a/src/util/entities/RateLimit.ts b/src/database/entities/RateLimit.ts
similarity index 100%
rename from src/util/entities/RateLimit.ts
rename to src/database/entities/RateLimit.ts
diff --git a/src/util/entities/ReadState.ts b/src/database/entities/ReadState.ts
similarity index 100%
rename from src/util/entities/ReadState.ts
rename to src/database/entities/ReadState.ts
diff --git a/src/util/entities/Recipient.ts b/src/database/entities/Recipient.ts
similarity index 100%
rename from src/util/entities/Recipient.ts
rename to src/database/entities/Recipient.ts
diff --git a/src/util/entities/Relationship.ts b/src/database/entities/Relationship.ts
similarity index 100%
rename from src/util/entities/Relationship.ts
rename to src/database/entities/Relationship.ts
diff --git a/src/util/entities/ReportMenu.ts b/src/database/entities/ReportMenu.ts
similarity index 100%
rename from src/util/entities/ReportMenu.ts
rename to src/database/entities/ReportMenu.ts
diff --git a/src/util/entities/Role.ts b/src/database/entities/Role.ts
similarity index 100%
rename from src/util/entities/Role.ts
rename to src/database/entities/Role.ts
diff --git a/src/util/entities/SecurityKey.ts b/src/database/entities/SecurityKey.ts
similarity index 100%
rename from src/util/entities/SecurityKey.ts
rename to src/database/entities/SecurityKey.ts
diff --git a/src/util/entities/Session.ts b/src/database/entities/Session.ts
similarity index 98%
rename from src/util/entities/Session.ts
rename to src/database/entities/Session.ts
index 1cb77ebef..e0e622dbb 100644
--- a/src/util/entities/Session.ts
+++ b/src/database/entities/Session.ts
@@ -20,9 +20,9 @@ import crypto from "node:crypto";
import { User } from "./User";
import { BaseClassWithoutId } from "./BaseClass";
import { Column, CreateDateColumn, Entity, Index, JoinColumn, ManyToOne, PrimaryColumn, RelationId } from "typeorm";
-import { Activity, ClientStatus, GatewaySession, GatewaySessionClientInfo, PrivateStatus } from "../interfaces";
+import { Activity, ClientStatus, GatewaySession, GatewaySessionClientInfo, PrivateStatus } from "../../util/interfaces";
import { randomUpperString } from "@spacebar/api";
-import { DateBuilder, IpDataClient, TimeSpan } from "../util";
+import { DateBuilder, IpDataClient, TimeSpan } from "../../util/util";
@Entity({
name: "sessions",
diff --git a/src/util/entities/Sticker.ts b/src/database/entities/Sticker.ts
similarity index 100%
rename from src/util/entities/Sticker.ts
rename to src/database/entities/Sticker.ts
diff --git a/src/util/entities/StickerPack.ts b/src/database/entities/StickerPack.ts
similarity index 97%
rename from src/util/entities/StickerPack.ts
rename to src/database/entities/StickerPack.ts
index d4a598f41..871124415 100644
--- a/src/util/entities/StickerPack.ts
+++ b/src/database/entities/StickerPack.ts
@@ -17,7 +17,7 @@
*/
import { Column, Entity, JoinColumn, ManyToOne, OneToMany, RelationId } from "typeorm";
-import { Sticker } from ".";
+import { Sticker } from "./index";
import { BaseClass } from "./BaseClass";
@Entity({
diff --git a/src/util/entities/Stream.ts b/src/database/entities/Stream.ts
similarity index 100%
rename from src/util/entities/Stream.ts
rename to src/database/entities/Stream.ts
diff --git a/src/util/entities/StreamSession.ts b/src/database/entities/StreamSession.ts
similarity index 100%
rename from src/util/entities/StreamSession.ts
rename to src/database/entities/StreamSession.ts
diff --git a/src/util/entities/Tag.ts b/src/database/entities/Tag.ts
similarity index 100%
rename from src/util/entities/Tag.ts
rename to src/database/entities/Tag.ts
diff --git a/src/util/entities/Team.ts b/src/database/entities/Team.ts
similarity index 100%
rename from src/util/entities/Team.ts
rename to src/database/entities/Team.ts
diff --git a/src/util/entities/TeamMember.ts b/src/database/entities/TeamMember.ts
similarity index 100%
rename from src/util/entities/TeamMember.ts
rename to src/database/entities/TeamMember.ts
diff --git a/src/util/entities/Template.ts b/src/database/entities/Template.ts
similarity index 100%
rename from src/util/entities/Template.ts
rename to src/database/entities/Template.ts
diff --git a/src/util/entities/ThreadMember.ts b/src/database/entities/ThreadMember.ts
similarity index 98%
rename from src/util/entities/ThreadMember.ts
rename to src/database/entities/ThreadMember.ts
index cea61f513..fdda4eeaf 100644
--- a/src/util/entities/ThreadMember.ts
+++ b/src/database/entities/ThreadMember.ts
@@ -17,8 +17,8 @@
*/
import { Column, Entity, Index, JoinColumn, ManyToOne, PrimaryGeneratedColumn, RelationId } from "typeorm";
-import { ThreadMembersUpdateEvent } from "../interfaces";
-import { emitEvent } from "../util";
+import { ThreadMembersUpdateEvent } from "../../util/interfaces";
+import { emitEvent } from "../../util/util";
import { BaseClassWithoutId } from "./BaseClass";
import { Channel } from "./Channel";
import { HTTPError } from "lambert-server/HTTPError";
diff --git a/src/util/entities/User.ts b/src/database/entities/User.ts
similarity index 98%
rename from src/util/entities/User.ts
rename to src/database/entities/User.ts
index afde3e9ba..5f40adb36 100644
--- a/src/util/entities/User.ts
+++ b/src/database/entities/User.ts
@@ -18,9 +18,10 @@
import { Request } from "express";
import { Column, Entity, JoinColumn, OneToMany, OneToOne } from "typeorm";
-import { Channel, Config, Email, FieldErrors, Snowflake, Stopwatch, trimSpecial } from "..";
-import { Random } from "../util";
+import { Config, Email, FieldErrors, Snowflake, Stopwatch, trimSpecial } from "@spacebar/util";
+import { Random } from "@spacebar/util/util/Random";
import { BaseClass } from "./BaseClass";
+import { Channel } from "./Channel";
import { ConnectedAccount } from "./ConnectedAccount";
import { Member } from "./Member";
import { Relationship } from "./Relationship";
@@ -38,7 +39,7 @@ import {
PublicUserProjection,
UserPrivate,
} from "@spacebar/schemas";
-import { JsonNumber } from "../util/Decorators";
+import { JsonNumber } from "../../util/util/Decorators";
@Entity({
name: "users",
diff --git a/src/util/entities/UserSettings.ts b/src/database/entities/UserSettings.ts
similarity index 100%
rename from src/util/entities/UserSettings.ts
rename to src/database/entities/UserSettings.ts
diff --git a/src/util/entities/UserSettingsProtos.ts b/src/database/entities/UserSettingsProtos.ts
similarity index 100%
rename from src/util/entities/UserSettingsProtos.ts
rename to src/database/entities/UserSettingsProtos.ts
diff --git a/src/util/entities/ValidRegistrationTokens.ts b/src/database/entities/ValidRegistrationTokens.ts
similarity index 100%
rename from src/util/entities/ValidRegistrationTokens.ts
rename to src/database/entities/ValidRegistrationTokens.ts
diff --git a/src/util/entities/VoiceState.ts b/src/database/entities/VoiceState.ts
similarity index 100%
rename from src/util/entities/VoiceState.ts
rename to src/database/entities/VoiceState.ts
diff --git a/src/util/entities/Webhook.ts b/src/database/entities/Webhook.ts
similarity index 100%
rename from src/util/entities/Webhook.ts
rename to src/database/entities/Webhook.ts
diff --git a/src/util/entities/index.ts b/src/database/entities/index.ts
similarity index 100%
rename from src/util/entities/index.ts
rename to src/database/entities/index.ts
diff --git a/src/database/index.ts b/src/database/index.ts
index 0ceebea87..3ec764b3b 100644
--- a/src/database/index.ts
+++ b/src/database/index.ts
@@ -16,4 +16,7 @@
along with this program. If not, see .
*/
+import "reflect-metadata";
+
export * from "./Database";
+export * from "./entities/index";
diff --git a/src/gateway/events/Close.ts b/src/gateway/events/Close.ts
index 6a3c6cb32..c227c33d0 100644
--- a/src/gateway/events/Close.ts
+++ b/src/gateway/events/Close.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
-import { WebSocket } from "@spacebar/gateway";
-import { emitEvent, Member, PresenceUpdateEvent, Session, SessionsReplace, User, VoiceState, VoiceStateUpdateEvent, distributePresenceUpdate } from "@spacebar/util";
import { randomString } from "@spacebar/api";
+import { Member, Session, User, VoiceState } from "@spacebar/database";
+import { WebSocket } from "@spacebar/gateway";
+import { emitEvent, PresenceUpdateEvent, SessionsReplace, VoiceStateUpdateEvent, distributePresenceUpdate } from "@spacebar/util";
import { ProcessLifecycle } from "../../util/util/ProcessLifecycle";
export async function Close(this: WebSocket, code: number, reason: Buffer) {
diff --git a/src/gateway/listener/listener.ts b/src/gateway/listener/listener.ts
index 70571e5fa..226859a87 100644
--- a/src/gateway/listener/listener.ts
+++ b/src/gateway/listener/listener.ts
@@ -16,26 +16,13 @@
along with this program. If not, see .
*/
-import {
- Ban,
- EVENTEnum,
- EventOpts,
- getPermission,
- listenEvent,
- ListenEventOpts,
- Member,
- Message,
- NewUrlUserSignatureData,
- Permissions,
- RabbitMQ,
- Recipient,
- Relationship,
-} from "@spacebar/util";
-import { CLOSECODES, OPCODES, Send } from "../util";
-import { WebSocket } from "@spacebar/gateway";
import { Channel as AMQChannel } from "amqplib";
-import { PublicMember, RelationshipType } from "@spacebar/schemas";
import { bgRedBright } from "picocolors";
+import { Ban, Member, Message, Recipient, Relationship } from "@spacebar/database";
+import { EVENTEnum, EventOpts, getPermission, listenEvent, ListenEventOpts, NewUrlUserSignatureData, Permissions, RabbitMQ } from "@spacebar/util";
+import { WebSocket } from "@spacebar/gateway";
+import { PublicMember, RelationshipType } from "@spacebar/schemas";
+import { CLOSECODES, OPCODES, Send } from "../util";
// TODO: close connection on Invalidated Token
// TODO: check intent
diff --git a/src/gateway/opcodes/GuildSync.ts b/src/gateway/opcodes/GuildSync.ts
index 04d3de566..f075028b6 100644
--- a/src/gateway/opcodes/GuildSync.ts
+++ b/src/gateway/opcodes/GuildSync.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
-import { Member, Session, Presence, timePromise, Stopwatch, Config, getMostRelevantSession } from "@spacebar/util";
+import { In } from "typeorm";
+import { Member, Session } from "@spacebar/database";
import { WebSocket, Payload, OPCODES, Send, handleOffloadedGatewayRequest } from "@spacebar/gateway";
import { PublicMember } from "@spacebar/schemas";
-import { In } from "typeorm";
+import { Presence, timePromise, Stopwatch, Config, getMostRelevantSession } from "@spacebar/util";
// TODO: only show roles/members that have access to this channel
// TODO: config: to list all members (even those who are offline) sorted by role, or just those who are online
diff --git a/src/gateway/opcodes/Heartbeat.ts b/src/gateway/opcodes/Heartbeat.ts
index 5e60a65af..a02e3b675 100644
--- a/src/gateway/opcodes/Heartbeat.ts
+++ b/src/gateway/opcodes/Heartbeat.ts
@@ -16,11 +16,11 @@
along with this program. If not, see .
*/
+import { FindOptionsWhere } from "typeorm";
import { OPCODES, Payload, WebSocket } from "@spacebar/gateway";
+import { Session } from "@spacebar/database";
import { setHeartbeat } from "../util/Heartbeat";
import { Send } from "../util/Send";
-import { Session } from "@spacebar/util";
-import { FindOptionsWhere } from "typeorm";
interface QoSData {
seq: number | null;
diff --git a/src/gateway/opcodes/Identify.ts b/src/gateway/opcodes/Identify.ts
index b4b127e50..9c87aec91 100644
--- a/src/gateway/opcodes/Identify.ts
+++ b/src/gateway/opcodes/Identify.ts
@@ -20,46 +20,48 @@ import { In, Not } from "typeorm";
import { PreloadedUserSettings } from "discord-protos";
import { Capabilities, CLOSECODES, OPCODES, Payload, Send, setupListener, WebSocket } from "@spacebar/gateway";
import { arrayGroupBy } from "@spacebar/extensions";
-import { getDatabase } from "@spacebar/database";
import {
+ getDatabase,
Application,
Channel,
+ Emoji,
+ Guild,
+ Member,
+ MemberPrivateProjection,
+ ReadState,
+ Recipient,
+ Relationship,
+ Role,
+ Session,
+ Sticker,
+ ThreadMember,
+ UserSettings,
+ UserSettingsProtos,
+ VoiceState,
+} from "@spacebar/database";
+import {
checkToken,
Config,
CurrentTokenFormatVersion,
ElapsedTime,
emitEvent,
- Emoji,
EVENTEnum,
generateToken,
- Guild,
GuildOrUnavailable,
Intents,
- Member,
- MemberPrivateProjection,
OPCodes,
PresenceUpdateEvent,
- ReadState,
ReadyEventData,
ReadyGuildDTO,
ReadyUserGuildSettingsEntries,
- Recipient,
- Relationship,
- Role,
- Session,
SessionsReplace,
- Sticker,
Stopwatch,
- ThreadMember,
timeFunction,
timePromise,
TraceNode,
TraceRoot,
- UserSettings,
- UserSettingsProtos,
- VoiceState,
} from "@spacebar/util";
-import { ChannelType, DefaultUserGuildSettings, DMChannel, IdentifySchema, PrivateUserProjection, PublicUser, PublicUserProjection, RelationshipType } from "@spacebar/schemas";
+import { ChannelType, DefaultUserGuildSettings, DMChannel, IdentifySchema, PrivateUserProjection, PublicUser, PublicUserProjection } from "@spacebar/schemas";
import { randomString } from "@spacebar/api";
import { check } from "./instanceOf";
diff --git a/src/gateway/opcodes/LazyRequest.ts b/src/gateway/opcodes/LazyRequest.ts
index d8900d9e7..d8f4cb5a7 100644
--- a/src/gateway/opcodes/LazyRequest.ts
+++ b/src/gateway/opcodes/LazyRequest.ts
@@ -17,11 +17,11 @@
*/
import murmur from "murmurhash-js/murmurhash3_gc";
-import { getDatabase } from "@spacebar/database";
+import { getDatabase, Member, Role, Session, User, Channel } from "@spacebar/database";
import { arrayPartition } from "@spacebar/extensions";
import { WebSocket, Payload, handlePresenceUpdate, OPCODES, Send } from "@spacebar/gateway";
import { LazyRequestSchema } from "@spacebar/schemas";
-import { getPermission, listenEvent, Member, Role, Session, User, Presence, Channel, Permissions, getMostRelevantSession } from "@spacebar/util";
+import { getPermission, listenEvent, Presence, Permissions, getMostRelevantSession } from "@spacebar/util";
import { check } from "./instanceOf";
// TODO: only show roles/members that have access to this channel
diff --git a/src/gateway/opcodes/PresenceUpdate.ts b/src/gateway/opcodes/PresenceUpdate.ts
index 47f84fa96..a0be5f65f 100644
--- a/src/gateway/opcodes/PresenceUpdate.ts
+++ b/src/gateway/opcodes/PresenceUpdate.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
+import { Session, User } from "@spacebar/database";
import { WebSocket, Payload } from "@spacebar/gateway";
-import { emitEvent, InternalStatusOrder, PresenceUpdateEvent, PrivateStatus, PublicStatus, PublicStatusOrder, Session, User } from "@spacebar/util";
-import { check } from "./instanceOf";
+import { emitEvent, InternalStatusOrder, PresenceUpdateEvent, PrivateStatus } from "@spacebar/util";
import { ActivitySchema } from "@spacebar/schemas";
+import { check } from "./instanceOf";
export async function onPresenceUpdate(this: WebSocket, { d }: Payload) {
const startTime = Date.now();
diff --git a/src/gateway/opcodes/RequestChannelInfo.ts b/src/gateway/opcodes/RequestChannelInfo.ts
index efa3e728c..8cb9098de 100644
--- a/src/gateway/opcodes/RequestChannelInfo.ts
+++ b/src/gateway/opcodes/RequestChannelInfo.ts
@@ -16,9 +16,10 @@
along with this program. If not, see .
*/
+import { Channel } from "@spacebar/database";
import { WebSocket, Payload, OPCODES, Send, handleOffloadedGatewayRequest } from "@spacebar/gateway";
import { ChannelType } from "@spacebar/schemas";
-import { Channel, Config } from "@spacebar/util";
+import { Config } from "@spacebar/util";
export async function onRequestChannelInfo(this: WebSocket, { d }: Payload) {
// Schema validation can only accept either string or array, so transforming it here to support both
diff --git a/src/gateway/opcodes/RequestGuildMembers.ts b/src/gateway/opcodes/RequestGuildMembers.ts
index 88b24d6c2..ec8e17cfb 100644
--- a/src/gateway/opcodes/RequestGuildMembers.ts
+++ b/src/gateway/opcodes/RequestGuildMembers.ts
@@ -17,10 +17,10 @@
*/
import { FindManyOptions, ILike, In, MoreThan } from "typeorm";
-import { getDatabase } from "@spacebar/database";
+import { getDatabase, Member, Session } from "@spacebar/database";
import { WebSocket, Payload, OPCODES, Send, handleOffloadedGatewayRequest } from "@spacebar/gateway";
import { RequestGuildMembersSchema } from "@spacebar/schemas";
-import { Config, DateBuilder, getPermission, GuildMembersChunkEvent, Member, Presence, Session } from "@spacebar/util";
+import { Config, DateBuilder, getPermission, GuildMembersChunkEvent, Presence } from "@spacebar/util";
import { check } from "./instanceOf";
export async function onRequestGuildMembers(this: WebSocket, { d }: Payload) {
diff --git a/src/gateway/opcodes/StreamCreate.ts b/src/gateway/opcodes/StreamCreate.ts
index d1faffb12..6fc222abd 100644
--- a/src/gateway/opcodes/StreamCreate.ts
+++ b/src/gateway/opcodes/StreamCreate.ts
@@ -1,17 +1,24 @@
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2023 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
+import { Channel, Member, Stream, StreamSession, VoiceState } from "@spacebar/database";
import { genVoiceToken, Payload, WebSocket, generateStreamKey } from "@spacebar/gateway";
-import {
- Channel,
- Config,
- emitEvent,
- Member,
- Snowflake,
- Stream,
- StreamCreateEvent,
- StreamServerUpdateEvent,
- StreamSession,
- VoiceState,
- VoiceStateUpdateEvent,
-} from "@spacebar/util";
+import { Config, emitEvent, Snowflake, StreamCreateEvent, StreamServerUpdateEvent, VoiceStateUpdateEvent } from "@spacebar/util";
import { check } from "./instanceOf";
import { StreamCreateSchema } from "@spacebar/schemas";
diff --git a/src/gateway/opcodes/StreamDelete.ts b/src/gateway/opcodes/StreamDelete.ts
index 1ccc5ca6b..82d095387 100644
--- a/src/gateway/opcodes/StreamDelete.ts
+++ b/src/gateway/opcodes/StreamDelete.ts
@@ -1,5 +1,24 @@
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2026 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
+import { Member, Stream, VoiceState } from "@spacebar/database";
import { parseStreamKey, Payload, WebSocket } from "@spacebar/gateway";
-import { emitEvent, Member, Stream, StreamDeleteEvent, VoiceState, VoiceStateUpdateEvent } from "@spacebar/util";
+import { emitEvent, StreamDeleteEvent, VoiceStateUpdateEvent } from "@spacebar/util";
import { check } from "./instanceOf";
import { StreamDeleteSchema } from "@spacebar/schemas";
diff --git a/src/gateway/opcodes/StreamWatch.ts b/src/gateway/opcodes/StreamWatch.ts
index 040fb954e..f63e4a158 100644
--- a/src/gateway/opcodes/StreamWatch.ts
+++ b/src/gateway/opcodes/StreamWatch.ts
@@ -1,8 +1,27 @@
-import { genVoiceToken, parseStreamKey, Payload, WebSocket } from "@spacebar/gateway";
-import { Config, emitEvent, Stream, StreamCreateEvent, StreamServerUpdateEvent, StreamSession } from "@spacebar/util";
-import { check } from "./instanceOf";
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2026 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
import { Not } from "typeorm";
+import { Stream, StreamSession } from "@spacebar/database";
+import { genVoiceToken, parseStreamKey, Payload, WebSocket } from "@spacebar/gateway";
+import { Config, emitEvent, StreamCreateEvent, StreamServerUpdateEvent } from "@spacebar/util";
import { StreamWatchSchema } from "@spacebar/schemas";
+import { check } from "./instanceOf";
export async function onStreamWatch(this: WebSocket, data: Payload) {
const startTime = Date.now();
diff --git a/src/gateway/opcodes/VoiceStateUpdate.ts b/src/gateway/opcodes/VoiceStateUpdate.ts
index 0bc098526..e6975358f 100644
--- a/src/gateway/opcodes/VoiceStateUpdate.ts
+++ b/src/gateway/opcodes/VoiceStateUpdate.ts
@@ -16,10 +16,11 @@
along with this program. If not, see .
*/
+import { Guild, Member, VoiceState } from "@spacebar/database";
import { Payload, WebSocket, genVoiceToken } from "@spacebar/gateway";
-import { Config, emitEvent, Guild, Member, VoiceServerUpdateEvent, VoiceState, VoiceStateUpdateEvent } from "@spacebar/util";
-import { check } from "./instanceOf";
+import { Config, emitEvent, VoiceServerUpdateEvent, VoiceStateUpdateEvent } from "@spacebar/util";
import { Region, VoiceStateUpdateSchema } from "@spacebar/schemas";
+import { check } from "./instanceOf";
// TODO: check if a voice server is setup
// Notice: Bot users respect the voice channel's user limit, if set.
diff --git a/src/gateway/util/Utils.ts b/src/gateway/util/Utils.ts
index 208806224..23e9569bf 100644
--- a/src/gateway/util/Utils.ts
+++ b/src/gateway/util/Utils.ts
@@ -16,8 +16,8 @@
along with this program. If not, see .
*/
-import { sleep } from "@spacebar/extensions";
-import { Event, Session, TimeSpan, VoiceState } from "@spacebar/util";
+import { Session, VoiceState } from "@spacebar/database";
+import { Event, TimeSpan } from "@spacebar/util";
import { WebSocket } from "./WebSocket";
import { OPCODES } from "./Constants";
import { Send } from "./Send";
diff --git a/src/gateway/util/WebSocket.ts b/src/gateway/util/WebSocket.ts
index 41dc93c11..50c7bbb14 100644
--- a/src/gateway/util/WebSocket.ts
+++ b/src/gateway/util/WebSocket.ts
@@ -16,12 +16,13 @@
along with this program. If not, see .
*/
-import { Intents, ListenEventOpts, Permissions, Session } from "@spacebar/util";
import WS from "ws";
import { Deflate, Inflate } from "fast-zlib";
-import { Capabilities } from "./Capabilities";
import { Decoder, Encoder } from "@toondepauw/node-zstd";
+import { Session } from "@spacebar/database";
+import { Intents, ListenEventOpts, Permissions } from "@spacebar/util";
import { QoSPayload } from "../opcodes/Heartbeat";
+import { Capabilities } from "./Capabilities";
export interface WebSocket extends WS {
recentTransactions: string[];
diff --git a/src/schemas/api/bots/InteractionCreateSchema.ts b/src/schemas/api/bots/InteractionCreateSchema.ts
index 5a6d1c3f4..ff7cfaf8f 100644
--- a/src/schemas/api/bots/InteractionCreateSchema.ts
+++ b/src/schemas/api/bots/InteractionCreateSchema.ts
@@ -18,7 +18,7 @@
import { PublicMember, PublicUser, Snowflake, InteractionType } from "@spacebar/schemas";
// TODO: remove entity imports
-import { Channel, Message } from "@spacebar/util";
+import { Channel, Message } from "@spacebar/database";
export interface InteractionCreateSchema {
version: number; // TODO: types?
diff --git a/src/schemas/api/channels/Channel.ts b/src/schemas/api/channels/Channel.ts
index e39026267..33514b82c 100644
--- a/src/schemas/api/channels/Channel.ts
+++ b/src/schemas/api/channels/Channel.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove entity imports
-import { Channel, Recipient, Tag, ThreadMember } from "@spacebar/util";
+import { Channel, Recipient, Tag, ThreadMember } from "@spacebar/database";
import { HTTPError } from "lambert-server/HTTPError";
import { Snowflake } from "../../Identifiers";
import { PartialUser, PublicMember } from "../users";
diff --git a/src/schemas/api/guilds/VoiceState.ts b/src/schemas/api/guilds/VoiceState.ts
index 278e9678a..1c2f7d003 100644
--- a/src/schemas/api/guilds/VoiceState.ts
+++ b/src/schemas/api/guilds/VoiceState.ts
@@ -17,7 +17,7 @@
*/
//TODO: remove entity import
-import { VoiceState } from "@spacebar/util";
+import { VoiceState } from "@spacebar/database";
export enum PublicVoiceStateEnum {
user_id,
diff --git a/src/schemas/api/messages/Message.ts b/src/schemas/api/messages/Message.ts
index 73d0e79bd..a6d5f162d 100644
--- a/src/schemas/api/messages/Message.ts
+++ b/src/schemas/api/messages/Message.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove entity import
-import { Sticker } from "@spacebar/util";
+import { Sticker } from "@spacebar/database";
import { Embed, MessageActivity, MessageComponent, PartialUser, Poll, PublicChannel, Snowflake } from "@spacebar/schemas";
import { PublicAttachment } from "./Attachments";
diff --git a/src/schemas/api/users/ConnectedAccount.ts b/src/schemas/api/users/ConnectedAccount.ts
index 281fc58f7..0779a7694 100644
--- a/src/schemas/api/users/ConnectedAccount.ts
+++ b/src/schemas/api/users/ConnectedAccount.ts
@@ -17,6 +17,6 @@
*/
//TODO: remove entity import
-import { ConnectedAccount } from "@spacebar/util";
+import { ConnectedAccount } from "@spacebar/database";
export type PublicConnectedAccount = Pick;
diff --git a/src/schemas/api/users/Member.ts b/src/schemas/api/users/Member.ts
index 049190e0e..0cfaa0c92 100644
--- a/src/schemas/api/users/Member.ts
+++ b/src/schemas/api/users/Member.ts
@@ -16,9 +16,9 @@
along with this program. If not, see .
*/
-import { PublicUser } from "@spacebar/schemas";
// TODO: remove entity import
-import { Member } from "@spacebar/util";
+import { Member } from "@spacebar/database";
+import { PublicUser } from "@spacebar/schemas";
export interface ChannelOverride {
message_notifications: number;
diff --git a/src/schemas/api/users/User.ts b/src/schemas/api/users/User.ts
index 0360eb03f..8a3449ba3 100644
--- a/src/schemas/api/users/User.ts
+++ b/src/schemas/api/users/User.ts
@@ -20,7 +20,7 @@ import { ConnectedAccountSchema, Snowflake, UserSettingsSchema } from "@spacebar
// TODO: maybe move the one thing this depends on to
import { BitField } from "@spacebar/util/util";
// TODO: remove entity import
-import { Relationship, Session } from "@spacebar/util/entities";
+import { Relationship, Session } from "@spacebar/database/entities";
interface UserEntityPleaseRewriteThankYou {
id: Snowflake;
diff --git a/src/schemas/api/users/index.ts b/src/schemas/api/users/index.ts
index 85c926627..5c9b20080 100644
--- a/src/schemas/api/users/index.ts
+++ b/src/schemas/api/users/index.ts
@@ -21,3 +21,4 @@ export * from "./InstanceUserDeleteSchema";
export * from "./Member";
export * from "./User";
export * from "./UserSettings";
+export * from "./SessionsSchemas";
diff --git a/src/schemas/responses/DiscoverableGuildsResponse.ts b/src/schemas/responses/DiscoverableGuildsResponse.ts
index 02c46f1c6..711c10cde 100644
--- a/src/schemas/responses/DiscoverableGuildsResponse.ts
+++ b/src/schemas/responses/DiscoverableGuildsResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove dependency on entities
-import { Guild } from "@spacebar/util";
+import { Guild } from "@spacebar/database";
export interface DiscoverableGuildsResponse {
total: number;
diff --git a/src/schemas/responses/EmailDomainLookupVerifyCodeResponse.ts b/src/schemas/responses/EmailDomainLookupVerifyCodeResponse.ts
index b2400e95d..d868d8970 100644
--- a/src/schemas/responses/EmailDomainLookupVerifyCodeResponse.ts
+++ b/src/schemas/responses/EmailDomainLookupVerifyCodeResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove dependency on entities
-import { Guild } from "@spacebar/util";
+import { Guild } from "@spacebar/database";
export interface EmailDomainLookupVerifyCodeResponse {
guild: Guild;
diff --git a/src/schemas/responses/EmojiSourceResponse.ts b/src/schemas/responses/EmojiSourceResponse.ts
index f01848a8e..511ba380d 100644
--- a/src/schemas/responses/EmojiSourceResponse.ts
+++ b/src/schemas/responses/EmojiSourceResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove entity import
-import { Emoji } from "@spacebar/util";
+import { Emoji } from "@spacebar/database";
export interface EmojiSourceResponse {
type: "GUILD" | "APPLICATION";
diff --git a/src/schemas/responses/GuildMessagesSearchResponse.ts b/src/schemas/responses/GuildMessagesSearchResponse.ts
index e498f8bc0..3cc35ce28 100644
--- a/src/schemas/responses/GuildMessagesSearchResponse.ts
+++ b/src/schemas/responses/GuildMessagesSearchResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove dependency on entities
-import { Role } from "@spacebar/util";
+import { Role } from "@spacebar/database";
import { BaseMessageComponents, Embed, MessageType, Poll, PublicUser } from "@spacebar/schemas";
import { PublicAttachment } from "../api/messages/Attachments";
diff --git a/src/schemas/responses/GuildRecommendationsResponse.ts b/src/schemas/responses/GuildRecommendationsResponse.ts
index c8fed0721..f0149d096 100644
--- a/src/schemas/responses/GuildRecommendationsResponse.ts
+++ b/src/schemas/responses/GuildRecommendationsResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove dependency on entities
-import { Guild } from "@spacebar/util";
+import { Guild } from "@spacebar/database";
export interface GuildRecommendationsResponse {
recommended_guilds: Guild[];
diff --git a/src/schemas/responses/HubDirectoryEntriesResponse.ts b/src/schemas/responses/HubDirectoryEntriesResponse.ts
index c19b6a141..fc710aa21 100644
--- a/src/schemas/responses/HubDirectoryEntriesResponse.ts
+++ b/src/schemas/responses/HubDirectoryEntriesResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove dependency on entities
-import { Guild } from "@spacebar/util";
+import { Guild } from "@spacebar/database";
export interface HubDirectoryEntry {
author_id: string;
diff --git a/src/schemas/responses/MemberJoinGuildResponse.ts b/src/schemas/responses/MemberJoinGuildResponse.ts
index bbb370cc7..d37ed8653 100644
--- a/src/schemas/responses/MemberJoinGuildResponse.ts
+++ b/src/schemas/responses/MemberJoinGuildResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove entity imports
-import { Emoji, Role, Sticker } from "@spacebar/util";
+import { Emoji, Role, Sticker } from "@spacebar/database";
import { GuildCreateResponse } from "@spacebar/schemas";
export interface MemberJoinGuildResponse {
diff --git a/src/schemas/responses/PreloadMessagesResponseSchema.ts b/src/schemas/responses/PreloadMessagesResponseSchema.ts
index 0a767888a..ea3d38d9c 100644
--- a/src/schemas/responses/PreloadMessagesResponseSchema.ts
+++ b/src/schemas/responses/PreloadMessagesResponseSchema.ts
@@ -17,6 +17,6 @@
*/
// TODO: remove entity import
-import { Message } from "@spacebar/util";
+import { Message } from "@spacebar/database";
export type PreloadMessagesResponseSchema = Message[];
diff --git a/src/schemas/responses/TeamListResponse.ts b/src/schemas/responses/TeamListResponse.ts
index d8bf8564e..fc4d93e29 100644
--- a/src/schemas/responses/TeamListResponse.ts
+++ b/src/schemas/responses/TeamListResponse.ts
@@ -17,6 +17,6 @@
*/
// TODO: remove entity import
-import { Team } from "@spacebar/util";
+import { Team } from "@spacebar/database";
export type TeamListResponse = Team[];
diff --git a/src/schemas/responses/TokenResponse.ts b/src/schemas/responses/TokenResponse.ts
index 4a0c0834e..88ac5e204 100644
--- a/src/schemas/responses/TokenResponse.ts
+++ b/src/schemas/responses/TokenResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove dependency on entities
-import { BackupCode, UserSettings } from "@spacebar/util";
+import { BackupCode, UserSettings } from "@spacebar/database";
export interface TokenResponse {
token: string;
diff --git a/src/schemas/responses/TypedResponses.ts b/src/schemas/responses/TypedResponses.ts
index 9fa6cd0c5..9b7d64ee2 100644
--- a/src/schemas/responses/TypedResponses.ts
+++ b/src/schemas/responses/TypedResponses.ts
@@ -20,7 +20,7 @@
import { GeneralConfiguration, LimitsConfiguration } from "../../util/config/types";
import { DmChannelDTO } from "../../util/dtos";
// TODO: remove entity imports
-import { Application, BackupCode, Categories, Channel, Guild, Invite, Member, Message, Role, Template, Webhook } from "@spacebar/util";
+import { Application, BackupCode, Categories, Channel, Guild, Invite, Member, Message, Role, Template, Webhook } from "@spacebar/database";
import { GuildVoiceRegion } from "./GuildVoiceRegionsResponse";
import { GuildCreateResponse, PrivateUser, PublicMember, PublicUser } from "@spacebar/schemas";
diff --git a/src/schemas/responses/UserProfileResponse.ts b/src/schemas/responses/UserProfileResponse.ts
index 64459bd14..daf0c460c 100644
--- a/src/schemas/responses/UserProfileResponse.ts
+++ b/src/schemas/responses/UserProfileResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove entity imports
-import { Badge, Member, User } from "@spacebar/util";
+import { Badge, Member, User } from "@spacebar/database";
import { PublicConnectedAccount, PublicMember, PublicUser } from "@spacebar/schemas";
export type MutualGuild = {
diff --git a/src/schemas/responses/WebhookCreateResponse.ts b/src/schemas/responses/WebhookCreateResponse.ts
index 08d997fb9..2f5e92f09 100644
--- a/src/schemas/responses/WebhookCreateResponse.ts
+++ b/src/schemas/responses/WebhookCreateResponse.ts
@@ -17,7 +17,7 @@
*/
// TODO: remove dependency on entities
-import { User, Webhook } from "@spacebar/util";
+import { User, Webhook } from "@spacebar/database";
export interface WebhookCreateResponse {
user: User;
diff --git a/src/util/connections/Connection.ts b/src/util/connections/Connection.ts
index 56b2b8997..e0ec56ba7 100644
--- a/src/util/connections/Connection.ts
+++ b/src/util/connections/Connection.ts
@@ -17,7 +17,7 @@
*/
import crypto from "node:crypto";
-import { ConnectedAccount } from "../entities";
+import { ConnectedAccount } from "../../database/entities";
import { ConnectedAccountSchema, ConnectionCallbackSchema } from "@spacebar/schemas";
import { Config, DiscordApiErrors } from "../util";
diff --git a/src/util/connections/ConnectionConfig.ts b/src/util/connections/ConnectionConfig.ts
index c5da3878a..338b97be5 100644
--- a/src/util/connections/ConnectionConfig.ts
+++ b/src/util/connections/ConnectionConfig.ts
@@ -17,7 +17,7 @@
*/
/* eslint-disable @typescript-eslint/no-explicit-any */
-import { ConnectionConfigEntity } from "../entities";
+import { ConnectionConfigEntity } from "../../database/entities";
import { OrmUtils } from "../imports";
let config: any;
diff --git a/src/util/connections/RefreshableConnection.ts b/src/util/connections/RefreshableConnection.ts
index 3d7761f71..8418b0856 100644
--- a/src/util/connections/RefreshableConnection.ts
+++ b/src/util/connections/RefreshableConnection.ts
@@ -16,7 +16,7 @@
along with this program. If not, see .
*/
-import { ConnectedAccount } from "../entities";
+import { ConnectedAccount } from "../../database/entities";
import { Connection } from "./Connection";
import { ConnectedAccountCommonOAuthTokenResponse } from "@spacebar/schemas";
diff --git a/src/util/dtos/ConnectedAccountDTO.ts b/src/util/dtos/ConnectedAccountDTO.ts
index a137d732a..dfa3db018 100644
--- a/src/util/dtos/ConnectedAccountDTO.ts
+++ b/src/util/dtos/ConnectedAccountDTO.ts
@@ -16,7 +16,7 @@
along with this program. If not, see .
*/
-import { ConnectedAccount } from "../entities";
+import { ConnectedAccount } from "../../database/entities";
export class ConnectedAccountDTO {
id: string;
diff --git a/src/util/dtos/DmChannelDTO.ts b/src/util/dtos/DmChannelDTO.ts
index f7c42d960..9e6f05dad 100644
--- a/src/util/dtos/DmChannelDTO.ts
+++ b/src/util/dtos/DmChannelDTO.ts
@@ -17,7 +17,7 @@
*/
import { MinimalPublicUserDTO } from "./UserDTO";
-import { Channel, User } from "../entities";
+import { Channel, User } from "../../database/entities";
import { PublicUserProjection } from "@spacebar/schemas";
export class DmChannelDTO {
diff --git a/src/util/dtos/ReadyGuildDTO.ts b/src/util/dtos/ReadyGuildDTO.ts
index 1b9677e05..b24758470 100644
--- a/src/util/dtos/ReadyGuildDTO.ts
+++ b/src/util/dtos/ReadyGuildDTO.ts
@@ -16,7 +16,7 @@
along with this program. If not, see .
*/
-import { Channel, Emoji, Guild, Role, Sticker } from "../entities";
+import { Channel, Emoji, Guild, Role, Sticker } from "../../database/entities";
import { ChannelOverride, ChannelType, PublicMember, PublicUser, UserGuildSettings } from "@spacebar/schemas";
// TODO: this is not the best place for this type
diff --git a/src/util/dtos/UserDTO.ts b/src/util/dtos/UserDTO.ts
index 2a79f8f10..63f1c3ad8 100644
--- a/src/util/dtos/UserDTO.ts
+++ b/src/util/dtos/UserDTO.ts
@@ -16,7 +16,7 @@
along with this program. If not, see .
*/
-import { User } from "../entities";
+import { User } from "../../database/entities";
export class MinimalPublicUserDTO {
avatar?: string | null;
diff --git a/src/util/index.ts b/src/util/index.ts
index dd2f7f320..2b739838f 100644
--- a/src/util/index.ts
+++ b/src/util/index.ts
@@ -22,7 +22,7 @@ import "reflect-metadata";
export * from "./util/index";
export * from "./interfaces/index";
-export * from "./entities/index";
+
export * from "./dtos/index";
export * from "./imports";
export * from "./config";
diff --git a/src/util/interfaces/Event.ts b/src/util/interfaces/Event.ts
index 6152f70a5..22eec64ff 100644
--- a/src/util/interfaces/Event.ts
+++ b/src/util/interfaces/Event.ts
@@ -16,27 +16,8 @@
along with this program. If not, see .
*/
-import {
- ConnectedAccount,
- Invite,
- Role,
- Emoji,
- Channel,
- User,
- Sticker,
- Activity,
- Status,
- Presence,
- UserSettings,
- IReadyGuildDTO,
- ReadState,
- ReadyUserGuildSettingsEntries,
- ReadyPrivateChannel,
- GuildOrUnavailable,
- Snowflake,
- ThreadMember,
- PrivateStatus,
-} from "@spacebar/util";
+import { ConnectedAccount, Invite, Role, Emoji, Channel, User, Sticker, UserSettings, ReadState, ThreadMember } from "@spacebar/database";
+import { Activity, Presence, IReadyGuildDTO, ReadyUserGuildSettingsEntries, ReadyPrivateChannel, GuildOrUnavailable, Snowflake, PrivateStatus } from "@spacebar/util";
import { JsonValue } from "@protobuf-ts/runtime";
import {
ApplicationCommand,
diff --git a/src/util/util/Application.ts b/src/util/util/Application.ts
index 64c87775e..f4e08cded 100644
--- a/src/util/util/Application.ts
+++ b/src/util/util/Application.ts
@@ -1,5 +1,23 @@
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2026 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
import { Request } from "express";
-import { Application, User } from "../entities";
+import { Application, User } from "../../database/entities";
export async function createAppBotUser(app: Application, req: Request) {
const user = await User.register({
diff --git a/src/util/util/Config.ts b/src/util/util/Config.ts
index 3c1c45f11..46c5a1681 100644
--- a/src/util/util/Config.ts
+++ b/src/util/util/Config.ts
@@ -20,7 +20,7 @@ import { existsSync } from "node:fs";
import fs from "node:fs/promises";
import { OrmUtils } from "..";
import { ConfigValue } from "../config";
-import { ConfigEntity } from "../entities";
+import { ConfigEntity } from "../../database/entities";
import { JsonValue } from "@protobuf-ts/runtime";
import { bold, red, redBright } from "picocolors";
diff --git a/src/util/util/Decorators.ts b/src/util/util/Decorators.ts
index 18910b9d1..3211cb275 100644
--- a/src/util/util/Decorators.ts
+++ b/src/util/util/Decorators.ts
@@ -1,4 +1,22 @@
-import { BaseClassWithoutId } from "@spacebar/util";
+/*
+ Spacebar: A FOSS re-implementation and extension of the Discord.com backend.
+ Copyright (C) 2026 Spacebar and Spacebar Contributors
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Affero General Public License as published
+ by the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Affero General Public License for more details.
+
+ You should have received a copy of the GNU Affero General Public License
+ along with this program. If not, see .
+*/
+
+import { BaseClassWithoutId } from "@spacebar/database";
export const annotationsKey = Symbol("Annotations");
diff --git a/src/util/util/Permissions.ts b/src/util/util/Permissions.ts
index 66dd1943c..6585f6927 100644
--- a/src/util/util/Permissions.ts
+++ b/src/util/util/Permissions.ts
@@ -2,7 +2,7 @@
// Apache License Version 2.0 Copyright 2015 - 2021 Amish Shah
// @fc-license-skip
-import { Channel, Guild, Member, Role, User } from "../entities";
+import { Channel, Guild, Member, Role, User } from "../../database/entities";
import { BitField, BitFieldResolvable, BitFlag } from "./BitField";
import { HTTPError } from "lambert-server/HTTPError";
import { ChannelPermissionOverwrite, ChannelPermissionOverwriteType, ChannelType, UserFlags } from "@spacebar/schemas";
diff --git a/src/util/util/Presence.ts b/src/util/util/Presence.ts
index 5a475adcd..8180a026a 100644
--- a/src/util/util/Presence.ts
+++ b/src/util/util/Presence.ts
@@ -16,7 +16,8 @@
along with this program. If not, see .
*/
-import { emitEvent, Member, PresenceUpdateEvent, Recipient, Relationship, Session } from "@spacebar/util";
+import { Member, Recipient, Relationship, Session } from "@spacebar/database";
+import { emitEvent, PresenceUpdateEvent } from "@spacebar/util";
import { RelationshipType } from "@spacebar/schemas";
import { Not } from "typeorm";
diff --git a/src/util/util/Rights.ts b/src/util/util/Rights.ts
index f0425749f..0eee0a3f8 100644
--- a/src/util/util/Rights.ts
+++ b/src/util/util/Rights.ts
@@ -17,7 +17,7 @@
*/
import { BitField, BitFieldResolvable, BitFlag } from "./BitField";
-import { User } from "../entities";
+import { User } from "../../database/entities";
import { HTTPError } from "lambert-server/HTTPError";
export type RightResolvable = bigint | number | Rights | RightResolvable[] | RightString;
diff --git a/src/util/util/Token.ts b/src/util/util/Token.ts
index a1c4536e1..10bd5e2c5 100644
--- a/src/util/util/Token.ts
+++ b/src/util/util/Token.ts
@@ -18,7 +18,7 @@
import jwt from "jsonwebtoken";
import { Config } from "./Config";
-import { InstanceBan, Session, User } from "../entities";
+import { InstanceBan, Session, User } from "../../database/entities";
import crypto from "node:crypto";
import fs from "node:fs/promises";
import { existsSync } from "node:fs";
diff --git a/src/util/util/cdn.ts b/src/util/util/cdn.ts
index 46fa0ebde..ef934f784 100644
--- a/src/util/util/cdn.ts
+++ b/src/util/util/cdn.ts
@@ -18,7 +18,7 @@
import FormData from "form-data";
import { HTTPError } from "lambert-server/HTTPError";
-import { Attachment } from "../entities";
+import { Attachment } from "../../database/entities";
import { Config } from "./Config";
export async function uploadFile(
diff --git a/src/util/util/email/index.ts b/src/util/util/email/index.ts
index cceb99f4a..9b37b1b0e 100644
--- a/src/util/util/email/index.ts
+++ b/src/util/util/email/index.ts
@@ -18,7 +18,7 @@
import fs from "node:fs/promises";
import path from "node:path";
-import { User } from "../../entities";
+import { User } from "../../../database/entities";
import { Config } from "../Config";
import { generateToken } from "../Token";
import { IEmail, IEmailClient } from "./clients/IEmailClient";
diff --git a/src/webrtc/opcodes/Identify.ts b/src/webrtc/opcodes/Identify.ts
index 5068e42bd..7d776d9cf 100644
--- a/src/webrtc/opcodes/Identify.ts
+++ b/src/webrtc/opcodes/Identify.ts
@@ -16,8 +16,8 @@
along with this program. If not, see .
*/
+import { StreamSession, VoiceState } from "@spacebar/database";
import { CLOSECODES } from "@spacebar/gateway";
-import { StreamSession, VoiceState } from "@spacebar/util";
import { validateSchema, VoiceIdentifySchema } from "@spacebar/schemas";
import { generateSsrc, mediaServer, Send, VoiceOPCodes, VoicePayload, WebRtcWebSocket } from "@spacebar/webrtc";
import { SSRCs } from "@spacebarchat/spacebar-webrtc-types";
diff --git a/src/webrtc/opcodes/Video.ts b/src/webrtc/opcodes/Video.ts
index 323438a66..e448536a6 100644
--- a/src/webrtc/opcodes/Video.ts
+++ b/src/webrtc/opcodes/Video.ts
@@ -15,7 +15,8 @@
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see .
*/
-import { Stream } from "@spacebar/util";
+
+import { Stream } from "@spacebar/database";
import { mediaServer, Send, VoiceOPCodes, VoicePayload, WebRtcWebSocket } from "@spacebar/webrtc";
import type { WebRtcClient } from "@spacebarchat/spacebar-webrtc-types";
import { validateSchema, VoiceVideoSchema } from "@spacebar/schemas";