/** * Shared types for JSON threader implementations. * * @packageDocumentation */ export type JsonValue = | string | number | boolean | null | JsonValue[] | { [key: string]: JsonValue }; export interface FetchRequest { url: string; payload: JsonValue; timeout?: number; headers?: Record; } /** * Common interface for all JSON threader implementations. */ export interface IJsonThreader { readonly stats: { pending: number; queued: number; available: number; total: number; processed: number; failed: number; }; parse(json: string): Promise; parseBuffer(buffer: ArrayBuffer): Promise; stringify(data: JsonValue): Promise; fetch(request: FetchRequest): Promise; terminate(): Promise; }