base-hapi

1.1.0 • Public • Published

base-hapi CircleCI

A base hapi configuration for my new API projects

Pre-Requisites

  1. node 8.10 or greater
  2. npm 6.1.0 or greater
  3. redis 4.0 or greater

Usage

const baseConfig = require('base-hapi');
(async () => {
    const server = await baseConfig;
    await server.start();
    console.log(`Server started at ${server.info.uri}`);
    // server started at http://localhost:4000
})();

If you want to change the HOST and PORT you can do it by setting up two variable environments

HOST=192.168.1.25
PORT=2000

Configuration

Out of the box base-hapi comes with many defaults:

  1. Catbox Redis with the following configuration
{
  name: process.env.CATBOX_REDIS_NAME || 'catbox-redis',
  // engine: require(catbox-redis),
  partition: process.env.CATBOX_PARTITION_NAME || 'cache',
  host: process.env.REDIS_HOST || 'localhost',
  port: process.env.REDIST_PORT || 6379,
},
  1. Sentry for logging management. You will need an account here Now you can pass your sentry environment and dsn with these environment variables
options: {
  environment: process.env.NODE_ENV,
  dsn: process.env.SENTRY_DNS,
},
  1. For authentication you must define a function with your logic inside of it.
async function validate(token) {
  // your custom validation here
  // return true to pass to the handler
  // return false to return a 401 to client
  // credentials can be used inside your handlers in the request object
  // request.auth.credentials
  return { isValid: true, credentials: { id: 1 } };
}
 
const server = await baseConfig({ validate });
  1. Adding plugins
const myPlugin = {
  name: 'my-plugin',
  register(server) {
    server.route({
      handler() {
        return 'I am a plugin';
      },
      method: 'GET',
      path: '/my-plugin',
    });
  },
  version: '1.0.0',
};
const plugins = [myPlugin];
const server = await baseConfig({ plugins });
  1. The objection-paginate plugin is included.
const server = await baseConfig();
server.route({
  method: 'GET',
  path: '/pagination',
  handler(request, h) {
    return h.paginate({ results: [], total: 20 }, request.query);
  },
});

If you do not specify a limit in the query parameters it will use the OFFSET_DEFAULT environment variable

OFFSET_DEFAULT = 10

Dependencies (5)

Dev Dependencies (0)

    Package Sidebar

    Install

    npm i base-hapi

    Weekly Downloads

    1

    Version

    1.1.0

    License

    MIT

    Unpacked Size

    10.5 kB

    Total Files

    13

    Last publish

    Collaborators

    • erivero