sydney

1.0.0 • Public • Published

Sydney

Codeship Status for xaviervia/sydney Code Climate Test Coverage

Event Subscription/Venue library. Whole new approach:

  • Asynchronous emission only. Synchronous programming is over.
  • The venue is a middleware. Propagation in the venue is mediated by the main callback.
  • Subscribers are venues too. Broadcasting back into the source venue is done by adding the source venue as a subscriber to its own subscribers (this is called linking).

The way events are treated is completely different. You can think of them as full requests, with headers and payload:

  • There is no difference between the event and the arguments sent to the event. Events are assumed to be complex objects.
  • Optional endpoints allow venues to check whether they are interested in an event or not. This allows venues to link to each other promiscuously and achieve very complex topologies in a scalable manner.

Usage documentation is pending

Installation

npm install --save sydney

Methods

new( [endpoint] [, callback] )

Creates a new Sydney venue. If only a Function is provided, it is used as the callback. If only an Object of any other kind is provided, it is used as the endpoint. If two arguments are provided, the first is used as the endpoint and the second as the callback.

Note that new is completely optional. Calling Sydney as a function directly will have the same effect.

Arguments

  • optional Object endpoint
  • optional Function callback

Returns

  • Sydney this

Sydney.amplify( vanillaSubscriber )

Adds Sydney.prototype methods as mixin to the vanillaSubscriber.

send( event )

If the venue has an endpoint, it calls match with the event and only calls the callback if the return value is true. If there is no endpoint it always calls the callback. The callback is called with the event as the first argument and the venue (this) as the second argument.

If there is no callback, the event is broadcasted to the subscribers instead. That is done by calling broadcast with the event as argument.

Arguments

  • Object event

Returns

  • Sydney this

broadcast( event )

Calls send with the provided event in all the subscribers.

Arguments

  • Object event

Returns

  • Sydney this

add( subscriber )

If the subscriber is a Sydney venue, it just adds it as a subscriber in the current venue.

If the subscriber is not a Sydney module, it adds all of Sydney methods to the subscriber. It doesn't override properties already existing on the subscriber.

Returns

  • Sydney this

remove( subscriber )

Removes the subscriber from the venue.

Arguments

  • Object subscriber

Returns

  • Sydney this

link( subscriber )

If the subscriber is a Sydney venue, it just adds it as a subscriber in the current venue. Then adds the venue back into the subscriber.

If the subscriber is not a Sydney module, it adds all of Sydney methods to the subscriber. It doesn't override properties already existing on the subscriber.

Returns

  • Sydney this

unlink( subscriber )

Removes the subscriber from the venue and removes the venue from the subscriber.

Arguments

  • Object subscriber

Returns

  • Sydney this

Testing

git clone git://github.com/xaviervia/sydney
cd sydney
npm install
make test

License

Copyright 2015 Xavier Via

ISC license.

See LICENSE attached.

Package Sidebar

Install

npm i sydney

Weekly Downloads

1

Version

1.0.0

License

ISC

Last publish

Collaborators

  • xaviervia