0.2.0 • Published 7 years ago
modfun v0.2.0
modfun :cloud:
Moderate fun with Modular Functions: a fast no-dependencies function router for cloud functions.
var modfun = require('modfun')
var controller = {
getUser = function(req, res) {
var [ username ] = req.params
...
res.status(200).json(user)
}
}
var app = modfun(controller)
GET http://cloudfunction/project/getUser/[username]
Enhance with middleware and custom error handlers:
var modfun = require('modfun')
var morgan = require('morgan')
var cors = require('cors')
var jwt = require('express-jwt')
...
exports.app = modfun(
{
authenticate: authenticate,
user: [authorize, getUser] // middleware preceding operation
},
{
middleware: [logger], // global middleware that runs every time
errorHandler: (err, req, res) => res.status(500).send(err.message) // custom error handler
}
)
Easy to expose an existing module to Google Cloud Functions:
user-module.js
exports.get = (username) => {
...
return user;
}
exports.setNickname = (username, nickname) => {
...
return;
}
index.js
var modfun = require('modfun')
var myModule = require('./user-module')
exports.user = modfun(myModule, { mode: 'function' })
And apply commonly used middleware:
var modfun = require('modfun')
var morgan = require('morgan')
var cors = require('cors')
var jwt = require('express-jwt')
var controller = require('./service-controller')
exports.service = modfun(controller, [ morgan('tiny'), cors(), jwt(secret) ])
Enforce correct number of input arguments for your functions with the arity checker:
var modfun = require('modfun')
const app = modfun(
{
authenticate: authenticate, // /authenticate
user: [authorize, modfun.arity(1), getUser], // /user/jdoe
updatePIN: [authorize, modfun.arity(2), updatePIN] // /updatePIN/jdoe/9876
}
);
Features
- Basic routing to functions
- Parameter parsing
- Automatic HTTP reponse building
- Connect/Express-like middleware support
- Google Cloud Functions
- Future AWS Lambda
- Can act as a middleware on other Connect-based frameworks
Installation
$ npm install modfun
Or
$ yarn add modfun