New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

self-stream

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

self-stream

self-stream is a small node module that streams your transformations to the same file.

  • 1.1.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1.8K
increased by27.65%
Maintainers
1
Weekly downloads
 
Created
Source

self-stream

js-standard-style Build Status

Sometimes you need to change something in a file and probably you will do:

const fs = require('fs')
fs.readFile('file.md', 'utf8', (readErr, data) => {
  if (readErr) return console.log(readErr)
  data = changeSomething(data)
  fs.writeFile('file.md', data, 'utf8', (writeErr) => {
    if (writeErr) return console.log(writeErr)
    console.log('done')
  })
})

And that's not a good thing, because you are loading the entire file in your working memory slowing down your application.
In the magic world of Nodejs for avoid this problem you can use streams. But as you probably know with streams you cannot read, transform and write the same file.
Here come to help self-stream, an "hack" solution to this problem.
The solution is not in-place, because in case of something fails during the transform process, you will not lose the original file.

Needs Node.js >= 4.4.1
If are using 4.4.1 <= Node.js < 5 you need --es_staging flag

Install

$ npm install self-stream --save

API

selfStream(filename, transform, callback)

filename: the file to change with the relative path
transform: is a function or an array of functions with all the transforms
callback: callback function

Example:

const selfStream = require('self-stream')
const through2 = require('through2')

const transform = through2(function (chunk, enc, cb) {
  for (var i = 0; i < chunk.length; i++) {
    if (chunk[i] === 97) chunk[i] = 122 // swap 'a' for 'z'
  }
  this.push(chunk)
  cb()
})

selfStream('file.md', transform, function (err) {
  if (err) return console.log(err)
})

As you can see in the source code self-stream uses pump to pipe all the streams and at the end it will rewrite the original file with the modified one.

Contributing

If you feel you can help in any way, be it with examples, extra testing, or new features please open a pull request or open an issue.

The code follows the Standard code style.
js-standard-style


License

The code is released under the MIT license.

The software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and non infringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

Keywords

FAQs

Package last updated on 14 Jul 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc