# stringstream

> Encode and decode streams into string streams

Latest version **1.0.0** (published 2018-08-23) · MIT license · 0 weekly downloads

## Install

```sh
npm install stringstream
pnpm add stringstream
yarn add stringstream
bun add stringstream
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.0 |
| Published | 2018-08-23 |
| First published | 2012-06-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=4.0.0 |
| Dependencies | 0 |
| Unpacked size | 10.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 27 |
| Author | Michael Hart |
| Maintainers | hichaelmart |

## Links

- npm: https://www.npmjs.com/package/stringstream
- Repository: https://github.com/mhart/StringStream
- Homepage: https://github.com/mhart/StringStream#readme
- Issues: https://github.com/mhart/StringStream/issues
- npm.io page: https://npm.io/package/stringstream

## Recent versions

- 1.0.0 (latest) — 2018-08-23
- 0.0.6 — 2018-05-17
- 0.0.5 — 2015-10-25
- 0.0.4 — 2013-01-21
- 0.0.3 — 2012-06-27
- 0.0.2 — 2012-06-24
- 0.0.1 — 2012-06-23
- 0.0.0 — 2012-06-23

## README

# Decode streams into strings without setEncoding

```js
const fs = require('fs')
const zlib = require('zlib')
const strs = require('stringstream')

const utf8Stream = fs.createReadStream('massiveLogFile.gz')
  .pipe(zlib.createGunzip())
  .pipe(strs('utf8'))

utf8Stream.on('data', str => console.log(`This will be a string: ${str}`))
```

## API

  - `strs(to, [options])` – creates a transform stream that converts the input into strings in `to` encoding (eg, `utf8`, `hex`, `base64`)
  - `strs(from, to, [options])` – creates a transform stream converts the input from strings in `from` encoding to strings in `to` encoding

`options` can be anything compatible with the standard Node.js [`new stream.Transform([options])` constructor](https://nodejs.org/api/stream.html#stream_new_stream_transform_options)

## NB: This library was originally written before Node.js [correctly encoded base64 strings from streams](https://github.com/nodejs/node/commit/061f2075cf81017cdb40de80533ba18746743c94)

Back in the day, calling `.setEncoding('base64')` on a readable stream didn't
align correctly, which was one of the main reasons I wrote this library –
however this hasn't been the case for a long time, so this library is
now really only useful in scenarios where you don't want to call
`.setEncoding()` for whatever reason.

It also handles input and output text encodings:

```js
// Stream from utf8 to hex to base64... Why not, ay.
const hex64Stream = fs.createReadStream('myFile.txt')
  .pipe(strs('utf8', 'hex'))
  .pipe(strs('hex', 'base64'))
```

Also deals with `base64` output correctly by aligning each emitted data
chunk so that there are no dangling `=` characters:

```js
const stream = fs.createReadStream('myFile.jpg').pipe(strs('base64'))

let base64Str = ''

stream.on('data', data => base64Str += data)
stream.on('end', () => {
  console.log('My base64 encoded file is: ' + base64Str)
  console.log('Original file is: ' + Buffer.from(base64Str, 'base64'))
})
```

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