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 🙏

© 2026 – Pkg Stats / Ryan Hefner

redux-ntities

v0.0.11

Published

Redux entities manager

Readme

Redux-ntities

This is redux entities management library for backendless applications. It consists of 2 HOCs and redux middleware. It allows you to persist your entities in IndexedDB/localStorage and provides common approach to save your entities in redux state.

Installation

npm i --save redux-ntities redux react localforage ramda

or same with yarn add if you are using yarn

Basic usage

Setting up middleware

In order to set up middleware, you will need to provide a map with transform functions, which will be used to re-shape data right after fetching from server

// entities.js
export const TEMPLATE = 'TEMPLATE';

// transforms.js
import { TEMPLATE } from './entities';

export default {
    // here we are transforming whatever came from API to the array of whatever
    [TEMPLATE]: (data: *): Array<*> => [data],
};

Then, inside your configureStore module:

import { createStore, applyMiddleware } from 'redux';
import transforms from './transforms';
import { middlewareCreator as entitiesMiddlewareCreator } from 'redux-ntities';

const createStore = applyMiddleware(
    entitiesMiddlewareCreator(transforms),
)(createStore);

const store = createStore(initialState);
...

Using HOCs:

To make sure your entities are fetched from the API, you can enhance your containers using redux-ntities HOCs. Just add them into compose function with your react-redux's connect or other HOC's and provide config options:

// entites.js:
export const mapEntitiesToSyncRestUrl = {
    [TEMPLATE]: (props) => `localhost/templates/${props.params.id}`,
}

export const entityIdSelector = {
    [TEMPLATE]: (props) => props.params.id,
};

export const mapEntitiesToSyncRestUrl = {
    [TEMPLATE]: (props, template) => `localhost/templates/${template.id}`,
};

export const syncEntityIdSelector = {
    [TEMPLATE]: (template) => template.id,
};

// template.js
import { connect } from 'react-redux';
import { compose } from 'ramda';
import { fetchHOCCreator, syncHOCCreator } from 'redux-ntities';
import { TEMPLATE } from './entities';
import {
    mapEntitiesToSyncRestUrl,
    syncEntityIdSelector,
    mapEntitiesToRestUrl,
    entityIdSelector,
} from '../entities';

const mapStateToProps = (state, props) => ({
    // templateSelector is selecting your template from redux-state
    template: templateSelector(state, props),
});

const fetcher = fetchHOCCreator({
    useCache: true,
    mapEntitiesToRestUrl,
    entityIdSelector,
});

const sync = syncHOCCreator({
    mapEntitiesToRestUrl: mapEntitiesToSyncRestUrl,
    entityIdSelector: syncEntityIdSelector
});

const Template = (props: PropsType): React$Element<*> =>
    <div className="title">
        {props.template.title}
    </div>

const enhancer = compose(
    connect(mapStateToProps),
    sync([TEMPLATE]),
    fetcher([TEMPLATE]),
);

export default enhancer(Template);

TODO

  • Process requests inside webworkers