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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@rbxts/rokux

v0.0.5

Published

(Inspired by Rodux) This is a small package which manages states. The reason why I am creating my own state machine is simply because I wanted to. It is ultra lightweight, so don't expect too many features.

Downloads

4

Readme

Rokux

An ultra lightweight single-truth state manager inspired by Rodux.

Motivation

After reading through documents and API references, I found out that Rodux is a straightforward module. I've always trying to create a simple package that helps people create game.

And because of some personal needs, I realized that without creating my own module, it is not possible for me to find a module that fulfills my requirements.

Samples

These are the current objects in the namespace.

import Rokux from "@rbxts/Rokux";

//Action Definitions
interface IEatCookie extends Rokux.Action<"EatCookie"> {}
type IActions = IEatCookie & Rokux.AnyAction;

//State Definitions
interface IState {
 Cookies: number;
}

const DefaultState: IState = { Cookies: 10 };

//Middleware, it's readonly which means you shouldn't yield inside it.
const createMiddleware = (): Rokux.ReadonlyMiddleware<IState, IActions> => {
 return (nextDispatch, state) => {
  return (action) => {
   print("Action Dispatched!");
   return nextDispatch(action);
  };
 };
};

//A typical reducer, it doesn't take the defaultState argument.
const Reducer = Rokux.CreateReducer<IState, IActions>({
 EatCookie: (state, action) => {
  if (state.Cookies <= 0) {
   return state;
  }
  state.Cookies -= 1;
  return state;
 },
});

const RokuxStore = new Rokux.Store<IState, IActions>(Reducer, DefaultState, createMiddleware());

//Changed now has an action parameter.
RokuxStore.Changed.Connect((actionDispatched, newState, oldState) => {
 print(`Action Has Casted Changes!\nType:${actionDispatched.type}`);
});

//You can connect to a specific action dispatch event
const connectionB = RokuxStore.ConnectToActionInfluencedSignal<IEatCookie>(
 "EatCookie",
 (action, newState, oldState) => {
  print(`Eat cookie has been dispatched!`);
 },
);

FAQ

How do you pronounce "Rokux"?

Rokux should be pronunced as ro-coc-s.

Is this a stable module?

~~Definitely not, this is just a module that I made in free-time.~~

This module has become a LTS project, I will regularly review the codes. I think it is stable for now.