/** * Freebit Provider Utilities * * Provider-specific utilities for Freebit SIM API integration */ /** * Normalize account identifier (remove formatting) * Removes all non-digit characters from account string */ export function normalizeAccount(account: string): string { return account.replace(/[^0-9]/g, ""); } /** * Validate account format (10-11 digits for Japanese phone numbers) */ export function validateAccount(account: string): boolean { const normalized = normalizeAccount(account); return /^\d{10,11}$/.test(normalized); } /** * Format date for Freebit API (YYYYMMDD) */ export function formatDateForApi(date: Date): string { const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); return `${year}${month}${day}`; } /** * Parse date from Freebit API format (YYYYMMDD) * @returns Date object or null if invalid format */ export function parseDateFromApi(dateString: string): Date | null { if (!/^\d{8}$/.test(dateString)) return null; const year = parseInt(dateString.substring(0, 4), 10); const month = parseInt(dateString.substring(4, 6), 10) - 1; // Month is 0-indexed const day = parseInt(dateString.substring(6, 8), 10); return new Date(year, month, day); }