- Install:
npm install naughty-pool - Require:
const { Pool } = require('naughty-pool')
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
}