sfcode
An Online Competing and Development Environment
cache-base NPM version NPM monthly downloads NPM total downloads Linux Build Status

Basic object cache with get, set, del, and has methods for node.js/javascript projects.

Install

Install with npm:

$ npm install --save cache-base

Usage

var Cache = require('cache-base');
// instantiate
var app = new Cache();
// set values
app.set('a', 'b');
app.set('c.d', 'e');
// get values
app.get('a');
//=> 'b'
app.get('c');
//=> {d: 'e'}
console.log(app.cache);
//=> {a: 'b'}

Inherit

var util = require('util');
var Cache = require('cache-base');
function MyApp() {
Cache.call(this);
}
util.inherits(MyApp, Cache);
var app = new MyApp();
app.set('a', 'b');
app.get('a');
//=> 'b'

Namespace

Define a custom property for storing values.

var Cache = require('cache-base').namespace('data');
var app = new Cache();
app.set('a', 'b');
console.log(app.data);
//=> {a: 'b'}

API

<a href="index.js#L29">namespace</a>

Create a Cache constructor that when instantiated will store values on the given prop.

Params

  • prop **{String}**: The property name to use for storing values.
  • returns **{Function}**: Returns a custom Cache constructor

Example

var Cache = require('cache-base').namespace('data');
var cache = new Cache();
cache.set('foo', 'bar');
//=> {data: {foo: 'bar'}}

<a href="index.js#L43">Cache</a>

Create a new Cache. Internally the Cache constructor is created using the namespace function, with cache defined as the storage object.

Params

  • cache **{Object}**: Optionally pass an object to initialize with.

Example

var app = new Cache();

<a href="index.js#L84">.set</a>

Assign value to key. Also emits set with the key and value.

Params

  • key **{String}**
  • value **{any}**
  • returns **{Object}**: Returns the instance for chaining.

Events

  • emits: set with key and value as arguments.

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'}

<a href="index.js#L114">.union</a>

Union array to key. Also emits set with the key and value.

Params

  • key **{String}**
  • value **{any}**
  • returns **{Object}**: Returns the instance for chaining.

Example

app.union('a.b', ['foo']);
app.union('a.b', ['bar']);
console.log(app.get('a'));
//=> {b: ['foo', 'bar']}

<a href="index.js#L144">.get</a>

Return the value of key. Dot notation may be used to get nested property values.

Params

  • key **{String}**: The name of the property to get. Dot-notation may be used.
  • returns **{any}**: Returns the value of key

Events

  • emits: get with key and value as arguments.

Example

app.set('a.b.c', 'd');
app.get('a.b');
//=> {c: 'd'}
app.get(['a', 'b']);
//=> {c: 'd'}

<a href="index.js#L171">.has</a>

Return true if app has a stored value for key, false only if value is undefined.

Params

  • key **{String}**
  • returns **{Boolean}**

Events

  • emits: has with key and true or false as arguments.

Example

app.set('foo', 'bar');
app.has('foo');
//=> true

<a href="index.js#L199">.del</a>

Delete one or more properties from the instance.

Params

  • key **{String|Array}**: Property name or array of property names.
  • returns **{Object}**: Returns the instance for chaining.

Events

  • emits: del with the key as the only argument.

Example

app.del(); // delete all
// or
app.del('foo');
// or
app.del(['foo', 'bar']);

<a href="index.js#L218">.clear</a>

Reset the entire cache to an empty object.

Example

app.clear();

<a href="index.js#L235">.visit</a>

Visit method over the properties in the given object, or map visit over the object-elements in an array.

Params

  • method **{String}**: The name of the base method to call.
  • val **{Object|Array}**: The object or array to iterate over.
  • returns **{Object}**: Returns the instance for chaining.

About

Related projects

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Contributors

Commits Contributor
54 jonschlinkert
2 wtgtybhertgeghgtwtg

Building docs

_(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)_

To generate the readme, run the following command:

$ npm install -g verbose/verb#dev verb-generate-readme && verb

Running tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

$ npm install && npm test

Author

Jon Schlinkert

License

Copyright © 2017, Jon Schlinkert. Released under the [MIT License](LICENSE).


This file was generated by verb-generate-readme, v0.6.0, on July 22, 2017.