set version for npm release
This commit is contained in:
parent
582284a36b
commit
f5901f9111
3 changed files with 48 additions and 7 deletions
48
README.md
48
README.md
|
|
@ -2,11 +2,24 @@
|
|||
|
||||
An async tiny task queue (and related utilities), with zero dependencies. Attq
|
||||
provides a data structure that executes an asynchronous callback sequentially on
|
||||
a flexible list. It is designed to facilitate in-order client-server message
|
||||
passing with bells and whistles including batching, throttling, and configurable
|
||||
retries. **Work in progress.**
|
||||
a flexible list. It is generally designed to facilitate replaying ordered events
|
||||
from a client to a server and comes with bells and whistles including batching,
|
||||
throttling, and configurable retries.
|
||||
|
||||
## Example
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
npm install --save attq
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
### Basic Task Queue
|
||||
|
||||
The `AsyncTaskQueue` constructor takes a task handler callback, and items are
|
||||
added to the queue object with the `.push()` method. Additional options may be
|
||||
configured with methods such as `.onError()`, `.batchSize()`, and
|
||||
`.throttleMs()`.
|
||||
|
||||
```typescript
|
||||
import { AsyncTaskQueue } from "attq";
|
||||
|
|
@ -33,3 +46,30 @@ q.onError(() => {
|
|||
q.drain();
|
||||
});
|
||||
```
|
||||
|
||||
### Retries
|
||||
|
||||
Rather than build retry logic into the queue itself, Attq provides a
|
||||
`withRetry()` higher-order function which can be wrapped around the task
|
||||
handler. (If desired, `withRetry()` may be used independently of the task queue
|
||||
as well!)
|
||||
|
||||
```typescript
|
||||
import { AsyncTaskQueue, withRetry } from "attq";
|
||||
|
||||
let q = new AsyncTaskQueue<number>(
|
||||
// Defaults to 6 attempts with binary exponential backoff.
|
||||
withRetry((nums) => fetch(`/refine?macrodata=${nums.join(",")}`)),
|
||||
);
|
||||
|
||||
// To specify, for example, up to 3 attempts with a linear backoff:
|
||||
q = new AsyncTaskQueue<number>(
|
||||
withRetry(
|
||||
(nums) => fetch(`/refine?macrodata=${nums.join(",")}`),
|
||||
{
|
||||
attempts: 3,
|
||||
backoffMs: (attempt) => 1000 * attempt,
|
||||
},
|
||||
),
|
||||
);
|
||||
```
|
||||
|
|
|
|||
4
package-lock.json
generated
4
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
|||
{
|
||||
"name": "attq",
|
||||
"version": "0.1.0-beta.0",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "attq",
|
||||
"version": "0.1.0-beta.0",
|
||||
"version": "0.1.0",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@eslint/js": "^9.39.2",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "attq",
|
||||
"version": "0.1.0-beta.0",
|
||||
"version": "0.1.0",
|
||||
"description": "Async Tiny Task Queue",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
@ -8,6 +8,7 @@
|
|||
},
|
||||
"license": "MIT",
|
||||
"author": "Brent Schroeter (https://brentsch.com)",
|
||||
"files": ["dist", "LICENSE", "README.md"],
|
||||
"browser": "dist/index.min.js",
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue