New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

fastify-dynareg

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fastify-dynareg

Dynamic plugin register for Fastify

latest
Source
npmnpm
Version
1.1.0
Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

fastify-dynareg

npm version JavaScript Style Guide Build Status Coverage Status

This package is technically a plugin builder for Fastify. It exports a single function that accepts two arguments, a package name and a boolean indicating if that package is required, and returns a valid Fastify plugin. This library can be used to define both optional or parametric plugins.

dynareg(packageName[, isRequired])

  • packageName <String> The plugin's package name to require().
  • isRequired <Boolean> Defaults to false.
  • Returns: <FastifyPlugin>

Optional plugin presence

In the next example, this library is used to make a plugin (fastify-blipp) optional. This behavior can be helpful for packages only used during development. If the plugin is not present, a nice debug log is written, and no errors are thrown.

const fastify = require('fastify')
const dynareg = require('fastify-dynareg')

const app = fastify()

// This plugin will try to register fastify-blipp if It's installed
const optionalBlipp = dynareg('fastify-blipp')

// You can still pass plugin options as usual
app.register(optionalBlipp, {
  my: 'options'
})

app.addHook('onReady', async () => {
  // Because fastify-blipp is now optional
  if (app.blipp) {
    app.blipp()
  }
})

// TODO: Setup and start you application...

Parametric plugin presence

The plugin presence can also be parametric. Passing true as second argument will require the plugin presence.

const fastify = require('fastify')
const dynareg = require('fastify-dynareg')

const app = fastify()

// Force fastify-blipp presence during development
const developmentBlipp = dynareg(
  'fastify-blipp',
  process.env.NODE_ENV !== 'production'
)

app.register(developmentBlipp)

app.addHook('onReady', async () => {
  // Because fastify-blipp is now optional
  if (app.blipp) {
    app.blipp()
  }
})

// TODO: Setup and start you application...

Fully parametric plugin

In the last example, both plugin's name and presence are parametric.

const fastify = require('fastify')
const dynareg = require('fastify-dynareg')

const app = fastify()

// Declare a dynamic production plugin
const myDynamicPlugin = dynareg(
  process.env.FASTIFY_PLUGIN,
  process.env.NODE_ENV === 'production'
)

app.register(myDynamicPlugin, {
  my: 'options'
})

// TODO: Setup and start you application...

Example

const fastify = require('fastify')
const dynareg = require('fastify-dynareg')

const app = fastify({
  logger: true
})

// Force fastify-blipp to be registered when env is not production
app.register(
  dynareg(
    'fastify-blipp',
    process.env.NODE_ENV !== 'production'
  )
)

app.get('/', async (request, reply) => {
  return { hello: 'world' }
})

const start = async () => {
  try {
    await app.listen(3000)
    // Use conditional blipp
    if (app.blipp) {
      app.blipp()
    }
    app.log.info(`server listening on ${app.server.address().port}`)
  } catch (err) {
    app.log.error(err)
    process.exit(1)
  }
}

start()

Keywords

fastify

FAQs

Package last updated on 27 Aug 2020

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