New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

base-hapi

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

base-hapi

A base hapi configuration for my new API projects

  • 1.1.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

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

Keywords

FAQs

Package last updated on 01 Jul 2018

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc