Last active
August 21, 2017 19:36
-
-
Save joshuaebowling/185afffb25cf867644aa112eb09bbc80 to your computer and use it in GitHub Desktop.
A prototype for building a JSON object what will act as a message bus's (postal.js) phonebook
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const _ = require( 'lodash' ), | |
| async = require( 'async' ), | |
| fs = require('fs') | |
| ; | |
| var actions, base, result, states, subActions, template, toObject, types; | |
| result = {}; | |
| template = `module.exports = ${JSON.stringify(_.omit(result, 'any'), '', 4)}`; | |
| base = [ '*' ]; | |
| toObject = function( arr ) { | |
| var result = {}; | |
| _.each( _.union( base, arr ), (t) => { | |
| result[t.replace('*', 'any')] = t; | |
| }); | |
| return result; | |
| }; | |
| types = toObject( [ 'user', 'item', 'account', 'order', 'driver' ] ); | |
| actions = toObject( [ 'save', 'delete', 'get' ] ); | |
| subActions = toObject( [ 'one','many' ] ); | |
| states = toObject( [ 'request', 'response', 'error', 'timeout', 'report'] ); | |
| _.each(types, (type) => { | |
| var typeKey = type.replace('*', 'any'); | |
| result[typeKey] = {}; | |
| result[typeKey].busKey = type; | |
| _.each(actions, (action) => { | |
| var actionKey = action.replace('*', 'any'); | |
| result[typeKey][actionKey] = {}; | |
| _.each(subActions, (subA) => { | |
| var subAKey = subA.replace('*', 'any'); | |
| result[typeKey][actionKey][subAKey] = {}; | |
| _.each(states, (state) => { | |
| var stateKey = state.replace('*', 'any'); | |
| result[typeKey][actionKey][subAKey][stateKey] = `${type}.${action}.${subA}.${state}`; | |
| }); | |
| }); | |
| }); | |
| }); | |
| fs.writeFileSync('bus-book.js',template , 'utf8'); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| ** PLEASE DONT TAKE ANYTHING IN THIS CODE FOR GRANTED. MOST OF THE COMMENTS ARE MISLEADING AT PRESENT. | |
| **/ | |
| const | |
| postal = require('postal'), | |
| bus = require('./bus') | |
| ; | |
| // pickup ALL requests on user Channel | |
| postal.channel(bus.user.busKey).subscribe(bus.any.any.any.request, ( payload, env) => { | |
| console.log(env); | |
| console.log('any request > ', payload); | |
| }); | |
| // pickup all requests for bus.order | |
| postal.channel(bus.order.busKey).subscribe(bus.order.any.any.request, ( payload, env) => { | |
| console.log(env); | |
| console.log('any request > ', payload); | |
| }); | |
| // pickup ALL responses on ALL channels | |
| postal.channel(bus.order.busKey).subscribe(bus.any.any.any.response, ( payload, env) => { | |
| console.log(env); | |
| console.log('any request > ', payload); | |
| }); | |
| // publish a user.save.one.request | |
| // publish a driver.save.one.request | |
| postal.channel(bus.driver.busKey).publish(bus.driver.save.one.request, {test: bus.driver.save.one.request}); | |
| var publish = function(channel, topic, payload) { | |
| if(topic.indexOf('*') < 0) throw new Error("You may not publish with * in the topic"); | |
| postal.chanel(channel).publish(topic, payload); | |
| }; | |
| var itemPublish = function(topic, payload) { | |
| publish(bus.item.busKey).topic(topic, payload); | |
| }; | |
| var objectActionPublish = function(channel, topic) { | |
| return function(payload) { | |
| publish(channel, topic, payload); | |
| }; | |
| }; | |
| var save = function(busType, busTopic, payload) { | |
| postal.channel(busType).publish(busTopic, {test: bus.user.save.one.request}); | |
| }; | |
| var saveUser = function(user) { | |
| save(bus.user.busKey, bus.user.save.one.request, user); | |
| }; | |
| var saveDriver = function(driver) { | |
| save(bus.driver.busKey, bus.driver.save.one.request, driver); | |
| }; | |
| // will now be a function that takes a user payload | |
| var saveItem = objectActionPublish(bus.item.busKey, bus.item.save.one.request); | |
| var saveItems = function(items) { | |
| save(bus.item.busKey, bus.item.save.many.request, items); | |
| }; | |
| var onSave = function(busType, busTopic) { | |
| postal.channel(busType).subscribe(busTopic, (payload, env) => { | |
| }); | |
| }; | |
| var onSaveItem = function() { | |
| // set all the subscriptions just for saving an item | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| module.exports = { | |
| "user": { | |
| "busKey": "user", | |
| "any": { | |
| "any": { | |
| "any": "user.*.*.*", | |
| "request": "user.*.*.request", | |
| "response": "user.*.*.response", | |
| "error": "user.*.*.error", | |
| "timeout": "user.*.*.timeout", | |
| "report": "user.*.*.report" | |
| }, | |
| "one": { | |
| "any": "user.*.one.*", | |
| "request": "user.*.one.request", | |
| "response": "user.*.one.response", | |
| "error": "user.*.one.error", | |
| "timeout": "user.*.one.timeout", | |
| "report": "user.*.one.report" | |
| }, | |
| "many": { | |
| "any": "user.*.many.*", | |
| "request": "user.*.many.request", | |
| "response": "user.*.many.response", | |
| "error": "user.*.many.error", | |
| "timeout": "user.*.many.timeout", | |
| "report": "user.*.many.report" | |
| } | |
| }, | |
| "save": { | |
| "any": { | |
| "any": "user.save.*.*", | |
| "request": "user.save.*.request", | |
| "response": "user.save.*.response", | |
| "error": "user.save.*.error", | |
| "timeout": "user.save.*.timeout", | |
| "report": "user.save.*.report" | |
| }, | |
| "one": { | |
| "any": "user.save.one.*", | |
| "request": "user.save.one.request", | |
| "response": "user.save.one.response", | |
| "error": "user.save.one.error", | |
| "timeout": "user.save.one.timeout", | |
| "report": "user.save.one.report" | |
| }, | |
| "many": { | |
| "any": "user.save.many.*", | |
| "request": "user.save.many.request", | |
| "response": "user.save.many.response", | |
| "error": "user.save.many.error", | |
| "timeout": "user.save.many.timeout", | |
| "report": "user.save.many.report" | |
| } | |
| }, | |
| "delete": { | |
| "any": { | |
| "any": "user.delete.*.*", | |
| "request": "user.delete.*.request", | |
| "response": "user.delete.*.response", | |
| "error": "user.delete.*.error", | |
| "timeout": "user.delete.*.timeout", | |
| "report": "user.delete.*.report" | |
| }, | |
| "one": { | |
| "any": "user.delete.one.*", | |
| "request": "user.delete.one.request", | |
| "response": "user.delete.one.response", | |
| "error": "user.delete.one.error", | |
| "timeout": "user.delete.one.timeout", | |
| "report": "user.delete.one.report" | |
| }, | |
| "many": { | |
| "any": "user.delete.many.*", | |
| "request": "user.delete.many.request", | |
| "response": "user.delete.many.response", | |
| "error": "user.delete.many.error", | |
| "timeout": "user.delete.many.timeout", | |
| "report": "user.delete.many.report" | |
| } | |
| }, | |
| "get": { | |
| "any": { | |
| "any": "user.get.*.*", | |
| "request": "user.get.*.request", | |
| "response": "user.get.*.response", | |
| "error": "user.get.*.error", | |
| "timeout": "user.get.*.timeout", | |
| "report": "user.get.*.report" | |
| }, | |
| "one": { | |
| "any": "user.get.one.*", | |
| "request": "user.get.one.request", | |
| "response": "user.get.one.response", | |
| "error": "user.get.one.error", | |
| "timeout": "user.get.one.timeout", | |
| "report": "user.get.one.report" | |
| }, | |
| "many": { | |
| "any": "user.get.many.*", | |
| "request": "user.get.many.request", | |
| "response": "user.get.many.response", | |
| "error": "user.get.many.error", | |
| "timeout": "user.get.many.timeout", | |
| "report": "user.get.many.report" | |
| } | |
| } | |
| }, | |
| "item": { | |
| "busKey": "item", | |
| "any": { | |
| "any": { | |
| "any": "item.*.*.*", | |
| "request": "item.*.*.request", | |
| "response": "item.*.*.response", | |
| "error": "item.*.*.error", | |
| "timeout": "item.*.*.timeout", | |
| "report": "item.*.*.report" | |
| }, | |
| "one": { | |
| "any": "item.*.one.*", | |
| "request": "item.*.one.request", | |
| "response": "item.*.one.response", | |
| "error": "item.*.one.error", | |
| "timeout": "item.*.one.timeout", | |
| "report": "item.*.one.report" | |
| }, | |
| "many": { | |
| "any": "item.*.many.*", | |
| "request": "item.*.many.request", | |
| "response": "item.*.many.response", | |
| "error": "item.*.many.error", | |
| "timeout": "item.*.many.timeout", | |
| "report": "item.*.many.report" | |
| } | |
| }, | |
| "save": { | |
| "any": { | |
| "any": "item.save.*.*", | |
| "request": "item.save.*.request", | |
| "response": "item.save.*.response", | |
| "error": "item.save.*.error", | |
| "timeout": "item.save.*.timeout", | |
| "report": "item.save.*.report" | |
| }, | |
| "one": { | |
| "any": "item.save.one.*", | |
| "request": "item.save.one.request", | |
| "response": "item.save.one.response", | |
| "error": "item.save.one.error", | |
| "timeout": "item.save.one.timeout", | |
| "report": "item.save.one.report" | |
| }, | |
| "many": { | |
| "any": "item.save.many.*", | |
| "request": "item.save.many.request", | |
| "response": "item.save.many.response", | |
| "error": "item.save.many.error", | |
| "timeout": "item.save.many.timeout", | |
| "report": "item.save.many.report" | |
| } | |
| }, | |
| "delete": { | |
| "any": { | |
| "any": "item.delete.*.*", | |
| "request": "item.delete.*.request", | |
| "response": "item.delete.*.response", | |
| "error": "item.delete.*.error", | |
| "timeout": "item.delete.*.timeout", | |
| "report": "item.delete.*.report" | |
| }, | |
| "one": { | |
| "any": "item.delete.one.*", | |
| "request": "item.delete.one.request", | |
| "response": "item.delete.one.response", | |
| "error": "item.delete.one.error", | |
| "timeout": "item.delete.one.timeout", | |
| "report": "item.delete.one.report" | |
| }, | |
| "many": { | |
| "any": "item.delete.many.*", | |
| "request": "item.delete.many.request", | |
| "response": "item.delete.many.response", | |
| "error": "item.delete.many.error", | |
| "timeout": "item.delete.many.timeout", | |
| "report": "item.delete.many.report" | |
| } | |
| }, | |
| "get": { | |
| "any": { | |
| "any": "item.get.*.*", | |
| "request": "item.get.*.request", | |
| "response": "item.get.*.response", | |
| "error": "item.get.*.error", | |
| "timeout": "item.get.*.timeout", | |
| "report": "item.get.*.report" | |
| }, | |
| "one": { | |
| "any": "item.get.one.*", | |
| "request": "item.get.one.request", | |
| "response": "item.get.one.response", | |
| "error": "item.get.one.error", | |
| "timeout": "item.get.one.timeout", | |
| "report": "item.get.one.report" | |
| }, | |
| "many": { | |
| "any": "item.get.many.*", | |
| "request": "item.get.many.request", | |
| "response": "item.get.many.response", | |
| "error": "item.get.many.error", | |
| "timeout": "item.get.many.timeout", | |
| "report": "item.get.many.report" | |
| } | |
| } | |
| }, | |
| "account": { | |
| "busKey": "account", | |
| "any": { | |
| "any": { | |
| "any": "account.*.*.*", | |
| "request": "account.*.*.request", | |
| "response": "account.*.*.response", | |
| "error": "account.*.*.error", | |
| "timeout": "account.*.*.timeout", | |
| "report": "account.*.*.report" | |
| }, | |
| "one": { | |
| "any": "account.*.one.*", | |
| "request": "account.*.one.request", | |
| "response": "account.*.one.response", | |
| "error": "account.*.one.error", | |
| "timeout": "account.*.one.timeout", | |
| "report": "account.*.one.report" | |
| }, | |
| "many": { | |
| "any": "account.*.many.*", | |
| "request": "account.*.many.request", | |
| "response": "account.*.many.response", | |
| "error": "account.*.many.error", | |
| "timeout": "account.*.many.timeout", | |
| "report": "account.*.many.report" | |
| } | |
| }, | |
| "save": { | |
| "any": { | |
| "any": "account.save.*.*", | |
| "request": "account.save.*.request", | |
| "response": "account.save.*.response", | |
| "error": "account.save.*.error", | |
| "timeout": "account.save.*.timeout", | |
| "report": "account.save.*.report" | |
| }, | |
| "one": { | |
| "any": "account.save.one.*", | |
| "request": "account.save.one.request", | |
| "response": "account.save.one.response", | |
| "error": "account.save.one.error", | |
| "timeout": "account.save.one.timeout", | |
| "report": "account.save.one.report" | |
| }, | |
| "many": { | |
| "any": "account.save.many.*", | |
| "request": "account.save.many.request", | |
| "response": "account.save.many.response", | |
| "error": "account.save.many.error", | |
| "timeout": "account.save.many.timeout", | |
| "report": "account.save.many.report" | |
| } | |
| }, | |
| "delete": { | |
| "any": { | |
| "any": "account.delete.*.*", | |
| "request": "account.delete.*.request", | |
| "response": "account.delete.*.response", | |
| "error": "account.delete.*.error", | |
| "timeout": "account.delete.*.timeout", | |
| "report": "account.delete.*.report" | |
| }, | |
| "one": { | |
| "any": "account.delete.one.*", | |
| "request": "account.delete.one.request", | |
| "response": "account.delete.one.response", | |
| "error": "account.delete.one.error", | |
| "timeout": "account.delete.one.timeout", | |
| "report": "account.delete.one.report" | |
| }, | |
| "many": { | |
| "any": "account.delete.many.*", | |
| "request": "account.delete.many.request", | |
| "response": "account.delete.many.response", | |
| "error": "account.delete.many.error", | |
| "timeout": "account.delete.many.timeout", | |
| "report": "account.delete.many.report" | |
| } | |
| }, | |
| "get": { | |
| "any": { | |
| "any": "account.get.*.*", | |
| "request": "account.get.*.request", | |
| "response": "account.get.*.response", | |
| "error": "account.get.*.error", | |
| "timeout": "account.get.*.timeout", | |
| "report": "account.get.*.report" | |
| }, | |
| "one": { | |
| "any": "account.get.one.*", | |
| "request": "account.get.one.request", | |
| "response": "account.get.one.response", | |
| "error": "account.get.one.error", | |
| "timeout": "account.get.one.timeout", | |
| "report": "account.get.one.report" | |
| }, | |
| "many": { | |
| "any": "account.get.many.*", | |
| "request": "account.get.many.request", | |
| "response": "account.get.many.response", | |
| "error": "account.get.many.error", | |
| "timeout": "account.get.many.timeout", | |
| "report": "account.get.many.report" | |
| } | |
| } | |
| }, | |
| "order": { | |
| "busKey": "order", | |
| "any": { | |
| "any": { | |
| "any": "order.*.*.*", | |
| "request": "order.*.*.request", | |
| "response": "order.*.*.response", | |
| "error": "order.*.*.error", | |
| "timeout": "order.*.*.timeout", | |
| "report": "order.*.*.report" | |
| }, | |
| "one": { | |
| "any": "order.*.one.*", | |
| "request": "order.*.one.request", | |
| "response": "order.*.one.response", | |
| "error": "order.*.one.error", | |
| "timeout": "order.*.one.timeout", | |
| "report": "order.*.one.report" | |
| }, | |
| "many": { | |
| "any": "order.*.many.*", | |
| "request": "order.*.many.request", | |
| "response": "order.*.many.response", | |
| "error": "order.*.many.error", | |
| "timeout": "order.*.many.timeout", | |
| "report": "order.*.many.report" | |
| } | |
| }, | |
| "save": { | |
| "any": { | |
| "any": "order.save.*.*", | |
| "request": "order.save.*.request", | |
| "response": "order.save.*.response", | |
| "error": "order.save.*.error", | |
| "timeout": "order.save.*.timeout", | |
| "report": "order.save.*.report" | |
| }, | |
| "one": { | |
| "any": "order.save.one.*", | |
| "request": "order.save.one.request", | |
| "response": "order.save.one.response", | |
| "error": "order.save.one.error", | |
| "timeout": "order.save.one.timeout", | |
| "report": "order.save.one.report" | |
| }, | |
| "many": { | |
| "any": "order.save.many.*", | |
| "request": "order.save.many.request", | |
| "response": "order.save.many.response", | |
| "error": "order.save.many.error", | |
| "timeout": "order.save.many.timeout", | |
| "report": "order.save.many.report" | |
| } | |
| }, | |
| "delete": { | |
| "any": { | |
| "any": "order.delete.*.*", | |
| "request": "order.delete.*.request", | |
| "response": "order.delete.*.response", | |
| "error": "order.delete.*.error", | |
| "timeout": "order.delete.*.timeout", | |
| "report": "order.delete.*.report" | |
| }, | |
| "one": { | |
| "any": "order.delete.one.*", | |
| "request": "order.delete.one.request", | |
| "response": "order.delete.one.response", | |
| "error": "order.delete.one.error", | |
| "timeout": "order.delete.one.timeout", | |
| "report": "order.delete.one.report" | |
| }, | |
| "many": { | |
| "any": "order.delete.many.*", | |
| "request": "order.delete.many.request", | |
| "response": "order.delete.many.response", | |
| "error": "order.delete.many.error", | |
| "timeout": "order.delete.many.timeout", | |
| "report": "order.delete.many.report" | |
| } | |
| }, | |
| "get": { | |
| "any": { | |
| "any": "order.get.*.*", | |
| "request": "order.get.*.request", | |
| "response": "order.get.*.response", | |
| "error": "order.get.*.error", | |
| "timeout": "order.get.*.timeout", | |
| "report": "order.get.*.report" | |
| }, | |
| "one": { | |
| "any": "order.get.one.*", | |
| "request": "order.get.one.request", | |
| "response": "order.get.one.response", | |
| "error": "order.get.one.error", | |
| "timeout": "order.get.one.timeout", | |
| "report": "order.get.one.report" | |
| }, | |
| "many": { | |
| "any": "order.get.many.*", | |
| "request": "order.get.many.request", | |
| "response": "order.get.many.response", | |
| "error": "order.get.many.error", | |
| "timeout": "order.get.many.timeout", | |
| "report": "order.get.many.report" | |
| } | |
| } | |
| }, | |
| "driver": { | |
| "busKey": "driver", | |
| "any": { | |
| "any": { | |
| "any": "driver.*.*.*", | |
| "request": "driver.*.*.request", | |
| "response": "driver.*.*.response", | |
| "error": "driver.*.*.error", | |
| "timeout": "driver.*.*.timeout", | |
| "report": "driver.*.*.report" | |
| }, | |
| "one": { | |
| "any": "driver.*.one.*", | |
| "request": "driver.*.one.request", | |
| "response": "driver.*.one.response", | |
| "error": "driver.*.one.error", | |
| "timeout": "driver.*.one.timeout", | |
| "report": "driver.*.one.report" | |
| }, | |
| "many": { | |
| "any": "driver.*.many.*", | |
| "request": "driver.*.many.request", | |
| "response": "driver.*.many.response", | |
| "error": "driver.*.many.error", | |
| "timeout": "driver.*.many.timeout", | |
| "report": "driver.*.many.report" | |
| } | |
| }, | |
| "save": { | |
| "any": { | |
| "any": "driver.save.*.*", | |
| "request": "driver.save.*.request", | |
| "response": "driver.save.*.response", | |
| "error": "driver.save.*.error", | |
| "timeout": "driver.save.*.timeout", | |
| "report": "driver.save.*.report" | |
| }, | |
| "one": { | |
| "any": "driver.save.one.*", | |
| "request": "driver.save.one.request", | |
| "response": "driver.save.one.response", | |
| "error": "driver.save.one.error", | |
| "timeout": "driver.save.one.timeout", | |
| "report": "driver.save.one.report" | |
| }, | |
| "many": { | |
| "any": "driver.save.many.*", | |
| "request": "driver.save.many.request", | |
| "response": "driver.save.many.response", | |
| "error": "driver.save.many.error", | |
| "timeout": "driver.save.many.timeout", | |
| "report": "driver.save.many.report" | |
| } | |
| }, | |
| "delete": { | |
| "any": { | |
| "any": "driver.delete.*.*", | |
| "request": "driver.delete.*.request", | |
| "response": "driver.delete.*.response", | |
| "error": "driver.delete.*.error", | |
| "timeout": "driver.delete.*.timeout", | |
| "report": "driver.delete.*.report" | |
| }, | |
| "one": { | |
| "any": "driver.delete.one.*", | |
| "request": "driver.delete.one.request", | |
| "response": "driver.delete.one.response", | |
| "error": "driver.delete.one.error", | |
| "timeout": "driver.delete.one.timeout", | |
| "report": "driver.delete.one.report" | |
| }, | |
| "many": { | |
| "any": "driver.delete.many.*", | |
| "request": "driver.delete.many.request", | |
| "response": "driver.delete.many.response", | |
| "error": "driver.delete.many.error", | |
| "timeout": "driver.delete.many.timeout", | |
| "report": "driver.delete.many.report" | |
| } | |
| }, | |
| "get": { | |
| "any": { | |
| "any": "driver.get.*.*", | |
| "request": "driver.get.*.request", | |
| "response": "driver.get.*.response", | |
| "error": "driver.get.*.error", | |
| "timeout": "driver.get.*.timeout", | |
| "report": "driver.get.*.report" | |
| }, | |
| "one": { | |
| "any": "driver.get.one.*", | |
| "request": "driver.get.one.request", | |
| "response": "driver.get.one.response", | |
| "error": "driver.get.one.error", | |
| "timeout": "driver.get.one.timeout", | |
| "report": "driver.get.one.report" | |
| }, | |
| "many": { | |
| "any": "driver.get.many.*", | |
| "request": "driver.get.many.request", | |
| "response": "driver.get.many.response", | |
| "error": "driver.get.many.error", | |
| "timeout": "driver.get.many.timeout", | |
| "report": "driver.get.many.report" | |
| } | |
| } | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const | |
| bus = require('./bus'), | |
| _ = require('lodash'), | |
| postal = require('postal'), | |
| Promise = require('bluebird') | |
| ; | |
| var _data = [ | |
| {name: 'test-user-1'}, | |
| {name: 'test-user-2'}, | |
| {name: 'test-user-3'} | |
| ]; | |
| var notImplemented = function(address) { | |
| throw new Error(`Not Implemented: ${address}`); | |
| }; | |
| var implemented = { | |
| [bus.user.save.one.request] : function (user) { | |
| user.index = _data.length | |
| _data.push(user); | |
| postal.channel(bus.user.busKey).publish(bus.user.save.one.response, user); | |
| }, | |
| [bus.user.get.one.request]: function (crit) { | |
| var result = _.find(_data, crit); | |
| postal.channel(bus.user.busKey).publish(bus.user.get.one.response, result); | |
| }, | |
| [bus.user.get.many.request]: function (crit) { | |
| var result = _.filter(_data, crit); | |
| postal.channel(bus.user.busKey).publish(bus.user.get.one.response, result); | |
| }, | |
| [bus.user.delete.one.request]: function (crit) { | |
| var dataLength = _data.length; | |
| _.remove(_data, crit); | |
| postal.channel(bus.user.busKey).publish(bus.user.delete.one.response, {affected: dataLength - _data.length}); | |
| } | |
| }; | |
| var publish = function(address, payload) { | |
| if(implemented[address]) { | |
| implemented[address](payload); | |
| } | |
| else { | |
| notImplemented(address); | |
| } | |
| }; | |
| var subscribe = function(address) { | |
| // if(!bus.glossary[address]) throw new Error(`Address Not Implemented: ${address}`) | |
| return new Promise((resolve, reject) => { | |
| postal.channel(bus.user.busKey).subscribe(address, (data, env) => { | |
| resolve({data: data, env: env}); | |
| }); | |
| }); | |
| }; | |
| module.exports = { | |
| publish: publish, | |
| subscribe: subscribe, | |
| channel: postal.channel(bus.user.busKey) | |
| }; |
Author
Author
add blacklist feature to generator to specify any strings, and thus any entries in the map for given operations.
for example, if only one user should be saved at a time (bus.user.save.one.request) then adding 'bus.user.save.many.request' to the blacklist remove explicitly and well as implicit (if no bus.user.save.many.request then no bus.user.save.many.response)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
bus-book-generator.js yields bus-book.js