From 5ecab0d761fb7b958d8b4b97cf4a14fdc220c317 Mon Sep 17 00:00:00 2001 From: barsa Date: Fri, 3 Oct 2025 17:43:57 +0900 Subject: [PATCH] Enhance TypeScript configuration by adding composite option for improved project structure. Update address schema to allow optional fields and introduce a legacy alias for backward compatibility. Refactor address type to support nullable values, ensuring better data handling and validation across the application. --- packages/domain/common/schema.ts | 14 ++++++++------ packages/domain/common/types.ts | 14 +++++++------- packages/domain/tsconfig.json | 1 + packages/integrations/freebit/tsconfig.json | 2 -- packages/integrations/whmcs/tsconfig.json | 2 -- 5 files changed, 16 insertions(+), 17 deletions(-) diff --git a/packages/domain/common/schema.ts b/packages/domain/common/schema.ts index b2e65543..0eb19193 100644 --- a/packages/domain/common/schema.ts +++ b/packages/domain/common/schema.ts @@ -28,17 +28,19 @@ export const phoneSchema = z .trim(); export const addressSchema = z.object({ - street: z.string().max(200, "Street address is too long").nullable(), - streetLine2: z.string().max(200, "Street address line 2 is too long").nullable(), - city: z.string().max(100, "City name is too long").nullable(), - state: z.string().max(100, "State/Prefecture name is too long").nullable(), - postalCode: z.string().max(20, "Postal code is too long").nullable(), - country: z.string().max(100, "Country name is too long").nullable(), + street: z.string().max(200, "Street address is too long").nullable().optional(), + streetLine2: z.string().max(200, "Street address line 2 is too long").nullable().optional(), + street2: z.string().max(200, "Street address line 2 is too long").nullable().optional(), + city: z.string().max(100, "City name is too long").nullable().optional(), + state: z.string().max(100, "State/Prefecture name is too long").nullable().optional(), + postalCode: z.string().max(20, "Postal code is too long").nullable().optional(), + country: z.string().max(100, "Country name is too long").nullable().optional(), }); export const requiredAddressSchema = z.object({ street: z.string().min(1, "Street address is required").max(200, "Street address is too long").trim(), streetLine2: z.string().max(200, "Street address line 2 is too long").optional(), + street2: z.string().max(200, "Street address line 2 is too long").optional(), city: z.string().min(1, "City is required").max(100, "City name is too long").trim(), state: z .string() diff --git a/packages/domain/common/types.ts b/packages/domain/common/types.ts index 16de2859..6e248098 100644 --- a/packages/domain/common/types.ts +++ b/packages/domain/common/types.ts @@ -40,12 +40,13 @@ export type SalesforceCaseId = string & { readonly __brand: "SalesforceCaseId" } // ============================================================================ export interface Address { - street?: string; - street2?: string; - city?: string; - state?: string; - postalCode?: string; - country?: string; + street?: string | null; + streetLine2?: string | null; + street2?: string | null; // legacy alias for backwards compatibility + city?: string | null; + state?: string | null; + postalCode?: string | null; + country?: string | null; } // ============================================================================ @@ -85,4 +86,3 @@ export interface PaginatedResponse { limit: number; hasMore: boolean; } - diff --git a/packages/domain/tsconfig.json b/packages/domain/tsconfig.json index b2889149..bd9493b4 100644 --- a/packages/domain/tsconfig.json +++ b/packages/domain/tsconfig.json @@ -5,6 +5,7 @@ "lib": ["ES2022"], "declaration": true, "declarationMap": true, + "composite": true, "outDir": "./dist", "rootDir": ".", "strict": true, diff --git a/packages/integrations/freebit/tsconfig.json b/packages/integrations/freebit/tsconfig.json index 4e5701a7..b8aa22c4 100644 --- a/packages/integrations/freebit/tsconfig.json +++ b/packages/integrations/freebit/tsconfig.json @@ -11,8 +11,6 @@ "composite": true, "tsBuildInfoFile": "./tsconfig.tsbuildinfo", "paths": { - "@customer-portal/domain": ["../domain/index.ts"], - "@customer-portal/domain/*": ["../domain/*"], "@customer-portal/integrations-freebit": ["./src"], "@customer-portal/integrations-freebit/*": ["./src/*"] } diff --git a/packages/integrations/whmcs/tsconfig.json b/packages/integrations/whmcs/tsconfig.json index 957d66a1..5e1e05f9 100644 --- a/packages/integrations/whmcs/tsconfig.json +++ b/packages/integrations/whmcs/tsconfig.json @@ -11,8 +11,6 @@ "composite": true, "tsBuildInfoFile": "./tsconfig.tsbuildinfo", "paths": { - "@customer-portal/domain": ["../domain/index.ts"], - "@customer-portal/domain/*": ["../domain/*"], "@customer-portal/integrations-whmcs": ["./src"], "@customer-portal/integrations-whmcs/*": ["./src/*"] }