diff --git a/frontends/nextjs/src/app/api/github/actions/runs/[runId]/logs/route.ts b/frontends/nextjs/src/app/api/github/actions/runs/[runId]/logs/route.ts index fdcd10691..afe19d493 100644 --- a/frontends/nextjs/src/app/api/github/actions/runs/[runId]/logs/route.ts +++ b/frontends/nextjs/src/app/api/github/actions/runs/[runId]/logs/route.ts @@ -37,7 +37,7 @@ export const GET = async (request: NextRequest, { params }: RouteParams) => { jobLimit, }) - if (!result) { + if (result === null || result === undefined) { return NextResponse.json({ error: 'Failed to fetch workflow logs' }, { status: 500 }) } diff --git a/frontends/nextjs/src/app/api/github/actions/runs/route.ts b/frontends/nextjs/src/app/api/github/actions/runs/route.ts index a4456b9ed..c59d0c18b 100644 --- a/frontends/nextjs/src/app/api/github/actions/runs/route.ts +++ b/frontends/nextjs/src/app/api/github/actions/runs/route.ts @@ -11,7 +11,7 @@ export const GET = async (request: NextRequest) => { const perPageParam = request.nextUrl.searchParams.get('perPage') let perPage = 20 - if (perPageParam) { + if (perPageParam !== null && perPageParam !== undefined && perPageParam.length > 0) { const parsed = Number(perPageParam) if (!Number.isNaN(parsed)) { perPage = Math.max(1, Math.min(100, Math.floor(parsed))) diff --git a/frontends/nextjs/src/app/api/health/route.test.tsx b/frontends/nextjs/src/app/api/health/route.test.tsx index debe644b8..49b1e0c41 100644 --- a/frontends/nextjs/src/app/api/health/route.test.tsx +++ b/frontends/nextjs/src/app/api/health/route.test.tsx @@ -6,7 +6,7 @@ import { GET } from './route' describe('GET /api/health', () => { it('returns OK status and permission level count', async () => { const response = GET(new NextRequest('http://example.com/api/health')) - const payload = await response.json() + const payload = await response.json() as Record expect(payload.status).toBe('ok') expect(typeof payload.timestamp).toBe('string') diff --git a/frontends/nextjs/src/app/api/packages/data/[packageId]/handlers/put-package-data.ts b/frontends/nextjs/src/app/api/packages/data/[packageId]/handlers/put-package-data.ts index 00969862d..c35d6464d 100644 --- a/frontends/nextjs/src/app/api/packages/data/[packageId]/handlers/put-package-data.ts +++ b/frontends/nextjs/src/app/api/packages/data/[packageId]/handlers/put-package-data.ts @@ -18,7 +18,7 @@ interface RouteParams { export async function PUT(request: NextRequest, { params }: RouteParams) { try { const body = await readJson(request) - if (!body?.data || Array.isArray(body.data)) { + if (body?.data === null || body?.data === undefined || Array.isArray(body.data)) { return NextResponse.json({ error: 'Package data is required' }, { status: 400 }) } diff --git a/frontends/nextjs/src/app/page.tsx b/frontends/nextjs/src/app/page.tsx index d00fc6cf8..f5e710980 100644 --- a/frontends/nextjs/src/app/page.tsx +++ b/frontends/nextjs/src/app/page.tsx @@ -52,7 +52,7 @@ export default async function RootPage() { // If route has full component tree, render it directly if (route.componentTree !== null && route.componentTree !== undefined && route.componentTree.length > 0) { - const componentDef = JSON.parse(route.componentTree) + const componentDef = JSON.parse(route.componentTree) as Record return renderJSONComponent(componentDef, {}, {}) } diff --git a/frontends/nextjs/src/lib/db/app-config/get-app-config.test.ts b/frontends/nextjs/src/lib/db/app-config/get-app-config.test.ts index e099ac1cd..146e7d7a4 100644 --- a/frontends/nextjs/src/lib/db/app-config/get-app-config.test.ts +++ b/frontends/nextjs/src/lib/db/app-config/get-app-config.test.ts @@ -36,7 +36,7 @@ describe('getAppConfig', () => { const result = await getAppConfig() - if (expected) { + if (expected !== null && expected !== undefined) { expect(result).toMatchObject(expected) } else { expect(result).toBeNull() diff --git a/frontends/nextjs/src/lib/db/comments/crud/set-comments.test.ts b/frontends/nextjs/src/lib/db/comments/crud/set-comments.test.ts index 59d141119..b1a8991dd 100644 --- a/frontends/nextjs/src/lib/db/comments/crud/set-comments.test.ts +++ b/frontends/nextjs/src/lib/db/comments/crud/set-comments.test.ts @@ -23,8 +23,15 @@ describe('setComments', () => { mockDelete.mockResolvedValue(undefined) mockCreate.mockResolvedValue(undefined) - // eslint-disable-next-line @typescript-eslint/no-explicit-any - await setComments([{ id: 'new', userId: 'u1', content: 'Hi', createdAt: 1000 }] as any) + const testComment: Comment = { + id: 'new', + userId: 'u1', + entityType: 'test', + entityId: 'test1', + content: 'Hi', + createdAt: 1000 + } + await setComments([testComment]) expect(mockDelete).toHaveBeenCalledTimes(1) expect(mockCreate).toHaveBeenCalledTimes(1) diff --git a/frontends/nextjs/src/lib/db/components/config/get-component-configs.ts b/frontends/nextjs/src/lib/db/components/config/get-component-configs.ts index 13f550adb..a8e66c8ba 100644 --- a/frontends/nextjs/src/lib/db/components/config/get-component-configs.ts +++ b/frontends/nextjs/src/lib/db/components/config/get-component-configs.ts @@ -18,11 +18,11 @@ export async function getComponentConfigs(): Promise, + styles: JSON.parse(config.styles) as Record, + events: JSON.parse(config.events) as Record, + conditionalRendering: config.conditionalRendering !== null && config.conditionalRendering !== undefined + ? (JSON.parse(config.conditionalRendering) as Record) : undefined, } } diff --git a/frontends/nextjs/src/lib/db/css-classes/crud/get-css-classes.ts b/frontends/nextjs/src/lib/db/css-classes/crud/get-css-classes.ts index c783ae95d..6a4e1614f 100644 --- a/frontends/nextjs/src/lib/db/css-classes/crud/get-css-classes.ts +++ b/frontends/nextjs/src/lib/db/css-classes/crud/get-css-classes.ts @@ -10,6 +10,6 @@ export async function getCssClasses(): Promise { const rows = result.data as Array<{ name: string; classes: string | string[] }> return rows.map(c => ({ name: c.name, - classes: typeof c.classes === 'string' ? JSON.parse(c.classes) : c.classes, + classes: typeof c.classes === 'string' ? (JSON.parse(c.classes) as string[]) : c.classes, })) } diff --git a/frontends/nextjs/src/lib/db/error-logs/tests/add-error-log.test.ts b/frontends/nextjs/src/lib/db/error-logs/tests/add-error-log.test.ts index 42cad4f00..40baca45c 100644 --- a/frontends/nextjs/src/lib/db/error-logs/tests/add-error-log.test.ts +++ b/frontends/nextjs/src/lib/db/error-logs/tests/add-error-log.test.ts @@ -47,8 +47,8 @@ describe('addErrorLog', () => { expect(mockCreate).toHaveBeenCalledWith( 'ErrorLog', expect.objectContaining({ - id: expect.stringContaining('error_'), - timestamp: expect.any(BigInt), + id: expect.stringContaining('error_') as string, + timestamp: expect.any(BigInt) as bigint, level: log.level, message: log.message, resolved: false, diff --git a/frontends/nextjs/src/lib/db/error-logs/tests/get-error-logs.test.ts b/frontends/nextjs/src/lib/db/error-logs/tests/get-error-logs.test.ts index 7eb29dd9f..038e9d16e 100644 --- a/frontends/nextjs/src/lib/db/error-logs/tests/get-error-logs.test.ts +++ b/frontends/nextjs/src/lib/db/error-logs/tests/get-error-logs.test.ts @@ -125,7 +125,7 @@ describe('getErrorLogs', () => { expect(mockList).toHaveBeenCalledWith('ErrorLog') expect(result).toHaveLength(expectedLength) - if (options?.tenantId && result.length > 0) { + if (options?.tenantId !== null && options?.tenantId !== undefined && result.length > 0) { expect(result.every(log => log.tenantId === options.tenantId)).toBe(true) } })