plug-and-play
Advanced tools
Comparing version 2.2.0 to 2.3.0
@@ -5,2 +5,4 @@ # Changelog | ||
## [2.3.0](https://github.com/adaltas/node-plug-and-play/compare/v2.2.0...v2.3.0) (2021-03-23) | ||
## [2.2.0](https://github.com/adaltas/node-plug-and-play/compare/v2.1.0...v2.2.0) (2021-03-04) | ||
@@ -7,0 +9,0 @@ |
{ | ||
"name": "plug-and-play", | ||
"version": "2.2.0", | ||
"version": "2.3.0", | ||
"author": "David Worms <david@adaltas.com>", | ||
@@ -5,0 +5,0 @@ "bugs": { |
100
README.md
[![Build Status](https://secure.travis-ci.org/adaltas/node-plug-and-play.svg)](http://travis-ci.org/adaltas/node-plug-and-play) | ||
# Node.js Plugable package | ||
# Node.js Plug-And-Play package | ||
@@ -87,1 +87,99 @@ Easily create hooks and let users plug their own logic across your code to make it extensible by everyone with new features. | ||
``` | ||
## API | ||
The package export a function to create a new instance: | ||
``` | ||
const plugandplay = require('plug-and-play') | ||
const plugins = plugandplay() | ||
``` | ||
It accepts an option object with the properties: | ||
* `args` ([string]) | ||
Arguments to pass to the plugin when they are instantiated, only apply if the plugin is defined as a function. | ||
* `chain` (any) | ||
The value returned by Plug-And-Play `register` function, default to the Plug-And-Play instance. | ||
* `parent` (plugandplay) | ||
A parent instance of Plug-And-Play to inherit plugins from. | ||
* `plugins` ([plugin]) | ||
List of plugins to register | ||
### Plugin object | ||
A plugin is an object literal with the properties: | ||
* `hooks` ({name: hook}) | ||
List of hooks identified by hook names. | ||
* `name` (string) | ||
Name of the plugin. | ||
Alternatively, a plugin can be defined as a function which return the same plugin object and receive the `args` property from the Plug-And-Play function. | ||
### Hook object | ||
A hook is an object literal with the properties: | ||
* `after` ([string]) | ||
List of plugin names with hook of the same name are to be executed before, a string is coerced to an array. | ||
* `name` (string) | ||
The name of the hook. | ||
* `before` ([string]) | ||
List of plugin names with hook of the same name are to be executed after, a string is coerced to an array. | ||
Note, when referencing plugins with `after` and `before`, the plugins do not need to exists. If they do, they are required to export a hook of the same name. | ||
### Call function | ||
The function signature is: | ||
``` | ||
call({args = [], handler, hooks = [], name}) | ||
``` | ||
Execute a hander function and its associated hooks. The first argument is an object with the properties: | ||
* `args` (any) | ||
The argument pass to the handler function as well as all hook handlers | ||
* `handler` (function) | ||
The function to decorate, receive the value assocaited with the `args` property. | ||
* `name` (string) | ||
The plugin hook to refer to. | ||
* `hooks` ([hook]) | ||
List of completary hooks from the end user. | ||
### Get function | ||
The function signature is: | ||
``` | ||
get({name, hooks, sort}) | ||
``` | ||
The `get` function return hooks. It expects a property `option` which is a literal object with the properties: | ||
* `name` (string) | ||
Name of the hook. | ||
* `hooks` ([hook]) | ||
List of completary hooks from the end user. | ||
* `sort` (boolean) | ||
Sort the hooks relatively to each other using the `after` and `before` properties. | ||
### Register function | ||
The function signature is: | ||
``` | ||
register(plugin) | ||
``` | ||
Plugin can be provided when instantiating Plug-And-Play by passing the `plugins` property or they can be provided later on by calling the `register` function. The function only accept one argument, the `plugin` property: | ||
* `plugin` (plugin) | ||
A plugin object. | ||
## Roadmap | ||
Worth considering: move the `name` property of `get` and `call` into the first argument and move the other properties into a second argument named option. |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
51549
185