base-methods is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting with a handful of common methods, like
set
,get
,del
anduse
.
(TOC generated by verb)
Install
Install with npm
$ npm i base-methods --save
Usage
var base = ;
inherit
{ base;}base; var app = ;app;app;//=> 'b';
instantiate
var app = ;app;console;//=> 'bar'
Inherit or instantiate with a namespace
A .namespace()
method is exposed on the exported function to allow you to create a custom namespace for setting/getting on the instance.
var Base = var base = Base; var app = ;app;console;//=> 'bar'
API
Base
Create an instance of Base
with options
.
Params
options
{Object}
Example
var app = ;app;console;//=> 'bar'
.use
Define a plugin function to be called immediately upon init. Plugins are chainable and the only parameter exposed to the plugin is the application instance.
Params
fn
{Function}: plugin function to callreturns
{Object}: Returns the item instance for chaining.
Example
var app =
.set
Assign value
to key
. Also emits set
with the key and value.
Params
key
{String}value
{any}returns
{Object}: Returns the instance for chaining.
Example
app; app; // also takes an object or arrayapp;app;console;//=> {name: 'Halle', foo: 'bar', baz: 'quux'}
.get
Return the stored value of key
. Dot notation may be used to get [nested property values][get-value].
Params
key
{any}returns
{any}
Example
app;app;//=> {c: 'd'} app;//=> {c: 'd'}
.has
Return true if app has a stored value for key
, false only if typeof
value is undefined
.
Params
key
{any}returns
{any}
Example
app;app;//=> true
.del
Delete key
from the instance. Also emits del
with the key of the deleted item.
Params
key
{String}returns
{Object}: Returns the instance for chaining.
Example
app; // delete all// orapp;// orapp;
.define
Define a non-enumerable property on the instance.
Params
key
{String}value
{any}returns
{Object}: Returns the instance for chaining.
Example
// arbitrary `render` function using lodash `template`;
.visit
Visit method
over the items in the given object, or map
visit over the objects in an array.
Params
method
{String}val
{Object|Array}returns
{Object}: Returns the instance for chaining.
.mixin
Mix property key
onto the Base prototype. If base-methods
is inherited using Base.extend
this method will be overridden
by a new mixin
method that will only add properties to the
prototype of the inheriting application.
Params
key
{String}val
{Object|Array}returns
{Object}: Returns the instance for chaining.
.use
Static method for adding global plugin functions that will be added to an instance when created.
Params
fn
{Function}: Plugin function to use on each instance.
Example
Base;var app = ;console;//=> 'bar'
.extend
Static method for inheriting both the prototype and
static methods of the Base
class. See [class-utils][]
for more details.
.Base.mixin
Static method for adding mixins to the prototype. When a function is returned from the mixin plugin, it will be added to an array so it can be used on inheriting classes via Base.mixins(Child)
.
Params
fn
{Function}: Function to call
Example
Base;
.Base.mixins
Static method for running currently saved global mixin functions against a child constructor.
Params
Child
{Function}: Constructor function of a child class
Example
Base;Base;
.inherit
Similar to util.inherit
, but copies all static properties,
prototype properties, and descriptors from Provider
to Receiver
.
[class-utils][] for more details.
Related projects
There are a number of different plugins available for extending base-methods. Let us know if you create your own!
- base-argv: Plugin for base-methods that simplifies mapping argv arguments to tasks, commands, and options | homepage
- base-cli: Plugin for base-methods that maps built-in methods to CLI args (also supports methods from a… more | homepage
- base-config: base-methods plugin that adds a
config
method for mapping declarative configuration values to other 'base'… more | homepage - base-data: adds a
data
method to base-methods. | homepage - base-fs: base-methods plugin that adds vinyl-fs methods to your 'base' application for working with the file… more | homepage
- base-list: base-runner plugin that prompts the user to choose from a list of registered applications and… more | homepage
- base-options: Adds a few options methods to base-methods, like
option
,enable
anddisable
. See the readme… more | homepage - base-pipeline: base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines. | homepage
- base-plugins: Upgrade's plugin support in base-methods to allow plugins to be called any time after init. | homepage
- base-questions: Plugin for base-methods that adds methods for prompting the user and storing the answers on… more | homepage
- base-runner: Orchestrate multiple instances of base-methods at once. | homepage
- base-store: Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object… more | homepage
Running tests
Install dev dependencies:
$ npm i -d && npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Author
Jon Schlinkert
License
Copyright © 2015 Jon Schlinkert Released under the MIT license.
This file was generated by verb on December 20, 2015.