Skip to content

NaughtySora/naughty-pool

Repository files navigation

Naughty Pool

license snyk npm version NPM Downloads NPM Downloads

Usage

  • Install: npm install naughty-pool
  • Require: const { Pool } = require('naughty-pool')

Types

  • constructor(factory: F, ...args: Parameters<F>);
  • allocate(min: number): this;
  • release(entity: ReturnType<F>): void;
  • capture(options?: CaptureOptions): Promise<ReturnType<F>>;
  • timeout(ms: number): this;
  • limit(max: number): this;
  • size: number;
  • free: number;
  • [Symbol.dispose](): void;
const BYTES = 8;
const MINUTE = 60 * 1000;
const factory = () => Buffer.alloc(BYTES);
const pool = new Pool(factory)
  .allocate(3)
  .limit(5)
  .timeout(MINUTE);

const buffer = await pool.capture();
buffer.set([1, 2, 3, 4]);
pool.release(buffer);

const signal = AbortSignal.timeout(1000);
const buffer = await pool.capture({ signal });

const { createPublicClient, http } = require('viem');
const { mainnet } = require('viem/chains');
const options = { chain: mainnet, transport: http("RPC") };
const clientPool = new Pool(createPublicClient, options).allocate(3);

const client = await clientPool.capture();
const blockNumber = await client.getBlockNumber();
clientPool.release(client);
  // Node >= 24.x
  {
    await using pool = new Pool(factory).allocate(2);
  } // disposed here

  // Node < 24.x
  {
    const pool = new Pool(factory).allocate(2);
    pool[Symbol.dispose](); // disposed here
  }

Part of the naughty stack

About

Nodejs async pool

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published