import { DEFAULT_DELIMITER, DEFAULT_QUOTATION } from '../../core/constants'; import { CSVRecord, ParseBinaryOptions, ParseOptions } from '../../core/types'; /** * Base interface for Worker requests * @internal */ interface BaseParseRequest { id: number; useWASM?: boolean; resultPort?: MessagePort; } /** * Parse string request * @internal */ export interface ParseStringRequest
= readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest { type: "parseString"; data: string; options?: ParseOptions; } /** * Parse binary request * @internal */ export interface ParseBinaryRequest
= readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest { type: "parseBinary"; data: BufferSource; options?: ParseBinaryOptions; } /** * Parse string stream request * @internal */ export interface ParseStringStreamRequest
= readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest { type: "parseStream" | "parseStringStream"; data?: ReadableStream; stream?: ReadableStream; options?: ParseOptions; } /** * Parse binary stream request * @internal */ export interface ParseUint8ArrayStreamRequest
= readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> extends BaseParseRequest { type: "parseBinaryStream"; data?: ReadableStream; stream?: ReadableStream; options?: ParseBinaryOptions; } /** * Message types for Worker communication. * @internal */ export type ParseRequest
= readonly string[], Delimiter extends string = DEFAULT_DELIMITER, Quotation extends string = DEFAULT_QUOTATION> = ParseStringRequest | ParseBinaryRequest | ParseStringStreamRequest | ParseUint8ArrayStreamRequest; export interface ParseResponse
= readonly string[]> { id: number; result?: CSVRecord
[] | ReadableStream>; error?: string; } export interface ParseStreamResponse
= readonly string[]> { id: number; type: "record" | "done" | "error"; record?: CSVRecord
; error?: string; } /** * Worker context interface (unified for Web Workers and Worker Threads) * @internal */ export interface WorkerContext
= readonly string[]> { postMessage(message: ParseStreamResponse
): void; } /** * Helper to stream records incrementally to avoid memory issues. * @internal */ export declare const streamRecordsToMain:
= readonly string[]>(workerContext: WorkerContext
, id: number, records: AsyncIterableIterator> | Iterable>) => Promise; /** * Helper to stream records to a MessagePort (for TransferableStream strategy). * @internal */ export declare const streamRecordsToPort:
= readonly string[]>(port: MessagePort, records: AsyncIterableIterator> | Iterable>) => Promise; /** * Worker message handler for CSV parsing. * Handles different parsing strategies (regular, WASM, streaming). * * @internal */ export declare const createMessageHandler: (workerContext: WorkerContext) => (request: ParseRequest) => Promise; export {};