stringstream

WebJar for stringstream

License

License

MIT
GroupId

GroupId

org.webjars.npm
ArtifactId

ArtifactId

stringstream
Last Version

Last Version

0.0.6
Release Date

Release Date

Type

Type

jar
Description

Description

stringstream
WebJar for stringstream
Project URL

Project URL

http://webjars.org
Source Code Management

Source Code Management

https://github.com/mhart/StringStream

Download stringstream

How to add to project

<!-- https://jarcasting.com/artifacts/org.webjars.npm/stringstream/ -->
<dependency>
    <groupId>org.webjars.npm</groupId>
    <artifactId>stringstream</artifactId>
    <version>0.0.6</version>
</dependency>
// https://jarcasting.com/artifacts/org.webjars.npm/stringstream/
implementation 'org.webjars.npm:stringstream:0.0.6'
// https://jarcasting.com/artifacts/org.webjars.npm/stringstream/
implementation ("org.webjars.npm:stringstream:0.0.6")
'org.webjars.npm:stringstream:jar:0.0.6'
<dependency org="org.webjars.npm" name="stringstream" rev="0.0.6">
  <artifact name="stringstream" type="jar" />
</dependency>
@Grapes(
@Grab(group='org.webjars.npm', module='stringstream', version='0.0.6')
)
libraryDependencies += "org.webjars.npm" % "stringstream" % "0.0.6"
[org.webjars.npm/stringstream "0.0.6"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

There are no modules declared in this project.

Decode streams into strings without setEncoding

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

NB: This library was originally written before Node.js correctly encoded base64 strings from streams

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:

// 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:

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'))
})

Versions

Version
0.0.6
0.0.5
0.0.4