Have ideas to improve npm?Join in the discussion! »

This package has been deprecated

Author message:

base-methods has been deprecated and will no longer be updated. Update to base to use the latest changes.

base-methods

0.6.2 • Public • Published

base-methods NPM version Build Status

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 and use.

(TOC generated by verb)

Install

Install with npm

$ npm i base-methods --save

Usage

var base = require('base-methods');

inherit

function App() {
  base.call(this);
}
base.extend(App);
 
var app = new App();
app.set('a', 'b');
app.get('a');
//=> 'b';

instantiate

var app = base();
app.set('foo', 'bar');
console.log(app.foo);
//=> '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 = require('base-methods')
var base = Base.namespace('cache');
 
var app = base();
app.set('foo', 'bar');
console.log(app.cache.foo);
//=> 'bar'

API

Base

Create an instance of Base with options.

Params

  • options {Object}

Example

var app = new Base();
app.set('foo', 'bar');
console.log(app.get('foo'));
//=> '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 call
  • returns {Object}: Returns the item instance for chaining.

Example

var app = new Base()
  .use(foo)
  .use(bar)
  .use(baz)

.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.on('set', function(key, val) {
  // do something when `set` is emitted
});
 
app.set(key, value);
 
// also takes an object or array
app.set({name: 'Halle'});
app.set([{foo: 'bar'}, {baz: 'quux'}]);
console.log(app);
//=> {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.set('a.b.c', 'd');
app.get('a.b');
//=> {c: 'd'}
 
app.get(['a', 'b']);
//=> {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.set('foo', 'bar');
app.has('foo');
//=> 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.del(); // delete all
// or
app.del('foo');
// or
app.del(['foo', 'bar']);

.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`
define('render', function(str, locals) {
  return _.template(str)(locals);
});

.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.use(function(app) {
  app.foo = 'bar';
});
var app = new Base();
console.log(app.foo);
//=> '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.mixin(function fn(proto) {
  proto.foo = function(msg) {
    return 'foo ' + msg;
  };
  return fn;
});

.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.extend(Child);
Base.mixins(Child);

.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 and disable. 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.

Install

npm i base-methods

DownloadsWeekly Downloads

39

Version

0.6.2

License

MIT

Last publish

Collaborators

  • avatar
  • avatar
  • avatar