Skip to content

Latest commit

 

History

History
121 lines (87 loc) · 3.8 KB

README.md

File metadata and controls

121 lines (87 loc) · 3.8 KB

@thi.ng/buffers

npm version npm downloads Mastodon Follow

Note

This is one of 199 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

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