npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@sciurus/state

v0.0.7

Published

Finite state machines for Sciurus

Downloads

4

Readme

@sciurus/state

Finite state machines for the Sciurus Entity Component System framework.

Overview

@sciurus/state provides a robust state management system for Sciurus applications. It enables you to define, transition between, and react to state changes in a type-safe and efficient manner. The package implements state-scoped entities and events, ensuring proper cleanup during state transitions.

Architecture

The state package implements a comprehensive state management system with several key components:

State System

The core state management system handles state transitions and lifecycle:

  • State: Resource containing the current state value
  • NextState: Resource for requesting state transitions
  • StateTransitionEvent: Event triggered during state transitions
  • StatesPlugin: Plugin that sets up the state transition infrastructure

State Types

Different types of states for various use cases:

  • FreelyMutableState: Basic states that can be changed directly
  • ComputedStates: States that are computed based on other states
  • SubStates: States with parent-child relationships

State-Scoped Systems

Systems for managing entities and events tied to specific states:

  • State-Scoped Entities: Entities that are automatically cleaned up when exiting a state
  • State-Scoped Events: Events that are automatically cleared when exiting a state

Schedule System

Schedules for controlling when state-related code executes:

  • StateTransition: Main schedule for handling state transitions
  • OnEnter/OnExit: Schedules that run when entering or exiting specific states
  • StateTransitionSteps: Ordered steps for the state transition process

Core Features

  • Type-Safe State Management: Define states with full type safety using enums
  • Declarative Transitions: Simple API for state transitions with automatic event dispatching
  • Automatic Cleanup: State-scoped entities and events are automatically cleaned up during transitions
  • Hierarchical States: Support for computed states and sub-states for complex state machines
  • Transition Hooks: Run code when entering or exiting specific states
  • App Integration: Seamless integration with the Sciurus App system

License

MIT