@playstack/inventory
Transactionally correct finite inventory, locations, reservations, terminal stock transitions, and adjustments.
Pro. Covered by the Playstack Pro License. Registry access is required; check preview availability before installing. See package access.
@playstack/inventory answers whether a quantity can be promised now. Catalog, purchasing, payments, returns, and fulfillment remain outside its boundary.
import { createInventory } from '@playstack/inventory'
const inventory = createInventory({ persistence, events, ids, clock })
await inventory.reserve({
reservationId: `order:${orderId}`,
expiresAt: Date.now() + 30 * 60_000,
lines: [{ itemId: 'stand-black', locationId: 'default', quantity: 1 }],
idempotencyKey: `order:${orderId}:inventory`,
})Multi-line reservations are all-or-nothing. Commit consumes on-hand stock; release and expiration restore availability. Repeated identical commands are no-ops, conflicting key reuse is rejected, and refunds never restock automatically.
Operations may join a compatible application transaction so an order and reservation commit atomically. @playstack/inventory/prisma uses PostgreSQL locking, while @playstack/inventory/testing supplies a serialized in-memory adapter.
Install
After confirming preview access, install the package at your application's shared Playstack version:
npm install --save-exact @playstack/inventory@0.1.0-beta.1Check the peer requirements below before choosing a runtime or provider.
API entry points and requirements
Reference snapshot: @playstack/inventory@0.1.0-beta.1. Import only the entry point your runtime needs. Paths below are relative to the installed package; use Go to Definition in your editor to inspect exact parameters, return types and overloads. Do not import the declaration-file paths directly.
| Public entry point | Declaration file |
|---|---|
@playstack/inventory | ./dist/index.d.ts |
@playstack/inventory/errors | ./dist/errors.d.ts |
@playstack/inventory/prisma | ./dist/prisma.d.ts |
@playstack/inventory/testing | ./dist/testing.d.ts |
@playstack/inventory/package.json | No TypeScript declaration (asset or metadata export). |
Node.js engine requirement: >=20. This is not a claim that every entry point works in browsers or Workers.
Peer dependencies
This package declares no peer dependencies. Its ordinary dependencies are resolved by the package manager.
For a complete first program, start with Getting started. For API lookup and partial-example conventions, see Reading the reference. Provider failures, lifecycle requirements and application responsibilities remain described in the guide above; types alone do not establish production safety.