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

maurox-store

v1.0.6

Published

library that manages a global state for our components in React

Downloads

3

Readme

MAUROX

Es una pequeñita librería que simula el modelo de Redux

La librería es:

function maurox(state = {}) {
  return {
    initialState: function (initState, root_reducer) {
      root_reducer = root_reducer 
      state = { ...initState, root_reducer: root_reducer };
    },
    reducer: function (cb) {
      // console.log("in reducer core, cb is --> ", cb);
      state = {...cb};
    }, 
    dispatch: function (type, payload) {
      // console.log("in dispatch");
      this.reducer(state.root_reducer(state, type, payload))
    },
    getState: function () {
      return state;
    },
  };
}

module.exports = maurox

Los pasos a seguir para hacer uso de la librería son:

01. Crear carpeta store y dentro archivo index.js, allí importar maurox
npm i maurox-store
const maurox = require("maurox-store");
// y crear la instancia de este exportando
export const store = maurox();
// consologear a modo de testear su conexión
console.log("----> ", store);
02. Armar la función reducer y exportarla. El nombre de esta función no es palabra reservada, pero puede ser: root_reducer
// Reducer estructura
export function root_reducer(state = initialState, type, payload) {
  // console.log("in reducer");
  switch (type) {
    case "ADD_PELI":
      // console.log("in reducer add peli, payload is ---> ", payload);
      const pelis = [...state.pelis, payload];
      // console.log(".....", pelis);
      return {
        ...state,
        pelis: [...pelis],
      };
    case "DELETE_PELI":
      // console.log("in reducer add peli, payload is ---> ", payload);
      const pelisFilter = state.pelis.filter((e) => e.id !== payload);
      // console.log(".....", pelis)
      return {
        ...state,
        pelis: [...pelisFilter],
      };

    default:
      return state;
  }
}
  1. Importar el store y el root_reducer al archivo app (donde se definen las rutas) de nuestro proyecto react IMPORTANTE: debe encontrarse antes y por fuera de nuestro componente app
import { store, root_reducer } from './store/index.js'
// crear Estado inicial
  const initialState = {
    pelis: [],
    numPage: 0,
    data: {
      admin: "Mau",
      id: 332,
    },
  };
// Inicializar el reducer para que tome un estado inicial y conectar a nuestro reducer
// pasando como segundo params la función root_reducer
store.initialState(initialState, root_reducer);
// consologeo a modo de ir revisando 
console.log("init getState --> ", store.getState());

function App() { etc... }

Extra

Para icorporar un consologeo tipo devTools se debe pasar como tercer params un booleano "true":

store.initialState(initialState, root_reducer, true);
04. Ahora como cierre, la manera de implementar es importando el store y usando
o su método dispatch para realizar cambios en el state o su método getState para
leer el state.

Ejemplo:

import { store } from './store/index.js'
// Function to dispatch
  function add_peli(peli) {
    return peli;
  }

Despachando acciones

Este modelo de despachar acciones a nuestro reducer y con ello en nuestro store
es un método que recibe dos parámetros, el primero es 
               el type y luego la función
 store.dispatch( "TYPE", functionAction() )
  // 
  store.dispatch("ADD_PELI", add_peli(peli1));
  console.log(store.getState());
  
  store.dispatch("ADD_PELI", add_peli(peli2));
  console.log(store.getState());

RE-RENDERIZAR con React un component

Modo 1 (en un mismo componente)

const [renderAction, setRenderAction] = useState(true);

function handleClick(e) {
  e.preventDefault();
  store.dispatch(FILTER, filterCards(value));
  setRenderAction(!renderAction); // <--> se estaría encargando que luego de la acción se renderice este componente
}

Modo 2 (de un componente a otro)

archivo padre <Favorites />
const [renderAction, setRenderAction] = useState(true);

function renderActionExport(){
    setRenderAction(!renderAction)
  }

return (
    <>
      <Card
        setRenderAction={renderActionExport}
        key={c.id}
        name={c.name} 
      />
    </>
  );
archivo hijo <Card />
export default function Card(props) {

  function handleFavorite(ch) {
      store.dispatch(DELETE_FAVORITES, deleteFavorites(ch.id));
      props.setRenderAction()
    }
    // etc...
  return (
    <>etc...</>
  )
}
Es una pequeñita librería que simula el modelo de Redux

En tan solo 4 pasos ya se encuentra conectada y se puede utilizar desde
cualquier componente de nuestra app

Ahora para el manejo del renderizado, es decir de que react escuche los cambios
lo que se debe hacer es usar los recursos de React en sí, tales como: 
  • state setState
  • useEffect

En sus diferentes momentos del ciclo de vida de react

Testear su implementación

Para ello creé una app pequeña ustilizando React + maurox-store y la pueden encontrar y probar aquí:

https://github.com/HX-MLuquez/app-demo-storeByMaurox