Product
Socket Now Supports uv.lock Files
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
A tiny & fast key value store with append-only disk log. Ideal for apps with < 1 million records.
A tiny & fast key value store with append-only disk log. Ideal for apps with < 1 million records.
npm install dirty
This module is called dirty because:
forEach
through all recordsSo dirty means that you will hit a very hard wall with this database after ~1 million records, but it is a wonderful solution for anything smaller than that.
require('../test/common');
var db = require('dirty')('user.db');
db.on('load', function() {
db.set('john', {eyes: 'blue'});
console.log('Added john, he has %s eyes.', db.get('john').eyes);
db.set('bob', {eyes: 'brown'}, function() {
console.log('User bob is now saved on disk.')
});
db.forEach(function(key, val) {
console.log('Found key: %s, val: %j', key, val);
});
});
db.on('drain', function() {
console.log('All records are saved on disk now.');
});
Output:
Added john, he has blue eyes.
Found key: john, val: {"eyes":"blue"}
Found key: bob, val: {"eyes":"brown"}
User bob is now saved on disk.
All records are saved on disk now.
Creates a new dirty database. If path
does not exist yet, it is created. You
can also omit the path
if you don't want disk persistence (useful for testing).
The constructor can be invoked in multiple ways:
require('dirty')('my.db');
require('dirty').Dirty('my.db');
new (require('dirty'))('my.db');
new (require('dirty').Dirty)('my.db');
The path of the dirty database.
Set's the given key
/ val
pair. The state of the database is affected instantly,
the optional cb
callback is fired when the record was written to disk.
val
can be any JSON-serializable type, it does not have to be an object.
Retrieves the value for the given key
.
Removes the record with the given key
. This is identical to setting the key
's value
to undefined
.
Calls the given fn
function for every document in the database. The passed
arguments are key
and val
. You can return false
to abort a query (useful
if you are only interested in a limited number of records).
This function is blocking and runs at ~4 Mhz.
Emitted once the database file has finished loading. It is not safe to access records before this event fires. Writing records however should be fine.
length
is the amount of records the database is holding. This only counts each
key once, even if it had been overwritten.
Emitted whenever all records have been written to disk.
node-dirty is licensed under the MIT license.
FAQs
A tiny & fast key value store with append-only disk log. Ideal for apps with < 1 million records.
The npm package dirty receives a total of 3,358 weekly downloads. As such, dirty popularity was classified as popular.
We found that dirty demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 6 open source maintainers 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.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.
Research
Security News
Socket researchers have discovered multiple malicious npm packages targeting Solana private keys, abusing Gmail to exfiltrate the data and drain Solana wallets.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.