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!
You might also be interested in base-data.
Install with npm:
$ npm install base-store --saveAdds store methods for doing things like this:
app.store.set('a','z');// DOES persistconsole.log(app.store.get('a'));//=> 'z';Add a .store method to your base application:
varstore=require('base-store');varBase=require('base');varbase=newBase();// store `name` is requiredbase.use(store('foo'));// optionally define a cwd to use for persisting the store// default cwd is `~/data-store/`base.use(store('foo',{cwd: 'a/b/c'}));example usage
base.store.set('a','b').set({c: 'd'}).set('e.f','g')console.log(base.store.get('e.f'));//=> 'g'console.log(base.store.data);//=>{a: 'b', c: 'd', e:{f: 'g'}}A sub-store is a custom store that is persisted to its own file in a sub-folder of its "parent" store.
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'Sub-store data is also persisted to a property on the "parent" store:
// set data on a sub-storeapp.store.foo.set('a','b');// get the value from parent storeapp.store.get('foo.a');//=> 'b'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 toJSON.stringifywhen saving the data. Defaults to2ifnullorundefined
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 tokey. Must be a valid JSON type: String, Number, Array or Object.returns{Object}Store: for chaining
Example
// key, valuebase.store.set('a','b');//=>{a: 'b'}// extend the store with an objectbase.store.set({a: 'b'});//=>{a: 'b'}// extend the the given valuebase.store.set('a',{b: 'c'});base.store.set('a',{d: 'e'},true);//=>{a:{b 'c', d: 'e'}}// overwrite the the given valuebase.store.set('a',{b: 'c'});base.store.set('a',{d: 'e'});//=>{d: 'e'}Add or append an array of unique values to the given key.
Params
key{String}returns{any}: The array to add or append forkey.
Example
base.store.union('a',['a']);base.store.union('a',['b']);base.store.union('a',['c']);base.store.get('a');//=> ['a', 'b', 'c']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 forkey.
Example
base.store.set('a',{b: 'c'});base.store.get('a');//=>{b: 'c'}base.store.get();//=>{b: 'c'}Returns true if the specified key has truthy value.
Params
key{String}returns{Boolean}: Returns true ifkeyhas
Example
base.store.set('a','b');base.store.set('c',null);base.store.has('a');//=> truebase.store.has('c');//=> falsebase.store.has('d');//=> falseReturns true if the specified key exists.
Params
key{String}returns{Boolean}: Returns true ifkeyexists
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');//=> truebase.store.hasOwn('b');//=> truebase.store.hasOwn('c');//=> truebase.store.hasOwn('d');//=> truebase.store.hasOwn('foo');//=> falsePersist the store to disk.
Params
dest{String}: Optionally define a different destination than the default path.
Example
base.store.save();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 cwdbase.store.del({force: true});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 asapp.store.foo.
v0.3.0
- Introducing sub-stores!
Other plugins for extending your base application:
- base-options: Adds a few options methods to base-methods, like
option,enableanddisable. 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 applications to allow plugins to be called any time after… more | homepage
- base-questions: Plugin for base-methods that adds methods for prompting the user and storing the answers on… more | homepage
- base: base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… more | homepage
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Generate readme and API documentation with verb:
$ npm install verb && npm run docsOr, if verb is installed globally:
$ verbInstall dev dependencies:
$ npm install -d && npm testJon Schlinkert
Copyright © 2016, Jon Schlinkert. Released under the MIT license.
This file was generated by verb, v0.9.0, on May 19, 2016.