Packages
All packages are published under the @studnicky scope to the GitHub Package Registry.
@studnicky:registry=https://npm.pkg.github.comPublic path contract
Each package root exports its portable API. A package publishes ./interfaces for public substitution contracts, ./entities for canonical structured data, and platform entrypoints such as ./browser only when the runtime implementation differs. Construct stateful primitives through Class.create(config) and invoke their direct operation methods. Composition packages do not proxy dependency functionality; import dependency-owned contracts from that dependency's public entrypoint.
See the Composition Contract and Package Registry for the workspace-wide rules and current platform-parity status.
Concurrency
| Package | Description |
|---|---|
| @studnicky/retry | Generic async retry with extensible error classification and backoff strategies |
| @studnicky/throttle | Sliding-window concurrency throttle with adaptive limits and abort support |
| @studnicky/mutex | Key-based async mutual exclusion with queue and timeout support |
| @studnicky/batch | Batch concurrent execution: process items in controlled parallel groups |
| @studnicky/concurrency | Keyed async channels, semaphore, and coalesce primitives |
| @studnicky/file-lock | Process-level advisory file locking |
| @studnicky/virtual-fs | In-memory synchronous filesystem primitive with browser compatibility |
| @studnicky/signal | Instance-based AbortSignal composition and timeout utilities |
| @studnicky/idempotency-guard | Idempotency key guard composing cache, concurrency, and json: replay, coalesce, and conflict detection |
| @studnicky/memoize | Pure function memoization composing cache and concurrency: LRU+TTL result caching with in-flight call dedup |
| @studnicky/bounded-dispatcher | Bounded work dispatch pattern composing concurrency's Semaphore, event-bus, and scheduler |
| @studnicky/keyed-work-gate | Keyed single-flight and serialized work gate composing mutex and concurrency's Coalesce |
| @studnicky/keyed-rate-limiter | Per-key rate limiting composing cache and resilience, generic over an injectable rate-limiting strategy |
Time
| Package | Description |
|---|---|
| @studnicky/clock | Wall-clock and monotonic time with injectable providers for deterministic testing |
| @studnicky/scheduler | Real-time and virtual (min-heap) scheduler primitives |
| @studnicky/timing | High-resolution operation timing tracker using process.hrtime.bigint() |
State & Flow
| Package | Description |
|---|---|
| @studnicky/context | Per-request async context isolation using AsyncLocalStorage |
| @studnicky/fsm | Abstract finite state machine base class with effect interpreter |
| @studnicky/pipeline | Generic typed async pipeline for sequential context transforms |
| @studnicky/paginator | Cursor/page-list state tracker for paginated data sources |
| @studnicky/process-kit | Reducer-with-effects process pattern composing fsm and scheduler |
| @studnicky/store | Observable state container with interchangeable in-memory and browser-native persistence |
| @studnicky/strata-store-kit | Ordered store composition that keeps cache and durable browser state synchronized |
| @studnicky/visible-range | Pure index/offset arithmetic for computing the visible item range of a virtualized list |
| @studnicky/flag-evaluator | Local deterministic feature-flag evaluation with percentage rollout and observability hooks |
Data
| Package | Description |
|---|---|
| @studnicky/cache | LRU cache with optional TTL and capacity bounds |
| @studnicky/entity-store | Normalized, ID-indexed entity collection with CRUD operations and O(1) lookup |
| @studnicky/json | JSON/object value-tools: deep merge, clone, equal, freeze, patch, hash, path, sort |
| @studnicky/types | Shared zero-runtime utility types, type guards, and predicate helpers |
| @studnicky/drilldown | Deterministic multi-level grouping, faceting, and sorting over arbitrary record data |
| @studnicky/filters | Composable declarative filtering primitives |
| @studnicky/config | Configuration validation and clamping utilities |
Matching & Routing
| Package | Description |
|---|---|
| @studnicky/matching | Deterministic normalization, encoding, extraction, matching, scoring, and candidate-source primitives |
| @studnicky/matching-filters | Optional one-operation filter adapters for deterministic matching scores |
| @studnicky/semantic-matching | Provider-neutral contracts for vectorization, vector search, reranking, classification, and bounded adjudication |
| @studnicky/topic-router | Pattern-based multi-subscriber event fan-out |
| @studnicky/topic-router-models | Model-evidence mapping contracts for builder-selected topic delivery |
I/O & Observability
| Package | Description |
|---|---|
| @studnicky/event-bus | Publish/subscribe event bus with backpressure-aware queues |
| @studnicky/fetch | Professional HTTP client with timeout, override hooks, and configured clients |
| @studnicky/logger | Pluggable logging interface with Pino wrapper, child loggers, and structured metadata |
| @studnicky/errors | Standardized error hierarchy serializing to RFC 9457 Problem Details |
| @studnicky/request-executor | Composes fetch, retry, signal, timing, and context into a one-shot request execution pattern |
| @studnicky/resilience | Circuit breaker, token bucket, and dead-letter queue primitives |
| @studnicky/sliding-window-limiter | Sliding-window rate limiter — exact timestamp-log or approximate blended-counter algorithm |
| @studnicky/boundary-kit | Composes throttle, circuit breaker, and retry into a fixed-order boundary call pattern |
| @studnicky/health-registry | Named async health-check registry with worst-status-wins aggregation |
| @studnicky/system | CPU/GPU/memory/platform detection for worker sizing |
| @studnicky/worker-pool | Bounded node:worker_threads pool that fans work items across workers with a typed message envelope and per-task timeout |
Buffers
| Package | Description |
|---|---|
| @studnicky/circular-buffer | Generic circular buffer with O(1) push and shift |
| @studnicky/sample-buffer | Fixed-capacity numeric sample buffer with percentile calculation |
Foundation
| Package | Description |
|---|---|
| @studnicky/eslint-config | Shared ESLint flat config for @studnicky packages |
| @studnicky/intake-kit | Generic boundary-crossing primitives shared by every schema-backed entity engine |