StringStream
Encode and decode streams into string streams in node.js
Install / Use
/learn @mhart/StringStreamREADME
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 intoencoding (eg,utf8,hex,base64)strs(from, to, [options])– creates a transform stream converts the input from strings infromencoding to strings intoencoding
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'))
})
Related Skills
node-connect
345.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
106.4kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
345.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
345.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
