Socket
Socket
Sign inDemoInstall

waif

Package Overview
Dependencies
145
Maintainers
1
Versions
20
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    waif

a micro-microservices library


Version published
Weekly downloads
24
increased by4.35%
Maintainers
1
Install size
9.98 MB
Created
Weekly downloads
 

Readme

Source

Waif

Waif provides the smallest possible abstraction that would allow you to
to write an express-based microservice that can be used as a local library
or a remote instance.

How it works

Waif is a thin wrapper around express.js when we declare our
services, and a thin wrapper around request when we call them.

It splits the declaration and implementation of the services into separate files.

Doing this allows you the greatest amount of flexibility and scaleability,
since you can run the service in many environments.

Service Entry Point Example

Each microservice can be used and re-used in many different contexts, therefor there is a separate step where you configure all the services you will use, and where they will be accessed.

// file: production.js

// get an instance of waif
var waif = require('waif')();

// wrap standard middleware
var wrap = require('waif/wrap');

// maps to external service, on a random local port.
waif('user')
  .pipe('/user/:id', 'http://user.example.com/v3/:id')
  .listen(0);

var service = require('./src/my-service');
wait('my-service')
  .send('/ping', 'pong')
  .use(wrap, myLogMiddleware)
  .use(service, { property: 'value' })
  .listen(3000);

Service Example

// file: src/my-service.js

// always return a function
module.exports = function(config) {
  // you can use anything that is connect-like.
  var app = require('express')();

  // services are passed these as context 
  var waif = this.waif;
  var service = this.service;

  // map the defined user service
  var user = waif('user');

  // set up any routes you want to use
  app.get('/profile/:userId', function(req, res, next) {

    // the services registered are used just like request.
    user(req.param.userId, function(err, resp, body) {
      if (err || resp.statusCode !== 200) { return next(resp.statusCode); }

      res.render('profile', body);
    });
  });

  // return your middleware instead of listening.
  return app;
};

About Service Configuration

Each repository may contain zero or more of these entry points, which may represent one or more environments.

These may map services differently depending on how you need to access them.

How the configuration gets into Waif is entirely up to the developer. It just provides the API to declare them, in a way that the services don't need to care about it.

Acknowledgements

Waif was initially developed by Wayfinder and used to build services deployed with Longshoreman.

Keywords

FAQs

Last updated on 03 Dec 2014

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc