string

String manipulation streams — split, replace, count, and measure text data.

Install

npm install @datastream/string

stringReadableStream Readable

Creates a Readable stream from a string input.

import { stringReadableStream } from '@datastream/string'

const stream = stringReadableStream('hello world')

stringLengthStream PassThrough

Counts the total character length of all chunks.

Options

OptionTypeDefaultDescription
resultKeystring"length"Key in pipeline result

Example

import { pipeline, createReadableStream } from '@datastream/core'
import { stringLengthStream } from '@datastream/string'

const length = stringLengthStream()
const result = await pipeline([
  createReadableStream('hello world'),
  length,
])

console.log(result)
// { length: 11 }

stringCountStream PassThrough

Counts occurrences of a substring across all chunks.

Options

OptionTypeDefaultDescription
substrstringSubstring to count
resultKeystring"count"Key in pipeline result

Example

import { pipeline, createReadableStream } from '@datastream/core'
import { stringCountStream } from '@datastream/string'

const count = stringCountStream({ substr: '\n' })
const result = await pipeline([
  createReadableStream('line1\nline2\nline3'),
  count,
])

console.log(result)
// { count: 2 }

stringSplitStream Transform

Splits streaming text by a separator, emitting one chunk per segment. Handles splits that cross chunk boundaries.

Options

OptionTypeDefaultDescription
separatorstringString to split on

Example

import { pipeline, createReadableStream, streamToArray, pipejoin } from '@datastream/core'
import { stringSplitStream } from '@datastream/string'

const river = pipejoin([
  createReadableStream('alice,bob,charlie'),
  stringSplitStream({ separator: ',' }),
])

const output = await streamToArray(river)
// ['alice', 'bob', 'charlie']

stringReplaceStream Transform

Replaces pattern matches in streaming text. Handles replacements that span chunk boundaries.

Options

OptionTypeDefaultDescription
patternstring \| RegExpPattern to search for
replacementstringReplacement string

Example

import { stringReplaceStream } from '@datastream/string'

stringReplaceStream({ pattern: /\t/g, replacement: ',' })

stringMinimumFirstChunkSize Transform

Buffers data until the first chunk meets a minimum size, then passes all subsequent chunks through unchanged.

Options

OptionTypeDefaultDescription
chunkSizenumber1024 (1KB)Minimum first chunk size in characters

stringMinimumChunkSize Transform

Buffers every chunk to meet a minimum size before emitting. Unlike stringMinimumFirstChunkSize which only buffers the first chunk then passes through, this continues buffering all subsequent chunks that are smaller than chunkSize.

Options

OptionTypeDefaultDescription
chunkSizenumber1024 (1KB)Minimum chunk size in characters

stringSkipConsecutiveDuplicates Transform

Skips consecutive duplicate string chunks.

import { stringSkipConsecutiveDuplicates } from '@datastream/string'

// Input chunks: 'a', 'a', 'b', 'a' → Output: 'a', 'b', 'a'