From 4a1ad9dd9600f71f16358142709957ee6ab3b18f Mon Sep 17 00:00:00 2001 From: Jesse Wierzbinski Date: Mon, 19 Aug 2024 14:43:54 +0200 Subject: [PATCH] refactor: :fire: Remove old config-manager symlink --- app.ts | 2 +- bun.lockb | Bin 295796 -> 282028 bytes classes/functions/federation.ts | 2 +- classes/functions/like.ts | 2 +- classes/functions/status.ts | 2 +- classes/functions/user.ts | 2 +- classes/media/drivers/disk.test.ts | 2 +- classes/media/drivers/disk.ts | 2 +- classes/media/drivers/s3.test.ts | 2 +- classes/media/drivers/s3.ts | 2 +- classes/media/media-manager.test.ts | 2 +- classes/media/media-manager.ts | 2 +- .../preprocessors/image-conversion.test.ts | 2 +- .../media/preprocessors/image-conversion.ts | 2 +- drizzle.config.ts | 2 +- index.ts | 2 +- package.json | 1 - packages/config-manager/package.json | 11 ----------- packages/database-interface/attachment.ts | 2 +- packages/database-interface/instance.ts | 2 +- packages/database-interface/role.ts | 2 +- packages/glitch-server/main.ts | 2 +- server/api/api/v1/accounts/:id/block.test.ts | 2 +- server/api/api/v1/accounts/:id/follow.test.ts | 2 +- .../api/api/v1/accounts/:id/followers.test.ts | 2 +- .../api/api/v1/accounts/:id/following.test.ts | 2 +- server/api/api/v1/accounts/:id/index.test.ts | 2 +- server/api/api/v1/accounts/:id/mute.test.ts | 2 +- .../api/api/v1/accounts/:id/statuses.test.ts | 2 +- server/api/api/v1/accounts/:id/unmute.test.ts | 2 +- server/api/api/v1/accounts/id/index.test.ts | 2 +- server/api/api/v1/accounts/index.test.ts | 2 +- .../api/api/v1/accounts/lookup/index.test.ts | 2 +- .../v1/accounts/relationships/index.test.ts | 2 +- .../api/api/v1/accounts/search/index.test.ts | 2 +- .../v1/accounts/update_credentials/index.ts | 2 +- server/api/api/v1/challenges/index.test.ts | 2 +- server/api/api/v1/custom_emojis/index.test.ts | 2 +- server/api/api/v1/emojis/:id/index.test.ts | 2 +- server/api/api/v1/emojis/index.test.ts | 2 +- .../v1/instance/extended_description.test.ts | 2 +- .../api/v1/instance/privacy_policy.test.ts | 2 +- server/api/api/v1/instance/rules.test.ts | 2 +- server/api/api/v1/instance/tos.test.ts | 2 +- server/api/api/v1/markers/index.test.ts | 2 +- server/api/api/v1/media/:id/index.ts | 2 +- server/api/api/v1/media/index.ts | 2 +- server/api/api/v1/mutes/index.test.ts | 2 +- .../api/v1/notifications/:id/dismiss.test.ts | 2 +- .../api/v1/notifications/:id/index.test.ts | 2 +- .../api/v1/notifications/clear/index.test.ts | 2 +- .../destroy_multiple/index.test.ts | 2 +- server/api/api/v1/notifications/index.test.ts | 2 +- server/api/api/v1/roles/:id/index.test.ts | 2 +- server/api/api/v1/roles/index.test.ts | 2 +- .../api/api/v1/statuses/:id/favourite.test.ts | 2 +- .../api/v1/statuses/:id/favourited_by.test.ts | 2 +- server/api/api/v1/statuses/:id/index.ts | 2 +- .../api/v1/statuses/:id/reblogged_by.test.ts | 2 +- .../api/v1/statuses/:id/unfavourite.test.ts | 2 +- server/api/api/v1/statuses/index.test.ts | 2 +- server/api/api/v1/statuses/index.ts | 2 +- server/api/api/v1/timelines/home.test.ts | 2 +- server/api/api/v1/timelines/public.test.ts | 2 +- server/api/api/v2/filters/:id/index.test.ts | 2 +- server/api/api/v2/filters/index.test.ts | 2 +- server/api/api/v2/instance/index.test.ts | 2 +- server/api/api/v2/media/index.ts | 2 +- setup.ts | 2 +- tests/api.test.ts | 2 +- tests/api/accounts.test.ts | 2 +- tests/api/statuses.test.ts | 2 +- utils/api.ts | 2 +- utils/constants.ts | 2 +- utils/sentry.ts | 2 +- utils/server.ts | 2 +- utils/timelines.ts | 2 +- 77 files changed, 74 insertions(+), 86 deletions(-) delete mode 100644 packages/config-manager/package.json diff --git a/app.ts b/app.ts index 53edc52f..705562cf 100644 --- a/app.ts +++ b/app.ts @@ -2,7 +2,7 @@ import { errorResponse, jsonResponse, response } from "@/response"; import { sentry } from "@/sentry"; import { Hono } from "@hono/hono"; import { getLogger } from "@logtape/logtape"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { agentBans } from "./middlewares/agent-bans"; import { bait } from "./middlewares/bait"; import { boundaryCheck } from "./middlewares/boundary-check"; diff --git a/bun.lockb b/bun.lockb index dfe02a3b909a052803bebff448c267eb271ec08d..d117f10b87d58ecdcd73be92680d5e061196d0a4 100755 GIT binary patch delta 53795 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 delta 61652 zcmeFacU)9g+ci8hGRi?wi4}W^#)e%7LRkI-K4i-Le!PQ$*Rj+dWo=FNn-s%f z2#b&Qj~HYy+{c@ZDu z9}pIVm}@A<33h01mCJ+k!Tta)27U?7YeS%zmf+_+YJvw~7Bs@qU~mSX0<$1Tq$>dS zA2LFzcqLj>2=+`c8yxH(9pe@o6`BZ}>Hgk;6KK#^(6^v)SMWTrtvCWZ5a9w|4Q7SW zA^uUrP=zx}VZrb68w^FjPryuPET~ox6CD;BfOHq3vz%t&a^T(I65z7n3gG2nmXixy z3Oo&56#UrPU^A3KAXXF3pmy5+T853VnPCRFG&mAm7Tg=m2DJdwmC-@rBZ4p*?y%{( zz{s#j4$gMeLYIF6qsYXLNX+=*>WCUn6@𝕜M%1Qo$3BQeB3I&x%$!Ej2mZ-bff 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 E2Q_E+UjP6A diff --git a/classes/functions/federation.ts b/classes/functions/federation.ts index 81b7ba16..a733b2a0 100644 --- a/classes/functions/federation.ts +++ b/classes/functions/federation.ts @@ -1,5 +1,5 @@ import type { Undo } from "@lysand-org/federation/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import type { User } from "~/packages/database-interface/user"; export const undoFederationRequest = (undoer: User, uri: string): Undo => { diff --git a/classes/functions/like.ts b/classes/functions/like.ts index d7de9f4d..37e9f86e 100644 --- a/classes/functions/like.ts +++ b/classes/functions/like.ts @@ -1,8 +1,8 @@ import type { Like } from "@lysand-org/federation/types"; -import { config } from "config-manager"; import { type InferSelectModel, and, eq } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Likes, Notifications } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import type { Note } from "~/packages/database-interface/note"; import type { User } from "~/packages/database-interface/user"; diff --git a/classes/functions/status.ts b/classes/functions/status.ts index 242218cb..d48f6990 100644 --- a/classes/functions/status.ts +++ b/classes/functions/status.ts @@ -2,7 +2,6 @@ import { mentionValidator } from "@/api"; import { sanitizeHtml, sanitizeHtmlInline } from "@/sanitization"; import markdownItTaskLists from "@hackmd/markdown-it-task-lists"; import type { ContentFormat } from "@lysand-org/federation/types"; -import { config } from "config-manager"; import { type InferSelectModel, and, @@ -32,6 +31,7 @@ import { type Notes, Users, } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import type { EmojiWithInstance } from "~/packages/database-interface/emoji"; import { User } from "~/packages/database-interface/user"; import type { Application } from "./application"; diff --git a/classes/functions/user.ts b/classes/functions/user.ts index 7f5753d3..c22429b4 100644 --- a/classes/functions/user.ts +++ b/classes/functions/user.ts @@ -3,7 +3,6 @@ import type { FollowAccept, FollowReject, } from "@lysand-org/federation/types"; -import { config } from "config-manager"; import { type InferSelectModel, eq, sql } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { @@ -13,6 +12,7 @@ import { Tokens, type Users, } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import type { EmojiWithInstance } from "~/packages/database-interface/emoji"; import { User } from "~/packages/database-interface/user"; import type { Application } from "./application"; diff --git a/classes/media/drivers/disk.test.ts b/classes/media/drivers/disk.test.ts index 7c2b9496..dc637f7c 100644 --- a/classes/media/drivers/disk.test.ts +++ b/classes/media/drivers/disk.test.ts @@ -14,7 +14,7 @@ import { } from "bun:test"; import * as fs from "node:fs/promises"; import * as path from "node:path"; -import type { Config } from "config-manager"; +import type { Config } from "~/packages/config-manager/config.type"; import type { MediaHasher } from "../media-hasher"; import { DiskMediaDriver } from "./disk"; diff --git a/classes/media/drivers/disk.ts b/classes/media/drivers/disk.ts index 7df0501c..d915d184 100644 --- a/classes/media/drivers/disk.ts +++ b/classes/media/drivers/disk.ts @@ -5,7 +5,7 @@ import { rm } from "node:fs/promises"; import { join } from "node:path"; -import type { Config } from "config-manager"; +import type { Config } from "~/packages/config-manager/config.type"; import { MediaHasher } from "../media-hasher"; import type { UploadedFileMetadata } from "../media-manager"; import type { MediaDriver } from "./media-driver"; diff --git a/classes/media/drivers/s3.test.ts b/classes/media/drivers/s3.test.ts index b5492661..8704e048 100644 --- a/classes/media/drivers/s3.test.ts +++ b/classes/media/drivers/s3.test.ts @@ -5,7 +5,7 @@ import { beforeEach, describe, expect, it, mock } from "bun:test"; import type { S3Client } from "@bradenmacdonald/s3-lite-client"; -import type { Config } from "config-manager"; +import type { Config } from "~/packages/config-manager/config.type"; import type { MediaHasher } from "../media-hasher"; import { S3MediaDriver } from "./s3"; diff --git a/classes/media/drivers/s3.ts b/classes/media/drivers/s3.ts index 81c1175e..396e0222 100644 --- a/classes/media/drivers/s3.ts +++ b/classes/media/drivers/s3.ts @@ -4,7 +4,7 @@ */ import { S3Client } from "@bradenmacdonald/s3-lite-client"; -import type { Config } from "config-manager"; +import type { Config } from "~/packages/config-manager/config.type"; import { MediaHasher } from "../media-hasher"; import type { UploadedFileMetadata } from "../media-manager"; import type { MediaDriver } from "./media-driver"; diff --git a/classes/media/media-manager.test.ts b/classes/media/media-manager.test.ts index d8e762c7..5b714140 100644 --- a/classes/media/media-manager.test.ts +++ b/classes/media/media-manager.test.ts @@ -4,7 +4,7 @@ */ import { beforeEach, describe, expect, it, mock } from "bun:test"; -import type { Config } from "config-manager"; +import type { Config } from "~/packages/config-manager/config.type"; import { MediaBackendType } from "~/packages/config-manager/config.type"; import { DiskMediaDriver } from "./drivers/disk"; import { S3MediaDriver } from "./drivers/s3"; diff --git a/classes/media/media-manager.ts b/classes/media/media-manager.ts index c2eaf370..7d9ee860 100644 --- a/classes/media/media-manager.ts +++ b/classes/media/media-manager.ts @@ -3,7 +3,7 @@ * @module MediaManager */ -import type { Config } from "config-manager"; +import type { Config } from "~/packages/config-manager/config.type"; import { DiskMediaDriver } from "./drivers/disk"; import type { MediaDriver } from "./drivers/media-driver"; import { S3MediaDriver } from "./drivers/s3"; diff --git a/classes/media/preprocessors/image-conversion.test.ts b/classes/media/preprocessors/image-conversion.test.ts index 51b3cfc8..97f354c1 100644 --- a/classes/media/preprocessors/image-conversion.test.ts +++ b/classes/media/preprocessors/image-conversion.test.ts @@ -1,6 +1,6 @@ import { beforeEach, describe, expect, it } from "bun:test"; -import type { Config } from "config-manager"; import sharp from "sharp"; +import type { Config } from "~/packages/config-manager/config.type"; import { ImageConversionPreprocessor } from "./image-conversion"; describe("ImageConversionPreprocessor", () => { diff --git a/classes/media/preprocessors/image-conversion.ts b/classes/media/preprocessors/image-conversion.ts index 768bfec3..cfb1bceb 100644 --- a/classes/media/preprocessors/image-conversion.ts +++ b/classes/media/preprocessors/image-conversion.ts @@ -3,8 +3,8 @@ * @module MediaManager/Preprocessors */ -import type { Config } from "config-manager"; import sharp from "sharp"; +import type { Config } from "~/packages/config-manager/config.type"; import type { MediaPreprocessor } from "./media-preprocessor"; /** diff --git a/drizzle.config.ts b/drizzle.config.ts index 3f90c425..664f067c 100644 --- a/drizzle.config.ts +++ b/drizzle.config.ts @@ -1,5 +1,5 @@ -import { config } from "config-manager"; import type { Config } from "drizzle-kit"; +import { config } from "~/packages/config-manager/index"; export default { dialect: "postgresql", diff --git a/index.ts b/index.ts index 4dfc5d90..8f66fa52 100644 --- a/index.ts +++ b/index.ts @@ -1,8 +1,8 @@ import { configureLoggers } from "@/loggers"; import { sentry } from "@/sentry"; import { createServer } from "@/server"; -import { config } from "config-manager"; import { appFactory } from "~/app"; +import { config } from "~/packages/config-manager/index"; import { setupDatabase } from "./drizzle/db"; if (import.meta.main) { diff --git a/package.json b/package.json index 42e1eeb0..74345c31 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,6 @@ "chalk": "^5.3.0", "cli-progress": "^3.12.0", "cli-table": "^0.3.11", - "config-manager": "workspace:*", "drizzle-orm": "^0.33.0", "extract-zip": "^2.0.1", "hono": "npm:@jsr/hono__hono@4.5.4", diff --git a/packages/config-manager/package.json b/packages/config-manager/package.json deleted file mode 100644 index 35d9f9d9..00000000 --- a/packages/config-manager/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "config-manager", - "version": "0.0.0", - "main": "index.ts", - "type": "module", - "dependencies": { - "c12": "^1.11.1", - "zod": "^3.23.8", - "zod-validation-error": "^3.3.0" - } -} diff --git a/packages/database-interface/attachment.ts b/packages/database-interface/attachment.ts index 8ce327f2..1fb16c02 100644 --- a/packages/database-interface/attachment.ts +++ b/packages/database-interface/attachment.ts @@ -4,7 +4,6 @@ import type { Attachment as ApiAttachment, } from "@lysand-org/client/types"; import type { ContentFormat } from "@lysand-org/federation/types"; -import { config } from "config-manager"; import { MediaBackendType } from "config-manager/config.type"; import { type InferInsertModel, @@ -16,6 +15,7 @@ import { } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Attachments } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { BaseInterface } from "./base"; export type AttachmentType = InferSelectModel; diff --git a/packages/database-interface/instance.ts b/packages/database-interface/instance.ts index c55d0eb5..14a6f44c 100644 --- a/packages/database-interface/instance.ts +++ b/packages/database-interface/instance.ts @@ -6,7 +6,6 @@ import { } from "@lysand-org/federation"; import type { ServerMetadata } from "@lysand-org/federation/types"; import chalk from "chalk"; -import { config } from "config-manager"; import { type InferInsertModel, type InferSelectModel, @@ -18,6 +17,7 @@ import { } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Instances } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { BaseInterface } from "./base"; import { User } from "./user"; diff --git a/packages/database-interface/role.ts b/packages/database-interface/role.ts index 675ad9b4..c2ae2fbc 100644 --- a/packages/database-interface/role.ts +++ b/packages/database-interface/role.ts @@ -1,6 +1,5 @@ import { proxyUrl } from "@/response"; import type { RolePermission } from "@lysand-org/client/types"; -import { config } from "config-manager"; import { type InferInsertModel, type InferSelectModel, @@ -12,6 +11,7 @@ import { } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { RoleToUsers, Roles } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { BaseInterface } from "./base"; export type RoleType = InferSelectModel; diff --git a/packages/glitch-server/main.ts b/packages/glitch-server/main.ts index 315a12a7..76620cbe 100644 --- a/packages/glitch-server/main.ts +++ b/packages/glitch-server/main.ts @@ -1,8 +1,8 @@ import { join } from "node:path"; import { redirect } from "@/response"; import type { BunFile } from "bun"; -import { config } from "config-manager"; import { retrieveUserFromToken } from "~/classes/functions/user"; +import { config } from "~/packages/config-manager/index"; import type { User } from "~/packages/database-interface/user"; import { languages } from "./glitch-languages"; diff --git a/server/api/api/v1/accounts/:id/block.test.ts b/server/api/api/v1/accounts/:id/block.test.ts index 7b1d6a38..c1aa83ad 100644 --- a/server/api/api/v1/accounts/:id/block.test.ts +++ b/server/api/api/v1/accounts/:id/block.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Relationship as ApiRelationship } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./block"; diff --git a/server/api/api/v1/accounts/:id/follow.test.ts b/server/api/api/v1/accounts/:id/follow.test.ts index a7b3599f..5a82373c 100644 --- a/server/api/api/v1/accounts/:id/follow.test.ts +++ b/server/api/api/v1/accounts/:id/follow.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Relationship as ApiRelationship } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./follow"; diff --git a/server/api/api/v1/accounts/:id/followers.test.ts b/server/api/api/v1/accounts/:id/followers.test.ts index cdcce2b1..513a8ea6 100644 --- a/server/api/api/v1/accounts/:id/followers.test.ts +++ b/server/api/api/v1/accounts/:id/followers.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./followers"; diff --git a/server/api/api/v1/accounts/:id/following.test.ts b/server/api/api/v1/accounts/:id/following.test.ts index eb3dfcb9..58f13b32 100644 --- a/server/api/api/v1/accounts/:id/following.test.ts +++ b/server/api/api/v1/accounts/:id/following.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./following"; diff --git a/server/api/api/v1/accounts/:id/index.test.ts b/server/api/api/v1/accounts/:id/index.test.ts index e43a578e..8da0c320 100644 --- a/server/api/api/v1/accounts/:id/index.test.ts +++ b/server/api/api/v1/accounts/:id/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/accounts/:id/mute.test.ts b/server/api/api/v1/accounts/:id/mute.test.ts index 60dd4c4c..a75da007 100644 --- a/server/api/api/v1/accounts/:id/mute.test.ts +++ b/server/api/api/v1/accounts/:id/mute.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Relationship as ApiRelationship } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./mute"; diff --git a/server/api/api/v1/accounts/:id/statuses.test.ts b/server/api/api/v1/accounts/:id/statuses.test.ts index 9ef31fe8..7e9a7d8d 100644 --- a/server/api/api/v1/accounts/:id/statuses.test.ts +++ b/server/api/api/v1/accounts/:id/statuses.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Status as ApiStatus } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./statuses"; diff --git a/server/api/api/v1/accounts/:id/unmute.test.ts b/server/api/api/v1/accounts/:id/unmute.test.ts index 2a0e67af..c80d9e99 100644 --- a/server/api/api/v1/accounts/:id/unmute.test.ts +++ b/server/api/api/v1/accounts/:id/unmute.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Relationship as ApiRelationship } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./unmute"; diff --git a/server/api/api/v1/accounts/id/index.test.ts b/server/api/api/v1/accounts/id/index.test.ts index 4ce0dcd5..cdeffac8 100644 --- a/server/api/api/v1/accounts/id/index.test.ts +++ b/server/api/api/v1/accounts/id/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/accounts/index.test.ts b/server/api/api/v1/accounts/index.test.ts index a6969c57..896899c2 100644 --- a/server/api/api/v1/accounts/index.test.ts +++ b/server/api/api/v1/accounts/index.test.ts @@ -1,9 +1,9 @@ import { afterEach, describe, expect, test } from "bun:test"; import { randomString } from "@/math"; -import { config } from "config-manager"; import { eq } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Users } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { getSolvedChallenge, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/accounts/lookup/index.test.ts b/server/api/api/v1/accounts/lookup/index.test.ts index ab9421b4..103d73fc 100644 --- a/server/api/api/v1/accounts/lookup/index.test.ts +++ b/server/api/api/v1/accounts/lookup/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/accounts/relationships/index.test.ts b/server/api/api/v1/accounts/relationships/index.test.ts index b12825b4..080e5d6d 100644 --- a/server/api/api/v1/accounts/relationships/index.test.ts +++ b/server/api/api/v1/accounts/relationships/index.test.ts @@ -1,8 +1,8 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; import { eq } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Users } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/accounts/search/index.test.ts b/server/api/api/v1/accounts/search/index.test.ts index 89e69c27..ef667012 100644 --- a/server/api/api/v1/accounts/search/index.test.ts +++ b/server/api/api/v1/accounts/search/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/accounts/update_credentials/index.ts b/server/api/api/v1/accounts/update_credentials/index.ts index c83f2d7e..808d16a2 100644 --- a/server/api/api/v1/accounts/update_credentials/index.ts +++ b/server/api/api/v1/accounts/update_credentials/index.ts @@ -3,7 +3,6 @@ import { errorResponse, jsonResponse } from "@/response"; import { sanitizedHtmlStrip } from "@/sanitization"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; -import { config } from "config-manager"; import { and, eq, isNull } from "drizzle-orm"; import ISO6391 from "iso-639-1"; import { z } from "zod"; @@ -11,6 +10,7 @@ import { contentToHtml } from "~/classes/functions/status"; import { MediaManager } from "~/classes/media/media-manager"; import { db } from "~/drizzle/db"; import { EmojiToUser, RolePermissions, Users } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Attachment } from "~/packages/database-interface/attachment"; import { Emoji } from "~/packages/database-interface/emoji"; import { User } from "~/packages/database-interface/user"; diff --git a/server/api/api/v1/challenges/index.test.ts b/server/api/api/v1/challenges/index.test.ts index 2df94862..812efe61 100644 --- a/server/api/api/v1/challenges/index.test.ts +++ b/server/api/api/v1/challenges/index.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/custom_emojis/index.test.ts b/server/api/api/v1/custom_emojis/index.test.ts index db8471c4..2e6c0454 100644 --- a/server/api/api/v1/custom_emojis/index.test.ts +++ b/server/api/api/v1/custom_emojis/index.test.ts @@ -1,8 +1,8 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; import { inArray } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Emojis } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/emojis/:id/index.test.ts b/server/api/api/v1/emojis/:id/index.test.ts index 33f3958a..e8af582e 100644 --- a/server/api/api/v1/emojis/:id/index.test.ts +++ b/server/api/api/v1/emojis/:id/index.test.ts @@ -1,8 +1,8 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; import { inArray } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Emojis } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/emojis/index.test.ts b/server/api/api/v1/emojis/index.test.ts index 27c569a5..0f245ca0 100644 --- a/server/api/api/v1/emojis/index.test.ts +++ b/server/api/api/v1/emojis/index.test.ts @@ -1,9 +1,9 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; import { inArray } from "drizzle-orm"; import sharp from "sharp"; import { db } from "~/drizzle/db"; import { Emojis } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/instance/extended_description.test.ts b/server/api/api/v1/instance/extended_description.test.ts index 5156c97d..8a230f13 100644 --- a/server/api/api/v1/instance/extended_description.test.ts +++ b/server/api/api/v1/instance/extended_description.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { sendTestRequest } from "~/tests/utils"; import { meta } from "./extended_description"; diff --git a/server/api/api/v1/instance/privacy_policy.test.ts b/server/api/api/v1/instance/privacy_policy.test.ts index ed4360c3..710e3ee8 100644 --- a/server/api/api/v1/instance/privacy_policy.test.ts +++ b/server/api/api/v1/instance/privacy_policy.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { sendTestRequest } from "~/tests/utils"; import { meta } from "./privacy_policy"; diff --git a/server/api/api/v1/instance/rules.test.ts b/server/api/api/v1/instance/rules.test.ts index 5f2c7c78..6ed8b7a5 100644 --- a/server/api/api/v1/instance/rules.test.ts +++ b/server/api/api/v1/instance/rules.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { sendTestRequest } from "~/tests/utils"; import { meta } from "./rules"; diff --git a/server/api/api/v1/instance/tos.test.ts b/server/api/api/v1/instance/tos.test.ts index 91d60c5c..715a6a52 100644 --- a/server/api/api/v1/instance/tos.test.ts +++ b/server/api/api/v1/instance/tos.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { sendTestRequest } from "~/tests/utils"; import { meta } from "./tos"; diff --git a/server/api/api/v1/markers/index.test.ts b/server/api/api/v1/markers/index.test.ts index cc2d37b5..9b418cad 100644 --- a/server/api/api/v1/markers/index.test.ts +++ b/server/api/api/v1/markers/index.test.ts @@ -1,5 +1,5 @@ import { afterAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/media/:id/index.ts b/server/api/api/v1/media/:id/index.ts index c39f5c1c..37496794 100644 --- a/server/api/api/v1/media/:id/index.ts +++ b/server/api/api/v1/media/:id/index.ts @@ -2,10 +2,10 @@ import { applyConfig, auth, handleZodError, idValidator } from "@/api"; import { errorResponse, jsonResponse, response } from "@/response"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; -import { config } from "config-manager"; import { z } from "zod"; import { MediaManager } from "~/classes/media/media-manager"; import { RolePermissions } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Attachment } from "~/packages/database-interface/attachment"; export const meta = applyConfig({ diff --git a/server/api/api/v1/media/index.ts b/server/api/api/v1/media/index.ts index 3b762d99..341d73cb 100644 --- a/server/api/api/v1/media/index.ts +++ b/server/api/api/v1/media/index.ts @@ -2,11 +2,11 @@ import { applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; -import { config } from "config-manager"; import sharp from "sharp"; import { z } from "zod"; import { MediaManager } from "~/classes/media/media-manager"; import { RolePermissions } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Attachment } from "~/packages/database-interface/attachment"; export const meta = applyConfig({ diff --git a/server/api/api/v1/mutes/index.test.ts b/server/api/api/v1/mutes/index.test.ts index 7ffde214..a9733617 100644 --- a/server/api/api/v1/mutes/index.test.ts +++ b/server/api/api/v1/mutes/index.test.ts @@ -1,5 +1,5 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/notifications/:id/dismiss.test.ts b/server/api/api/v1/notifications/:id/dismiss.test.ts index 53ea6de5..f53b9a0a 100644 --- a/server/api/api/v1/notifications/:id/dismiss.test.ts +++ b/server/api/api/v1/notifications/:id/dismiss.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Notification as ApiNotification } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./dismiss"; diff --git a/server/api/api/v1/notifications/:id/index.test.ts b/server/api/api/v1/notifications/:id/index.test.ts index 36846dda..a687eb26 100644 --- a/server/api/api/v1/notifications/:id/index.test.ts +++ b/server/api/api/v1/notifications/:id/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Notification as ApiNotification } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/notifications/clear/index.test.ts b/server/api/api/v1/notifications/clear/index.test.ts index 7a62da95..672dd33d 100644 --- a/server/api/api/v1/notifications/clear/index.test.ts +++ b/server/api/api/v1/notifications/clear/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Notification as ApiNotification } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/notifications/destroy_multiple/index.test.ts b/server/api/api/v1/notifications/destroy_multiple/index.test.ts index 75e3b4cc..dbd012ed 100644 --- a/server/api/api/v1/notifications/destroy_multiple/index.test.ts +++ b/server/api/api/v1/notifications/destroy_multiple/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Notification as ApiNotification } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/notifications/index.test.ts b/server/api/api/v1/notifications/index.test.ts index 5db11cc9..864a7a35 100644 --- a/server/api/api/v1/notifications/index.test.ts +++ b/server/api/api/v1/notifications/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Notification as ApiNotification } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/roles/:id/index.test.ts b/server/api/api/v1/roles/:id/index.test.ts index e5361046..4abc2858 100644 --- a/server/api/api/v1/roles/:id/index.test.ts +++ b/server/api/api/v1/roles/:id/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; import { ADMIN_ROLES, DEFAULT_ROLES, RolePermissions } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Role } from "~/packages/database-interface/role"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/roles/index.test.ts b/server/api/api/v1/roles/index.test.ts index 1323f3e6..48b63d3f 100644 --- a/server/api/api/v1/roles/index.test.ts +++ b/server/api/api/v1/roles/index.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; import { ADMIN_ROLES } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Role } from "~/packages/database-interface/role"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/statuses/:id/favourite.test.ts b/server/api/api/v1/statuses/:id/favourite.test.ts index 2e2a9fe2..8d127e33 100644 --- a/server/api/api/v1/statuses/:id/favourite.test.ts +++ b/server/api/api/v1/statuses/:id/favourite.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Status as ApiStatus } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./favourite"; diff --git a/server/api/api/v1/statuses/:id/favourited_by.test.ts b/server/api/api/v1/statuses/:id/favourited_by.test.ts index b668fe70..acf28144 100644 --- a/server/api/api/v1/statuses/:id/favourited_by.test.ts +++ b/server/api/api/v1/statuses/:id/favourited_by.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./favourited_by"; diff --git a/server/api/api/v1/statuses/:id/index.ts b/server/api/api/v1/statuses/:id/index.ts index 1be75fe2..e07b65f0 100644 --- a/server/api/api/v1/statuses/:id/index.ts +++ b/server/api/api/v1/statuses/:id/index.ts @@ -8,11 +8,11 @@ import { import { errorResponse, jsonResponse } from "@/response"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; -import { config } from "config-manager"; import ISO6391 from "iso-639-1"; import { z } from "zod"; import { undoFederationRequest } from "~/classes/functions/federation"; import { RolePermissions } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Attachment } from "~/packages/database-interface/attachment"; import { Note } from "~/packages/database-interface/note"; diff --git a/server/api/api/v1/statuses/:id/reblogged_by.test.ts b/server/api/api/v1/statuses/:id/reblogged_by.test.ts index 5d3be646..2a9be319 100644 --- a/server/api/api/v1/statuses/:id/reblogged_by.test.ts +++ b/server/api/api/v1/statuses/:id/reblogged_by.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Account as ApiAccount } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./reblogged_by"; diff --git a/server/api/api/v1/statuses/:id/unfavourite.test.ts b/server/api/api/v1/statuses/:id/unfavourite.test.ts index 59161af7..dac216e8 100644 --- a/server/api/api/v1/statuses/:id/unfavourite.test.ts +++ b/server/api/api/v1/statuses/:id/unfavourite.test.ts @@ -1,6 +1,6 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Status as ApiStatus } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./unfavourite"; diff --git a/server/api/api/v1/statuses/index.test.ts b/server/api/api/v1/statuses/index.test.ts index 2fed2793..48cef09b 100644 --- a/server/api/api/v1/statuses/index.test.ts +++ b/server/api/api/v1/statuses/index.test.ts @@ -1,9 +1,9 @@ import { afterAll, beforeAll, describe, expect, test } from "bun:test"; import type { Status as ApiStatus } from "@lysand-org/client/types"; -import { config } from "config-manager"; import { eq } from "drizzle-orm"; import { db } from "~/drizzle/db"; import { Emojis } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v1/statuses/index.ts b/server/api/api/v1/statuses/index.ts index c0c2b3ac..fffef36d 100644 --- a/server/api/api/v1/statuses/index.ts +++ b/server/api/api/v1/statuses/index.ts @@ -2,10 +2,10 @@ import { applyConfig, auth, handleZodError, jsonOrForm } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; -import { config } from "config-manager"; import ISO6391 from "iso-639-1"; import { z } from "zod"; import { RolePermissions } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Attachment } from "~/packages/database-interface/attachment"; import { Note } from "~/packages/database-interface/note"; diff --git a/server/api/api/v1/timelines/home.test.ts b/server/api/api/v1/timelines/home.test.ts index 30e9432d..12685a0b 100644 --- a/server/api/api/v1/timelines/home.test.ts +++ b/server/api/api/v1/timelines/home.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Status as ApiStatus } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./home"; diff --git a/server/api/api/v1/timelines/public.test.ts b/server/api/api/v1/timelines/public.test.ts index e543556b..b5533aad 100644 --- a/server/api/api/v1/timelines/public.test.ts +++ b/server/api/api/v1/timelines/public.test.ts @@ -1,6 +1,6 @@ import { afterAll, describe, expect, test } from "bun:test"; import type { Status as ApiStatus } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestStatuses, getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./public"; diff --git a/server/api/api/v2/filters/:id/index.test.ts b/server/api/api/v2/filters/:id/index.test.ts index 52220947..dcd87410 100644 --- a/server/api/api/v2/filters/:id/index.test.ts +++ b/server/api/api/v2/filters/:id/index.test.ts @@ -1,5 +1,5 @@ import { afterAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v2/filters/index.test.ts b/server/api/api/v2/filters/index.test.ts index 946eed5b..f09527d2 100644 --- a/server/api/api/v2/filters/index.test.ts +++ b/server/api/api/v2/filters/index.test.ts @@ -1,5 +1,5 @@ import { afterAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v2/instance/index.test.ts b/server/api/api/v2/instance/index.test.ts index 002e6e51..98b5fd70 100644 --- a/server/api/api/v2/instance/index.test.ts +++ b/server/api/api/v2/instance/index.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { sendTestRequest } from "~/tests/utils"; import { meta } from "./index"; diff --git a/server/api/api/v2/media/index.ts b/server/api/api/v2/media/index.ts index f8390218..c52fb1bb 100644 --- a/server/api/api/v2/media/index.ts +++ b/server/api/api/v2/media/index.ts @@ -2,11 +2,11 @@ import { applyConfig, auth, handleZodError } from "@/api"; import { errorResponse, jsonResponse } from "@/response"; import type { Hono } from "@hono/hono"; import { zValidator } from "@hono/zod-validator"; -import { config } from "config-manager"; import sharp from "sharp"; import { z } from "zod"; import { MediaManager } from "~/classes/media/media-manager"; import { RolePermissions } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import { Attachment } from "~/packages/database-interface/attachment"; export const meta = applyConfig({ diff --git a/setup.ts b/setup.ts index 4f7bf6a1..bdb43243 100644 --- a/setup.ts +++ b/setup.ts @@ -1,8 +1,8 @@ import { checkConfig } from "@/init"; import { configureLoggers } from "@/loggers"; import { getLogger } from "@logtape/logtape"; -import { config } from "config-manager"; import { setupDatabase } from "~/drizzle/db"; +import { config } from "~/packages/config-manager/index"; import { Note } from "~/packages/database-interface/note"; import { searchManager } from "./classes/search/search-manager"; diff --git a/tests/api.test.ts b/tests/api.test.ts index 7e47416d..ba3c21f3 100644 --- a/tests/api.test.ts +++ b/tests/api.test.ts @@ -1,5 +1,5 @@ import { afterAll, describe, expect, test } from "bun:test"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest, wrapRelativeUrl } from "./utils"; const baseUrl = config.http.base_url; diff --git a/tests/api/accounts.test.ts b/tests/api/accounts.test.ts index e148fff6..82cd8f6a 100644 --- a/tests/api/accounts.test.ts +++ b/tests/api/accounts.test.ts @@ -6,7 +6,7 @@ import type { Account as ApiAccount, Relationship as ApiRelationship, } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest, wrapRelativeUrl } from "~/tests/utils"; const baseUrl = config.http.base_url; diff --git a/tests/api/statuses.test.ts b/tests/api/statuses.test.ts index 0864b24e..694a4599 100644 --- a/tests/api/statuses.test.ts +++ b/tests/api/statuses.test.ts @@ -7,7 +7,7 @@ import type { Context as ApiContext, Status as ApiStatus, } from "@lysand-org/client/types"; -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; import { getTestUsers, sendTestRequest, wrapRelativeUrl } from "~/tests/utils"; const baseUrl = config.http.base_url; diff --git a/utils/api.ts b/utils/api.ts index cd1160f7..f47e7f8a 100644 --- a/utils/api.ts +++ b/utils/api.ts @@ -6,7 +6,6 @@ import { validator } from "@hono/hono/validator"; import { getLogger } from "@logtape/logtape"; import { extractParams, verifySolution } from "altcha-lib"; import chalk from "chalk"; -import { config } from "config-manager"; import { eq } from "drizzle-orm"; import { anyOf, @@ -27,6 +26,7 @@ import type { Application } from "~/classes/functions/application"; import { type AuthData, getFromHeader } from "~/classes/functions/user"; import { db } from "~/drizzle/db"; import { Challenges } from "~/drizzle/schema"; +import { config } from "~/packages/config-manager/index"; import type { User } from "~/packages/database-interface/user"; import type { ApiRouteMetadata, HttpVerb } from "~/types/api"; diff --git a/utils/constants.ts b/utils/constants.ts index 6fafefc1..3f16c764 100644 --- a/utils/constants.ts +++ b/utils/constants.ts @@ -1,4 +1,4 @@ -import { config } from "config-manager"; +import { config } from "~/packages/config-manager/index"; export const oauthRedirectUri = (issuer: string) => new URL(`/oauth/sso/${issuer}/callback`, config.http.base_url).toString(); diff --git a/utils/sentry.ts b/utils/sentry.ts index 2d9b9f67..4d2e1d0d 100644 --- a/utils/sentry.ts +++ b/utils/sentry.ts @@ -1,6 +1,6 @@ import * as Sentry from "@sentry/bun"; -import { config } from "config-manager"; import pkg from "~/package.json"; +import { config } from "~/packages/config-manager/index"; const sentryInstance = config.logging.sentry.enabled && diff --git a/utils/server.ts b/utils/server.ts index 902f05e0..963391f0 100644 --- a/utils/server.ts +++ b/utils/server.ts @@ -1,5 +1,5 @@ import type { Hono } from "@hono/hono"; -import type { Config } from "config-manager"; +import type { Config } from "~/packages/config-manager/config.type"; export const createServer = (config: Config, app: Hono) => Bun.serve({ diff --git a/utils/timelines.ts b/utils/timelines.ts index 0d68e331..da3db574 100644 --- a/utils/timelines.ts +++ b/utils/timelines.ts @@ -1,4 +1,3 @@ -import { config } from "config-manager"; import type { Notification, findManyNotifications, @@ -6,6 +5,7 @@ import type { import type { Status, findManyNotes } from "~/classes/functions/status"; import type { UserType, findManyUsers } from "~/classes/functions/user"; import type { db } from "~/drizzle/db"; +import { config } from "~/packages/config-manager/index"; export async function fetchTimeline( model: