Skip to content

jasonpincin/eventuate-once

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eventuate-once

NPM version Build Status Coverage Status Sauce Test Status

Act once upon the next occurrence of an eventuate. Optionally act upon only the next matching occurrence.

example

var eventuate = require('eventuate'),
    once      = require('eventuate-once')

var request = eventuate()

// once cb
once(request, function (req) {
    console.log(req)
})
request.produce({ url: '/index.html' })

// once promise
once(request).then(console.log)
request.produce({ url: '/README.md' })

// will result in no actions because consumers are gone
// (use "requireConsumers" to make this an error condition)
request.produce({ url: '/LICENSE' })

api

var once = require('eventuate-once')

once(eventuate [, cb])

Execute the optional cb (if provided) one time on the next data payload from the eventuate. This is like eventuate(cb) except that it only happens once. In addition, returns a Promise that resolves to the eventuate data payload.

once.match(eventuate, filter [, cb])

Execute the optional cb (if provided) one time on the next data payload from the eventuate, for which a truthy value is returned from the filter function. In addition, returns a Promise that resolves to the matched eventuate data payload.

The filter argument should be a function with signature function (data). It will be passed all events produced by the eventuate, and it should return a falsey value or truthy value. Upon returning a truthy value, no more events will be provided, and the callbacks/promise will be resolved.

testing

npm test [--dot | --spec] [--phantom] [--grep=pattern]

Specifying --dot or --spec will change the output from the default TAP style. Specifying --phantom will cause the tests to run in the headless phantom browser instead of node. Specifying --grep will only run the test files that match the given pattern.

browser test

npm run browser-test

This will run the tests in all browsers (specified in .zuul.yml). Be sure to educate zuul first.

coverage

npm run coverage [--html]

This will output a textual coverage report. Including --html will also open an HTML coverage report in the default browser.

About

Act once upon the next occurrence of an eventuate

Resources

License

Stars

Watchers

Forks

Packages

No packages published