Skip to content

Universal abstract-level database for Node.js and browsers.

License

Notifications You must be signed in to change notification settings

Level/level

level

Universal abstract-level database for Node.js and browsers. This is a convenience package that exports classic-level in Node.js and browser-level in browsers, making it an ideal entry point to start creating lexicographically sorted key-value databases.

📌 Which module should I use? What is abstract-level? Head over to the FAQ.

level badgenpmNode versionTestCoverageStandardCommon ChangelogCommunityDonate

Usage

If you are upgrading: please see UPGRADING.md.

const{ Level }=require('level')// Create a databaseconstdb=newLevel('example',{valueEncoding: 'json'})// Add an entry with key 'a' and value 1awaitdb.put('a',1)// Add multiple entriesawaitdb.batch([{type: 'put',key: 'b',value: 2}])// Get value of key 'a': 1constvalue=awaitdb.get('a')// Iterate entries with keys that are greater than 'a'forawait(const[key,value]ofdb.iterator({gt: 'a'})){console.log(value)// 2}

TypeScript type declarations are included and cover the methods that are common between classic-level and browser-level. Usage from TypeScript requires generic type parameters.

TypeScript example
// Specify types of keys and values (any, in the case of json).// The generic type parameters default to Level<string, string>.constdb=newLevel<string,any>('./db',{valueEncoding: 'json'})// All relevant methods then use those typesawaitdb.put('a',{x: 123})// Specify different types when overriding encoding per operationawaitdb.get<string,string>('a',{valueEncoding: 'utf8'})// Though in some cases TypeScript can infer themawaitdb.get('a',{valueEncoding: db.valueEncoding('utf8')})// It works the same for sublevelsconstabc=db.sublevel('abc')constxyz=db.sublevel<string,any>('xyz',{valueEncoding: 'json'})

Install

With npm do:

npm install level

For use in browsers, this package is best used with browserify, webpack, rollup or similar bundlers. For a quick start, visit browserify-starter or webpack-starter.

Supported Platforms

At the time of writing, level works in Node.js 18+ and Electron 30+ on Linux, Mac OS and Windows, including any future Node.js and Electron release thanks to Node-API, including ARM platforms like Raspberry Pi and Android, as well as in Chromium, Firefox and Safari. For details, see Supported Platforms of classic-level and Browser Support of browser-level.

Binary keys and values are supported across the board.

API

The API of level follows that of abstract-level. For additional options and methods specific to classic-level or browser-level, please see their respective READMEs. The documentation below only covers the common constructor.

db = new Level(location[, options])

Create a new database or open an existing database. The location argument must be a directory path (relative or absolute) where LevelDB will store its files, or in browsers, the name of the IDBDatabase to be opened.

Contributing

Level/level is an OPEN Open Source Project. This means that:

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.

See the Contribution Guide for more details.

Donate

Support us with a monthly donation on Open Collective and help us continue our work.

License

MIT

About

Universal abstract-level database for Node.js and browsers.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Sponsor this project