# readline-transform

> Transform stream to read line-by-line and write a string

Latest version **2.0.0** (published 2025-02-07) · MIT license · 0 weekly downloads

## Install

```sh
npm install readline-transform
pnpm add readline-transform
yarn add readline-transform
bun add readline-transform
```

## Health

**Score 55/100 (C)** — status: stable.

Positive: has types; esm support; no vulnerabilities; high maintenance score; high quality score.

Warnings: low downloads.

Negative: stale.

## Facts

| | |
|---|---|
| Version | 2.0.0 |
| Published | 2025-02-07 |
| First published | 2017-11-29 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Node | >=18 |
| Dependencies | 0 |
| Unpacked size | 7.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 4 |
| Author | Toshimitsu Takahashi |
| Maintainers | tilfin |
| Keywords | stream, transform, readline, byline |

## Links

- npm: https://www.npmjs.com/package/readline-transform
- Repository: https://github.com/tilfin/readline-transform
- Homepage: https://github.com/tilfin/readline-transform#readme
- Issues: https://github.com/tilfin/readline-transform/issues
- npm.io page: https://npm.io/package/readline-transform

## Alternatives

- [byte-size](https://npm.io/package/byte-size.md) — 2.1M weekly downloads
- [speed-limiter](https://npm.io/package/speed-limiter.md) — 16.0K weekly downloads
- [@powersync/node](https://npm.io/package/@powersync/node.md) — 10.9K weekly downloads
- [@ledgerhq/coin-cardano](https://npm.io/package/@ledgerhq/coin-cardano.md) — 1.0K weekly downloads
- [@jayesol/jayeson.lib.streamfinder](https://npm.io/package/@jayesol/jayeson.lib.streamfinder.md) — 1.0K weekly downloads

## Recent versions

- 2.0.0 (latest) — 2025-02-07
- 1.0.0 — 2019-08-07
- 0.9.0 — 2017-11-29

## README

# ReadlineTransform

[![npm](https://img.shields.io/npm/v/readline-transform.svg)](https://www.npmjs.com/package/readline-transform)
[![Node](https://img.shields.io/node/v/readline-transform.svg)]()
[![License](https://img.shields.io/github/license/tilfin/readline-transform.svg)]()
[![dependencies Status](https://david-dm.org/tilfin/readline-transform/status.svg)](https://david-dm.org/tilfin/readline-transform)
[![Build Status](https://travis-ci.org/tilfin/readline-transform.svg?branch=master)](https://travis-ci.org/tilfin/readline-transform)
[![Coverage Status](https://coveralls.io/repos/github/tilfin/readline-transform/badge.svg?branch=master)](https://coveralls.io/github/tilfin/readline-transform?branch=master)

Reading String or Buffer content from a Readable stream and writing each line which ends without line break as object

## Install

```
$ npm install -save readline-transform
```

## How to Use

### Create a ReadlineTransform

**new ReadlineTransform(options)**

* `options` `<Object>`
  * `breakMatcher` is the regular expression to split content by line break for `str.split()`. (default: `/\r?\n/`)
  * `ignoreEndOfBreak` is boolean. if content ends with line break, ignore last empty line. (default: `true`)
  * `skipEmpty` is boolean. if line is empty string, skip it (default: `false`)

## Examples

### CommonJS 

```javascript
const { PassThrough } = require('stream');
const { ReadlineTransform } = require('readline-transform');

const readStream = new PassThrough();
const transform = new ReadlineTransform({ skipEmpty: true });
const writeStream = new PassThrough({ objectMode: true });

writeStream.on('data', (line) => {
  console.log(line);
}).on('finish', () => {
  console.log('<<< all done >>>');
});

readStream.pipe(transform).pipe(writeStream);

readStream.write(new Buffer('foo\nba'));
readStream.write(new Buffer('r\r\n\n\r'));
readStream.end(new Buffer('\nbaz'));
```

### ES Module 

```javascript
import fs from 'node:fs';
import { PassThrough } from 'node:stream'; 
import { ReadlineTransform } from 'readline-transform';

const readStream = new PassThrough();
const transform = new ReadlineTransform({ skipEmpty: true });
const writeStream = new PassThrough({ objectMode: true });

writeStream.on('data', (line) => {
  console.log(line);
}).on('finish', () => {
  console.log('<<< all done >>>');
});

readStream.pipe(transform).pipe(writeStream);

readStream.write(new Buffer('foo\nba'));
readStream.write(new Buffer('r\r\n\n\r'));
readStream.end(new Buffer('\nbaz'));
```

### Console output

```
$ node example.js
foo
bar
baz
<<< all done >>>
```

---
_Source: https://npm.io/package/readline-transform · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
