Skip to content

dex4er/js-promise-writable

Repository files navigation

promise-writable

GitHub CI Trunk Check Coverage Status npm

This module allows conversion Writable stream into its promisified version, which returns Promise object fulfilled when open, close, pipe, unpipe, finish or error events occurred.

Requirements

This module requires Node >= 16.

Installation

npm install promise-writable

Additionally for Typescript:

npm install -D @types/node

Usage

import PromiseWritable from "promise-writable"

constructor

const promiseWritable = new PromiseWritable(stream)

PromiseWritable object requires Writable object to work.

Example:

import PromiseWritable from "promise-writable"
import fs from "node:fs"

const stream = fs.createWriteStream("/tmp/test.txt")
const promiseWritable = new PromiseWritable(stream)

stream

const stream = promiseWritable.stream

Original stream object.

Example:

console.log(promiseWritable.stream.flags)

write

const written = await promiseWritable.write(chunk)

This method returns Promise which is fulfilled when the stream accepted a chunk (write method returned that stream is still writable or drain event occured) or stream is ended (finish event).

Promise resolves to number that counts written bytes.

Example:

const written = await promiseWritable.write(new Buffer("foo"))

writeAll

const total = await promiseWritable.writeAll(content, chunkSize)

This method returns Promise which is fulfilled when the stream accepts content. This method writes the content chunk by chunk. The default chunk size is 64 KiB.

Promise resolves to a number that counts written bytes.

Example:

const total = await promiseWritable.writeAll(new Buffer("foobarbaz"), 3)

once

await promiseWritable.once(event)

This method returns Promise which is fulfilled when stream emits event. The result of this event is returned.

Promise resolves to undefined value if the stream is already closed or destroyed.

Example:

const fd = await promiseWritable.once("open")
process.stdin(promiseWritable.stream)

await promiseWritable.once("close")

const promise = promiseWritable.once("pipe")
process.stdin.pipe(promiseWritable.stream)
const src = await promise

const promise = promiseWritable.once("unpipe")
process.stdin.unpipe(promiseWritable.stream)
const src = await promise

end

await promiseWritable.end()

This method ends the stream and returns Promise which is fulfilled when stream is finished. No value is returned.

destroy

promiseWritable = promiseWritable.destroy()

This method calls destroy method on stream and cleans up all own handlers.

The method returns this object.

See also

PromiseReadable, PromiseDuplex, PromiseSocket, PromisePiping.

License

Copyright (c) 2017-2024 Piotr Roszatycki mailto:piotr.roszatycki@gmail.com

MIT