/** Options for {@linkcode TextLineStream}. */ import * as dntShim from "../../../../../_dnt.shims.js"; export interface TextLineStreamOptions { /** * Allow splitting by `\r`. * * @default {false} */ allowCR?: boolean; } /** * Transform a stream into a stream where each chunk is divided by a newline, * be it `\n` or `\r\n`. `\r` can be enabled via the `allowCR` option. * * If you want to split by a custom delimiter, consider using {@linkcode TextDelimiterStream}. * * @example JSON Lines * ```ts * import { TextLineStream } from "@std/streams/text-line-stream"; * import { toTransformStream } from "@std/streams/to-transform-stream"; * import { assertEquals } from "@std/assert"; * * const stream = ReadableStream.from([ * '{"name": "Alice", "age": ', * '30}\n{"name": "Bob", "age"', * ": 25}\n", * ]); * * type Person = { name: string; age: number }; * * // Split the stream by newline and parse each line as a JSON object * const jsonStream = stream.pipeThrough(new TextLineStream()) * .pipeThrough(toTransformStream(async function* (src) { * for await (const chunk of src) { * if (chunk.trim().length === 0) { * continue; * } * yield JSON.parse(chunk) as Person; * } * })); * * assertEquals( * await Array.fromAsync(jsonStream), * [{ "name": "Alice", "age": 30 }, { "name": "Bob", "age": 25 }], * ); * ``` * * @example Allow splitting by `\r` * * ```ts * import { TextLineStream } from "@std/streams/text-line-stream"; * import { assertEquals } from "@std/assert"; * * const stream = ReadableStream.from([ * "CR\rLF", * "\nCRLF\r\ndone", * ]).pipeThrough(new TextLineStream({ allowCR: true })); * * const lines = await Array.fromAsync(stream); * * assertEquals(lines, ["CR", "LF", "CRLF", "done"]); * ``` */ export declare class TextLineStream extends dntShim.TransformStream { #private; /** * Constructs a new instance. * * @param options Options for the stream. */ constructor(options?: TextLineStreamOptions); } //# sourceMappingURL=text_line_stream.d.ts.map