/** * CSV Dynamic Typing - Automatic Type Conversion * * Functions for converting CSV string values to appropriate JavaScript types. * Supports boolean, number, null detection with customizable per-column config. */ import type { DynamicTypingConfig, CastDateConfig } from "../types.js"; /** * Try to parse a string as an ISO date. * Returns the Date if successful, or null if not a valid date. * * Supported formats: * - YYYY-MM-DD * - YYYY-MM-DDTHH:mm:ss * - YYYY-MM-DD HH:mm:ss * - YYYY-MM-DDTHH:mm:ssZ * - YYYY-MM-DDTHH:mm:ss.SSSZ * - YYYY-MM-DDTHH:mm:ss+HH:mm */ export declare function tryParseDate(value: string): Date | null; /** * Check if castDate config enables date parsing for a column */ export declare function shouldCastDate(castDate: CastDateConfig | undefined, columnName: string | number | undefined): boolean; /** * Convert a string value to its appropriate JavaScript type. * Used internally by dynamicTyping feature. * * Conversion rules: * - Empty string → "" (unchanged) * - "true"/"TRUE"/"True" → true * - "false"/"FALSE"/"False" → false * - "null"/"NULL" → null * - Numeric strings → number (int or float) * - Everything else → original string * * Special cases: * - Leading zeros (e.g., "007") → preserved as string (for zip codes, IDs) * - "Infinity", "-Infinity", "NaN" → corresponding number values */ export declare function convertValue(value: string): string | number | boolean | null; /** * Apply dynamic typing to a single field value * * @param value - The string value to convert * @param columnConfig - Column-specific config (true, false, or custom function) * @returns Converted value */ export declare function applyDynamicTyping(value: string, columnConfig: boolean | ((value: string) => unknown)): unknown; /** * Apply dynamic typing to an entire row (object form). * * Performance: Converts values IN PLACE to avoid allocating a new object. * The input object is mutated and returned with converted values. * * @param row - Row object with string values (will be mutated) * @param dynamicTyping - DynamicTyping configuration * @param castDate - CastDate configuration for date parsing * @returns The same row object with converted values */ export declare function applyDynamicTypingToRow(row: Record, dynamicTyping: DynamicTypingConfig, castDate?: CastDateConfig): Record; /** * Apply dynamic typing to an array row * * @param row - Row array with string values * @param headers - Header names (for per-column config lookup) * @param dynamicTyping - DynamicTyping configuration * @param castDate - CastDate configuration for date parsing * @returns New row array with converted values */ export declare function applyDynamicTypingToArrayRow(row: string[], headers: string[] | null, dynamicTyping: DynamicTypingConfig, castDate?: CastDateConfig): unknown[];