JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 29173
  • Score
    100M100P100Q130930F
  • License MIT

Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object that exposes all of the methods from the data-store library. Also now supports sub-stores!

Package Exports

  • base-store

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (base-store) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

base-store NPM version Build Status

Plugin for getting and persisting config values with your base-methods application. Adds a 'store' object that exposes all of the methods from the data-store library. Also now supports sub-stores!

(TOC generated by verb)

Install

Install with npm

$ npm i base-store --save

Example

Adds store methods for doing things like this:

app.set('a', 'b'); // does NOT persist
app.store.set('a', 'z'); // DOES persist

console.log(app.get('a'));
//=> 'b';
console.log(app.store.get('a'));
//=> 'z';

API

Add store and base to your application:

var store = require('base-store');
var Base = require('base-methods');
var base = new Base();

Register the store plugin with base-methods:

// store `name` is required
base.use(store('foo'));

// pass options (like cwd) as the second arg.
// default cwd is `~/data-store/`
base.use(store('foo', {cwd: 'a/b/c'}));

example

base.store
  .set('a', 'b')
  .set({c: 'd'})
  .set('e.f', 'g')

console.log(base.store.get('e.f'));
//=> 'g'

console.log(base.store.get());
//=> {name: 'app', data: {a: 'b', c: 'd', e: {f: 'g' }}}

console.log(base.store.data);
//=> {a: 'b', c: 'd', e: {f: 'g'}}

plugin params

  • name {String}: Store name.

  • options {Object}

  • cwd {String}: Current working directory for storage. If not defined, the user home directory is used, based on OS. This is the only option currently, other may be added in the future.

  • indent {Number}: Number passed to JSON.stringify when saving the data. Defaults to 2 if null or undefined

Sub-stores

Sub-stores are custom stores that are persisted onto their own objects in a folder inside the main store's directory.

Create a sub-store

app.store.create('foo');
// creates an instance of store on `app.store.foo`

app.store.foo.set('a', 'b');
app.store.foo.get('a');
//=> 'b'

methods

.store.set

Assign value to key and save to disk. Can be a key-value pair or an object.

Params

  • key {String}
  • val {any}: The value to save to key. Must be a valid JSON type: String, Number, Array or Object.
  • returns {Object} Store: for chaining

Example

// key, value
base.store.set('a', 'b');
//=> {a: 'b'}

// extend the store with an object
base.store.set({a: 'b'});
//=> {a: 'b'}

// extend the the given value
base.store.set('a', {b: 'c'});
base.store.set('a', {d: 'e'}, true);
//=> {a: {b 'c', d: 'e'}}

// overwrite the the given value
base.store.set('a', {b: 'c'});
base.store.set('a', {d: 'e'});
//=> {d: 'e'}

.store.union

Add or append an array of unique values to the given key.

Params

  • key {String}
  • returns {any}: The array to add or append for key.

Example

base.store.union('a', ['a']);
base.store.union('a', ['b']);
base.store.union('a', ['c']);
base.store.get('a');
//=> ['a', 'b', 'c']

.store.get

Get the stored value of key, or return the entire store if no key is defined.

Params

  • key {String}
  • returns {any}: The value to store for key.

Example

base.store.set('a', {b: 'c'});
base.store.get('a');
//=> {b: 'c'}

base.store.get();
//=> {b: 'c'}

.store.has

Returns true if the specified key has truthy value.

Params

  • key {String}
  • returns {Boolean}: Returns true if key has

Example

base.store.set('a', 'b');
base.store.set('c', null);
base.store.has('a'); //=> true
base.store.has('c'); //=> false
base.store.has('d'); //=> false

.store.hasOwn

Returns true if the specified key exists.

Params

  • key {String}
  • returns {Boolean}: Returns true if key exists

Example

base.store.set('a', 'b');
base.store.set('b', false);
base.store.set('c', null);
base.store.set('d', true);

base.store.hasOwn('a'); //=> true
base.store.hasOwn('b'); //=> true
base.store.hasOwn('c'); //=> true
base.store.hasOwn('d'); //=> true
base.store.hasOwn('foo'); //=> false

.store.save

Persist the store to disk.

Params

  • dest {String}: Optionally define a different destination than the default path.

Example

base.store.save();

.store.del

Delete keys from the store, or delete the entire store if no keys are passed. A del event is also emitted for each key deleted.

Note that to delete the entire store you must pass {force: true}

Params

  • keys {String|Array|Object}: Keys to remove, or options.
  • options {Object}

Example

base.store.del();

// to delete paths outside cwd
base.store.del({force: true});

History

v0.3.1

  • Sub-stores are easier to create and get. You can now do app.store.create('foo') to create a sub-store, which is then available as app.store.foo.

v0.3.0

  • Introducing sub-stores!

Other plugins for extending base-methods:

  • base-cli: Plugin for base-methods that maps built-in methods to CLI args (also supports methods from a… more | homepage
  • base-data: adds a data method to base-methods. | homepage
  • base-methods: Starter for creating a node.js application with a handful of common methods, like set, get,… more | homepage
  • base-options: Adds a few options methods to base-methods, like option, enable and disable. See the readme… more | homepage
  • base-plugins: Upgrade's plugin support in base-methods to allow plugins to be called any time after init. | 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 17, 2015.