sajmoni / nano-pool

A tiny TypeScript object pool

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nano-pool

A tiny TypeScript object pool

Allows you to pre-instantiate objects and then request them from a pool

✨ Features

  • Tiny bundle size
  • Written in TypeScript
  • Zero dependencies
  • Adheres to the Unity game engine's naming conventions

🔧 Example usage

import { createObjectPool } from 'nano-pool'

const poolSize = 10

const createObject = () => {
  const sprite = new Sprite()
  sprite.scale.set(4)
  return sprite
}

const objectPool = createObjectPool(poolSize, createObject)

const object1 = objectPool.get()
objectPool.release(object1)
objectPool.releaseAll()

📦 Install

npm install nano-pool

📰 API

createObjectPool<T>(size: number, createObject: (index: number) => T): ObjectPool
type ObjectPool<T> = {
  get: () => T
  release: (object: T) => void
  releaseAll: () => void
  countAll: () => number
}

size

The amount of objects to create

createObject

The function that will be used to create new objects


Rules

There are no more objects in the pool when take is called

In development: an error will be thrown.

In production: a new object is created and added to the pool.

An object already in the pool is released

In development: an error will be thrown.

In production: no-op.

About

A tiny TypeScript object pool

License:MIT License


Languages

Language:TypeScript 100.0%