1.0.0 • Published 5 years ago

cancelable-pipeline v1.0.0

Weekly downloads
205
License
ISC
Repository
github
Last release
5 years ago

cancelable-pipeline

npm version Build Status codecov

Cancelable stream.pipeline()

const {createReadStream, createWriteStream, promises: {stat}} = require('fs');
const cancelablePipeline = require('cancelable-pipeline');

cancelablePipeline(createReadStream('1GB-file.txt'), createWriteStream('dest0'), async () => {
  (await stat('dest0')).size; //=> 1000000000;
});

const cancel = cancelablePipeline(createReadStream('1GB-file.txt'), createWriteStream('dest1'), async () => {
  (await stat('dest1')).size; //=> 263192576, or something else smaller than 1000000000
});

setTimeout(() => cancel(), 1000);

Installation

Use npm.

npm install cancelable-pipeline

API

const cancelablePipeline = require('cancelable-pipeline');

cancelablePipeline(stream0 , stream1, stream2, ...)

stream0, stream1, stream2, ...: Stream
callback: Function
Return: Function

cancelablePipeline(streams , callback)

streams: Stream[]
callback: Function
Return: Function

The API is almost the same as stream.pipeline(). The only difference is cancelable-pipeline returns a Function which destroys all the piped Streams without passing any errors to the callback.

const cancel = cancelablePipeline([src, transform, anotherTransform, dest], err => {
  err; //=> undefined
});

cancel();

License

ISC License © 2017 - 2019 Shinnosuke Watanabe