From b7aa0bf27b8150069e5eb9e5b53cd144f7a43a9a Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Fri, 28 Nov 2025 18:17:01 -0800 Subject: [PATCH] fix: handle optional properties with exactOptionalPropertyTypes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - errors.ts: Only assign retryAfter when defined, not undefined - user.adapter.ts: Build UserProfileResponse conditionally - Only include optional properties (total, totalPages, perPage) when defined - Use intermediate variables to ensure type safety Fixes exactOptionalPropertyTypes violations where `T | undefined` cannot be assigned to optional property `prop?: T`. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/lib/api/adapters/errors.ts | 4 +++- src/lib/api/adapters/user.adapter.ts | 21 ++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/lib/api/adapters/errors.ts b/src/lib/api/adapters/errors.ts index 08ab5976..30fcdd4b 100644 --- a/src/lib/api/adapters/errors.ts +++ b/src/lib/api/adapters/errors.ts @@ -161,7 +161,9 @@ export class RateLimitError extends ApiError { super('RATE_LIMITED', 429, message, details) this.name = 'RateLimitError' as any - this.retryAfter = retryAfter + if (retryAfter !== undefined) { + this.retryAfter = retryAfter + } } } diff --git a/src/lib/api/adapters/user.adapter.ts b/src/lib/api/adapters/user.adapter.ts index f0252245..00d86afe 100644 --- a/src/lib/api/adapters/user.adapter.ts +++ b/src/lib/api/adapters/user.adapter.ts @@ -53,14 +53,25 @@ export class UserAdapter extends BaseAdapter { const items = Array.isArray(response.profile?.parties) ? response.profile.parties : [] - return { + const result: UserProfileResponse = { user: response.profile, items, - page, - total: response.meta?.count, - totalPages: response.meta?.total_pages || response.meta?.totalPages, - perPage: response.meta?.per_page || response.meta?.perPage + page } + + if (response.meta?.count !== undefined) { + result.total = response.meta.count + } + const totalPages = response.meta?.total_pages ?? response.meta?.totalPages + if (totalPages !== undefined) { + result.totalPages = totalPages + } + const perPage = response.meta?.per_page ?? response.meta?.perPage + if (perPage !== undefined) { + result.perPage = perPage + } + + return result } /**