Improvements: remove dead config, fix ESM, add URL validation, unify types, add missing logging
Deploy / release (push) Skipped
Deploy / deploy (push) Successful in 1m52s

- Remove .prettierrc (dead config, Biome replaces Prettier)
- Rename lighthouserc.json to lighthouserc.cjs with module.exports for ESM compat
- Add logger.warn to empty catch blocks in auth, register, site-settings, prisma-cache, redis, security, rate-limit
- Unify ActionResult type: action-helper.ts uses 'ok' consistent with safe-action-shared.ts
- Add noUnusedLocals + noUnusedParameters to tsconfig + fix 25 pre-existing unused vars
- Replace barrel export src/types/index.ts with direct @/types/common imports
- Make trustHost conditional (development only) in auth.ts
- Add pre-flight URL validation to update-Nitrov3.sh to catch image.library.url misconfigurations
- Improve NITRO_IMAGE_LIBRARY_URL content validation in pre-flight & post-compute checks
This commit is contained in:
openhands committed 2026-07-26 20:28:11 +02:00
1 parent b922f6d49f
commit 17847545dd
292 files changed
+69195 -67915

No files matched your search

+65 -7
View File
@@ -1,4 +1,4 @@
import { describe, expect, it, vi, beforeEach } from "vitest";
import { beforeEach, describe, expect, it, vi } from "vitest";
const findUnique = vi.hoisted(() => vi.fn());
const findMany = vi.hoisted(() => vi.fn());
@@ -11,7 +11,14 @@ const catalogUpdateMany = vi.hoisted(() => vi.fn());
vi.mock("@/lib/prisma", () => ({
prisma: {
catalogPages: { findUnique, findMany, update, create, delete: catalogDelete, updateMany: catalogUpdateMany },
catalogPages: {
findUnique,
findMany,
update,
create,
delete: catalogDelete,
updateMany: catalogUpdateMany,
},
$queryRaw: queryRaw,
$executeRaw: executeRaw,
},
@@ -19,8 +26,15 @@ vi.mock("@/lib/prisma", () => ({
vi.mock("@/env", () => ({ env: {} }));
import { buildNestedTree, toInt, movePage, deletePage, getAncestors, createPage } from "./catalog-tree";
import type { TreeNode } from "@/types/catalog";
import {
buildNestedTree,
createPage,
deletePage,
getAncestors,
movePage,
toInt,
} from "./catalog-tree";
beforeEach(() => {
vi.clearAllMocks();
@@ -44,9 +58,48 @@ describe("toInt", () => {
describe("buildNestedTree", () => {
const flat: TreeNode[] = [
{ id: 1, caption: "Root", parentId: -1, depth: 0, orderNum: 1, enabled: "1", visible: "1", iconImage: 0, iconColor: 0, pageLayout: "default_3x3", childCount: 2, itemCount: 0 },
{ id: 2, caption: "Child", parentId: 1, depth: 1, orderNum: 1, enabled: "1", visible: "1", iconImage: 0, iconColor: 0, pageLayout: "default_3x3", childCount: 1, itemCount: 5 },
{ id: 3, caption: "Grandchild", parentId: 2, depth: 2, orderNum: 1, enabled: "1", visible: "1", iconImage: 0, iconColor: 0, pageLayout: "default_3x3", childCount: 0, itemCount: 0 },
{
id: 1,
caption: "Root",
parentId: -1,
depth: 0,
orderNum: 1,
enabled: "1",
visible: "1",
iconImage: 0,
iconColor: 0,
pageLayout: "default_3x3",
childCount: 2,
itemCount: 0,
},
{
id: 2,
caption: "Child",
parentId: 1,
depth: 1,
orderNum: 1,
enabled: "1",
visible: "1",
iconImage: 0,
iconColor: 0,
pageLayout: "default_3x3",
childCount: 1,
itemCount: 5,
},
{
id: 3,
caption: "Grandchild",
parentId: 2,
depth: 2,
orderNum: 1,
enabled: "1",
visible: "1",
iconImage: 0,
iconColor: 0,
pageLayout: "default_3x3",
childCount: 0,
itemCount: 0,
},
];
it("builds nested tree from flat nodes", () => {
@@ -89,7 +142,12 @@ describe("createPage", () => {
it("converts boolean visible/enabled to string", async () => {
create.mockResolvedValue({ id: 1 });
await createPage({ parentId: 0, caption: "x", visible: false, enabled: false });
await createPage({
parentId: 0,
caption: "x",
visible: false,
enabled: false,
});
expect(create.mock.calls[0][0].data.visible).toBe("0");
expect(create.mock.calls[0][0].data.enabled).toBe("0");
});