remi-decorate

1.2.0 • Public • Published

remi-decorate

A remi extension that adds the decorate method to the target

npm version Build Status Coverage Status

Installation

npm install --save remi remi-decorate

Usage

Registering the extension

const remi = require('remi')
const remiDecorate = require('remi-decorate')
 
const app = {}
const registrator = remi(app)
registrator.hook(remiDecorate())

Once the remi-decorate extension is registered, the remi plugins can decorate the target app.

The .decorate method can be used to extend the app's API.

function plugin (app, opts, next) {
  // The app can be decorated by one property at once
  app.decorate('sayHello', () => console.log('Hello world!'));
 
  // or by several properties at once
  app.decorate({
    uaCapital: 'Kyiv',
    uaTimezone: 'EET',
  });
 
  next()
}
 
plugin.attributes = {
  name: 'plugin',
}
 
// the decorations will be available in the other plugins
function plugin2 (app, opts, next) {
  app.sayHello()
  //> Hello world!
 
  console.log(app.uaCapital)
  //> Kyiv
 
  console.log(app.uaTimezone)
  //> EET
 
  next()
}
 
plugin2.attributes = {
  name: 'plugin2',
  dependencies: 'plugin',
}

decorate.emulateHapi(type, prop, method)

Hapi's server has a similar decorate function but it expects a type parameter which has to be the first. decorate.emulate allows to extend remi with a hapi alike decorate function that supports server decoration:

const remi = require('remi')
const remiDecorate = require('remi-decorate')
 
const app = {}
const registrator = remi(app)
registrator.hook(remiDecorate.emulateHapi())
 
 
// plugin
module.exports = (plugin, opts, next) => {
  plugin.decorate('server', 'foo', 'bar')
 
  console.log(plugin.foo)
  //> bar
 
  // this will throw an exception because the first parameter is not 'server'
  plugin.decorate('foo', 'bar')
 
  next()
}

Emulating hapi might be useful when developing some modules that want to reuse plugins that were developed for hapi.

License

MIT © Zoltan Kochan


Dependencies dependency status

None

Dev Dependencies devDependency status

  • chai: BDD/TDD assertion library for node.js and the browser. Test framework agnostic.
  • istanbul: Yet another JS code coverage tool that computes statement, line, function and branch coverage with module loader hooks to transparently add coverage when running tests. Supports all JS coverage use cases including unit tests, server side functional tests
  • mocha: simple, flexible, fun test framework
  • mos: A pluggable module that injects content into your markdown files via hidden JavaScript snippets
  • mos-plugin-readme: A mos plugin for generating README
  • object-assign: ES2015 Object.assign() ponyfill
  • plugiator: hapi plugins creator
  • remi: A plugin registrator.

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.2.0
    0
    • latest

Version History

Package Sidebar

Install

npm i remi-decorate

Weekly Downloads

1

Version

1.2.0

License

MIT

Last publish

Collaborators

  • zkochan