fix: close housekeeping foundation review findings
CI / check (pull_request) Successful in 28s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped

This commit is contained in:
Simo committed 2026-08-26 19:16:34 +02:00
1 parent ebc263da35
commit 08f8d54888
21 files changed
+593 -46

No files matched your search

@@ -98,6 +98,9 @@ const forbiddenModuleRoots = [
"src/app/actions",
"src/app/admin",
"src/app/mod",
"@prisma/client",
"drizzle-orm",
"mysql2",
] as const;
interface BabelNode {
@@ -287,10 +290,6 @@ function canonicalizeLocalSpecifier(
const suffixIndex = specifier.search(/[?#]/);
const withoutSuffix =
suffixIndex === -1 ? specifier : specifier.slice(0, suffixIndex);
const slashNormalized = withoutSuffix.replaceAll("\\", "/");
if (!slashNormalized.startsWith("@/") && !slashNormalized.startsWith(".")) {
return { candidates: [], violation: null };
}
let decoded: string;
try {
@@ -305,12 +304,15 @@ function canonicalizeLocalSpecifier(
} else if (decoded.startsWith(".")) {
normalized = posix.normalize(posix.join(posix.dirname(routeFile), decoded));
} else {
return { candidates: [], violation: "<malformed local specifier>" };
normalized = posix.normalize(decoded);
}
const extensionless = normalized.replace(resolverExtensionPattern, "");
return {
candidates: [...new Set([normalized, extensionless])],
candidates:
decoded.startsWith("@/") || decoded.startsWith(".")
? [...new Set([normalized, extensionless])]
: [normalized],
violation: null,
};
}
@@ -785,6 +787,24 @@ describe("preview route import boundary", () => {
'import("../mod/users/page")',
"src/app/mod/users/page",
],
[
"Prisma TypeScript import type",
"src/app/admin-next/page.tsx",
'type PrismaClient = import("@prisma/client").PrismaClient;',
"@prisma/client",
],
[
"Drizzle package import",
"src/app/admin-next/page.tsx",
'import { sql } from "drizzle-orm";',
"drizzle-orm",
],
[
"mysql2 package import",
"src/app/admin-next/page.tsx",
'import type { Pool } from "mysql2";',
"mysql2",
],
] as const)("detects %s", (_name, routeFile, source, expectedPath) => {
expect(findRouteImportBoundaryViolations(source, routeFile)).toContain(
expectedPath,
@@ -824,6 +844,9 @@ describe("preview route import boundary", () => {
'import dbTools from "../../lib/db-tools.ts";',
'import auth from "../../lib/authentication";',
'import preview from "../admin-next-shared";',
'import prismaTools from "@prisma/client-tools";',
'import drizzleTools from "drizzle-orm-kit";',
'import mysqlTools from "mysql2-wrapper";',
"const documentation = \"import db from '../../lib/db'\";",
'const rawTemplate = `import("../../actions/users")`;',
'// import db from "../../lib/db";',