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

redux-app-state

v0.9.25

Published

Time travel - optimized for web sites trying to be apps

Downloads

10

Readme

redux-app-state

Time travel - optimized for web sites trying to be apps

Build Status Coverage Status Code Climate

Description

Installation

At the moment there is no direct means of installation. The closest thing is to clone the repository, run a build using npm run build, create a link for it using npm link and then using that link inside a project npm link redux-app-state.

A NPM package is in the works and will e released as soon as the project is ready.

Usage

The project supplies three main components:

  • Actions (import { navigate, back, clean } from 'redux-app-state/action')
  • Higher Order Reducer (import { createHistoryReducer } from 'redux-app-state')
  • Middleware (import { createHistoryMiddleware } from 'redux-app-state')

In addition a set of navigation strategies are included

import { createHistoryReducer, createHistoryMiddleware } from 'redux-app-state';
import { navigate } from 'redux-app-state/actions';
import withDismissed from 'redux-app-state/strategies/with-dismissed';
import { createStore, applyMiddleware } from 'redux';

const historyMiddleware = createHistoryMiddleware();
const historyReducer = createHistoryReducer(withDismissed);

store = createStore(
  historyReducer(reducers),
  applyMiddleware(historyMiddleware)
);

store.dispatch(navigate('/'));

Handling navigation

resolveMeta

APIs

In addition to strategies, different APIs can also be passed, to indicate how the application can update its environment, for instance if it should use window.history, hashes in the url or simple not reflect changes to the outside.

nil Does not effect its outside environment history tracking and page changing is done only in memory

window Uses window.history to manipulate the URL, back button interaction and alike. This also stores state in the browsers history state so refreshes can keep data about previous pages

hash (Not yet finished)

Build in strategies

There are a few ready to go strategies, which defines how the history behaves.

Default If no strategy is provided it will pop the top page on back and nothing else.

With dismissed When navigating back, pages are not removed from the page list, but instead marked as dismissed in its meta data. When a new page is added all dismissed pages are removed.

Custom strategies

Options

api The API for handling out side integration.

initState If for instance a page is server side rendered, and should start using this data as its base, this data can be passed as initState data. Another alternative is to give the data as preloaded on first navigation request

onBack (pageList:ImmutableList, requestMetaData:Object)=>pageList:ImmutableList A function which takes a list of pages and updates it to its new state. This is called every time a back action is requested. Default: pageList => pageList.pop()

getCurrentPage (pageList:ImmutableList)=>index:Number A function which is used to determin which page is currently the active. As for the with-dismissed strategy this finds the index of the last page in the list which is not dismissed. Default: pageList => pageList.size - 1;

beforeNavigate

mapToHistory

afterNavigate