New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

mind

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mind

mind is lightweight asynchronous persistence layer for node

latest
Source
npmnpm
Version
0.0.2
Version published
Maintainers
1
Created
Source

node-mind

mind is not a database / minimal database is lightweight asynchronous persistence layer for node.

mind was inspired by anti-db's idea that often, "you don't need a database, you need an in-memory object that saves itself to disk". However, I needed Windows support, evented API, and asynchronous loading, which, while simpler and more elegant in implementation, it forgoes.

Install

npm install mind

Features

  • Evented API, as well as a simplified single-callback wrapper
  • Automatically persists database state
    • Autosave at intervals, and at process.exit();
    • On non-Windows systems, also autosave on SIGINT, SIGHUP, and SIGQUIT.
  • Database autocreation

Usage

Evented API

var mind = require('mind');

var opts = { encoding: 'UTF-8', autosave: 60000 };
var dbm = new mind('path/to/db.json', opts);

dbm.on('open', function (e) {
	console.log('[INFO] Opened db: ' + e.msg);
	e.db['foo'] = 'bar';
	e.db['baz'] = [1, 2, 3, 4];
});

dbm.on('close', function (e) {
	console.log('[INFO] Closed db: ' + e.msg);
});

dbm.on('save', function (e) {
	console.log('[INFO] Saved db: ' + e.msg);
});

dbm.on('error', function (e) {
	console.error('[ERROR] Error in db: ' + e.msg);
	console.error(e.error);
});

dbm.open();

Callback API

var mind = require('mind');

mind.open('path/to/db.json', function (err, db, data) {
}, 

API

Class: MindManager

new MindManager(fn, opts)
  • fn: String - Path writeable by the node process
  • opts: Object - Options hash containing any of:
    • autosave: Number - ms between save operations (0 or negative disables autosave). Default: 60000
    • encoding: String - encoding used to read and write JSON file. Default: 'UTF-8'

Create a new MindManager.

manager.open()
  • Emits open on success.

Open and read the database file, creating it if necessary.

manager.save()
  • Emits save on success.

Asynchronously save the database file to disk.

manager.close()
  • Emits close on success.

Synchronously closes the database file, persisting it to disk. This function is synchronous to support non-autosaved use of mind, and is suitable for calling within process.exit.

manager.startAutosave() / manager.stopAutosave()

Synchronously start and stop the autosave process.

MindManager.getManager(db)
  • db: Object - Database object for which to get the associated MindManager

Get the MindManager for a particular database object.

MindManager.open(fn, cb(err, db, data), opts)
  • fn: see new MindManager
  • opts: see new MindManager
  • cb: Callback used to respond to all events emitted by the created manager:
    • open: passes db as the new database object
    • error: passes err as original error thrown, and
    • open, save, close, error: passes data as the complete event data object

Handles the creation of a manager object in a simplified single-callback model. It is recommended to not bind your callback to any particular context so you can access the manager instance at this. If you must, though, the instance managing a particular db object can be accessed by:

mind.getManager(db)

Events

open(event)

event.db: The database object opened. event.msg: Any message regarding the open operation.

Emitted on successful opening of a database.

close(event)

event.msg: Any message regarding the close operation.

Emitted on successful closing of a database.

save(event)

event.msg: Any message regarding the save operation.

Emitted on successful save of a database to persistent storage, either explicitly-initiated or autosave.

error(event)

event.error: The originally-thrown error, if available. event.msg: Any message regarding the error.

Emitted on any non-fatal caught error.

Keywords

persistence

FAQs

Package last updated on 26 Jul 2013

Did you know?

Socket

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.

Install

Related posts