Skip to content

@nextvm/core

The framework core. Module system, dependency injection, lifecycle hooks, RPC, state management, permissions, error boundaries, tick scheduler, profiler, character system, structured logging.

Install

bash
pnpm add @nextvm/core zod

Quick API tour

typescript
import {
  // Module system
  defineModule,
  defineExports,
  ModuleLoader,
  // RPC
  defineRouter,
  procedure,
  RpcRouter,
  RpcError,
  // State
  defineState,
  StateBagBackend,
  // Permissions
  PermissionsService,
  // Error boundaries
  ErrorBoundary,
  ErrorCounter,
  // Tick + profiler
  TickScheduler,
  Profiler,
  // Character system
  CharacterService,
  // Logging
  createLogger,
  // Re-export of Zod for module-author convenience
  z,
} from '@nextvm/core'

Module System

SymbolPurposeSee
defineModule(definition)Define a module's wiringConcept
defineExports(exports)Type-anchor a module's public surfaceDI
ModuleLoaderTopologically resolves and initializes modulesConcept
DIContainerThe DI store backing ctx.inject()Concept

ModuleLoader exposes getEventBus(), getTickScheduler(), getProfiler(), getErrorBoundary(), and getContainer() for the runtime bootstrap layer to drive the frame loop and inspect state.

RPC

SymbolPurposeSee
defineRouter(routes)Build a typed routerConcept
procedureFluent builder for one procedure (.input/.auth/.query/.mutation)
RpcRouterServer-side dispatcher
createClient<T>(namespace, transport)Client-side typed proxy
RpcErrorTyped error with codes (VALIDATION_ERROR, AUTH_ERROR, ...)
RateLimiterToken-bucket rate limiter (per player + procedure)

State Management

SymbolPurposeSee
defineState(name, shape)Build a typed character-scoped state containerConcept
StateStoreThe class returned by defineState
StateBagBackendPersists writes via FiveM Global State Bags

Permissions

SymbolPurposeSee
PermissionsServiceRBAC on top of FiveM ACEConcept

Error Boundaries

SymbolPurposeSee
ErrorBoundarytry/catch wrapper + error counterConcept
ErrorCounterRolling-window error counter

Tick + Profiler

SymbolPurposeSee
TickSchedulerManaged frame loop with priority + budget controlConcept
ProfilerRecords duration samples per (kind, module, name)Error Boundaries

Character System

SymbolPurposeSee
CharacterServiceUser + character lifecycle, sessions, switchingConcept
CharacterRepositoryPort for the persistence layer (implemented by @nextvm/db)

Logger

SymbolPurpose
createLogger(name)Create a structured JSON logger scoped to a module
LoggerThe class returned by createLogger

Integrations

SymbolPurposeSee
bindTxAdmin(binder, deps)Wire txAdmin events into NextVM lifecycle@nextvm/core/integrations/txadmin

Tests

packages/core/__tests__/ contains 89 tests covering every public class. Run them via pnpm --filter @nextvm/core test.

Released under the LGPL-3.0 License.