barsa f68fb50638 Update TypeScript configurations and improve module imports
- Changed TypeScript target and library settings in tsconfig files to align with ESNext standards.
- Updated pnpm version in GitHub workflows for better dependency management.
- Modified Dockerfile to reflect the updated pnpm version.
- Adjusted import statements across various domain modules to include file extensions for consistency and compatibility.
- Cleaned up TypeScript configuration files for improved clarity and organization.
2025-12-10 15:22:10 +09:00

95 lines
2.3 KiB
TypeScript

/**
* Catalog Domain - Contract
*
* Constants and types for the catalog domain.
* Most types are derived from schemas (see schema.ts).
*/
// ============================================================================
// Salesforce Field Mapping (Provider-Specific, Not Validated)
// ============================================================================
/**
* Salesforce Product2 field mapping
* This is provider-specific and not validated at runtime
*/
export interface SalesforceProductFieldMap {
sku: string;
portalCategory: string;
portalCatalog: string;
portalAccessible: string;
itemClass: string;
billingCycle: string;
whmcsProductId: string;
whmcsProductName: string;
internetPlanTier: string;
internetOfferingType: string;
displayOrder: string;
bundledAddon: string;
isBundledAddon: string;
simDataSize: string;
simPlanType: string;
simHasFamilyDiscount: string;
vpnRegion: string;
}
// ============================================================================
// Pricing and Filter Types
// ============================================================================
/**
* Pricing tier for display purposes
*/
export interface PricingTier {
name: string;
price: number;
billingCycle: 'Monthly' | 'Onetime' | 'Annual';
description?: string;
features?: string[];
isRecommended?: boolean;
originalPrice?: number;
}
/**
* Standardized pricing display info
* Used for consistent price rendering across Frontend and BFF
*/
export interface CatalogPriceInfo {
display: string;
monthly: number | null;
oneTime: number | null;
currency: string;
}
/**
* Catalog filtering options
*/
export interface CatalogFilter {
category?: string;
priceMin?: number;
priceMax?: number;
search?: string;
}
// ============================================================================
// Re-export Types from Schema (Schema-First Approach)
// ============================================================================
export type {
CatalogProductBase,
CatalogPricebookEntry,
// Internet products
InternetCatalogProduct,
InternetPlanTemplate,
InternetPlanCatalogItem,
InternetInstallationCatalogItem,
InternetAddonCatalogItem,
// SIM products
SimCatalogProduct,
SimActivationFeeCatalogItem,
// VPN products
VpnCatalogProduct,
// Union type
CatalogProduct,
} from './schema.js';