npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

ia-stream

v0.1.1

Published

Better streams for Node.js.

Readme

ia-stream

Streams in Node.js don't have the ability to seek; and you can only read the data in them once. This is majorly inconvient for operations like random access to a file.

The obvious solution is to just use fs methods directly, but this isn't ideal either — what if you need an abstraction where the data behind the stream can come from a place other than a file?

This package provides streams that are modeled after Streams in .NET, allowing random access / seeking, reading data more than once, and providing a Promise-based API.

API

Docs generated using docts

Class FileStream

Source code: <>

Methods:

new( ) FileStream <>
 ▪ fd FileHandle
 ▪ options FileStreamOptions
.seek( ) Promise<boolean> <>
Changes the position of the next read in the stream.
 ▪ position number
.read( ) Promise<Buffer> <>
Reads some bytes from the stream.
 ▪ length number
 ▫ exact? undefined | true | false
.readFrom( ) Promise<Buffer> <>
Combines seek and read.
 ▪ position number
 ▪ length number
 ▫ exact? undefined | true | false
.write( ) Promise<number> <>
Writes some data to the stream.
 ▪ data Buffer
.resize( ) Promise<boolean> <>
Resizes the source of this stream to a given number of bytes. Streams that
cannot be written to cannot be resized.
 ▪ length number
.close( ) Promise<void> <>
Closes this stream. Once it is closed, any underlying resources (memory buffers,
file handles) will be freed and this Stream will no longer be usable.
.substream( ) Promise<Stream> <>
Creates an independent Stream that operates on the same source material as this stream.
This sub-stream will be read-only.
.substream( ) Promise<Stream> <>
Creates an independent Stream that operates on the same source material as this stream.
This sub-stream will be read-only.
 ▪ from number
 ▪ to number

Class MemoryStream

Source code: <>

Methods:

new( ) MemoryStream <>
 ▪ options MemoryStreamOptionsWithData | MemoryStreamOptionsWithLength
.seek( ) Promise<boolean> <>
Changes the position of the next read in the stream.
 ▪ position number
.read( ) Promise<Buffer> <>
Reads some bytes from the stream.
 ▪ length number
 ▫ exact? undefined | true | false
.readFrom( ) Promise<Buffer> <>
Combines seek and read.
 ▪ position number
 ▪ length number
 ▫ exact? undefined | true | false
.write( ) Promise<number> <>
Writes some data to the stream.
 ▪ data Buffer
.resize( ) Promise<boolean> <>
Resizes the source of this stream to a given number of bytes. Streams that
cannot be written to cannot be resized.
 ▪ length number
.close( ) Promise<void> <>
Closes this stream. Once it is closed, any underlying resources (memory buffers,
file handles) will be freed and this Stream will no longer be usable.
.substream( ) Promise<Stream> <>
Creates an independent Stream that operates on the same source material as this stream.
This sub-stream will be read-only.
.substream( ) Promise<Stream> <>
Creates an independent Stream that operates on the same source material as this stream.
This sub-stream will be read-only.
 ▪ from number
 ▪ to number

Interface Stream

Source code: <>

Methods:

.seek( ) Promise<boolean> <>
Changes the position of the next read in the stream.
 ▪ position number The position to set the cursor to.
.read( ) Promise<Buffer> <>
Reads some bytes from the stream.
 ▪ length number The maximum number of bytes to return.
 ▫ exact? undefined | true | false If true, then this method will block until length bytes are available or fail.
.readFrom( ) Promise<Buffer> <>
Combines seek and read.
 ▪ position number The starting position to read from.
 ▪ length number The maximum number of bytes to return.
 ▫ exact? undefined | true | false If true, then this method will block until length bytes are available or fail.
.write( ) Promise<number> <>
Writes some data to the stream.
 ▪ data Buffer A Buffer containing the data to write.
.resize( ) Promise<boolean> <>
Resizes the source of this stream to a given number of bytes. Streams that
cannot be written to cannot be resized.
 ▪ length number The new length of this stream.
.close( ) Promise<void> <>
Closes this stream. Once it is closed, any underlying resources (memory buffers,
file handles) will be freed and this Stream will no longer be usable.
.substream( ) Promise<Stream> <>
Creates an independent Stream that operates on the same source material as this stream.
This sub-stream will be read-only.
.substream( ) Promise<Stream> <>
 ▪ from number
 ▪ to number
.asNodeStream( ) Duplex <>
Converts this stream into a Node.js-style stream.

Properties:

.position number
The current position of the cursor in the stream.
.length number
The length of the stream, in bytes.
.canWrite boolean
true if this stream can be written to.
.canRead boolean
true if this stream can be read from.
.canSeek boolean
true if this stream can be seeked within.
.isOpen boolean
true if this stream is currently open.

© 2019 Ibiyemi Abiodun (laptou) <[email protected]>