torrent-store

1.0.7 • Public • Published

Torrent store

Scalable, reduce-able & 'state' based store for (but not limited to) ReactJS, with node EventEmitter api.

export default class Store extends EventEmitter{
   
    /**
     * Map all nammed stores in {keys} to the {object}'s state
     * Hook componentWillUnmount (for react comp) or destroy to unBind them automatically
     * @static
     * @param object {React.Component|Store|...} target state aware object
     * @param keys {Array} Ex : ["session", "otherStaticNamedStore:key", store.as('anotherKey')]
     */
    static map( object, keys ) {...}
    
    /**
     * Constructor, will build a torrent store/reducer/remapper
     *
     * (state, keys, reducer, name)
     * (keys, reducer, name)
     * (keys, name)
     * (state, name)
     *
     * @param state {object} initial state
     * @param keys {Array} (passed to Store::map) Ex : ["session", "otherNamedStore:key", otherStore.as("otherKey")]
     * @param reducer {function} reducing / remapping fn
     * @param name {String} static name of the store
     */
    constructor() {...}
 
    /**
     * Apply reduce/remap on the private state & push the resulting "public" state to followers
     * @param cb
     */
    push( cb ) {...}
    
    /**
     * Pull stores in the private state
     * @param stores  {Array} (passed to Store::map) Ex : ["session", "otherNamedStore:key", otherStore.as("otherKey")]
     */
    pull( stores ) {...}
 
    /**
     * Update the current private state & push it once the store is stable
     * @param pState
     * @param cb
     */
    setState( pState, cb ) {...}
        
    /**
     * Replace the current private state & push it once the store is stable
     * @param pState
     * @param cb
     */
    replaceState( pState, cb ) {...}
    
    /**
     * Overridable reducer / remapper (will call the constructor's reducer fn if there)
     * @param privateState
     * @param lastPublicState
     * @returns {*} 
     */
    reduce( privateState, lastPublicState ) {...}
    
 
    /**
     * Un bind this store off the given component-key
     * @param obj
     * @param key
     * @returns {Array.<*>}
     */
    unBind( obj, key ) {...}
 
    
    /**
     * Bind this store changes to the given component-key
     * @param obj {React.Component|Store|function)
     * @param key {string} optional key where to map the public state
     */
    bind( obj, key ) {...}
 
 
    /**
     * get a store-key pair for Store::map
     * @param {string} name 
     * @returns {{store: Store, name: *}}
     */
    as( name ) {...}
    
    
    
    destroy() {...}
}

Readme

Keywords

none

Package Sidebar

Install

npm i torrent-store

Weekly Downloads

8

Version

1.0.7

License

MIT

Last publish

Collaborators

  • kameha