From e5ff7ec9e5f024b7968c79e5e491da46b5b4c26b Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 31 Jul 2026 15:26:39 +0200 Subject: [PATCH] =?UTF-8?q?chore:=20clean=20up=20biome=20lint=20warnings?= =?UTF-8?q?=20=E2=80=94=20all=20non-=20intentional=20resolved?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Remove 25 unused imports across 14 test files - Remove 1 unused variable (rename with _ prefix) - Fix 2 noBannedTypes (Function → (...args: unknown[]) => unknown) - Fix 1 useTemplate lint (string concat → template literal in merge-config.cjs) - Fix 1 useNodejsImportProtocol (merge-config.cjs) - Fix 2 noTemplateCurlyInString (generate-drizzle-schema.mjs generator code) - Auto-fix formatting + import sorting across modified files - 221 remaining warnings: intentional noExplicitAny in prisma-facade.ts (Prisma compat layer) - 0 tsc errors, 583 tests passing --- scripts/generate-drizzle-schema.mjs | 4 +++- scripts/merge-config.cjs | 4 ++-- src/actions/admin-ads.test.ts | 2 +- src/actions/admin-alerts.test.ts | 1 - src/actions/admin-bans.test.ts | 2 -- src/actions/admin-guilds.test.ts | 1 - src/actions/admin-help.test.ts | 4 ---- src/actions/admin-ip.test.ts | 1 - src/actions/admin-media.test.ts | 4 +--- src/actions/admin-photos.test.ts | 1 - src/actions/admin-tags.test.ts | 1 - src/actions/admin-teams.test.ts | 1 - src/actions/admin-vpn.test.ts | 4 ---- src/actions/auth-precheck.test.ts | 1 - src/actions/bulk-users.test.ts | 2 -- src/actions/emulator.test.ts | 6 +----- src/lib/admin/guard.test.ts | 2 +- 17 files changed, 9 insertions(+), 32 deletions(-) diff --git a/scripts/generate-drizzle-schema.mjs b/scripts/generate-drizzle-schema.mjs index ae9c7f1807..884a7544aa 100644 --- a/scripts/generate-drizzle-schema.mjs +++ b/scripts/generate-drizzle-schema.mjs @@ -40,7 +40,7 @@ const modelNames = new Set(modelBlocks.map((m) => m[1])); /** parse a model block -> { name, table, fields, ids, uniques, maps } */ function parseModel(block) { - const [full, name, body] = block; + const [_full, name, body] = block; const table = body.match(/@@map\(\s*"([^"]+)"\s*\)/)?.[1] ?? name.toLowerCase(); @@ -542,6 +542,7 @@ const helpers = [ " return value.toISOString().slice(11, 19);", " },", " fromDriver(value) {", + // biome-ignore lint/suspicious/noTemplateCurlyInString: code generation template literal " return new Date(`1970-01-01T${value}Z`);", " },", "});", @@ -554,6 +555,7 @@ const helpers = [ " return value.toISOString().slice(0, 10);", " },", " fromDriver(value) {", + // biome-ignore lint/suspicious/noTemplateCurlyInString: code generation template literal " return new Date(`${value}T00:00:00Z`);", " },", "});", diff --git a/scripts/merge-config.cjs b/scripts/merge-config.cjs index ebe6db2897..91a3cc2e5d 100644 --- a/scripts/merge-config.cjs +++ b/scripts/merge-config.cjs @@ -1,4 +1,4 @@ -const fs = require("fs"); +const fs = require("node:fs"); const JSON5 = require("json5"); const exampleFile = process.argv[2]; @@ -50,4 +50,4 @@ const isJson5 = targetFile.endsWith(".json5"); const output = isJson5 ? JSON5.stringify(merged, null, 4) : JSON.stringify(merged, null, 4); -fs.writeFileSync(targetFile, output + "\n"); +fs.writeFileSync(targetFile, `${output}\n`); diff --git a/src/actions/admin-ads.test.ts b/src/actions/admin-ads.test.ts index 8b9d137adc..1dc8b57f11 100644 --- a/src/actions/admin-ads.test.ts +++ b/src/actions/admin-ads.test.ts @@ -16,7 +16,7 @@ vi.mock("@/lib/prisma", () => ({ })); vi.mock("@/lib/logger", () => ({ logger: { error: vi.fn() } })); vi.mock("@/lib/safe-action", () => ({ - adminAction: vi.fn((_o: unknown, f: Function) => f), + adminAction: vi.fn((_o: unknown, f: (...args: unknown[]) => unknown) => f), })); vi.mock("@/lib/safe-action-shared", () => ({ ActionError: class extends Error {}, diff --git a/src/actions/admin-alerts.test.ts b/src/actions/admin-alerts.test.ts index 44a850f5f0..894a535c1a 100644 --- a/src/actions/admin-alerts.test.ts +++ b/src/actions/admin-alerts.test.ts @@ -2,7 +2,6 @@ import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { rcon } from "@/lib/services/rcon"; import { sendHotelAlert } from "./admin-alerts"; diff --git a/src/actions/admin-bans.test.ts b/src/actions/admin-bans.test.ts index a23a5ae03f..457ba77606 100644 --- a/src/actions/admin-bans.test.ts +++ b/src/actions/admin-bans.test.ts @@ -2,10 +2,8 @@ import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermissionRateLimited } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { rcon } from "@/lib/services/rcon"; -import { logStaffActivity } from "@/lib/services/staff-activity"; import { createBan, liftBan } from "./admin-bans"; vi.mock("@/lib/admin/guard", () => ({ requirePermissionRateLimited: vi.fn() })); diff --git a/src/actions/admin-guilds.test.ts b/src/actions/admin-guilds.test.ts index 4e21dd387f..3b2829b1ee 100644 --- a/src/actions/admin-guilds.test.ts +++ b/src/actions/admin-guilds.test.ts @@ -2,7 +2,6 @@ import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermissionRateLimited } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { logStaffActivity } from "@/lib/services/staff-activity"; import { disbandGuild } from "./admin-guilds"; diff --git a/src/actions/admin-help.test.ts b/src/actions/admin-help.test.ts index 327a7f7ed3..1f38d30efd 100644 --- a/src/actions/admin-help.test.ts +++ b/src/actions/admin-help.test.ts @@ -1,11 +1,7 @@ -// @ts-nocheck -import { revalidatePath } from "next/cache"; import { redirect } from "next/navigation"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; -import { logStaffActivity } from "@/lib/services/staff-activity"; import { createHelpQuestion, deleteHelpQuestion, diff --git a/src/actions/admin-ip.test.ts b/src/actions/admin-ip.test.ts index c034206a20..0d83147d50 100644 --- a/src/actions/admin-ip.test.ts +++ b/src/actions/admin-ip.test.ts @@ -2,7 +2,6 @@ import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { addBlacklist, diff --git a/src/actions/admin-media.test.ts b/src/actions/admin-media.test.ts index 99f7f56db5..986e72b7dd 100644 --- a/src/actions/admin-media.test.ts +++ b/src/actions/admin-media.test.ts @@ -1,12 +1,10 @@ // @ts-nocheck -import { mkdir, writeFile } from "node:fs/promises"; import path from "node:path"; import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { MEDIA_ROOT, resolveMediaPath } from "@/lib/media-storage"; -import { PERMS } from "@/lib/permissions"; +import { resolveMediaPath } from "@/lib/media-storage"; import { deleteMedia, uploadMedia, uploadMediaAndReturn } from "./admin-media"; vi.mock("@/lib/admin/guard", () => ({ requirePermission: vi.fn() })); diff --git a/src/actions/admin-photos.test.ts b/src/actions/admin-photos.test.ts index 44d31e95d6..28288b502c 100644 --- a/src/actions/admin-photos.test.ts +++ b/src/actions/admin-photos.test.ts @@ -2,7 +2,6 @@ import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { deletePhoto } from "./admin-photos"; diff --git a/src/actions/admin-tags.test.ts b/src/actions/admin-tags.test.ts index 94a63b2983..24e3d90989 100644 --- a/src/actions/admin-tags.test.ts +++ b/src/actions/admin-tags.test.ts @@ -2,7 +2,6 @@ import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { logStaffActivity } from "@/lib/services/staff-activity"; import { createTag, deleteTag, updateTag } from "./admin-tags"; diff --git a/src/actions/admin-teams.test.ts b/src/actions/admin-teams.test.ts index c31178b042..310de2d9f8 100644 --- a/src/actions/admin-teams.test.ts +++ b/src/actions/admin-teams.test.ts @@ -2,7 +2,6 @@ import { revalidatePath } from "next/cache"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { createTeam, deleteTeam } from "./admin-teams"; diff --git a/src/actions/admin-vpn.test.ts b/src/actions/admin-vpn.test.ts index a6d2da369f..fe00f70c52 100644 --- a/src/actions/admin-vpn.test.ts +++ b/src/actions/admin-vpn.test.ts @@ -1,12 +1,8 @@ -// @ts-nocheck -import { revalidatePath } from "next/cache"; import { redirect } from "next/navigation"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { siteSettings } from "@/lib/services/site-settings"; -import { logStaffActivity } from "@/lib/services/staff-activity"; import { saveVpn } from "./admin-vpn"; vi.mock("@/lib/admin/guard", () => ({ requirePermission: vi.fn() })); diff --git a/src/actions/auth-precheck.test.ts b/src/actions/auth-precheck.test.ts index d73f3d3778..e614c9d367 100644 --- a/src/actions/auth-precheck.test.ts +++ b/src/actions/auth-precheck.test.ts @@ -1,6 +1,5 @@ // @ts-nocheck import { beforeEach, describe, expect, it, vi } from "vitest"; -import { env } from "@/env"; import { checkLogin } from "@/lib/auth/password"; import { prisma } from "@/lib/prisma"; import { clientIp, rateLimit } from "@/lib/rate-limit"; diff --git a/src/actions/bulk-users.test.ts b/src/actions/bulk-users.test.ts index d1cde83c88..1934b18cc2 100644 --- a/src/actions/bulk-users.test.ts +++ b/src/actions/bulk-users.test.ts @@ -1,10 +1,8 @@ // @ts-nocheck import { beforeEach, describe, expect, it, vi } from "vitest"; import { requirePermission } from "@/lib/admin/guard"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { rcon } from "@/lib/services/rcon"; -import { logStaffActivity } from "@/lib/services/staff-activity"; import { bulkBan, bulkGiveBadge, diff --git a/src/actions/emulator.test.ts b/src/actions/emulator.test.ts index 05bb1cfb0a..f629e18f3a 100644 --- a/src/actions/emulator.test.ts +++ b/src/actions/emulator.test.ts @@ -1,10 +1,6 @@ // @ts-nocheck import { describe, expect, it, vi } from "vitest"; -import { PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; -import { adminAction } from "@/lib/safe-action"; -import { actionOk } from "@/lib/safe-action-shared"; -import { logAudit } from "@/lib/services/audit"; import { rcon } from "@/lib/services/rcon"; vi.mock("@/lib/permissions", () => ({ @@ -14,7 +10,7 @@ vi.mock("@/lib/prisma", () => ({ prisma: { emulatorSettings: { upsert: vi.fn() } }, })); vi.mock("@/lib/safe-action", () => ({ - adminAction: vi.fn((_opts: unknown, fn: Function) => fn), + adminAction: vi.fn((_opts: unknown, fn: (...args: unknown[]) => unknown) => fn), })); vi.mock("@/lib/safe-action-shared", () => ({ actionOk: vi.fn(() => "ok") })); vi.mock("@/lib/services/audit", () => ({ logAudit: vi.fn() })); diff --git a/src/lib/admin/guard.test.ts b/src/lib/admin/guard.test.ts index c22a3a8fcf..2f23332e54 100644 --- a/src/lib/admin/guard.test.ts +++ b/src/lib/admin/guard.test.ts @@ -1,7 +1,7 @@ // @ts-nocheck import { beforeEach, describe, expect, it, vi } from "vitest"; import { redirectSafe } from "@/lib/foundation/security"; -import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; +import { canAccess, getAdminContext } from "@/lib/permissions"; import { clientIp, rateLimit } from "@/lib/rate-limit"; import { requireMod,