Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/enobufs/dirp
dirp - A key-value in-memory store using tokenized path as a key.
https://github.com/enobufs/dirp
Last synced: 10 days ago
JSON representation
dirp - A key-value in-memory store using tokenized path as a key.
- Host: GitHub
- URL: https://github.com/enobufs/dirp
- Owner: enobufs
- License: mit
- Created: 2015-08-08T04:34:19.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-11-14T06:21:20.000Z (almost 9 years ago)
- Last Synced: 2024-04-14T06:01:40.593Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 152 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# dirp
dirp - a key-value in-memory store using tokenized path as a key.## Features
* Internally manages values in a tree structure:
* `unset()` can remove all values under the same path (performance)
* Sharing upstream paths saves memory size (efficiency)
* Accessing non-existing path returns `undefined` (safety)## Installation
```
$ npm install dirp --save
```## Examples
```javascript
var capitals = require('dirp').create();
capitals.set('us.alabama', 'montgomery');
capitals.set('us.california', 'sacramento');
capitals.set('jp.tokyo', 'shinjuku');
capitals.set('jp.osaka', 'osaka');
console.log(capitals.get('us.alabama'));
// montgomery
console.log(capitals.get('us.california'));
// sacramento
console.log(capitals.raw());
// { us: { alabama: 'montgomery', california: 'sacramento' },
// jp: { tokyo: 'shinjuku', osaka: 'osaka' } }console.log(capitals.get('us.tokyo')); // incorrect
// undefined
capitals.unset('us'); // clear all data at paths that start with 'us'
console.log(capitals.raw());
// { jp: { tokyo: 'shinjuku', osaka: 'osaka' } }
```## API
### Module Methods
#### create *(creates a new instance of "Dirp"(an internal class))*
```
create() => instance {Dirp}
create(delimiter) => instance {Dirp}
create(delimiter, data) => instance {Dirp}
create(data) => instance {Dirp}
delimiter {string} Path delimiter. Defaults to '.'
data {object} Data to be imported.
```
* e.g. "products.users.name", "app/lib/test", "country:state:city" ...
* For `data`, see [import](#import-imports-data-into-derp) section below.### Instance Methods
#### set *(sets the path to a value)*
```
set(path, value) => {boolean}
path {string} Path to a value
value {any} Arbitrary value
returns true on success
```#### get *(gets a value at the path)*
```
get(path) => {any}
path {string} Path to a value
```
* `undefined` is returned if the `path` is not a leaf.#### unset *(unsets value at the path)*
```
unset(path) => {boolean}
path {string} Path to be unset
returns true on success
```#### exists *(tests if the path exists)*
```
exists(path) => {boolean}
path {string} Path to be tested
```#### raw *(returns a raw data {object})*
```
raw() => {object}
```
* This returns a direct reference to the internal data. Any modification to the object will affect the source.#### clone *(returns a new instance of Dirp with a deep-copy of its raw data)*
```
clone() => {Dirp}
```
* It only deep-copies *stringifiable* data. If a value passed to `set()` contains a getter/setter, or properties that are not enumerable, those would be ignored. *(Note: this may change in the future)*#### import *(imports data into derp)*
```
import(data) => {void}
data {object} Object to be imported. e.g { 'user.name': 'foo', 'user.age': 27 } // a list of `path`:`value` pairs.
```
* Throws if the data is not a valid object.#### export *(returns exported object)*
```
export() => {object}
data {object} Exported object with a list of `path`:`value` pairs.
```