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

condux-client

v0.4.4

Published

Client half of `condux`, an over-the-wire unidirectional data-flow architecture utilizing Reflux as the flux pattern implementation and SockJS as the websocket implementation.

Downloads

12

Readme

Condux Client

A client-side companion to condux, an over-the-wire unidirectional data-flow architecture utilizing Reflux as the flux pattern implementation and SockJS as the websocket implementation.

Tap into readonly streams of data (Frequencies) broadcast by the Condux server, or call actions that can be listened to by datastores on the server. Create actions Reflux-like actions with <ConduxClient>.createAction and <ConduxClient>.createActions to interact with your server stores.

All actions are transmitted to the Condux server via a main CLIENT_ACTIONS channel, ensuring the Condux server dispatch can perform its delegation in a reactive, unidirectional pattern.

Installation

npm install condux-client --save

API

ConduxClient

Kind: global class

new ConduxClient(url, persistence)

create a Condux Client instance

| Param | Type | Default | Description | | --- | --- | --- | --- | | url | string | | a url of your server to pass into SockJS. Ensure the prefix http://yoururl.com:port{/prefix} is /reflux-nexus to connect to the reflux-nexus instance on your node server, or change the prefix on your server accordingly | | persistence | object | | | | [persistence.enabled] | boolean | true | should automatically try to reconnect on websocket "close" event | | [persistence.attempts] | number | 10 | how many times should attempt to reconnect after losing connection. This happens inside .reconnect, which can be called independently of the websocket "close" event if necessary | | [persistence.interval] | number | function | 3000 | how long to wait between reconnection attempts, in milliseconds. If passed a function, the function will be called with the number of reconnection attempts aleady made, and should return a number in milliseconds | | [persistence.onConnecting] | function | noop | called when begins a reconnection attempt | | [persistence.onConnection] | function | noop | called when establishes a connection to | | [persistence.onDisconnect] | function | noop | called when disconnects with a close event from websocket | | [persistence.onReconnect] | function | noop | called when re-establishes a connection to after being dropped | | [persistence.onTimeout] | function | noop | called when reconnection attempts are exhausted |

conduxClient.persistence ⇒ object

Kind: instance property of ConduxClient
Returns: object - current persistence options
Read only: true
Since: 0.4.2

conduxClient.connecting ⇒ boolean

is the in the process of connecting

Kind: instance property of ConduxClient
Read only: true
Since: 0.3.1

conduxClient.connected ⇒ boolean

is the currently connected to the Server

Kind: instance property of ConduxClient
Read only: true
Since: 0.3.1

conduxClient.updatePersistence() ⇒ object

Update the current persistence options. If <ConduxClient> is connecting and the onConnecting hook was updated, it will immediately call the new onConnecting function

Kind: instance method of ConduxClient
Returns: object - updated persistence options
Since: 0.4.2

conduxClient.connect()

Set up frequency multiplexing and persistent connection (if enabled)

Kind: instance method of ConduxClient

conduxClient.reconnect()

Set up frequency multiplexing after a disconnection with existing frequencies. Will attempt the reconnection with options passed to ConduxClient constructor as persistence options attempts and interval

Kind: instance method of ConduxClient

conduxClient.createAction(actionName) ⇒ function

Create a function that sends a keyed object with actionType and payload to a ServerNexus. Use like you would use Reflux.createAction for a local store.

Kind: instance method of ConduxClient
Returns: function - An action that should be called with an object payload to be serialized and sent over the wire to the ServerNexus

| Param | Type | Description | | --- | --- | --- | | actionName | string | name of the action the ServerNexus will need to listen to |

conduxClient.createActions(actionNames) ⇒ object

Create a hash of action name keys with ConduxClient actions as values

Kind: instance method of ConduxClient
Returns: object - - a hash of action functions that accept an object payload to be serialized and sent to the server

| Param | Type | Description | | --- | --- | --- | | actionNames | Array.<string> | create a hash of actions, use like you would Reflux.createActions for a local store. |

conduxClient.registerFrequency(topic, options) ⇒ Frequency

Create a new Frequency to subscribe to data streams from

Kind: instance method of ConduxClient
Returns: Frequency - A Frequency instance

| Param | Type | Default | Description | | --- | --- | --- | --- | | topic | string | | The Frequency's name handle | | options | object | | hash of options | | [options.setInitialData] | function | Frequency.prototype._hydrateData | handle the merging of new data into datastream | | [options.updateData] | function | Frequency.prototype._updateData | handle the updating of new data to datastream | | [options.provideCredentials] | function | | provide a function that returns a hash of credentials to the Server (if required by the Channel to connect, otherwise leave blank) |

conduxClient.enablePersistence()

enable automatic reconnection on websocket "close" event, for use after persistence has been set by constructor

Kind: instance method of ConduxClient
Since: 0.3.0

conduxClient.disablePersistence()

disable automatic reconnection on websocket "close" event, for use after persistence has been set by constructor

Kind: instance method of ConduxClient
Since: 0.3.0

conduxClient.Hz() ⇒ Frequency

convenience alias for registerFrequency

Kind: instance method of ConduxClient
Returns: Frequency - A Frequency instance
Since: 0.2.4

ConduxClient.ReactConnectMixin

Convenience Mixin for a React Component, giving it a tuneIn method that that allows the component to subscribe to a ConduxClient Frequency with a handler. Conveniently removes all Component handlers from the Frequency on componentWillUnmount

Kind: static mixin of ConduxClient

ConduxClient.DISCONNECTED

Kind: static property of ConduxClient
Read only: true
Since: 0.4.0

ConduxClient.CONNECTING

Kind: static constant of ConduxClient
Read only: true
Since: 0.4.0

ConduxClient.CONNECTED

Kind: static constant of ConduxClient
Read only: true
Since: 0.4.0

Frequency

Kind: global class
Access: protected

new Frequency(topic, conduxClient, options)

A read-only stream of data from the server on topic. Split from a single websocket connection. Frequencies cannot be directly instansiated with the new operator; they are created with <ConduxClient>.registerFrequency or the shorthand <ConduxClient>.Hz.

| Param | Type | Default | Description | | --- | --- | --- | --- | | topic | string | | name handle of the Frequency, ex /chat | | conduxClient | object | | the ConduxClient instance that owns the Frequency | | options | object | | | | [options.handleConnection] | function | Frequency.prototype._hydrateData | handle initial data flowing into Data on connection | | [options.handleMessage] | function | Frequency.prototype._updateData | handle the updating Data from incoming message | | [options.setInitialData] | function | | (since 0.2.3) new API for bootstrapping this.Data on connection to Server. If declared, replaces options.handleConnection | | [options.updateData] | function | | (since 0.2.3) new API for handling how messages from the server are integrated into this.Data. If declared, replaces options.handleMessage | | [options.provideCredentials] | function | | provide a function that returns a hash of credentials to the Server (if required by the Channel to connect, otherwise leave you can this blank) |

frequency.didConnect

A bluebird Promise fulfilled when the Frequency connects with the Condux Server

Kind: instance property of Frequency

frequency.topic

The name of the frequency, should match a Channel on the Condux server

Kind: instance property of Frequency
Read only: true

frequency.band

A hash of all the Frequencies on the ConduxClient instance that created this Frequency

Kind: instance property of Frequency
Read only: true

frequency.Data ⇒ any

getter

Kind: instance property of Frequency
Returns: any - immutable _Data state of Frequency
Read only: true

frequency.request(constraints) ⇒ Promise

The client side of Condux request API. Sends constraints to a Condux server Channel implementing the response interface, Sent with a silent, unique request token that ensures resolution of the Promise created when the Condux server responds. Adds the Promise to this._responseListeners_. When the Condux server Channel responds, the resolved Promise's thenables are called and the Promise itself is removed from the this._responseListeners_ hash.

Kind: instance method of Frequency

| Param | Type | Description | | --- | --- | --- | | constraints | object | developer-defined key:value map of constraints to send Condux server Channel |

frequency.addListener(listener, handlers) ⇒ string

Add a handler for Frequency's onmessage event

Kind: instance method of Frequency
Returns: string - token - unique identifier for the registered listener

| Param | Type | Description | | --- | --- | --- | | listener | object | handlers are invoked with listener as this | | handlers | object | a hash of callbacks to execute when the Frequency recieves an update from its server-side Channel | | [handlers.connection] | function | called withthis.Data as single argument when the Frequency connects to its Channel | | [handlers.message] | function | called when the Frequency receives a message. Is passed two arguments, the parsed JSON payload of the message, and this.Data | | [handlers.close] | function | called when the connection to the server-side channel closes |

frequency.removeListener(token)

Remove a handler from Frequency's onmessage event

Kind: instance method of Frequency

| Param | Type | Description | | --- | --- | --- | | token | string | the listener's unique identifier returned from addListener |

frequency.close()

Shut down the Frequency, unsubscribing from Condux server's channel broadcasts on this topic

Kind: instance method of Frequency

tuneInto

exposed to React.Component via ConduxClient.ReactConnectMixin Tune into a ConduxClient Frequency and handle Frequency lifecyle events connection,message, and close

Kind: global variable

| Param | Type | Description | | --- | --- | --- | | frequency | object | a Frequency name handle | | handlers | object | a hash of callbacks for Frequency's lifecycle events | | [handlers.connection] | connectionHandler | | | [handlers.message] | messageHandler | | | [handlers.close] | closeHandler | |

connectionHandler : function

A callback for the ConduxClient.Connect mixin triggered when the component initially tunes into a Frequency

Kind: global typedef

| Param | Type | Description | | --- | --- | --- | | hydration | object | array | the tuned-in Frequency's datastream when the component begins listening |

messageHandler : function

A callback for the ConduxClient.Connect mixin triggered when Frequency receives server data

Kind: global typedef

| Param | Type | Description | | --- | --- | --- | | message | object | array | the tuned-in Frequency's latest message from the server | | datastream | object | array | a copy of the Frequency's full datastream |

closeHandler : function

A callback for the ConduxClient.Connect mixin triggered when Frequency receives server data

Kind: global typedef