seneca-promise v1.2.0

Seneca Promise
- Node: 8.x
- Seneca: 2.x - 3.x
This plugin adds a series of methods to the seneca instance that allow for
promises and async/await. For lots of examples, refer to the tests.
If you're using this module, and need help, you can:
- Post a github issue,
If you are new to Seneca in general, please take a look at senecajs.org. We have everything from tutorials to sample apps to help get you up and running quickly.
Install
npm install seneca-promiseQuick Example
const seneca = Seneca()
seneca.use(SenecaPromise)
seneca.ready(() => {
// you can throw errors!
seneca.addAsync('cmd:error', async () => {
throw new Error('aw snap!')
})
// you can await other actions!
seneca.addAsync('cmd:test', async function (msg) {
await this.actAsync('cmd:error', msg)
})
// and call into prior actions with `priorAsync`!
seneca.addAsync('cmd:test', async function (msg) {
return await result = this.priorAsync(msg)
})
// and you can even wrap methods!
seneca.wrapAsync('cmd:*', async function (msg) {
console.log('Received cmd', msg.pattern)
return await this.priorAsync(msg)
})
})Usage with TypeScript
npm i -D typescript @types/senecaBy requiring seneca-promise the seneca Instance type will be modified to include addAsync, actAsync, wrapAsync and priorAsync. You must still use this plugin for the functions to show up properly on the seneca instance!
import Seneca = require('seneca')
import SenecaPromise = require('seneca-promise')
const seneca = Seneca()
seneca.use(SenecaPromise)
seneca.addAsync // huzzah!Each method takes the following generic type parameters:
- Action - first parameter (jsonic) provided to the functions
- Params - second parameter (object) provided to the functions
- Response - type of the response (includes both action & params)
The action and params are somewhat exchangable the same way the following are equivelent in seneca using js:
seneca.add('role:user,cmd:test', () => {})
seneca.add('role:user', {cmd: 'test'}, () => {})
seneca.add({role:user}, {cmd: 'test'}, () => {})For a full example, refer to the test file
API
addAsync Same as
addbut allow you to return a promise.wrapAsync Same as
wrapbut allows you to return a promisepriorAsync Same as
priorbut allows you to return a promise.actAsync Same as
actbut returns a promise.