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

+11 -8
View File
@@ -6,20 +6,20 @@ vi.mock("@/lib/logger", () => ({
logger: { error: loggerError },
}));
import { wrapAction, actionError } from "./action-helper";
import { actionError, wrapAction } from "./action-helper";
describe("wrapAction", () => {
it("returns success result on happy path", async () => {
const fn = vi.fn().mockResolvedValue({ id: 1 });
const result = await wrapAction(fn, "test_action");
expect(result.success).toBe(true);
expect(result.ok).toBe(true);
expect(result.data).toEqual({ id: 1 });
});
it("returns error result on thrown exception", async () => {
const fn = vi.fn().mockRejectedValue(new Error("DB error"));
const result = await wrapAction(fn, "failing_action");
expect(result.success).toBe(false);
expect(result.ok).toBe(false);
expect(result.error).toBe("DB error");
expect(loggerError).toHaveBeenCalled();
});
@@ -27,20 +27,20 @@ describe("wrapAction", () => {
it("catches non-Error values gracefully", async () => {
const fn = vi.fn().mockRejectedValue("string error");
const result = await wrapAction(fn, "bad_action");
expect(result.success).toBe(false);
expect(result.ok).toBe(false);
});
it("returns data returned by fn", async () => {
const fn = vi.fn().mockResolvedValue(undefined);
const result = await wrapAction(fn, "void_action");
expect(result.success).toBe(true);
expect(result.ok).toBe(true);
});
});
describe("actionError", () => {
it("returns failure result with message", () => {
const result = actionError("some_action", "something went wrong");
expect(result.success).toBe(false);
expect(result.ok).toBe(false);
expect(result.error).toBe("something went wrong");
});
@@ -48,7 +48,10 @@ describe("actionError", () => {
actionError("audit_action", "audit failed");
expect(loggerError).toHaveBeenCalledWith(
"Action failed: audit_action",
expect.objectContaining({ action: "audit_action", error: "audit failed" }),
expect.objectContaining({
action: "audit_action",
error: "audit failed",
}),
);
});
});
});