Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
adds a
data
method to base-methods.
(TOC generated by verb using markdown-toc)
Install with npm:
$ npm install --save base-data
Adds a data
method to base that can be used for setting, getting and loading data onto a specified object in your application.
var Base = require('base');
var data = require('base-data');
// instantiate `Base`
var base = new Base();
// add `data` as a plugin
base.use(data());
Examples
Add data:
app.data('a', 'b');
app.data({c: 'd'});
app.data('e', ['f']);
console.log(app.cache.data);
//=> {a: 'b', c: 'd', e: ['f']}
cache.data
By default, all data is loaded onto app.cache.data
. This can be customized by passing the property to use when the plugin is initialized.
For example, the following set app.foo
as object for storing data:
app.use(data('foo'));
app.data('a', 'b');
console.log(app.foo);
//=> {a: 'b'}
Register a data loader for loading data onto app.cache.data
.
Params
ext
{String}: The file extension for to match to the loaderfn
{Function}: The loader function.Example
var yaml = require('js-yaml');
app.dataLoader('yml', function(str, fp) {
return yaml.safeLoad(str);
});
app.data('foo.yml');
//=> loads and parses `foo.yml` as yaml
Load data onto app.cache.data
Params
key
{String|Object}: Key of the value to set, or object to extend.val
{any}returns
{Object}: Returns the instance of Template
for chainingExample
console.log(app.cache.data);
//=> {};
app.data('a', 'b');
app.data({c: 'd'});
console.log(app.cache.data);
//=> {a: 'b', c: 'd'}
// set an array
app.data('e', ['f']);
// overwrite the array
app.data('e', ['g']);
// update the array
app.data('e', ['h'], true);
console.log(app.cache.data.e);
//=> ['g', 'h']
Shallow extend an object onto app.cache.data
.
Params
key
{String|Object}: Property name or object to extend onto app.cache.data
. Dot-notation may be used for extending nested properties.value
{Object}: The object to extend onto app.cache.data
returns
{Object}: returns the instance for chainingExample
app.data({a: {b: {c: 'd'}}});
app.data.extend('a.b', {x: 'y'});
console.log(app.get('a.b'));
//=> {c: 'd', x: 'y'}
Deeply merge an object onto app.cache.data
.
Params
key
{String|Object}: Property name or object to merge onto app.cache.data
. Dot-notation may be used for merging nested properties.value
{Object}: The object to merge onto app.cache.data
returns
{Object}: returns the instance for chainingExample
app.data({a: {b: {c: {d: {e: 'f'}}}}});
app.data.merge('a.b', {c: {d: {g: 'h'}}});
console.log(app.get('a.b'));
//=> {c: {d: {e: 'f', g: 'h'}}}
Union the given value onto a new or existing array value on app.cache.data
.
Params
key
{String}: Property name. Dot-notation may be used for nested properties.array
{Object}: The array to add or union on app.cache.data
returns
{Object}: returns the instance for chainingExample
app.data({a: {b: ['c', 'd']}});
app.data.union('a.b', ['e', 'f']}});
console.log(app.get('a.b'));
//=> ['c', 'd', 'e', 'f']
Set the given value onto app.cache.data
.
Params
key
{String|Object}: Property name or object to merge onto app.cache.data
. Dot-notation may be used for nested properties.val
{any}: The value to set on app.cache.data
returns
{Object}: returns the instance for chainingExample
app.data.set('a.b', ['c', 'd']}});
console.log(app.get('a'));
//=> {b: ['c', 'd']}
Get the value of key
from app.cache.data
. Dot-notation may be used for getting nested properties.
Params
key
{String}: The name of the property to get.returns
{any}: Returns the value of key
Example
app.data({a: {b: {c: 'd'}}});
console.log(app.get('a.b'));
//=> {c: 'd'}
Glob patterns may be passed as a string or array. All of these work:
app.data('foo.json');
app.data('*.json');
app.data(['*.json']);
// pass options to node-glob
app.data(['*.json'], {dot: true});
Namespacing allows you to load data onto a specific key, optionally using part of the file path as the key.
Example
Given that foo.json
contains {a: 'b'}
:
app.data('foo.json');
console.log(app.cache.data);
//=> {a: 'b'}
app.data('foo.json', {namespace: true});
console.log(app.cache.data);
//=> {foo: {a: 'b'}}
app.data('foo.json', {
namespace: function(fp) {
return path.basename(fp);
}
});
console.log(app.cache.data);
//=> {'foo.json': {a: 'b'}}
v0.6.0
renameKey
option for namespacingv0.5.0
v0.4.0
Refactored
adds methods to .data
for getting and setting data.
v0.3.6
JSON.parse
method, if no other loaders are defined.isRegistered
from base to ensure the plugin is only loaded once on an instanceconfig
method for mapping declarative configuration values to other 'base… more | homepageoption
, enable
and disable
. See the readme… more | homepagePull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Commits | Contributor |
---|---|
69 | jonschlinkert |
10 | doowb |
(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 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
Jon Schlinkert
Copyright © 2017, Jon Schlinkert. Released under the MIT License.
This file was generated by verb-generate-readme, v0.6.0, on July 20, 2017.
FAQs
adds a `data` method to base-methods.
The npm package base-data receives a total of 4,786 weekly downloads. As such, base-data popularity was classified as popular.
We found that base-data 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
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.