#
Full Documentation
The following is the complete list of methods available in Enmap. As it is auto-generated from the source code and its comments, it's a little more "raw" than the Usage docs. However, it has the benefit of being more complete and usually more up to date than the manually written docs.
If you're doing a PR on the docs github, please do not manually edit the below contents, as it will be overwritten. Check the src/index.js source code and change the comments there instead!
#
new Enmap([options])
Initializes a new Enmap, with options.
Example
const Enmap = require("enmap");
// Named, Persistent enmap
const myEnmap = new Enmap({ name: "testing" });
// Memory-only enmap
const memoryEnmap = new Enmap({ inMemory: true });
// Enmap that automatically assigns a default object when getting or setting anything.
const autoEnmap = new Enmap({name: "settings", autoEnsure: { setting1: false, message: "default message"}})
#
enmap.size ⇒ number
Get the number of key/value pairs saved in the enmap.
Kind: instance property of Enmap
Returns: number
- The number of elements in the enmap.
Read only: true
#
enmap.db ⇒ Database
Get the better-sqlite3 database object. Useful if you want to directly query or interact with the underlying SQLite database. Use at your own risk, as errors here might cause loss of data or corruption!
Kind: instance property of Enmap
#
enmap.autonum ⇒ number
Generates an automatic numerical key for inserting a new value. This is a "weak" method, it ensures the value isn't duplicated, but does not guarantee it's sequential (if a value is deleted, another can take its place). Useful for logging, actions, items, etc - anything that doesn't already have a unique ID.
Kind: instance property of Enmap
Returns: number
- The generated key number.
Read only: true
Example
enmap.set(enmap.autonum, "This is a new value");
#
enmap.set(key, value, path)
Sets a value in Enmap. If the key already has a value, overwrites the data (or the value in a path, if provided).
Kind: instance method of Enmap
Example
// Direct Value Examples
enmap.set('simplevalue', 'this is a string');
enmap.set('isEnmapGreat', true);
enmap.set('TheAnswer', 42);
enmap.set('IhazObjects', { color: 'black', action: 'paint', desire: true });
enmap.set('ArraysToo', [1, "two", "tree", "foor"])
// Settings Properties
enmap.set('IhazObjects', 'blue', 'color'); //modified previous object
enmap.set('ArraysToo', 'three', 2); // changes "tree" to "three" in array.
#
enmap.update(key, valueOrFunction) ⇒ *
Update an existing object value in Enmap by merging new keys. This only works on objects, any other value will throw an error. Heavily inspired by setState from React's class components. This is very useful if you have many different values to update and don't want to have more than one .set(key, value, prop) lines.
Kind: instance method of Enmap
Returns: *
- The modified (merged) value.
Example
// Define an object we're going to update
enmap.set("obj", { a: 1, b: 2, c: 3 });
// Direct merge
enmap.update("obj", { d: 4, e: 5 });
// obj is now { a: 1, b: 2, c: 3, d: 4, e: 5 }
// Functional update
enmap.update("obj", (previous) => ({
...obj,
f: 6,
g: 7
}));
// this example takes heavy advantage of the spread operators.
// More info: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
#
enmap.get(key, path) ⇒ *
Retrieves a value from the enmap, using its key.
Kind: instance method of Enmap
Returns: *
- The parsed value for this key.
Example
const myKeyValue = enmap.get("myKey");
console.log(myKeyValue);
const someSubValue = enmap.get("anObjectKey", "someprop.someOtherSubProp");
#
enmap.observe(key, path) ⇒ *
Returns an observable object. Modifying this object or any of its properties/indexes/children will automatically save those changes into enmap. This only works on objects and arrays, not "basic" values like strings or integers.
Kind: instance method of Enmap
Returns: *
- The value for this key.
#
enmap.keys() ⇒ Array.<string>
Get all the keys of the enmap as an array.
Kind: instance method of Enmap
Returns: Array.<string>
- An array of all the keys in the enmap.
#
enmap.values() ⇒ Array.<*>
Get all the values of the enmap as an array.
Kind: instance method of Enmap
Returns: Array.<*>
- An array of all the values in the enmap.
#
enmap.entries() ⇒ Array.<Array.<*, *>>
Get all entries of the enmap as an array, with each item containing the key and value.
Kind: instance method of Enmap
Returns: Array.<Array.<*, *>>
- An array of arrays, with each sub-array containing two items, the key and the value.
#
enmap.push(key, value, path, allowDupes)
Push to an array value in Enmap.
Kind: instance method of Enmap
Example
// Assuming
enmap.set("simpleArray", [1, 2, 3, 4]);
enmap.set("arrayInObject", {sub: [1, 2, 3, 4]});
enmap.push("simpleArray", 5); // adds 5 at the end of the array
enmap.push("arrayInObject", "five", "sub"); // adds "five" at the end of the sub array
#
enmap.math(key, operation, operand, path) ⇒ number
Executes a mathematical operation on a value and saves it in the enmap.
Kind: instance method of Enmap
Returns: number
- The updated value after the operation
Example
// Assuming
points.set("number", 42);
points.set("numberInObject", {sub: { anInt: 5 }});
points.math("number", "/", 2); // 21
points.math("number", "add", 5); // 26
points.math("number", "modulo", 3); // 2
points.math("numberInObject", "+", 10, "sub.anInt");
#
enmap.inc(key, path) ⇒ number
Increments a key's value or property by 1. Value must be a number, or a path to a number.
Kind: instance method of Enmap
Returns: number
- The udpated value after incrementing.
Example
// Assuming
points.set("number", 42);
points.set("numberInObject", {sub: { anInt: 5 }});
points.inc("number"); // 43
points.inc("numberInObject", "sub.anInt"); // {sub: { anInt: 6 }}
#
enmap.dec(key, path) ⇒ Enmap
Decrements a key's value or property by 1. Value must be a number, or a path to a number.
Kind: instance method of Enmap
Returns: Enmap
- The enmap.
Example
// Assuming
points.set("number", 42);
points.set("numberInObject", {sub: { anInt: 5 }});
points.dec("number"); // 41
points.dec("numberInObject", "sub.anInt"); // {sub: { anInt: 4 }}
#
enmap.ensure(key, defaultValue, path) ⇒ *
Returns the key's value, or the default given, ensuring that the data is there. This is a shortcut to "if enmap doesn't have key, set it, then get it" which is a very common pattern.
Kind: instance method of Enmap
Returns: *
- The value from the database for the key, or the default value provided for a new key.
Example
// Simply ensure the data exists (for using property methods):
enmap.ensure("mykey", {some: "value", here: "as an example"});
enmap.has("mykey"); // always returns true
enmap.get("mykey", "here") // returns "as an example";
// Get the default value back in a variable:
const settings = mySettings.ensure("1234567890", defaultSettings);
console.log(settings) // enmap's value for "1234567890" if it exists, otherwise the defaultSettings value.
#
enmap.has(key, path) ⇒ boolean
Returns whether or not the key exists in the Enmap.
Kind: instance method of Enmap
Example
if(enmap.has("myKey")) {
// key is there
}
if(!enmap.has("myOtherKey", "oneProp.otherProp.SubProp")) return false;
#
enmap.includes(key, value, path) ⇒ boolean
Performs Array.includes() on a certain enmap value. Works similar to Array.includes().
Kind: instance method of Enmap
Returns: boolean
- Whether the array contains the value.
#
enmap.delete(key, path)
Deletes a key in the Enmap.
Kind: instance method of Enmap
#
enmap.clear() ⇒ void
Deletes everything from the enmap.
Kind: instance method of Enmap
#
enmap.remove(key, val, path)
Remove a value in an Array or Object element in Enmap. Note that this only works for values, not keys. Note that only one value is removed, no more. Arrays of objects must use a function to remove, as full object matching is not supported.
Kind: instance method of Enmap
Example
// Assuming
enmap.set('array', [1, 2, 3])
enmap.set('objectarray', [{ a: 1, b: 2, c: 3 }, { d: 4, e: 5, f: 6 }])
enmap.remove('array', 1); // value is now [2, 3]
enmap.remove('objectarray', (value) => value.e === 5); // value is now [{ a: 1, b: 2, c: 3 }]
#
enmap.export() ⇒ string
Exports the enmap data to stringified JSON format. WARNING: Does not work on memory enmaps containing complex data!
Kind: instance method of Enmap
Returns: string
- The enmap data in a stringified JSON format.
#
enmap.import(data, overwrite, clear)
Import an existing json export from enmap. This data must have been exported from enmap, and must be from a version that's equivalent or lower than where you're importing it. (This means Enmap 5 data is compatible in Enmap 6).
Kind: instance method of Enmap
#
enmap.random([count]) ⇒ *
| Array.<*>
Obtains random value(s) from this Enmap. This relies on Enmap#array.
Kind: instance method of Enmap
Returns: *
| Array.<*>
- The single value if count
is undefined,
or an array of values of count
length
#
enmap.randomKey([count]) ⇒ *
| Array.<*>
Obtains random key(s) from this Enmap. This relies on Enmap#keyArray
Kind: instance method of Enmap
Returns: *
| Array.<*>
- The single key if count
is undefined,
or an array of keys of count
length
#
enmap.every(valueOrFunction, [path]) ⇒ boolean
Similar to Array.every(). Supports either a predicate function or a value to compare. Returns true only if the predicate function returns true for all elements in the array (or the value is strictly equal in all elements).
Kind: instance method of Enmap
#
enmap.some(valueOrFunction, [path]) ⇒ Array
Similar to Array.some(). Supports either a predicate function or a value to compare. Returns true if the predicate function returns true for at least one element in the array (or the value is equal in at least one element).
Kind: instance method of Enmap
#
enmap.map(pathOrFn) ⇒ Array
Similar to Array.map(). Returns an array of the results of applying the callback to all elements.
Kind: instance method of Enmap
#
enmap.find(pathOrFn, [value]) ⇒ *
Searches for a single item where its specified property's value is identical to the given value
(item[prop] === value
), or the given function returns a truthy value. In the latter case, this is similar to
Array.find().
Kind: instance method of Enmap
Example
enmap.find('username', 'Bob');
Example
enmap.find(val => val.username === 'Bob');
#
enmap.findIndex(pathOrFn, [value]) ⇒ string
| number
Searches for the key of a single item where its specified property's value is identical to the given value
(item[prop] === value
), or the given function returns a truthy value. In the latter case, this is similar to
Array.findIndex().
Kind: instance method of Enmap
Example
enmap.findIndex('username', 'Bob');
Example
enmap.findIndex(val => val.username === 'Bob');
#
enmap.reduce(predicate, [initialValue]) ⇒ *
Similar to Array.reduce().
Kind: instance method of Enmap
#
enmap.filter(pathOrFn, [value]) ⇒ Enmap
Similar to Array.filter(). Returns an array of values where the given function returns true for that value. Alternatively you can provide a value and path to filter by using exact value matching.
Kind: instance method of Enmap
#
enmap.sweep(pathOrFn, [value]) ⇒ number
Deletes entries that satisfy the provided filter function or value matching.
Kind: instance method of Enmap
Returns: number
- The number of removed entries.
#
enmap.changed(cb)
Function called whenever data changes within Enmap after the initial load. Can be used to detect if another part of your code changed a value in enmap and react on it.
Kind: instance method of Enmap
Example
enmap.changed((keyName, oldValue, newValue) => {
console.log(`Value of ${keyName} has changed from: \n${oldValue}\nto\n${newValue}`);
});
#
enmap.partition(pathOrFn, value) ⇒ Array.<Array.<*>>
Separates the Enmap into multiple arrays given a function that separates them.
Kind: instance method of Enmap
Returns: Array.<Array.<*>>
- An array of arrays with the partitioned data.
#
Enmap.multi(names, options) ⇒ Object
Initialize multiple Enmaps easily.
Kind: static method of Enmap
Returns: Object
- An array of initialized Enmaps.
Example
// Using local variables.
const Enmap = require('enmap');
const { settings, tags, blacklist } = Enmap.multi(['settings', 'tags', 'blacklist']);
// Attaching to an existing object (for instance some API's client)
const Enmap = require("enmap");
Object.assign(client, Enmap.multi(["settings", "tags", "blacklist"]));