Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

flux-commons-store

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

flux-commons-store

Base Store class to use with Flux/Dispatcher

  • 0.0.9
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
0
Maintainers
1
Weekly downloads
 
Created
Source

Flux Commons Store

Build Status

Tested, Modular and Small Flux Store class to use with facebook/flux Dispatcher (https://github.com/facebook/flux).

Motivation

Migrate from the default proposed 'string' comparison approach:

switch(action.actionType) {
  case TodoConstants.TODO_CREATE:
    break;
  case TodoConstants.TODO_DESTROY:
    break;
  default:
    return true
}

to a simpler and more scalable api like:

// Async actions
myStore.listenToAction(Actions.fetchItems, handleFetchingItems);
myStore.listenToAction(Actions.fetchItems.done, handleFetchingItemsDone);
myStore.listenToAction(Actions.fetchItems.fail, handleFetchingItemsFail);

// Generic matchers
var unauthorizedMatcher = (payload) => payload.params.response.status === 401;
myStore.listenToMatchingAction(unauthorizedMatcher, handleUnauthorized);

Also provide the suger needed for listening/emiting changes.

How?

  • The Store class expects a 'Dispatcher' on construction time, being the Dispatcher either the facebook/flux one or a custom one respecting the same interface. (more details, on how to use your own, later). new Store(dispatcher)

  • Actions. Actions can be anything, the store provides a default impl where it checks for a property 'action' inside the payload to perform the matching, by doing strict equality. However you can just send a 'String' to the dispatch and it will work too.

Store API

(Check the store.js docs for full explanation and complete API)

.listenToAction(action, handler)

  • action any js objcet that will be compared with the payload.action object by strict equality.
  • handler the function to execute when there is a 'match', handler(payload, setSilent)

.listenToMatchingAction(matcher, handler)

  • matcher a function on the way matcher(payload). The store will check each dispatched payload with this matcher and execute the handler only when the matcher returns true.

.dispatcherToken()

  • returns the token created by the Dispatcher when registering the callback that listens to all the actions flowing through it.

.addChangeListener(cb) .removeChangeListener(cb) .emitChange()

  • Expose a event like interface to listen to any change event happening on the store. By default every time a handler is executed in the Store a change event will be emitted.

Gist with more code and examples

https://gist.github.com/rafaelchiti/915c680b4713c459026d

More docs to come.

For more details please check the tests and the store.js the code is very simple and self explanatory (hopefully).

Keywords

FAQs

Package last updated on 18 Feb 2015

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc