Main class that provides a unified API for phone number processing.
new Numsy(options?: NumsyOptions)
Parameters:
options (optional): Configuration options
enableLogging?: boolean - Enable console logging (default: true)logLevel?: 'log' | 'error' | 'warn' | 'debug' | 'verbose' - Log level (default: ‘log’)throwOnError?: boolean - Throw errors instead of returning error objects (default: false)Validates a single phone number.
Returns: Object with validation details
original: string - Original inputsanitized: string - Cleaned phone numberisValid: boolean - Validation resultreason?: string - Reason for failure (if invalid)Quick validation check.
Cleans and normalizes phone number.
Formats phone number with optional country code.
Validates multiple phone numbers at once.
Extracts all phone numbers from text.
Parses CSV or Excel file.
Processes file with phone validation and generates output files.
Writes data to CSV file.
Detects phone number column from data.
Handles file parsing operations.
new Parser(options?: ParserOptions)
Same file-related methods as Numsy class.
Handles phone number validation.
new PhoneValidator(options?: NumsyOptions)
Same validation methods as Numsy class.
Handles file processing with validation.
new FileProcessor(options?: ProcessingOptions)
Options:
outputDir?: string - Output directory (default: ‘./output’)preserveOriginalColumns?: boolean - Keep original columns (default: true)validateNumbers?: boolean - Validate phone numbers (default: true)interface NumsyOptions {
enableLogging?: boolean;
logLevel?: 'log' | 'error' | 'warn' | 'debug' | 'verbose';
throwOnError?: boolean;
}
interface PhoneValidationResult {
original: string;
sanitized: string;
isValid: boolean;
reason?: string;
}
interface MultipleNumbersResult {
originalValue: string;
extractedNumbers: string[];
validNumbers: string[];
invalidNumbers: string[];
}
interface ProcessingResult {
totalRecords: number;
validRecords: number;
invalidRecords: number;
phoneColumn: string;
zipFilePath: string;
validFilePath: string;
invalidFilePath: string;
analyticsFilePath: string;
analytics: ProcessingAnalytics;
}
Pure utility functions exported for direct use:
sanitizePhoneNumber(phone: string): stringvalidatePhoneNumber(phone: string): PhoneValidationResultextractPhoneNumbers(text: string): string[]isValidIndianMobile(phone: string): booleanformatPhoneWithCountryCode(phone: string): stringnormalizeDataRows(data: ParsedDataRow[]): ParsedDataRow[]detectPhoneColumn(data: ParsedDataRow[]): string | nullremoveDuplicates(data: ParsedDataRow[], keyField: string): ParsedDataRow[]filterRows(data: ParsedDataRow[], predicate: Function): ParsedDataRow[]isNonEmptyString(value: any): booleanisValidNumber(value: any): booleanisValidArray(value: any): booleanisDigitsOnly(value: string): booleanCustom error class for application errors:
class AppError extends Error {
constructor(
public message: string,
public code?: string,
public details?: any
)
}
interface ErrorResponse {
success: false;
error: string;
code?: string;
details?: any;
}
import { Numsy, AppError } from 'numsy';
try {
const numsy = new Numsy({ throwOnError: true });
await numsy.processFile('./data.csv');
} catch (error) {
if (error instanceof AppError) {
console.error(`Error [${error.code}]: ${error.message}`);
}
}