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

0.1.3 • Public • Published

@thi.ng/buffers

npm version npm downloads Mastodon Follow

[!NOTE] This is one of 192 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: 606 bytes

Dependencies

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 - 2024 Karsten Schmidt // Apache License 2.0

Package Sidebar

Install

npm i @thi.ng/buffers

Weekly Downloads

21

Version

0.1.3

License

Apache-2.0

Unpacked Size

26.1 kB

Total Files

16

Last publish

Collaborators

  • thi.ng