agnostic

A library that allows other projects to be agnostic of particular http server implementation.

Usage no npm install needed!

<script type="module">
  import agnostic from 'https://cdn.skypack.dev/agnostic';
</script>

README

agnostic NPM Module

A library that allows other projects to be agnostic of particular http server implementation.

Linux Build MacOS Build Windows Build

Coverage Status Dependency Status bitHound Overall Score

Notice of change of ownership: Starting version 1.0.0 this package has changed it's owner and goals. Old version (0.0.0) is still available on npm via npm install agnostic@0.0.0 or on github. Thank you.

node / libs express restify hapi http
v0.12 3.x, 4.x 2.x, 3.x, 4.x 8.x, 9.x, 10.x
io.js 3.x, 4.x 2.x, 3.x, 4.x 8.x, 9.x, 10.x
v4 3.x, 4.x 2.x, 3.x, 4.x 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x
v5 3.x, 4.x 2.x, 3.x, 4.x 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x
v6 3.x, 4.x 2.x, 3.x, 4.x 8.x, 9.x, 10.x, 11.x, 12.x, 13.x, 14.x, 15.x

Install

npm install --save agnostic

Example

Your Library

var agnostic = require('agnostic');

module.exports = agnostic(myRequestHandler);

/**
 * Does cool things
 *
 * @param {EventEmitter} request - request object, mimicking IncomingMessage
 * @param {Function} respond - callback to respond to the request
 */
function myRequestHandler(request, respond)
{
  // do cool things
  // `request.body` - parsed request body
  // `request.query` - parsed query string
  // `respond` is a function with the following signature:
  // `respond([code], [content[, options]]);`
  respond(200, 'Received hit to ' + request.url, {headers: {'X-Powered-By': 'AllCoolThings'}});
}

Express express

var express = require('express');
var coolLib = require('above-cool-lib');

var app = express();

app.all('/my-endpoint', coolLib);

// start the server
app.listen(1337);

Restify restify

var restify = require('restify');
var coolLib = require('above-cool-lib');

var server = restify.createServer();

server.get('/my-endpoint', coolLib);
server.post('/my-endpoint', coolLib);

// start the server
server.listen(1337);

Hapi hapi

var Hapi = require('hapi');
var coolLib = require('above-cool-lib');

var server = new Hapi.Server();

// setup hapi server
server.connection({ port: 1337 });

server.route({
  method : ['GET', 'POST'], // Hapi uses GET handler for HEAD requests
  path   : '/my-endpoint',
  handler: coolLib
});

// start the server
server.start();

http http

  var http    = require('http');
  var coolLib = require('above-cool-lib');

  server = http.createServer(coolLib);

  // start the server
  server.listen(1337);

Want to Know More?

More examples can be found in test folder.

Or open an issue with questions and/or suggestions.

License

Agnostic is released under the MIT license.