@thi.ng/buffers
TypeScript icon, indicating that this package has built-in type declarations

1.0.3 • Public • Published

@thi.ng/buffers

npm version npm downloads Mastodon Follow

[!NOTE] This is one of 200 standalone projects, maintained as part of the @thi.ng/umbrella monorepo and anti-framework.

🚀 Please help me to work full-time on these projects by sponsoring me on GitHub. Thank you! ❤️

About

General purpose and generic read/write buffer implementations with different behaviors/orderings.

The package provides different buffer implementations to control blocking behaviors and backpressure handling (aka attempting to write faster than values are being read, essentially a memory management issue).

Buffering behaviors

The following buffer types/behaviors are included, all accepting a max. capacity and all implementing the IReadWriteBuffer interface:

  • fifo: First in, first out ring buffer.
  • lifo: Last in, first out. Write behavior is the same as with fifo, reads are in reverse order (as the name indicates), i.e. the last value written will be the first value read (i.e. stack behavior).
  • sliding: Sliding window ring buffer. Whilst the buffer is at full capacity, new writes will first expunge the oldest buffered value (similar to LRU cache behavior). Read behavior is the same as for fifo.
  • dropping: Dropping value ring buffer. Whilst the buffer is at full capacity, new writes will be silently ignored. Read behavior is the same as for fifo.

Status

STABLE - used in production

Search or submit any issues for this package

Installation

yarn add @thi.ng/buffers

ESM import:

import * as buf from "@thi.ng/buffers";

Browser ESM import:

<script type="module" src="https://esm.run/@thi.ng/buffers"></script>

JSDelivr documentation

For Node.js REPL:

const buf = await import("@thi.ng/buffers");

Package sizes (brotli'd, pre-treeshake): ESM: 611 bytes

Dependencies

Note: @thi.ng/api is in most cases a type-only import (not used at runtime)

API

Generated API docs

TODO

Authors

If this project contributes to an academic publication, please cite it as:

@misc{thing-buffers,
  title = "@thi.ng/buffers",
  author = "Karsten Schmidt",
  note = "https://thi.ng/buffers",
  year = 2016
}

License

© 2016 - 2025 Karsten Schmidt // Apache License 2.0

Package Sidebar

Install

npm i @thi.ng/buffers

Weekly Downloads

63

Version

1.0.3

License

Apache-2.0

Unpacked Size

27.3 kB

Total Files

16

Last publish

Collaborators

  • thi.ng