StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
StackGenVis/frontend/node_modules/base-store/README.md

301 lines
7.5 KiB

4 years ago
# base-store [![NPM version](https://img.shields.io/npm/v/base-store.svg?style=flat)](https://www.npmjs.com/package/base-store) [![NPM downloads](https://img.shields.io/npm/dm/base-store.svg?style=flat)](https://npmjs.org/package/base-store) [![Build Status](https://img.shields.io/travis/node-base/base-store.svg?style=flat)](https://travis-ci.org/node-base/base-store)
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](https://github.com/node-base/base-data).
## Install
Install with [npm](https://www.npmjs.com/):
```sh
$ npm install base-store --save
```
## Usage
Adds `store` methods for doing things like this:
```js
app.store.set('a', 'z'); // DOES persist
console.log(app.store.get('a'));
//=> 'z';
```
## API
Add a `.store` method to your [base](https://github.com/node-base/base) application:
```js
var store = require('base-store');
var Base = require('base');
var base = new Base();
// store `name` is required
base.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**
```js
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'}}
```
## Sub-stores
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**
```js
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:
```js
// set data on a sub-store
app.store.foo.set('a', 'b');
// get the value from parent store
app.store.get('foo.a');
//=> 'b'
```
### 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`
## 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**
```js
// 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**
```js
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**
```js
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**
```js
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**
```js
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**
```js
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**
```js
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!
## Related projects
Other plugins for extending your [base](https://github.com/node-base/base) application:
* [base-options](https://www.npmjs.com/package/base-options): Adds a few options methods to base-methods, like `option`, `enable` and `disable`. See the readme… [more](https://www.npmjs.com/package/base-options) | [homepage](https://github.com/jonschlinkert/base-options)
* [base-pipeline](https://www.npmjs.com/package/base-pipeline): base-methods plugin that adds pipeline and plugin methods for dynamically composing streaming plugin pipelines. | [homepage](https://github.com/node-base/base-pipeline)
* [base-plugins](https://www.npmjs.com/package/base-plugins): Upgrade's plugin support in base applications to allow plugins to be called any time after… [more](https://www.npmjs.com/package/base-plugins) | [homepage](https://github.com/node-base/base-plugins)
* [base-questions](https://www.npmjs.com/package/base-questions): Plugin for base-methods that adds methods for prompting the user and storing the answers on… [more](https://www.npmjs.com/package/base-questions) | [homepage](https://github.com/node-base/base-questions)
* [base](https://www.npmjs.com/package/base): base is the foundation for creating modular, unit testable and highly pluggable node.js applications, starting… [more](https://www.npmjs.com/package/base) | [homepage](https://github.com/node-base/base)
## Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/node-base/base-store/issues/new).
## Building docs
Generate readme and API documentation with [verb](https://github.com/verbose/verb):
```sh
$ npm install verb && npm run docs
```
Or, if [verb](https://github.com/verbose/verb) is installed globally:
```sh
$ verb
```
## Running tests
Install dev dependencies:
```sh
$ npm install -d && npm test
```
## Author
**Jon Schlinkert**
* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
## License
Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT license](https://github.com/node-base/base-store/blob/master/LICENSE).
***
_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on May 19, 2016._