Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
base-store
Advanced tools
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!
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 --save
Adds store
methods for doing things like this:
app.store.set('a', 'z'); // DOES persist
console.log(app.store.get('a'));
//=> 'z';
Add a .store
method to your base application:
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
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-store
app.store.foo.set('a', 'b');
// get the value from parent store
app.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 to JSON.stringify
when saving the data. Defaults to 2
if null
or undefined
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 chainingExample
// 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'}
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']
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'}
Returns true
if the specified key
has truthy value.
Params
key
{String}returns
{Boolean}: Returns true if key
hasExample
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
Returns true
if the specified key
exists.
Params
key
{String}returns
{Boolean}: Returns true if key
existsExample
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
Persist 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 cwd
base.store.del({force: true});
v0.3.1
app.store.create('foo')
to create a sub-store, which is then available as app.store.foo
.v0.3.0
Other plugins for extending your base application:
option
, enable
and disable
. See the readme… more | homepagePull 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 docs
Or, if verb is installed globally:
$ verb
Install dev dependencies:
$ npm install -d && npm test
Jon Schlinkert
Copyright © 2016, Jon Schlinkert. Released under the MIT license.
This file was generated by verb, v0.9.0, on May 19, 2016.
FAQs
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!
The npm package base-store receives a total of 24,113 weekly downloads. As such, base-store popularity was classified as popular.
We found that base-store demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.