From 8e2153cb19bc2a9923c19ea6132b323b47b5e23c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 6 Jan 2026 16:23:48 +0000 Subject: [PATCH] Fix strict-boolean-expressions in error-logs, schemas, pages, and users Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- frontends/nextjs/src/app/page.tsx | 10 ++--- .../nextjs/src/app/ui/[[...slug]]/page.tsx | 4 +- .../lib/db/error-logs/crud/get-error-logs.ts | 41 +++++++++++++------ .../src/lib/db/schemas/crud/get-schemas.ts | 16 ++++---- .../src/lib/db/schemas/crud/set-schemas.ts | 11 +++-- .../src/lib/db/users/map-user-record.ts | 6 +-- 6 files changed, 51 insertions(+), 37 deletions(-) diff --git a/frontends/nextjs/src/app/page.tsx b/frontends/nextjs/src/app/page.tsx index 17212a1cb..d00fc6cf8 100644 --- a/frontends/nextjs/src/app/page.tsx +++ b/frontends/nextjs/src/app/page.tsx @@ -76,25 +76,25 @@ export default async function RootPage() { const homePackageRecord = installedPackages.data.find((pkg) => { try { - const config = JSON.parse(pkg.config || '{}') + const config = JSON.parse(pkg.config ?? '{}') as { defaultRoute?: string } return config.defaultRoute === '/' } catch { return false } }) - if (homePackageRecord) { + if (homePackageRecord !== null && homePackageRecord !== undefined) { const packageId = homePackageRecord.packageId const pkg = await loadJSONPackage(`/home/rewrich/Documents/GitHub/metabuilder/packages/${packageId}`) - if (pkg?.components && pkg.components.length > 0) { + if ((pkg?.components !== null && pkg?.components !== undefined) && pkg.components.length > 0) { const pageComponent = pkg.components.find(c => c.id === 'home_page' || c.name === 'HomePage' || c.name === 'Home' - ) || pkg.components[0] + ) ?? pkg.components[0] - if (pageComponent) { + if (pageComponent !== null && pageComponent !== undefined) { return renderJSONComponent(pageComponent, {}, {}) } } diff --git a/frontends/nextjs/src/app/ui/[[...slug]]/page.tsx b/frontends/nextjs/src/app/ui/[[...slug]]/page.tsx index d99f67be6..55aec75e0 100644 --- a/frontends/nextjs/src/app/ui/[[...slug]]/page.tsx +++ b/frontends/nextjs/src/app/ui/[[...slug]]/page.tsx @@ -30,7 +30,7 @@ export default async function DynamicUIPage({ params }: PageProps) { // Prefer Lua package-based UI pages, fallback to database-backed pages const rawPageData = (await loadPageFromLuaPackages(path)) ?? (await loadPageFromDb(path)) - if (!rawPageData) { + if (rawPageData === null || rawPageData === undefined) { notFound() } @@ -56,7 +56,7 @@ export async function generateMetadata({ params }: PageProps): Promise const pageData = (await loadPageFromLuaPackages(path)) ?? (await loadPageFromDb(path)) - if (!pageData) { + if (pageData === null || pageData === undefined) { return { title: 'Page Not Found', } diff --git a/frontends/nextjs/src/lib/db/error-logs/crud/get-error-logs.ts b/frontends/nextjs/src/lib/db/error-logs/crud/get-error-logs.ts index f154bef8a..9ab410762 100644 --- a/frontends/nextjs/src/lib/db/error-logs/crud/get-error-logs.ts +++ b/frontends/nextjs/src/lib/db/error-logs/crud/get-error-logs.ts @@ -13,31 +13,46 @@ export async function getErrorLogs(options?: { const adapter = getAdapter() const result = await adapter.list('ErrorLog') - // eslint-disable-next-line @typescript-eslint/no-explicit-any - let logs = (result.data as any[]).map(log => ({ + type ErrorLogRecord = { + id: string + timestamp: bigint | number + level: string + message: string + stack?: string | null + context?: string | null + userId?: string | null + username?: string | null + tenantId?: string | null + source?: string | null + resolved: boolean + resolvedAt?: bigint | number | null + resolvedBy?: string | null + } + + let logs = (result.data as ErrorLogRecord[]).map(log => ({ id: log.id, timestamp: Number(log.timestamp), level: log.level as 'error' | 'warning' | 'info', message: log.message, - stack: log.stack || undefined, - context: log.context || undefined, - userId: log.userId || undefined, - username: log.username || undefined, - tenantId: log.tenantId || undefined, - source: log.source || undefined, + stack: log.stack ?? undefined, + context: log.context ?? undefined, + userId: log.userId ?? undefined, + username: log.username ?? undefined, + tenantId: log.tenantId ?? undefined, + source: log.source ?? undefined, resolved: log.resolved, - resolvedAt: log.resolvedAt ? Number(log.resolvedAt) : undefined, - resolvedBy: log.resolvedBy || undefined, + resolvedAt: (log.resolvedAt !== null && log.resolvedAt !== undefined) ? Number(log.resolvedAt) : undefined, + resolvedBy: log.resolvedBy ?? undefined, })) // Apply filters - if (options?.level) { + if (options?.level !== null && options?.level !== undefined) { logs = logs.filter(log => log.level === options.level) } if (options?.resolved !== undefined) { logs = logs.filter(log => log.resolved === options.resolved) } - if (options?.tenantId) { + if (options?.tenantId !== null && options?.tenantId !== undefined) { logs = logs.filter(log => log.tenantId === options.tenantId) } @@ -45,7 +60,7 @@ export async function getErrorLogs(options?: { logs.sort((a, b) => b.timestamp - a.timestamp) // Apply limit - if (options?.limit && options.limit > 0) { + if ((options?.limit !== null && options?.limit !== undefined) && options.limit > 0) { logs = logs.slice(0, options.limit) } diff --git a/frontends/nextjs/src/lib/db/schemas/crud/get-schemas.ts b/frontends/nextjs/src/lib/db/schemas/crud/get-schemas.ts index af97c8daf..8581e1fdf 100644 --- a/frontends/nextjs/src/lib/db/schemas/crud/get-schemas.ts +++ b/frontends/nextjs/src/lib/db/schemas/crud/get-schemas.ts @@ -23,13 +23,13 @@ export async function getSchemas(): Promise { return result.data.map(s => ({ id: s.id, name: s.name, - label: s.label || undefined, - labelPlural: s.labelPlural || undefined, - icon: s.icon || undefined, - fields: JSON.parse(s.fields), - listDisplay: s.listDisplay ? JSON.parse(s.listDisplay) : undefined, - listFilter: s.listFilter ? JSON.parse(s.listFilter) : undefined, - searchFields: s.searchFields ? JSON.parse(s.searchFields) : undefined, - ordering: s.ordering ? JSON.parse(s.ordering) : undefined, + label: s.label ?? undefined, + labelPlural: s.labelPlural ?? undefined, + icon: s.icon ?? undefined, + fields: JSON.parse(s.fields) as ModelSchema['fields'], + listDisplay: (s.listDisplay !== null && s.listDisplay !== undefined) ? JSON.parse(s.listDisplay) as string[] : undefined, + listFilter: (s.listFilter !== null && s.listFilter !== undefined) ? JSON.parse(s.listFilter) as string[] : undefined, + searchFields: (s.searchFields !== null && s.searchFields !== undefined) ? JSON.parse(s.searchFields) as string[] : undefined, + ordering: (s.ordering !== null && s.ordering !== undefined) ? JSON.parse(s.ordering) as string[] : undefined, })) } diff --git a/frontends/nextjs/src/lib/db/schemas/crud/set-schemas.ts b/frontends/nextjs/src/lib/db/schemas/crud/set-schemas.ts index 6db24965f..3fd96f1c0 100644 --- a/frontends/nextjs/src/lib/db/schemas/crud/set-schemas.ts +++ b/frontends/nextjs/src/lib/db/schemas/crud/set-schemas.ts @@ -9,8 +9,7 @@ export async function setSchemas(schemas: ModelSchema[]): Promise { // Delete existing schemas const existing = await adapter.list('ModelSchema') - // eslint-disable-next-line @typescript-eslint/no-explicit-any - for (const s of existing.data as any[]) { + for (const s of existing.data as Array<{ name: string }>) { await adapter.delete('ModelSchema', s.name) } @@ -22,10 +21,10 @@ export async function setSchemas(schemas: ModelSchema[]): Promise { labelPlural: schema.labelPlural, icon: schema.icon, fields: JSON.stringify(schema.fields), - listDisplay: schema.listDisplay ? JSON.stringify(schema.listDisplay) : null, - listFilter: schema.listFilter ? JSON.stringify(schema.listFilter) : null, - searchFields: schema.searchFields ? JSON.stringify(schema.searchFields) : null, - ordering: schema.ordering ? JSON.stringify(schema.ordering) : null, + listDisplay: (schema.listDisplay !== null && schema.listDisplay !== undefined) ? JSON.stringify(schema.listDisplay) : null, + listFilter: (schema.listFilter !== null && schema.listFilter !== undefined) ? JSON.stringify(schema.listFilter) : null, + searchFields: (schema.searchFields !== null && schema.searchFields !== undefined) ? JSON.stringify(schema.searchFields) : null, + ordering: (schema.ordering !== null && schema.ordering !== undefined) ? JSON.stringify(schema.ordering) : null, }) } } diff --git a/frontends/nextjs/src/lib/db/users/map-user-record.ts b/frontends/nextjs/src/lib/db/users/map-user-record.ts index b5907c550..41f1d212d 100644 --- a/frontends/nextjs/src/lib/db/users/map-user-record.ts +++ b/frontends/nextjs/src/lib/db/users/map-user-record.ts @@ -9,10 +9,10 @@ export function mapUserRecord(record: Record): User { username: String(record.username), email: String(record.email), role: record.role as User['role'], - profilePicture: record.profilePicture ? String(record.profilePicture) : undefined, - bio: record.bio ? String(record.bio) : undefined, + profilePicture: (record.profilePicture !== null && record.profilePicture !== undefined) ? String(record.profilePicture) : undefined, + bio: (record.bio !== null && record.bio !== undefined) ? String(record.bio) : undefined, createdAt: Number(record.createdAt), - tenantId: record.tenantId ? String(record.tenantId) : undefined, + tenantId: (record.tenantId !== null && record.tenantId !== undefined) ? String(record.tenantId) : undefined, isInstanceOwner: Boolean(record.isInstanceOwner), } }